From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.24; helo=mga09.intel.com; envelope-from=jian.j.wang@intel.com; receiver=edk2-devel@lists.01.org Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 78458203525E0 for ; Tue, 31 Oct 2017 19:44:42 -0700 (PDT) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 31 Oct 2017 19:48:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.44,326,1505804400"; d="scan'208,217";a="144506249" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga004.jf.intel.com with ESMTP; 31 Oct 2017 19:48:33 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 31 Oct 2017 19:48:11 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.213]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.152]) with mapi id 14.03.0319.002; Wed, 1 Nov 2017 10:48:09 +0800 From: "Wang, Jian J" To: Fan Jeff , "Yao, Jiewen" , "edk2-devel@lists.01.org" CC: "Kinney, Michael D" , "Dong, Eric" , "Zeng, Star" Thread-Topic: [PATCH 3/3] UefiCpuPkg/CpuExceptionHandlerLib: Add stack switch support Thread-Index: AQHTUrSw7kMmlPjLfkaS9nSj0Ju2aqL+y3RDgAAGR9A= Date: Wed, 1 Nov 2017 02:48:09 +0000 Message-ID: References: <20171031142412.21680-1-jian.j.wang@intel.com> <20171031142412.21680-4-jian.j.wang@intel.com>, <74D8A39837DF1E4DA445A8C0B3885C503AA0AED6@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiODBiZGU1MDYtNDZkZC00YzgwLThhNjAtZGJhZWIzMmM0N2E2IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJzdWNDTVJZVzY4RXBKKzBHeHhCTjdDcHlGK2dkdDI5TUpLYWxkT1pOYnREVGJJR2ZOZ1VSSGRrYWF0SjZmRzdqIn0= x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: Re: [PATCH 3/3] UefiCpuPkg/CpuExceptionHandlerLib: Add stack switch support X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Nov 2017 02:44:42 -0000 Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SGkgSmVmZiwNCg0KVGhhbmtzIGZvciB0aGUgZmVlZGJhY2suIEFyZSB5b3Ugc3VnZ2VzdGluZyB0 byBmaXggQnVnemlsbGEgMTA5IGluIHRoaXMgcGF0Y2g/DQoNClRoYW5rcywNCkppYW4NCg0KRnJv bTogRmFuIEplZmYgW21haWx0bzp2YW5qZWZmXzkxOUBob3RtYWlsLmNvbV0NClNlbnQ6IFdlZG5l c2RheSwgTm92ZW1iZXIgMDEsIDIwMTcgMTA6MzMgQU0NClRvOiBZYW8sIEppZXdlbiA8amlld2Vu Lnlhb0BpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT47IGVk azItZGV2ZWxAbGlzdHMuMDEub3JnDQpDYzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5r aW5uZXlAaW50ZWwuY29tPjsgRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IFplbmcs IFN0YXIgPHN0YXIuemVuZ0BpbnRlbC5jb20+DQpTdWJqZWN0OiC08Li0OiBbUEFUQ0ggMy8zXSBV ZWZpQ3B1UGtnL0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWI6IEFkZCBzdGFjayBzd2l0Y2ggc3VwcG9y dA0KDQpQZXIgaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0x MDksIFRSIHNob3VsZCBiZSBzZXR1cCAoU3VjaCBhcyBpbiBEeGVJcGxQZWltKSBldmVuIHRob3Vn aCBOVUxMIENwdSBFeGNlcHRpb24gSGFuZGxlciBpbnN0YW5jZSBpcyBjaG9zZW4uDQoNCkZvciBs b25nIHRlcm0sIEkgYWdyZWUgd2UgbmVlZCB0byBtb3ZlIEFzbVdyaXRlVHIsIElBMzJfVEFTS19T VEFURV9TRUdNRU5ULCBJQTMyX1RTU19ERVNDUklQVE9SIHRvIE1kZVBrZyhTdWNoIGFzIEJhc2VM aWIpDQpGb3IgdGhpcyBwYXRjaCwgSSBoYXZlIG5vIHN0cm9uZyBvcGluaW9uLg0KDQoNCreivP7I yzogWWFvLCBKaWV3ZW48bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tPg0Kt6LLzcqxvOQ6IDIw MTfE6jEx1MIxyNUgOTo1Ng0KytW8/sjLOiBXYW5nLCBKaWFuIEo8bWFpbHRvOmppYW4uai53YW5n QGludGVsLmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxp c3RzLjAxLm9yZz4NCrOty806IEtpbm5leSwgTWljaGFlbCBEPG1haWx0bzptaWNoYWVsLmQua2lu bmV5QGludGVsLmNvbT47IERvbmcsIEVyaWM8bWFpbHRvOmVyaWMuZG9uZ0BpbnRlbC5jb20+OyBa ZW5nLCBTdGFyPG1haWx0bzpzdGFyLnplbmdAaW50ZWwuY29tPg0K1vfM4jogUmU6IFtlZGsyXSBb UEFUQ0ggMy8zXSBVZWZpQ3B1UGtnL0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWI6IEFkZCBzdGFjayBz d2l0Y2ggc3VwcG9ydA0KDQpIaSBKaWFuDQpUaGFua3MgZm9yIHRoZSBwYXRjaC4NCg0KQ2FuIHdl IG1vdmUgYWxsIElBMzIgZGVmaW5lZCBkYXRhIHN0cnVjdHVyZSBvciBmdW5jdGlvbiB0byBNZGVQ a2c/DQpTdWNoIGFzOiBBc21Xcml0ZVRyLCBJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVCwgSUEzMl9U U1NfREVTQ1JJUFRPUg0KDQpJIGFtIGFsc28gY3VyaW91cyB3aHkgd2UgdXNlIGRpZmZlcmVudCBw b2xpY3kgZm9yIG90aGVyIGJvb3QgbW9kZS4NCkNhbiB3ZSB1c2UgY29uc2lzdGVudCBwb2xpY3k/ DQo+ICsgIGlmIChQY2RHZXRCb29sIChQY2RDcHVTdGFja0d1YXJkKSkgew0KPiArICAgIC8vDQo+ ICsgICAgLy8gU3RhY2sgR3VhcmQgd29ya3Mgd2l0aCB0aGUgc3VwcG9ydCBvZiBwYWdlIHRhYmxl IGVzdGFibGlzaGVkIGFuZA0KPiArICAgIC8vIG1lbW9yeSBtYW5hZ2VtZW50LiBTbyB3ZSBoYXZl IHRvIGV4Y2x1ZGUgdGhvc2UgYm9vdCBtb2Rlcw0KPiB3aXRob3V0DQo+ICsgICAgLy8gdGhlbS4N Cj4gKyAgICAvLw0KPiArICAgIHN3aXRjaCAoR2V0Qm9vdE1vZGVIb2IoKSkgew0KPiArICAgIGNh c2UgQk9PVF9PTl9GTEFTSF9VUERBVEU6DQo+ICsgICAgY2FzZSBCT09UX0lOX1JFQ09WRVJZX01P REU6DQo+ICsgICAgY2FzZSBCT09UX09OX1MzX1JFU1VNRToNCj4gKyAgICAgIGJyZWFrOw0KPiAr DQo+ICsgICAgZGVmYXVsdDoNCj4gKyAgICAgIEFyY2hTZXR1cEV4Y3BldGlvblN0YWNrIChJZHRU YWJsZSk7DQo+ICsgICAgICBicmVhazsNCj4gKyAgICB9DQo+ICsgIH0NCg0KDQpUaGFuayB5b3UN CllhbyBKaWV3ZW4NCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFdh bmcsIEppYW4gSg0KPiBTZW50OiBUdWVzZGF5LCBPY3RvYmVyIDMxLCAyMDE3IDEwOjI0IFBNDQo+ IFRvOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5v cmc+DQo+IENjOiBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPG1haWx0bzpzdGFyLnpl bmdAaW50ZWwuY29tPj47IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb208bWFpbHRvOmVy aWMuZG9uZ0BpbnRlbC5jb20+PjsgWWFvLA0KPiBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29t PG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbT4+OyBLaW5uZXksIE1pY2hhZWwgRA0KPiA8bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb208bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pj4NCj4gU3ViamVjdDogW1BBVENIIDMvM10gVWVmaUNwdVBrZy9DcHVFeGNlcHRpb25IYW5kbGVy TGliOiBBZGQgc3RhY2sgc3dpdGNoDQo+IHN1cHBvcnQNCj4NCj4gSWYgU3RhY2sgR3VhcmQgaXMg ZW5hYmxlZCBhbmQgdGhlcmUncyByZWFsbHkgYSBzdGFjayBvdmVyZmxvdyBoYXBwZW5lZCBkdXJp bmcNCj4gYm9vdCwgYSBQYWdlIEZhdWx0IGV4Y2VwdGlvbiB3aWxsIGJlIHRyaWdnZXJlZC4gQmVj YXVzZSB0aGUgc3RhY2sgaXMgb3V0IG9mDQo+IHVzYWdlLCB0aGUgZXhjZXB0aW9uIGhhbmRsZXIs IHdoaWNoIHNoYXJlcyB0aGUgc3RhY2sgd2l0aCBub3JtYWwgVUVGSSBkcml2ZXIsDQo+IGNhbm5v dCBiZSBleGVjdXRlZCBhbmQgY2Fubm90IGR1bXAgdGhlIHByb2Nlc3NvciBpbmZvcm1hdGlvbi4N Cj4NCj4gV2l0aG91dCB0aG9zZSBpbmZvcm1hdGlvbiwgaXQncyB2ZXJ5IGRpZmZpY3VsdCBmb3Ig dGhlIEJJT1MgZGV2ZWxvcGVycyBsb2NhdGUNCj4gdGhlIHJvb3QgY2F1c2Ugb2Ygc3RhY2sgb3Zl cmZsb3cuIEFuZCB3aXRob3V0IGEgd29ya2FibGUgc3RhY2ssIHRoZSBkZXZlbG9wZXINCj4gY2Fu bm90IGV2ZW50IHVzZSBzaW5nbGUgc3RlcCB0byBkZWJ1ZyB0aGUgVUVGSSBkcml2ZXIgd2l0aCBK VEFHIGRlYnVnZ2VyLg0KPg0KPiBJbiBvcmRlciB0byBtYWtlIHN1cmUgdGhlIGV4Y2VwdGlvbiBo YW5kbGVyIHRvIGV4ZWN1dGUgbm9ybWFsbHkgYWZ0ZXIgc3RhY2sNCj4gb3ZlcmZsb3cuIFdlIG5l ZWQgc2VwYXJhdGUgc3RhY2tzIGZvciBleGNlcHRpb24gaGFuZGxlcnMgaW4gY2FzZSBvZiB1bnVz YWJsZQ0KPiBzdGFjay4NCj4NCj4gSUEgcHJvY2Vzc29yIGFsbG93cyB0byBzd2l0Y2ggdG8gYSBu ZXcgc3RhY2sgZHVyaW5nIGhhbmRsaW5nIGludGVycnVwdCBhbmQNCj4gZXhjZXB0aW9uLiBCdXQg WDY0IGFuZCBJQTMyIHByb3ZpZGVzIGRpZmZlcmVudCB3YXlzIHRvIG1ha2UgaXQuIFg2NCBwcm92 aWRlcw0KPiBpbnRlcnJ1cHQgc3RhY2sgdGFibGUgKElTVCkgdG8gYWxsb3cgbWF4aW11bSA3IGRp ZmZlcmVudCBleGNlcHRpb25zIHRvIGhhdmUNCj4gbmV3IHN0YWNrIGZvciBpdHMgaGFuZGxlci4g SUEzMiBkb2Vzbid0IGhhdmUgSVNUIG1lY2hhbmlzbSBhbmQgY2FuIG9ubHkgdXNlDQo+IHRhc2sg Z2F0ZSB0byBkbyBpdCBzaW5jZSB0YXNrIHN3aXRjaCBhbGxvd3MgdG8gbG9hZCBhIG5ldyBzdGFj ayB0aHJvdWdoIGl0cw0KPiB0YXNrLXN0YXRlIHNlZ21lbnQgKFRTUykuDQo+DQo+IE5vdGU6IFN0 YWNrIHN3aXRjaCBuZWVkcyB0byBhbGxvY2F0ZSBtZW1vcnkgcGFnZXMgdG8gYmUgbmV3IHN0YWNr cy4gU28gdGhpcw0KPiAgICAgICBmdW5jdGlvbmFsaXR5IHdvcmtzIG9ubHkgaW4gdGhlIGJvb3Qg cGhhc2VzIGNhcGFibGUgb2YgbWVtb3J5DQo+ICAgICAgIGFsbG9jYXRpb24gKGJlc2lkZXMgdGhl IHBhZ2luZywgZm9yIHRoZSBzYWtlIG9mIFN0YWNrIEd1YXJkKS4gSW4NCj4gICAgICAgb3RoZXIg d29yZHMsIG9ubHkgRFhFIHBoYXNlIGNhbiBzdXBwb3J0cyBTdGFjayBHdWFyZCB3aXRoIHN0YWNr IHN3aXRjaC4NCj4NCj4gQ2M6IFN0YXIgWmVuZyA8c3Rhci56ZW5nQGludGVsLmNvbTxtYWlsdG86 c3Rhci56ZW5nQGludGVsLmNvbT4+DQo+IENjOiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRlbC5j b208bWFpbHRvOmVyaWMuZG9uZ0BpbnRlbC5jb20+Pg0KPiBDYzogSmlld2VuIFlhbyA8amlld2Vu Lnlhb0BpbnRlbC5jb208bWFpbHRvOmppZXdlbi55YW9AaW50ZWwuY29tPj4NCj4gQ2M6IE1pY2hh ZWwgS2lubmV5IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbTxtYWlsdG86bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+Pg0KPiBTdWdnZXN0ZWQtYnk6IEF5ZWxsZXQgV29sbWFuIDxheWVsbGV0 LndvbG1hbkBpbnRlbC5jb208bWFpbHRvOmF5ZWxsZXQud29sbWFuQGludGVsLmNvbT4+DQo+IENv bnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAxLjENCj4g U2lnbmVkLW9mZi1ieTogSmlhbiBKIFdhbmcgPGppYW4uai53YW5nQGludGVsLmNvbTxtYWlsdG86 amlhbi5qLndhbmdAaW50ZWwuY29tPj4NCj4gLS0tDQo+ICAuLi4vQ3B1RXhjZXB0aW9uSGFuZGxl ckxpYi9DcHVFeGNlcHRpb25Db21tb24uaCAgICB8ICAyMiArKw0KPiAgLi4uL0R4ZUNwdUV4Y2Vw dGlvbkhhbmRsZXJMaWIuaW5mICAgICAgICAgICAgICAgICAgfCAgIDUgKw0KPiAgLi4uL0xpYnJh cnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9EeGVFeGNlcHRpb24uYyAgfCAgMTkgKw0KPiAgLi4u L0lhMzIvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYyAgICAgICAgICAgICAgICAgICAgfCAxMzUgKysr KysrKw0KPiAgLi4uL0lhMzIvQXJjaEludGVycnVwdERlZnMuaCAgICAgICAgICAgICAgICAgICAg ICAgfCAxMzYgKysrKysrKw0KPiAgLi4uL0lhMzIvRXhjZXB0aW9uVHNzRW50cnlBc20ubmFzbSAg ICAgICAgICAgICAgICAgfCAzOTgNCj4gKysrKysrKysrKysrKysrKysrKysrDQo+ICAuLi4vUGVp Q3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+ICAu Li4vU2VjUGVpQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYgICAgICAgICAgICAgICB8ICAgMyAr DQo+ICAuLi4vU21tQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYgICAgICAgICAgICAgICAgICB8 ICAgMSArDQo+ICAuLi4vWDY0L0FyY2hFeGNlcHRpb25IYW5kbGVyLmMgICAgICAgICAgICAgICAg ICAgICB8IDEwOCArKysrKysNCj4gIC4uLi9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNo SW50ZXJydXB0RGVmcy5oIHwgIDQwICsrKw0KPiAgLi4uL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNt LlMgICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKw0KPiAgLi4uL1g2NC9FeGNlcHRpb25IYW5k bGVyQXNtLmFzbSAgICAgICAgICAgICAgICAgICAgfCAgMTIgKw0KPiAgLi4uL1g2NC9FeGNlcHRp b25IYW5kbGVyQXNtLm5hc20gICAgICAgICAgICAgICAgICAgfCAgMTIgKw0KPiAgMTQgZmlsZXMg Y2hhbmdlZCwgOTA0IGluc2VydGlvbnMoKykNCj4gIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBVZWZp Q3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0V4Y2VwdGlvblRzc0Vu dHJ5QXNtLm5hc20NCj4NCj4gZGlmZiAtLWdpdA0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVF eGNlcHRpb25IYW5kbGVyTGliL0NwdUV4Y2VwdGlvbkNvbW1vbi5oDQo+IGIvVWVmaUNwdVBrZy9M aWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvQ3B1RXhjZXB0aW9uQ29tbW9uLmgNCj4gaW5k ZXggNzQwYTU4ODI4Yi4uZmQ0YTI2YTQ1OCAxMDA2NDQNCj4gLS0tIGEvVWVmaUNwdVBrZy9MaWJy YXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvQ3B1RXhjZXB0aW9uQ29tbW9uLmgNCj4gKysrIGIv VWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvQ3B1RXhjZXB0aW9uQ29t bW9uLmgNCj4gQEAgLTI1LDYgKzI1LDcgQEANCj4gICNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1v cnlMaWIuaD4NCj4gICNpbmNsdWRlIDxMaWJyYXJ5L1N5bmNocm9uaXphdGlvbkxpYi5oPg0KPiAg I2luY2x1ZGUgPExpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5oPg0KPiArI2luY2x1ZGUg PExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0KPg0KPiAgI2RlZmluZSAgQ1BVX0VYQ0VQ VElPTl9OVU0gICAgICAgICAgMzINCj4gICNkZWZpbmUgIENQVV9JTlRFUlJVUFRfTlVNICAgICAg ICAgMjU2DQo+IEBAIC0yODgsNSArMjg5LDI2IEBAIENvbW1vbkV4Y2VwdGlvbkhhbmRsZXJXb3Jr ZXIgKA0KPiAgICBJTiBFWENFUFRJT05fSEFORExFUl9EQVRBICAgICAgKkV4Y2VwdGlvbkhhbmRs ZXJEYXRhDQo+ICAgICk7DQo+DQo+ICsvKioNCj4gKyAgTG9hZCBnaXZlbiBzZWxlY3RvciBpbnRv IFRSIHJlZ2lzdGVyDQo+ICsNCj4gKyAgQHBhcmFtIFNlbGVjdG9yICAgICAgICAgVGFzayBzZWdt ZW50IHNlbGVjdG9yDQo+ICsqKi8NCj4gK1ZPSUQNCj4gK0FzbVdyaXRlVHIgKA0KPiArICBVSU5U MTYgU2VsZWN0b3INCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgIFNldHVwIHNlcGFyYXRlIHN0 YWNrIGZvciBzcGVjaWZpYyBleGNlcHRpb25zLg0KPiArDQo+ICsgIEBwYXJhbVtpbl0gSWR0VGFi bGUgICAgICAgIElEVCB0YWJsZSBiYXNlLg0KPiArKiovDQo+ICtWT0lEDQo+ICtFRklBUEkNCj4g K0FyY2hTZXR1cEV4Y3BldGlvblN0YWNrICgNCj4gKyAgSU4gSUEzMl9JRFRfR0FURV9ERVNDUklQ VE9SICAgICAgICAgICAqSWR0VGFibGUNCj4gKyAgKTsNCj4gKw0KPiAgI2VuZGlmDQo+DQo+IGRp ZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9E eGVDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVF eGNlcHRpb25IYW5kbGVyTGliL0R4ZUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mDQo+IGluZGV4 IGY0YThkMDFjODAuLmIwOTllZjRkYWQgMTAwNjQ0DQo+IC0tLQ0KPiBhL1VlZmlDcHVQa2cvTGli cmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0R4ZUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5m DQo+ICsrKw0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0R4 ZUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mDQo+IEBAIC0zMCw2ICszMCw3IEBADQo+ICBbU291 cmNlcy5JYTMyXQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uYXNtDQo+ICAgIElhMzIv RXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtDQo+ICsgIElhMzIvRXhjZXB0aW9uVHNzRW50cnlBc20u bmFzbQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uUw0KPiAgICBJYTMyL0FyY2hFeGNl cHRpb25IYW5kbGVyLmMNCj4gICAgSWEzMi9BcmNoSW50ZXJydXB0RGVmcy5oDQo+IEBAIC00Nyw2 ICs0OCw5IEBADQo+ICAgIFBlaUR4ZVNtbUNwdUV4Y2VwdGlvbi5jDQo+ICAgIER4ZUV4Y2VwdGlv bi5jDQo+DQo+ICtbUGNkXQ0KPiArICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNk Q3B1U3RhY2tHdWFyZA0KPiArDQo+ICBbUGFja2FnZXNdDQo+ICAgIE1kZVBrZy9NZGVQa2cuZGVj DQo+ICAgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+IEBAIC02MSwzICs2NSw0IEBA DQo+ICAgIFBlQ29mZkdldEVudHJ5UG9pbnRMaWINCj4gICAgTWVtb3J5QWxsb2NhdGlvbkxpYg0K PiAgICBEZWJ1Z0xpYg0KPiArICBIb2JMaWINCj4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvTGli cmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0R4ZUV4Y2VwdGlvbi5jDQo+IGIvVWVmaUNwdVBr Zy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlRXhjZXB0aW9uLmMNCj4gaW5kZXgg MzFmZWJlYzk3Ni4uZTlkY2QwMGUwMiAxMDA2NDQNCj4gLS0tIGEvVWVmaUNwdVBrZy9MaWJyYXJ5 L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlRXhjZXB0aW9uLmMNCj4gKysrIGIvVWVmaUNwdVBr Zy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlRXhjZXB0aW9uLmMNCj4gQEAgLTE2 LDYgKzE2LDcgQEANCj4gICNpbmNsdWRlICJDcHVFeGNlcHRpb25Db21tb24uaCINCj4gICNpbmNs dWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ICAjaW5jbHVkZSA8TGlicmFyeS9NZW1vcnlBbGxv Y2F0aW9uTGliLmg+DQo+ICsjaW5jbHVkZSA8TGlicmFyeS9Ib2JMaWIuaD4NCj4NCj4gIENPTlNU IFVJTlROICAgIG1Eb0ZhclJldHVybkZsYWcgID0gMDsNCj4NCj4gQEAgLTE1NSw2ICsxNTYsMjQg QEAgSW5pdGlhbGl6ZUNwdUludGVycnVwdEhhbmRsZXJzICgNCj4NCj4gICAgVXBkYXRlSWR0VGFi bGUgKElkdFRhYmxlLCAmVGVtcGxhdGVNYXAsICZtRXhjZXB0aW9uSGFuZGxlckRhdGEpOw0KPg0K PiArICBpZiAoUGNkR2V0Qm9vbCAoUGNkQ3B1U3RhY2tHdWFyZCkpIHsNCj4gKyAgICAvLw0KPiAr ICAgIC8vIFN0YWNrIEd1YXJkIHdvcmtzIHdpdGggdGhlIHN1cHBvcnQgb2YgcGFnZSB0YWJsZSBl c3RhYmxpc2hlZCBhbmQNCj4gKyAgICAvLyBtZW1vcnkgbWFuYWdlbWVudC4gU28gd2UgaGF2ZSB0 byBleGNsdWRlIHRob3NlIGJvb3QgbW9kZXMNCj4gd2l0aG91dA0KPiArICAgIC8vIHRoZW0uDQo+ ICsgICAgLy8NCj4gKyAgICBzd2l0Y2ggKEdldEJvb3RNb2RlSG9iKCkpIHsNCj4gKyAgICBjYXNl IEJPT1RfT05fRkxBU0hfVVBEQVRFOg0KPiArICAgIGNhc2UgQk9PVF9JTl9SRUNPVkVSWV9NT0RF Og0KPiArICAgIGNhc2UgQk9PVF9PTl9TM19SRVNVTUU6DQo+ICsgICAgICBicmVhazsNCj4gKw0K PiArICAgIGRlZmF1bHQ6DQo+ICsgICAgICBBcmNoU2V0dXBFeGNwZXRpb25TdGFjayAoSWR0VGFi bGUpOw0KPiArICAgICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICB9DQo+ICsNCj4gICAgLy8NCj4g ICAgLy8gTG9hZCBJbnRlcnJ1cHQgRGVzY3JpcHRvciBUYWJsZQ0KPiAgICAvLw0KPiBkaWZmIC0t Z2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9B cmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlv bkhhbmRsZXJMaWIvSWEzMi9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+IGluZGV4IGYyYzM5ZWIx OTMuLjNkNDFkZjc1YTUgMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNl cHRpb25IYW5kbGVyTGliL0lhMzIvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiArKysNCj4gYi9V ZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0FyY2hFeGNlcHRp b25IYW5kbGVyLmMNCj4gQEAgLTE0LDYgKzE0LDE5IEBADQo+DQo+ICAjaW5jbHVkZSAiQ3B1RXhj ZXB0aW9uQ29tbW9uLmgiDQo+DQo+ICsvLw0KPiArLy8gTGlzdCBvZiBleGNlcHRpb25zIG5lZWRp bmcgc2VwYXJhdGUgc3RhY2sNCj4gKy8vDQo+ICtTVEFUSUMgSUEzMl9FWENFUFRJT05fVFNfRU5U UlkgbUV4Y2VwdGlvbnNXaXRoU3RhY2tbXSA9IHsNCj4gKyAgezYsICBFeGNlcHRpb25UYXNrU3d0 aWNoRW50cnk2fSwgIC8vI1VEOiBJbnZhbGlkIE9wY29kZSBFeGNlcHRpb24NCj4gKyAgezgsICBF eGNlcHRpb25UYXNrU3d0aWNoRW50cnk4fSwgIC8vI0RGOiBEb3VibGUgRmF1bHQgRXhjZXB0aW9u DQo+ICsgIHsxMiwgRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5MTJ9LCAvLyNTUzogU3RhY2sgRmF1 bHQgRXhjZXB0aW9uDQo+ICsgIHsxMywgRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5MTN9LCAvLyNH UDogR2VuZXJhbCBQcm90ZWN0aW9uIEV4Y2VwdGlvbg0KPiArICB7MTQsIEV4Y2VwdGlvblRhc2tT d3RpY2hFbnRyeTE0fSwgLy8jUEY6IFBhZ2UtRmF1bHQgRXhjZXB0aW9uDQo+ICsgIHsxNywgRXhj ZXB0aW9uVGFza1N3dGljaEVudHJ5MTd9LCAvLyNBQzogQWxpZ25tZW50IENoZWNrIEV4Y2VwdGlv bg0KPiArICB7MTgsIEV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTE4fSAgLy8jTUM6IE1hY2hpbmUt Q2hlY2sgRXhjZXB0aW9uDQo+ICt9Ow0KPiArDQo+ICAvKioNCj4gICAgUmV0dXJuIGFkZHJlc3Mg bWFwIG9mIGV4Y2VwdGlvbiBoYW5kbGVyIHRlbXBsYXRlIHNvIHRoYXQgQyBjb2RlIGNhbg0KPiBn ZW5lcmF0ZQ0KPiAgICBleGNlcHRpb24gdGFibGVzLg0KPiBAQCAtMTA3LDYgKzEyMCwxMjggQEAg QXJjaFJlc3RvcmVFeGNlcHRpb25Db250ZXh0ICgNCj4gICAgU3lzdGVtQ29udGV4dC5TeXN0ZW1D b250ZXh0SWEzMi0+RXhjZXB0aW9uRGF0YSA9DQo+IFJlc2VydmVkVmVjdG9yc1tFeGNlcHRpb25U eXBlXS5FeGNlcHRpb25EYXRhOw0KPiAgfQ0KPg0KPiArLyoqDQo+ICsgIFNldHVwIHNlcGFyYXRl IHN0YWNrIGZvciBzcGVjaWZpYyBleGNlcHRpb25zLg0KPiArDQo+ICsgICBAcGFyYW1baW5dIElk dFRhYmxlICAgICAgICBJRFQgdGFibGUgYmFzZS4NCj4gKyoqLw0KPiArVk9JRA0KPiArRUZJQVBJ DQo+ICtBcmNoU2V0dXBFeGNwZXRpb25TdGFjayAoDQo+ICsgIElOIElBMzJfSURUX0dBVEVfREVT Q1JJUFRPUiAgICAgICAgICAgKklkdFRhYmxlDQo+ICsgICkNCj4gK3sNCj4gKyAgVk9JRCAgICAg ICAgICAgICAgICAgICAgICAqTmV3R2R0Ow0KPiArICBJQTMyX0RFU0NSSVBUT1IgICAgICAgICAg IEdkdERlc2M7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgT2xkR2R0U2l6ZTsNCj4g KyAgVFNTX0VOVFJJRVMgICAgICAgICAgICAgICAqVHNzRW50cnk7DQo+ICsgIElBMzJfVFNTX0RF U0NSSVBUT1IgICAgICAgKlRzc0Rlc2M7DQo+ICsgIElBMzJfVEFTS19TVEFURV9TRUdNRU5UICAg KlRzczsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBTdGFja0Jhc2U7DQo+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgU3RhY2tUb3A7DQo+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgU3RhY2tTaXplOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIEluZGV4 Ow0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjsNCj4gKyAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICBUc3NCYXNlOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEFsbG9jYXRl IFJ1bnRpbWUgRGF0YSBmb3IgdGhlIEdEVA0KPiArICAvLw0KPiArICBBc21SZWFkR2R0cigmR2R0 RGVzYyk7DQo+ICsgIE9sZEdkdFNpemUgPSBHZHREZXNjLkxpbWl0ICsgMTsNCj4gKyAgTmV3R2R0 ID0gQWxsb2NhdGVSdW50aW1lWmVyb1Bvb2woT2xkR2R0U2l6ZSArIHNpemVvZihUU1NfRU5UUklF UykNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJQTMyX0dEVF9BTElH Tk1FTlQpOw0KPiArICBpZiAoTmV3R2R0ID09IE5VTEwpIHsNCj4gKyAgICByZXR1cm47DQo+ICsg IH0NCj4gKyAgTmV3R2R0ID0gQUxJR05fUE9JTlRFUiAoTmV3R2R0LCBJQTMyX0dEVF9BTElHTk1F TlQpOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEluaXRpYWxpemUgbmV3IEdEVCBlbnRyaWVzDQo+ ICsgIC8vDQo+ICsgIENvcHlNZW0oTmV3R2R0LCAoVk9JRCAqKUdkdERlc2MuQmFzZSwgT2xkR2R0 U2l6ZSk7DQo+ICsgIEdkdERlc2MuQmFzZSA9IChVSU5UTikoVk9JRCopTmV3R2R0Ow0KPiArICBH ZHREZXNjLkxpbWl0ID0gKFVJTlQxNikoT2xkR2R0U2l6ZSArIFRTU19PRkZTRVQgLSAxKTsNCj4g Kw0KPiArICAvLw0KPiArICAvLyBSZXNlcnZlIHN0YXRjayBtZW1vcnkgZm9yIGdpdmVuIGV4Y2Vw dGlvbnMNCj4gKyAgLy8NCj4gKyAgU3RhY2tTaXplID0gQVJSQVlfU0laRSAobUV4Y2VwdGlvbnNX aXRoU3RhY2spICogRVhDRVBUSU9OX1NUQUNLX1NJWkU7DQo+ICsgIFN0YWNrU2l6ZSA9IEVGSV9Q QUdFU19UT19TSVpFIChFRklfU0laRV9UT19QQUdFUyAoU3RhY2tTaXplKSk7DQo+ICsgIFN0YWNr QmFzZSA9IChVSU5UNjQpKFVJTlROKUFsbG9jYXRlUGFnZXMgKEVGSV9TSVpFX1RPX1BBR0VTDQo+ IChTdGFja1NpemUpKTsNCj4gKyAgaWYgKFN0YWNrQmFzZSA9PSAwKSB7DQo+ICsgICAgRnJlZVBv b2wgKE5ld0dkdCk7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAg Ly8gRml4dXAgVFNTIGRlc2NyaXB0b3JzIGFuZCBzZWdtZW50cw0KPiArICAvLw0KPiArICBUc3NF bnRyeSA9IChWT0lEICopKEdkdERlc2MuQmFzZSArIE9sZEdkdFNpemUpOw0KPiArDQo+ICsgIFRz c0Jhc2UgPSAoVUlOVE4pKFZPSUQgKikmVHNzRW50cnktPlRzczsNCj4gKyAgVHNzRW50cnktPlRz c1NlZy5MaW1pdDE1XzAgICAgICAgICAgICA9DQo+IHNpemVvZihJQTMyX1RBU0tfU1RBVEVfU0VH TUVOVCkgLSAxOw0KPiArICBUc3NFbnRyeS0+VHNzU2VnLkJhc2UxNV8wICAgICAgICAgICAgID0g KFVJTlQxNilUc3NCYXNlOw0KPiArICBUc3NFbnRyeS0+VHNzU2VnLkJhc2UyM18xNiAgICAgICAg ICAgID0gKFVJTlQ4KShUc3NCYXNlID4+IDE2KTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5UeXBl ICAgICAgICAgICAgICAgICA9IElBMzJfR0RUX1RZUEVfVFNTOw0KPiArICBUc3NFbnRyeS0+VHNz U2VnLkxpbWl0MTlfMTZfYW5kX2ZsYWdzID0gMDsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNl MzFfMjQgICAgICAgICAgICA9IChVSU5UOCkoVHNzQmFzZSA+PiAyNCk7DQo+ICsNCj4gKyAgU3Rh Y2tUb3AgID0gU3RhY2tCYXNlICsgU3RhY2tTaXplIC0gQ1BVX1NUQUNLX0FMSUdOTUVOVDsNCj4g KyAgU3RhY2tUb3AgID0gKFVJTlROKUFMSUdOX1BPSU5URVIgKFN0YWNrVG9wLCBDUFVfU1RBQ0tf QUxJR05NRU5UKTsNCj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgQVJSQVlfU0laRSAobUV4 Y2VwdGlvbnNXaXRoU3RhY2spOyArK0luZGV4KSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBGaXh1 cCBUU1MgZGVzY3JpcHRvcg0KPiArICAgIC8vDQo+ICsgICAgVHNzQmFzZSA9IChVSU5UTikoVk9J RCAqKSZUc3NFbnRyeS0+RXhjZXB0aW9uVHNzW0luZGV4XTsNCj4gKyAgICBUc3NEZXNjID0gJlRz c0VudHJ5LT5FeGNlcHRpb25Uc3NTZWdbSW5kZXhdOw0KPiArDQo+ICsgICAgVHNzRGVzYy0+TGlt aXQxNV8wICAgICAgICAgICAgPSBzaXplb2YoSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQpIC0gMTsN Cj4gKyAgICBUc3NEZXNjLT5CYXNlMTVfMCAgICAgICAgICAgICA9IChVSU5UMTYpVHNzQmFzZTsN Cj4gKyAgICBUc3NEZXNjLT5CYXNlMjNfMTYgICAgICAgICAgICA9IChVSU5UOCkoVHNzQmFzZSA+ PiAxNik7DQo+ICsgICAgVHNzRGVzYy0+VHlwZSAgICAgICAgICAgICAgICAgPSBJQTMyX0dEVF9U WVBFX1RTUzsNCj4gKyAgICBUc3NEZXNjLT5MaW1pdDE5XzE2X2FuZF9mbGFncyA9IDA7DQo+ICsg ICAgVHNzRGVzYy0+QmFzZTMxXzI0ICAgICAgICAgICAgPSAoVUlOVDgpKFRzc0Jhc2UgPj4gMjQp Ow0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBGaXh1cCBUU1MNCj4gKyAgICAvLw0KPiArICAg IFRzcyA9ICZUc3NFbnRyeS0+RXhjZXB0aW9uVHNzW0luZGV4XTsNCj4gKyAgICBUc3MtPkNSMyAg ICA9IEFzbVJlYWRDcjMoKTsNCj4gKyAgICBUc3MtPkVJUCAgICA9IChVSU5UMzIpbUV4Y2VwdGlv bnNXaXRoU3RhY2tbSW5kZXhdLkVudHJ5UG9pbnQ7DQo+ICsgICAgVHNzLT5FRkxBR1MgPSAweDI7 DQo+ICsgICAgVHNzLT5FU1AgICAgPSBTdGFja1RvcDsNCj4gKyAgICBUc3MtPkVTICAgICA9IEFz bVJlYWRFcygpOw0KPiArICAgIFRzcy0+Q1MgICAgID0gQXNtUmVhZENzKCk7DQo+ICsgICAgVHNz LT5TUyAgICAgPSBBc21SZWFkU3MoKTsNCj4gKyAgICBUc3MtPkRTICAgICA9IEFzbVJlYWREcygp Ow0KPiArICAgIFRzcy0+RlMgICAgID0gQXNtUmVhZEZzKCk7DQo+ICsgICAgVHNzLT5HUyAgICAg PSBBc21SZWFkR3MoKTsNCj4gKyAgICBTdGFja1RvcCAgIC09IEVYQ0VQVElPTl9TVEFDS19TSVpF Ow0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBDaGFuZ2Ugc3BlY2lmaWVkIGV4Y2VwdGlvbnMg aW4gSURUIHRvIHVzZSBUU1MNCj4gKyAgICAvLw0KPiArICAgIFZlY3RvciA9IG1FeGNlcHRpb25z V2l0aFN0YWNrW0luZGV4XS5WZWN0b3I7DQo+ICsNCj4gKyAgICBJZHRUYWJsZVtWZWN0b3JdLkJp dHMuT2Zmc2V0TG93ICA9IDA7DQo+ICsgICAgSWR0VGFibGVbVmVjdG9yXS5CaXRzLlNlbGVjdG9y ICAgPSBPbGRHZHRTaXplICsNCj4gRVhDRVBUSU9OX1RTU19TRUwoSW5kZXgpOw0KPiArICAgIElk dFRhYmxlW1ZlY3Rvcl0uQml0cy5SZXNlcnZlZF8wID0gMDsNCj4gKyAgICBJZHRUYWJsZVtWZWN0 b3JdLkJpdHMuR2F0ZVR5cGUgICA9IElBMzJfSURUX0dBVEVfVFlQRV9UQVNLOw0KPiArICAgIElk dFRhYmxlW1ZlY3Rvcl0uQml0cy5PZmZzZXRIaWdoID0gMDsNCj4gKyAgfQ0KPiArDQo+ICsgIC8v DQo+ICsgIC8vIFB1Ymxpc2ggdGhlIGNoYW5nZXMNCj4gKyAgLy8NCj4gKyAgQXNtV3JpdGVHZHRy KCZHZHREZXNjKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBMb2FkIHRhc2sgcmVnaXN0ZXINCj4g KyAgLy8NCj4gKyAgQXNtV3JpdGVUciAoKFVJTlQxNikoT2xkR2R0U2l6ZSArIFRTU19TRUwpKTsN Cj4gK30NCj4gKw0KPiAgLyoqDQo+ICAgIERpc3BsYXkgcHJvY2Vzc29yIGNvbnRleHQuDQo+DQo+ IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxp Yi9JYTMyL0FyY2hJbnRlcnJ1cHREZWZzLmgNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhj ZXB0aW9uSGFuZGxlckxpYi9JYTMyL0FyY2hJbnRlcnJ1cHREZWZzLmgNCj4gaW5kZXggYThkMzU1 NmE4MC4uNzdjYzZmOTkxOSAxMDA2NDQNCj4gLS0tIGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4 Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9BcmNoSW50ZXJydXB0RGVmcy5oDQo+ICsrKyBiL1VlZmlD cHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lhMzIvQXJjaEludGVycnVwdERl ZnMuaA0KPiBAQCAtNDEsNCArNDEsMTQwIEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gICAgVUlOVDgg ICAgICAgSG9va0FmdGVyU3R1YkhlYWRlckNvZGVbSE9PS0FGVEVSX1NUVUJfU0laRV07DQo+ICB9 IFJFU0VSVkVEX1ZFQ1RPUlNfREFUQTsNCj4NCj4gKyNwcmFnbWEgcGFjayAoMSkNCj4gKw0KPiAr I2RlZmluZSBFWENFUFRJT05fTElTVF9NQVggICAgICAgICAgNw0KPiArI2RlZmluZSBFWENFUFRJ T05fU1RBQ0tfU0laRSAgICAgICAgRUZJX1BBR0VfU0laRQ0KPiArI2RlZmluZSBJQTMyX0dEVF9U WVBFX1RTUyAgICAgICAgICAgMHg4OQ0KPiArI2RlZmluZSBJQTMyX0dEVF9BTElHTk1FTlQgICAg ICAgICAgOA0KPiArDQo+ICsvLw0KPiArLy8gSUEzMiBUU1MgRGVmaW5pdGlvbg0KPiArLy8NCj4g K3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgVUlOVDE2ICAgIFByZXZpb3VzVGFza0xpbms7IC8vIDAw DQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF8yOw0KPiArICBVSU5UMzIgICAgRVNQMDsgICAgICAg ICAgICAgLy8gMDQNCj4gKyAgVUlOVDE2ICAgIFNTMDsgICAgICAgICAgICAgIC8vIDA4DQo+ICsg IFVJTlQxNiAgICBSZXNlcnZlZF8xMDsNCj4gKyAgVUlOVDMyICAgIEVTUDE7ICAgICAgICAgICAg IC8vIDBDDQo+ICsgIFVJTlQxNiAgICBTUzE7ICAgICAgICAgICAgICAvLyAxMA0KPiArICBVSU5U MTYgICAgUmVzZXJ2ZWRfMTg7DQo+ICsgIFVJTlQzMiAgICBFU1AyOyAgICAgICAgICAgICAvLyAx NA0KPiArICBVSU5UMTYgICAgU1MyOyAgICAgICAgICAgICAgLy8gMTgNCj4gKyAgVUlOVDE2ICAg IFJlc2VydmVkXzI2Ow0KPiArICBVSU5UMzIgICAgQ1IzOyAgICAgICAgICAgICAgLy8gMUMNCj4g KyAgVUlOVDMyICAgIEVJUDsgICAgICAgICAgICAgIC8vIDIwDQo+ICsgIFVJTlQzMiAgICBFRkxB R1M7ICAgICAgICAgICAvLyAyNA0KPiArICBVSU5UMzIgICAgRUFYOyAgICAgICAgICAgICAgLy8g MjgNCj4gKyAgVUlOVDMyICAgIEVDWDsgICAgICAgICAgICAgIC8vIDJDDQo+ICsgIFVJTlQzMiAg ICBFRFg7ICAgICAgICAgICAgICAvLyAzMA0KPiArICBVSU5UMzIgICAgRUJYOyAgICAgICAgICAg ICAgLy8gMzQNCj4gKyAgVUlOVDMyICAgIEVTUDsgICAgICAgICAgICAgIC8vIDM4DQo+ICsgIFVJ TlQzMiAgICBFQlA7DQo+ICsgIFVJTlQzMiAgICBFU0k7DQo+ICsgIFVJTlQzMiAgICBFREk7DQo+ ICsgIFVJTlQxNiAgICBFUzsNCj4gKyAgVUlOVDE2ICAgIFJlc2VydmVkXzc0Ow0KPiArICBVSU5U MTYgICAgQ1M7DQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF83ODsNCj4gKyAgVUlOVDE2ICAgIFNT Ow0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfODI7DQo+ICsgIFVJTlQxNiAgICBEUzsNCj4gKyAg VUlOVDE2ICAgIFJlc2VydmVkXzg2Ow0KPiArICBVSU5UMTYgICAgRlM7DQo+ICsgIFVJTlQxNiAg ICBSZXNlcnZlZF85MDsNCj4gKyAgVUlOVDE2ICAgIEdTOw0KPiArICBVSU5UMTYgICAgUmVzZXJ2 ZWRfOTQ7DQo+ICsgIFVJTlQxNiAgICBMRFRTZWdtZW50U2VsZWN0b3I7DQo+ICsgIFVJTlQxNiAg ICBSZXNlcnZlZF85ODsNCj4gKyAgVUlOVDE2ICAgIFQ7DQo+ICsgIFVJTlQxNiAgICBJT01hcEJh c2VBZGRyZXNzOw0KPiArfSBJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVDsNCj4gKw0KPiArdHlwZWRl ZiBzdHJ1Y3Qgew0KPiArICBVSU5UMTYgICAgTGltaXQxNV8wOw0KPiArICBVSU5UMTYgICAgQmFz ZTE1XzA7DQo+ICsgIFVJTlQ4ICAgICBCYXNlMjNfMTY7DQo+ICsgIFVJTlQ4ICAgICBUeXBlOw0K PiArICBVSU5UOCAgICAgTGltaXQxOV8xNl9hbmRfZmxhZ3M7DQo+ICsgIFVJTlQ4ICAgICBCYXNl MzFfMjQ7DQo+ICt9IElBMzJfVFNTX0RFU0NSSVBUT1I7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0 IHsNCj4gKyAgSUEzMl9UU1NfREVTQ1JJUFRPUiAgICAgICAgICAgVHNzU2VnOw0KPiArICBJQTMy X1RTU19ERVNDUklQVE9SICAgICAgICAgICBFeGNlcHRpb25Uc3NTZWdbRVhDRVBUSU9OX0xJU1Rf TUFYXTsNCj4gKyAgSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQgICAgICAgVHNzOw0KPiArICBJQTMy X1RBU0tfU1RBVEVfU0VHTUVOVCAgICAgICBFeGNlcHRpb25Uc3NbRVhDRVBUSU9OX0xJU1RfTUFY XTsNCj4gK30gVFNTX0VOVFJJRVM7DQo+ICsNCj4gKyNwcmFnbWEgcGFjayAoKQ0KPiArDQo+ICsj ZGVmaW5lIFRTU19TRUwgICAgICAgICAgICAgICBPRkZTRVRfT0YgKFRTU19FTlRSSUVTLCBUc3NT ZWcpDQo+ICsjZGVmaW5lIEVYQ0VQVElPTl9UU1NfU0VMKG4pICBPRkZTRVRfT0YgKFRTU19FTlRS SUVTLA0KPiBFeGNlcHRpb25Uc3NTZWdbbl0pDQo+ICsjZGVmaW5lIFRTU19PRkZTRVQgICAgICAg ICAgICBPRkZTRVRfT0YgKFRTU19FTlRSSUVTLCBUc3MpDQo+ICsNCj4gK3R5cGVkZWYgVk9JRCAo KkVYQ0VQVElPTl9FTlRSWSkgKFZPSUQpOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsg IFVJTlROICAgICAgICAgICAgIFZlY3RvcjsNCj4gKyAgRVhDRVBUSU9OX0VOVFJZICAgRW50cnlQ b2ludDsNCj4gK30gSUEzMl9FWENFUFRJT05fVFNfRU5UUlk7DQo+ICsNCj4gKy8qKg0KPiArIEV4 Y2VwdGlvbiBoYW5kbGluZyBlbnRyeSB0aHJvdWdoIHRhc2sgZ2F0ZSBmb3IgZXhjZXB0aW9uICNV RC4NCj4gKyAqKi8NCj4gK1ZPSUQNCj4gK0V4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTYgKA0KPiAr ICBWT0lEDQo+ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArIEV4Y2VwdGlvbiBoYW5kbGluZyBlbnRy eSB0aHJvdWdoIHRhc2sgZ2F0ZSBmb3IgZXhjZXB0aW9uICNERi4NCj4gKyAqKi8NCj4gK1ZPSUQN Cj4gK0V4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTggKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsN Cj4gKy8qKg0KPiArIEV4Y2VwdGlvbiBoYW5kbGluZyBlbnRyeSB0aHJvdWdoIHRhc2sgZ2F0ZSBm b3IgZXhjZXB0aW9uICNTUy4NCj4gKyAqKi8NCj4gK1ZPSUQNCj4gK0V4Y2VwdGlvblRhc2tTd3Rp Y2hFbnRyeTEyICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyBFeGNlcHRp b24gaGFuZGxpbmcgZW50cnkgdGhyb3VnaCB0YXNrIGdhdGUgZm9yIGV4Y2VwdGlvbiAjR1AuDQo+ ICsgKiovDQo+ICtWT0lEDQo+ICtFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkxMyAoDQo+ICsgIFZP SUQNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgRXhjZXB0aW9uIGhhbmRsaW5nIGVudHJ5IHRo cm91Z2ggdGFzayBnYXRlIGZvciBleGNlcHRpb24gI1BGLg0KPiArICoqLw0KPiArVk9JRA0KPiAr RXhjZXB0aW9uVGFza1N3dGljaEVudHJ5MTQgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsNCj4g Ky8qKg0KPiArIEV4Y2VwdGlvbiBoYW5kbGluZyBlbnRyeSB0aHJvdWdoIHRhc2sgZ2F0ZSBmb3Ig ZXhjZXB0aW9uICNBQy4NCj4gKyAqKi8NCj4gK1ZPSUQNCj4gK0V4Y2VwdGlvblRhc2tTd3RpY2hF bnRyeTE3ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyBFeGNlcHRpb24g aGFuZGxpbmcgZW50cnkgdGhyb3VnaCB0YXNrIGdhdGUgZm9yIGV4Y2VwdGlvbiAjTUMuDQo+ICsg KiovDQo+ICtWT0lEDQo+ICtFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkxOCAoDQo+ICsgIFZPSUQN Cj4gKyAgKTsNCj4gKw0KPiAgI2VuZGlmDQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xp YnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0V4Y2VwdGlvblRzc0VudHJ5QXNtLm5h cw0KPiBtDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEz Mi9FeGNlcHRpb25Uc3NFbnRyeUFzbS5uYXMNCj4gbQ0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0K PiBpbmRleCAwMDAwMDAwMDAwLi5kYmZiY2ZjZjUxDQo+IC0tLSAvZGV2L251bGwNCj4gKysrDQo+ IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9FeGNlcHRp b25Uc3NFbnRyeUFzbS5uYXMNCj4gbQ0KPiBAQCAtMCwwICsxLDM5OCBAQA0KPiArOy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLSA7DQo+ICs7IENvcHlyaWdodCAoYykgMjAxNywgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiArOyBUaGlzIHByb2dyYW0gYW5kIHRoZSBh Y2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ICs7IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFi bGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QNCj4gTGljZW5zZQ0K PiArOyB3aGljaCBhY2NvbXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gIFRoZSBmdWxsIHRleHQg b2YgdGhlIGxpY2Vuc2UgbWF5IGJlIGZvdW5kDQo+IGF0DQo+ICs7IGh0dHA6Ly9vcGVuc291cmNl Lm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHAuDQo+ICs7DQo+ICs7IFRIRSBQUk9HUkFNIElT IERJU1RSSUJVVEVEIFVOREVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTiAiQVMgSVMiIEJBU0lTLA0K PiArOyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgUkVQUkVTRU5UQVRJT05TIE9GIEFOWSBLSU5ELCBF SVRIRVIgRVhQUkVTUw0KPiBPUiBJTVBMSUVELg0KPiArOw0KPiArOyBNb2R1bGUgTmFtZToNCj4g KzsNCj4gKzsgICBFeGNlcHRpb25Uc3NFbnRyeUFzbS5Bc20NCj4gKzsNCj4gKzsgQWJzdHJhY3Q6 DQo+ICs7DQo+ICs7ICAgSUEzMiBDUFUgRXhjZXB0aW9uIEhhbmRsZXIgd2l0aCBTZXBhcmF0ZSBT dGFjaw0KPiArOw0KPiArOyBOb3RlczoNCj4gKzsNCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Cj4gKw0KPiArOw0KPiArOyBJQTMyIFRTUyBNZW1vcnkgTGF5b3V0IERlc2NyaXB0aW9uDQo+ICs7 DQo+ICtzdHJ1YyBJQTMyX1RTUw0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAg ICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ICsgIC5FU1AwOiAgICByZXNkIDENCj4gKyAgLlNT MDogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLkVTUDE6 ICAgIHJlc2QgMQ0KPiArICAuU1MxOiAgICAgcmVzdyAxDQo+ICsgICAgICAgICAgICAgICAgICAg IHJlc3cgMQ0KPiArICAuRVNQMjogICAgcmVzZCAxDQo+ICsgIC5TUzI6ICAgICByZXN3IDENCj4g KyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ICsgIC5fQ1IzOiAgICByZXNkIDENCj4gKyAg LkVJUDogICAgIHJlc2QgMQ0KPiArICAuRUZMQUdTOiAgcmVzZCAxDQo+ICsgIC5fRUFYOiAgICBy ZXNkIDENCj4gKyAgLl9FQ1g6ICAgIHJlc2QgMQ0KPiArICAuX0VEWDogICAgcmVzZCAxDQo+ICsg IC5fRUJYOiAgICByZXNkIDENCj4gKyAgLl9FU1A6ICAgIHJlc2QgMQ0KPiArICAuX0VCUDogICAg cmVzZCAxDQo+ICsgIC5fRVNJOiAgICByZXNkIDENCj4gKyAgLl9FREk6ICAgIHJlc2QgMQ0KPiAr ICAuX0VTOiAgICAgcmVzdyAxDQo+ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArICAu X0NTOiAgICAgcmVzdyAxDQo+ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArICAuX1NT OiAgICAgcmVzdyAxDQo+ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArICAuX0RTOiAg ICAgcmVzdyAxDQo+ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArICAuX0ZTOiAgICAg cmVzdyAxDQo+ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArICAuX0dTOiAgICAgcmVz dyAxDQo+ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArICAuTERUOiAgICAgcmVzdyAx DQo+ICsgICAgICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICBy ZXN3IDENCj4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ICtlbmRzdHJ1Yw0KPiArDQo+ ICs7DQo+ICs7IENvbW1vbkV4Y2VwdGlvbkhhbmRsZXIoKQ0KPiArOw0KPiArZXh0ZXJuIEFTTV9Q RlgoQ29tbW9uRXhjZXB0aW9uSGFuZGxlcikNCj4gKw0KPiArU0VDVElPTiAuZGF0YQ0KPiArDQo+ ICtTRUNUSU9OIC50ZXh0DQo+ICsNCj4gK0FMSUdOICAgOA0KPiArDQo+ICs7DQo+ICs7IGV4Y2Vw dGlvbiBoYW5kbGVyIHN0dWIgdGFibGUNCj4gKzsNCj4gKyVtYWNybyBEZWZFeGNlcHRpb25UYXNr U3d0aWNoRW50cnkgMQ0KPiArJSVEb0lyZXQ6DQo+ICsgICAgaXJldGQNCj4gKw0KPiArZ2xvYmFs IEFTTV9QRlgoRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5JTEpDQo+ICtBU01fUEZYKEV4Y2VwdGlv blRhc2tTd3RpY2hFbnRyeSUxKToNCj4gKyAgICBkYiAgICAgIDB4NmEgICAgICAgIDsgcHVzaCAg I1ZlY3Rvck51bQ0KPiArICAgIGRiICAgICAgJTEgICAgICAgICAgOyBWZWN0b3JOdW0NCj4gKyAg ICBtb3YgICAgIGVheCwgQVNNX1BGWChDb21tb25UYXNrU3d0aWNoRW50cnlQb2ludCkNCj4gKyAg ICBjYWxsICAgIGVheA0KPiArICAgIG1vdiAgICAgZXNwLCBlYXggICAgOyBSZXN0b3JlIHN0YWNr IHRvcA0KPiArICAgIGptcCAgICAgJSVEb0lyZXQNCj4gKyVlbmRtYWNybw0KPiArDQo+ICtnbG9i YWwgQVNNX1BGWChDb21tb25UYXNrU3d0aWNoRW50cnlQb2ludCkNCj4gK0FTTV9QRlgoQ29tbW9u VGFza1N3dGljaEVudHJ5UG9pbnQpOg0KPiArICAgIDsNCj4gKyAgICA7IFN0YWNrOg0KPiArICAg IDsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0tIEVCUCAtIDgNCj4gKyAgICA7ICsgICAgICAg VFNTIEJhc2UgICAgICArDQo+ICsgICAgOyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8LS0gRUJQ IC0gNA0KPiArICAgIDsgKyAgICAgIENQVUlELkVEWCAgICAgICsNCj4gKyAgICA7ICstLS0tLS0t LS0tLS0tLS0tLS0tLS0rIDwtLSBFQlANCj4gKyAgICA7ICsgICAgICAgICBFSVAgICAgICAgICAr DQo+ICsgICAgOyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8LS0gRUJQICsgNA0KPiArICAgIDsg KyAgICBWZWN0b3IgTnVtYmVyICAgICsNCj4gKyAgICA7ICstLS0tLS0tLS0tLS0tLS0tLS0tLS0r IDwtLSBFQlAgKyA4DQo+ICsgICAgOyArICAgIEVycm9yIENvZGUgICAgICAgKw0KPiArICAgIDsg Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4gKyAgICA7DQo+ICs7DQo+ICs7IEdldCBUU1Mgb2Yg aW50ZXJydXB0ZWQgdGFzaw0KPiArOw0KPiArICAgIG1vdiAgICAgZWJwLCBlc3AgICAgICAgICAg ICAgICAgICAgIDsgU3RhY2sgZnJhbWUNCj4gKw0KPiArOyBVc2UgQ1BVSUQgdG8gZGV0ZXJtaW5l IGlmIEZYU0FWRS9GWFJFU1RPUiBhbmQgREUgYXJlIHN1cHBvcnRlZA0KPiArICAgIG1vdiAgICAg ZWF4LCAxDQo+ICsgICAgY3B1aWQNCj4gKyAgICBwdXNoICAgIGVkeA0KPiArDQo+ICs7IEdldCBU U1MgYmFzZSBvZiBpbnRlcnJ1cHRlZCB0YXNrIHRocm91Z2ggUHJldmlvdXNUYXNrTGluayBmaWVs ZCBpbg0KPiArOyBjdXJyZW50IFRTUyBiYXNlDQo+ICsgICAgc3ViICAgICBlc3AsIDgNCj4gKyAg ICBzZ2R0ICAgIFtlc3AgKyAyXQ0KPiArICAgIG1vdiAgICAgZWF4LCBbZXNwICsgNF0gICAgICAg ICAgICAgIDsgR0RUIGJhc2UNCj4gKyAgICBhZGQgICAgIGVzcCwgOA0KPiArDQo+ICsgICAgeG9y ICAgICBlYngsIGVieA0KPiArICAgIHN0ciAgICAgYnggICAgICAgICAgICAgICAgICAgICAgICAg IDsgQ3VycmVudCBUUg0KPiArDQo+ICsgICAgbW92ICAgICBlY3gsIFtlYXggKyBlYnggKyAyXQ0K PiArICAgIHNobCAgICAgZWN4LCA4DQo+ICsgICAgbW92ICAgICBjbCwgW2VheCArIGVieCArIDdd DQo+ICsgICAgcm9yICAgICBlY3gsIDggICAgICAgICAgICAgICAgICAgICAgOyBlY3ggPSBDdXJy ZW50IFRTUyBiYXNlDQo+ICsgICAgcHVzaCAgICBlY3ggICAgICAgICAgICAgICAgICAgICAgICAg OyBrZWVwIGl0IGluIHN0YWNrIGZvciBsYXRlciB1c2UNCj4gKw0KPiArICAgIG1vdnp4ICAgZWJ4 LCB3b3JkIFtlY3hdICAgICAgICAgICAgIDsgUHJldmlvdXMgVGFzayBMaW5rDQo+ICsgICAgbW92 ICAgICBlY3gsIFtlYXggKyBlYnggKyAyXQ0KPiArICAgIHNobCAgICAgZWN4LCA4DQo+ICsgICAg bW92ICAgICBjbCwgW2VheCArIGVieCArIDddDQo+ICsgICAgcm9yICAgICBlY3gsIDggICAgICAg ICAgICAgICAgICAgICAgOyBlY3ggPSBQcmV2aW91cyBUU1MgYmFzZQ0KPiArDQo+ICs7DQo+ICs7 IEFsaWduIHN0YWNrIHRvIG1ha2Ugc3VyZSB0aGF0IEVGSV9GWF9TQVZFX1NUQVRFX0lBMzIgb2YN Cj4gRUZJX1NZU1RFTV9DT05URVhUX0lBMzINCj4gKzsgaXMgMTYtYnl0ZSBhbGlnbmVkDQo+ICs7 DQo+ICsgICAgYW5kICAgICBlc3AsIDB4ZmZmZmZmZjANCj4gKyAgICBzdWIgICAgIGVzcCwgMTIN Cj4gKw0KPiArOzsgVUlOVDMyICBFZGksIEVzaSwgRWJwLCBFc3AsIEVieCwgRWR4LCBFY3gsIEVh eDsNCj4gKyAgICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRUFYXQ0KPiArICAgIHB1 c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FQ1hdDQo+ICsgICAgcHVzaCAgICBkd29yZCBb ZWN4ICsgSUEzMl9UU1MuX0VEWF0NCj4gKyAgICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RT Uy5fRUJYXQ0KPiArICAgIHB1c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FU1BdDQo+ICsg ICAgcHVzaCAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VCUF0NCj4gKyAgICBwdXNoICAgIGR3 b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNJXQ0KPiArICAgIHB1c2ggICAgZHdvcmQgW2VjeCArIElB MzJfVFNTLl9FREldDQo+ICsNCj4gKzs7IFVJTlQzMiAgR3MsIEZzLCBFcywgRHMsIENzLCBTczsN Cj4gKyAgICBtb3Z6eCAgIGVheCwgd29yZCBbZWN4ICsgSUEzMl9UU1MuX1NTXQ0KPiArICAgIHB1 c2ggICAgZWF4DQo+ICsgICAgbW92enggICBlYXgsIHdvcmQgW2VjeCArIElBMzJfVFNTLl9DU10N Cj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdnp4ICAgZWF4LCB3b3JkIFtlY3ggKyBJQTMy X1RTUy5fRFNdDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICBtb3Z6eCAgIGVheCwgd29yZCBb ZWN4ICsgSUEzMl9UU1MuX0VTXQ0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsgICAgbW92enggICBl YXgsIHdvcmQgW2VjeCArIElBMzJfVFNTLl9GU10NCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAg IG1vdnp4ICAgZWF4LCB3b3JkIFtlY3ggKyBJQTMyX1RTUy5fR1NdDQo+ICsgICAgcHVzaCAgICBl YXgNCj4gKw0KPiArOzsgVUlOVDMyICBFaXA7DQo+ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsg SUEzMl9UU1MuRUlQXQ0KPiArDQo+ICs7OyBVSU5UMzIgIEdkdHJbMl0sIElkdHJbMl07DQo+ICsg ICAgc3ViICAgICBlc3AsIDgNCj4gKyAgICBzaWR0ICAgIFtlc3BdDQo+ICsgICAgbW92ICAgICBl YXgsIFtlc3AgKyAyXQ0KPiArICAgIHhjaGcgICAgZWF4LCBbZXNwXQ0KPiArICAgIGFuZCAgICAg ZWF4LCAweEZGRkYNCj4gKyAgICBtb3YgICAgIFtlc3ArNF0sIGVheA0KPiArDQo+ICsgICAgc3Vi ICAgICBlc3AsIDgNCj4gKyAgICBzZ2R0ICAgIFtlc3BdDQo+ICsgICAgbW92ICAgICBlYXgsIFtl c3AgKyAyXQ0KPiArICAgIHhjaGcgICAgZWF4LCBbZXNwXQ0KPiArICAgIGFuZCAgICAgZWF4LCAw eEZGRkYNCj4gKyAgICBtb3YgICAgIFtlc3ArNF0sIGVheA0KPiArDQo+ICs7OyBVSU5UMzIgIExk dHIsIFRyOw0KPiArICAgIG1vdiAgICAgZWF4LCBlYnggICAgOyBlYnggc3RpbGwga2VlcHMgc2Vs ZWN0b3Igb2YgaW50ZXJydXB0ZWQgdGFzaw0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsgICAgbW92 enggICBlYXgsIHdvcmQgW2VjeCArIElBMzJfVFNTLkxEVF0NCj4gKyAgICBwdXNoICAgIGVheA0K PiArDQo+ICs7OyBVSU5UMzIgIEVGbGFnczsNCj4gKyAgICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJ QTMyX1RTUy5FRkxBR1NdDQo+ICsNCj4gKzs7IFVJTlQzMiAgQ3IwLCBDcjEsIENyMiwgQ3IzLCBD cjQ7DQo+ICsgICAgbW92ICAgICBlYXgsIGNyNA0KPiArICAgIHB1c2ggICAgZWF4ICAgICAgICAg ICAgIDsgcHVzaCBjcjQgZmlyc3RseQ0KPiArDQo+ICsgICAgbW92ICAgICBlZHgsIFtlYnAgLSA0 XSAgOyBjcHVpZC5lZHgNCj4gKyAgICB0ZXN0ICAgIGVkeCwgQklUMjQgICAgICA7IFRlc3QgZm9y IEZYU0FWRS9GWFJFU1RPUiBzdXBwb3J0DQo+ICsgICAganogICAgICAuMQ0KPiArICAgIG9yICAg ICAgZWF4LCBCSVQ5ICAgICAgIDsgU2V0IENSNC5PU0ZYU1INCj4gKy4xOg0KPiArICAgIHRlc3Qg ICAgZWR4LCBCSVQyICAgICAgIDsgVGVzdCBmb3IgRGVidWdnaW5nIEV4dGVuc2lvbnMgc3VwcG9y dA0KPiArICAgIGp6ICAgICAgLjINCj4gKyAgICBvciAgICAgIGVheCwgQklUMyAgICAgICA7IFNl dCBDUjQuREUNCj4gKy4yOg0KPiArICAgIG1vdiAgICAgY3I0LCBlYXgNCj4gKw0KPiArICAgIG1v diAgICAgZWF4LCBjcjMNCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdiAgICAgZWF4LCBj cjINCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIHhvciAgICAgZWF4LCBlYXgNCj4gKyAgICBw dXNoICAgIGVheA0KPiArICAgIG1vdiAgICAgZWF4LCBjcjANCj4gKyAgICBwdXNoICAgIGVheA0K PiArDQo+ICs7OyBVSU5UMzIgIERyMCwgRHIxLCBEcjIsIERyMywgRHI2LCBEcjc7DQo+ICsgICAg bW92ICAgICBlYXgsIGRyNw0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsgICAgbW92ICAgICBlYXgs IGRyNg0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsgICAgbW92ICAgICBlYXgsIGRyMw0KPiArICAg IHB1c2ggICAgZWF4DQo+ICsgICAgbW92ICAgICBlYXgsIGRyMg0KPiArICAgIHB1c2ggICAgZWF4 DQo+ICsgICAgbW92ICAgICBlYXgsIGRyMQ0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsgICAgbW92 ICAgICBlYXgsIGRyMA0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsNCj4gKzs7IEZYX1NBVkVfU1RB VEVfSUEzMiBGeFNhdmVTdGF0ZTsNCj4gKzs7IENsZWFyIFRTIGJpdCBpbiBDUjAgdG8gYXZvaWQg RGV2aWNlIE5vdCBBdmFpbGFibGUgRXhjZXB0aW9uICgjTk0pDQo+ICs7OyB3aGVuIGV4ZWN1dGlu ZyBmeHNhdmUvZnhyc3RvciBpbnN0cnVjdGlvbg0KPiArICAgIHRlc3QgICAgZWR4LCBCSVQyNCAg OyBUZXN0IGZvciBGWFNBVkUvRlhSRVNUT1Igc3VwcG9ydC4NCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgIDsgZWR4IHN0aWxsIGNvbnRhaW5zIHJlc3VsdCBmcm9tIENQVUlEIGFib3ZlDQo+ICsg ICAganogICAgICAuMw0KPiArICAgIGNsdHMNCj4gKyAgICBzdWIgICAgIGVzcCwgNTEyDQo+ICsg ICAgbW92ICAgICBlZGksIGVzcA0KPiArICAgIGRiICAgICAgMHhmLCAweGFlLCAweDcgO2Z4c2F2 ZSBbZWRpXQ0KPiArLjM6DQo+ICsNCj4gKzs7IFVJTlQzMiAgRXhjZXB0aW9uRGF0YTsNCj4gKyAg ICBwdXNoICAgIGR3b3JkIFtlYnAgKyA4XQ0KPiArDQo+ICs7OyBVRUZJIGNhbGxpbmcgY29udmVu dGlvbiBmb3IgSUEzMiByZXF1aXJlcyB0aGF0IERpcmVjdGlvbiBmbGFnIGluIEVGTEFHcyBpcyBj bGVhcg0KPiArICAgIGNsZA0KPiArDQo+ICs7OyBjYWxsIGludG8gZXhjZXB0aW9uIGhhbmRsZXIN Cj4gKyAgICBtb3YgICAgIGVzaSwgZWN4ICAgICAgICAgICAgOyBLZWVwIFRTUyBiYXNlIHRvIGF2 b2lkIG92ZXJ3cml0ZQ0KPiArICAgIG1vdiAgICAgZWF4LCBBU01fUEZYKENvbW1vbkV4Y2VwdGlv bkhhbmRsZXIpDQo+ICsNCj4gKzs7IFByZXBhcmUgcGFyYW1ldGVyIGFuZCBjYWxsDQo+ICsgICAg bW92ICAgICBlZHgsIGVzcA0KPiArICAgIHB1c2ggICAgZWR4ICAgICAgICAgICAgICAgICA7IEVG SV9TWVNURU1fQ09OVEVYVA0KPiArICAgIHB1c2ggICAgZHdvcmQgW2VicCArIDRdICAgICA7IEVG SV9FWENFUFRJT05fVFlQRSAodmVjdG9yIG51bWJlcikNCj4gKw0KPiArICAgIDsNCj4gKyAgICA7 IENhbGwgRXh0ZXJuYWwgRXhjZXB0aW9uIEhhbmRsZXINCj4gKyAgICA7DQo+ICsgICAgY2FsbCAg ICBlYXgNCj4gKyAgICBhZGQgICAgIGVzcCwgOCAgICAgICAgICAgICAgOyBSZXN0b3JlIHN0YWNr IGJlZm9yZSBjYWxsaW5nDQo+ICsgICAgbW92ICAgICBlY3gsIGVzaSAgICAgICAgICAgIDsgUmVz dG9yZSBUU1MgYmFzZQ0KPiArDQo+ICs7OyBVSU5UMzIgIEV4Y2VwdGlvbkRhdGE7DQo+ICsgICAg YWRkICAgICBlc3AsIDQNCj4gKw0KPiArOzsgRlhfU0FWRV9TVEFURV9JQTMyIEZ4U2F2ZVN0YXRl Ow0KPiArICAgIG1vdiAgICAgZWR4LCBbZWJwIC0gNF0gIDsgY3B1aWQuZWR4DQo+ICsgICAgdGVz dCAgICBlZHgsIEJJVDI0ICAgICAgOyBUZXN0IGZvciBGWFNBVkUvRlhSRVNUT1Igc3VwcG9ydA0K PiArICAgIGp6ICAgICAgLjQNCj4gKyAgICBtb3YgICAgIGVzaSwgZXNwDQo+ICsgICAgZGIgICAg ICAweGYsIDB4YWUsIDB4ZSAgOyBmeHJzdG9yIFtlc2ldDQo+ICsuNDoNCj4gKyAgICBhZGQgICAg IGVzcCwgNTEyDQo+ICsNCj4gKzs7IFVJTlQzMiAgRHIwLCBEcjEsIERyMiwgRHIzLCBEcjYsIERy NzsNCj4gKzs7IFNraXAgcmVzdG9yYXRpb24gb2YgRFJ4IHJlZ2lzdGVycyB0byBzdXBwb3J0IGRl YnVnZ2Vycw0KPiArOzsgdGhhdCBzZXQgYnJlYWtwb2ludHMgaW4gaW50ZXJydXB0L2V4Y2VwdGlv biBjb250ZXh0DQo+ICsgICAgYWRkICAgICBlc3AsIDQgKiA2DQo+ICsNCj4gKzs7IFVJTlQzMiAg Q3IwLCBDcjEsIENyMiwgQ3IzLCBDcjQ7DQo+ICsgICAgcG9wICAgICBlYXgNCj4gKyAgICBtb3Yg ICAgIGNyMCwgZWF4DQo+ICsgICAgYWRkICAgICBlc3AsIDQgICAgOyBub3QgZm9yIENyMQ0KPiAr ICAgIHBvcCAgICAgZWF4DQo+ICsgICAgbW92ICAgICBjcjIsIGVheA0KPiArICAgIHBvcCAgICAg ZWF4DQo+ICsgICAgbW92ICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0NSM10sIGVheA0KPiAr ICAgIHBvcCAgICAgZWF4DQo+ICsgICAgbW92ICAgICBjcjQsIGVheA0KPiArDQo+ICs7OyBVSU5U MzIgIEVGbGFnczsNCj4gKyAgICBwb3AgICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5FRkxBR1Nd DQo+ICsgICAgbW92ICAgICBlYngsIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5FRkxBR1NdDQo+ICsg ICAgYnRyICAgICBlYngsIDkgICAgICA7IERvICdjbGknDQo+ICsgICAgbW92ICAgICBkd29yZCBb ZWN4ICsgSUEzMl9UU1MuRUZMQUdTXSwgZWJ4DQo+ICsNCj4gKzs7IFVJTlQzMiAgTGR0ciwgVHI7 DQo+ICs7OyBVSU5UMzIgIEdkdHJbMl0sIElkdHJbMl07DQo+ICs7OyBCZXN0IG5vdCBsZXQgYW55 b25lIG1lc3Mgd2l0aCB0aGVzZSBwYXJ0aWN1bGFyIHJlZ2lzdGVycy4uLg0KPiArICAgIGFkZCAg ICAgZXNwLCAyNA0KPiArDQo+ICs7OyBVSU5UMzIgIEVpcDsNCj4gKyAgICBwb3AgICAgIGR3b3Jk IFtlY3ggKyBJQTMyX1RTUy5FSVBdDQo+ICsNCj4gKzs7IFVJTlQzMiAgR3MsIEZzLCBFcywgRHMs IENzLCBTczsNCj4gKzs7IE5PVEUgLSBtb2RpZmllZCBzZWdtZW50IHJlZ2lzdGVycyBjb3VsZCBo YW5nIHRoZSBkZWJ1Z2dlci4uLiAgV2UNCj4gKzs7ICAgICAgICBjb3VsZCBhdHRlbXB0IHRvIGlu c3VsYXRlIG91cnNlbHZlcyBhZ2FpbnN0IHRoaXMgcG9zc2liaWxpdHksDQo+ICs7OyAgICAgICAg YnV0IHRoYXQgcG9zZXMgcmlza3MgYXMgd2VsbC4NCj4gKzs7DQo+ICsgICAgcG9wICAgICBlYXgN Cj4gK28xNiBtb3YgICAgIFtlY3ggKyBJQTMyX1RTUy5fR1NdLCBheA0KPiArICAgIHBvcCAgICAg ZWF4DQo+ICtvMTYgbW92ICAgICBbZWN4ICsgSUEzMl9UU1MuX0ZTXSwgYXgNCj4gKyAgICBwb3Ag ICAgIGVheA0KPiArbzE2IG1vdiAgICAgW2VjeCArIElBMzJfVFNTLl9FU10sIGF4DQo+ICsgICAg cG9wICAgICBlYXgNCj4gK28xNiBtb3YgICAgIFtlY3ggKyBJQTMyX1RTUy5fRFNdLCBheA0KPiAr ICAgIHBvcCAgICAgZWF4DQo+ICtvMTYgbW92ICAgICBbZWN4ICsgSUEzMl9UU1MuX0NTXSwgYXgN Cj4gKyAgICBwb3AgICAgIGVheA0KPiArbzE2IG1vdiAgICAgW2VjeCArIElBMzJfVFNTLl9TU10s IGF4DQo+ICsNCj4gKzs7IFVJTlQzMiAgRWRpLCBFc2ksIEVicCwgRXNwLCBFYngsIEVkeCwgRWN4 LCBFYXg7DQo+ICsgICAgcG9wICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VESV0NCj4gKyAg ICBwb3AgICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNJXQ0KPiArICAgIGFkZCAgICAgZXNw LCA0ICAgOyBub3QgZm9yIGVicA0KPiArICAgIGFkZCAgICAgZXNwLCA0ICAgOyBub3QgZm9yIGVz cA0KPiArICAgIHBvcCAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FQlhdDQo+ICsgICAgcG9w ICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VEWF0NCj4gKyAgICBwb3AgICAgIGR3b3JkIFtl Y3ggKyBJQTMyX1RTUy5fRUNYXQ0KPiArICAgIHBvcCAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNT Ll9FQVhdDQo+ICsNCj4gKzsgU2V0IHNpbmdsZSBzdGVwIERCIyB0byBhbGxvdyBkZWJ1Z2dlciB0 byBhYmxlIHRvIGdvIGJhY2sgdG8gdGhlIEVJUA0KPiArOyB3aGVyZSB0aGUgZXhjZXB0aW9uIGlz IHRyaWdnZXJlZC4NCj4gKw0KPiArOzsgQ3JlYXRlIHJldHVybiBjb250ZXh0IGZvciBpcmV0ZCBp biBzdHViIGZ1bmN0aW9uDQo+ICsgICAgbW92ICAgIGVheCwgZHdvcmQgW2VjeCArIElBMzJfVFNT Ll9FU1BdICAgICAgOyBHZXQgb2xkIHN0YWNrIHBvaW50ZXINCj4gKyAgICBtb3YgICAgZWJ4LCBk d29yZCBbZWN4ICsgSUEzMl9UU1MuRUlQXQ0KPiArICAgIG1vdiAgICBbZWF4IC0gMHhjXSwgZWJ4 ICAgICAgICAgICAgICAgICAgICAgIDsgY3JlYXRlIEVJUCBpbiBvbGQgc3RhY2sNCj4gKyAgICBt b3Z6eCAgZWJ4LCB3b3JkIFtlY3ggKyBJQTMyX1RTUy5fQ1NdDQo+ICsgICAgbW92ICAgIFtlYXgg LSAweDhdLCBlYnggICAgICAgICAgICAgICAgICAgICAgOyBjcmVhdGUgQ1MgaW4gb2xkIHN0YWNr DQo+ICsgICAgbW92ICAgIGVieCwgZHdvcmQgW2VjeCArIElBMzJfVFNTLkVGTEFHU10NCj4gKyAg ICBidHMgICAgZWJ4LCA4DQo+ICsgICAgbW92ICAgIFtlYXggLSAweDRdLCBlYnggICAgICAgICAg ICAgICAgICAgICAgOyBjcmVhdGUgZWZsYWdzIGluIG9sZCBzdGFjaw0KPiArICAgIG1vdiAgICBk d29yZCBbZWN4ICsgSUEzMl9UU1MuRUZMQUdTXSwgZWJ4ICAgIDsgdXBkYXRlIGVmbGFncyBpbiBv bGQgVFNTDQo+ICsgICAgbW92ICAgIGVheCwgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FU1BdICAg ICAgOyBHZXQgb2xkIHN0YWNrIHBvaW50ZXINCj4gKyAgICBzdWIgICAgZWF4LCAweGMgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA7IG1pbnVzIDEyIGJ5dGUNCj4gKyAgICBtb3YgICAgZHdv cmQgW2VjeCArIElBMzJfVFNTLl9FU1BdLCBlYXggICAgICA7IFNldCBuZXcgc3RhY2sgcG9pbnRl cg0KPiArDQo+ICs7OyBSZXBsYWNlIHRoZSBFSVAgb2YgaW50ZXJydXB0ZWQgdGFzayB3aXRoIHN0 dWIgZnVuY3Rpb24NCj4gKyAgICBtb3YgICAgZWF4LCBBU01fUEZYKFNpbmdsZVN0ZXBTdHViRnVu Y3Rpb24pDQo+ICsgICAgbW92ICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5FSVBdLCBlYXgNCj4g Kw0KPiArICAgIG1vdiAgICAgZWN4LCBbZWJwIC0gOF0gICAgICAgICAgICAgICAgICAgICAgIDsg R2V0IGN1cnJlbnQgVFNTIGJhc2UNCj4gKyAgICBtb3YgICAgIGVheCwgZHdvcmQgW2VjeCArIElB MzJfVFNTLl9FU1BdICAgICA7IFJldHVybiBjdXJyZW50IHN0YWNrIHRvcA0KPiArICAgIG1vdiAg ICAgZXNwLCBlYnANCj4gKw0KPiArICAgIHJldA0KPiArDQo+ICtnbG9iYWwgQVNNX1BGWChTaW5n bGVTdGVwU3R1YkZ1bmN0aW9uKQ0KPiArQVNNX1BGWChTaW5nbGVTdGVwU3R1YkZ1bmN0aW9uKToN Cj4gKzsNCj4gKzsgd2UgbmVlZCBjbGVhbiBUUyBiaXQgaW4gQ1IwIHRvIGV4ZWN1dGUNCj4gKzsg eDg3IEZQVS9NTVgvU1NFL1NTRTIvU1NFMy9TU1NFMy9TU0U0IGluc3RydWN0aW9ucy4NCj4gKzsN Cj4gKyAgICBjbHRzDQo+ICsgICAgaXJldGQNCj4gKw0KPiArOy0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiArOyBWT0lEDQo+ICs7IEFzbVdyaXRlVHIgKA0KPiArOyAgIFVJTlQxNiBTZWxlY3Rvcg0K PiArOyAgICk7DQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICtnbG9iYWwgQVNNX1BGWChB c21Xcml0ZVRyKQ0KPiArQVNNX1BGWChBc21Xcml0ZVRyKToNCj4gKyAgICBtb3YgICAgIGVheCwg W2VzcCs0XQ0KPiArICAgIGx0ciAgICAgYXgNCj4gKyAgICByZXQNCj4gKw0KPiArRGVmRXhjZXB0 aW9uVGFza1N3dGljaEVudHJ5IDYNCj4gK0RlZkV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeSA4DQo+ ICtEZWZFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkgMTINCj4gK0RlZkV4Y2VwdGlvblRhc2tTd3Rp Y2hFbnRyeSAxMw0KPiArRGVmRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5IDE0DQo+ICtEZWZFeGNl cHRpb25UYXNrU3d0aWNoRW50cnkgMTcNCj4gK0RlZkV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeSAx OA0KPiArDQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9u SGFuZGxlckxpYi9QZWlDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiBiL1VlZmlDcHVQa2cv TGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIu aW5mDQo+IGluZGV4IDc1NDQzMjg4YTkuLjRjMGQ0MzUxMzYgMTAwNjQ0DQo+IC0tLQ0KPiBhL1Vl ZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1BlaUNwdUV4Y2VwdGlvbkhh bmRsZXJMaWIuaW5mDQo+ICsrKw0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25I YW5kbGVyTGliL1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mDQo+IEBAIC0zMCw2ICszMCw3 IEBADQo+ICBbU291cmNlcy5JYTMyXQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uYXNt DQo+ICAgIElhMzIvRXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtDQo+ICsgIElhMzIvRXhjZXB0aW9u VHNzRW50cnlBc20ubmFzbQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uUw0KPiAgICBJ YTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gICAgSWEzMi9BcmNoSW50ZXJydXB0RGVmcy5o DQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxl ckxpYi9TZWNQZWlDcHVFeGNlcHRpb25IYW5kbGVyTGliLmkNCj4gbmYNCj4gYi9VZWZpQ3B1UGtn L0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9TZWNQZWlDcHVFeGNlcHRpb25IYW5kbGVy TGliLmkNCj4gbmYNCj4gaW5kZXggZDcwYTk5YzEwMC4uYWRiNDE1YmE1YSAxMDA2NDQNCj4gLS0t DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvU2VjUGVpQ3B1 RXhjZXB0aW9uSGFuZGxlckxpYi5pDQo+IG5mDQo+ICsrKw0KPiBiL1VlZmlDcHVQa2cvTGlicmFy eS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1NlY1BlaUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaQ0K PiBuZg0KPiBAQCAtMzAsNiArMzAsNyBAQA0KPiAgW1NvdXJjZXMuSWEzMl0NCj4gICAgSWEzMi9F eGNlcHRpb25IYW5kbGVyQXNtLmFzbQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20ubmFz bQ0KPiArICBJYTMyL0V4Y2VwdGlvblRzc0VudHJ5QXNtLm5hc20NCj4gICAgSWEzMi9FeGNlcHRp b25IYW5kbGVyQXNtLlMNCj4gICAgSWEzMi9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+ICAgIElh MzIvQXJjaEludGVycnVwdERlZnMuaA0KPiBAQCAtNTcsMyArNTgsNSBAQA0KPiAgICBQcmludExp Yg0KPiAgICBMb2NhbEFwaWNMaWINCj4gICAgUGVDb2ZmR2V0RW50cnlQb2ludExpYg0KPiArICBN ZW1vcnlBbGxvY2F0aW9uTGliDQo+ICsNCj4gZGlmZiAtLWdpdA0KPiBhL1VlZmlDcHVQa2cvTGli cmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1NtbUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5m DQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvU21tQ3B1RXhj ZXB0aW9uSGFuZGxlckxpYi5pbmYNCj4gaW5kZXggNjM0ZmZjYjIxZC4uNTZiODc1YjdjOCAxMDA2 NDQNCj4gLS0tDQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIv U21tQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYNCj4gKysrDQo+IGIvVWVmaUNwdVBrZy9MaWJy YXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvU21tQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYN Cj4gQEAgLTMwLDYgKzMwLDcgQEANCj4gIFtTb3VyY2VzLklhMzJdDQo+ICAgIElhMzIvRXhjZXB0 aW9uSGFuZGxlckFzbS5hc20NCj4gICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLm5hc20NCj4g KyAgSWEzMi9FeGNlcHRpb25Uc3NFbnRyeUFzbS5uYXNtDQo+ICAgIElhMzIvRXhjZXB0aW9uSGFu ZGxlckFzbS5TDQo+ICAgIElhMzIvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiAgICBJYTMyL0Fy Y2hJbnRlcnJ1cHREZWZzLmgNCj4gZGlmZiAtLWdpdA0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9D cHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+IGIvVWVm aUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0FyY2hFeGNlcHRpb25I YW5kbGVyLmMNCj4gaW5kZXggNjVmMGNmZjY4MC4uMjRmMmE4NDg2YSAxMDA2NDQNCj4gLS0tIGEv VWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0FyY2hFeGNlcHRp b25IYW5kbGVyLmMNCj4gKysrIGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRs ZXJMaWIvWDY0L0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gQEAgLTE0LDYgKzE0LDE5IEBADQo+ DQo+ICAjaW5jbHVkZSAiQ3B1RXhjZXB0aW9uQ29tbW9uLmgiDQo+DQo+ICsvLw0KPiArLy8gTGlz dCBvZiBleGNlcHRpb25zIG5lZWRpbmcgc2VwYXJhdGUgc3RhY2sNCj4gKy8vDQo+ICtTVEFUSUMg VUlOVE4gIG1FeGNlcHRpb25zV2l0aFN0YWNrW10gPSB7DQo+ICsgIDYsICAvLyNVRDogSW52YWxp ZCBPcGNvZGUgRXhjZXB0aW9uDQo+ICsgIDgsICAvLyNERjogRG91YmxlIEZhdWx0IEV4Y2VwdGlv bg0KPiArICAxMiwgLy8jU1M6IFN0YWNrIEZhdWx0IEV4Y2VwdGlvbg0KPiArICAxMywgLy8jR1A6 IEdlbmVyYWwgUHJvdGVjdGlvbiBFeGNlcHRpb24NCj4gKyAgMTQsIC8vI1BGOiBQYWdlLUZhdWx0 IEV4Y2VwdGlvbg0KPiArICAxNywgLy8jQUM6IEFsaWdubWVudCBDaGVjayBFeGNlcHRpb24NCj4g KyAgMTggIC8vI01DOiBNYWNoaW5lLUNoZWNrIEV4Y2VwdGlvbg0KPiArICB9Ow0KPiArDQo+ICAv KioNCj4gICAgUmV0dXJuIGFkZHJlc3MgbWFwIG9mIGV4Y2VwdGlvbiBoYW5kbGVyIHRlbXBsYXRl IHNvIHRoYXQgQyBjb2RlIGNhbg0KPiBnZW5lcmF0ZQ0KPiAgICBleGNlcHRpb24gdGFibGVzLg0K PiBAQCAtMTEyLDYgKzEyNSwxMDEgQEAgQXJjaFJlc3RvcmVFeGNlcHRpb25Db250ZXh0ICgNCj4g ICAgU3lzdGVtQ29udGV4dC5TeXN0ZW1Db250ZXh0WDY0LT5FeGNlcHRpb25EYXRhID0NCj4gUmVz ZXJ2ZWRWZWN0b3JzW0V4Y2VwdGlvblR5cGVdLkV4Y2VwdGlvbkRhdGE7DQo+ICB9DQo+DQo+ICsv KioNCj4gKyAgU2V0dXAgc2VwYXJhdGUgc3RhY2sgZm9yIHNwZWNpZmljIGV4Y2VwdGlvbnMuDQo+ ICsNCj4gKyAgQHBhcmFtW2luXSBJZHRUYWJsZSAgICAgICAgSURUIHRhYmxlIGJhc2UuDQo+ICsq Ki8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArQXJjaFNldHVwRXhjcGV0aW9uU3RhY2sgKA0KPiAr ICBJTiBJQTMyX0lEVF9HQVRFX0RFU0NSSVBUT1IgICAgICAgICAgICpJZHRUYWJsZQ0KPiArICAp DQo+ICt7DQo+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKk5ld0dkdDsNCj4gKyAgSUEz Ml9ERVNDUklQVE9SICAgICAgICAgICBHZHREZXNjOw0KPiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgIE9sZEdkdFNpemU7DQo+ICsgIFRTU19FTlRSSUVTICAgICAgICAgICAgICAgKlRzc0Vu dHJ5Ow0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFN0YWNrQmFzZTsNCj4gKyAgVUlO VE4gICAgICAgICAgICAgICAgICAgICBTdGFja1RvcDsNCj4gKyAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICBTdGFja1NpemU7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgVHNzQmFz ZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gKw0KPiArICAvLw0K PiArICAvLyBBbGxvY2F0ZSBSdW50aW1lIERhdGEgZm9yIHRoZSBHRFQNCj4gKyAgLy8NCj4gKyAg QXNtUmVhZEdkdHIoJkdkdERlc2MpOw0KPiArICBPbGRHZHRTaXplID0gR2R0RGVzYy5MaW1pdCAr IDE7DQo+ICsgIE5ld0dkdCA9IEFsbG9jYXRlUnVudGltZVplcm9Qb29sKE9sZEdkdFNpemUgKyBz aXplb2YoVFNTX0VOVFJJRVMpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsg SUEzMl9HRFRfQUxJR05NRU5UKTsNCj4gKyAgaWYgKE5ld0dkdCA9PSBOVUxMKSB7DQo+ICsgICAg cmV0dXJuOw0KPiArICB9DQo+ICsgIE5ld0dkdCA9IEFMSUdOX1BPSU5URVIgKE5ld0dkdCwgSUEz Ml9HRFRfQUxJR05NRU5UKTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBJbml0aWFsaXplIG5ldyBH RFQgZW50cmllcw0KPiArICAvLw0KPiArICBDb3B5TWVtKE5ld0dkdCwgKFZPSUQgKilHZHREZXNj LkJhc2UsIE9sZEdkdFNpemUpOw0KPiArICBHZHREZXNjLkJhc2UgPSAoVUlOVE4pKFZPSUQqKU5l d0dkdDsNCj4gKyAgR2R0RGVzYy5MaW1pdCA9IChVSU5UMTYpKE9sZEdkdFNpemUgKyBUU1NfT0ZG U0VUIC0gMSk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gUmVzZXJ2ZSBzdGF0Y2sgbWVtb3J5IGZv ciBzdXBwb3J0ZWQgZXhjZXB0aW9ucw0KPiArICAvLw0KPiArICBTdGFja1NpemUgPSBBUlJBWV9T SVpFIChtRXhjZXB0aW9uc1dpdGhTdGFjaykgKiBFWENFUFRJT05fU1RBQ0tfU0laRTsNCj4gKyAg U3RhY2tTaXplID0gRUZJX1BBR0VTX1RPX1NJWkUgKEVGSV9TSVpFX1RPX1BBR0VTIChTdGFja1Np emUpKTsNCj4gKyAgU3RhY2tCYXNlID0gKFVJTlQ2NClBbGxvY2F0ZVBhZ2VzIChFRklfU0laRV9U T19QQUdFUyAoU3RhY2tTaXplKSk7DQo+ICsgIGlmIChTdGFja0Jhc2UgPT0gMCkgew0KPiArICAg IEZyZWVQb29sIChOZXdHZHQpOw0KPiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8v DQo+ICsgIC8vIEZpeHVwIFRTUyBkZXNjcmlwdG9ycw0KPiArICAvLw0KPiArICBUc3NFbnRyeSA9 IChWT0lEICopKEdkdERlc2MuQmFzZSArIE9sZEdkdFNpemUpOw0KPiArICBUc3NCYXNlID0gKFVJ TlROKShWT0lEICopJlRzc0VudHJ5LT5Uc3M7DQo+ICsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5M aW1pdDE1XzAgICAgICAgICAgICA9DQo+IHNpemVvZihJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVCkg LSAxOw0KPiArICBUc3NFbnRyeS0+VHNzU2VnLkJhc2UxNV8wICAgICAgICAgICAgID0gKFVJTlQx NilUc3NCYXNlOw0KPiArICBUc3NFbnRyeS0+VHNzU2VnLkJhc2UyM18xNiAgICAgICAgICAgID0g KFVJTlQ4KShUc3NCYXNlID4+IDE2KTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5UeXBlICAgICAg ICAgICAgICAgICA9IElBMzJfR0RUX1RZUEVfVFNTOw0KPiArICBUc3NFbnRyeS0+VHNzU2VnLkxp bWl0MTlfMTZfYW5kX2ZsYWdzID0gMDsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNlMzFfMjQg ICAgICAgICAgICA9IChVSU5UOCkoVHNzQmFzZSA+PiAyNCk7DQo+ICsgIFRzc0VudHJ5LT5Uc3NT ZWcuQmFzZTYzXzMyICAgICAgICAgICAgPSAoVUlOVDMyKShUc3NCYXNlID4+IDMyKTsNCj4gKyAg VHNzRW50cnktPlRzc1NlZy5SZXNlcnZlZCAgICAgICAgICAgICA9IDA7DQo+ICsNCj4gKyAgLy8N Cj4gKyAgLy8gRW5hYmxlIEludGVycnVwdCBTdGFjayBUYWJsZSAoSVNUKSBmb3IgZWFjaCByZXF1 aXJlZCBleGNlcHRpb24NCj4gKyAgLy8NCj4gKyAgU3RhY2tUb3AgID0gU3RhY2tCYXNlICsgU3Rh Y2tTaXplIC0gQ1BVX1NUQUNLX0FMSUdOTUVOVDsNCj4gKyAgU3RhY2tUb3AgID0gKFVJTlROKUFM SUdOX1BPSU5URVIgKFN0YWNrVG9wLCBDUFVfU1RBQ0tfQUxJR05NRU5UKTsNCj4gKyAgZm9yIChJ bmRleCA9IDA7IEluZGV4IDwgQVJSQVlfU0laRSAobUV4Y2VwdGlvbnNXaXRoU3RhY2spOyArK0lu ZGV4KSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBGaXh1cCBUU1MNCj4gKyAgICAvLw0KPiArICAg IFRzc0VudHJ5LT5Uc3MuSVNUW0luZGV4XSA9IFN0YWNrVG9wOw0KPiArICAgIFN0YWNrVG9wIC09 IEVYQ0VQVElPTl9TVEFDS19TSVpFOw0KPiArDQo+ICsgICAgLy8NCj4gKyAgICAvLyBTZXQgdGhl IElTVCBmaWVsZCB0byAxIHRvIGVuYWJsZSBjb3JyZXNwb25kaW5nIElTVA0KPiArICAgIC8vDQo+ ICsgICAgSWR0VGFibGVbbUV4Y2VwdGlvbnNXaXRoU3RhY2tbSW5kZXhdXS5CaXRzLlJlc2VydmVk XzAgPSAoVUlOVDgpKEluZGV4ICsNCj4gMSk7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAv LyBQdWJsaXNoIHRoZSBjaGFuZ2VzDQo+ICsgIC8vDQo+ICsgIEFzbVdyaXRlR2R0cigmR2R0RGVz Yyk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gTG9hZCB0YXNrIHJlZ2lzdGVyDQo+ICsgIC8vDQo+ ICsgIEFzbVdyaXRlVHIgKChVSU5UMTYpKE9sZEdkdFNpemUgKyBUU1NfU0VMKSk7DQo+ICt9DQo+ ICsNCj4gIC8qKg0KPiAgICBEaXNwbGF5IENQVSBpbmZvcm1hdGlvbi4NCj4NCj4gZGlmZiAtLWdp dA0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNo SW50ZXJydXB0RGVmcy5oDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRs ZXJMaWIvWDY0L0FyY2hJbnRlcnJ1cHREZWZzLmgNCj4gaW5kZXggOTA2NDgwMTM0YS4uNWE5MTNi YWU3YiAxMDA2NDQNCj4gLS0tIGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRs ZXJMaWIvWDY0L0FyY2hJbnRlcnJ1cHREZWZzLmgNCj4gKysrIGIvVWVmaUNwdVBrZy9MaWJyYXJ5 L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0FyY2hJbnRlcnJ1cHREZWZzLmgNCj4gQEAgLTQz LDQgKzQzLDQ0IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4gICAgVUlOVDggICAgICAgSG9va0FmdGVy U3R1YkhlYWRlckNvZGVbSE9PS0FGVEVSX1NUVUJfU0laRV07DQo+ICB9IFJFU0VSVkVEX1ZFQ1RP UlNfREFUQTsNCj4NCj4gKyNwcmFnbWEgcGFjayAoMSkNCj4gKw0KPiArI2RlZmluZSBFWENFUFRJ T05fTElTVF9NQVggICAgICAgIDcNCj4gKyNkZWZpbmUgRVhDRVBUSU9OX1NUQUNLX1NJWkUgICAg ICBFRklfUEFHRV9TSVpFDQo+ICsjZGVmaW5lIElBMzJfR0RUX1RZUEVfVFNTICAgICAgICAgMHg4 OQ0KPiArI2RlZmluZSBJQTMyX0dEVF9BTElHTk1FTlQgICAgICAgIDgNCj4gKw0KPiArdHlwZWRl ZiBzdHJ1Y3Qgew0KPiArICBVSU5UMzIgICAgUmVzZXJ2ZWRfMDsNCj4gKyAgVUlOVDY0ICAgIFJT UDA7DQo+ICsgIFVJTlQ2NCAgICBSU1AxOw0KPiArICBVSU5UNjQgICAgUlNQMjsNCj4gKyAgVUlO VDY0ICAgIFJlc2VydmVkXzI4Ow0KPiArICBVSU5UNjQgICAgSVNUWzddOw0KPiArICBVSU5UNjQg ICAgUmVzZXJ2ZWRfOTI7DQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF8xMDA7DQo+ICsgIFVJTlQx NiAgICBJT01hcEJhc2VBZGRyZXNzOw0KPiArfSBJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVDsNCj4g Kw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBVSU5UMTYgICAgTGltaXQxNV8wOw0KPiArICBV SU5UMTYgICAgQmFzZTE1XzA7DQo+ICsgIFVJTlQ4ICAgICBCYXNlMjNfMTY7DQo+ICsgIFVJTlQ4 ICAgICBUeXBlOw0KPiArICBVSU5UOCAgICAgTGltaXQxOV8xNl9hbmRfZmxhZ3M7DQo+ICsgIFVJ TlQ4ICAgICBCYXNlMzFfMjQ7DQo+ICsgIFVJTlQzMiAgICBCYXNlNjNfMzI7DQo+ICsgIFVJTlQz MiAgICBSZXNlcnZlZDsNCj4gK30gSUEzMl9UU1NfREVTQ1JJUFRPUjsNCj4gKw0KPiArdHlwZWRl ZiBzdHJ1Y3Qgew0KPiArICBJQTMyX1RTU19ERVNDUklQVE9SICAgICAgICAgICBUc3NTZWc7DQo+ ICsgIElBMzJfVEFTS19TVEFURV9TRUdNRU5UICAgICAgIFRzczsNCj4gK30gVFNTX0VOVFJJRVM7 DQo+ICsNCj4gKyNwcmFnbWEgcGFjayAoKQ0KPiArDQo+ICsjZGVmaW5lIFRTU19TRUwgICAgICAg ICAgIE9GRlNFVF9PRiAoVFNTX0VOVFJJRVMsIFRzc1NlZykNCj4gKyNkZWZpbmUgVFNTX09GRlNF VCAgICAgICAgT0ZGU0VUX09GIChUU1NfRU5UUklFUywgVHNzKQ0KPiArDQo+ICAjZW5kaWYNCj4g ZGlmZiAtLWdpdA0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGli L1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLlMNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhj ZXB0aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5TDQo+IGluZGV4IGVkZDM2 M2NkYWEuLmJkYWYxMzJjZjUgMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVF eGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLlMNCj4gKysrDQo+IGIv VWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlvbkhh bmRsZXJBc20uUw0KPiBAQCAtNDI5LDYgKzQyOSwxOCBAQCBBU01fUEZYKEFzbVZlY3Rvck51bUZp eHVwKToNCj4gICAgICBwb3BxICAgICAgJXJicA0KPiAgICAgIHJldA0KPg0KPiArIy0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQ0KPiArIyBWT0lEDQo+ICsjIEFzbVdyaXRlVHIgKA0KPiArIyAgIFVJTlQx NiBTZWxlY3Rvcg0KPiArIyAgICk7DQo+ICsjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICtBU01f R0xPQkFMIEFTTV9QRlgoQXNtV3JpdGVUcikNCj4gK0FTTV9QRlgoQXNtV3JpdGVUcik6DQo+ICsg ICAgbW92bCAgICAlZWN4LCAlZWF4DQo+ICsgICAgbHRydyAgICAlYXgNCj4gKyAgICByZXQNCj4g Kw0KPiAgI0VORA0KPg0KPg0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0Nw dUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20uYXNtDQo+IGIvVWVm aUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlvbkhhbmRs ZXJBc20uYXNtDQo+IGluZGV4IDcyNmM2NGExNDAuLmFlYzU2ZWY0YmYgMTAwNjQ0DQo+IC0tLQ0K PiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRp b25IYW5kbGVyQXNtLmFzbQ0KPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0 aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5hc20NCj4gQEAgLTM4Niw0ICsz ODYsMTYgQEAgQXNtVmVjdG9yTnVtRml4dXAgICBQUk9DDQo+ICAgICAgcmV0DQo+ICBBc21WZWN0 b3JOdW1GaXh1cCAgIEVORFANCj4NCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKzsgVk9J RA0KPiArOyBBc21Xcml0ZVRyICgNCj4gKzsgICBVSU5UMTYgU2VsZWN0b3INCj4gKzsgICApOw0K PiArOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArQXNtV3JpdGVUciBQUk9DIFBVQkxJQw0KPiAr ICAgIG1vdiAgICAgZWF4LCBlY3gNCj4gKyAgICBsdHIgICAgIGF4DQo+ICsgICAgcmV0DQo+ICtB c21Xcml0ZVRyIEVORFANCj4gKw0KPiAgRU5EDQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtn L0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5u YXNtDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4 Y2VwdGlvbkhhbmRsZXJBc20ubmFzbQ0KPiBpbmRleCBiYTg5OTNkODRiLi4xZTJhYzQxMWIwIDEw MDY0NA0KPiAtLS0NCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxp Yi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtDQo+ICsrKw0KPiBiL1VlZmlDcHVQa2cvTGli cmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLm5hc20N Cj4gQEAgLTM4NSwzICszODUsMTUgQEAgQVNNX1BGWChBc21WZWN0b3JOdW1GaXh1cCk6DQo+ICAg ICAgbW92ICAgICBbcmN4ICsgKEBWZWN0b3JOdW0gLSBIb29rQWZ0ZXJTdHViSGVhZGVyQmVnaW4p XSwgYWwNCj4gICAgICByZXQNCj4NCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKzsgVk9J RA0KPiArOyBBc21Xcml0ZVRyICgNCj4gKzsgICBVSU5UMTYgU2VsZWN0b3INCj4gKzsgICApOw0K PiArOy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArZ2xvYmFsIEFTTV9QRlgoQXNtV3JpdGVUcikN Cj4gK0FTTV9QRlgoQXNtV3JpdGVUcik6DQo+ICsgICAgbW92ICAgICBlYXgsIGVjeA0KPiArICAg IGx0ciAgICAgYXgNCj4gKyAgICByZXQNCj4gKw0KPiAtLQ0KPiAyLjE0LjEud2luZG93cy4xDQoN Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQplZGsyLWRl dmVsIG1haWxpbmcgbGlzdA0KZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2 ZWxAbGlzdHMuMDEub3JnPg0KaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9l ZGsyLWRldmVsDQoNCg==