From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.0 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 94888C433E8 for ; Thu, 23 Jul 2020 02:13:24 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 56DE620825 for ; Thu, 23 Jul 2020 02:13:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="Llp05qO5"; dkim=fail reason="signature verification failed" (2048-bit key) header.d=dabbelt-com.20150623.gappssmtp.com header.i=@dabbelt-com.20150623.gappssmtp.com header.b="G725Kcgv" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 56DE620825 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=dabbelt.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Type: Content-Transfer-Encoding:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Mime-Version:Message-ID:To:From:In-Reply-To:Subject: Date:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:References:List-Owner; bh=wp4ejmNAYafGKAACwUh5zCzk0Iwkv5I3EsG6uiH7AOQ=; b=Llp05qO5KD0HtHCk7l52H9h/G P3PYA8vAvjjvE3+OyQh2FG+L84huQ5muVSp5DNVVMOMTb2sHPIXK9b2Geqa3Bk01PzTqURXjnf8Hn rL6GGRUxWPLdo9JPyuy/XPRoDOE7267/XvRbEXsYIZD+gjvw8osiyuxa9DbgX3oqWYL6XwhLzpPyj azzkRMFdfKTUyLKp3+8cpdnfU0RwswYEAQum4HSuFNxjYAEiKhggjd5ry9VY26Vvw1yikLnmjYDMt hZ3xWkHt5o+eacZQiiWmrsywF5BZMpDSo2GB+/fRIioltnILykRlilhFKf2jzrIolkRE725PK6Vqu fHgtB2SAw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jyQjU-00057k-6o; Thu, 23 Jul 2020 02:13:16 +0000 Received: from mail-pg1-x541.google.com ([2607:f8b0:4864:20::541]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jyQjP-00056E-Vm for linux-riscv@lists.infradead.org; Thu, 23 Jul 2020 02:13:13 +0000 Received: by mail-pg1-x541.google.com with SMTP id o13so2296631pgf.0 for ; Wed, 22 Jul 2020 19:13:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dabbelt-com.20150623.gappssmtp.com; s=20150623; h=date:subject:in-reply-to:cc:from:to:message-id:mime-version :content-transfer-encoding; bh=VIh7LORRnYnHbsVileK4t00kEVEKZppqimtaFGwwCyk=; b=G725KcgvUWYRPeij66AWuy2iN9XXkhx3pb7L8lUs/jvW0dWxo/cuEdQmYpMpDGC9Th +bvq0hXt7xPT7ZvIO7rs/JGcbd0ipvtXt1f4L1dqhLLpySLTPadIubGmGNPOC+/FJpKZ HwcVcFa/fVBTluncxEi7n6GKjjXN6QXh6J8TBlHcPfD703uEI2ujIf4JbdN6yLzhmeDv 2wql7KpaoTfO1jS6X5d5kRyRbHfJilf5AZiEpkYy68jT336XrFIrrJJsCIrXIJH3xl/V hn/HwxD2zAOBh330fUo5/hwHkxp6eqcWBzOF8oUfwRXkWAj+CMuieSntNhikDlNQiYny 52BQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:subject:in-reply-to:cc:from:to:message-id :mime-version:content-transfer-encoding; bh=VIh7LORRnYnHbsVileK4t00kEVEKZppqimtaFGwwCyk=; b=lQhEpK2MKItV6k+NjH0qRFwOic1v9neZ6w1l6CYP6XHpTegVLLC9PVF52rHBU+Nk+M p5M+BK+hLhKphcBfpUz0Ftmj4mNk7kbvSTSbyoUH830bm3amhkt6sfTpKIrZ1dgYyx3p 6SSBL96tdjXKSBpH381uG9X3WW4Ea7QBaqChFnFhm4eRl5kMmX7v/2MV9tq7HT0jQMnL GGpbiaHOpU7xxhNSF8Yyc3HAla55OibiUZnGMOln+rE/nCTb+TGjV7mlD5hvkLYGhfdR 05oUXoY8Jm+aAZnRZNP4l8W+LPVxgxXAAIWizd/cXNB52eiPk0l4cgG6PiuupATJlWwv 4KMw== X-Gm-Message-State: AOAM533t0UYjlS4jg/NbkvQORtpRY1gH3Rsar+ZUl+OtpSQ1qFcmS3iX Qyrophb1mogZXVzEYpH1HaMF4A== X-Google-Smtp-Source: ABdhPJyHQFHDIVofGYjLnQ9glzpgMMjE+iZHAhj9CAJYLWNzL41oZmuRp2f2W/fXwG87NKg7YZCttA== X-Received: by 2002:aa7:988f:: with SMTP id r15mr2216804pfl.2.1595470389490; Wed, 22 Jul 2020 19:13:09 -0700 (PDT) Received: from localhost (76-210-143-223.lightspeed.sntcca.sbcglobal.net. [76.210.143.223]) by smtp.gmail.com with ESMTPSA id u24sm904505pfm.211.2020.07.22.19.13.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 22 Jul 2020 19:13:08 -0700 (PDT) Date: Wed, 22 Jul 2020 19:13:08 -0700 (PDT) X-Google-Original-Date: Wed, 22 Jul 2020 19:13:07 PDT (-0700) Subject: Re: [PATCH 1/1] riscv: Enable ARCH_HAS_FAST_MULTIPLIER for RV64I In-Reply-To: From: Palmer Dabbelt To: maochenxi@eswin.com Message-ID: Mime-Version: 1.0 (MHng) X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200722_221312_157230_BB44D70D X-CRM114-Status: GOOD ( 29.60 ) X-BeenThere: linux-riscv@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: aou@eecs.berkeley.edu, kernel@esmil.dk, wangqiang1@eswin.com, Paul Walmsley , linux-kernel@vger.kernel.org, chenxi.mao2013@gmail.com, linux-riscv@lists.infradead.org Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-riscv" Errors-To: linux-riscv-bounces+linux-riscv=archiver.kernel.org@lists.infradead.org T24gV2VkLCAyMiBKdWwgMjAyMCAxODo1OToxMiBQRFQgKC0wNzAwKSwgbWFvY2hlbnhpQGVzd2lu LmNvbSB3cm90ZToKPiBIaSBQYWxtZXIgYW5kIEVtaWw6Cj4KPiBBcyBFbWlsIG1lbnRpb25lZCBp biBwcmV2aW91cyBFLW1haWwgbG9vcCwgSSBkaWQgdGhlIHNhbWUgdGVzdCBvbiBteSBrZXJuZWwg YXMgd2VsbC4KClNvcnJ5LCBJIGd1ZXNzIEkgY3Jvc3NlZCB1cCBteSBlbWFpbHMuICBJIHRoaW5r IGl0J3MgYmVzdCB0byBqdXN0IGRyb3AgdGhpcyBmb3IKbm93LCBhcyBpdCBkb2Vzbid0IGFjdHVh bGx5IHNlZW0gdG8gZ2VuZXJhdGUgYmV0dGVyIGNvZGUgZm9yIG91ciBjdXJyZW50CnRhcmdldC4K Cj4KPiBNeSBrZXJuZWwgaXMgYmFzZWQgb24gTGludXggNS44LVJDNiB3aXRoIEdDQy0xMC4xLiAo SVNBIEMgZXh0ZW5zaW9uIGVuYWJsZWQpCj4KPiBUaGUgZGlzYXNzZW1ibHkgY29kZSBhcyBiZWxv dzoKPgo+IENPTkZJR19BUkNIX0hBU19GQVNUX01VTFRJUExJRVIgZW5hYmxlZDoKPgo+IDAwMDAw MDAwMDAwMDAwMDAgPF9fc3dfaHdlaWdodDMyPjoKPiDCoMKgIDA6wqDCoMKgIDU1NTU1N2I3wqDC oMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBsdWnCoMKgwqAgYTUsMHg1NTU1NQo+IMKgwqAgNDrCoMKg wqAgMDAxNTU3MWLCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIHNybGl3wqDCoMKgIGE0LGEwLDB4 MQo+IMKgwqAgODrCoMKgwqAgNTU1Nzg3OTPCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIGFkZGnC oMKgwqAgYTUsYTUsMTM2NSAjIDU1NTU1NTU1IDwuTEFTRjUrMHg1NTU1NTA5ZD4KPiDCoMKgIGM6 wqDCoMKgIDhmZjnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIGFuZMKgwqDC oCBhNSxhNSxhNAo+IMKgwqAgZTrCoMKgwqAgOWQxZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCDCoMKgwqAgc3Vid8KgwqDCoCBhMCxhMCxhNQo+Cj4gMDAwMDAwMDAwMDAwMDAxMCA8LkxW TDE+Ogo+IMKgIDEwOsKgwqDCoCAzMzMzMzdiN8KgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgbHVp wqDCoMKgIGE1LDB4MzMzMzMKPiDCoCAxNDrCoMKgwqAgMzMzNzg3OTPCoMKgwqDCoMKgwqDCoMKg wqAgwqDCoMKgIGFkZGnCoMKgwqAgYTUsYTUsODE5ICMgMzMzMzMzMzMgPC5MQVNGNSsweDMzMzMy ZTdiPgo+IMKgIDE4OsKgwqDCoCAwMDI1NTcxYsKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgc3Js aXfCoMKgwqAgYTQsYTAsMHgyCj4gwqAgMWM6wqDCoMKgIDhkN2TCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgwqDCoMKgIGFuZMKgwqDCoCBhMCxhMCxhNQo+IMKgIDFlOsKgwqDCoCA4ZmY5 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBhbmTCoMKgwqAgYTUsYTUsYTQK PiDCoCAyMDrCoMKgwqAgOWZhOcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAg YWRkd8KgwqDCoCBhNSxhNSxhMAo+IMKgIDIyOsKgwqDCoCAwMDQ3ZDUxYsKgwqDCoMKgwqDCoMKg wqDCoCDCoMKgwqAgc3JsaXfCoMKgwqAgYTAsYTUsMHg0Cj4gwqAgMjY6wqDCoMKgIDlmYTnCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIGFkZHfCoMKgwqAgYTUsYTUsYTAKPiDC oCAyODrCoMKgwqAgMGYwZjE1MzfCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIGx1acKgwqDCoCBh MCwweGYwZjEKPiDCoCAyYzrCoMKgwqAgMTE0McKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCDCoMKgwqAgYWRkacKgwqDCoCBzcCxzcCwtMTYKPiDCoCAyZTrCoMKgwqAgZjBmNTA1MTPCoMKg wqDCoMKgwqDCoMKgwqAgwqDCoMKgIGFkZGnCoMKgwqAgYTAsYTAsLTI0MSAjIGYwZjBmMGYgPC5M QVNGNSsweGYwZjBhNTc+Cj4gwqAgMzI6wqDCoMKgIGU0MjLCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgwqDCoMKgIHNkwqDCoMKgIHMwLDgoc3ApCj4gwqAgMzQ6wqDCoMKgIDhmZTnCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIGFuZMKgwqDCoCBhNSxhNSxhMAo+IMKg IDM2OsKgwqDCoCAwODAwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBhZGRp wqDCoMKgIHMwLHNwLDE2Cj4gwqAgMzg6wqDCoMKgIDAwODc5NTFiwqDCoMKgwqDCoMKgwqDCoMKg IMKgwqDCoCBzbGxpd8KgwqDCoCBhMCxhNSwweDgKPiDCoCAzYzrCoMKgwqAgNjQyMsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgbGTCoMKgwqAgczAsOChzcCkKPiDCoCAzZTrC oMKgwqAgOWQzZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgYWRkd8KgwqDC oCBhMCxhMCxhNQo+IMKgIDQwOsKgwqDCoCAwMTA1MTc5YsKgwqDCoMKgwqDCoMKgwqDCoCDCoMKg wqAgc2xsaXfCoMKgwqAgYTUsYTAsMHgxMAo+IMKgIDQ0OsKgwqDCoCA5ZDNkwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBhZGR3wqDCoMKgIGEwLGEwLGE1Cj4gwqAgNDY6wqDC oMKgIDAxODU1NTFiwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBzcmxpd8KgwqDCoCBhMCxhMCww eDE4Cj4gwqAgNGE6wqDCoMKgIDAxNDHCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDC oMKgIGFkZGnCoMKgwqAgc3Asc3AsMTYKPiDCoCA0YzrCoMKgwqAgODA4MsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgcmV0Cj4KPiBDT05GSUdfQVJDSF9IQVNfRkFTVF9NVUxU SVBMSUVSIGRpc2FibGVkOgo+Cj4gMDAwMDAwMDAwMDAwMDA0ZSA8X19zd19od2VpZ2h0MzJfZGVm YXVsdD46Cj4gwqAgNGU6wqDCoMKgIDU1NTU1NzM3wqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBs dWnCoMKgwqAgYTQsMHg1NTU1NQo+IMKgIDUyOsKgwqDCoCAwMDE1NTc5YsKgwqDCoMKgwqDCoMKg wqDCoCDCoMKgwqAgc3JsaXfCoMKgwqAgYTUsYTAsMHgxCj4gwqAgNTY6wqDCoMKgIDU1NTcwNzEz wqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBhZGRpwqDCoMKgIGE0LGE0LDEzNjUgIyA1NTU1NTU1 NSA8LkxBU0Y1KzB4NTU1NTUwOWQ+Cj4gwqAgNWE6wqDCoMKgIDhmZjnCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgwqDCoMKgIGFuZMKgwqDCoCBhNSxhNSxhNAo+IMKgIDVjOsKgwqDCoCA5 ZDFkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBzdWJ3wqDCoMKgIGEwLGEw LGE1Cj4KPiAwMDAwMDAwMDAwMDAwMDVlIDwuTFZMMz46Cj4gwqAgNWU6wqDCoMKgIDMzMzMzN2I3 wqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBsdWnCoMKgwqAgYTUsMHgzMzMzMwo+IMKgIDYyOsKg wqDCoCAzMzM3ODc5M8KgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgYWRkacKgwqDCoCBhNSxhNSw4 MTkgIyAzMzMzMzMzMyA8LkxBU0Y1KzB4MzMzMzJlN2I+Cj4gwqAgNjY6wqDCoMKgIDAwMjU1NzFi wqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBzcmxpd8KgwqDCoCBhNCxhMCwweDIKPiDCoCA2YTrC oMKgwqAgOGQ3ZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgYW5kwqDCoMKg IGEwLGEwLGE1Cj4gwqAgNmM6wqDCoMKgIDhmZjnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgwqDCoMKgIGFuZMKgwqDCoCBhNSxhNSxhNAo+IMKgIDZlOsKgwqDCoCA5ZmE5wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBhZGR3wqDCoMKgIGE1LGE1LGEwCj4gwqAgNzA6 wqDCoMKgIDAwNDdkNTFiwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBzcmxpd8KgwqDCoCBhMCxh NSwweDQKPiDCoCA3NDrCoMKgwqAgOWQzZMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDC oMKgwqAgYWRkd8KgwqDCoCBhMCxhMCxhNQo+IMKgIDc2OsKgwqDCoCAwZjBmMTdiN8KgwqDCoMKg wqDCoMKgwqDCoCDCoMKgwqAgbHVpwqDCoMKgIGE1LDB4ZjBmMQo+IMKgIDdhOsKgwqDCoCAxMTQx wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBhZGRpwqDCoMKgIHNwLHNwLC0x Ngo+IMKgIDdjOsKgwqDCoCBmMGY3ODc5M8KgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgYWRkacKg wqDCoCBhNSxhNSwtMjQxICMgZjBmMGYwZiA8LkxBU0Y1KzB4ZjBmMGE1Nz4KPiDCoCA4MDrCoMKg wqAgZTQyMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgc2TCoMKgwqAgczAs OChzcCkKPiDCoCA4MjrCoMKgwqAgOGZlOcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDC oMKgwqAgYW5kwqDCoMKgIGE1LGE1LGEwCj4gwqAgODQ6wqDCoMKgIDA4MDDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIGFkZGnCoMKgwqAgczAsc3AsMTYKPiDCoCA4NjrCoMKg wqAgMDA4N2Q1MWLCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIHNybGl3wqDCoMKgIGEwLGE1LDB4 OAo+IMKgIDhhOsKgwqDCoCA2NDIywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDC oCBsZMKgwqDCoCBzMCw4KHNwKQo+IMKgIDhjOsKgwqDCoCA5ZmE5wqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIMKgwqDCoCBhZGR3wqDCoMKgIGE1LGE1LGEwCj4gwqAgOGU6wqDCoMKgIDAx MDdkNTFiwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCBzcmxpd8KgwqDCoCBhMCxhNSwweDEwCj4g wqAgOTI6wqDCoMKgIDlkM2TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIGFk ZHfCoMKgwqAgYTAsYTAsYTUKPiDCoCA5NDrCoMKgwqAgMGZmNTc1MTPCoMKgwqDCoMKgwqDCoMKg wqAgwqDCoMKgIGFuZGnCoMKgwqAgYTAsYTAsMjU1Cj4gwqAgOTg6wqDCoMKgIDAxNDHCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIGFkZGnCoMKgwqAgc3Asc3AsMTYKPiDCoCA5 YTrCoMKgwqAgODA4MsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgcmV0Cj4K PiBUaGlzIDIgaW1wbGVtZW50YXRpb25zIGlzIGFsbW9zdCBzYW1lIGJ1dCBzbWFsbCBkaWZmZXJl bmNlcy4KPgo+IEVzcGVjaWFsbHkgaW4gQ09ORklHX0FSQ0hfSEFTX0ZBU1RfTVVMVElQTElFUiBj b25kaXRpb24swqAgYmVsb3cgY29kZSBkaWRuJ3QgdXNlICJtdWwiIGluc3RydWN0aW9ucy4KPgo+ IMKgwqDCoCAiIHJldHVybiAodyAqIDB4MDEwMTAxMDEpID4+IDI0OyAiCj4KPiBTbyBJIGFtIHRy eWluZyB0byB0cmFuc2xhdGUgdGhpcyBjb2RlIHdpdGggaW5saW5lIGFzc2VtYmx5IGFzIGJlbG93 Ogo+Cj4gLy9yZXR1cm4gKHcgKiAweDAxMDEwMTAxKSA+PiAyNDsKPiBfX2FzbV9fICgKPiAiIG11 bCAlMCwgJTAsICUxXG4iCj4gOiAiK3IiICh3KQo+IDogInIiICh3KSwgInIiKDB4MDEwMTAxMDEp Cj4gOik7Cj4gcmV0dXJuIHcgPj4gMjQ7Cj4KPiBBZnRlciBhYm92ZSBjaGFuZ2UsIHRoZSBkaXNh c3NhbWJseSBhcyBiZWxvdzoKPiAwMDAwMDAwMDAwMDAwMDAwIDxfX3N3X2h3ZWlnaHQzMj46Cj4g wqDCoCAwOsKgwqAgwqA1NTU1NTdiN8KgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIMKgbHVpwqDCoCDC oGE1LDB4NTU1NTUKPiDCoMKgIDQ6wqDCoCDCoDAwMTU1NzFiwqDCoMKgwqDCoMKgwqDCoCDCoMKg wqAgwqBzcmxpd8KgwqAgwqBhNCxhMCwweDEKPiDCoMKgIDg6wqDCoCDCoDU1NTc4NzkzwqDCoMKg wqDCoMKgwqDCoCDCoMKgwqAgwqBhZGRpwqDCoCDCoGE1LGE1LDEzNjUgIyA1NTU1NTU1NSA8LkxB U0Y1KzB4NTU1NTUxMTk+Cj4gwqDCoCBjOsKgwqAgwqA4ZmY5wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCDCoMKgwqAgwqBhbmTCoMKgIMKgYTUsYTUsYTQKPiDCoMKgIGU6wqDCoCDCoDlkMWTC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCDCoHN1YnfCoMKgIMKgYTAsYTAsYTUK Pgo+IDAwMDAwMDAwMDAwMDAwMTAgPC5MVkwxPjoKPiDCoCAxMDrCoMKgIMKgMzMzMzM3YjfCoMKg wqDCoMKgwqDCoMKgIMKgwqDCoCDCoGx1acKgwqAgwqBhNSwweDMzMzMzCj4gwqAgMTQ6wqDCoCDC oDAwMjU1NzFiwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgwqBzcmxpd8KgwqAgwqBhNCxhMCwweDIK PiDCoCAxODrCoMKgIMKgMzMzNzg3OTPCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCDCoGFkZGnCoMKg IMKgYTUsYTUsODE5ICMgMzMzMzMzMzMgPC5MQVNGNSsweDMzMzMyZWY3Pgo+IMKgIDFjOsKgwqAg wqA4ZDdkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgwqBhbmTCoMKgIMKgYTAs YTAsYTUKPiDCoCAxZTrCoMKgIMKgOGZmOcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDC oMKgIMKgYW5kwqDCoCDCoGE1LGE1LGE0Cj4gwqAgMjA6wqDCoCDCoDlmYTnCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIMKgwqDCoCDCoGFkZHfCoMKgIMKgYTUsYTUsYTAKPiDCoCAyMjrCoMKg IMKgMDA0N2Q3MWLCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCDCoHNybGl3wqDCoCDCoGE0LGE1LDB4 NAo+IMKgIDI2OsKgwqAgwqA5ZjNkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAg wqBhZGR3wqDCoCDCoGE0LGE0LGE1Cj4gwqAgMjg6wqDCoCDCoDBmMGYxN2I3wqDCoMKgwqDCoMKg wqDCoCDCoMKgwqAgwqBsdWnCoMKgIMKgYTUsMHhmMGYxCj4gwqAgMmM6wqDCoCDCoDExNDHCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgwqDCoCDCoGFkZGnCoMKgIMKgc3Asc3AsLTE2Cj4g wqAgMmU6wqDCoCDCoGYwZjc4NzkzwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgwqBhZGRpwqDCoCDC oGE1LGE1LC0yNDEgIyBmMGYwZjBmIDwuTEFTRjUrMHhmMGYwYWQzPgo+IMKgIDMyOsKgwqAgwqBl NDIywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgwqBzZMKgwqAgwqBzMCw4KHNw KQo+IMKgIDM0OsKgwqAgwqA4ZmY5wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAg wqBhbmTCoMKgIMKgYTUsYTUsYTQKPiDCoCAzNjrCoMKgIMKgMDgwMMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgwqDCoMKgIMKgYWRkacKgwqAgwqBzMCxzcCwxNgo+IMKgIDM4OsKgwqAgwqAw MTAxMDczN8KgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIMKgbHVpwqDCoCDCoGE0LDB4MTAxMAo+IMKg IDNjOsKgwqAgwqA4NTNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgwqBtdsKg wqAgwqBhMCxhNQo+Cj4gMDAwMDAwMDAwMDAwMDAzZSA8LkxWTDI+Ogo+IMKgIDNlOsKgwqAgwqAx MDE3MDcxYsKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIMKgYWRkaXfCoMKgIMKgYTQsYTQsMjU3Cj4g wqAgNDI6wqDCoCDCoDAyZjUwNTMzwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgwqBtdWzCoMKgIMKg YTAsYTAsYTUKPiDCoCA0NjrCoMKgIMKgNjQyMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg wqDCoMKgIMKgbGTCoMKgIMKgczAsOChzcCkKPiDCoCA0ODrCoMKgIMKgMDE4NTU1MWLCoMKgwqDC oMKgwqDCoMKgIMKgwqDCoCDCoHNybGl3wqDCoCDCoGEwLGEwLDB4MTgKPgo+ICJtdWwiIGluc3Ry dWN0aW9uIGlzIGxldmVyYWdlZCBhcyBleHBlY3RhdGlvbiwgYnV0IDB4MDEwMTAxMDEgbG9hZCB3 YXN0ZSBzZXZlcmFsIGluc3RydWN0aW9ucy4KPgo+IEJhc2VkIG9uIHRoaXMgdGVzdCwgZm9yY2Ug dG8gbGV2ZXJhZ2UgIm11bCIgaW5zdHJ1Y3Rpb24gbWlnaHQgYmUgbm90IGZhc3RlciB0aGFuIGN1 cnJlbnQgY29tcGlsZXIgaW1wbGVtZW50YXRpb25zLgo+Cj4gSSBhbSBub3Qgc3VyZSBhYm92ZSBh c3NlbWJseSBpcyB0aGUgYmVzdCB3YXkgdG8gbG9hZCAweDAxMDEwMTAxPyBJIGNoZWNrZWQgdGhl IElTQSBtYW51YWwsICJsdWkiIG9ubHkKPgo+IGxvYWQgMjAgYml0cyBwZXIgdGltZSwgaXMgdGhp cyB0aGUgYmVzdCB3YXkgdG8gbG9hZCBpbnN0YW50cz8KPgo+Cj4gT24gdGhlIG90aGVyIGhhbmQs IEkgdHJ5IHRvIGNvbXBhcmUgQVJNNjQgZGlzYXNzZW1ibHkgY29kZToKPgo+IC4uLi4uCj4KPiDC oMKgIDQ6wqDCoMKgIDMyMDBjM2UyIMKgwqDCoCBtb3bCoMKgwqAgdzIsICMweDEwMTAxMDHCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIC8vICMxNjg0MzAwOQo+Cj4gLi4uLi4uCj4KPiDC oMKgIHcgPcKgICh3ICsgKHcgPj4gNCkpICYgMHgwZjBmMGYwZjsKPiDCoCAyMDrCoMKgwqAgMGI0 MDEwMDAgwqDCoMKgIGFkZMKgwqDCoCB3MCwgdzAsIHcwLCBsc3IgIzQKPiDCoCAyNDrCoMKgwqAg MTIwMGNjMDAgwqDCoMKgIGFuZMKgwqDCoCB3MCwgdzAsICMweGYwZjBmMGYKPiDCoMKgwqAgcmV0 dXJuICh3ICogMHgwMTAxMDEwMSkgPj4gMjQ7Cj4gwqAgMjg6wqDCoMKgIDFiMDI3YzAwIMKgwqDC oCBtdWzCoMKgwqAgdzAsIHcwLCB3Mgo+Cj4gT25seSBvbmUgIm1vdiIgaW5zdHJ1Y3Rpb25zIHRv IGxvYWQgMHgxMDEwMTAxIGFuZCBvbmUgIm11bCIgaW5zdHJ1Y3Rpb24gZm9yIG11bHRpcGx5Lgo+ Cj4KPiBMZXQgbWUgc3VtbWFyeSBhcyBiZWxvdzoKPgo+IDEuwqAgR0NDIDEwLjEgY2Fubm90IGdl bmVyYXRlICJtdWwiIGluc3RydWN0aW9uIHdoZW4gQ09ORklHX0FSQ0hfSEFTX0ZBU1RfTVVMVElQ TElFUiBlbmFibGVkLgo+Cj4gMi4gZm9yY2UgdG8gZ2VuZXJhdGUgIm11bCIgZGlkbid0IGdldCBi ZXR0ZXIgYmVjYXVzZSBpbnN0YW50cyBsb2FkIHdhc3RlIGluc3RydWN0aW9ucy4KPgo+IDMuIElm IEdDQyBjb21waWxlciBiZWhhdmlvciBpcyBiZXN0IHNvbHV0aW9uIGZvciB0aGlzIGNhc2UsIHdl IGNvdWxkIGhhdmUgYmVsb3cgd29yayBhcm91bmQgb24gUmlzY3YuCj4KPiDCoHVuc2lnbmVkIGlu dCBfX3N3X2h3ZWlnaHQzMih1bnNpZ25lZCBpbnQgdykKPiDCoHsKPiAtI2lmZGVmIENPTkZJR19B UkNIX0hBU19GQVNUX01VTFRJUExJRVIKPiArLyoKPiArICogUmlzYy1WIGNvdWxkIG5vdCBnZW5l cmF0ZSBtdWwodykgaW5zdHJ1Y3Rpb24gaW4gdGhpcyBjYXNlCj4gKyAqLwo+ICsjaWYgZGVmaW5l ZChDT05GSUdfQVJDSF9IQVNfRkFTVF9NVUxUSVBMSUVSKSAmJiAhZGVmaW5lZChDT05GSUdfUklT Q1YpCj4gwqDCoMKgwqDCoMKgwqAgdyAtPSAodyA+PiAxKSAmIDB4NTU1NTU1NTU7Cj4gwqDCoMKg wqDCoMKgwqAgdyA9wqAgKHcgJiAweDMzMzMzMzMzKSArICgodyA+PiAyKSAmIDB4MzMzMzMzMzMp Owo+IMKgwqDCoMKgwqDCoMKgIHcgPcKgICh3ICsgKHcgPj4gNCkpICYgMHgwZjBmMGYwZjsKPgo+ Cj4gQ2hlbnhpCj4KPgo+IE9uIDIwMjAvNy8yMSDkuIrljYg5OjE3LCBQYWxtZXIgRGFiYmVsdCB3 cm90ZToKPj4gT24gV2VkLCAwOCBKdWwgMjAyMCAyMjoxOToyMiBQRFQgKC0wNzAwKSwgbWFvY2hl bnhpQGVzd2luLmNvbSB3cm90ZToKPj4+IEVuYWJsZSBBUkNIX0hBU19GQVNUX01VTFRJUExJRVIg b24gUlY2NEkKPj4+IHdoaWNoIHdvcmtzIGZpbmUgb24gR0NDLTkuMyBhbmQgR0NDLTEwLjEKPj4+ Cj4+PiBQUzI6IHJlbW92ZSBBUkNIX1NVUFBPUlRTX0lOVDEyOCBiZWNhdXNlIG9mIFJWNjRJIGFs cmVhZHkgZW5hYmxlZC4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBDaGVueGkgTWFvIDxtYW9jaGVu eGlAZXN3aW4uY29tPgo+Pj4gLS0tCj4+PiDCoGFyY2gvcmlzY3YvS2NvbmZpZyB8IDEgKwo+Pj4g wqAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKPj4+Cj4+PiBkaWZmIC0tZ2l0IGEvYXJj aC9yaXNjdi9LY29uZmlnIGIvYXJjaC9yaXNjdi9LY29uZmlnCj4+PiBpbmRleCAxMjgxOTJlMTRm ZjIuLjg0ZTY3NzdmZWNhZCAxMDA2NDQKPj4+IC0tLSBhL2FyY2gvcmlzY3YvS2NvbmZpZwo+Pj4g KysrIGIvYXJjaC9yaXNjdi9LY29uZmlnCj4+PiBAQCAtMjAyLDYgKzIwMiw3IEBAIGNvbmZpZyBB UkNIX1JWNjRJCj4+PiDCoMKgwqDCoCBib29sICJSVjY0SSIKPj4+IMKgwqDCoMKgIHNlbGVjdCA2 NEJJVAo+Pj4gwqDCoMKgwqAgc2VsZWN0IEFSQ0hfU1VQUE9SVFNfSU5UMTI4IGlmIENDX0hBU19J TlQxMjggJiYgR0NDX1ZFUlNJT04gPj0gNTAwMDAKPj4+ICvCoMKgwqAgc2VsZWN0IEFSQ0hfSEFT X0ZBU1RfTVVMVElQTElFUgo+Pj4gwqDCoMKgwqAgc2VsZWN0IEhBVkVfRFlOQU1JQ19GVFJBQ0Ug aWYgTU1VCj4+PiDCoMKgwqDCoCBzZWxlY3QgSEFWRV9EWU5BTUlDX0ZUUkFDRV9XSVRIX1JFR1Mg aWYgSEFWRV9EWU5BTUlDX0ZUUkFDRQo+Pj4gwqDCoMKgwqAgc2VsZWN0IEhBVkVfRlRSQUNFX01D T1VOVF9SRUNPUkQKPj4KPj4gQWgsIHRoYW5rcyAtLSB0aGlzIG9uZSBkaWRuJ3Qgc2hvdyB1cCB3 aGVuIEkgd2FzIGxvb2tpbmcgYXQgdGhlIGxhc3Qgb25lLsKgIEkKPj4gdGhpbmsgd2UgY2FuIHB1 dCB0aGUgZmFzdCBtdWx0aXBsaWVyIG9uIHJ2MzIgYW5kIHJ2NjQsIHRoZXJlIHNob3VsZG4ndCBi ZSBhbnkKPj4gZGlmZmVyZW5jZSB0aGVyZS7CoCBJIGd1ZXNzIGluIHRoZW9yeSB3ZSBzaG91bGQg YmUgc3RpY2tpbmcgdGhpcyBhbGwgaW4gc29tZQo+PiBzb3J0IG9mICJwbGF0Zm9ybSB0eXBlIiBv cHRpbWl6YXRpb24gZmxhZ3MsIGJ1dCB0aGF0J3MgcHJvYmFibHkgYml0IG11Y2ggZm9yCj4+IG5v dy4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4 LXJpc2N2IG1haWxpbmcgbGlzdApsaW51eC1yaXNjdkBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6 Ly9saXN0cy5pbmZyYWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtcmlzY3YK