Re: [libre-riscv-dev] Scoreboard vs Tomasulo
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 17 May 2020 00:53:34 +0000 (01:53 +0100)
committerlibre-riscv-dev <libre-riscv-dev@lists.libre-riscv.org>
Sun, 17 May 2020 00:54:10 +0000 (01:54 +0100)
6d/51e49cca71873c99e550b7c24ebc837346b975 [new file with mode: 0644]

diff --git a/6d/51e49cca71873c99e550b7c24ebc837346b975 b/6d/51e49cca71873c99e550b7c24ebc837346b975
new file mode 100644 (file)
index 0000000..a624555
--- /dev/null
@@ -0,0 +1,281 @@
+Return-path: <libre-riscv-dev-bounces@lists.libre-riscv.org>
+Envelope-to: publicinbox@libre-riscv.org
+Delivery-date: Sun, 17 May 2020 01:54:10 +0100
+Received: from localhost ([::1] helo=libre-riscv.org)
+       by libre-soc.org with esmtp (Exim 4.89)
+       (envelope-from <libre-riscv-dev-bounces@lists.libre-riscv.org>)
+       id 1ja7ZC-0002wt-4W; Sun, 17 May 2020 01:54:10 +0100
+Received: from lkcl.net ([217.147.94.29])
+ by libre-soc.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
+ (Exim 4.89) (envelope-from <lkcl@lkcl.net>) id 1ja7ZA-0002wn-52
+ for libre-riscv-dev@lists.libre-riscv.org; Sun, 17 May 2020 01:54:08 +0100
+DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lkcl.net;
+ s=201607131; 
+ h=Content-Type:To:Subject:Message-ID:Date:From:In-Reply-To:References:MIME-Version;
+ bh=u3tGbz4P5nDXRAkbWRqVg5zss8msmX8jpRQhvx4WpmM=; 
+ b=nHtf6eORa+LYX5DdAGtFCoU0SVK4n1MiUZrgPAGQiMwmP2EJquIE+jV5MXLRVwKEeUu9HRRdoAU0VQ1BiGkuWIuxDLHyI8PTWoDRHwitwojU/PnyLAa6o9wMXBmRFCYdsJyF0UwcVmCuRRdmlhOvg0FH0utN+TKrzPVXOsiKwP4=;
+Received: from mail-lj1-f169.google.com ([209.85.208.169])
+ by lkcl.net with esmtpsa (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
+ (Exim 4.84_2) (envelope-from <lkcl@lkcl.net>) id 1ja7Z9-0007l2-Px
+ for libre-riscv-dev@lists.libre-riscv.org; Sun, 17 May 2020 00:54:07 +0000
+Received: by mail-lj1-f169.google.com with SMTP id g4so6103102ljl.2
+ for <libre-riscv-dev@lists.libre-riscv.org>;
+ Sat, 16 May 2020 17:53:52 -0700 (PDT)
+X-Gm-Message-State: AOAM531I+cZ9mv9ftX65zuCmdWwTlwq2Ft/zxh3V6ye5k0jrnXb1TJDX
+ L29TAUkZ3c09nU7rN3qfaix3/ZuI+8+CJ1CdhY0=
+X-Google-Smtp-Source: ABdhPJxJfpix8kDLn0AsyQt0xRuGMJVpVXNvTrHaSSBdwNKIrRLmXzgcVanmvKkPEurrjiewNKncj55w61+As51r9fA=
+X-Received: by 2002:a2e:9081:: with SMTP id l1mr5920201ljg.81.1589676826461;
+ Sat, 16 May 2020 17:53:46 -0700 (PDT)
+MIME-Version: 1.0
+References: <13EDF987-9A19-4C96-89C2-6DB784CF2C96@gatech.edu>
+ <CAPweEDyDcmAJbJx+PKkL8MotPMNyHyFOEtuNOKP+V2PmmY5HvA@mail.gmail.com>
+ <CAPweEDyw+LSW2S4sKWk-V24NSHYe2qqWO+KFqikQ34Q1Guhaig@mail.gmail.com>
+ <CAPweEDweXSC5c_ROQ8a3Y4hQMaJYmD_jAriadcZk9PRrkjOXvA@mail.gmail.com>
+ <25AC8A2E-D48F-439F-AF9D-0EB3DC08D7CC@gatech.edu>
+ <CAPweEDx_TMOxQHLrhbdhnXsBE1s-u2mz3xD2DDFCMi6m9BZCZg@mail.gmail.com>
+ <CAEoCstRd+hLfF5YtUbnS2gukPxVAjmheJrZ29QvJD3y4Y928JQ@mail.gmail.com>
+ <CAPweEDxXGedm-4QwmU2UuYvb4G2nNaoAsy_P2eyviQ42pbmyXA@mail.gmail.com>
+ <CAEoCstSGxwV88JUHTQmUp=75kHWxSZNSPu==_pxsUYf29ctd9w@mail.gmail.com>
+In-Reply-To: <CAEoCstSGxwV88JUHTQmUp=75kHWxSZNSPu==_pxsUYf29ctd9w@mail.gmail.com>
+From: Luke Kenneth Casson Leighton <lkcl@lkcl.net>
+Date: Sun, 17 May 2020 01:53:34 +0100
+X-Gmail-Original-Message-ID: <CAPweEDzp3aSyhi-+UOO5Ce_gdUFGjpGqGVZM+GT0qDTLGtpZ-g@mail.gmail.com>
+Message-ID: <CAPweEDzp3aSyhi-+UOO5Ce_gdUFGjpGqGVZM+GT0qDTLGtpZ-g@mail.gmail.com>
+To: Libre-RISCV General Development <libre-riscv-dev@lists.libre-riscv.org>
+Subject: Re: [libre-riscv-dev] Scoreboard vs Tomasulo
+X-BeenThere: libre-riscv-dev@lists.libre-riscv.org
+X-Mailman-Version: 2.1.23
+Precedence: list
+List-Id: Libre-RISCV General Development
+ <libre-riscv-dev.lists.libre-riscv.org>
+List-Unsubscribe: <http://lists.libre-riscv.org/mailman/options/libre-riscv-dev>, 
+ <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=unsubscribe>
+List-Archive: <http://lists.libre-riscv.org/pipermail/libre-riscv-dev/>
+List-Post: <mailto:libre-riscv-dev@lists.libre-riscv.org>
+List-Help: <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=help>
+List-Subscribe: <http://lists.libre-riscv.org/mailman/listinfo/libre-riscv-dev>, 
+ <mailto:libre-riscv-dev-request@lists.libre-riscv.org?subject=subscribe>
+Reply-To: Libre-RISCV General Development
+ <libre-riscv-dev@lists.libre-riscv.org>
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+Errors-To: libre-riscv-dev-bounces@lists.libre-riscv.org
+Sender: "libre-riscv-dev" <libre-riscv-dev-bounces@lists.libre-riscv.org>
+
+T24gU2F0LCBNYXkgMTYsIDIwMjAgYXQgMTE6NDUgUE0gSmVyZW15IFNpbmdoZXIgPHRoZWpzaW5n
+aGVyQGdtYWlsLmNvbT4gd3JvdGU6Cj4KPiBJIGhhdmUgZmluYWxseSBmaW5pc2hlZCBwYXJzaW5n
+IE1pdGNoJ3MgY2hhcHRlcnMsIGFuZCBub3cgSSBzZWUgd2hhdAo+IHRoZSBwcmltYXJ5IGNvbmZ1
+c2lvbiBpcyBmcm9tLiBUaGUgc2NvcmVib2FyZCBiZWluZyBkZXZlbG9wZWQgaGVyZSBoYXMKPiBi
+ZWVuIHJlZmVycmVkIHRvIGluIHRoZSBtYWlsaW5nIGxpc3RzIGFzIGEgIkNEQyA2NjAwLWxpa2Ui
+IHNjb3JlYm9hcmQsCj4gd2hpbGUgaW4gcmVhbGl0eSwgdGhlIGZpbmFsIGRlc2lnbiBpcyBmYXIg
+ZXh0ZW5kZWQgZmFyIGJleW9uZCB0aGUKPiBvcmlnaW5hbCBDREMgNjYwMCBpbXBsZW1lbnRhdGlv
+bi4KCnllcy4gIHdlbGwuLi4gIGZhciBiZXlvbmQgaXQgaW4gKmZ1bmN0aW9uYWxpdHkqLCBidXQg
+bm90IHRoYXQgZmFyIGluCnRlcm1zIG9mIGdhdGUKY291bnQgW2NhdmVhdDogaWYgd2Ugd2VyZSBv
+bmx5IGRvaW5nIHRoZSBzYW1lIDMgcmVnZmlsZXMsIEEgQiBhbmQgWC4KYXMgd2UgYXJlIGRvaW5n
+IDMyeCBJTlQsIDMyeCBGUCwgcGx1cyBTUFIgcmVncyAqYW5kKiBDb25kaXRpb24gUmVncwphbGwg
+dW5kZXIgdGhlIGNvbnRyb2wgb2YgRGVwZW5kZW5jeSBNYXRyaWNlcywgYSBkaXJlY3QgY29tcGFy
+aXNvbiBpcyB1bmZhaXJdCgpvaC4gIGFoLiAgb25lIGRlZmluaXRlIGVuaGFuY2VtZW50OiBpbiB0
+aGUgZGlhZ3JhbXMgeW91IHNlZSBpbiBNaXRjaCdzCmNoYXB0ZXJzLCB0aGVyZSBpcyBvbmx5IG9u
+ZSBHTy1SRUFEIGFuZCBvbmx5IG9uZSBHTy1XUklURS4gIG9uZSBHTy1SRUFECmluZGljYXRlcyBh
+IGRlc2lyZSB0byByZXF1ZXN0ICptdWx0aXBsZSogUmVnZmlsZSBSZWFkIHBvcnRzLgoKYmVjYXVz
+ZSBQT1dFUjkgaGFzIGluIHNvbWUgY2FzZXMgdXAgdG8gKmZpdmUqIGluY29taW5nIHJlZ2lzdGVy
+cyBhbmQKKnRocmVlKiBvdXRnb2luZyByZWdpc3RlcnMgKGluIGRpZmZlcmVudCBSZWdmaWxlcyAt
+IElOVC9GUCwgU1BSLCBDUiksIHdlIG5lZWRlZAp0byBzcGxpdCB0aG9zZSBvdXQgaW50byBpbmRp
+dmlkdWFsIGxpbmVzLiAgR08tUkVBRDEvUkVBRC1SRVExLApHTy1SRUFEMi9SRUFELVJFUTIgZXRj
+LgoKY3VycmVudGx5IGkgYW0gc3RydWdnbGluZyB3aXRoIHRoaXMgRlNNIHdoaWNoIGltcGxlbWVu
+dHMgMy1vcGVyYW5kIGluLAppbW1lZGlhdGVzLCAyLW9wZXJhbmQgb3V0ICphbmQqIG1hbmFnZXMg
+dGhlIGFkZHJlc3MsIEdPLVNULCBhZGRyZXNzCmV4Y2VwdGlvbnMgYW5kIGRlYWxzIHdpdGggUE9X
+RVI5IExEL1NUICJVcGRhdGUiIG1vZGUuCgpodHRwczovL2xpYnJlLXNvYy5vcmcvM2RfZ3B1L2xk
+X3N0X2NvbXBfdW5pdC5qcGcKCnRoaXMgaSByZWFhYWFsbHkgbmVlZCBzb21lIGhlbHAgd2l0aC4K
+Cgo+IEkgd291bGQgc3VnZ2VzdCBub3QgY2FsbGluZyBpdCBhCj4gIkNEQyA2NjAwLWxpa2Ugc2Nv
+cmVib2FyZCIgaW4gdGhlIGZ1dHVyZSwgaW5zdGVhZCBhICJleHRlbmRlZAo+IHNjb3JlYm9hcmQi
+IGlzIG1vcmUgYWNjdXJhdGUuCgphcHByZWNpYXRlZC4gIGlmIHlvdSBjb3VsZCBjb25zaWRlciBo
+ZWxwaW5nIGNoYW5nZSB0aGUgd2lraSB0byByZWZsZWN0IHRoaXMgKGFuZApoZWxwIHVzIHRvIG1h
+aW50YWluIHRoZSBhZHZhbnRhZ2VzIGJlbG93KSB0aGlzIHdvdWxkIGJlIGZhbnRhc3RpYy4KCmkn
+dmUgdXNlZCBhIHJhbmdlIG9mIHRlcm1zIC0gImF1Z21lbnRlZCA2NjAwIHNjb3JlYm9hcmQiLCBh
+bmQgb3RoZXJzLgp0aGUgaGlzdG9yaWMKbGluayBhbmQgdGhlIGVmZmVjdGl2ZSByZXZpdmFsIG9m
+IHNvbWV0aGluZyBsb25nLWZvcmdvdHRlbiB3aGljaCB3YXMKYm90aCBlbGVnYW50CmFuZCBzdGFn
+Z2VyaW5nbHkgZ2F0ZS1lZmZpY2llbnQgKG91dCBvZiBuZWNlc3NpdHkpOiBpIGRvbid0IHdhbnQg
+dG8gdXNlIHRoZSB3b3JkCiJwb2xpdGljYWwiIGluIGFueSBzZW50ZW5jZSBob3dldmVyIHRoZXJl
+IGlzIGEgY29uc2lkZXJhYmxlIHB1YmxpY2l0eQoid293IGZhY3RvciIKdG8gZG9pbmcgc29tZXRo
+aW5nIGFzIHN1cnByaXNpbmcgYXMgcmV2aXZpbmcgYSA1NS15ZWFyLW9sZCBkZXNpZ24uCgpzaW5j
+ZSBpbnRlcmFjdGluZyB3aXRoIE1pdGNoIEFsc3VwIGxhc3QgeWVhciwgeW91J3JlIHRoZSBmaXJz
+dCBhZGRpdGlvbmFsIHBlcnNvbgp0byBhY3R1YWxseSBkbyBhbnkga2luZCBvZiBzaWduaWZpY2Fu
+dCBhbmFseXNpczogY29uc2VxdWVudGx5IHRlcm1pbm9sb2d5IGhhcwpub3QgcmVhbGx5IGJlZW4g
+ZGlzY3Vzc2VkLi4uIGJlY2F1c2UgdGhlcmUgd2Fzbid0IGFueW9uZSB0byBkaXNjdXNzIGl0IHdp
+dGghCgo+IExldCBtZSB0cnkgdG8gY29tcG9zZSBteSB0aG91Z2h0cy4KPiBJbiBvcmRlciBmb3Ig
+T09PIGV4ZWN1dGlvbiB0byBiZSBwb3NzaWJsZSwgd3JpdGUgZGF0YSBmcm9tCj4gc3BlY3VsYXRp
+dmVseSBleGVjdXRlZCBpbnN0cnVjdGlvbnMgbXVzdCBiZSBidWZmZXJlZCwgZm9yIGluIHRoZSBj
+YXNlCj4gb2YgbWlzc3BlY3VsYXRpb24sIHRoZXkgbXVzdCBub3QgYmUgYWxsb3dlZCB0byBjb21t
+aXQgaW50byB0aGUKPiBhcmNoaXRlY3R1cmFsIHJlZ2lzdGVyIGZpbGUuCgptaXMtc3BlY3VsYXRp
+b24sIExEL1NUIHBhZ2UtZmF1bHRzLCBwcmVkaWNhdGVkIGluc3RydWN0aW9ucyB3aGVyZSB0aGUg
+b3BlcmFuZAp0aGF0IGNvbnRhaW5zIHRoZSBiaXRtYXNrIGlzIGluIGEgcmVnaXN0ZXIgdGhhdCBo
+YXMgbm90IGJlZW4gcmVhZCB5ZXQsIGFuZCBldmVuCnNpbXBsZSBleHRlcm5hbCBOTUkgaW50ZXJy
+dXB0czogYWxsIG9mIHRoZXNlIG5lZWQgYSBtZWFucyBhbmQgbWV0aG9kIG9mCmtpbGxpbmcgaW4t
+ZmxpZ2h0IGRhdGEsIHllcy4KCj4gSW4gVG9tYXN1bG8ncywgc3BlY3VsYXRpdmUgd3JpdGUgZGF0
+YSBhcmUgaGVsZCBpbiBwaHlzaWNhbGx5IHJlbmFtZWQgcmVnaXN0ZXJzLgo+IEluIHRoZSBleHRl
+bmRlZCBzY29yZWJvYXJkIHNjaGVtZSwgc3BlY3VsYXRpdmUgd3JpdGUgZGF0YSBhcmUgaGVsZCBp
+bgo+IGNvbXB1dGUgdW5pdCBsYXRjaGVzLgoKdGhlc2UgdHdvIGVmZmVjdGl2ZWx5IGhhdmluZyBh
+IHZlcnkgbG93IExldmVuc2h0ZWluIGRpc3RhbmNlLCBidXQgbm90IHF1aXRlCnplcm8uCgoqIGlu
+IFRvbWFzdWxvLCB0aGUgcmVhc29uIGZvciB0aGUgZXhwbGljaXQgcmVuYW1pbmcgaXMgZG93biB0
+byB0aGUgMkQKbmF0dXJlIG9mIFJTJ3MuCiAgaGVuY2UgdGhlIFJPQiByb3cgbnVtYmVyIG5lZWRz
+IHRvIGJlIHN0b3JlZCBpbiB0aGUgUlMKCiogaW4gZXh0ZW5kZWQtc2NvcmVib2FyZCwgdGhlIEZV
+J3MgaW5kZXggLyBjb2x1bW4tbnVtYmVyICppcyogdGhhdCAibmFtZSI7CiAgd2l0aCB0aGVyZSBv
+bmx5ICpiZWluZyogYSBvbmUtdG8tb25lIHBhdGgsIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGEKbmFt
+ZSAqYXQgYWxsKiwKICBoZW5jZSB3aHkgaSByZWZlciB0byB0aGUgQ1UgbGF0Y2hlcyBhcyAibmFt
+ZWxlc3MgcmVnaXN0ZXJzIi4KCiAgdGhlIFJPQiByb3cgbnVtYmVyICppcyogdGhlIEZVIG51bWJl
+ciB3aGljaCAqaXMqIHRoZSByZW5hbWVkLXJlZ2lzdGVyLW51bWJlcgogIGFuZCBjb25zZXF1ZW50
+bHkgYnkgYmVpbmcgb25lLXRvLW9uZSBpbiBldmVyeSBhc3BlY3QsIG5lZWRzIG5vIG5hbWUuCgp0
+aGlzIGFzcGVjdCBvZiA2NjAwIHNjb3JlYm9hcmRzIC0gdGhlIGNvbXBsZXRlIGxhY2sgb2YgbmFt
+aW5nIGFuZCBldmVuIHRoZQpsYWNrIG9mIHNpZ25pZmljYW5jZSBkcmF3biB0byBpdCBldmVuIGJ5
+IEphbWVzIFRob3JudG9uIGhpbXNlbGYgaW4gaGlzIGJvb2ssCmFuZCBjZXJ0YWlubHkgaW4gdGhl
+IHBhdGVudHMsIGlzIHdoeSB0aGUgNjYwMCBpcyAqYmVsaWV2ZWQqIG5vdCB0byBoYXZlIHJlZ2lz
+dGVyCnJlbmFtaW5nIG9mICphbnkqIGtpbmQuCgphaCAtIG9uZSBvdGhlciByZWFsbHkgY3JpdGlj
+YWwgdGhpbmcgKGkgd2lsbCBhZGQgdG8gdGhlIHBhZ2UpOgoKKiBUb21hc3VsbyBST0IgUm93IG51
+bWJlcnMgcHJlc2VydmUgaW5zdHJ1Y3Rpb24gb3JkZXIgdGhyb3VnaCBzZXF1ZW50aWFsCiAgIG51
+bWJlcmluZyBieSB0aGUgYWN0dWFsIHJvdyBudW1iZXIKCiogNjYwMCBzY29yZWJvYXJkcyBwcmVz
+ZXJ2ZSBpbnN0cnVjdGlvbiBvcmRlciBpbiB0aGUgRlUtRlUgTWF0cml4IHdpdGgKICBhIE54TiBi
+aXQtbGV2ZWwgbWF0cml4IG9mIFNSIExhdGNoZXMgaW1wbGVtZW50aW5nIGEgImxpbmtlZCBsaXN0
+IiAodGhlCiAgRGlyZWN0ZWQgQWN5Y2xpYyBHcmFwaCkgb2Ygb3JkZXJlZCBkZXBlbmRlbmNpZXMs
+IHVzaW5nIHRoZSAqcmVnaXN0ZXIqCiAgZGVwZW5kZW5jaWVzIGF0IHRoZSB0aW1lIHRoZSBpbnN0
+cnVjdGlvbiBpcyBpbnNlcnRlZCBpbnRvIHRoZSAqRlUtUkVHUyoKICBNYXRyaXggdG8gZGV0ZXJt
+aW5lIHRoZSBGVS1GVSBEQUcuICB0aGlzIGhhcyBtb3JlIGluIGNvbW1vbiB3aXRoIGEKICAibGlu
+a2VkIGxpc3QiIGRhdGEgc3RydWN0dXJlLCB0byB1c2Ugc29mdHdhcmUgdGVybWlub2xvZ3kuCgp0
+aGlzIGxhdHRlciBhc3BlY3QgaXMgYSBjcnVjaWFsIG9uZSB0aGF0IGV2ZW4gSmFtZXMgVGhvcm50
+b24gbm90ZXMgaXMgcmVhbGx5CipyZWFsbHkqIGNvbXBsZXggdG8gZXhwbGFpbiwgeWV0IHBhcmFk
+b3hpY2FsbHkgcmVxdWlyZXMgYW4gZXh0cmFvcmRpbmFyaWx5CnNtYWxsIG51bWJlciBvZiBhY3R1
+YWwgZ2F0ZXMgdG8gaW1wbGVtZW50LgoKaG93ZXZlciB1bmRlcnN0YW5kaW5nIHRoZSBkaWZmZXJl
+bmNlIGJldHdlZW4gdGhlIChiaW5hcnkpIFJPQiBSb3cKbnVtYmVyaW5nICh3aGljaCBwcmVzZXJ2
+ZXMgdGhlIERBRyBvZiBpbnN0cnVjdGlvbiBvcmRlciBieSB3YXkKb2YgYmluYXJ5LWFkZHJlc3Nl
+ZCBpbnN0cnVjdGlvbiBST0IgUm93IE4rMSBiZWluZyBhIGdyZWF0ZXIgaW5kZXgKdGhhbiBiaW5h
+cnktYWRkcmVzc2VkIGluc3RydWN0aW9uIFJPQiBSb3cgTikgYW5kIHRoaXMKImZ1bmN0aW9uYWxs
+eS1lcXVpdmFsZW50IiBsaW5rZWQtbGlzdCBzeXN0ZW0gZXF1YWxseSBzdWNjZXNzZnVsbHkgcHJl
+c2VydmluZwphIERBRyBidXQgdXNpbmcgdW5hcnkgU1IgTGF0Y2hlcyB0byBkbyBzbywgaXMga2V5
+IHRvIHJlY29nbmlzaW5nCmFuZCBhcHByZWNpYXRpbmcgdGhhdCBUb21hc3VsbyBhbmQgU2NvcmVi
+b2FyZHMgKnJlYWxseSBhcmUqIGZ1bmN0aW9uYWxseQpkaXJlY3RseSBlcXVpdmFsZW50LgoKaGVy
+ZSBpdCBzaG91bGQgYmVjb21lIGNsZWFyIGFzIHRvIGFub3RoZXIgYXNwZWN0IG9mIHdoeSBtdWx0
+aS1pc3N1ZSBpcwpwcm9ibGVtYXRpYyBpbiBUb21hc3Vsby4gIHdoZXJlIGRldGVjdGlvbiBvZiAi
+cmVhZGluZXNzIHRvIGNvbW1pdCIgaW4KYSBzaW5nbGUtaXNzdWUgVG9tYXN1bG8gaXMgYSBzaW1w
+bGUgbWF0dGVyIG9mIGNoZWNraW5nICpvbmUqIHJvdwoiaXMgeW91ciByZXN1bHQgcmVhZHksIGlm
+IHllcyBjb21taXQgaXQgYW5kIGN5Y2xpY2FsbHkgaW5jcmVtZW50IHRoZSBwb2ludGVyCnRvIHRo
+ZSBST0Igcm93IHRvIHRoZSBuZXh0IGl0ZW0sIHJlYWR5IGZvciB0ZXN0LW9yLWNvbW1pdCBvbiB0
+aGUgKm5leHQqCmN5Y2xlIiwgdGhpcyBtdXN0IGJlIHVwZGF0ZWQgdG8gdGVzdGluZyBvZiAqbXVs
+dGlwbGUqIHJvdyAicmVhZGluZXNzIgpzdGF0ZXMsIHdoaWNoIGNsZWFybHkgcmVxdWlyZXMgYSBt
+dWx0aS1wb3J0ZWQgU1JBTS4KCnRoaXMgaXMgd2hlcmUgInNvbHV0aW9ucyIgdGhhdCBpIGhhdmUg
+c2VlbiBhY3R1YWxseSBzdHJhdGlmeSB0aGUgUk9CCmludG8gNCAob3IgTikgaW50ZXJsZWF2ZWQg
+YmFua3MuICBjcm9zc2JhcnMgYXJlIHJlcXVpcmVkLi4uIGl0J3Mgd2hlcmUKdGhlIG5pZ2h0bWFy
+ZXMgYmVnaW4uCgoKPiBJbiBUb21hc3VsbydzLCBicmFuY2ggZGVwZW5kZW5jeSBtYXNrcyBhcmUg
+dXNlZCB0byBkcmFpbiBtaXNzcGVjdWxhdGVkCj4gaW5zdHJ1Y3Rpb25zLgoKYXJlIHRoZXNlIHVu
+YXJ5LWVuY29kZWQgb3IgYmluYXJ5LWVuY29kZWQ/ICBieSBtYXNrcyBpIHdvdWxkIGV4cGVjdCB0
+aGVtCnRvIGJlIHVuYXJ5LWVuY29kZWQgYW5kIHRodXMgYWxsb3cgbXVsdGlwbGUgYml0cyB0byBi
+ZSBzZXQsIGFsbG93aW5nIG11bHRpcGxlCm9wZXJhdGlvbnMgdG8gYmUgY2FuY2VsbGVkLgoKaWYg
+bm90LCBhbmQgYmluYXJ5IG1hc2tzIGFyZSB1c2VkLCB0aGVuIGVhY2ggdW5pdCBtdXN0IGhhdmUg
+YW4gYXJpdGhtZXRpYwpjb21wYXJhdG9yLCAiaXMgbXkgYmluYXJ5IGluZGV4IGxlc3MgdGhhbiBv
+ciBlcXVhbCB0byB0aGUgYnJhbmNoIGRlcGVuZGVuY3kKbWFzaywgaWYgbGVzcyB0aGFuLCB0aGVu
+IHRoaXMgbWVhbnMgaSBtdXN0IGRpZSIuCgp0aGUgU2hha3RpIDY2MDAtbGlrZSAoZXh0ZW5kZWQp
+IHNjb3JlYm9hcmQgc3lzdGVtIGluIHRoZWlyIEUtQ2xhc3MgZGVzaWduCnVzZXMgKmJpbmFyeSog
+bnVtYmVyaW5nLCB3aGljaCBtZWFucyB0aGF0IHRoZXkgdXNlIHRoYXQgc2NoZW1lLiAgZWZmZWN0
+aXZlbHkKdGhlIG1hc2sgaXMgbm90IGEgbWFzayBwZXIgc2UsIGl0IGlzIGEgc2hvcnRlbmVkIHZl
+cnNpb24gb2YgdGhlIGluc3RydWN0aW9uCnNlcXVlbnRpYWwgbnVtYmVyLgoKQk9PTSB1c2VzIHVu
+YXJ5IGJpdC1tYXNrcy4gIGkgdGhpbmsuICBpIGhhZCBhIGJyaWVmIGNvbnZlcnNhdGlvbiBhYm91
+dCBpdAp3aXRoIHNvbWVvbmUsIHNvbWV3aGVyZSwgYSBmZXcgbW9udGhzIGJhY2suCgppIGdyZWF0
+bHkgcHJlZmVyIHRoZSB1bmFyeSBzeXN0ZW0uICBpdCBhbGxvd3MgaW50ZXJsZWF2aW5nIG9mIG11
+bHRpcGxlCnNpbXVsdGFuZW91cwpjYW5jZWxsYXRpb25zIHRvICphdXRvbWF0aWNhbGx5KiBzb3J0
+IHRoZW1zZWx2ZXMgb3V0LCBieSBPUmluZyB0aGUgY2FuY2VsbGF0aW9ucwp0b2dldGhlciB0byBw
+cm9kdWNlIHRoZSBtYXNrIQoKdGhpcyBpcyBhbiAiYWNjaWRlbnRhbCIgc2lkZS1lZmZlY3Qgb2Yg
+dGhlIFNoYWRvdyBNYXRyaXggY29uY2VwdCwKZGVzY3JpYmVkIGJlbG93LgoKYSBiaW5hcnktaW5k
+ZXhlZCBjYW5jZWxsYXRpb24gc3lzdGVtIHJlcXVpcmVzIGEgKmNlbnRyYWwgcmVzb3VyY2UqIHRv
+IGNhbGN1bGF0ZQp0aGUgbG93ZXN0LW51bWJlcmVkICJpbmRleCIsIGZvbGxvd2VkIGJ5IGJyb2Fk
+Y2FzdGluZyB0aGF0IGluZGV4IGFjcm9zcyB0aGUKb25lIChhbmQgb25seSBvbmUpIHBlcm1pdHRl
+ZCBjYW5jZWxsYXRpb24gZGF0YXBhdGguCgoKPiBJbiBleHRlbmRlZCBzY29yZWJvYXJkLCB0aGUg
+bWlzc3BlY3VsYXRlZCBpbnN0cnVjdGlvbnMgZHJhaW4KPiB0aGVtc2VsdmVzIGZyb20gdGhlIHN5
+c3RlbS4KCmFoIG5vLiAgd2UnbGwgYmUgY2FuY2VsbGluZyB0aGVtIGV4cGxpY2l0bHksIHZpYSBh
+biB1bmFyeSBiaXQtbWFzaywKdGhhdCBpcyBnbG9iYWwKYW5kIGNvbWJpbmF0b3JpYWwgaW4gbmF0
+dXJlLCBleHRlbmRpbmcgcmlnaHQgdGhlIHdheSB0aHJvdWdoIHRoZSBlbnRpcmV0eQpvZiB0aGUg
+RnVuY3Rpb24gVW5pdCwgQ29tcFVuaXRzICphbmQqIHRoZSBhc3NvY2lhdGVkIHBpcGVsaW5lcy4K
+CnRoZSB1bmFyeSBtYXNrIGlzIGJhc2ljYWxseSBhIGNvbnZlcnNpb24gb2YgdGhlICpiaW5hcnkq
+IGluZGljZXMgb2YgdGhlCkNvbXBVbml0IG51bWJlciBvbiBhbnkgZ2l2ZW4gQ29uY3VycmVudCBD
+b21wdXRhdGlvbiBVbml0LiAgMC0zCmluIHRoaXMgZGlhZ3JhbSBoZXJlOgpodHRwczovL2xpYnJl
+LXNvYy5vcmcvM2RfZ3B1L2FyY2hpdGVjdHVyZS82NjAwc2NvcmVib2FyZC82MDB4LWNvbmN1cnJl
+bnRfY29tcF91bml0LnBuZwoKdGh1cyBpbiB0aGF0IGNhc2UgdGhlIHVuYXJ5IGNhbmNlbGxhdGlv
+biBtYXNrIHdvdWxkIGJlIDQtYml0IHdpZGUuCgp0aGVzZSBhcmUgbGlua2VkIGRpcmVjdGx5IHRv
+IC0gYW5kIGFyZSBlcXVhbCB0byAtIHRoZSAiR09fRElFIiBzaWduYWxzIGluICp0aGlzKgpkaWFn
+cmFtOgpodHRwczovL2xpYnJlLXNvYy5vcmcvM2RfZ3B1L3NoYWRvdy5qcGcKCm5vdGUgaW4gdGhh
+dCBkaWFncmFtIHRoZSBleGlzdGVuY2UgcGVyIGNlbGwgaW4gdGhlIERlcGVuZGVuY3kgTWF0cmlj
+ZXMgb2YgKnR3byoKU2hhZG93IExhdGNoZXMuCgp0aGUgZmlyc3QgU2hhZG93IExhdGNoIGlzIGZv
+ciB0aGUgZmlyc3QgQnJhbmNoIFVuaXQgdG8gaW5kaWNhdGUgInNwZWN1bGF0aXZlCmV4ZWN1dGlv
+biB1bmRlcndheSBhcyBjb250cm9sbGVkIGFuZCBkaXJlY3RlZCBieSBCcmFuY2ggVW5pdCAxIi4K
+CnRoZSBzZWNvbmQgU2hhZG93IExhdGNoIGlzIGZvciB0aGUgKnNlY29uZCogQnJhbmNoIFVuaXQg
+dG8gZG8gbGlrZXdpc2UuCgphIHRoaXJkIFNoYWRvdyBMYXRjaCBleGlzdHMgZm9yIHByZWRpY2F0
+ZWQgZXhlY3V0aW9uLiAgb25lIGJpdCBlYWNoIG9mIHRoZQpwcmVkaWNhdGUgcmVnaXN0ZXIgKG9u
+Y2UgcmVhZCkgd2lsbCBiZSB0aHJvd24gYXQgdGhlICJGQUlMRUQtMyIgbGluZSBpZiB0aGF0CmJp
+dCBpcyB6ZXJvLCBhbmQgYXQgdGhlICJTVUNDRVNTLTMiIGxpbmUgaWYgdGhhdCBiaXQgaXMgMS4g
+IGlmICJmYWlsZWQiIGlzCmFzc2VydGVkLCB0aGVuIHNvIGlzIHRoZSAiR09fRElFIi4gIHRoYXQg
+IkdPX0RJRSIsIGJlaW5nIGNvbm5lY3RlZCB0bwp0aGUgY2FuY2VsbGF0aW9uIG1hc2tzLCAqSU5T
+VEFOVExZKiBraWxscyBub3QganVzdCB0aGUgcmVnaXN0ZXIgaGF6YXJkCmFsbG9jYXRpb24sIGl0
+IHJlc2V0cyB0aGUgRnVuY3Rpb24gVW5pdCB0byBpZGxlICphbmQqIGtpbGxzIHRoZSBwYXJ0aWFs
+IHJlc3VsdApnZW5lcmF0aW9uIGFjdHVhbGx5IGluIHRoZSBwaXBlbGluZSBpdHNlbGYuCgppZiAi
+c3VjY2VzcyIgaXMgYXNzZXJ0ZWQsIHRoZSBzaGFkb3cgbGF0Y2hlcyBhcmUgY2xlYXJlZCwgYW5k
+ICJXUklURV9SRVFVRVNUIgppcyBubyBsb25nZXIgcHJldmVudGVkIGFuZCBwcm9oaWJpdGVkIGZy
+b20gYXNzZXJ0aW5nLiAgdGhlIHJlc3VsdCAoaWYgaXQgd2FzCnJlYWR5KSwgaXMgYWxsb3dlZCB0
+byBwcm9jZWVkICJJIG5vdyByZXF1ZXN0IGEgUmVnZmlsZSBXcml0ZSBQb3J0Ii4KaWYgdGhlIHJl
+c3VsdApoYXBwZW5lZCBub3QgdG8gYmUgcmVhZHksIHRoZW4gd2hlbiB0aGUgcmVzdWx0ICppcyog
+cmVhZHkgaXQgd2lsbCBub3QKYmUgaGVsZCB1cC4KCmEgZm91cnRoIFNoYWRvdyBsYXRjaCBleGlz
+dHMgZm9yIGNhbmNlbGxhdGlvbiBvZiBvcGVyYXRpb25zIGluIHRoZSAic2hhZG93IgpvZiBhIExE
+L1NUIFVuaXQncyBwYWdlLWZhdWx0IC8gYWRkcmVzcyBleGNlcHRpb24uCgphcyB5b3UgY2FuIHNl
+ZSB0aGlzIHJlcXVpcmVzIGEgdHJpdmlhbCBudW1iZXIgb2YgZ2F0ZXMgcGVyIGNlbGwsIGhvd2V2
+ZXIKaXQgaXMgKmVhY2gqIGV4Y2VwdGlvbiBvciBjYW5jZWxsYXRpb24gb3Bwb3J0dW5pdHkgdGhh
+dCAgcmVxdWlyZXMgdGhlc2UgU2hhZG93cywKb24gYSAqcGVyIEZVIGJhc2lzKiwgYWNyb3NzIGFs
+bCAqb3RoZXIqIEZVcy4KCmNvbnNlcXVlbnRseSBpIGRlc2lnbmVkIGEgIlNoYWRvdyBNYXRyaXgi
+IHRoYXQgdGFrZXMgY2FyZSBvZiB0aGF0LgoKPiBCb3RoIHNjaGVtZXMgY2FuIGJlIGRlc2lnbmVk
+IHRvIGFjaGlldmUgc2ltaWxhciBPT08gYmVoYXZpb3JzLgo+IFRodXMsIG9uZSBjYW5ub3QgZHJh
+dyBhIHBlcmZvcm1hbmNlIGNvbmNsdXNpb24ganVzdCBieSBzZWVpbmcgd2hpY2gKPiBzY2hlbWUg
+aXMgYmVpbmcgdXNlZC4KCm5vLiAgaGVuY2Ugd2h5IHdlIGhhdmVuJ3QgZG9uZSB0aGF0IGtpbmQg
+b2YgYW5hbHlzaXM6IHdlJ3JlIGZvY3Vzc2luZwpvbiBpbXBsZW1lbnRhdGlvbi4KCj4gSWRlYWxs
+eSB0aGUgYWJvdmUgdGV4dCBzaG91bGQgYmUgdW5jb250cm92ZXJzaWFsLCBwbGVhc2UgbGV0IG1l
+IGtub3cKPiBpZiB0aGVyZSBpcyBhIGxhcmdlIG1pc3VuZGVyc3RhbmRpbmcgaGVyZS4KCm5vbm8g
+bG9va3MgZ3JlYXQsIHJlYWxseSBhcHByZWNpYXRlIHRoZSBpbnNpZ2h0cyByYWlzZWQuICB0aGUg
+bWlzc2luZyBwaWVjZQppcyB0aGUgdHJ1ZSBzaWduaWZpY2FuY2Ugb2YgdGhlIHJvbGUgb2YgdGhl
+IFNoYWRvdyBNYXRyaWNlcyBhcyBiZWluZyAqdGhlKgpwcm92aXNpb24gb2YgcHJlY2lzZSBleGNl
+cHRpb24gY2FwYWJpbGl0eSwgc3BlY3VsYXRpb24sIHByZWRpY2F0aW9uLCBldmVyeXRoaW5nLgoK
+eWVzIGkgYW0gYXdhcmUgdGhhdCB3aXRob3V0ICJwcmVkaWNhdGlvbiBwcmVkaWN0aW9uIiB5ZXMg
+dGhvc2UgYXJlIHR3bwpkaWZmZXJlbnQgd29yZHMgd2UgZW5kIHVwIHdpdGggZXhhY3RseSB0aGUg
+c2FtZSBzaXR1YXRpb24gYXMgZm9yIEJyYW5jaApQcmVkaWN0aW9uOiBwcmVkaWNhdGVkIG9wZXJh
+dGlvbnMgdGhhdCBhcmUgaXNzdWVkLCBjYXVzZSBGVXMgdG8gYmVjb21lCmZ1bGwgLyBhbGxvY2F0
+ZWQsIHRoYXQgYXJlIGNhbmNlbGxlZCBtb21lbnRzIGxhdGVyIGJlY2F1c2UgdGhlIG1ham9yaXR5
+Cm9mIHRoZSBwcmVkaWNhdGUgcmVnaXN0ZXIgdHVybnMgb3V0IHRvIGJlIGZ1bGwgb2YgemVyb3Mu
+Cgp0aGlzIGlzICpub3QqIGEgaGlnaCBwcmlvcml0eSBpdGVtIHJpZ2h0IG5vdyA6KQoKPiBNeSBv
+cGluaW9uIGlzIHRoYXQgVG9tYXN1bG8ncyBpcyBhIG1vcmUgZWxlZ2FudCBhbmQgd2VsbC1wcm92
+ZW4gc2NoZW1lCj4gZm9yIGFjaGlldmluZyBPT08gZXhlY3V0aW9uLCBjb21wYXJlZCB0byBhbiBl
+eHRlbmRlZCBzY29yZWJvYXJkLiBJCj4gYWxzbyBhcmd1ZSB0aGF0IHRoZSBleHRlbmRlZCBzY29y
+ZWJvYXJkIHNjaGVtZSBkb2VzIG5vdCBwcmVzZW50Cj4gc2lnbmlmaWNhbnQgcG93ZXIvYXJlYSBh
+ZHZhbnRhZ2VzIGNvbXBhcmVkIHRvIFRvbWFzdWxvJ3MuCgpNaXRjaCBBbHN1cCBpcyBiZXR0ZXIg
+ZXF1aXBwZWQsIGZyb20gNDAgeWVhcnMgZXhwZXJpZW5jZSBhdCBnYXRlLWxldmVsCmRlc2lnbiAo
+d2hpY2ggaGUga2VwdCBhbmQgKnJlZmluZWQqIHdoZW4gd29ya2luZyBmb3IgQU1ELCBoZW5jZSBz
+b21lCm9mIHRoZSBibGlzdGVyaW5nIHdpdGhlcmluZyB3b3JkcyB0byBsZXNzIGV4cGVyaWVuY2Vk
+LCBsZXNzLWtub3dsZWRnZWFibGUKcGVvcGxlIHRyeWluZyB0byB0ZWxsIGhpbSB0aGF0IEhETHMg
+d2VyZSBpbmhlcmVudGx5IGJldHRlciksIHRvIGFuc3dlciB0aGlzCm9uZS4KCj4gR2l2ZW4gdGhh
+dAo+IGVzdGltYXRlcyBvbiBwb3dlci9hcmVhIHRlbmQgdG8gYmUgd2lsZGx5IGluYWNjdXJhdGUs
+IEkgdGhpbmsgd2Ugd2lsbAo+IGhhdmUgdG8gd2FpdCBmb3IgcG93ZXIgYW5hbHlzaXMgb2YgTGli
+cmVTb0MgdG8gZ2V0IGEgZGVmaW5pdGl2ZSBhbnN3ZXIKPiB0byB0aGlzIGRlYmF0ZSA6KS4KCmlm
+IHdlIGhhdmUgdG8gdXNlIERGRnMgcmF0aGVyIHRoYW4gU1IgTkFORCwgdGhlIGFyZ3VtZW50IGlz
+IGluc3RhbnRseQp3b24gYnkgVG9tYXN1bG8gYmVjYXVzZSB3ZSBoYXZlIHF1aXRlIGxpdGVyYWxs
+eSBhIDUtZm9sZCBpbmNyZWFzZSBpbgpnYXRlIGNvdW50IHJpZ2h0IGFjcm9zcyB0aGUgYm9hcmQs
+IGluIGV2ZXJ5IHNpbmdsZSBNYXRyaXguICBTaGFkb3csCkZVLVJlZ3MsIEZVLUZVIC0gdGhlIGxv
+dC4gIGV2ZXJ5d2hlcmUgeW91IHNlZSBhbiBTUi1MYXRjaCBkaWFncmFtCigyIGdhdGVzKSwgaW5z
+dGVhZCBhZGQgMTAgZ2F0ZXMgZm9yIGEgREZGLgoKZm9yIHRoZSAxODBubSBBU0lDIHRoaXMgd291
+bGQganVtcCBhcHByb3hpbWF0ZWx5Li4uLiBtbW0uLi4gMTAsMDAwIGdhdGVzCnVwIHRvIDUwLDAw
+MC4KCndlIG1heSBoYXZlIHRvIGRvIHRoYXQuICBpdCB3aWxsIHN1Y2suCgo+IEkgZGVlcGx5IGFw
+b2xvZ2l6ZSBpZiBhbnkgb2YgbXkgdGhvdWdodHMgY291bGQgYmUgaW50ZXJwcmV0ZWQgYXMKPiBj
+cml0aWNpc20uIEkgZnVsbHkgc3VwcG9ydCB0aGlzIGtpbmQgb2YgZXhwbG9yYXRpb24gaW4gT09P
+IGRlc2lnbi4gSQo+IGFsc28gYXBvbG9naXplIGlmIEkgc2VlbSB0byBzdWdnZXN0IGEgY2hhbmdl
+IGluIGRlc2lnbiwgYXMgSQo+IHVuZGVyc3RhbmQgdGhhdCBoYXJkd2FyZSBkZXNpZ24gaXMgbm90
+IG5lYXJseSBhcyBmbGV4aWJsZSBhcyBzb2Z0d2FyZQo+IGRlc2lnbi4KCmFwcHJlY2lhdGVkLCBK
+ZXJlbXkuICBpZiB0aGlzIGRpc2N1c3Npb24gd2FzIHRha2luZyBwbGFjZSA2IHRvIDEyIG1vbnRo
+cyBhZ28KdGhlICJtb2RlIiB3ZSB3b3VsZCBiZSBpbiB3YXMgcmFkaWNhbGx5IGRpZmZlcmVudC4g
+IG5vdyBpcyAiZnVsbC1ib3JlCnRpbWUtY3JpdGljYWwgaW1wbGVtZW50YXRpb24gbW9kZSIsIGFu
+ZCB3aWxsIGJlIHVudGlsIHRoZSBvdGhlciBzaWRlCm9mIE9jdCAyMDIwLgoKbC4KCl9fX19fX19f
+X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpYnJlLXJpc2N2LWRldiBt
+YWlsaW5nIGxpc3QKbGlicmUtcmlzY3YtZGV2QGxpc3RzLmxpYnJlLXJpc2N2Lm9yZwpodHRwOi8v
+bGlzdHMubGlicmUtcmlzY3Yub3JnL21haWxtYW4vbGlzdGluZm8vbGlicmUtcmlzY3YtZGV2Cg==
+