Return-path: Envelope-to: publicinbox@libre-riscv.org Delivery-date: Fri, 03 Apr 2020 13:05:31 +0100 Received: from localhost ([::1] helo=libre-riscv.org) by libre-riscv.org with esmtp (Exim 4.89) (envelope-from ) id 1jKL4k-00088p-Jo; Fri, 03 Apr 2020 13:05:30 +0100 Received: from localhost ([127.0.0.1] helo=bugs.libre-riscv.org) by libre-riscv.org with esmtp (Exim 4.89) (envelope-from ) id 1jKL4j-00088h-5T for libre-riscv-dev@lists.libre-riscv.org; Fri, 03 Apr 2020 13:05:29 +0100 From: bugzilla-daemon@libre-riscv.org To: libre-riscv-dev@lists.libre-riscv.org Date: Fri, 03 Apr 2020 12:05:29 +0000 X-Bugzilla-Reason: CC X-Bugzilla-Type: changed X-Bugzilla-Watch-Reason: None X-Bugzilla-Product: Libre-SOC's first SoC X-Bugzilla-Component: Source Code X-Bugzilla-Version: unspecified X-Bugzilla-Keywords: X-Bugzilla-Severity: enhancement X-Bugzilla-Who: lkcl@lkcl.net X-Bugzilla-Status: CONFIRMED X-Bugzilla-Resolution: X-Bugzilla-Priority: --- X-Bugzilla-Assigned-To: lkcl@lkcl.net X-Bugzilla-Flags: X-Bugzilla-Changed-Fields: Message-ID: In-Reply-To: References: X-Bugzilla-URL: http://bugs.libre-riscv.org/ Auto-Submitted: auto-generated MIME-Version: 1.0 Subject: [libre-riscv-dev] [Bug 276] SR NAND Latch needed in nmigen X-BeenThere: libre-riscv-dev@lists.libre-riscv.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Libre-RISCV General Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Libre-RISCV General Development 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" aHR0cDovL2J1Z3MubGlicmUtcmlzY3Yub3JnL3Nob3dfYnVnLmNnaT9pZD0yNzYKCi0tLSBDb21t ZW50ICMyIGZyb20gTHVrZSBLZW5uZXRoIENhc3NvbiBMZWlnaHRvbiA8bGtjbEBsa2NsLm5ldD4g LS0tCihJbiByZXBseSB0byB3aGl0ZXF1YXJrIGZyb20gY29tbWVudCAjMSkKPiAoVGhlIGZvbGxv d2luZyBjb21tZW50IGlzIGNvcGllZCBmcm9tIHRoZSBlbWFpbCBJIHNlbnQgZWFybGllciwgc28g dGhhdCBpdAo+IGlzIGFjY2Vzc2libGUgcHVibGljbHkuKQoKYXBwcmVjaWF0ZWQsIHdoaXRlcXVh cmsuCgpzdW1tYXJ5ICh0aGUgcmVzdCBpcyBhcmNoaXZlLXN1aXRhYmxlIC8gY29udGV4dCkgaXM6 IHdlJ2QgbGlrZSB0byBiZSBhYmxlCnRvIGRvICJleGFjdCIgbmV0bGlzdCAod2UgYWxyZWFkeSBo YXZlIHNlbWktZXF1aXZhbGVudCwgYW5kIHRoaXMgaXMgd29ya2luZykuCgoKPiBPZiB0aGUgdGhp bmdzIHlvdSBtZW50aW9uZWQsIHRoaXMgaW5jbHVkZXMgb25seSB0aGUgU1IgbGF0Y2ggaXNzdWUu Cj4gCj4gVGhpcyBpc3N1ZSBpcyB1bmZvcnR1bmF0ZWx5IHF1aXRlIGludm9sdmVkLiAobilNaWdl biBpcyBkZXNpZ25lZCB0bwo+IGNvbm5lY3QgbGFyZ2UgaXNsYW5kcyBvZiBwdXJlbHkgc3luY2hy b25vdXMgbG9naWMgd2l0aCBhIGZldyBhc3luYwo+IGJyaWRnZXMuIEl0IGRvZXMgbm90LCB2ZXJ5 IGRlbGliZXJhdGVseSwgZGlyZWN0bHkgc3VwcG9ydCBhcmJpdHJhcnkKPiBhc3luY2hyb25vdXMg cHJpbWl0aXZlcyBsaWtlIHRoZSBTUiBsYXRjaC4gU28geW91IGNhbid0IGp1c3QgZHJvcCBvbmUK PiBpbnRvIHlvdXIgZGVzaWduIGFuZCBoYXZlIGl0IHdvcmsgdGhlIHNhbWUgd2F5IG5vcm1hbCBs b2dpYyB3b3Jrcy4KCnllcy4gIHZlcnkgbXVjaCBhd2FyZSB0aGF0IHN0YW5kYXJkIHByb3ByaWV0 YXJ5IGNvbW1lcmNpYWwgdG9vbHMgY29tcGxldGVseQpkcm9wcGVkIHN1cHBvcnQgZm9yIFNSIGxh dGNoZXMuCgoocmVpdGVyYXRpbmcgdGhpcyBmb3IgdGhlIGFyY2hpdmVzOgpob3dldmVyIHdlIHJl YWxseSBjYW5ub3QgdXNlIERGRnMsIGhlcmUuICB0aGF0IGlzIDEwIGdhdGVzIHJhdGhlciB0aGFu IDIsCmFuZCB0aGUgbnVtYmVyIG9mIENlbGxzIG5lZWRlZCBpcyBtYXNzaXZlOiBvbmUgb2YgdGhl IE1hdHJpY2VzIG1heSBuZWVkCnRvIGJlIDEyOCB4IDMwLCB3aXRoIGF0IGxlYXN0IGZvdXIgbWF5 YmUgZml2ZSBsYXRjaGVzIHBlciBDZWxsLiAgdGhhdCdzCjE5MiwwMDAgZ2F0ZXMgKmp1c3QgZm9y IHRoYXQgTWF0cml4KiBpZiB3ZSB1c2UgREZGcy4KaWYgd2UgdXNlIFNSIExhdGNoZXMsIGl0J3Mg Mzg0MDAgZ2F0ZXMsIHdoaWNoIGlzIHRvbGVyYWJsZSkKCgo+IEhvd2V2ZXIsIHlvdSdyZSBpbiBs dWNrIGJlY2F1c2UgYmV0dGVyIHN1cHBvcnQgZm9yIGFzeW5jaHJvbm91cwo+IHNpZ25hbHMgd2Fz IHNvbWV0aGluZyBJIHRvb2sgaW50byBhY2NvdW50IHdoZW4gZGVzaWduaW5nIG5NaWdlbiBhbmQK PiBib3RoIG9mIHRoZSBuZXcgc2ltdWxhdG9ycywgcHlzaW0gYW5kIGN4eHNpbS4KCndoZXcgOikK Cj4gVG8gc29sdmUgdGhpcyBpc3N1ZSwgd2UnbGwgbmVlZCB0byB3b3JrIHRvZ2V0aGVyIHRvIGRl dGVybWluZSB5b3VyCj4gc3BlY2lmaWMgdXNlIGNhc2UuIERvIHlvdSB3YW50IHRvIHVzZSB0aGUg ZXhhY3Qgc2FtZSBuZXRsaXN0IGZvcgo+IG5NaWdlbiBzaW11bGF0aW9uIGFuZCBzeW50aGVzaXM/ CgppIGhvbmVzdGx5IGRvbid0IGtub3c6IHdlJ3JlIG9wZW4gdG8gc3VnZ2VzdGlvbnMuICAoaGF2 aW5nIHJlYWQgYWhlYWQpCmlmIHdlIGNhbiBkbyBib3RoIChhbmQgdXNlIG9uZSBmb3IgcmFwaWQg cHJvdG90eXBpbmcgYW5kIHRoZSBvdGhlciBhcwphIGNyb3NzLWNoZWNrIGJlZm9yZSBtb3Zpbmcg dG8gc3ludGhldGhpcykgdGhhdCB3b3VsZCBiZSBncmVhdC4KCnJpZ2h0IG5vdyB3ZSBoYXZlIHNv bWV0aGluZyB0aGF0ICJ3b3JrcyIgaG93ZXZlcgppdCB1c2VzIERGRnMsIG5vdCBTUiBsYXRjaGVz IChzZWUgbGF0Y2gucHkgbGluaywgYmVsb3cpLgoKPiBJZiBub3QsIGl0IG1lYW5zIHlvdSBjYW4g bW9kZWwKPiB3aGF0ZXZlciBpdCBpcyB0aGF0IGNvbnRhaW5zIHRoZSBTUiBsYXRjaGVzIChJJ20g bm90IHN1cmUgd2hhdAo+IG1hdHJpY2VzIHlvdSdyZSByZWZlcnJpbmcgdG8sIGhlcmUpCgpPdXQt b2YtT3JkZXIgUmVhZC9Xcml0ZSBIYXphcmQgZGV0ZWN0aW9uIGFuZCBhdm9pZGFuY2UgbWF0cmlj ZXMuCnNlZSAiTW9kaWZpY2F0aW9ucyB0byBEZXBlbmRlbmN5IENlbGwiCmh0dHBzOi8vbGlicmUt cmlzY3Yub3JnLzNkX2dwdS9hcmNoaXRlY3R1cmUvNjYwMHNjb3JlYm9hcmQvCgoqIHRoZSBETXMg ZW5jb2RlIGFsbCByZWdpc3RlcnMgaW4gVW5hcnkgKHNpbmdsZSBiaXQgYWN0aXZhdGlvbikuCiAg dGh1cyBvbmUgInJvdyIgcmVwcmVzZW50cyBhbGwgcmVnaXN0ZXJzIHVzZWQgZm9yIGEgZ2l2ZW4g RnVuY3Rpb25Vbml0CiAgW2FuZCBhY2Nlc3MgdG8gaXRzIEFMVV0uCiogZWFjaCBDZWxsIHRodXMg cmVjb3JkcywgaW4gYml0LWxldmVsICh1bmFyeSkgZm9ybSwgdGhlIGZhY3QgdGhhdCByZWFkL3dy aXRlCiAgZm9yIGEgZ2l2ZW4gZnVuY3Rpb24gKGFkZCkgaXMgbmVlZGVkLCBieSByYWlzaW5nIHRo ZSAiUmVnIDUgbmVlZHMgUkVBRCIKICBhbmQgIlJlZyA3IG5lZWRzIFdSSVRFIiBTUiBMYXRjaGVz CiogdGhlc2Ugbm93LWFjdGl2ZSBzaWduYWxzIGluZGljYXRlIHRvIHN1YnNlcXVlbnQgaW5zdHJ1 Y3Rpb25zCiAgImhlbGxvIGkgaGF2ZSBhIHJlYWQgaGF6YXJkLCBoZWxsbyBpIGhhdmUgYSB3cml0 ZSBoYXphcmQiIHJlc3BlY3RpdmVseS4KICBhdHRlbXB0cyB0byB1c2UgdGhvc2UgcmVnaXN0ZXJz IHRodXMgU1RPUHMgdGhhdCBGdW5jdGlvblVuaXQgZnJvbSBleGVjdXRpbmcuCiogaGF6YXJkcyBn ZXQgY2xlYXJlZCBvdXQgb25jZSByZXN1bHRzIGFyZSB3cml0dGVuCiogd2hlbiB0aGVyZSBhcmUg emVybyBoYXphcmRzIChpbiBhbnkgZ2l2ZW4gcm93KSwgdGhhdCBpbnN0cnVjdGlvbgogIGJlY29t ZXMgZnJlZS1hbmQtY2xlYXIgdG8gcHJvY2VlZC4KCml0J3MgYWN0dWFsbHkgaW5jcmVkaWJseSBz aW1wbGUuCgpoZXJlJ3Mgb25lIGZvciBSZWdpc3Rlci10by1GdW5jdGlvblVuaXQgKEZVIGJlaW5n IHRoZSAiYXJiaXRyYXRvciIgZm9yIGFjY2Vzcwp0byBhbiBBTFUgcGlwZWxpbmUpLCB5b3UgaGF2 ZSB0byBkcmlsbCBkb3duIGEgYml0ICh0aHJvdWdoIERlcGVuZGVuY3lSb3cpCnRvIGdldCB0byB0 aGUgU1IgTGF0Y2hlcyB0aGVtc2VsdmVzCgpodHRwczovL2dpdC5saWJyZS1yaXNjdi5vcmcvP3A9 c29jLmdpdDthPWJsb2I7Zj1zcmMvc29jL3Njb3JlYm9hcmQvZnVfcmVnX21hdHJpeC5weTtoPTA2 MzgwNDM0YzhkN2QyMDgyOGQ4MGMzZDBlMDIwMTYxYmNiMmMyZTQ7aGI9YjAxZjZiYzBhZDI4Y2Rh MTMxYmVhZTMzZTVmZTMzOGRhYWY1ZTllYQoKPiB1c2luZyBzeW5jaHJvbm91cyBjb2RlLCAKCmZ1 bm5pbHkgZW5vdWdoIHRoYXQncyB3aGVyZSB3ZSBhcmUgcmlnaHQgbm93OgpodHRwczovL2dpdC5s aWJyZS1yaXNjdi5vcmcvP3A9bm11dGlsLmdpdDthPWJsb2I7Zj1zcmMvbm11dGlsL2xhdGNoLnB5 O2g9N2Q2YTFlZmUyMmM4ODE1ODVhNjI2ZTM5NzU5MDMzNzE4NmY2ZWYxYjtoYj1IRUFEI2w0MQoK PiBhbmQKPiByZXBsYWNlIHRoZW0gd2l0aCB0cnVlIFNSIGxhdGNoZXMgZm9yIHN5bnRoZXNpcy4g T2YgY291cnNlLCB5b3Ugd2lsbAo+IG5lZWQgdG8gY29udmluY2UgeW91cnNlbGYgdGhlc2UgdHdv IGRlc2lnbnMgYXJlIGVxdWl2YWxlbnQuCgp5ZXMuICBmb3J0dW5hdGVseSwgY29yaW9saXMyIGhh cyBnYXRlLWxldmVsIHNpbXVsYXRpb24gKHdoaWNoIG5lZWRzCmludmVzdGlnYXRpb24pIHNvIHdl IGNhbiB0cmlwbGUtY2hlY2suCgoKPiBJZiB5b3UgKmRvKiB3YW50IHRvIHVzZSB0aGUgZXhhY3Qg c2FtZSBuZXRsaXN0LCB0aGVyZSBhcmUgYSBmZXcKPiBvcHRpb25zLiBCb3RoIHRoZSBuZXcgbk1p Z2VuIHNpbXVsYXRvciBhbmQgY3h4cnRsIHVzZSBhbiBhcmNoaXRlY3R1cmUKPiB0aGF0LCBpbiBw cmluY2lwbGUsIHN1cHBvcnRzIGxvZ2ljIGZlZWRiYWNrIGxvb3BzLiBTbyB5b3UgY2FuIG1vZGVs Cj4gdGhlIFNSIGxhdGNoIHVzaW5nIHR3byBvcmRpbmFyeSBOQU5EIGdhdGVzLiBJZiB5b3UgaGF2 ZSBhbiBpbnN0YW5jZQo+IG9mIGEgU1JOQU5EIGNlbGwsIHlvdSBjYW4gcHJvdmlkZSBhIHNpbXVs YXRpb24gbW9kZWwgZm9yIHRoaXMgaW5zdGFuY2UKPiB0aGF0IHVzZXMgdHdvIE5BTkQgZ2F0ZXMs IGFuZCBpdCdsbCB3b3JrLiAKCndpdGggdGhlIGNhdmVhdCB0aGF0IHRoZSBjdXJyZW50IFNSTGF0 Y2ggY2xhc3MgaXMgYWN0dWFsbHkgYSBSZXNldC1wcmlvcml0eQpTUiBsYXRjaCwgaSAqYmVsaWV2 ZSogd2UgYWxyZWFkeSBoYXZlIHRoZSBmb3JtZXIsIHNvIHRoaXMgbGF0dGVyIGlzIHJlYWxseQp3 aGF0IHdlJ2QgbGlrZSB0byBoYXZlLgoKd2UgY2FuIGFsd2F5cyBmbGlwIGluL291dCB0aGUgY3Vy cmVudCBTUiBMYXRjaCBmb3IgYSBwcm9wZXJseSBhc3luY2hyb25vdXMKb25lIChleGFjdCBzYW1l IG5ldGxpc3QpLCBydW4gc29tZSAodW5iZWxpZXZhYmx5IHNsb3cpIHRlc3RzLCB0aGVuIGdlbmVy YXRlCnRoZSBhY3R1YWwgbmV0bGlzdCB0byBiZSBoYW5kZWQgdG8geW9zeXMgKGFuZCBmcm9tIHRo ZXJlIHRvIGNvcmlvbGlzMikuCgoKPiBIb3dldmVyLCBJIG11c3Qgd2FybiB5b3UKPiB0aGF0IGJv dGggZm9yIG5NaWdlbiBweXNpbSBhbmQgY3h4cnRsLCB0aGlzIHdpbGwgY29tZSB3aXRoIGEgc2V2 ZXJlCj4gcGVyZm9ybWFuY2UgcGVuYWx0eSBvZiBhdCBsZWFzdCB+MTB4LCBwb3NzaWJseSB3b3Jz ZSBkZXBlbmRpbmcgb24geW91cgo+IGV4YWN0IGRlc2lnbi4gSWYgeW91IGFyZSBwbGFubmluZyB0 byB1c2UgZmluZSBTUk5BTkQgY2VsbHMgKG9uZSBwZXIKPiBiaXQgcmF0aGVyIHRoYW4gb25lIHBl ciB3b3JkKSwgZXhwZWN0IGEgZnVydGhlciBzbG93ZG93biBvZiB0aGUgd29yZAo+IHNpemUgZmFj dG9yLgoKaW50ZXJlc3RpbmcsIGJlY2F1c2UgYSBtdWx0aS13b3JkIGRlc2lnbiB0dXJuZWQgb3V0 IHRvIGJlIG5lY2Vzc2FyeQp0byBnZXQgYSBzcGVlZHVwIGZhY3RvciAoc29tZSBvZiB0aGUgTWF0 cmljZXMgYXJlIHNvIGxhcmdlIC0gMTI4IHggMzApIHRoYXQKd2UgZ2V0IHNlY29uZHMgcGVyIGNs b2NrIGluIHB5c2ltIGlmIGRvbmUgYXMgaW5kaXZpZHVhbCBvbmUtYml0IENlbGxzLgp0aGUgTWF0 cmljZXMgYXJlIHNvIGxhcmdlIC0gMTI4IHggMzAgd2lsbCBiZSB0aGUgbGFyZ2VzdCAtIHRoYXQg d2l0aCBhCjQgdG8gNSBsZXZlbCBoaWVyYXJjaHkgb2YgRWxhYm9yYXRhYmxlIGNsYXNzZXMgaXQg d2FzIGludG9sZXJhYmxlLgoKYnkgcmVtb3Zpbmcgb25lIGxldmVsIG9mIGhpZXJhcmNoeSwgcHlz aW0gcmFuIGluIHJlYXNvbmFibGUgdGltZS4KCmkgZm91bmQgdGhpcyBnZW5lcmFsbHkgdG8gYmUg dHJ1ZTogdGhlIG1vcmUgbGV2ZWxzIG9mIGhpZXJhcmNoeSwgdGhlCnNsb3dlciBweXNpbSBnb3Qu ICBhbmQgZHVlIHRvIHRoZSBNQVNTSVZFIHNpemUgb2Ygb3VyIGRlc2lnbnMsIHdlIG5lZWQKaGll cmFyY2hpY2FsbHktbGFpZC1vdXQgY2xhc3NlcyAod2VsbCBvdmVyIDI1MCBzbyBmYXIpLgoKCj4g QW5vdGhlciBpc3N1ZSBpcyB0aGF0IG5laXRoZXIgcHlzaW0gbm9yIGN4eHNpbSBwcm92aWRlCj4g YW55IHdheSB0byBjb250cm9sIHRoZSBwb3NzaWJsZSByYWNlIGNvbmRpdGlvbnMuIFRoYXQgaXMs IHRoZSBTUk5BTkQKPiBsYXRjaCB0aGF0IGlzIHNpbXVsYXRlZCBpbiBweXNpbSBvciBjeHhzaW0g d2lsbCBpbml0aWFsaXplIHRvCj4gYW4gaW5kZXRlcm1pbmF0ZSB2YWx1ZSwgYW5kIGNoYWluaW5n IHRoZW0gdG9nZXRoZXIgd2lsbCBsZWFkIHRvCj4gdW5wcmVkaWN0YWJsZSByZXN1bHRzLgoKeW91 J2xsIGxpa2UgdGhpczogaXQncyBtdWNoICJ3b3JzZSIgdGhhbiBpdCBsb29rcyA6KSAgd2UgYWN0 dWFsbHkgaGF2ZQphIHRyaXBsZS1jb25uZWN0ZWQgcmluZyBvZiBTUk5BTkQgbGF0Y2hlcywgYWN0 aW5nIGFzIGEgcHNldWRvIHBpcGVsaW5lLgoKaG93ZXZlciwgaXQgdHVybnMgb3V0IHRoYXQgdGhl IHNldC1yZXNldCBsb2dpYyB3aGljaCAqZW5hYmxlcyogdGhlIHRocmVlClNSTkFORHMgaXMgdmVy eSwgdmVyeSBzcGVjaWZpY2FsbHkgb3JnYW5pc2VkIHN1Y2ggdGhhdCBvbmx5IHR3byBvZiB0aGVt CmFyZSBldmVyIHBvc3NpYmxlIHRvIGhhdmUgYWN0aXZlIGF0IGFueSBvbmUgdGltZSwgYW5kIHRo dXMgd2UgY3JlYXRlCmEgInJldm9sdmluZyBkb29yIiBlZmZlY3QuCgp0aG9zZSAicHJvdGVjdGlv bnMiIGFyZSBhbGwgc3luY2hyb25vdXMuICBzbyB3aGlsc3QgdGhlIFNSTkFORCBjZWxscwphcmUg YXN5bmNocm9ub3VzIGFuZCBjb3VsZCBoeXBvdGhldGljYWxseSBlbmQgdXAgaW4gInVua25vd24i LCBpbgpwcmFjdGljZSB0aGlzIGNhbiAqbmV2ZXIqIG9jY3VyIGJlY2F1c2UgdGhlIGNvbmRpdGlv bnMgd2hpY2ggY3JlYXRlCiJ1bmtub3duIiBhcmUgc3BlY2lmaWNhbGx5IGF2b2lkZWQgKGFuZCBh dm9pZGVkIHVzaW5nIHN5bmNocm9ub3VzCmxvZ2ljKS4KCmluIGNhc2UgeW91IHdlcmUgd29uZGVy aW5nOiB0aGlzIGlzIGEgcHJvdmVuIGRlc2lnbi4gIGl0IHdhcyB1c2VkIGluIHRoZQpvcmlnaW5h bCBDREMgNjYwMCwgYW5kIGFsc28gaW4gdGhlIEFNRCBPcHRlcm9uIFNlcmllcy4gIGhvd2V2ZXIs IGluIHRoZQpDREMgNjYwMCB0aGV5IHVzZWQgdHJhbnNpc3RvcnMgKGFzIGluOiAqYWN0dWFsKiB0 aHJlZS1wcm9uZ2VkIHRyYW5zaXN0b3JzLAp0aGUgbGFyZ2VzdCBldmVyIHNpbmdsZSBvcmRlciBt YWRlIGZvciB0cmFuc2lzdG9ycyBpbiB0aGUgd29ybGQpLCBhbmQKaW4gdGhlIEFNRCBPcHRlcm9u IFNlcmllcyB0aGV5IG9mIGNvdXJzZSBoYWQgdGhlIGZpbmFuY2lhbCBidWRnZXQgYW5kCnJlc291 cmNlcyBvZiBhIG11bHRpLWJpbGxpb24tZG9sbGFyIGNvbXBhbnkgYW5kIHNvIGNvdWxkIGhhcHBp bHkgcGF5IGZvcgpjdXN0b20gc2lsaWNvbi4KCnNvLiAgY29uY2x1c2lvbiwgYWZ0ZXIgYWxsIHRo YXQgKGFwb2xvZ2llcyksIGlzIGJhY2sgYXQgdGhlIHRvcC4KCi0tIApZb3UgYXJlIHJlY2Vpdmlu ZyB0aGlzIG1haWwgYmVjYXVzZToKWW91IGFyZSBvbiB0aGUgQ0MgbGlzdCBmb3IgdGhlIGJ1Zy4K X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGlicmUtcmlz Y3YtZGV2IG1haWxpbmcgbGlzdApsaWJyZS1yaXNjdi1kZXZAbGlzdHMubGlicmUtcmlzY3Yub3Jn Cmh0dHA6Ly9saXN0cy5saWJyZS1yaXNjdi5vcmcvbWFpbG1hbi9saXN0aW5mby9saWJyZS1yaXNj di1kZXYK