From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-002e3701.pphosted.com (mx0a-002e3701.pphosted.com [148.163.147.86]) by mx.groups.io with SMTP id smtpd.web08.3850.1608101532660615199 for ; Tue, 15 Dec 2020 22:52:12 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@hpe.com header.s=pps0720 header.b=KbuvqsK0; spf=pass (domain: hpe.com, ip: 148.163.147.86, mailfrom: prvs=0619d1d483=abner.chang@hpe.com) Received: from pps.filterd (m0134421.ppops.net [127.0.0.1]) by mx0b-002e3701.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id 0BG6T355012914; Wed, 16 Dec 2020 06:52:12 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hpe.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pps0720; bh=QWNlu8RM158xfMFAwtSed1LD2xYJO3xGsbhthW+xhoo=; b=KbuvqsK02hSTCgXTrUHBrI43arVv4qddtRAjZ1gUbFOsLhzRaIdvo0erpWA13G1VtkSg Kp7ZzrDRA1x6oTgm3LT6+zC7wzrZJwkUTAu80Fx/mxHfkYzYOADB++iXwvhD1LMvxRwb v2d1/375buMb6nR+16zIRilqZ7yabv5pyf2QuSmFU4eOTF8TKzZ7F7JwUPRVUgTiLHE8 OBE/a7wV8QipkcjBin//sMhxZcw1a+BDMBCEJf55ezco0gFlf7N+tQWbqvrCiJ9+n7Kn dGyWdkbQY9g4Eq5qdZF2zAP+1navvdEV9Hs5nzxUQPCRYTGXrfqHIgPTf0KDGf5K2Q0I yQ== Received: from g4t3427.houston.hpe.com (g4t3427.houston.hpe.com [15.241.140.73]) by mx0b-002e3701.pphosted.com with ESMTP id 35ew3qqc1r-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Wed, 16 Dec 2020 06:52:11 +0000 Received: from G9W8455.americas.hpqcorp.net (exchangepmrr1.us.hpecorp.net [16.216.161.94]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by g4t3427.houston.hpe.com (Postfix) with ESMTPS id D46976F; Wed, 16 Dec 2020 06:52:10 +0000 (UTC) Received: from G4W9119.americas.hpqcorp.net (2002:10d2:14d6::10d2:14d6) by G9W8455.americas.hpqcorp.net (2002:10d8:a15e::10d8:a15e) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Wed, 16 Dec 2020 06:52:10 +0000 Received: from NAM02-BL2-obe.outbound.protection.outlook.com (15.241.52.10) by G4W9119.americas.hpqcorp.net (16.210.20.214) with Microsoft SMTP Server (TLS) id 15.0.1497.2 via Frontend Transport; Wed, 16 Dec 2020 06:52:10 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f6QPFt74Ps9532C/kkU5Z1PgUZOwiZgI2eShQtZXuFzl9MrxTQZqmzX2V1tDAW+I1q54t5MQysV+6RfnU16N964VLpgfIj2wBn2U3b2cOnIn/apHhz32vtwksBEJ9eVIZtEWJrDwCJNWIspeGU2auNs0/05eqV5IxtrRPcpZ/ybEqhfiblaNFhfiiQGalXoqBwepWlXkT2w4LrjyIaQuhQOrrZHZSj7197bgtSc1vMT/9qLCyi5sOOE2waZVKBbmqcG1dEcp5zQz1ah7ykikvk0OGtYSVgNreZdr7dPEkd6yd9u0Kpi2gLAoFSUS3k/pXIG6LMgJGhOfcXRImgxqCw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vq9hWX84VtW0giTIjdU5RQ329xmlJxLULdx4ThWhP0w=; b=Y7uNrFe1A7woEQTOjEaAjITln0DlHOa8osQTqH8mMWXwvE4ERH1vp9KZ8EPhQRXW2Ik0ndwPmkiCqOzpEGvurKBierh8VnxOTt/jk4oGx/xRQd5LsSEmrI+lzibd2ZQT7WkIkF1d6Bj7y14YPDmzz+YivQWixF2Bb/IZVgM4Jqw/WXoaDnzrnY5RoJQnV22RU0JZ6ry/m4IB9KaUMpdQXNPAgc3nWYEYAjoHv7oww2gscRvFR5ZWlimCOi399+R1naHAvExz7cWNQHaX5Ez7zYd1dw3/wngCcoJov7X+mnwhQyAIHuR1pCSNCA4iakYlbqiFKOoy+RECBPYvk/LkEg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hpe.com; dmarc=pass action=none header.from=hpe.com; dkim=pass header.d=hpe.com; arc=none Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7508::16) by CS1PR8401MB0646.NAMPRD84.PROD.OUTLOOK.COM (2a01:111:e400:7514::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3654.14; Wed, 16 Dec 2020 06:52:05 +0000 Received: from CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::a094:ed67:fb40:340e]) by CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM ([fe80::a094:ed67:fb40:340e%10]) with mapi id 15.20.3654.025; Wed, 16 Dec 2020 06:52:05 +0000 From: "Abner Chang" To: "devel@edk2.groups.io" , "michael.d.kinney@intel.com" CC: Leif Lindholm , "Wang, Nickle (HPS SW)" , "O'Hanley, Peter (EXL)" Subject: Re: [edk2-devel] [PATCH v6 3/6] RedfishPkg/CrtLib: C runtime library Thread-Topic: [edk2-devel] [PATCH v6 3/6] RedfishPkg/CrtLib: C runtime library Thread-Index: AQHW0jt/9ZknCiqcYkm8poCnEy7pLKn5S2FA Date: Wed, 16 Dec 2020 06:52:04 +0000 Message-ID: References: <20201214035321.17000-1-abner.chang@hpe.com> <20201214035321.17000-4-abner.chang@hpe.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=hpe.com; x-originating-ip: [16.242.247.131] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 320ad7fe-70b5-4fbd-ed1e-08d8a18f195c x-ms-traffictypediagnostic: CS1PR8401MB0646: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hYqeLuRlR2SKIu3bW4Y887Ud3+eRlyMhiMgJbYKx9cZtQjvFDXNIGVm8u5Ytw6JCvkWuTvYi3eIlsFC8mu7ue9r67pWL6TxM1BeEyKSH/Cl394ZfJDtnElCff0/xQh6B2dIjxwkoW8Uizzkrl4JnxV2Mtejs+0nHrLkzR/2GLSANBWg2ZV7QQtULem8BiMb1lAVF49tSOmZf838HD3r3d4pI2uEAsnAsdVtvrlVcX4EktYdKWd1ruaAQ+Tt4LwUuLB3rlC1EiB+bHOulkMR3zoK8RGtG5WKUztbHR+DdWnQ2dH+7LVX3ca8n7a6h6qyFHOTLacW+XwQU3SH6UapdSZ5x+IhWf7LUWOXjs7xJ8h0VViTwx4DYCxPvEE6heONrK/gP7+a9vJoaSOKdimpRdPKO4dAqvRYrr7BSAz4+CezBWGRZEH54Eys65kNPoM8b2N0t60BXtUTUTQ/QwrHzyWagg2SNDee2Rz6VlH2WaDw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(396003)(136003)(376002)(39860400002)(366004)(346002)(26005)(4326008)(5660300002)(76116006)(30864003)(54906003)(6506007)(66556008)(7696005)(316002)(66476007)(53546011)(64756008)(66946007)(83380400001)(2906002)(110136005)(9686003)(71200400001)(966005)(66446008)(52536014)(478600001)(8936002)(19627235002)(186003)(86362001)(33656002)(55016002)(8676002)(461764006)(21314003)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?TjBzK21mWkE5b3JST29DU09oWHlwNEdYZStYY01KZHdHVWJUSVBUWGZzV0pI?= =?utf-8?B?azNTRmMweGpkOFNJNGRkQjA2Q1R4NXRyOU9od3VFWWpZVW1samNOcmd1OWYx?= =?utf-8?B?eDdMTVhuckhFTCs4blF6UmhMRXZkbzVveW9HenVZeDdmUmxLVzJ2T2FaaFQy?= =?utf-8?B?RWROcm52TjN3cjNrSlNpQndTVXZuVVoxL29ZSHdPUGlaYkxSVFdVRHRXY1NQ?= =?utf-8?B?VlNqNTdBWFdwTnZxRkQ0ZUU4SW85TllsVXdlWkFxOWRac05kd2E0and5cmpH?= =?utf-8?B?Rmt4NXllR2xabzRaZlBFS1ZGd0RvU2ZYUkdaSnZ3MitMOVBBc2NHS2p6YjRK?= =?utf-8?B?RE5henk3cW81NWd6OHJKNEN0bTRZQWQ4QTVxQzdsWDIrTnArbmdXZy9GOGx6?= =?utf-8?B?OXpmL292Q0hXakxsZy9tRC84emdzSEZscVVOa1hQZHp1UXFLa2hoZ3J5bVlO?= =?utf-8?B?WWtVbnlWR2x5bEErVzNITExGQzZMakNpam00Tk10VkVWRXgvTTluQ2dUNWho?= =?utf-8?B?RUpTaGM5UXF4R09xUTFOWmg2NVpYZ3d3OC96bDlkSTNyZFNoQVUrTldBVTc0?= =?utf-8?B?WHFRYyt5Y1JHeithT0Y5eVNjbjVrajRPQkROaW1BUlFRSSs2Nzd6dWFQUmJi?= =?utf-8?B?aTRUQjlXUTNkK0FnZFk4L0M4bHRISnBlYXE3OWwvU3R3cVRLdTJTSmIwaWdt?= =?utf-8?B?NjZ2NFZ2azE0cER1TUF5L2FoZndnbEZDNTV4ZHN1WHptenlkcHJNeVB2dndN?= =?utf-8?B?NjRicU5qV3VTL0hGZ283Vi9NK0krdnRlMTI2TStpK29sejVtZk41Zk5ESTZX?= =?utf-8?B?MmMxTDNyR0ZVdzd1Q1FPTlRaQmI4dnEyVi9kc1NtWTVnRUREWENLa3N5V3ZN?= =?utf-8?B?MmJPdktQUDNSY09DYTZ0dFdZRUFXUHhUcmVyQURjRFFtalZsU2lCQy9QaDNM?= =?utf-8?B?VmxYMnRXd0tReTNtZDUxQUwvZVRJTkJUWk42N3ExZjFKSTFHNUw3S0gzcnVT?= =?utf-8?B?SjNIdW9MMUo1RDJVMFdvVU1KR0VhdlZUNlpQMUl2ZHZNNU1VbTVKbnEyYzhs?= =?utf-8?B?Z0tNdzlxMVFBQUlQbldFUGZlNWJhRVpTbDFJQ2ttb3ZYZFlFdHUrdHhPeGJw?= =?utf-8?B?U1BTQ3NXMVlMTnY3Z3ArQVNoclNhSDl3UkRDdlJmMXNIN3VIZkdVQk1UR1ZV?= =?utf-8?B?LzZFNm11NXArYlY0djhhTHFHTmd1SiswU1YyR2tZWk82ZWFKeEdrVkdQUlBx?= =?utf-8?B?T2tseUNUdW16eWRVWnpQYUV4SzFTclhHMFBmcWdCRnN1K3ZXSXVMMlhuUi8v?= =?utf-8?Q?iGada2bIjDic0=3D?= X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CS1PR8401MB1144.NAMPRD84.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: 320ad7fe-70b5-4fbd-ed1e-08d8a18f195c X-MS-Exchange-CrossTenant-originalarrivaltime: 16 Dec 2020 06:52:04.9891 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 105b2061-b669-4b31-92ac-24d304d195dc X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: PSOka0kRSTWnSAsZQ9R74pymahdhPTVgIEttik03Inll4kN3jZQV4HIBoESpWFhyg+h87ldAkuSm8ymS5dkEWg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CS1PR8401MB0646 X-OriginatorOrg: hpe.com X-Proofpoint-UnRewURL: 0 URL was un-rewritten MIME-Version: 1.0 X-HPE-SCL: -1 X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.343,18.0.737 definitions=2020-12-16_02:2020-12-15,2020-12-16 signatures=0 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 lowpriorityscore=0 bulkscore=0 priorityscore=1501 clxscore=1015 malwarescore=0 impostorscore=0 mlxscore=0 adultscore=0 phishscore=0 suspectscore=0 mlxlogscore=999 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2009150000 definitions=main-2012160040 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 RG9uZS4gRml4IGluIG5leHQgc2V0IG9mIHBhdGNoZXMuDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gW21haWx0bzpkZXZlbEBlZGsy Lmdyb3Vwcy5pb10gT24gQmVoYWxmIE9mDQo+IE1pY2hhZWwgRCBLaW5uZXkNCj4gU2VudDogVHVl c2RheSwgRGVjZW1iZXIgMTUsIDIwMjAgMTowNyBBTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMu aW87IENoYW5nLCBBYm5lciAoSFBTIFNXL0ZXIFRlY2hub2xvZ2lzdCkNCj4gPGFibmVyLmNoYW5n QGhwZS5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ DQo+IENjOiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT47IFdhbmcsIE5pY2tsZSAo SFBTIFNXKQ0KPiA8bmlja2xlLndhbmdAaHBlLmNvbT47IE8nSGFubGV5LCBQZXRlciAoRVhMKSA8 cGV0ZXIub2hhbmxleUBocGUuY29tPg0KPiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxdIFtQQVRD SCB2NiAzLzZdIFJlZGZpc2hQa2cvQ3J0TGliOiBDIHJ1bnRpbWUgbGlicmFyeQ0KPiANCj4gSWYg Q3J0TGliIGlzIGEgY3VzdG9tIGxpYnJhcnkgdG8gc3VwcG9ydCB1c2Ugb2YgIGphbnNzb24sIHRo ZW4gaXQgc2hvdWxkIGdvIGludG8gYQ0KPiBwcml2YXRlIGluY2x1ZGUgZGlyZWN0b3J5IGluIFJl ZEZpc2hQa2csIG5vdCB0aGUgcHVibGljIGluY2x1ZGUgZGlyZWN0b3J5Lg0KPiANCj4gVGhlIG9u bHkgaW5jbHVkZSBmaWxlcyB0aGF0IHNob3VsZCBnbyBpbnRvIHRoZSBwdWJsaWMgaW5jbHVkZSBk aXJlY3Rvcnkgb2YgYQ0KPiBwYWNrYWdlIGFyZSBpbmNsdWRlIGZpbGVzIHRoYXQgYXJlIGF2YWls YWJsZSB0byBtb2R1bGVzL2xpYnMgaW1wbGVtZW50ZWQNCj4gb3V0c2lkZSB0aGUgUmVkRmlzaFBr Zy4gIFBsZWFzZSByZXZpZXcgYWxsIHRoZSBpbmNsdWRlIGZpbGVzIGluIFJlZEZpc2hQa2cgd2l0 aA0KPiB0aGlzIGluIG1pbmQuDQo+IA0KPiBNaWtlDQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gPGRldmVsQGVkazIuZ3Jv dXBzLmlvPiBPbiBCZWhhbGYgT2YgQWJuZXINCj4gPiBDaGFuZw0KPiA+IFNlbnQ6IFN1bmRheSwg RGVjZW1iZXIgMTMsIDIwMjAgNzo1MyBQTQ0KPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0K PiA+IENjOiBMZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT47IE5pY2tsZSBXYW5nDQo+ ID4gPG5pY2tsZS53YW5nQGhwZS5jb20+OyBQZXRlciBPJ0hhbmxleSA8cGV0ZXIub2hhbmxleUBo cGUuY29tPg0KPiA+IFN1YmplY3Q6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjYgMy82XSBSZWRmaXNo UGtnL0NydExpYjogQyBydW50aW1lDQo+ID4gbGlicmFyeQ0KPiA+DQo+ID4gQ1JUIGxpYnJhcnkg aXMgY3VycmVudGx5IHVzZWQgYnkgZWRrMiBKc29uTGliIChvcGVuIHNvdXJjZSBqYW5zc29uDQo+ ID4gcHJvamVjdCkgYW5kIGVkazIgUmVkZmlzaExpYiAobGlicmVkZmlzaCBvcGVuIHNvdXJjZSBw cm9qZWN0KS4gQ3J0TGliDQo+ID4gbGlicmFyeSBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IEMgcnVu dGltZSBlcXVpdmFsZW50IGVkazIgZnVuY3Rpb25zIGZvcg0KPiA+IG9wZW4gc291cmNlIHByb2pl Y3RzLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogQWJuZXIgQ2hhbmcgPGFibmVyLmNoYW5nQGhw ZS5jb20+DQo+ID4NCj4gPiBDYzogTGVpZiBMaW5kaG9sbSA8bGVpZkBudXZpYWluYy5jb20+DQo+ ID4gQ2M6IE5pY2tsZSBXYW5nIDxuaWNrbGUud2FuZ0BocGUuY29tPg0KPiA+IENjOiBQZXRlciBP J0hhbmxleSA8cGV0ZXIub2hhbmxleUBocGUuY29tPg0KPiA+IC0tLQ0KPiA+ICBSZWRmaXNoUGtn L0luY2x1ZGUvQ3J0L2Fzc2VydC5oICAgICAgfCAgMTYgKw0KPiA+ICBSZWRmaXNoUGtnL0luY2x1 ZGUvQ3J0L2Vycm5vLmggICAgICAgfCAgMTYgKw0KPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0 L2xpbWl0cy5oICAgICAgfCAgMTYgKw0KPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L21hdGgu aCAgICAgICAgfCAgMTYgKw0KPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGFyZy5oICAg ICAgfCAgMTUgKw0KPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGRlZi5oICAgICAgfCAg MTYgKw0KPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGlvLmggICAgICAgfCAgMTUgKw0K PiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGxpYi5oICAgICAgfCAgMTYgKw0KPiA+ICBS ZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0cmluZy5oICAgICAgfCAgMTYgKw0KPiA+ICBSZWRmaXNo UGtnL0luY2x1ZGUvQ3J0L3N5cy90aW1lLmggICAgfCAgMTUgKw0KPiA+ICBSZWRmaXNoUGtnL0lu Y2x1ZGUvQ3J0L3N5cy90eXBlcy5oICAgfCAgMTUgKw0KPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUv Q3J0L3RpbWUuaCAgICAgICAgfCAgMTUgKw0KPiA+ICBSZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFy eS9DcnRMaWIuaCAgfCAxOTUgKysrKysrKysNCj4gPiAgUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExp Yi9DcnRMaWIuYyAgIHwgNzA1DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKw0KPiA+ICBS ZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExpYi5pbmYgfCAgMzcgKysNCj4gPiAgUmVkZmlz aFBrZy9SZWRmaXNoTGlicy5kc2MuaW5jICAgICAgIHwgICAxICsNCj4gPiAgUmVkZmlzaFBrZy9S ZWRmaXNoUGtnLmNpLnlhbWwgICAgICAgIHwgIDE5ICsNCj4gPiAgUmVkZmlzaFBrZy9SZWRmaXNo UGtnLmRlYyAgICAgICAgICAgIHwgICA4ICsNCj4gPiAgUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRz YyAgICAgICAgICAgIHwgICAxICsNCj4gPiAgMTkgZmlsZXMgY2hhbmdlZCwgMTE1MyBpbnNlcnRp b25zKCspDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Fz c2VydC5oICBjcmVhdGUgbW9kZQ0KPiA+IDEwMDY0NCBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Vy cm5vLmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvbGlt aXRzLmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvbWF0 aC5oICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGFy Zy5oICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGRl Zi5oICBjcmVhdGUgbW9kZSAxMDA2NDQNCj4gPiBSZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGlv LmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkbGli LmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RyaW5n LmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3Rp bWUuaCAgY3JlYXRlIG1vZGUgMTAwNjQ0DQo+ID4gUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zeXMv dHlwZXMuaA0KPiA+ICBjcmVhdGUgbW9kZSAxMDA2NDQgUmVkZmlzaFBrZy9JbmNsdWRlL0NydC90 aW1lLmggIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiA+IFJlZGZpc2hQa2cvSW5jbHVkZS9MaWJyYXJ5 L0NydExpYi5oDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0xpYnJhcnkvQ3J0 TGliL0NydExpYi5jDQo+ID4gIGNyZWF0ZSBtb2RlIDEwMDY0NCBSZWRmaXNoUGtnL0xpYnJhcnkv Q3J0TGliL0NydExpYi5pbmYNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1 ZGUvQ3J0L2Fzc2VydC5oDQo+ID4gYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Fzc2VydC5oIG5l dyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMC4uZjlhYjdlZjljYQ0KPiA+ IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Fzc2VydC5o DQo+ID4gQEAgLTAsMCArMSwxNiBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBJbmNsdWRlIGZp bGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0K PiA+ICsNCj4gPiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCBy aWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFj a2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+ICsNCj4gPiArICAgIFNQRFgt TGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8N Cj4gPiArDQo+ID4gKyNpZm5kZWYgQ1JUX0FTU0VSVF9IXw0KPiA+ICsjZGVmaW5lIENSVF9BU1NF UlRfSF8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiA+ICsNCj4g PiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvZXJybm8u aA0KPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9lcnJuby5oIG5ldyBmaWxlIG1vZGUgMTAw NjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMC4uZDMwYWVlMTRkZQ0KPiA+IC0tLSAvZGV2L251bGwN Cj4gPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L2Vycm5vLmgNCj4gPiBAQCAtMCwwICsx LDE2IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1 aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ID4gKw0KPiA+ICsgQ29w eXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48 QlI+DQo+ID4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2Ug RGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gKw0KPiA+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lm bmRlZiBDUlRfRVJSTk9fSF8NCj4gPiArI2RlZmluZSBDUlRfRVJSTk9fSF8NCj4gPiArDQo+ID4g KyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlm ZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvbGltaXRzLmgNCj4gPiBiL1JlZGZpc2hQ a2cvSW5jbHVkZS9DcnQvbGltaXRzLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gPiAw MDAwMDAwMDAwLi5mM2JkZDMzZjJhDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1JlZGZp c2hQa2cvSW5jbHVkZS9DcnQvbGltaXRzLmgNCj4gPiBAQCAtMCwwICsxLDE2IEBADQo+ID4gKy8q KiBAZmlsZQ0KPiA+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGly ZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ID4gKw0KPiA+ICsgQ29weXJpZ2h0IChjKSAyMDE5 LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAoQykg Q29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8 QlI+DQo+ID4gKw0KPiA+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVz ZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsNCj4gPiArI2lmbmRlZiBDUlRfTElNSVRT X0hfDQo+ID4gKyNkZWZpbmUgQ1JUX0xJTUlUU19IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPExp YnJhcnkvQ3J0TGliLmg+DQo+ID4gKw0KPiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvUmVk ZmlzaFBrZy9JbmNsdWRlL0NydC9tYXRoLmgNCj4gPiBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQv bWF0aC5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMC4uOTg0YzBj Y2MyMQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0 L21hdGguaA0KPiA+IEBAIC0wLDAgKzEsMTYgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgSW5j bHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGli cmFyeS4NCj4gPiArDQo+ID4gKyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXds ZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiArDQo+ID4gKyAg ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4g PiArKiovDQo+ID4gKw0KPiA+ICsjaWZuZGVmIENSVF9NQVRIX0hfDQo+ID4gKyNkZWZpbmUgQ1JU X01BVEhfSF8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiA+ICsN Cj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3Rk YXJnLmgNCj4gPiBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkYXJnLmggbmV3IGZpbGUgbW9k ZSAxMDA2NDQgaW5kZXgNCj4gPiAwMDAwMDAwMDAwLi5kNWEzMTRhZDNiDQo+ID4gLS0tIC9kZXYv bnVsbA0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkYXJnLmgNCj4gPiBAQCAt MCwwICsxLDE1IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBw b3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ID4gKw0KPiA+ ICsgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gKyAoQykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVy cHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gKw0KPiA+ICsgICAgU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsjaWZu ZGVmIENSVF9TVERBUkdfSF8NCj4gPiArI2RlZmluZSBDUlRfU1REQVJHX0hfDQo+ID4gKw0KPiA+ ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRp ZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGRlZi5oDQo+ID4gYi9SZWRmaXNo UGtnL0luY2x1ZGUvQ3J0L3N0ZGRlZi5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4g MDAwMDAwMDAwMC4uMTVhMzdiZjUwZQ0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRm aXNoUGtnL0luY2x1ZGUvQ3J0L3N0ZGRlZi5oDQo+ID4gQEAgLTAsMCArMSwxNiBAQA0KPiA+ICsv KiogQGZpbGUNCj4gPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhp cmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiA+ICsNCj4gPiArIENvcHlyaWdodCAoYykgMjAx OSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgKEMp IENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQ PEJSPg0KPiA+ICsNCj4gPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1 c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgQ1JUX1NURERF Rl9IXw0KPiA+ICsjZGVmaW5lIENSVF9TVERERUZfSF8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxM aWJyYXJ5L0NydExpYi5oPg0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL1Jl ZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3RkaW8uaA0KPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC9zdGRpby5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMC4uMjVl NjEwYmUxMA0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9SZWRmaXNoUGtnL0luY2x1ZGUv Q3J0L3N0ZGlvLmgNCj4gPiBAQCAtMCwwICsxLDE1IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsg IEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0aGlyZC1wYXJ0eSBqYW5zc29u IGxpYnJhcnkuDQo+ID4gKw0KPiA+ICsgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAoQykgQ29weXJpZ2h0IDIwMjAg SGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gKw0KPiA+ ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPiAr DQo+ID4gKyoqLw0KPiA+ICsjaWZuZGVmIENSVF9TVERJT19IXw0KPiA+ICsjZGVmaW5lIENSVF9T VERJT19IXw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvQ3J0TGliLmg+DQo+ID4gKw0K PiA+ICsjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRs aWIuaA0KPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaCBuZXcgZmlsZSBtb2Rl IDEwMDY0NCBpbmRleA0KPiA+IDAwMDAwMDAwMDAuLjViM2RkMjczYzgNCj4gPiAtLS0gL2Rldi9u dWxsDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0NydC9zdGRsaWIuaA0KPiA+IEBAIC0w LDAgKzEsMTYgQEANCj4gPiArLyoqIEBmaWxlDQo+ID4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBv cnQgYnVpbGRpbmcgdGhlIHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gPiArDQo+ID4g KyBDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLjxCUj4NCj4gPiArIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJw cmlzZSBEZXZlbG9wbWVudCBMUDxCUj4NCj4gPiArDQo+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRl bnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ ICsjaWZuZGVmIENSVF9TVERMSUJfSF8NCj4gPiArI2RlZmluZSBDUlRfU1RETElCX0hfDQo+ID4g Kw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gPiArDQo+ID4gKyNlbmRpZg0K PiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0cmluZy5oDQo+ID4gYi9S ZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0cmluZy5oIG5ldyBmaWxlIG1vZGUgMTAwNjQ0IGluZGV4 DQo+ID4gMDAwMDAwMDAwMC4uZjYwYjg3Y2NkMg0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiArKysg Yi9SZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N0cmluZy5oDQo+ID4gQEAgLTAsMCArMSwxNiBAQA0K PiA+ICsvKiogQGZpbGUNCj4gPiArICBJbmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0 aGUgdGhpcmQtcGFydHkgamFuc3NvbiBsaWJyYXJ5Lg0KPiA+ICsNCj4gPiArIENvcHlyaWdodCAo YykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ ICsgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3Bt ZW50IExQPEJSPg0KPiA+ICsNCj4gPiArICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpZm5kZWYgQ1JU X1NUUklOR19IXw0KPiA+ICsjZGVmaW5lIENSVF9TVFJJTkdfSF8NCj4gPiArDQo+ID4gKyNpbmNs dWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiA+ICsNCj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdp dCBhL1JlZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3RpbWUuaA0KPiA+IGIvUmVkZmlzaFBrZy9J bmNsdWRlL0NydC9zeXMvdGltZS5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRl eCAwMDAwMDAwMDAwLi40Y2VkMTc2Y2RhDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1Jl ZGZpc2hQa2cvSW5jbHVkZS9DcnQvc3lzL3RpbWUuaA0KPiA+IEBAIC0wLDAgKzEsMTUgQEANCj4g PiArLyoqIEBmaWxlDQo+ID4gKyAgSW5jbHVkZSBmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgdGhl IHRoaXJkLXBhcnR5IGphbnNzb24gbGlicmFyeS4NCj4gPiArDQo+ID4gKyBDb3B5cmlnaHQgKGMp IDIwMTksIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiAr IChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZlbG9wbWVu dCBMUDxCUj4NCj4gPiArDQo+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTIt Q2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKyNpZm5kZWYgQ1JUX1NZU19USU1F X0hfDQo+ID4gKyNkZWZpbmUgQ1JUX1NZU19USU1FX0hfDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8 TGlicmFyeS9DcnRMaWIuaD4NCj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9S ZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3N5cy90eXBlcy5oDQo+ID4gYi9SZWRmaXNoUGtnL0luY2x1 ZGUvQ3J0L3N5cy90eXBlcy5oDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAw MDAwMDAwMDAwLi5jNGY4MDcyMTRjDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1JlZGZp c2hQa2cvSW5jbHVkZS9DcnQvc3lzL3R5cGVzLmgNCj4gPiBAQCAtMCwwICsxLDE1IEBADQo+ID4g Ky8qKiBAZmlsZQ0KPiA+ICsgIEluY2x1ZGUgZmlsZSB0byBzdXBwb3J0IGJ1aWxkaW5nIHRoZSB0 aGlyZC1wYXJ0eSBqYW5zc29uIGxpYnJhcnkuDQo+ID4gKw0KPiA+ICsgQ29weXJpZ2h0IChjKSAy MDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyAo QykgQ29weXJpZ2h0IDIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQg TFA8QlI+DQo+ID4gKw0KPiA+ICsgICAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNs YXVzZS1QYXRlbnQNCj4gPiArDQo+ID4gKyoqLw0KPiA+ICsjaWZuZGVmIENSVF9TWVNfVFlQRVNf SF8NCj4gPiArI2RlZmluZSBDUlRfU1lTX1RZUEVTX0hfDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8 TGlicmFyeS9DcnRMaWIuaD4NCj4gPiArDQo+ID4gKyNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9S ZWRmaXNoUGtnL0luY2x1ZGUvQ3J0L3RpbWUuaA0KPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0Ny dC90aW1lLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gPiAwMDAwMDAwMDAwLi5jYTA0 YWM4NzMwDQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvSW5jbHVkZS9D cnQvdGltZS5oDQo+ID4gQEAgLTAsMCArMSwxNSBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBJ bmNsdWRlIGZpbGUgdG8gc3VwcG9ydCBidWlsZGluZyB0aGUgdGhpcmQtcGFydHkgamFuc3NvbiBs aWJyYXJ5Lg0KPiA+ICsNCj4gPiArIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRp b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ICsgKEMpIENvcHlyaWdodCAyMDIwIEhl d2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+ICsNCj4gPiAr ICAgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArI2lmbmRlZiBDUlRfVElNRV9IXw0KPiA+ICsjZGVmaW5lIENSVF9USU1F X0hfDQo+ID4gKw0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9DcnRMaWIuaD4NCj4gPiArDQo+ID4g KyNlbmRpZg0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL0luY2x1ZGUvTGlicmFyeS9DcnRM aWIuaA0KPiA+IGIvUmVkZmlzaFBrZy9JbmNsdWRlL0xpYnJhcnkvQ3J0TGliLmgNCj4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjhjNzQ4NGU3NWINCj4gPiAt LS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9JbmNsdWRlL0xpYnJhcnkvQ3J0TGli LmgNCj4gPiBAQCAtMCwwICsxLDE5NSBAQA0KPiA+ICsvKiogQGZpbGUNCj4gPiArICBDUlQgd3Jh cHBlciBoZWFkIGZ1bmN0aW9ucyBmb3IgamFuc3NvbiBzeXN0ZW0gY2FsbC4NCj4gPiArDQo+ID4g KyAgQ29weXJpZ2h0IChjKSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNl cnZlZC48QlI+DQo+ID4gKyAgKEMpIENvcHlyaWdodCAyMDIwIEhld2xldHQgUGFja2FyZCBFbnRl cnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+ICsNCj4gPiArICAgIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ ID4gKyNpZm5kZWYgQ1JUX0xJQl9IXw0KPiA+ICsjZGVmaW5lIENSVF9MSUJfSF8NCj4gPiArDQo+ ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkv QmFzZU1lbW9yeUxpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ ICsjaW5jbHVkZSA8TGlicmFyeS9QcmludExpYi5oPg0KPiA+ICsNCj4gPiArI2RlZmluZSBNQVhf U1RSSU5HX1NJWkUgIDB4MTAwMDAwMDANCj4gPiArDQo+ID4gKy8vIE1pbmltdW0gdmFsdWUgZm9y IGFuIG9iamVjdCBvZiB0eXBlIGxvbmcgbG9uZyBpbnQuDQo+ID4gKyNkZWZpbmUgTExPTkdfTUlO ICAgTUlOX0lOVDY0DQo+ID4gKw0KPiA+ICsvLyBNYXhpbXVtIHZhbHVlIGZvciBhbiBvYmplY3Qg b2YgdHlwZSBsb25nIGxvbmcgaW50Lg0KPiA+ICsjZGVmaW5lIExMT05HX01BWCAgIE1BWF9JTlQ2 NA0KPiA+ICsNCj4gPiArLy8gV2UgZG9udCBzdXBwb3J0IGRvdWJsZSBvbiBlZGsyDQo+ID4gKyNk ZWZpbmUgSFVHRV9WQUwgICAgMA0KPiA+ICsNCj4gPiArI2lmIGRlZmluZWQoTURFX0NQVV9YNjQp IHx8IGRlZmluZWQoTURFX0NQVV9BQVJDSDY0KSB8fA0KPiA+ICtkZWZpbmVkKE1ERV9DUFVfSUE2 NCkgfHwgZGVmaW5lZChNREVfQ1BVX1JJU0NWNjQpIC8vIC8vIFdpdGggR0NDDQo+IHdlDQo+ID4g K3dvdWxkIG5vcm1hbGx5IHVzZSBTSVhUWV9GT1VSX0JJVF9MT05HLCBidXQgTVNWQyBuZWVkcyAv Lw0KPiA+ICtTSVhUWV9GT1VSX0JJVCwgYmVjYXVzZSAnbG9uZycgaXMgMzItYml0IGFuZCBvbmx5 ICdsb25nIGxvbmcnIGlzIC8vDQo+ID4gKzY0LWJpdC4gU2luY2UgdXNpbmcgJ2xvbmcgbG9uZycg d29ya3MgZmluZSBvbiBHQ0MgdG9vLCBqdXN0IGRvIHRoYXQuDQo+ID4gKy8vDQo+ID4gKyNkZWZp bmUgU0lYVFlfRk9VUl9CSVQNCj4gPiArI2VsaWYgZGVmaW5lZChNREVfQ1BVX0lBMzIpIHx8IGRl ZmluZWQoTURFX0NQVV9BUk0pIHx8DQo+ID4gK2RlZmluZWQoTURFX0NQVV9FQkMpICNkZWZpbmUg VEhJUlRZX1RXT19CSVQgI2VuZGlmDQo+ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBNYXAgYWxsIHZh X3h4eHggZWxlbWVudHMgdG8gVkFfeHh4IGRlZmluZWQgaW4NCj4gPiArTWRlUGtnL0luY2x1ZGUv QmFzZS5oIC8vICNpZiAhZGVmaW5lZChfX0NDX0FSTSkgLy8gaWYgdmFfbGlzdCBpcyBub3QNCj4g PiArYWxyZWFkeSBkZWZpbmVkDQo+ID4gKyNkZWZpbmUgdmFfbGlzdCAgIFZBX0xJU1QNCj4gPiAr I2RlZmluZSB2YV9hcmcgICAgVkFfQVJHDQo+ID4gKyNkZWZpbmUgdmFfc3RhcnQgIFZBX1NUQVJU DQo+ID4gKyNkZWZpbmUgdmFfZW5kICAgIFZBX0VORA0KPiA+ICsjZWxzZSAvLyBfX0NDX0FSTQ0K PiA+ICsjZGVmaW5lIHZhX3N0YXJ0KE1hcmtlciwgUGFyYW1ldGVyKSAgIF9fdmFfc3RhcnQoTWFy a2VyLCBQYXJhbWV0ZXIpDQo+ID4gKyNkZWZpbmUgdmFfYXJnKE1hcmtlciwgVFlQRSkgICAgICAg ICAgX192YV9hcmcoTWFya2VyLCBUWVBFKQ0KPiA+ICsjZGVmaW5lIHZhX2VuZChNYXJrZXIpICAg ICAgICAgICAgICAgICgodm9pZCkwKQ0KPiA+ICsjZW5kaWYNCj4gPiArDQo+ID4gKy8vDQo+ID4g Ky8vIERlZmluaXRpb25zIGZvciBnbG9iYWwgY29uc3RhbnRzIHVzZWQgYnkgQ1JUIGxpYnJhcnkg cm91dGluZXMgLy8NCj4gPiArI2RlZmluZSBJTlRfTUFYICAgICAgTUFYX0lOVDMyICAgICAgICAv KiBNYXhpbXVtIChzaWduZWQpIGludCB2YWx1ZSAqLw0KPiA+ICsjZGVmaW5lIExPTkdfTUFYICAg ICAwWDdGRkZGRkZGTCAgICAgIC8qIG1heCB2YWx1ZSBmb3IgYSBsb25nICovDQo+ID4gKyNkZWZp bmUgTE9OR19NSU4gICAgICgtTE9OR19NQVgtMSkgICAgLyogbWluIHZhbHVlIGZvciBhIGxvbmcg Ki8NCj4gPiArI2RlZmluZSBVTE9OR19NQVggICAgMHhGRkZGRkZGRiAgICAgICAvKiBNYXhpbXVt IHVuc2lnbmVkIGxvbmcgdmFsdWUNCj4gKi8NCj4gPiArI2RlZmluZSBDSEFSX0JJVCAgICAgOCAg ICAgICAgICAgICAgICAvKiBOdW1iZXIgb2YgYml0cyBpbiBhIGNoYXIgKi8NCj4gPiArDQo+ID4g Ky8vIE1heGltdW0gdmFsdWUgZm9yIGFuIG9iamVjdCBvZiB0eXBlIHVuc2lnbmVkIGxvbmcgbG9u ZyBpbnQuDQo+ID4gKyNkZWZpbmUgVUxMT05HX01BWCAgMHhGRkZGRkZGRkZGRkZGRkZGVUxMIC8v IDJeNjQgLSAxIC8vIE1heGltdW0NCj4gPiArdmFsdWUgZm9yIGFuIG9iamVjdCBvZiB0eXBlIHVu c2lnbmVkIGNoYXIuDQo+ID4gKyNkZWZpbmUgVUNIQVJfTUFYICAgMjU1ICAvLyAyXjggLSAxDQo+ ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBCYXNpYyB0eXBlcyBtYXBwaW5nDQo+ID4gKy8vDQo+ID4g K3R5cGVkZWYgVUlOVE4gICAgICAgICAgc2l6ZV90Ow0KPiA+ICt0eXBlZGVmIElOVE4gICAgICAg ICAgIHNzaXplX3Q7DQo+ID4gK3R5cGVkZWYgSU5UMzIgICAgICAgICAgdGltZV90Ow0KPiA+ICt0 eXBlZGVmIFVJTlQ4ICAgICAgICAgIF9fdWludDhfdDsNCj4gPiArdHlwZWRlZiBVSU5UOCAgICAg ICAgICBzYV9mYW1pbHlfdDsNCj4gPiArdHlwZWRlZiBVSU5UMzIgICAgICAgICB1aWRfdDsNCj4g PiArdHlwZWRlZiBVSU5UMzIgICAgICAgICBnaWRfdDsNCj4gPiArdHlwZWRlZiBJTlQzMiAgICAg ICAgICBpbnQzMl90Ow0KPiA+ICt0eXBlZGVmIFVJTlQzMiAgICAgICAgIHVpbnQzMl90Ow0KPiA+ ICt0eXBlZGVmIFVJTlQxNiAgICAgICAgIHVpbnQxNl90Ow0KPiA+ICt0eXBlZGVmIFVJTlQ4ICAg ICAgICAgIHVpbnQ4X3Q7DQo+ID4gK3R5cGVkZWYgZW51bSB7ZmFsc2UsIHRydWV9IGJvb2w7DQo+ ID4gKw0KPiA+ICsvLw0KPiA+ICsvLyBGaWxlIG9wZXJhdGlvbnMgYXJlIG5vdCByZXF1aXJlZCBm b3IgRUZJIGJ1aWxkaW5nLCAvLyBzbyBGSUxFIGlzDQo+ID4gK21hcHBlZCB0byBWT0lEICogdG8g cGFzcyBidWlsZCAvLyB0eXBlZGVmIFZPSUQgICpGSUxFOw0KPiA+ICsNCj4gPiArLy8NCj4gPiAr Ly8gR2xvYmFsIHZhcmlhYmxlcw0KPiA+ICsvLw0KPiA+ICtleHRlcm4gaW50ICBlcnJubzsNCj4g PiArZXh0ZXJuIEZJTEUgKnN0ZGVycjsNCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIEZ1bmN0aW9u IHByb3RvdHlwZXMgb2YgQ1JUIExpYnJhcnkgcm91dGluZXMgLy8NCj4gPiArdm9pZCAgICAgICAg ICAgKm1hbGxvYyAgICAgKHNpemVfdCk7DQo+ID4gK3ZvaWQgICAgICAgICAgICpyZWFsbG9jICAg ICh2b2lkICosIHNpemVfdCk7DQo+ID4gK3ZvaWQgICAgICAgICAgICpjYWxsb2MgICAgIChzaXpl X3QgTnVtLCBzaXplX3QgU2l6ZSk7DQo+ID4gK3ZvaWQgICAgICAgICAgIGZyZWUgICAgICAgICh2 b2lkICopOw0KPiA+ICt2b2lkICAgICAgICAgICAqbWVtc2V0ICAgICAodm9pZCAqLCBpbnQsIHNp emVfdCk7DQo+ID4gK2ludCAgICAgICAgICAgIG1lbWNtcCAgICAgIChjb25zdCB2b2lkICosIGNv bnN0IHZvaWQgKiwgc2l6ZV90KTsNCj4gPiAraW50ICAgICAgICAgICAgaXNkaWdpdCAgICAgKGlu dCk7DQo+ID4gK2ludCAgICAgICAgICAgIGlzc3BhY2UgICAgIChpbnQpOw0KPiA+ICtpbnQgICAg ICAgICAgICB0b2xvd2VyICAgICAoaW50KTsNCj4gPiAraW50ICAgICAgICAgICAgaXN1cHBlciAg ICAgKGludCk7DQo+ID4gK2ludCAgICAgICAgICAgIGlzeGRpZ2l0ICAgIChpbnQpOw0KPiA+ICtp bnQgICAgICAgICAgICBpc2FsbnVtICAgICAoaW50KTsNCj4gPiArdm9pZCAgICAgICAgICAgKm1l bWNweSAgICAgKHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3QpOw0KPiA+ICt2b2lkICAgICAg ICAgICAqbWVtc2V0ICAgICAodm9pZCAqLCBpbnQsIHNpemVfdCk7DQo+ID4gK3ZvaWQgICAgICAg ICAgICptZW1jaHIgICAgIChjb25zdCB2b2lkICosIGludCwgc2l6ZV90KTsNCj4gPiAraW50ICAg ICAgICAgICAgbWVtY21wICAgICAgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqLCBzaXplX3Qp Ow0KPiA+ICt2b2lkICAgICAgICAgICAqbWVtbW92ZSAgICAodm9pZCAqLCBjb25zdCB2b2lkICos IHNpemVfdCk7DQo+ID4gK2ludCAgICAgICAgICAgIHN0cmNtcCAgICAgIChjb25zdCBjaGFyICos IGNvbnN0IGNoYXIgKik7DQo+ID4gK2ludCAgICAgICAgICAgIHN0cm5jbXAgICAgIChjb25zdCBj aGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNCj4gPiArY2hhciAgICAgICAgICAgKnN0cmNw eSAgICAgKGNoYXIgKiwgY29uc3QgY2hhciAqKTsNCj4gPiArc2l6ZV90ICAgICAgICAgc3RybGVu ICAgICAgKGNvbnN0IGNoYXIgKik7DQo+ID4gK2NoYXIgICAgICAgICAgICpzdHJjYXQgICAgIChj aGFyICosIGNvbnN0IGNoYXIgKik7DQo+ID4gK2NoYXIgICAgICAgICAgICpzdHJjaHIgICAgIChj b25zdCBjaGFyICosIGludCk7DQo+ID4gK2ludCAgICAgICAgICAgIHN0cmNhc2VjbXAgIChjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQo+ID4gK2ludCAgICAgICAgICAgIHN0cm5jYXNlY21w IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsNCj4gPiArY2hhciAgICAgICAg ICAgKnN0cm5jcHkgICAgKGNoYXIgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosIHNpemVfdCk7DQo+ ID4gK2ludCAgICAgICAgICAgIHN0cm5jbXAgICAgIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIg Kiwgc2l6ZV90KTsNCj4gPiArY2hhciAgICAgICAgICAgKnN0cnJjaHIgICAgKGNvbnN0IGNoYXIg KiwgaW50KTsNCj4gPiArdW5zaWduZWQgbG9uZyAgc3RydG91bCAgICAgKGNvbnN0IGNoYXIgKiwg Y2hhciAqKiwgaW50KTsNCj4gPiArY2hhciAqICAgICAgICAgc3Ryc3RyICAgICAgKGNvbnN0IGNo YXIgKnMxICwgY29uc3QgY2hhciAqczIpOw0KPiA+ICtsb25nICAgICAgICAgICBzdHJ0b2wgICAg ICAoY29uc3QgY2hhciAqLCBjaGFyICoqLCBpbnQpOw0KPiA+ICtjaGFyICAgICAgICAgICAqc3Ry ZXJyb3IgICAoaW50KTsNCj4gPiArc2l6ZV90ICAgICAgICAgc3Ryc3BuICAgICAgKGNvbnN0IGNo YXIgKiwgY29uc3QgY2hhciAqKTsNCj4gPiArY2hhciAqICAgICAgICAgc3RyZHVwICAgICAgKGNv bnN0IGNoYXIgKnN0cik7DQo+ID4gK2NoYXIgKiAgICAgICAgIHN0cnBicmsgICAgIChjb25zdCBj aGFyICpzMSwgY29uc3QgY2hhciAqczIpOw0KPiA+ICt1bnNpZ25lZCBsb25nIGxvbmcgc3RydG91 bGwoY29uc3QgY2hhciAqIG5wdHIsIGNoYXIgKiogZW5kcHRyLCBpbnQgYmFzZSk7DQo+ID4gK2xv bmcgbG9uZyAgICAgIHN0cnRvbGwgICAgIChjb25zdCBjaGFyICogbnB0ciwgY2hhciAqKiBlbmRw dHIsIGludCBiYXNlKTsNCj4gPiArbG9uZyAgICAgICAgICAgc3RydG9sICAgICAgKGNvbnN0IGNo YXIgKiBucHRyLCBjaGFyICoqIGVuZHB0ciwgaW50IGJhc2UpOw0KPiA+ICtkb3VibGUgICAgICAg ICBzdHJ0b2QgICAgICAoY29uc3QgY2hhciAqIF9fcmVzdHJpY3QgbnB0ciwgY2hhciAqKiBfX3Jl c3RyaWN0DQo+IGVuZHB0cik7DQo+ID4gK3NpemVfdCAgICAgICAgIHN0cmNzcG4gICAgIChjb25z dCBjaGFyICosIGNvbnN0IGNoYXIgKik7DQo+ID4gK2ludCAgICAgICAgICAgIHByaW50ZiAgICAg IChjb25zdCBjaGFyICosIC4uLik7DQo+ID4gK2ludCAgICAgICAgICAgIHNzY2FuZiAgICAgIChj b25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgLi4uKTsNCj4gPiArRklMRSAgICAgICAgICAgKmZv cGVuICAgICAgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsNCj4gPiArc2l6ZV90ICAgICAg ICAgZnJlYWQgICAgICAgKHZvaWQgKiwgc2l6ZV90LCBzaXplX3QsIEZJTEUgKik7DQo+ID4gK3Np emVfdCAgICAgICAgIGZ3cml0ZSAgICAgIChjb25zdCB2b2lkICosIHNpemVfdCwgc2l6ZV90LCBG SUxFICopOw0KPiA+ICtpbnQgICAgICAgICAgICBmY2xvc2UgICAgICAoRklMRSAqKTsNCj4gPiAr aW50ICAgICAgICAgICAgZnByaW50ZiAgICAgKEZJTEUgKiwgY29uc3QgY2hhciAqLCAuLi4pOw0K PiA+ICtpbnQgICAgICAgICAgICBmZ2V0YyAgICAgICAoRklMRSAqIF9GaWxlKTsNCj4gPiArdWlk X3QgICAgICAgICAgZ2V0dWlkICAgICAgKHZvaWQpOw0KPiA+ICt1aWRfdCAgICAgICAgICBnZXRl dWlkICAgICAodm9pZCk7DQo+ID4gK2dpZF90ICAgICAgICAgIGdldGdpZCAgICAgICh2b2lkKTsN Cj4gPiArZ2lkX3QgICAgICAgICAgZ2V0ZWdpZCAgICAgKHZvaWQpOw0KPiA+ICt2b2lkICAgICAg ICAgICBxc29ydCAgICAgICAodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgaW50ICgqKShjb25zdCB2 b2lkICosIGNvbnN0IHZvaWQNCj4gKikpOw0KPiA+ICtjaGFyICAgICAgICAgICAqZ2V0ZW52ICAg ICAoY29uc3QgY2hhciAqKTsNCj4gPiArI2lmIGRlZmluZWQoX19HTlVDX18pICYmIChfX0dOVUNf XyA+PSAyKQ0KPiA+ICt2b2lkICAgICAgICAgICBhYm9ydCAgICAgICAodm9pZCkgX19hdHRyaWJ1 dGVfXygoX19ub3JldHVybl9fKSk7DQo+ID4gKyNlbHNlDQo+ID4gK3ZvaWQgICAgICAgICAgIGFi b3J0ICAgICAgICh2b2lkKTsNCj4gPiArI2VuZGlmDQo+ID4gK2ludCAgICAgICAgICAgIHRvdXBw ZXIgICAgIChpbnQpOw0KPiA+ICtpbnQgICAgICAgICAgICBEaWdpdDJWYWwgICAoaW50KTsNCj4g PiArdGltZV90ICAgICAgICAgdGltZSAgICAgICAgKHRpbWVfdCAqKTsNCj4gPiArDQo+ID4gKy8v DQo+ID4gKy8vIE1hY3JvcyB0aGF0IGRpcmVjdGx5IG1hcCBmdW5jdGlvbnMgdG8gQmFzZUxpYiwg QmFzZU1lbW9yeUxpYiwgYW5kDQo+ID4gK0RlYnVnTGliIGZ1bmN0aW9ucyAvLw0KPiA+ICsjZGVm aW5lIHN0cmNtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICBBc2NpaVN0ckNtcA0KPiA+ICsj ZGVmaW5lIG1lbWNweShkZXN0LHNvdXJjZSxjb3VudCkNCj4gQ29weU1lbShkZXN0LHNvdXJjZSwo VUlOVE4pKGNvdW50KSkNCj4gPiArI2RlZmluZSBtZW1zZXQoZGVzdCxjaCxjb3VudCkNCj4gU2V0 TWVtKGRlc3QsKFVJTlROKShjb3VudCksKFVJTlQ4KShjaCkpDQo+ID4gKyNkZWZpbmUgbWVtY2hy KGJ1ZixjaCxjb3VudCkNCj4gU2Nhbk1lbTgoYnVmLChVSU5UTikoY291bnQpLChVSU5UOCljaCkN Cj4gPiArI2RlZmluZSBtZW1jbXAoYnVmMSxidWYyLGNvdW50KQ0KPiAoaW50KShDb21wYXJlTWVt KGJ1ZjEsYnVmMiwoVUlOVE4pKGNvdW50KSkpDQo+ID4gKyNkZWZpbmUgbWVtbW92ZShkZXN0LHNv dXJjZSxjb3VudCkNCj4gQ29weU1lbShkZXN0LHNvdXJjZSwoVUlOVE4pKGNvdW50KSkNCj4gPiAr I2RlZmluZSBzdHJsZW4oc3RyKQ0KPiAoc2l6ZV90KShBc2NpaVN0cm5MZW5TKHN0cixNQVhfU1RS SU5HX1NJWkUpKQ0KPiA+ICsjZGVmaW5lIHN0cmNweShzdHJEZXN0LHN0clNvdXJjZSkNCj4gQXNj aWlTdHJDcHlTKHN0ckRlc3QsKHN0cmxlbihzdHJTb3VyY2UpKzEpLHN0clNvdXJjZSkNCj4gPiAr I2RlZmluZSBzdHJuY3B5KHN0ckRlc3Qsc3RyU291cmNlLGNvdW50KQ0KPiA+ICtBc2NpaVN0cm5D cHlTKHN0ckRlc3QsKFVJTlROKWNvdW50LHN0clNvdXJjZSwoVUlOVE4pY291bnQpDQo+ID4gKyNk ZWZpbmUgc3RybmNweXMoc3RyRGVzdCwgRGVzdExlbiwgc3RyU291cmNlLGNvdW50KQ0KPiBBc2Np aVN0cm5DcHlTKHN0ckRlc3QsRGVzdExlbixzdHJTb3VyY2UsKFVJTlROKWNvdW50KQ0KPiA+ICsj ZGVmaW5lIHN0cmNhdChzdHJEZXN0LHN0clNvdXJjZSkNCj4gQXNjaWlTdHJDYXRTKHN0ckRlc3Qs KHN0cmxlbihzdHJTb3VyY2UpK3N0cmxlbihzdHJEZXN0KSsxKSxzdHJTb3VyY2UpDQo+ID4gKyNk ZWZpbmUgc3RyY2hyKHN0cixjaCkgICAgICAgICAgICAgICAgICAgIFNjYW5NZW04KChWT0lEDQo+ ICopKHN0ciksQXNjaWlTdHJTaXplKHN0ciksKFVJTlQ4KWNoKQ0KPiA+ICsjZGVmaW5lIHN0cm5j bXAoc3RyaW5nMSxzdHJpbmcyLGNvdW50KQ0KPiAoaW50KShBc2NpaVN0cm5DbXAoc3RyaW5nMSxz dHJpbmcyLChVSU5UTikoY291bnQpKSkNCj4gPiArI2RlZmluZSBzdHJjYXNlY21wKHN0cjEsc3Ry MikgICAgICAgICAgICAgKGludClBc2NpaVN0cmlDbXAoc3RyMSxzdHIyKQ0KPiA+ICsjZGVmaW5l IHN0cnN0cihzMSxzMikgICAgICAgICAgICAgICAgICAgICBBc2NpaVN0clN0cihzMSxzMikNCj4g PiArI2RlZmluZSBzcHJpbnRmKGJ1ZiwuLi4pDQo+IEFzY2lpU1ByaW50KGJ1ZixNQVhfU1RSSU5H X1NJWkUsX19WQV9BUkdTX18pDQo+ID4gKyNkZWZpbmUgc25wcmludGYoYnVmLGxlbiwuLi4pICAg ICAgICAgICAgIEFzY2lpU1ByaW50KGJ1ZixsZW4sX19WQV9BUkdTX18pDQo+ID4gKyNkZWZpbmUg dnNucHJpbnRmKGJ1ZixsZW4sZm9ybWF0LG1hcmtlcikNCj4gQXNjaWlWU1ByaW50KChidWYpLChs ZW4pLChmb3JtYXQpLChtYXJrZXIpKQ0KPiA+ICsjZGVmaW5lIGFzc2VydChleHByZXNzaW9uKSAg ICAgICAgICAgICAgICBBU1NFUlQoZXhwcmVzc2lvbikNCj4gPiArI2RlZmluZSBhdG9pKG5wdHIp ICAgICAgICAgICAgICAgICAgICAgICAgQXNjaWlTdHJEZWNpbWFsVG9VaW50bihucHRyKQ0KPiA+ ICsjZGVmaW5lIGZhYnMoeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCh4KSA8IDAuMCk/ ICgteCk6ICh4KSkNCj4gPiArI2RlZmluZSBvZmZzZXRvZih0eXBlLG1lbWJlcikgICAgICAgICAg ICAgT0ZGU0VUX09GKHR5cGUsbWVtYmVyKQ0KPiA+ICsNCj4gPiArI2RlZmluZSBFT0YgKC0xKQ0K PiA+ICsNCj4gPiArZXh0ZXJuIGludCAgZXJybm87DQo+ID4gKw0KPiA+ICsjZGVmaW5lIEVSQU5H RSAgIDM0ICAgICAgICAgICAgICAgIC8qIDM0ICAgUmVzdWx0IHRvbyBsYXJnZSAqLw0KPiA+ICsN Cj4gPiArI2VuZGlmDQo+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIv Q3J0TGliLmMNCj4gPiBiL1JlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0TGliLmMNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLjFmZjQwMjNkYmUNCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRM aWIuYw0KPiA+IEBAIC0wLDAgKzEsNzA1IEBADQo+ID4gKy8qKiBAZmlsZQ0KPiA+ICsgIENSVCB3 cmFwcGVyIGZ1bmN0aW9ucyBmb3Igc3lzdGVtIGNhbGwuDQo+ID4gKw0KPiA+ICsgIENvcHlyaWdo dCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0K PiA+ICsgIChDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSBEZXZl bG9wbWVudCBMUDxCUj4NCj4gPiArDQo+ID4gKyAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog QlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKyNpbmNsdWRlIDxVZWZp Lmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NydExpYi5oPg0KPiA+ICsjaW5jbHVkZSA8TGli cmFyeS9NZW1vcnlBbGxvY2F0aW9uTGliLmg+ICNpbmNsdWRlDQo+ID4gKzxMaWJyYXJ5L1VlZmlS dW50aW1lU2VydmljZXNUYWJsZUxpYi5oPg0KPiA+ICsNCj4gPiAraW50ICBlcnJubyA9IDA7DQo+ ID4gKw0KPiA+ICsvKioNCj4gPiArICBEZXRlcm1pbmUgaWYgYSBwYXJ0aWN1bGFyIGNoYXJhY3Rl ciBpcyBhbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVyDQo+ID4gKyAgQHJldHVybiAgUmV0dXJucyAx IGlmIGMgaXMgYW4gYWxwaGFudW1lcmljIGNoYXJhY3Rlciwgb3RoZXJ3aXNlIHJldHVybnMgMC4N Cj4gPiArKiovDQo+ID4gK2ludCBpc2FsbnVtIChpbnQgYykNCj4gPiArew0KPiA+ICsgIC8vDQo+ ID4gKyAgLy8gPGFsbnVtPiA6Oj0gWzAtOV0gfCBbYS16XSB8IFtBLVpdDQo+ID4gKyAgLy8NCj4g PiArICByZXR1cm4gKCgoJzAnIDw9IChjKSkgJiYgKChjKSA8PSAnOScpKSB8fA0KPiA+ICsgICAg ICAgICAgKCgnYScgPD0gKGMpKSAmJiAoKGMpIDw9ICd6JykpIHx8DQo+ID4gKyAgICAgICAgICAo KCdBJyA8PSAoYykpICYmICgoYykgPD0gJ1onKSkpOyB9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiAr ICBEZXRlcm1pbmUgaWYgYSBwYXJ0aWN1bGFyIGNoYXJhY3RlciBpcyBhIGRpZ2l0YWwgY2hhcmFj dGVyDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gIFJldHVybnMgMSBpZiBjIGlzIGFuIGRpZ2l0YWwg Y2hhcmFjdGVyLCBvdGhlcndpc2UgcmV0dXJucyAwLg0KPiA+ICsqKi8NCj4gPiAraW50IGlzZGNo YXIgKGludCBjKQ0KPiA+ICt7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBbMC05XSB8IFtlICstLl0N Cj4gPiArICAvLw0KPiA+ICsgIHJldHVybiAoKCgnMCcgPD0gKGMpKSAmJiAoKGMpIDw9ICc5Jykp IHx8DQo+ID4gKyAgICAgICAgICAoYyA9PSAnZScpIHx8IChjID09ICdFJykgfHwNCj4gPiArICAg ICAgICAgIChjID09ICcrJykgfHwgKGMgPT0gJy0nKSB8fA0KPiA+ICsgICAgICAgICAgKGMgPT0g Jy4nKSk7DQo+ID4gK30NCj4gPiArDQo+ID4gKy8qKg0KPiA+ICsgIERldGVybWluZSBpZiBhIHBh cnRpY3VsYXIgY2hhcmFjdGVyIGlzIGEgc3BhY2UgY2hhcmFjdGVyDQo+ID4gKw0KPiA+ICsgIEBy ZXR1cm4gIFJldHVybnMgMSBpZiBjIGlzIGEgc3BhY2UgY2hhcmFjdGVyICoqLyBpbnQgaXNzcGFj ZSAoaW50DQo+ID4gK2MpIHsNCj4gPiArICAvLw0KPiA+ICsgIC8vIDxzcGFjZT4gOjo9IFsgXQ0K PiA+ICsgIC8vDQo+ID4gKyAgcmV0dXJuICgoYykgPT0gJyAnKSB8fCAoKGMpID09ICdcdCcpIHx8 ICgoYykgPT0gJ1xyJykgfHwgKChjKSA9PQ0KPiA+ICsnXG4nKSB8fCAoKGMpID09ICdcdicpICB8 fCAoKGMpID09ICdcZicpOyB9DQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBBbGxvY2F0ZXMgbWVt b3J5IGJsb2Nrcw0KPiA+ICsqLw0KPiA+ICt2b2lkICptYWxsb2MgKHNpemVfdCBzaXplKQ0KPiA+ ICt7DQo+ID4gKyAgcmV0dXJuIEFsbG9jYXRlUG9vbCAoKFVJTlROKSBzaXplKTsgfQ0KPiA+ICsN Cj4gPiArLyoqDQo+ID4gKyAgRGUtYWxsb2NhdGVzIG9yIGZyZWVzIGEgbWVtb3J5IGJsb2NrICov IHZvaWQgZnJlZSAodm9pZCAqcHRyKSB7DQo+ID4gKyAgLy8NCj4gPiArICAvLyBJbiBTdGFuZGFy ZCBDLCBmcmVlKCkgaGFuZGxlcyBhIG51bGwgcG9pbnRlciBhcmd1bWVudA0KPiA+ICt0cmFuc3Bh cmVudGx5LiBUaGlzDQo+ID4gKyAgLy8gaXMgbm90IHRydWUgb2YgRnJlZVBvb2woKSBiZWxvdywg c28gcHJvdGVjdCBpdC4NCj4gPiArICAvLw0KPiA+ICsgIGlmIChwdHIgIT0gTlVMTCkgew0KPiA+ ICsgICAgRnJlZVBvb2wgKHB0cik7DQo+ID4gKyAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKioN Cj4gPiArICBOZXRCU0QgQ29tcGF0aWJpbGl0eSBGdW5jdGlvbiBzdHJkdXAgY3JlYXRlcyBhIGR1 cGxpY2F0ZSBjb3B5IG9mIGEgc3RyaW5nLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuICBSZXR1cm5z IHRoZSBwb2ludGVyIHRvIGR1cGxpY2F0ZWQgc3RyaW5nLg0KPiA+ICsqKi8NCj4gPiArY2hhciAq IHN0cmR1cChjb25zdCBjaGFyICpzdHIpDQo+ID4gK3sNCj4gPiArICBzaXplX3QgbGVuOw0KPiA+ ICsgIGNoYXIgKmNvcHk7DQo+ID4gKw0KPiA+ICsgIGxlbiA9IHN0cmxlbihzdHIpICsgMTsNCj4g PiArICBpZiAoKGNvcHkgPSBtYWxsb2MobGVuKSkgPT0gTlVMTCkNCj4gPiArICAgIHJldHVybiAo TlVMTCk7DQo+ID4gKyAgbWVtY3B5KGNvcHksIHN0ciwgbGVuKTsNCj4gPiArICByZXR1cm4gKGNv cHkpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsvKiogVGhlIHRvdXBwZXIgZnVuY3Rpb24gY29udmVy dHMgYSBsb3dlcmNhc2UgbGV0dGVyIHRvIGEgY29ycmVzcG9uZGluZw0KPiA+ICsgICAgdXBwZXJj YXNlIGxldHRlci4NCj4gPiArDQo+ID4gKyAgICBAcGFyYW1baW5dICAgIGMgICBUaGUgY2hhcmFj dGVyIHRvIGJlIGNvbnZlcnRlZC4NCj4gPiArDQo+ID4gKyAgICBAcmV0dXJuICAgSWYgdGhlIGFy Z3VtZW50IGlzIGEgY2hhcmFjdGVyIGZvciB3aGljaCBpc2xvd2VyIGlzIHRydWUgYW5kDQo+ID4g KyAgICAgICAgICAgICAgdGhlcmUgYXJlIG9uZSBvciBtb3JlIGNvcnJlc3BvbmRpbmcgY2hhcmFj dGVycywgYXMgc3BlY2lmaWVkIGJ5DQo+ID4gKyAgICAgICAgICAgICAgdGhlIGN1cnJlbnQgbG9j YWxlLCBmb3Igd2hpY2ggaXN1cHBlciBpcyB0cnVlLCB0aGUgdG91cHBlcg0KPiA+ICsgICAgICAg ICAgICAgIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIHRoZSBjb3JyZXNwb25kaW5nIGNoYXJhY3Rl cnMgKGFsd2F5cyB0aGUNCj4gPiArICAgICAgICAgICAgICBzYW1lIG9uZSBmb3IgYW55IGdpdmVu IGxvY2FsZSk7IG90aGVyd2lzZSwgdGhlIGFyZ3VtZW50IGlzDQo+ID4gKyAgICAgICAgICAgICAg cmV0dXJuZWQgdW5jaGFuZ2VkLg0KPiA+ICsqKi8NCj4gPiAraW50DQo+ID4gK3RvdXBwZXIoDQo+ ID4gKyAgSU4gIGludCBjDQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgaWYgKCAoYyA+PSAnYScp ICYmIChjIDw9ICd6JykgKSB7DQo+ID4gKyAgICBjID0gYyAtICgnYScgLSAnQScpOw0KPiA+ICsg IH0NCj4gPiArICByZXR1cm4gYzsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgRGln aXQgdG8gYSB2YWx1ZS4NCj4gPiArDQo+ID4gKyAgQHJldHVybiAgUmV0dXJucyB0aGUgdmFsdWUg b2YgZGlnaXQuDQo+ID4gKyoqLw0KPiA+ICtpbnQNCj4gPiArRGlnaXQyVmFsKCBpbnQgYykNCj4g PiArew0KPiA+ICsgIGlmICgoKGMgPj0gJ2EnKSAmJiAoYyA8PSAneicpKSB8fCAoKGMgPj0gJ0En KSAmJiAoYyA8PSAnWicpKSkgeyAgLyogSWYgYyBpcyBvbmUgb2YgW0EtDQo+IFphLXpdLi4uICov DQo+ID4gKyAgICBjID0gdG91cHBlcihjKSAtIDc7ICAgLy8gQWRqdXN0IHNvICdBJyBpcyAoJzkn ICsgMSkNCj4gPiArICB9DQo+ID4gKyAgcmV0dXJuIGMgLSAnMCc7ICAgLy8gVmFsdWUgcmV0dXJu ZWQgaXMgYmV0d2VlbiAwIGFuZCAzNSwgaW5jbHVzaXZlLg0KPiA+ICt9DQo+ID4gKw0KPiA+ICsN Cj4gPiArLyoqIFRoZSBzdHJ0b2xsIGZ1bmN0aW9uIGNvbnZlcnRzIHRoZSBpbml0aWFsIHBvcnRp b24gb2YgdGhlIHN0cmluZyBwb2ludGVkIHRvDQo+ID4gKyAgICBieSBucHRyIHRvIGxvbmcgbG9u ZyBpbnQgcmVwcmVzZW50YXRpb24uDQo+ID4gKw0KPiA+ICsgICAgU2VlIHRoZSBkZXNjcmlwdGlv biBmb3Igc3RydG9sIGZvciBtb3JlIGluZm9ybWF0aW9uLg0KPiA+ICsNCj4gPiArICBAcmV0dXJu ICAgVGhlIHN0cnRvbGwgZnVuY3Rpb24gcmV0dXJucyB0aGUgY29udmVydGVkIHZhbHVlLCBpZiBh bnkuIElmIG5vDQo+ID4gKyAgICAgICAgICAgIGNvbnZlcnNpb24gY291bGQgYmUgcGVyZm9ybWVk LCB6ZXJvIGlzIHJldHVybmVkLiBJZiB0aGUgY29ycmVjdA0KPiA+ICsgICAgICAgICAgICB2YWx1 ZSBpcyBvdXRzaWRlIHRoZSByYW5nZSBvZiByZXByZXNlbnRhYmxlIHZhbHVlcywgTExPTkdfTUlO IG9yDQo+ID4gKyAgICAgICAgICAgIExMT05HX01BWCBpcyByZXR1cm5lZCAoYWNjb3JkaW5nIHRv IHRoZSBzaWduIG9mIHRoZSB2YWx1ZSwgaWYgYW55KSwNCj4gPiArICAgICAgICAgICAgYW5kIHRo ZSB2YWx1ZSBvZiB0aGUgbWFjcm8gRVJBTkdFIGlzIHN0b3JlZCBpbiBlcnJuby4NCj4gPiArKiov DQo+ID4gK2xvbmcgbG9uZw0KPiA+ICtzdHJ0b2xsKGNvbnN0IGNoYXIgKiBucHRyLCBjaGFyICoq IGVuZHB0ciwgaW50IGJhc2UpIHsNCj4gPiArICBjb25zdCBjaGFyICpwRW5kOw0KPiA+ICsgIGxv bmcgbG9uZyAgIFJlc3VsdCA9IDA7DQo+ID4gKyAgbG9uZyBsb25nICAgUHJldmlvdXM7DQo+ID4g KyAgaW50ICAgICAgICAgdGVtcDsNCj4gPiArICBCT09MRUFOICAgICBOZWdhdGl2ZSA9IEZBTFNF Ow0KPiA+ICsNCj4gPiArICBwRW5kID0gbnB0cjsNCj4gPiArDQo+ID4gKyAgaWYoKGJhc2UgPCAw KSB8fCAoYmFzZSA9PSAxKSB8fCAoYmFzZSA+IDM2KSkgew0KPiA+ICsgICAgaWYoZW5kcHRyICE9 IE5VTEwpIHsNCj4gPiArICAgICplbmRwdHIgPSBOVUxMOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAg cmV0dXJuIDA7DQo+ID4gKyAgfQ0KPiA+ICsgIC8vIFNraXAgbGVhZGluZyBzcGFjZXMuDQo+ID4g KyAgd2hpbGUoaXNzcGFjZSgqbnB0cikpICAgKytucHRyOw0KPiA+ICsNCj4gPiArICAvLyBQcm9j ZXNzIFN1YmplY3Qgc2VxdWVuY2U6IG9wdGlvbmFsIHNpZ24gZm9sbG93ZWQgYnkgZGlnaXRzLg0K PiA+ICsgIGlmKCpucHRyID09ICcrJykgew0KPiA+ICsgICAgTmVnYXRpdmUgPSBGQUxTRTsNCj4g PiArICAgICsrbnB0cjsNCj4gPiArICB9DQo+ID4gKyAgZWxzZSBpZigqbnB0ciA9PSAnLScpIHsN Cj4gPiArICAgIE5lZ2F0aXZlID0gVFJVRTsNCj4gPiArICAgICsrbnB0cjsNCj4gPiArICB9DQo+ ID4gKw0KPiA+ICsgIGlmKCpucHRyID09ICcwJykgeyAgLyogTWlnaHQgYmUgT2N0YWwgb3IgSGV4 ICovDQo+ID4gKyAgICBpZih0b3VwcGVyKG5wdHJbMV0pID09ICdYJykgeyAgIC8qIExvb2tzIGxp a2UgSGV4ICovDQo+ID4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDE2KSkgew0K PiA+ICsgICAgICAgIG5wdHIgKz0gMjsgIC8qIFNraXAgdGhlICIwWCIgICAgICAqLw0KPiA+ICsg ICAgICAgIGJhc2UgPSAxNjsgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAqLw0KPiA+ICsgICAgICB9 DQo+ID4gKyAgICB9DQo+ID4gKyAgICBlbHNlIHsgICAgLyogTG9va3MgbGlrZSBPY3RhbCAqLw0K PiA+ICsgICAgICBpZigoYmFzZSA9PSAwKSB8fCAoYmFzZSA9PSA4KSkgew0KPiA+ICsgICAgICAg ICsrbnB0cjsgICAgIC8qIFNraXAgdGhlIGxlYWRpbmcgIjAiICovDQo+ID4gKyAgICAgICAgYmFz ZSA9IDg7ICAgLyogSW4gY2FzZSBiYXNlIHdhcyAwICAgKi8NCj4gPiArICAgICAgfQ0KPiA+ICsg ICAgfQ0KPiA+ICsgIH0NCj4gPiArICBpZihiYXNlID09IDApIHsgICAvKiBJZiBzdGlsbCB6ZXJv IHRoZW4gbXVzdCBiZSBkZWNpbWFsICovDQo+ID4gKyAgICBiYXNlID0gMTA7DQo+ID4gKyAgfQ0K PiA+ICsgIGlmKCpucHRyICA9PSAnMCcpIHsNCj4gPiArICAgIGZvciggOyAqbnB0ciA9PSAnMCc7 ICsrbnB0cik7ICAvKiBTa2lwIGFueSByZW1haW5pbmcgbGVhZGluZyB6ZXJvcyAqLw0KPiA+ICsg ICAgcEVuZCA9IG5wdHI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICB3aGlsZSggaXNhbG51bSgq bnB0cikgJiYgKCh0ZW1wID0gRGlnaXQyVmFsKCpucHRyKSkgPCBiYXNlKSkgew0KPiA+ICsgICAg UHJldmlvdXMgPSBSZXN1bHQ7DQo+ID4gKyAgICBSZXN1bHQgPSBNdWx0UzY0eDY0IChSZXN1bHQs IGJhc2UpICsgKGxvbmcgbG9uZyBpbnQpdGVtcDsNCj4gPiArICAgIGlmKCBSZXN1bHQgPD0gUHJl dmlvdXMpIHsgICAvLyBEZXRlY3QgT3ZlcmZsb3cNCj4gPiArICAgICAgaWYoTmVnYXRpdmUpIHsN Cj4gPiArICAgICAgICBSZXN1bHQgPSBMTE9OR19NSU47DQo+ID4gKyAgICAgIH0NCj4gPiArICAg ICAgZWxzZSB7DQo+ID4gKyAgICAgICAgUmVzdWx0ID0gTExPTkdfTUFYOw0KPiA+ICsgICAgICB9 DQo+ID4gKyAgICAgIE5lZ2F0aXZlID0gRkFMU0U7DQo+ID4gKyAgICAgIGVycm5vID0gRVJBTkdF Ow0KPiA+ICsgICAgICBicmVhazsNCj4gPiArICAgIH0NCj4gPiArICAgIHBFbmQgPSArK25wdHI7 DQo+ID4gKyAgfQ0KPiA+ICsgIGlmKE5lZ2F0aXZlKSB7DQo+ID4gKyAgICBSZXN1bHQgPSAtUmVz dWx0Ow0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8gU2F2ZSBwb2ludGVyIHRvIGZpbmFsIHNl cXVlbmNlDQo+ID4gKyAgaWYoZW5kcHRyICE9IE5VTEwpIHsNCj4gPiArICAgICplbmRwdHIgPSAo Y2hhciAqKXBFbmQ7DQo+ID4gKyAgfQ0KPiA+ICsgIHJldHVybiBSZXN1bHQ7DQo+ID4gK30NCj4g PiArDQo+ID4gKy8qKiBUaGUgc3RydG9sLCBzdHJ0b2xsLCBzdHJ0b3VsLCBhbmQgc3RydG91bGwg ZnVuY3Rpb25zIGNvbnZlcnQgdGhlIGluaXRpYWwNCj4gPiArICAgIHBvcnRpb24gb2YgdGhlIHN0 cmluZyBwb2ludGVkIHRvIGJ5IG5wdHIgdG8gbG9uZyBpbnQsIGxvbmcgbG9uZyBpbnQsDQo+ID4g KyAgICB1bnNpZ25lZCBsb25nIGludCwgYW5kIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgcmVwcmVz ZW50YXRpb24sDQo+IHJlc3BlY3RpdmVseS4NCj4gPiArICAgIEZpcnN0LCB0aGV5IGRlY29tcG9z ZSB0aGUgaW5wdXQgc3RyaW5nIGludG8gdGhyZWUgcGFydHM6IGFuIGluaXRpYWwsDQo+ID4gKyAg ICBwb3NzaWJseSBlbXB0eSwgc2VxdWVuY2Ugb2Ygd2hpdGUtc3BhY2UgY2hhcmFjdGVycyAoYXMg c3BlY2lmaWVkIGJ5DQo+IHRoZQ0KPiA+ICsgICAgaXNzcGFjZSBmdW5jdGlvbiksIGEgc3ViamVj dCBzZXF1ZW5jZSByZXNlbWJsaW5nIGFuIGludGVnZXINCj4gcmVwcmVzZW50ZWQgaW4NCj4gPiAr ICAgIHNvbWUgcmFkaXggZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgYmFzZSwgYW5kIGEgZmlu YWwgc3RyaW5nIG9mIG9uZSBvcg0KPiA+ICsgICAgbW9yZSB1bnJlY29nbml6ZWQgY2hhcmFjdGVy cywgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyBudWxsIGNoYXJhY3Rlcg0KPiBvZg0KPiA+ICsg ICAgdGhlIGlucHV0IHN0cmluZy4gVGhlbiwgdGhleSBhdHRlbXB0IHRvIGNvbnZlcnQgdGhlIHN1 YmplY3Qgc2VxdWVuY2UgdG8NCj4gYW4NCj4gPiArICAgIGludGVnZXIsIGFuZCByZXR1cm4gdGhl IHJlc3VsdC4NCj4gPiArDQo+ID4gKyAgICBJZiB0aGUgdmFsdWUgb2YgYmFzZSBpcyB6ZXJvLCB0 aGUgZXhwZWN0ZWQgZm9ybSBvZiB0aGUgc3ViamVjdCBzZXF1ZW5jZQ0KPiBpcw0KPiA+ICsgICAg dGhhdCBvZiBhbiBpbnRlZ2VyIGNvbnN0YW50LCBvcHRpb25hbGx5IHByZWNlZGVkDQo+ID4gKyAg ICBieSBhIHBsdXMgb3IgbWludXMgc2lnbiwgYnV0IG5vdCBpbmNsdWRpbmcgYW4gaW50ZWdlciBz dWZmaXguIElmIHRoZSB2YWx1ZQ0KPiA+ICsgICAgb2YgYmFzZSBpcyBiZXR3ZWVuIDIgYW5kIDM2 IChpbmNsdXNpdmUpLCB0aGUgZXhwZWN0ZWQgZm9ybSBvZiB0aGUNCj4gc3ViamVjdA0KPiA+ICsg ICAgc2VxdWVuY2UgaXMgYSBzZXF1ZW5jZSBvZiBsZXR0ZXJzIGFuZCBkaWdpdHMgcmVwcmVzZW50 aW5nIGFuIGludGVnZXINCj4gd2l0aA0KPiA+ICsgICAgdGhlIHJhZGl4IHNwZWNpZmllZCBieSBi YXNlLCBvcHRpb25hbGx5IHByZWNlZGVkIGJ5IGEgcGx1cyBvciBtaW51cyBzaWduLA0KPiA+ICsg ICAgYnV0IG5vdCBpbmNsdWRpbmcgYW4gaW50ZWdlciBzdWZmaXguIFRoZSBsZXR0ZXJzIGZyb20g YSAob3IgQSkgdGhyb3VnaCB6DQo+ID4gKyAgICAob3IgWikgYXJlIGFzY3JpYmVkIHRoZSB2YWx1 ZXMgMTAgdGhyb3VnaCAzNTsgb25seSBsZXR0ZXJzIGFuZCBkaWdpdHMNCj4gd2hvc2UNCj4gPiAr ICAgIGFzY3JpYmVkIHZhbHVlcyBhcmUgbGVzcyB0aGFuIHRoYXQgb2YgYmFzZSBhcmUgcGVybWl0 dGVkLiBJZiB0aGUgdmFsdWUgb2YNCj4gPiArICAgIGJhc2UgaXMgMTYsIHRoZSBjaGFyYWN0ZXJz IDB4IG9yIDBYIG1heSBvcHRpb25hbGx5IHByZWNlZGUgdGhlIHNlcXVlbmNlDQo+IG9mDQo+ID4g KyAgICBsZXR0ZXJzIGFuZCBkaWdpdHMsIGZvbGxvd2luZyB0aGUgc2lnbiBpZiBwcmVzZW50Lg0K PiA+ICsNCj4gPiArICAgIFRoZSBzdWJqZWN0IHNlcXVlbmNlIGlzIGRlZmluZWQgYXMgdGhlIGxv bmdlc3QgaW5pdGlhbCBzdWJzZXF1ZW5jZSBvZg0KPiB0aGUNCj4gPiArICAgIGlucHV0IHN0cmlu Zywgc3RhcnRpbmcgd2l0aCB0aGUgZmlyc3Qgbm9uLXdoaXRlLXNwYWNlIGNoYXJhY3RlciwgdGhh dCBpcyBvZg0KPiA+ICsgICAgdGhlIGV4cGVjdGVkIGZvcm0uIFRoZSBzdWJqZWN0IHNlcXVlbmNl IGNvbnRhaW5zIG5vIGNoYXJhY3RlcnMgaWYgdGhlDQo+IGlucHV0DQo+ID4gKyAgICBzdHJpbmcg aXMgZW1wdHkgb3IgY29uc2lzdHMgZW50aXJlbHkgb2Ygd2hpdGUgc3BhY2UsIG9yIGlmIHRoZSBm aXJzdA0KPiA+ICsgICAgbm9uLXdoaXRlLXNwYWNlIGNoYXJhY3RlciBpcyBvdGhlciB0aGFuIGEg c2lnbiBvciBhIHBlcm1pc3NpYmxlIGxldHRlciBvcg0KPiBkaWdpdC4NCj4gPiArDQo+ID4gKyAg ICBJZiB0aGUgc3ViamVjdCBzZXF1ZW5jZSBoYXMgdGhlIGV4cGVjdGVkIGZvcm0gYW5kIHRoZSB2 YWx1ZSBvZiBiYXNlIGlzDQo+ID4gKyAgICB6ZXJvLCB0aGUgc2VxdWVuY2Ugb2YgY2hhcmFjdGVy cyBzdGFydGluZyB3aXRoIHRoZSBmaXJzdCBkaWdpdCBpcw0KPiA+ICsgICAgaW50ZXJwcmV0ZWQg YXMgYW4gaW50ZWdlciBjb25zdGFudC4gSWYgdGhlIHN1YmplY3Qgc2VxdWVuY2UgaGFzIHRoZQ0K PiA+ICsgICAgZXhwZWN0ZWQgZm9ybSBhbmQgdGhlIHZhbHVlIG9mIGJhc2UgaXMgYmV0d2VlbiAy IGFuZCAzNiwgaXQgaXMgdXNlZCBhcw0KPiB0aGUNCj4gPiArICAgIGJhc2UgZm9yIGNvbnZlcnNp b24sIGFzY3JpYmluZyB0byBlYWNoIGxldHRlciBpdHMgdmFsdWUgYXMgZ2l2ZW4gYWJvdmUuIElm DQo+ID4gKyAgICB0aGUgc3ViamVjdCBzZXF1ZW5jZSBiZWdpbnMgd2l0aCBhIG1pbnVzIHNpZ24s IHRoZSB2YWx1ZSByZXN1bHRpbmcgZnJvbQ0KPiB0aGUNCj4gPiArICAgIGNvbnZlcnNpb24gaXMg bmVnYXRlZCAoaW4gdGhlIHJldHVybiB0eXBlKS4gQSBwb2ludGVyIHRvIHRoZSBmaW5hbCBzdHJp bmcNCj4gPiArICAgIGlzIHN0b3JlZCBpbiB0aGUgb2JqZWN0IHBvaW50ZWQgdG8gYnkgZW5kcHRy LCBwcm92aWRlZCB0aGF0IGVuZHB0ciBpcw0KPiA+ICsgICAgbm90IGEgbnVsbCBwb2ludGVyLg0K PiA+ICsNCj4gPiArICAgIEluIG90aGVyIHRoYW4gdGhlICJDIiBsb2NhbGUsIGFkZGl0aW9uYWwg bG9jYWxlLXNwZWNpZmljIHN1YmplY3Qgc2VxdWVuY2UNCj4gPiArICAgIGZvcm1zIG1heSBiZSBh Y2NlcHRlZC4NCj4gPiArDQo+ID4gKyAgICBJZiB0aGUgc3ViamVjdCBzZXF1ZW5jZSBpcyBlbXB0 eSBvciBkb2VzIG5vdCBoYXZlIHRoZSBleHBlY3RlZCBmb3JtLA0KPiBubw0KPiA+ICsgICAgY29u dmVyc2lvbiBpcyBwZXJmb3JtZWQ7IHRoZSB2YWx1ZSBvZiBucHRyIGlzIHN0b3JlZCBpbiB0aGUg b2JqZWN0DQo+IHBvaW50ZWQNCj4gPiArICAgIHRvIGJ5IGVuZHB0ciwgcHJvdmlkZWQgdGhhdCBl bmRwdHIgaXMgbm90IGEgbnVsbCBwb2ludGVyLg0KPiA+ICsNCj4gPiArICBAcmV0dXJuICAgVGhl IHN0cnRvbCwgc3RydG9sbCwgc3RydG91bCwgYW5kIHN0cnRvdWxsIGZ1bmN0aW9ucyByZXR1cm4g dGhlDQo+ID4gKyAgICAgICAgICAgIGNvbnZlcnRlZCB2YWx1ZSwgaWYgYW55LiBJZiBubyBjb252 ZXJzaW9uIGNvdWxkIGJlIHBlcmZvcm1lZCwgemVybw0KPiA+ICsgICAgICAgICAgICBpcyByZXR1 cm5lZC4gSWYgdGhlIGNvcnJlY3QgdmFsdWUgaXMgb3V0c2lkZSB0aGUgcmFuZ2Ugb2YNCj4gPiAr ICAgICAgICAgICAgcmVwcmVzZW50YWJsZSB2YWx1ZXMsIExPTkdfTUlOLCBMT05HX01BWCwgTExP TkdfTUlOLA0KPiBMTE9OR19NQVgsDQo+ID4gKyAgICAgICAgICAgIFVMT05HX01BWCwgb3IgVUxM T05HX01BWCBpcyByZXR1cm5lZCAoYWNjb3JkaW5nIHRvIHRoZSByZXR1cm4NCj4gdHlwZQ0KPiA+ ICsgICAgICAgICAgICBhbmQgc2lnbiBvZiB0aGUgdmFsdWUsIGlmIGFueSksIGFuZCB0aGUgdmFs dWUgb2YgdGhlIG1hY3JvIEVSQU5HRQ0KPiA+ICsgICAgICAgICAgICBpcyBzdG9yZWQgaW4gZXJy bm8uDQo+ID4gKyoqLw0KPiA+ICtsb25nDQo+ID4gK3N0cnRvbChjb25zdCBjaGFyICogbnB0ciwg Y2hhciAqKiBlbmRwdHIsIGludCBiYXNlKSB7DQo+ID4gKyAgY29uc3QgY2hhciAqcEVuZDsNCj4g PiArICBsb25nICAgICAgICBSZXN1bHQgPSAwOw0KPiA+ICsgIGxvbmcgICAgICAgIFByZXZpb3Vz Ow0KPiA+ICsgIGludCAgICAgICAgIHRlbXA7DQo+ID4gKyAgQk9PTEVBTiAgICAgTmVnYXRpdmUg PSBGQUxTRTsNCj4gPiArDQo+ID4gKyAgcEVuZCA9IG5wdHI7DQo+ID4gKw0KPiA+ICsgIGlmKChi YXNlIDwgMCkgfHwgKGJhc2UgPT0gMSkgfHwgKGJhc2UgPiAzNikpIHsNCj4gPiArICAgIGlmKGVu ZHB0ciAhPSBOVUxMKSB7DQo+ID4gKyAgICAqZW5kcHRyID0gTlVMTDsNCj4gPiArICAgIH0NCj4g PiArICAgIHJldHVybiAwOw0KPiA+ICsgIH0NCj4gPiArICAvLyBTa2lwIGxlYWRpbmcgc3BhY2Vz Lg0KPiA+ICsgIHdoaWxlKGlzc3BhY2UoKm5wdHIpKSAgICsrbnB0cjsNCj4gPiArDQo+ID4gKyAg Ly8gUHJvY2VzcyBTdWJqZWN0IHNlcXVlbmNlOiBvcHRpb25hbCBzaWduIGZvbGxvd2VkIGJ5IGRp Z2l0cy4NCj4gPiArICBpZigqbnB0ciA9PSAnKycpIHsNCj4gPiArICAgIE5lZ2F0aXZlID0gRkFM U0U7DQo+ID4gKyAgICArK25wdHI7DQo+ID4gKyAgfQ0KPiA+ICsgIGVsc2UgaWYoKm5wdHIgPT0g Jy0nKSB7DQo+ID4gKyAgICBOZWdhdGl2ZSA9IFRSVUU7DQo+ID4gKyAgICArK25wdHI7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICBpZigqbnB0ciA9PSAnMCcpIHsgIC8qIE1pZ2h0IGJlIE9jdGFs IG9yIEhleCAqLw0KPiA+ICsgICAgaWYodG91cHBlcihucHRyWzFdKSA9PSAnWCcpIHsgICAvKiBM b29rcyBsaWtlIEhleCAqLw0KPiA+ICsgICAgICBpZigoYmFzZSA9PSAwKSB8fCAoYmFzZSA9PSAx NikpIHsNCj4gPiArICAgICAgICBucHRyICs9IDI7ICAvKiBTa2lwIHRoZSAiMFgiICAgICAgKi8N Cj4gPiArICAgICAgICBiYXNlID0gMTY7ICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgKi8NCj4gPiAr ICAgICAgfQ0KPiA+ICsgICAgfQ0KPiA+ICsgICAgZWxzZSB7ICAgIC8qIExvb2tzIGxpa2UgT2N0 YWwgKi8NCj4gPiArICAgICAgaWYoKGJhc2UgPT0gMCkgfHwgKGJhc2UgPT0gOCkpIHsNCj4gPiAr ICAgICAgICArK25wdHI7ICAgICAvKiBTa2lwIHRoZSBsZWFkaW5nICIwIiAqLw0KPiA+ICsgICAg ICAgIGJhc2UgPSA4OyAgIC8qIEluIGNhc2UgYmFzZSB3YXMgMCAgICovDQo+ID4gKyAgICAgIH0N Cj4gPiArICAgIH0NCj4gPiArICB9DQo+ID4gKyAgaWYoYmFzZSA9PSAwKSB7ICAgLyogSWYgc3Rp bGwgemVybyB0aGVuIG11c3QgYmUgZGVjaW1hbCAqLw0KPiA+ICsgICAgYmFzZSA9IDEwOw0KPiA+ ICsgIH0NCj4gPiArICBpZigqbnB0ciAgPT0gJzAnKSB7DQo+ID4gKyAgICBmb3IoIDsgKm5wdHIg PT0gJzAnOyArK25wdHIpOyAgLyogU2tpcCBhbnkgcmVtYWluaW5nIGxlYWRpbmcgemVyb3MgKi8N Cj4gPiArICAgIHBFbmQgPSBucHRyOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgd2hpbGUoIGlz YWxudW0oKm5wdHIpICYmICgodGVtcCA9IERpZ2l0MlZhbCgqbnB0cikpIDwgYmFzZSkpIHsNCj4g PiArICAgIFByZXZpb3VzID0gUmVzdWx0Ow0KPiA+ICsgICAgUmVzdWx0ID0gKFJlc3VsdCAqIGJh c2UpICsgKGxvbmcgaW50KXRlbXA7DQo+ID4gKyAgICBpZiggUmVzdWx0IDw9IFByZXZpb3VzKSB7 ICAgLy8gRGV0ZWN0IE92ZXJmbG93DQo+ID4gKyAgICAgIGlmKE5lZ2F0aXZlKSB7DQo+ID4gKyAg ICAgICAgUmVzdWx0ID0gTE9OR19NSU47DQo+ID4gKyAgICAgIH0NCj4gPiArICAgICAgZWxzZSB7 DQo+ID4gKyAgICAgICAgUmVzdWx0ID0gTE9OR19NQVg7DQo+ID4gKyAgICAgIH0NCj4gPiArICAg ICAgTmVnYXRpdmUgPSBGQUxTRTsNCj4gPiArICAgICAgZXJybm8gPSBFUkFOR0U7DQo+ID4gKyAg ICAgIGJyZWFrOw0KPiA+ICsgICAgfQ0KPiA+ICsgICAgcEVuZCA9ICsrbnB0cjsNCj4gPiArICB9 DQo+ID4gKyAgaWYoTmVnYXRpdmUpIHsNCj4gPiArICAgIFJlc3VsdCA9IC1SZXN1bHQ7DQo+ID4g KyAgfQ0KPiA+ICsNCj4gPiArICAvLyBTYXZlIHBvaW50ZXIgdG8gZmluYWwgc2VxdWVuY2UNCj4g PiArICBpZihlbmRwdHIgIT0gTlVMTCkgew0KPiA+ICsgICAgKmVuZHB0ciA9IChjaGFyICopcEVu ZDsNCj4gPiArICB9DQo+ID4gKyAgcmV0dXJuIFJlc3VsdDsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr LyoqIFRoZSBzdHJ0b3VsbCBmdW5jdGlvbiBjb252ZXJ0cyB0aGUgaW5pdGlhbCBwb3J0aW9uIG9m IHRoZSBzdHJpbmcgcG9pbnRlZA0KPiB0bw0KPiA+ICsgICAgYnkgbnB0ciB0byB1bnNpZ25lZCBs b25nIGxvbmcgaW50IHJlcHJlc2VudGF0aW9uLg0KPiA+ICsNCj4gPiArICAgIFNlZSB0aGUgZGVz Y3JpcHRpb24gZm9yIHN0cnRvbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4NCj4gPiArDQo+ID4gKyAg QHJldHVybiAgIFRoZSBzdHJ0b3VsbCBmdW5jdGlvbiByZXR1cm5zIHRoZSBjb252ZXJ0ZWQgdmFs dWUsIGlmIGFueS4gSWYgbm8NCj4gPiArICAgICAgICAgICAgY29udmVyc2lvbiBjb3VsZCBiZSBw ZXJmb3JtZWQsIHplcm8gaXMgcmV0dXJuZWQuIElmIHRoZSBjb3JyZWN0DQo+ID4gKyAgICAgICAg ICAgIHZhbHVlIGlzIG91dHNpZGUgdGhlIHJhbmdlIG9mIHJlcHJlc2VudGFibGUgdmFsdWVzLCBV TExPTkdfTUFYIGlzDQo+ID4gKyAgICAgICAgICAgIHJldHVybmVkIGFuZCB0aGUgdmFsdWUgb2Yg dGhlIG1hY3JvIEVSQU5HRSBpcyBzdG9yZWQgaW4gZXJybm8uDQo+ID4gKyoqLw0KPiA+ICt1bnNp Z25lZCBsb25nIGxvbmcNCj4gPiArc3RydG91bGwoY29uc3QgY2hhciAqIG5wdHIsIGNoYXIgKiog ZW5kcHRyLCBpbnQgYmFzZSkgew0KPiA+ICsgIGNvbnN0IGNoYXIgICAgICAgICAgICpwRW5kOw0K PiA+ICsgIHVuc2lnbmVkIGxvbmcgbG9uZyAgICBSZXN1bHQgPSAwOw0KPiA+ICsgIHVuc2lnbmVk IGxvbmcgbG9uZyAgICBQcmV2aW91czsNCj4gPiArICBpbnQgICAgICAgICAgICAgICAgICAgdGVt cDsNCj4gPiArDQo+ID4gKyAgcEVuZCA9IG5wdHI7DQo+ID4gKw0KPiA+ICsgIGlmKChiYXNlIDwg MCkgfHwgKGJhc2UgPT0gMSkgfHwgKGJhc2UgPiAzNikpIHsNCj4gPiArICAgIGlmKGVuZHB0ciAh PSBOVUxMKSB7DQo+ID4gKyAgICAqZW5kcHRyID0gTlVMTDsNCj4gPiArICAgIH0NCj4gPiArICAg IHJldHVybiAwOw0KPiA+ICsgIH0NCj4gPiArICAvLyBTa2lwIGxlYWRpbmcgc3BhY2VzLg0KPiA+ ICsgIHdoaWxlKGlzc3BhY2UoKm5wdHIpKSAgICsrbnB0cjsNCj4gPiArDQo+ID4gKyAgLy8gUHJv Y2VzcyBTdWJqZWN0IHNlcXVlbmNlOiBvcHRpb25hbCArIHNpZ24gZm9sbG93ZWQgYnkgZGlnaXRz Lg0KPiA+ICsgIGlmKCpucHRyID09ICcrJykgew0KPiA+ICsgICAgKytucHRyOw0KPiA+ICsgIH0N Cj4gPiArDQo+ID4gKyAgaWYoKm5wdHIgPT0gJzAnKSB7ICAvKiBNaWdodCBiZSBPY3RhbCBvciBI ZXggKi8NCj4gPiArICAgIGlmKHRvdXBwZXIobnB0clsxXSkgPT0gJ1gnKSB7ICAgLyogTG9va3Mg bGlrZSBIZXggKi8NCj4gPiArICAgICAgaWYoKGJhc2UgPT0gMCkgfHwgKGJhc2UgPT0gMTYpKSB7 DQo+ID4gKyAgICAgICAgbnB0ciArPSAyOyAgLyogU2tpcCB0aGUgIjBYIiAgICAgICovDQo+ID4g KyAgICAgICAgYmFzZSA9IDE2OyAgLyogSW4gY2FzZSBiYXNlIHdhcyAwICovDQo+ID4gKyAgICAg IH0NCj4gPiArICAgIH0NCj4gPiArICAgIGVsc2UgeyAgICAvKiBMb29rcyBsaWtlIE9jdGFsICov DQo+ID4gKyAgICAgIGlmKChiYXNlID09IDApIHx8IChiYXNlID09IDgpKSB7DQo+ID4gKyAgICAg ICAgKytucHRyOyAgICAgLyogU2tpcCB0aGUgbGVhZGluZyAiMCIgKi8NCj4gPiArICAgICAgICBi YXNlID0gODsgICAvKiBJbiBjYXNlIGJhc2Ugd2FzIDAgICAqLw0KPiA+ICsgICAgICB9DQo+ID4g KyAgICB9DQo+ID4gKyAgfQ0KPiA+ICsgIGlmKGJhc2UgPT0gMCkgeyAgIC8qIElmIHN0aWxsIHpl cm8gdGhlbiBtdXN0IGJlIGRlY2ltYWwgKi8NCj4gPiArICAgIGJhc2UgPSAxMDsNCj4gPiArICB9 DQo+ID4gKyAgaWYoKm5wdHIgID09ICcwJykgew0KPiA+ICsgICAgZm9yKCA7ICpucHRyID09ICcw JzsgKytucHRyKTsgIC8qIFNraXAgYW55IHJlbWFpbmluZyBsZWFkaW5nIHplcm9zICovDQo+ID4g KyAgICBwRW5kID0gbnB0cjsNCj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIHdoaWxlKCBpc2FsbnVt KCpucHRyKSAmJiAoKHRlbXAgPSBEaWdpdDJWYWwoKm5wdHIpKSA8IGJhc2UpKSB7DQo+ID4gKyAg ICBQcmV2aW91cyA9IFJlc3VsdDsNCj4gPiArICAgIFJlc3VsdCA9IERpdlU2NHgzMiAoUmVzdWx0 LCBiYXNlKSArICh1bnNpZ25lZCBsb25nIGxvbmcpdGVtcDsNCj4gPiArICAgIGlmKCBSZXN1bHQg PCBQcmV2aW91cykgIHsgICAvLyBJZiB3ZSBvdmVyZmxvd2VkDQo+ID4gKyAgICAgIFJlc3VsdCA9 IFVMTE9OR19NQVg7DQo+ID4gKyAgICAgIGVycm5vID0gRVJBTkdFOw0KPiA+ICsgICAgICBicmVh azsNCj4gPiArICAgIH0NCj4gPiArICAgIHBFbmQgPSArK25wdHI7DQo+ID4gKyAgfQ0KPiA+ICsN Cj4gPiArICAvLyBTYXZlIHBvaW50ZXIgdG8gZmluYWwgc2VxdWVuY2UNCj4gPiArICBpZihlbmRw dHIgIT0gTlVMTCkgew0KPiA+ICsgICAgKmVuZHB0ciA9IChjaGFyICopcEVuZDsNCj4gPiArICB9 DQo+ID4gKyAgcmV0dXJuIFJlc3VsdDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg ZWRrMiBKYW5zc29uIHBvcnQgZG9lcyBub3Qgc3VwcG9ydCBkb3VibGVzLCBzaW1wbHkgcmV0dXJu IDAuDQo+ID4gKw0KPiA+ICsgIFRoZXNlIGNvbnZlcnNpb24gZnVuY3Rpb25zIGNvbnZlcnQgdGhl IGluaXRpYWwgcG9ydGlvbiBvZiB0aGUNCj4gPiArIHN0cmluZyAgcG9pbnRlZCB0byBieSBucHRy IHRvIGRvdWJsZSwgZmxvYXQsIGFuZCBsb25nIGRvdWJsZQ0KPiA+ICsgcmVwcmVzZW50YXRpb24s ICByZXNwZWN0aXZlbHkuDQo+ID4gKw0KPiA+ICsgIFRoZSBzdHJ0b2QoKSwgc3RydG9mKCksIGFu ZCBzdHJ0b2xkKCkgZnVuY3Rpb25zIHJldHVybiB0aGUNCj4gPiArIGNvbnZlcnRlZCAgdmFsdWUs IGlmIGFueS4NCj4gPiArDQo+ID4gKyAgSWYgZW5kcHRyIGlzIG5vdCBOVUxMLCBhIHBvaW50ZXIg dG8gdGhlIGNoYXJhY3RlciBhZnRlciB0aGUgbGFzdA0KPiA+ICsgY2hhcmFjLSAgdGVyIHVzZWQg aW4gdGhlIGNvbnZlcnNpb24gaXMgc3RvcmVkIGluIHRoZSBsb2NhdGlvbg0KPiA+ICsgcmVmZXJl bmNlZCBieSAgZW5kcHRyLg0KPiA+ICsNCj4gPiArICBJZiBubyBjb252ZXJzaW9uIGlzIHBlcmZv cm1lZCwgemVybyBpcyByZXR1cm5lZCBhbmQgdGhlIHZhbHVlIG9mDQo+ID4gKyBucHRyIGlzICBz dG9yZWQgaW4gdGhlIGxvY2F0aW9uIHJlZmVyZW5jZWQgYnkgZW5kcHRyLg0KPiA+ICsNCj4gPiAr ICBJZiB0aGUgY29ycmVjdCB2YWx1ZSB3b3VsZCBjYXVzZSBvdmVyZmxvdywgcGx1cyBvciBtaW51 cyBIVUdFX1ZBTCwNCj4gPiArIEhVR0VfVkFMRiwgb3IgSFVHRV9WQUxMIGlzIHJldHVybmVkIChh Y2NvcmRpbmcgdG8gdGhlIHNpZ24gYW5kIHR5cGUNCj4gPiArIG9mICB0aGUgcmV0dXJuIHZhbHVl KSwgYW5kIEVSQU5HRSBpcyBzdG9yZWQgaW4gZXJybm8uICBJZiB0aGUNCj4gPiArIGNvcnJlY3Qg dmFsdWUgIHdvdWxkIGNhdXNlIHVuZGVyZmxvdywgemVybyBpcyByZXR1cm5lZCBhbmQgRVJBTkdF IGlzDQo+IHN0b3JlZCBpbiBlcnJuby4NCj4gPiArDQo+ID4gKyAgQHJldHVybiAgUmV0dXJuIDAu DQo+ID4gKyoqLw0KPiA+ICtkb3VibGUNCj4gPiArc3RydG9kIChjb25zdCBjaGFyICogX19yZXN0 cmljdCBucHRyLCBjaGFyICoqIF9fcmVzdHJpY3QgZW5kcHRyKSB7DQo+ID4gKyAgICBpZihlbmRw dHIpDQo+ID4gKyAgICAgICplbmRwdHIgPSAoY2hhciAqKShucHRyICsgc3RybGVuKG5wdHIpKTsN Cj4gPiArDQo+ID4gKyAgICByZXR1cm4gKGRvdWJsZSkwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KioNCj4gPiArICBBbGxvY2F0ZSBhbmQgemVyby1pbml0aWFsaXplIGFycmF5Lg0KPiA+ICsqKi8N Cj4gPiArdm9pZCAqDQo+ID4gK2NhbGxvYyhzaXplX3QgTnVtLCBzaXplX3QgU2l6ZSkNCj4gPiAr ew0KPiA+ICsgIHZvaWQgICAgICAgKlJldFZhbDsNCj4gPiArICBzaXplX3QgICAgICBOdW1TaXpl Ow0KPiA+ICsNCj4gPiArICBOdW1TaXplID0gTnVtICogU2l6ZTsNCj4gPiArICBSZXRWYWwgID0g TlVMTDsNCj4gPiArICBpZiAoTnVtU2l6ZSAhPSAwKSB7DQo+ID4gKyAgUmV0VmFsID0gbWFsbG9j KE51bVNpemUpOw0KPiA+ICsgIGlmKCBSZXRWYWwgIT0gTlVMTCkgew0KPiA+ICsgICAgKFZPSUQp WmVyb01lbSggUmV0VmFsLCBOdW1TaXplKTsNCj4gPiArICB9DQo+ID4gKyAgfQ0KPiA+ICsgIERF QlVHKChERUJVR19QT09MLCAiMHglcCA9IGNhbGxvYyglZCwgJWQpXG4iLCBSZXRWYWwsIE51bSwg U2l6ZSkpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gUmV0VmFsOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICsvLw0KPiA+ICsvLyAgVGhlIGFycmF5cyBnaXZlIHRoZSBjdW11bGF0aXZlIG51bWJlciBvZiBk YXlzIHVwIHRvIHRoZSBmaXJzdCBvZg0KPiA+ICt0aGUgLy8gIG1vbnRoIG51bWJlciB1c2VkIGFz IHRoZSBpbmRleCAoMSAtPiAxMikgZm9yIHJlZ3VsYXIgYW5kIGxlYXANCj4geWVhcnMuDQo+ID4g Ky8vICBUaGUgdmFsdWUgYXQgaW5kZXggMTMgaXMgZm9yIHRoZSB3aG9sZSB5ZWFyLg0KPiA+ICsv Lw0KPiA+ICtVSU5UTiBDdW11bGF0aXZlRGF5c1syXVsxNF0gPSB7DQo+ID4gKyAgew0KPiA+ICsg ICAgMCwNCj4gPiArICAgIDAsDQo+ID4gKyAgICAzMSwNCj4gPiArICAgIDMxICsgMjgsDQo+ID4g KyAgICAzMSArIDI4ICsgMzEsDQo+ID4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCwNCj4gPiArICAg IDMxICsgMjggKyAzMSArIDMwICsgMzEsDQo+ID4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMx ICsgMzAsDQo+ID4gKyAgICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSwNCj4gPiAr ICAgIDMxICsgMjggKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEsDQo+ID4gKyAgICAzMSAr IDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAsDQo+ID4gKyAgICAzMSArIDI4 ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAgKyAzMSwNCj4gPiArICAgIDMxICsg MjggKyAzMSArIDMwICsgMzEgKyAzMCArIDMxICsgMzEgKyAzMCArIDMxICsgMzAsDQo+ID4gKyAg ICAzMSArIDI4ICsgMzEgKyAzMCArIDMxICsgMzAgKyAzMSArIDMxICsgMzAgKyAzMSArIDMwICsg MzENCj4gPiArICB9LA0KPiA+ICsgIHsNCj4gPiArICAgIDAsDQo+ID4gKyAgICAwLA0KPiA+ICsg ICAgMzEsDQo+ID4gKyAgICAzMSArIDI5LA0KPiA+ICsgICAgMzEgKyAyOSArIDMxLA0KPiA+ICsg ICAgMzEgKyAyOSArIDMxICsgMzAsDQo+ID4gKyAgICAzMSArIDI5ICsgMzEgKyAzMCArIDMxLA0K PiA+ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSArIDMwLA0KPiA+ICsgICAgMzEgKyAyOSAr IDMxICsgMzAgKyAzMSArIDMwICsgMzEsDQo+ID4gKyAgICAzMSArIDI5ICsgMzEgKyAzMCArIDMx ICsgMzAgKyAzMSArIDMxLA0KPiA+ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSArIDMwICsg MzEgKyAzMSArIDMwLA0KPiA+ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSArIDMwICsgMzEg KyAzMSArIDMwICsgMzEsDQo+ID4gKyAgICAzMSArIDI5ICsgMzEgKyAzMCArIDMxICsgMzAgKyAz MSArIDMxICsgMzAgKyAzMSArIDMwLA0KPiA+ICsgICAgMzEgKyAyOSArIDMxICsgMzAgKyAzMSAr IDMwICsgMzEgKyAzMSArIDMwICsgMzEgKyAzMCArIDMxDQo+ID4gKyAgfQ0KPiA+ICt9Ow0KPiA+ ICsNCj4gPiArI2RlZmluZSBJc0xlYXAoeSkgICAoKCh5KSAlIDQpID09IDAgJiYgKCgoeSkgJSAx MDApICE9IDAgfHwgKCh5KSAlIDQwMCkgPT0gMCkpDQo+ID4gKyNkZWZpbmUgU0VDU1BFUk1JTiAg KDYwKQ0KPiA+ICsjZGVmaW5lIFNFQ1NQRVJIT1VSICg2MCAqIDYwKQ0KPiA+ICsjZGVmaW5lIFNF Q1NQRVJEQVkgICgyNCAqIFNFQ1NQRVJIT1VSKQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgR2V0 IHRoZSBzeXN0ZW0gdGltZSBhcyBzZWNvbmRzIGVsYXBzZWQgc2luY2UgbWlkbmlnaHQsIEphbnVh cnkgMSwgMTk3MC4NCj4gPiArKiovDQo+ID4gK3RpbWVfdCB0aW1lICh0aW1lX3QgKnRpbWVyKQ0K PiA+ICt7DQo+ID4gKyAgRUZJX1RJTUUgIFRpbWU7DQo+ID4gKyAgdGltZV90ICAgIENhbFRpbWU7 DQo+ID4gKyAgVUlOVE4gICAgIFllYXI7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gR2V0 IHRoZSBjdXJyZW50IHRpbWUgYW5kIGRhdGUgaW5mb3JtYXRpb24gIC8vICBnUlQtPkdldFRpbWUN Cj4gPiArICgmVGltZSwgTlVMTCk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gWWVhcnMg SGFuZGxpbmcNCj4gPiArICAvLyBVVGltZSBzaG91bGQgbm93IGJlIHNldCB0byAwMDowMDowMCBv biBKYW4gMSBvZiB0aGUgY3VycmVudCB5ZWFyLg0KPiA+ICsgIC8vDQo+ID4gKyAgZm9yIChZZWFy ID0gMTk3MCwgQ2FsVGltZSA9IDA7IFllYXIgIT0gVGltZS5ZZWFyOyBZZWFyKyspIHsNCj4gPiAr ICAgIENhbFRpbWUgPSBDYWxUaW1lICsgKHRpbWVfdCkoQ3VtdWxhdGl2ZURheXNbSXNMZWFwKFll YXIpXVsxM10gKg0KPiA+ICsgU0VDU1BFUkRBWSk7ICB9DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4g KyAgLy8gQWRkIGluIG51bWJlciBvZiBzZWNvbmRzIGZvciBjdXJyZW50IE1vbnRoLCBEYXksIEhv dXIsIE1pbnV0ZSwNCj4gPiArIFNlY29uZHMsIGFuZCBUaW1lWm9uZSBhZGp1c3RtZW50ICAvLyAg Q2FsVGltZSA9IENhbFRpbWUgKw0KPiA+ICsgICAgICAgICAgICAodGltZV90KSgoVGltZS5UaW1l Wm9uZSAhPSBFRklfVU5TUEVDSUZJRURfVElNRVpPTkUpID8NCj4gKFRpbWUuVGltZVpvbmUgKiA2 MCkgOiAwKSArDQo+ID4gKyAgICAgICAgICAgICh0aW1lX3QpKEN1bXVsYXRpdmVEYXlzW0lzTGVh cChUaW1lLlllYXIpXVtUaW1lLk1vbnRoXSAqDQo+IFNFQ1NQRVJEQVkpICsNCj4gPiArICAgICAg ICAgICAgKHRpbWVfdCkoKChUaW1lLkRheSA+IDApID8gVGltZS5EYXkgLSAxIDogMCkgKiBTRUNT UEVSREFZKSArDQo+ID4gKyAgICAgICAgICAgICh0aW1lX3QpKFRpbWUuSG91ciAqIFNFQ1NQRVJI T1VSKSArDQo+ID4gKyAgICAgICAgICAgICh0aW1lX3QpKFRpbWUuTWludXRlICogNjApICsNCj4g PiArICAgICAgICAgICAgKHRpbWVfdClUaW1lLlNlY29uZDsNCj4gPiArDQo+ID4gKyAgaWYgKHRp bWVyICE9IE5VTEwpIHsNCj4gPiArICAgICp0aW1lciA9IENhbFRpbWU7DQo+ID4gKyAgfQ0KPiA+ ICsNCj4gPiArICByZXR1cm4gQ2FsVGltZTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArdHlwZWRlZg0K PiA+ICtpbnQNCj4gPiArKCpTT1JUX0NPTVBBUkUpKA0KPiA+ICsgIElOICBWT0lEICAqQnVmZmVy MSwNCj4gPiArICBJTiAgVk9JRCAgKkJ1ZmZlcjINCj4gPiArICApOw0KPiA+ICsNCj4gPiArLyoq DQo+ID4gKyAgRHVwbGljYXRlZCBmcm9tIEVES0lJIEJhc2VTb3J0TGliIGZvciBxc29ydCgpIHdy YXBwZXINCj4gPiArICBAcGFyYW1baW4sIG91dF0gQnVmZmVyVG9Tb3J0ICAgb24gY2FsbCBhIEJ1 ZmZlciBvZiAocG9zc2libHkgc29ydGVkKQ0KPiBlbGVtZW50cw0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBvbiByZXR1cm4gYSBidWZmZXIgb2Ygc29ydGVkIGVsZW1lbnRz DQo+ID4gKyAgQHBhcmFtW2luXSBDb3VudCAgICAgICAgICAgICAgIHRoZSBudW1iZXIgb2YgZWxl bWVudHMgaW4gdGhlIGJ1ZmZlciB0byBzb3J0DQo+ID4gKyAgQHBhcmFtW2luXSBFbGVtZW50U2l6 ZSAgICAgICAgIFNpemUgb2YgYW4gZWxlbWVudCBpbiBieXRlcw0KPiA+ICsgIEBwYXJhbVtpbl0g Q29tcGFyZUZ1bmN0aW9uICAgICBUaGUgZnVuY3Rpb24gdG8gY2FsbCB0byBwZXJmb3JtIHRoZQ0K PiBjb21wYXJpc29uDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGFu eSAyIGVsZW1lbnRzDQo+ID4gKyAgQHBhcmFtW2luXSBCdWZmZXIgICAgICAgICAgICAgIEJ1ZmZl ciBvZiBzaXplIEVsZW1lbnRTaXplIGZvciB1c2UgaW4gc3dhcHBpbmcNCj4gPiArKiovDQo+ID4g K1NUQVRJQw0KPiA+ICtWT0lEDQo+ID4gK1F1aWNrU29ydFdvcmtlciAoDQo+ID4gKyAgSU4gT1VU ICAgIFZPSUQgICAgICAgICAgKkJ1ZmZlclRvU29ydCwNCj4gPiArICBJTiBDT05TVCAgVUlOVE4g ICAgICAgICBDb3VudCwNCj4gPiArICBJTiBDT05TVCAgVUlOVE4gICAgICAgICBFbGVtZW50U2l6 ZSwNCj4gPiArICBJTiAgICAgICAgU09SVF9DT01QQVJFICBDb21wYXJlRnVuY3Rpb24sDQo+ID4g KyAgSU4gICAgICAgIFZPSUQgICAgICAgICAgKkJ1ZmZlcg0KPiA+ICsgICkNCj4gPiArew0KPiA+ ICsgIFZPSUQgICAgICAgICpQaXZvdDsNCj4gPiArICBVSU5UTiAgICAgICBMb29wQ291bnQ7DQo+ ID4gKyAgVUlOVE4gICAgICAgTmV4dFN3YXBMb2NhdGlvbjsNCj4gPiArDQo+ID4gKyAgQVNTRVJU KEJ1ZmZlclRvU29ydCAgICAhPSBOVUxMKTsNCj4gPiArICBBU1NFUlQoQ29tcGFyZUZ1bmN0aW9u ICE9IE5VTEwpOw0KPiA+ICsgIEFTU0VSVChCdWZmZXIgICAgICAgICAgIT0gTlVMTCk7DQo+ID4g Kw0KPiA+ICsgIGlmIChDb3VudCA8IDIgfHwgRWxlbWVudFNpemUgIDwgMSkgew0KPiA+ICsgICAg cmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgTmV4dFN3YXBMb2NhdGlvbiA9IDA7DQo+ ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gUGljayBhIHBpdm90ICh3ZSBjaG9vc2UgbGFzdCBl bGVtZW50KSAgLy8gIFBpdm90ID0gKChVSU5UOA0KPiA+ICsgKilCdWZmZXJUb1NvcnQgKyAoKENv dW50IC0gMSkgKiBFbGVtZW50U2l6ZSkpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIE5v dyBnZXQgdGhlIHBpdm90IHN1Y2ggdGhhdCBhbGwgb24gImxlZnQiIGFyZSBiZWxvdyBpdCAgLy8g YW5kDQo+ID4gKyBldmVyeXRoaW5nICJyaWdodCIgYXJlIGFib3ZlIGl0ICAvLyAgZm9yIChMb29w Q291bnQgPSAwOyBMb29wQ291bnQgPA0KPiA+ICsgQ291bnQgLSAxOyAgTG9vcENvdW50KyspICB7 DQo+ID4gKyAgICAvLw0KPiA+ICsgICAgLy8gSWYgdGhlIGVsZW1lbnQgaXMgbGVzcyB0aGFuIHRo ZSBwaXZvdA0KPiA+ICsgICAgLy8NCj4gPiArICAgIGlmIChDb21wYXJlRnVuY3Rpb24gKChWT0lE ICopKChVSU5UOCAqKUJ1ZmZlclRvU29ydCArICgoTG9vcENvdW50KSAqDQo+IEVsZW1lbnRTaXpl KSksIFBpdm90KSA8PSAwKSB7DQo+ID4gKyAgICAgIC8vDQo+ID4gKyAgICAgIC8vIFN3YXANCj4g PiArICAgICAgLy8NCj4gPiArICAgICAgQ29weU1lbSAoQnVmZmVyLCAoVUlOVDggKilCdWZmZXJU b1NvcnQgKyAoTmV4dFN3YXBMb2NhdGlvbiAqDQo+IEVsZW1lbnRTaXplKSwgRWxlbWVudFNpemUp Ow0KPiA+ICsgICAgICBDb3B5TWVtICgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoTmV4dFN3YXBM b2NhdGlvbiAqDQo+ID4gKyBFbGVtZW50U2l6ZSksIChVSU5UOCAqKUJ1ZmZlclRvU29ydCArICgo TG9vcENvdW50KSAqDQo+ID4gRWxlbWVudFNpemUpLCBFbGVtZW50U2l6ZSk7DQo+ID4gKyAgICAg IENvcHlNZW0gKChVSU5UOCAqKUJ1ZmZlclRvU29ydCArICgoTG9vcENvdW50KSAqIEVsZW1lbnRT aXplKSwNCj4gPiArIEJ1ZmZlciwgRWxlbWVudFNpemUpOw0KPiA+ICsNCj4gPiArICAgICAgLy8N Cj4gPiArICAgICAgLy8gSW5jcmVtZW50IE5leHRTd2FwTG9jYXRpb24NCj4gPiArICAgICAgLy8N Cj4gPiArICAgICAgTmV4dFN3YXBMb2NhdGlvbisrOw0KPiA+ICsgICAgfQ0KPiA+ICsgIH0NCj4g PiArICAvLw0KPiA+ICsgIC8vIFN3YXAgcGl2b3QgdG8gaXQncyBmaW5hbCBwb3NpdGlvbiAoTmV4 dFN3YXBMb2NhaXRvbikgIC8vDQo+ID4gKyBDb3B5TWVtIChCdWZmZXIsIFBpdm90LCBFbGVtZW50 U2l6ZSk7ICBDb3B5TWVtIChQaXZvdCwgKFVJTlQ4DQo+ID4gKyAqKUJ1ZmZlclRvU29ydCArIChO ZXh0U3dhcExvY2F0aW9uICogRWxlbWVudFNpemUpLCBFbGVtZW50U2l6ZSk7DQo+ID4gKyBDb3B5 TWVtICgoVUlOVDggKilCdWZmZXJUb1NvcnQgKyAoTmV4dFN3YXBMb2NhdGlvbiAqIEVsZW1lbnRT aXplKSwNCj4gPiArIEJ1ZmZlciwgRWxlbWVudFNpemUpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ ICsgIC8vIE5vdyByZWN1cnNlIG9uIDIgcGFyaXRpYWwgbGlzdHMuICBOZWl0aGVyIG9mIHRoZXNl IHdpbGwgaGF2ZSB0aGUgJ3Bpdm90Jw0KPiBlbGVtZW50Lg0KPiA+ICsgIC8vIElFIGxpc3QgaXMg c29ydGVkIGxlZnQgaGFsZiwgcGl2b3QgZWxlbWVudCwgc29ydGVkIHJpZ2h0IGhhbGYuLi4NCj4g PiArICAvLw0KPiA+ICsgIFF1aWNrU29ydFdvcmtlciAoDQo+ID4gKyAgICBCdWZmZXJUb1NvcnQs DQo+ID4gKyAgICBOZXh0U3dhcExvY2F0aW9uLA0KPiA+ICsgICAgRWxlbWVudFNpemUsDQo+ID4g KyAgICBDb21wYXJlRnVuY3Rpb24sDQo+ID4gKyAgICBCdWZmZXINCj4gPiArICAgICk7DQo+ID4g Kw0KPiA+ICsgIFF1aWNrU29ydFdvcmtlciAoDQo+ID4gKyAgICAoVUlOVDggKilCdWZmZXJUb1Nv cnQgKyAoTmV4dFN3YXBMb2NhdGlvbiArIDEpICogRWxlbWVudFNpemUsDQo+ID4gKyAgICBDb3Vu dCAtIE5leHRTd2FwTG9jYXRpb24gLSAxLA0KPiA+ICsgICAgRWxlbWVudFNpemUsDQo+ID4gKyAg ICBDb21wYXJlRnVuY3Rpb24sDQo+ID4gKyAgICBCdWZmZXINCj4gPiArICAgICk7DQo+ID4gKw0K PiA+ICsgIHJldHVybjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAgUGVyZm9ybXMg YSBxdWljayBzb3J0DQo+ID4gKyoqLw0KPiA+ICt2b2lkIHFzb3J0ICh2b2lkICpiYXNlLCBzaXpl X3QgbnVtLCBzaXplX3Qgd2lkdGgsIGludA0KPiA+ICsoKmNvbXBhcmUpKGNvbnN0IHZvaWQgKiwg Y29uc3Qgdm9pZCAqKSkgew0KPiA+ICsgIFZPSUQgICpCdWZmZXI7DQo+ID4gKw0KPiA+ICsgIEFT U0VSVCAoYmFzZSAgICAhPSBOVUxMKTsNCj4gPiArICBBU1NFUlQgKGNvbXBhcmUgIT0gTlVMTCk7 DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gVXNlIENSVC1zdHlsZSBtYWxsb2MgdG8gY292 ZXIgQlMgYW5kIFJUIG1lbW9yeSBhbGxvY2F0aW9uLg0KPiA+ICsgIC8vDQo+ID4gKyAgQnVmZmVy ID0gbWFsbG9jICh3aWR0aCk7DQo+ID4gKyAgQVNTRVJUIChCdWZmZXIgIT0gTlVMTCk7DQo+ID4g Kw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gUmUtdXNlIFBlcmZvcm1RdWlja1NvcnQoKSBmdW5jdGlv biBJbXBsZW1lbnRhdGlvbiBpbiBFREtJSQ0KPiBCYXNlU29ydExpYi4NCj4gPiArICAvLw0KPiA+ ICsgIFF1aWNrU29ydFdvcmtlciAoYmFzZSwgKFVJTlROKW51bSwgKFVJTlROKXdpZHRoLA0KPiA+ ICsgKFNPUlRfQ09NUEFSRSljb21wYXJlLCBCdWZmZXIpOw0KPiA+ICsNCj4gPiArICBmcmVlIChC dWZmZXIpOw0KPiA+ICsgIHJldHVybjsNCj4gPiArfQ0KPiA+ICsNCj4gPiArLyoqDQo+ID4gKyAg R2V0IGNoYXJhY3RlciBmcm9tIHN0cmVhbSwgd2UgZG9uJ3Qgc3VwcG9ydCBmaWxlIG9wZXJhc3Rp b24gb24gZWRrMg0KPiBKU09OIGxpYnJhcnkuDQo+ID4gKw0KPiA+ICsgIEByZXR1cm4gUmV0dXJu cyB0aGUgY2hhcmFjdGVyIGN1cnJlbnRseSBwb2ludGVkIGJ5IHRoZSBpbnRlcm5hbA0KPiA+ICsg ZmlsZSBwb3NpdGlvbiBpbmRpY2F0b3Igb2YgdGhlIHNwZWNpZmllZCBzdHJlYW0NCj4gPiArDQo+ ID4gKyoqLw0KPiA+ICtpbnQgZmdldGMoRklMRSAqIF9GaWxlKXsNCj4gPiArICAgcmV0dXJuIDA7 DQo+ID4gK30NCj4gPiBkaWZmIC0tZ2l0IGEvUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRM aWIuaW5mDQo+ID4gYi9SZWRmaXNoUGtnL0xpYnJhcnkvQ3J0TGliL0NydExpYi5pbmYNCj4gPiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAuLmI1MTQ4MTdjZjQNCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvUmVkZmlzaFBrZy9MaWJyYXJ5L0NydExpYi9DcnRM aWIuaW5mDQo+ID4gQEAgLTAsMCArMSwzNyBAQA0KPiA+ICsjIyBAZmlsZQ0KPiA+ICsjIEVESzIg QyBSdW50aW1lIExpYnJhcnkgZm9yIG9wZW5zb3VyY2UgcHJvamVjdC4NCj4gPiArIw0KPiA+ICsj IENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2 ZWQuPEJSPiAjDQo+ID4gKyhDKSBDb3B5cmlnaHQgMjAyMCBIZXdsZXR0IFBhY2thcmQgRW50ZXJw cmlzZSBEZXZlbG9wbWVudCBMUDxCUj4gIw0KPiA+ICsjICAgIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKyMNCj4gPiArIyMNCj4gPiArDQo+ID4gK1tE ZWZpbmVzXQ0KPiA+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMTAw MWINCj4gPiArICBCQVNFX05BTUUgICAgICAgICAgICAgICAgICAgICAgPSBDcnRMaWINCj4gPiAr ICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSA4MjYzQjhBQy1EMDIxLTQyNUQtQjMz Ny0zRUM5NkY1REMxOUINCj4gPiArICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAgPSBE WEVfRFJJVkVSDQo+ID4gKyAgVkVSU0lPTl9TVFJJTkcgICAgICAgICAgICAgICAgID0gMS4wDQo+ ID4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gQ3J0TGlifERYRV9DT1JFIERY RV9EUklWRVINCj4gRFhFX1JVTlRJTUVfRFJJVkVSIERYRV9TTU1fRFJJVkVSIFVFRklfQVBQTElD QVRJT04NCj4gPiBVRUZJX0RSSVZFUg0KPiA+ICsNCj4gPiArIw0KPiA+ICsjICBWQUxJRF9BUkNI SVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0IEFSTSBBQVJDSDY0IFJJU0NWNjQNCj4gPiAr Iw0KPiA+ICsNCj4gPiArW1NvdXJjZXNdDQo+ID4gKyAgQ3J0TGliLmMNCj4gPiArDQo+ID4gK1tM aWJyYXJ5Q2xhc3Nlc10NCj4gPiArICBCYXNlTGliDQo+ID4gKyAgRGVidWdMaWINCj4gPiArICBN ZW1vcnlBbGxvY2F0aW9uTGliDQo+ID4gKyAgVWVmaVJ1bnRpbWVTZXJ2aWNlc1RhYmxlTGliDQo+ ID4gKw0KPiA+ICtbUGFja2FnZXNdDQo+ID4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPiArICBN ZGVNb2R1bGVQa2cvTWRlTW9kdWxlUGtnLmRlYw0KPiA+ICsgIFJlZGZpc2hQa2cvUmVkZmlzaFBr Zy5kZWMNCj4gPiArDQo+ID4gKw0KPiA+IGRpZmYgLS1naXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hM aWJzLmRzYy5pbmMNCj4gPiBiL1JlZGZpc2hQa2cvUmVkZmlzaExpYnMuZHNjLmluYyBpbmRleCBk NGMwOGUxOGFjLi4yYTk1MWJkOGZhIDEwMDY0NA0KPiA+IC0tLSBhL1JlZGZpc2hQa2cvUmVkZmlz aExpYnMuZHNjLmluYw0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaExpYnMuZHNjLmluYw0K PiA+IEBAIC0xMiw1ICsxMiw2IEBADQo+ID4gICMjDQo+ID4gICFpZiAkKFJFREZJU0hfRU5BQkxF KSA9PSBUUlVFDQo+ID4gICAgVWNzMlV0ZjhMaWJ8UmVkZmlzaFBrZy9MaWJyYXJ5L0Jhc2VVY3My VXRmOExpYi9CYXNlVWNzMlV0ZjhMaWIuaW5mDQo+ID4gKyAgQ3J0TGlifFJlZGZpc2hQa2cvTGli cmFyeS9DcnRMaWIvQ3J0TGliLmluZg0KPiA+ICAhZW5kaWYNCj4gPg0KPiA+IGRpZmYgLS1naXQg YS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuY2kueWFtbA0KPiA+IGIvUmVkZmlzaFBrZy9SZWRmaXNo UGtnLmNpLnlhbWwgaW5kZXggMjBjMjk3YWQyMi4uOTg5NWZkYWM5OSAxMDA2NDQNCj4gPiAtLS0g YS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuY2kueWFtbA0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvUmVk ZmlzaFBrZy5jaS55YW1sDQo+ID4gQEAgLTE3LDYgKzE3LDI1IEBADQo+ID4gICAgICAgICAgXSwN Cj4gPiAgICAgICAgICAjIyBCb3RoIGZpbGUgcGF0aCBhbmQgZGlyZWN0b3J5IHBhdGggYXJlIGFj Y2VwdGVkLg0KPiA+ICAgICAgICAgICJJZ25vcmVGaWxlcyI6IFsNCj4gPiArICAgICAgICAgICAg IyMgQmVsb3cgYXJlIGZpbGVzIGluY29ycG9yYXRlZCB3aXRoIG9wZW4gc291cmNlIHdoaWNoIGFy ZQ0KPiA+ICsgICAgICAgICAgICAjIyBub3QgZWRrMiBjb2Rpbmcgc3RhbmRhcmQgY29tcGxpYW50 Lg0KPiA+ICsgICAgICAgICAgICAjIw0KPiA+ICsgICAgICAgICAgICAjIyBFREsyIENSVCBsaWJy YXJ5IHdoaWNoIGlzIG5vdCBlZGsyIGNvZGluZw0KPiA+ICsgICAgICAgICAgICAjIyBzdGFuZGFy ZCBjb21wbGlhbnQuDQo+ID4gKyAgICAgICAgICAgICMjIEMgcnVudGltZSBsaWJyYXJ5IGZvciBF REtJSSBKc29uTGliLg0KPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvc3lzIiwNCj4gPiAr ICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L2Fzc2VydC5oIiwNCj4gPiArICAgICAgICAgICAgIklu Y2x1ZGUvQ3J0L2Vycm5vLmgiLA0KPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvbGltaXRz LmgiLA0KPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvbWF0aC5oIiwNCj4gPiArICAgICAg ICAgICAgIkluY2x1ZGUvQ3J0L3N0ZGFyZy5oIiwNCj4gPiArICAgICAgICAgICAgIkluY2x1ZGUv Q3J0L3N0ZGRlZi5oIiwNCj4gPiArICAgICAgICAgICAgIkluY2x1ZGUvQ3J0L3N0ZGlvLmgiLA0K PiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQvc3RkbGliLmgiLA0KPiA+ICsgICAgICAgICAg ICAiSW5jbHVkZS9DcnQvc3RyaW5nLmgiLA0KPiA+ICsgICAgICAgICAgICAiSW5jbHVkZS9DcnQv dGltZS5oIiwNCj4gPiArICAgICAgICAgICAgIkluY2x1ZGUvTGlicmFyeS9DcnRMaWIuaCIsDQo+ ID4gKyAgICAgICAgICAgICJMaWJyYXJ5L0NydExpYi9DcnRMaWIuYyINCj4gPiAgICAgICAgICBd DQo+ID4gICAgICB9LA0KPiA+ICAgICAgIkNvbXBpbGVyUGx1Z2luIjogew0KPiA+IGRpZmYgLS1n aXQgYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZGVjIGIvUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRl Yw0KPiA+IGluZGV4IGFlY2MxZjRhM2EuLjIxNDJiNDM2NDAgMTAwNjQ0DQo+ID4gLS0tIGEvUmVk ZmlzaFBrZy9SZWRmaXNoUGtnLmRlYw0KPiA+ICsrKyBiL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5k ZWMNCj4gPiBAQCAtMTUsMTYgKzE1LDI0IEBADQo+ID4NCj4gPiAgW0luY2x1ZGVzXQ0KPiA+ICAg IEluY2x1ZGUNCj4gPiArICBJbmNsdWRlL0NydCAgICAgICAgICAgICAgICAgICAjIEhlYWRlciBm aWxlcyBmb3IgQyBSVEwuDQo+ID4NCj4gPiAgW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ICAgICMjICBA bGlicmFyeWNsYXNzIFBsYXRmb3JtIFJlZGZpc2ggSG9zdCBJbnRlcmZhY2UgTGlicmFyeQ0KPiA+ ICAgICMgICBQbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBSZWRmaXNoIEhvc3QgSW50 ZXJmYWNlLg0KPiA+DQo+ID4gUmVkZmlzaFBsYXRmb3JtSG9zdEludGVyZmFjZUxpYnxJbmNsdWRl L0xpYnJhcnkvUmVkZmlzaEhvc3RJbnRlcmZhY2VMaQ0KPiA+IGIuaA0KPiA+ICsNCj4gPiAgICAj IyAgQGxpYnJhcnljbGFzcyAgVGhpcyBsaWJyYXJ5IHByb3ZpZGVzIFVDUzIgdG8gVVRGOCBtYW5p cHVsYXRpb24NCj4gPiAgICAjICAgZnVuY3Rpb25zLg0KPiA+ICAgICMNCj4gPiAgICBVY3MyVXRm OExpYnxJbmNsdWRlL0xpYnJhcnkvQmFzZVVjczJVdGY4TGliLmgNCj4gPg0KPiA+ICsgICMjICBA bGlicmFyeWNsYXNzICBQcm92aWRlcyB0aGUgQyBydW50aW1lIGxpYnJhcnkgZnVuY3Rpb25zDQo+ ID4gKyAgIyAgIENSVCBsaWJyYXJ5IGlzIGN1cnJlbnRseSB1c2VkIGJ5IGVkazIgSnNvbkxpYiAo b3BlbiBzb3VyY2UNCj4gPiArICAjICAgamFuc3NvbiBwcm9qZWN0KSBhbmQgZWRrMiBSZWRmaXNo TGliIChsaWJyZWRmaXNoIG9wZW4gc291cmNlDQo+ID4gKyAgIyAgIHByb2plY3QpLg0KPiA+ICsg IENydExpYnxJbmNsdWRlL0xpYnJhcnkvQ3J0TGliLmgNCj4gPiArDQo+ID4gIFtQcm90b2NvbHNd DQo+ID4gICAgIyMgSW5jbHVkZS9Qcm90b2NvbC9SZWRmaXNoRGlzY292ZXIuaA0KPiA+ICAgIGdF ZmlSZWRmaXNoRGlzY292ZXJQcm90b2NvbEd1aWQgICAgICA9IHsgMHg1ZGIxMjUwOSwgMHg0NTUw LCAweDQzNDcsIHsgMHg5NiwNCj4gMHhiMywgMHg3MywgMHhjMCwgMHhmZiwgMHg2ZSwgMHg4Niwg MHg5Zg0KPiA+IH19DQo+ID4gZGlmZiAtLWdpdCBhL1JlZGZpc2hQa2cvUmVkZmlzaFBrZy5kc2Mg Yi9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZHNjDQo+ID4gaW5kZXggMzYzOWI2MjBlNi4uYWExY2Nk NWE5NSAxMDA2NDQNCj4gPiAtLS0gYS9SZWRmaXNoUGtnL1JlZGZpc2hQa2cuZHNjDQo+ID4gKysr IGIvUmVkZmlzaFBrZy9SZWRmaXNoUGtnLmRzYw0KPiA+IEBAIC00OCw1ICs0OCw2IEBADQo+ID4g IFtDb21wb25lbnRzXQ0KPiA+DQo+IFJlZGZpc2hQa2cvTGlicmFyeS9QbGF0Zm9ybUhvc3RJbnRl cmZhY2VMaWJOdWxsL1BsYXRmb3JtSG9zdEludGVyZmFjZUxpYk4NCj4gdWxsLmluZg0KPiA+ICAg IFJlZGZpc2hQa2cvTGlicmFyeS9CYXNlVWNzMlV0ZjhMaWIvQmFzZVVjczJVdGY4TGliLmluZg0K PiA+ICsgIFJlZGZpc2hQa2cvTGlicmFyeS9DcnRMaWIvQ3J0TGliLmluZg0KPiA+DQo+ID4gICAg IWluY2x1ZGUgUmVkZmlzaFBrZy9SZWRmaXNoLmRzYy5pbmMNCj4gPiAtLQ0KPiA+IDIuMTcuMQ0K PiA+DQo+ID4NCj4gPg0KPiA+DQo+ID4NCj4gDQo+IA0KPiANCj4gDQo+IA0KDQo=