From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/8941 Path: news.gmane.org!not-for-mail From: Petr Hosek Newsgroups: gmane.linux.lib.musl.general Subject: Re: Support for out-of-tree build Date: Mon, 30 Nov 2015 01:25:24 +0000 Message-ID: References: <20151117220141.GD3818@brightrain.aerifal.cx> <20151117230606.GJ18372@port70.net> <20151117232711.GG3818@brightrain.aerifal.cx> <20151117234330.GH3818@brightrain.aerifal.cx> <20151118001955.GI3818@brightrain.aerifal.cx> <20151118214452.GQ3818@brightrain.aerifal.cx> <20151120040955.GV3818@brightrain.aerifal.cx> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=001a114ddb12f08f490525b7ea4b X-Trace: ger.gmane.org 1448846762 26230 80.91.229.3 (30 Nov 2015 01:26:02 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 30 Nov 2015 01:26:02 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-8954-gllmg-musl=m.gmane.org@lists.openwall.com Mon Nov 30 02:25:46 2015 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1a3DDs-0002h7-U0 for gllmg-musl@m.gmane.org; Mon, 30 Nov 2015 02:25:45 +0100 Original-Received: (qmail 15888 invoked by uid 550); 30 Nov 2015 01:25:47 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 15866 invoked from network); 30 Nov 2015 01:25:46 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :content-type; bh=UAu4XkDI1utVhoaZSHYUpS+KG6TEpbfIq2382I0zZIg=; b=NcY+8dZqeDYX8sVapmKqxr224DU6qyUI3j8Olj/yWEXfAxcgDU54AFqQ1tqgNW6/mP 5mZFqw28+Pgd2H3pP7LZiy7LLWj4V+Lp2kaW5LWNjUv/fYwlgFRgE9QfA2CNDzusiNM6 DhYI4szbn7MBV+FRpDZrJTh9REmEjMXDnVd8Q= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:content-type; bh=UAu4XkDI1utVhoaZSHYUpS+KG6TEpbfIq2382I0zZIg=; b=QkI9ODfXlnUqWtAxEbZQS+8VWowAbyHU6mFM5TFYp2kkDPHwGIP/zhU/SbCPEyLYXL /nvLvMqLBi2wn1sjXLxUfr5fvtCyKS1/Ze/8xwjM7/UyaTBohXmunpd76LJprmApAr7K ptTgLyd2OWoGDyopRMEX7Jy1FBjEQbsakTOCRFFl2bUlnITaVT2rAb/yXw32kO/z9aRj 1iyKdhk3Ja1bUluwZ+NcJoJRS4cB1ujV33ZqtgH9ceQp/8VTcjG53SigDVt9iwjM0DY+ 9LcrWlqRYu5Qzcce5w2+P1dbqhIarX6yN/ue3RMhzuDEmnN7mpV8GSTgTZf7GQTbPJjm sOGA== X-Gm-Message-State: ALoCoQlNnsWqaGeBH2VDEfLRhQLuycNYyc0a9K9A0Jh468hnUjS1wNdhMZzdoah4b4EHeLEZPVXA X-Received: by 10.129.108.195 with SMTP id h186mr50894268ywc.75.1448846734404; Sun, 29 Nov 2015 17:25:34 -0800 (PST) In-Reply-To: <20151120040955.GV3818@brightrain.aerifal.cx> Xref: news.gmane.org gmane.linux.lib.musl.general:8941 Archived-At: --001a114ddb12f08f490525b7ea4b Content-Type: multipart/alternative; boundary=001a114ddb12f08f450525b7ea49 --001a114ddb12f08f450525b7ea49 Content-Type: text/plain; charset=UTF-8 I'm sorry about the delay, I've been away last week. I've incorporated all your code review comments. However, I haven't replaced the use of Makefile symlink with make -C $(srcdir) as discussed on IRC since it's not clear whether that's the way we want to go. On Thu, Nov 19, 2015 at 8:10 PM Rich Felker wrote: > Let's remove objdir entirely and just use obj/. > Done. > Not important at all, but REPLACED_OBJS might be a better name to > signify to people reading the makefile what this is about. > Renamed. > It looks like you're missing mkdir rules for everything but $(SRC_DIRS). > Those are the only directories which should be needed. > Removing the bits symlink is ok, but we need to preserve the logic > that prevents trying to build without ARCH set. Perhaps something > like: > > ifeq ($(ARCH),) > $(error Please run configure or set ARCH in config.mak before running make) > endif > > just after the inclusion of config.mak. > Done. > I suppose this comment was meant to be removed? > Yes, removed. > Not new in your patch, but I wonder if using $$(cat $<) would make > more sense than $(shell cat $<) -- does the latter risk getting > evaluated even when the rule isn't being run? > That seem to work fine. > > -lib/%.o: crt/%.o > > +lib/%.o: $(objdir)/crt/%.o > > cp $< $@ > > I don't see how this gets arch versions of crti.o/crtn.o. I think you > must be producing the dummy ones from the empty .c files, which won't > work. Actually once this is all done the dummy .c files there can > probably be removed, or we could remove them right away to eliminate > the need for another filter-out here (but I don't think that's really > needed anyway since it's a small fixed set of files we can hard-code). > That was a mistake. I've added explicit rules for both crti.o and crtn.o. > BTW that made me realize one semantic change in how the new build > system treats arch files: src/*/$(ARCH)/*.s (and .sub and whatever > other types we add) will get used now even if there's no .c file by > the same name in the parent directory. This actually looks to be > really nice -- we can eliminate dummy .c files that are empty and only > have them when the generic implementation works for some/most archs. > We can also move the arch/$(ARCH)/src/* files to appropriate > src/*/$(ARCH) locations based on what code they go with. > True, do you want me to remove all these files in the same or a separate patch? > > +test -f Makefile || ln -sf $srcdir/Makefile . > > Is there a reason you do it this way rather than checking for > srcdir=.? The reason I ask is that existence of a stray makefile > that's not a symlink to the musl makefile should probably be an error > here rather than silently ignored. But maybe there are more things to > consider.. > There is no particular reason, failing in case of existing Makefile sounds like a better solution. --001a114ddb12f08f450525b7ea49 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I'm sorry about the de= lay, I've been away last week. I've incorporated all your code revi= ew comments. However, I haven't replaced the use of Makefile symlink wi= th make -C $(srcdir) as discussed on IRC since it's not clear whether t= hat's the way we want to go.

