From mboxrd@z Thu Jan 1 00:00:00 1970 From: Alex Kost Subject: Re: [PATCH 2/3] gnu: Add ledger. Date: Thu, 12 May 2016 12:12:45 +0300 Message-ID: <878tzf1vxu.fsf@gmail.com> References: <1462646320.1130194.601019473.51C9DD36@webmail.messagingengine.com> <1462648816.1139014.601038209.3A886EEC@webmail.messagingengine.com> <20160507222330.GA16592@jasmine> <1462673448.1215366.601202601.6F8B62D7@webmail.messagingengine.com> <20160509033906.GC25977@jasmine> <8737prou9x.fsf@gnu.org> <20160509210103.GB15057@jasmine> <1463023686.3455318.605409553.05451A73@webmail.messagingengine.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:43796) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b0mfq-0005DU-JR for guix-devel@gnu.org; Thu, 12 May 2016 05:12:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1b0mfm-0008Gy-9f for guix-devel@gnu.org; Thu, 12 May 2016 05:12:49 -0400 Received: from mail-lb0-x244.google.com ([2a00:1450:4010:c04::244]:34167) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1b0mfl-0008Gj-Iv for guix-devel@gnu.org; Thu, 12 May 2016 05:12:46 -0400 Received: by mail-lb0-x244.google.com with SMTP id bg8so896172lbc.1 for ; Thu, 12 May 2016 02:12:45 -0700 (PDT) In-Reply-To: <1463023686.3455318.605409553.05451A73@webmail.messagingengine.com> (Alex Griffin's message of "Wed, 11 May 2016 22:28:06 -0500") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Alex Griffin Cc: guix-devel@gnu.org --=-=-= Content-Type: text/plain Alex Griffin (2016-05-12 06:28 +0300) wrote: > Here's an updated patch with the suggested changes. I also re-enabled > the shared library and python module, and built html docs, and a few > other things. This turned out to be a much more challenging package than > I expected! Hopefully it is finally finished or very close to finished. Hello, was this package built successfully for you? I tried it but the build phase failed (I'm attaching the last part of the build process [1] just in case). I don't know, maybe I just don't have enough memory (3GB) to build it (I had such problems with cmake before). > From e6fb89828f44765d36a658bd2b497aa8bd8b12d9 Mon Sep 17 00:00:00 2001 > From: Alex Griffin > Date: Sat, 7 May 2016 12:20:47 -0500 > Subject: [PATCH 2/2] gnu: Add ledger. > > * gnu/packages/finance.scm (ledger): New variable. [...] > +(define-public ledger > + (package > + (name "ledger") > + (version "3.1.1") > + (source (origin > + (method url-fetch) > + (uri (string-append "https://github.com/ledger/ledger/archive/v" > + version > + ".tar.gz")) > + (file-name (string-append name "-" version ".tar.gz")) > + (sha256 > + (base32 > + "12jlv3gsjhrja25q9hrwh73cdacd2l3c2yyn8qnijav9mdhnbw4h")))) > + (build-system cmake-build-system) > + (arguments > + `(#:phases > + (let* ((out (assoc-ref %outputs "out")) > + (examples (string-append out "/share/doc/ledger/examples")) > + (site-lisp (string-append out "/share/emacs/site-lisp"))) > + (modify-phases %standard-phases > + (add-before 'configure 'install-examples > + (lambda _ > + (install-file "test/input/sample.dat" examples) > + (install-file "test/input/demo.ledger" examples))) Every phase should return non-false value if it succeeded. So since the returned value of 'install-file' is not specified, we add #t to the end of such phases. Please add #t to all phases except the following (build-doc) because zero? returns #t if succeeded. > + (add-after 'build 'build-doc > + (lambda _ (zero? (system* "make" "doc")))) > + (add-before 'check 'check-setup > + ;; one test fails if it can't set the timezone > + (lambda _ (setenv "TZDIR" > + (string-append (assoc-ref %build-inputs "tzdata") > + "/share/zoneinfo")))) Unlike configure-flags where we can use only %build-inputs, in phases, it is better to use a functional style using 'inputs' passed to a phase as argument: (lambda* (#:key inputs #:allow-other-keys) (setenv "TZDIR" (string-append (assoc-ref inputs "tzdata") "/share/zoneinfo")) #t) > + (add-after 'install 'relocate-elisp > + (lambda _ > + (mkdir-p (string-append site-lisp "/guix.d")) > + (rename-file (string-append site-lisp "/ledger-mode") > + (string-append site-lisp "/guix.d/ledger-mode")))))) (Sorry, the following comment is not related to this patch) This is another point for us to get rid of "guix.d" part: it is a common practice for packages to put elisp files in a sub-directory of "share/emacs/site-lisp/" (at least mu, magit and git-modes do this as well). It seems natural for me if our emacs will look in "site-lisp/" instead of "site-lisp/guix.d/", so there will be no need to adjust such packages to move elisp files. So I beg people to answer to . "guix.d" part is a redundant level in file hierarchy, let's remove it! > + #:configure-flags > + `("-DBUILD_DOCS:BOOL=ON" > + "-DBUILD_WEB_DOCS:BOOL=ON" > + "-DBUILD_EMACSLISP:BOOL=ON" > + "-DUSE_PYTHON:BOOL=ON" > + "-DCMAKE_INSTALL_LIBDIR:PATH=lib" > + ,(string-append "-DUTFCPP_INCLUDE_DIR:PATH=" > + (assoc-ref %build-inputs "utfcpp") > + "/include")))) It doesn't matter but usually we put #:configure-flags before #:phases. --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=guix-ledger-build-fail.log Content-Transfer-Encoding: base64 Li4uClsgMjMlXSBCdWlsZGluZyBDWFggb2JqZWN0IHNyYy9DTWFrZUZpbGVzL2xpYmxlZGdlci5k aXIvZ2VuZXJhdGUuY2MubwpjZCAvdG1wL2d1aXgtYnVpbGQtbGVkZ2VyLTMuMS4xLmRydi0wL2J1 aWxkL3NyYyAmJiAvZ251L3N0b3JlL3NqdmNpcnJpMmJnN3E1aGxya2F5d2hteGxsaWswY2Z4LWdj Yy00LjkuMy9iaW4vYysrICAgLURsaWJsZWRnZXJfRVhQT1JUUyAtTzMgLUROREVCVUcgLWZQSUMg LWlzeXN0ZW0gL2dudS9zdG9yZS9rY2MzY3hueDlsMmhiZzdwamh4c2EwcjV5cTJqMmYzOC1weXRo b24tMi43LjEwL2luY2x1ZGUvcHl0aG9uMi43IC1pc3lzdGVtIC9nbnUvc3RvcmUvZzcwMTk1ZDI1 NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUgLWlzeXN0ZW0gL2du dS9zdG9yZS9qbTRwZDZodmdwY2xreHcyamd4bmpsMHM3N2dyY3duci1nbXAtNi4xLjAvaW5jbHVk ZSAtaXN5c3RlbSAvZ251L3N0b3JlLzV2cmZtbm1sc2F6MnY3cmNyN3A1cWFieDdsNnhra3ZyLW1w ZnItMy4xLjMvaW5jbHVkZSAtaXN5c3RlbSAvZ251L3N0b3JlL3dwcXNzeWx5bjl5eXo0cnZ6NGZm OW5nbmtpcjI1YjBkLWxpYmVkaXQtMjAxNTAzMjUtMy4xL2luY2x1ZGUgLUkvZ251L3N0b3JlL21n YTR2ZjRiZzBpMzBuMDlnd21zd3hwd3hrcGwyeXFnLXV0ZmNwcC0yLjMuNC9pbmNsdWRlIC1JL3Rt cC9ndWl4LWJ1aWxkLWxlZGdlci0zLjEuMS5kcnYtMC9idWlsZCAgICAtc3RkPWMrKzExIC1vIENN YWtlRmlsZXMvbGlibGVkZ2VyLmRpci9nZW5lcmF0ZS5jYy5vIC1jIC90bXAvZ3VpeC1idWlsZC1s ZWRnZXItMy4xLjEuZHJ2LTAvbGVkZ2VyLTMuMS4xL3NyYy9nZW5lcmF0ZS5jYwpJbiBmaWxlIGlu Y2x1ZGVkIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1i b29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lzX2RlcmVmZXJlbmNl YWJsZS5ocHA6MTI6MCwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1 NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9zdHJl YW1zL2RldGFpbC9yZXNvbHZlLmhwcDoyNiwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3Rv cmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUv Ym9vc3QvaW9zdHJlYW1zL2RldGFpbC9wdXNoLmhwcDoyNCwKICAgICAgICAgICAgICAgICBmcm9t IC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4w L2luY2x1ZGUvYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvaW5kaXJlY3Rfc3RyZWFt YnVmLmhwcDozMSwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1Nmcw bmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9zdHJlYW1z L3N0cmVhbV9idWZmZXIuaHBwOjIyLAogICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9n NzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29z dC9pb3N0cmVhbXMvc3RyZWFtLmhwcDoyMSwKICAgICAgICAgICAgICAgICBmcm9tIC90bXAvZ3Vp eC1idWlsZC1sZWRnZXItMy4xLjEuZHJ2LTAvYnVpbGQvc3lzdGVtLmhoOjE5NiwKICAgICAgICAg ICAgICAgICBmcm9tIC90bXAvZ3VpeC1idWlsZC1sZWRnZXItMy4xLjEuZHJ2LTAvbGVkZ2VyLTMu MS4xL3NyYy9jc3YuY2M6MzI6Ci9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4 ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xf dHJhaXRfZGVmLmhwcDoxODo3OTogbm90ZTogI3ByYWdtYSBtZXNzYWdlOiBOT1RFOiBVc2Ugb2Yg dGhpcyBoZWFkZXIgKGJvb2xfdHJhaXRfZGVmLmhwcCkgaXMgZGVwcmVjYXRlZAogIyBwcmFnbWEg bWVzc2FnZSgiTk9URTogVXNlIG9mIHRoaXMgaGVhZGVyIChib29sX3RyYWl0X2RlZi5ocHApIGlz IGRlcHJlY2F0ZWQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgpJbiBmaWxlIGluY2x1ZGVkIGZy b20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYw LjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lzX2RlcmVmZXJlbmNlYWJsZS5ocHA6 MTI6MCwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1 cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9zdHJlYW1zL2RldGFp bC9yZXNvbHZlLmhwcDoyNiwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1 ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9z dHJlYW1zL2RldGFpbC9wdXNoLmhwcDoyNCwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3Rv cmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUv Ym9vc3QvaW9zdHJlYW1zL2RldGFpbC9zdHJlYW1idWYvaW5kaXJlY3Rfc3RyZWFtYnVmLmhwcDoz MSwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6 cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9zdHJlYW1zL3N0cmVhbV9i dWZmZXIuaHBwOjIyLAogICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2 ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9pb3N0cmVh bXMvc3RyZWFtLmhwcDoyMSwKICAgICAgICAgICAgICAgICBmcm9tIC90bXAvZ3VpeC1idWlsZC1s ZWRnZXItMy4xLjEuZHJ2LTAvYnVpbGQvc3lzdGVtLmhoOjE5NiwKICAgICAgICAgICAgICAgICBm cm9tIC90bXAvZ3VpeC1idWlsZC1sZWRnZXItMy4xLjEuZHJ2LTAvbGVkZ2VyLTMuMS4xL3NyYy9z dGF0cy5jYzozMjoKL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1i b29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvYm9vbF90cmFpdF9k ZWYuaHBwOjE4Ojc5OiBub3RlOiAjcHJhZ21hIG1lc3NhZ2U6IE5PVEU6IFVzZSBvZiB0aGlzIGhl YWRlciAoYm9vbF90cmFpdF9kZWYuaHBwKSBpcyBkZXByZWNhdGVkCiAjIHByYWdtYSBtZXNzYWdl KCJOT1RFOiBVc2Ugb2YgdGhpcyBoZWFkZXIgKGJvb2xfdHJhaXRfZGVmLmhwcCkgaXMgZGVwcmVj YXRlZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCkluIGZpbGUgaW5jbHVkZWQgZnJvbSAvZ251 L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNs dWRlL2Jvb3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfZGVyZWZlcmVuY2VhYmxlLmhwcDoxMjowLAog ICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRm MzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc29s dmUuaHBwOjI2LAogICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBu bGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMv ZGV0YWlsL3B1c2guaHBwOjI0LAogICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAx OTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9p b3N0cmVhbXMvZGV0YWlsL3N0cmVhbWJ1Zi9pbmRpcmVjdF9zdHJlYW1idWYuaHBwOjMxLAogICAg ICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhk OXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMvc3RyZWFtX2J1ZmZlci5o cHA6MjIsCiAgICAgICAgICAgICAgICAgZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3 NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L2lvc3RyZWFtcy9zdHJl YW0uaHBwOjIxLAogICAgICAgICAgICAgICAgIGZyb20gL3RtcC9ndWl4LWJ1aWxkLWxlZGdlci0z LjEuMS5kcnYtMC9idWlsZC9zeXN0ZW0uaGg6MTk2LAogICAgICAgICAgICAgICAgIGZyb20gL3Rt cC9ndWl4LWJ1aWxkLWxlZGdlci0zLjEuMS5kcnYtMC9sZWRnZXItMy4xLjEvc3JjL2dlbmVyYXRl LmNjOjMyOgovZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0 LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9ib29sX3RyYWl0X2RlZi5o cHA6MTg6Nzk6IG5vdGU6ICNwcmFnbWEgbWVzc2FnZTogTk9URTogVXNlIG9mIHRoaXMgaGVhZGVy IChib29sX3RyYWl0X2RlZi5ocHApIGlzIGRlcHJlY2F0ZWQKICMgcHJhZ21hIG1lc3NhZ2UoIk5P VEU6IFVzZSBvZiB0aGlzIGhlYWRlciAoYm9vbF90cmFpdF9kZWYuaHBwKSBpcyBkZXByZWNhdGVk IikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIF4KSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC9nbnUvc3Rv cmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUv Ym9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcDoyMTowLAogICAgICAg ICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXpt ci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lzX2RlcmVmZXJl bmNlYWJsZS5ocHA6MTIsCiAgICAgICAgICAgICAgICAgZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQy NTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L2lvc3Ry ZWFtcy9kZXRhaWwvcmVzb2x2ZS5ocHA6MjYsCiAgICAgICAgICAgICAgICAgZnJvbSAvZ251L3N0 b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRl L2Jvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaC5ocHA6MjQsCiAgICAgICAgICAgICAgICAgZnJv bSAvZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAu MC9pbmNsdWRlL2Jvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2luZGlyZWN0X3N0cmVh bWJ1Zi5ocHA6MzEsCiAgICAgICAgICAgICAgICAgZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQyNTZn MG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L2lvc3RyZWFt cy9zdHJlYW1fYnVmZmVyLmhwcDoyMiwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUv ZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9v c3QvaW9zdHJlYW1zL3N0cmVhbS5ocHA6MjEsCiAgICAgICAgICAgICAgICAgZnJvbSAvdG1wL2d1 aXgtYnVpbGQtbGVkZ2VyLTMuMS4xLmRydi0wL2J1aWxkL3N5c3RlbS5oaDoxOTYsCiAgICAgICAg ICAgICAgICAgZnJvbSAvdG1wL2d1aXgtYnVpbGQtbGVkZ2VyLTMuMS4xLmRydi0wL2xlZGdlci0z LjEuMS9zcmMvY3N2LmNjOjMyOgovZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYz OGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1w bGF0ZV9hcml0eV9zcGVjLmhwcDoxMzo4NDogbm90ZTogI3ByYWdtYSBtZXNzYWdlOiBOT1RFOiBV c2Ugb2YgdGhpcyBoZWFkZXIgKHRlbXBsYXRlX2FyaXR5X3NwZWMuaHBwKSBpcyBkZXByZWNhdGVk CiAjIHByYWdtYSBtZXNzYWdlKCJOT1RFOiBVc2Ugb2YgdGhpcyBoZWFkZXIgKHRlbXBsYXRlX2Fy aXR5X3NwZWMuaHBwKSBpcyBkZXByZWNhdGVkIikKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XgpJbiBmaWxlIGluY2x1ZGVkIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpw aGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwv Ym9vbF90cmFpdF9kZWYuaHBwOjIxOjAsCiAgICAgICAgICAgICAgICAgZnJvbSAvZ251L3N0b3Jl L2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jv b3N0L2lvc3RyZWFtcy9kZXRhaWwvaXNfZGVyZWZlcmVuY2VhYmxlLmhwcDoxMiwKICAgICAgICAg ICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXIt Ym9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9yZXNvbHZlLmhwcDoy NiwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6 cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9w dXNoLmhwcDoyNCwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1Nmcw bmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9zdHJlYW1z L2RldGFpbC9zdHJlYW1idWYvaW5kaXJlY3Rfc3RyZWFtYnVmLmhwcDozMSwKICAgICAgICAgICAg ICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9v c3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9zdHJlYW1zL3N0cmVhbV9idWZmZXIuaHBwOjIyLAog ICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRm MzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMvc3RyZWFtLmhwcDoy MSwKICAgICAgICAgICAgICAgICBmcm9tIC90bXAvZ3VpeC1idWlsZC1sZWRnZXItMy4xLjEuZHJ2 LTAvYnVpbGQvc3lzdGVtLmhoOjE5NiwKICAgICAgICAgICAgICAgICBmcm9tIC90bXAvZ3VpeC1i dWlsZC1sZWRnZXItMy4xLjEuZHJ2LTAvbGVkZ2VyLTMuMS4xL3NyYy9zdGF0cy5jYzozMjoKL2du dS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5j bHVkZS9ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3BlYy5ocHA6MTM6 ODQ6IG5vdGU6ICNwcmFnbWEgbWVzc2FnZTogTk9URTogVXNlIG9mIHRoaXMgaGVhZGVyICh0ZW1w bGF0ZV9hcml0eV9zcGVjLmhwcCkgaXMgZGVwcmVjYXRlZAogIyBwcmFnbWEgbWVzc2FnZSgiTk9U RTogVXNlIG9mIHRoaXMgaGVhZGVyICh0ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcCkgaXMgZGVwcmVj YXRlZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KSW4gZmlsZSBpbmNsdWRlZCBmcm9t IC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4w L2luY2x1ZGUvYm9vc3QvdHlwZV90cmFpdHMvZGV0YWlsL2Jvb2xfdHJhaXRfZGVmLmhwcDoyMTow LAogICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpw aGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lz X2RlcmVmZXJlbmNlYWJsZS5ocHA6MTIsCiAgICAgICAgICAgICAgICAgZnJvbSAvZ251L3N0b3Jl L2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jv b3N0L2lvc3RyZWFtcy9kZXRhaWwvcmVzb2x2ZS5ocHA6MjYsCiAgICAgICAgICAgICAgICAgZnJv bSAvZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAu MC9pbmNsdWRlL2Jvb3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaC5ocHA6MjQsCiAgICAgICAgICAg ICAgICAgZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJv b3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2luZGly ZWN0X3N0cmVhbWJ1Zi5ocHA6MzEsCiAgICAgICAgICAgICAgICAgZnJvbSAvZ251L3N0b3JlL2c3 MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0 L2lvc3RyZWFtcy9zdHJlYW1fYnVmZmVyLmhwcDoyMiwKICAgICAgICAgICAgICAgICBmcm9tIC9n bnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2lu Y2x1ZGUvYm9vc3QvaW9zdHJlYW1zL3N0cmVhbS5ocHA6MjEsCiAgICAgICAgICAgICAgICAgZnJv bSAvdG1wL2d1aXgtYnVpbGQtbGVkZ2VyLTMuMS4xLmRydi0wL2J1aWxkL3N5c3RlbS5oaDoxOTYs CiAgICAgICAgICAgICAgICAgZnJvbSAvdG1wL2d1aXgtYnVpbGQtbGVkZ2VyLTMuMS4xLmRydi0w L2xlZGdlci0zLjEuMS9zcmMvZ2VuZXJhdGUuY2M6MzI6Ci9nbnUvc3RvcmUvZzcwMTk1ZDI1Nmcw bmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvdHlwZV90cmFp dHMvZGV0YWlsL3RlbXBsYXRlX2FyaXR5X3NwZWMuaHBwOjEzOjg0OiBub3RlOiAjcHJhZ21hIG1l c3NhZ2U6IE5PVEU6IFVzZSBvZiB0aGlzIGhlYWRlciAodGVtcGxhdGVfYXJpdHlfc3BlYy5ocHAp IGlzIGRlcHJlY2F0ZWQKICMgcHJhZ21hIG1lc3NhZ2UoIk5PVEU6IFVzZSBvZiB0aGlzIGhlYWRl ciAodGVtcGxhdGVfYXJpdHlfc3BlYy5ocHApIGlzIGRlcHJlY2F0ZWQiKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBeCkluIGZpbGUgaW5jbHVkZWQgZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQy NTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L2lvc3Ry ZWFtcy9kZXRhaWwvaXNfZGVyZWZlcmVuY2VhYmxlLmhwcDoxMzowLAogICAgICAgICAgICAgICAg IGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0x LjYwLjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3Jlc29sdmUuaHBwOjI2LAogICAg ICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhk OXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMvZGV0YWlsL3B1c2guaHBw OjI0LAogICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVy NnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMvZGV0YWls L3N0cmVhbWJ1Zi9pbmRpcmVjdF9zdHJlYW1idWYuaHBwOjMxLAogICAgICAgICAgICAgICAgIGZy b20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYw LjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMvc3RyZWFtX2J1ZmZlci5ocHA6MjIsCiAgICAgICAg ICAgICAgICAgZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1y LWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L2lvc3RyZWFtcy9zdHJlYW0uaHBwOjIxLAogICAg ICAgICAgICAgICAgIGZyb20gL3RtcC9ndWl4LWJ1aWxkLWxlZGdlci0zLjEuMS5kcnYtMC9idWls ZC9zeXN0ZW0uaGg6MTk2LAogICAgICAgICAgICAgICAgIGZyb20gL3RtcC9ndWl4LWJ1aWxkLWxl ZGdlci0zLjEuMS5kcnYtMC9sZWRnZXItMy4xLjEvc3JjL3N0YXRzLmNjOjMyOgovZ251L3N0b3Jl L2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jv b3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcDoxMzo4NDogbm90 ZTogI3ByYWdtYSBtZXNzYWdlOiBOT1RFOiBVc2Ugb2YgdGhpcyBoZWFkZXIgKHRlbXBsYXRlX2Fy aXR5X3NwZWMuaHBwKSBpcyBkZXByZWNhdGVkCiAjIHByYWdtYSBtZXNzYWdlKCJOT1RFOiBVc2Ug b2YgdGhpcyBoZWFkZXIgKHRlbXBsYXRlX2FyaXR5X3NwZWMuaHBwKSBpcyBkZXByZWNhdGVkIikK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXgpJbiBmaWxlIGluY2x1ZGVkIGZyb20gL2dudS9z dG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVk ZS9ib29zdC9pb3N0cmVhbXMvZGV0YWlsL2lzX2RlcmVmZXJlbmNlYWJsZS5ocHA6MTM6MCwKICAg ICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4 ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9yZXNvbHZl LmhwcDoyNiwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1Nmcwbmxs cTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9zdHJlYW1zL2Rl dGFpbC9wdXNoLmhwcDoyNCwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1 ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9z dHJlYW1zL2RldGFpbC9zdHJlYW1idWYvaW5kaXJlY3Rfc3RyZWFtYnVmLmhwcDozMSwKICAgICAg ICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6 bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9zdHJlYW1zL3N0cmVhbV9idWZmZXIuaHBw OjIyLAogICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVy NnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9pb3N0cmVhbXMvc3RyZWFt LmhwcDoyMSwKICAgICAgICAgICAgICAgICBmcm9tIC90bXAvZ3VpeC1idWlsZC1sZWRnZXItMy4x LjEuZHJ2LTAvYnVpbGQvc3lzdGVtLmhoOjE5NiwKICAgICAgICAgICAgICAgICBmcm9tIC90bXAv Z3VpeC1idWlsZC1sZWRnZXItMy4xLjEuZHJ2LTAvbGVkZ2VyLTMuMS4xL3NyYy9nZW5lcmF0ZS5j YzozMjoKL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0x LjYwLjAvaW5jbHVkZS9ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwvdGVtcGxhdGVfYXJpdHlfc3Bl Yy5ocHA6MTM6ODQ6IG5vdGU6ICNwcmFnbWEgbWVzc2FnZTogTk9URTogVXNlIG9mIHRoaXMgaGVh ZGVyICh0ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcCkgaXMgZGVwcmVjYXRlZAogIyBwcmFnbWEgbWVz c2FnZSgiTk9URTogVXNlIG9mIHRoaXMgaGVhZGVyICh0ZW1wbGF0ZV9hcml0eV9zcGVjLmhwcCkg aXMgZGVwcmVjYXRlZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KSW4gZmlsZSBpbmNs dWRlZCBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9v c3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvaW9zdHJlYW1zL2RldGFpbC9pc19kZXJlZmVyZW5jZWFi bGUuaHBwOjEzOjAsCiAgICAgICAgICAgICAgICAgZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQyNTZn MG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L2lvc3RyZWFt cy9kZXRhaWwvcmVzb2x2ZS5ocHA6MjYsCiAgICAgICAgICAgICAgICAgZnJvbSAvZ251L3N0b3Jl L2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jv b3N0L2lvc3RyZWFtcy9kZXRhaWwvcHVzaC5ocHA6MjQsCiAgICAgICAgICAgICAgICAgZnJvbSAv Z251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9p bmNsdWRlL2Jvb3N0L2lvc3RyZWFtcy9kZXRhaWwvc3RyZWFtYnVmL2luZGlyZWN0X3N0cmVhbWJ1 Zi5ocHA6MzEsCiAgICAgICAgICAgICAgICAgZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5s bHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L2lvc3RyZWFtcy9z dHJlYW1fYnVmZmVyLmhwcDoyMiwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcw MTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3Qv aW9zdHJlYW1zL3N0cmVhbS5ocHA6MjEsCiAgICAgICAgICAgICAgICAgZnJvbSAvdG1wL2d1aXgt YnVpbGQtbGVkZ2VyLTMuMS4xLmRydi0wL2J1aWxkL3N5c3RlbS5oaDoxOTYsCiAgICAgICAgICAg ICAgICAgZnJvbSAvdG1wL2d1aXgtYnVpbGQtbGVkZ2VyLTMuMS4xLmRydi0wL2xlZGdlci0zLjEu MS9zcmMvY3N2LmNjOjMyOgovZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5 em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC90ZW1wbGF0 ZV9hcml0eV9zcGVjLmhwcDoxMzo4NDogbm90ZTogI3ByYWdtYSBtZXNzYWdlOiBOT1RFOiBVc2Ug b2YgdGhpcyBoZWFkZXIgKHRlbXBsYXRlX2FyaXR5X3NwZWMuaHBwKSBpcyBkZXByZWNhdGVkCiAj IHByYWdtYSBtZXNzYWdlKCJOT1RFOiBVc2Ugb2YgdGhpcyBoZWFkZXIgKHRlbXBsYXRlX2FyaXR5 X3NwZWMuaHBwKSBpcyBkZXByZWNhdGVkIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgpj Kys6IGludGVybmFsIGNvbXBpbGVyIGVycm9yOiBLaWxsZWQgKHByb2dyYW0gY2MxcGx1cykKUGxl YXNlIHN1Ym1pdCBhIGZ1bGwgYnVnIHJlcG9ydCwKd2l0aCBwcmVwcm9jZXNzZWQgc291cmNlIGlm IGFwcHJvcHJpYXRlLgpTZWUgPGh0dHA6Ly9nY2MuZ251Lm9yZy9idWdzLmh0bWw+IGZvciBpbnN0 cnVjdGlvbnMuCnNyYy9DTWFrZUZpbGVzL2xpYmxlZGdlci5kaXIvYnVpbGQubWFrZToxMTM6IHJl Y2lwZSBmb3IgdGFyZ2V0ICdzcmMvQ01ha2VGaWxlcy9saWJsZWRnZXIuZGlyL2Nzdi5jYy5vJyBm YWlsZWQKbWFrZVsyXTogKioqIFtzcmMvQ01ha2VGaWxlcy9saWJsZWRnZXIuZGlyL2Nzdi5jYy5v XSBFcnJvciA0Cm1ha2VbMl06ICoqKiBXYWl0aW5nIGZvciB1bmZpbmlzaGVkIGpvYnMuLi4uCklu IGZpbGUgaW5jbHVkZWQgZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYz OGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHA6MTU6 MCwKICAgICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6 cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvcHl0aG9uL2RldGFpbC9kZWZf aGVscGVyLmhwcDo5LAogICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2 ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9weXRob24v Y2xhc3MuaHBwOjI5LAogICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2 ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9weXRob24u aHBwOjE4LAogICAgICAgICAgICAgICAgIGZyb20gL3RtcC9ndWl4LWJ1aWxkLWxlZGdlci0zLjEu MS5kcnYtMC9idWlsZC9zeXN0ZW0uaGg6MjQ2LAogICAgICAgICAgICAgICAgIGZyb20gL3RtcC9n dWl4LWJ1aWxkLWxlZGdlci0zLjEuMS5kcnYtMC9sZWRnZXItMy4xLjEvc3JjL2dlbmVyYXRlLmNj OjMyOgovZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEu NjAuMC9pbmNsdWRlL2Jvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwOjE3OjcxOiBu b3RlOiAjcHJhZ21hIG1lc3NhZ2U6IE5PVEU6IFVzZSBvZiB0aGlzIGhlYWRlciAoaWNlX29yLmhw cCkgaXMgZGVwcmVjYXRlZAogIyBwcmFnbWEgbWVzc2FnZSgiTk9URTogVXNlIG9mIHRoaXMgaGVh ZGVyIChpY2Vfb3IuaHBwKSBpcyBkZXByZWNhdGVkIikKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCkluIGZpbGUg aW5jbHVkZWQgZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1y LWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHA6MTU6MCwKICAg ICAgICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4 ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvcHl0aG9uL2RldGFpbC9kZWZfaGVscGVy LmhwcDo5LAogICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxx NzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9weXRob24vY2xhc3Mu aHBwOjI5LAogICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxx NzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9weXRob24uaHBwOjE4 LAogICAgICAgICAgICAgICAgIGZyb20gL3RtcC9ndWl4LWJ1aWxkLWxlZGdlci0zLjEuMS5kcnYt MC9idWlsZC9zeXN0ZW0uaGg6MjQ2LAogICAgICAgICAgICAgICAgIGZyb20gL3RtcC9ndWl4LWJ1 aWxkLWxlZGdlci0zLjEuMS5kcnYtMC9sZWRnZXItMy4xLjEvc3JjL3N0YXRzLmNjOjMyOgovZ251 L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNs dWRlL2Jvb3N0L3R5cGVfdHJhaXRzL2RldGFpbC9pY2Vfb3IuaHBwOjE3OjcxOiBub3RlOiAjcHJh Z21hIG1lc3NhZ2U6IE5PVEU6IFVzZSBvZiB0aGlzIGhlYWRlciAoaWNlX29yLmhwcCkgaXMgZGVw cmVjYXRlZAogIyBwcmFnbWEgbWVzc2FnZSgiTk9URTogVXNlIG9mIHRoaXMgaGVhZGVyIChpY2Vf b3IuaHBwKSBpcyBkZXByZWNhdGVkIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBeCkluIGZpbGUgaW5jbHVkZWQg ZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEu NjAuMC9pbmNsdWRlL2Jvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHA6MTY6MCwKICAgICAgICAgICAg ICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9v c3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvcHl0aG9uL2RldGFpbC9kZWZfaGVscGVyLmhwcDo5LAog ICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRm MzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9weXRob24vY2xhc3MuaHBwOjI5LAog ICAgICAgICAgICAgICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRm MzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC9weXRob24uaHBwOjE4LAogICAgICAg ICAgICAgICAgIGZyb20gL3RtcC9ndWl4LWJ1aWxkLWxlZGdlci0zLjEuMS5kcnYtMC9idWlsZC9z eXN0ZW0uaGg6MjQ2LAogICAgICAgICAgICAgICAgIGZyb20gL3RtcC9ndWl4LWJ1aWxkLWxlZGdl ci0zLjEuMS5kcnYtMC9sZWRnZXItMy4xLjEvc3JjL3N0YXRzLmNjOjMyOgovZ251L3N0b3JlL2c3 MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0 L3R5cGVfdHJhaXRzL2RldGFpbC9pY2VfYW5kLmhwcDoxODo3Mjogbm90ZTogI3ByYWdtYSBtZXNz YWdlOiBOT1RFOiBVc2Ugb2YgdGhpcyBoZWFkZXIgKGljZV9hbmQuaHBwKSBpcyBkZXByZWNhdGVk CiAjIHByYWdtYSBtZXNzYWdlKCJOT1RFOiBVc2Ugb2YgdGhpcyBoZWFkZXIgKGljZV9hbmQuaHBw KSBpcyBkZXByZWNhdGVkIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgpJbiBmaWxlIGluY2x1ZGVkIGZyb20g L2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAv aW5jbHVkZS9ib29zdC90eXBlX3RyYWl0cy9pY2UuaHBwOjE2OjAsCiAgICAgICAgICAgICAgICAg ZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEu NjAuMC9pbmNsdWRlL2Jvb3N0L3B5dGhvbi9kZXRhaWwvZGVmX2hlbHBlci5ocHA6OSwKICAgICAg ICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6 bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvcHl0aG9uL2NsYXNzLmhwcDoyOSwKICAgICAg ICAgICAgICAgICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6 bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvcHl0aG9uLmhwcDoxOCwKICAgICAgICAgICAg ICAgICBmcm9tIC90bXAvZ3VpeC1idWlsZC1sZWRnZXItMy4xLjEuZHJ2LTAvYnVpbGQvc3lzdGVt LmhoOjI0NiwKICAgICAgICAgICAgICAgICBmcm9tIC90bXAvZ3VpeC1idWlsZC1sZWRnZXItMy4x LjEuZHJ2LTAvbGVkZ2VyLTMuMS4xL3NyYy9nZW5lcmF0ZS5jYzozMjoKL2dudS9zdG9yZS9nNzAx OTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC90 eXBlX3RyYWl0cy9kZXRhaWwvaWNlX2FuZC5ocHA6MTg6NzI6IG5vdGU6ICNwcmFnbWEgbWVzc2Fn ZTogTk9URTogVXNlIG9mIHRoaXMgaGVhZGVyIChpY2VfYW5kLmhwcCkgaXMgZGVwcmVjYXRlZAog IyBwcmFnbWEgbWVzc2FnZSgiTk9URTogVXNlIG9mIHRoaXMgaGVhZGVyIChpY2VfYW5kLmhwcCkg aXMgZGVwcmVjYXRlZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF4KSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC9n bnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2lu Y2x1ZGUvYm9vc3QvdHlwZV90cmFpdHMvaWNlLmhwcDoxNzowLAogICAgICAgICAgICAgICAgIGZy b20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYw LjAvaW5jbHVkZS9ib29zdC9weXRob24vZGV0YWlsL2RlZl9oZWxwZXIuaHBwOjksCiAgICAgICAg ICAgICAgICAgZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1y LWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L3B5dGhvbi9jbGFzcy5ocHA6MjksCiAgICAgICAg ICAgICAgICAgZnJvbSAvZ251L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1y LWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L3B5dGhvbi5ocHA6MTgsCiAgICAgICAgICAgICAg ICAgZnJvbSAvdG1wL2d1aXgtYnVpbGQtbGVkZ2VyLTMuMS4xLmRydi0wL2J1aWxkL3N5c3RlbS5o aDoyNDYsCiAgICAgICAgICAgICAgICAgZnJvbSAvdG1wL2d1aXgtYnVpbGQtbGVkZ2VyLTMuMS4x LmRydi0wL2xlZGdlci0zLjEuMS9zcmMvc3RhdHMuY2M6MzI6Ci9nbnUvc3RvcmUvZzcwMTk1ZDI1 NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2luY2x1ZGUvYm9vc3QvdHlwZV90 cmFpdHMvZGV0YWlsL2ljZV9ub3QuaHBwOjE3OjcyOiBub3RlOiAjcHJhZ21hIG1lc3NhZ2U6IE5P VEU6IFVzZSBvZiB0aGlzIGhlYWRlciAoaWNlX25vdC5ocHApIGlzIGRlcHJlY2F0ZWQKICMgcHJh Z21hIG1lc3NhZ2UoIk5PVEU6IFVzZSBvZiB0aGlzIGhlYWRlciAoaWNlX25vdC5ocHApIGlzIGRl cHJlY2F0ZWQiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBeCkluIGZpbGUgaW5jbHVkZWQgZnJvbSAvZ251L3N0 b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRl L2Jvb3N0L3R5cGVfdHJhaXRzL2ljZS5ocHA6MTc6MCwKICAgICAgICAgICAgICAgICBmcm9tIC9n bnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4wL2lu Y2x1ZGUvYm9vc3QvcHl0aG9uL2RldGFpbC9kZWZfaGVscGVyLmhwcDo5LAogICAgICAgICAgICAg ICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29z dC0xLjYwLjAvaW5jbHVkZS9ib29zdC9weXRob24vY2xhc3MuaHBwOjI5LAogICAgICAgICAgICAg ICAgIGZyb20gL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29z dC0xLjYwLjAvaW5jbHVkZS9ib29zdC9weXRob24uaHBwOjE4LAogICAgICAgICAgICAgICAgIGZy b20gL3RtcC9ndWl4LWJ1aWxkLWxlZGdlci0zLjEuMS5kcnYtMC9idWlsZC9zeXN0ZW0uaGg6MjQ2 LAogICAgICAgICAgICAgICAgIGZyb20gL3RtcC9ndWl4LWJ1aWxkLWxlZGdlci0zLjEuMS5kcnYt MC9sZWRnZXItMy4xLjEvc3JjL2dlbmVyYXRlLmNjOjMyOgovZ251L3N0b3JlL2c3MDE5NWQyNTZn MG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jvb3N0L3R5cGVfdHJh aXRzL2RldGFpbC9pY2Vfbm90LmhwcDoxNzo3Mjogbm90ZTogI3ByYWdtYSBtZXNzYWdlOiBOT1RF OiBVc2Ugb2YgdGhpcyBoZWFkZXIgKGljZV9ub3QuaHBwKSBpcyBkZXByZWNhdGVkCiAjIHByYWdt YSBtZXNzYWdlKCJOT1RFOiBVc2Ugb2YgdGhpcyBoZWFkZXIgKGljZV9ub3QuaHBwKSBpcyBkZXBy ZWNhdGVkIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXgpJbiBmaWxlIGluY2x1ZGVkIGZyb20gL2dudS9zdG9y ZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9i b29zdC90eXBlX3RyYWl0cy9pY2UuaHBwOjE4OjAsCiAgICAgICAgICAgICAgICAgZnJvbSAvZ251 L3N0b3JlL2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNs dWRlL2Jvb3N0L3B5dGhvbi9kZXRhaWwvZGVmX2hlbHBlci5ocHA6OSwKICAgICAgICAgICAgICAg ICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3Qt MS42MC4wL2luY2x1ZGUvYm9vc3QvcHl0aG9uL2NsYXNzLmhwcDoyOSwKICAgICAgICAgICAgICAg ICBmcm9tIC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3Qt MS42MC4wL2luY2x1ZGUvYm9vc3QvcHl0aG9uLmhwcDoxOCwKICAgICAgICAgICAgICAgICBmcm9t IC90bXAvZ3VpeC1idWlsZC1sZWRnZXItMy4xLjEuZHJ2LTAvYnVpbGQvc3lzdGVtLmhoOjI0NiwK ICAgICAgICAgICAgICAgICBmcm9tIC90bXAvZ3VpeC1idWlsZC1sZWRnZXItMy4xLjEuZHJ2LTAv bGVkZ2VyLTMuMS4xL3NyYy9nZW5lcmF0ZS5jYzozMjoKL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBu bGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC90eXBlX3RyYWl0 cy9kZXRhaWwvaWNlX2VxLmhwcDoxNzo3MTogbm90ZTogI3ByYWdtYSBtZXNzYWdlOiBOT1RFOiBV c2Ugb2YgdGhpcyBoZWFkZXIgKGljZV9lcS5ocHApIGlzIGRlcHJlY2F0ZWQKICMgcHJhZ21hIG1l c3NhZ2UoIk5PVEU6IFVzZSBvZiB0aGlzIGhlYWRlciAoaWNlX2VxLmhwcCkgaXMgZGVwcmVjYXRl ZCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXgpJbiBmaWxlIGluY2x1ZGVkIGZyb20gL2dudS9zdG9yZS9nNzAx OTVkMjU2ZzBubGxxNzVyNnpwaGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC90 eXBlX3RyYWl0cy9pY2UuaHBwOjE4OjAsCiAgICAgICAgICAgICAgICAgZnJvbSAvZ251L3N0b3Jl L2c3MDE5NWQyNTZnMG5sbHE3NXI2enBoZGYzOGQ5em1yLWJvb3N0LTEuNjAuMC9pbmNsdWRlL2Jv b3N0L3B5dGhvbi9kZXRhaWwvZGVmX2hlbHBlci5ocHA6OSwKICAgICAgICAgICAgICAgICBmcm9t IC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4w L2luY2x1ZGUvYm9vc3QvcHl0aG9uL2NsYXNzLmhwcDoyOSwKICAgICAgICAgICAgICAgICBmcm9t IC9nbnUvc3RvcmUvZzcwMTk1ZDI1NmcwbmxscTc1cjZ6cGhkZjM4ZDl6bXItYm9vc3QtMS42MC4w L2luY2x1ZGUvYm9vc3QvcHl0aG9uLmhwcDoxOCwKICAgICAgICAgICAgICAgICBmcm9tIC90bXAv Z3VpeC1idWlsZC1sZWRnZXItMy4xLjEuZHJ2LTAvYnVpbGQvc3lzdGVtLmhoOjI0NiwKICAgICAg ICAgICAgICAgICBmcm9tIC90bXAvZ3VpeC1idWlsZC1sZWRnZXItMy4xLjEuZHJ2LTAvbGVkZ2Vy LTMuMS4xL3NyYy9zdGF0cy5jYzozMjoKL2dudS9zdG9yZS9nNzAxOTVkMjU2ZzBubGxxNzVyNnpw aGRmMzhkOXptci1ib29zdC0xLjYwLjAvaW5jbHVkZS9ib29zdC90eXBlX3RyYWl0cy9kZXRhaWwv aWNlX2VxLmhwcDoxNzo3MTogbm90ZTogI3ByYWdtYSBtZXNzYWdlOiBOT1RFOiBVc2Ugb2YgdGhp cyBoZWFkZXIgKGljZV9lcS5ocHApIGlzIGRlcHJlY2F0ZWQKICMgcHJhZ21hIG1lc3NhZ2UoIk5P VEU6IFVzZSBvZiB0aGlzIGhlYWRlciAoaWNlX2VxLmhwcCkgaXMgZGVwcmVjYXRlZCIpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXgptYWtlWzJdOiBMZWF2aW5nIGRpcmVjdG9yeSAnL3RtcC9ndWl4LWJ1aWxkLWxl ZGdlci0zLjEuMS5kcnYtMC9idWlsZCcKQ01ha2VGaWxlcy9NYWtlZmlsZTI6MTI3OiByZWNpcGUg Zm9yIHRhcmdldCAnc3JjL0NNYWtlRmlsZXMvbGlibGVkZ2VyLmRpci9hbGwnIGZhaWxlZAptYWtl WzFdOiAqKiogW3NyYy9DTWFrZUZpbGVzL2xpYmxlZGdlci5kaXIvYWxsXSBFcnJvciAyCm1ha2Vb MV06IExlYXZpbmcgZGlyZWN0b3J5ICcvdG1wL2d1aXgtYnVpbGQtbGVkZ2VyLTMuMS4xLmRydi0w L2J1aWxkJwpNYWtlZmlsZToxNjM6IHJlY2lwZSBmb3IgdGFyZ2V0ICdhbGwnIGZhaWxlZAptYWtl OiAqKiogW2FsbF0gRXJyb3IgMgpwaGFzZSBgYnVpbGQnIGZhaWxlZCBhZnRlciAyOS40IHNlY29u ZHMKYnVpbGRlciBmb3IgYC9nbnUvc3RvcmUvcDI0N3dqMnkydmMxc21pajlmMXhtdnkxOGE4cWxu a3EtbGVkZ2VyLTMuMS4xLmRydicgZmFpbGVkIHdpdGggZXhpdCBjb2RlIDEKQCBidWlsZC1mYWls ZWQgL2dudS9zdG9yZS9wMjQ3d2oyeTJ2YzFzbWlqOWYxeG12eTE4YThxbG5rcS1sZWRnZXItMy4x LjEuZHJ2IC0gMSBidWlsZGVyIGZvciBgL2dudS9zdG9yZS9wMjQ3d2oyeTJ2YzFzbWlqOWYxeG12 eTE4YThxbG5rcS1sZWRnZXItMy4xLjEuZHJ2JyBmYWlsZWQgd2l0aCBleGl0IGNvZGUgMQpndWl4 IGJ1aWxkOiBlcnJvcjogYnVpbGQgZmFpbGVkOiBidWlsZCBvZiBgL2dudS9zdG9yZS9wMjQ3d2oy eTJ2YzFzbWlqOWYxeG12eTE4YThxbG5rcS1sZWRnZXItMy4xLjEuZHJ2JyBmYWlsZWQ= --=-=-=--