From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=40.92.2.109; helo=nam01-sn1-obe.outbound.protection.outlook.com; envelope-from=vanjeff_919@hotmail.com; receiver=edk2-devel@lists.01.org Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-oln040092002109.outbound.protection.outlook.com [40.92.2.109]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id EFFEF20945BDC for ; Tue, 31 Oct 2017 19:55:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hotmail.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=IQdE/DoiWN7ROEGQB5lQuU/Q9S8JCZBRe/4aFQKufzA=; b=peMHrjXteDs1KNEpW9asmi0qMnMVsZKOkqZ4rdAq0iFcwXfpNC9mmbDOrJJh9yclJahKGuEJZFL5EpSHS5nbKMbYUz8mpjnBmm6WS3QaSt29FOjCkC+5xggAiB6AExUKRTUWHjETuwiG6RffAlEX+76Ii2mlsTdVXZIwBXrcqWU5m4+cIUnsTGvfcnL5yCEOwlNkFTgSzsBkl+0oxl8YKvnrnD2Z4wVEPSxPOJYeu4b7CuStECP0VBEpL5Sspzomm5Z9Gc3XqeAaZyMrZwOYvHSUjQlB43H9RrsO1kZIBDJaXOwRgS38GOrJHGNtRuSwbeQxRyT0sT1QJJxvs0IuxA== Received: from BY2NAM01FT009.eop-nam01.prod.protection.outlook.com (10.152.68.58) by BY2NAM01HT229.eop-nam01.prod.protection.outlook.com (10.152.68.176) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.20.178.5; Wed, 1 Nov 2017 02:59:25 +0000 Received: from CY1PR19MB0283.namprd19.prod.outlook.com (10.152.68.51) by BY2NAM01FT009.mail.protection.outlook.com (10.152.68.88) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.178.5 via Frontend Transport; Wed, 1 Nov 2017 02:59:25 +0000 Received: from CY1PR19MB0283.namprd19.prod.outlook.com ([10.163.54.13]) by CY1PR19MB0283.namprd19.prod.outlook.com ([10.163.54.13]) with mapi id 15.20.0178.014; Wed, 1 Nov 2017 02:59:25 +0000 From: Fan Jeff To: "Wang, Jian J" , "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: AQHTUrSw3pJrU3cRZEmMYx4YdaVISaL+y3RDgAAG1oCAAAFSOA== Date: Wed, 1 Nov 2017 02:59:25 +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: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-incomingtopheadermarker: OriginalChecksum:ECE42191EC76A462B0D74A5EC8BBFDB13231AD1374CA81B1644574CD6EAC7053; UpperCasedChecksum:2FC4CA60FC722C2D184D0A053EDE2D87F8141112F1BE5E954EAEB849E18DEF3F; SizeAsReceived:7608; Count:47 x-ms-exchange-messagesentrepresentingtype: 1 x-tmn: [5lNcq9IJxn4s/gDKTkflrHe9n0JZ8PC/] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; BY2NAM01HT229; 6:rU0eRDucB7SzSyBNQ7qVQNSCAKOSRxhtcMC6sw9xaYClMWYaqtWs3Sigc+8+YtmNP+27I7ImF+nVDAyx+AX4dBKvjDJqvz1ZtjQ5Zxgk7YzIv9pTx19BO4MiCcWlV2UNnn+3Za9jcCWkxI4XAT8bfYQZXXcpjAuJ9e+CqlxH7QHuT2yYP/YtfQEaRBHrw6C+aiI1pVacb7EKTe2P/3wkZW1iV6BP439QEqykli/lQJIWBEqZQMTybHvbN9IWlEDb/hzp1QM5TtB4zknUzGpgD0OOaHKFxqf5NZiewKnayNt6bZUOCDTbB38rVbPXFTD+JA42P1I3VZTzKEkJXsjkNm6QmJz65Wdbxn+tAdcVfSM=; 5:2NZTXv+R0eBNnc4AfrwJTP4RuzjVBlzU0rCFIPCPHPeU+0vXrXX/WJSNz1EbYjbO1nrK243mc6oOYqVJhdKte8nVN1yvuem5i2YnG1FlvI4/nXsm1tBT6eOigo95Z+FpUUYwsvclmurC7CV9CVtCFCDWQ96sSRMilcVpjZIueX0=; 24:oSNIGH2qZNRDBXTzjlJ0nqDFAjPR3ew+DwwLdblwUM8M1apSWX9A3AiDxb3ARdF0swyBta0sNQI+ljHP2afYq3tpP8f4I9GrbV/t/Pjfzk4=; 7:te/qfdSMCiwGLjJ8TdU9a4dBTj3C1b0+b9/DSpsOfaX2ed0jTJrykQV29hQPvfCbGIl/roNpl0ba51GV2l1T3YBAxE8/q55YHR643iWStiIjEAJRQ3guNrxMo2dSLphyfIwdjEnmU0upZx0McmlX9f2SZUpvdHU5lZyigJnWLOTzF0yztzER/36wm7DLSjSbIVhzAcBh0rBIVRI/QdAczkUZsFiHSF53evENJxvUYuK9owvtohffDuSw53cmf7rj x-incomingheadercount: 47 x-eopattributedmessage: 0 x-ms-office365-filtering-correlation-id: 273716c5-a4b0-4839-b8d5-08d520d48f6a x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201702061074)(5061506573)(5061507331)(1603103135)(2017031320274)(2017031324274)(2017031323274)(2017031322404)(1601125374)(1603101448)(1701031045); SRVR:BY2NAM01HT229; x-ms-traffictypediagnostic: BY2NAM01HT229: authentication-results: outbound.protection.outlook.com; spf=skipped (originating message); dkim=none (message not signed) header.d=none; dmarc=none action=none header.from=hotmail.com; x-exchange-antispam-report-test: UriScan:(788757137089)(162533806227266)(194151415913766)(21748063052155)(228905959029699); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(444000031); SRVR:BY2NAM01HT229; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2NAM01HT229; x-forefront-prvs: 0478C23FE0 x-forefront-antispam-report: SFV:NSPM; SFS:(7070007)(98901004); DIR:OUT; SFP:1901; SCL:1; SRVR:BY2NAM01HT229; H:CY1PR19MB0283.namprd19.prod.outlook.com; FPR:; SPF:None; LANG:; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: hotmail.com X-MS-Exchange-CrossTenant-Network-Message-Id: 273716c5-a4b0-4839-b8d5-08d520d48f6a X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Nov 2017 02:59:25.2678 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Internet X-MS-Exchange-CrossTenant-id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2NAM01HT229 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 Subject: =?UTF-8?B?562U5aSNOiBbUEFUQ0ggMy8zXSBVZWZpQ3B1UGtnL0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWI6IEFkZCBzdGFjayBzd2l0Y2ggc3VwcG9ydA==?= 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:55:36 -0000 Content-Language: zh-CN Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 SmlhbiwNCg0KTm8uIEkgc3VnZ2VzdCB0byBmaXggIzEwOSBpbiBhbm90aGVyIHNlcGFyYXRlIHBh dGNoLg0KDQpCdXQgdG8gZml4ICMxMDksIHdlIGhhdmUgdG8gbWFrZXMgc3VyZSBBc21Xcml0ZVRy KCkgYW5kIHNvbWUgZGVmaW5pdGlvbnMgYXJlIGluIE1kZVBrZy4NCkJ1dCBJIGhhdmUgbm8gc3Ry b25nIG9waW5pb24gdG8gYWRkIHRoZW0gaW50byBNZGVQa2cgaW4gdGhpcyBwYXRjaC4NCg0KSSBo YXZlIGFub3RoZXIgcXVlc3Rpb246IElmIE5VTEwgQ1BVIGV4Y2VwdGlvbiBoYW5kbGVyIGluc3Rh bmNlIGlzIGNob3NlbiwgY291bGQgU3RhY2sgU3dpdGNoIHdvcmsgaWYgUENEIFBjZENwdVN0YWNr R3VhcmQgaXMgc2V0IHRvIFRSVUUuDQoNClRoYW5rcyENCkplZmYNCg0Kt6K8/sjLOiBXYW5nLCBK aWFuIEo8bWFpbHRvOmppYW4uai53YW5nQGludGVsLmNvbT4NCreiy83KsbzkOiAyMDE3xOoxMdTC McjVIDEwOjQ4DQrK1bz+yMs6IEZhbiBKZWZmPG1haWx0bzp2YW5qZWZmXzkxOUBob3RtYWlsLmNv bT47IFlhbywgSmlld2VuPG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbT47IGVkazItZGV2ZWxA bGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4NCrOty806IEtpbm5l eSwgTWljaGFlbCBEPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IERvbmcsIEVy aWM8bWFpbHRvOmVyaWMuZG9uZ0BpbnRlbC5jb20+OyBaZW5nLCBTdGFyPG1haWx0bzpzdGFyLnpl bmdAaW50ZWwuY29tPg0K1vfM4jogUkU6IFtQQVRDSCAzLzNdIFVlZmlDcHVQa2cvQ3B1RXhjZXB0 aW9uSGFuZGxlckxpYjogQWRkIHN0YWNrIHN3aXRjaCBzdXBwb3J0DQoNCkhpIEplZmYsDQoNClRo YW5rcyBmb3IgdGhlIGZlZWRiYWNrLiBBcmUgeW91IHN1Z2dlc3RpbmcgdG8gZml4IEJ1Z3ppbGxh IDEwOSBpbiB0aGlzIHBhdGNoPw0KDQpUaGFua3MsDQpKaWFuDQoNCkZyb206IEZhbiBKZWZmIFtt YWlsdG86dmFuamVmZl85MTlAaG90bWFpbC5jb21dDQpTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVy IDAxLCAyMDE3IDEwOjMzIEFNDQpUbzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29t PjsgV2FuZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3Rz LjAxLm9yZw0KQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT47IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBaZW5nLCBTdGFyIDxzdGFyLnpl bmdAaW50ZWwuY29tPg0KU3ViamVjdDogtPC4tDogW1BBVENIIDMvM10gVWVmaUNwdVBrZy9DcHVF eGNlcHRpb25IYW5kbGVyTGliOiBBZGQgc3RhY2sgc3dpdGNoIHN1cHBvcnQNCg0KUGVyIGh0dHBz Oi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA5LCBUUiBzaG91bGQg YmUgc2V0dXAgKFN1Y2ggYXMgaW4gRHhlSXBsUGVpbSkgZXZlbiB0aG91Z2ggTlVMTCBDcHUgRXhj ZXB0aW9uIEhhbmRsZXIgaW5zdGFuY2UgaXMgY2hvc2VuLg0KDQpGb3IgbG9uZyB0ZXJtLCBJIGFn cmVlIHdlIG5lZWQgdG8gbW92ZSBBc21Xcml0ZVRyLCBJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVCwg SUEzMl9UU1NfREVTQ1JJUFRPUiB0byBNZGVQa2coU3VjaCBhcyBCYXNlTGliKQ0KRm9yIHRoaXMg cGF0Y2gsIEkgaGF2ZSBubyBzdHJvbmcgb3Bpbmlvbi4NCg0KDQq3orz+yMs6IFlhbywgSmlld2Vu PG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbT4NCreiy83KsbzkOiAyMDE3xOoxMdTCMcjVIDk6 NTYNCsrVvP7IyzogV2FuZywgSmlhbiBKPG1haWx0bzpqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBl ZGsyLWRldmVsQGxpc3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+DQqz rcvNOiBLaW5uZXksIE1pY2hhZWwgRDxtYWlsdG86bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ OyBEb25nLCBFcmljPG1haWx0bzplcmljLmRvbmdAaW50ZWwuY29tPjsgWmVuZywgU3RhcjxtYWls dG86c3Rhci56ZW5nQGludGVsLmNvbT4NCtb3zOI6IFJlOiBbZWRrMl0gW1BBVENIIDMvM10gVWVm aUNwdVBrZy9DcHVFeGNlcHRpb25IYW5kbGVyTGliOiBBZGQgc3RhY2sgc3dpdGNoIHN1cHBvcnQN Cg0KSGkgSmlhbg0KVGhhbmtzIGZvciB0aGUgcGF0Y2guDQoNCkNhbiB3ZSBtb3ZlIGFsbCBJQTMy IGRlZmluZWQgZGF0YSBzdHJ1Y3R1cmUgb3IgZnVuY3Rpb24gdG8gTWRlUGtnPw0KU3VjaCBhczog QXNtV3JpdGVUciwgSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQsIElBMzJfVFNTX0RFU0NSSVBUT1IN Cg0KSSBhbSBhbHNvIGN1cmlvdXMgd2h5IHdlIHVzZSBkaWZmZXJlbnQgcG9saWN5IGZvciBvdGhl ciBib290IG1vZGUuDQpDYW4gd2UgdXNlIGNvbnNpc3RlbnQgcG9saWN5Pw0KPiArICBpZiAoUGNk R2V0Qm9vbCAoUGNkQ3B1U3RhY2tHdWFyZCkpIHsNCj4gKyAgICAvLw0KPiArICAgIC8vIFN0YWNr IEd1YXJkIHdvcmtzIHdpdGggdGhlIHN1cHBvcnQgb2YgcGFnZSB0YWJsZSBlc3RhYmxpc2hlZCBh bmQNCj4gKyAgICAvLyBtZW1vcnkgbWFuYWdlbWVudC4gU28gd2UgaGF2ZSB0byBleGNsdWRlIHRo b3NlIGJvb3QgbW9kZXMNCj4gd2l0aG91dA0KPiArICAgIC8vIHRoZW0uDQo+ICsgICAgLy8NCj4g KyAgICBzd2l0Y2ggKEdldEJvb3RNb2RlSG9iKCkpIHsNCj4gKyAgICBjYXNlIEJPT1RfT05fRkxB U0hfVVBEQVRFOg0KPiArICAgIGNhc2UgQk9PVF9JTl9SRUNPVkVSWV9NT0RFOg0KPiArICAgIGNh c2UgQk9PVF9PTl9TM19SRVNVTUU6DQo+ICsgICAgICBicmVhazsNCj4gKw0KPiArICAgIGRlZmF1 bHQ6DQo+ICsgICAgICBBcmNoU2V0dXBFeGNwZXRpb25TdGFjayAoSWR0VGFibGUpOw0KPiArICAg ICAgYnJlYWs7DQo+ICsgICAgfQ0KPiArICB9DQoNCg0KVGhhbmsgeW91DQpZYW8gSmlld2VuDQoN Cg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBXYW5nLCBKaWFuIEoNCj4g U2VudDogVHVlc2RheSwgT2N0b2JlciAzMSwgMjAxNyAxMDoyNCBQTQ0KPiBUbzogZWRrMi1kZXZl bEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPg0KPiBDYzogWmVu ZywgU3RhciA8c3Rhci56ZW5nQGludGVsLmNvbTxtYWlsdG86c3Rhci56ZW5nQGludGVsLmNvbT4+ OyBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPG1haWx0bzplcmljLmRvbmdAaW50ZWwu Y29tPj47IFlhbywNCj4gSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbTxtYWlsdG86amlld2Vu Lnlhb0BpbnRlbC5jb20+PjsgS2lubmV5LCBNaWNoYWVsIEQNCj4gPG1pY2hhZWwuZC5raW5uZXlA aW50ZWwuY29tPG1haWx0bzptaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4+DQo+IFN1YmplY3Q6 IFtQQVRDSCAzLzNdIFVlZmlDcHVQa2cvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYjogQWRkIHN0YWNr IHN3aXRjaA0KPiBzdXBwb3J0DQo+DQo+IElmIFN0YWNrIEd1YXJkIGlzIGVuYWJsZWQgYW5kIHRo ZXJlJ3MgcmVhbGx5IGEgc3RhY2sgb3ZlcmZsb3cgaGFwcGVuZWQgZHVyaW5nDQo+IGJvb3QsIGEg UGFnZSBGYXVsdCBleGNlcHRpb24gd2lsbCBiZSB0cmlnZ2VyZWQuIEJlY2F1c2UgdGhlIHN0YWNr IGlzIG91dCBvZg0KPiB1c2FnZSwgdGhlIGV4Y2VwdGlvbiBoYW5kbGVyLCB3aGljaCBzaGFyZXMg dGhlIHN0YWNrIHdpdGggbm9ybWFsIFVFRkkgZHJpdmVyLA0KPiBjYW5ub3QgYmUgZXhlY3V0ZWQg YW5kIGNhbm5vdCBkdW1wIHRoZSBwcm9jZXNzb3IgaW5mb3JtYXRpb24uDQo+DQo+IFdpdGhvdXQg dGhvc2UgaW5mb3JtYXRpb24sIGl0J3MgdmVyeSBkaWZmaWN1bHQgZm9yIHRoZSBCSU9TIGRldmVs b3BlcnMgbG9jYXRlDQo+IHRoZSByb290IGNhdXNlIG9mIHN0YWNrIG92ZXJmbG93LiBBbmQgd2l0 aG91dCBhIHdvcmthYmxlIHN0YWNrLCB0aGUgZGV2ZWxvcGVyDQo+IGNhbm5vdCBldmVudCB1c2Ug c2luZ2xlIHN0ZXAgdG8gZGVidWcgdGhlIFVFRkkgZHJpdmVyIHdpdGggSlRBRyBkZWJ1Z2dlci4N Cj4NCj4gSW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoZSBleGNlcHRpb24gaGFuZGxlciB0byBleGVj dXRlIG5vcm1hbGx5IGFmdGVyIHN0YWNrDQo+IG92ZXJmbG93LiBXZSBuZWVkIHNlcGFyYXRlIHN0 YWNrcyBmb3IgZXhjZXB0aW9uIGhhbmRsZXJzIGluIGNhc2Ugb2YgdW51c2FibGUNCj4gc3RhY2su DQo+DQo+IElBIHByb2Nlc3NvciBhbGxvd3MgdG8gc3dpdGNoIHRvIGEgbmV3IHN0YWNrIGR1cmlu ZyBoYW5kbGluZyBpbnRlcnJ1cHQgYW5kDQo+IGV4Y2VwdGlvbi4gQnV0IFg2NCBhbmQgSUEzMiBw cm92aWRlcyBkaWZmZXJlbnQgd2F5cyB0byBtYWtlIGl0LiBYNjQgcHJvdmlkZXMNCj4gaW50ZXJy dXB0IHN0YWNrIHRhYmxlIChJU1QpIHRvIGFsbG93IG1heGltdW0gNyBkaWZmZXJlbnQgZXhjZXB0 aW9ucyB0byBoYXZlDQo+IG5ldyBzdGFjayBmb3IgaXRzIGhhbmRsZXIuIElBMzIgZG9lc24ndCBo YXZlIElTVCBtZWNoYW5pc20gYW5kIGNhbiBvbmx5IHVzZQ0KPiB0YXNrIGdhdGUgdG8gZG8gaXQg c2luY2UgdGFzayBzd2l0Y2ggYWxsb3dzIHRvIGxvYWQgYSBuZXcgc3RhY2sgdGhyb3VnaCBpdHMN Cj4gdGFzay1zdGF0ZSBzZWdtZW50IChUU1MpLg0KPg0KPiBOb3RlOiBTdGFjayBzd2l0Y2ggbmVl ZHMgdG8gYWxsb2NhdGUgbWVtb3J5IHBhZ2VzIHRvIGJlIG5ldyBzdGFja3MuIFNvIHRoaXMNCj4g ICAgICAgZnVuY3Rpb25hbGl0eSB3b3JrcyBvbmx5IGluIHRoZSBib290IHBoYXNlcyBjYXBhYmxl IG9mIG1lbW9yeQ0KPiAgICAgICBhbGxvY2F0aW9uIChiZXNpZGVzIHRoZSBwYWdpbmcsIGZvciB0 aGUgc2FrZSBvZiBTdGFjayBHdWFyZCkuIEluDQo+ICAgICAgIG90aGVyIHdvcmRzLCBvbmx5IERY RSBwaGFzZSBjYW4gc3VwcG9ydHMgU3RhY2sgR3VhcmQgd2l0aCBzdGFjayBzd2l0Y2guDQo+DQo+ IENjOiBTdGFyIFplbmcgPHN0YXIuemVuZ0BpbnRlbC5jb208bWFpbHRvOnN0YXIuemVuZ0BpbnRl bC5jb20+Pg0KPiBDYzogRXJpYyBEb25nIDxlcmljLmRvbmdAaW50ZWwuY29tPG1haWx0bzplcmlj LmRvbmdAaW50ZWwuY29tPj4NCj4gQ2M6IEppZXdlbiBZYW8gPGppZXdlbi55YW9AaW50ZWwuY29t PG1haWx0bzpqaWV3ZW4ueWFvQGludGVsLmNvbT4+DQo+IENjOiBNaWNoYWVsIEtpbm5leSA8bWlj aGFlbC5kLmtpbm5leUBpbnRlbC5jb208bWFpbHRvOm1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pj4NCj4gU3VnZ2VzdGVkLWJ5OiBBeWVsbGV0IFdvbG1hbiA8YXllbGxldC53b2xtYW5AaW50ZWwu Y29tPG1haWx0bzpheWVsbGV0LndvbG1hbkBpbnRlbC5jb20+Pg0KPiBDb250cmlidXRlZC11bmRl cjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+IFNpZ25lZC1vZmYtYnk6 IEppYW4gSiBXYW5nIDxqaWFuLmoud2FuZ0BpbnRlbC5jb208bWFpbHRvOmppYW4uai53YW5nQGlu dGVsLmNvbT4+DQo+IC0tLQ0KPiAgLi4uL0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvQ3B1RXhjZXB0 aW9uQ29tbW9uLmggICAgfCAgMjIgKysNCj4gIC4uLi9EeGVDcHVFeGNlcHRpb25IYW5kbGVyTGli LmluZiAgICAgICAgICAgICAgICAgIHwgICA1ICsNCj4gIC4uLi9MaWJyYXJ5L0NwdUV4Y2VwdGlv bkhhbmRsZXJMaWIvRHhlRXhjZXB0aW9uLmMgIHwgIDE5ICsNCj4gIC4uLi9JYTMyL0FyY2hFeGNl cHRpb25IYW5kbGVyLmMgICAgICAgICAgICAgICAgICAgIHwgMTM1ICsrKysrKysNCj4gIC4uLi9J YTMyL0FyY2hJbnRlcnJ1cHREZWZzLmggICAgICAgICAgICAgICAgICAgICAgIHwgMTM2ICsrKysr KysNCj4gIC4uLi9JYTMyL0V4Y2VwdGlvblRzc0VudHJ5QXNtLm5hc20gICAgICAgICAgICAgICAg IHwgMzk4DQo+ICsrKysrKysrKysrKysrKysrKysrKw0KPiAgLi4uL1BlaUNwdUV4Y2VwdGlvbkhh bmRsZXJMaWIuaW5mICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAgLi4uL1NlY1BlaUNwdUV4 Y2VwdGlvbkhhbmRsZXJMaWIuaW5mICAgICAgICAgICAgICAgfCAgIDMgKw0KPiAgLi4uL1NtbUNw dUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mICAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiAgLi4u L1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxlci5jICAgICAgICAgICAgICAgICAgICAgfCAxMDggKysr KysrDQo+ICAuLi4vQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaEludGVycnVwdERlZnMu aCB8ICA0MCArKysNCj4gIC4uLi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5TICAgICAgICAgICAg ICAgICAgICAgIHwgIDEyICsNCj4gIC4uLi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5hc20gICAg ICAgICAgICAgICAgICAgIHwgIDEyICsNCj4gIC4uLi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5u YXNtICAgICAgICAgICAgICAgICAgIHwgIDEyICsNCj4gIDE0IGZpbGVzIGNoYW5nZWQsIDkwNCBp bnNlcnRpb25zKCspDQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gVWVmaUNwdVBrZy9MaWJyYXJ5 L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9FeGNlcHRpb25Uc3NFbnRyeUFzbS5uYXNtDQo+ DQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxl ckxpYi9DcHVFeGNlcHRpb25Db21tb24uaA0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNl cHRpb25IYW5kbGVyTGliL0NwdUV4Y2VwdGlvbkNvbW1vbi5oDQo+IGluZGV4IDc0MGE1ODgyOGIu LmZkNGEyNmE0NTggMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRp b25IYW5kbGVyTGliL0NwdUV4Y2VwdGlvbkNvbW1vbi5oDQo+ICsrKyBiL1VlZmlDcHVQa2cvTGli cmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0NwdUV4Y2VwdGlvbkNvbW1vbi5oDQo+IEBAIC0y NSw2ICsyNSw3IEBADQo+ICAjaW5jbHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ICAj aW5jbHVkZSA8TGlicmFyeS9TeW5jaHJvbml6YXRpb25MaWIuaD4NCj4gICNpbmNsdWRlIDxMaWJy YXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaD4NCj4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9y eUFsbG9jYXRpb25MaWIuaD4NCj4NCj4gICNkZWZpbmUgIENQVV9FWENFUFRJT05fTlVNICAgICAg ICAgIDMyDQo+ICAjZGVmaW5lICBDUFVfSU5URVJSVVBUX05VTSAgICAgICAgIDI1Ng0KPiBAQCAt Mjg4LDUgKzI4OSwyNiBAQCBDb21tb25FeGNlcHRpb25IYW5kbGVyV29ya2VyICgNCj4gICAgSU4g RVhDRVBUSU9OX0hBTkRMRVJfREFUQSAgICAgICpFeGNlcHRpb25IYW5kbGVyRGF0YQ0KPiAgICAp Ow0KPg0KPiArLyoqDQo+ICsgIExvYWQgZ2l2ZW4gc2VsZWN0b3IgaW50byBUUiByZWdpc3Rlcg0K PiArDQo+ICsgIEBwYXJhbSBTZWxlY3RvciAgICAgICAgIFRhc2sgc2VnbWVudCBzZWxlY3Rvcg0K PiArKiovDQo+ICtWT0lEDQo+ICtBc21Xcml0ZVRyICgNCj4gKyAgVUlOVDE2IFNlbGVjdG9yDQo+ ICsgICk7DQo+ICsNCj4gKy8qKg0KPiArICBTZXR1cCBzZXBhcmF0ZSBzdGFjayBmb3Igc3BlY2lm aWMgZXhjZXB0aW9ucy4NCj4gKw0KPiArICBAcGFyYW1baW5dIElkdFRhYmxlICAgICAgICBJRFQg dGFibGUgYmFzZS4NCj4gKyoqLw0KPiArVk9JRA0KPiArRUZJQVBJDQo+ICtBcmNoU2V0dXBFeGNw ZXRpb25TdGFjayAoDQo+ICsgIElOIElBMzJfSURUX0dBVEVfREVTQ1JJUFRPUiAgICAgICAgICAg KklkdFRhYmxlDQo+ICsgICk7DQo+ICsNCj4gICNlbmRpZg0KPg0KPiBkaWZmIC0tZ2l0DQo+IGEv VWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvRHhlQ3B1RXhjZXB0aW9u SGFuZGxlckxpYi5pbmYNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxl ckxpYi9EeGVDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiBpbmRleCBmNGE4ZDAxYzgwLi5i MDk5ZWY0ZGFkIDEwMDY0NA0KPiAtLS0NCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0 aW9uSGFuZGxlckxpYi9EeGVDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiArKysNCj4gYi9V ZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9EeGVDcHVFeGNlcHRpb25I YW5kbGVyTGliLmluZg0KPiBAQCAtMzAsNiArMzAsNyBAQA0KPiAgW1NvdXJjZXMuSWEzMl0NCj4g ICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLmFzbQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRs ZXJBc20ubmFzbQ0KPiArICBJYTMyL0V4Y2VwdGlvblRzc0VudHJ5QXNtLm5hc20NCj4gICAgSWEz Mi9FeGNlcHRpb25IYW5kbGVyQXNtLlMNCj4gICAgSWEzMi9BcmNoRXhjZXB0aW9uSGFuZGxlci5j DQo+ICAgIElhMzIvQXJjaEludGVycnVwdERlZnMuaA0KPiBAQCAtNDcsNiArNDgsOSBAQA0KPiAg ICBQZWlEeGVTbW1DcHVFeGNlcHRpb24uYw0KPiAgICBEeGVFeGNlcHRpb24uYw0KPg0KPiArW1Bj ZF0NCj4gKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENwdVN0YWNrR3VhcmQN Cj4gKw0KPiAgW1BhY2thZ2VzXQ0KPiAgICBNZGVQa2cvTWRlUGtnLmRlYw0KPiAgICBNZGVNb2R1 bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiBAQCAtNjEsMyArNjUsNCBAQA0KPiAgICBQZUNvZmZH ZXRFbnRyeVBvaW50TGliDQo+ICAgIE1lbW9yeUFsbG9jYXRpb25MaWINCj4gICAgRGVidWdMaWIN Cj4gKyAgSG9iTGliDQo+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0 aW9uSGFuZGxlckxpYi9EeGVFeGNlcHRpb24uYw0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVF eGNlcHRpb25IYW5kbGVyTGliL0R4ZUV4Y2VwdGlvbi5jDQo+IGluZGV4IDMxZmViZWM5NzYuLmU5 ZGNkMDBlMDIgMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25I YW5kbGVyTGliL0R4ZUV4Y2VwdGlvbi5jDQo+ICsrKyBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVF eGNlcHRpb25IYW5kbGVyTGliL0R4ZUV4Y2VwdGlvbi5jDQo+IEBAIC0xNiw2ICsxNiw3IEBADQo+ ICAjaW5jbHVkZSAiQ3B1RXhjZXB0aW9uQ29tbW9uLmgiDQo+ICAjaW5jbHVkZSA8TGlicmFyeS9E ZWJ1Z0xpYi5oPg0KPiAgI2luY2x1ZGUgPExpYnJhcnkvTWVtb3J5QWxsb2NhdGlvbkxpYi5oPg0K PiArI2luY2x1ZGUgPExpYnJhcnkvSG9iTGliLmg+DQo+DQo+ICBDT05TVCBVSU5UTiAgICBtRG9G YXJSZXR1cm5GbGFnICA9IDA7DQo+DQo+IEBAIC0xNTUsNiArMTU2LDI0IEBAIEluaXRpYWxpemVD cHVJbnRlcnJ1cHRIYW5kbGVycyAoDQo+DQo+ICAgIFVwZGF0ZUlkdFRhYmxlIChJZHRUYWJsZSwg JlRlbXBsYXRlTWFwLCAmbUV4Y2VwdGlvbkhhbmRsZXJEYXRhKTsNCj4NCj4gKyAgaWYgKFBjZEdl dEJvb2wgKFBjZENwdVN0YWNrR3VhcmQpKSB7DQo+ICsgICAgLy8NCj4gKyAgICAvLyBTdGFjayBH dWFyZCB3b3JrcyB3aXRoIHRoZSBzdXBwb3J0IG9mIHBhZ2UgdGFibGUgZXN0YWJsaXNoZWQgYW5k DQo+ICsgICAgLy8gbWVtb3J5IG1hbmFnZW1lbnQuIFNvIHdlIGhhdmUgdG8gZXhjbHVkZSB0aG9z ZSBib290IG1vZGVzDQo+IHdpdGhvdXQNCj4gKyAgICAvLyB0aGVtLg0KPiArICAgIC8vDQo+ICsg ICAgc3dpdGNoIChHZXRCb290TW9kZUhvYigpKSB7DQo+ICsgICAgY2FzZSBCT09UX09OX0ZMQVNI X1VQREFURToNCj4gKyAgICBjYXNlIEJPT1RfSU5fUkVDT1ZFUllfTU9ERToNCj4gKyAgICBjYXNl IEJPT1RfT05fUzNfUkVTVU1FOg0KPiArICAgICAgYnJlYWs7DQo+ICsNCj4gKyAgICBkZWZhdWx0 Og0KPiArICAgICAgQXJjaFNldHVwRXhjcGV0aW9uU3RhY2sgKElkdFRhYmxlKTsNCj4gKyAgICAg IGJyZWFrOw0KPiArICAgIH0NCj4gKyAgfQ0KPiArDQo+ICAgIC8vDQo+ICAgIC8vIExvYWQgSW50 ZXJydXB0IERlc2NyaXB0b3IgVGFibGUNCj4gICAgLy8NCj4gZGlmZiAtLWdpdA0KPiBhL1VlZmlD cHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lhMzIvQXJjaEV4Y2VwdGlvbkhh bmRsZXIuYw0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lh MzIvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiBpbmRleCBmMmMzOWViMTkzLi4zZDQxZGY3NWE1 IDEwMDY0NA0KPiAtLS0gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxp Yi9JYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gKysrDQo+IGIvVWVmaUNwdVBrZy9MaWJy YXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+ IEBAIC0xNCw2ICsxNCwxOSBAQA0KPg0KPiAgI2luY2x1ZGUgIkNwdUV4Y2VwdGlvbkNvbW1vbi5o Ig0KPg0KPiArLy8NCj4gKy8vIExpc3Qgb2YgZXhjZXB0aW9ucyBuZWVkaW5nIHNlcGFyYXRlIHN0 YWNrDQo+ICsvLw0KPiArU1RBVElDIElBMzJfRVhDRVBUSU9OX1RTX0VOVFJZIG1FeGNlcHRpb25z V2l0aFN0YWNrW10gPSB7DQo+ICsgIHs2LCAgRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5Nn0sICAv LyNVRDogSW52YWxpZCBPcGNvZGUgRXhjZXB0aW9uDQo+ICsgIHs4LCAgRXhjZXB0aW9uVGFza1N3 dGljaEVudHJ5OH0sICAvLyNERjogRG91YmxlIEZhdWx0IEV4Y2VwdGlvbg0KPiArICB7MTIsIEV4 Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTEyfSwgLy8jU1M6IFN0YWNrIEZhdWx0IEV4Y2VwdGlvbg0K PiArICB7MTMsIEV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeTEzfSwgLy8jR1A6IEdlbmVyYWwgUHJv dGVjdGlvbiBFeGNlcHRpb24NCj4gKyAgezE0LCBFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkxNH0s IC8vI1BGOiBQYWdlLUZhdWx0IEV4Y2VwdGlvbg0KPiArICB7MTcsIEV4Y2VwdGlvblRhc2tTd3Rp Y2hFbnRyeTE3fSwgLy8jQUM6IEFsaWdubWVudCBDaGVjayBFeGNlcHRpb24NCj4gKyAgezE4LCBF eGNlcHRpb25UYXNrU3d0aWNoRW50cnkxOH0gIC8vI01DOiBNYWNoaW5lLUNoZWNrIEV4Y2VwdGlv bg0KPiArfTsNCj4gKw0KPiAgLyoqDQo+ICAgIFJldHVybiBhZGRyZXNzIG1hcCBvZiBleGNlcHRp b24gaGFuZGxlciB0ZW1wbGF0ZSBzbyB0aGF0IEMgY29kZSBjYW4NCj4gZ2VuZXJhdGUNCj4gICAg ZXhjZXB0aW9uIHRhYmxlcy4NCj4gQEAgLTEwNyw2ICsxMjAsMTI4IEBAIEFyY2hSZXN0b3JlRXhj ZXB0aW9uQ29udGV4dCAoDQo+ICAgIFN5c3RlbUNvbnRleHQuU3lzdGVtQ29udGV4dElhMzItPkV4 Y2VwdGlvbkRhdGEgPQ0KPiBSZXNlcnZlZFZlY3RvcnNbRXhjZXB0aW9uVHlwZV0uRXhjZXB0aW9u RGF0YTsNCj4gIH0NCj4NCj4gKy8qKg0KPiArICBTZXR1cCBzZXBhcmF0ZSBzdGFjayBmb3Igc3Bl Y2lmaWMgZXhjZXB0aW9ucy4NCj4gKw0KPiArICAgQHBhcmFtW2luXSBJZHRUYWJsZSAgICAgICAg SURUIHRhYmxlIGJhc2UuDQo+ICsqKi8NCj4gK1ZPSUQNCj4gK0VGSUFQSQ0KPiArQXJjaFNldHVw RXhjcGV0aW9uU3RhY2sgKA0KPiArICBJTiBJQTMyX0lEVF9HQVRFX0RFU0NSSVBUT1IgICAgICAg ICAgICpJZHRUYWJsZQ0KPiArICApDQo+ICt7DQo+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAg ICAgKk5ld0dkdDsNCj4gKyAgSUEzMl9ERVNDUklQVE9SICAgICAgICAgICBHZHREZXNjOw0KPiAr ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIE9sZEdkdFNpemU7DQo+ICsgIFRTU19FTlRSSUVT ICAgICAgICAgICAgICAgKlRzc0VudHJ5Ow0KPiArICBJQTMyX1RTU19ERVNDUklQVE9SICAgICAg ICpUc3NEZXNjOw0KPiArICBJQTMyX1RBU0tfU1RBVEVfU0VHTUVOVCAgICpUc3M7DQo+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgU3RhY2tCYXNlOw0KPiArICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgIFN0YWNrVG9wOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFN0YWNr U2l6ZTsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBJbmRleDsNCj4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICBWZWN0b3I7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAg ICAgVHNzQmFzZTsNCj4gKw0KPiArICAvLw0KPiArICAvLyBBbGxvY2F0ZSBSdW50aW1lIERhdGEg Zm9yIHRoZSBHRFQNCj4gKyAgLy8NCj4gKyAgQXNtUmVhZEdkdHIoJkdkdERlc2MpOw0KPiArICBP bGRHZHRTaXplID0gR2R0RGVzYy5MaW1pdCArIDE7DQo+ICsgIE5ld0dkdCA9IEFsbG9jYXRlUnVu dGltZVplcm9Qb29sKE9sZEdkdFNpemUgKyBzaXplb2YoVFNTX0VOVFJJRVMpDQo+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgSUEzMl9HRFRfQUxJR05NRU5UKTsNCj4gKyAg aWYgKE5ld0dkdCA9PSBOVUxMKSB7DQo+ICsgICAgcmV0dXJuOw0KPiArICB9DQo+ICsgIE5ld0dk dCA9IEFMSUdOX1BPSU5URVIgKE5ld0dkdCwgSUEzMl9HRFRfQUxJR05NRU5UKTsNCj4gKw0KPiAr ICAvLw0KPiArICAvLyBJbml0aWFsaXplIG5ldyBHRFQgZW50cmllcw0KPiArICAvLw0KPiArICBD b3B5TWVtKE5ld0dkdCwgKFZPSUQgKilHZHREZXNjLkJhc2UsIE9sZEdkdFNpemUpOw0KPiArICBH ZHREZXNjLkJhc2UgPSAoVUlOVE4pKFZPSUQqKU5ld0dkdDsNCj4gKyAgR2R0RGVzYy5MaW1pdCA9 IChVSU5UMTYpKE9sZEdkdFNpemUgKyBUU1NfT0ZGU0VUIC0gMSk7DQo+ICsNCj4gKyAgLy8NCj4g KyAgLy8gUmVzZXJ2ZSBzdGF0Y2sgbWVtb3J5IGZvciBnaXZlbiBleGNlcHRpb25zDQo+ICsgIC8v DQo+ICsgIFN0YWNrU2l6ZSA9IEFSUkFZX1NJWkUgKG1FeGNlcHRpb25zV2l0aFN0YWNrKSAqIEVY Q0VQVElPTl9TVEFDS19TSVpFOw0KPiArICBTdGFja1NpemUgPSBFRklfUEFHRVNfVE9fU0laRSAo RUZJX1NJWkVfVE9fUEFHRVMgKFN0YWNrU2l6ZSkpOw0KPiArICBTdGFja0Jhc2UgPSAoVUlOVDY0 KShVSU5UTilBbGxvY2F0ZVBhZ2VzIChFRklfU0laRV9UT19QQUdFUw0KPiAoU3RhY2tTaXplKSk7 DQo+ICsgIGlmIChTdGFja0Jhc2UgPT0gMCkgew0KPiArICAgIEZyZWVQb29sIChOZXdHZHQpOw0K PiArICAgIHJldHVybjsNCj4gKyAgfQ0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEZpeHVwIFRTUyBk ZXNjcmlwdG9ycyBhbmQgc2VnbWVudHMNCj4gKyAgLy8NCj4gKyAgVHNzRW50cnkgPSAoVk9JRCAq KShHZHREZXNjLkJhc2UgKyBPbGRHZHRTaXplKTsNCj4gKw0KPiArICBUc3NCYXNlID0gKFVJTlRO KShWT0lEICopJlRzc0VudHJ5LT5Uc3M7DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuTGltaXQxNV8w ICAgICAgICAgICAgPQ0KPiBzaXplb2YoSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQpIC0gMTsNCj4g KyAgVHNzRW50cnktPlRzc1NlZy5CYXNlMTVfMCAgICAgICAgICAgICA9IChVSU5UMTYpVHNzQmFz ZTsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5CYXNlMjNfMTYgICAgICAgICAgICA9IChVSU5UOCko VHNzQmFzZSA+PiAxNik7DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuVHlwZSAgICAgICAgICAgICAg ICAgPSBJQTMyX0dEVF9UWVBFX1RTUzsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5MaW1pdDE5XzE2 X2FuZF9mbGFncyA9IDA7DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuQmFzZTMxXzI0ICAgICAgICAg ICAgPSAoVUlOVDgpKFRzc0Jhc2UgPj4gMjQpOw0KPiArDQo+ICsgIFN0YWNrVG9wICA9IFN0YWNr QmFzZSArIFN0YWNrU2l6ZSAtIENQVV9TVEFDS19BTElHTk1FTlQ7DQo+ICsgIFN0YWNrVG9wICA9 IChVSU5UTilBTElHTl9QT0lOVEVSIChTdGFja1RvcCwgQ1BVX1NUQUNLX0FMSUdOTUVOVCk7DQo+ ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IEFSUkFZX1NJWkUgKG1FeGNlcHRpb25zV2l0aFN0 YWNrKTsgKytJbmRleCkgew0KPiArICAgIC8vDQo+ICsgICAgLy8gRml4dXAgVFNTIGRlc2NyaXB0 b3INCj4gKyAgICAvLw0KPiArICAgIFRzc0Jhc2UgPSAoVUlOVE4pKFZPSUQgKikmVHNzRW50cnkt PkV4Y2VwdGlvblRzc1tJbmRleF07DQo+ICsgICAgVHNzRGVzYyA9ICZUc3NFbnRyeS0+RXhjZXB0 aW9uVHNzU2VnW0luZGV4XTsNCj4gKw0KPiArICAgIFRzc0Rlc2MtPkxpbWl0MTVfMCAgICAgICAg ICAgID0gc2l6ZW9mKElBMzJfVEFTS19TVEFURV9TRUdNRU5UKSAtIDE7DQo+ICsgICAgVHNzRGVz Yy0+QmFzZTE1XzAgICAgICAgICAgICAgPSAoVUlOVDE2KVRzc0Jhc2U7DQo+ICsgICAgVHNzRGVz Yy0+QmFzZTIzXzE2ICAgICAgICAgICAgPSAoVUlOVDgpKFRzc0Jhc2UgPj4gMTYpOw0KPiArICAg IFRzc0Rlc2MtPlR5cGUgICAgICAgICAgICAgICAgID0gSUEzMl9HRFRfVFlQRV9UU1M7DQo+ICsg ICAgVHNzRGVzYy0+TGltaXQxOV8xNl9hbmRfZmxhZ3MgPSAwOw0KPiArICAgIFRzc0Rlc2MtPkJh c2UzMV8yNCAgICAgICAgICAgID0gKFVJTlQ4KShUc3NCYXNlID4+IDI0KTsNCj4gKw0KPiArICAg IC8vDQo+ICsgICAgLy8gRml4dXAgVFNTDQo+ICsgICAgLy8NCj4gKyAgICBUc3MgPSAmVHNzRW50 cnktPkV4Y2VwdGlvblRzc1tJbmRleF07DQo+ICsgICAgVHNzLT5DUjMgICAgPSBBc21SZWFkQ3Iz KCk7DQo+ICsgICAgVHNzLT5FSVAgICAgPSAoVUlOVDMyKW1FeGNlcHRpb25zV2l0aFN0YWNrW0lu ZGV4XS5FbnRyeVBvaW50Ow0KPiArICAgIFRzcy0+RUZMQUdTID0gMHgyOw0KPiArICAgIFRzcy0+ RVNQICAgID0gU3RhY2tUb3A7DQo+ICsgICAgVHNzLT5FUyAgICAgPSBBc21SZWFkRXMoKTsNCj4g KyAgICBUc3MtPkNTICAgICA9IEFzbVJlYWRDcygpOw0KPiArICAgIFRzcy0+U1MgICAgID0gQXNt UmVhZFNzKCk7DQo+ICsgICAgVHNzLT5EUyAgICAgPSBBc21SZWFkRHMoKTsNCj4gKyAgICBUc3Mt PkZTICAgICA9IEFzbVJlYWRGcygpOw0KPiArICAgIFRzcy0+R1MgICAgID0gQXNtUmVhZEdzKCk7 DQo+ICsgICAgU3RhY2tUb3AgICAtPSBFWENFUFRJT05fU1RBQ0tfU0laRTsNCj4gKw0KPiArICAg IC8vDQo+ICsgICAgLy8gQ2hhbmdlIHNwZWNpZmllZCBleGNlcHRpb25zIGluIElEVCB0byB1c2Ug VFNTDQo+ICsgICAgLy8NCj4gKyAgICBWZWN0b3IgPSBtRXhjZXB0aW9uc1dpdGhTdGFja1tJbmRl eF0uVmVjdG9yOw0KPiArDQo+ICsgICAgSWR0VGFibGVbVmVjdG9yXS5CaXRzLk9mZnNldExvdyAg PSAwOw0KPiArICAgIElkdFRhYmxlW1ZlY3Rvcl0uQml0cy5TZWxlY3RvciAgID0gT2xkR2R0U2l6 ZSArDQo+IEVYQ0VQVElPTl9UU1NfU0VMKEluZGV4KTsNCj4gKyAgICBJZHRUYWJsZVtWZWN0b3Jd LkJpdHMuUmVzZXJ2ZWRfMCA9IDA7DQo+ICsgICAgSWR0VGFibGVbVmVjdG9yXS5CaXRzLkdhdGVU eXBlICAgPSBJQTMyX0lEVF9HQVRFX1RZUEVfVEFTSzsNCj4gKyAgICBJZHRUYWJsZVtWZWN0b3Jd LkJpdHMuT2Zmc2V0SGlnaCA9IDA7DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBQdWJs aXNoIHRoZSBjaGFuZ2VzDQo+ICsgIC8vDQo+ICsgIEFzbVdyaXRlR2R0cigmR2R0RGVzYyk7DQo+ ICsNCj4gKyAgLy8NCj4gKyAgLy8gTG9hZCB0YXNrIHJlZ2lzdGVyDQo+ICsgIC8vDQo+ICsgIEFz bVdyaXRlVHIgKChVSU5UMTYpKE9sZEdkdFNpemUgKyBUU1NfU0VMKSk7DQo+ICt9DQo+ICsNCj4g IC8qKg0KPiAgICBEaXNwbGF5IHByb2Nlc3NvciBjb250ZXh0Lg0KPg0KPiBkaWZmIC0tZ2l0DQo+ IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvSWEzMi9BcmNoSW50 ZXJydXB0RGVmcy5oDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJM aWIvSWEzMi9BcmNoSW50ZXJydXB0RGVmcy5oDQo+IGluZGV4IGE4ZDM1NTZhODAuLjc3Y2M2Zjk5 MTkgMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVy TGliL0lhMzIvQXJjaEludGVycnVwdERlZnMuaA0KPiArKysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkv Q3B1RXhjZXB0aW9uSGFuZGxlckxpYi9JYTMyL0FyY2hJbnRlcnJ1cHREZWZzLmgNCj4gQEAgLTQx LDQgKzQxLDE0MCBAQCB0eXBlZGVmIHN0cnVjdCB7DQo+ICAgIFVJTlQ4ICAgICAgIEhvb2tBZnRl clN0dWJIZWFkZXJDb2RlW0hPT0tBRlRFUl9TVFVCX1NJWkVdOw0KPiAgfSBSRVNFUlZFRF9WRUNU T1JTX0RBVEE7DQo+DQo+ICsjcHJhZ21hIHBhY2sgKDEpDQo+ICsNCj4gKyNkZWZpbmUgRVhDRVBU SU9OX0xJU1RfTUFYICAgICAgICAgIDcNCj4gKyNkZWZpbmUgRVhDRVBUSU9OX1NUQUNLX1NJWkUg ICAgICAgIEVGSV9QQUdFX1NJWkUNCj4gKyNkZWZpbmUgSUEzMl9HRFRfVFlQRV9UU1MgICAgICAg ICAgIDB4ODkNCj4gKyNkZWZpbmUgSUEzMl9HRFRfQUxJR05NRU5UICAgICAgICAgIDgNCj4gKw0K PiArLy8NCj4gKy8vIElBMzIgVFNTIERlZmluaXRpb24NCj4gKy8vDQo+ICt0eXBlZGVmIHN0cnVj dCB7DQo+ICsgIFVJTlQxNiAgICBQcmV2aW91c1Rhc2tMaW5rOyAvLyAwMA0KPiArICBVSU5UMTYg ICAgUmVzZXJ2ZWRfMjsNCj4gKyAgVUlOVDMyICAgIEVTUDA7ICAgICAgICAgICAgIC8vIDA0DQo+ ICsgIFVJTlQxNiAgICBTUzA7ICAgICAgICAgICAgICAvLyAwOA0KPiArICBVSU5UMTYgICAgUmVz ZXJ2ZWRfMTA7DQo+ICsgIFVJTlQzMiAgICBFU1AxOyAgICAgICAgICAgICAvLyAwQw0KPiArICBV SU5UMTYgICAgU1MxOyAgICAgICAgICAgICAgLy8gMTANCj4gKyAgVUlOVDE2ICAgIFJlc2VydmVk XzE4Ow0KPiArICBVSU5UMzIgICAgRVNQMjsgICAgICAgICAgICAgLy8gMTQNCj4gKyAgVUlOVDE2 ICAgIFNTMjsgICAgICAgICAgICAgIC8vIDE4DQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF8yNjsN Cj4gKyAgVUlOVDMyICAgIENSMzsgICAgICAgICAgICAgIC8vIDFDDQo+ICsgIFVJTlQzMiAgICBF SVA7ICAgICAgICAgICAgICAvLyAyMA0KPiArICBVSU5UMzIgICAgRUZMQUdTOyAgICAgICAgICAg Ly8gMjQNCj4gKyAgVUlOVDMyICAgIEVBWDsgICAgICAgICAgICAgIC8vIDI4DQo+ICsgIFVJTlQz MiAgICBFQ1g7ICAgICAgICAgICAgICAvLyAyQw0KPiArICBVSU5UMzIgICAgRURYOyAgICAgICAg ICAgICAgLy8gMzANCj4gKyAgVUlOVDMyICAgIEVCWDsgICAgICAgICAgICAgIC8vIDM0DQo+ICsg IFVJTlQzMiAgICBFU1A7ICAgICAgICAgICAgICAvLyAzOA0KPiArICBVSU5UMzIgICAgRUJQOw0K PiArICBVSU5UMzIgICAgRVNJOw0KPiArICBVSU5UMzIgICAgRURJOw0KPiArICBVSU5UMTYgICAg RVM7DQo+ICsgIFVJTlQxNiAgICBSZXNlcnZlZF83NDsNCj4gKyAgVUlOVDE2ICAgIENTOw0KPiAr ICBVSU5UMTYgICAgUmVzZXJ2ZWRfNzg7DQo+ICsgIFVJTlQxNiAgICBTUzsNCj4gKyAgVUlOVDE2 ICAgIFJlc2VydmVkXzgyOw0KPiArICBVSU5UMTYgICAgRFM7DQo+ICsgIFVJTlQxNiAgICBSZXNl cnZlZF84NjsNCj4gKyAgVUlOVDE2ICAgIEZTOw0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfOTA7 DQo+ICsgIFVJTlQxNiAgICBHUzsNCj4gKyAgVUlOVDE2ICAgIFJlc2VydmVkXzk0Ow0KPiArICBV SU5UMTYgICAgTERUU2VnbWVudFNlbGVjdG9yOw0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfOTg7 DQo+ICsgIFVJTlQxNiAgICBUOw0KPiArICBVSU5UMTYgICAgSU9NYXBCYXNlQWRkcmVzczsNCj4g K30gSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQ7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4g KyAgVUlOVDE2ICAgIExpbWl0MTVfMDsNCj4gKyAgVUlOVDE2ICAgIEJhc2UxNV8wOw0KPiArICBV SU5UOCAgICAgQmFzZTIzXzE2Ow0KPiArICBVSU5UOCAgICAgVHlwZTsNCj4gKyAgVUlOVDggICAg IExpbWl0MTlfMTZfYW5kX2ZsYWdzOw0KPiArICBVSU5UOCAgICAgQmFzZTMxXzI0Ow0KPiArfSBJ QTMyX1RTU19ERVNDUklQVE9SOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ICsgIElBMzJf VFNTX0RFU0NSSVBUT1IgICAgICAgICAgIFRzc1NlZzsNCj4gKyAgSUEzMl9UU1NfREVTQ1JJUFRP UiAgICAgICAgICAgRXhjZXB0aW9uVHNzU2VnW0VYQ0VQVElPTl9MSVNUX01BWF07DQo+ICsgIElB MzJfVEFTS19TVEFURV9TRUdNRU5UICAgICAgIFRzczsNCj4gKyAgSUEzMl9UQVNLX1NUQVRFX1NF R01FTlQgICAgICAgRXhjZXB0aW9uVHNzW0VYQ0VQVElPTl9MSVNUX01BWF07DQo+ICt9IFRTU19F TlRSSUVTOw0KPiArDQo+ICsjcHJhZ21hIHBhY2sgKCkNCj4gKw0KPiArI2RlZmluZSBUU1NfU0VM ICAgICAgICAgICAgICAgT0ZGU0VUX09GIChUU1NfRU5UUklFUywgVHNzU2VnKQ0KPiArI2RlZmlu ZSBFWENFUFRJT05fVFNTX1NFTChuKSAgT0ZGU0VUX09GIChUU1NfRU5UUklFUywNCj4gRXhjZXB0 aW9uVHNzU2VnW25dKQ0KPiArI2RlZmluZSBUU1NfT0ZGU0VUICAgICAgICAgICAgT0ZGU0VUX09G IChUU1NfRU5UUklFUywgVHNzKQ0KPiArDQo+ICt0eXBlZGVmIFZPSUQgKCpFWENFUFRJT05fRU5U UlkpIChWT0lEKTsNCj4gKw0KPiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiArICBVSU5UTiAgICAgICAg ICAgICBWZWN0b3I7DQo+ICsgIEVYQ0VQVElPTl9FTlRSWSAgIEVudHJ5UG9pbnQ7DQo+ICt9IElB MzJfRVhDRVBUSU9OX1RTX0VOVFJZOw0KPiArDQo+ICsvKioNCj4gKyBFeGNlcHRpb24gaGFuZGxp bmcgZW50cnkgdGhyb3VnaCB0YXNrIGdhdGUgZm9yIGV4Y2VwdGlvbiAjVUQuDQo+ICsgKiovDQo+ ICtWT0lEDQo+ICtFeGNlcHRpb25UYXNrU3d0aWNoRW50cnk2ICgNCj4gKyAgVk9JRA0KPiArICAp Ow0KPiArDQo+ICsvKioNCj4gKyBFeGNlcHRpb24gaGFuZGxpbmcgZW50cnkgdGhyb3VnaCB0YXNr IGdhdGUgZm9yIGV4Y2VwdGlvbiAjREYuDQo+ICsgKiovDQo+ICtWT0lEDQo+ICtFeGNlcHRpb25U YXNrU3d0aWNoRW50cnk4ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyBF eGNlcHRpb24gaGFuZGxpbmcgZW50cnkgdGhyb3VnaCB0YXNrIGdhdGUgZm9yIGV4Y2VwdGlvbiAj U1MuDQo+ICsgKiovDQo+ICtWT0lEDQo+ICtFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkxMiAoDQo+ ICsgIFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgRXhjZXB0aW9uIGhhbmRsaW5nIGVu dHJ5IHRocm91Z2ggdGFzayBnYXRlIGZvciBleGNlcHRpb24gI0dQLg0KPiArICoqLw0KPiArVk9J RA0KPiArRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5MTMgKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ ICsNCj4gKy8qKg0KPiArIEV4Y2VwdGlvbiBoYW5kbGluZyBlbnRyeSB0aHJvdWdoIHRhc2sgZ2F0 ZSBmb3IgZXhjZXB0aW9uICNQRi4NCj4gKyAqKi8NCj4gK1ZPSUQNCj4gK0V4Y2VwdGlvblRhc2tT d3RpY2hFbnRyeTE0ICgNCj4gKyAgVk9JRA0KPiArICApOw0KPiArDQo+ICsvKioNCj4gKyBFeGNl cHRpb24gaGFuZGxpbmcgZW50cnkgdGhyb3VnaCB0YXNrIGdhdGUgZm9yIGV4Y2VwdGlvbiAjQUMu DQo+ICsgKiovDQo+ICtWT0lEDQo+ICtFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkxNyAoDQo+ICsg IFZPSUQNCj4gKyAgKTsNCj4gKw0KPiArLyoqDQo+ICsgRXhjZXB0aW9uIGhhbmRsaW5nIGVudHJ5 IHRocm91Z2ggdGFzayBnYXRlIGZvciBleGNlcHRpb24gI01DLg0KPiArICoqLw0KPiArVk9JRA0K PiArRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5MTggKA0KPiArICBWT0lEDQo+ICsgICk7DQo+ICsN Cj4gICNlbmRpZg0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2Vw dGlvbkhhbmRsZXJMaWIvSWEzMi9FeGNlcHRpb25Uc3NFbnRyeUFzbS5uYXMNCj4gbQ0KPiBiL1Vl ZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lhMzIvRXhjZXB0aW9uVHNz RW50cnlBc20ubmFzDQo+IG0NCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAw MDAwMC4uZGJmYmNmY2Y1MQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKw0KPiBiL1VlZmlDcHVQa2cv TGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL0lhMzIvRXhjZXB0aW9uVHNzRW50cnlBc20u bmFzDQo+IG0NCj4gQEAgLTAsMCArMSwzOTggQEANCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g Ow0KPiArOyBDb3B5cmlnaHQgKGMpIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gKzsgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscw0KPiArOyBhcmUgbGljZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0 ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNEDQo+IExpY2Vuc2UNCj4gKzsgd2hpY2ggYWNj b21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBUaGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNl IG1heSBiZSBmb3VuZA0KPiBhdA0KPiArOyBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMv YnNkLWxpY2Vuc2UucGhwLg0KPiArOw0KPiArOyBUSEUgUFJPR1JBTSBJUyBESVNUUklCVVRFRCBV TkRFUiBUSEUgQlNEIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywNCj4gKzsgV0lUSE9VVCBX QVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MN Cj4gT1IgSU1QTElFRC4NCj4gKzsNCj4gKzsgTW9kdWxlIE5hbWU6DQo+ICs7DQo+ICs7ICAgRXhj ZXB0aW9uVHNzRW50cnlBc20uQXNtDQo+ICs7DQo+ICs7IEFic3RyYWN0Og0KPiArOw0KPiArOyAg IElBMzIgQ1BVIEV4Y2VwdGlvbiBIYW5kbGVyIHdpdGggU2VwYXJhdGUgU3RhY2sNCj4gKzsNCj4g KzsgTm90ZXM6DQo+ICs7DQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsNCj4gKzsNCj4g KzsgSUEzMiBUU1MgTWVtb3J5IExheW91dCBEZXNjcmlwdGlvbg0KPiArOw0KPiArc3RydWMgSUEz Ml9UU1MNCj4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ICsgICAgICAgICAgICAgICAg ICAgIHJlc3cgMQ0KPiArICAuRVNQMDogICAgcmVzZCAxDQo+ICsgIC5TUzA6ICAgICByZXN3IDEN Cj4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ICsgIC5FU1AxOiAgICByZXNkIDENCj4g KyAgLlNTMTogICAgIHJlc3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAg LkVTUDI6ICAgIHJlc2QgMQ0KPiArICAuU1MyOiAgICAgcmVzdyAxDQo+ICsgICAgICAgICAgICAg ICAgICAgIHJlc3cgMQ0KPiArICAuX0NSMzogICAgcmVzZCAxDQo+ICsgIC5FSVA6ICAgICByZXNk IDENCj4gKyAgLkVGTEFHUzogIHJlc2QgMQ0KPiArICAuX0VBWDogICAgcmVzZCAxDQo+ICsgIC5f RUNYOiAgICByZXNkIDENCj4gKyAgLl9FRFg6ICAgIHJlc2QgMQ0KPiArICAuX0VCWDogICAgcmVz ZCAxDQo+ICsgIC5fRVNQOiAgICByZXNkIDENCj4gKyAgLl9FQlA6ICAgIHJlc2QgMQ0KPiArICAu X0VTSTogICAgcmVzZCAxDQo+ICsgIC5fRURJOiAgICByZXNkIDENCj4gKyAgLl9FUzogICAgIHJl c3cgMQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9DUzogICAgIHJlc3cg MQ0KPiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9TUzogICAgIHJlc3cgMQ0K PiArICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9EUzogICAgIHJlc3cgMQ0KPiAr ICAgICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9GUzogICAgIHJlc3cgMQ0KPiArICAg ICAgICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLl9HUzogICAgIHJlc3cgMQ0KPiArICAgICAg ICAgICAgICAgICAgICByZXN3IDENCj4gKyAgLkxEVDogICAgIHJlc3cgMQ0KPiArICAgICAgICAg ICAgICAgICAgICByZXN3IDENCj4gKyAgICAgICAgICAgICAgICAgICAgcmVzdyAxDQo+ICsgICAg ICAgICAgICAgICAgICAgIHJlc3cgMQ0KPiArZW5kc3RydWMNCj4gKw0KPiArOw0KPiArOyBDb21t b25FeGNlcHRpb25IYW5kbGVyKCkNCj4gKzsNCj4gK2V4dGVybiBBU01fUEZYKENvbW1vbkV4Y2Vw dGlvbkhhbmRsZXIpDQo+ICsNCj4gK1NFQ1RJT04gLmRhdGENCj4gKw0KPiArU0VDVElPTiAudGV4 dA0KPiArDQo+ICtBTElHTiAgIDgNCj4gKw0KPiArOw0KPiArOyBleGNlcHRpb24gaGFuZGxlciBz dHViIHRhYmxlDQo+ICs7DQo+ICslbWFjcm8gRGVmRXhjZXB0aW9uVGFza1N3dGljaEVudHJ5IDEN Cj4gKyUlRG9JcmV0Og0KPiArICAgIGlyZXRkDQo+ICsNCj4gK2dsb2JhbCBBU01fUEZYKEV4Y2Vw dGlvblRhc2tTd3RpY2hFbnRyeSUxKQ0KPiArQVNNX1BGWChFeGNlcHRpb25UYXNrU3d0aWNoRW50 cnklMSk6DQo+ICsgICAgZGIgICAgICAweDZhICAgICAgICA7IHB1c2ggICNWZWN0b3JOdW0NCj4g KyAgICBkYiAgICAgICUxICAgICAgICAgIDsgVmVjdG9yTnVtDQo+ICsgICAgbW92ICAgICBlYXgs IEFTTV9QRlgoQ29tbW9uVGFza1N3dGljaEVudHJ5UG9pbnQpDQo+ICsgICAgY2FsbCAgICBlYXgN Cj4gKyAgICBtb3YgICAgIGVzcCwgZWF4ICAgIDsgUmVzdG9yZSBzdGFjayB0b3ANCj4gKyAgICBq bXAgICAgICUlRG9JcmV0DQo+ICslZW5kbWFjcm8NCj4gKw0KPiArZ2xvYmFsIEFTTV9QRlgoQ29t bW9uVGFza1N3dGljaEVudHJ5UG9pbnQpDQo+ICtBU01fUEZYKENvbW1vblRhc2tTd3RpY2hFbnRy eVBvaW50KToNCj4gKyAgICA7DQo+ICsgICAgOyBTdGFjazoNCj4gKyAgICA7ICstLS0tLS0tLS0t LS0tLS0tLS0tLS0rIDwtLSBFQlAgLSA4DQo+ICsgICAgOyArICAgICAgIFRTUyBCYXNlICAgICAg Kw0KPiArICAgIDsgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0tIEVCUCAtIDQNCj4gKyAgICA7 ICsgICAgICBDUFVJRC5FRFggICAgICArDQo+ICsgICAgOyArLS0tLS0tLS0tLS0tLS0tLS0tLS0t KyA8LS0gRUJQDQo+ICsgICAgOyArICAgICAgICAgRUlQICAgICAgICAgKw0KPiArICAgIDsgKy0t LS0tLS0tLS0tLS0tLS0tLS0tLSsgPC0tIEVCUCArIDQNCj4gKyAgICA7ICsgICAgVmVjdG9yIE51 bWJlciAgICArDQo+ICsgICAgOyArLS0tLS0tLS0tLS0tLS0tLS0tLS0tKyA8LS0gRUJQICsgOA0K PiArICAgIDsgKyAgICBFcnJvciBDb2RlICAgICAgICsNCj4gKyAgICA7ICstLS0tLS0tLS0tLS0t LS0tLS0tLS0rDQo+ICsgICAgOw0KPiArOw0KPiArOyBHZXQgVFNTIG9mIGludGVycnVwdGVkIHRh c2sNCj4gKzsNCj4gKyAgICBtb3YgICAgIGVicCwgZXNwICAgICAgICAgICAgICAgICAgICA7IFN0 YWNrIGZyYW1lDQo+ICsNCj4gKzsgVXNlIENQVUlEIHRvIGRldGVybWluZSBpZiBGWFNBVkUvRlhS RVNUT1IgYW5kIERFIGFyZSBzdXBwb3J0ZWQNCj4gKyAgICBtb3YgICAgIGVheCwgMQ0KPiArICAg IGNwdWlkDQo+ICsgICAgcHVzaCAgICBlZHgNCj4gKw0KPiArOyBHZXQgVFNTIGJhc2Ugb2YgaW50 ZXJydXB0ZWQgdGFzayB0aHJvdWdoIFByZXZpb3VzVGFza0xpbmsgZmllbGQgaW4NCj4gKzsgY3Vy cmVudCBUU1MgYmFzZQ0KPiArICAgIHN1YiAgICAgZXNwLCA4DQo+ICsgICAgc2dkdCAgICBbZXNw ICsgMl0NCj4gKyAgICBtb3YgICAgIGVheCwgW2VzcCArIDRdICAgICAgICAgICAgICA7IEdEVCBi YXNlDQo+ICsgICAgYWRkICAgICBlc3AsIDgNCj4gKw0KPiArICAgIHhvciAgICAgZWJ4LCBlYngN Cj4gKyAgICBzdHIgICAgIGJ4ICAgICAgICAgICAgICAgICAgICAgICAgICA7IEN1cnJlbnQgVFIN Cj4gKw0KPiArICAgIG1vdiAgICAgZWN4LCBbZWF4ICsgZWJ4ICsgMl0NCj4gKyAgICBzaGwgICAg IGVjeCwgOA0KPiArICAgIG1vdiAgICAgY2wsIFtlYXggKyBlYnggKyA3XQ0KPiArICAgIHJvciAg ICAgZWN4LCA4ICAgICAgICAgICAgICAgICAgICAgIDsgZWN4ID0gQ3VycmVudCBUU1MgYmFzZQ0K PiArICAgIHB1c2ggICAgZWN4ICAgICAgICAgICAgICAgICAgICAgICAgIDsga2VlcCBpdCBpbiBz dGFjayBmb3IgbGF0ZXIgdXNlDQo+ICsNCj4gKyAgICBtb3Z6eCAgIGVieCwgd29yZCBbZWN4XSAg ICAgICAgICAgICA7IFByZXZpb3VzIFRhc2sgTGluaw0KPiArICAgIG1vdiAgICAgZWN4LCBbZWF4 ICsgZWJ4ICsgMl0NCj4gKyAgICBzaGwgICAgIGVjeCwgOA0KPiArICAgIG1vdiAgICAgY2wsIFtl YXggKyBlYnggKyA3XQ0KPiArICAgIHJvciAgICAgZWN4LCA4ICAgICAgICAgICAgICAgICAgICAg IDsgZWN4ID0gUHJldmlvdXMgVFNTIGJhc2UNCj4gKw0KPiArOw0KPiArOyBBbGlnbiBzdGFjayB0 byBtYWtlIHN1cmUgdGhhdCBFRklfRlhfU0FWRV9TVEFURV9JQTMyIG9mDQo+IEVGSV9TWVNURU1f Q09OVEVYVF9JQTMyDQo+ICs7IGlzIDE2LWJ5dGUgYWxpZ25lZA0KPiArOw0KPiArICAgIGFuZCAg ICAgZXNwLCAweGZmZmZmZmYwDQo+ICsgICAgc3ViICAgICBlc3AsIDEyDQo+ICsNCj4gKzs7IFVJ TlQzMiAgRWRpLCBFc2ksIEVicCwgRXNwLCBFYngsIEVkeCwgRWN4LCBFYXg7DQo+ICsgICAgcHVz aCAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VBWF0NCj4gKyAgICBwdXNoICAgIGR3b3JkIFtl Y3ggKyBJQTMyX1RTUy5fRUNYXQ0KPiArICAgIHB1c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNT Ll9FRFhdDQo+ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuX0VCWF0NCj4gKyAg ICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNQXQ0KPiArICAgIHB1c2ggICAgZHdv cmQgW2VjeCArIElBMzJfVFNTLl9FQlBdDQo+ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsgSUEz Ml9UU1MuX0VTSV0NCj4gKyAgICBwdXNoICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRURJXQ0K PiArDQo+ICs7OyBVSU5UMzIgIEdzLCBGcywgRXMsIERzLCBDcywgU3M7DQo+ICsgICAgbW92engg ICBlYXgsIHdvcmQgW2VjeCArIElBMzJfVFNTLl9TU10NCj4gKyAgICBwdXNoICAgIGVheA0KPiAr ICAgIG1vdnp4ICAgZWF4LCB3b3JkIFtlY3ggKyBJQTMyX1RTUy5fQ1NdDQo+ICsgICAgcHVzaCAg ICBlYXgNCj4gKyAgICBtb3Z6eCAgIGVheCwgd29yZCBbZWN4ICsgSUEzMl9UU1MuX0RTXQ0KPiAr ICAgIHB1c2ggICAgZWF4DQo+ICsgICAgbW92enggICBlYXgsIHdvcmQgW2VjeCArIElBMzJfVFNT Ll9FU10NCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdnp4ICAgZWF4LCB3b3JkIFtlY3gg KyBJQTMyX1RTUy5fRlNdDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICBtb3Z6eCAgIGVheCwg d29yZCBbZWN4ICsgSUEzMl9UU1MuX0dTXQ0KPiArICAgIHB1c2ggICAgZWF4DQo+ICsNCj4gKzs7 IFVJTlQzMiAgRWlwOw0KPiArICAgIHB1c2ggICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLkVJUF0N Cj4gKw0KPiArOzsgVUlOVDMyICBHZHRyWzJdLCBJZHRyWzJdOw0KPiArICAgIHN1YiAgICAgZXNw LCA4DQo+ICsgICAgc2lkdCAgICBbZXNwXQ0KPiArICAgIG1vdiAgICAgZWF4LCBbZXNwICsgMl0N Cj4gKyAgICB4Y2hnICAgIGVheCwgW2VzcF0NCj4gKyAgICBhbmQgICAgIGVheCwgMHhGRkZGDQo+ ICsgICAgbW92ICAgICBbZXNwKzRdLCBlYXgNCj4gKw0KPiArICAgIHN1YiAgICAgZXNwLCA4DQo+ ICsgICAgc2dkdCAgICBbZXNwXQ0KPiArICAgIG1vdiAgICAgZWF4LCBbZXNwICsgMl0NCj4gKyAg ICB4Y2hnICAgIGVheCwgW2VzcF0NCj4gKyAgICBhbmQgICAgIGVheCwgMHhGRkZGDQo+ICsgICAg bW92ICAgICBbZXNwKzRdLCBlYXgNCj4gKw0KPiArOzsgVUlOVDMyICBMZHRyLCBUcjsNCj4gKyAg ICBtb3YgICAgIGVheCwgZWJ4ICAgIDsgZWJ4IHN0aWxsIGtlZXBzIHNlbGVjdG9yIG9mIGludGVy cnVwdGVkIHRhc2sNCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdnp4ICAgZWF4LCB3b3Jk IFtlY3ggKyBJQTMyX1RTUy5MRFRdDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKw0KPiArOzsgVUlO VDMyICBFRmxhZ3M7DQo+ICsgICAgcHVzaCAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuRUZMQUdT XQ0KPiArDQo+ICs7OyBVSU5UMzIgIENyMCwgQ3IxLCBDcjIsIENyMywgQ3I0Ow0KPiArICAgIG1v diAgICAgZWF4LCBjcjQNCj4gKyAgICBwdXNoICAgIGVheCAgICAgICAgICAgICA7IHB1c2ggY3I0 IGZpcnN0bHkNCj4gKw0KPiArICAgIG1vdiAgICAgZWR4LCBbZWJwIC0gNF0gIDsgY3B1aWQuZWR4 DQo+ICsgICAgdGVzdCAgICBlZHgsIEJJVDI0ICAgICAgOyBUZXN0IGZvciBGWFNBVkUvRlhSRVNU T1Igc3VwcG9ydA0KPiArICAgIGp6ICAgICAgLjENCj4gKyAgICBvciAgICAgIGVheCwgQklUOSAg ICAgICA7IFNldCBDUjQuT1NGWFNSDQo+ICsuMToNCj4gKyAgICB0ZXN0ICAgIGVkeCwgQklUMiAg ICAgICA7IFRlc3QgZm9yIERlYnVnZ2luZyBFeHRlbnNpb25zIHN1cHBvcnQNCj4gKyAgICBqeiAg ICAgIC4yDQo+ICsgICAgb3IgICAgICBlYXgsIEJJVDMgICAgICAgOyBTZXQgQ1I0LkRFDQo+ICsu MjoNCj4gKyAgICBtb3YgICAgIGNyNCwgZWF4DQo+ICsNCj4gKyAgICBtb3YgICAgIGVheCwgY3Iz DQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKyAgICBtb3YgICAgIGVheCwgY3IyDQo+ICsgICAgcHVz aCAgICBlYXgNCj4gKyAgICB4b3IgICAgIGVheCwgZWF4DQo+ICsgICAgcHVzaCAgICBlYXgNCj4g KyAgICBtb3YgICAgIGVheCwgY3IwDQo+ICsgICAgcHVzaCAgICBlYXgNCj4gKw0KPiArOzsgVUlO VDMyICBEcjAsIERyMSwgRHIyLCBEcjMsIERyNiwgRHI3Ow0KPiArICAgIG1vdiAgICAgZWF4LCBk cjcNCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdiAgICAgZWF4LCBkcjYNCj4gKyAgICBw dXNoICAgIGVheA0KPiArICAgIG1vdiAgICAgZWF4LCBkcjMNCj4gKyAgICBwdXNoICAgIGVheA0K PiArICAgIG1vdiAgICAgZWF4LCBkcjINCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdiAg ICAgZWF4LCBkcjENCj4gKyAgICBwdXNoICAgIGVheA0KPiArICAgIG1vdiAgICAgZWF4LCBkcjAN Cj4gKyAgICBwdXNoICAgIGVheA0KPiArDQo+ICs7OyBGWF9TQVZFX1NUQVRFX0lBMzIgRnhTYXZl U3RhdGU7DQo+ICs7OyBDbGVhciBUUyBiaXQgaW4gQ1IwIHRvIGF2b2lkIERldmljZSBOb3QgQXZh aWxhYmxlIEV4Y2VwdGlvbiAoI05NKQ0KPiArOzsgd2hlbiBleGVjdXRpbmcgZnhzYXZlL2Z4cnN0 b3IgaW5zdHJ1Y3Rpb24NCj4gKyAgICB0ZXN0ICAgIGVkeCwgQklUMjQgIDsgVGVzdCBmb3IgRlhT QVZFL0ZYUkVTVE9SIHN1cHBvcnQuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICA7IGVkeCBz dGlsbCBjb250YWlucyByZXN1bHQgZnJvbSBDUFVJRCBhYm92ZQ0KPiArICAgIGp6ICAgICAgLjMN Cj4gKyAgICBjbHRzDQo+ICsgICAgc3ViICAgICBlc3AsIDUxMg0KPiArICAgIG1vdiAgICAgZWRp LCBlc3ANCj4gKyAgICBkYiAgICAgIDB4ZiwgMHhhZSwgMHg3IDtmeHNhdmUgW2VkaV0NCj4gKy4z Og0KPiArDQo+ICs7OyBVSU5UMzIgIEV4Y2VwdGlvbkRhdGE7DQo+ICsgICAgcHVzaCAgICBkd29y ZCBbZWJwICsgOF0NCj4gKw0KPiArOzsgVUVGSSBjYWxsaW5nIGNvbnZlbnRpb24gZm9yIElBMzIg cmVxdWlyZXMgdGhhdCBEaXJlY3Rpb24gZmxhZyBpbiBFRkxBR3MgaXMgY2xlYXINCj4gKyAgICBj bGQNCj4gKw0KPiArOzsgY2FsbCBpbnRvIGV4Y2VwdGlvbiBoYW5kbGVyDQo+ICsgICAgbW92ICAg ICBlc2ksIGVjeCAgICAgICAgICAgIDsgS2VlcCBUU1MgYmFzZSB0byBhdm9pZCBvdmVyd3JpdGUN Cj4gKyAgICBtb3YgICAgIGVheCwgQVNNX1BGWChDb21tb25FeGNlcHRpb25IYW5kbGVyKQ0KPiAr DQo+ICs7OyBQcmVwYXJlIHBhcmFtZXRlciBhbmQgY2FsbA0KPiArICAgIG1vdiAgICAgZWR4LCBl c3ANCj4gKyAgICBwdXNoICAgIGVkeCAgICAgICAgICAgICAgICAgOyBFRklfU1lTVEVNX0NPTlRF WFQNCj4gKyAgICBwdXNoICAgIGR3b3JkIFtlYnAgKyA0XSAgICAgOyBFRklfRVhDRVBUSU9OX1RZ UEUgKHZlY3RvciBudW1iZXIpDQo+ICsNCj4gKyAgICA7DQo+ICsgICAgOyBDYWxsIEV4dGVybmFs IEV4Y2VwdGlvbiBIYW5kbGVyDQo+ICsgICAgOw0KPiArICAgIGNhbGwgICAgZWF4DQo+ICsgICAg YWRkICAgICBlc3AsIDggICAgICAgICAgICAgIDsgUmVzdG9yZSBzdGFjayBiZWZvcmUgY2FsbGlu Zw0KPiArICAgIG1vdiAgICAgZWN4LCBlc2kgICAgICAgICAgICA7IFJlc3RvcmUgVFNTIGJhc2UN Cj4gKw0KPiArOzsgVUlOVDMyICBFeGNlcHRpb25EYXRhOw0KPiArICAgIGFkZCAgICAgZXNwLCA0 DQo+ICsNCj4gKzs7IEZYX1NBVkVfU1RBVEVfSUEzMiBGeFNhdmVTdGF0ZTsNCj4gKyAgICBtb3Yg ICAgIGVkeCwgW2VicCAtIDRdICA7IGNwdWlkLmVkeA0KPiArICAgIHRlc3QgICAgZWR4LCBCSVQy NCAgICAgIDsgVGVzdCBmb3IgRlhTQVZFL0ZYUkVTVE9SIHN1cHBvcnQNCj4gKyAgICBqeiAgICAg IC40DQo+ICsgICAgbW92ICAgICBlc2ksIGVzcA0KPiArICAgIGRiICAgICAgMHhmLCAweGFlLCAw eGUgIDsgZnhyc3RvciBbZXNpXQ0KPiArLjQ6DQo+ICsgICAgYWRkICAgICBlc3AsIDUxMg0KPiAr DQo+ICs7OyBVSU5UMzIgIERyMCwgRHIxLCBEcjIsIERyMywgRHI2LCBEcjc7DQo+ICs7OyBTa2lw IHJlc3RvcmF0aW9uIG9mIERSeCByZWdpc3RlcnMgdG8gc3VwcG9ydCBkZWJ1Z2dlcnMNCj4gKzs7 IHRoYXQgc2V0IGJyZWFrcG9pbnRzIGluIGludGVycnVwdC9leGNlcHRpb24gY29udGV4dA0KPiAr ICAgIGFkZCAgICAgZXNwLCA0ICogNg0KPiArDQo+ICs7OyBVSU5UMzIgIENyMCwgQ3IxLCBDcjIs IENyMywgQ3I0Ow0KPiArICAgIHBvcCAgICAgZWF4DQo+ICsgICAgbW92ICAgICBjcjAsIGVheA0K PiArICAgIGFkZCAgICAgZXNwLCA0ICAgIDsgbm90IGZvciBDcjENCj4gKyAgICBwb3AgICAgIGVh eA0KPiArICAgIG1vdiAgICAgY3IyLCBlYXgNCj4gKyAgICBwb3AgICAgIGVheA0KPiArICAgIG1v diAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9DUjNdLCBlYXgNCj4gKyAgICBwb3AgICAgIGVh eA0KPiArICAgIG1vdiAgICAgY3I0LCBlYXgNCj4gKw0KPiArOzsgVUlOVDMyICBFRmxhZ3M7DQo+ ICsgICAgcG9wICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuRUZMQUdTXQ0KPiArICAgIG1vdiAg ICAgZWJ4LCBkd29yZCBbZWN4ICsgSUEzMl9UU1MuRUZMQUdTXQ0KPiArICAgIGJ0ciAgICAgZWJ4 LCA5ICAgICAgOyBEbyAnY2xpJw0KPiArICAgIG1vdiAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNT LkVGTEFHU10sIGVieA0KPiArDQo+ICs7OyBVSU5UMzIgIExkdHIsIFRyOw0KPiArOzsgVUlOVDMy ICBHZHRyWzJdLCBJZHRyWzJdOw0KPiArOzsgQmVzdCBub3QgbGV0IGFueW9uZSBtZXNzIHdpdGgg dGhlc2UgcGFydGljdWxhciByZWdpc3RlcnMuLi4NCj4gKyAgICBhZGQgICAgIGVzcCwgMjQNCj4g Kw0KPiArOzsgVUlOVDMyICBFaXA7DQo+ICsgICAgcG9wICAgICBkd29yZCBbZWN4ICsgSUEzMl9U U1MuRUlQXQ0KPiArDQo+ICs7OyBVSU5UMzIgIEdzLCBGcywgRXMsIERzLCBDcywgU3M7DQo+ICs7 OyBOT1RFIC0gbW9kaWZpZWQgc2VnbWVudCByZWdpc3RlcnMgY291bGQgaGFuZyB0aGUgZGVidWdn ZXIuLi4gIFdlDQo+ICs7OyAgICAgICAgY291bGQgYXR0ZW1wdCB0byBpbnN1bGF0ZSBvdXJzZWx2 ZXMgYWdhaW5zdCB0aGlzIHBvc3NpYmlsaXR5LA0KPiArOzsgICAgICAgIGJ1dCB0aGF0IHBvc2Vz IHJpc2tzIGFzIHdlbGwuDQo+ICs7Ow0KPiArICAgIHBvcCAgICAgZWF4DQo+ICtvMTYgbW92ICAg ICBbZWN4ICsgSUEzMl9UU1MuX0dTXSwgYXgNCj4gKyAgICBwb3AgICAgIGVheA0KPiArbzE2IG1v diAgICAgW2VjeCArIElBMzJfVFNTLl9GU10sIGF4DQo+ICsgICAgcG9wICAgICBlYXgNCj4gK28x NiBtb3YgICAgIFtlY3ggKyBJQTMyX1RTUy5fRVNdLCBheA0KPiArICAgIHBvcCAgICAgZWF4DQo+ ICtvMTYgbW92ICAgICBbZWN4ICsgSUEzMl9UU1MuX0RTXSwgYXgNCj4gKyAgICBwb3AgICAgIGVh eA0KPiArbzE2IG1vdiAgICAgW2VjeCArIElBMzJfVFNTLl9DU10sIGF4DQo+ICsgICAgcG9wICAg ICBlYXgNCj4gK28xNiBtb3YgICAgIFtlY3ggKyBJQTMyX1RTUy5fU1NdLCBheA0KPiArDQo+ICs7 OyBVSU5UMzIgIEVkaSwgRXNpLCBFYnAsIEVzcCwgRWJ4LCBFZHgsIEVjeCwgRWF4Ow0KPiArICAg IHBvcCAgICAgZHdvcmQgW2VjeCArIElBMzJfVFNTLl9FREldDQo+ICsgICAgcG9wICAgICBkd29y ZCBbZWN4ICsgSUEzMl9UU1MuX0VTSV0NCj4gKyAgICBhZGQgICAgIGVzcCwgNCAgIDsgbm90IGZv ciBlYnANCj4gKyAgICBhZGQgICAgIGVzcCwgNCAgIDsgbm90IGZvciBlc3ANCj4gKyAgICBwb3Ag ICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRUJYXQ0KPiArICAgIHBvcCAgICAgZHdvcmQgW2Vj eCArIElBMzJfVFNTLl9FRFhdDQo+ICsgICAgcG9wICAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1Mu X0VDWF0NCj4gKyAgICBwb3AgICAgIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRUFYXQ0KPiArDQo+ ICs7IFNldCBzaW5nbGUgc3RlcCBEQiMgdG8gYWxsb3cgZGVidWdnZXIgdG8gYWJsZSB0byBnbyBi YWNrIHRvIHRoZSBFSVANCj4gKzsgd2hlcmUgdGhlIGV4Y2VwdGlvbiBpcyB0cmlnZ2VyZWQuDQo+ ICsNCj4gKzs7IENyZWF0ZSByZXR1cm4gY29udGV4dCBmb3IgaXJldGQgaW4gc3R1YiBmdW5jdGlv bg0KPiArICAgIG1vdiAgICBlYXgsIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNQXSAgICAgIDsg R2V0IG9sZCBzdGFjayBwb2ludGVyDQo+ICsgICAgbW92ICAgIGVieCwgZHdvcmQgW2VjeCArIElB MzJfVFNTLkVJUF0NCj4gKyAgICBtb3YgICAgW2VheCAtIDB4Y10sIGVieCAgICAgICAgICAgICAg ICAgICAgICA7IGNyZWF0ZSBFSVAgaW4gb2xkIHN0YWNrDQo+ICsgICAgbW92enggIGVieCwgd29y ZCBbZWN4ICsgSUEzMl9UU1MuX0NTXQ0KPiArICAgIG1vdiAgICBbZWF4IC0gMHg4XSwgZWJ4ICAg ICAgICAgICAgICAgICAgICAgIDsgY3JlYXRlIENTIGluIG9sZCBzdGFjaw0KPiArICAgIG1vdiAg ICBlYngsIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5FRkxBR1NdDQo+ICsgICAgYnRzICAgIGVieCwg OA0KPiArICAgIG1vdiAgICBbZWF4IC0gMHg0XSwgZWJ4ICAgICAgICAgICAgICAgICAgICAgIDsg Y3JlYXRlIGVmbGFncyBpbiBvbGQgc3RhY2sNCj4gKyAgICBtb3YgICAgZHdvcmQgW2VjeCArIElB MzJfVFNTLkVGTEFHU10sIGVieCAgICA7IHVwZGF0ZSBlZmxhZ3MgaW4gb2xkIFRTUw0KPiArICAg IG1vdiAgICBlYXgsIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNQXSAgICAgIDsgR2V0IG9sZCBz dGFjayBwb2ludGVyDQo+ICsgICAgc3ViICAgIGVheCwgMHhjICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOyBtaW51cyAxMiBieXRlDQo+ICsgICAgbW92ICAgIGR3b3JkIFtlY3ggKyBJQTMy X1RTUy5fRVNQXSwgZWF4ICAgICAgOyBTZXQgbmV3IHN0YWNrIHBvaW50ZXINCj4gKw0KPiArOzsg UmVwbGFjZSB0aGUgRUlQIG9mIGludGVycnVwdGVkIHRhc2sgd2l0aCBzdHViIGZ1bmN0aW9uDQo+ ICsgICAgbW92ICAgIGVheCwgQVNNX1BGWChTaW5nbGVTdGVwU3R1YkZ1bmN0aW9uKQ0KPiArICAg IG1vdiAgICBkd29yZCBbZWN4ICsgSUEzMl9UU1MuRUlQXSwgZWF4DQo+ICsNCj4gKyAgICBtb3Yg ICAgIGVjeCwgW2VicCAtIDhdICAgICAgICAgICAgICAgICAgICAgICA7IEdldCBjdXJyZW50IFRT UyBiYXNlDQo+ICsgICAgbW92ICAgICBlYXgsIGR3b3JkIFtlY3ggKyBJQTMyX1RTUy5fRVNQXSAg ICAgOyBSZXR1cm4gY3VycmVudCBzdGFjayB0b3ANCj4gKyAgICBtb3YgICAgIGVzcCwgZWJwDQo+ ICsNCj4gKyAgICByZXQNCj4gKw0KPiArZ2xvYmFsIEFTTV9QRlgoU2luZ2xlU3RlcFN0dWJGdW5j dGlvbikNCj4gK0FTTV9QRlgoU2luZ2xlU3RlcFN0dWJGdW5jdGlvbik6DQo+ICs7DQo+ICs7IHdl IG5lZWQgY2xlYW4gVFMgYml0IGluIENSMCB0byBleGVjdXRlDQo+ICs7IHg4NyBGUFUvTU1YL1NT RS9TU0UyL1NTRTMvU1NTRTMvU1NFNCBpbnN0cnVjdGlvbnMuDQo+ICs7DQo+ICsgICAgY2x0cw0K PiArICAgIGlyZXRkDQo+ICsNCj4gKzstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKzsgVk9JRA0K PiArOyBBc21Xcml0ZVRyICgNCj4gKzsgICBVSU5UMTYgU2VsZWN0b3INCj4gKzsgICApOw0KPiAr Oy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArZ2xvYmFsIEFTTV9QRlgoQXNtV3JpdGVUcikNCj4g K0FTTV9QRlgoQXNtV3JpdGVUcik6DQo+ICsgICAgbW92ICAgICBlYXgsIFtlc3ArNF0NCj4gKyAg ICBsdHIgICAgIGF4DQo+ICsgICAgcmV0DQo+ICsNCj4gK0RlZkV4Y2VwdGlvblRhc2tTd3RpY2hF bnRyeSA2DQo+ICtEZWZFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkgOA0KPiArRGVmRXhjZXB0aW9u VGFza1N3dGljaEVudHJ5IDEyDQo+ICtEZWZFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkgMTMNCj4g K0RlZkV4Y2VwdGlvblRhc2tTd3RpY2hFbnRyeSAxNA0KPiArRGVmRXhjZXB0aW9uVGFza1N3dGlj aEVudHJ5IDE3DQo+ICtEZWZFeGNlcHRpb25UYXNrU3d0aWNoRW50cnkgMTgNCj4gKw0KPiBkaWZm IC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvUGVp Q3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pbmYNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhj ZXB0aW9uSGFuZGxlckxpYi9QZWlDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiBpbmRleCA3 NTQ0MzI4OGE5Li40YzBkNDM1MTM2IDEwMDY0NA0KPiAtLS0NCj4gYS9VZWZpQ3B1UGtnL0xpYnJh cnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9QZWlDcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0K PiArKysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9QZWlD cHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiBAQCAtMzAsNiArMzAsNyBAQA0KPiAgW1NvdXJj ZXMuSWEzMl0NCj4gICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLmFzbQ0KPiAgICBJYTMyL0V4 Y2VwdGlvbkhhbmRsZXJBc20ubmFzbQ0KPiArICBJYTMyL0V4Y2VwdGlvblRzc0VudHJ5QXNtLm5h c20NCj4gICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLlMNCj4gICAgSWEzMi9BcmNoRXhjZXB0 aW9uSGFuZGxlci5jDQo+ICAgIElhMzIvQXJjaEludGVycnVwdERlZnMuaA0KPiBkaWZmIC0tZ2l0 DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvU2VjUGVpQ3B1 RXhjZXB0aW9uSGFuZGxlckxpYi5pDQo+IG5mDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4 Y2VwdGlvbkhhbmRsZXJMaWIvU2VjUGVpQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi5pDQo+IG5mDQo+ IGluZGV4IGQ3MGE5OWMxMDAuLmFkYjQxNWJhNWEgMTAwNjQ0DQo+IC0tLQ0KPiBhL1VlZmlDcHVQ a2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1NlY1BlaUNwdUV4Y2VwdGlvbkhhbmRs ZXJMaWIuaQ0KPiBuZg0KPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9u SGFuZGxlckxpYi9TZWNQZWlDcHVFeGNlcHRpb25IYW5kbGVyTGliLmkNCj4gbmYNCj4gQEAgLTMw LDYgKzMwLDcgQEANCj4gIFtTb3VyY2VzLklhMzJdDQo+ICAgIElhMzIvRXhjZXB0aW9uSGFuZGxl ckFzbS5hc20NCj4gICAgSWEzMi9FeGNlcHRpb25IYW5kbGVyQXNtLm5hc20NCj4gKyAgSWEzMi9F eGNlcHRpb25Uc3NFbnRyeUFzbS5uYXNtDQo+ICAgIElhMzIvRXhjZXB0aW9uSGFuZGxlckFzbS5T DQo+ICAgIElhMzIvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiAgICBJYTMyL0FyY2hJbnRlcnJ1 cHREZWZzLmgNCj4gQEAgLTU3LDMgKzU4LDUgQEANCj4gICAgUHJpbnRMaWINCj4gICAgTG9jYWxB cGljTGliDQo+ICAgIFBlQ29mZkdldEVudHJ5UG9pbnRMaWINCj4gKyAgTWVtb3J5QWxsb2NhdGlv bkxpYg0KPiArDQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0 aW9uSGFuZGxlckxpYi9TbW1DcHVFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiBiL1VlZmlDcHVQ a2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1NtbUNwdUV4Y2VwdGlvbkhhbmRsZXJM aWIuaW5mDQo+IGluZGV4IDYzNGZmY2IyMWQuLjU2Yjg3NWI3YzggMTAwNjQ0DQo+IC0tLQ0KPiBh L1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1NtbUNwdUV4Y2VwdGlv bkhhbmRsZXJMaWIuaW5mDQo+ICsrKw0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRp b25IYW5kbGVyTGliL1NtbUNwdUV4Y2VwdGlvbkhhbmRsZXJMaWIuaW5mDQo+IEBAIC0zMCw2ICsz MCw3IEBADQo+ICBbU291cmNlcy5JYTMyXQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20u YXNtDQo+ICAgIElhMzIvRXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtDQo+ICsgIElhMzIvRXhjZXB0 aW9uVHNzRW50cnlBc20ubmFzbQ0KPiAgICBJYTMyL0V4Y2VwdGlvbkhhbmRsZXJBc20uUw0KPiAg ICBJYTMyL0FyY2hFeGNlcHRpb25IYW5kbGVyLmMNCj4gICAgSWEzMi9BcmNoSW50ZXJydXB0RGVm cy5oDQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFu ZGxlckxpYi9YNjQvQXJjaEV4Y2VwdGlvbkhhbmRsZXIuYw0KPiBiL1VlZmlDcHVQa2cvTGlicmFy eS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+IGlu ZGV4IDY1ZjBjZmY2ODAuLjI0ZjJhODQ4NmEgMTAwNjQ0DQo+IC0tLSBhL1VlZmlDcHVQa2cvTGli cmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNoRXhjZXB0aW9uSGFuZGxlci5jDQo+ ICsrKyBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNo RXhjZXB0aW9uSGFuZGxlci5jDQo+IEBAIC0xNCw2ICsxNCwxOSBAQA0KPg0KPiAgI2luY2x1ZGUg IkNwdUV4Y2VwdGlvbkNvbW1vbi5oIg0KPg0KPiArLy8NCj4gKy8vIExpc3Qgb2YgZXhjZXB0aW9u cyBuZWVkaW5nIHNlcGFyYXRlIHN0YWNrDQo+ICsvLw0KPiArU1RBVElDIFVJTlROICBtRXhjZXB0 aW9uc1dpdGhTdGFja1tdID0gew0KPiArICA2LCAgLy8jVUQ6IEludmFsaWQgT3Bjb2RlIEV4Y2Vw dGlvbg0KPiArICA4LCAgLy8jREY6IERvdWJsZSBGYXVsdCBFeGNlcHRpb24NCj4gKyAgMTIsIC8v I1NTOiBTdGFjayBGYXVsdCBFeGNlcHRpb24NCj4gKyAgMTMsIC8vI0dQOiBHZW5lcmFsIFByb3Rl Y3Rpb24gRXhjZXB0aW9uDQo+ICsgIDE0LCAvLyNQRjogUGFnZS1GYXVsdCBFeGNlcHRpb24NCj4g KyAgMTcsIC8vI0FDOiBBbGlnbm1lbnQgQ2hlY2sgRXhjZXB0aW9uDQo+ICsgIDE4ICAvLyNNQzog TWFjaGluZS1DaGVjayBFeGNlcHRpb24NCj4gKyAgfTsNCj4gKw0KPiAgLyoqDQo+ICAgIFJldHVy biBhZGRyZXNzIG1hcCBvZiBleGNlcHRpb24gaGFuZGxlciB0ZW1wbGF0ZSBzbyB0aGF0IEMgY29k ZSBjYW4NCj4gZ2VuZXJhdGUNCj4gICAgZXhjZXB0aW9uIHRhYmxlcy4NCj4gQEAgLTExMiw2ICsx MjUsMTAxIEBAIEFyY2hSZXN0b3JlRXhjZXB0aW9uQ29udGV4dCAoDQo+ICAgIFN5c3RlbUNvbnRl eHQuU3lzdGVtQ29udGV4dFg2NC0+RXhjZXB0aW9uRGF0YSA9DQo+IFJlc2VydmVkVmVjdG9yc1tF eGNlcHRpb25UeXBlXS5FeGNlcHRpb25EYXRhOw0KPiAgfQ0KPg0KPiArLyoqDQo+ICsgIFNldHVw IHNlcGFyYXRlIHN0YWNrIGZvciBzcGVjaWZpYyBleGNlcHRpb25zLg0KPiArDQo+ICsgIEBwYXJh bVtpbl0gSWR0VGFibGUgICAgICAgIElEVCB0YWJsZSBiYXNlLg0KPiArKiovDQo+ICtWT0lEDQo+ ICtFRklBUEkNCj4gK0FyY2hTZXR1cEV4Y3BldGlvblN0YWNrICgNCj4gKyAgSU4gSUEzMl9JRFRf R0FURV9ERVNDUklQVE9SICAgICAgICAgICAqSWR0VGFibGUNCj4gKyAgKQ0KPiArew0KPiArICBW T0lEICAgICAgICAgICAgICAgICAgICAgICpOZXdHZHQ7DQo+ICsgIElBMzJfREVTQ1JJUFRPUiAg ICAgICAgICAgR2R0RGVzYzsNCj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBPbGRHZHRT aXplOw0KPiArICBUU1NfRU5UUklFUyAgICAgICAgICAgICAgICpUc3NFbnRyeTsNCj4gKyAgVUlO VE4gICAgICAgICAgICAgICAgICAgICBTdGFja0Jhc2U7DQo+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgU3RhY2tUb3A7DQo+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgU3RhY2tT aXplOw0KPiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFRzc0Jhc2U7DQo+ICsgIFVJTlRO ICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gQWxsb2Nh dGUgUnVudGltZSBEYXRhIGZvciB0aGUgR0RUDQo+ICsgIC8vDQo+ICsgIEFzbVJlYWRHZHRyKCZH ZHREZXNjKTsNCj4gKyAgT2xkR2R0U2l6ZSA9IEdkdERlc2MuTGltaXQgKyAxOw0KPiArICBOZXdH ZHQgPSBBbGxvY2F0ZVJ1bnRpbWVaZXJvUG9vbChPbGRHZHRTaXplICsgc2l6ZW9mKFRTU19FTlRS SUVTKQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIElBMzJfR0RUX0FMSUdO TUVOVCk7DQo+ICsgIGlmIChOZXdHZHQgPT0gTlVMTCkgew0KPiArICAgIHJldHVybjsNCj4gKyAg fQ0KPiArICBOZXdHZHQgPSBBTElHTl9QT0lOVEVSIChOZXdHZHQsIElBMzJfR0RUX0FMSUdOTUVO VCk7DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gSW5pdGlhbGl6ZSBuZXcgR0RUIGVudHJpZXMNCj4g KyAgLy8NCj4gKyAgQ29weU1lbShOZXdHZHQsIChWT0lEICopR2R0RGVzYy5CYXNlLCBPbGRHZHRT aXplKTsNCj4gKyAgR2R0RGVzYy5CYXNlID0gKFVJTlROKShWT0lEKilOZXdHZHQ7DQo+ICsgIEdk dERlc2MuTGltaXQgPSAoVUlOVDE2KShPbGRHZHRTaXplICsgVFNTX09GRlNFVCAtIDEpOw0KPiAr DQo+ICsgIC8vDQo+ICsgIC8vIFJlc2VydmUgc3RhdGNrIG1lbW9yeSBmb3Igc3VwcG9ydGVkIGV4 Y2VwdGlvbnMNCj4gKyAgLy8NCj4gKyAgU3RhY2tTaXplID0gQVJSQVlfU0laRSAobUV4Y2VwdGlv bnNXaXRoU3RhY2spICogRVhDRVBUSU9OX1NUQUNLX1NJWkU7DQo+ICsgIFN0YWNrU2l6ZSA9IEVG SV9QQUdFU19UT19TSVpFIChFRklfU0laRV9UT19QQUdFUyAoU3RhY2tTaXplKSk7DQo+ICsgIFN0 YWNrQmFzZSA9IChVSU5UNjQpQWxsb2NhdGVQYWdlcyAoRUZJX1NJWkVfVE9fUEFHRVMgKFN0YWNr U2l6ZSkpOw0KPiArICBpZiAoU3RhY2tCYXNlID09IDApIHsNCj4gKyAgICBGcmVlUG9vbCAoTmV3 R2R0KTsNCj4gKyAgICByZXR1cm47DQo+ICsgIH0NCj4gKw0KPiArICAvLw0KPiArICAvLyBGaXh1 cCBUU1MgZGVzY3JpcHRvcnMNCj4gKyAgLy8NCj4gKyAgVHNzRW50cnkgPSAoVk9JRCAqKShHZHRE ZXNjLkJhc2UgKyBPbGRHZHRTaXplKTsNCj4gKyAgVHNzQmFzZSA9IChVSU5UTikoVk9JRCAqKSZU c3NFbnRyeS0+VHNzOw0KPiArDQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuTGltaXQxNV8wICAgICAg ICAgICAgPQ0KPiBzaXplb2YoSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQpIC0gMTsNCj4gKyAgVHNz RW50cnktPlRzc1NlZy5CYXNlMTVfMCAgICAgICAgICAgICA9IChVSU5UMTYpVHNzQmFzZTsNCj4g KyAgVHNzRW50cnktPlRzc1NlZy5CYXNlMjNfMTYgICAgICAgICAgICA9IChVSU5UOCkoVHNzQmFz ZSA+PiAxNik7DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuVHlwZSAgICAgICAgICAgICAgICAgPSBJ QTMyX0dEVF9UWVBFX1RTUzsNCj4gKyAgVHNzRW50cnktPlRzc1NlZy5MaW1pdDE5XzE2X2FuZF9m bGFncyA9IDA7DQo+ICsgIFRzc0VudHJ5LT5Uc3NTZWcuQmFzZTMxXzI0ICAgICAgICAgICAgPSAo VUlOVDgpKFRzc0Jhc2UgPj4gMjQpOw0KPiArICBUc3NFbnRyeS0+VHNzU2VnLkJhc2U2M18zMiAg ICAgICAgICAgID0gKFVJTlQzMikoVHNzQmFzZSA+PiAzMik7DQo+ICsgIFRzc0VudHJ5LT5Uc3NT ZWcuUmVzZXJ2ZWQgICAgICAgICAgICAgPSAwOw0KPiArDQo+ICsgIC8vDQo+ICsgIC8vIEVuYWJs ZSBJbnRlcnJ1cHQgU3RhY2sgVGFibGUgKElTVCkgZm9yIGVhY2ggcmVxdWlyZWQgZXhjZXB0aW9u DQo+ICsgIC8vDQo+ICsgIFN0YWNrVG9wICA9IFN0YWNrQmFzZSArIFN0YWNrU2l6ZSAtIENQVV9T VEFDS19BTElHTk1FTlQ7DQo+ICsgIFN0YWNrVG9wICA9IChVSU5UTilBTElHTl9QT0lOVEVSIChT dGFja1RvcCwgQ1BVX1NUQUNLX0FMSUdOTUVOVCk7DQo+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRl eCA8IEFSUkFZX1NJWkUgKG1FeGNlcHRpb25zV2l0aFN0YWNrKTsgKytJbmRleCkgew0KPiArICAg IC8vDQo+ICsgICAgLy8gRml4dXAgVFNTDQo+ICsgICAgLy8NCj4gKyAgICBUc3NFbnRyeS0+VHNz LklTVFtJbmRleF0gPSBTdGFja1RvcDsNCj4gKyAgICBTdGFja1RvcCAtPSBFWENFUFRJT05fU1RB Q0tfU0laRTsNCj4gKw0KPiArICAgIC8vDQo+ICsgICAgLy8gU2V0IHRoZSBJU1QgZmllbGQgdG8g MSB0byBlbmFibGUgY29ycmVzcG9uZGluZyBJU1QNCj4gKyAgICAvLw0KPiArICAgIElkdFRhYmxl W21FeGNlcHRpb25zV2l0aFN0YWNrW0luZGV4XV0uQml0cy5SZXNlcnZlZF8wID0gKFVJTlQ4KShJ bmRleCArDQo+IDEpOw0KPiArICB9DQo+ICsNCj4gKyAgLy8NCj4gKyAgLy8gUHVibGlzaCB0aGUg Y2hhbmdlcw0KPiArICAvLw0KPiArICBBc21Xcml0ZUdkdHIoJkdkdERlc2MpOw0KPiArDQo+ICsg IC8vDQo+ICsgIC8vIExvYWQgdGFzayByZWdpc3Rlcg0KPiArICAvLw0KPiArICBBc21Xcml0ZVRy ICgoVUlOVDE2KShPbGRHZHRTaXplICsgVFNTX1NFTCkpOw0KPiArfQ0KPiArDQo+ICAvKioNCj4g ICAgRGlzcGxheSBDUFUgaW5mb3JtYXRpb24uDQo+DQo+IGRpZmYgLS1naXQNCj4gYS9VZWZpQ3B1 UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvQXJjaEludGVycnVwdERlZnMu aA0KPiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNo SW50ZXJydXB0RGVmcy5oDQo+IGluZGV4IDkwNjQ4MDEzNGEuLjVhOTEzYmFlN2IgMTAwNjQ0DQo+ IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9BcmNo SW50ZXJydXB0RGVmcy5oDQo+ICsrKyBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25I YW5kbGVyTGliL1g2NC9BcmNoSW50ZXJydXB0RGVmcy5oDQo+IEBAIC00Myw0ICs0Myw0NCBAQCB0 eXBlZGVmIHN0cnVjdCB7DQo+ICAgIFVJTlQ4ICAgICAgIEhvb2tBZnRlclN0dWJIZWFkZXJDb2Rl W0hPT0tBRlRFUl9TVFVCX1NJWkVdOw0KPiAgfSBSRVNFUlZFRF9WRUNUT1JTX0RBVEE7DQo+DQo+ ICsjcHJhZ21hIHBhY2sgKDEpDQo+ICsNCj4gKyNkZWZpbmUgRVhDRVBUSU9OX0xJU1RfTUFYICAg ICAgICA3DQo+ICsjZGVmaW5lIEVYQ0VQVElPTl9TVEFDS19TSVpFICAgICAgRUZJX1BBR0VfU0la RQ0KPiArI2RlZmluZSBJQTMyX0dEVF9UWVBFX1RTUyAgICAgICAgIDB4ODkNCj4gKyNkZWZpbmUg SUEzMl9HRFRfQUxJR05NRU5UICAgICAgICA4DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4g KyAgVUlOVDMyICAgIFJlc2VydmVkXzA7DQo+ICsgIFVJTlQ2NCAgICBSU1AwOw0KPiArICBVSU5U NjQgICAgUlNQMTsNCj4gKyAgVUlOVDY0ICAgIFJTUDI7DQo+ICsgIFVJTlQ2NCAgICBSZXNlcnZl ZF8yODsNCj4gKyAgVUlOVDY0ICAgIElTVFs3XTsNCj4gKyAgVUlOVDY0ICAgIFJlc2VydmVkXzky Ow0KPiArICBVSU5UMTYgICAgUmVzZXJ2ZWRfMTAwOw0KPiArICBVSU5UMTYgICAgSU9NYXBCYXNl QWRkcmVzczsNCj4gK30gSUEzMl9UQVNLX1NUQVRFX1NFR01FTlQ7DQo+ICsNCj4gK3R5cGVkZWYg c3RydWN0IHsNCj4gKyAgVUlOVDE2ICAgIExpbWl0MTVfMDsNCj4gKyAgVUlOVDE2ICAgIEJhc2Ux NV8wOw0KPiArICBVSU5UOCAgICAgQmFzZTIzXzE2Ow0KPiArICBVSU5UOCAgICAgVHlwZTsNCj4g KyAgVUlOVDggICAgIExpbWl0MTlfMTZfYW5kX2ZsYWdzOw0KPiArICBVSU5UOCAgICAgQmFzZTMx XzI0Ow0KPiArICBVSU5UMzIgICAgQmFzZTYzXzMyOw0KPiArICBVSU5UMzIgICAgUmVzZXJ2ZWQ7 DQo+ICt9IElBMzJfVFNTX0RFU0NSSVBUT1I7DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4g KyAgSUEzMl9UU1NfREVTQ1JJUFRPUiAgICAgICAgICAgVHNzU2VnOw0KPiArICBJQTMyX1RBU0tf U1RBVEVfU0VHTUVOVCAgICAgICBUc3M7DQo+ICt9IFRTU19FTlRSSUVTOw0KPiArDQo+ICsjcHJh Z21hIHBhY2sgKCkNCj4gKw0KPiArI2RlZmluZSBUU1NfU0VMICAgICAgICAgICBPRkZTRVRfT0Yg KFRTU19FTlRSSUVTLCBUc3NTZWcpDQo+ICsjZGVmaW5lIFRTU19PRkZTRVQgICAgICAgIE9GRlNF VF9PRiAoVFNTX0VOVFJJRVMsIFRzcykNCj4gKw0KPiAgI2VuZGlmDQo+IGRpZmYgLS1naXQNCj4g YS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0aW9u SGFuZGxlckFzbS5TDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJM aWIvWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20uUw0KPiBpbmRleCBlZGQzNjNjZGFhLi5iZGFmMTMy Y2Y1IDEwMDY0NA0KPiAtLS0gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxl ckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5TDQo+ICsrKw0KPiBiL1VlZmlDcHVQa2cvTGli cmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLlMNCj4g QEAgLTQyOSw2ICs0MjksMTggQEAgQVNNX1BGWChBc21WZWN0b3JOdW1GaXh1cCk6DQo+ICAgICAg cG9wcSAgICAgICVyYnANCj4gICAgICByZXQNCj4NCj4gKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Cj4gKyMgVk9JRA0KPiArIyBBc21Xcml0ZVRyICgNCj4gKyMgICBVSU5UMTYgU2VsZWN0b3INCj4g KyMgICApOw0KPiArIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArQVNNX0dMT0JBTCBBU01fUEZY KEFzbVdyaXRlVHIpDQo+ICtBU01fUEZYKEFzbVdyaXRlVHIpOg0KPiArICAgIG1vdmwgICAgJWVj eCwgJWVheA0KPiArICAgIGx0cncgICAgJWF4DQo+ICsgICAgcmV0DQo+ICsNCj4gICNFTkQNCj4N Cj4NCj4gZGlmZiAtLWdpdA0KPiBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5k bGVyTGliL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLmFzbQ0KPiBiL1VlZmlDcHVQa2cvTGlicmFy eS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5kbGVyQXNtLmFzbQ0KPiBp bmRleCA3MjZjNjRhMTQwLi5hZWM1NmVmNGJmIDEwMDY0NA0KPiAtLS0NCj4gYS9VZWZpQ3B1UGtn L0xpYnJhcnkvQ3B1RXhjZXB0aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5h c20NCj4gKysrDQo+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIv WDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20uYXNtDQo+IEBAIC0zODYsNCArMzg2LDE2IEBAIEFzbVZl Y3Rvck51bUZpeHVwICAgUFJPQw0KPiAgICAgIHJldA0KPiAgQXNtVmVjdG9yTnVtRml4dXAgICBF TkRQDQo+DQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICs7IFZPSUQNCj4gKzsgQXNtV3Jp dGVUciAoDQo+ICs7ICAgVUlOVDE2IFNlbGVjdG9yDQo+ICs7ICAgKTsNCj4gKzstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4gK0FzbVdyaXRlVHIgUFJPQyBQVUJMSUMNCj4gKyAgICBtb3YgICAgIGVh eCwgZWN4DQo+ICsgICAgbHRyICAgICBheA0KPiArICAgIHJldA0KPiArQXNtV3JpdGVUciBFTkRQ DQo+ICsNCj4gIEVORA0KPiBkaWZmIC0tZ2l0DQo+IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4 Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlvbkhhbmRsZXJBc20ubmFzbQ0KPiBiL1VlZmlD cHVQa2cvTGlicmFyeS9DcHVFeGNlcHRpb25IYW5kbGVyTGliL1g2NC9FeGNlcHRpb25IYW5kbGVy QXNtLm5hc20NCj4gaW5kZXggYmE4OTkzZDg0Yi4uMWUyYWM0MTFiMCAxMDA2NDQNCj4gLS0tDQo+ IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUV4Y2VwdGlvbkhhbmRsZXJMaWIvWDY0L0V4Y2VwdGlv bkhhbmRsZXJBc20ubmFzbQ0KPiArKysNCj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1RXhjZXB0 aW9uSGFuZGxlckxpYi9YNjQvRXhjZXB0aW9uSGFuZGxlckFzbS5uYXNtDQo+IEBAIC0zODUsMyAr Mzg1LDE1IEBAIEFTTV9QRlgoQXNtVmVjdG9yTnVtRml4dXApOg0KPiAgICAgIG1vdiAgICAgW3Jj eCArIChAVmVjdG9yTnVtIC0gSG9va0FmdGVyU3R1YkhlYWRlckJlZ2luKV0sIGFsDQo+ICAgICAg cmV0DQo+DQo+ICs7LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICs7IFZPSUQNCj4gKzsgQXNtV3Jp dGVUciAoDQo+ICs7ICAgVUlOVDE2IFNlbGVjdG9yDQo+ICs7ICAgKTsNCj4gKzstLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0NCj4gK2dsb2JhbCBBU01fUEZYKEFzbVdyaXRlVHIpDQo+ICtBU01fUEZYKEFz bVdyaXRlVHIpOg0KPiArICAgIG1vdiAgICAgZWF4LCBlY3gNCj4gKyAgICBsdHIgICAgIGF4DQo+ ICsgICAgcmV0DQo+ICsNCj4gLS0NCj4gMi4xNC4xLndpbmRvd3MuMQ0KDQpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KZWRrMi1kZXZlbCBtYWlsaW5nIGxp c3QNCmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxpc3RzLjAxLm9y Zz4NCmh0dHBzOi8vbGlzdHMuMDEub3JnL21haWxtYW4vbGlzdGluZm8vZWRrMi1kZXZlbA0KDQoN Cg==