On Thu, Nov 19, 2015 at 8:10 PM Rich Felker <dalias@libc.org> wrote:
=C2=A0
Not important at all, but REPLACED_OBJS might be a better name to
signify to people reading the makefile what this is about.
=

Renamed.
=C2=A0
It looks like you're missing mkdir rules for everything but $(SRC_DIRS)= .

Those are the only directories which should be needed.
=C2=A0
Removing the bits symlink is ok, but we need to preserve the logic
that prevents trying to build without ARCH set. Perhaps something
like:

ifeq ($(ARCH),)
$(error Please run configure or set ARCH in config.mak before running make)=
endif

just after the inclusion of config.mak.

Done.
<= /div>
=C2=A0
I suppose this comment was meant to be removed?

Yes, remov= ed.
=C2= =A0
Not new in your patch, but I wonder if using $$(cat $<) would make
more sense than $(shell cat $<) -- does the latter risk getting
evaluated even when the rule isn't being run?

=
That see= m to work fine.
=C2=A0
> -lib/%.o: crt/%.o
> +lib/%.o: $(objdir)/crt/%.o
>=C2=A0 =C2=A0 =C2=A0 =C2=A0cp $< $@

I don't see how this gets arch versions of crti.o/crtn.o. I think you must be producing the dummy ones from the empty .c files, which won't work. Actually once this is all done the dummy .c files there can
probably be removed, or we could remove them right away to eliminate
the need for another filter-out here (but I don't think that's real= ly
needed anyway since it's a small fixed set of files we can hard-code).<= br>

That was a mistake. I've added expl= icit rules for both crti.o and crtn.o.
=C2=A0
BTW that made me realize one semantic change in how the new build
system treats arch files: src/*/$(ARCH)/*.s (and .sub and whatever
other types we add) will get used now even if there's no .c file by
the same name in the parent directory. This actually looks to be
really nice -- we can eliminate dummy .c files that are empty and only
have them when the generic implementation works for some/most archs.
We can also move the arch/$(ARCH)/src/* files to appropriate
src/*/$(ARCH) locations based on what code they go with.

True, do you want me to remove all these files in the sam= e or a separate patch?
=C2=A0
> +test -f Makefile || ln -sf $srcdir/Makefile .

Is there a reason you do it this way rather than checking for
srcdir=3D.? The reason I ask is that existence of a stray makefile
that's not a symlink to the musl makefile should probably be an error here rather than silently ignored. But maybe there are more things to
consider..

There is no particular reaso= n, failing in case of existing Makefile sounds like a better solution.
--001a114ddb12f08f450525b7ea49-- --001a114ddb12f08f490525b7ea4b Content-Type: text/x-patch; charset=US-ASCII; name="support-out-of-tree-build.patch" Content-Disposition: attachment; filename="support-out-of-tree-build.patch" Content-Transfer-Encoding: base64 Content-ID: <15155fe7510d265dd521> X-Attachment-Id: 15155fe7510d265dd521 RnJvbSBiYmQwOTNjYTI1YjI0NGZlZjI4OGM0YTBjNGVjMjI2NWZhZTFkZTQ1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBQZXRyIEhvc2VrIDxwaG9zZWtAY2hyb21pdW0ub3JnPgpEYXRl OiBXZWQsIDE4IE5vdiAyMDE1IDEyOjA3OjMyIC0wODAwClN1YmplY3Q6IFtQQVRDSF0gc3VwcG9y dCBvdXQtb2YtdHJlZSBidWlsZAoKdGhpcyBjaGFuZ2UgYWRkIHN1cHBvcnQgZm9yIGJ1aWxkaW5n IG11c2wgb3V0c2lkZSBvZiB0aGUgc291cmNlCnRyZWUuIHRoZSBpbXBsZW1lbnRhdGlvbiBpcyBz aW1pbGFyIHRvIGF1dG90b29scyB3aGVyZSBydW5uaW5nCmNvbmZpZ3VyZSBpbiBhIGRpZmZlcmVu dCBmb2xkZXIgY3JlYXRlcyBjb25maWcubWFrIGluIHRoZSBjdXJyZW50CndvcmtpbmcgZGlyZWN0 b3J5IGFuZCBzeW1saW5rcyB0aGUgbWFrZWZpbGUsIHdoaWNoIGNvbnRhaW5zIHRoZQpsb2dpYyBm b3IgY3JlYXRpbmcgYWxsIG5lY2Vzc2FyeSBkaXJlY3RvcmllcyBhbmQgcmVzb2x2aW5nIHBhdGhz CnJlbGF0aXZlIHRvIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgoKdG8gc3VwcG9ydCBib3RoIGluLXRy ZWUgYW5kIG91dC1vZi10cmVlIGJ1aWxkcyB3aXRoIGltcGxpY2l0IG1ha2UKcnVsZXMsIGFsbCBv YmplY3QgZmlsZXMgYXJlIG5vdyBwbGFjZWQgaW50byBhIHNlcGFyYXRlIGRpcmVjdG9yeS4KLS0t CiAuZ2l0aWdub3JlIHwgICAxICsKIE1ha2VmaWxlICAgfCAxMjEgKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogY29uZmlndXJlICB8 ICAyNSArKysrKysrKysrKy0tCiAzIGZpbGVzIGNoYW5nZWQsIDk4IGluc2VydGlvbnMoKyksIDQ5 IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4 IGM1ZDVjNDYuLjM2ZGM1ZjkgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9y ZQpAQCAtMyw2ICszLDcgQEAKICouYQogKi5zbwogKi5zby4xCitvYmoKIGFyY2gvKi9iaXRzL2Fs bHR5cGVzLmgKIGNvbmZpZy5tYWsKIGluY2x1ZGUvYml0cwpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUg Yi9NYWtlZmlsZQppbmRleCBkZjIwZjk0Li5iYmY2Nzk0IDEwMDY0NAotLS0gYS9NYWtlZmlsZQor KysgYi9NYWtlZmlsZQpAQCAtOCw2ICs4LDcgQEAKICMgRG8gbm90IG1ha2UgY2hhbmdlcyBoZXJl LgogIwogCitzcmNkaXIgPSAuCiBleGVjX3ByZWZpeCA9IC91c3IvbG9jYWwKIGJpbmRpciA9ICQo ZXhlY19wcmVmaXgpL2JpbgogCkBAIC0xNiwxMiArMTcsMTYgQEAgaW5jbHVkZWRpciA9ICQocHJl Zml4KS9pbmNsdWRlCiBsaWJkaXIgPSAkKHByZWZpeCkvbGliCiBzeXNsaWJkaXIgPSAvbGliCiAK LVNSQ1MgPSAkKHNvcnQgJCh3aWxkY2FyZCBzcmMvKi8qLmMgYXJjaC8kKEFSQ0gpL3NyYy8qLmMp KQotT0JKUyA9ICQoU1JDUzouYz0ubykKK0JBU0VfU1JDUyA9ICQoc29ydCAkKHdpbGRjYXJkICQo c3JjZGlyKS9zcmMvKi8qLmMgJChzcmNkaXIpL2FyY2gvJChBUkNIKS9zcmMvKi5jKSkKK0JBU0Vf T0JKUyA9ICQocGF0c3Vic3QgJChzcmNkaXIpLyUuYywlLm8sJChCQVNFX1NSQ1MpKQorQVJDSF9T UkNTID0gJCh3aWxkY2FyZCAkKHNyY2Rpcikvc3JjLyovJChBUkNIKS8qLnMgJChzcmNkaXIpL3Ny Yy8qLyQoQVJDSCkkKEFTTVNVQkFSQ0gpLyouc3ViKQorQVJDSF9PQkpTID0gJChwYXRzdWJzdCAk KHNyY2RpcikvJS5zdWIsJS5vLCQocGF0c3Vic3QgJChzcmNkaXIpLyUucywlLm8sJChBUkNIX1NS Q1MpKSkKK1JFUExBQ0VEX09CSlMgPSAkKHBhdHN1YnN0ICQoc3JjZGlyKS8lLCUsJChzdWJzdCAv JChBUkNIKSQoQVNNU1VCQVJDSCkvLC8sJChzdWJzdCAvJChBUkNIKS8sLywkKHBhdHN1YnN0ICQo c3JjZGlyKS8lLCUsJChBUkNIX09CSlMpKSkpKQorT0JKUyA9ICQoYWRkcHJlZml4IG9iai8sICQo ZmlsdGVyLW91dCAkKFJFUExBQ0VEX09CSlMpLCAkKEJBU0VfT0JKUykpICQoQVJDSF9PQkpTKSAk KFNVQl9PQkpTKSkKIExPQkpTID0gJChPQkpTOi5vPS5sbykKLUdFTkggPSBpbmNsdWRlL2JpdHMv YWxsdHlwZXMuaAotR0VOSF9JTlQgPSBzcmMvaW50ZXJuYWwvdmVyc2lvbi5oCi1JTVBIID0gc3Jj L2ludGVybmFsL3N0ZGlvX2ltcGwuaCBzcmMvaW50ZXJuYWwvcHRocmVhZF9pbXBsLmggc3JjL2lu dGVybmFsL2xpYmMuaAorR0VOSCA9IG9iai9pbmNsdWRlL2JpdHMvYWxsdHlwZXMuaAorR0VOSF9J TlQgPSBvYmovc3JjL2ludGVybmFsL3ZlcnNpb24uaAorSU1QSCA9ICQoYWRkcHJlZml4ICQoc3Jj ZGlyKS8sIHNyYy9pbnRlcm5hbC9zdGRpb19pbXBsLmggc3JjL2ludGVybmFsL3B0aHJlYWRfaW1w bC5oIHNyYy9pbnRlcm5hbC9saWJjLmgpCiAKIExERkxBR1MgPQogTERGTEFHU19BVVRPID0KQEAg LTMyLDcgKzM3LDcgQEAgQ0ZMQUdTX0FVVE8gPSAtT3MgLXBpcGUKIENGTEFHU19DOTlGU0UgPSAt c3RkPWM5OSAtZmZyZWVzdGFuZGluZyAtbm9zdGRpbmMgCiAKIENGTEFHU19BTEwgPSAkKENGTEFH U19DOTlGU0UpCi1DRkxBR1NfQUxMICs9IC1EX1hPUEVOX1NPVVJDRT03MDAgLUkuL2FyY2gvJChB UkNIKSAtSS4vc3JjL2ludGVybmFsIC1JLi9pbmNsdWRlCitDRkxBR1NfQUxMICs9IC1EX1hPUEVO X1NPVVJDRT03MDAgLUkkKHNyY2RpcikvYXJjaC8kKEFSQ0gpIC1Jb2JqL3NyYy9pbnRlcm5hbCAt SSQoc3JjZGlyKS9zcmMvaW50ZXJuYWwgLUlvYmovaW5jbHVkZSAtSSQoc3JjZGlyKS9pbmNsdWRl CiBDRkxBR1NfQUxMICs9ICQoQ1BQRkxBR1MpICQoQ0ZMQUdTX0FVVE8pICQoQ0ZMQUdTKQogQ0ZM QUdTX0FMTF9TVEFUSUMgPSAkKENGTEFHU19BTEwpCiBDRkxBR1NfQUxMX1NIQVJFRCA9ICQoQ0ZM QUdTX0FMTCkgLWZQSUMgLURTSEFSRUQKQEAgLTQxLDEwICs0NiwxMSBAQCBMREZMQUdTX0FMTCA9 ICQoTERGTEFHU19BVVRPKSAkKExERkxBR1MpCiAKIEFSICAgICAgPSAkKENST1NTX0NPTVBJTEUp YXIKIFJBTkxJQiAgPSAkKENST1NTX0NPTVBJTEUpcmFubGliCi1JTlNUQUxMID0gLi90b29scy9p bnN0YWxsLnNoCitJTlNUQUxMID0gJChzcmNkaXIpL3Rvb2xzL2luc3RhbGwuc2gKIAotQVJDSF9J TkNMVURFUyA9ICQod2lsZGNhcmQgYXJjaC8kKEFSQ0gpL2JpdHMvKi5oKQotQUxMX0lOQ0xVREVT ID0gJChzb3J0ICQod2lsZGNhcmQgaW5jbHVkZS8qLmggaW5jbHVkZS8qLyouaCkgJChHRU5IKSAk KEFSQ0hfSU5DTFVERVM6YXJjaC8kKEFSQ0gpLyU9aW5jbHVkZS8lKSkKK0FSQ0hfSU5DTFVERVMg PSAkKHdpbGRjYXJkICQoc3JjZGlyKS9hcmNoLyQoQVJDSCkvYml0cy8qLmgpCitJTkNMVURFUyA9 ICQod2lsZGNhcmQgJChzcmNkaXIpL2luY2x1ZGUvKi5oICQoc3JjZGlyKS9pbmNsdWRlLyovKi5o KQorQUxMX0lOQ0xVREVTID0gJChzb3J0ICQoSU5DTFVERVM6JChzcmNkaXIpLyU9JSkgJChHRU5I Om9iai8lPSUpICQoQVJDSF9JTkNMVURFUzokKHNyY2RpcikvYXJjaC8kKEFSQ0gpLyU9aW5jbHVk ZS8lKSkKIAogRU1QVFlfTElCX05BTUVTID0gbSBydCBwdGhyZWFkIGNyeXB0IHV0aWwgeG5ldCBy ZXNvbHYgZGwKIEVNUFRZX0xJQlMgPSAkKEVNUFRZX0xJQl9OQU1FUzolPWxpYi9saWIlLmEpCkBA IC02MiwxMiArNjgsMjggQEAgTERTT19QQVRITkFNRSA9ICQoc3lzbGliZGlyKS9sZC1tdXNsLSQo QVJDSCkkKFNVQkFSQ0gpLnNvLjEKIAogLWluY2x1ZGUgY29uZmlnLm1hawogCitpZmVxICgkKEFS Q0gpLCkKKyQoZXJyb3IgUGxlYXNlIHNldCBBUkNIIGluIGNvbmZpZy5tYWsgYmVmb3JlIHJ1bm5p bmcgbWFrZS4pCitlbmRpZgorCiBhbGw6ICQoQUxMX0xJQlMpICQoQUxMX1RPT0xTKQogCiskKEFM TF9MSUJTKTogfCBsaWIvCiskKEFMTF9UT09MUyk6IHwgdG9vbHMvCiskKENSVF9MSUJTOmxpYi8l PW9iai9jcnQvJSk6IHwgb2JqL2NydC8gb2JqL2NydC8kKEFSQ0gpLworJChPQkpTKSAkKExPQkpT KTogfCAkKHNvcnQgJChkaXIgJChPQkpTKSkpCiskKEdFTkgpOiB8IG9iai9pbmNsdWRlL2JpdHMv CiskKEdFTkhfSU5UKTogfCBvYmovc3JjL2ludGVybmFsLworCitPQkpfRElSUyA9ICQoc29ydCAk KGRpciAkKEFMTF9MSUJTKSAkKEFMTF9UT09MUykgJChPQkpTKSAkKEdFTkgpICQoR0VOSF9JTlQp KSAkKGFkZHByZWZpeCBvYmovLCBjcnQvIGNydC8kKEFSQ0gpIGluY2x1ZGUvKSkKKworJChPQkpf RElSUyk6CisJbWtkaXIgLXAgJEAKKwogaW5zdGFsbDogaW5zdGFsbC1saWJzIGluc3RhbGwtaGVh ZGVycyBpbnN0YWxsLXRvb2xzCiAKIGNsZWFuOgotCXJtIC1mIGNydC8qLm8KKwlybSAtZiBvYmov Y3J0LyoubyBvYmovY3J0LyQoQVJDSCkvKi5vCiAJcm0gLWYgJChPQkpTKQogCXJtIC1mICQoTE9C SlMpCiAJcm0gLWYgJChBTExfTElCUykgbGliLyouW2FvXSBsaWIvKi5zbwpAQCAtNzgsNzUgKzEw MCw3MyBAQCBjbGVhbjoKIGRpc3RjbGVhbjogY2xlYW4KIAlybSAtZiBjb25maWcubWFrCiAKLWlu Y2x1ZGUvYml0czoKLQlAdGVzdCAiJChBUkNIKSIgfHwgeyBlY2hvICJQbGVhc2Ugc2V0IEFSQ0gg aW4gY29uZmlnLm1hayBiZWZvcmUgcnVubmluZyBtYWtlLiIgOyBleGl0IDEgOyB9Ci0JbG4gLXNm IC4uL2FyY2gvJChBUkNIKS9iaXRzICRACitvYmovaW5jbHVkZS9iaXRzL2FsbHR5cGVzLmg6ICQo c3JjZGlyKS9hcmNoLyQoQVJDSCkvYml0cy9hbGx0eXBlcy5oLmluICQoc3JjZGlyKS9pbmNsdWRl L2FsbHR5cGVzLmguaW4gJChzcmNkaXIpL3Rvb2xzL21rYWxsdHlwZXMuc2VkCisJc2VkIC1mICQo c3JjZGlyKS90b29scy9ta2FsbHR5cGVzLnNlZCAkKHNyY2RpcikvYXJjaC8kKEFSQ0gpL2JpdHMv YWxsdHlwZXMuaC5pbiAkKHNyY2RpcikvaW5jbHVkZS9hbGx0eXBlcy5oLmluID4gJEAKIAotaW5j bHVkZS9iaXRzL2FsbHR5cGVzLmguaW46IGluY2x1ZGUvYml0cworb2JqL3NyYy9pbnRlcm5hbC92 ZXJzaW9uLmg6ICQod2lsZGNhcmQgJChzcmNkaXIpL1ZFUlNJT04gJChzcmNkaXIpLy5naXQpCisJ cHJpbnRmICcjZGVmaW5lIFZFUlNJT04gIiVzIlxuJyAiJCQoY2QgJChzcmNkaXIpOyBzaCB0b29s cy92ZXJzaW9uLnNoKSIgPiAkQAogCi1pbmNsdWRlL2JpdHMvYWxsdHlwZXMuaDogaW5jbHVkZS9i aXRzL2FsbHR5cGVzLmguaW4gaW5jbHVkZS9hbGx0eXBlcy5oLmluIHRvb2xzL21rYWxsdHlwZXMu c2VkCi0Jc2VkIC1mIHRvb2xzL21rYWxsdHlwZXMuc2VkIGluY2x1ZGUvYml0cy9hbGx0eXBlcy5o LmluIGluY2x1ZGUvYWxsdHlwZXMuaC5pbiA+ICRACitvYmovc3JjL2ludGVybmFsL3ZlcnNpb24u byBvYmovc3JjL2ludGVybmFsL3ZlcnNpb24ubG86IG9iai9zcmMvaW50ZXJuYWwvdmVyc2lvbi5o CiAKLXNyYy9pbnRlcm5hbC92ZXJzaW9uLmg6ICQod2lsZGNhcmQgVkVSU0lPTiAuZ2l0KQotCXBy aW50ZiAnI2RlZmluZSBWRVJTSU9OICIlcyJcbicgIiQkKHNoIHRvb2xzL3ZlcnNpb24uc2gpIiA+ ICRACitvYmovY3J0L3JjcnQxLm8gb2JqL3NyYy9sZHNvL2Rsc3RhcnQubG8gb2JqL3NyYy9sZHNv L2R5bmxpbmsubG86ICQoc3JjZGlyKS9zcmMvaW50ZXJuYWwvZHlubGluay5oICQoc3JjZGlyKS9h cmNoLyQoQVJDSCkvcmVsb2MuaAogCi1zcmMvaW50ZXJuYWwvdmVyc2lvbi5vIHNyYy9pbnRlcm5h bC92ZXJzaW9uLmxvOiBzcmMvaW50ZXJuYWwvdmVyc2lvbi5oCitvYmovY3J0L2NydDEubyBvYmov Y3J0L3NjcnQxLm8gb2JqL2NydC9yY3J0MS5vIG9iai9zcmMvbGRzby9kbHN0YXJ0LmxvOiAkKHNy Y2RpcikvYXJjaC8kKEFSQ0gpL2NydF9hcmNoLmgKIAotY3J0L3JjcnQxLm8gc3JjL2xkc28vZGxz dGFydC5sbyBzcmMvbGRzby9keW5saW5rLmxvOiBzcmMvaW50ZXJuYWwvZHlubGluay5oIGFyY2gv JChBUkNIKS9yZWxvYy5oCitvYmovY3J0L3JjcnQxLm86ICQoc3JjZGlyKS9zcmMvbGRzby9kbHN0 YXJ0LmMKIAotY3J0L2NydDEubyBjcnQvU2NydDEubyBjcnQvcmNydDEubyBzcmMvbGRzby9kbHN0 YXJ0LmxvOiAkKHdpbGRjYXJkIGFyY2gvJChBUkNIKS9jcnRfYXJjaC5oKQorb2JqL2NydC9TY3J0 MS5vIG9iai9jcnQvcmNydDEubzogQ0ZMQUdTX0FMTCArPSAtZlBJQwogCi1jcnQvcmNydDEubzog c3JjL2xkc28vZGxzdGFydC5jCitvYmovY3J0LyQoQVJDSCkvY3J0aS5vOiAkKHNyY2RpcikvY3J0 LyQoQVJDSCkvY3J0aS5zCiAKLWNydC9TY3J0MS5vIGNydC9yY3J0MS5vOiBDRkxBR1NfQUxMICs9 IC1mUElDCitvYmovY3J0LyQoQVJDSCkvY3J0bi5vOiAkKHNyY2RpcikvY3J0LyQoQVJDSCkvY3J0 bi5zCiAKLU9QVElNSVpFX1NSQ1MgPSAkKHdpbGRjYXJkICQoT1BUSU1JWkVfR0xPQlM6JT1zcmMv JSkpCi0kKE9QVElNSVpFX1NSQ1M6JS5jPSUubykgJChPUFRJTUlaRV9TUkNTOiUuYz0lLmxvKTog Q0ZMQUdTICs9IC1PMworT1BUSU1JWkVfU1JDUyA9ICQod2lsZGNhcmQgJChPUFRJTUlaRV9HTE9C UzolPSQoc3JjZGlyKS9zcmMvJSkpCiskKE9QVElNSVpFX1NSQ1M6JChzcmNkaXIpLyUuYz1vYmov JS5vKSAkKE9QVElNSVpFX1NSQ1M6JChzcmNkaXIpLyUuYz1vYmovJS5sbyk6IENGTEFHUyArPSAt TzMKIAogTUVNT1BTX1NSQ1MgPSBzcmMvc3RyaW5nL21lbWNweS5jIHNyYy9zdHJpbmcvbWVtbW92 ZS5jIHNyYy9zdHJpbmcvbWVtY21wLmMgc3JjL3N0cmluZy9tZW1zZXQuYwotJChNRU1PUFNfU1JD UzolLmM9JS5vKSAkKE1FTU9QU19TUkNTOiUuYz0lLmxvKTogQ0ZMQUdTX0FMTCArPSAkKENGTEFH U19NRU1PUFMpCiskKE1FTU9QU19TUkNTOiUuYz1vYmovJS5vKSAkKE1FTU9QU19TUkNTOiUuYz1v YmovJS5sbyk6IENGTEFHU19BTEwgKz0gJChDRkxBR1NfTUVNT1BTKQogCiBOT1NTUF9TUkNTID0g JCh3aWxkY2FyZCBjcnQvKi5jKSBcCiAJc3JjL2Vudi9fX2xpYmNfc3RhcnRfbWFpbi5jIHNyYy9l bnYvX19pbml0X3Rscy5jIFwKIAlzcmMvdGhyZWFkL19fc2V0X3RocmVhZF9hcmVhLmMgc3JjL2Vu di9fX3N0YWNrX2Noa19mYWlsLmMgXAogCXNyYy9zdHJpbmcvbWVtc2V0LmMgc3JjL3N0cmluZy9t ZW1jcHkuYyBcCiAJc3JjL2xkc28vZGxzdGFydC5jIHNyYy9sZHNvL2R5bmxpbmsuYwotJChOT1NT UF9TUkNTOiUuYz0lLm8pICQoTk9TU1BfU1JDUzolLmM9JS5sbyk6IENGTEFHU19BTEwgKz0gJChD RkxBR1NfTk9TU1ApCiskKE5PU1NQX1NSQ1M6JS5jPW9iai8lLm8pICQoTk9TU1BfU1JDUzolLmM9 b2JqLyUubG8pOiBDRkxBR1NfQUxMICs9ICQoQ0ZMQUdTX05PU1NQKQogCi0kKENSVF9MSUJTOmxp Yi8lPWNydC8lKTogQ0ZMQUdTX0FMTCArPSAtRENSVAorJChDUlRfTElCUzpsaWIvJT1vYmovY3J0 LyUpOiBDRkxBR1NfQUxMICs9IC1EQ1JUCiAKICMgVGhpcyBpbmNhbnRhdGlvbiBlbnN1cmVzIHRo YXQgY2hhbmdlcyB0byBhbnkgc3ViYXJjaCBhc20gZmlsZXMgd2lsbAogIyBmb3JjZSB0aGUgY29y cmVzcG9uZGluZyBvYmplY3QgZmlsZSB0byBiZSByZWJ1aWx0LCBldmVuIGlmIHRoZSBpbXBsaWNp dAogIyBydWxlIGJlbG93IGdvZXMgaW5kaXJlY3RseSB0aHJvdWdoIGEgLnN1YiBmaWxlLgogZGVm aW5lIG1rYXNtZGVwCi0kKGRpciAkKHBhdHN1YnN0ICUvLCUsJChkaXIgJCgxKSkpKSQobm90ZGly ICQoMToucz0ubykpOiAkKDEpCiskKHBhdHN1YnN0ICQoc3JjZGlyKS8lLG9iai8lLCQoZGlyICQo cGF0c3Vic3QgJS8sJSwkKGRpciAkKDEpKSkpJChBUkNIKSQoQVNNU1VCQVJDSCkvJChub3RkaXIg JCgxOi5zPS5vKSkpOiAkKDEpCiBlbmRlZgotJChmb3JlYWNoIHMsJCh3aWxkY2FyZCBzcmMvKi8k KEFSQ0gpKi8qLnMpLCQoZXZhbCAkKGNhbGwgbWthc21kZXAsJChzKSkpKQorJChmb3JlYWNoIHMs JCh3aWxkY2FyZCAkKHNyY2Rpcikvc3JjLyovJChBUkNIKSovKi5zKSwkKGV2YWwgJChjYWxsIG1r YXNtZGVwLCQocykpKSkKIAogIyBDaG9vc2UgaW52b2NhdGlvbiBvZiBhc3NlbWJsZXIgdG8gYmUg dXNlZAogIyAkKDEpIGlzIGlucHV0IGZpbGUsICQoMikgaXMgb3V0cHV0IGZpbGUsICQoMykgaXMg YXNzZW1ibGVyIGZsYWdzCiBpZmVxICgkKEFERF9DRkkpLHllcykKLQlBU19DTUQgPSBMQ19BTEw9 QyBhd2sgLWYgdG9vbHMvYWRkLWNmaS5jb21tb24uYXdrIC1mIHRvb2xzL2FkZC1jZmkuJChBUkNI KS5hd2sgJDwgfCAkKENDKSAteCBhc3NlbWJsZXIgLWMgLW8gJEAgLQorCUFTX0NNRCA9IExDX0FM TD1DIGF3ayAtZiAkKHNyY2RpcikvdG9vbHMvYWRkLWNmaS5jb21tb24uYXdrIC1mICQoc3JjZGly KS90b29scy9hZGQtY2ZpLiQoQVJDSCkuYXdrICQ8IHwgJChDQykgLXggYXNzZW1ibGVyIC1jIC1v ICRAIC0KIGVsc2UKIAlBU19DTUQgPSAkKENDKSAtYyAtbyAkQCAkPAogZW5kaWYKIAotJS5vOiAk KEFSQ0gpJChBU01TVUJBUkNIKS8lLnN1YgotCSQoQ0MpICQoQ0ZMQUdTX0FMTF9TVEFUSUMpIC1j IC1vICRAICQoZGlyICQ8KSQoc2hlbGwgY2F0ICQ8KQorb2JqLyUubzogJChzcmNkaXIpLyUuc3Vi CisJJChDQykgJChDRkxBR1NfQUxMX1NUQVRJQykgLWMgLW8gJEAgJChkaXIgJDwpJCQoY2F0ICQ8 KQogCi0lLm86ICQoQVJDSCkvJS5zCitvYmovJS5vOiAkKHNyY2RpcikvJS5zCiAJJChBU19DTUQp ICQoQ0ZMQUdTX0FMTF9TVEFUSUMpCiAKLSUubzogJS5jICQoR0VOSCkgJChJTVBIKQorb2JqLyUu bzogJChzcmNkaXIpLyUuYyAkKEdFTkgpICQoSU1QSCkKIAkkKENDKSAkKENGTEFHU19BTExfU1RB VElDKSAtYyAtbyAkQCAkPAogCi0lLmxvOiAkKEFSQ0gpJChBU01TVUJBUkNIKS8lLnN1YgotCSQo Q0MpICQoQ0ZMQUdTX0FMTF9TSEFSRUQpIC1jIC1vICRAICQoZGlyICQ8KSQoc2hlbGwgY2F0ICQ8 KQorb2JqLyUubG86ICQoc3JjZGlyKS8lLnN1YgorCSQoQ0MpICQoQ0ZMQUdTX0FMTF9TSEFSRUQp IC1jIC1vICRAICQoZGlyICQ8KSQkKGNhdCAkPCkKIAotJS5sbzogJChBUkNIKS8lLnMKK29iai8l LmxvOiAkKHNyY2RpcikvJS5zCiAJJChBU19DTUQpICQoQ0ZMQUdTX0FMTF9TSEFSRUQpCiAKLSUu bG86ICUuYyAkKEdFTkgpICQoSU1QSCkKK29iai8lLmxvOiAkKHNyY2RpcikvJS5jICQoR0VOSCkg JChJTVBIKQogCSQoQ0MpICQoQ0ZMQUdTX0FMTF9TSEFSRUQpIC1jIC1vICRAICQ8CiAKIGxpYi9s aWJjLnNvOiAkKExPQkpTKQpAQCAtMTYzLDE3ICsxODMsMjMgQEAgJChFTVBUWV9MSUJTKToKIAly bSAtZiAkQAogCSQoQVIpIHJjICRACiAKLWxpYi8lLm86IGNydC8lLm8KK2xpYi8lLm86IG9iai9j cnQvJS5vCiAJY3AgJDwgJEAKIAotbGliL211c2wtZ2NjLnNwZWNzOiB0b29scy9tdXNsLWdjYy5z cGVjcy5zaCBjb25maWcubWFrCitsaWIvY3J0aS5vOiBvYmovY3J0LyQoQVJDSCkvY3J0aS5vCisJ Y3AgJDwgJEAKKworbGliL2NydG4ubzogb2JqL2NydC8kKEFSQ0gpL2NydG4ubworCWNwICQ8ICRA CisKK2xpYi9tdXNsLWdjYy5zcGVjczogJChzcmNkaXIpL3Rvb2xzL211c2wtZ2NjLnNwZWNzLnNo IGNvbmZpZy5tYWsKIAlzaCAkPCAiJChpbmNsdWRlZGlyKSIgIiQobGliZGlyKSIgIiQoTERTT19Q QVRITkFNRSkiID4gJEAKIAogdG9vbHMvbXVzbC1nY2M6IGNvbmZpZy5tYWsKIAlwcmludGYgJyMh L2Jpbi9zaFxuZXhlYyAiJCR7UkVBTEdDQzotJChXUkFQQ0NfR0NDKX0iICIkJEAiIC1zcGVjcyAi JXMvbXVzbC1nY2Muc3BlY3MiXG4nICIkKGxpYmRpcikiID4gJEAKIAljaG1vZCAreCAkQAogCi10 b29scy8lLWNsYW5nOiB0b29scy8lLWNsYW5nLmluIGNvbmZpZy5tYWsKK3Rvb2xzLyUtY2xhbmc6 ICQoc3JjZGlyKS90b29scy8lLWNsYW5nLmluIGNvbmZpZy5tYWsKIAlzZWQgLWUgJ3MhQENDQCEk KFdSQVBDQ19DTEFORykhZycgLWUgJ3MhQFBSRUZJWEAhJChwcmVmaXgpIWcnIC1lICdzIUBJTkNE SVJAISQoaW5jbHVkZWRpcikhZycgLWUgJ3MhQExJQkRJUkAhJChsaWJkaXIpIWcnIC1lICdzIUBM RFNPQCEkKExEU09fUEFUSE5BTUUpIWcnICQ8ID4gJEAKIAljaG1vZCAreCAkQAogCkBAIC0xODYs MTAgKzIxMiwxMyBAQCAkKERFU1RESVIpJChsaWJkaXIpLyUuc286IGxpYi8lLnNvCiAkKERFU1RE SVIpJChsaWJkaXIpLyU6IGxpYi8lCiAJJChJTlNUQUxMKSAtRCAtbSA2NDQgJDwgJEAKIAotJChE RVNURElSKSQoaW5jbHVkZWRpcikvYml0cy8lOiBhcmNoLyQoQVJDSCkvYml0cy8lCiskKERFU1RE SVIpJChpbmNsdWRlZGlyKS9iaXRzLyU6ICQoc3JjZGlyKS9hcmNoLyQoQVJDSCkvYml0cy8lCisJ JChJTlNUQUxMKSAtRCAtbSA2NDQgJDwgJEAKKworJChERVNURElSKSQoaW5jbHVkZWRpcikvYml0 cy8lOiBvYmovaW5jbHVkZS9iaXRzLyUKIAkkKElOU1RBTEwpIC1EIC1tIDY0NCAkPCAkQAogCi0k KERFU1RESVIpJChpbmNsdWRlZGlyKS8lOiBpbmNsdWRlLyUKKyQoREVTVERJUikkKGluY2x1ZGVk aXIpLyU6ICQoc3JjZGlyKS9pbmNsdWRlLyUKIAkkKElOU1RBTEwpIC1EIC1tIDY0NCAkPCAkQAog CiAkKERFU1RESVIpJChMRFNPX1BBVEhOQU1FKTogJChERVNURElSKSQobGliZGlyKS9saWJjLnNv CkBAIC0yMDIsOSArMjMxLDkgQEAgaW5zdGFsbC1oZWFkZXJzOiAkKEFMTF9JTkNMVURFUzppbmNs dWRlLyU9JChERVNURElSKSQoaW5jbHVkZWRpcikvJSkKIGluc3RhbGwtdG9vbHM6ICQoQUxMX1RP T0xTOnRvb2xzLyU9JChERVNURElSKSQoYmluZGlyKS8lKQogCiBtdXNsLWdpdC0lLnRhci5nejog LmdpdAotCSBnaXQgYXJjaGl2ZSAtLWZvcm1hdD10YXIuZ3ogLS1wcmVmaXg9JChwYXRzdWJzdCAl LnRhci5neiwlLCRAKS8gLW8gJEAgJChwYXRzdWJzdCBtdXNsLWdpdC0lLnRhci5neiwlLCRAKQor CSBnaXQgLS1naXQtZGlyPSQoc3JjZGlyKS8uZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9dGFyLmd6IC0t cHJlZml4PSQocGF0c3Vic3QgJS50YXIuZ3osJSwkQCkvIC1vICRAICQocGF0c3Vic3QgbXVzbC1n aXQtJS50YXIuZ3osJSwkQCkKIAogbXVzbC0lLnRhci5nejogLmdpdAotCSBnaXQgYXJjaGl2ZSAt LWZvcm1hdD10YXIuZ3ogLS1wcmVmaXg9JChwYXRzdWJzdCAlLnRhci5neiwlLCRAKS8gLW8gJEAg diQocGF0c3Vic3QgbXVzbC0lLnRhci5neiwlLCRAKQorCSBnaXQgLS1naXQtZGlyPSQoc3JjZGly KS8uZ2l0IGFyY2hpdmUgLS1mb3JtYXQ9dGFyLmd6IC0tcHJlZml4PSQocGF0c3Vic3QgJS50YXIu Z3osJSwkQCkvIC1vICRAIHYkKHBhdHN1YnN0IG11c2wtJS50YXIuZ3osJSwkQCkKIAogLlBIT05Z OiBhbGwgY2xlYW4gaW5zdGFsbCBpbnN0YWxsLWxpYnMgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGwt dG9vbHMKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCBlZTIxNzcxLi4w ZTQ4MDAyIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkBAIC05LDYgKzks OSBAQCBWQVI9VkFMVUUuICBTZWUgYmVsb3cgZm9yIGRlc2NyaXB0aW9ucyBvZiBzb21lIG9mIHRo ZSB1c2VmdWwgdmFyaWFibGVzLgogCiBEZWZhdWx0cyBmb3IgdGhlIG9wdGlvbnMgYXJlIHNwZWNp ZmllZCBpbiBicmFja2V0cy4KIAorQ29uZmlndXJhdGlvbjoKKyAgLS1zcmNkaXI9RElSICAgICAg ICAgICAgc291cmNlIGRpcmVjdG9yeSBbZGV0ZWN0ZWRdCisKIEluc3RhbGxhdGlvbiBkaXJlY3Rv cmllczoKICAgLS1wcmVmaXg9UFJFRklYICAgICAgICAgbWFpbiBpbnN0YWxsYXRpb24gcHJlZml4 IFsvdXNyL2xvY2FsL211c2xdCiAgIC0tZXhlYy1wcmVmaXg9RVBSRUZJWCAgIGluc3RhbGxhdGlv biBwcmVmaXggZm9yIGV4ZWN1dGFibGUgZmlsZXMgW1BSRUZJWF0KQEAgLTExNyw2ICsxMjAsNyBA QCBDRkxBR1NfVFJZPQogTERGTEFHU19BVVRPPQogTERGTEFHU19UUlk9CiBPUFRJTUlaRV9HTE9C Uz0KK3NyY2Rpcj0KIHByZWZpeD0vdXNyL2xvY2FsL211c2wKIGV4ZWNfcHJlZml4PSckKHByZWZp eCknCiBiaW5kaXI9JyQoZXhlY19wcmVmaXgpL2JpbicKQEAgLTEzOSw2ICsxNDMsNyBAQCBjbGFu Z193cmFwcGVyPW5vCiBmb3IgYXJnIDsgZG8KIGNhc2UgIiRhcmciIGluCiAtLWhlbHApIHVzYWdl IDs7CistLXNyY2Rpcj0qKSBzcmNkaXI9JHthcmcjKj19IDs7CiAtLXByZWZpeD0qKSBwcmVmaXg9 JHthcmcjKj19IDs7CiAtLWV4ZWMtcHJlZml4PSopIGV4ZWNfcHJlZml4PSR7YXJnIyo9fSA7Owog LS1iaW5kaXI9KikgYmluZGlyPSR7YXJnIyo9fSA7OwpAQCAtMTc5LDExICsxODQsMjIgQEAgTElC Q0M9KikgTElCQ0M9JHthcmcjKj19IDs7CiBlc2FjCiBkb25lCiAKLWZvciBpIGluIHByZWZpeCBl eGVjX3ByZWZpeCBiaW5kaXIgbGliZGlyIGluY2x1ZGVkaXIgc3lzbGliZGlyIDsgZG8KK2ZvciBp IGluIHNyY2RpciBwcmVmaXggZXhlY19wcmVmaXggYmluZGlyIGxpYmRpciBpbmNsdWRlZGlyIHN5 c2xpYmRpciA7IGRvCiBzdHJpcGRpciAkaQogZG9uZQogCiAjCisjIEdldCB0aGUgc291cmNlIGRp ciBmb3Igb3V0LW9mLXRyZWUgYnVpbGRzCisjCitpZiB0ZXN0IC16ICIkc3JjZGlyIiA7IHRoZW4K K3NyY2Rpcj0iJHswJS9jb25maWd1cmV9Igorc3RyaXBkaXIgc3JjZGlyCitmaQorYWJzX2J1aWxk ZGlyPSIkKHB3ZCkiIHx8IGZhaWwgIiQwOiBjYW5ub3QgZGV0ZXJtaW5lIHdvcmtpbmcgZGlyZWN0 b3J5IgorYWJzX3NyY2Rpcj0iJChjZCAkc3JjZGlyICYmIHB3ZCkiIHx8IGZhaWwgIiQwOiBpbnZh bGlkIHNvdXJjZSBkaXJlY3RvcnkgJHNyY2RpciIKK3Rlc3QgIiRhYnNfc3JjZGlyIiA9ICIkYWJz X2J1aWxkZGlyIiAmJiBzcmNkaXI9LgorCisjCiAjIEdldCBhIHRlbXAgZmlsZW5hbWUgd2UgY2Fu IHVzZQogIwogaT0wCkBAIC0zMjEsNyArMzM3LDcgQEAgX19hdHRyaWJ1dGVfXygoX19tYXlfYWxp YXNfXykpCiAjZW5kaWYKIHg7CiBFT0YKLWlmICRDQyAkQ0ZMQUdTX0M5OUZTRSAtSS4vYXJjaC8k QVJDSCAtSS4vaW5jbHVkZSAkQ1BQRkxBR1MgJENGTEFHUyBcCitpZiAkQ0MgJENGTEFHU19DOTlG U0UgLUkkc3JjZGlyL2FyY2gvJEFSQ0ggLUkkc3JjZGlyL2luY2x1ZGUgJENQUEZMQUdTICRDRkxB R1MgXAogICAtYyAtbyAvZGV2L251bGwgIiR0bXBjIiA+L2Rldi9udWxsIDI+JjEgOyB0aGVuCiBw cmludGYgIm5vXG4iCiBlbHNlCkBAIC02MjUsNyArNjQxLDcgQEAgZWNobyAnI2luY2x1ZGUgPGZs b2F0Lmg+JyA+ICIkdG1wYyIKIGVjaG8gJyNpZiBMREJMX01BTlRfRElHID09IDUzJyA+PiAiJHRt cGMiCiBlY2hvICd0eXBlZGVmIGNoYXIgbGRjaGVja1s5LShpbnQpc2l6ZW9mKGxvbmcgZG91Ymxl KV07JyA+PiAiJHRtcGMiCiBlY2hvICcjZW5kaWYnID4+ICIkdG1wYyIKLWlmICRDQyAkQ0ZMQUdT X0M5OUZTRSAtSS4vYXJjaC8kQVJDSCAtSS4vaW5jbHVkZSAkQ1BQRkxBR1MgJENGTEFHUyBcCitp ZiAkQ0MgJENGTEFHU19DOTlGU0UgLUkkc3JjZGlyL2FyY2gvJEFSQ0ggLUkkc3JjZGlyL2luY2x1 ZGUgJENQUEZMQUdTICRDRkxBR1MgXAogICAtYyAtbyAvZGV2L251bGwgIiR0bXBjIiA+L2Rldi9u dWxsIDI+JjEgOyB0aGVuCiBwcmludGYgInllc1xuIgogZWxzZQpAQCAtNjQ4LDYgKzY2NCw3IEBA IGNhdCA8PCBFT0YKIEFSQ0ggPSAkQVJDSAogU1VCQVJDSCA9ICRTVUJBUkNICiBBU01TVUJBUkNI ID0gJEFTTVNVQkFSQ0gKK3NyY2RpciA9ICRzcmNkaXIKIHByZWZpeCA9ICRwcmVmaXgKIGV4ZWNf cHJlZml4ID0gJGV4ZWNfcHJlZml4CiBiaW5kaXIgPSAkYmluZGlyCkBAIC02NzYsNCArNjkzLDYg QEAgdGVzdCAieCRjY19mYW1pbHkiID0geGdjYyAmJiBlY2hvICdXUkFQQ0NfR0NDID0gJChDQykn CiB0ZXN0ICJ4JGNjX2ZhbWlseSIgPSB4Y2xhbmcgJiYgZWNobyAnV1JBUENDX0NMQU5HID0gJChD QyknCiBleGVjIDE+JjMgMz4mLQogCit0ZXN0ICIkc3JjZGlyIiA9ICIuIiB8fCBsbiAtcyAkc3Jj ZGlyL01ha2VmaWxlIC4KKwogcHJpbnRmICJkb25lXG4iCi0tIAoyLjYuMC5yYzIuMjMwLmczZGQx NWMwCgo= --001a114ddb12f08f490525b7ea4b--