Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tk7Bm-000Apo-MR for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Feb 2025 19:53:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tk7Bl-002Nto-5q for pgsql-hackers@arkaria.postgresql.org; Mon, 17 Feb 2025 19:53:57 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tk7Bk-002Ntg-Ih for pgsql-hackers@lists.postgresql.org; Mon, 17 Feb 2025 19:53:56 +0000 Received: from smtp-fw-52003.amazon.com ([52.119.213.152]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1tk7Bg-001Pr5-2S for pgsql-hackers@postgresql.org; Mon, 17 Feb 2025 19:53:56 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amazon.com; i=@amazon.com; q=dns/txt; s=amazon201209; t=1739822033; x=1771358033; h=from:to:cc:date:message-id:references:mime-version: subject; bh=ZfoX4Kur6/jU3PYmAzYT5Uag9Pb7HIjBd/ZbEiK7c9c=; b=aV2xRZVTwY9OJi72F7nHM5Dq/evUU3ZDUdxw2Nxy/Hu36Ek7JOGzaPYu DbgVeGaMqkD+GIZaFJII1PYS5J3kd1JQzCFJ4WyvhRzAjJKni3NsKwWHa aEx46+/KBO52yt3MCriCcXdBiB00cAevu0T8q5eHzxF08nd8TluxBpS3x Q=; X-Amazon-filename: v6-0001-Expand-HOT-update-path-to-include-expression-and-.patch X-Secure-Attach-Ingestion: ProdSecureAttachHeaderAddedFromMessageFilter X-IronPort-AV: E=Sophos;i="6.13,293,1732579200"; d="scan'208,223";a="66815922" Subject: Re: Expanding HOT updates for expression and partial indexes Thread-Topic: Expanding HOT updates for expression and partial indexes Received: from iad12-co-svc-p1-lb1-vlan3.amazon.com (HELO smtpout.prod.us-east-1.prod.farcaster.email.amazon.dev) ([10.43.8.6]) by smtp-border-fw-52003.iad7.amazon.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 17 Feb 2025 19:53:50 +0000 Received: from EX19MTAUEA002.ant.amazon.com [10.0.0.204:50282] by smtpin.naws.us-east-1.prod.farcaster.email.amazon.dev [10.0.2.187:2525] with esmtp (Farcaster) id e625e30b-10c6-474c-9670-59d3ba2027eb; Mon, 17 Feb 2025 19:53:48 +0000 (UTC) X-Farcaster-Flow-ID: e625e30b-10c6-474c-9670-59d3ba2027eb Received: from EX19D018UEC001.ant.amazon.com (10.252.135.153) by EX19MTAUEA002.ant.amazon.com (10.252.134.9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1258.39; Mon, 17 Feb 2025 19:53:48 +0000 Received: from EX19D018UEC003.ant.amazon.com (10.252.135.218) by EX19D018UEC001.ant.amazon.com (10.252.135.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA) id 15.2.1544.14; Mon, 17 Feb 2025 19:53:48 +0000 Received: from EX19D018UEC003.ant.amazon.com ([fe80::ea09:1bf7:c4d8:3004]) by EX19D018UEC003.ant.amazon.com ([fe80::ea09:1bf7:c4d8:3004%3]) with mapi id 15.02.1544.014; Mon, 17 Feb 2025 19:53:48 +0000 From: "Burd, Greg" To: Matthias van de Meent CC: "pgsql-hackers@postgresql.org" Thread-Index: AQHbeOXmdtbUqSdSp0SlUCqonUkHPQ== Date: Mon, 17 Feb 2025 19:53:47 +0000 Message-ID: <238EEE41-B206-4590-8C20-DA52C25A2291@amazon.com> References: <78574B24-BE0A-42C5-8075-3FA9FA63B8FC@amazon.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-originating-ip: [10.106.178.12] Content-Type: multipart/mixed; boundary="_002_238EEE41B20645908C20DA52C25A2291amazoncom_" MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_238EEE41B20645908C20DA52C25A2291amazoncom_ Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 TWF0dGhpYXMsDQoNCkZpcnN0IG9mZiwgSSBjYW4ndCB0aGFuayB5b3UgZW5vdWdoIGZvciB0YWtp bmcgdGhlIHRpbWUgdG8gcmV2aWV3IGluIGRldGFpbCB0aGUgcGF0Y2guICBJIGFwcHJlY2lhdGUg YW5kIHZhbHVlIHlvdXIgdGltZSBhbmQgZXhjZWxsZW50IGZlZWRiYWNrLg0KDQpTZWNvbmQsIEkg dGhpbmsgdGhhdCBJIHNob3VsZCBhZG1pdCB0byB0aGUgZmFjdCB0aGF0IEkndmUgYWxzbyBiZWVu IHdvcmtpbmcgb24gbWFraW5nIFBIT1QgZnVuY3Rpb25hbCBhZ2Fpbi4gIEkgaGF2ZSBpdCByZWJh c2VkIGFnYWluc3QgbWFzdGVyLCBob3dldmVyIGl0IGlzIHN0aWxsIGF0IHRoZSBwcm9vZi1vZi1j b25jZXB0IHBoYXNlIGFuZCB0aGVyZSBhcmUgc29tZSBsYXJnZXIgaXNzdWVzIHRvIGZsZXNoIG91 dC4gIE9uZSBvZiB0aGUgY2hhbmdlcyBpbiB0aGlzIHBhdGNoIHdvdWxkIGhhdmUgZW5hYmxlZCB0 aGF0IGZ1dHVyZSB3aXRoIFBIT1QsIHNwZWNpZmljYWxseSB0aGUgYml0bWFwIGFzIHRoZSBtZXRo b2QgZm9yIGNvbnZleWluZyB3aGF0IGluZGV4ZXMgbmVlZCB1cGRhdGluZy4NCg0KVGhhdCBzYWlk LCBJIGFncmVlIHRoYXQgdGhpcyBwYXRjaCBzaG91bGQgc2ltcGx5IGZvY3VzIG9uIGV4cGFuZGlu ZyBIT1QgdG8gZXhwcmVzc2lvbiBpbmRleGVzIGFuZCBwYXJ0aWFsIGluZGV4ZXMuICBXaXRoIHRo YXQgaW4gbWluZCBJIHdpbGwgcmV0dXJuIHRvIHRoZSBUVV9VcGRhdGVJbmRleGVzIGFwcHJvYWNo LCBldmVuIHRob3VnaCBJJ20gbm90IGEgZmFuIG9mIGl0LCBhbmQgbGF0ZXIgcHJvcG9zZSB0aGUg Yml0bWFwIGFwcHJvYWNoIChvciBzb21ldGhpbmcgYmV0dGVyKSBhcyBwYXJ0IG9mIFBIT1QgaWYg YW5kIHdoZW4gdGhhdCdzIHJlYWR5Lg0KDQpDaGFuZ2VzIHY1IHRvIHY2Og0KKiByZXZlcnRlZCB0 byBUVV9VcGRhdGVJbmRleGVzIHJhdGhlciB0aGFuIEJpdG1hcHNldA0KKiByZW5hbWVkIEV4ZWNJ bmRleGVzUmVxdWlyaW5nVXBkYXRlcyB0byBFeGVjSW5kZXhlc0V4cHJlc3Npb25zV2VyZU5vdFVw ZGF0ZWQNCiogRXhlY0luZGV4ZXNFeHByZXNzaW9uc1dlcmVOb3RVcGRhdGVkIHJldHVybnMgYm9v bCwgZXhpdHMgZWFybHkgaWYgcG9zc2libGUNCiogc2ltcGxlX3VwZGF0ZSBwYXRocyBjYW4gYmUg SE9UIG9uY2UgYWdhaW4NCiogcmVtb3ZlZCBlZmZvcnRzIHRvIGRldGVybWluZSB0aGUgc3Vic2V0 IG9mIHVwZGF0ZWQgc3VtbWFyaXppbmcgaW5kZXhlcw0KKiBjcmVhdGUgZmlsdGVyZWQgSW5kZXhJ bmZvIGxpc3QgaW4gcmVsY2FjaGUgY29udGFpbmluZyBvbmx5IGluZGV4ZXMgd2l0aCBleHByZXNz aW9ucw0KKiBub3cgdXNpbmcgaW5kZXggVHVwbGVEZXNjIENvbXBhY3RBdHRyaWJ1dGVzIGZvciBh cmd1bWVudHMgdG8gZGF0dW1faXNfZXF1YWwoKSA8LSBkaWQgSSBnZXQgdGhpcyBvbmUgcmlnaHQs IEknbSBub3Qgc3VyZSBpdCBpcyB3aGF0IHlvdSBoYWQgaW4gbWluZA0KDQpiZXN0Lg0KDQotZ3Jl Zw0KDQoNCj4gT24gRmViIDE1LCAyMDI1LCBhdCA1OjQ54oCvQU0sIE1hdHRoaWFzIHZhbiBkZSBN ZWVudCA8Ym9la2V3dXJtK3Bvc3RncmVzQGdtYWlsLmNvbT4gd3JvdGU6DQo+IA0KPiBPbiBUaHUs IDEzIEZlYiAyMDI1IGF0IDE5OjQ2LCBCdXJkLCBHcmVnIDxncmVnYnVyZEBhbWF6b24uY29tPiB3 cm90ZToNCj4gDQo+IC0tLS0tDQo+IA0KPiBJJ20gbm90IGEgZmFuIG9mIGhvdyB5b3UgcmVwbGFj ZWQgVFVfVXBkYXRlSW5kZXhlcyB3aXRoIGEgYml0bWFwLiBJdA0KPiBzZWVtcyB1bmVyZ29ub21p YyBhbmQgYSB3YXN0ZSBvZiBwZXJmb3JtYW5jZS4NCj4gDQo+IEluIEhFQUQsIHdlIGRvbid0IGRv IGFueSBleHBlbnNpdmUgY29tcHV0YXRpb25zIGZvciB0aGUgZmFzdCBwYXRoIG9mDQo+ICJpbmRl eGVkIGF0dHJpYnV0ZSB1cGRhdGVkIiAtIGF0IG1vc3Qgd2UgZG8gdGhlIGJpdG1hcCBjb21wYXJl IGFuZA0KPiB0aGVuIHNldCBhIHBvaW50ZXIuIFdpdGggdGhpcyBwYXRjaCwgdGhlIHdheSB3ZSBz aWduYWwgdGhhdCBpcyBieQ0KPiBhbGxvY2F0aW5nIGEgYml0bWFwIG9mIHNpemUgTyhuX2luZGV4 ZXMpLiBUaGF0J3MgcG90ZW50aWFsbHkgcXVpdGUNCj4gZXhwZW5zaXZlIChnaXZlbiAxMDAwcyBv ZiBpbmRleGVzKSwgYW5kIGRlZmluaXRlbHkgbW9yZSBleHBlbnNpdmUgdGhhbg0KPiBvbmx5IGEg cG9pbnRlciBhc3NpZ25tZW50Lg0KDQpGYWlyIHBvaW50LiAgSSdtIG5vdCBhIGZhbiBvZiB0aGUg VFVfVXBkYXRlSW5kZXhlcyBlbnVtLCBidXQgSSBhcHByZWNpYXRlIHlvdXIgYXJndW1lbnQgYWdh aW5zdCB0aGUgYml0bWFwc2V0LiAgVW5kZXIgdGhlIGNvbmRpdGlvbnMgeW91IGRlc2NyaWJlICgx MDAwcyBvZiBpbmRleGVzKSBpdCBjb3VsZCBncm93IHVud2llbGR5IGFuZCBpbXBhY3QgcGVyZm9y bWFuY2UuDQoNCj4gSW4gSEVBRCwgd2UgaGF2ZSBhIGNsZWFyIGluZGljYXRpb24gb2Ygd2hpY2gg Y2xhc3NlcyBvZiBpbmRleGVzIHRvDQo+IHVwZGF0ZSwgd2l0aCBUVV9VcGRhdGVJbmRleGVzLiBX aXRoIHRoaXMgcGF0Y2gsIHdlIGhhdmUgdG8gZGVyaXZlIHRoYXQNCj4gZnJvbSB0aGUgKGxhY2sg b2YpIGJpdHMgaW4gdGhlIGJpdG1hcCB0aGF0IG1pZ2h0IGJlIG91dHB1dCBieSB0aGUNCj4gdGFi bGVfdXBkYXRlIHByb2NlZHVyZS4NCg0KWWVzLCBidXQuLi4gdGhhdCAiY2xlYXIgaW5kaWNhdGlv biIgaXMgbGFja2luZyB0aGUgYWJpbGl0eSB0byBjb252ZXkgbW9yZSBkZXRhaWxlZCBpbmZvcm1h dGlvbi4gIEl0IGRvZXNuJ3QgdGVsbCB5b3Ugd2hpY2ggc3VtbWFyaXppbmcgaW5kZXhlcyByZWFs bHkgbmVlZCB1cGRhdGluZyBqdXN0IHRoYXQgYXMgYSByZXN1bHQgb2YgYmVpbmcgb24gdGhlIEhP VCBwYXRoIGFsbCBzdW1tYXJpemluZyBpbmRleGVzIHJlcXVpcmUgdXBkYXRlcy4NCg0KPiBJIHRo aW5rIHdlIGNhbiBkbyB3aXRoIGFuIGFkZGl0aW9uYWwgcGFyYW1ldGVyIGZvciB3aGljaCBpbmRl eGVzIHdvdWxkDQo+IGJlIHVwZGF0ZWQgKG9yIHN0b3JlIHRoYXQgaW5mbyBpbiB0aGUgcGFyYW1l dGVyIHdoaWNoIGFsc28gd2lsbCBob2xkDQo+IEVTdGF0ZSBldCBhbCkuIEkgdGhpbmsgaXQncyBj aGVhcGVyIHRoYXQgd2F5LCB0b28gLSBvbmx5IHdoZW4NCj4gdXBkYXRlX2luZGV4ZXMgY291bGQg YmUgVFVfU1VNTUFSSVpJTkcgd2UgbWlnaHQgbmVlZCB0aGUgZXhhY3QNCj4gaW5mb3JtYXRpb24g Zm9yIHdoaWNoIGluZGV4ZXMgdG8gaW5zZXJ0IG5ldyB0dXBsZXMgaW50bywgYW5kIGl0IG9ubHkN Cj4gcmVhbGx5IG5lZWRzIHRvIGJlIHNpemVkIHRvIHRoZSBudW1iZXIgb2Ygc3VtbWFyaXppbmcg aW5kZXhlcyAodXN1YWxseQ0KPiBzbWFsbC9ub25leGlzdGVudCwgYnV0IHBvdGVudGlhbGx5IGh1 Z2UpLg0KDQpPa2F5LCB5ZXMgd2l0aCB0aGlzIHBhdGNoIHdlIG5lZWQgb25seSBjb25jZXJuIG91 cnNlbHZlcyB3aXRoIGFsbCwgbm9uZSwgb3Igc29tZSBzdWJzZXQgb2Ygc3VtbWFyaXppbmcgYXMg YmVmb3JlLiAgSSdsbCB3b3JrIG9uIHRoZSBvcGFxdWUgcGFyYW1ldGVyIG5leHQgaXRlcmF0aW9u Lg0KDQo+IC0tLS0tDQo+IA0KPiBJIHRoaW5rIHlvdXIgcGF0Y2ggZGVzaWduIGNhbWUgZnJvbSB0 cnlpbmcgdG8gaW5jbHVkZSBhdCBsZWFzdCB0d28NCj4gZGlzdGluY3Qgb3B0aW1pemF0aW9uczoN Cj4gIDEpIHRvIG1ha2UgdGhlIEhPVC1vci1ub3QgY2hlY2sgaW5jbHVkZSB3aGV0aGVyIHRoZSBl eHByZXNzaW9ucyBvZg0KPiBpbmRleGVzIHdlcmUgdXBkYXRlZCwgYW5kDQo+ICAyKSB0byBvbmx5 IGluc2VydCBpbmRleCB0dXBsZXMgaW50byBpbmRleGVzIHRoYXQgZ290IHVwZGF0ZWQgdmFsdWVz DQo+IHdoZW4gdGFibGVfdHVwbGVfdXBkYXRlIHJldHVybnMgdXBkYXRlX2luZGV4ZXM9VFVfU3Vt bWFyaXppbmcuDQoNCkl0IGRpZC4gICgxKSBmb3Igc3VyZSwgYnV0IHRoZSBzZWNvbmQgaXMgbW9y ZSByZWxhdGVkIHRvIHRoZSBQSE9UIHdvcmsgKGFzIG1lbnRpb25lZCBhYm92ZSkuICBXaXRoIHRo YXQgd29yayBhbG1vc3QgYWxsIHVwZGF0ZXMgYXJlIG9uIHRoZSBIT1QvUEhPVCBwYXRoIGFuZCBz byB0aGUgYml0bWFwIG9mIGNoYW5nZWQgaW5kZXhlcyBpcyBzbWFsbC4gIEl0IHdvdWxkIHRha2Ug YW4gdXBkYXRlIG9mIGEgdGFibGUgd2l0aCAxMDAwcyBvZiBpbmRleGVzIHdoZXJlIGFsbW9zdCBh bGwgdGhvc2Ugd2VyZSBtb2RpZmllZCB0byBjcmVhdGUgYSBiaXRtYXAgdGhhdCB3YXMgbGFyZ2Us IHdoaWNoIGNlcnRhaW5seSBjb3VsZCAoYW5kIHNvbWV3aGVyZSBsaWtlbHkgZG9lcykgZXhpc3Qs IGJ1dCBpdCdzIG5vdCB0aGUgY29tbW9uIGNhc2UgKEknZCBpbWFnaW5lKS4gIEluIHRoYXQgY2Fz ZSB0aGUgd29yayB0byB1cGRhdGUgYWxsIHRob3NlIGluZGV4ZXMgd2lsbCBsaWtlbHkgZHdhcmYg dGhlIHdvcmsgdG8gYnVpbGQgdGhhdCBiaXRtYXAsIGJ1dCBJIGNvdWxkIGJlIHdyb25nLg0KDQpC dXQgeW91J3JlIGZ1bmRhbWVudGFsbHkgcmlnaHQsIEknbSBjb25mbGF0aW5nIHR3byBpZGVhcyBh bmQgSSBzaG91bGRuJ3QuICBJIHdpbGwgZm9jdXMgdGhlIGNoYW5nZXMgcmVxdWlyZWQgZm9yIHRo aXMgaWRlYSB3aXRob3V0IHB1bGxpbmcgaW4gY2hhbmdlcyB1c2VmdWwgdG8gYSBmdXR1cmUgb25l cy4NCg0KPiBXaGlsZSB0aGV5IHRvdWNoIHNpbWlsYXIgY29kZSAoY2xlYXJseSBzZWVuIGhlcmUp LCBJIHRoaW5rIHRob3NlDQo+IHNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBkaWZmZXJlbnQgcGF0 Y2hlcy4gRm9yICgxKSwgdGhlIGN1cnJlbnQgQVBJDQo+IHN1cmZhY2UgaXMgZ29vZCBlbm91Z2gg d2hlbiB0aGUgRVN0YXRlIGlzIHBhc3NlZCBkb3duLiBGb3IgKDIpLCB5b3UnbGwNCj4gaW5kZWVk IGFsc28gbmVlZCBhbiBhZGRpdGlvbmFsIGFyZ3VtZW50IHdlIGNhbiB1c2UgdG8gZmlsbCB3aXRo IHRoZQ0KPiByaWdodCBzdW1tYXJpemluZyBpbmRleGVzLCBidXQgSSBkb24ndCB0aGluayB0aGF0 IGNhbiBub3Igc2hvdWxkDQo+IHJlcGxhY2UgdGhlIGZ1bmN0aW9uIG9mIFRVX1VwZGF0ZUluZGV4 ZXMuDQoNCk9rYXksIEknbGwgY29tYmluZSB0aGUgZWFybGllciB2MyBwYXRjaCB3aXRoIHRoZSBj aGFuZ2VzIGluIHY1LiAgVGhhdCBzaG91bGQgbGVhdmUgVFVfVXBkYXRlSW5kZXhlcyBpbiBwbGFj ZSBhbmQgYWxsb3cgZm9yIEhPVCB3aXRoIGV4cHJlc3Npb24gaW5kZXhlcy4gIEknbGwgY2hhbmdl IHRoZSBFeGVjSW5kZXhlc1JlcXVpcmluZ1VwZGF0ZXMoKSBhIGJpdCAoYW5kIHJlbmFtZSBpdCkg c28gdGhhdCBpdCBpcyBqdXN0IGEgYm9vbGVhbiB0ZXN0IGZvciBhbnkgaW5kZXggdGhhdCBzcG9p bHMgdGhlIEhPVCBwYXRoIGFuZCBjYW4gZXhpdCBlYXJseSBpbiB0aGF0IGNhc2UgcG90ZW50aWFs bHkgYXZvaWRpbmcgZXh0cmEgd29yay4NCg0KPiBJZiB5b3UgYWdyZWUgd2l0aCBteSBvYnNlcnZh dGlvbiBvZiB0aG9zZSBiZWluZyBkaXN0aW5jdA0KPiBvcHRpbWl6YXRpb25zLCBjb3VsZCB5b3Ug c3BsaXQgdGhpcyBwYXRjaCBpbnRvIHBhcnRzIChidXQgc3RpbGwgd2l0aGluDQo+IHRoZSBzYW1l IHNlcmllcykgc28gdGhhdCB0aGVzZSBhcmUgc2VwYXJhdGVseSByZXZpZXdhYmxlPw0KDQpJIGFn cmVlLCBidXQgSSB0aGluayB0aGF0IGEgc2luZ2xlIHNpbXBsZSBtb3JlIGZvY3VzZWQgcGF0Y2gg d2lsbCBzdWZmaWNlLg0KDQo+IC0tLS0tDQo+IA0KPiBJIG5vdGljZSB0aGF0IEV4ZWNJbmRleGVz UmVxdWlyaW5nVXBkYXRlcygpIGRvZXMgd29yayBvbiBhbGwgaW5kZXhlcywNCj4gcmF0aGVyIHRo YW4ganVzdCBpbmRleGVzIHJlbGV2YW50IHRvIHRoaXMgZXhhY3QgcGhhc2Ugb2YgY2hlY2tpbmcu IEkNCj4gdGhpbmsgdGhhdCBpcyBhIHdhc3RlIG9mIHRpbWUsIHNvIGlmIHdlIHNvcnQgdGhlIGlu ZGV4ZXMgaW4gb3JkZXIgb2YNCj4gW2hvdGJsb2NraW5nIHdpdGhvdXQgZXhwcmVzc2lvbnMsIGhv dGJsb2NraW5nIHdpdGggZXhwcmVzc2lvbnMsDQo+IHN1bW1hcml6aW5nXSwgdGhlbiAod2l0aCBz dG9yZWQgc3RhcnQvZW5kIGluZGV4ZXMpIHdlIGNhbiBzYXZlIHRpbWUgaW4NCj4gY2FzZXMgd2hl cmUgdGhlcmUgYXJlIGNvbXBhcmF0aXZlbHkgZmV3IG9mIHRoZSB0eXBlcyB3ZSdyZSBub3QgZ29p bmcNCj4gdG8gbG9vayBhdC4NCg0KSWYgSSBwbGFuIG9uIGp1c3QgaGF2aW5nIEV4ZWNJbmRleGVz UmVxdWlyaW5nVXBkYXRlcygpIHJldHVybiBhIGJvb2wgcmF0aGVyIHRoYW4gYSBiaXRtYXAgdGhl biBzb3J0aW5nLCBvciBldmVuIGp1c3QgZmlsdGVyaW5nIHRoZSBsaXN0IG9mIEluZGV4SW5mbyB0 byBvbmx5IGluY2x1ZGUgaW5kZXhlcyB3aXRoIGV4cHJlc3Npb25zLCBtYWtlcyBzZW5zZS4gIFRo YXQgd2F5IHRoZSBvbmx5IGluZGV4ZXMgaW4gcXVlc3Rpb24gaW4gdGhhdCBmdW5jdGlvbidzIGxv b3Agd2lsbCBiZSB0aG9zZSB0aGF0IG1heSBzcG9pbCB0aGUgSE9UIHBhdGguICBXaGVuIHRoYXQg bGlzdCBpcyBsZW5ndGggMCwgd2UgY2FuIHNraXAgdGhlIHRlc3RzIGVudGlyZWx5Lg0KDQo+IEFz IGFuIGV4dHJlbWUgZXhhbXBsZTogd2Ugc2hvdWxkbid0IGRvIHRoZSAoY29tcGFyYXRpdmVseSkg ZXhwZW5zaXZlDQo+IHdvcmsgZXZhbHVhdGluZyBleHByZXNzaW9ucyB0byBkZXRlcm1pbmUgd2hp Y2ggb2YgMTAwMHMgb2Ygc3VtbWFyaXppbmcNCj4gaW5kZXhlcyBoYXMgYmVlbiB1cGRhdGVkIHdo ZW4gd2UncmUgc3RpbGwgbm90IHN1cmUgaWYgd2UgY2FuIGFwcGx5IEhPVA0KPiBhdCBhbGwuDQoN ClRoYXQgbWFrZXMgc2Vuc2UsIGFuZCB5b3VyIHNvcnRpbmcgaWRlYSB3b3VsZCBpbmZvcm0gdGhh dCBraW5kIG9mIHdvcmsuICBJJ2xsIGtlZXAgdGhhdCBpbiBtaW5kIGlmIEkgcmVpbnRyb2R1Y2Ug Y29kZSB0aGF0IGFpbXMgdG8gb25seSB1cGRhdGUgY2hhbmdlZCBzdW1tYXJpemVkIGluZGV4ZXMu DQoNCj4gKFNpZGVub3RlOiBUaG91Z2gsIGFyZ3VhYmx5LCB3ZSBjb3VsZCBiZSBzbWFydGVyIGJ5 IHNraXBwaW5nIGluZGV4DQo+IGluc2VydGlvbnMgaW50byB1bm1vZGlmaWVkIHN1bW1hcml6aW5n IGluZGV4ZXMgYWx0b2dldGhlciByZWdhcmRsZXNzDQo+IG9mIEhPVCBzdGF0dXMsIGFzIGxvbmcg YXMgdGhlIHVwZGF0ZSBpcyBvbiB0aGUgc2FtZSBwYWdlIC0gYnV0IHRoYXQncw0KPiBnZXR0aW5n IGFoZWFkIG9mIG91cnNlbHZlcyBhbmQgbm90IHJlbGV2YW50IHRvIHRoaXMgZGlzY3Vzc2lvbi4p DQo+IA0KPiAtLS0tLQ0KPiANCj4gSSBub3RpY2VkIHlvdSd2ZSBkaXNhYmxlZCBhbnkgcGFzc2lu ZyBvZiAiSE9UIG9yIG5vdCIgaW4gdGhlDQo+IHNpbXBsZV91cGRhdGUgY2FzZXMsIGFuZCBoYXZl IGRvbmUgYXdheSB3aXRoIHRoZSB2YXJpb3VzIGNoZWNrcyB0aGF0DQo+IGFyZSBpbiBwbGFjZSB0 byBwcmV2ZW50IGNvcnJ1cHRpb24uIEkgZG9uJ3QgdGhpbmsgdGhhdCdzIGEgZ3JlYXQgaWRlYSwN Cj4gaXQncyBxdWl0ZSBsaWtlbHkgdG8gY2F1c2UgYnVncy4NCg0KWWVzLiAgSSdsbCByZXN1cnJl Y3QgdGhhdC4NCg0KPiAtLS0tLQ0KPiANCj4gWW91J3JlIGV4dHJhY3RpbmcgdHlwZSBpbmZvIGZy b20gdGhlIG9wY2xhc3MsIHRvIHVzZSBpbg0KPiBkYXR1bV9pbWFnZV9lcSgpLiBDb3VsZG4ndCB5 b3UgaW5zdGVhZCB1c2UgdGhlIGluZGV4IHJlbGF0aW9uJ3MNCj4gVHVwbGVEZXNjIGFuZCBpdHMg c3RvcmVkIGF0dHJpYnV0ZSBpbmZvcm1hdGlvbiBpbnN0ZWFkPyBUaGF0IHNhdmVzIHVzDQo+IGZy b20gaGF2aW5nIHRvIGRvIGZ1cnRoZXIgY2F0YWxvZyBsb29rdXBzIGR1cmluZyBleGVjdXRpb24u IEknbSBhbHNvDQo+IGZhaXJseSBzdXJlIHRoYXQgdGhhdCBpbmZvcm1hdGlvbiBpcyBzdXBwb3Nl ZCB0byBiZSBhIG1vcmUgYWNjdXJhdGUNCj4gcmVwcmVzZW50YXRpb24gb2YgYXR0cmlidXRlcycg ZXhwcmVzc2lvbiBvdXRwdXQgdHlwZXMgdGhhbiB0aGUNCj4gb3BjbGFzcycgdHlwZSBpbmZvcm1h dGlvbiAodGhvdWdoLCB0aGV5IHByb2JhYmx5IHNob3VsZCBtYXRjaCkuDQoNCkkgaGFkbid0IHRo b3VnaHQgb2YgdGhhdCwgSSB0aGluayBpdCdzIGEgdmFsaWQgaWRlYSBhbmQgSSdsbCB1cGRhdGUg YWNjb3JkaW5nbHkuICBJIHRoaW5rIEkgdW5kZXJzdGFuZCB3aGF0IHlvdSBhcmUgc3VnZ2VzdGlu Zy4NCiANCj4gDQo+IC0tLS0tDQo+IA0KPiBUaGUgb3BlcmF0aW9ucyBhcHBsaWVkIGluIEV4ZWNJ bmRleGVzUmVxdWlyaW5nVXBkYXRlcyBwYXJ0aWFsbHkNCj4gZHVwbGljYXRlIHRob3NlIGRvbmUg aW4gaW5kZXhfdW5jaGFuZ2VkX2J5X3VwZGF0ZS4gQ2FuIHdlIChwYXJ0aWFsbHkpDQo+IHVuaWZ5 IHRoaXMsIGFuZCBwYXNzIHdoaWNoIGluZGV4ZXMgd2VyZSB1cGRhdGVkIHRocm91Z2ggdGhlIElu ZGV4SW5mbywNCj4gcmF0aGVyIHRoYW4gdGhlIGN1cnJlbnQgYml0bWFwPw0KDQpJIHRoaW5rIEkg ZG8gdGhhdCBub3csIGZlZWwgZnJlZSB0byBzYXkgb3RoZXJ3aXNlLiAgV2hlbiB0aGUgZXhwcmVz c2lvbiBpcyBjaGVja2VkIGluIEV4ZWNJbmRleGVzRXhwcmVzc2lvbnNXZXJlTm90VXBkYXRlZCgp IEkgc2V0Og0KDQovKiBTaG9ydGN1dCBpbmRleF91bmNoYW5nZWRfYnlfdXBkYXRlKCksIHdlIGtu b3cgdGhlIGFuc3dlci4gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhJbmZvLT5paV9DaGVja2VkVW5jaGFuZ2Vk ID0gdHJ1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4SW5mby0+aWlf SW5kZXhVbmNoYW5nZWQgPSAhY2hhbmdlZDsNCg0KVGhhdCBwcmV2ZW50cyBkdXBsaWNhdGUgZWZm b3J0IGluIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoKS4NCg0KPiAtLS0tLQ0KPiANCj4gSSBk b24ndCBzZWUgYSBnb29kIHJlYXNvbiB0byBhZGQgSW5kZXhJbmZvIHRvIFJlbGF0aW9uLCBieSB3 YXkgb2YNCj4gcmRfaW5kZXhJbmZvTGlzdC4gSXQgc2VlbXMgbGlrZSBhbiBhZC1ob2Mgd2F5IG9m IHBhc3NpbmcgZGF0YSBhcm91bmQsDQo+IGFuZCBJIGRvbid0IHRoaW5rIHRoYXQncyB0aGUgcmln aHQgd2F5Lg0KDQpBdCBvbmUgcG9pbnQgSSdkIGNyZWF0ZWQgYSB3YXkgdG8gZ2V0IHRoaXMgc2V0 IHZpYSByZWxjYWNoZSwgSSB3aWxsIHJlc3VycmVjdCB0aGF0IGFwcHJvYWNoIGJ1dCBJJ20gbm90 IHN1cmUgaXQgaXMgd2hhdCB5b3Ugd2VyZSBoaW50aW5nIGF0LiAgVGhlIGN1cnJlbnQgbWV0aG9k IGF2b2lkcyBwdWxsaW5nIGEgdGhlIGxvY2sgb24gdGhlIGluZGV4IHRvIGJ1aWxkIHRoZSBsaXN0 LCBidXQgZG9pbmcgdGhhdCBvbmNlIGluIHJlbGNhY2hlIGlzbid0IGhvcnJpYmxlLiAgTWF5YmUg eW91IHdlcmUgc3VnZ2VzdGluZyB1c2luZyB0aGF0IG9wYXF1ZSBzdHJ1Y3QgdG8gcGFzcyBhcm91 bmQgdGhlIGxpc3Qgb2YgSW5kZXhJbmZvPyAgTGV0IG1lIGtub3cgb24gdGhpcyBvbmUgaWYgeW91 IGhhZCBhIHNwZWNpZmljIGlkZWEuICBUaGUgc3dhcCBJJ3ZlIG1hZGUgaW4gdjYgcmVhbGx5IGp1 c3QgbW92ZXMgdGhlIEluZGV4SW5mbyBsaXN0IHRvIGEgZmlsdGVyZWQgbGlzdCB3aXRoIGEgbmV3 IG5hbWUgY3JlYXRlZCBpbiByZWxjYWNoZS4NCg0KDQogIA== --_002_238EEE41B20645908C20DA52C25A2291amazoncom_ Content-Type: application/octet-stream; name="v6-0001-Expand-HOT-update-path-to-include-expression-and-.patch" Content-Description: v6-0001-Expand-HOT-update-path-to-include-expression-and-.patch Content-Disposition: attachment; filename="v6-0001-Expand-HOT-update-path-to-include-expression-and-.patch"; size=88922; creation-date="Mon, 17 Feb 2025 19:53:47 GMT"; modification-date="Mon, 17 Feb 2025 19:53:47 GMT" Content-ID: Content-Transfer-Encoding: base64 RnJvbSA0N2FhOTY0MDIyM2QyYjk1ZGJiMDc0ZmZjNzgwZmExMDkwNTMxOTFiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHcmVnb3J5IEJ1cmQgPGdyZWdidXJkQGFtYXpvbi5jb20+CkRh dGU6IE1vbiwgMjcgSmFuIDIwMjUgMTM6Mjg6NTkgLTA1MDAKU3ViamVjdDogW1BBVENIIHY2XSBF eHBhbmQgSE9UIHVwZGF0ZSBwYXRoIHRvIGluY2x1ZGUgZXhwcmVzc2lvbiBhbmQgcGFydGlhbAog aW5kZXhlcy4KClRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgY2FzZXMgd2hlcmUgSE9UIHVwZGF0ZXMg YXJlIHBvc3NpYmxlIGluIHRoZSBoZWFwYW0gYnkKZXhhbWluaW5nIGV4cHJlc3Npb24gaW5kZXhl cyBhbmQgZGV0ZXJtaW5pbmcgaWYgaW5kZXhlZCB2YWx1ZXMgd2hlcmUgbXV0YXRlZApvciBub3Qu ICBQcmV2aW91c2x5LCBhbnkgZXhwcmVzc2lvbiBpbmRleCBvbiBhIGNvbHVtbiB3b3VsZCBkaXNx dWFsaWZ5IGl0CmZyb20gdGhlIEhPVCB1cGRhdGUgcGF0aC4gQWxzbyBleGFtaW5lcyBwYXJ0aWFs IGluZGV4ZXMgdG8gc2VlIGlmIHRoZQp2YWx1ZXMgYXJlIHdpdGhpbiB0aGUgcHJlZGljYXRlIG9y IG5vdC4KClRoaXMgaXMgYSBtb2RpZmllZCBhcHBsaWNhdGlvbiBvZiBhIHBhdGNoIHByb3Bvc2Vk IG9uIHRoZSBwZ3NxbC1oYWNrZXJzIGxpc3Q6Cmh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21l c3NhZ2UtaWQvZmxhdC80ZDk5MjhlZS1hOWU2LTE1ZjktOWM4Mi01OTgxZjEzZmZjYTYlNDBwb3N0 Z3Jlc3Byby5ydQphcHBsaWVkOiBodHRwczovL2dpdC5wb3N0Z3Jlc3FsLm9yZy9naXR3ZWIvP3A9 cG9zdGdyZXNxbC5naXQ7YT1jb21taXQ7aD1jMjAzZDZjZjgKcmV2ZXJ0ZWQ6IGh0dHBzOi8vZ2l0 LnBvc3RncmVzcWwub3JnL2dpdHdlYi8/cD1wb3N0Z3Jlc3FsLmdpdDthPWNvbW1pdDtoPTA1Zjg0 NjA1ZGJlYjljZjgyNzlhMTU3MjM0YjI0YmJiNzA2YzUyNTYKClNpZ25lZC1vZmYtYnk6IEdyZWcg QnVyZCA8Z3JlZ2J1cmRAYW1hem9uLmNvbT4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90 YWJsZS5zZ21sICAgICAgICAgICAgfCAgMTcgKwogZG9jL3NyYy9zZ21sL3N0b3JhZ2Uuc2dtbCAg ICAgICAgICAgICAgICAgICAgIHwgIDIxICsKIHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVs b3B0aW9ucy5jICAgICAgICB8ICAxMiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1F LkhPVCAgICAgICAgICAgIHwgIDQzICstCiBzcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW0u YyAgICAgICAgICAgICAgfCAgNDMgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9o YW5kbGVyLmMgICAgICB8ICAgNiArLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0u YyAgICAgICAgICAgIHwgICAyICstCiBzcmMvYmFja2VuZC9jYXRhbG9nL2luZGV4LmMgICAgICAg ICAgICAgICAgICAgfCAgMTUgKwogc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMg ICAgICAgICAgIHwgMjAwICsrKysrKwogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRh YmxlLmMgICAgICAgIHwgICAzICstCiBzcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxjYWNoZS5j ICAgICAgICAgICAgfCAxODEgKysrKystCiBzcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMg ICAgICAgICAgICAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oICAgICAg ICAgICAgICAgICAgICB8ICAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oICAgICAg ICAgICAgICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oICAgICAg ICAgICAgICAgICAgfCAgMTAgKy0KIHNyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmggICAg ICAgICAgICAgICB8ICAgNSArCiBzcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaCAgICAgICAg ICAgICAgICAgfCAgIDggKwogc3JjL2luY2x1ZGUvdXRpbHMvcmVsLmggICAgICAgICAgICAgICAg ICAgICAgIHwgIDE0ICsKIHNyYy9pbmNsdWRlL3V0aWxzL3JlbGNhY2hlLmggICAgICAgICAgICAg ICAgICB8ICAgMiArCiAuLi4vcmVncmVzcy9leHBlY3RlZC9oZWFwX2hvdF91cGRhdGVzLm91dCAg ICAgfCA1ODYgKysrKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3BhcmFsbGVsX3Nj aGVkdWxlICAgICAgICAgICAgfCAgIDUgKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwvaGVhcF9ob3Rf dXBkYXRlcy5zcWwgICAgIHwgNDQwICsrKysrKysrKysrKysKIDIyIGZpbGVzIGNoYW5nZWQsIDE1 NjAgaW5zZXJ0aW9ucygrKSwgNjAgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3Jj L3Rlc3QvcmVncmVzcy9leHBlY3RlZC9oZWFwX2hvdF91cGRhdGVzLm91dAogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2hlYXBfaG90X3VwZGF0ZXMuc3FsCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKaW5kZXggMGEzZTUyMGYyMTUuLmUyOWM5ZWE0NWE3IDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2NyZWF0ZV90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMv c2dtbC9yZWYvY3JlYXRlX3RhYmxlLnNnbWwKQEAgLTE5ODEsNiArMTk4MSwyMyBAQCBXSVRIICgg TU9EVUxVUyA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bnVtZXJpY19saXRlcmFsPC9y ZXBsYWNlYWJsZT4sIFJFTQogICAgIDwvbGlzdGl0ZW0+CiAgICA8L3Zhcmxpc3RlbnRyeT4KIAor ICAgPHZhcmxpc3RlbnRyeSBpZD0icmVsb3B0aW9uLWV4cHJlc3Npb24tY2hlY2tzIiB4cmVmbGFi ZWw9ImV4cHJlc3Npb25fY2hlY2tzIj4KKyAgICA8dGVybT48bGl0ZXJhbD5leHByZXNzaW9uX2No ZWNrczwvbGl0ZXJhbD4gKDx0eXBlPmJvb2xlYW48L3R5cGU+KQorICAgIDxpbmRleHRlcm0+Cisg ICAgIDxwcmltYXJ5Pjx2YXJuYW1lPmV4cHJlc3Npb25fY2hlY2tzPC92YXJuYW1lPiBzdG9yYWdl IHBhcmFtZXRlcjwvcHJpbWFyeT4KKyAgICA8L2luZGV4dGVybT4KKyAgICA8L3Rlcm0+CisgICAg PGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIEVuYWJsZXMgb3IgZGlzYWJsZXMgZXZhdWxh dGlvbiBvZiBwcmVkaWNhdGUgZXhwcmVzc2lvbnMgb24gcGFydGlhbAorICAgICAgaW5kZXhlcyBv ciBleHByZXNzaW9ucyB1c2VkIHRvIGRlZmluZSBpbmRleGVzIGR1cmluZyB1cGRhdGVzLgorICAg ICAgSWYgPGxpdGVyYWw+dHJ1ZTwvbGl0ZXJhbD4sIHRoZW4gdGhlc2UgZXhwcmVzc2lvbnMgYXJl IGV2YWx1YXRlZCBkdXJpbmcKKyAgICAgIHVwZGF0ZXMgdG8gZGF0YSB3aXRoaW4gdGhlIGhlYXAg cmVsYXRpb24gYWdhaW5zdCB0aGUgb2xkIGFuZCBuZXcgdmFsdWVzCisgICAgICBhbmQgdGhlbiBj b21wYXJlZCB0byBkZXRlcm1pbmUgaWYgPGFjcm9ueW0+SE9UPC9hY3JvbnltPiB1cGRhdGVzIGFy ZQorICAgICAgYWxsb3dhYmxlIG9yIG5vdC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgPGxpdGVyYWw+ dHJ1ZTwvbGl0ZXJhbD4uCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorCiAgICA8L3Zh cmlhYmxlbGlzdD4KIAogICA8L3JlZnNlY3QyPgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3N0 b3JhZ2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwKaW5kZXggNjEyNTA3OTllYzAu LmY0MGFkYTljOTg5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3RvcmFnZS5zZ21sCisrKyBi L2RvYy9zcmMvc2dtbC9zdG9yYWdlLnNnbWwKQEAgLTExMzgsNiArMTEzOCwyNyBAQCBkYXRhLiBF bXB0eSBpbiBvcmRpbmFyeSB0YWJsZXMuPC9lbnRyeT4KICAgPC9pdGVtaXplZGxpc3Q+CiAgPC9w YXJhPgogCisgPHBhcmE+CisgIDxhY3JvbnltPkhPVDwvYWNyb255bT4gdXBkYXRlcyBjYW4gb2Nj dXIgd2hlbiB0aGUgZXhwcmVzc2lvbiB1c2VkIHRvIGRlZmluZQorICBhbmQgaW5kZXggc2hvd3Mg bm8gY2hhbmdlcyB0byB0aGUgaW5kZXhlZCB2YWx1ZS4gVG8gZGV0ZXJtaW5lIHRoaXMgcmVxdWly ZXMKKyAgdGhhdCB0aGUgZXhwcmVzc2lvbiBiZSBldmF1bGF0ZWQgZm9yIHRoZSBvbGQgYW5kIG5l dyB2YWx1ZXMgdG8gYmUgc3RvcmVkIGluCisgIHRoZSBpbmRleCBhbmQgdGhlbiBjb21wYXJlZC4g VGhpcyBhbGxvd3MgZm9yIDxhY3JvbnltPkhPVDwvYWNyb255bT4gdXBkYXRlcworICB3aGVuIGRh dGEgaW5kZXhlZCB3aXRoaW4gSlNPTkIgY29sdW1ucyBpcyB1bmNoYW5nZWQuIFRvIGRpc2FibGUg dGhpcworICBiZWhhdmlvciBhbmQgYXZvaWQgdGhlIG92ZXJoZWFkIG9mIGV2YWx1YXRpbmcgdGhl IGV4cHJlc3Npb24gZHVyaW5nIHVwZGF0ZXMKKyAgc2V0IHRoZSA8bGl0ZXJhbD5leHByZXNzaW9u X2NoZWNrczwvbGl0ZXJhbD4gb3B0aW9uIHRvIGZhbHNlIGZvciB0aGUgdGFibGUuCisgPC9wYXJh PgorCisgPHBhcmE+CisgIDxhY3JvbnltPkhPVDwvYWNyb255bT4gdXBkYXRlcyBjYW4gYWxzbyBv Y2N1ciB3aGVuIHVwZGF0ZWQgdmFsdWVzIGFyZSBub3QKKyAgd2l0aGluIHRoZSBwcmVkaWNhdGUg b2YgYSBwYXJ0aWFsIGluZGV4LiBIb3dldmVyLCA8YWNyb255bT5IT1Q8L2Fjcm9ueW0+CisgIHVw ZGF0ZXMgYXJlIG5vdCBwb3NzaWJsZSB3aGVuIHRoZSB1cGRhdGVkIHZhbHVlIGFuZCB0aGUgY3Vy cmVudCB2YWx1ZSBkaWZmZXIKKyAgd2l0aCByZWdhcmRzIHRvIHRoZSBwcmVkaWNhdGUuIFRvIGRl dGVybWluIHRoaXMgcmVxdWlyZXMgdGhhdCB0aGUgcHJlZGljYXRlCisgIGV4cHJlc3Npb24gYmUg ZXZhbHVhdGVkIGZvciB0aGUgb2xkIGFuZCBuZXcgdmFsdWVzIHRvIGJlIHN0b3JlZCBpbiB0aGUg aW5kZXgKKyAgYW5kIHRoZW4gY29tcGFyZWQuIFRvIGRpc2FibGUgdGhpcyBiZWhhdmlvciBhbmQg YXZvaWQgdGhlIG92ZXJoZWFkIG9mCisgIGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24gZHVyaW5n IHVwZGF0ZXMgc2V0CisgIHRoZSA8bGl0ZXJhbD5leHByZXNzaW9uX2NoZWNrczwvbGl0ZXJhbD4g b3B0aW9uIHRvIGZhbHNlIGZvciB0aGUgdGFibGUuCisgPC9wYXJhPgorCiAgPHBhcmE+CiAgIFlv dSBjYW4gaW5jcmVhc2UgdGhlIGxpa2VsaWhvb2Qgb2Ygc3VmZmljaWVudCBwYWdlIHNwYWNlIGZv cgogICA8YWNyb255bT5IT1Q8L2Fjcm9ueW0+IHVwZGF0ZXMgYnkgZGVjcmVhc2luZyBhIHRhYmxl J3MgPGxpbmsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9u cy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMKaW5kZXggNTlmYjUz ZTc3MDcuLmMwODE2MTE5MjZlIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3JlbG9wdGlvbnMuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3JlbG9wdGlvbnMu YwpAQCAtMTY2LDYgKzE2NiwxNSBAQCBzdGF0aWMgcmVsb3B0X2Jvb2wgYm9vbFJlbE9wdHNbXSA9 CiAJCX0sCiAJCXRydWUKIAl9LAorCXsKKwkJeworCQkJImV4cHJlc3Npb25fY2hlY2tzIiwKKwkJ CSJXaGVuIGRpc2FibGVkIHByZXZlbnRzIGNoZWNraW5nIGV4cHJlc3Npb25zIG9uIGluZGV4ZXMg YW5kIHByZWRpY2F0ZXMgb24gcGFydGlhbCBpbmRleGVzIGZvciBjaGFuZ2VzIHRoYXQgbWlnaHQg aW5mbHVlbmNlIGhlYXAtb25seSB0dXBsZSAoSE9UKSB1cGRhdGVzLiIsCisJCQlSRUxPUFRfS0lO RF9IRUFQLAorCQkJU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrCisJCX0sCisJCXRydWUKKwl9LAog CS8qIGxpc3QgdGVybWluYXRvciAqLwogCXt7TlVMTH19CiB9OwpAQCAtMTkwMyw3ICsxOTEyLDgg QEAgZGVmYXVsdF9yZWxvcHRpb25zKERhdHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUsIHJl bG9wdF9raW5kIGtpbmQpCiAJCXsidmFjdXVtX3RydW5jYXRlIiwgUkVMT1BUX1RZUEVfQk9PTCwK IAkJb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCB2YWN1dW1fdHJ1bmNhdGUpfSwKIAkJeyJ2YWN1dW1f bWF4X2VhZ2VyX2ZyZWV6ZV9mYWlsdXJlX3JhdGUiLCBSRUxPUFRfVFlQRV9SRUFMLAotCQlvZmZz ZXRvZihTdGRSZE9wdGlvbnMsIHZhY3V1bV9tYXhfZWFnZXJfZnJlZXplX2ZhaWx1cmVfcmF0ZSl9 CisJCW9mZnNldG9mKFN0ZFJkT3B0aW9ucywgdmFjdXVtX21heF9lYWdlcl9mcmVlemVfZmFpbHVy ZV9yYXRlKX0sCisJCXsiZXhwcmVzc2lvbl9jaGVja3MiLCBSRUxPUFRfVFlQRV9CT09MLCBvZmZz ZXRvZihTdGRSZE9wdGlvbnMsIGV4cHJlc3Npb25fY2hlY2tzKX0KIAl9OwogCiAJcmV0dXJuIChi eXRlYSAqKSBidWlsZF9yZWxvcHRpb25zKHJlbG9wdGlvbnMsIHZhbGlkYXRlLCBraW5kLApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvUkVBRE1FLkhPVCBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKaW5kZXggNzRlNDA3ZjM3NWEuLjQ4YWFiODFmZGYwIDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9SRUFETUUuSE9UCisrKyBiL3NyYy9i YWNrZW5kL2FjY2Vzcy9oZWFwL1JFQURNRS5IT1QKQEAgLTM2LDcgKzM2LDcgQEAgSE9UIHNvbHZl cyB0aGlzIHByb2JsZW0gZm9yIHR3byByZXN0cmljdGVkIGJ1dCB1c2VmdWwgc3BlY2lhbCBjYXNl czoKIEZpcnN0LCB3aGVyZSBhIHR1cGxlIGlzIHJlcGVhdGVkbHkgdXBkYXRlZCBpbiB3YXlzIHRo YXQgZG8gbm90IGNoYW5nZQogaXRzIGluZGV4ZWQgY29sdW1ucy4gIChIZXJlLCAiaW5kZXhlZCBj b2x1bW4iIG1lYW5zIGFueSBjb2x1bW4gcmVmZXJlbmNlZAogYXQgYWxsIGluIGFuIGluZGV4IGRl ZmluaXRpb24sIGluY2x1ZGluZyBmb3IgZXhhbXBsZSBjb2x1bW5zIHRoYXQgYXJlCi10ZXN0ZWQg aW4gYSBwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSBidXQgYXJlIG5vdCBzdG9yZWQgaW4gdGhlIGlu ZGV4LikKK3Rlc3RlZCBpbiBhIHBhcnRpYWwtaW5kZXggcHJlZGljYXRlLCB0aGF0IGhhcyBtYXRl cmlhbGx5IGNoYW5nZWQuKQogCiBTZWNvbmQsIHdoZXJlIHRoZSBtb2RpZmllZCBjb2x1bW5zIGFy ZSBvbmx5IHVzZWQgaW4gaW5kZXhlcyB0aGF0IGRvIG5vdAogY29udGFpbiB0dXBsZSBJRHMsIGJ1 dCBtYWludGFpbiBzdW1tYXJpZXMgb2YgdGhlIGluZGV4ZWQgZGF0YSBieSBibG9jay4KQEAgLTEz MywxOCArMTMzLDI2IEBAIE5vdGU6IHdlIGNhbiB1c2UgYSAiZGVhZCIgbGluZSBwb2ludGVyIGZv ciBhbnkgREVMRVRFZCB0dXBsZSwKIHdoZXRoZXIgaXQgd2FzIHBhcnQgb2YgYSBIT1QgY2hhaW4g b3Igbm90LiAgVGhpcyBhbGxvd3Mgc3BhY2UgcmVjbGFtYXRpb24KIGluIGFkdmFuY2Ugb2YgcnVu bmluZyBWQUNVVU0gZm9yIHBsYWluIERFTEVURXMgYXMgd2VsbCBhcyBIT1QgdXBkYXRlcy4KIAot VGhlIHJlcXVpcmVtZW50IGZvciBkb2luZyBhIEhPVCB1cGRhdGUgaXMgdGhhdCBpbmRleGVzIHdo aWNoIHBvaW50IHRvCi10aGUgcm9vdCBsaW5lIHBvaW50ZXIgKGFuZCB0aHVzIG5lZWQgdG8gYmUg Y2xlYW5lZCB1cCBieSBWQUNVVU0gd2hlbiB0aGUKLXR1cGxlIGlzIGRlYWQpIGRvIG5vdCByZWZl cmVuY2UgY29sdW1ucyB3aGljaCBhcmUgdXBkYXRlZCBpbiB0aGF0IEhPVAotY2hhaW4uICBTdW1t YXJpemluZyBpbmRleGVzIChzdWNoIGFzIEJSSU4pIGFyZSBhc3N1bWVkIHRvIGhhdmUgbm8KLXJl ZmVyZW5jZXMgdG8gaW5kaXZpZHVhbCB0dXBsZXMgYW5kIHRodXMgYXJlIGlnbm9yZWQgd2hlbiBj aGVja2luZyBIT1QKLWFwcGxpY2FiaWxpdHkuICBUaGUgdXBkYXRlZCBjb2x1bW5zIGFyZSBjaGVj a2VkIGF0IGV4ZWN1dGlvbiB0aW1lIGJ5Ci1jb21wYXJpbmcgdGhlIGJpbmFyeSByZXByZXNlbnRh dGlvbiBvZiB0aGUgb2xkIGFuZCBuZXcgdmFsdWVzLiAgV2UgaW5zaXN0Ci1vbiBiaXR3aXNlIGVx dWFsaXR5IHJhdGhlciB0aGFuIHVzaW5nIGRhdGF0eXBlLXNwZWNpZmljIGVxdWFsaXR5IHJvdXRp bmVzLgotVGhlIG1haW4gcmVhc29uIHRvIGF2b2lkIHRoZSBsYXR0ZXIgaXMgdGhhdCB0aGVyZSBt aWdodCBiZSBtdWx0aXBsZQotbm90aW9ucyBvZiBlcXVhbGl0eSBmb3IgYSBkYXRhdHlwZSwgYW5k IHdlIGRvbid0IGtub3cgZXhhY3RseSB3aGljaCBvbmUKLWlzIHJlbGV2YW50IGZvciB0aGUgaW5k ZXhlcyBhdCBoYW5kLiAgV2UgYXNzdW1lIHRoYXQgYml0d2lzZSBlcXVhbGl0eQotZ3VhcmFudGVl cyBlcXVhbGl0eSBmb3IgYWxsIHB1cnBvc2VzLgorVGhlIHJlcXVpcmVtZW50IGZvciBkb2luZyBh IEhPVCB1cGRhdGUgaXMgdGhhdCBpbmRleGVzIHdoaWNoIHBvaW50IHRvIHRoZSByb290CitsaW5l IHBvaW50ZXIgKGFuZCB0aHVzIG5lZWQgdG8gYmUgY2xlYW5lZCB1cCBieSBWQUNVVU0gd2hlbiB0 aGUgdHVwbGUgaXMgZGVhZCkKK2RvIG5vdCByZWZlcmVuY2UgY29sdW1ucyB3aGljaCBhcmUgdXBk YXRlZCBpbiB0aGF0IEhPVCBjaGFpbi4KKworU3VtbWFyaXppbmcgaW5kZXhlcyAoc3VjaCBhcyBC UklOKSBhcmUgYXNzdW1lZCB0byBoYXZlIG5vIHJlZmVyZW5jZXMgdG8KK2luZGl2aWR1YWwgdHVw bGVzIGFuZCB0aHVzIGFyZSBpZ25vcmVkIHdoZW4gY2hlY2tpbmcgSE9UIGFwcGxpY2FiaWxpdHku CisKK0V4cHJlc3Npb25zIG9uIGluZGV4ZXMgYXJlIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdHMg YXJlIHVzZWQgd2hlbiBjaGVjayBmb3IKK2NoYW5nZXMuICBUaGlzIGFsbG93cyBmb3IgdGhlIEpT T05CIGRhdGF0eXBlIHRvIGhhdmUgSE9UIHVwZGF0ZXMgd2hlbiB0aGUKK2luZGV4ZWQgcG9ydGlv biBvZiB0aGUgZG9jdW1lbnQgYXJlIG5vdCBtb2RpZmllZC4KKworUGFydGlhbCBpbmRleCBleHBy ZXNzaW9ucyBhcmUgZXZhbHVhdGVkLCBIT1QgdXBkYXRlcyBhcmUgYWxsb3dlZCB3aGVuIHRoZQor dXBkYXRlZCBpbmRleCB2YWx1ZXMgZG8gbm90IHNhdGlzZnkgdGhlIHByZWRpY2F0ZS4KKworVGhl IHVwZGF0ZWQgY29sdW1ucyBhcmUgY2hlY2tlZCBhdCBleGVjdXRpb24gdGltZSBieSBjb21wYXJp bmcgdGhlIGJpbmFyeQorcmVwcmVzZW50YXRpb24gb2YgdGhlIG9sZCBhbmQgbmV3IHZhbHVlcy4g IFdlIGluc2lzdCBvbiBiaXR3aXNlIGVxdWFsaXR5IHJhdGhlcgordGhhbiB1c2luZyBkYXRhdHlw ZS1zcGVjaWZpYyBlcXVhbGl0eSByb3V0aW5lcy4gIFRoZSBtYWluIHJlYXNvbiB0byBhdm9pZCB0 aGUKK2xhdHRlciBpcyB0aGF0IHRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIG5vdGlvbnMgb2YgZXF1 YWxpdHkgZm9yIGEgZGF0YXR5cGUsIGFuZAord2UgZG9uJ3Qga25vdyBleGFjdGx5IHdoaWNoIG9u ZSBpcyByZWxldmFudCBmb3IgdGhlIGluZGV4ZXMgYXQgaGFuZC4gIFdlIGFzc3VtZQordGhhdCBi aXR3aXNlIGVxdWFsaXR5IGd1YXJhbnRlZXMgZXF1YWxpdHkgZm9yIGFsbCBwdXJwb3Nlcy4KIAog SWYgYW55IGNvbHVtbnMgdGhhdCBhcmUgaW5jbHVkZWQgYnkgbm9uLXN1bW1hcml6aW5nIGluZGV4 ZXMgYXJlIHVwZGF0ZWQsCiB0aGUgSE9UIG9wdGltaXphdGlvbiBpcyBub3QgYXBwbGllZCwgYW5k IHRoZSBuZXcgdHVwbGUgaXMgaW5zZXJ0ZWQgaW50bwpAQCAtMTUyLDkgKzE2MCw3IEBAIGFsbCBp bmRleGVzIG9mIHRoZSB0YWJsZS4gIElmIG5vbmUgb2YgdGhlIHVwZGF0ZWQgY29sdW1ucyBhcmUg aW5jbHVkZWQgaW4KIHRoZSB0YWJsZSdzIGluZGV4ZXMsIHRoZSBIT1Qgb3B0aW1pemF0aW9uIGlz IGFwcGxpZWQgYW5kIG5vIGluZGV4ZXMgYXJlCiB1cGRhdGVkLiAgSWYgaW5zdGVhZCB0aGUgdXBk YXRlZCBjb2x1bW5zIGFyZSBvbmx5IGluZGV4ZWQgYnkgc3VtbWFyaXppbmcKIGluZGV4ZXMsIHRo ZSBIT1Qgb3B0aW1pemF0aW9uIGlzIGFwcGxpZWQsIGJ1dCB0aGUgdXBkYXRlIGlzIHByb3BhZ2F0 ZWQgdG8KLWFsbCBzdW1tYXJpemluZyBpbmRleGVzLiAgKFJlYWxpc3RpY2FsbHksIHdlIG9ubHkg bmVlZCB0byBwcm9wYWdhdGUgdGhlCi11cGRhdGUgdG8gdGhlIGluZGV4ZXMgdGhhdCBjb250YWlu IHRoZSB1cGRhdGVkIHZhbHVlcywgYnV0IHRoYXQgaXMgeWV0IHRvCi1iZSBpbXBsZW1lbnRlZC4p Cit0aGUgc3VtbWFyaXppbmcgaW5kZXhlcyB0aGF0IGhhdmUgdXBkYXRlZCB2YWx1ZXMuCiAKIEFi b3J0IENhc2VzCiAtLS0tLS0tLS0tLQpAQCAtNDc3LDggKzQ4Myw5IEBAIEhlYXAtb25seSB0dXBs ZQogSE9ULXNhZmUKIAogCUEgcHJvcG9zZWQgdHVwbGUgdXBkYXRlIGlzIHNhaWQgdG8gYmUgSE9U LXNhZmUgaWYgaXQgY2hhbmdlcwotCW5vbmUgb2YgdGhlIHR1cGxlJ3MgaW5kZXhlZCBjb2x1bW5z LiAgSXQgd2lsbCBvbmx5IGJlY29tZSBhbgotCWFjdHVhbCBIT1QgdXBkYXRlIGlmIHdlIGNhbiBm aW5kIHJvb20gb24gdGhlIHNhbWUgcGFnZSBmb3IKKwlub25lIG9mIHRoZSB0dXBsZSdzIGluZGV4 ZWQgY29sdW1ucyBvciBpZiB0aGUgY2hhbmdlcyByZW1haW4KKwlvdXRzaWRlIG9mIGEgcGFydGlh bCBpbmRleCdzIHByZWRpY2F0ZS4gIEl0IHdpbGwgb25seSBiZWNvbWUKKwlhbiBhY3R1YWwgSE9U IHVwZGF0ZSBpZiB3ZSBjYW4gZmluZCByb29tIG9uIHRoZSBzYW1lIHBhZ2UgZm9yCiAJdGhlIG5l dyB0dXBsZSB2ZXJzaW9uLgogCiBIT1QgdXBkYXRlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvaGVhcC9oZWFwYW0uYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbS5jCmlu ZGV4IGZhNzkzNWEwZWQzLi40NmNlODI0YzRlYSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNj ZXNzL2hlYXAvaGVhcGFtLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtLmMK QEAgLTMxNjQsMTIgKzMxNjQsMTMgQEAgVE1fUmVzdWx0CiBoZWFwX3VwZGF0ZShSZWxhdGlvbiBy ZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkJCUNvbW1hbmRJ ZCBjaWQsIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2FpdCwKIAkJCVRNX0ZhaWx1cmVEYXRh ICp0bWZkLCBMb2NrVHVwbGVNb2RlICpsb2NrbW9kZSwKLQkJCVRVX1VwZGF0ZUluZGV4ZXMgKnVw ZGF0ZV9pbmRleGVzKQorCQkJVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMsIHN0cnVj dCBFU3RhdGUgKmVzdGF0ZSkKIHsKIAlUTV9SZXN1bHQJcmVzdWx0OwogCVRyYW5zYWN0aW9uSWQg eGlkID0gR2V0Q3VycmVudFRyYW5zYWN0aW9uSWQoKTsKIAlCaXRtYXBzZXQgICpob3RfYXR0cnM7 CiAJQml0bWFwc2V0ICAqc3VtX2F0dHJzOworCUJpdG1hcHNldCAgKmV4cF9hdHRyczsKIAlCaXRt YXBzZXQgICprZXlfYXR0cnM7CiAJQml0bWFwc2V0ICAqaWRfYXR0cnM7CiAJQml0bWFwc2V0ICAq aW50ZXJlc3RpbmdfYXR0cnM7CkBAIC0zMjQ2LDYgKzMyNDcsOCBAQCBoZWFwX3VwZGF0ZShSZWxh dGlvbiByZWxhdGlvbiwgSXRlbVBvaW50ZXIgb3RpZCwgSGVhcFR1cGxlIG5ld3R1cCwKIAkJCQkJ CQkJCQkgICBJTkRFWF9BVFRSX0JJVE1BUF9IT1RfQkxPQ0tJTkcpOwogCXN1bV9hdHRycyA9IFJl bGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLAogCQkJCQkJCQkJCSAgIElOREVYX0FU VFJfQklUTUFQX1NVTU1BUklaRUQpOworCWV4cF9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRy Qml0bWFwKHJlbGF0aW9uLAorCQkJCQkJCQkJCSAgIElOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJ T04pOwogCWtleV9hdHRycyA9IFJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKHJlbGF0aW9uLCBJ TkRFWF9BVFRSX0JJVE1BUF9LRVkpOwogCWlkX2F0dHJzID0gUmVsYXRpb25HZXRJbmRleEF0dHJC aXRtYXAocmVsYXRpb24sCiAJCQkJCQkJCQkJICBJTkRFWF9BVFRSX0JJVE1BUF9JREVOVElUWV9L RVkpOwpAQCAtMzMxMSw2ICszMzE0LDcgQEAgaGVhcF91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24s IEl0ZW1Qb2ludGVyIG90aWQsIEhlYXBUdXBsZSBuZXd0dXAsCiAKIAkJYm1zX2ZyZWUoaG90X2F0 dHJzKTsKIAkJYm1zX2ZyZWUoc3VtX2F0dHJzKTsKKwkJYm1zX2ZyZWUoZXhwX2F0dHJzKTsKIAkJ Ym1zX2ZyZWUoa2V5X2F0dHJzKTsKIAkJYm1zX2ZyZWUoaWRfYXR0cnMpOwogCQkvKiBtb2RpZmll ZF9hdHRycyBub3QgeWV0IGluaXRpYWxpemVkICovCkBAIC0zNjEyLDYgKzM2MTYsNyBAQCBsMjoK IAogCQlibXNfZnJlZShob3RfYXR0cnMpOwogCQlibXNfZnJlZShzdW1fYXR0cnMpOworCQlibXNf ZnJlZShleHBfYXR0cnMpOwogCQlibXNfZnJlZShrZXlfYXR0cnMpOwogCQlibXNfZnJlZShpZF9h dHRycyk7CiAJCWJtc19mcmVlKG1vZGlmaWVkX2F0dHJzKTsKQEAgLTM5MjgsMjUgKzM5MzMsMzAg QEAgbDI6CiAKIAlpZiAobmV3YnVmID09IGJ1ZmZlcikKIAl7CisJCWJvb2wJCWV4cHJlc3Npb25f Y2hlY2tzID0gUmVsYXRpb25HZXRFeHByZXNzaW9uQ2hlY2tzKHJlbGF0aW9uKTsKKwogCQkvKgog CQkgKiBTaW5jZSB0aGUgbmV3IHR1cGxlIGlzIGdvaW5nIGludG8gdGhlIHNhbWUgcGFnZSwgd2Ug bWlnaHQgYmUgYWJsZQotCQkgKiB0byBkbyBhIEhPVCB1cGRhdGUuICBDaGVjayBpZiBhbnkgb2Yg dGhlIGluZGV4IGNvbHVtbnMgaGF2ZSBiZWVuCi0JCSAqIGNoYW5nZWQuCisJCSAqIHRvIGRvIGEg SE9UIHVwZGF0ZS4gIEFzIGEgcmVtaW5kZXIsIGhvdF9hdHRycyBpbmNsdWRlcyBhdHRyaWJ1dGVz CisJCSAqIHVzZWQgaW4gZXhwcmVzc2lvbnMsIGJ1dCBub3QgYXR0cmlidXRlcyB1c2VkIGJ5IHN1 bW1hcml6aW5nCisJCSAqIGluZGV4ZXMuCiAJCSAqLwotCQlpZiAoIWJtc19vdmVybGFwKG1vZGlm aWVkX2F0dHJzLCBob3RfYXR0cnMpKQotCQl7CisJCWlmICghYm1zX292ZXJsYXAobW9kaWZpZWRf YXR0cnMsIGhvdF9hdHRycykgfHwKKwkJCShleHByZXNzaW9uX2NoZWNrcyA9PSB0cnVlICYmIGVz dGF0ZSAhPSBOVUxMICYmIGV4cF9hdHRycyAmJgorCQkJIGJtc19vdmVybGFwKG1vZGlmaWVkX2F0 dHJzLCBleHBfYXR0cnMpICYmCisJCQkgRXhlY0luZGV4ZXNFeHByZXNzaW9uc1dlcmVOb3RVcGRh dGVkKHJlbGF0aW9uLCBtb2RpZmllZF9hdHRycywKKwkJCQkJCQkJCQkJCSAgZXN0YXRlLCAmb2xk dHVwLCBuZXd0dXApKSkKIAkJCXVzZV9ob3RfdXBkYXRlID0gdHJ1ZTsKIAotCQkJLyoKLQkJCSAq IElmIG5vbmUgb2YgdGhlIGNvbHVtbnMgdGhhdCBhcmUgdXNlZCBpbiBob3QtYmxvY2tpbmcgaW5k ZXhlcwotCQkJICogd2VyZSB1cGRhdGVkLCB3ZSBjYW4gYXBwbHkgSE9ULCBidXQgd2UgZG8gc3Rp bGwgbmVlZCB0byBjaGVjawotCQkJICogaWYgd2UgbmVlZCB0byB1cGRhdGUgdGhlIHN1bW1hcml6 aW5nIGluZGV4ZXMsIGFuZCB1cGRhdGUgdGhvc2UKLQkJCSAqIGluZGV4ZXMgaWYgdGhlIGNvbHVt bnMgd2VyZSB1cGRhdGVkLCBvciB3ZSBtYXkgZmFpbCB0byBkZXRlY3QKLQkJCSAqIGUuZy4gdmFs dWUgYm91bmQgY2hhbmdlcyBpbiBCUklOIG1pbm1heCBpbmRleGVzLgotCQkJICovCi0JCQlpZiAo Ym1zX292ZXJsYXAobW9kaWZpZWRfYXR0cnMsIHN1bV9hdHRycykpCi0JCQkJc3VtbWFyaXplZF91 cGRhdGUgPSB0cnVlOwotCQl9CisJCS8qCisJCSAqIElmIG5vbmUgb2YgdGhlIGNvbHVtbnMgdGhh dCBhcmUgdXNlZCBpbiBob3QtYmxvY2tpbmcgaW5kZXhlcyB3ZXJlCisJCSAqIHVwZGF0ZWQsIHdl IGNhbiBhcHBseSBIT1QsIGJ1dCB3ZSBkbyBzdGlsbCBuZWVkIHRvIGNoZWNrIGlmIHdlIG5lZWQK KwkJICogdG8gdXBkYXRlIHRoZSBzdW1tYXJpemluZyBpbmRleGVzLCBhbmQgdXBkYXRlIHRob3Nl IGluZGV4ZXMgaWYgdGhlCisJCSAqIGNvbHVtbnMgd2VyZSB1cGRhdGVkLCBvciB3ZSBtYXkgZmFp bCB0byBkZXRlY3QgZS5nLiB2YWx1ZSBib3VuZAorCQkgKiBjaGFuZ2VzIGluIEJSSU4gbWlubWF4 IGluZGV4ZXMuCisJCSAqLworCQlpZiAodXNlX2hvdF91cGRhdGUgJiYgYm1zX292ZXJsYXAobW9k aWZpZWRfYXR0cnMsIHN1bV9hdHRycykpCisJCQlzdW1tYXJpemVkX3VwZGF0ZSA9IHRydWU7CiAJ fQogCWVsc2UKIAl7CkBAIC00MTI2LDcgKzQxMzYsNiBAQCBsMjoKIAkJaGVhcF9mcmVldHVwbGUo b2xkX2tleV90dXBsZSk7CiAKIAlibXNfZnJlZShob3RfYXR0cnMpOwotCWJtc19mcmVlKHN1bV9h dHRycyk7CiAJYm1zX2ZyZWUoa2V5X2F0dHJzKTsKIAlibXNfZnJlZShpZF9hdHRycyk7CiAJYm1z X2ZyZWUobW9kaWZpZWRfYXR0cnMpOwpAQCAtNDQxMyw3ICs0NDIyLDcgQEAgc2ltcGxlX2hlYXBf dXBkYXRlKFJlbGF0aW9uIHJlbGF0aW9uLCBJdGVtUG9pbnRlciBvdGlkLCBIZWFwVHVwbGUgdHVw LAogCXJlc3VsdCA9IGhlYXBfdXBkYXRlKHJlbGF0aW9uLCBvdGlkLCB0dXAsCiAJCQkJCQkgR2V0 Q3VycmVudENvbW1hbmRJZCh0cnVlKSwgSW52YWxpZFNuYXBzaG90LAogCQkJCQkJIHRydWUgLyog d2FpdCBmb3IgY29tbWl0ICovICwKLQkJCQkJCSAmdG1mZCwgJmxvY2ttb2RlLCB1cGRhdGVfaW5k ZXhlcyk7CisJCQkJCQkgJnRtZmQsICZsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMsIE5VTEwpOwog CXN3aXRjaCAocmVzdWx0KQogCXsKIAkJY2FzZSBUTV9TZWxmTW9kaWZpZWQ6CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC9oZWFwYW1faGFuZGxlci5jIGIvc3JjL2JhY2tlbmQv YWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwppbmRleCBjMGJlYzAxNDE1NC4uOGU5YWI4OTJk NzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL2hlYXBhbV9oYW5kbGVyLmMK KysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvaGVhcGFtX2hhbmRsZXIuYwpAQCAtMzEyLDgg KzMxMiw4IEBAIGhlYXBhbV90dXBsZV9kZWxldGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2lu dGVyIHRpZCwgQ29tbWFuZElkIGNpZCwKIHN0YXRpYyBUTV9SZXN1bHQKIGhlYXBhbV90dXBsZV91 cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90 ICpzbG90LAogCQkJCQlDb21tYW5kSWQgY2lkLCBTbmFwc2hvdCBzbmFwc2hvdCwgU25hcHNob3Qg Y3Jvc3NjaGVjaywKLQkJCQkJYm9vbCB3YWl0LCBUTV9GYWlsdXJlRGF0YSAqdG1mZCwKLQkJCQkJ TG9ja1R1cGxlTW9kZSAqbG9ja21vZGUsIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVz KQorCQkJCQlib29sIHdhaXQsIFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICps b2NrbW9kZSwKKwkJCQkJVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMsIEVTdGF0ZSAq ZXN0YXRlKQogewogCWJvb2wJCXNob3VsZEZyZWUgPSB0cnVlOwogCUhlYXBUdXBsZQl0dXBsZSA9 IEV4ZWNGZXRjaFNsb3RIZWFwVHVwbGUoc2xvdCwgdHJ1ZSwgJnNob3VsZEZyZWUpOwpAQCAtMzI0 LDcgKzMyNCw3IEBAIGhlYXBhbV90dXBsZV91cGRhdGUoUmVsYXRpb24gcmVsYXRpb24sIEl0ZW1Q b2ludGVyIG90aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCXR1cGxlLT50X3RhYmxlT2lkID0g c2xvdC0+dHRzX3RhYmxlT2lkOwogCiAJcmVzdWx0ID0gaGVhcF91cGRhdGUocmVsYXRpb24sIG90 aWQsIHR1cGxlLCBjaWQsIGNyb3NzY2hlY2ssIHdhaXQsCi0JCQkJCQkgdG1mZCwgbG9ja21vZGUs IHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCSB0bWZkLCBsb2NrbW9kZSwgdXBkYXRlX2luZGV4ZXMs IGVzdGF0ZSk7CiAJSXRlbVBvaW50ZXJDb3B5KCZ0dXBsZS0+dF9zZWxmLCAmc2xvdC0+dHRzX3Rp ZCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RhYmxlL3RhYmxlYW0u YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKaW5kZXggZTE4YThmODI1MGYu LjlmZWNhOGEyOTZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdGFibGUvdGFibGVh bS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90YWJsZS90YWJsZWFtLmMKQEAgLTM0NSw3ICsz NDUsNyBAQCBzaW1wbGVfdGFibGVfdHVwbGVfdXBkYXRlKFJlbGF0aW9uIHJlbCwgSXRlbVBvaW50 ZXIgb3RpZCwKIAkJCQkJCQkJR2V0Q3VycmVudENvbW1hbmRJZCh0cnVlKSwKIAkJCQkJCQkJc25h cHNob3QsIEludmFsaWRTbmFwc2hvdCwKIAkJCQkJCQkJdHJ1ZSAvKiB3YWl0IGZvciBjb21taXQg Ki8gLAotCQkJCQkJCQkmdG1mZCwgJmxvY2ttb2RlLCB1cGRhdGVfaW5kZXhlcyk7CisJCQkJCQkJ CSZ0bWZkLCAmbG9ja21vZGUsIHVwZGF0ZV9pbmRleGVzLCBOVUxMKTsKIAogCXN3aXRjaCAocmVz dWx0KQogCXsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYyBiL3NyYy9i YWNrZW5kL2NhdGFsb2cvaW5kZXguYwppbmRleCBjZGFiZjc4MDI0NC4uYzI4ODU3YTA5NDMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NhdGFsb2cvaW5kZXguYworKysgYi9zcmMvYmFja2VuZC9j YXRhbG9nL2luZGV4LmMKQEAgLTI0NTUsNyArMjQ1NSwyMiBAQCBCdWlsZEluZGV4SW5mbyhSZWxh dGlvbiBpbmRleCkKIAogCS8qIGZpbGwgaW4gYXR0cmlidXRlIG51bWJlcnMgKi8KIAlmb3IgKGkg PSAwOyBpIDwgbnVtQXR0czsgaSsrKQorCXsKIAkJaWktPmlpX0luZGV4QXR0ck51bWJlcnNbaV0g PSBpbmRleFN0cnVjdC0+aW5ka2V5LnZhbHVlc1tpXTsKKwkJaWktPmlpX0luZGV4QXR0cnMgPQor CQkJYm1zX2FkZF9tZW1iZXIoaWktPmlpX0luZGV4QXR0cnMsCisJCQkJCQkgICBpbmRleFN0cnVj dC0+aW5ka2V5LnZhbHVlc1tpXSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRyaWJ1dGVOdW1iZXIp OworCisJCWlpLT5paV9Db21wYWN0QXR0cltpXSA9IFR1cGxlRGVzY0NvbXBhY3RBdHRyKFJlbGF0 aW9uR2V0RGVzY3IoaW5kZXgpLCBpKTsKKwl9CisKKwkvKiBjb2xsZWN0IGF0dHJpYnV0ZXMgdXNl ZCBpbiB0aGUgZXhwcmVzc2lvbiwgaWYgb25lIGlzIHByZXNlbnQgKi8KKwlpZiAoaWktPmlpX0V4 cHJlc3Npb25zKQorCQlwdWxsX3ZhcmF0dG5vcygoTm9kZSAqKSBpaS0+aWlfRXhwcmVzc2lvbnMs IDEsICZpaS0+aWlfRXhwcmVzc2lvbkF0dHJzKTsKKworCS8qIGNvbGxlY3QgYXR0cmlidXRlcyB1 c2VkIGluIHRoZSBwcmVkaWNhdGUsIGlmIG9uZSBpcyBwcmVzZW50ICovCisJaWYgKGlpLT5paV9Q cmVkaWNhdGUpCisJCXB1bGxfdmFyYXR0bm9zKChOb2RlICopIGlpLT5paV9QcmVkaWNhdGUsIDEs ICZpaS0+aWlfUHJlZGljYXRlQXR0cnMpOwogCiAJLyogZmV0Y2ggZXhjbHVzaW9uIGNvbnN0cmFp bnQgaW5mbyBpZiBhbnkgKi8KIAlpZiAoaW5kZXhTdHJ1Y3QtPmluZGlzZXhjbHVzaW9uKQpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY0luZGV4aW5nLmMgYi9zcmMvYmFja2Vu ZC9leGVjdXRvci9leGVjSW5kZXhpbmcuYwppbmRleCA3Yzg3ZjAxMmMzMC4uN2RjZTM4ZGQwOGEg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCisrKyBiL3Ny Yy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNJbmRleGluZy5jCkBAIC0xMTcsNiArMTE3LDggQEAKICNp bmNsdWRlICJ1dGlscy9tdWx0aXJhbmdldHlwZXMuaCIKICNpbmNsdWRlICJ1dGlscy9yYW5nZXR5 cGVzLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgorI2luY2x1ZGUgInV0aWxzL2RhdHVt LmgiCisjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAKIC8qIHdhaXRNb2RlIGFyZ3VtZW50 IHRvIGNoZWNrX2V4Y2x1c2lvbl9vcl91bmlxdWVfY29uc3RyYWludCgpICovCiB0eXBlZGVmIGVu dW0KQEAgLTEwODksNiArMTA5MSw5IEBAIGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoUmVzdWx0 UmVsSW5mbyAqcmVzdWx0UmVsSW5mbywgRVN0YXRlICplc3RhdGUsCiAKIAlpZiAoaGFzZXhwcmVz c2lvbikKIAl7CisJCWlmIChpbmRleEluZm8tPmlpX0luZGV4VW5jaGFuZ2VkKQorCQkJcmV0dXJu IHRydWU7CisKIAkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdlZCA9IGZhbHNlOwogCQlyZXR1 cm4gZmFsc2U7CiAJfQpAQCAtMTE2NiwzICsxMTcxLDE5OCBAQCBFeGVjV2l0aG91dE92ZXJsYXBz Tm90RW1wdHkoUmVsYXRpb24gcmVsLCBOYW1lRGF0YSBhdHRuYW1lLCBEYXR1bSBhdHR2YWwsIGNo YXIgdAogCQkJCSBlcnJtc2coImVtcHR5IFdJVEhPVVQgT1ZFUkxBUFMgdmFsdWUgZm91bmQgaW4g Y29sdW1uIFwiJXNcIiBpbiByZWxhdGlvbiBcIiVzXCIiLAogCQkJCQkJTmFtZVN0cihhdHRuYW1l KSwgUmVsYXRpb25HZXRSZWxhdGlvbk5hbWUocmVsKSkpKTsKIH0KKworLyoKKyAqIERldGVybWlu ZSBpZiBhbnkgaW5kZXggd2l0aCBhbiBleHByZXNzaW9uIHJlcXVpcmVzIHVwZGF0aW5nLgorICoK KyAqIFRoaXMgZnVuY3Rpb24gd2lsbCByZXZpZXcgYWxsIGluZGV4ZXMgd2l0aCBleHByZXNzaW9u cyB0byBkZXRlcm1pbmUgaWYgdGhlCisgKiB1cGRhdGUgZnJvbSBvbGQgdG8gbmV3IHR1cGxlIHJl cXVpcmVzIHRoYXQgdGhlIGluZGV4IGJlIHVwZGF0ZWQuICBUaGlzIGlzCisgKiB1c2VkIHRvIGRl dGVybWluZSBpZiBhIEhPVCB1cGRhdGUgaXMgcG9zc2libGUgb3Igbm90LgorICoKKyAqIFJldHVy bnMgdHJ1ZSBpZmYgbm9uZSBvZiB0aGUgZXhwcmVzc2lvbiBpbmRleGVzIHJlcXVpcmUgdXBkYXRp bmcgZHVlIHRvIHRoZQorICogY2hhbmdlIGZyb20gb2xkIHRvIG5ldyB0dXBsZSBvciB3aGVuIGJv dGggdGhlIG9sZCBhbmQgbmV3IHR1cGxlcyBkbyBub3QKKyAqIHNhdGlzZnkgdGhlIHByZWRpY2F0 ZSBvZiB0aGUgaW5kZXguCisgKi8KK2Jvb2wKK0V4ZWNJbmRleGVzRXhwcmVzc2lvbnNXZXJlTm90 VXBkYXRlZChSZWxhdGlvbiByZWxhdGlvbiwKKwkJCQkJCQkJCSBCaXRtYXBzZXQgKm1vZGlmaWVk X2F0dHJzLAorCQkJCQkJCQkJIEVTdGF0ZSAqZXN0YXRlLAorCQkJCQkJCQkJIEhlYXBUdXBsZSBv bGRfdHVwbGUsCisJCQkJCQkJCQkgSGVhcFR1cGxlIG5ld190dXBsZSkKK3sKKwlMaXN0Q2VsbCAg ICpsYzsKKwlMaXN0CSAgICppbmRleGluZm9saXN0ID0gUmVsYXRpb25HZXRFeHBySW5kZXhJbmZv TGlzdChyZWxhdGlvbik7CisJRXhwckNvbnRleHQgKmVjb250ZXh0ID0gTlVMTDsKKwlUdXBsZURl c2MJdHVwbGVkZXNjOworCVR1cGxlVGFibGVTbG90ICpvbGRfdHRzID0gTlVMTDsKKwlUdXBsZVRh YmxlU2xvdCAqbmV3X3R0cyA9IE5VTEw7CisJYm9vbAkJZXhwcmVzc2lvbl9jaGVja3MgPSBSZWxh dGlvbkdldEV4cHJlc3Npb25DaGVja3MocmVsYXRpb24pOworCWJvb2wJCWNoYW5nZWQgPSBmYWxz ZTsKKworI2lmbmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisKKwkvKgorCSAqIEFzc3VtZSB0aGUg aW5kZXggaXMgY2hhbmdlZCB3aGVuIHdlIGRvbid0IGhhdmUgYW4gZXN0YXRlIGNvbnRleHQgdG8g dXNlCisJICogb3IgdGhlIHJlbG9wdGlvbiBpcyBkaXNhYmxlZC4KKwkgKi8KKwlpZiAoIWV4cHJl c3Npb25fY2hlY2tzIHx8IGVzdGF0ZSA9PSBOVUxMKQorCQlyZXR1cm4gY2hhbmdlZDsKKyNlbmRp ZgorCisJQXNzZXJ0KGV4cHJlc3Npb25fY2hlY2tzID09IHRydWUpOworCUFzc2VydChlc3RhdGUg IT0gTlVMTCk7CisKKwkvKgorCSAqIEV4YW1pbmUgZXhwcmVzc2lvbiBhbmQgcGFydGlhbCBpbmRl eHMgb24gdGhpcyByZWxhdGlvbiByZWxhdGl2ZSB0byB0aGUKKwkgKiBjaGFuZ2VzIGJldHdlZW4g b2xkIGFuZCBuZXcgdHVwbGVzLgorCSAqLworCWZvcmVhY2gobGMsIGluZGV4aW5mb2xpc3QpCisJ eworCQlJbmRleEluZm8gICppbmRleEluZm8gPSAoSW5kZXhJbmZvICopIGxmaXJzdChsYyk7CisK KwkJLyoKKwkJICogSWYgdGhpcyBpcyBhIHBhcnRpYWwgaW5kZXggaXQgaGFzIGEgcHJlZGljYXRl LCBldmFsdWF0ZSB0aGUKKwkJICogZXhwcmVzc2lvbiB0byBkZXRlcm1pbmUgaWYgd2UgbmVlZCB0 byBpbmNsdWRlIGl0IG9yIG5vdC4KKwkJICovCisJCWlmIChibXNfb3ZlcmxhcChpbmRleEluZm8t PmlpX1ByZWRpY2F0ZUF0dHJzLCBtb2RpZmllZF9hdHRycykpCisJCXsKKwkJCUV4cHJTdGF0ZSAg KnBzdGF0ZTsKKwkJCWJvb2wJCW9sZF90dXBsZV9xdWFsaWZpZXMsCisJCQkJCQluZXdfdHVwbGVf cXVhbGlmaWVzOworCisJCQkvKiBDcmVhdGUgdGhlc2Ugb25jZSwgb25seSBpZiBuZWNlc3Nhcnks IHRoZW4gcmV1c2UgdGhlbS4gKi8KKwkJCWlmICghZWNvbnRleHQpCisJCQl7CisJCQkJZWNvbnRl eHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0ZSk7CisJCQkJdHVwbGVkZXNjID0gUmVs YXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJCQkJb2xkX3R0cyA9IE1ha2VTaW5nbGVUdXBsZVRh YmxlU2xvdCh0dXBsZWRlc2MsCisJCQkJCQkJCQkJCQkgICAmVFRTT3BzSGVhcFR1cGxlKTsKKwkJ CQluZXdfdHRzID0gTWFrZVNpbmdsZVR1cGxlVGFibGVTbG90KHR1cGxlZGVzYywKKwkJCQkJCQkJ CQkJCSAgICZUVFNPcHNIZWFwVHVwbGUpOworCisJCQkJRXhlY1N0b3JlSGVhcFR1cGxlKG9sZF90 dXBsZSwgb2xkX3R0cywgSW52YWxpZEJ1ZmZlcik7CisJCQkJRXhlY1N0b3JlSGVhcFR1cGxlKG5l d190dXBsZSwgbmV3X3R0cywgSW52YWxpZEJ1ZmZlcik7CisJCQl9CisKKwkJCXBzdGF0ZSA9IEV4 ZWNQcmVwYXJlUXVhbChpbmRleEluZm8tPmlpX1ByZWRpY2F0ZSwgZXN0YXRlKTsKKworCQkJLyoK KwkJCSAqIEhlcmUgdGhlIHRlcm0gInF1YWxpZmllcyIgbWVhbnMgInNhdGlzZmllcyB0aGUgcHJl ZGljYXRlCisJCQkgKiBjb25kaXRpb24gb2YgdGhlIHBhcnRpYWwgaW5kZXgiLgorCQkJICovCisJ CQllY29udGV4dC0+ZWN4dF9zY2FudHVwbGUgPSBvbGRfdHRzOworCQkJb2xkX3R1cGxlX3F1YWxp ZmllcyA9IEV4ZWNRdWFsKHBzdGF0ZSwgZWNvbnRleHQpOworCisJCQllY29udGV4dC0+ZWN4dF9z Y2FudHVwbGUgPSBuZXdfdHRzOworCQkJbmV3X3R1cGxlX3F1YWxpZmllcyA9IEV4ZWNRdWFsKHBz dGF0ZSwgZWNvbnRleHQpOworCisJCQkvKgorCQkJICogSWYgbmVpdGhlciB0aGUgb2xkIG5vciB0 aGUgbmV3IHR1cGxlcyBzYXRpc2Z5IHRoZSBwcmVkaWNhdGUgd2UKKwkJCSAqIGNhbiBiZSBzdXJl IHRoYXQgdGhpcyBpbmRleCBkb2Vzbid0IG5lZWQgdXBkYXRpbmcsIGNvbnRpbnVlIHRvCisJCQkg KiB0aGUgbmV4dCBpbmRleC4KKwkJCSAqLworCQkJaWYgKChuZXdfdHVwbGVfcXVhbGlmaWVzID09 IGZhbHNlKSAmJiAob2xkX3R1cGxlX3F1YWxpZmllcyA9PSBmYWxzZSkpCisJCQkJY29udGludWU7 CisKKwkJCS8qCisJCQkgKiBJZiB0aGVyZSBpcyBhIHRyYW5zaXRpb24gYmV0d2VlbiBpbmRleGVk IGFuZCBub3QgaW5kZXhlZCwKKwkJCSAqIHRoYXQncyBlbm91Z2ggdG8gcmVxdWlyZSB0aGF0IHRo aXMgaW5kZXggaXMgdXBkYXRlZC4KKwkJCSAqLworCQkJaWYgKG5ld190dXBsZV9xdWFsaWZpZXMg IT0gb2xkX3R1cGxlX3F1YWxpZmllcykKKwkJCXsKKwkJCQljaGFuZ2VkID0gdHJ1ZTsKKwkJCQli cmVhazsKKwkJCX0KKworCQkJLyoKKwkJCSAqIE90aGVyd2lzZSB0aGUgb2xkIGFuZCBuZXcgdmFs dWVzIGV4aXN0IGluIHRoZSBpbmRleCwgYnV0IGRpZAorCQkJICogdGhleSBnZXQgdXBkYXRlZD8g IFdlIGRvbid0IHlldCBrbm93LCBzbyBwcm9jZWVkIHdpdGggdGhlIG5leHQKKwkJCSAqIHN0YXRl bWVudCBpbiB0aGUgbG9vcCB0byBmaW5kIG91dC4KKwkJCSAqLworCQl9CisKKworCQkvKgorCQkg KiBJbmRleGVzIHdpdGggZXhwcmVzc2lvbnMgbWF5IG9yIG1heSBub3QgaGF2ZSBjaGFuZ2VkLCBp dCBpcworCQkgKiBpbXBvc3NpYmxlIHRvIGtub3cgd2l0aG91dCBleGVyY2lzaW5nIHRoZWlyIGV4 cHJlc3Npb24gYW5kCisJCSAqIHJldmlld2luZyBpbmRleCB0dXBsZSBzdGF0ZSBmb3IgY2hhbmdl cy4gIFRoaXMgaXMgYSBsb3Qgb2Ygd29yaywKKwkJICogYnV0IGJlY2F1c2UgYWxsIGluZGV4ZXMg b24gSlNPTkIgY29sdW1ucyBmYWxsIGludG8gdGhpcyBjYXRlZ29yeSBpdAorCQkgKiBjYW4gYmUg d29ydGggaXQgdG8gYXZvaWQgaW5kZXggdXBkYXRlcyBhbmQgcmVtYWluIG9uIHRoZSBIT1QgdXBk YXRlCisJCSAqIHBhdGggd2hlbiBwb3NzaWJsZS4KKwkJICovCisJCWlmIChibXNfb3ZlcmxhcChp bmRleEluZm8tPmlpX0V4cHJlc3Npb25BdHRycywgbW9kaWZpZWRfYXR0cnMpKQorCQl7CisJCQlE YXR1bQkJb2xkX3ZhbHVlc1tJTkRFWF9NQVhfS0VZU107CisJCQlib29sCQlvbGRfaXNudWxsW0lO REVYX01BWF9LRVlTXTsKKwkJCURhdHVtCQluZXdfdmFsdWVzW0lOREVYX01BWF9LRVlTXTsKKwkJ CWJvb2wJCW5ld19pc251bGxbSU5ERVhfTUFYX0tFWVNdOworCisJCQkvKiBDcmVhdGUgdGhlc2Ug b25jZSwgb25seSBpZiBuZWNlc3NhcnksIHRoZW4gcmV1c2UgdGhlbS4gKi8KKwkJCWlmICghZWNv bnRleHQpCisJCQl7CisJCQkJZWNvbnRleHQgPSBHZXRQZXJUdXBsZUV4cHJDb250ZXh0KGVzdGF0 ZSk7CisJCQkJdHVwbGVkZXNjID0gUmVsYXRpb25HZXREZXNjcihyZWxhdGlvbik7CisJCQkJb2xk X3R0cyA9IE1ha2VTaW5nbGVUdXBsZVRhYmxlU2xvdCh0dXBsZWRlc2MsCisJCQkJCQkJCQkJCQkg ICAmVFRTT3BzSGVhcFR1cGxlKTsKKwkJCQluZXdfdHRzID0gTWFrZVNpbmdsZVR1cGxlVGFibGVT bG90KHR1cGxlZGVzYywKKwkJCQkJCQkJCQkJCSAgICZUVFNPcHNIZWFwVHVwbGUpOworCisJCQkJ RXhlY1N0b3JlSGVhcFR1cGxlKG9sZF90dXBsZSwgb2xkX3R0cywgSW52YWxpZEJ1ZmZlcik7CisJ CQkJRXhlY1N0b3JlSGVhcFR1cGxlKG5ld190dXBsZSwgbmV3X3R0cywgSW52YWxpZEJ1ZmZlcik7 CisJCQl9CisKKwkJCWluZGV4SW5mby0+aWlfRXhwcmVzc2lvbnNTdGF0ZSA9IE5JTDsKKworCQkJ ZWNvbnRleHQtPmVjeHRfc2NhbnR1cGxlID0gb2xkX3R0czsKKwkJCUZvcm1JbmRleERhdHVtKGlu ZGV4SW5mbywKKwkJCQkJCSAgIG9sZF90dHMsCisJCQkJCQkgICBlc3RhdGUsCisJCQkJCQkgICBv bGRfdmFsdWVzLAorCQkJCQkJICAgb2xkX2lzbnVsbCk7CisKKwkJCWVjb250ZXh0LT5lY3h0X3Nj YW50dXBsZSA9IG5ld190dHM7CisJCQlGb3JtSW5kZXhEYXR1bShpbmRleEluZm8sCisJCQkJCQkg ICBuZXdfdHRzLAorCQkJCQkJICAgZXN0YXRlLAorCQkJCQkJICAgbmV3X3ZhbHVlcywKKwkJCQkJ CSAgIG5ld19pc251bGwpOworCisJCQlmb3IgKGludCBpID0gMDsgaSA8IGluZGV4SW5mby0+aWlf TnVtSW5kZXhLZXlBdHRyczsgaSsrKQorCQkJeworCQkJCWlmIChvbGRfaXNudWxsW2ldICE9IG5l d19pc251bGxbaV0pCisJCQkJeworCQkJCQljaGFuZ2VkID0gdHJ1ZTsKKwkJCQkJYnJlYWs7CisJ CQkJfQorCQkJCWVsc2UgaWYgKCFvbGRfaXNudWxsW2ldKQorCQkJCXsKKwkJCQkJaW50MTYJCWVs bWxlbiA9IGluZGV4SW5mby0+aWlfQ29tcGFjdEF0dHJbaV0tPmF0dGxlbjsKKwkJCQkJYm9vbAkJ ZWxtYnl2YWwgPSBpbmRleEluZm8tPmlpX0NvbXBhY3RBdHRyW2ldLT5hdHRieXZhbDsKKworCQkJ CQlpZiAoIWRhdHVtX2ltYWdlX2VxKG9sZF92YWx1ZXNbaV0sIG5ld192YWx1ZXNbaV0sCisJCQkJ CQkJCQkJZWxtYnl2YWwsIGVsbWxlbikpCisJCQkJCXsKKwkJCQkJCWNoYW5nZWQgPSB0cnVlOwor CQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCWlmIChjaGFuZ2VkKQorCQkJ eworCQkJCS8qIFNob3J0Y3V0IGluZGV4X3VuY2hhbmdlZF9ieV91cGRhdGUoKSwgd2Uga25vdyB0 aGUgYW5zd2VyLiAqLworCQkJCWluZGV4SW5mby0+aWlfQ2hlY2tlZFVuY2hhbmdlZCA9IHRydWU7 CisJCQkJaW5kZXhJbmZvLT5paV9JbmRleFVuY2hhbmdlZCA9ICFjaGFuZ2VkOworCQkJCWJyZWFr OworCQkJfQorCQl9CisJfQorCisJaWYgKGVjb250ZXh0KQorCXsKKwkJRXhlY0Ryb3BTaW5nbGVU dXBsZVRhYmxlU2xvdChvbGRfdHRzKTsKKwkJRXhlY0Ryb3BTaW5nbGVUdXBsZVRhYmxlU2xvdChu ZXdfdHRzKTsKKwl9CisKKwlyZXR1cm4gIWNoYW5nZWQ7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9leGVjdXRvci9ub2RlTW9kaWZ5VGFibGUuYyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL25v ZGVNb2RpZnlUYWJsZS5jCmluZGV4IGIwZmU1MDA3NWFkLi5kNjhmNDBjYjk5OCAxMDA2NDQKLS0t IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKKysrIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZU1vZGlmeVRhYmxlLmMKQEAgLTIyODMsNyArMjI4Myw4IEBAIGxyZXBs YWNlOgogCQkJCQkJCQllc3RhdGUtPmVzX2Nyb3NzY2hlY2tfc25hcHNob3QsCiAJCQkJCQkJCXRy dWUgLyogd2FpdCBmb3IgY29tbWl0ICovICwKIAkJCQkJCQkJJmNvbnRleHQtPnRtZmQsICZ1cGRh dGVDeHQtPmxvY2ttb2RlLAotCQkJCQkJCQkmdXBkYXRlQ3h0LT51cGRhdGVJbmRleGVzKTsKKwkJ CQkJCQkJJnVwZGF0ZUN4dC0+dXBkYXRlSW5kZXhlcywKKwkJCQkJCQkJZXN0YXRlKTsKIAogCXJl dHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9jYWNoZS9yZWxj YWNoZS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwppbmRleCAzOTgxMTQz NzNlOS4uYjVlNDdiMzUyMWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2NhY2hlL3Jl bGNhY2hlLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvY2FjaGUvcmVsY2FjaGUuYwpAQCAtNjQs NiArNjQsNyBAQAogI2luY2x1ZGUgImNhdGFsb2cvcGdfdHlwZS5oIgogI2luY2x1ZGUgImNhdGFs b2cvc2NoZW1hcGcuaCIKICNpbmNsdWRlICJjYXRhbG9nL3N0b3JhZ2UuaCIKKyNpbmNsdWRlICJj YXRhbG9nL2luZGV4LmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvcG9saWN5LmgiCiAjaW5jbHVkZSAi Y29tbWFuZHMvcHVibGljYXRpb25jbWRzLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdHJpZ2dlci5o IgpAQCAtNTE4OCw2ICs1MTg5LDEyOCBAQCBSZWxhdGlvbkdldEluZGV4UHJlZGljYXRlKFJlbGF0 aW9uIHJlbGF0aW9uKQogCXJldHVybiByZXN1bHQ7CiB9CiAKKyAvKgorICAqIFJlbGF0aW9uR2V0 RXhwckluZGV4SW5mb0xpc3QgLS0gZ2V0IGEgbGlzdCBvZiBJbmRleEluZm8gZm9yIGV4cHJlc3Np b24KKyAgKiBpbmRleGVzIG9uIHRoaXMgcmVsYXRpb24KKyAgKi8KK0xpc3QgKgorUmVsYXRpb25H ZXRFeHBySW5kZXhJbmZvTGlzdChSZWxhdGlvbiByZWxhdGlvbikKK3sKKwlMaXN0Q2VsbCAgICps YzsKKwlMaXN0CSAgICppbmRleG9pZGxpc3Q7CisJTGlzdAkgICAqbmV3aW5kZXhvaWRsaXN0Owor CUxpc3QJICAgKnJlc3VsdCA9IE5VTEw7CisJTGlzdAkgICAqb2xkbGlzdDsKKwlPaWQJCQlyZWxw a2luZGV4OworCU9pZAkJCXJlbHJlcGxpbmRleDsKKwlNZW1vcnlDb250ZXh0IG9sZGN4dDsKKwor CWlmIChyZWxhdGlvbi0+cmRfaWlleHBybGlzdCkKKwkJcmV0dXJuIGxpc3RfY29weShyZWxhdGlv bi0+cmRfaWlleHBybGlzdCk7CisKKwkvKiBGYXN0IHBhdGggaWYgZGVmaW5pdGVseSBubyBpbmRl eGVzICovCisJaWYgKCFSZWxhdGlvbkdldEZvcm0ocmVsYXRpb24pLT5yZWxoYXNpbmRleCkKKwkJ cmV0dXJuIE5JTDsKKworcmVzdGFydDoKKwlpbmRleG9pZGxpc3QgPSBSZWxhdGlvbkdldEluZGV4 TGlzdChyZWxhdGlvbik7CisKKwkvKiBGYWxsIG91dCBpZiBubyBpbmRleGVzIChidXQgcmVsaGFz aW5kZXggd2FzIHNldCkgKi8KKwlpZiAoaW5kZXhvaWRsaXN0ID09IE5JTCkKKwkJcmV0dXJuIE5J TDsKKworCS8qCisJICogQ29weSB0aGUgcmRfcGtpbmRleCBhbmQgcmRfcmVwbGlkaW5kZXggdmFs dWVzIGNvbXB1dGVkIGJ5CisJICogUmVsYXRpb25HZXRJbmRleExpc3QgYmVmb3JlIHByb2NlZWRp bmcuICBUaGlzIGlzIG5lZWRlZCBiZWNhdXNlIGEKKwkgKiByZWxjYWNoZSBmbHVzaCBjb3VsZCBv Y2N1ciBpbnNpZGUgaW5kZXhfb3BlbiBiZWxvdywgcmVzZXR0aW5nIHRoZQorCSAqIGZpZWxkcyBt YW5hZ2VkIGJ5IFJlbGF0aW9uR2V0SW5kZXhMaXN0LiAgV2UgbmVlZCB0byBkbyB0aGUgd29yayB3 aXRoCisJICogc3RhYmxlIHZhbHVlcyBvZiB0aGVzZSBmaWVsZHMuCisJICovCisJcmVscGtpbmRl eCA9IHJlbGF0aW9uLT5yZF9wa2luZGV4OworCXJlbHJlcGxpbmRleCA9IHJlbGF0aW9uLT5yZF9y ZXBsaWRpbmRleDsKKworCWZvcmVhY2gobGMsIGluZGV4b2lkbGlzdCkKKwl7CisJCU9pZAkJCW9p ZCA9IGxmaXJzdF9vaWQobGMpOworCQlEYXR1bQkJZGF0dW07CisJCWJvb2wJCWlzbnVsbDsKKwkJ Tm9kZQkgICAqaW5kZXhFeHByZXNzaW9uczsKKwkJTm9kZQkgICAqaW5kZXhQcmVkaWNhdGU7CisJ CVJlbGF0aW9uCWluZGV4RGVzYzsKKwkJSW5kZXhJbmZvICAqaW5kZXhJbmZvOworCisJCS8qCisJ CSAqIEV4dHJhY3QgaW5kZXggZXhwcmVzc2lvbnMgYW5kIGluZGV4IHByZWRpY2F0ZS4gIE5vdGU6 IERvbid0IHVzZQorCQkgKiBSZWxhdGlvbkdldEluZGV4RXhwcmVzc2lvbnMoKS9SZWxhdGlvbkdl dEluZGV4UHJlZGljYXRlKCksIGJlY2F1c2UKKwkJICogdGhvc2UgbWlnaHQgcnVuIGNvbnN0YW50 IGV4cHJlc3Npb25zIGV2YWx1YXRpb24sIHdoaWNoIG5lZWRzIGEKKwkJICogc25hcHNob3QsIHdo aWNoIHdlIG1pZ2h0IG5vdCBoYXZlIGhlcmUuICAoQWxzbywgaXQncyBwcm9iYWJseSBtb3JlCisJ CSAqIHNvdW5kIHRvIGNvbGxlY3QgdGhlIGJpdG1hcHMgYmVmb3JlIGFueSB0cmFuc2Zvcm1hdGlv bnMgdGhhdCBtaWdodAorCQkgKiBlbGltaW5hdGUgY29sdW1ucywgYnV0IHRoZSBwcmFjdGljYWwg aW1wYWN0IG9mIHRoaXMgaXMgbGltaXRlZC4pCisJCSAqLworCQlpbmRleERlc2MgPSBpbmRleF9v cGVuKG9pZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwkJZGF0dW0gPSBoZWFwX2dldGF0dHIoaW5kZXhE ZXNjLT5yZF9pbmRleHR1cGxlLCBBbnVtX3BnX2luZGV4X2luZGV4cHJzLAorCQkJCQkJCSBHZXRQ Z0luZGV4RGVzY3JpcHRvcigpLCAmaXNudWxsKTsKKwkJaWYgKCFpc251bGwpCisJCQlpbmRleEV4 cHJlc3Npb25zID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0pKTsKKwkJ ZWxzZQorCQkJaW5kZXhFeHByZXNzaW9ucyA9IE5VTEw7CisKKwkJZGF0dW0gPSBoZWFwX2dldGF0 dHIoaW5kZXhEZXNjLT5yZF9pbmRleHR1cGxlLCBBbnVtX3BnX2luZGV4X2luZHByZWQsCisJCQkJ CQkJIEdldFBnSW5kZXhEZXNjcmlwdG9yKCksICZpc251bGwpOworCQlpZiAoIWlzbnVsbCkKKwkJ CWluZGV4UHJlZGljYXRlID0gc3RyaW5nVG9Ob2RlKFRleHREYXR1bUdldENTdHJpbmcoZGF0dW0p KTsKKwkJZWxzZQorCQkJaW5kZXhQcmVkaWNhdGUgPSBOVUxMOworCisJCWlmIChpbmRleEV4cHJl c3Npb25zIHx8IGluZGV4UHJlZGljYXRlKQorCQl7CisJCQlvbGRjeHQgPSBNZW1vcnlDb250ZXh0 U3dpdGNoVG8oQ2FjaGVNZW1vcnlDb250ZXh0KTsKKwkJCWluZGV4SW5mbyA9IEJ1aWxkSW5kZXhJ bmZvKGluZGV4RGVzYyk7CisJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKKwkJCXJl c3VsdCA9IGxhcHBlbmQocmVzdWx0LCBpbmRleEluZm8pOworCQl9CisKKwkJaW5kZXhfY2xvc2Uo aW5kZXhEZXNjLCBBY2Nlc3NTaGFyZUxvY2spOworCX0KKworCS8qCisJICogRHVyaW5nIG9uZSBv ZiB0aGUgaW5kZXhfb3BlbnMgaW4gdGhlIGFib3ZlIGxvb3AsIHdlIG1pZ2h0IGhhdmUgcmVjZWl2 ZWQKKwkgKiBhIHJlbGNhY2hlIGZsdXNoIGV2ZW50IG9uIHRoaXMgcmVsY2FjaGUgZW50cnksIHdo aWNoIG1pZ2h0IGhhdmUgYmVlbgorCSAqIHNpZ25hbGluZyBhIGNoYW5nZSBpbiB0aGUgcmVsJ3Mg aW5kZXggbGlzdC4gIElmIHNvLCB3ZSdkIGJldHRlciBzdGFydAorCSAqIG92ZXIgdG8gZW5zdXJl IHdlIGRlbGl2ZXIgdXAtdG8tZGF0ZSBJbmRleEluZm8uCisJICovCisJbmV3aW5kZXhvaWRsaXN0 ID0gUmVsYXRpb25HZXRJbmRleExpc3QocmVsYXRpb24pOworCWlmIChlcXVhbChpbmRleG9pZGxp c3QsIG5ld2luZGV4b2lkbGlzdCkgJiYKKwkJcmVscGtpbmRleCA9PSByZWxhdGlvbi0+cmRfcGtp bmRleCAmJgorCQlyZWxyZXBsaW5kZXggPT0gcmVsYXRpb24tPnJkX3JlcGxpZGluZGV4KQorCXsK KwkJLyogU3RpbGwgdGhlIHNhbWUgaW5kZXggc2V0LCBzbyBwcm9jZWVkICovCisJCWxpc3RfZnJl ZShuZXdpbmRleG9pZGxpc3QpOworCQlsaXN0X2ZyZWUoaW5kZXhvaWRsaXN0KTsKKwl9CisJZWxz ZQorCXsKKwkJLyogR290dGEgZG8gaXQgb3ZlciAuLi4gbWlnaHQgYXMgd2VsbCBub3QgbGVhayBt ZW1vcnkgKi8KKwkJbGlzdF9mcmVlKG5ld2luZGV4b2lkbGlzdCk7CisJCWxpc3RfZnJlZShpbmRl eG9pZGxpc3QpOworCQlsaXN0X2ZyZWUocmVzdWx0KTsKKworCQlnb3RvIHJlc3RhcnQ7CisJfQor CisJLyogTm93IHNhdmUgYSBjb3B5IG9mIHRoZSBjb21wbGV0ZWQgbGlzdCBpbiB0aGUgcmVsY2Fj aGUgZW50cnkuICovCisJb2xkY3h0ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKENhY2hlTWVtb3J5 Q29udGV4dCk7CisJb2xkbGlzdCA9IHJlbGF0aW9uLT5yZF9paWV4cHJsaXN0OworCXJlbGF0aW9u LT5yZF9paWV4cHJsaXN0ID0gbGlzdF9jb3B5KHJlc3VsdCk7CisJTWVtb3J5Q29udGV4dFN3aXRj aFRvKG9sZGN4dCk7CisKKwkvKiBEb24ndCBsZWFrIHRoZSBvbGQgbGlzdCwgaWYgdGhlcmUgaXMg b25lICovCisJaWYgKG9sZGxpc3QpCisJCWxpc3RfZnJlZShvbGRsaXN0KTsKKworCXJldHVybiBy ZXN1bHQ7Cit9CisKIC8qCiAgKiBSZWxhdGlvbkdldEluZGV4QXR0ckJpdG1hcCAtLSBnZXQgYSBi aXRtYXAgb2YgaW5kZXggYXR0cmlidXRlIG51bWJlcnMKICAqCkBAIC01MjI5LDcgKzUzNTIsMTEg QEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIEluZGV4QXR0 ckJpdG1hcEtpbmQgYXR0cktpbmQpCiAJQml0bWFwc2V0ICAqcGtpbmRleGF0dHJzOwkvKiBjb2x1 bW5zIGluIHRoZSBwcmltYXJ5IGluZGV4ICovCiAJQml0bWFwc2V0ICAqaWRpbmRleGF0dHJzOwkv KiBjb2x1bW5zIGluIHRoZSByZXBsaWNhIGlkZW50aXR5ICovCiAJQml0bWFwc2V0ICAqaG90Ymxv Y2tpbmdhdHRyczsJLyogY29sdW1ucyB3aXRoIEhPVCBibG9ja2luZyBpbmRleGVzICovCisJQml0 bWFwc2V0ICAqaG90YmxvY2tpbmdleHByYXR0cnM7CS8qIGFzIGFib3ZlLCBidXQgb25seSB0aG9z ZSBpbgorCQkJCQkJCQkJCSAqIGV4cHJlc3Npb25zICovCiAJQml0bWFwc2V0ICAqc3VtbWFyaXpl ZGF0dHJzOwkvKiBjb2x1bW5zIHdpdGggc3VtbWFyaXppbmcgaW5kZXhlcyAqLworCUJpdG1hcHNl dCAgKnN1bW1hcml6ZWRleHByYXR0cnM7CS8qIGFzIGFib3ZlLCBidXQgb25seSB0aG9zZSBpbgor CQkJCQkJCQkJCSAqIGV4cHJlc3Npb25zICovCiAJTGlzdAkgICAqaW5kZXhvaWRsaXN0OwogCUxp c3QJICAgKm5ld2luZGV4b2lkbGlzdDsKIAlPaWQJCQlyZWxwa2luZGV4OwpAQCAtNTI1Miw2ICs1 Mzc5LDggQEAgUmVsYXRpb25HZXRJbmRleEF0dHJCaXRtYXAoUmVsYXRpb24gcmVsYXRpb24sIElu ZGV4QXR0ckJpdG1hcEtpbmQgYXR0cktpbmQpCiAJCQkJcmV0dXJuIGJtc19jb3B5KHJlbGF0aW9u LT5yZF9ob3RibG9ja2luZ2F0dHIpOwogCQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJ WkVEOgogCQkJCXJldHVybiBibXNfY29weShyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIpOwor CQkJY2FzZSBJTkRFWF9BVFRSX0JJVE1BUF9FWFBSRVNTSU9OOgorCQkJCXJldHVybiBibXNfY29w eShyZWxhdGlvbi0+cmRfZXhwcmVzc2lvbmF0dHIpOwogCQkJZGVmYXVsdDoKIAkJCQllbG9nKEVS Uk9SLCAidW5rbm93biBhdHRyS2luZCAldSIsIGF0dHJLaW5kKTsKIAkJfQpAQCAtNTI5NSw3ICs1 NDI0LDkgQEAgcmVzdGFydDoKIAlwa2luZGV4YXR0cnMgPSBOVUxMOwogCWlkaW5kZXhhdHRycyA9 IE5VTEw7CiAJaG90YmxvY2tpbmdhdHRycyA9IE5VTEw7CisJaG90YmxvY2tpbmdleHByYXR0cnMg PSBOVUxMOwogCXN1bW1hcml6ZWRhdHRycyA9IE5VTEw7CisJc3VtbWFyaXplZGV4cHJhdHRycyA9 IE5VTEw7CiAJZm9yZWFjaChsLCBpbmRleG9pZGxpc3QpCiAJewogCQlPaWQJCQlpbmRleE9pZCA9 IGxmaXJzdF9vaWQobCk7CkBAIC01MzA5LDYgKzU0NDAsNyBAQCByZXN0YXJ0OgogCQlib29sCQlp c1BLOwkJLyogcHJpbWFyeSBrZXkgKi8KIAkJYm9vbAkJaXNJREtleTsJLyogcmVwbGljYSBpZGVu dGl0eSBpbmRleCAqLwogCQlCaXRtYXBzZXQgKiphdHRyczsKKwkJQml0bWFwc2V0ICoqZXhwcmF0 dHJzOwogCiAJCWluZGV4RGVzYyA9IGluZGV4X29wZW4oaW5kZXhPaWQsIEFjY2Vzc1NoYXJlTG9j ayk7CiAKQEAgLTUzNTIsMTQgKzU0ODQsMjAgQEAgcmVzdGFydDoKIAkJICogZGVjaWRlIHdoaWNo IGJpdG1hcCB3ZSdsbCB1cGRhdGUgaW4gdGhlIGZvbGxvd2luZyBsb29wLgogCQkgKi8KIAkJaWYg KGluZGV4RGVzYy0+cmRfaW5kYW0tPmFtc3VtbWFyaXppbmcpCisJCXsKIAkJCWF0dHJzID0gJnN1 bW1hcml6ZWRhdHRyczsKKwkJCWV4cHJhdHRycyA9ICZzdW1tYXJpemVkZXhwcmF0dHJzOworCQl9 CiAJCWVsc2UKKwkJewogCQkJYXR0cnMgPSAmaG90YmxvY2tpbmdhdHRyczsKKwkJCWV4cHJhdHRy cyA9ICZob3RibG9ja2luZ2V4cHJhdHRyczsKKwkJfQogCiAJCS8qIENvbGxlY3Qgc2ltcGxlIGF0 dHJpYnV0ZSByZWZlcmVuY2VzICovCiAJCWZvciAoaSA9IDA7IGkgPCBpbmRleERlc2MtPnJkX2lu ZGV4LT5pbmRuYXR0czsgaSsrKQogCQl7Ci0JCQlpbnQJCQlhdHRybnVtID0gaW5kZXhEZXNjLT5y ZF9pbmRleC0+aW5ka2V5LnZhbHVlc1tpXTsKKwkJCWludAkJCWF0dHJpZHggPSBpbmRleERlc2Mt PnJkX2luZGV4LT5pbmRrZXkudmFsdWVzW2ldOwogCiAJCQkvKgogCQkJICogU2luY2Ugd2UgaGF2 ZSBjb3ZlcmluZyBpbmRleGVzIHdpdGggbm9uLWtleSBjb2x1bW5zLCB3ZSBtdXN0CkBAIC01Mzc1 LDMwICs1NTEzLDI4IEBAIHJlc3RhcnQ6CiAJCQkgKiBrZXkgb3IgaWRlbnRpdHkga2V5LiBIZW5j ZSB3ZSBkbyBub3QgaW5jbHVkZSB0aGVtIGludG8KIAkJCSAqIHVpbmRleGF0dHJzLCBwa2luZGV4 YXR0cnMgYW5kIGlkaW5kZXhhdHRycyBiaXRtYXBzLgogCQkJICovCi0JCQlpZiAoYXR0cm51bSAh PSAwKQorCQkJaWYgKGF0dHJpZHggIT0gMCkKIAkJCXsKLQkJCQkqYXR0cnMgPSBibXNfYWRkX21l bWJlcigqYXR0cnMsCi0JCQkJCQkJCQkJYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBBdHRy aWJ1dGVOdW1iZXIpOworCQkJCUF0dHJOdW1iZXIJYXR0cm51bSA9IGF0dHJpZHggLSBGaXJzdExv d0ludmFsaWRIZWFwQXR0cmlidXRlTnVtYmVyOworCisJCQkJKmF0dHJzID0gYm1zX2FkZF9tZW1i ZXIoKmF0dHJzLCBhdHRybnVtKTsKIAogCQkJCWlmIChpc0tleSAmJiBpIDwgaW5kZXhEZXNjLT5y ZF9pbmRleC0+aW5kbmtleWF0dHMpCi0JCQkJCXVpbmRleGF0dHJzID0gYm1zX2FkZF9tZW1iZXIo dWluZGV4YXR0cnMsCi0JCQkJCQkJCQkJCQkgYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhlYXBB dHRyaWJ1dGVOdW1iZXIpOworCQkJCQl1aW5kZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKHVpbmRl eGF0dHJzLCBhdHRybnVtKTsKIAogCQkJCWlmIChpc1BLICYmIGkgPCBpbmRleERlc2MtPnJkX2lu ZGV4LT5pbmRua2V5YXR0cykKLQkJCQkJcGtpbmRleGF0dHJzID0gYm1zX2FkZF9tZW1iZXIocGtp bmRleGF0dHJzLAotCQkJCQkJCQkJCQkJICBhdHRybnVtIC0gRmlyc3RMb3dJbnZhbGlkSGVhcEF0 dHJpYnV0ZU51bWJlcik7CisJCQkJCXBraW5kZXhhdHRycyA9IGJtc19hZGRfbWVtYmVyKHBraW5k ZXhhdHRycywgYXR0cm51bSk7CiAKIAkJCQlpZiAoaXNJREtleSAmJiBpIDwgaW5kZXhEZXNjLT5y ZF9pbmRleC0+aW5kbmtleWF0dHMpCi0JCQkJCWlkaW5kZXhhdHRycyA9IGJtc19hZGRfbWVtYmVy KGlkaW5kZXhhdHRycywKLQkJCQkJCQkJCQkJCSAgYXR0cm51bSAtIEZpcnN0TG93SW52YWxpZEhl YXBBdHRyaWJ1dGVOdW1iZXIpOworCQkJCQlpZGluZGV4YXR0cnMgPSBibXNfYWRkX21lbWJlcihp ZGluZGV4YXR0cnMsIGF0dHJudW0pOwogCQkJfQogCQl9CiAKIAkJLyogQ29sbGVjdCBhbGwgYXR0 cmlidXRlcyB1c2VkIGluIGV4cHJlc3Npb25zLCB0b28gKi8KLQkJcHVsbF92YXJhdHRub3MoaW5k ZXhFeHByZXNzaW9ucywgMSwgYXR0cnMpOworCQlwdWxsX3ZhcmF0dG5vcyhpbmRleEV4cHJlc3Np b25zLCAxLCBleHByYXR0cnMpOwogCiAJCS8qIENvbGxlY3QgYWxsIGF0dHJpYnV0ZXMgaW4gdGhl IGluZGV4IHByZWRpY2F0ZSwgdG9vICovCi0JCXB1bGxfdmFyYXR0bm9zKGluZGV4UHJlZGljYXRl LCAxLCBhdHRycyk7CisJCXB1bGxfdmFyYXR0bm9zKGluZGV4UHJlZGljYXRlLCAxLCBleHByYXR0 cnMpOwogCiAJCWluZGV4X2Nsb3NlKGluZGV4RGVzYywgQWNjZXNzU2hhcmVMb2NrKTsKIAl9CkBA IC01NDI3LDExICs1NTYzLDI3IEBAIHJlc3RhcnQ6CiAJCWJtc19mcmVlKHBraW5kZXhhdHRycyk7 CiAJCWJtc19mcmVlKGlkaW5kZXhhdHRycyk7CiAJCWJtc19mcmVlKGhvdGJsb2NraW5nYXR0cnMp OworCQlibXNfZnJlZShob3RibG9ja2luZ2V4cHJhdHRycyk7CiAJCWJtc19mcmVlKHN1bW1hcml6 ZWRhdHRycyk7CisJCWJtc19mcmVlKHN1bW1hcml6ZWRleHByYXR0cnMpOwogCiAJCWdvdG8gcmVz dGFydDsKIAl9CiAKKwkvKiB7ZXhwcmVzc2lvbi1vbmx5IGNvbHVtbnN9ID0ge2V4cHJlc3Npb24g Y29sdW1uc30gLSB7ZGlyZWN0IGNvbHVtbnN9ICovCisJaG90YmxvY2tpbmdleHByYXR0cnMgPSBi bXNfZGVsX21lbWJlcnMoaG90YmxvY2tpbmdleHByYXR0cnMsCisJCQkJCQkJCQkJICAgaG90Ymxv Y2tpbmdhdHRycyk7CisJLyoge2hvdC1ibG9ja2luZyBjb2x1bW5zfSA9IHtkaXJlY3QgY29sdW1u c30gKyB7ZXhwcmVzc2lvbi1vbmx5IGNvbHVtbnN9ICovCisJaG90YmxvY2tpbmdhdHRycyA9IGJt c19hZGRfbWVtYmVycyhob3RibG9ja2luZ2F0dHJzLAorCQkJCQkJCQkJICAgaG90YmxvY2tpbmdl eHByYXR0cnMpOworCisJLyoge3N1bW1hcml6ZWQtb25seSBjb2x1bW5zfSA9IHtzdW1tYXJpemVk IGNvbHVtbnN9IC0ge2RpcmVjdCBjb2x1bW5zfSAqLworCXN1bW1hcml6ZWRleHByYXR0cnMgPSBi bXNfZGVsX21lbWJlcnMoc3VtbWFyaXplZGV4cHJhdHRycywKKwkJCQkJCQkJCQkgIHN1bW1hcml6 ZWRhdHRycyk7CisJLyoge3N1bW1hcml6ZWQgY29sdW1uc30gPSB7ZGlyZWN0IGNvbHVtbnN9ICsg e3N1bW1hcml6ZWQtb25seSBjb2x1bW5zfSAqLworCXN1bW1hcml6ZWRhdHRycyA9IGJtc19hZGRf bWVtYmVycyhzdW1tYXJpemVkYXR0cnMsCisJCQkJCQkJCQkgIHN1bW1hcml6ZWRleHByYXR0cnMp OworCiAJLyogRG9uJ3QgbGVhayB0aGUgb2xkIHZhbHVlcyBvZiB0aGVzZSBiaXRtYXBzLCBpZiBh bnkgKi8KIAlyZWxhdGlvbi0+cmRfYXR0cnN2YWxpZCA9IGZhbHNlOwogCWJtc19mcmVlKHJlbGF0 aW9uLT5yZF9rZXlhdHRyKTsKQEAgLTU0NDQsNiArNTU5Niw4IEBAIHJlc3RhcnQ6CiAJcmVsYXRp b24tPnJkX2hvdGJsb2NraW5nYXR0ciA9IE5VTEw7CiAJYm1zX2ZyZWUocmVsYXRpb24tPnJkX3N1 bW1hcml6ZWRhdHRyKTsKIAlyZWxhdGlvbi0+cmRfc3VtbWFyaXplZGF0dHIgPSBOVUxMOworCWJt c19mcmVlKHJlbGF0aW9uLT5yZF9leHByZXNzaW9uYXR0cik7CisJcmVsYXRpb24tPnJkX2V4cHJl c3Npb25hdHRyID0gTlVMTDsKIAogCS8qCiAJICogTm93IHNhdmUgY29waWVzIG9mIHRoZSBiaXRt YXBzIGluIHRoZSByZWxjYWNoZSBlbnRyeS4gIFdlIGludGVudGlvbmFsbHkKQEAgLTU0NTgsNiAr NTYxMiw3IEBAIHJlc3RhcnQ6CiAJcmVsYXRpb24tPnJkX2lkYXR0ciA9IGJtc19jb3B5KGlkaW5k ZXhhdHRycyk7CiAJcmVsYXRpb24tPnJkX2hvdGJsb2NraW5nYXR0ciA9IGJtc19jb3B5KGhvdGJs b2NraW5nYXR0cnMpOwogCXJlbGF0aW9uLT5yZF9zdW1tYXJpemVkYXR0ciA9IGJtc19jb3B5KHN1 bW1hcml6ZWRhdHRycyk7CisJcmVsYXRpb24tPnJkX2V4cHJlc3Npb25hdHRyID0gYm1zX2NvcHko aG90YmxvY2tpbmdleHByYXR0cnMpOwogCXJlbGF0aW9uLT5yZF9hdHRyc3ZhbGlkID0gdHJ1ZTsK IAlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3h0KTsKIApAQCAtNTQ3NCw2ICs1NjI5LDggQEAg cmVzdGFydDoKIAkJCXJldHVybiBob3RibG9ja2luZ2F0dHJzOwogCQljYXNlIElOREVYX0FUVFJf QklUTUFQX1NVTU1BUklaRUQ6CiAJCQlyZXR1cm4gc3VtbWFyaXplZGF0dHJzOworCQljYXNlIElO REVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT046CisJCQlyZXR1cm4gaG90YmxvY2tpbmdleHByYXR0 cnM7CiAJCWRlZmF1bHQ6CiAJCQllbG9nKEVSUk9SLCAidW5rbm93biBhdHRyS2luZCAldSIsIGF0 dHJLaW5kKTsKIAkJCXJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IGViOGJj MTI4NzIwLi5mMGE4Mjg2YTI1YiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMjk5Miw3ICsy OTkyLDcgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRF X1dJVEgoIigiKTsKIAkvKiBBTFRFUiBUQUJMRVNQQUNFIDxmb28+IFNFVHxSRVNFVCAoICovCiAJ ZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiVEFCTEVTUEFDRSIsIE1hdGNoQW55LCAiU0VUfFJF U0VUIiwgIigiKSkKLQkJQ09NUExFVEVfV0lUSCgic2VxX3BhZ2VfY29zdCIsICJyYW5kb21fcGFn ZV9jb3N0IiwKKwkJQ09NUExFVEVfV0lUSCgic2VxX3BhZ2VfY29zdCIsICJyYW5kb21fcGFnZV9j b3N0IiwgImV4cHJlc3Npb25fY2hlY2tzIiwKIAkJCQkJICAiZWZmZWN0aXZlX2lvX2NvbmN1cnJl bmN5IiwgIm1haW50ZW5hbmNlX2lvX2NvbmN1cnJlbmN5Iik7CiAKIAkvKiBBTFRFUiBURVhUIFNF QVJDSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL2dlbmFtLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvZ2VuYW0uaAppbmRleCAxYmU4NzM5NTczZi4uOTFhZjFlODIzOGQgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy9nZW5hbS5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9nZW5hbS5oCkBAIC0xOTQsNyArMTk0LDcgQEAgZXh0ZXJuIGJvb2wgaW5kZXhfY2FuX3JldHVy bihSZWxhdGlvbiBpbmRleFJlbGF0aW9uLCBpbnQgYXR0bm8pOwogZXh0ZXJuIFJlZ1Byb2NlZHVy ZSBpbmRleF9nZXRwcm9jaWQoUmVsYXRpb24gaXJlbCwgQXR0ck51bWJlciBhdHRudW0sCiAJCQkJ CQkJCQl1aW50MTYgcHJvY251bSk7CiBleHRlcm4gRm1nckluZm8gKmluZGV4X2dldHByb2NpbmZv KFJlbGF0aW9uIGlyZWwsIEF0dHJOdW1iZXIgYXR0bnVtLAotCQkJCQkJCQkgICB1aW50MTYgcHJv Y251bSk7CisJCQkJCQkJCSAgIHVpbnQxNiBwcm9jbnVtKTsJCQkJCQkJCSAgIAogZXh0ZXJuIHZv aWQgaW5kZXhfc3RvcmVfZmxvYXQ4X29yZGVyYnlfZGlzdGFuY2VzKEluZGV4U2NhbkRlc2Mgc2Nh biwKIAkJCQkJCQkJCQkJCSBPaWQgKm9yZGVyQnlUeXBlcywKIAkJCQkJCQkJCQkJCSBJbmRleE9y ZGVyQnlEaXN0YW5jZSAqZGlzdGFuY2VzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNz L2hlYXBhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCmluZGV4IDE2NDBkOWMzMmY3 Li5lMTJkYTE5MzRlOSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL2hlYXBhbS5oCisr KyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9oZWFwYW0uaApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1 ZGUgImFjY2Vzcy9za2V5LmgiCiAjaW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCQkvKiBmb3IgYmFj a3dhcmQgY29tcGF0aWJpbGl0eSAqLwogI2luY2x1ZGUgImFjY2Vzcy90YWJsZWFtLmgiCisjaW5j bHVkZSAiZXhlY3V0b3IvZXhlY3V0b3IuaCIKICNpbmNsdWRlICJub2Rlcy9sb2Nrb3B0aW9ucy5o IgogI2luY2x1ZGUgIm5vZGVzL3ByaW1ub2Rlcy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFn ZS5oIgpAQCAtMzM5LDcgKzM0MCw3IEBAIGV4dGVybiBUTV9SZXN1bHQgaGVhcF91cGRhdGUoUmVs YXRpb24gcmVsYXRpb24sIEl0ZW1Qb2ludGVyIG90aWQsCiAJCQkJCQkJIEhlYXBUdXBsZSBuZXd0 dXAsCiAJCQkJCQkJIENvbW1hbmRJZCBjaWQsIFNuYXBzaG90IGNyb3NzY2hlY2ssIGJvb2wgd2Fp dCwKIAkJCQkJCQkgc3RydWN0IFRNX0ZhaWx1cmVEYXRhICp0bWZkLCBMb2NrVHVwbGVNb2RlICps b2NrbW9kZSwKLQkJCQkJCQkgVFVfVXBkYXRlSW5kZXhlcyAqdXBkYXRlX2luZGV4ZXMpOworCQkJ CQkJCSBUVV9VcGRhdGVJbmRleGVzICp1cGRhdGVfaW5kZXhlcywgc3RydWN0IEVTdGF0ZSAqZXN0 YXRlKTsKIGV4dGVybiBUTV9SZXN1bHQgaGVhcF9sb2NrX3R1cGxlKFJlbGF0aW9uIHJlbGF0aW9u LCBIZWFwVHVwbGUgdHVwbGUsCiAJCQkJCQkJCSBDb21tYW5kSWQgY2lkLCBMb2NrVHVwbGVNb2Rl IG1vZGUsIExvY2tXYWl0UG9saWN5IHdhaXRfcG9saWN5LAogCQkJCQkJCQkgYm9vbCBmb2xsb3df dXBkYXRlcywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90YWJsZWFtLmggYi9zcmMv aW5jbHVkZS9hY2Nlc3MvdGFibGVhbS5oCmluZGV4IDEzMWMwNTBjMTVmLi42MmVkNjU5MmI4NSAx MDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL3RhYmxlYW0uaAorKysgYi9zcmMvaW5jbHVk ZS9hY2Nlc3MvdGFibGVhbS5oCkBAIC0zOCw2ICszOCw3IEBAIHN0cnVjdCBJbmRleEluZm87CiBz dHJ1Y3QgU2FtcGxlU2NhblN0YXRlOwogc3RydWN0IFZhY3V1bVBhcmFtczsKIHN0cnVjdCBWYWxp ZGF0ZUluZGV4U3RhdGU7CitzdHJ1Y3QgRVN0YXRlOwogCiAvKgogICogQml0bWFzayB2YWx1ZXMg Zm9yIHRoZSBmbGFncyBhcmd1bWVudCB0byB0aGUgc2Nhbl9iZWdpbiBjYWxsYmFjay4KQEAgLTU1 MCw3ICs1NTEsOCBAQCB0eXBlZGVmIHN0cnVjdCBUYWJsZUFtUm91dGluZQogCQkJCQkJCQkgYm9v bCB3YWl0LAogCQkJCQkJCQkgVE1fRmFpbHVyZURhdGEgKnRtZmQsCiAJCQkJCQkJCSBMb2NrVHVw bGVNb2RlICpsb2NrbW9kZSwKLQkJCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRl eGVzKTsKKwkJCQkJCQkJIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzLAorCQkJCQkJ CQkgc3RydWN0IEVTdGF0ZSAqZXN0YXRlKTsKIAogCS8qIHNlZSB0YWJsZV90dXBsZV9sb2NrKCkg Zm9yIHJlZmVyZW5jZSBhYm91dCBwYXJhbWV0ZXJzICovCiAJVE1fUmVzdWx0CSgqdHVwbGVfbG9j aykgKFJlbGF0aW9uIHJlbCwKQEAgLTE1NDEsMTIgKzE1NDMsMTIgQEAgc3RhdGljIGlubGluZSBU TV9SZXN1bHQKIHRhYmxlX3R1cGxlX3VwZGF0ZShSZWxhdGlvbiByZWwsIEl0ZW1Qb2ludGVyIG90 aWQsIFR1cGxlVGFibGVTbG90ICpzbG90LAogCQkJCSAgIENvbW1hbmRJZCBjaWQsIFNuYXBzaG90 IHNuYXBzaG90LCBTbmFwc2hvdCBjcm9zc2NoZWNrLAogCQkJCSAgIGJvb2wgd2FpdCwgVE1fRmFp bHVyZURhdGEgKnRtZmQsIExvY2tUdXBsZU1vZGUgKmxvY2ttb2RlLAotCQkJCSAgIFRVX1VwZGF0 ZUluZGV4ZXMgKnVwZGF0ZV9pbmRleGVzKQorCQkJCSAgIFRVX1VwZGF0ZUluZGV4ZXMgKnVwZGF0 ZV9pbmRleGVzLCBzdHJ1Y3QgRVN0YXRlICplc3RhdGUpCiB7CiAJcmV0dXJuIHJlbC0+cmRfdGFi bGVhbS0+dHVwbGVfdXBkYXRlKHJlbCwgb3RpZCwgc2xvdCwKIAkJCQkJCQkJCQkgY2lkLCBzbmFw c2hvdCwgY3Jvc3NjaGVjaywKLQkJCQkJCQkJCQkgd2FpdCwgdG1mZCwKLQkJCQkJCQkJCQkgbG9j a21vZGUsIHVwZGF0ZV9pbmRleGVzKTsKKwkJCQkJCQkJCQkgd2FpdCwgdG1mZCwgbG9ja21vZGUs CisJCQkJCQkJCQkJIHVwZGF0ZV9pbmRleGVzLCBlc3RhdGUpOwogfQogCiAvKgpkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaCBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWN1dG9yLmgKaW5kZXggMzBlMmE4MjM0NmYuLjM0M2QwNGZmZjU3IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9leGVjdXRvci9leGVjdXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9y L2V4ZWN1dG9yLmgKQEAgLTY2MSw2ICs2NjEsMTEgQEAgZXh0ZXJuIHZvaWQgY2hlY2tfZXhjbHVz aW9uX2NvbnN0cmFpbnQoUmVsYXRpb24gaGVhcCwgUmVsYXRpb24gaW5kZXgsCiAJCQkJCQkJCQkg ICBJdGVtUG9pbnRlciB0dXBsZWlkLAogCQkJCQkJCQkJICAgY29uc3QgRGF0dW0gKnZhbHVlcywg Y29uc3QgYm9vbCAqaXNudWxsLAogCQkJCQkJCQkJICAgRVN0YXRlICplc3RhdGUsIGJvb2wgbmV3 SW5kZXgpOworZXh0ZXJuIGJvb2wgRXhlY0luZGV4ZXNFeHByZXNzaW9uc1dlcmVOb3RVcGRhdGVk KFJlbGF0aW9uIHJlbGF0aW9uLAorCQkJCQkJCQkJCQkJIEJpdG1hcHNldCAqbW9kaWZpZWRfYXR0 cnMsCisJCQkJCQkJCQkJCQkgRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCQkJCQkgSGVhcFR1cGxl IG9sZF90dXBsZSwKKwkJCQkJCQkJCQkJCSBIZWFwVHVwbGUgbmV3X3R1cGxlKTsKIAogLyoKICAq IHByb3RvdHlwZXMgZnJvbSBmdW5jdGlvbnMgaW4gZXhlY1JlcGxpY2F0aW9uLmMKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL25vZGVzL2V4ZWNub2Rlcy5oIGIvc3JjL2luY2x1ZGUvbm9kZXMvZXhl Y25vZGVzLmgKaW5kZXggMjYyNWQ3ZTgyMjIuLjliZmRkMGQxNDY0IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9k ZXMuaApAQCAtMTU5LDEyICsxNTksMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgRXhwclN0YXRlCiAgKgog ICoJCU51bUluZGV4QXR0cnMJCXRvdGFsIG51bWJlciBvZiBjb2x1bW5zIGluIHRoaXMgaW5kZXgK ICAqCQlOdW1JbmRleEtleUF0dHJzCW51bWJlciBvZiBrZXkgY29sdW1ucyBpbiBpbmRleAorICoJ CUluZGV4QXR0cnMJCQliaXRtYXAgb2YgaW5kZXggYXR0cmlidXRlcwogICoJCUluZGV4QXR0ck51 bWJlcnMJdW5kZXJseWluZy1yZWwgYXR0cmlidXRlIG51bWJlcnMgdXNlZCBhcyBrZXlzCiAgKgkJ CQkJCQkoemVyb2VzIGluZGljYXRlIGV4cHJlc3Npb25zKS4gSXQgYWxzbyBjb250YWlucwogICog CQkJCQkJCWluZm8gYWJvdXQgaW5jbHVkZWQgY29sdW1ucy4KICAqCQlFeHByZXNzaW9ucwkJCWV4 cHIgdHJlZXMgZm9yIGV4cHJlc3Npb24gZW50cmllcywgb3IgTklMIGlmIG5vbmUKKyAqCQlFeHBy ZXNzaW9uQXR0cnMJCWJpdG1hcCBvZiBhdHRyaWJ1dGVzIHVzZWQgd2l0aGluIHRoZSBleHByZXNz aW9uCiAgKgkJRXhwcmVzc2lvbnNTdGF0ZQlleGVjIHN0YXRlIGZvciBleHByZXNzaW9ucywgb3Ig TklMIGlmIG5vbmUKICAqCQlQcmVkaWNhdGUJCQlwYXJ0aWFsLWluZGV4IHByZWRpY2F0ZSwgb3Ig TklMIGlmIG5vbmUKKyAqCQlQcmVkaWNhdGVBdHRycwkJYml0bWFwIG9mIGF0dHJpYnV0ZXMgdXNl ZCB3aXRoaW4gdGhlIHByZWRpY2F0ZQogICoJCVByZWRpY2F0ZVN0YXRlCQlleGVjIHN0YXRlIGZv ciBwcmVkaWNhdGUsIG9yIE5JTCBpZiBub25lCiAgKgkJRXhjbHVzaW9uT3BzCQlQZXItY29sdW1u IGV4Y2x1c2lvbiBvcGVyYXRvcnMsIG9yIE5VTEwgaWYgbm9uZQogICoJCUV4Y2x1c2lvblByb2Nz CQlVbmRlcmx5aW5nIGZ1bmN0aW9uIE9JRHMgZm9yIEV4Y2x1c2lvbk9wcwpAQCAtMTgzLDYgKzE4 Niw3IEBAIHR5cGVkZWYgc3RydWN0IEV4cHJTdGF0ZQogICoJCVBhcmFsbGVsV29ya2VycwkJIyBv ZiB3b3JrZXJzIHJlcXVlc3RlZCAoZXhjbHVkZXMgbGVhZGVyKQogICoJCUFtCQkJCQlPaWQgb2Yg aW5kZXggQU0KICAqCQlBbUNhY2hlCQkJCXByaXZhdGUgY2FjaGUgYXJlYSBmb3IgaW5kZXggQU0K KyAqCQlPcENsYXNzRGF0YVR5cGVzCW9wZXJhdG9yIGNsYXNzIGRhdGEgdHlwZXMKICAqCQlDb250 ZXh0CQkJCW1lbW9yeSBjb250ZXh0IGhvbGRpbmcgdGhpcyBJbmRleEluZm8KICAqCiAgKiBpaV9D b25jdXJyZW50LCBpaV9Ccm9rZW5Ib3RDaGFpbiwgYW5kIGlpX1BhcmFsbGVsV29ya2VycyBhcmUg dXNlZCBvbmx5CkBAIC0xOTQsMTAgKzE5OCwxNCBAQCB0eXBlZGVmIHN0cnVjdCBJbmRleEluZm8K IAlOb2RlVGFnCQl0eXBlOwogCWludAkJCWlpX051bUluZGV4QXR0cnM7CS8qIHRvdGFsIG51bWJl ciBvZiBjb2x1bW5zIGluIGluZGV4ICovCiAJaW50CQkJaWlfTnVtSW5kZXhLZXlBdHRyczsJLyog bnVtYmVyIG9mIGtleSBjb2x1bW5zIGluIGluZGV4ICovCisJQml0bWFwc2V0ICAqaWlfSW5kZXhB dHRyczsKIAlBdHRyTnVtYmVyCWlpX0luZGV4QXR0ck51bWJlcnNbSU5ERVhfTUFYX0tFWVNdOwor CUNvbXBhY3RBdHRyaWJ1dGUgKmlpX0NvbXBhY3RBdHRyW0lOREVYX01BWF9LRVlTXTsKIAlMaXN0 CSAgICppaV9FeHByZXNzaW9uczsgLyogbGlzdCBvZiBFeHByICovCisJQml0bWFwc2V0ICAqaWlf RXhwcmVzc2lvbkF0dHJzOwogCUxpc3QJICAgKmlpX0V4cHJlc3Npb25zU3RhdGU7CS8qIGxpc3Qg b2YgRXhwclN0YXRlICovCiAJTGlzdAkgICAqaWlfUHJlZGljYXRlOwkvKiBsaXN0IG9mIEV4cHIg Ki8KKwlCaXRtYXBzZXQgICppaV9QcmVkaWNhdGVBdHRyczsKIAlFeHByU3RhdGUgICppaV9QcmVk aWNhdGVTdGF0ZTsKIAlPaWQJCSAgICppaV9FeGNsdXNpb25PcHM7CS8qIGFycmF5IHdpdGggb25l IGVudHJ5IHBlciBjb2x1bW4gKi8KIAlPaWQJCSAgICppaV9FeGNsdXNpb25Qcm9jczsJLyogYXJy YXkgd2l0aCBvbmUgZW50cnkgcGVyIGNvbHVtbiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCBkYjNlNTA0YzNkMi4u M2ViYTI1NGEzNjYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0xNjQsNiArMTY0LDExIEBAIHR5cGVkZWYgc3RydWN0 IFJlbGF0aW9uRGF0YQogCUJpdG1hcHNldCAgKnJkX2lkYXR0cjsJCS8qIGluY2x1ZGVkIGluIHJl cGxpY2EgaWRlbnRpdHkgaW5kZXggKi8KIAlCaXRtYXBzZXQgICpyZF9ob3RibG9ja2luZ2F0dHI7 IC8qIGNvbHMgYmxvY2tpbmcgSE9UIHVwZGF0ZSAqLwogCUJpdG1hcHNldCAgKnJkX3N1bW1hcml6 ZWRhdHRyOwkvKiBjb2xzIGluZGV4ZWQgYnkgc3VtbWFyaXppbmcgaW5kZXhlcyAqLworCUJpdG1h cHNldCAgKnJkX2V4cHJlc3Npb25hdHRyOwkvKiBpbmRleGVkIGNvbHMgcmVmZXJlbmNlZCBieSBl eHByZXNzaW9ucyAqLworCisJLyogZGF0YSBtYW5hZ2VkIGJ5IFJlbGF0aW9uR2V0RXhwckluZGV4 SW5mb0xpc3Q6ICovCisJTGlzdAkgICAqcmRfaWlleHBybGlzdDsJLyogbGlzdCBvZiBJbmRleElu Zm8gZm9yIGluZGV4ZXMgd2l0aAorCQkJCQkJCQkgKiBleHByZXNzaW9ucyAqLwogCiAJUHVibGlj YXRpb25EZXNjICpyZF9wdWJkZXNjOwkvKiBwdWJsaWNhdGlvbiBkZXNjcmlwdG9yLCBvciBOVUxM ICovCiAKQEAgLTM0NCw2ICszNDksNyBAQCB0eXBlZGVmIHN0cnVjdCBTdGRSZE9wdGlvbnMKIAlp bnQJCQlwYXJhbGxlbF93b3JrZXJzOwkvKiBtYXggbnVtYmVyIG9mIHBhcmFsbGVsIHdvcmtlcnMg Ki8KIAlTdGRSZE9wdEluZGV4Q2xlYW51cCB2YWN1dW1faW5kZXhfY2xlYW51cDsJLyogY29udHJv bHMgaW5kZXggdmFjdXVtaW5nICovCiAJYm9vbAkJdmFjdXVtX3RydW5jYXRlOwkvKiBlbmFibGVz IHZhY3V1bSB0byB0cnVuY2F0ZSBhIHJlbGF0aW9uICovCisJYm9vbAkJZXhwcmVzc2lvbl9jaGVj a3M7CS8qIHVzZSBleHByZXNzaW9uIHRvIGNoZWNrcyBmb3IgY2hhbmdlcyAqLwogCiAJLyoKIAkg KiBGcmFjdGlvbiBvZiBwYWdlcyBpbiBhIHJlbGF0aW9uIHRoYXQgdmFjdXVtIGNhbiBlYWdlcmx5 IHNjYW4gYW5kIGZhaWwKQEAgLTQwNSw2ICs0MTEsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgU3RkUmRP cHRpb25zCiAJKChyZWxhdGlvbiktPnJkX29wdGlvbnMgPyBcCiAJICgoU3RkUmRPcHRpb25zICop IChyZWxhdGlvbiktPnJkX29wdGlvbnMpLT5wYXJhbGxlbF93b3JrZXJzIDogKGRlZmF1bHRwdykp CiAKKy8qCisgKiBSZWxhdGlvbkdldEV4cHJlc3Npb25DaGVja3MKKyAqCQlSZXR1cm5zIHRoZSBy ZWxhdGlvbidzIGV4cHJlc3Npb25fY2hlY2tzIHJlbG9wdGlvbiBzZXR0aW5nLgorICovCisjZGVm aW5lIFJlbGF0aW9uR2V0RXhwcmVzc2lvbkNoZWNrcyhyZWxhdGlvbikgXAorCSgocmVsYXRpb24p LT5yZF9vcHRpb25zID8gXAorCSAoKFN0ZFJkT3B0aW9ucyAqKSAocmVsYXRpb24pLT5yZF9vcHRp b25zKS0+ZXhwcmVzc2lvbl9jaGVja3MgOiB0cnVlKQorCiAvKiBWaWV3T3B0aW9ucy0+Y2hlY2tf b3B0aW9uIHZhbHVlcyAqLwogdHlwZWRlZiBlbnVtIFZpZXdPcHRDaGVja09wdGlvbgogewpkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvdXRpbHMvcmVsY2FjaGUuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L3JlbGNhY2hlLmgKaW5kZXggYTdjNTVkYjMzOWUuLjU2NTI0YTczMzk5IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS91dGlscy9yZWxjYWNoZS5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbGNh Y2hlLmgKQEAgLTUyLDYgKzUyLDcgQEAgZXh0ZXJuIExpc3QgKlJlbGF0aW9uR2V0SW5kZXhFeHBy ZXNzaW9ucyhSZWxhdGlvbiByZWxhdGlvbik7CiBleHRlcm4gTGlzdCAqUmVsYXRpb25HZXREdW1t eUluZGV4RXhwcmVzc2lvbnMoUmVsYXRpb24gcmVsYXRpb24pOwogZXh0ZXJuIExpc3QgKlJlbGF0 aW9uR2V0SW5kZXhQcmVkaWNhdGUoUmVsYXRpb24gcmVsYXRpb24pOwogZXh0ZXJuIGJ5dGVhICoq UmVsYXRpb25HZXRJbmRleEF0dE9wdGlvbnMoUmVsYXRpb24gcmVsYXRpb24sIGJvb2wgY29weSk7 CitleHRlcm4gTGlzdCAqUmVsYXRpb25HZXRFeHBySW5kZXhJbmZvTGlzdChSZWxhdGlvbiByZWxh dGlvbik7CiAKIC8qCiAgKiBXaGljaCBzZXQgb2YgY29sdW1ucyB0byByZXR1cm4gYnkgUmVsYXRp b25HZXRJbmRleEF0dHJCaXRtYXAuCkBAIC02Myw2ICs2NCw3IEBAIHR5cGVkZWYgZW51bSBJbmRl eEF0dHJCaXRtYXBLaW5kCiAJSU5ERVhfQVRUUl9CSVRNQVBfSURFTlRJVFlfS0VZLAogCUlOREVY X0FUVFJfQklUTUFQX0hPVF9CTE9DS0lORywKIAlJTkRFWF9BVFRSX0JJVE1BUF9TVU1NQVJJWkVE LAorCUlOREVYX0FUVFJfQklUTUFQX0VYUFJFU1NJT04sCiB9IEluZGV4QXR0ckJpdG1hcEtpbmQ7 CiAKIGV4dGVybiBCaXRtYXBzZXQgKlJlbGF0aW9uR2V0SW5kZXhBdHRyQml0bWFwKFJlbGF0aW9u IHJlbGF0aW9uLApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9oZWFwX2hv dF91cGRhdGVzLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvaGVhcF9ob3RfdXBkYXRl cy5vdXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjJhZDZlNTQxOGU5 Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9oZWFwX2hvdF91 cGRhdGVzLm91dApAQCAtMCwwICsxLDU4NiBAQAorLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIFRo aXMgdGFibGUgd2lsbCBoYXZlIHR3byBjb2x1bW5zIGFuZCB0d28gaW5kZXhlcywgb25lIG9uIHRo ZSBwcmltYXJ5IGtleQorLS0gaWQgYW5kIG9uZSBvbiB0aGUgZXhwcmVzc2lvbiAoaW5mby0+Pidu YW1lJykuICBUaGF0IG1lYW5zIHRoYXQgdGhlIGluZGV4ZWQKKy0tIGF0dHJpYnV0ZXMgYXJlICdp ZCcgYW5kICdpbmZvJy4KK2NyZWF0ZSB0YWJsZSBrZXl2YWx1ZShpZCBpbnRlZ2VyIHByaW1hcnkg a2V5LCBpbmZvIGpzb25iKTsKK2NyZWF0ZSBpbmRleCBuYW1laW5kZXggb24ga2V5dmFsdWUoKGlu Zm8tPj4nbmFtZScpKTsKK2luc2VydCBpbnRvIGtleXZhbHVlIHZhbHVlcyAoMSwgJ3sibmFtZSI6 ICJqb2huIiwgImRhdGEiOiAic29tZSBkYXRhIn0nKTsKKy0tIERpc2FibGUgZXhwcmVzc2lvbiBj aGVja3MuCitBTFRFUiBUQUJMRSBrZXl2YWx1ZSBTRVQgKGV4cHJlc3Npb25fY2hlY2tzID0gZmFs c2UpOworU0VMRUNUIHJlbG9wdGlvbnMgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ2tl eXZhbHVlJzsKKyAgICAgICAgcmVsb3B0aW9ucyAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisge2V4cHJlc3Npb25fY2hlY2tzPWZhbHNlfQorKDEgcm93KQorCistLSBXaGls ZSB0aGUgaW5kZXhlZCBhdHRyaWJ1dGUgIm5hbWUiIGlzIHVuY2hhbmdlZCB3ZSd2ZSBkaXNhYmxl ZCBleHByZXNzaW9uCistLSBjaGVja3Mgc28gdGhpcyB1cGRhdGUgc2hvdWxkIG5vdCBnbyBIT1Qg YXMgdGhlIHN5c3RlbSBjYW4ndCBkZXRlcm1pbmUgaWYKKy0tIHRoZSBpbmRleGVkIGF0dHJpYnV0 ZSBoYXMgY2hhbmdlZCB3aXRob3V0IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb24uCit1cGRhdGUg a2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJqb2huIiwgImRhdGEiOiAic29tZXRoaW5nIGVs c2UifScgd2hlcmUgaWQ9MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBk YXRlZCgna2V5dmFsdWUnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMCByb3cKKyBwZ19zdGF0X2dl dF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQor CistLSBSZS1lbmFibGUgZXhwcmVzc2lvbiBjaGVja3MuCitBTFRFUiBUQUJMRSBrZXl2YWx1ZSBT RVQgKGV4cHJlc3Npb25fY2hlY2tzID0gdHJ1ZSk7CitTRUxFQ1QgcmVsb3B0aW9ucyBGUk9NIHBn X2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAna2V5dmFsdWUnOworICAgICAgICByZWxvcHRpb25zICAg ICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisge2V4cHJlc3Npb25fY2hlY2tzPXRy dWV9CisoMSByb3cpCisKKy0tIFRoZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFtZSIgd2l0aCB2YWx1 ZSAiam9obiIgaXMgdW5jaGFuZ2VkLCBleHBlY3QgYSBIT1QgdXBkYXRlLgordXBkYXRlIGtleXZh bHVlIHNldCBpbmZvPSd7Im5hbWUiOiAiam9obiIsICJkYXRhIjogInNvbWUgb3RoZXIgZGF0YSJ9 JyB3aGVyZSBpZD0xOworc2VsZWN0IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdrZXl2YWx1ZSc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIHJvdworIHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0t IFRoZSBmb2xsb3dpbmcgdXBkYXRlIGNoYW5nZXMgdGhlIGluZGV4ZWQgYXR0cmlidXRlICJuYW1l IiwgdGhpcyBzaG91bGQgbm90IGJlIGEgSE9UIHVwZGF0ZS4KK3VwZGF0ZSBrZXl2YWx1ZSBzZXQg aW5mbz0neyJuYW1lIjogInNtaXRoIiwgImRhdGEiOiAic29tZSBvdGhlciBkYXRhIn0nIHdoZXJl IGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZh bHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJv dykKKworLS0gTm93LCB0aGlzIHVwZGF0ZSBkb2VzIG5vdCBjaGFuZ2UgdGhlIGluZGV4ZWQgYXR0 cmlidXRlICJuYW1lIiBmcm9tICJzbWl0aCIsIHRoaXMgc2hvdWxkIGJlIEhPVC4KK3VwZGF0ZSBr ZXl2YWx1ZSBzZXQgaW5mbz0neyJuYW1lIjogInNtaXRoIiwgImRhdGEiOiAic29tZSBtb3JlIGRh dGEifScgd2hlcmUgaWQ9MTsKK3NlbGVjdCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBk YXRlZCgna2V5dmFsdWUnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMiByb3dzIG5vdworIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCisoMSBy b3cpCisKK2Ryb3AgdGFibGUga2V5dmFsdWU7CistLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gVGhp cyB0YWJsZSBpcyB0aGUgc2FtZSBhcyB0aGUgcHJldmlvdXMgb25lIGJ1dCBpdCBoYXMgYSB0aGly ZCBpbmRleC4gIFRoZQorLS0gaW5kZXggJ2NvbGluZGV4JyBpc24ndCBhbiBleHByZXNzaW9uIGlu ZGV4LCBpdCBpbmRleGVzIHRoZSBlbnRpcmUgdmFsdWUKKy0tIGluIHRoZSBpbmZvIGNvbHVtbi4g IFRoZXJlIGFyZSBzdGlsbCBvbmx5IHR3byBpbmRleGVkIGF0dHJpYnV0ZXMgZm9yIHRoaXMKKy0t IHJlbGF0aW9uLCB0aGUgc2FtZSB0d28gYXMgYmVmb3JlLiAgVGhlIHByZXNlbmNlIG9mIGFuIGlu ZGV4IG9uIHRoZSBlbnRpcmUKKy0tIHZhbHVlIG9mIHRoZSBpbmZvIGNvbHVtbiBzaG91bGQgcHJl dmVudCBIT1QgdXBkYXRlcyBmb3IgYW55IHVwZGF0ZXMgdG8gYW55CistLSBwb3J0aW9uIG9mIEpT T05CIGNvbnRlbnQgaW4gdGhhdCBjb2x1bW4uCitjcmVhdGUgdGFibGUga2V5dmFsdWUoaWQgaW50 ZWdlciBwcmltYXJ5IGtleSwgaW5mbyBqc29uYik7CitjcmVhdGUgaW5kZXggbmFtZWluZGV4IG9u IGtleXZhbHVlKChpbmZvLT4+J25hbWUnKSk7CitjcmVhdGUgaW5kZXggY29saW5kZXggb24ga2V5 dmFsdWUoaW5mbyk7CitpbnNlcnQgaW50byBrZXl2YWx1ZSB2YWx1ZXMgKDEsICd7Im5hbWUiOiAi am9obiIsICJkYXRhIjogInNvbWUgZGF0YSJ9Jyk7CistLSBUaGlzIHVwZGF0ZSBkb2Vzbid0IGNo YW5nZSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaW5kZXgsIGJ1dCBpdCBkb2VzCistLSBj aGFuZ2UgdGhlIGNvbnRlbnQgb2YgdGhlIGluZm8gY29sdW1uIGFuZCBzbyBzaG91bGQgbm90IGJl IEhPVCBiZWNhdXNlIHRoZQorLS0gaW5kZXhlZCB2YWx1ZSBjaGFuZ2VkIGFzIGEgcmVzdWx0IG9m IHRoZSB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJqb2huIiwg ImRhdGEiOiAic29tZSBvdGhlciBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9n ZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBl Y3Q6IDAgcm93cworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAwCisoMSByb3cpCisKK2Ryb3AgdGFibGUga2V5dmFsdWU7CistLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLQorLS0gVGhlIHRhYmxlIGhhcyBvbmUgY29sdW1uIGRvY3MgYW5kIHR3byBpbmRl eGVzLiAgVGhleSBhcmUgYm90aCBleHByZXNzaW9uCistLSBpbmRleGVzIHJlZmVyZW5jaW5nIHRo ZSBzYW1lIGNvbHVtbiBhdHRyaWJ1dGUgKGRvY3MpIGJ1dCBvbmUgaXMgYSBwYXJ0aWFsCistLSBp bmRleC4KK0NSRUFURSBUQUJMRSBleCAoZG9jcyBKU09OQikgV0lUSCAoZmlsbGZhY3RvciA9IDYw KTsKK0lOU0VSVCBJTlRPIGV4IChkb2NzKSBWQUxVRVMgKCd7ImEiOiAwLCAiYiI6IDB9Jyk7CitJ TlNFUlQgSU5UTyBleCAoZG9jcykgU0VMRUNUIGpzb25iX2J1aWxkX29iamVjdCgnYicsIG4pIEZS T00gZ2VuZXJhdGVfc2VyaWVzKDEwMCwgMTAwMDApIGFzIG47CitDUkVBVEUgSU5ERVggaWR4X2V4 X2EgT04gZXggKChkb2NzLT4+J2EnKSk7CitDUkVBVEUgSU5ERVggaWR4X2V4X2IgT04gZXggKChk b2NzLT4+J2InKSkgV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOTsKKy0tIFdlJ3JlIHVz aW5nIEJUUkVFIGluZGV4ZXMgYW5kIGZvciB0aGlzIHRlc3Qgd2Ugd2FudCB0byBtYWtlIHN1cmUg dGhhdCB0aGV5IHJlbWFpbgorLS0gaW4gc3luYyB3aXRoIGNoYW5nZXMgdG8gb3VyIHJlbGF0aW9u LiAgRm9yY2UgdGhlIGNob2ljZSBvZiBpbmRleCBzY2FucyBiZWxvdyBzbworLS0gdGhhdCB3ZSBr bm93IHdlJ3JlIGNoZWNraW5nIHRoZSBpbmRleCdzIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB2YWx1 ZXMgc2hvdWxkIGJlCistLSBpbiB0aGUgaW5kZXggb3Igbm90LgorU0VUIFNFU1NJT04gZW5hYmxl X3NlcXNjYW4gPSBPRkY7CitTRVQgU0VTU0lPTiBlbmFibGVfYml0bWFwc2NhbiA9IE9GRjsKKy0t IExlYXZlICdhJyB1bmNoYW5nZWQgYnV0IG1vZGlmeSAnYicgdG8gYSB2YWx1ZSBvdXRzaWRlIG9m IHRoZSBpbmRleCBwcmVkaWNhdGUuCistLSBUaGlzIHNob3VsZCBiZSBhIEhPVCB1cGRhdGUgYmVj YXVzZSBuZWl0aGVyIGluZGV4IGlzIGNoYW5nZWQuCitVUERBVEUgZXggU0VUIGRvY3MgPSBqc29u Yl9idWlsZF9vYmplY3QoJ2EnLCAwLCAnYicsIDEpIFdIRVJFIChkb2NzLT4+J2EnKTo6bnVtZXJp YyA9IDA7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6 cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93CisgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90 X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworLS0gTGV0J3MgY2hlY2sg dG8gbWFrZSBzdXJlIHRoYXQgdGhlIGluZGV4IGRvZXMgbm90IGNvbnRhaW4gYSB2YWx1ZSBmb3Ig J2InCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4n YicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworICAgICAg ICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAK Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBpZHhfZXhfYiBvbiBleAorICAgRmlsdGVyOiAoKChk b2NzIC0+PiAnYic6OnRleHQpKTo6bnVtZXJpYyA8ICcxMDAnOjpudW1lcmljKQorKDIgcm93cykK KworU0VMRUNUICogRlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMgPiA5IEFORCAo ZG9jcy0+PidiJyk6Om51bWVyaWMgPCAxMDA7CisgZG9jcyAKKy0tLS0tLQorKDAgcm93cykKKwor LS0gTGVhdmUgJ2EnIHVuY2hhbmdlZCBidXQgbW9kaWZ5ICdiJyB0byBhIHZhbHVlIHdpdGhpbiB0 aGUgaW5kZXggcHJlZGljYXRlLgorLS0gVGhpcyByZXByZXNlbnRzIGEgY2hhbmdlIGZvciBmaWVs ZCAnYicgZnJvbSB1bmluZGV4ZWQgdG8gaW5kZXhlZCBhbmQgc28KKy0tIHRoaXMgc2hvdWxkIG5v dCB0YWtlIHRoZSBIT1QgcGF0aC4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxkX29i amVjdCgnYScsIDAsICdiJywgMTApIFdIRVJFIChkb2NzLT4+J2EnKTo6bnVtZXJpYyA9IDA7CitT RUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3Mp OyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3RhdF9nZXRfeGFjdF90dXBs ZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJvdykKKworLS0gTGV0J3Mg Y2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGluZGV4IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUg b2YgJ2InCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3Mt Pj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworICAg ICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAg ICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBpZHhfZXhfYiBvbiBleAorICAgRmlsdGVyOiAo KChkb2NzIC0+PiAnYic6OnRleHQpKTo6bnVtZXJpYyA8ICcxMDAnOjpudW1lcmljKQorKDIgcm93 cykKKworU0VMRUNUICogRlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMgPiA5IEFO RCAoZG9jcy0+PidiJyk6Om51bWVyaWMgPCAxMDA7CisgICAgICAgZG9jcyAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tCisgeyJhIjogMCwgImIiOiAxMH0KKygxIHJvdykKKworLS0gVGhpcyB1 cGRhdGUgbW9kaWZpZXMgdGhlIHZhbHVlIG9mICdhJywgYW4gaW5kZXhlZCBmaWVsZCwgc28gaXQg YWxzbyBjYW5ub3QKKy0tIGJlIGEgSE9UIHVwZGF0ZS4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpz b25iX2J1aWxkX29iamVjdCgnYScsIDEsICdiJywgMTApIFdIRVJFIChkb2NzLT4+J2InKTo6bnVt ZXJpYyA9IDEwOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdl eCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cp CisKKy0tIFRoaXMgdXBkYXRlIGNoYW5nZXMgYm90aCAnYScgYW5kICdiJyB0byBuZXcgdmFsdWVz IHRoYXQgcmVxdWlyZSBpbmRleCB1cGRhdGVzLAorLS0gdGhpcyBjYW5ub3QgdXNlIHRoZSBIT1Qg cGF0aC4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxkX29iamVjdCgnYScsIDIsICdi JywgMTIpIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA9IDEwOworU0VMRUNUIHBnX3N0YXRf Z2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAx IG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIExldCdzIGNoZWNrIHRvIG1ha2Ug c3VyZSB0aGF0IHRoZSBpbmRleCBjb250YWlucyB0aGUgbmV3IHZhbHVlIG9mICdiJworRVhQTEFJ TiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJp YyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIElu ZGV4IFNjYW4gdXNpbmcgaWR4X2V4X2Igb24gZXgKKyAgIEZpbHRlcjogKCgoZG9jcyAtPj4gJ2In Ojp0ZXh0KSk6Om51bWVyaWMgPCAnMTAwJzo6bnVtZXJpYykKKygyIHJvd3MpCisKK1NFTEVDVCAq IEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicp OjpudW1lcmljIDwgMTAwOworICAgICAgIGRvY3MgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0t LQorIHsiYSI6IDIsICJiIjogMTJ9CisoMSByb3cpCisKKy0tIFRoaXMgdXBkYXRlIGNoYW5nZXMg J2InIHRvIGEgdmFsdWUgb3V0c2lkZSBpdHMgcHJlZGljYXRlIHJlcXVpcmluZyB0aGF0CistLSB3 ZSByZW1vdmUgaXQgZnJvbSB0aGUgaW5kZXguICBUaGF0J3MgYSB0cmFuc2l0aW9uIHRoYXQgY2Fu J3QgYmUgZG9uZQorLS0gZHVyaW5nIGEgSE9UIHVwZGF0ZS4KK1VQREFURSBleCBTRVQgZG9jcyA9 IGpzb25iX2J1aWxkX29iamVjdCgnYScsIDIsICdiJywgMSkgV0hFUkUgKGRvY3MtPj4nYicpOjpu dW1lcmljID0gMTI7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQo J2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEKKygxIHJv dykKKworLS0gTGV0J3MgY2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGluZGV4IG5vIGxvbmdl ciBjb250YWlucyB0aGUgdmFsdWUgb2YgJ2InCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAq IEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicp OjpudW1lcmljIDwgMTAwOworICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAg ICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgSW5kZXggU2NhbiB1c2luZyBpZHhfZXhf YiBvbiBleAorICAgRmlsdGVyOiAoKChkb2NzIC0+PiAnYic6OnRleHQpKTo6bnVtZXJpYyA8ICcx MDAnOjpudW1lcmljKQorKDIgcm93cykKKworU0VMRUNUICogRlJPTSBleCBXSEVSRSAoZG9jcy0+ PidiJyk6Om51bWVyaWMgPiA5IEFORCAoZG9jcy0+PidiJyk6Om51bWVyaWMgPCAxMDA7CisgZG9j cyAKKy0tLS0tLQorKDAgcm93cykKKworLS0gRGlzYWJsZSBleHByZXNzaW9uIGNoZWNrcy4KK0FM VEVSIFRBQkxFIGV4IFNFVCAoZXhwcmVzc2lvbl9jaGVja3MgPSBmYWxzZSk7CitTRUxFQ1QgcmVs b3B0aW9ucyBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAnZXgnOworICAgICAgICAgICAg ICAgcmVsb3B0aW9ucyAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisge2ZpbGxmYWN0b3I9NjAsZXhwcmVzc2lvbl9jaGVja3M9ZmFsc2V9 CisoMSByb3cpCisKKy0tIFRoaXMgdXBkYXRlIGNoYW5nZXMgJ2InIHRvIGEgdmFsdWUgd2l0aGlu IGl0cyBwcmVkaWNhdGUganVzdCBsaWtlIGl0CistLSBwcmV2aW91cyB2YWx1ZSwgd2hpY2ggd291 bGQgYWxsb3cgZm9yIGEgSE9UIHVwZGF0ZSBidXQgd2l0aCBleHByZXNzaW9uCistLSBjaGVja3Mg ZGlzYWJsZWQgd2UgY2FuJ3QgZGV0ZXJtaW5lIHRoYXQgc28gdGhpcyBzaG91bGQgbm90IGJlIGEg SE9UIHVwZGF0ZS4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxkX29iamVjdCgnYScs IDIsICdiJywgMikgV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID0gMTsKK1NFTEVDVCBwZ19z dGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVj dDogMSBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBk YXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBMZXQncyBtYWtlIHN1cmUg d2UncmUgcmVjb3JkaW5nIEhPVCB1cGRhdGVzIGZvciBvdXIgJ2V4JyByZWxhdGlvbiBwcm9wZXJs eSBpbiB0aGUgc3lzdGVtCistLSB0YWJsZSBwZ19zdGF0X3VzZXJfdGFibGVzLiAgTm90ZSB0aGF0 IHN0YXRpc3RpY3MgYXJlIHN0b3JlZCB3aXRoaW4gYSB0cmFuc2FjdGlvbiBjb250ZXh0CistLSBm aXJzdCAoeGFjdCkgYW5kIHRoZW4gbGF0ZXIgaW50byB0aGUgZ2xvYmFsIHN0YXRpc3RpY3MgZm9y IGEgcmVsYXRpb24sIHNvIGZpcnN0IHdlIG5lZWQKKy0tIHRvIGVuc3VyZSBwZW5kaW5nIHN0YXRz IGFyZSBmbHVzaGVkLgorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBnX3N0 YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCisoMSBy b3cpCisKK1NFTEVDVCAKKyAgICBjLnJlbG5hbWUgQVMgdGFibGVfbmFtZSwKKyAgICAtLSBUcmFu c2FjdGlvbiBzdGF0aXN0aWNzCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChj Lm9pZCkgQVMgeGFjdF91cGRhdGVzLAorICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkKGMub2lkKSBBUyB4YWN0X2hvdF91cGRhdGVzLAorICAgIFJPVU5EKCgKKyAgICAgICAg cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoYy5vaWQpOjpmbG9hdCAvIAorICAg ICAgICBOVUxMSUYocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChjLm9pZCksIDApICog MTAwCisgICAgKTo6bnVtZXJpYywgMikgQVMgeGFjdF9ob3RfdXBkYXRlX3BlcmNlbnRhZ2UsCisg ICAgLS0gQ3VtdWxhdGl2ZSBzdGF0aXN0aWNzCisgICAgcy5uX3R1cF91cGQgQVMgdG90YWxfdXBk YXRlcywKKyAgICBzLm5fdHVwX2hvdF91cGQgQVMgaG90X3VwZGF0ZXMsCisgICAgUk9VTkQoKAor ICAgICAgICBzLm5fdHVwX2hvdF91cGQ6OmZsb2F0IC8gCisgICAgICAgIE5VTExJRihzLm5fdHVw X3VwZCwgMCkgKiAxMDAKKyAgICApOjpudW1lcmljLCAyKSBBUyB0b3RhbF9ob3RfdXBkYXRlX3Bl cmNlbnRhZ2UKK0ZST00gcGdfY2xhc3MgYworTEVGVCBKT0lOIHBnX3N0YXRfdXNlcl90YWJsZXMg cyBPTiBjLnJlbG5hbWUgPSBzLnJlbG5hbWUKK1dIRVJFIGMucmVsbmFtZSA9ICdleCcgCitBTkQg Yy5yZWxuYW1lc3BhY2UgPSAncHVibGljJzo6cmVnbmFtZXNwYWNlOworIHRhYmxlX25hbWUgfCB4 YWN0X3VwZGF0ZXMgfCB4YWN0X2hvdF91cGRhdGVzIHwgeGFjdF9ob3RfdXBkYXRlX3BlcmNlbnRh Z2UgfCB0b3RhbF91cGRhdGVzIHwgaG90X3VwZGF0ZXMgfCB0b3RhbF9ob3RfdXBkYXRlX3BlcmNl bnRhZ2UgCistLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBleCAgICAgICAgIHwgICAgICAgICAgICAw IHwgICAgICAgICAgICAgICAgMCB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAg ICAgICAgNiB8ICAgICAgICAgICAxIHwgICAgICAgICAgICAgICAgICAgICAgIDE2LjY3CisoMSBy b3cpCisKKy0tIGV4cGVjdDogNSB4YWN0IHVwZGF0ZXMgd2l0aCAxIHhhY3QgaG90IHVwZGF0ZSBh bmQgbm8gY3VtdWxhdGl2ZSB1cGRhdGVzIGFzIHlldAorU0VUIFNFU1NJT04gZW5hYmxlX3NlcXNj YW4gPSBPTjsKK1NFVCBTRVNTSU9OIGVuYWJsZV9iaXRtYXBzY2FuID0gT047CitEUk9QIFRBQkxF IGV4OworLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIFRoaXMgdGFibGUgaGFzIGEgc2luZ2xlIGNv bHVtbiAnZW1haWwnIGFuZCBhIHVuaXF1ZSBjb25zdHJhaW50IG9uIGl0IHRoYXQKKy0tIHNob3Vs ZCBwcmVjbHVkZSBIT1QgdXBkYXRlcy4KK0NSRUFURSBUQUJMRSB1c2VycyAoCisgICAgdXNlcl9p ZCBzZXJpYWwgcHJpbWFyeSBrZXksCisgICAgbmFtZSBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCisg ICAgZW1haWwgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAorICAgIEVYQ0xVREUgVVNJTkcgYnRyZWUg KGxvd2VyKGVtYWlsKSBXSVRIID0pCispOworLS0gQWRkIHNvbWUgZGF0YSB0byB0aGUgdGFibGUg YW5kIHRoZW4gdXBkYXRlIGl0IGluIHdheXMgdGhhdCBzaG91bGQgYW5kIHNob3VsZAorLS0gbm90 IGJlIEhPVCB1cGRhdGVzLgorSU5TRVJUIElOVE8gdXNlcnMgKG5hbWUsIGVtYWlsKSBWQUxVRVMK KygndXNlcjEnLCAndXNlcjFAZXhhbXBsZS5jb20nKSwKKygndXNlcjInLCAndXNlcjJAZXhhbXBs ZS5jb20nKSwKKygndGFrZW4nLCAndGFrZW5ARVhBTVBMRS5jb20nKSwKKygneW91JywgJ3lvdUBk b21haW4uY29tJyksCisoJ3Rha2VuJywgJ3Rha2VuQGRvbWFpbi5jb20nKTsKKy0tIFNob3VsZCBm YWlsIGJlY2F1c2Ugb2YgdGhlIHVuaXF1ZSBjb25zdHJhaW50IG9uIHRoZSBlbWFpbCBjb2x1bW4u CitVUERBVEUgdXNlcnMgU0VUIGVtYWlsID0gJ3VzZXIxQGV4YW1wbGUuY29tJyBXSEVSRSBlbWFp bCA9ICd1c2VyMkBleGFtcGxlLmNvbSc7CitFUlJPUjogIGNvbmZsaWN0aW5nIGtleSB2YWx1ZSB2 aW9sYXRlcyBleGNsdXNpb24gY29uc3RyYWludCAidXNlcnNfbG93ZXJfZXhjbCIKK0RFVEFJTDog IEtleSAobG93ZXIoZW1haWw6OnRleHQpKT0odXNlcjFAZXhhbXBsZS5jb20pIGNvbmZsaWN0cyB3 aXRoIGV4aXN0aW5nIGtleSAobG93ZXIoZW1haWw6OnRleHQpKT0odXNlcjFAZXhhbXBsZS5jb20p LgorU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCd1c2Vycyc6OnJl Z2NsYXNzKTsgLS0gZXhwZWN0OiAwIG5vIG5ldyBIT1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKKy0t IFNob3VsZCBzdWNjZWVkIGJlY2F1c2UgdGhlIGVtYWlsIGNvbHVtbiBpcyBub3QgYmVpbmcgdXBk YXRlZCBhbmQgc2hvdWxkIGdvIEhPVC4KK1VQREFURSB1c2VycyBTRVQgbmFtZSA9ICdmb28nIFdI RVJFIGVtYWlsID0gJ3VzZXIxQGV4YW1wbGUuY29tJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0 X3R1cGxlc19ob3RfdXBkYXRlZCgndXNlcnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBhIHNp bmdsZSBuZXcgSE9UIHVwZGF0ZQorIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk IAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAxCisoMSByb3cpCisKKy0tIENyZWF0ZSBhIHBhcnRpYWwgaW5k ZXggb24gdGhlIGVtYWlsIGNvbHVtbiwgdXBkYXRlcyAKK0NSRUFURSBJTkRFWCBpZHhfdXNlcnNf ZW1haWxfbm9fZXhhbXBsZSBPTiB1c2VycyAobG93ZXIoZW1haWwpKSBXSEVSRSBsb3dlcihlbWFp bCkgTElLRSAnJUBleGFtcGxlLmNvbSUnOworLS0gQW4gdXBkYXRlIHRoYXQgY2hhbmdlcyB0aGUg ZW1haWwgY29sdW1uIGJ1dCBub3QgdGhlIGluZGV4ZWQgcG9ydGlvbiBvZiBpdCBhbmQgZmFsbHMg b3V0c2lkZSB0aGUgY29uc3RyYWludC4KKy0tIFNob3VsZG4ndCBiZSBhIEhPVCB1cGRhdGUgYmVj YXVzZSBvZiB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQuCitVUERBVEUgdXNlcnMgU0VUIGVtYWls ID0gJ3lvdSsyQGRvbWFpbi5jb20nIFdIRVJFIG5hbWUgPSAneW91JzsKK1NFTEVDVCBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgndXNlcnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVj dDogMSBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBk YXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCistLSBBbiB1cGRhdGUgdGhhdCBj aGFuZ2VzIHRoZSBlbWFpbCBjb2x1bW4gYnV0IG5vdCB0aGUgaW5kZXhlZCBwb3J0aW9uIG9mIGl0 IGFuZCBmYWxscyB3aXRoaW4gdGhlIGNvbnN0cmFpbnQuCistLSBBZ2Fpbiwgc2hvdWxkIGZhaWwg Y29uc3RyYWludCBhbmQgZmFpbCB0byBiZSBhIEhPVCB1cGRhdGUuCitVUERBVEUgdXNlcnMgU0VU IGVtYWlsID0gJ3Rha2VuQGRvbWFpbi5jb20nIFdIRVJFIG5hbWUgPSAneW91JzsKK0VSUk9SOiAg Y29uZmxpY3Rpbmcga2V5IHZhbHVlIHZpb2xhdGVzIGV4Y2x1c2lvbiBjb25zdHJhaW50ICJ1c2Vy c19sb3dlcl9leGNsIgorREVUQUlMOiAgS2V5IChsb3dlcihlbWFpbDo6dGV4dCkpPSh0YWtlbkBk b21haW4uY29tKSBjb25mbGljdHMgd2l0aCBleGlzdGluZyBrZXkgKGxvd2VyKGVtYWlsOjp0ZXh0 KSk9KHRha2VuQGRvbWFpbi5jb20pLgorU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hv dF91cGRhdGVkKCd1c2Vycyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBk YXRlcworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAxCisoMSByb3cpCisKK0RST1AgVEFCTEUgdXNlcnM7CistLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LQorLS0gQW5vdGhlciB0ZXN0IG9mIGNvbnN0cmFpbnRzIHNwb2lsaW5nIEhPVCB1cGRhdGVzLCB0 aGlzIHRpbWUgd2l0aCBhIHJhbmdlLgorQ1JFQVRFIFRBQkxFIGV2ZW50cyAoCisgICAgaWQgc2Vy aWFsIHByaW1hcnkga2V5LAorICAgIG5hbWUgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLAorICAgIGV2 ZW50X3RpbWUgdHN0enJhbmdlLAorICAgIGNvbnN0cmFpbnQgbm9fc2NyZWVuaW5nX3RpbWVfb3Zl cmxhcCBleGNsdWRlIHVzaW5nIGdpc3QgKAorICAgICAgICBldmVudF90aW1lIFdJVEggJiYKKyAg ICApCispOworLS0gQWRkIHR3byBub24tb3ZlcmxhcHBpbmcgZXZlbnRzLgorSU5TRVJUIElOVE8g ZXZlbnRzIChpZCwgZXZlbnRfdGltZSwgbmFtZSkKK1ZBTFVFUworICAgICgxLCAnWyIyMDIzLTAx LTAxIDE5OjAwOjAwIiwgIjIwMjMtMDEtMDEgMjA6NDU6MDAiXScsICdldmVudDEnKSwKKyAgICAo MiwgJ1siMjAyMy0wMS0wMSAyMTowMDowMCIsICIyMDIzLTAxLTAxIDIxOjQ1OjAwIl0nLCAnZXZl bnQyJyk7CistLSBVcGRhdGUgdGhlIGZpcnN0IGV2ZW50IHRvIG92ZXJsYXAgd2l0aCB0aGUgc2Vj b25kLCBzaG91bGQgZmFpbCB0aGUgY29uc3RyYWludCBhbmQgbm90IGJlIEhPVC4KK1VQREFURSBl dmVudHMgU0VUIGV2ZW50X3RpbWUgPSAnWyIyMDIzLTAxLTAxIDIwOjAwOjAwIiwgIjIwMjMtMDEt MDEgMjE6NDU6MDAiXScgV0hFUkUgaWQgPSAxOworRVJST1I6ICBjb25mbGljdGluZyBrZXkgdmFs dWUgdmlvbGF0ZXMgZXhjbHVzaW9uIGNvbnN0cmFpbnQgIm5vX3NjcmVlbmluZ190aW1lX292ZXJs YXAiCitERVRBSUw6ICBLZXkgKGV2ZW50X3RpbWUpPShbIlN1biBKYW4gMDEgMjA6MDA6MDAgMjAy MyBQU1QiLCJTdW4gSmFuIDAxIDIxOjQ1OjAwIDIwMjMgUFNUIl0pIGNvbmZsaWN0cyB3aXRoIGV4 aXN0aW5nIGtleSAoZXZlbnRfdGltZSk9KFsiU3VuIEphbiAwMSAyMTowMDowMCAyMDIzIFBTVCIs IlN1biBKYW4gMDEgMjE6NDU6MDAgMjAyMyBQU1QiXSkuCitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFj dF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V2ZW50cyc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAwIG5v IG5ldyBIT1QgdXBkYXRlcworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSB0aGUgZmlyc3QgZXZlbnQg dG8gbm90IG92ZXJsYXAgd2l0aCB0aGUgc2Vjb25kLCBhZ2FpbiBub3QgSE9UIGR1ZSB0byB0aGUg Y29uc3RyYWludC4KK1VQREFURSBldmVudHMgU0VUIGV2ZW50X3RpbWUgPSAnWyIyMDIzLTAxLTAx IDIyOjAwOjAwIiwgIjIwMjMtMDEtMDEgMjI6NDU6MDAiXScgV0hFUkUgaWQgPSAxOworU0VMRUNU IHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdldmVudHMnOjpyZWdjbGFzcyk7 IC0tIGV4cGVjdDogMCBubyBuZXcgSE9UIHVwZGF0ZXMKKyBwZ19zdGF0X2dldF94YWN0X3R1cGxl c19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93KQorCistLSBVcGRhdGUg dGhlIGZpcnN0IGV2ZW50IHRvIG5vdCBvdmVybGFwIHdpdGggdGhlIHNlY29uZCwgdGhpcyB0aW1l IHdlJ3JlIEhPVCBiZWNhdXNlIHdlIGRvbid0IG92ZXJsYXAgd2l0aCB0aGUgY29uc3RyYWludC4K K1VQREFURSBldmVudHMgU0VUIG5hbWUgPSAnbmV3IG5hbWUgaGVyZScgV0hFUkUgaWQgPSAxOwor U0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdldmVudHMnOjpyZWdj bGFzcyk7IC0tIGV4cGVjdDogMSBvbmUgbmV3IEhPVCB1cGRhdGUKKyBwZ19zdGF0X2dldF94YWN0 X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQorKDEgcm93KQorCitEUk9Q IFRBQkxFIGV2ZW50czsKKy0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tCistLSBBIHRlc3QgdG8gZW5zdXJl IHRoYXQgc3VtbWFyaXppbmcgaW5kZXhlcyBhcmUgbm90IHVwZGF0ZWQgd2hlbiB0aGV5IGRvbid0 CistLSBjaGFuZ2UsIGJ1dCBhcmUgdXBkYXRlZCB3aGVuIHRoZXkgZG8gd2hpbGUgbm90IHByZWZl bnQgSE9UIHVwZGF0ZXMuCitDUkVBVEUgVEFCTEUgZXggKGF0dDEgSlNPTkIsIGF0dDIgdGV4dCkg V0lUSCAoZmlsbGZhY3RvciA9IDYwKTsKK0NSRUFURSBJTkRFWCBleHByZXNzaW9uIE9OIGV4IFVT SU5HIGJ0cmVlKChhdHQxLT4nZGF0YScpKTsKK0NSRUFURSBJTkRFWCBzdW1tYXJpemluZyBPTiBl eCBVU0lORyBCUklOKGF0dDIpOworSU5TRVJUIElOVE8gZXggVkFMVUVTICgneyJkYXRhIjogW119 JywgJ25vdGhpbmcgc3BlY2lhbCcpOworLS0gVXBkYXRlIHRoZSB1bmluZGV4ZWQgdmFsdWUgb2Yg YXR0MSwgdGhpcyBzaG91bGQgYmUgYSBIT1QgdXBkYXRlIGFuZCBub3QKKy0tIHVwZGF0ZSB0aGUg c3VtbWFyaXppbmcgaW5kZXguCitVUERBVEUgZXggU0VUIGF0dDEgPSBhdHQxIHx8ICd7InN0YXR1 cyI6ICJjaGVja21hdGUifSc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgb25lIG5ldyBIT1QgdXBkYXRlCisg cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEK KygxIHJvdykKKworLS0gVXBkYXRlIHRoZSBpbmRleGVkIHZhbHVlIG9mIGF0dDIsIGEgc3VtbWFy aXplZCB2YWx1ZSwgdGhpcyBpcyBhIHN1bW1hcml6ZWQKKy0tIG9ubHkgdXBkYXRlIGFuZCBzaG91 bGQgdXNlIHRoZSBIT1QgcGF0aCB3aGlsZSBzdGlsbCB0cmlnZ2VyaW5nIGFuIHVwZGF0ZSB0bwor LS0gdGhlIHN1bW1hcml6aW5nIEJSSU4gaW5kZXguCitVUERBVEUgZXggU0VUIGF0dDIgPSAnc3Bl Y2lhbCBpbmRlZWQnOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAyIG9uZSBuZXcgSE9UIHVwZGF0ZQorIHBnX3N0 YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyCisoMSBy b3cpCisKKy0tIFVwZGF0ZSB0byBhdHQxIGRvZXNuJ3QgY2hhbmdlIHRoZSBpbmRleGVkIHZhbHVl IHdoaWxlIHRoZSB1cGRhdGUgdG8gYXR0MiBkb2VzLAorLS0gdGhpcyBhZ2FpbiBpcyBhIHN1bW1h cml6ZWQgb25seSB1cGRhdGUgYW5kIHNob3VsZCB1c2UgdGhlIEhPVCBwYXRoIGFzIHdlbGwgYXMK Ky0tIHRyaWdnZXIgYW4gdXBkYXRlIHRvIHRoZSBCUklOIGluZGV4LgorVVBEQVRFIGV4IFNFVCBh dHQxID0gYXR0MSB8fCAneyJzdGF0dXMiOiAiY2hlY2ttYXRlISJ9JywgYXR0MiA9ICdzcGVjaWFs LCBzbyBzcGVjaWFsJzsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRl ZCgnZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMyBvbmUgbmV3IEhPVCB1cGRhdGUKKyBwZ19z dGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMworKDEg cm93KQorCistLSBUaGlzIHVwZGF0ZXMgYm90aCBpbmRleGVzLCB0aGUgZXhwcmVzc2lvbiBpbmRl eCBvbiBhdHQxIGFuZCB0aGUgc3VtbWFyaXppbmcKKy0tIGluZGV4IG9uIGF0dDIuICBUaGlzIHNo b3VsZCBub3QgYmUgYSBIT1QgdXBkYXRlIGJlY2F1c2UgdGhlcmUgYXJlIG1vZGlmaWVkCistLSBp bmRleGVzIGFuZCBvbmx5IHNvbWUgYXJlIHN1bW1hcml6ZWQsIG5vdCBhbGwuICBUaGlzIHNob3Vs ZCBmb3JjZSBhbGwKKy0tIGluZGV4ZXMgdG8gYmUgdXBkYXRlZC4KK1VQREFURSBleCBTRVQgYXR0 MSA9IGF0dDEgfHwgJ3siZGF0YSI6IFsxLDIsM119JywgYXR0MiA9ICdkbyB5b3Ugd2FudCB0byBw bGF5IGEgZ2FtZT8nOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVk KCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAzIGJvdGggaW5kZXhlcyB1cGRhdGVkCisgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMKKygx IHJvdykKKworRFJPUCBUQUJMRSBleDsKKy0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tCistLSBUaGlzIHRl c3QgaXMgZm9yIGEgdGFibGUgd2l0aCBhIGN1c3RvbSB0eXBlIGFuZCBhIGN1c3RvbSBvcGVyYXRv cnMgb24KKy0tIHRoZSBCVFJFRSBpbmRleC4gIFRoZSBxdWVzdGlvbiBpcywgd2hlbiBjb21wYXJp bmcgdmFsdWVzIGZvciBlcXVhbGl0eQorLS0gdG8gZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBjaGFu Z2VzIG9uIHRoZSBpbmRleCBvciBub3QuLi4gc2hvdWxkbid0IHdlCistLSBiZSB1c2luZyB0aGUg Y3VzdG9tIG9wZXJhdG9ycz8KKy0tIENyZWF0ZSBhIHR5cGUKK0NSRUFURSBUWVBFIG15X2N1c3Rv bV90eXBlIEFTICh2YWwgaW50KTsKKy0tIENvbXBhcmlzb24gZnVuY3Rpb25zIChyZXR1cm5zIGJv b2xlYW4pCitDUkVBVEUgRlVOQ1RJT04gbXlfY3VzdG9tX2x0KGEgbXlfY3VzdG9tX3R5cGUsIGIg bXlfY3VzdG9tX3R5cGUpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4g YS52YWwgPCBiLnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklD VDsKK0NSRUFURSBGVU5DVElPTiBteV9jdXN0b21fbGUoYSBteV9jdXN0b21fdHlwZSwgYiBteV9j dXN0b21fdHlwZSkgUkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBhLnZh bCA8PSBiLnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsK K0NSRUFURSBGVU5DVElPTiBteV9jdXN0b21fZXEoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0 b21fdHlwZSkgUkVUVVJOUyBib29sZWFuIEFTICQkCitCRUdJTgorICAgIFJFVFVSTiBhLnZhbCA9 IGIudmFsOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworQ1JF QVRFIEZVTkNUSU9OIG15X2N1c3RvbV9nZShhIG15X2N1c3RvbV90eXBlLCBiIG15X2N1c3RvbV90 eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEudmFsID49IGIu dmFsOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworQ1JFQVRF IEZVTkNUSU9OIG15X2N1c3RvbV9ndChhIG15X2N1c3RvbV90eXBlLCBiIG15X2N1c3RvbV90eXBl KSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEudmFsID4gYi52YWw7 CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7CitDUkVBVEUgRlVO Q1RJT04gbXlfY3VzdG9tX25lKGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3VzdG9tX3R5cGUpIFJF VFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gYS52YWwgIT0gYi52YWw7CitF TkQ7CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7CistLSBDb21wYXJpc29u IGZ1bmN0aW9uIChyZXR1cm5zIC0xLCAwLCAxKQorQ1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9j bXAoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0b21fdHlwZSkgUkVUVVJOUyBpbnQgQVMgJCQK K0JFR0lOCisgICAgSUYgYS52YWwgPCBiLnZhbCBUSEVOCisgICAgICAgIFJFVFVSTiAtMTsKKyAg ICBFTFNJRiBhLnZhbCA+IGIudmFsIFRIRU4KKyAgICAgICAgUkVUVVJOIDE7CisgICAgRUxTRQor ICAgICAgICBSRVRVUk4gMDsKKyAgICBFTkQgSUY7CitFTkQ7CiskJCBMQU5HVUFHRSBwbHBnc3Fs IElNTVVUQUJMRSBTVFJJQ1Q7CistLSBDcmVhdGUgdGhlIG9wZXJhdG9ycworQ1JFQVRFIE9QRVJB VE9SIDwgKAorICAgIExFRlRBUkcgPSBteV9jdXN0b21fdHlwZSwKKyAgICBSSUdIVEFSRyA9IG15 X2N1c3RvbV90eXBlLAorICAgIFBST0NFRFVSRSA9IG15X2N1c3RvbV9sdCwKKyAgICBDT01NVVRB VE9SID0gPiwKKyAgICBORUdBVE9SID0gPj0KKyk7CitDUkVBVEUgT1BFUkFUT1IgPD0gKAorICAg IExFRlRBUkcgPSBteV9jdXN0b21fdHlwZSwKKyAgICBSSUdIVEFSRyA9IG15X2N1c3RvbV90eXBl LAorICAgIFBST0NFRFVSRSA9IG15X2N1c3RvbV9sZSwKKyAgICBDT01NVVRBVE9SID0gPj0sCisg ICAgTkVHQVRPUiA9ID4KKyk7CitDUkVBVEUgT1BFUkFUT1IgPSAoCisgICAgTEVGVEFSRyA9IG15 X2N1c3RvbV90eXBlLAorICAgIFJJR0hUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJPQ0VE VVJFID0gbXlfY3VzdG9tX2VxLAorICAgIENPTU1VVEFUT1IgPSA9LAorICAgIE5FR0FUT1IgPSA8 PgorKTsKK0NSRUFURSBPUEVSQVRPUiA+PSAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBl LAorICAgIFJJR0hUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3Vz dG9tX2dlLAorICAgIENPTU1VVEFUT1IgPSA8PSwKKyAgICBORUdBVE9SID0gPAorKTsKK0NSRUFU RSBPUEVSQVRPUiA+ICgKKyAgICBMRUZUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUklHSFRB UkcgPSBteV9jdXN0b21fdHlwZSwKKyAgICBQUk9DRURVUkUgPSBteV9jdXN0b21fZ3QsCisgICAg Q09NTVVUQVRPUiA9IDwsCisgICAgTkVHQVRPUiA9IDw9CispOworQ1JFQVRFIE9QRVJBVE9SIDw+ ICgKKyAgICBMRUZUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUklHSFRBUkcgPSBteV9jdXN0 b21fdHlwZSwKKyAgICBQUk9DRURVUkUgPSBteV9jdXN0b21fbmUsCisgICAgQ09NTVVUQVRPUiA9 IDw+LAorICAgIE5FR0FUT1IgPSA9CispOworLS0gQ3JlYXRlIHRoZSBvcGVyYXRvciBjbGFzcyAo aW5jbHVkaW5nIHRoZSBzdXBwb3J0IGZ1bmN0aW9uKQorQ1JFQVRFIE9QRVJBVE9SIENMQVNTIG15 X2N1c3RvbV9vcHMKKyAgICBERUZBVUxUIEZPUiBUWVBFIG15X2N1c3RvbV90eXBlIFVTSU5HIGJ0 cmVlIEFTCisgICAgT1BFUkFUT1IgMSA8LAorICAgIE9QRVJBVE9SIDIgPD0sCisgICAgT1BFUkFU T1IgMyA9LAorICAgIE9QRVJBVE9SIDQgPj0sCisgICAgT1BFUkFUT1IgNSA+LAorICAgIEZVTkNU SU9OIDEgbXlfY3VzdG9tX2NtcChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworLS0g Q3JlYXRlIHRoZSB0YWJsZQorQ1JFQVRFIFRBQkxFIG15X3RhYmxlICgKKyAgICBpZCBpbnQsCisg ICAgY3VzdG9tX3ZhbCBteV9jdXN0b21fdHlwZQorKTsKKy0tIEluc2VydCBzb21lIGRhdGEKK0lO U0VSVCBJTlRPIG15X3RhYmxlIChpZCwgY3VzdG9tX3ZhbCkgVkFMVUVTCisoMSwgUk9XKDMpOjpt eV9jdXN0b21fdHlwZSksCisoMiwgUk9XKDEpOjpteV9jdXN0b21fdHlwZSksCisoMywgUk9XKDQp OjpteV9jdXN0b21fdHlwZSksCisoNCwgUk9XKDIpOjpteV9jdXN0b21fdHlwZSk7CistLSBDcmVh dGUgYSBmdW5jdGlvbiB0byB1c2Ugd2hlbiBpbmRleGluZworQ1JFQVRFIE9SIFJFUExBQ0UgRlVO Q1RJT04gYWJzX3ZhbCh2YWwgbXlfY3VzdG9tX3R5cGUpIFJFVFVSTlMgaW50IEFTICQkCitCRUdJ TgorICBSRVRVUk4gYWJzKHZhbC52YWwpOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1V VEFCTEUgU1RSSUNUOworLS0gQ3JlYXRlIHRoZSBpbmRleAorQ1JFQVRFIElOREVYIGlkeF9jdXN0 b21fdmFsX2FicyBPTiBteV90YWJsZSAoYWJzX3ZhbChjdXN0b21fdmFsKSk7CistLSBVcGRhdGUg MQorVVBEQVRFIG15X3RhYmxlIFNFVCBjdXN0b21fdmFsID0gUk9XKDUpOjpteV9jdXN0b21fdHlw ZSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0 ZWQoJ215X3RhYmxlJzo6cmVnY2xhc3MpOworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91 cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKKy0tIFVwZGF0ZSAyCitVUERB VEUgbXlfdGFibGUgU0VUIGN1c3RvbV92YWwgPSBST1coMCk6Om15X2N1c3RvbV90eXBlIFdIRVJF IGN1c3RvbV92YWwgPCBST1coMyk6Om15X2N1c3RvbV90eXBlOworU0VMRUNUIHBnX3N0YXRfZ2V0 X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdteV90YWJsZSc6OnJlZ2NsYXNzKTsKKyBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMAorKDEgcm93 KQorCistLSBVcGRhdGUgMworVVBEQVRFIG15X3RhYmxlIFNFVCBjdXN0b21fdmFsID0gUk9XKDYp OjpteV9jdXN0b21fdHlwZSBXSEVSRSBpZCA9IDM7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90 dXBsZXNfaG90X3VwZGF0ZWQoJ215X3RhYmxlJzo6cmVnY2xhc3MpOworIHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCisoMSByb3cpCisKKy0t IFVwZGF0ZSA0CitVUERBVEUgbXlfdGFibGUgU0VUIGlkID0gNSBXSEVSRSBpZCA9IDE7CitTRUxF Q1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ215X3RhYmxlJzo6cmVnY2xh c3MpOworIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAxCisoMSByb3cpCisKKy0tIFF1ZXJ5IHVzaW5nIHRoZSBpbmRleAorRVhQTEFJTiAoQ09T VFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIG15X3RhYmxlIFdIRVJFIGFic192YWwoY3VzdG9tX3ZhbCkg PSA2OworICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNlcSBTY2FuIG9uIG15X3RhYmxlCisgICBGaWx0 ZXI6IChhYnNfdmFsKGN1c3RvbV92YWwpID0gNikKKygyIHJvd3MpCisKK1NFTEVDVCAqIEZST00g bXlfdGFibGUgV0hFUkUgYWJzX3ZhbChjdXN0b21fdmFsKSA9IDY7CisgaWQgfCBjdXN0b21fdmFs IAorLS0tLSstLS0tLS0tLS0tLS0KKyAgMyB8ICg2KQorKDEgcm93KQorCistLSBDbGVhbiB1cAor RFJPUCBUQUJMRSBteV90YWJsZSBDQVNDQURFOworRFJPUCBPUEVSQVRPUiBDTEFTUyBteV9jdXN0 b21fb3BzIFVTSU5HIGJ0cmVlIENBU0NBREU7CitEUk9QIE9QRVJBVE9SIDwgKG15X2N1c3RvbV90 eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIE9QRVJBVE9SIDw9IChteV9jdXN0b21fdHlwZSwg bXlfY3VzdG9tX3R5cGUpOworRFJPUCBPUEVSQVRPUiA9IChteV9jdXN0b21fdHlwZSwgbXlfY3Vz dG9tX3R5cGUpOworRFJPUCBPUEVSQVRPUiA+PSAobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90 eXBlKTsKK0RST1AgT1BFUkFUT1IgPiAobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsK K0RST1AgT1BFUkFUT1IgPD4gKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9Q IEZVTkNUSU9OIG15X2N1c3RvbV9sdChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOwor RFJPUCBGVU5DVElPTiBteV9jdXN0b21fbGUobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBl KTsKK0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX2VxKG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21f dHlwZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9nZShteV9jdXN0b21fdHlwZSwgbXlfY3Vz dG9tX3R5cGUpOworRFJPUCBGVU5DVElPTiBteV9jdXN0b21fZ3QobXlfY3VzdG9tX3R5cGUsIG15 X2N1c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX25lKG15X2N1c3RvbV90eXBl LCBteV9jdXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9jbXAobXlfY3VzdG9t X3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04gYWJzX3ZhbChteV9jdXN0b21f dHlwZSk7CitEUk9QIFRZUEUgbXlfY3VzdG9tX3R5cGUgQ0FTQ0FERTsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3MvcGFyYWxsZWxfc2NoZWR1bGUgYi9zcmMvdGVzdC9yZWdyZXNzL3BhcmFs bGVsX3NjaGVkdWxlCmluZGV4IGU2M2VlMmNmMmJiLi5mOWRlZjNkOTNhYSAxMDA2NDQKLS0tIGEv c3JjL3Rlc3QvcmVncmVzcy9wYXJhbGxlbF9zY2hlZHVsZQorKysgYi9zcmMvdGVzdC9yZWdyZXNz L3BhcmFsbGVsX3NjaGVkdWxlCkBAIC02OCw2ICs2OCwxMSBAQCB0ZXN0OiBzZWxlY3RfaW50byBz ZWxlY3RfZGlzdGluY3Qgc2VsZWN0X2Rpc3RpbmN0X29uIHNlbGVjdF9pbXBsaWNpdCBzZWxlY3Rf aGF2aQogIyAtLS0tLS0tLS0tCiB0ZXN0OiBicmluIGdpbiBnaXN0IHNwZ2lzdCBwcml2aWxlZ2Vz IGluaXRfcHJpdnMgc2VjdXJpdHlfbGFiZWwgY29sbGF0ZSBtYXR2aWV3IGxvY2sgcmVwbGljYV9p ZGVudGl0eSByb3dzZWN1cml0eSBvYmplY3RfYWRkcmVzcyB0YWJsZXNhbXBsZSBncm91cGluZ3Nl dHMgZHJvcF9vcGVyYXRvciBwYXNzd29yZCBpZGVudGl0eSBnZW5lcmF0ZWRfc3RvcmVkIGpvaW5f aGFzaAogCisjIC0tLS0tLS0tLS0KKyMgQW5vdGhlciBncm91cCBvZiBwYXJhbGxlbCB0ZXN0cwor IyAtLS0tLS0tLS0tCit0ZXN0OiBoZWFwX2hvdF91cGRhdGVzCisKICMgLS0tLS0tLS0tLQogIyBB ZGRpdGlvbmFsIEJSSU4gdGVzdHMKICMgLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3Qv cmVncmVzcy9zcWwvaGVhcF9ob3RfdXBkYXRlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9o ZWFwX2hvdF91cGRhdGVzLnNxbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw MC4uNzcyODA3NWE3YWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9o ZWFwX2hvdF91cGRhdGVzLnNxbApAQCAtMCwwICsxLDQ0MCBAQAorLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0KKy0tIFRoaXMgdGFibGUgd2lsbCBoYXZlIHR3byBjb2x1bW5zIGFuZCB0d28gaW5kZXhlcywg b25lIG9uIHRoZSBwcmltYXJ5IGtleQorLS0gaWQgYW5kIG9uZSBvbiB0aGUgZXhwcmVzc2lvbiAo aW5mby0+PiduYW1lJykuICBUaGF0IG1lYW5zIHRoYXQgdGhlIGluZGV4ZWQKKy0tIGF0dHJpYnV0 ZXMgYXJlICdpZCcgYW5kICdpbmZvJy4KK2NyZWF0ZSB0YWJsZSBrZXl2YWx1ZShpZCBpbnRlZ2Vy IHByaW1hcnkga2V5LCBpbmZvIGpzb25iKTsKK2NyZWF0ZSBpbmRleCBuYW1laW5kZXggb24ga2V5 dmFsdWUoKGluZm8tPj4nbmFtZScpKTsKK2luc2VydCBpbnRvIGtleXZhbHVlIHZhbHVlcyAoMSwg J3sibmFtZSI6ICJqb2huIiwgImRhdGEiOiAic29tZSBkYXRhIn0nKTsKKworLS0gRGlzYWJsZSBl eHByZXNzaW9uIGNoZWNrcy4KK0FMVEVSIFRBQkxFIGtleXZhbHVlIFNFVCAoZXhwcmVzc2lvbl9j aGVja3MgPSBmYWxzZSk7CitTRUxFQ1QgcmVsb3B0aW9ucyBGUk9NIHBnX2NsYXNzIFdIRVJFIHJl bG5hbWUgPSAna2V5dmFsdWUnOworCistLSBXaGlsZSB0aGUgaW5kZXhlZCBhdHRyaWJ1dGUgIm5h bWUiIGlzIHVuY2hhbmdlZCB3ZSd2ZSBkaXNhYmxlZCBleHByZXNzaW9uCistLSBjaGVja3Mgc28g dGhpcyB1cGRhdGUgc2hvdWxkIG5vdCBnbyBIT1QgYXMgdGhlIHN5c3RlbSBjYW4ndCBkZXRlcm1p bmUgaWYKKy0tIHRoZSBpbmRleGVkIGF0dHJpYnV0ZSBoYXMgY2hhbmdlZCB3aXRob3V0IGV2YWx1 YXRpbmcgdGhlIGV4cHJlc3Npb24uCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6 ICJqb2huIiwgImRhdGEiOiAic29tZXRoaW5nIGVsc2UifScgd2hlcmUgaWQ9MTsKK3NlbGVjdCBw Z19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgna2V5dmFsdWUnOjpyZWdjbGFzcyk7 IC0tIGV4cGVjdDogMCByb3cKKworLS0gUmUtZW5hYmxlIGV4cHJlc3Npb24gY2hlY2tzLgorQUxU RVIgVEFCTEUga2V5dmFsdWUgU0VUIChleHByZXNzaW9uX2NoZWNrcyA9IHRydWUpOworU0VMRUNU IHJlbG9wdGlvbnMgRlJPTSBwZ19jbGFzcyBXSEVSRSByZWxuYW1lID0gJ2tleXZhbHVlJzsKKwor LS0gVGhlIGluZGV4ZWQgYXR0cmlidXRlICJuYW1lIiB3aXRoIHZhbHVlICJqb2huIiBpcyB1bmNo YW5nZWQsIGV4cGVjdCBhIEhPVCB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3si bmFtZSI6ICJqb2huIiwgImRhdGEiOiAic29tZSBvdGhlciBkYXRhIn0nIHdoZXJlIGlkPTE7Citz ZWxlY3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVn Y2xhc3MpOyAtLSBleHBlY3Q6IDEgcm93CisKKy0tIFRoZSBmb2xsb3dpbmcgdXBkYXRlIGNoYW5n ZXMgdGhlIGluZGV4ZWQgYXR0cmlidXRlICJuYW1lIiwgdGhpcyBzaG91bGQgbm90IGJlIGEgSE9U IHVwZGF0ZS4KK3VwZGF0ZSBrZXl2YWx1ZSBzZXQgaW5mbz0neyJuYW1lIjogInNtaXRoIiwgImRh dGEiOiAic29tZSBvdGhlciBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6 IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisKKy0tIE5vdywgdGhpcyB1cGRhdGUgZG9lcyBub3QgY2hh bmdlIHRoZSBpbmRleGVkIGF0dHJpYnV0ZSAibmFtZSIgZnJvbSAic21pdGgiLCB0aGlzIHNob3Vs ZCBiZSBIT1QuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFtZSI6ICJzbWl0aCIsICJk YXRhIjogInNvbWUgbW9yZSBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxlY3QgcGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6 IDIgcm93cyBub3cKK2Ryb3AgdGFibGUga2V5dmFsdWU7CisKKworLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0KKy0tIFRoaXMgdGFibGUgaXMgdGhlIHNhbWUgYXMgdGhlIHByZXZpb3VzIG9uZSBidXQgaXQg aGFzIGEgdGhpcmQgaW5kZXguICBUaGUKKy0tIGluZGV4ICdjb2xpbmRleCcgaXNuJ3QgYW4gZXhw cmVzc2lvbiBpbmRleCwgaXQgaW5kZXhlcyB0aGUgZW50aXJlIHZhbHVlCistLSBpbiB0aGUgaW5m byBjb2x1bW4uICBUaGVyZSBhcmUgc3RpbGwgb25seSB0d28gaW5kZXhlZCBhdHRyaWJ1dGVzIGZv ciB0aGlzCistLSByZWxhdGlvbiwgdGhlIHNhbWUgdHdvIGFzIGJlZm9yZS4gIFRoZSBwcmVzZW5j ZSBvZiBhbiBpbmRleCBvbiB0aGUgZW50aXJlCistLSB2YWx1ZSBvZiB0aGUgaW5mbyBjb2x1bW4g c2hvdWxkIHByZXZlbnQgSE9UIHVwZGF0ZXMgZm9yIGFueSB1cGRhdGVzIHRvIGFueQorLS0gcG9y dGlvbiBvZiBKU09OQiBjb250ZW50IGluIHRoYXQgY29sdW1uLgorY3JlYXRlIHRhYmxlIGtleXZh bHVlKGlkIGludGVnZXIgcHJpbWFyeSBrZXksIGluZm8ganNvbmIpOworY3JlYXRlIGluZGV4IG5h bWVpbmRleCBvbiBrZXl2YWx1ZSgoaW5mby0+PiduYW1lJykpOworY3JlYXRlIGluZGV4IGNvbGlu ZGV4IG9uIGtleXZhbHVlKGluZm8pOworaW5zZXJ0IGludG8ga2V5dmFsdWUgdmFsdWVzICgxLCAn eyJuYW1lIjogImpvaG4iLCAiZGF0YSI6ICJzb21lIGRhdGEifScpOworCistLSBUaGlzIHVwZGF0 ZSBkb2Vzbid0IGNoYW5nZSB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaW5kZXgsIGJ1dCBp dCBkb2VzCistLSBjaGFuZ2UgdGhlIGNvbnRlbnQgb2YgdGhlIGluZm8gY29sdW1uIGFuZCBzbyBz aG91bGQgbm90IGJlIEhPVCBiZWNhdXNlIHRoZQorLS0gaW5kZXhlZCB2YWx1ZSBjaGFuZ2VkIGFz IGEgcmVzdWx0IG9mIHRoZSB1cGRhdGUuCit1cGRhdGUga2V5dmFsdWUgc2V0IGluZm89J3sibmFt ZSI6ICJqb2huIiwgImRhdGEiOiAic29tZSBvdGhlciBkYXRhIn0nIHdoZXJlIGlkPTE7CitzZWxl Y3QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2tleXZhbHVlJzo6cmVnY2xh c3MpOyAtLSBleHBlY3Q6IDAgcm93cworZHJvcCB0YWJsZSBrZXl2YWx1ZTsKKworLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0KKy0tIFRoZSB0YWJsZSBoYXMgb25lIGNvbHVtbiBkb2NzIGFuZCB0d28gaW5k ZXhlcy4gIFRoZXkgYXJlIGJvdGggZXhwcmVzc2lvbgorLS0gaW5kZXhlcyByZWZlcmVuY2luZyB0 aGUgc2FtZSBjb2x1bW4gYXR0cmlidXRlIChkb2NzKSBidXQgb25lIGlzIGEgcGFydGlhbAorLS0g aW5kZXguCitDUkVBVEUgVEFCTEUgZXggKGRvY3MgSlNPTkIpIFdJVEggKGZpbGxmYWN0b3IgPSA2 MCk7CitJTlNFUlQgSU5UTyBleCAoZG9jcykgVkFMVUVTICgneyJhIjogMCwgImIiOiAwfScpOwor SU5TRVJUIElOVE8gZXggKGRvY3MpIFNFTEVDVCBqc29uYl9idWlsZF9vYmplY3QoJ2InLCBuKSBG Uk9NIGdlbmVyYXRlX3NlcmllcygxMDAsIDEwMDAwKSBhcyBuOworQ1JFQVRFIElOREVYIGlkeF9l eF9hIE9OIGV4ICgoZG9jcy0+PidhJykpOworQ1JFQVRFIElOREVYIGlkeF9leF9iIE9OIGV4ICgo ZG9jcy0+PidiJykpIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDk7CisKKy0tIFdlJ3Jl IHVzaW5nIEJUUkVFIGluZGV4ZXMgYW5kIGZvciB0aGlzIHRlc3Qgd2Ugd2FudCB0byBtYWtlIHN1 cmUgdGhhdCB0aGV5IHJlbWFpbgorLS0gaW4gc3luYyB3aXRoIGNoYW5nZXMgdG8gb3VyIHJlbGF0 aW9uLiAgRm9yY2UgdGhlIGNob2ljZSBvZiBpbmRleCBzY2FucyBiZWxvdyBzbworLS0gdGhhdCB3 ZSBrbm93IHdlJ3JlIGNoZWNraW5nIHRoZSBpbmRleCdzIHVuZGVyc3RhbmRpbmcgb2Ygd2hhdCB2 YWx1ZXMgc2hvdWxkIGJlCistLSBpbiB0aGUgaW5kZXggb3Igbm90LgorU0VUIFNFU1NJT04gZW5h YmxlX3NlcXNjYW4gPSBPRkY7CitTRVQgU0VTU0lPTiBlbmFibGVfYml0bWFwc2NhbiA9IE9GRjsK KworLS0gTGVhdmUgJ2EnIHVuY2hhbmdlZCBidXQgbW9kaWZ5ICdiJyB0byBhIHZhbHVlIG91dHNp ZGUgb2YgdGhlIGluZGV4IHByZWRpY2F0ZS4KKy0tIFRoaXMgc2hvdWxkIGJlIGEgSE9UIHVwZGF0 ZSBiZWNhdXNlIG5laXRoZXIgaW5kZXggaXMgY2hhbmdlZC4KK1VQREFURSBleCBTRVQgZG9jcyA9 IGpzb25iX2J1aWxkX29iamVjdCgnYScsIDAsICdiJywgMSkgV0hFUkUgKGRvY3MtPj4nYScpOjpu dW1lcmljID0gMDsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgn ZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSByb3cKKy0tIExldCdzIGNoZWNrIHRvIG1ha2Ug c3VyZSB0aGF0IHRoZSBpbmRleCBkb2VzIG5vdCBjb250YWluIGEgdmFsdWUgZm9yICdiJworRVhQ TEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVt ZXJpYyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKK1NFTEVDVCAqIEZST00g ZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1l cmljIDwgMTAwOworCistLSBMZWF2ZSAnYScgdW5jaGFuZ2VkIGJ1dCBtb2RpZnkgJ2InIHRvIGEg dmFsdWUgd2l0aGluIHRoZSBpbmRleCBwcmVkaWNhdGUuCistLSBUaGlzIHJlcHJlc2VudHMgYSBj aGFuZ2UgZm9yIGZpZWxkICdiJyBmcm9tIHVuaW5kZXhlZCB0byBpbmRleGVkIGFuZCBzbworLS0g dGhpcyBzaG91bGQgbm90IHRha2UgdGhlIEhPVCBwYXRoLgorVVBEQVRFIGV4IFNFVCBkb2NzID0g anNvbmJfYnVpbGRfb2JqZWN0KCdhJywgMCwgJ2InLCAxMCkgV0hFUkUgKGRvY3MtPj4nYScpOjpu dW1lcmljID0gMDsKK1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgn ZXgnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDogMSBubyBuZXcgSE9UIHVwZGF0ZXMKKy0tIExldCdz IGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBpbmRleCBjb250YWlucyB0aGUgbmV3IHZhbHVl IG9mICdiJworRVhQTEFJTiAoQ09TVFMgT0ZGKSBTRUxFQ1QgKiBGUk9NIGV4IFdIRVJFIChkb2Nz LT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2InKTo6bnVtZXJpYyA8IDEwMDsKK1NF TEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID4gOSBBTkQgKGRvY3Mt Pj4nYicpOjpudW1lcmljIDwgMTAwOworCistLSBUaGlzIHVwZGF0ZSBtb2RpZmllcyB0aGUgdmFs dWUgb2YgJ2EnLCBhbiBpbmRleGVkIGZpZWxkLCBzbyBpdCBhbHNvIGNhbm5vdAorLS0gYmUgYSBI T1QgdXBkYXRlLgorVVBEQVRFIGV4IFNFVCBkb2NzID0ganNvbmJfYnVpbGRfb2JqZWN0KCdhJywg MSwgJ2InLCAxMCkgV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID0gMTA7CitTRUxFQ1QgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBl Y3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisKKy0tIFRoaXMgdXBkYXRlIGNoYW5nZXMgYm90aCAn YScgYW5kICdiJyB0byBuZXcgdmFsdWVzIHRoYXQgcmVxdWlyZSBpbmRleCB1cGRhdGVzLAorLS0g dGhpcyBjYW5ub3QgdXNlIHRoZSBIT1QgcGF0aC4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25i X2J1aWxkX29iamVjdCgnYScsIDIsICdiJywgMTIpIFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJp YyA9IDEwOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6 OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAxIG5vIG5ldyBIT1QgdXBkYXRlcworLS0gTGV0J3MgY2hl Y2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGluZGV4IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUgb2Yg J2InCitFWFBMQUlOIChDT1NUUyBPRkYpIFNFTEVDVCAqIEZST00gZXggV0hFUkUgKGRvY3MtPj4n YicpOjpudW1lcmljID4gOSBBTkQgKGRvY3MtPj4nYicpOjpudW1lcmljIDwgMTAwOworU0VMRUNU ICogRlJPTSBleCBXSEVSRSAoZG9jcy0+PidiJyk6Om51bWVyaWMgPiA5IEFORCAoZG9jcy0+Pidi Jyk6Om51bWVyaWMgPCAxMDA7CisKKy0tIFRoaXMgdXBkYXRlIGNoYW5nZXMgJ2InIHRvIGEgdmFs dWUgb3V0c2lkZSBpdHMgcHJlZGljYXRlIHJlcXVpcmluZyB0aGF0CistLSB3ZSByZW1vdmUgaXQg ZnJvbSB0aGUgaW5kZXguICBUaGF0J3MgYSB0cmFuc2l0aW9uIHRoYXQgY2FuJ3QgYmUgZG9uZQor LS0gZHVyaW5nIGEgSE9UIHVwZGF0ZS4KK1VQREFURSBleCBTRVQgZG9jcyA9IGpzb25iX2J1aWxk X29iamVjdCgnYScsIDIsICdiJywgMSkgV0hFUkUgKGRvY3MtPj4nYicpOjpudW1lcmljID0gMTI7 CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xh c3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCistLSBMZXQncyBjaGVjayB0byBt YWtlIHN1cmUgdGhhdCB0aGUgaW5kZXggbm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSB2YWx1ZSBvZiAn YicKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNUICogRlJPTSBleCBXSEVSRSAoZG9jcy0+Pidi Jyk6Om51bWVyaWMgPiA5IEFORCAoZG9jcy0+PidiJyk6Om51bWVyaWMgPCAxMDA7CitTRUxFQ1Qg KiBGUk9NIGV4IFdIRVJFIChkb2NzLT4+J2InKTo6bnVtZXJpYyA+IDkgQU5EIChkb2NzLT4+J2In KTo6bnVtZXJpYyA8IDEwMDsKKworLS0gRGlzYWJsZSBleHByZXNzaW9uIGNoZWNrcy4KK0FMVEVS IFRBQkxFIGV4IFNFVCAoZXhwcmVzc2lvbl9jaGVja3MgPSBmYWxzZSk7CitTRUxFQ1QgcmVsb3B0 aW9ucyBGUk9NIHBnX2NsYXNzIFdIRVJFIHJlbG5hbWUgPSAnZXgnOworCistLSBUaGlzIHVwZGF0 ZSBjaGFuZ2VzICdiJyB0byBhIHZhbHVlIHdpdGhpbiBpdHMgcHJlZGljYXRlIGp1c3QgbGlrZSBp dAorLS0gcHJldmlvdXMgdmFsdWUsIHdoaWNoIHdvdWxkIGFsbG93IGZvciBhIEhPVCB1cGRhdGUg YnV0IHdpdGggZXhwcmVzc2lvbgorLS0gY2hlY2tzIGRpc2FibGVkIHdlIGNhbid0IGRldGVybWlu ZSB0aGF0IHNvIHRoaXMgc2hvdWxkIG5vdCBiZSBhIEhPVCB1cGRhdGUuCitVUERBVEUgZXggU0VU IGRvY3MgPSBqc29uYl9idWlsZF9vYmplY3QoJ2EnLCAyLCAnYicsIDIpIFdIRVJFIChkb2NzLT4+ J2InKTo6bnVtZXJpYyA9IDE7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3Vw ZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEgbm8gbmV3IEhPVCB1cGRhdGVzCisK KworLS0gTGV0J3MgbWFrZSBzdXJlIHdlJ3JlIHJlY29yZGluZyBIT1QgdXBkYXRlcyBmb3Igb3Vy ICdleCcgcmVsYXRpb24gcHJvcGVybHkgaW4gdGhlIHN5c3RlbQorLS0gdGFibGUgcGdfc3RhdF91 c2VyX3RhYmxlcy4gIE5vdGUgdGhhdCBzdGF0aXN0aWNzIGFyZSBzdG9yZWQgd2l0aGluIGEgdHJh bnNhY3Rpb24gY29udGV4dAorLS0gZmlyc3QgKHhhY3QpIGFuZCB0aGVuIGxhdGVyIGludG8gdGhl IGdsb2JhbCBzdGF0aXN0aWNzIGZvciBhIHJlbGF0aW9uLCBzbyBmaXJzdCB3ZSBuZWVkCistLSB0 byBlbnN1cmUgcGVuZGluZyBzdGF0cyBhcmUgZmx1c2hlZC4KK1NFTEVDVCBwZ19zdGF0X2ZvcmNl X25leHRfZmx1c2goKTsKK1NFTEVDVCAKKyAgICBjLnJlbG5hbWUgQVMgdGFibGVfbmFtZSwKKyAg ICAtLSBUcmFuc2FjdGlvbiBzdGF0aXN0aWNzCisgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf dXBkYXRlZChjLm9pZCkgQVMgeGFjdF91cGRhdGVzLAorICAgIHBnX3N0YXRfZ2V0X3hhY3RfdHVw bGVzX2hvdF91cGRhdGVkKGMub2lkKSBBUyB4YWN0X2hvdF91cGRhdGVzLAorICAgIFJPVU5EKCgK KyAgICAgICAgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoYy5vaWQpOjpmbG9h dCAvIAorICAgICAgICBOVUxMSUYocGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfdXBkYXRlZChjLm9p ZCksIDApICogMTAwCisgICAgKTo6bnVtZXJpYywgMikgQVMgeGFjdF9ob3RfdXBkYXRlX3BlcmNl bnRhZ2UsCisgICAgLS0gQ3VtdWxhdGl2ZSBzdGF0aXN0aWNzCisgICAgcy5uX3R1cF91cGQgQVMg dG90YWxfdXBkYXRlcywKKyAgICBzLm5fdHVwX2hvdF91cGQgQVMgaG90X3VwZGF0ZXMsCisgICAg Uk9VTkQoKAorICAgICAgICBzLm5fdHVwX2hvdF91cGQ6OmZsb2F0IC8gCisgICAgICAgIE5VTExJ RihzLm5fdHVwX3VwZCwgMCkgKiAxMDAKKyAgICApOjpudW1lcmljLCAyKSBBUyB0b3RhbF9ob3Rf dXBkYXRlX3BlcmNlbnRhZ2UKK0ZST00gcGdfY2xhc3MgYworTEVGVCBKT0lOIHBnX3N0YXRfdXNl cl90YWJsZXMgcyBPTiBjLnJlbG5hbWUgPSBzLnJlbG5hbWUKK1dIRVJFIGMucmVsbmFtZSA9ICdl eCcgCitBTkQgYy5yZWxuYW1lc3BhY2UgPSAncHVibGljJzo6cmVnbmFtZXNwYWNlOworLS0gZXhw ZWN0OiA1IHhhY3QgdXBkYXRlcyB3aXRoIDEgeGFjdCBob3QgdXBkYXRlIGFuZCBubyBjdW11bGF0 aXZlIHVwZGF0ZXMgYXMgeWV0CisKK1NFVCBTRVNTSU9OIGVuYWJsZV9zZXFzY2FuID0gT047CitT RVQgU0VTU0lPTiBlbmFibGVfYml0bWFwc2NhbiA9IE9OOworCitEUk9QIFRBQkxFIGV4OworCist LSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAtLSAt LSAtLSAtLSAtLSAtLSAtLSAtLQorLS0gVGhpcyB0YWJsZSBoYXMgYSBzaW5nbGUgY29sdW1uICdl bWFpbCcgYW5kIGEgdW5pcXVlIGNvbnN0cmFpbnQgb24gaXQgdGhhdAorLS0gc2hvdWxkIHByZWNs dWRlIEhPVCB1cGRhdGVzLgorQ1JFQVRFIFRBQkxFIHVzZXJzICgKKyAgICB1c2VyX2lkIHNlcmlh bCBwcmltYXJ5IGtleSwKKyAgICBuYW1lIFZBUkNIQVIoMjU1KSBOT1QgTlVMTCwKKyAgICBlbWFp bCBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCisgICAgRVhDTFVERSBVU0lORyBidHJlZSAobG93ZXIo ZW1haWwpIFdJVEggPSkKKyk7CisKKy0tIEFkZCBzb21lIGRhdGEgdG8gdGhlIHRhYmxlIGFuZCB0 aGVuIHVwZGF0ZSBpdCBpbiB3YXlzIHRoYXQgc2hvdWxkIGFuZCBzaG91bGQKKy0tIG5vdCBiZSBI T1QgdXBkYXRlcy4KK0lOU0VSVCBJTlRPIHVzZXJzIChuYW1lLCBlbWFpbCkgVkFMVUVTCisoJ3Vz ZXIxJywgJ3VzZXIxQGV4YW1wbGUuY29tJyksCisoJ3VzZXIyJywgJ3VzZXIyQGV4YW1wbGUuY29t JyksCisoJ3Rha2VuJywgJ3Rha2VuQEVYQU1QTEUuY29tJyksCisoJ3lvdScsICd5b3VAZG9tYWlu LmNvbScpLAorKCd0YWtlbicsICd0YWtlbkBkb21haW4uY29tJyk7CisKKy0tIFNob3VsZCBmYWls IGJlY2F1c2Ugb2YgdGhlIHVuaXF1ZSBjb25zdHJhaW50IG9uIHRoZSBlbWFpbCBjb2x1bW4uCitV UERBVEUgdXNlcnMgU0VUIGVtYWlsID0gJ3VzZXIxQGV4YW1wbGUuY29tJyBXSEVSRSBlbWFpbCA9 ICd1c2VyMkBleGFtcGxlLmNvbSc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90 X3VwZGF0ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDAgbm8gbmV3IEhPVCB1cGRh dGVzCisKKy0tIFNob3VsZCBzdWNjZWVkIGJlY2F1c2UgdGhlIGVtYWlsIGNvbHVtbiBpcyBub3Qg YmVpbmcgdXBkYXRlZCBhbmQgc2hvdWxkIGdvIEhPVC4KK1VQREFURSB1c2VycyBTRVQgbmFtZSA9 ICdmb28nIFdIRVJFIGVtYWlsID0gJ3VzZXIxQGV4YW1wbGUuY29tJzsKK1NFTEVDVCBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgndXNlcnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVj dDogMSBhIHNpbmdsZSBuZXcgSE9UIHVwZGF0ZQorCistLSBDcmVhdGUgYSBwYXJ0aWFsIGluZGV4 IG9uIHRoZSBlbWFpbCBjb2x1bW4sIHVwZGF0ZXMgCitDUkVBVEUgSU5ERVggaWR4X3VzZXJzX2Vt YWlsX25vX2V4YW1wbGUgT04gdXNlcnMgKGxvd2VyKGVtYWlsKSkgV0hFUkUgbG93ZXIoZW1haWwp IExJS0UgJyVAZXhhbXBsZS5jb20lJzsKKworLS0gQW4gdXBkYXRlIHRoYXQgY2hhbmdlcyB0aGUg ZW1haWwgY29sdW1uIGJ1dCBub3QgdGhlIGluZGV4ZWQgcG9ydGlvbiBvZiBpdCBhbmQgZmFsbHMg b3V0c2lkZSB0aGUgY29uc3RyYWludC4KKy0tIFNob3VsZG4ndCBiZSBhIEhPVCB1cGRhdGUgYmVj YXVzZSBvZiB0aGUgZXhjbHVzaW9uIGNvbnN0cmFpbnQuCitVUERBVEUgdXNlcnMgU0VUIGVtYWls ID0gJ3lvdSsyQGRvbWFpbi5jb20nIFdIRVJFIG5hbWUgPSAneW91JzsKK1NFTEVDVCBwZ19zdGF0 X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgndXNlcnMnOjpyZWdjbGFzcyk7IC0tIGV4cGVj dDogMSBubyBuZXcgSE9UIHVwZGF0ZXMKKworLS0gQW4gdXBkYXRlIHRoYXQgY2hhbmdlcyB0aGUg ZW1haWwgY29sdW1uIGJ1dCBub3QgdGhlIGluZGV4ZWQgcG9ydGlvbiBvZiBpdCBhbmQgZmFsbHMg d2l0aGluIHRoZSBjb25zdHJhaW50LgorLS0gQWdhaW4sIHNob3VsZCBmYWlsIGNvbnN0cmFpbnQg YW5kIGZhaWwgdG8gYmUgYSBIT1QgdXBkYXRlLgorVVBEQVRFIHVzZXJzIFNFVCBlbWFpbCA9ICd0 YWtlbkBkb21haW4uY29tJyBXSEVSRSBuYW1lID0gJ3lvdSc7CitTRUxFQ1QgcGdfc3RhdF9nZXRf eGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ3VzZXJzJzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDEg bm8gbmV3IEhPVCB1cGRhdGVzCisKK0RST1AgVEFCTEUgdXNlcnM7CisKKy0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tCistLSBBbm90aGVyIHRlc3Qgb2YgY29uc3RyYWludHMgc3BvaWxpbmcgSE9UIHVwZGF0 ZXMsIHRoaXMgdGltZSB3aXRoIGEgcmFuZ2UuCitDUkVBVEUgVEFCTEUgZXZlbnRzICgKKyAgICBp ZCBzZXJpYWwgcHJpbWFyeSBrZXksCisgICAgbmFtZSBWQVJDSEFSKDI1NSkgTk9UIE5VTEwsCisg ICAgZXZlbnRfdGltZSB0c3R6cmFuZ2UsCisgICAgY29uc3RyYWludCBub19zY3JlZW5pbmdfdGlt ZV9vdmVybGFwIGV4Y2x1ZGUgdXNpbmcgZ2lzdCAoCisgICAgICAgIGV2ZW50X3RpbWUgV0lUSCAm JgorICAgICkKKyk7CisKKy0tIEFkZCB0d28gbm9uLW92ZXJsYXBwaW5nIGV2ZW50cy4KK0lOU0VS VCBJTlRPIGV2ZW50cyAoaWQsIGV2ZW50X3RpbWUsIG5hbWUpCitWQUxVRVMKKyAgICAoMSwgJ1si MjAyMy0wMS0wMSAxOTowMDowMCIsICIyMDIzLTAxLTAxIDIwOjQ1OjAwIl0nLCAnZXZlbnQxJyks CisgICAgKDIsICdbIjIwMjMtMDEtMDEgMjE6MDA6MDAiLCAiMjAyMy0wMS0wMSAyMTo0NTowMCJd JywgJ2V2ZW50MicpOworCistLSBVcGRhdGUgdGhlIGZpcnN0IGV2ZW50IHRvIG92ZXJsYXAgd2l0 aCB0aGUgc2Vjb25kLCBzaG91bGQgZmFpbCB0aGUgY29uc3RyYWludCBhbmQgbm90IGJlIEhPVC4K K1VQREFURSBldmVudHMgU0VUIGV2ZW50X3RpbWUgPSAnWyIyMDIzLTAxLTAxIDIwOjAwOjAwIiwg IjIwMjMtMDEtMDEgMjE6NDU6MDAiXScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZ2V0 X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdldmVudHMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDog MCBubyBuZXcgSE9UIHVwZGF0ZXMKKworLS0gVXBkYXRlIHRoZSBmaXJzdCBldmVudCB0byBub3Qg b3ZlcmxhcCB3aXRoIHRoZSBzZWNvbmQsIGFnYWluIG5vdCBIT1QgZHVlIHRvIHRoZSBjb25zdHJh aW50LgorVVBEQVRFIGV2ZW50cyBTRVQgZXZlbnRfdGltZSA9ICdbIjIwMjMtMDEtMDEgMjI6MDA6 MDAiLCAiMjAyMy0wMS0wMSAyMjo0NTowMCJdJyBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdfc3Rh dF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ2V2ZW50cyc6OnJlZ2NsYXNzKTsgLS0gZXhw ZWN0OiAwIG5vIG5ldyBIT1QgdXBkYXRlcworCistLSBVcGRhdGUgdGhlIGZpcnN0IGV2ZW50IHRv IG5vdCBvdmVybGFwIHdpdGggdGhlIHNlY29uZCwgdGhpcyB0aW1lIHdlJ3JlIEhPVCBiZWNhdXNl IHdlIGRvbid0IG92ZXJsYXAgd2l0aCB0aGUgY29uc3RyYWludC4KK1VQREFURSBldmVudHMgU0VU IG5hbWUgPSAnbmV3IG5hbWUgaGVyZScgV0hFUkUgaWQgPSAxOworU0VMRUNUIHBnX3N0YXRfZ2V0 X3hhY3RfdHVwbGVzX2hvdF91cGRhdGVkKCdldmVudHMnOjpyZWdjbGFzcyk7IC0tIGV4cGVjdDog MSBvbmUgbmV3IEhPVCB1cGRhdGUKKworRFJPUCBUQUJMRSBldmVudHM7CisKKy0tIC0tIC0tIC0t IC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0tIC0t IC0tIC0tIC0tCistLSBBIHRlc3QgdG8gZW5zdXJlIHRoYXQgc3VtbWFyaXppbmcgaW5kZXhlcyBh cmUgbm90IHVwZGF0ZWQgd2hlbiB0aGV5IGRvbid0CistLSBjaGFuZ2UsIGJ1dCBhcmUgdXBkYXRl ZCB3aGVuIHRoZXkgZG8gd2hpbGUgbm90IHByZWZlbnQgSE9UIHVwZGF0ZXMuCitDUkVBVEUgVEFC TEUgZXggKGF0dDEgSlNPTkIsIGF0dDIgdGV4dCkgV0lUSCAoZmlsbGZhY3RvciA9IDYwKTsKK0NS RUFURSBJTkRFWCBleHByZXNzaW9uIE9OIGV4IFVTSU5HIGJ0cmVlKChhdHQxLT4nZGF0YScpKTsK K0NSRUFURSBJTkRFWCBzdW1tYXJpemluZyBPTiBleCBVU0lORyBCUklOKGF0dDIpOworSU5TRVJU IElOVE8gZXggVkFMVUVTICgneyJkYXRhIjogW119JywgJ25vdGhpbmcgc3BlY2lhbCcpOworCist LSBVcGRhdGUgdGhlIHVuaW5kZXhlZCB2YWx1ZSBvZiBhdHQxLCB0aGlzIHNob3VsZCBiZSBhIEhP VCB1cGRhdGUgYW5kIG5vdAorLS0gdXBkYXRlIHRoZSBzdW1tYXJpemluZyBpbmRleC4KK1VQREFU RSBleCBTRVQgYXR0MSA9IGF0dDEgfHwgJ3sic3RhdHVzIjogImNoZWNrbWF0ZSJ9JzsKK1NFTEVD VCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnZXgnOjpyZWdjbGFzcyk7IC0t IGV4cGVjdDogMSBvbmUgbmV3IEhPVCB1cGRhdGUKKworLS0gVXBkYXRlIHRoZSBpbmRleGVkIHZh bHVlIG9mIGF0dDIsIGEgc3VtbWFyaXplZCB2YWx1ZSwgdGhpcyBpcyBhIHN1bW1hcml6ZWQKKy0t IG9ubHkgdXBkYXRlIGFuZCBzaG91bGQgdXNlIHRoZSBIT1QgcGF0aCB3aGlsZSBzdGlsbCB0cmln Z2VyaW5nIGFuIHVwZGF0ZSB0bworLS0gdGhlIHN1bW1hcml6aW5nIEJSSU4gaW5kZXguCitVUERB VEUgZXggU0VUIGF0dDIgPSAnc3BlY2lhbCBpbmRlZWQnOworU0VMRUNUIHBnX3N0YXRfZ2V0X3hh Y3RfdHVwbGVzX2hvdF91cGRhdGVkKCdleCc6OnJlZ2NsYXNzKTsgLS0gZXhwZWN0OiAyIG9uZSBu ZXcgSE9UIHVwZGF0ZQorCistLSBVcGRhdGUgdG8gYXR0MSBkb2Vzbid0IGNoYW5nZSB0aGUgaW5k ZXhlZCB2YWx1ZSB3aGlsZSB0aGUgdXBkYXRlIHRvIGF0dDIgZG9lcywKKy0tIHRoaXMgYWdhaW4g aXMgYSBzdW1tYXJpemVkIG9ubHkgdXBkYXRlIGFuZCBzaG91bGQgdXNlIHRoZSBIT1QgcGF0aCBh cyB3ZWxsIGFzCistLSB0cmlnZ2VyIGFuIHVwZGF0ZSB0byB0aGUgQlJJTiBpbmRleC4KK1VQREFU RSBleCBTRVQgYXR0MSA9IGF0dDEgfHwgJ3sic3RhdHVzIjogImNoZWNrbWF0ZSEifScsIGF0dDIg PSAnc3BlY2lhbCwgc28gc3BlY2lhbCc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNf aG90X3VwZGF0ZWQoJ2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDMgb25lIG5ldyBIT1QgdXBk YXRlCisKKy0tIFRoaXMgdXBkYXRlcyBib3RoIGluZGV4ZXMsIHRoZSBleHByZXNzaW9uIGluZGV4 IG9uIGF0dDEgYW5kIHRoZSBzdW1tYXJpemluZworLS0gaW5kZXggb24gYXR0Mi4gIFRoaXMgc2hv dWxkIG5vdCBiZSBhIEhPVCB1cGRhdGUgYmVjYXVzZSB0aGVyZSBhcmUgbW9kaWZpZWQKKy0tIGlu ZGV4ZXMgYW5kIG9ubHkgc29tZSBhcmUgc3VtbWFyaXplZCwgbm90IGFsbC4gIFRoaXMgc2hvdWxk IGZvcmNlIGFsbAorLS0gaW5kZXhlcyB0byBiZSB1cGRhdGVkLgorVVBEQVRFIGV4IFNFVCBhdHQx ID0gYXR0MSB8fCAneyJkYXRhIjogWzEsMiwzXX0nLCBhdHQyID0gJ2RvIHlvdSB3YW50IHRvIHBs YXkgYSBnYW1lPyc7CitTRUxFQ1QgcGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQo J2V4Jzo6cmVnY2xhc3MpOyAtLSBleHBlY3Q6IDMgYm90aCBpbmRleGVzIHVwZGF0ZWQKKworRFJP UCBUQUJMRSBleDsKKworLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0g LS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0gLS0KKy0tIFRoaXMgdGVzdCBpcyBmb3Ig YSB0YWJsZSB3aXRoIGEgY3VzdG9tIHR5cGUgYW5kIGEgY3VzdG9tIG9wZXJhdG9ycyBvbgorLS0g dGhlIEJUUkVFIGluZGV4LiAgVGhlIHF1ZXN0aW9uIGlzLCB3aGVuIGNvbXBhcmluZyB2YWx1ZXMg Zm9yIGVxdWFsaXR5CistLSB0byBkZXRlcm1pbmUgaWYgdGhlcmUgYXJlIGNoYW5nZXMgb24gdGhl IGluZGV4IG9yIG5vdC4uLiBzaG91bGRuJ3Qgd2UKKy0tIGJlIHVzaW5nIHRoZSBjdXN0b20gb3Bl cmF0b3JzPworCistLSBDcmVhdGUgYSB0eXBlCitDUkVBVEUgVFlQRSBteV9jdXN0b21fdHlwZSBB UyAodmFsIGludCk7CisKKy0tIENvbXBhcmlzb24gZnVuY3Rpb25zIChyZXR1cm5zIGJvb2xlYW4p CitDUkVBVEUgRlVOQ1RJT04gbXlfY3VzdG9tX2x0KGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3Vz dG9tX3R5cGUpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gYS52YWwg PCBiLnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsKKwor Q1JFQVRFIEZVTkNUSU9OIG15X2N1c3RvbV9sZShhIG15X2N1c3RvbV90eXBlLCBiIG15X2N1c3Rv bV90eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEudmFsIDw9 IGIudmFsOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworCitD UkVBVEUgRlVOQ1RJT04gbXlfY3VzdG9tX2VxKGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3VzdG9t X3R5cGUpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gYS52YWwgPSBi LnZhbDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JF QVRFIEZVTkNUSU9OIG15X2N1c3RvbV9nZShhIG15X2N1c3RvbV90eXBlLCBiIG15X2N1c3RvbV90 eXBlKSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEudmFsID49IGIu dmFsOworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworCitDUkVB VEUgRlVOQ1RJT04gbXlfY3VzdG9tX2d0KGEgbXlfY3VzdG9tX3R5cGUsIGIgbXlfY3VzdG9tX3R5 cGUpIFJFVFVSTlMgYm9vbGVhbiBBUyAkJAorQkVHSU4KKyAgICBSRVRVUk4gYS52YWwgPiBiLnZh bDsKK0VORDsKKyQkIExBTkdVQUdFIHBscGdzcWwgSU1NVVRBQkxFIFNUUklDVDsKKworQ1JFQVRF IEZVTkNUSU9OIG15X2N1c3RvbV9uZShhIG15X2N1c3RvbV90eXBlLCBiIG15X2N1c3RvbV90eXBl KSBSRVRVUk5TIGJvb2xlYW4gQVMgJCQKK0JFR0lOCisgICAgUkVUVVJOIGEudmFsICE9IGIudmFs OworRU5EOworJCQgTEFOR1VBR0UgcGxwZ3NxbCBJTU1VVEFCTEUgU1RSSUNUOworCistLSBDb21w YXJpc29uIGZ1bmN0aW9uIChyZXR1cm5zIC0xLCAwLCAxKQorQ1JFQVRFIEZVTkNUSU9OIG15X2N1 c3RvbV9jbXAoYSBteV9jdXN0b21fdHlwZSwgYiBteV9jdXN0b21fdHlwZSkgUkVUVVJOUyBpbnQg QVMgJCQKK0JFR0lOCisgICAgSUYgYS52YWwgPCBiLnZhbCBUSEVOCisgICAgICAgIFJFVFVSTiAt MTsKKyAgICBFTFNJRiBhLnZhbCA+IGIudmFsIFRIRU4KKyAgICAgICAgUkVUVVJOIDE7CisgICAg RUxTRQorICAgICAgICBSRVRVUk4gMDsKKyAgICBFTkQgSUY7CitFTkQ7CiskJCBMQU5HVUFHRSBw bHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7CisKKy0tIENyZWF0ZSB0aGUgb3BlcmF0b3JzCitDUkVB VEUgT1BFUkFUT1IgPCAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hU QVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlfY3VzdG9tX2x0LAorICAg IENPTU1VVEFUT1IgPSA+LAorICAgIE5FR0FUT1IgPSA+PQorKTsKKworQ1JFQVRFIE9QRVJBVE9S IDw9ICgKKyAgICBMRUZUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUklHSFRBUkcgPSBteV9j dXN0b21fdHlwZSwKKyAgICBQUk9DRURVUkUgPSBteV9jdXN0b21fbGUsCisgICAgQ09NTVVUQVRP UiA9ID49LAorICAgIE5FR0FUT1IgPSA+CispOworCitDUkVBVEUgT1BFUkFUT1IgPSAoCisgICAg TEVGVEFSRyA9IG15X2N1c3RvbV90eXBlLAorICAgIFJJR0hUQVJHID0gbXlfY3VzdG9tX3R5cGUs CisgICAgUFJPQ0VEVVJFID0gbXlfY3VzdG9tX2VxLAorICAgIENPTU1VVEFUT1IgPSA9LAorICAg IE5FR0FUT1IgPSA8PgorKTsKKworQ1JFQVRFIE9QRVJBVE9SID49ICgKKyAgICBMRUZUQVJHID0g bXlfY3VzdG9tX3R5cGUsCisgICAgUklHSFRBUkcgPSBteV9jdXN0b21fdHlwZSwKKyAgICBQUk9D RURVUkUgPSBteV9jdXN0b21fZ2UsCisgICAgQ09NTVVUQVRPUiA9IDw9LAorICAgIE5FR0FUT1Ig PSA8CispOworCitDUkVBVEUgT1BFUkFUT1IgPiAoCisgICAgTEVGVEFSRyA9IG15X2N1c3RvbV90 eXBlLAorICAgIFJJR0hUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAgUFJPQ0VEVVJFID0gbXlf Y3VzdG9tX2d0LAorICAgIENPTU1VVEFUT1IgPSA8LAorICAgIE5FR0FUT1IgPSA8PQorKTsKKwor Q1JFQVRFIE9QRVJBVE9SIDw+ICgKKyAgICBMRUZUQVJHID0gbXlfY3VzdG9tX3R5cGUsCisgICAg UklHSFRBUkcgPSBteV9jdXN0b21fdHlwZSwKKyAgICBQUk9DRURVUkUgPSBteV9jdXN0b21fbmUs CisgICAgQ09NTVVUQVRPUiA9IDw+LAorICAgIE5FR0FUT1IgPSA9CispOworCistLSBDcmVhdGUg dGhlIG9wZXJhdG9yIGNsYXNzIChpbmNsdWRpbmcgdGhlIHN1cHBvcnQgZnVuY3Rpb24pCitDUkVB VEUgT1BFUkFUT1IgQ0xBU1MgbXlfY3VzdG9tX29wcworICAgIERFRkFVTFQgRk9SIFRZUEUgbXlf Y3VzdG9tX3R5cGUgVVNJTkcgYnRyZWUgQVMKKyAgICBPUEVSQVRPUiAxIDwsCisgICAgT1BFUkFU T1IgMiA8PSwKKyAgICBPUEVSQVRPUiAzID0sCisgICAgT1BFUkFUT1IgNCA+PSwKKyAgICBPUEVS QVRPUiA1ID4sCisgICAgRlVOQ1RJT04gMSBteV9jdXN0b21fY21wKG15X2N1c3RvbV90eXBlLCBt eV9jdXN0b21fdHlwZSk7CisKKy0tIENyZWF0ZSB0aGUgdGFibGUKK0NSRUFURSBUQUJMRSBteV90 YWJsZSAoCisgICAgaWQgaW50LAorICAgIGN1c3RvbV92YWwgbXlfY3VzdG9tX3R5cGUKKyk7CisK Ky0tIEluc2VydCBzb21lIGRhdGEKK0lOU0VSVCBJTlRPIG15X3RhYmxlIChpZCwgY3VzdG9tX3Zh bCkgVkFMVUVTCisoMSwgUk9XKDMpOjpteV9jdXN0b21fdHlwZSksCisoMiwgUk9XKDEpOjpteV9j dXN0b21fdHlwZSksCisoMywgUk9XKDQpOjpteV9jdXN0b21fdHlwZSksCisoNCwgUk9XKDIpOjpt eV9jdXN0b21fdHlwZSk7CisKKy0tIENyZWF0ZSBhIGZ1bmN0aW9uIHRvIHVzZSB3aGVuIGluZGV4 aW5nCitDUkVBVEUgT1IgUkVQTEFDRSBGVU5DVElPTiBhYnNfdmFsKHZhbCBteV9jdXN0b21fdHlw ZSkgUkVUVVJOUyBpbnQgQVMgJCQKK0JFR0lOCisgIFJFVFVSTiBhYnModmFsLnZhbCk7CitFTkQ7 CiskJCBMQU5HVUFHRSBwbHBnc3FsIElNTVVUQUJMRSBTVFJJQ1Q7CisKKy0tIENyZWF0ZSB0aGUg aW5kZXgKK0NSRUFURSBJTkRFWCBpZHhfY3VzdG9tX3ZhbF9hYnMgT04gbXlfdGFibGUgKGFic192 YWwoY3VzdG9tX3ZhbCkpOworCistLSBVcGRhdGUgMQorVVBEQVRFIG15X3RhYmxlIFNFVCBjdXN0 b21fdmFsID0gUk9XKDUpOjpteV9jdXN0b21fdHlwZSBXSEVSRSBpZCA9IDE7CitTRUxFQ1QgcGdf c3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ215X3RhYmxlJzo6cmVnY2xhc3MpOwor CistLSBVcGRhdGUgMgorVVBEQVRFIG15X3RhYmxlIFNFVCBjdXN0b21fdmFsID0gUk9XKDApOjpt eV9jdXN0b21fdHlwZSBXSEVSRSBjdXN0b21fdmFsIDwgUk9XKDMpOjpteV9jdXN0b21fdHlwZTsK K1NFTEVDVCBwZ19zdGF0X2dldF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnbXlfdGFibGUnOjpy ZWdjbGFzcyk7CisKKy0tIFVwZGF0ZSAzCitVUERBVEUgbXlfdGFibGUgU0VUIGN1c3RvbV92YWwg PSBST1coNik6Om15X2N1c3RvbV90eXBlIFdIRVJFIGlkID0gMzsKK1NFTEVDVCBwZ19zdGF0X2dl dF94YWN0X3R1cGxlc19ob3RfdXBkYXRlZCgnbXlfdGFibGUnOjpyZWdjbGFzcyk7CisKKy0tIFVw ZGF0ZSA0CitVUERBVEUgbXlfdGFibGUgU0VUIGlkID0gNSBXSEVSRSBpZCA9IDE7CitTRUxFQ1Qg cGdfc3RhdF9nZXRfeGFjdF90dXBsZXNfaG90X3VwZGF0ZWQoJ215X3RhYmxlJzo6cmVnY2xhc3Mp OworCistLSBRdWVyeSB1c2luZyB0aGUgaW5kZXgKK0VYUExBSU4gKENPU1RTIE9GRikgU0VMRUNU ICogRlJPTSBteV90YWJsZSBXSEVSRSBhYnNfdmFsKGN1c3RvbV92YWwpID0gNjsKK1NFTEVDVCAq IEZST00gbXlfdGFibGUgV0hFUkUgYWJzX3ZhbChjdXN0b21fdmFsKSA9IDY7CisKKy0tIENsZWFu IHVwCitEUk9QIFRBQkxFIG15X3RhYmxlIENBU0NBREU7CitEUk9QIE9QRVJBVE9SIENMQVNTIG15 X2N1c3RvbV9vcHMgVVNJTkcgYnRyZWUgQ0FTQ0FERTsKK0RST1AgT1BFUkFUT1IgPCAobXlfY3Vz dG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgT1BFUkFUT1IgPD0gKG15X2N1c3RvbV90 eXBlLCBteV9jdXN0b21fdHlwZSk7CitEUk9QIE9QRVJBVE9SID0gKG15X2N1c3RvbV90eXBlLCBt eV9jdXN0b21fdHlwZSk7CitEUk9QIE9QRVJBVE9SID49IChteV9jdXN0b21fdHlwZSwgbXlfY3Vz dG9tX3R5cGUpOworRFJPUCBPUEVSQVRPUiA+IChteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5 cGUpOworRFJPUCBPUEVSQVRPUiA8PiAobXlfY3VzdG9tX3R5cGUsIG15X2N1c3RvbV90eXBlKTsK K0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX2x0KG15X2N1c3RvbV90eXBlLCBteV9jdXN0b21fdHlw ZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9sZShteV9jdXN0b21fdHlwZSwgbXlfY3VzdG9t X3R5cGUpOworRFJPUCBGVU5DVElPTiBteV9jdXN0b21fZXEobXlfY3VzdG9tX3R5cGUsIG15X2N1 c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX2dlKG15X2N1c3RvbV90eXBlLCBt eV9jdXN0b21fdHlwZSk7CitEUk9QIEZVTkNUSU9OIG15X2N1c3RvbV9ndChteV9jdXN0b21fdHlw ZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBGVU5DVElPTiBteV9jdXN0b21fbmUobXlfY3VzdG9t X3R5cGUsIG15X2N1c3RvbV90eXBlKTsKK0RST1AgRlVOQ1RJT04gbXlfY3VzdG9tX2NtcChteV9j dXN0b21fdHlwZSwgbXlfY3VzdG9tX3R5cGUpOworRFJPUCBGVU5DVElPTiBhYnNfdmFsKG15X2N1 c3RvbV90eXBlKTsKK0RST1AgVFlQRSBteV9jdXN0b21fdHlwZSBDQVNDQURFOwotLSAKMi40Mi4w Cgo= --_002_238EEE41B20645908C20DA52C25A2291amazoncom_--