From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 15 01:34:08 2024 Received: (at submit) by debbugs.gnu.org; 15 Jan 2024 06:34:08 +0000 Received: from localhost ([127.0.0.1]:44568 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPGXv-00010k-Pt for submit@debbugs.gnu.org; Mon, 15 Jan 2024 01:34:08 -0500 Received: from lists.gnu.org ([2001:470:142::17]:35622) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPGXt-00010F-GU for submit@debbugs.gnu.org; Mon, 15 Jan 2024 01:34:06 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rPGXo-0004He-JZ for bug-gnu-emacs@gnu.org; Mon, 15 Jan 2024 01:34:00 -0500 Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rPGXm-0005y3-Vq for bug-gnu-emacs@gnu.org; Mon, 15 Jan 2024 01:34:00 -0500 Received: by mail-ej1-x62a.google.com with SMTP id a640c23a62f3a-a2c67be31edso410918166b.0 for ; Sun, 14 Jan 2024 22:33:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705300436; x=1705905236; darn=gnu.org; h=mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=FM/p8k3ZRtW1WjWNnTwie5pHZHIrJss1v2PCKg6RW+k=; b=Tx9HJ6HfpDkK5o653AQF/45YZKByIl2mVh8RM7GuN3zyyMMI9qoE/HGjltxo2O++4j 4k60fYBzbIlFqq5Kw0H0uq2Ei5fh5LwoQdi302lrxbZUk0HQ2I1r/3W+/WnuF2l+rkUj HGkXSAGqoBi+6q5ffM1vHRZEe2dsYk5z5PJgAUqMGBdABn3153TvDAKEy2HzxL50JCtn 3l3A54+dDX1pOWbe0h886SDoCdK2/iEdrn+fwIzQlnkEwaXifKTX33oEVSSBSzGd1SnD ntqtLzzFuOgM7vZMnt65a32N8byPShv7HcWa7raDM1obaF4ZPudr3JT/5ECOyuW7Aild 0FOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705300436; x=1705905236; h=mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=FM/p8k3ZRtW1WjWNnTwie5pHZHIrJss1v2PCKg6RW+k=; b=samuoYcbjY7sGDdn1WJhqZOWSfF/8WjOxGQpMsw5nY1fLQdxmSSbBUvhwtjiThlh5K NLgtjZcHRkjjJ+Lx8XewAIgtpU1yyXCUfDQGUGYB8NbtgDq+v558cM8Jgel5v/eJNXvM ccb7DkwLXZiSLKb/S+g6zpMC5Q6iSt0iSDlsiisqqYNSvg0bjaUQgvW7dJr6qI1ZRLe/ rCLFqikcDcoxPEygdn9WgR8a7SKISFyvhp0YNSp4Hnw3M1VYZ07g2mMWXj16fvitUYQO 5t2KPG2rBI34Lbw4sR7CuzH173w1Gb65NmZ2r7It4tB4F4K+IQT5pVIWm/xKlpXBhJnf 6Rog== X-Gm-Message-State: AOJu0YwjF1w3xTRL7+P4jc7CQJt/CPB5n6PUN9FHTRaOUpQii4oKmsr0 t6qzC5Rq7jnWxyKzrcWDK8TPpTup/8A= X-Google-Smtp-Source: AGHT+IHLfyyObwSKZHwmSBxdiwWZgdatRZPXOh34uKA27vtfazkfcdk/P90Jp93YwzEvzySf7mxxfQ== X-Received: by 2002:a17:906:c043:b0:a26:f1e1:ca69 with SMTP id bm3-20020a170906c04300b00a26f1e1ca69mr1315308ejb.56.1705300436102; Sun, 14 Jan 2024 22:33:56 -0800 (PST) Received: from Pro.fritz.box (p4fe3a419.dip0.t-ipconnect.de. [79.227.164.25]) by smtp.gmail.com with ESMTPSA id y23-20020a170906559700b00a269357c2e7sm4896123ejp.36.2024.01.14.22.33.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 14 Jan 2024 22:33:55 -0800 (PST) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= To: bug-gnu-emacs@gnu.org Subject: 30.0.50; autogen.sh creating modified files in build-aux with Autoconf 2.72 X-Debbugs-Cc: Date: Mon, 15 Jan 2024 07:33:53 +0100 Message-ID: MIME-Version: 1.0 Content-Type: text/plain Received-SPF: pass client-ip=2a00:1450:4864:20::62a; envelope-from=gerd.moellmann@gmail.com; helo=mail-ej1-x62a.google.com X-Spam_score_int: -19 X-Spam_score: -2.0 X-Spam_bar: -- X-Spam_report: (-2.0 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_SBL_A=0.1 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: 1.7 (+) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Don't know if this is something that should be fixed. In master, git clean -xdf ./autogen.sh Content analysis details: (1.7 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.1 URIBL_SBL_A Contains URL's A record listed in the Spamhaus SBL blocklist [URIs: formulae.brew.sh] 0.6 URIBL_SBL Contains an URL's NS IP listed in the Spamhaus SBL blocklist [URIs: formulae.brew.sh] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (gerd.moellmann[at]gmail.com) -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.7 (/) Don't know if this is something that should be fixed. In master, git clean -xdf ./autogen.sh creates a number of modified files in build-aux git status On branch master Your branch is up to date with 'origin/master'. Changes not staged for commit: (use "git add ..." to update what will be committed) (use "git restore ..." to discard changes in working directory) modified: build-aux/config.guess modified: build-aux/config.sub modified: build-aux/install-sh modified: exec/config.guess modified: exec/config.sub modified: exec/install-sh This is on macOS 14.2.1 (23C71), with brew info autoconf ==> autoconf: stable 2.72 (bottled) Automatic configure script builder https://www.gnu.org/software/autoconf /usr/local/Cellar/autoconf/2.72 (71 files, 3.6MB) * Poured from bottle using the formulae.brew.sh API on 2024-01-04 at 21:35:37 brew info automake ==> automake: stable 1.16.5 (bottled) So it looks like I got a new Autconf recently. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 15 08:02:01 2024 Received: (at 68464) by debbugs.gnu.org; 15 Jan 2024 13:02:01 +0000 Received: from localhost ([127.0.0.1]:44907 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPMbJ-00053x-9f for submit@debbugs.gnu.org; Mon, 15 Jan 2024 08:02:01 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:46822) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPMbG-00053U-Ly; Mon, 15 Jan 2024 08:02:00 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rPMbB-00085o-6A; Mon, 15 Jan 2024 08:01:53 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=pgYOvrnSSx4h5vxXL3AyLW326XjX/2aO1B/b8KBysJc=; b=blnOspCe/pcrFfRDQBj3 dalVyIfoCemfd3p3lb3Lk4bl25ObgfUnqcE4aWVh5j0/gAcSIAORa0wKZD2s4xAAnqiIF44RTydYb JqGmijLfU04ZrDDu7vh2tQyWwjtQ8iKEZocF3L+78s4IHhO2lG7r0U792AugYiLKMDKlp7lLDL7dQ Xe0Qnxn4S2WU3EuSJppA4Dz9ZkB0j1xRnosRdhREq5XxZ1N4ZAtsostvKEXs2V1hlqC+NAGHHnJHN hvNNETenIB9wMLMR9xHzpG6vWp1VUC4FW0xty8Ap6e4I5pYQyW6qYtXMJ+YJm3yZx+xMr/KDtIzRU pKJ/f2Y01DG/9Q==; Date: Mon, 15 Jan 2024 15:01:38 +0200 Message-Id: <838r4qeonh.fsf@gnu.org> From: Eli Zaretskii To: Gerd =?utf-8?Q?M=C3=B6llmann?= In-Reply-To: (message from Gerd =?utf-8?Q?M?= =?utf-8?Q?=C3=B6llmann?= on Mon, 15 Jan 2024 07:33:53 +0100) Subject: Re: bug#68464: 30.0.50; autogen.sh creating modified files in build-aux with Autoconf 2.72 References: MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -1.6 (-) X-Debbugs-Envelope-To: 68464 Cc: 68464@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.6 (--) tags 68464 notabug wontfix thanks > From: Gerd Möllmann > Date: Mon, 15 Jan 2024 07:33:53 +0100 > > Don't know if this is something that should be fixed. > > In master, > > git clean -xdf > ./autogen.sh > > creates a number of modified files in build-aux > > git status > > On branch master > Your branch is up to date with 'origin/master'. > > Changes not staged for commit: > (use "git add ..." to update what will be committed) > (use "git restore ..." to discard changes in working directory) > modified: build-aux/config.guess > modified: build-aux/config.sub > modified: build-aux/install-sh > modified: exec/config.guess > modified: exec/config.sub > modified: exec/install-sh > > This is on macOS 14.2.1 (23C71), with > > brew info autoconf > ==> autoconf: stable 2.72 (bottled) > Automatic configure script builder > https://www.gnu.org/software/autoconf > /usr/local/Cellar/autoconf/2.72 (71 files, 3.6MB) * > Poured from bottle using the formulae.brew.sh API on 2024-01-04 at 21:35:37 > > brew info automake > ==> automake: stable 1.16.5 (bottled) > > So it looks like I got a new Autconf recently. This is a known issue with Autoconf 2.71 and later, see https://lists.gnu.org/archive/html/emacs-devel/2021-05/msg00130.html https://lists.gnu.org/archive/html/emacs-devel/2021-05/msg00187.html My only recommendation is to downgrade back to an older version of Autoconf. I'm a happy user of 2.69. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 15 15:40:42 2024 Received: (at 68464) by debbugs.gnu.org; 15 Jan 2024 20:40:42 +0000 Received: from localhost ([127.0.0.1]:47116 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPTlB-0004w7-Ol for submit@debbugs.gnu.org; Mon, 15 Jan 2024 15:40:42 -0500 Received: from smtp4-g21.free.fr ([212.27.42.4]:15390) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPTl8-0004vt-6A for 68464@debbugs.gnu.org; Mon, 15 Jan 2024 15:40:39 -0500 Received: from killashandra.ballybran.fr.free.fr (unknown [IPv6:2a01:e0a:1e2:f8b0:5794:36e1:2c11:514a]) by smtp4-g21.free.fr (Postfix) with ESMTPS id A228E19F5B2; Mon, 15 Jan 2024 21:40:34 +0100 (CET) From: =?utf-8?Q?Pierre_T=C3=A9choueyres?= To: Eli Zaretskii Subject: Re: bug#68464: 30.0.50; autogen.sh creating modified files in build-aux with Autoconf 2.72 In-Reply-To: <838r4qeonh.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 15 Jan 2024 15:01:38 +0200") References: <838r4qeonh.fsf@gnu.org> Date: Mon, 15 Jan 2024 21:40:34 +0100 Message-ID: <878r4q5nzx.fsf@killashandra.ballybran.fr> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 68464 Cc: Gerd =?utf-8?Q?M=C3=B6llmann?= , 68464@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.3 (/) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Le lundi 15 janv. 2024 =C3=A0 15:01, Eli Zaretskii a =C3=A9c= rit : > tags 68464 notabug wontfix > thanks > >> From: Gerd M=C3=B6llmann >> Date: Mon, 15 Jan 2024 07:33:53 +0100 >>=20 >> Don't know if this is something that should be fixed. >>=20 >> In master, >>=20 >> git clean -xdf >> ./autogen.sh >>=20 >> creates a number of modified files in build-aux >>=20 >> git status >>=20 >> On branch master >> Your branch is up to date with 'origin/master'. >>=20 >> Changes not staged for commit: >> (use "git add ..." to update what will be committed) >> (use "git restore ..." to discard changes in working directory) >> modified: build-aux/config.guess >> modified: build-aux/config.sub >> modified: build-aux/install-sh >> modified: exec/config.guess >> modified: exec/config.sub >> modified: exec/install-sh >>=20 >> This is on macOS 14.2.1 (23C71), with >>=20 >> brew info autoconf >> =3D=3D> autoconf: stable 2.72 (bottled) >> Automatic configure script builder >> https://www.gnu.org/software/autoconf >> /usr/local/Cellar/autoconf/2.72 (71 files, 3.6MB) * >> Poured from bottle using the formulae.brew.sh API on 2024-01-04 at 2= 1:35:37 >>=20=20=20 >> brew info automake >> =3D=3D> automake: stable 1.16.5 (bottled) >>=20 >> So it looks like I got a new Autconf recently. > > This is a known issue with Autoconf 2.71 and later, see > > https://lists.gnu.org/archive/html/emacs-devel/2021-05/msg00130.html > https://lists.gnu.org/archive/html/emacs-devel/2021-05/msg00187.html > > My only recommendation is to downgrade back to an older version of > Autoconf. I'm a happy user of 2.69. > For the two files (build-aux/config.guess, build-aux/config.sub) this is triggered by the timestamp in those files that is older than the release of autoconf 2.71. May you consider applying the attached patch which fixes it (based on emacs-29) ? It also fixes two copyright years and an typo --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Fix-build-aux-config.guess-build-aux-config.sub.patch Content-Description: fix build-aux/config.{guess,sub} >From cafc965537b2d9cd2a2d2805b268026a309cfb38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20T=C3=A9choueyres?= Date: Mon, 15 Jan 2024 21:27:13 +0100 Subject: [PATCH] Fix build-aux/config.guess build-aux/config.sub --- build-aux/config.guess | 4 ++-- build-aux/config.sub | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build-aux/config.guess b/build-aux/config.guess index 33a163c1..4c01d3c6 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -4,7 +4,7 @@ # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2022-09-17' +timestamp='2024-01-15' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -60,7 +60,7 @@ version= GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2022 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." diff --git a/build-aux/config.sub b/build-aux/config.sub index 529a77a9..c717dc1f 100755 --- a/build-aux/config.sub +++ b/build-aux/config.sub @@ -4,7 +4,7 @@ # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2022-09-17' +timestamp='2024-01-15' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -76,7 +76,7 @@ usage= version="\ GNU config.sub ($timestamp) -Copyright 1992-2022 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -1075,7 +1075,7 @@ IFS= pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) cpu=i586 ;; - pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) + pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) cpu=i686 ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) -- 2.43.0 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 15 16:10:36 2024 Received: (at 68464) by debbugs.gnu.org; 15 Jan 2024 21:10:36 +0000 Received: from localhost ([127.0.0.1]:47147 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPUE8-0002qI-8l for submit@debbugs.gnu.org; Mon, 15 Jan 2024 16:10:36 -0500 Received: from mail-lj1-x230.google.com ([2a00:1450:4864:20::230]:54356) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPUE6-0002q0-Gp for 68464@debbugs.gnu.org; Mon, 15 Jan 2024 16:10:35 -0500 Received: by mail-lj1-x230.google.com with SMTP id 38308e7fff4ca-2cd1232a2c7so112704531fa.0 for <68464@debbugs.gnu.org>; Mon, 15 Jan 2024 13:10:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705353028; x=1705957828; darn=debbugs.gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date :mime-version:references:in-reply-to:from:from:to:cc:subject:date :message-id:reply-to; bh=qa+1L2WiWGwCPVK3YLAvvUX+tVmql+wO1D5HJ+VZYS4=; b=QjTGzeMM/yrefRI4eNH6W5q5P37YaGA5Z3X8LnhPte5ZB0ZydoTXDg+pZUBwumYHHj eVkE3j4BZIqwPBn54ociqgrp6mux5SrkbKfkdQpEiegYvr/JLHaxzg1ACc/FVYfk06d2 JdHwVm8yV8HfUJuS27Lls5hdnkh8msoc83qd6NU7ATZ3RzsuMJlq5hUC26zeILxe3t/8 o3TOeLxYuGYCluKQSmK0b8RjCsTFLYyasLqyrB695XIkqZLv0zK3Z0DqGo7kbEVX/c3/ /hbjdYHRJgESXYCsb74vqIzbIGDQYYP+u7vB9FrJPZ/4CDtllosQ0H6FngL8NQNqKpZC b/yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705353028; x=1705957828; h=content-transfer-encoding:cc:to:subject:message-id:date :mime-version:references:in-reply-to:from:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=qa+1L2WiWGwCPVK3YLAvvUX+tVmql+wO1D5HJ+VZYS4=; b=pr6IyApbgYJSMuSNKocQmV3JzNiHIesSbsMC/rdjY3QOmuYqu91f9U0pV02yl9K/XQ 9I0z2kB9uIRXNNBvEdklNZV8G4fB1Ms0yDVQvmWW08c0OVlaJnNPlBNfSb6eQlxOAEm3 1qHGjkI541QPwTqNfK89A3DDJWufya0D78hIppuVZhBZ88lvgtNEEf4dVVb8nHvNrcVb jyfNpZR1vI9EgNstbxB28Q+ly+QSmrhlcIrYATMO8Dp2kfPcFQ5FUeX8oj3JjPMNn/iV 2CHnME1u4iYX0/8W4Dsc7e/Y3+Ib0G0LBEQiMUA+R0M1RN/UykofUmb7SAvkv9JWlkFw fong== X-Gm-Message-State: AOJu0YyWJzl5YDawQRQlftymappa9w5NyKSpEL0/IwZN7OVYUsMrg/5E FRo0dbrU9HihkLlzpGN4habxKu4SzUKzDVqBc7M= X-Google-Smtp-Source: AGHT+IE3bM7ZG0KnRFFJVReMSvLEINTfY1ZWtYr2sOhLTcjJW+PL0yAZ3xtoW0KceiFsxrGm02E0T5iQIkXSojLfkCw= X-Received: by 2002:a05:651c:151:b0:2cc:7127:ebaa with SMTP id c17-20020a05651c015100b002cc7127ebaamr2601414ljd.94.1705353028181; Mon, 15 Jan 2024 13:10:28 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Mon, 15 Jan 2024 15:10:27 -0600 From: Stefan Kangas In-Reply-To: <878r4q5nzx.fsf@killashandra.ballybran.fr> References: <838r4qeonh.fsf@gnu.org> <878r4q5nzx.fsf@killashandra.ballybran.fr> MIME-Version: 1.0 Date: Mon, 15 Jan 2024 15:10:27 -0600 Message-ID: Subject: Re: bug#68464: 30.0.50; autogen.sh creating modified files in build-aux with Autoconf 2.72 To: =?UTF-8?Q?Pierre_T=C3=A9choueyres?= , Eli Zaretskii Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 68464 Cc: =?UTF-8?Q?Gerd_M=C3=B6llmann?= , 68464@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Pierre T=C3=A9choueyres writes: > For the two files (build-aux/config.guess, build-aux/config.sub) this is > triggered by the timestamp in those files that is older than the release > of autoconf 2.71. May you consider applying the attached patch which > fixes it (based on emacs-29) ? > > It also fixes two copyright years and an typo Is that really the right thing? I see no reason not to fix the athalon/athlon typo though. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 15 16:14:08 2024 Received: (at 68464) by debbugs.gnu.org; 15 Jan 2024 21:14:08 +0000 Received: from localhost ([127.0.0.1]:47151 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPUHX-0002vq-RQ for submit@debbugs.gnu.org; Mon, 15 Jan 2024 16:14:08 -0500 Received: from mail-out.m-online.net ([2001:a60:0:28:0:1:25:1]:56174) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPUHS-0002vS-S4 for 68464@debbugs.gnu.org; Mon, 15 Jan 2024 16:14:06 -0500 Received: from frontend01.mail.m-online.net (unknown [192.168.8.182]) by mail-out.m-online.net (Postfix) with ESMTP id 4TDPyd0Z1Jz1s953; Mon, 15 Jan 2024 22:14:00 +0100 (CET) Received: from localhost (dynscan1.mnet-online.de [192.168.6.68]) by mail.m-online.net (Postfix) with ESMTP id 4TDPyc59SLz1qqlY; Mon, 15 Jan 2024 22:14:00 +0100 (CET) X-Virus-Scanned: amavis at mnet-online.de Received: from mail.mnet-online.de ([192.168.8.182]) by localhost (dynscan1.mail.m-online.net [192.168.6.68]) (amavis, port 10024) with ESMTP id 0I5msn75YR6t; Mon, 15 Jan 2024 22:13:59 +0100 (CET) X-Auth-Info: Z+OuXT8V+coy5K7k+BT1s7dvF1lv5ObyLUbZwombUjJMd5ytofD0HX6zAEmzSbUJ Received: from igel.home (aftr-62-216-202-105.dynamic.mnet-online.de [62.216.202.105]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mail.mnet-online.de (Postfix) with ESMTPSA; Mon, 15 Jan 2024 22:13:59 +0100 (CET) Received: by igel.home (Postfix, from userid 1000) id 7DA3A2C00AB; Mon, 15 Jan 2024 22:13:59 +0100 (CET) From: Andreas Schwab To: Pierre =?utf-8?Q?T=C3=A9choueyres?= Subject: Re: bug#68464: 30.0.50; autogen.sh creating modified files in build-aux with Autoconf 2.72 In-Reply-To: <878r4q5nzx.fsf@killashandra.ballybran.fr> ("Pierre =?utf-8?Q?T=C3=A9choueyres=22's?= message of "Mon, 15 Jan 2024 21:40:34 +0100") References: <838r4qeonh.fsf@gnu.org> <878r4q5nzx.fsf@killashandra.ballybran.fr> X-Yow: Why was I BORN? Date: Mon, 15 Jan 2024 22:13:59 +0100 Message-ID: <87le8q710o.fsf@igel.home> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.5 (/) X-Debbugs-Envelope-To: 68464 Cc: Gerd =?utf-8?Q?M=C3=B6llmann?= , Eli Zaretskii , 68464@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.5 (-) If you want to update config.sub and config.guess you should copy them verbatim from the config project, not edit them randomly. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 15 22:31:13 2024 Received: (at 68464) by debbugs.gnu.org; 16 Jan 2024 03:31:13 +0000 Received: from localhost ([127.0.0.1]:47378 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPaAT-0006hD-2o for submit@debbugs.gnu.org; Mon, 15 Jan 2024 22:31:13 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:48434) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPaAR-0006XW-1E for 68464@debbugs.gnu.org; Mon, 15 Jan 2024 22:31:11 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rPaAL-00054d-3E; Mon, 15 Jan 2024 22:31:05 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=q2HbJmX5TXL9kihdUS9FcmxxXB/Cmtjfvdjd1BZRYME=; b=le+Z6mEFcSXIv7p8TaOr v3SoaKrFpOzUa7A4JcAlMamGXuyqMw6IiatCRV/788DZMpsWCv3BtAbYi+N0ltQxpKKkQXRVlpw4D yOn3fTberj+pAwAS7QqFhbj/sEeHcHoeuq1aOMoPtA3FjCQRnr8JmfaHxH1rXagx192Fsj0bqXsKE hUHppH8PQJpWb9smI+iKNM1ic5VwBynLZfJIAir/9ktdZGMuHCagdiWhFPn99xPSuHDNYB3ZpdXFr g77oB2laLVIKCf3ybyzZR4POh+Ood/3CiBDzepTB6xpb9ljn834Wq2jq8mQdMFdzVbBYh/vLsFpFX d2QSi39rxZUkHQ==; Date: Tue, 16 Jan 2024 05:30:43 +0200 Message-Id: <83jzoac5uk.fsf@gnu.org> From: Eli Zaretskii To: Andreas Schwab In-Reply-To: <87le8q710o.fsf@igel.home> (message from Andreas Schwab on Mon, 15 Jan 2024 22:13:59 +0100) Subject: Re: bug#68464: 30.0.50; autogen.sh creating modified files in build-aux with Autoconf 2.72 References: <838r4qeonh.fsf@gnu.org> <878r4q5nzx.fsf@killashandra.ballybran.fr> <87le8q710o.fsf@igel.home> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68464 Cc: gerd.moellmann@gmail.com, 68464@debbugs.gnu.org, pierre.techoueyres@free.fr X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Andreas Schwab > Cc: Eli Zaretskii , Gerd Möllmann > , > 68464@debbugs.gnu.org > Date: Mon, 15 Jan 2024 22:13:59 +0100 > > If you want to update config.sub and config.guess you should copy them > verbatim from the config project, not edit them randomly. Right. We don't maintain these files, so the changes, if they are needed, should be submitted to their upstream. From debbugs-submit-bounces@debbugs.gnu.org Tue Jan 16 15:24:47 2024 Received: (at 68464) by debbugs.gnu.org; 16 Jan 2024 20:24:47 +0000 Received: from localhost ([127.0.0.1]:49847 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPpzK-0004ZI-Bj for submit@debbugs.gnu.org; Tue, 16 Jan 2024 15:24:47 -0500 Received: from smtp4-g21.free.fr ([212.27.42.4]:45536) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rPpzG-0004Z8-VT for 68464@debbugs.gnu.org; Tue, 16 Jan 2024 15:24:44 -0500 Received: from killashandra.ballybran.fr.free.fr (unknown [IPv6:2a01:e0a:1e2:f8b0:5794:36e1:2c11:514a]) by smtp4-g21.free.fr (Postfix) with ESMTPS id C8D4019F59C; Tue, 16 Jan 2024 21:24:37 +0100 (CET) From: =?utf-8?Q?Pierre_T=C3=A9choueyres?= To: Eli Zaretskii Subject: Re: bug#68464: 30.0.50; autogen.sh creating modified files in build-aux with Autoconf 2.72 In-Reply-To: <83jzoac5uk.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 16 Jan 2024 05:30:43 +0200") References: <838r4qeonh.fsf@gnu.org> <878r4q5nzx.fsf@killashandra.ballybran.fr> <87le8q710o.fsf@igel.home> <83jzoac5uk.fsf@gnu.org> Date: Tue, 16 Jan 2024 21:24:37 +0100 Message-ID: <878r4pauwq.fsf@killashandra.ballybran.fr> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 68464 Cc: gerd.moellmann@gmail.com, 68464@debbugs.gnu.org, Andreas Schwab X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Le mardi 16 janv. 2024 =C3=A0 05:30, Eli Zaretskii a =C3=A9c= rit : >> From: Andreas Schwab >> Cc: Eli Zaretskii , Gerd M=C3=B6llmann >> , >> 68464@debbugs.gnu.org >> Date: Mon, 15 Jan 2024 22:13:59 +0100 >>=20 >> If you want to update config.sub and config.guess you should copy them >> verbatim from the config project, not edit them randomly. > > Right. We don't maintain these files, so the changes, if they are > needed, should be submitted to their upstream. > So, I've used the latest ones availables on https://git.savannah.gnu.org/cg= it/config.git/ And updated the patch consequently. This should prevent their overwritting by autoreconf. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Update-files-changed-by-autoreconf-i-I-m4-force.patch Content-Description: Update-files-changed-by-autoreconf-i-I-m4-force >From 84034ed587f0c3915c3f2ef7087d4a3b05a6af08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pierre=20T=C3=A9choueyres?= Date: Mon, 15 Jan 2024 21:27:13 +0100 Subject: [PATCH] Update files changed by "autoreconf -i -I m4 --force" * build-aux/config.guess: * build-aux/config.sub: Update files changed by running "autoreconf -i -I m4 --force". Downloaded from their upstream sources so they're will not be owewritten by autoreconf. --- build-aux/config.guess | 60 +++++++++-- build-aux/config.sub | 230 ++++++++++++++++++++++++++--------------- 2 files changed, 196 insertions(+), 94 deletions(-) diff --git a/build-aux/config.guess b/build-aux/config.guess index 33a163c1..f6d217a4 100755 --- a/build-aux/config.guess +++ b/build-aux/config.guess @@ -4,7 +4,7 @@ # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2022-09-17' +timestamp='2024-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -47,7 +47,7 @@ me= usage="\ Usage: $0 [OPTION] -Output the configuration name of the system \`$me' is run on. +Output the configuration name of the system '$me' is run on. Options: -h, --help print this help, then exit @@ -60,13 +60,13 @@ version= GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2022 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" -Try \`$me --help' for more information." +Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do @@ -102,8 +102,8 @@ GUESS= # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. +# Historically, 'CC_FOR_BUILD' used to be named 'HOST_CC'. We still +# use 'HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. @@ -155,6 +155,9 @@ UNAME_VERSION= set_cc_for_build cat <<-EOF > "$dummy.c" + #if defined(__ANDROID__) + LIBC=android + #else #include #if defined(__UCLIBC__) LIBC=uclibc @@ -162,6 +165,8 @@ UNAME_VERSION= LIBC=dietlibc #elif defined(__GLIBC__) LIBC=gnu + #elif defined(__LLVM_LIBC__) + LIBC=llvm #else #include /* First heuristic to detect musl libc. */ @@ -169,6 +174,7 @@ UNAME_VERSION= LIBC=musl #endif #endif + #endif EOF cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` eval "$cc_set_libc" @@ -459,7 +465,7 @@ UNAME_VERSION= UNAME_RELEASE=`uname -v` ;; esac - # Japanese Language versions have a version number like `4.1.3-JL'. + # Japanese Language versions have a version number like '4.1.3-JL'. SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` GUESS=sparc-sun-sunos$SUN_REL ;; @@ -904,7 +910,7 @@ main () fi ;; *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` + UNAME_PROCESSOR=`uname -p` case $UNAME_PROCESSOR in amd64) UNAME_PROCESSOR=x86_64 ;; @@ -976,7 +982,27 @@ main () GUESS=$UNAME_MACHINE-unknown-minix ;; aarch64:Linux:*:*) - GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + set_cc_for_build + CPU=$UNAME_MACHINE + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + ABI=64 + sed 's/^ //' << EOF > "$dummy.c" + #ifdef __ARM_EABI__ + #ifdef __ARM_PCS_VFP + ABI=eabihf + #else + ABI=eabi + #endif + #endif +EOF + cc_set_abi=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^ABI' | sed 's, ,,g'` + eval "$cc_set_abi" + case $ABI in + eabi | eabihf) CPU=armv8l; LIBCABI=$LIBC$ABI ;; + esac + fi + GUESS=$CPU-unknown-linux-$LIBCABI ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be @@ -1042,6 +1068,15 @@ main () k1om:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; + kvx:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + kvx:cos:*:*) + GUESS=$UNAME_MACHINE-unknown-cos + ;; + kvx:mbr:*:*) + GUESS=$UNAME_MACHINE-unknown-mbr + ;; loongarch32:Linux:*:* | loongarch64:Linux:*:*) GUESS=$UNAME_MACHINE-unknown-linux-$LIBC ;; @@ -1197,7 +1232,7 @@ main () GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION ;; i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility + # If we were able to find 'uname', then EMX Unix compatibility # is probably installed. GUESS=$UNAME_MACHINE-pc-os2-emx ;; @@ -1338,7 +1373,7 @@ main () GUESS=ns32k-sni-sysv fi ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + PENTIUM:*:4.0*:*) # Unisys 'ClearPath HMP IX 4000' SVR4/MP effort # says GUESS=i586-unisys-sysv4 ;; @@ -1560,6 +1595,9 @@ main () *:Unleashed:*:*) GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE ;; + *:Ironclad:*:*) + GUESS=$UNAME_MACHINE-unknown-ironclad + ;; esac # Do we have a guess based on uname results? diff --git a/build-aux/config.sub b/build-aux/config.sub index 529a77a9..2c6a07ab 100755 --- a/build-aux/config.sub +++ b/build-aux/config.sub @@ -4,7 +4,7 @@ # shellcheck disable=SC2006,SC2268 # see below for rationale -timestamp='2022-09-17' +timestamp='2024-01-01' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by @@ -76,13 +76,13 @@ usage= version="\ GNU config.sub ($timestamp) -Copyright 1992-2022 Free Software Foundation, Inc. +Copyright 1992-2024 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" -Try \`$me --help' for more information." +Try '$me --help' for more information." # Parse command line while test $# -gt 0 ; do @@ -130,7 +130,7 @@ IFS= # Separate into logical components for further validation case $1 in *-*-*-*-*) - echo Invalid configuration \`"$1"\': more than four components >&2 + echo "Invalid configuration '$1': more than four components" >&2 exit 1 ;; *-*-*-*) @@ -145,7 +145,8 @@ IFS= nto-qnx* | linux-* | uclinux-uclibc* \ | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* \ | netbsd*-eabi* | kopensolaris*-gnu* | cloudabi*-eabi* \ - | storm-chaos* | os2-emx* | rtmk-nova* | managarm-*) + | storm-chaos* | os2-emx* | rtmk-nova* | managarm-* \ + | windows-* ) basic_machine=$field1 basic_os=$maybe_os ;; @@ -943,7 +944,7 @@ IFS= EOF IFS=$saved_IFS ;; - # We use `pc' rather than `unknown' + # We use 'pc' rather than 'unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) @@ -1075,7 +1076,7 @@ IFS= pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) cpu=i586 ;; - pentiumpro-* | p6-* | 6x86-* | athlon-* | athalon_*-*) + pentiumpro-* | p6-* | 6x86-* | athlon-* | athlon_*-*) cpu=i686 ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) @@ -1180,7 +1181,7 @@ IFS= case $cpu in 1750a | 580 \ | a29k \ - | aarch64 | aarch64_be \ + | aarch64 | aarch64_be | aarch64c | arm64ec \ | abacus \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] \ @@ -1199,12 +1200,14 @@ IFS= | d10v | d30v | dlx | dsp16xx \ | e2k | elxsi | epiphany \ | f30[01] | f700 | fido | fr30 | frv | ft32 | fx80 \ + | javascript \ | h8300 | h8500 \ | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i*86 | i860 | i960 | ia16 | ia64 \ | ip2k | iq2000 \ | k1om \ + | kvx \ | le32 | le64 \ | lm32 \ | loongarch32 | loongarch64 \ @@ -1213,36 +1216,13 @@ IFS= | m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x \ | m88110 | m88k | maxq | mb | mcore | mep | metag \ | microblaze | microblazeel \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64eb | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa32r3 | mipsisa32r3el \ - | mipsisa32r5 | mipsisa32r5el \ - | mipsisa32r6 | mipsisa32r6el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64r3 | mipsisa64r3el \ - | mipsisa64r5 | mipsisa64r5el \ - | mipsisa64r6 | mipsisa64r6el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipsr5900 | mipsr5900el \ - | mipstx39 | mipstx39el \ + | mips* \ | mmix \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ + | nanomips* \ | nds32 | nds32le | nds32be \ | nfp \ | nios | nios2 | nios2eb | nios2el \ @@ -1274,6 +1254,7 @@ IFS= | ubicom32 \ | v70 | v850 | v850e | v850e1 | v850es | v850e2 | v850e2v3 \ | vax \ + | vc4 \ | visium \ | w65 \ | wasm32 | wasm64 \ @@ -1285,7 +1266,7 @@ IFS= ;; *) - echo Invalid configuration \`"$1"\': machine \`"$cpu-$vendor"\' not recognized 1>&2 + echo "Invalid configuration '$1': machine '$cpu-$vendor' not recognized" 1>&2 exit 1 ;; esac @@ -1306,11 +1287,12 @@ IFS= # Decode manufacturer-specific aliases for certain operating systems. -if test x$basic_os != x +if test x"$basic_os" != x then # First recognize some ad-hoc cases, or perhaps split kernel-os, or else just # set os. +obj= case $basic_os in gnu/linux*) kernel=linux @@ -1510,10 +1492,16 @@ IFS= os=eabi ;; *) - os=elf + os= + obj=elf ;; esac ;; + aout* | coff* | elf* | pe*) + # These are machine code file formats, not OSes + obj=$os + os= + ;; *) # No normalization, but not necessarily accepted, that comes below. ;; @@ -1532,12 +1520,15 @@ IFS= # system, and we'll never get to this point. kernel= +obj= case $cpu-$vendor in score-*) - os=elf + os= + obj=elf ;; spu-*) - os=elf + os= + obj=elf ;; *-acorn) os=riscix1.2 @@ -1547,28 +1538,35 @@ kernel= os=gnu ;; arm*-semi) - os=aout + os= + obj=aout ;; c4x-* | tic4x-*) - os=coff + os= + obj=coff ;; c8051-*) - os=elf + os= + obj=elf ;; clipper-intergraph) os=clix ;; hexagon-*) - os=elf + os= + obj=elf ;; tic54x-*) - os=coff + os= + obj=coff ;; tic55x-*) - os=coff + os= + obj=coff ;; tic6x-*) - os=coff + os= + obj=coff ;; # This must come before the *-dec entry. pdp10-*) @@ -1590,19 +1588,24 @@ kernel= os=sunos3 ;; m68*-cisco) - os=aout + os= + obj=aout ;; mep-*) - os=elf + os= + obj=elf ;; mips*-cisco) - os=elf + os= + obj=elf ;; - mips*-*) - os=elf + mips*-*|nanomips*-*) + os= + obj=elf ;; or32-*) - os=coff + os= + obj=coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=sysv3 @@ -1611,7 +1614,8 @@ kernel= os=sunos4.1.1 ;; pru-*) - os=elf + os= + obj=elf ;; *-be) os=beos @@ -1692,10 +1696,12 @@ kernel= os=uxpv ;; *-rom68k) - os=coff + os= + obj=coff ;; *-*bug) - os=coff + os= + obj=coff ;; *-apple) os=macos @@ -1713,10 +1719,11 @@ kernel= fi -# Now, validate our (potentially fixed-up) OS. +# Now, validate our (potentially fixed-up) individual pieces (OS, OBJ). + case $os in # Sometimes we do "kernel-libc", so those need to count as OSes. - musl* | newlib* | relibc* | uclibc*) + llvm* | musl* | newlib* | relibc* | uclibc*) ;; # Likewise for "kernel-abi" eabi* | gnueabi*) @@ -1724,6 +1731,9 @@ kernel= # VxWorks passes extra cpu info in the 4th filed. simlinux | simwindows | spe) ;; + # See `case $cpu-$os` validation below + ghcjs) + ;; # Now accept the basic system types. # The portable systems comes first. # Each alternative MUST end in a * to match a version number. @@ -1732,7 +1742,7 @@ kernel= | hpux* | unos* | osf* | luna* | dgux* | auroraux* | solaris* \ | sym* | plan9* | psp* | sim* | xray* | os68k* | v88r* \ | hiux* | abug | nacl* | netware* | windows* \ - | os9* | macos* | osx* | ios* \ + | os9* | macos* | osx* | ios* | tvos* | watchos* \ | mpw* | magic* | mmixware* | mon960* | lnews* \ | amigaos* | amigados* | msdos* | newsos* | unicos* | aof* \ | aos* | aros* | cloudabi* | sortix* | twizzler* \ @@ -1741,11 +1751,11 @@ kernel= | mirbsd* | netbsd* | dicos* | openedition* | ose* \ | bitrig* | openbsd* | secbsd* | solidbsd* | libertybsd* | os108* \ | ekkobsd* | freebsd* | riscix* | lynxos* | os400* \ - | bosx* | nextstep* | cxux* | aout* | elf* | oabi* \ - | ptx* | coff* | ecoff* | winnt* | domain* | vsta* \ + | bosx* | nextstep* | cxux* | oabi* \ + | ptx* | ecoff* | winnt* | domain* | vsta* \ | udi* | lites* | ieee* | go32* | aux* | hcos* \ | chorusrdb* | cegcc* | glidix* | serenity* \ - | cygwin* | msys* | pe* | moss* | proelf* | rtems* \ + | cygwin* | msys* | moss* | proelf* | rtems* \ | midipix* | mingw32* | mingw64* | mint* \ | uxpv* | beos* | mpeix* | udk* | moxiebox* \ | interix* | uwin* | mks* | rhapsody* | darwin* \ @@ -1758,62 +1768,116 @@ kernel= | onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \ | midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \ | nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \ - | fiwix* | mlibc* ) + | fiwix* | mlibc* | cos* | mbr* | ironclad* ) ;; # This one is extra strict with allowed versions sco3.2v2 | sco3.2v[4-9]* | sco5v6*) # Don't forget version if it is 3.2v4 or newer. ;; + # This refers to builds using the UEFI calling convention + # (which depends on the architecture) and PE file format. + # Note that this is both a different calling convention and + # different file format than that of GNU-EFI + # (x86_64-w64-mingw32). + uefi) + ;; none) ;; - kernel* ) + kernel* | msvc* ) # Restricted further below ;; + '') + if test x"$obj" = x + then + echo "Invalid configuration '$1': Blank OS only allowed with explicit machine code file format" 1>&2 + fi + ;; *) - echo Invalid configuration \`"$1"\': OS \`"$os"\' not recognized 1>&2 + echo "Invalid configuration '$1': OS '$os' not recognized" 1>&2 + exit 1 + ;; +esac + +case $obj in + aout* | coff* | elf* | pe*) + ;; + '') + # empty is fine + ;; + *) + echo "Invalid configuration '$1': Machine code format '$obj' not recognized" 1>&2 + exit 1 + ;; +esac + +# Here we handle the constraint that a (synthetic) cpu and os are +# valid only in combination with each other and nowhere else. +case $cpu-$os in + # The "javascript-unknown-ghcjs" triple is used by GHC; we + # accept it here in order to tolerate that, but reject any + # variations. + javascript-ghcjs) + ;; + javascript-* | *-ghcjs) + echo "Invalid configuration '$1': cpu '$cpu' is not valid with os '$os$obj'" 1>&2 exit 1 ;; esac # As a final step for OS-related things, validate the OS-kernel combination # (given a valid OS), if there is a kernel. -case $kernel-$os in - linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ - | linux-musl* | linux-relibc* | linux-uclibc* | linux-mlibc* ) +case $kernel-$os-$obj in + linux-gnu*- | linux-android*- | linux-dietlibc*- | linux-llvm*- \ + | linux-mlibc*- | linux-musl*- | linux-newlib*- \ + | linux-relibc*- | linux-uclibc*- ) ;; - uclinux-uclibc* ) + uclinux-uclibc*- ) ;; - managarm-mlibc* | managarm-kernel* ) + managarm-mlibc*- | managarm-kernel*- ) ;; - -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* | -mlibc* ) + windows*-msvc*-) + ;; + -dietlibc*- | -llvm*- | -mlibc*- | -musl*- | -newlib*- | -relibc*- \ + | -uclibc*- ) # These are just libc implementations, not actual OSes, and thus # require a kernel. - echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + echo "Invalid configuration '$1': libc '$os' needs explicit kernel." 1>&2 exit 1 ;; - -kernel* ) - echo "Invalid configuration \`$1': \`$os' needs explicit kernel." 1>&2 + -kernel*- ) + echo "Invalid configuration '$1': '$os' needs explicit kernel." 1>&2 exit 1 ;; - *-kernel* ) - echo "Invalid configuration \`$1': \`$kernel' does not support \`$os'." 1>&2 + *-kernel*- ) + echo "Invalid configuration '$1': '$kernel' does not support '$os'." 1>&2 exit 1 ;; - kfreebsd*-gnu* | kopensolaris*-gnu*) + *-msvc*- ) + echo "Invalid configuration '$1': '$os' needs 'windows'." 1>&2 + exit 1 ;; - vxworks-simlinux | vxworks-simwindows | vxworks-spe) + kfreebsd*-gnu*- | kopensolaris*-gnu*-) ;; - nto-qnx*) + vxworks-simlinux- | vxworks-simwindows- | vxworks-spe-) ;; - os2-emx) + nto-qnx*-) + ;; + os2-emx-) + ;; + *-eabi*- | *-gnueabi*-) ;; - *-eabi* | *-gnueabi*) + none--*) + # None (no kernel, i.e. freestanding / bare metal), + # can be paired with an machine code file format ;; - -*) + -*-) # Blank kernel with real OS is always fine. ;; - *-*) - echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + --*) + # Blank kernel and OS with real machine code file format is always fine. + ;; + *-*-*) + echo "Invalid configuration '$1': Kernel '$kernel' not known to work with OS '$os'." 1>&2 exit 1 ;; esac @@ -1896,7 +1960,7 @@ kernel= ;; esac -echo "$cpu-$vendor-${kernel:+$kernel-}$os" +echo "$cpu-$vendor${kernel:+-$kernel}${os:+-$os}${obj:+-$obj}" exit # Local variables: -- 2.43.0 --=-=-=-- From debbugs-submit-bounces@debbugs.gnu.org Sat Jan 20 04:55:54 2024 Received: (at 68464) by debbugs.gnu.org; 20 Jan 2024 09:55:54 +0000 Received: from localhost ([127.0.0.1]:60895 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rR84w-0004vs-2Q for submit@debbugs.gnu.org; Sat, 20 Jan 2024 04:55:54 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:34864) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rR84t-0004vc-Kb for 68464@debbugs.gnu.org; Sat, 20 Jan 2024 04:55:52 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rR84j-0000L8-6C; Sat, 20 Jan 2024 04:55:41 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=2IpoQtAL8o5xR8JByOQX19g5O+znb8msOVA0aVjHr5I=; b=eTuRA/2yx4vP2MnkgAno 7Q4LdIZzMAcZCmvpCrEeZ3VtYimoKJKy2DfmOZosjWbvQpfGwL/Bmoq1fmSGjd728MqW5bblE0Nx4 w6xo4sRW5ykO/VBRZZ8Xy+NNGfHv0zXhOdnhDpRYvIsK4z0zqXbE0XYjeqisKZauhlXiZmCYaHsu7 g3QlGy4309elgMyg2nzI+2Kh8aONFk0XL1n8WYypZngktiFqiVYVPdzZhO7xYv8kmVr9XSfOdSVCa hcFi3PhS3KgPd0SyChOUTCt32Ej0nN1alpuFiFMNdop8C0uLqSrnhkQyJtBhYnMCufDrfCgNlS3pr LFuziGjND8Fmgg==; Date: Sat, 20 Jan 2024 11:55:16 +0200 Message-Id: <83edectjln.fsf@gnu.org> From: Eli Zaretskii To: Pierre =?utf-8?Q?T=C3=A9choueyres?= , Paul Eggert In-Reply-To: <878r4pauwq.fsf@killashandra.ballybran.fr> (message from Pierre =?utf-8?Q?T=C3=A9choueyres?= on Tue, 16 Jan 2024 21:24:37 +0100) Subject: Re: bug#68464: 30.0.50; autogen.sh creating modified files in build-aux with Autoconf 2.72 References: <838r4qeonh.fsf@gnu.org> <878r4q5nzx.fsf@killashandra.ballybran.fr> <87le8q710o.fsf@igel.home> <83jzoac5uk.fsf@gnu.org> <878r4pauwq.fsf@killashandra.ballybran.fr> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68464 Cc: gerd.moellmann@gmail.com, 68464@debbugs.gnu.org, schwab@linux-m68k.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > From: Pierre Téchoueyres > Cc: Andreas Schwab , gerd.moellmann@gmail.com, > 68464@debbugs.gnu.org > Date: Tue, 16 Jan 2024 21:24:37 +0100 > > >> From: Andreas Schwab > >> Cc: Eli Zaretskii , Gerd Möllmann > >> , > >> 68464@debbugs.gnu.org > >> Date: Mon, 15 Jan 2024 22:13:59 +0100 > >> > >> If you want to update config.sub and config.guess you should copy them > >> verbatim from the config project, not edit them randomly. > > > > Right. We don't maintain these files, so the changes, if they are > > needed, should be submitted to their upstream. > > > > So, I've used the latest ones availables on https://git.savannah.gnu.org/cgit/config.git/ > And updated the patch consequently. > > This should prevent their overwritting by autoreconf. Thanks. Paul, is this version okay to install on our master branch? From debbugs-submit-bounces@debbugs.gnu.org Sat Jan 20 19:51:19 2024 Received: (at 68464-done) by debbugs.gnu.org; 21 Jan 2024 00:51:19 +0000 Received: from localhost ([127.0.0.1]:36184 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rRM3T-0000G1-H7 for submit@debbugs.gnu.org; Sat, 20 Jan 2024 19:51:19 -0500 Received: from mail.cs.ucla.edu ([131.179.128.66]:35666) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rRM3S-0000Fo-BA for 68464-done@debbugs.gnu.org; Sat, 20 Jan 2024 19:51:18 -0500 Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 192773C005171; Sat, 20 Jan 2024 16:51:09 -0800 (PST) Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10032) with ESMTP id NEuW2I7b7PPL; Sat, 20 Jan 2024 16:51:07 -0800 (PST) Received: from localhost (localhost [127.0.0.1]) by mail.cs.ucla.edu (Postfix) with ESMTP id 118423C005173; Sat, 20 Jan 2024 16:51:07 -0800 (PST) DKIM-Filter: OpenDKIM Filter v2.10.3 mail.cs.ucla.edu 118423C005173 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cs.ucla.edu; s=9D0B346E-2AEB-11ED-9476-E14B719DCE6C; t=1705798267; bh=0J+0T/1Db7MC24cK23Xkg0OPzFV+xsEMBcKMkjyIz5g=; h=Message-ID:Date:MIME-Version:To:From; b=pwkFkd8Xj3h+sE+aQBbBY2qQ7VXQw/5PllN6D4s+VQlimGwLEwsAbZIY+7tWMO81C 4jgbrIwTbMsBijNfhgcf8142Daz5WxaXawaGMs+IHcHiAPbm2lmE0piyx46BLGZpBE JKekAmjYfKiOK4F8OT6WPIQRTy2iRoEd4K9lxavioL5q6pyK4vP+UejB56AReQhiNk sYcqmuMWznA2vCyE+prlNowKp2cTRZ+aXlVe50gHDOYVlMVGLYTZisZYTPQ+LRLmL5 tfJRj+uznEqmTsoNCe4NGFRsNjxvvNuLTs8sKlekH/Va6Aqr0yWetMKcj7B4Ea+3ow EC4s0XdKFJiow== X-Virus-Scanned: amavis at mail.cs.ucla.edu Received: from mail.cs.ucla.edu ([127.0.0.1]) by localhost (mail.cs.ucla.edu [127.0.0.1]) (amavis, port 10026) with ESMTP id ZAJJMvtVsyxa; Sat, 20 Jan 2024 16:51:06 -0800 (PST) Received: from [192.168.254.12] (unknown [47.148.192.211]) by mail.cs.ucla.edu (Postfix) with ESMTPSA id CA4013C005171; Sat, 20 Jan 2024 16:51:06 -0800 (PST) Content-Type: multipart/mixed; boundary="------------Y9zKd6YDOALoFFolFRTvw4ke" Message-ID: <2cdc3032-6173-4a24-895d-f4c0c2722995@cs.ucla.edu> Date: Sat, 20 Jan 2024 16:51:06 -0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: bug#68464: 30.0.50; autogen.sh creating modified files in build-aux with Autoconf 2.72 Content-Language: en-US To: Eli Zaretskii References: <838r4qeonh.fsf@gnu.org> <878r4q5nzx.fsf@killashandra.ballybran.fr> <87le8q710o.fsf@igel.home> <83jzoac5uk.fsf@gnu.org> <878r4pauwq.fsf@killashandra.ballybran.fr> <83edectjln.fsf@gnu.org> From: Paul Eggert Organization: UCLA Computer Science Department In-Reply-To: <83edectjln.fsf@gnu.org> X-Debbugs-Envelope-To: 68464-done Cc: gerd.moellmann@gmail.com, schwab@linux-m68k.org, 68464-done@debbugs.gnu.org, =?UTF-8?Q?Pierre_T=C3=A9choueyres?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" This is a multi-part message in MIME format. --------------Y9zKd6YDOALoFFolFRTvw4ke Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 2024-01-20 01:55, Eli Zaretskii wrote: > Paul, is this version okay to install on our master branch? Something was off, as that patch said the timestamps of build-aux/config.guess and build-aux/config.sub were both 2022-09-17, whereas the master branch said they were 2023-07-20 and 2023-07-31 respectively. I suppose this patch was generated against some other Emacs branch? Anyway, these two files (along with other Gnulib-derived files in the Emacs repository) are updated automatically by admin/merge-gnulib. Today I did such an update on the master branch, so config.guess and config.sub are now updated to their latest versions. I then reproduced the problem that Gerd mentioned. Gnulib's config.guess etc. tend to be more up-to-date, and anyway the Emacs build is more reproducible if we use the Emacs repository version of config.guess etc. (instead of whatever version the developer's Autoconf happens to have), so I installed the attached patch which fixed the problem for me. Boldly closing the bug report; we can reopen it if there are still issues here. --------------Y9zKd6YDOALoFFolFRTvw4ke Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-autogen.sh-s-spurious-git-diff-output.patch" Content-Disposition: attachment; filename="0001-Fix-autogen.sh-s-spurious-git-diff-output.patch" Content-Transfer-Encoding: base64 RnJvbSBhZmM5Y2QxNzIxYzU4NmY5NjBhZjVlMzI0YTYxNDE4Nzc1YWM0NTQzIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBTYXQsIDIwIEphbiAyMDI0IDE2OjI2OjQ1IC0wODAwClN1YmplY3Q6IFtQQVRD SF0gPT9VVEYtOD9xP0ZpeD0yMGF1dG9nZW4uc2g9RTI9ODA9OTlzPTIwc3B1cmlvdXM9MjA/ PQogPT9VVEYtOD9xPz1FMj04MD05OGdpdD0yMGRpZmY9RTI9ODA9OTk9MjBvdXRwdXQ/PQpN SU1FLVZlcnNpb246IDEuMApDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRG LTgKQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAoKUHJvYmxlbSByZXBvcnRlZCBi eSBHZXJkIE3DtmxsbWFubiAoQnVnIzY4NDY0KS4KKiAuZ2l0aWdub3JlOiBJZ25vcmUgZmls ZXMgaW4gZXhlYyB0aGF0IGFyZSBub3cgY29waWVkIGZyb20gYnVpbGQtYXV4LgoqIGFkbWlu L21lcmdlLWdudWxpYiAoYXZvaWRlZF9mbGFncyk6IEluc3RlYWQgb2YgY2xlYXJpbmcKYXV0 b200dGUuY2FjaGUgaGVyZSAuLi4KKiBhdXRvZ2VuLnNoIChkb19naXQpOiAuLi4gY2xlYXIg aXQgaGVyZS4KVXNlIGNvbmZpZy5ndWVzcywgY29uZmlnLnN1YiBhbmQgaW5zdGFsbC1zaCBm cm9tCnRoZSBFbWFjcyByZXBvc2l0b3J5LCBhcyB0aGV5IGFyZSBtb3JlIGxpa2VseSB0byBi ZSB1cCB0byBkYXRlLgpUaGlzIGF2b2lkcyB1bm5lY2Vzc2FyeSBkaWZmZXJlbmNlcyBhbW9u ZyBkaWZmZXJlbnQgYnVpbGRlcnMsCmFuZCBhdm9pZHMgdW5uZWNlc3Nhcnkg4oCYZ2l0IGRp ZmbigJkgb3V0cHV0IGFmdGVyIGF1dG9nZW4uc2guCkFsc28sIGNvcHkgdGhlc2UgZmlsZXMg ZnJvbSBidWlsZC1hdXggdG8gZXhlYyBzaW5jZSB0aGVyZQpzaG91bGQgYmUgbm8gZGlmZmVy ZW5jZSBiZXR3ZWVuIHRoZSB0d28gY29waWVzLgoqIGV4ZWMvY29uZmlnLmd1ZXNzLCBleGVj L2NvbmZpZy5zdWIsIGV4ZWMvaW5zdGFsbC1zaDoKUmVtb3ZlIGZyb20gcmVwb3NpdG9yeSwg YXMgYXV0b2dlbi5zaCBub3cgY29waWVzIHRoZW0gZnJvbSBidWlsZC1hdXguCi0tLQogLmdp dGlnbm9yZSAgICAgICAgIHwgICAgMyArCiBhZG1pbi9tZXJnZS1nbnVsaWIgfCAgICAzIC0K IGF1dG9nZW4uc2ggICAgICAgICB8ICAgMTYgKwogZXhlYy9jb25maWcuZ3Vlc3MgIHwgMTc3 NCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogZXhlYy9jb25m aWcuc3ViICAgIHwgMTkwNyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQogZXhlYy9pbnN0YWxsLXNoICAgIHwgIDU0MSAtLS0tLS0tLS0tLS0tCiA2IGZp bGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDQyMjUgZGVsZXRpb25zKC0pCiBkZWxl dGUgbW9kZSAxMDA3NTUgZXhlYy9jb25maWcuZ3Vlc3MKIGRlbGV0ZSBtb2RlIDEwMDc1NSBl eGVjL2NvbmZpZy5zdWIKIGRlbGV0ZSBtb2RlIDEwMDc1NSBleGVjL2luc3RhbGwtc2gKCmRp ZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdpdGlnbm9yZQppbmRleCA0OWY4YzU3ZTJkNS4u MjljNTcxYTNkY2IgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpA QCAtMzc2LDcgKzM3NiwxMCBAQCBfZ2RiX2hpc3RvcnkKIAogIyBGaWxlcyBpZ25vcmVkIGlu IGV4ZWMvLgogZXhlYy9hY2xvY2FsLm00CitleGVjL2NvbmZpZy5ndWVzcworZXhlYy9jb25m aWcuc3ViCiBleGVjL2NvbmZpZy5zdGF0dXMKK2V4ZWMvaW5zdGFsbC1zaAogZXhlYy9sb2Fk ZXIKIGV4ZWMvdGVzdAogZXhlYy9leGVjMQpkaWZmIC0tZ2l0IGEvYWRtaW4vbWVyZ2UtZ251 bGliIGIvYWRtaW4vbWVyZ2UtZ251bGliCmluZGV4IGVkYWExZTA4YjU3Li41MjQ2ZmIxNGUx ZSAxMDA3NTUKLS0tIGEvYWRtaW4vbWVyZ2UtZ251bGliCisrKyBiL2FkbWluL21lcmdlLWdu dWxpYgpAQCAtMTA3LDkgKzEwNyw2IEBAIGdudWxpYl9zcmNkaXI9CiAjIGdudWxpYi10b29s IGhhcyBwcm9ibGVtcyB3aXRoIGEgYmFyZSBjaGVja291dCAoQnVnIzMyNDUyIzY1KS4KIHRl c3QgLWYgY29uZmlndXJlIHx8IC4vYXV0b2dlbi5zaCB8fCBleGl0CiAKLSMgT2xkIGNhY2hl cyBjYW4gY29uZnVzZSBhdXRvY29uZiB3aGVuIHNvbWUgR251bGliLXJlbGF0ZWQgY2hhbmdl cyB0YWtlIGVmZmVjdC4KLXJtIC1mciBhdXRvbTR0ZS5jYWNoZSB8fCBleGl0Ci0KIGF2b2lk ZWRfZmxhZ3M9CiBmb3IgbW9kdWxlIGluICRBVk9JREVEX01PRFVMRVM7IGRvCiAgIGF2b2lk ZWRfZmxhZ3M9IiRhdm9pZGVkX2ZsYWdzIC0tYXZvaWQ9JG1vZHVsZSIKZGlmZiAtLWdpdCBh L2F1dG9nZW4uc2ggYi9hdXRvZ2VuLnNoCmluZGV4IGJlNDE3NzFjYWU3Li5mNTY5NjZhZTBk MSAxMDA3NTUKLS0tIGEvYXV0b2dlbi5zaAorKysgYi9hdXRvZ2VuLnNoCkBAIC0yMzksNiAr MjM5LDE2IEBAIGRvX2dpdD0KIAogICBmaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAj IGRvX2NoZWNrCiAKKyAgIyBTdGFsZSBjYWNoZXMgY2FuIGNvbmZ1c2UgYXV0b2NvbmYuCisg IHJtIC1mciBhdXRvbTR0ZS5jYWNoZSBleGVjL2F1dG9tNHRlLmNhY2hlIHx8IGV4aXQKKwor ICAjIEluIGJ1aWxkLWF1eCBzYXZlIGNvbmZpZy5ndWVzcywgY29uZmlnLnN1YiBhbmQgaW5z dGFsbC1zaAorICAjIGluIGNhc2UgYXV0b3JlY29uZiBvdmVyd3JpdGVzIHRoZW0sIGFzIHdl IHJlbHkgb24gdGhlIGNvcGllcworICAjIGluIEdpdCwgd2hpY2ggYXJlIHVwZGF0ZWQgYnkg YWRtaW4vbWVyZ2UtZ251bGliLgorICBmb3IgZmlsZSBpbiBjb25maWcuZ3Vlc3MgY29uZmln LnN1YiBpbnN0YWxsLXNoOyBkbworICAgIGNwIC1wIGJ1aWxkLWF1eC8kZmlsZSBidWlsZC1h dXgvJGZpbGUudG1wIHx8IGV4aXQKKyAgZG9uZQorCiAgICMgQnVpbGQgYWNsb2NhbC5tNCBo ZXJlIHNvIHRoYXQgYXV0b3JlY29uZiBuZWVkIG5vdCB1c2UgYWNsb2NhbC4KICAgIyBhY2xv Y2FsIGlzIHBhcnQgb2YgQXV0b21ha2UgYW5kIG1pZ2h0IG5vdCBiZSBpbnN0YWxsZWQsIGFu ZAogICAjIGF1dG9yZWNvbmYgc2tpcHMgYWNsb2NhbCBpZiBhY2xvY2FsLm00IGlzIGFscmVh ZHkgc3VwcGxpZWQuCkBAIC0yNjksNiArMjc5LDEyIEBAIGRvX2dpdD0KICAgIyBOb3csIHJ1 biBhdXRvcmVjb25mIGluc2lkZSB0aGUgZXhlYyBkaXJlY3RvcnkgdG8gZ2VuZXJhdGUgaXRz CiAgICMgY29uZmlndXJlIHNjcmlwdC4KICAgYXV0b3JlY29uZiAtZmkgZXhlYyB8fCBleGl0 CisKKyAgIyBSZXN0b3JlIGNvbmZpZy5ndWVzcyBldGMuIGluIGJ1aWxkLWF1eCwgYW5kIGNv cHkgdGhlbSB0byBleGVjLgorICBmb3IgZmlsZSBpbiBjb25maWcuZ3Vlc3MgY29uZmlnLnN1 YiBpbnN0YWxsLXNoOyBkbworICAgIGNwIGJ1aWxkLWF1eC8kZmlsZS50bXAgZXhlYy8kZmls ZSAmJgorICAgIG12IGJ1aWxkLWF1eC8kZmlsZS50bXAgYnVpbGQtYXV4LyRmaWxlIHx8IGV4 aXQKKyAgZG9uZQogZmkKIAogCmRpZmYgLS1naXQgYS9leGVjL2NvbmZpZy5ndWVzcyBiL2V4 ZWMvY29uZmlnLmd1ZXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA2Mjk3NGFk YjNkZC4uMDAwMDAwMDAwMDAKLS0tIGEvZXhlYy9jb25maWcuZ3Vlc3MKKysrIC9kZXYvbnVs bApAQCAtMSwxNzc0ICswLDAgQEAKLSMhL3Vzci9iaW4vc2gKLSMgQXR0ZW1wdCB0byBndWVz cyBhIGNhbm9uaWNhbCBzeXN0ZW0gbmFtZS4KLSMgICBDb3B5cmlnaHQgMTk5Mi0yMDI0IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0jIHNoZWxsY2hlY2sgZGlzYWJsZT1T QzIwMDYsU0MyMjY4ICMgc2VlIGJlbG93IGZvciByYXRpb25hbGUKLQotdGltZXN0YW1wPScy MDIzLTA2LTIzJwotCi0jIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0jIHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yCi0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRo aXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLCBidXQKLSMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg aW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIyBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgotIwotIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSwgaWYgeW91Ci0jIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBh cnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQotIyBjb25maWd1cmF0aW9uIHNjcmlw dCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgotIyB0 aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBv ZiB0aGF0Ci0jIHByb2dyYW0uICBUaGlzIEV4Y2VwdGlvbiBpcyBhbiBhZGRpdGlvbmFsIHBl cm1pc3Npb24gdW5kZXIgc2VjdGlvbiA3Ci0jIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSwgdmVyc2lvbiAzICgiR1BMdjMiKS4KLSMKLSMgT3JpZ2luYWxseSB3cml0dGVu IGJ5IFBlciBCb3RobmVyOyBtYWludGFpbmVkIHNpbmNlIDIwMDAgYnkgQmVuIEVsbGlzdG9u LgotIwotIyBZb3UgY2FuIGdldCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBzY3JpcHQg ZnJvbToKLSMgaHR0cHM6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2NvbmZpZy5naXQv cGxhaW4vY29uZmlnLmd1ZXNzCi0jCi0jIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8gPGNvbmZp Zy1wYXRjaGVzQGdudS5vcmc+LgotCi0KLSMgVGhlICJzaGVsbGNoZWNrIGRpc2FibGUiIGxp bmUgYWJvdmUgdGhlIHRpbWVzdGFtcCBpbmhpYml0cyBjb21wbGFpbnRzCi0jIGFib3V0IGZl YXR1cmVzIGFuZCBsaW1pdGF0aW9ucyBvZiB0aGUgY2xhc3NpYyBCb3VybmUgc2hlbGwgdGhh dCB3ZXJlCi0jIHN1cGVyc2VkZWQgb3IgbGlmdGVkIGluIFBPU0lYLiAgSG93ZXZlciwgdGhp cyBzY3JpcHQgaWRlbnRpZmllcyBhIHdpZGUKLSMgdmFyaWV0eSBvZiBwcmUtUE9TSVggc3lz dGVtcyB0aGF0IGRvIG5vdCBoYXZlIFBPU0lYIHNoZWxscyBhdCBhbGwsIGFuZAotIyBldmVu IHNvbWUgcmVhc29uYWJseSBjdXJyZW50IHN5c3RlbXMgKFNvbGFyaXMgMTAgYXMgY2FzZS1p bi1wb2ludCkgc3RpbGwKLSMgaGF2ZSBhIHByZS1QT1NJWCAvYmluL3NoLgotCi0KLW1lPWBl Y2hvICIkMCIgfCBzZWQgLWUgJ3MsLiovLCwnYAotCi11c2FnZT0iXAotVXNhZ2U6ICQwIFtP UFRJT05dCi0KLU91dHB1dCB0aGUgY29uZmlndXJhdGlvbiBuYW1lIG9mIHRoZSBzeXN0ZW0g JyRtZScgaXMgcnVuIG9uLgotCi1PcHRpb25zOgotICAtaCwgLS1oZWxwICAgICAgICAgcHJp bnQgdGhpcyBoZWxwLCB0aGVuIGV4aXQKLSAgLXQsIC0tdGltZS1zdGFtcCAgIHByaW50IGRh dGUgb2YgbGFzdCBtb2RpZmljYXRpb24sIHRoZW4gZXhpdAotICAtdiwgLS12ZXJzaW9uICAg ICAgcHJpbnQgdmVyc2lvbiBudW1iZXIsIHRoZW4gZXhpdAotCi1SZXBvcnQgYnVncyBhbmQg cGF0Y2hlcyB0byA8Y29uZmlnLXBhdGNoZXNAZ251Lm9yZz4uIgotCi12ZXJzaW9uPSJcCi1H TlUgY29uZmlnLmd1ZXNzICgkdGltZXN0YW1wKQotCi1PcmlnaW5hbGx5IHdyaXR0ZW4gYnkg UGVyIEJvdGhuZXIuCi1Db3B5cmlnaHQgMTk5Mi0yMDIzIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotCi1UaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZv ciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwotd2FycmFudHk7IG5vdCBldmVu IGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP U0UuIgotCi1oZWxwPSIKLVRyeSAnJG1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24u IgotCi0jIFBhcnNlIGNvbW1hbmQgbGluZQotd2hpbGUgdGVzdCAkIyAtZ3QgMCA7IGRvCi0g IGNhc2UgJDEgaW4KLSAgICAtLXRpbWUtc3RhbXAgfCAtLXRpbWUqIHwgLXQgKQotICAgICAg IGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCA7OwotICAgIC0tdmVyc2lvbiB8IC12ICkKLSAg ICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDs7Ci0gICAgLS1oZWxwIHwgLS1oKiB8IC1o ICkKLSAgICAgICBlY2hvICIkdXNhZ2UiOyBleGl0IDs7Ci0gICAgLS0gKSAgICAgIyBTdG9w IG9wdGlvbiBwcm9jZXNzaW5nCi0gICAgICAgc2hpZnQ7IGJyZWFrIDs7Ci0gICAgLSApCSMg VXNlIHN0ZGluIGFzIGlucHV0LgotICAgICAgIGJyZWFrIDs7Ci0gICAgLSogKQotICAgICAg IGVjaG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIgPiYyCi0gICAgICAgZXhpdCAx IDs7Ci0gICAgKiApCi0gICAgICAgYnJlYWsgOzsKLSAgZXNhYwotZG9uZQotCi1pZiB0ZXN0 ICQjICE9IDA7IHRoZW4KLSAgZWNobyAiJG1lOiB0b28gbWFueSBhcmd1bWVudHMkaGVscCIg PiYyCi0gIGV4aXQgMQotZmkKLQotIyBKdXN0IGluIGNhc2UgaXQgY2FtZSBmcm9tIHRoZSBl bnZpcm9ubWVudC4KLUdVRVNTPQotCi0jIENDX0ZPUl9CVUlMRCAtLSBjb21waWxlciB1c2Vk IGJ5IHRoaXMgc2NyaXB0LiBOb3RlIHRoYXQgdGhlIHVzZSBvZiBhCi0jIGNvbXBpbGVyIHRv IGFpZCBpbiBzeXN0ZW0gZGV0ZWN0aW9uIGlzIGRpc2NvdXJhZ2VkIGFzIGl0IHJlcXVpcmVz Ci0jIHRlbXBvcmFyeSBmaWxlcyB0byBiZSBjcmVhdGVkIGFuZCwgYXMgeW91IGNhbiBzZWUg YmVsb3csIGl0IGlzIGEKLSMgaGVhZGFjaGUgdG8gZGVhbCB3aXRoIGluIGEgcG9ydGFibGUg ZmFzaGlvbi4KLQotIyBIaXN0b3JpY2FsbHksICdDQ19GT1JfQlVJTEQnIHVzZWQgdG8gYmUg bmFtZWQgJ0hPU1RfQ0MnLiBXZSBzdGlsbAotIyB1c2UgJ0hPU1RfQ0MnIGlmIGRlZmluZWQs IGJ1dCBpdCBpcyBkZXByZWNhdGVkLgotCi0jIFBvcnRhYmxlIHRtcCBkaXJlY3RvcnkgY3Jl YXRpb24gaW5zcGlyZWQgYnkgdGhlIEF1dG9jb25mIHRlYW0uCi0KLXRtcD0KLSMgc2hlbGxj aGVjayBkaXNhYmxlPVNDMjE3MgotdHJhcCAndGVzdCAteiAiJHRtcCIgfHwgcm0gLWZyICIk dG1wIicgMCAxIDIgMTMgMTUKLQotc2V0X2NjX2Zvcl9idWlsZCgpIHsKLSAgICAjIHByZXZl bnQgbXVsdGlwbGUgY2FsbHMgaWYgJHRtcCBpcyBhbHJlYWR5IHNldAotICAgIHRlc3QgIiR0 bXAiICYmIHJldHVybiAwCi0gICAgOiAiJHtUTVBESVI9L3RtcH0iCi0gICAgIyBzaGVsbGNo ZWNrIGRpc2FibGU9U0MyMDM5LFNDMzAyOAotICAgIHsgdG1wPWAodW1hc2sgMDc3ICYmIG1r dGVtcCAtZCAiJFRNUERJUi9jZ1hYWFhYWCIpIDI+L2Rldi9udWxsYCAmJiB0ZXN0IC1uICIk dG1wIiAmJiB0ZXN0IC1kICIkdG1wIiA7IH0gfHwKLQl7IHRlc3QgLW4gIiRSQU5ET00iICYm IHRtcD0kVE1QRElSL2NnJCQtJFJBTkRPTSAmJiAodW1hc2sgMDc3ICYmIG1rZGlyICIkdG1w IiAyPi9kZXYvbnVsbCkgOyB9IHx8Ci0JeyB0bXA9JFRNUERJUi9jZy0kJCAmJiAodW1hc2sg MDc3ICYmIG1rZGlyICIkdG1wIiAyPi9kZXYvbnVsbCkgJiYgZWNobyAiV2FybmluZzogY3Jl YXRpbmcgaW5zZWN1cmUgdGVtcCBkaXJlY3RvcnkiID4mMiA7IH0gfHwKLQl7IGVjaG8gIiRt ZTogY2Fubm90IGNyZWF0ZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgaW4gJFRNUERJUiIgPiYy IDsgZXhpdCAxIDsgfQotICAgIGR1bW15PSR0bXAvZHVtbXkKLSAgICBjYXNlICR7Q0NfRk9S X0JVSUxELX0sJHtIT1NUX0NDLX0sJHtDQy19IGluCi0JLCwpICAgIGVjaG8gImludCB4OyIg PiAiJGR1bW15LmMiCi0JICAgICAgIGZvciBkcml2ZXIgaW4gY2MgZ2NjIGM4OSBjOTkgOyBk bwotCQkgICBpZiAoJGRyaXZlciAtYyAtbyAiJGR1bW15Lm8iICIkZHVtbXkuYyIpID4vZGV2 L251bGwgMj4mMSA7IHRoZW4KLQkJICAgICAgIENDX0ZPUl9CVUlMRD0kZHJpdmVyCi0JCSAg ICAgICBicmVhawotCQkgICBmaQotCSAgICAgICBkb25lCi0JICAgICAgIGlmIHRlc3QgeCIk Q0NfRk9SX0JVSUxEIiA9IHggOyB0aGVuCi0JCSAgIENDX0ZPUl9CVUlMRD1ub19jb21waWxl cl9mb3VuZAotCSAgICAgICBmaQotCSAgICAgICA7OwotCSwsKikgICBDQ19GT1JfQlVJTEQ9 JENDIDs7Ci0JLCosKikgIENDX0ZPUl9CVUlMRD0kSE9TVF9DQyA7OwotICAgIGVzYWMKLX0K LQotIyBUaGlzIGlzIG5lZWRlZCB0byBmaW5kIHVuYW1lIG9uIGEgUHlyYW1pZCBPU3ggd2hl biBydW4gaW4gdGhlIEJTRCB1bml2ZXJzZS4KLSMgKGdoYXppQG5vYy5ydXRnZXJzLmVkdSAx OTk0LTA4LTI0KQotaWYgdGVzdCAtZiAvLmF0dGJpbi91bmFtZSA7IHRoZW4KLQlQQVRIPSRQ QVRIOi8uYXR0YmluIDsgZXhwb3J0IFBBVEgKLWZpCi0KLVVOQU1FX01BQ0hJTkU9YCh1bmFt ZSAtbSkgMj4vZGV2L251bGxgIHx8IFVOQU1FX01BQ0hJTkU9dW5rbm93bgotVU5BTUVfUkVM RUFTRT1gKHVuYW1lIC1yKSAyPi9kZXYvbnVsbGAgfHwgVU5BTUVfUkVMRUFTRT11bmtub3du Ci1VTkFNRV9TWVNURU09YCh1bmFtZSAtcykgMj4vZGV2L251bGxgIHx8IFVOQU1FX1NZU1RF TT11bmtub3duCi1VTkFNRV9WRVJTSU9OPWAodW5hbWUgLXYpIDI+L2Rldi9udWxsYCB8fCBV TkFNRV9WRVJTSU9OPXVua25vd24KLQotY2FzZSAkVU5BTUVfU1lTVEVNIGluCi1MaW51eHxH TlV8R05VLyopCi0JTElCQz11bmtub3duCi0KLQlzZXRfY2NfZm9yX2J1aWxkCi0JY2F0IDw8 LUVPRiA+ICIkZHVtbXkuYyIKLQkjaW5jbHVkZSA8ZmVhdHVyZXMuaD4KLQkjaWYgZGVmaW5l ZChfX1VDTElCQ19fKQotCUxJQkM9dWNsaWJjCi0JI2VsaWYgZGVmaW5lZChfX2RpZXRsaWJj X18pCi0JTElCQz1kaWV0bGliYwotCSNlbGlmIGRlZmluZWQoX19HTElCQ19fKQotCUxJQkM9 Z251Ci0JI2Vsc2UKLQkjaW5jbHVkZSA8c3RkYXJnLmg+Ci0JLyogRmlyc3QgaGV1cmlzdGlj IHRvIGRldGVjdCBtdXNsIGxpYmMuICAqLwotCSNpZmRlZiBfX0RFRklORURfdmFfbGlzdAot CUxJQkM9bXVzbAotCSNlbmRpZgotCSNlbmRpZgotCUVPRgotCWNjX3NldF9saWJjPWAkQ0Nf Rk9SX0JVSUxEIC1FICIkZHVtbXkuYyIgMj4vZGV2L251bGwgfCBncmVwICdeTElCQycgfCBz ZWQgJ3MsICwsZydgCi0JZXZhbCAiJGNjX3NldF9saWJjIgotCi0JIyBTZWNvbmQgaGV1cmlz dGljIHRvIGRldGVjdCBtdXNsIGxpYmMuCi0JaWYgWyAiJExJQkMiID0gdW5rbm93biBdICYm Ci0JICAgY29tbWFuZCAtdiBsZGQgPi9kZXYvbnVsbCAmJgotCSAgIGxkZCAtLXZlcnNpb24g Mj4mMSB8IGdyZXAgLXEgXm11c2w7IHRoZW4KLQkJTElCQz1tdXNsCi0JZmkKLQotCSMgSWYg dGhlIHN5c3RlbSBsYWNrcyBhIGNvbXBpbGVyLCB0aGVuIGp1c3QgcGljayBnbGliYy4KLQkj IFdlIGNvdWxkIHByb2JhYmx5IHRyeSBoYXJkZXIuCi0JaWYgWyAiJExJQkMiID0gdW5rbm93 biBdOyB0aGVuCi0JCUxJQkM9Z251Ci0JZmkKLQk7OwotZXNhYwotCi0jIE5vdGU6IG9yZGVy IGlzIHNpZ25pZmljYW50IC0gdGhlIGNhc2UgYnJhbmNoZXMgYXJlIG5vdCBleGNsdXNpdmUu Ci0KLWNhc2UgJFVOQU1FX01BQ0hJTkU6JFVOQU1FX1NZU1RFTTokVU5BTUVfUkVMRUFTRTok VU5BTUVfVkVSU0lPTiBpbgotICAgICo6TmV0QlNEOio6KikKLQkjIE5ldEJTRCAobmJzZCkg dGFyZ2V0cyBzaG91bGQgKHdoZXJlIGFwcGxpY2FibGUpIG1hdGNoIG9uZSBvcgotCSMgbW9y ZSBvZiB0aGUgdHVwbGVzOiAqLSotbmV0YnNkZWxmKiwgKi0qLW5ldGJzZGFvdXQqLAotCSMg Ki0qLW5ldGJzZGVjb2ZmKiBhbmQgKi0qLW5ldGJzZCouICBGb3IgdGFyZ2V0cyB0aGF0IHJl Y2VudGx5Ci0JIyBzd2l0Y2hlZCB0byBFTEYsICotKi1uZXRic2QqIHdvdWxkIHNlbGVjdCB0 aGUgb2xkCi0JIyBvYmplY3QgZmlsZSBmb3JtYXQuICBUaGlzIHByb3ZpZGVzIGJvdGggZm9y d2FyZAotCSMgY29tcGF0aWJpbGl0eSBhbmQgYSBjb25zaXN0ZW50IG1lY2hhbmlzbSBmb3Ig c2VsZWN0aW5nIHRoZQotCSMgb2JqZWN0IGZpbGUgZm9ybWF0LgotCSMKLQkjIE5vdGU6IE5l dEJTRCBkb2Vzbid0IHBhcnRpY3VsYXJseSBjYXJlIGFib3V0IHRoZSB2ZW5kb3IKLQkjIHBv cnRpb24gb2YgdGhlIG5hbWUuICBXZSBhbHdheXMgc2V0IGl0IHRvICJ1bmtub3duIi4KLQlV TkFNRV9NQUNISU5FX0FSQ0g9YCh1bmFtZSAtcCAyPi9kZXYvbnVsbCB8fCBcCi0JICAgIC9z YmluL3N5c2N0bCAtbiBody5tYWNoaW5lX2FyY2ggMj4vZGV2L251bGwgfHwgXAotCSAgICAv dXNyL3NiaW4vc3lzY3RsIC1uIGh3Lm1hY2hpbmVfYXJjaCAyPi9kZXYvbnVsbCB8fCBcCi0J ICAgIGVjaG8gdW5rbm93bilgCi0JY2FzZSAkVU5BTUVfTUFDSElORV9BUkNIIGluCi0JICAg IGFhcmNoNjRlYikgbWFjaGluZT1hYXJjaDY0X2JlLXVua25vd24gOzsKLQkgICAgYXJtZWIp IG1hY2hpbmU9YXJtZWItdW5rbm93biA7OwotCSAgICBhcm0qKSBtYWNoaW5lPWFybS11bmtu b3duIDs7Ci0JICAgIHNoM2VsKSBtYWNoaW5lPXNobC11bmtub3duIDs7Ci0JICAgIHNoM2Vi KSBtYWNoaW5lPXNoLXVua25vd24gOzsKLQkgICAgc2g1ZWwpIG1hY2hpbmU9c2g1bGUtdW5r bm93biA7OwotCSAgICBlYXJtdiopCi0JCWFyY2g9YGVjaG8gIiRVTkFNRV9NQUNISU5FX0FS Q0giIHwgc2VkIC1lICdzLF5lXChhcm12WzAtOV1cKS4qJCxcMSwnYAotCQllbmRpYW49YGVj aG8gIiRVTkFNRV9NQUNISU5FX0FSQ0giIHwgc2VkIC1uZSAncyxeLipcKGViXCkkLFwxLHAn YAotCQltYWNoaW5lPSR7YXJjaH0ke2VuZGlhbn0tdW5rbm93bgotCQk7OwotCSAgICAqKSBt YWNoaW5lPSRVTkFNRV9NQUNISU5FX0FSQ0gtdW5rbm93biA7OwotCWVzYWMKLQkjIFRoZSBP cGVyYXRpbmcgU3lzdGVtIGluY2x1ZGluZyBvYmplY3QgZm9ybWF0LCBpZiBpdCBoYXMgc3dp dGNoZWQKLQkjIHRvIEVMRiByZWNlbnRseSAob3Igd2lsbCBpbiB0aGUgZnV0dXJlKSBhbmQg QUJJLgotCWNhc2UgJFVOQU1FX01BQ0hJTkVfQVJDSCBpbgotCSAgICBlYXJtKikKLQkJb3M9 bmV0YnNkZWxmCi0JCTs7Ci0JICAgIGFybSp8aTM4NnxtNjhrfG5zMzJrfHNoMyp8c3BhcmN8 dmF4KQotCQlzZXRfY2NfZm9yX2J1aWxkCi0JCWlmIGVjaG8gX19FTEZfXyB8ICRDQ19GT1Jf QlVJTEQgLUUgLSAyPi9kZXYvbnVsbCBcCi0JCQl8IGdyZXAgLXEgX19FTEZfXwotCQl0aGVu Ci0JCSAgICAjIE9uY2UgYWxsIHV0aWxpdGllcyBjYW4gYmUgRUNPRkYgKG5ldGJzZGVjb2Zm KSBvciBhLm91dCAobmV0YnNkYW91dCkuCi0JCSAgICAjIFJldHVybiBuZXRic2QgZm9yIGVp dGhlci4gIEZJWD8KLQkJICAgIG9zPW5ldGJzZAotCQllbHNlCi0JCSAgICBvcz1uZXRic2Rl bGYKLQkJZmkKLQkJOzsKLQkgICAgKikKLQkJb3M9bmV0YnNkCi0JCTs7Ci0JZXNhYwotCSMg RGV0ZXJtaW5lIEFCSSB0YWdzLgotCWNhc2UgJFVOQU1FX01BQ0hJTkVfQVJDSCBpbgotCSAg ICBlYXJtKikKLQkJZXhwcj0ncy9eZWFybXZbMC05XS8tZWFiaS87cy9lYiQvLycKLQkJYWJp PWBlY2hvICIkVU5BTUVfTUFDSElORV9BUkNIIiB8IHNlZCAtZSAiJGV4cHIiYAotCQk7Owot CWVzYWMKLQkjIFRoZSBPUyByZWxlYXNlCi0JIyBEZWJpYW4gR05VL05ldEJTRCBtYWNoaW5l cyBoYXZlIGEgZGlmZmVyZW50IHVzZXJsYW5kLCBhbmQKLQkjIHRodXMsIG5lZWQgYSBkaXN0 aW5jdCB0cmlwbGV0LiBIb3dldmVyLCB0aGV5IGRvIG5vdCBuZWVkCi0JIyBrZXJuZWwgdmVy c2lvbiBpbmZvcm1hdGlvbiwgc28gaXQgY2FuIGJlIHJlcGxhY2VkIHdpdGggYQotCSMgc3Vp dGFibGUgdGFnLCBpbiB0aGUgc3R5bGUgb2YgbGludXgtZ251LgotCWNhc2UgJFVOQU1FX1ZF UlNJT04gaW4KLQkgICAgRGViaWFuKikKLQkJcmVsZWFzZT0nLWdudScKLQkJOzsKLQkgICAg KikKLQkJcmVsZWFzZT1gZWNobyAiJFVOQU1FX1JFTEVBU0UiIHwgc2VkIC1lICdzL1stX10u Ki8vJyB8IGN1dCAtZC4gLWYxLDJgCi0JCTs7Ci0JZXNhYwotCSMgU2luY2UgQ1BVX1RZUEUt TUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNOgotCSMgY29udGFpbnMgcmVk dW5kYW50IGluZm9ybWF0aW9uLCB0aGUgc2hvcnRlciBmb3JtOgotCSMgQ1BVX1RZUEUtTUFO VUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0gaXMgdXNlZC4KLQlHVUVTUz0kbWFjaGluZS0k e29zfSR7cmVsZWFzZX0ke2FiaS19Ci0JOzsKLSAgICAqOkJpdHJpZzoqOiopCi0JVU5BTUVf TUFDSElORV9BUkNIPWBhcmNoIHwgc2VkICdzL0JpdHJpZy4vLydgCi0JR1VFU1M9JFVOQU1F X01BQ0hJTkVfQVJDSC11bmtub3duLWJpdHJpZyRVTkFNRV9SRUxFQVNFCi0JOzsKLSAgICAq Ok9wZW5CU0Q6KjoqKQotCVVOQU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9PcGVu QlNELi8vJ2AKLQlHVUVTUz0kVU5BTUVfTUFDSElORV9BUkNILXVua25vd24tb3BlbmJzZCRV TkFNRV9SRUxFQVNFCi0JOzsKLSAgICAqOlNlY0JTRDoqOiopCi0JVU5BTUVfTUFDSElORV9B UkNIPWBhcmNoIHwgc2VkICdzL1NlY0JTRC4vLydgCi0JR1VFU1M9JFVOQU1FX01BQ0hJTkVf QVJDSC11bmtub3duLXNlY2JzZCRVTkFNRV9SRUxFQVNFCi0JOzsKLSAgICAqOkxpYmVydHlC U0Q6KjoqKQotCVVOQU1FX01BQ0hJTkVfQVJDSD1gYXJjaCB8IHNlZCAncy9eLipCU0RcLi8v J2AKLQlHVUVTUz0kVU5BTUVfTUFDSElORV9BUkNILXVua25vd24tbGliZXJ0eWJzZCRVTkFN RV9SRUxFQVNFCi0JOzsKLSAgICAqOk1pZG5pZ2h0QlNEOio6KikKLQlHVUVTUz0kVU5BTUVf TUFDSElORS11bmtub3duLW1pZG5pZ2h0YnNkJFVOQU1FX1JFTEVBU0UKLQk7OwotICAgICo6 ZWtrb0JTRDoqOiopCi0JR1VFU1M9JFVOQU1FX01BQ0hJTkUtdW5rbm93bi1la2tvYnNkJFVO QU1FX1JFTEVBU0UKLQk7OwotICAgICo6U29saWRCU0Q6KjoqKQotCUdVRVNTPSRVTkFNRV9N QUNISU5FLXVua25vd24tc29saWRic2QkVU5BTUVfUkVMRUFTRQotCTs7Ci0gICAgKjpPUzEw ODoqOiopCi0JR1VFU1M9JFVOQU1FX01BQ0hJTkUtdW5rbm93bi1vczEwOF8kVU5BTUVfUkVM RUFTRQotCTs7Ci0gICAgbWFjcHBjOk1pckJTRDoqOiopCi0JR1VFU1M9cG93ZXJwYy11bmtu b3duLW1pcmJzZCRVTkFNRV9SRUxFQVNFCi0JOzsKLSAgICAqOk1pckJTRDoqOiopCi0JR1VF U1M9JFVOQU1FX01BQ0hJTkUtdW5rbm93bi1taXJic2QkVU5BTUVfUkVMRUFTRQotCTs7Ci0g ICAgKjpTb3J0aXg6KjoqKQotCUdVRVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tc29ydGl4 Ci0JOzsKLSAgICAqOlR3aXp6bGVyOio6KikKLQlHVUVTUz0kVU5BTUVfTUFDSElORS11bmtu b3duLXR3aXp6bGVyCi0JOzsKLSAgICAqOlJlZG94Oio6KikKLQlHVUVTUz0kVU5BTUVfTUFD SElORS11bmtub3duLXJlZG94Ci0JOzsKLSAgICBtaXBzOk9TRjE6Ki4qKQotCUdVRVNTPW1p cHMtZGVjLW9zZjEKLQk7OwotICAgIGFscGhhOk9TRjE6KjoqKQotCSMgUmVzZXQgRVhJVCB0 cmFwIGJlZm9yZSBleGl0aW5nIHRvIGF2b2lkIHNwdXJpb3VzIG5vbi16ZXJvIGV4aXQgY29k ZS4KLQl0cmFwICcnIDAKLQljYXNlICRVTkFNRV9SRUxFQVNFIGluCi0JKjQuMCkKLQkJVU5B TUVfUkVMRUFTRT1gL3Vzci9zYmluL3NpemVyIC12IHwgYXdrICd7cHJpbnQgJDN9J2AKLQkJ OzsKLQkqNS4qKQotCQlVTkFNRV9SRUxFQVNFPWAvdXNyL3NiaW4vc2l6ZXIgLXYgfCBhd2sg J3twcmludCAkNH0nYAotCQk7OwotCWVzYWMKLQkjIEFjY29yZGluZyB0byBDb21wYXEsIC91 c3Ivc2Jpbi9wc3JpbmZvIGhhcyBiZWVuIGF2YWlsYWJsZSBvbgotCSMgT1NGLzEgYW5kIFRy dTY0IHN5c3RlbXMgcHJvZHVjZWQgc2luY2UgMTk5NS4gIEkgaG9wZSB0aGF0Ci0JIyBjb3Zl cnMgbW9zdCBzeXN0ZW1zIHJ1bm5pbmcgdG9kYXkuICBUaGlzIGNvZGUgcGlwZXMgdGhlIENQ VQotCSMgdHlwZXMgdGhyb3VnaCBoZWFkIC1uIDEsIHNvIHdlIG9ubHkgZGV0ZWN0IHRoZSB0 eXBlIG9mIENQVSAwLgotCUFMUEhBX0NQVV9UWVBFPWAvdXNyL3NiaW4vcHNyaW5mbyAtdiB8 IHNlZCAtbiAtZSAncy9eICBUaGUgYWxwaGEgXCguKlwpIHByb2Nlc3Nvci4qJC9cMS9wJyB8 IGhlYWQgLW4gMWAKLQljYXNlICRBTFBIQV9DUFVfVFlQRSBpbgotCSAgICAiRVY0ICgyMTA2 NCkiKQotCQlVTkFNRV9NQUNISU5FPWFscGhhIDs7Ci0JICAgICJFVjQuNSAoMjEwNjQpIikK LQkJVU5BTUVfTUFDSElORT1hbHBoYSA7OwotCSAgICAiTENBNCAoMjEwNjYvMjEwNjgpIikK LQkJVU5BTUVfTUFDSElORT1hbHBoYSA7OwotCSAgICAiRVY1ICgyMTE2NCkiKQotCQlVTkFN RV9NQUNISU5FPWFscGhhZXY1IDs7Ci0JICAgICJFVjUuNiAoMjExNjRBKSIpCi0JCVVOQU1F X01BQ0hJTkU9YWxwaGFldjU2IDs7Ci0JICAgICJFVjUuNiAoMjExNjRQQykiKQotCQlVTkFN RV9NQUNISU5FPWFscGhhcGNhNTYgOzsKLQkgICAgIkVWNS43ICgyMTE2NFBDKSIpCi0JCVVO QU1FX01BQ0hJTkU9YWxwaGFwY2E1NyA7OwotCSAgICAiRVY2ICgyMTI2NCkiKQotCQlVTkFN RV9NQUNISU5FPWFscGhhZXY2IDs7Ci0JICAgICJFVjYuNyAoMjEyNjRBKSIpCi0JCVVOQU1F X01BQ0hJTkU9YWxwaGFldjY3IDs7Ci0JICAgICJFVjYuOENCICgyMTI2NEMpIikKLQkJVU5B TUVfTUFDSElORT1hbHBoYWV2NjggOzsKLQkgICAgIkVWNi44QUwgKDIxMjY0QikiKQotCQlV TkFNRV9NQUNISU5FPWFscGhhZXY2OCA7OwotCSAgICAiRVY2LjhDWCAoMjEyNjREKSIpCi0J CVVOQU1FX01BQ0hJTkU9YWxwaGFldjY4IDs7Ci0JICAgICJFVjYuOUEgKDIxMjY0L0VWNjlB KSIpCi0JCVVOQU1FX01BQ0hJTkU9YWxwaGFldjY5IDs7Ci0JICAgICJFVjcgKDIxMzY0KSIp Ci0JCVVOQU1FX01BQ0hJTkU9YWxwaGFldjcgOzsKLQkgICAgIkVWNy45ICgyMTM2NEEpIikK LQkJVU5BTUVfTUFDSElORT1hbHBoYWV2NzkgOzsKLQllc2FjCi0JIyBBIFBuLm4gdmVyc2lv biBpcyBhIHBhdGNoZWQgdmVyc2lvbi4KLQkjIEEgVm4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFz ZWQgdmVyc2lvbi4KLQkjIEEgVG4ubiB2ZXJzaW9uIGlzIGEgcmVsZWFzZWQgZmllbGQgdGVz dCB2ZXJzaW9uLgotCSMgQSBYbi5uIHZlcnNpb24gaXMgYW4gdW5yZWxlYXNlZCBleHBlcmlt ZW50YWwgYmFzZWxldmVsLgotCSMgMS4yIHVzZXMgIjEuMiIgZm9yIHVuYW1lIC1yLgotCU9T Rl9SRUw9YGVjaG8gIiRVTkFNRV9SRUxFQVNFIiB8IHNlZCAtZSAncy9eW1BWVFhdLy8nIHwg dHIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4 eXpgCi0JR1VFU1M9JFVOQU1FX01BQ0hJTkUtZGVjLW9zZiRPU0ZfUkVMCi0JOzsKLSAgICBB bWlnYSo6VU5JWF9TeXN0ZW1fVjo0LjA6KikKLQlHVUVTUz1tNjhrLXVua25vd24tc3lzdjQK LQk7OwotICAgICo6W0FhXW1pZ2FbT29dW1NzXToqOiopCi0JR1VFU1M9JFVOQU1FX01BQ0hJ TkUtdW5rbm93bi1hbWlnYW9zCi0JOzsKLSAgICAqOltNbV1vcnBoW09vXVtTc106KjoqKQot CUdVRVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tbW9ycGhvcwotCTs7Ci0gICAgKjpPUy8z OTA6KjoqKQotCUdVRVNTPWkzNzAtaWJtLW9wZW5lZGl0aW9uCi0JOzsKLSAgICAqOnovVk06 KjoqKQotCUdVRVNTPXMzOTAtaWJtLXp2bW9lCi0JOzsKLSAgICAqOk9TNDAwOio6KikKLQlH VUVTUz1wb3dlcnBjLWlibS1vczQwMAotCTs7Ci0gICAgYXJtOlJJU0MqOjEuWzAxMl0qOip8 YXJtOnJpc2NpeDoxLlswMTJdKjoqKQotCUdVRVNTPWFybS1hY29ybi1yaXNjaXgkVU5BTUVf UkVMRUFTRQotCTs7Ci0gICAgYXJtKjpyaXNjb3M6KjoqfGFybSo6UklTQ09TOio6KikKLQlH VUVTUz1hcm0tdW5rbm93bi1yaXNjb3MKLQk7OwotICAgIFNSMj8wMTpISS1VWC9NUFA6Kjoq IHwgU1I4MDAwOkhJLVVYL01QUDoqOiopCi0JR1VFU1M9aHBwYTEuMS1oaXRhY2hpLWhpdXht cHAKLQk7OwotICAgIFB5cmFtaWQqOk9TeCo6KjoqIHwgTUlTKjpPU3gqOio6KiB8IE1JUyo6 U01QX0RDLU9TeCo6KjoqKQotCSMgYWtlZUB3cGRpczAzLndwYWZiLmFmLm1pbCAoRWFybGUg Ri4gQWtlKSBjb250cmlidXRlZCBNSVMgYW5kIE5JTEUuCi0JY2FzZSBgKC9iaW4vdW5pdmVy c2UpIDI+L2Rldi9udWxsYCBpbgotCSAgICBhdHQpIEdVRVNTPXB5cmFtaWQtcHlyYW1pZC1z eXN2MyA7OwotCSAgICAqKSAgIEdVRVNTPXB5cmFtaWQtcHlyYW1pZC1ic2QgICA7OwotCWVz YWMKLQk7OwotICAgIE5JTEUqOio6KjpkY29zeCkKLQlHVUVTUz1weXJhbWlkLXB5cmFtaWQt c3ZyNAotCTs7Ci0gICAgRFJTPzYwMDA6dW5peDo0LjA6NiopCi0JR1VFU1M9c3BhcmMtaWNs LW54NgotCTs7Ci0gICAgRFJTPzYwMDA6VU5JWF9TVjo0LjIqOjcqIHwgRFJTPzYwMDA6aXNp czo0LjIqOjcqKQotCWNhc2UgYC91c3IvYmluL3VuYW1lIC1wYCBpbgotCSAgICBzcGFyYykg R1VFU1M9c3BhcmMtaWNsLW54NyA7OwotCWVzYWMKLQk7OwotICAgIHMzOTB4OlN1bk9TOio6 KikKLQlTVU5fUkVMPWBlY2hvICIkVU5BTUVfUkVMRUFTRSIgfCBzZWQgLWUgJ3MvW14uXSov LydgCi0JR1VFU1M9JFVOQU1FX01BQ0hJTkUtaWJtLXNvbGFyaXMyJFNVTl9SRUwKLQk7Owot ICAgIHN1bjRIOlN1bk9TOjUuKjoqKQotCVNVTl9SRUw9YGVjaG8gIiRVTkFNRV9SRUxFQVNF IiB8IHNlZCAtZSAncy9bXi5dKi8vJ2AKLQlHVUVTUz1zcGFyYy1oYWwtc29sYXJpczIkU1VO X1JFTAotCTs7Ci0gICAgc3VuNCo6U3VuT1M6NS4qOiogfCB0YWRwb2xlKjpTdW5PUzo1Lio6 KikKLQlTVU5fUkVMPWBlY2hvICIkVU5BTUVfUkVMRUFTRSIgfCBzZWQgLWUgJ3MvW14uXSov LydgCi0JR1VFU1M9c3BhcmMtc3VuLXNvbGFyaXMyJFNVTl9SRUwKLQk7OwotICAgIGk4NnBj OkF1cm9yYVVYOjUuKjoqIHwgaTg2eGVuOkF1cm9yYVVYOjUuKjoqKQotCUdVRVNTPWkzODYt cGMtYXVyb3JhdXgkVU5BTUVfUkVMRUFTRQotCTs7Ci0gICAgaTg2cGM6U3VuT1M6NS4qOiog fCBpODZ4ZW46U3VuT1M6NS4qOiopCi0Jc2V0X2NjX2Zvcl9idWlsZAotCVNVTl9BUkNIPWkz ODYKLQkjIElmIHRoZXJlIGlzIGEgY29tcGlsZXIsIHNlZSBpZiBpdCBpcyBjb25maWd1cmVk IGZvciA2NC1iaXQgb2JqZWN0cy4KLQkjIE5vdGUgdGhhdCB0aGUgU3VuIGNjIGRvZXMgbm90 IHR1cm4gX19MUDY0X18gaW50byAxIGxpa2UgZ2NjIGRvZXMuCi0JIyBUaGlzIHRlc3Qgd29y a3MgZm9yIGJvdGggY29tcGlsZXJzLgotCWlmIHRlc3QgIiRDQ19GT1JfQlVJTEQiICE9IG5v X2NvbXBpbGVyX2ZvdW5kOyB0aGVuCi0JICAgIGlmIChlY2hvICcjaWZkZWYgX19hbWQ2NCc7 IGVjaG8gSVNfNjRCSVRfQVJDSDsgZWNobyAnI2VuZGlmJykgfCBcCi0JCShDQ09QVFM9IiIg JENDX0ZPUl9CVUlMRCAtbTY0IC1FIC0gMj4vZGV2L251bGwpIHwgXAotCQlncmVwIElTXzY0 QklUX0FSQ0ggPi9kZXYvbnVsbAotCSAgICB0aGVuCi0JCVNVTl9BUkNIPXg4Nl82NAotCSAg ICBmaQotCWZpCi0JU1VOX1JFTD1gZWNobyAiJFVOQU1FX1JFTEVBU0UiIHwgc2VkIC1lICdz L1teLl0qLy8nYAotCUdVRVNTPSRTVU5fQVJDSC1wYy1zb2xhcmlzMiRTVU5fUkVMCi0JOzsK LSAgICBzdW40KjpTdW5PUzo2KjoqKQotCSMgQWNjb3JkaW5nIHRvIGNvbmZpZy5zdWIsIHRo aXMgaXMgdGhlIHByb3BlciB3YXkgdG8gY2Fub25pY2FsaXplCi0JIyBTdW5PUzYuICBIYXJk IHRvIGd1ZXNzIGV4YWN0bHkgd2hhdCBTdW5PUzYgd2lsbCBiZSBsaWtlLCBidXQKLQkjIGl0 J3MgbGlrZWx5IHRvIGJlIG1vcmUgbGlrZSBTb2xhcmlzIHRoYW4gU3VuT1M0LgotCVNVTl9S RUw9YGVjaG8gIiRVTkFNRV9SRUxFQVNFIiB8IHNlZCAtZSAncy9bXi5dKi8vJ2AKLQlHVUVT Uz1zcGFyYy1zdW4tc29sYXJpczMkU1VOX1JFTAotCTs7Ci0gICAgc3VuNCo6U3VuT1M6Kjoq KQotCWNhc2UgYC91c3IvYmluL2FyY2ggLWtgIGluCi0JICAgIFNlcmllcyp8UzQqKQotCQlV TkFNRV9SRUxFQVNFPWB1bmFtZSAtdmAKLQkJOzsKLQllc2FjCi0JIyBKYXBhbmVzZSBMYW5n dWFnZSB2ZXJzaW9ucyBoYXZlIGEgdmVyc2lvbiBudW1iZXIgbGlrZSAnNC4xLjMtSkwnLgot CVNVTl9SRUw9YGVjaG8gIiRVTkFNRV9SRUxFQVNFIiB8IHNlZCAtZSAncy8tL18vJ2AKLQlH VUVTUz1zcGFyYy1zdW4tc3Vub3MkU1VOX1JFTAotCTs7Ci0gICAgc3VuMyo6U3VuT1M6Kjoq KQotCUdVRVNTPW02OGstc3VuLXN1bm9zJFVOQU1FX1JFTEVBU0UKLQk7OwotICAgIHN1bio6 Kjo0LjJCU0Q6KikKLQlVTkFNRV9SRUxFQVNFPWAoc2VkIDFxIC9ldGMvbW90ZCB8IGF3ayAn e3ByaW50IHN1YnN0cigkNSwxLDMpfScpIDI+L2Rldi9udWxsYAotCXRlc3QgIngkVU5BTUVf UkVMRUFTRSIgPSB4ICYmIFVOQU1FX1JFTEVBU0U9MwotCWNhc2UgYC9iaW4vYXJjaGAgaW4K LQkgICAgc3VuMykKLQkJR1VFU1M9bTY4ay1zdW4tc3Vub3MkVU5BTUVfUkVMRUFTRQotCQk7 OwotCSAgICBzdW40KQotCQlHVUVTUz1zcGFyYy1zdW4tc3Vub3MkVU5BTUVfUkVMRUFTRQot CQk7OwotCWVzYWMKLQk7OwotICAgIGF1c2hwOlN1bk9TOio6KikKLQlHVUVTUz1zcGFyYy1h dXNwZXgtc3Vub3MkVU5BTUVfUkVMRUFTRQotCTs7Ci0gICAgIyBUaGUgc2l0dWF0aW9uIGZv ciBNaU5UIGlzIGEgbGl0dGxlIGNvbmZ1c2luZy4gIFRoZSBtYWNoaW5lIG5hbWUKLSAgICAj IGNhbiBiZSB2aXJ0dWFsbHkgZXZlcnl0aGluZyAoZXZlcnl0aGluZyB3aGljaCBpcyBub3QK LSAgICAjICJhdGFyaXN0IiBvciAiYXRhcmlzdGUiIGF0IGxlYXN0IHNob3VsZCBoYXZlIGEg cHJvY2Vzc29yCi0gICAgIyA+IG02ODAwMCkuICBUaGUgc3lzdGVtIG5hbWUgcmFuZ2VzIGZy b20gIk1pTlQiIG92ZXIgIkZyZWVNaU5UIgotICAgICMgdG8gdGhlIGxvd2VyY2FzZSB2ZXJz aW9uICJtaW50IiAob3IgImZyZWVtaW50IikuICBGaW5hbGx5Ci0gICAgIyB0aGUgc3lzdGVt IG5hbWUgIlRPUyIgZGVub3RlcyBhIHN5c3RlbSB3aGljaCBpcyBhY3R1YWxseSBub3QKLSAg ICAjIE1pTlQuICBCdXQgTWlOVCBpcyBkb3dud2FyZCBjb21wYXRpYmxlIHRvIFRPUywgc28g dGhpcyBzaG91bGQKLSAgICAjIGJlIG5vIHByb2JsZW0uCi0gICAgYXRhcmlzdFtlXToqTWlO VDoqOiogfCBhdGFyaXN0W2VdOiptaW50Oio6KiB8IGF0YXJpc3RbZV06KlRPUzoqOiopCi0J R1VFU1M9bTY4ay1hdGFyaS1taW50JFVOQU1FX1JFTEVBU0UKLQk7OwotICAgIGF0YXJpKjoq TWlOVDoqOiogfCBhdGFyaSo6Km1pbnQ6KjoqIHwgYXRhcmlzdFtlXToqVE9TOio6KikKLQlH VUVTUz1tNjhrLWF0YXJpLW1pbnQkVU5BTUVfUkVMRUFTRQotCTs7Ci0gICAgKmZhbGNvbio6 Kk1pTlQ6KjoqIHwgKmZhbGNvbio6Km1pbnQ6KjoqIHwgKmZhbGNvbio6KlRPUzoqOiopCi0J R1VFU1M9bTY4ay1hdGFyaS1taW50JFVOQU1FX1JFTEVBU0UKLQk7OwotICAgIG1pbGFuKjoq TWlOVDoqOiogfCBtaWxhbio6Km1pbnQ6KjoqIHwgKm1pbGFuKjoqVE9TOio6KikKLQlHVUVT Uz1tNjhrLW1pbGFuLW1pbnQkVU5BTUVfUkVMRUFTRQotCTs7Ci0gICAgaGFkZXMqOipNaU5U Oio6KiB8IGhhZGVzKjoqbWludDoqOiogfCAqaGFkZXMqOipUT1M6KjoqKQotCUdVRVNTPW02 OGstaGFkZXMtbWludCRVTkFNRV9SRUxFQVNFCi0JOzsKLSAgICAqOipNaU5UOio6KiB8ICo6 Km1pbnQ6KjoqIHwgKjoqVE9TOio6KikKLQlHVUVTUz1tNjhrLXVua25vd24tbWludCRVTkFN RV9SRUxFQVNFCi0JOzsKLSAgICBtNjhrOm1hY2h0ZW46KjoqKQotCUdVRVNTPW02OGstYXBw bGUtbWFjaHRlbiRVTkFNRV9SRUxFQVNFCi0JOzsKLSAgICBwb3dlcnBjOm1hY2h0ZW46Kjoq KQotCUdVRVNTPXBvd2VycGMtYXBwbGUtbWFjaHRlbiRVTkFNRV9SRUxFQVNFCi0JOzsKLSAg ICBSSVNDKjpNYWNoOio6KikKLQlHVUVTUz1taXBzLWRlYy1tYWNoX2JzZDQuMwotCTs7Ci0g ICAgUklTQyo6VUxUUklYOio6KikKLQlHVUVTUz1taXBzLWRlYy11bHRyaXgkVU5BTUVfUkVM RUFTRQotCTs7Ci0gICAgVkFYKjpVTFRSSVgqOio6KikKLQlHVUVTUz12YXgtZGVjLXVsdHJp eCRVTkFNRV9SRUxFQVNFCi0JOzsKLSAgICAyMDIwOkNMSVg6KjoqIHwgMjQzMDpDTElYOio6 KikKLQlHVUVTUz1jbGlwcGVyLWludGVyZ3JhcGgtY2xpeCRVTkFNRV9SRUxFQVNFCi0JOzsK LSAgICBtaXBzOio6KjpVTUlQUyB8IG1pcHM6KjoqOlJJU0NvcykKLQlzZXRfY2NfZm9yX2J1 aWxkCi0Jc2VkICdzL14JLy8nIDw8IEVPRiA+ICIkZHVtbXkuYyIKLSNpZmRlZiBfX2NwbHVz cGx1cwotI2luY2x1ZGUgPHN0ZGlvLmg+ICAvKiBmb3IgcHJpbnRmKCkgcHJvdG90eXBlICov Ci0JaW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKLSNlbHNlCi0JaW50IG1h aW4gKGFyZ2MsIGFyZ3YpIGludCBhcmdjOyBjaGFyICphcmd2W107IHsKLSNlbmRpZgotCSNp ZiBkZWZpbmVkIChob3N0X21pcHMpICYmIGRlZmluZWQgKE1JUFNFQikKLQkjaWYgZGVmaW5l ZCAoU1lTVFlQRV9TWVNWKQotCSAgcHJpbnRmICgibWlwcy1taXBzLXJpc2NvcyVzc3lzdlxc biIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKLQkjZW5kaWYKLQkjaWYgZGVmaW5lZCAoU1lTVFlQ RV9TVlI0KQotCSAgcHJpbnRmICgibWlwcy1taXBzLXJpc2NvcyVzc3ZyNFxcbiIsIGFyZ3Zb MV0pOyBleGl0ICgwKTsKLQkjZW5kaWYKLQkjaWYgZGVmaW5lZCAoU1lTVFlQRV9CU0Q0Mykg fHwgZGVmaW5lZChTWVNUWVBFX0JTRCkKLQkgIHByaW50ZiAoIm1pcHMtbWlwcy1yaXNjb3Ml c2JzZFxcbiIsIGFyZ3ZbMV0pOyBleGl0ICgwKTsKLQkjZW5kaWYKLQkjZW5kaWYKLQkgIGV4 aXQgKC0xKTsKLQl9Ci1FT0YKLQkkQ0NfRk9SX0JVSUxEIC1vICIkZHVtbXkiICIkZHVtbXku YyIgJiYKLQkgIGR1bW15YXJnPWBlY2hvICIkVU5BTUVfUkVMRUFTRSIgfCBzZWQgLW4gJ3Mv XChbMC05XSpcKS4qL1wxL3AnYCAmJgotCSAgU1lTVEVNX05BTUU9YCIkZHVtbXkiICIkZHVt bXlhcmciYCAmJgotCSAgICB7IGVjaG8gIiRTWVNURU1fTkFNRSI7IGV4aXQ7IH0KLQlHVUVT Uz1taXBzLW1pcHMtcmlzY29zJFVOQU1FX1JFTEVBU0UKLQk7OwotICAgIE1vdG9yb2xhOlBv d2VyTUFYX09TOio6KikKLQlHVUVTUz1wb3dlcnBjLW1vdG9yb2xhLXBvd2VybWF4Ci0JOzsK LSAgICBNb3Rvcm9sYToqOjQuMzpQTDgtKikKLQlHVUVTUz1wb3dlcnBjLWhhcnJpcy1wb3dl cm1heAotCTs7Ci0gICAgTmlnaHRfSGF3azoqOio6UG93ZXJNQVhfT1MgfCBTeW5lcmd5OlBv d2VyTUFYX09TOio6KikKLQlHVUVTUz1wb3dlcnBjLWhhcnJpcy1wb3dlcm1heAotCTs7Ci0g ICAgTmlnaHRfSGF3azpQb3dlcl9VTklYOio6KikKLQlHVUVTUz1wb3dlcnBjLWhhcnJpcy1w b3dlcnVuaXgKLQk7OwotICAgIG04OGs6Q1gvVVg6Nyo6KikKLQlHVUVTUz1tODhrLWhhcnJp cy1jeHV4NwotCTs7Ci0gICAgbTg4azoqOjQqOlI0KikKLQlHVUVTUz1tODhrLW1vdG9yb2xh LXN5c3Y0Ci0JOzsKLSAgICBtODhrOio6Myo6UjMqKQotCUdVRVNTPW04OGstbW90b3JvbGEt c3lzdjMKLQk7OwotICAgIEFWaWlPTjpkZ3V4Oio6KikKLQkjIERHL1VYIHJldHVybnMgQVZp aU9OIGZvciBhbGwgYXJjaGl0ZWN0dXJlcwotCVVOQU1FX1BST0NFU1NPUj1gL3Vzci9iaW4v dW5hbWUgLXBgCi0JaWYgdGVzdCAiJFVOQU1FX1BST0NFU1NPUiIgPSBtYzg4MTAwIHx8IHRl c3QgIiRVTkFNRV9QUk9DRVNTT1IiID0gbWM4ODExMAotCXRoZW4KLQkgICAgaWYgdGVzdCAi JFRBUkdFVF9CSU5BUllfSU5URVJGQUNFInggPSBtODhrZGd1eGVsZnggfHwgXAotCSAgICAg ICB0ZXN0ICIkVEFSR0VUX0JJTkFSWV9JTlRFUkZBQ0UieCA9IHgKLQkgICAgdGhlbgotCQlH VUVTUz1tODhrLWRnLWRndXgkVU5BTUVfUkVMRUFTRQotCSAgICBlbHNlCi0JCUdVRVNTPW04 OGstZGctZGd1eGJjcyRVTkFNRV9SRUxFQVNFCi0JICAgIGZpCi0JZWxzZQotCSAgICBHVUVT Uz1pNTg2LWRnLWRndXgkVU5BTUVfUkVMRUFTRQotCWZpCi0JOzsKLSAgICBNODgqOkRvbHBo aW5PUzoqOiopCSMgRG9scGhpbk9TIChTVlIzKQotCUdVRVNTPW04OGstZG9scGhpbi1zeXN2 MwotCTs7Ci0gICAgTTg4KjoqOlIzKjoqKQotCSMgRGVsdGEgODhrIHN5c3RlbSBydW5uaW5n IFNWUjMKLQlHVUVTUz1tODhrLW1vdG9yb2xhLXN5c3YzCi0JOzsKLSAgICBYRDg4KjoqOio6 KikgIyBUZWt0cm9uaXggWEQ4OCBzeXN0ZW0gcnVubmluZyBVVGVrViAoU1ZSMykKLQlHVUVT Uz1tODhrLXRla3Ryb25peC1zeXN2MwotCTs7Ci0gICAgVGVrNDNbMC05XVswLTldOlVUZWs6 KjoqKSAjIFRla3Ryb25peCA0MzAwIHN5c3RlbSBydW5uaW5nIFVUZWsgKEJTRCkKLQlHVUVT Uz1tNjhrLXRla3Ryb25peC1ic2QKLQk7OwotICAgICo6SVJJWCo6KjoqKQotCUlSSVhfUkVM PWBlY2hvICIkVU5BTUVfUkVMRUFTRSIgfCBzZWQgLWUgJ3MvLS9fL2cnYAotCUdVRVNTPW1p cHMtc2dpLWlyaXgkSVJJWF9SRUwKLQk7OwotICAgID8/Pz8/Pz8/OkFJWD86WzEyXS4xOjIp ICAgIyBBSVggMi4yLjEgb3IgQUlYIDIuMS4xIGlzIFJUL1BDIEFJWC4KLQlHVUVTUz1yb21w LWlibS1haXggICAgIyB1bmFtZSAtbSBnaXZlcyBhbiA4IGhleC1jb2RlIENQVSBpZAotCTs7 ICAgICAgICAgICAgICAgICAgICAjIE5vdGUgdGhhdDogZWNobyAiJ2B1bmFtZSAtc2AnIiBn aXZlcyAnQUlYICcKLSAgICBpKjg2OkFJWDoqOiopCi0JR1VFU1M9aTM4Ni1pYm0tYWl4Ci0J OzsKLSAgICBpYTY0OkFJWDoqOiopCi0JaWYgdGVzdCAteCAvdXNyL2Jpbi9vc2xldmVsIDsg dGhlbgotCQlJQk1fUkVWPWAvdXNyL2Jpbi9vc2xldmVsYAotCWVsc2UKLQkJSUJNX1JFVj0k VU5BTUVfVkVSU0lPTi4kVU5BTUVfUkVMRUFTRQotCWZpCi0JR1VFU1M9JFVOQU1FX01BQ0hJ TkUtaWJtLWFpeCRJQk1fUkVWCi0JOzsKLSAgICAqOkFJWDoyOjMpCi0JaWYgZ3JlcCBib3Mz MjUgL3Vzci9pbmNsdWRlL3N0ZGlvLmggPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JCXNldF9j Y19mb3JfYnVpbGQKLQkJc2VkICdzL14JCS8vJyA8PCBFT0YgPiAiJGR1bW15LmMiCi0JCSNp bmNsdWRlIDxzeXMvc3lzdGVtY2ZnLmg+Ci0KLQkJbWFpbigpCi0JCQl7Ci0JCQlpZiAoIV9f cG93ZXJfcGMoKSkKLQkJCQlleGl0KDEpOwotCQkJcHV0cygicG93ZXJwYy1pYm0tYWl4My4y LjUiKTsKLQkJCWV4aXQoMCk7Ci0JCQl9Ci1FT0YKLQkJaWYgJENDX0ZPUl9CVUlMRCAtbyAi JGR1bW15IiAiJGR1bW15LmMiICYmIFNZU1RFTV9OQU1FPWAiJGR1bW15ImAKLQkJdGhlbgot CQkJR1VFU1M9JFNZU1RFTV9OQU1FCi0JCWVsc2UKLQkJCUdVRVNTPXJzNjAwMC1pYm0tYWl4 My4yLjUKLQkJZmkKLQllbGlmIGdyZXAgYm9zMzI0IC91c3IvaW5jbHVkZS9zdGRpby5oID4v ZGV2L251bGwgMj4mMTsgdGhlbgotCQlHVUVTUz1yczYwMDAtaWJtLWFpeDMuMi40Ci0JZWxz ZQotCQlHVUVTUz1yczYwMDAtaWJtLWFpeDMuMgotCWZpCi0JOzsKLSAgICAqOkFJWDoqOls0 NTY3XSkKLQlJQk1fQ1BVX0lEPWAvdXNyL3NiaW4vbHNkZXYgLUMgLWMgcHJvY2Vzc29yIC1T IGF2YWlsYWJsZSB8IHNlZCAxcSB8IGF3ayAneyBwcmludCAkMSB9J2AKLQlpZiAvdXNyL3Ni aW4vbHNhdHRyIC1FbCAiJElCTV9DUFVfSUQiIHwgZ3JlcCAnIFBPV0VSJyA+L2Rldi9udWxs IDI+JjE7IHRoZW4KLQkJSUJNX0FSQ0g9cnM2MDAwCi0JZWxzZQotCQlJQk1fQVJDSD1wb3dl cnBjCi0JZmkKLQlpZiB0ZXN0IC14IC91c3IvYmluL2xzbHBwIDsgdGhlbgotCQlJQk1fUkVW PWAvdXNyL2Jpbi9sc2xwcCAtTHFjIGJvcy5ydGUubGliYyB8IFwKLQkJCSAgIGF3ayAtRjog J3sgcHJpbnQgJDMgfScgfCBzZWQgcy9bMC05XSokLzAvYAotCWVsc2UKLQkJSUJNX1JFVj0k VU5BTUVfVkVSU0lPTi4kVU5BTUVfUkVMRUFTRQotCWZpCi0JR1VFU1M9JElCTV9BUkNILWli bS1haXgkSUJNX1JFVgotCTs7Ci0gICAgKjpBSVg6KjoqKQotCUdVRVNTPXJzNjAwMC1pYm0t YWl4Ci0JOzsKLSAgICBpYm1ydDo0LjRCU0Q6Knxyb21wLWlibTo0LjRCU0Q6KikKLQlHVUVT Uz1yb21wLWlibS1ic2Q0LjQKLQk7OwotICAgIGlibXJ0OipCU0Q6Knxyb21wLWlibTpCU0Q6 KikgICAgICAgICAgICAjIGNvdmVycyBSVC9QQyBCU0QgYW5kCi0JR1VFU1M9cm9tcC1pYm0t YnNkJFVOQU1FX1JFTEVBU0UgICAgIyA0LjMgd2l0aCB1bmFtZSBhZGRlZCB0bwotCTs7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgcmVwb3J0OiByb21wLWlibSBCU0Qg NC4zCi0gICAgKjpCT1NYOio6KikKLQlHVUVTUz1yczYwMDAtYnVsbC1ib3N4Ci0JOzsKLSAg ICBEUFgvMj8wMDpCLk8uUy46KjoqKQotCUdVRVNTPW02OGstYnVsbC1zeXN2MwotCTs7Ci0g ICAgOTAwMC9bMzRdPz86NC4zYnNkOjEuKjoqKQotCUdVRVNTPW02OGstaHAtYnNkCi0JOzsK LSAgICBocDMwMDo0LjRCU0Q6KjoqIHwgOTAwMC9bMzRdPz86NC4zYnNkOjIuKjoqKQotCUdV RVNTPW02OGstaHAtYnNkNC40Ci0JOzsKLSAgICA5MDAwL1szNDY3OF0/PzpIUC1VWDoqOiop Ci0JSFBVWF9SRVY9YGVjaG8gIiRVTkFNRV9SRUxFQVNFIiB8IHNlZCAtZSAncy9bXi5dKi5b MEJdKi8vJ2AKLQljYXNlICRVTkFNRV9NQUNISU5FIGluCi0JICAgIDkwMDAvMzE/KSAgICAg ICAgICAgIEhQX0FSQ0g9bTY4MDAwIDs7Ci0JICAgIDkwMDAvWzM0XT8/KSAgICAgICAgIEhQ X0FSQ0g9bTY4ayA7OwotCSAgICA5MDAwL1s2NzhdWzAtOV1bMC05XSkKLQkJaWYgdGVzdCAt eCAvdXNyL2Jpbi9nZXRjb25mOyB0aGVuCi0JCSAgICBzY19jcHVfdmVyc2lvbj1gL3Vzci9i aW4vZ2V0Y29uZiBTQ19DUFVfVkVSU0lPTiAyPi9kZXYvbnVsbGAKLQkJICAgIHNjX2tlcm5l bF9iaXRzPWAvdXNyL2Jpbi9nZXRjb25mIFNDX0tFUk5FTF9CSVRTIDI+L2Rldi9udWxsYAot CQkgICAgY2FzZSAkc2NfY3B1X3ZlcnNpb24gaW4KLQkJICAgICAgNTIzKSBIUF9BUkNIPWhw cGExLjAgOzsgIyBDUFVfUEFfUklTQzFfMAotCQkgICAgICA1MjgpIEhQX0FSQ0g9aHBwYTEu MSA7OyAjIENQVV9QQV9SSVNDMV8xCi0JCSAgICAgIDUzMikgICAgICAgICAgICAgICAgICAg ICAgIyBDUFVfUEFfUklTQzJfMAotCQkJY2FzZSAkc2Nfa2VybmVsX2JpdHMgaW4KLQkJCSAg MzIpIEhQX0FSQ0g9aHBwYTIuMG4gOzsKLQkJCSAgNjQpIEhQX0FSQ0g9aHBwYTIuMHcgOzsK LQkJCSAgJycpIEhQX0FSQ0g9aHBwYTIuMCA7OyAgICMgSFAtVVggMTAuMjAKLQkJCWVzYWMg OzsKLQkJICAgIGVzYWMKLQkJZmkKLQkJaWYgdGVzdCAiJEhQX0FSQ0giID0gIiI7IHRoZW4K LQkJICAgIHNldF9jY19mb3JfYnVpbGQKLQkJICAgIHNlZCAncy9eCQkvLycgPDwgRU9GID4g IiRkdW1teS5jIgotCi0JCSNkZWZpbmUgX0hQVVhfU09VUkNFCi0JCSNpbmNsdWRlIDxzdGRs aWIuaD4KLQkJI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0JCWludCBtYWluICgpCi0JCXsKLQkJ I2lmIGRlZmluZWQoX1NDX0tFUk5FTF9CSVRTKQotCQkgICAgbG9uZyBiaXRzID0gc3lzY29u ZihfU0NfS0VSTkVMX0JJVFMpOwotCQkjZW5kaWYKLQkJICAgIGxvbmcgY3B1ICA9IHN5c2Nv bmYgKF9TQ19DUFVfVkVSU0lPTik7Ci0KLQkJICAgIHN3aXRjaCAoY3B1KQotCQkJewotCQkJ Y2FzZSBDUFVfUEFfUklTQzFfMDogcHV0cyAoImhwcGExLjAiKTsgYnJlYWs7Ci0JCQljYXNl IENQVV9QQV9SSVNDMV8xOiBwdXRzICgiaHBwYTEuMSIpOyBicmVhazsKLQkJCWNhc2UgQ1BV X1BBX1JJU0MyXzA6Ci0JCSNpZiBkZWZpbmVkKF9TQ19LRVJORUxfQklUUykKLQkJCSAgICBz d2l0Y2ggKGJpdHMpCi0JCQkJewotCQkJCWNhc2UgNjQ6IHB1dHMgKCJocHBhMi4wdyIpOyBi cmVhazsKLQkJCQljYXNlIDMyOiBwdXRzICgiaHBwYTIuMG4iKTsgYnJlYWs7Ci0JCQkJZGVm YXVsdDogcHV0cyAoImhwcGEyLjAiKTsgYnJlYWs7Ci0JCQkJfSBicmVhazsKLQkJI2Vsc2Ug IC8qICFkZWZpbmVkKF9TQ19LRVJORUxfQklUUykgKi8KLQkJCSAgICBwdXRzICgiaHBwYTIu MCIpOyBicmVhazsKLQkJI2VuZGlmCi0JCQlkZWZhdWx0OiBwdXRzICgiaHBwYTEuMCIpOyBi cmVhazsKLQkJCX0KLQkJICAgIGV4aXQgKDApOwotCQl9Ci1FT0YKLQkJICAgIChDQ09QVFM9 IiIgJENDX0ZPUl9CVUlMRCAtbyAiJGR1bW15IiAiJGR1bW15LmMiIDI+L2Rldi9udWxsKSAm JiBIUF9BUkNIPWAiJGR1bW15ImAKLQkJICAgIHRlc3QgLXogIiRIUF9BUkNIIiAmJiBIUF9B UkNIPWhwcGEKLQkJZmkgOzsKLQllc2FjCi0JaWYgdGVzdCAiJEhQX0FSQ0giID0gaHBwYTIu MHcKLQl0aGVuCi0JICAgIHNldF9jY19mb3JfYnVpbGQKLQotCSAgICAjIGhwcGEyLjB3LWhw LWhwdXgqIGhhcyBhIDY0LWJpdCBrZXJuZWwgYW5kIGEgY29tcGlsZXIgZ2VuZXJhdGluZwot CSAgICAjIDMyLWJpdCBjb2RlLiAgaHBwYTY0LWhwLWhwdXgqIGhhcyB0aGUgc2FtZSBrZXJu ZWwgYW5kIGEgY29tcGlsZXIKLQkgICAgIyBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlLiAgR05V IGFuZCBIUCB1c2UgZGlmZmVyZW50IG5vbWVuY2xhdHVyZToKLQkgICAgIwotCSAgICAjICQg Q0NfRk9SX0JVSUxEPWNjIC4vY29uZmlnLmd1ZXNzCi0JICAgICMgPT4gaHBwYTIuMHctaHAt aHB1eDExLjIzCi0JICAgICMgJCBDQ19GT1JfQlVJTEQ9ImNjICtEQTIuMHciIC4vY29uZmln Lmd1ZXNzCi0JICAgICMgPT4gaHBwYTY0LWhwLWhwdXgxMS4yMwotCi0JICAgIGlmIGVjaG8g X19MUDY0X18gfCAoQ0NPUFRTPSIiICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkg fAotCQlncmVwIC1xIF9fTFA2NF9fCi0JICAgIHRoZW4KLQkJSFBfQVJDSD1ocHBhMi4wdwot CSAgICBlbHNlCi0JCUhQX0FSQ0g9aHBwYTY0Ci0JICAgIGZpCi0JZmkKLQlHVUVTUz0kSFBf QVJDSC1ocC1ocHV4JEhQVVhfUkVWCi0JOzsKLSAgICBpYTY0OkhQLVVYOio6KikKLQlIUFVY X1JFVj1gZWNobyAiJFVOQU1FX1JFTEVBU0UiIHwgc2VkIC1lICdzL1teLl0qLlswQl0qLy8n YAotCUdVRVNTPWlhNjQtaHAtaHB1eCRIUFVYX1JFVgotCTs7Ci0gICAgMzA1MCo6SEktVVg6 KjoqKQotCXNldF9jY19mb3JfYnVpbGQKLQlzZWQgJ3MvXgkvLycgPDwgRU9GID4gIiRkdW1t eS5jIgotCSNpbmNsdWRlIDx1bmlzdGQuaD4KLQlpbnQKLQltYWluICgpCi0JewotCSAgbG9u ZyBjcHUgPSBzeXNjb25mIChfU0NfQ1BVX1ZFUlNJT04pOwotCSAgLyogVGhlIG9yZGVyIG1h dHRlcnMsIGJlY2F1c2UgQ1BVX0lTX0hQX01DNjhLIGVycm9uZW91c2x5IHJldHVybnMKLQkg ICAgIHRydWUgZm9yIENQVV9QQV9SSVNDMV8wLiAgQ1BVX0lTX1BBX1JJU0MgcmV0dXJucyBj b3JyZWN0Ci0JICAgICByZXN1bHRzLCBob3dldmVyLiAgKi8KLQkgIGlmIChDUFVfSVNfUEFf UklTQyAoY3B1KSkKLQkgICAgewotCSAgICAgIHN3aXRjaCAoY3B1KQotCQl7Ci0JCSAgY2Fz ZSBDUFVfUEFfUklTQzFfMDogcHV0cyAoImhwcGExLjAtaGl0YWNoaS1oaXV4d2UyIik7IGJy ZWFrOwotCQkgIGNhc2UgQ1BVX1BBX1JJU0MxXzE6IHB1dHMgKCJocHBhMS4xLWhpdGFjaGkt aGl1eHdlMiIpOyBicmVhazsKLQkJICBjYXNlIENQVV9QQV9SSVNDMl8wOiBwdXRzICgiaHBw YTIuMC1oaXRhY2hpLWhpdXh3ZTIiKTsgYnJlYWs7Ci0JCSAgZGVmYXVsdDogcHV0cyAoImhw cGEtaGl0YWNoaS1oaXV4d2UyIik7IGJyZWFrOwotCQl9Ci0JICAgIH0KLQkgIGVsc2UgaWYg KENQVV9JU19IUF9NQzY4SyAoY3B1KSkKLQkgICAgcHV0cyAoIm02OGstaGl0YWNoaS1oaXV4 d2UyIik7Ci0JICBlbHNlIHB1dHMgKCJ1bmtub3duLWhpdGFjaGktaGl1eHdlMiIpOwotCSAg ZXhpdCAoMCk7Ci0JfQotRU9GCi0JJENDX0ZPUl9CVUlMRCAtbyAiJGR1bW15IiAiJGR1bW15 LmMiICYmIFNZU1RFTV9OQU1FPWAiJGR1bW15ImAgJiYKLQkJeyBlY2hvICIkU1lTVEVNX05B TUUiOyBleGl0OyB9Ci0JR1VFU1M9dW5rbm93bi1oaXRhY2hpLWhpdXh3ZTIKLQk7OwotICAg IDkwMDAvNz8/OjQuM2JzZDoqOiogfCA5MDAwLzg/Wzc5XTo0LjNic2Q6KjoqKQotCUdVRVNT PWhwcGExLjEtaHAtYnNkCi0JOzsKLSAgICA5MDAwLzg/Pzo0LjNic2Q6KjoqKQotCUdVRVNT PWhwcGExLjAtaHAtYnNkCi0JOzsKLSAgICAqOT8/KjpNUEUvaVg6KjoqIHwgKjMwMDAqOk1Q RS9pWDoqOiopCi0JR1VFU1M9aHBwYTEuMC1ocC1tcGVpeAotCTs7Ci0gICAgaHA3Pz86T1NG MToqOiogfCBocDg/Wzc5XTpPU0YxOio6KikKLQlHVUVTUz1ocHBhMS4xLWhwLW9zZgotCTs7 Ci0gICAgaHA4Pz86T1NGMToqOiopCi0JR1VFU1M9aHBwYTEuMC1ocC1vc2YKLQk7OwotICAg IGkqODY6T1NGMToqOiopCi0JaWYgdGVzdCAteCAvdXNyL3NiaW4vc3lzdmVyc2lvbiA7IHRo ZW4KLQkgICAgR1VFU1M9JFVOQU1FX01BQ0hJTkUtdW5rbm93bi1vc2YxbWsKLQllbHNlCi0J ICAgIEdVRVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tb3NmMQotCWZpCi0JOzsKLSAgICBw YXJpc2MqOkxpdGVzKjoqOiopCi0JR1VFU1M9aHBwYTEuMS1ocC1saXRlcwotCTs7Ci0gICAg QzEqOkNvbnZleE9TOio6KiB8IGNvbnZleDpDb252ZXhPUzpDMSo6KikKLQlHVUVTUz1jMS1j b252ZXgtYnNkCi0JOzsKLSAgICBDMio6Q29udmV4T1M6KjoqIHwgY29udmV4OkNvbnZleE9T OkMyKjoqKQotCWlmIGdldHN5c2luZm8gLWYgc2NhbGFyX2FjYwotCXRoZW4gZWNobyBjMzIt Y29udmV4LWJzZAotCWVsc2UgZWNobyBjMi1jb252ZXgtYnNkCi0JZmkKLQlleGl0IDs7Ci0g ICAgQzM0KjpDb252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzM0KjoqKQotCUdVRVNT PWMzNC1jb252ZXgtYnNkCi0JOzsKLSAgICBDMzgqOkNvbnZleE9TOio6KiB8IGNvbnZleDpD b252ZXhPUzpDMzgqOiopCi0JR1VFU1M9YzM4LWNvbnZleC1ic2QKLQk7OwotICAgIEM0KjpD b252ZXhPUzoqOiogfCBjb252ZXg6Q29udmV4T1M6QzQqOiopCi0JR1VFU1M9YzQtY29udmV4 LWJzZAotCTs7Ci0gICAgQ1JBWSpZLU1QOio6KjoqKQotCUNSQVlfUkVMPWBlY2hvICIkVU5B TUVfUkVMRUFTRSIgfCBzZWQgLWUgJ3MvXC5bXi5dKiQvLlgvJ2AKLQlHVUVTUz15bXAtY3Jh eS11bmljb3MkQ1JBWV9SRUwKLQk7OwotICAgIENSQVkqW0EtWl05MDoqOio6KikKLQllY2hv ICIkVU5BTUVfTUFDSElORSItY3JheS11bmljb3MiJFVOQU1FX1JFTEVBU0UiIFwKLQl8IHNl ZCAtZSAncy9DUkFZLipcKFtBLVpdOTBcKS9cMS8nIFwKLQkgICAgICAtZSB5L0FCQ0RFRkdI SUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LyBcCi0JICAg ICAgLWUgJ3MvXC5bXi5dKiQvLlgvJwotCWV4aXQgOzsKLSAgICBDUkFZKlRTOio6KjoqKQot CUNSQVlfUkVMPWBlY2hvICIkVU5BTUVfUkVMRUFTRSIgfCBzZWQgLWUgJ3MvXC5bXi5dKiQv LlgvJ2AKLQlHVUVTUz10OTAtY3JheS11bmljb3MkQ1JBWV9SRUwKLQk7OwotICAgIENSQVkq VDNFOio6KjoqKQotCUNSQVlfUkVMPWBlY2hvICIkVU5BTUVfUkVMRUFTRSIgfCBzZWQgLWUg J3MvXC5bXi5dKiQvLlgvJ2AKLQlHVUVTUz1hbHBoYWV2NS1jcmF5LXVuaWNvc21rJENSQVlf UkVMCi0JOzsKLSAgICBDUkFZKlNWMToqOio6KikKLQlDUkFZX1JFTD1gZWNobyAiJFVOQU1F X1JFTEVBU0UiIHwgc2VkIC1lICdzL1wuW14uXSokLy5YLydgCi0JR1VFU1M9c3YxLWNyYXkt dW5pY29zJENSQVlfUkVMCi0JOzsKLSAgICAqOlVOSUNPUy9tcDoqOiopCi0JQ1JBWV9SRUw9 YGVjaG8gIiRVTkFNRV9SRUxFQVNFIiB8IHNlZCAtZSAncy9cLlteLl0qJC8uWC8nYAotCUdV RVNTPWNyYXludi1jcmF5LXVuaWNvc21wJENSQVlfUkVMCi0JOzsKLSAgICBGMzBbMDFdOlVO SVhfU3lzdGVtX1Y6KjoqIHwgRjcwMDpVTklYX1N5c3RlbV9WOio6KikKLQlGVUpJVFNVX1BS T0M9YHVuYW1lIC1tIHwgdHIgQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVogYWJjZGVmZ2hp amtsbW5vcHFyc3R1dnd4eXpgCi0JRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgQUJDREVG R0hJSktMTU5PUFFSU1RVVldYWVogYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogfCBzZWQg LWUgJ3MvXC8vLydgCi0JRlVKSVRTVV9SRUw9YGVjaG8gIiRVTkFNRV9SRUxFQVNFIiB8IHNl ZCAtZSAncy8gL18vJ2AKLQlHVUVTUz0ke0ZVSklUU1VfUFJPQ30tZnVqaXRzdS0ke0ZVSklU U1VfU1lTfSR7RlVKSVRTVV9SRUx9Ci0JOzsKLSAgICA1MDAwOlVOSVhfU3lzdGVtX1Y6NC4q OiopCi0JRlVKSVRTVV9TWVM9YHVuYW1lIC1wIHwgdHIgQUJDREVGR0hJSktMTU5PUFFSU1RV VldYWVogYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXogfCBzZWQgLWUgJ3MvXC8vLydgCi0J RlVKSVRTVV9SRUw9YGVjaG8gIiRVTkFNRV9SRUxFQVNFIiB8IHRyIEFCQ0RFRkdISUpLTE1O T1BRUlNUVVZXWFlaIGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IHwgc2VkIC1lICdzLyAv Xy8nYAotCUdVRVNTPXNwYXJjLWZ1aml0c3UtJHtGVUpJVFNVX1NZU30ke0ZVSklUU1VfUkVM fQotCTs7Ci0gICAgaSo4NjpCU0QvMzg2Oio6KiB8IGkqODY6QlNEL09TOio6KiB8ICo6QXNj ZW5kXCBFbWJlZGRlZC9PUzoqOiopCi0JR1VFU1M9JFVOQU1FX01BQ0hJTkUtcGMtYnNkaSRV TkFNRV9SRUxFQVNFCi0JOzsKLSAgICBzcGFyYyo6QlNEL09TOio6KikKLQlHVUVTUz1zcGFy Yy11bmtub3duLWJzZGkkVU5BTUVfUkVMRUFTRQotCTs7Ci0gICAgKjpCU0QvT1M6KjoqKQot CUdVRVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tYnNkaSRVTkFNRV9SRUxFQVNFCi0JOzsK LSAgICBhcm06RnJlZUJTRDoqOiopCi0JVU5BTUVfUFJPQ0VTU09SPWB1bmFtZSAtcGAKLQlz ZXRfY2NfZm9yX2J1aWxkCi0JaWYgZWNobyBfX0FSTV9QQ1NfVkZQIHwgJENDX0ZPUl9CVUlM RCAtRSAtIDI+L2Rldi9udWxsIFwKLQkgICAgfCBncmVwIC1xIF9fQVJNX1BDU19WRlAKLQl0 aGVuCi0JICAgIEZSRUVCU0RfUkVMPWBlY2hvICIkVU5BTUVfUkVMRUFTRSIgfCBzZWQgLWUg J3MvWy0oXS4qLy8nYAotCSAgICBHVUVTUz0kVU5BTUVfUFJPQ0VTU09SLXVua25vd24tZnJl ZWJzZCRGUkVFQlNEX1JFTC1nbnVlYWJpCi0JZWxzZQotCSAgICBGUkVFQlNEX1JFTD1gZWNo byAiJFVOQU1FX1JFTEVBU0UiIHwgc2VkIC1lICdzL1stKF0uKi8vJ2AKLQkgICAgR1VFU1M9 JFVOQU1FX1BST0NFU1NPUi11bmtub3duLWZyZWVic2QkRlJFRUJTRF9SRUwtZ251ZWFiaWhm Ci0JZmkKLQk7OwotICAgICo6RnJlZUJTRDoqOiopCi0JVU5BTUVfUFJPQ0VTU09SPWAvdXNy L2Jpbi91bmFtZSAtcGAKLQljYXNlICRVTkFNRV9QUk9DRVNTT1IgaW4KLQkgICAgYW1kNjQp Ci0JCVVOQU1FX1BST0NFU1NPUj14ODZfNjQgOzsKLQkgICAgaTM4NikKLQkJVU5BTUVfUFJP Q0VTU09SPWk1ODYgOzsKLQllc2FjCi0JRlJFRUJTRF9SRUw9YGVjaG8gIiRVTkFNRV9SRUxF QVNFIiB8IHNlZCAtZSAncy9bLShdLiovLydgCi0JR1VFU1M9JFVOQU1FX1BST0NFU1NPUi11 bmtub3duLWZyZWVic2QkRlJFRUJTRF9SRUwKLQk7OwotICAgIGkqOkNZR1dJTio6KikKLQlH VUVTUz0kVU5BTUVfTUFDSElORS1wYy1jeWd3aW4KLQk7OwotICAgICo6TUlOR1c2NCo6KikK LQlHVUVTUz0kVU5BTUVfTUFDSElORS1wYy1taW5ndzY0Ci0JOzsKLSAgICAqOk1JTkdXKjoq KQotCUdVRVNTPSRVTkFNRV9NQUNISU5FLXBjLW1pbmd3MzIKLQk7OwotICAgICo6TVNZUyo6 KikKLQlHVUVTUz0kVU5BTUVfTUFDSElORS1wYy1tc3lzCi0JOzsKLSAgICBpKjpQVyo6KikK LQlHVUVTUz0kVU5BTUVfTUFDSElORS1wYy1wdzMyCi0JOzsKLSAgICAqOlNlcmVuaXR5T1M6 KjoqKQotICAgICAgICBHVUVTUz0kVU5BTUVfTUFDSElORS1wYy1zZXJlbml0eQotICAgICAg ICA7OwotICAgICo6SW50ZXJpeCo6KikKLQljYXNlICRVTkFNRV9NQUNISU5FIGluCi0JICAg IHg4NikKLQkJR1VFU1M9aTU4Ni1wYy1pbnRlcml4JFVOQU1FX1JFTEVBU0UKLQkJOzsKLQkg ICAgYXV0aGVudGljYW1kIHwgZ2VudWluZWludGVsIHwgRU02NFQpCi0JCUdVRVNTPXg4Nl82 NC11bmtub3duLWludGVyaXgkVU5BTUVfUkVMRUFTRQotCQk7OwotCSAgICBJQTY0KQotCQlH VUVTUz1pYTY0LXVua25vd24taW50ZXJpeCRVTkFNRV9SRUxFQVNFCi0JCTs7Ci0JZXNhYyA7 OwotICAgIGkqOlVXSU4qOiopCi0JR1VFU1M9JFVOQU1FX01BQ0hJTkUtcGMtdXdpbgotCTs7 Ci0gICAgYW1kNjQ6Q1lHV0lOKjoqOiogfCB4ODZfNjQ6Q1lHV0lOKjoqOiopCi0JR1VFU1M9 eDg2XzY0LXBjLWN5Z3dpbgotCTs7Ci0gICAgcHJlcCo6U3VuT1M6NS4qOiopCi0JU1VOX1JF TD1gZWNobyAiJFVOQU1FX1JFTEVBU0UiIHwgc2VkIC1lICdzL1teLl0qLy8nYAotCUdVRVNT PXBvd2VycGNsZS11bmtub3duLXNvbGFyaXMyJFNVTl9SRUwKLQk7OwotICAgICo6R05VOio6 KikKLQkjIHRoZSBHTlUgc3lzdGVtCi0JR05VX0FSQ0g9YGVjaG8gIiRVTkFNRV9NQUNISU5F IiB8IHNlZCAtZSAncyxbLS9dLiokLCwnYAotCUdOVV9SRUw9YGVjaG8gIiRVTkFNRV9SRUxF QVNFIiB8IHNlZCAtZSAncywvLiokLCwnYAotCUdVRVNTPSRHTlVfQVJDSC11bmtub3duLSRM SUJDJEdOVV9SRUwKLQk7OwotICAgICo6R05VLyo6KjoqKQotCSMgb3RoZXIgc3lzdGVtcyB3 aXRoIEdOVSBsaWJjIGFuZCB1c2VybGFuZAotCUdOVV9TWVM9YGVjaG8gIiRVTkFNRV9TWVNU RU0iIHwgc2VkICdzLF5bXi9dKi8sLCcgfCB0ciAiWzp1cHBlcjpdIiAiWzpsb3dlcjpdImAK LQlHTlVfUkVMPWBlY2hvICIkVU5BTUVfUkVMRUFTRSIgfCBzZWQgLWUgJ3MvWy0oXS4qLy8n YAotCUdVRVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tJEdOVV9TWVMkR05VX1JFTC0kTElC QwotCTs7Ci0gICAgeDg2XzY0OltNbV1hbmFnYXJtOio6KnxpPzg2OltNbV1hbmFnYXJtOio6 KikKLQlHVUVTUz0iJFVOQU1FX01BQ0hJTkUtcGMtbWFuYWdhcm0tbWxpYmMiCi0JOzsKLSAg ICAqOltNbV1hbmFnYXJtOio6KikKLQlHVUVTUz0iJFVOQU1FX01BQ0hJTkUtdW5rbm93bi1t YW5hZ2FybS1tbGliYyIKLQk7OwotICAgICo6TWluaXg6KjoqKQotCUdVRVNTPSRVTkFNRV9N QUNISU5FLXVua25vd24tbWluaXgKLQk7OwotICAgIGFhcmNoNjQ6TGludXg6KjoqKQotCUdV RVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tbGludXgtJExJQkMKLQk7OwotICAgIGFhcmNo NjRfYmU6TGludXg6KjoqKQotCVVOQU1FX01BQ0hJTkU9YWFyY2g2NF9iZQotCUdVRVNTPSRV TkFNRV9NQUNISU5FLXVua25vd24tbGludXgtJExJQkMKLQk7OwotICAgIGFscGhhOkxpbnV4 Oio6KikKLQljYXNlIGBzZWQgLW4gJy9eY3B1IG1vZGVsL3MvXi4qOiBcKC4qXCkvXDEvcCcg L3Byb2MvY3B1aW5mbyAyPi9kZXYvbnVsbGAgaW4KLQkgIEVWNSkgICBVTkFNRV9NQUNISU5F PWFscGhhZXY1IDs7Ci0JICBFVjU2KSAgVU5BTUVfTUFDSElORT1hbHBoYWV2NTYgOzsKLQkg IFBDQTU2KSBVTkFNRV9NQUNISU5FPWFscGhhcGNhNTYgOzsKLQkgIFBDQTU3KSBVTkFNRV9N QUNISU5FPWFscGhhcGNhNTYgOzsKLQkgIEVWNikgICBVTkFNRV9NQUNISU5FPWFscGhhZXY2 IDs7Ci0JICBFVjY3KSAgVU5BTUVfTUFDSElORT1hbHBoYWV2NjcgOzsKLQkgIEVWNjgqKSBV TkFNRV9NQUNISU5FPWFscGhhZXY2OCA7OwotCWVzYWMKLQlvYmpkdW1wIC0tcHJpdmF0ZS1o ZWFkZXJzIC9iaW4vc2ggfCBncmVwIC1xIGxkLnNvLjEKLQlpZiB0ZXN0ICIkPyIgPSAwIDsg dGhlbiBMSUJDPWdudWxpYmMxIDsgZmkKLQlHVUVTUz0kVU5BTUVfTUFDSElORS11bmtub3du LWxpbnV4LSRMSUJDCi0JOzsKLSAgICBhcmM6TGludXg6KjoqIHwgYXJjZWI6TGludXg6Kjoq IHwgYXJjMzI6TGludXg6KjoqIHwgYXJjNjQ6TGludXg6KjoqKQotCUdVRVNTPSRVTkFNRV9N QUNISU5FLXVua25vd24tbGludXgtJExJQkMKLQk7OwotICAgIGFybSo6TGludXg6KjoqKQot CXNldF9jY19mb3JfYnVpbGQKLQlpZiBlY2hvIF9fQVJNX0VBQklfXyB8ICRDQ19GT1JfQlVJ TEQgLUUgLSAyPi9kZXYvbnVsbCBcCi0JICAgIHwgZ3JlcCAtcSBfX0FSTV9FQUJJX18KLQl0 aGVuCi0JICAgIEdVRVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tbGludXgtJExJQkMKLQll bHNlCi0JICAgIGlmIGVjaG8gX19BUk1fUENTX1ZGUCB8ICRDQ19GT1JfQlVJTEQgLUUgLSAy Pi9kZXYvbnVsbCBcCi0JCXwgZ3JlcCAtcSBfX0FSTV9QQ1NfVkZQCi0JICAgIHRoZW4KLQkJ R1VFU1M9JFVOQU1FX01BQ0hJTkUtdW5rbm93bi1saW51eC0ke0xJQkN9ZWFiaQotCSAgICBl bHNlCi0JCUdVRVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tbGludXgtJHtMSUJDfWVhYmlo ZgotCSAgICBmaQotCWZpCi0JOzsKLSAgICBhdnIzMio6TGludXg6KjoqKQotCUdVRVNTPSRV TkFNRV9NQUNISU5FLXVua25vd24tbGludXgtJExJQkMKLQk7OwotICAgIGNyaXM6TGludXg6 KjoqKQotCUdVRVNTPSRVTkFNRV9NQUNISU5FLWF4aXMtbGludXgtJExJQkMKLQk7OwotICAg IGNyaXN2MzI6TGludXg6KjoqKQotCUdVRVNTPSRVTkFNRV9NQUNISU5FLWF4aXMtbGludXgt JExJQkMKLQk7OwotICAgIGUyazpMaW51eDoqOiopCi0JR1VFU1M9JFVOQU1FX01BQ0hJTkUt dW5rbm93bi1saW51eC0kTElCQwotCTs7Ci0gICAgZnJ2OkxpbnV4Oio6KikKLQlHVUVTUz0k VU5BTUVfTUFDSElORS11bmtub3duLWxpbnV4LSRMSUJDCi0JOzsKLSAgICBoZXhhZ29uOkxp bnV4Oio6KikKLQlHVUVTUz0kVU5BTUVfTUFDSElORS11bmtub3duLWxpbnV4LSRMSUJDCi0J OzsKLSAgICBpKjg2OkxpbnV4Oio6KikKLQlHVUVTUz0kVU5BTUVfTUFDSElORS1wYy1saW51 eC0kTElCQwotCTs7Ci0gICAgaWE2NDpMaW51eDoqOiopCi0JR1VFU1M9JFVOQU1FX01BQ0hJ TkUtdW5rbm93bi1saW51eC0kTElCQwotCTs7Ci0gICAgazFvbTpMaW51eDoqOiopCi0JR1VF U1M9JFVOQU1FX01BQ0hJTkUtdW5rbm93bi1saW51eC0kTElCQwotCTs7Ci0gICAgbG9vbmdh cmNoMzI6TGludXg6KjoqIHwgbG9vbmdhcmNoNjQ6TGludXg6KjoqKQotCUdVRVNTPSRVTkFN RV9NQUNISU5FLXVua25vd24tbGludXgtJExJQkMKLQk7OwotICAgIG0zMnIqOkxpbnV4Oio6 KikKLQlHVUVTUz0kVU5BTUVfTUFDSElORS11bmtub3duLWxpbnV4LSRMSUJDCi0JOzsKLSAg ICBtNjgqOkxpbnV4Oio6KikKLQlHVUVTUz0kVU5BTUVfTUFDSElORS11bmtub3duLWxpbnV4 LSRMSUJDCi0JOzsKLSAgICBtaXBzOkxpbnV4Oio6KiB8IG1pcHM2NDpMaW51eDoqOiopCi0J c2V0X2NjX2Zvcl9idWlsZAotCUlTX0dMSUJDPTAKLQl0ZXN0IHgiJHtMSUJDfSIgPSB4Z251 ICYmIElTX0dMSUJDPTEKLQlzZWQgJ3MvXgkvLycgPDwgRU9GID4gIiRkdW1teS5jIgotCSN1 bmRlZiBDUFUKLQkjdW5kZWYgbWlwcwotCSN1bmRlZiBtaXBzZWwKLQkjdW5kZWYgbWlwczY0 Ci0JI3VuZGVmIG1pcHM2NGVsCi0JI2lmICR7SVNfR0xJQkN9ICYmIGRlZmluZWQoX0FCSTY0 KQotCUxJQkNBQkk9Z251YWJpNjQKLQkjZWxzZQotCSNpZiAke0lTX0dMSUJDfSAmJiBkZWZp bmVkKF9BQklOMzIpCi0JTElCQ0FCST1nbnVhYmluMzIKLQkjZWxzZQotCUxJQkNBQkk9JHtM SUJDfQotCSNlbmRpZgotCSNlbmRpZgotCi0JI2lmICR7SVNfR0xJQkN9ICYmIGRlZmluZWQo X19taXBzNjQpICYmIGRlZmluZWQoX19taXBzX2lzYV9yZXYpICYmIF9fbWlwc19pc2FfcmV2 Pj02Ci0JQ1BVPW1pcHNpc2E2NHI2Ci0JI2Vsc2UKLQkjaWYgJHtJU19HTElCQ30gJiYgIWRl ZmluZWQoX19taXBzNjQpICYmIGRlZmluZWQoX19taXBzX2lzYV9yZXYpICYmIF9fbWlwc19p c2FfcmV2Pj02Ci0JQ1BVPW1pcHNpc2EzMnI2Ci0JI2Vsc2UKLQkjaWYgZGVmaW5lZChfX21p cHM2NCkKLQlDUFU9bWlwczY0Ci0JI2Vsc2UKLQlDUFU9bWlwcwotCSNlbmRpZgotCSNlbmRp ZgotCSNlbmRpZgotCi0JI2lmIGRlZmluZWQoX19NSVBTRUxfXykgfHwgZGVmaW5lZChfX01J UFNFTCkgfHwgZGVmaW5lZChfTUlQU0VMKSB8fCBkZWZpbmVkKE1JUFNFTCkKLQlNSVBTX0VO RElBTj1lbAotCSNlbHNlCi0JI2lmIGRlZmluZWQoX19NSVBTRUJfXykgfHwgZGVmaW5lZChf X01JUFNFQikgfHwgZGVmaW5lZChfTUlQU0VCKSB8fCBkZWZpbmVkKE1JUFNFQikKLQlNSVBT X0VORElBTj0KLQkjZWxzZQotCU1JUFNfRU5ESUFOPQotCSNlbmRpZgotCSNlbmRpZgotRU9G Ci0JY2Nfc2V0X3ZhcnM9YCRDQ19GT1JfQlVJTEQgLUUgIiRkdW1teS5jIiAyPi9kZXYvbnVs bCB8IGdyZXAgJ15DUFVcfF5NSVBTX0VORElBTlx8XkxJQkNBQkknYAotCWV2YWwgIiRjY19z ZXRfdmFycyIKLQl0ZXN0ICJ4JENQVSIgIT0geCAmJiB7IGVjaG8gIiRDUFUke01JUFNfRU5E SUFOfS11bmtub3duLWxpbnV4LSRMSUJDQUJJIjsgZXhpdDsgfQotCTs7Ci0gICAgbWlwczY0 ZWw6TGludXg6KjoqKQotCUdVRVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tbGludXgtJExJ QkMKLQk7OwotICAgIG9wZW5yaXNjKjpMaW51eDoqOiopCi0JR1VFU1M9b3Ixay11bmtub3du LWxpbnV4LSRMSUJDCi0JOzsKLSAgICBvcjMyOkxpbnV4Oio6KiB8IG9yMWsqOkxpbnV4Oio6 KikKLQlHVUVTUz0kVU5BTUVfTUFDSElORS11bmtub3duLWxpbnV4LSRMSUJDCi0JOzsKLSAg ICBwYWRyZTpMaW51eDoqOiopCi0JR1VFU1M9c3BhcmMtdW5rbm93bi1saW51eC0kTElCQwot CTs7Ci0gICAgcGFyaXNjNjQ6TGludXg6KjoqIHwgaHBwYTY0OkxpbnV4Oio6KikKLQlHVUVT Uz1ocHBhNjQtdW5rbm93bi1saW51eC0kTElCQwotCTs7Ci0gICAgcGFyaXNjOkxpbnV4Oio6 KiB8IGhwcGE6TGludXg6KjoqKQotCSMgTG9vayBmb3IgQ1BVIGxldmVsCi0JY2FzZSBgZ3Jl cCAnXmNwdVteYS16XSo6JyAvcHJvYy9jcHVpbmZvIDI+L2Rldi9udWxsIHwgY3V0IC1kJyAn IC1mMmAgaW4KLQkgIFBBNyopIEdVRVNTPWhwcGExLjEtdW5rbm93bi1saW51eC0kTElCQyA7 OwotCSAgUEE4KikgR1VFU1M9aHBwYTIuMC11bmtub3duLWxpbnV4LSRMSUJDIDs7Ci0JICAq KSAgICBHVUVTUz1ocHBhLXVua25vd24tbGludXgtJExJQkMgOzsKLQllc2FjCi0JOzsKLSAg ICBwcGM2NDpMaW51eDoqOiopCi0JR1VFU1M9cG93ZXJwYzY0LXVua25vd24tbGludXgtJExJ QkMKLQk7OwotICAgIHBwYzpMaW51eDoqOiopCi0JR1VFU1M9cG93ZXJwYy11bmtub3duLWxp bnV4LSRMSUJDCi0JOzsKLSAgICBwcGM2NGxlOkxpbnV4Oio6KikKLQlHVUVTUz1wb3dlcnBj NjRsZS11bmtub3duLWxpbnV4LSRMSUJDCi0JOzsKLSAgICBwcGNsZTpMaW51eDoqOiopCi0J R1VFU1M9cG93ZXJwY2xlLXVua25vd24tbGludXgtJExJQkMKLQk7OwotICAgIHJpc2N2MzI6 TGludXg6KjoqIHwgcmlzY3YzMmJlOkxpbnV4Oio6KiB8IHJpc2N2NjQ6TGludXg6KjoqIHwg cmlzY3Y2NGJlOkxpbnV4Oio6KikKLQlHVUVTUz0kVU5BTUVfTUFDSElORS11bmtub3duLWxp bnV4LSRMSUJDCi0JOzsKLSAgICBzMzkwOkxpbnV4Oio6KiB8IHMzOTB4OkxpbnV4Oio6KikK LQlHVUVTUz0kVU5BTUVfTUFDSElORS1pYm0tbGludXgtJExJQkMKLQk7OwotICAgIHNoNjQq OkxpbnV4Oio6KikKLQlHVUVTUz0kVU5BTUVfTUFDSElORS11bmtub3duLWxpbnV4LSRMSUJD Ci0JOzsKLSAgICBzaCo6TGludXg6KjoqKQotCUdVRVNTPSRVTkFNRV9NQUNISU5FLXVua25v d24tbGludXgtJExJQkMKLQk7OwotICAgIHNwYXJjOkxpbnV4Oio6KiB8IHNwYXJjNjQ6TGlu dXg6KjoqKQotCUdVRVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tbGludXgtJExJQkMKLQk7 OwotICAgIHRpbGUqOkxpbnV4Oio6KikKLQlHVUVTUz0kVU5BTUVfTUFDSElORS11bmtub3du LWxpbnV4LSRMSUJDCi0JOzsKLSAgICB2YXg6TGludXg6KjoqKQotCUdVRVNTPSRVTkFNRV9N QUNISU5FLWRlYy1saW51eC0kTElCQwotCTs7Ci0gICAgeDg2XzY0OkxpbnV4Oio6KikKLQlz ZXRfY2NfZm9yX2J1aWxkCi0JQ1BVPSRVTkFNRV9NQUNISU5FCi0JTElCQ0FCST0kTElCQwot CWlmIHRlc3QgIiRDQ19GT1JfQlVJTEQiICE9IG5vX2NvbXBpbGVyX2ZvdW5kOyB0aGVuCi0J ICAgIEFCST02NAotCSAgICBzZWQgJ3MvXgkgICAgLy8nIDw8IEVPRiA+ICIkZHVtbXkuYyIK LQkgICAgI2lmZGVmIF9faTM4Nl9fCi0JICAgIEFCST14ODYKLQkgICAgI2Vsc2UKLQkgICAg I2lmZGVmIF9fSUxQMzJfXwotCSAgICBBQkk9eDMyCi0JICAgICNlbmRpZgotCSAgICAjZW5k aWYKLUVPRgotCSAgICBjY19zZXRfYWJpPWAkQ0NfRk9SX0JVSUxEIC1FICIkZHVtbXkuYyIg Mj4vZGV2L251bGwgfCBncmVwICdeQUJJJyB8IHNlZCAncywgLCxnJ2AKLQkgICAgZXZhbCAi JGNjX3NldF9hYmkiCi0JICAgIGNhc2UgJEFCSSBpbgotCQl4ODYpIENQVT1pNjg2IDs7Ci0J CXgzMikgTElCQ0FCST0ke0xJQkN9eDMyIDs7Ci0JICAgIGVzYWMKLQlmaQotCUdVRVNTPSRD UFUtcGMtbGludXgtJExJQkNBQkkKLQk7OwotICAgIHh0ZW5zYSo6TGludXg6KjoqKQotCUdV RVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tbGludXgtJExJQkMKLQk7OwotICAgIGkqODY6 RFlOSVgvcHR4OjQqOiopCi0JIyBwdHggNC4wIGRvZXMgdW5hbWUgLXMgY29ycmVjdGx5LCB3 aXRoIERZTklYL3B0eCBpbiB0aGVyZS4KLQkjIGVhcmxpZXIgdmVyc2lvbnMgYXJlIG1lc3Nl ZCB1cCBhbmQgcHV0IHRoZSBub2RlbmFtZSBpbiBib3RoCi0JIyBzeXNuYW1lIGFuZCBub2Rl bmFtZS4KLQlHVUVTUz1pMzg2LXNlcXVlbnQtc3lzdjQKLQk7OwotICAgIGkqODY6VU5JWF9T Vjo0LjJNUDoyLiopCi0JIyBVbml4d2FyZSBpcyBhbiBvZmZzaG9vdCBvZiBTVlI0LCBidXQg aXQgaGFzIGl0cyBvd24gdmVyc2lvbgotCSMgbnVtYmVyIHNlcmllcyBzdGFydGluZyB3aXRo IDIuLi4KLQkjIEkgYW0gbm90IHBvc2l0aXZlIHRoYXQgb3RoZXIgU1ZSNCBzeXN0ZW1zIHdv bid0IG1hdGNoIHRoaXMsCi0JIyBJIGp1c3QgaGF2ZSB0byBob3BlLiAgLS0gcm1zLgotCSMg VXNlIHN5c3Y0LjJ1dy4uLiBzbyB0aGF0IHN5c3Y0KiBtYXRjaGVzIGl0LgotCUdVRVNTPSRV TkFNRV9NQUNISU5FLXBjLXN5c3Y0LjJ1dyRVTkFNRV9WRVJTSU9OCi0JOzsKLSAgICBpKjg2 Ok9TLzI6KjoqKQotCSMgSWYgd2Ugd2VyZSBhYmxlIHRvIGZpbmQgJ3VuYW1lJywgdGhlbiBF TVggVW5peCBjb21wYXRpYmlsaXR5Ci0JIyBpcyBwcm9iYWJseSBpbnN0YWxsZWQuCi0JR1VF U1M9JFVOQU1FX01BQ0hJTkUtcGMtb3MyLWVteAotCTs7Ci0gICAgaSo4NjpYVFMtMzAwOio6 U1RPUCkKLQlHVUVTUz0kVU5BTUVfTUFDSElORS11bmtub3duLXN0b3AKLQk7OwotICAgIGkq ODY6YXRoZW9zOio6KikKLQlHVUVTUz0kVU5BTUVfTUFDSElORS11bmtub3duLWF0aGVvcwot CTs7Ci0gICAgaSo4NjpzeWxsYWJsZToqOiopCi0JR1VFU1M9JFVOQU1FX01BQ0hJTkUtcGMt c3lsbGFibGUKLQk7OwotICAgIGkqODY6THlueE9TOjIuKjoqIHwgaSo4NjpMeW54T1M6My5b MDFdKjoqIHwgaSo4NjpMeW54T1M6NC5bMDJdKjoqKQotCUdVRVNTPWkzODYtdW5rbm93bi1s eW54b3MkVU5BTUVfUkVMRUFTRQotCTs7Ci0gICAgaSo4NjoqRE9TOio6KikKLQlHVUVTUz0k VU5BTUVfTUFDSElORS1wYy1tc2Rvc2RqZ3BwCi0JOzsKLSAgICBpKjg2Oio6NC4qOiopCi0J VU5BTUVfUkVMPWBlY2hvICIkVU5BTUVfUkVMRUFTRSIgfCBzZWQgJ3MvXC9NUCQvLydgCi0J aWYgZ3JlcCBOb3ZlbGwgL3Vzci9pbmNsdWRlL2xpbmsuaCA+L2Rldi9udWxsIDI+L2Rldi9u dWxsOyB0aGVuCi0JCUdVRVNTPSRVTkFNRV9NQUNISU5FLXVuaXZlbC1zeXN2JFVOQU1FX1JF TAotCWVsc2UKLQkJR1VFU1M9JFVOQU1FX01BQ0hJTkUtcGMtc3lzdiRVTkFNRV9SRUwKLQlm aQotCTs7Ci0gICAgaSo4NjoqOjU6WzY3OF0qKQotCSMgVW5peFdhcmUgNy54LCBPcGVuVU5J WCBhbmQgT3BlblNlcnZlciA2LgotCWNhc2UgYC9iaW4vdW5hbWUgLVggfCBncmVwICJeTWFj aGluZSJgIGluCi0JICAgICo0ODYqKQkgICAgIFVOQU1FX01BQ0hJTkU9aTQ4NiA7OwotCSAg ICAqUGVudGl1bSkJICAgICBVTkFNRV9NQUNISU5FPWk1ODYgOzsKLQkgICAgKlBlbnQqfCpD ZWxlcm9uKSBVTkFNRV9NQUNISU5FPWk2ODYgOzsKLQllc2FjCi0JR1VFU1M9JFVOQU1FX01B Q0hJTkUtdW5rbm93bi1zeXN2JHtVTkFNRV9SRUxFQVNFfSR7VU5BTUVfU1lTVEVNfSR7VU5B TUVfVkVSU0lPTn0KLQk7OwotICAgIGkqODY6KjozLjI6KikKLQlpZiB0ZXN0IC1mIC91c3Iv b3B0aW9ucy9jYi5uYW1lOyB0aGVuCi0JCVVOQU1FX1JFTD1gc2VkIC1uICdzLy4qVmVyc2lv biAvL3AnIDwvdXNyL29wdGlvbnMvY2IubmFtZWAKLQkJR1VFU1M9JFVOQU1FX01BQ0hJTkUt cGMtaXNjJFVOQU1FX1JFTAotCWVsaWYgL2Jpbi91bmFtZSAtWCAyPi9kZXYvbnVsbCA+L2Rl di9udWxsIDsgdGhlbgotCQlVTkFNRV9SRUw9YCgvYmluL3VuYW1lIC1YfGdyZXAgUmVsZWFz ZXxzZWQgLWUgJ3MvLio9IC8vJylgCi0JCSgvYmluL3VuYW1lIC1YfGdyZXAgaTgwNDg2ID4v ZGV2L251bGwpICYmIFVOQU1FX01BQ0hJTkU9aTQ4NgotCQkoL2Jpbi91bmFtZSAtWHxncmVw ICdeTWFjaGluZS4qUGVudGl1bScgPi9kZXYvbnVsbCkgXAotCQkJJiYgVU5BTUVfTUFDSElO RT1pNTg2Ci0JCSgvYmluL3VuYW1lIC1YfGdyZXAgJ15NYWNoaW5lLipQZW50ICpJSScgPi9k ZXYvbnVsbCkgXAotCQkJJiYgVU5BTUVfTUFDSElORT1pNjg2Ci0JCSgvYmluL3VuYW1lIC1Y fGdyZXAgJ15NYWNoaW5lLipQZW50aXVtIFBybycgPi9kZXYvbnVsbCkgXAotCQkJJiYgVU5B TUVfTUFDSElORT1pNjg2Ci0JCUdVRVNTPSRVTkFNRV9NQUNISU5FLXBjLXNjbyRVTkFNRV9S RUwKLQllbHNlCi0JCUdVRVNTPSRVTkFNRV9NQUNISU5FLXBjLXN5c3YzMgotCWZpCi0JOzsK LSAgICBwYzoqOio6KikKLQkjIExlZnQgaGVyZSBmb3IgY29tcGF0aWJpbGl0eToKLQkjIHVu YW1lIC1tIHByaW50cyBmb3IgREpHUFAgYWx3YXlzICdwYycsIGJ1dCBpdCBwcmludHMgbm90 aGluZyBhYm91dAotCSMgdGhlIHByb2Nlc3Nvciwgc28gd2UgcGxheSBzYWZlIGJ5IGFzc3Vt aW5nIGk1ODYuCi0JIyBOb3RlOiB3aGF0ZXZlciB0aGlzIGlzLCBpdCBNVVNUIGJlIHRoZSBz YW1lIGFzIHdoYXQgY29uZmlnLnN1YgotCSMgcHJpbnRzIGZvciB0aGUgImRqZ3BwIiBob3N0 LCBvciBlbHNlIEdEQiBjb25maWd1cmUgd2lsbCBkZWNpZGUgdGhhdAotCSMgdGhpcyBpcyBh IGNyb3NzLWJ1aWxkLgotCUdVRVNTPWk1ODYtcGMtbXNkb3NkamdwcAotCTs7Ci0gICAgSW50 ZWw6TWFjaDozKjoqKQotCUdVRVNTPWkzODYtcGMtbWFjaDMKLQk7OwotICAgIHBhcmFnb246 KjoqOiopCi0JR1VFU1M9aTg2MC1pbnRlbC1vc2YxCi0JOzsKLSAgICBpODYwOio6NC4qOiop ICMgaTg2MC1TVlI0Ci0JaWYgZ3JlcCBTdGFyZGVudCAvdXNyL2luY2x1ZGUvc3lzL3VhZG1p bi5oID4vZGV2L251bGwgMj4mMSA7IHRoZW4KLQkgIEdVRVNTPWk4NjAtc3RhcmRlbnQtc3lz diRVTkFNRV9SRUxFQVNFICAgICMgU3RhcmRlbnQgVmlzdHJhIGk4NjAtU1ZSNAotCWVsc2Ug IyBBZGQgb3RoZXIgaTg2MC1TVlI0IHZlbmRvcnMgYmVsb3cgYXMgdGhleSBhcmUgZGlzY292 ZXJlZC4KLQkgIEdVRVNTPWk4NjAtdW5rbm93bi1zeXN2JFVOQU1FX1JFTEVBU0UgICAgICMg VW5rbm93biBpODYwLVNWUjQKLQlmaQotCTs7Ci0gICAgbWluaSo6Q1RJWDpTWVMqNToqKQot CSMgIm1pbmlmcmFtZSIKLQlHVUVTUz1tNjgwMTAtY29udmVyZ2VudC1zeXN2Ci0JOzsKLSAg ICBtYzY4azpVTklYOlNZU1RFTTU6My41MW0pCi0JR1VFU1M9bTY4ay1jb252ZXJnZW50LXN5 c3YKLQk7OwotICAgIE02ODA/MDpELU5JWDo1LjM6KikKLQlHVUVTUz1tNjhrLWRpYWItZG5p eAotCTs7Ci0gICAgTTY4KjoqOlIzVls1Njc4XSo6KikKLQl0ZXN0IC1yIC9zeXNWNjggJiYg eyBlY2hvICdtNjhrLW1vdG9yb2xhLXN5c3YnOyBleGl0OyB9IDs7Ci0gICAgM1szNDVdPz86 Kjo0LjA6My4wIHwgM1szNF0/P0E6Kjo0LjA6My4wIHwgM1szNF0/PywqOio6NC4wOjMuMCB8 IDNbMzRdPz8vKjoqOjQuMDozLjAgfCA0NDAwOio6NC4wOjMuMCB8IDQ4NTA6Kjo0LjA6My4w IHwgU0tBNDA6Kjo0LjA6My4wIHwgU0RTMjoqOjQuMDozLjAgfCBTSEcyOio6NC4wOjMuMCB8 IFM3NTAxKjoqOjQuMDozLjApCi0JT1NfUkVMPScnCi0JdGVzdCAtciAvZXRjLy5yZWxpZCBc Ci0JJiYgT1NfUkVMPS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwoWzAtOV1bMC05XVwpLiov XDEvcCcgPCAvZXRjLy5yZWxpZGAKLQkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxsIHwgZ3Jl cCA4NiA+L2Rldi9udWxsIFwKLQkgICYmIHsgZWNobyBpNDg2LW5jci1zeXN2NC4zIiRPU19S RUwiOyBleGl0OyB9Ci0JL2Jpbi91bmFtZSAtcCAyPi9kZXYvbnVsbCB8IC9iaW4vZ3JlcCBl bnRpdW0gPi9kZXYvbnVsbCBcCi0JICAmJiB7IGVjaG8gaTU4Ni1uY3Itc3lzdjQuMyIkT1Nf UkVMIjsgZXhpdDsgfSA7OwotICAgIDNbMzRdPz86Kjo0LjA6KiB8IDNbMzRdPz8sKjoqOjQu MDoqKQotCS9iaW4vdW5hbWUgLXAgMj4vZGV2L251bGwgfCBncmVwIDg2ID4vZGV2L251bGwg XAotCSAgJiYgeyBlY2hvIGk0ODYtbmNyLXN5c3Y0OyBleGl0OyB9IDs7Ci0gICAgTkNSKjoq OjQuMjoqIHwgTVBSQVMqOio6NC4yOiopCi0JT1NfUkVMPScuMycKLQl0ZXN0IC1yIC9ldGMv LnJlbGlkIFwKLQkgICAgJiYgT1NfUkVMPS5gc2VkIC1uICdzL1teIF0qIFteIF0qIFwoWzAt OV1bMC05XVwpLiovXDEvcCcgPCAvZXRjLy5yZWxpZGAKLQkvYmluL3VuYW1lIC1wIDI+L2Rl di9udWxsIHwgZ3JlcCA4NiA+L2Rldi9udWxsIFwKLQkgICAgJiYgeyBlY2hvIGk0ODYtbmNy LXN5c3Y0LjMiJE9TX1JFTCI7IGV4aXQ7IH0KLQkvYmluL3VuYW1lIC1wIDI+L2Rldi9udWxs IHwgL2Jpbi9ncmVwIGVudGl1bSA+L2Rldi9udWxsIFwKLQkgICAgJiYgeyBlY2hvIGk1ODYt bmNyLXN5c3Y0LjMiJE9TX1JFTCI7IGV4aXQ7IH0KLQkvYmluL3VuYW1lIC1wIDI+L2Rldi9u dWxsIHwgL2Jpbi9ncmVwIHB0ZXJvbiA+L2Rldi9udWxsIFwKLQkgICAgJiYgeyBlY2hvIGk1 ODYtbmNyLXN5c3Y0LjMiJE9TX1JFTCI7IGV4aXQ7IH0gOzsKLSAgICBtNjgqOkx5bnhPUzoy Lio6KiB8IG02OCo6THlueE9TOjMuMCo6KikKLQlHVUVTUz1tNjhrLXVua25vd24tbHlueG9z JFVOQU1FX1JFTEVBU0UKLQk7OwotICAgIG1jNjgwMzA6VU5JWF9TeXN0ZW1fVjo0Lio6KikK LQlHVUVTUz1tNjhrLWF0YXJpLXN5c3Y0Ci0JOzsKLSAgICBUU1VOQU1JOkx5bnhPUzoyLio6 KikKLQlHVUVTUz1zcGFyYy11bmtub3duLWx5bnhvcyRVTkFNRV9SRUxFQVNFCi0JOzsKLSAg ICByczYwMDA6THlueE9TOjIuKjoqKQotCUdVRVNTPXJzNjAwMC11bmtub3duLWx5bnhvcyRV TkFNRV9SRUxFQVNFCi0JOzsKLSAgICBQb3dlclBDOkx5bnhPUzoyLio6KiB8IFBvd2VyUEM6 THlueE9TOjMuWzAxXSo6KiB8IFBvd2VyUEM6THlueE9TOjQuWzAyXSo6KikKLQlHVUVTUz1w b3dlcnBjLXVua25vd24tbHlueG9zJFVOQU1FX1JFTEVBU0UKLQk7OwotICAgIFNNW0JFXVM6 VU5JWF9TVjoqOiopCi0JR1VFU1M9bWlwcy1kZGUtc3lzdiRVTkFNRV9SRUxFQVNFCi0JOzsK LSAgICBSTSo6UmVsaWFudFVOSVgtKjoqOiopCi0JR1VFU1M9bWlwcy1zbmktc3lzdjQKLQk7 OwotICAgIFJNKjpTSU5JWC0qOio6KikKLQlHVUVTUz1taXBzLXNuaS1zeXN2NAotCTs7Ci0g ICAgKjpTSU5JWC0qOio6KikKLQlpZiB1bmFtZSAtcCAyPi9kZXYvbnVsbCA+L2Rldi9udWxs IDsgdGhlbgotCQlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rldi9udWxsYAotCQlH VUVTUz0kVU5BTUVfTUFDSElORS1zbmktc3lzdjQKLQllbHNlCi0JCUdVRVNTPW5zMzJrLXNu aS1zeXN2Ci0JZmkKLQk7OwotICAgIFBFTlRJVU06Kjo0LjAqOiopCSMgVW5pc3lzICdDbGVh clBhdGggSE1QIElYIDQwMDAnIFNWUjQvTVAgZWZmb3J0Ci0JCQkjIHNheXMgPFJpY2hhcmQu TS5CYXJ0ZWxAY2NNYWlsLkNlbnN1cy5HT1Y+Ci0JR1VFU1M9aTU4Ni11bmlzeXMtc3lzdjQK LQk7OwotICAgICo6VU5JWF9TeXN0ZW1fVjo0KjpGVFgqKQotCSMgRnJvbSBHZXJhbGQgSGV3 ZXMgPGhld2VzQG9wZW5tYXJrZXQuY29tPi4KLQkjIEhvdyBhYm91dCBkaWZmZXJlbnRpYXRp bmcgYmV0d2VlbiBzdHJhdHVzIGFyY2hpdGVjdHVyZXM/IC1kam0KLQlHVUVTUz1ocHBhMS4x LXN0cmF0dXMtc3lzdjQKLQk7OwotICAgICo6KjoqOkZUWCopCi0JIyBGcm9tIHNlYW5mQHN3 ZGMuc3RyYXR1cy5jb20uCi0JR1VFU1M9aTg2MC1zdHJhdHVzLXN5c3Y0Ci0JOzsKLSAgICBp Kjg2OlZPUzoqOiopCi0JIyBGcm9tIFBhdWwuR3JlZW5Ac3RyYXR1cy5jb20uCi0JR1VFU1M9 JFVOQU1FX01BQ0hJTkUtc3RyYXR1cy12b3MKLQk7OwotICAgICo6Vk9TOio6KikKLQkjIEZy b20gUGF1bC5HcmVlbkBzdHJhdHVzLmNvbS4KLQlHVUVTUz1ocHBhMS4xLXN0cmF0dXMtdm9z Ci0JOzsKLSAgICBtYzY4KjpBL1VYOio6KikKLQlHVUVTUz1tNjhrLWFwcGxlLWF1eCRVTkFN RV9SRUxFQVNFCi0JOzsKLSAgICBuZXdzKjpORVdTLU9TOjYqOiopCi0JR1VFU1M9bWlwcy1z b255LW5ld3NvczYKLQk7OwotICAgIFJbMzRdMDAwOipTeXN0ZW1fVio6KjoqIHwgUjQwMDA6 VU5JWF9TWVNWOio6KiB8IFIqMDAwOlVOSVhfU1Y6KjoqKQotCWlmIHRlc3QgLWQgL3Vzci9u ZWM7IHRoZW4KLQkJR1VFU1M9bWlwcy1uZWMtc3lzdiRVTkFNRV9SRUxFQVNFCi0JZWxzZQot CQlHVUVTUz1taXBzLXVua25vd24tc3lzdiRVTkFNRV9SRUxFQVNFCi0JZmkKLQk7OwotICAg IEJlQm94OkJlT1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBoYXJkd2FyZSBtYWRlIGJ5IEJl LCBQUEMgb25seS4KLQlHVUVTUz1wb3dlcnBjLWJlLWJlb3MKLQk7OwotICAgIEJlTWFjOkJl T1M6KjoqKQkjIEJlT1MgcnVubmluZyBvbiBNYWMgb3IgTWFjIGNsb25lLCBQUEMgb25seS4K LQlHVUVTUz1wb3dlcnBjLWFwcGxlLWJlb3MKLQk7OwotICAgIEJlUEM6QmVPUzoqOiopCSMg QmVPUyBydW5uaW5nIG9uIEludGVsIFBDIGNvbXBhdGlibGUuCi0JR1VFU1M9aTU4Ni1wYy1i ZW9zCi0JOzsKLSAgICBCZVBDOkhhaWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9uIEludGVs IFBDIGNvbXBhdGlibGUuCi0JR1VFU1M9aTU4Ni1wYy1oYWlrdQotCTs7Ci0gICAgcHBjOkhh aWt1Oio6KikJIyBIYWlrdSBydW5uaW5nIG9uIEFwcGxlIFBvd2VyUEMKLQlHVUVTUz1wb3dl cnBjLWFwcGxlLWhhaWt1Ci0JOzsKLSAgICAqOkhhaWt1Oio6KikJIyBIYWlrdSBtb2Rlcm4g Z2NjIChub3QgYm91bmQgYnkgQmVPUyBjb21wYXQpCi0JR1VFU1M9JFVOQU1FX01BQ0hJTkUt dW5rbm93bi1oYWlrdQotCTs7Ci0gICAgU1gtNDpTVVBFUi1VWDoqOiopCi0JR1VFU1M9c3g0 LW5lYy1zdXBlcnV4JFVOQU1FX1JFTEVBU0UKLQk7OwotICAgIFNYLTU6U1VQRVItVVg6Kjoq KQotCUdVRVNTPXN4NS1uZWMtc3VwZXJ1eCRVTkFNRV9SRUxFQVNFCi0JOzsKLSAgICBTWC02 OlNVUEVSLVVYOio6KikKLQlHVUVTUz1zeDYtbmVjLXN1cGVydXgkVU5BTUVfUkVMRUFTRQot CTs7Ci0gICAgU1gtNzpTVVBFUi1VWDoqOiopCi0JR1VFU1M9c3g3LW5lYy1zdXBlcnV4JFVO QU1FX1JFTEVBU0UKLQk7OwotICAgIFNYLTg6U1VQRVItVVg6KjoqKQotCUdVRVNTPXN4OC1u ZWMtc3VwZXJ1eCRVTkFNRV9SRUxFQVNFCi0JOzsKLSAgICBTWC04UjpTVVBFUi1VWDoqOiop Ci0JR1VFU1M9c3g4ci1uZWMtc3VwZXJ1eCRVTkFNRV9SRUxFQVNFCi0JOzsKLSAgICBTWC1B Q0U6U1VQRVItVVg6KjoqKQotCUdVRVNTPXN4YWNlLW5lYy1zdXBlcnV4JFVOQU1FX1JFTEVB U0UKLQk7OwotICAgIFBvd2VyKjpSaGFwc29keToqOiopCi0JR1VFU1M9cG93ZXJwYy1hcHBs ZS1yaGFwc29keSRVTkFNRV9SRUxFQVNFCi0JOzsKLSAgICAqOlJoYXBzb2R5Oio6KikKLQlH VUVTUz0kVU5BTUVfTUFDSElORS1hcHBsZS1yaGFwc29keSRVTkFNRV9SRUxFQVNFCi0JOzsK LSAgICBhcm02NDpEYXJ3aW46KjoqKQotCUdVRVNTPWFhcmNoNjQtYXBwbGUtZGFyd2luJFVO QU1FX1JFTEVBU0UKLQk7OwotICAgICo6RGFyd2luOio6KikKLQlVTkFNRV9QUk9DRVNTT1I9 YHVuYW1lIC1wYAotCWNhc2UgJFVOQU1FX1BST0NFU1NPUiBpbgotCSAgICB1bmtub3duKSBV TkFNRV9QUk9DRVNTT1I9cG93ZXJwYyA7OwotCWVzYWMKLQlpZiBjb21tYW5kIC12IHhjb2Rl LXNlbGVjdCA+IC9kZXYvbnVsbCAyPiAvZGV2L251bGwgJiYgXAotCQkhIHhjb2RlLXNlbGVj dCAtLXByaW50LXBhdGggPiAvZGV2L251bGwgMj4gL2Rldi9udWxsIDsgdGhlbgotCSAgICAj IEF2b2lkIGV4ZWN1dGluZyBjYyBpZiB0aGVyZSBpcyBubyB0b29sY2hhaW4gaW5zdGFsbGVk IGFzCi0JICAgICMgY2Mgd2lsbCBiZSBhIHN0dWIgdGhhdCBwdXRzIHVwIGEgZ3JhcGhpY2Fs IGFsZXJ0Ci0JICAgICMgcHJvbXB0aW5nIHRoZSB1c2VyIHRvIGluc3RhbGwgZGV2ZWxvcGVy IHRvb2xzLgotCSAgICBDQ19GT1JfQlVJTEQ9bm9fY29tcGlsZXJfZm91bmQKLQllbHNlCi0J ICAgIHNldF9jY19mb3JfYnVpbGQKLQlmaQotCWlmIHRlc3QgIiRDQ19GT1JfQlVJTEQiICE9 IG5vX2NvbXBpbGVyX2ZvdW5kOyB0aGVuCi0JICAgIGlmIChlY2hvICcjaWZkZWYgX19MUDY0 X18nOyBlY2hvIElTXzY0QklUX0FSQ0g7IGVjaG8gJyNlbmRpZicpIHwgXAotCQkgICAoQ0NP UFRTPSIiICRDQ19GT1JfQlVJTEQgLUUgLSAyPi9kZXYvbnVsbCkgfCBcCi0JCSAgIGdyZXAg SVNfNjRCSVRfQVJDSCA+L2Rldi9udWxsCi0JICAgIHRoZW4KLQkJY2FzZSAkVU5BTUVfUFJP Q0VTU09SIGluCi0JCSAgICBpMzg2KSBVTkFNRV9QUk9DRVNTT1I9eDg2XzY0IDs7Ci0JCSAg ICBwb3dlcnBjKSBVTkFNRV9QUk9DRVNTT1I9cG93ZXJwYzY0IDs7Ci0JCWVzYWMKLQkgICAg ZmkKLQkgICAgIyBPbiAxMC40LTEwLjYgb25lIG1pZ2h0IGNvbXBpbGUgZm9yIFBvd2VyUEMg dmlhIGdjYyAtYXJjaCBwcGMKLQkgICAgaWYgKGVjaG8gJyNpZmRlZiBfX1BPV0VSUENfXyc7 IGVjaG8gSVNfUFBDOyBlY2hvICcjZW5kaWYnKSB8IFwKLQkJICAgKENDT1BUUz0iIiAkQ0Nf Rk9SX0JVSUxEIC1FIC0gMj4vZGV2L251bGwpIHwgXAotCQkgICBncmVwIElTX1BQQyA+L2Rl di9udWxsCi0JICAgIHRoZW4KLQkJVU5BTUVfUFJPQ0VTU09SPXBvd2VycGMKLQkgICAgZmkK LQllbGlmIHRlc3QgIiRVTkFNRV9QUk9DRVNTT1IiID0gaTM4NiA7IHRoZW4KLQkgICAgIyB1 bmFtZSAtbSByZXR1cm5zIGkzODYgb3IgeDg2XzY0Ci0JICAgIFVOQU1FX1BST0NFU1NPUj0k VU5BTUVfTUFDSElORQotCWZpCi0JR1VFU1M9JFVOQU1FX1BST0NFU1NPUi1hcHBsZS1kYXJ3 aW4kVU5BTUVfUkVMRUFTRQotCTs7Ci0gICAgKjpwcm9jbnRvKjoqOiogfCAqOlFOWDpbMDEy MzQ1Njc4OV0qOiopCi0JVU5BTUVfUFJPQ0VTU09SPWB1bmFtZSAtcGAKLQlpZiB0ZXN0ICIk VU5BTUVfUFJPQ0VTU09SIiA9IHg4NjsgdGhlbgotCQlVTkFNRV9QUk9DRVNTT1I9aTM4Ngot CQlVTkFNRV9NQUNISU5FPXBjCi0JZmkKLQlHVUVTUz0kVU5BTUVfUFJPQ0VTU09SLSRVTkFN RV9NQUNISU5FLW50by1xbngkVU5BTUVfUkVMRUFTRQotCTs7Ci0gICAgKjpRTlg6Kjo0KikK LQlHVUVTUz1pMzg2LXBjLXFueAotCTs7Ci0gICAgTkVPLSo6Tk9OU1RPUF9LRVJORUw6Kjoq KQotCUdVRVNTPW5lby10YW5kZW0tbnNrJFVOQU1FX1JFTEVBU0UKLQk7OwotICAgIE5TRS0q Ok5PTlNUT1BfS0VSTkVMOio6KikKLQlHVUVTUz1uc2UtdGFuZGVtLW5zayRVTkFNRV9SRUxF QVNFCi0JOzsKLSAgICBOU1ItKjpOT05TVE9QX0tFUk5FTDoqOiopCi0JR1VFU1M9bnNyLXRh bmRlbS1uc2skVU5BTUVfUkVMRUFTRQotCTs7Ci0gICAgTlNWLSo6Tk9OU1RPUF9LRVJORUw6 KjoqKQotCUdVRVNTPW5zdi10YW5kZW0tbnNrJFVOQU1FX1JFTEVBU0UKLQk7OwotICAgIE5T WC0qOk5PTlNUT1BfS0VSTkVMOio6KikKLQlHVUVTUz1uc3gtdGFuZGVtLW5zayRVTkFNRV9S RUxFQVNFCi0JOzsKLSAgICAqOk5vblN0b3AtVVg6KjoqKQotCUdVRVNTPW1pcHMtY29tcGFx LW5vbnN0b3B1eAotCTs7Ci0gICAgQlMyMDAwOlBPU0lYKjoqOiopCi0JR1VFU1M9YnMyMDAw LXNpZW1lbnMtc3lzdgotCTs7Ci0gICAgRFMvKjpVTklYX1N5c3RlbV9WOio6KikKLQlHVUVT Uz0kVU5BTUVfTUFDSElORS0kVU5BTUVfU1lTVEVNLSRVTkFNRV9SRUxFQVNFCi0JOzsKLSAg ICAqOlBsYW45Oio6KikKLQkjICJ1bmFtZSAtbSIgaXMgbm90IGNvbnNpc3RlbnQsIHNvIHVz ZSAkY3B1dHlwZSBpbnN0ZWFkLiAzODYKLQkjIGlzIGNvbnZlcnRlZCB0byBpMzg2IGZvciBj b25zaXN0ZW5jeSB3aXRoIG90aGVyIHg4NgotCSMgb3BlcmF0aW5nIHN5c3RlbXMuCi0JaWYg dGVzdCAiJHtjcHV0eXBlLX0iID0gMzg2OyB0aGVuCi0JICAgIFVOQU1FX01BQ0hJTkU9aTM4 NgotCWVsaWYgdGVzdCAieCR7Y3B1dHlwZS19IiAhPSB4OyB0aGVuCi0JICAgIFVOQU1FX01B Q0hJTkU9JGNwdXR5cGUKLQlmaQotCUdVRVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tcGxh bjkKLQk7OwotICAgICo6VE9QUy0xMDoqOiopCi0JR1VFU1M9cGRwMTAtdW5rbm93bi10b3Bz MTAKLQk7OwotICAgICo6VEVORVg6KjoqKQotCUdVRVNTPXBkcDEwLXVua25vd24tdGVuZXgK LQk7OwotICAgIEtTMTA6VE9QUy0yMDoqOiogfCBLTDEwOlRPUFMtMjA6KjoqIHwgVFlQRTQ6 VE9QUy0yMDoqOiopCi0JR1VFU1M9cGRwMTAtZGVjLXRvcHMyMAotCTs7Ci0gICAgWEtMLTE6 VE9QUy0yMDoqOiogfCBUWVBFNTpUT1BTLTIwOio6KikKLQlHVUVTUz1wZHAxMC14a2wtdG9w czIwCi0JOzsKLSAgICAqOlRPUFMtMjA6KjoqKQotCUdVRVNTPXBkcDEwLXVua25vd24tdG9w czIwCi0JOzsKLSAgICAqOklUUzoqOiopCi0JR1VFU1M9cGRwMTAtdW5rbm93bi1pdHMKLQk7 OwotICAgIFNFSToqOio6U0VJVVgpCi0JR1VFU1M9bWlwcy1zZWktc2VpdXgkVU5BTUVfUkVM RUFTRQotCTs7Ci0gICAgKjpEcmFnb25GbHk6KjoqKQotCURSQUdPTkZMWV9SRUw9YGVjaG8g IiRVTkFNRV9SRUxFQVNFIiB8IHNlZCAtZSAncy9bLShdLiovLydgCi0JR1VFU1M9JFVOQU1F X01BQ0hJTkUtdW5rbm93bi1kcmFnb25mbHkkRFJBR09ORkxZX1JFTAotCTs7Ci0gICAgKjoq Vk1TOio6KikKLQlVTkFNRV9NQUNISU5FPWAodW5hbWUgLXApIDI+L2Rldi9udWxsYAotCWNh c2UgJFVOQU1FX01BQ0hJTkUgaW4KLQkgICAgQSopIEdVRVNTPWFscGhhLWRlYy12bXMgOzsK LQkgICAgSSopIEdVRVNTPWlhNjQtZGVjLXZtcyA7OwotCSAgICBWKikgR1VFU1M9dmF4LWRl Yy12bXMgOzsKLQllc2FjIDs7Ci0gICAgKjpYRU5JWDoqOlN5c1YpCi0JR1VFU1M9aTM4Ni1w Yy14ZW5peAotCTs7Ci0gICAgaSo4Njpza3lvczoqOiopCi0JU0tZT1NfUkVMPWBlY2hvICIk VU5BTUVfUkVMRUFTRSIgfCBzZWQgLWUgJ3MvIC4qJC8vJ2AKLQlHVUVTUz0kVU5BTUVfTUFD SElORS1wYy1za3lvcyRTS1lPU19SRUwKLQk7OwotICAgIGkqODY6cmRvczoqOiopCi0JR1VF U1M9JFVOQU1FX01BQ0hJTkUtcGMtcmRvcwotCTs7Ci0gICAgaSo4NjpGaXdpeDoqOiopCi0J R1VFU1M9JFVOQU1FX01BQ0hJTkUtcGMtZml3aXgKLQk7OwotICAgICo6QVJPUzoqOiopCi0J R1VFU1M9JFVOQU1FX01BQ0hJTkUtdW5rbm93bi1hcm9zCi0JOzsKLSAgICB4ODZfNjQ6Vk1r ZXJuZWw6KjoqKQotCUdVRVNTPSRVTkFNRV9NQUNISU5FLXVua25vd24tZXN4Ci0JOzsKLSAg ICBhbWQ2NDpJc2lsb25cIE9uZUZTOio6KikKLQlHVUVTUz14ODZfNjQtdW5rbm93bi1vbmVm cwotCTs7Ci0gICAgKjpVbmxlYXNoZWQ6KjoqKQotCUdVRVNTPSRVTkFNRV9NQUNISU5FLXVu a25vd24tdW5sZWFzaGVkJFVOQU1FX1JFTEVBU0UKLQk7OwotZXNhYwotCi0jIERvIHdlIGhh dmUgYSBndWVzcyBiYXNlZCBvbiB1bmFtZSByZXN1bHRzPwotaWYgdGVzdCAieCRHVUVTUyIg IT0geDsgdGhlbgotICAgIGVjaG8gIiRHVUVTUyIKLSAgICBleGl0Ci1maQotCi0jIE5vIHVu YW1lIGNvbW1hbmQgb3IgdW5hbWUgb3V0cHV0IG5vdCByZWNvZ25pemVkLgotc2V0X2NjX2Zv cl9idWlsZAotY2F0ID4gIiRkdW1teS5jIiA8PEVPRgotI2lmZGVmIF9TRVFVRU5UXwotI2lu Y2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0jZW5kaWYK LSNpZiBkZWZpbmVkKHVsdHJpeCkgfHwgZGVmaW5lZChfdWx0cml4KSB8fCBkZWZpbmVkKF9f dWx0cml4KSB8fCBkZWZpbmVkKF9fdWx0cml4X18pCi0jaWYgZGVmaW5lZCAodmF4KSB8fCBk ZWZpbmVkIChfX3ZheCkgfHwgZGVmaW5lZCAoX192YXhfXykgfHwgZGVmaW5lZChtaXBzKSB8 fCBkZWZpbmVkKF9fbWlwcykgfHwgZGVmaW5lZChfX21pcHNfXykgfHwgZGVmaW5lZChNSVBT KSB8fCBkZWZpbmVkKF9fTUlQU19fKQotI2luY2x1ZGUgPHNpZ25hbC5oPgotI2lmIGRlZmlu ZWQoX1NJWkVfVF8pIHx8IGRlZmluZWQoU0lHTE9TVCkKLSNpbmNsdWRlIDxzeXMvdXRzbmFt ZS5oPgotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotbWFpbiAoKQotewotI2lmIGRlZmluZWQg KHNvbnkpCi0jaWYgZGVmaW5lZCAoTUlQU0VCKQotICAvKiBCRkQgd2FudHMgImJzZCIgaW5z dGVhZCBvZiAibmV3c29zIi4gIFBlcmhhcHMgQkZEIHNob3VsZCBiZSBjaGFuZ2VkLAotICAg ICBJIGRvbid0IGtub3cuLi4uICAqLwotICBwcmludGYgKCJtaXBzLXNvbnktYnNkXG4iKTsg ZXhpdCAoMCk7Ci0jZWxzZQotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotICBwcmludGYgKCJt NjhrLXNvbnktbmV3c29zJXNcbiIsCi0jaWZkZWYgTkVXU09TNAotICAiNCIKLSNlbHNlCi0g ICIiCi0jZW5kaWYKLSAgKTsgZXhpdCAoMCk7Ci0jZW5kaWYKLSNlbmRpZgotCi0jaWYgZGVm aW5lZCAoTmVYVCkKLSNpZiAhZGVmaW5lZCAoX19BUkNISVRFQ1RVUkVfXykKLSNkZWZpbmUg X19BUkNISVRFQ1RVUkVfXyAibTY4ayIKLSNlbmRpZgotICBpbnQgdmVyc2lvbjsKLSAgdmVy c2lvbj1gKGhvc3RpbmZvIHwgc2VkIC1uICdzLy4qTmVYVCBNYWNoIFwoWzAtOV0qXCkuKi9c MS9wJykgMj4vZGV2L251bGxgOwotICBpZiAodmVyc2lvbiA8IDQpCi0gICAgcHJpbnRmICgi JXMtbmV4dC1uZXh0c3RlcCVkXG4iLCBfX0FSQ0hJVEVDVFVSRV9fLCB2ZXJzaW9uKTsKLSAg ZWxzZQotICAgIHByaW50ZiAoIiVzLW5leHQtb3BlbnN0ZXAlZFxuIiwgX19BUkNISVRFQ1RV UkVfXywgdmVyc2lvbik7Ci0gIGV4aXQgKDApOwotI2VuZGlmCi0KLSNpZiBkZWZpbmVkIChN VUxUSU1BWCkgfHwgZGVmaW5lZCAobjE2KQotI2lmIGRlZmluZWQgKFVNQVhWKQotICBwcmlu dGYgKCJuczMyay1lbmNvcmUtc3lzdlxuIik7IGV4aXQgKDApOwotI2Vsc2UKLSNpZiBkZWZp bmVkIChDTVUpCi0gIHByaW50ZiAoIm5zMzJrLWVuY29yZS1tYWNoXG4iKTsgZXhpdCAoMCk7 Ci0jZWxzZQotICBwcmludGYgKCJuczMyay1lbmNvcmUtYnNkXG4iKTsgZXhpdCAoMCk7Ci0j ZW5kaWYKLSNlbmRpZgotI2VuZGlmCi0KLSNpZiBkZWZpbmVkIChfXzM4NkJTRF9fKQotICBw cmludGYgKCJpMzg2LXBjLWJzZFxuIik7IGV4aXQgKDApOwotI2VuZGlmCi0KLSNpZiBkZWZp bmVkIChzZXF1ZW50KQotI2lmIGRlZmluZWQgKGkzODYpCi0gIHByaW50ZiAoImkzODYtc2Vx dWVudC1keW5peFxuIik7IGV4aXQgKDApOwotI2VuZGlmCi0jaWYgZGVmaW5lZCAobnMzMjAw MCkKLSAgcHJpbnRmICgibnMzMmstc2VxdWVudC1keW5peFxuIik7IGV4aXQgKDApOwotI2Vu ZGlmCi0jZW5kaWYKLQotI2lmIGRlZmluZWQgKF9TRVFVRU5UXykKLSAgc3RydWN0IHV0c25h bWUgdW47Ci0KLSAgdW5hbWUoJnVuKTsKLSAgaWYgKHN0cm5jbXAodW4udmVyc2lvbiwgIlYy IiwgMikgPT0gMCkgewotICAgIHByaW50ZiAoImkzODYtc2VxdWVudC1wdHgyXG4iKTsgZXhp dCAoMCk7Ci0gIH0KLSAgaWYgKHN0cm5jbXAodW4udmVyc2lvbiwgIlYxIiwgMikgPT0gMCkg eyAvKiBYWFggaXMgVjEgY29ycmVjdD8gKi8KLSAgICBwcmludGYgKCJpMzg2LXNlcXVlbnQt cHR4MVxuIik7IGV4aXQgKDApOwotICB9Ci0gIHByaW50ZiAoImkzODYtc2VxdWVudC1wdHhc biIpOyBleGl0ICgwKTsKLSNlbmRpZgotCi0jaWYgZGVmaW5lZCAodmF4KQotI2lmICFkZWZp bmVkICh1bHRyaXgpCi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jaWYgZGVmaW5lZCAoQlNE KQotI2lmIEJTRCA9PSA0MwotICBwcmludGYgKCJ2YXgtZGVjLWJzZDQuM1xuIik7IGV4aXQg KDApOwotI2Vsc2UKLSNpZiBCU0QgPT0gMTk5MDA2Ci0gIHByaW50ZiAoInZheC1kZWMtYnNk NC4zcmVub1xuIik7IGV4aXQgKDApOwotI2Vsc2UKLSAgcHJpbnRmICgidmF4LWRlYy1ic2Rc biIpOyBleGl0ICgwKTsKLSNlbmRpZgotI2VuZGlmCi0jZWxzZQotICBwcmludGYgKCJ2YXgt ZGVjLWJzZFxuIik7IGV4aXQgKDApOwotI2VuZGlmCi0jZWxzZQotI2lmIGRlZmluZWQoX1NJ WkVfVF8pIHx8IGRlZmluZWQoU0lHTE9TVCkKLSAgc3RydWN0IHV0c25hbWUgdW47Ci0gIHVu YW1lICgmdW4pOwotICBwcmludGYgKCJ2YXgtZGVjLXVsdHJpeCVzXG4iLCB1bi5yZWxlYXNl KTsgZXhpdCAoMCk7Ci0jZWxzZQotICBwcmludGYgKCJ2YXgtZGVjLXVsdHJpeFxuIik7IGV4 aXQgKDApOwotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotI2lmIGRlZmluZWQodWx0cml4KSB8 fCBkZWZpbmVkKF91bHRyaXgpIHx8IGRlZmluZWQoX191bHRyaXgpIHx8IGRlZmluZWQoX191 bHRyaXhfXykKLSNpZiBkZWZpbmVkKG1pcHMpIHx8IGRlZmluZWQoX19taXBzKSB8fCBkZWZp bmVkKF9fbWlwc19fKSB8fCBkZWZpbmVkKE1JUFMpIHx8IGRlZmluZWQoX19NSVBTX18pCi0j aWYgZGVmaW5lZChfU0laRV9UXykgfHwgZGVmaW5lZChTSUdMT1NUKQotICBzdHJ1Y3QgdXRz bmFtZSAqdW47Ci0gIHVuYW1lICgmdW4pOwotICBwcmludGYgKCJtaXBzLWRlYy11bHRyaXgl c1xuIiwgdW4ucmVsZWFzZSk7IGV4aXQgKDApOwotI2Vsc2UKLSAgcHJpbnRmICgibWlwcy1k ZWMtdWx0cml4XG4iKTsgZXhpdCAoMCk7Ci0jZW5kaWYKLSNlbmRpZgotI2VuZGlmCi0KLSNp ZiBkZWZpbmVkIChhbGxpYW50KSAmJiBkZWZpbmVkIChpODYwKQotICBwcmludGYgKCJpODYw LWFsbGlhbnQtYnNkXG4iKTsgZXhpdCAoMCk7Ci0jZW5kaWYKLQotICBleGl0ICgxKTsKLX0K LUVPRgotCi0kQ0NfRk9SX0JVSUxEIC1vICIkZHVtbXkiICIkZHVtbXkuYyIgMj4vZGV2L251 bGwgJiYgU1lTVEVNX05BTUU9YCIkZHVtbXkiYCAmJgotCXsgZWNobyAiJFNZU1RFTV9OQU1F IjsgZXhpdDsgfQotCi0jIEFwb2xsb3MgcHV0IHRoZSBzeXN0ZW0gdHlwZSBpbiB0aGUgZW52 aXJvbm1lbnQuCi10ZXN0IC1kIC91c3IvYXBvbGxvICYmIHsgZWNobyAiJElTUC1hcG9sbG8t JFNZU1RZUEUiOyBleGl0OyB9Ci0KLWVjaG8gIiQwOiB1bmFibGUgdG8gZ3Vlc3Mgc3lzdGVt IHR5cGUiID4mMgotCi1jYXNlICRVTkFNRV9NQUNISU5FOiRVTkFNRV9TWVNURU0gaW4KLSAg ICBtaXBzOkxpbnV4IHwgbWlwczY0OkxpbnV4KQotCSMgSWYgd2UgZ290IGhlcmUgb24gTUlQ UyBHTlUvTGludXgsIG91dHB1dCBleHRyYSBpbmZvcm1hdGlvbi4KLQljYXQgPiYyIDw8RU9G Ci0KLU5PVEU6IE1JUFMgR05VL0xpbnV4IHN5c3RlbXMgcmVxdWlyZSBhIEMgY29tcGlsZXIg dG8gZnVsbHkgcmVjb2duaXplCi10aGUgc3lzdGVtIHR5cGUuIFBsZWFzZSBpbnN0YWxsIGEg QyBjb21waWxlciBhbmQgdHJ5IGFnYWluLgotRU9GCi0JOzsKLWVzYWMKLQotY2F0ID4mMiA8 PEVPRgotCi1UaGlzIHNjcmlwdCAodmVyc2lvbiAkdGltZXN0YW1wKSwgaGFzIGZhaWxlZCB0 byByZWNvZ25pemUgdGhlCi1vcGVyYXRpbmcgc3lzdGVtIHlvdSBhcmUgdXNpbmcuIElmIHlv dXIgc2NyaXB0IGlzIG9sZCwgb3ZlcndyaXRlICphbGwqCi1jb3BpZXMgb2YgY29uZmlnLmd1 ZXNzIGFuZCBjb25maWcuc3ViIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9ucyBmcm9tOgotCi0g IGh0dHBzOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9jb25maWcuZ2l0L3BsYWluL2Nv bmZpZy5ndWVzcwotYW5kCi0gIGh0dHBzOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvY2dpdC9j b25maWcuZ2l0L3BsYWluL2NvbmZpZy5zdWIKLUVPRgotCi1vdXJfeWVhcj1gZWNobyAkdGlt ZXN0YW1wIHwgc2VkICdzLC0uKiwsJ2AKLXRoaXN5ZWFyPWBkYXRlICslWWAKLSMgc2hlbGxj aGVjayBkaXNhYmxlPVNDMjAwMwotc2NyaXB0X2FnZT1gZXhwciAiJHRoaXN5ZWFyIiAtICIk b3VyX3llYXIiYAotaWYgdGVzdCAiJHNjcmlwdF9hZ2UiIC1sdCAzIDsgdGhlbgotICAgY2F0 ID4mMiA8PEVPRgotCi1JZiAkMCBoYXMgYWxyZWFkeSBiZWVuIHVwZGF0ZWQsIHNlbmQgdGhl IGZvbGxvd2luZyBkYXRhIGFuZCBhbnkKLWluZm9ybWF0aW9uIHlvdSB0aGluayBtaWdodCBi ZSBwZXJ0aW5lbnQgdG8gY29uZmlnLXBhdGNoZXNAZ251Lm9yZyB0bwotcHJvdmlkZSB0aGUg bmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGhhbmRsZSB5b3VyIHN5c3RlbS4KLQotY29uZmln Lmd1ZXNzIHRpbWVzdGFtcCA9ICR0aW1lc3RhbXAKLQotdW5hbWUgLW0gPSBgKHVuYW1lIC1t KSAyPi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi11bmFtZSAtciA9IGAodW5hbWUgLXIp IDI+L2Rldi9udWxsIHx8IGVjaG8gdW5rbm93bmAKLXVuYW1lIC1zID0gYCh1bmFtZSAtcykg Mj4vZGV2L251bGwgfHwgZWNobyB1bmtub3duYAotdW5hbWUgLXYgPSBgKHVuYW1lIC12KSAy Pi9kZXYvbnVsbCB8fCBlY2hvIHVua25vd25gCi0KLS91c3IvYmluL3VuYW1lIC1wID0gYCgv dXNyL2Jpbi91bmFtZSAtcCkgMj4vZGV2L251bGxgCi0vYmluL3VuYW1lIC1YICAgICA9IGAo L2Jpbi91bmFtZSAtWCkgMj4vZGV2L251bGxgCi0KLWhvc3RpbmZvICAgICAgICAgICAgICAg PSBgKGhvc3RpbmZvKSAyPi9kZXYvbnVsbGAKLS9iaW4vdW5pdmVyc2UgICAgICAgICAgPSBg KC9iaW4vdW5pdmVyc2UpIDI+L2Rldi9udWxsYAotL3Vzci9iaW4vYXJjaCAtayAgICAgICA9 IGAoL3Vzci9iaW4vYXJjaCAtaykgMj4vZGV2L251bGxgCi0vYmluL2FyY2ggICAgICAgICAg ICAgID0gYCgvYmluL2FyY2gpIDI+L2Rldi9udWxsYAotL3Vzci9iaW4vb3NsZXZlbCAgICAg ICA9IGAoL3Vzci9iaW4vb3NsZXZlbCkgMj4vZGV2L251bGxgCi0vdXNyL2NvbnZleC9nZXRz eXNpbmZvID0gYCgvdXNyL2NvbnZleC9nZXRzeXNpbmZvKSAyPi9kZXYvbnVsbGAKLQotVU5B TUVfTUFDSElORSA9ICIkVU5BTUVfTUFDSElORSIKLVVOQU1FX1JFTEVBU0UgPSAiJFVOQU1F X1JFTEVBU0UiCi1VTkFNRV9TWVNURU0gID0gIiRVTkFNRV9TWVNURU0iCi1VTkFNRV9WRVJT SU9OID0gIiRVTkFNRV9WRVJTSU9OIgotRU9GCi1maQotCi1leGl0IDEKLQotIyBMb2NhbCB2 YXJpYWJsZXM6Ci0jIGV2YWw6IChhZGQtaG9vayAnYmVmb3JlLXNhdmUtaG9vayAndGltZS1z dGFtcCkKLSMgdGltZS1zdGFtcC1zdGFydDogInRpbWVzdGFtcD0nIgotIyB0aW1lLXN0YW1w LWZvcm1hdDogIiU6eS0lMDJtLSUwMmQiCi0jIHRpbWUtc3RhbXAtZW5kOiAiJyIKLSMgRW5k OgpkaWZmIC0tZ2l0IGEvZXhlYy9jb25maWcuc3ViIGIvZXhlYy9jb25maWcuc3ViCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA3YWI5Mjg3OWYxMy4uMDAwMDAwMDAwMDAKLS0t IGEvZXhlYy9jb25maWcuc3ViCisrKyAvZGV2L251bGwKQEAgLTEsMTkwNyArMCwwIEBACi0j IS91c3IvYmluL3NoCi0jIENvbmZpZ3VyYXRpb24gdmFsaWRhdGlvbiBzdWJyb3V0aW5lIHNj cmlwdC4KLSMgICBDb3B5cmlnaHQgMTk5Mi0yMDI0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgotCi0jIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIwMDYsU0MyMjY4ICMgc2VlIGJl bG93IGZvciByYXRpb25hbGUKLQotdGltZXN0YW1wPScyMDIzLTA2LTIzJwotCi0jIFRoaXMg ZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5IGl0Ci0jIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRp b24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0jIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSMgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlIEdOVQotIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBu b3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotIwotIyBBcyBhIHNw ZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYg eW91Ci0jIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQg Y29udGFpbnMgYQotIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2Nv bmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgotIyB0aGUgc2FtZSBkaXN0cmlidXRpb24g dGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0Ci0jIHByb2dyYW0uICBU aGlzIEV4Y2VwdGlvbiBpcyBhbiBhZGRpdGlvbmFsIHBlcm1pc3Npb24gdW5kZXIgc2VjdGlv biA3Ci0jIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgdmVyc2lvbiAzICgi R1BMdjMiKS4KLQotCi0jIFBsZWFzZSBzZW5kIHBhdGNoZXMgdG8gPGNvbmZpZy1wYXRjaGVz QGdudS5vcmc+LgotIwotIyBDb25maWd1cmF0aW9uIHN1YnJvdXRpbmUgdG8gdmFsaWRhdGUg YW5kIGNhbm9uaWNhbGl6ZSBhIGNvbmZpZ3VyYXRpb24gdHlwZS4KLSMgU3VwcGx5IHRoZSBz cGVjaWZpZWQgY29uZmlndXJhdGlvbiB0eXBlIGFzIGFuIGFyZ3VtZW50LgotIyBJZiBpdCBp cyBpbnZhbGlkLCB3ZSBwcmludCBhbiBlcnJvciBtZXNzYWdlIG9uIHN0ZGVyciBhbmQgZXhp dCB3aXRoIGNvZGUgMS4KLSMgT3RoZXJ3aXNlLCB3ZSBwcmludCB0aGUgY2Fub25pY2FsIGNv bmZpZyB0eXBlIG9uIHN0ZG91dCBhbmQgc3VjY2VlZC4KLQotIyBZb3UgY2FuIGdldCB0aGUg bGF0ZXN0IHZlcnNpb24gb2YgdGhpcyBzY3JpcHQgZnJvbToKLSMgaHR0cHM6Ly9naXQuc2F2 YW5uYWguZ251Lm9yZy9jZ2l0L2NvbmZpZy5naXQvcGxhaW4vY29uZmlnLnN1YgotCi0jIFRo aXMgZmlsZSBpcyBzdXBwb3NlZCB0byBiZSB0aGUgc2FtZSBmb3IgYWxsIEdOVSBwYWNrYWdl cwotIyBhbmQgcmVjb2duaXplIGFsbCB0aGUgQ1BVIHR5cGVzLCBzeXN0ZW0gdHlwZXMgYW5k IGFsaWFzZXMKLSMgdGhhdCBhcmUgbWVhbmluZ2Z1bCB3aXRoICphbnkqIEdOVSBzb2Z0d2Fy ZS4KLSMgRWFjaCBwYWNrYWdlIGlzIHJlc3BvbnNpYmxlIGZvciByZXBvcnRpbmcgd2hpY2gg dmFsaWQgY29uZmlndXJhdGlvbnMKLSMgaXQgZG9lcyBub3Qgc3VwcG9ydC4gIFRoZSB1c2Vy IHNob3VsZCBiZSBhYmxlIHRvIGRpc3Rpbmd1aXNoCi0jIGEgZmFpbHVyZSB0byBzdXBwb3J0 IGEgdmFsaWQgY29uZmlndXJhdGlvbiBmcm9tIGEgbWVhbmluZ2xlc3MKLSMgY29uZmlndXJh dGlvbi4KLQotIyBUaGUgZ29hbCBvZiB0aGlzIGZpbGUgaXMgdG8gbWFwIGFsbCB0aGUgdmFy aW91cyB2YXJpYXRpb25zIG9mIGEgZ2l2ZW4KLSMgbWFjaGluZSBzcGVjaWZpY2F0aW9uIGlu dG8gYSBzaW5nbGUgc3BlY2lmaWNhdGlvbiBpbiB0aGUgZm9ybToKLSMJQ1BVX1RZUEUtTUFO VUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0KLSMgb3IgaW4gc29tZSBjYXNlcywgdGhlIG5l d2VyIGZvdXItcGFydCBmb3JtOgotIwlDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9Q RVJBVElOR19TWVNURU0KLSMgSXQgaXMgd3JvbmcgdG8gZWNobyBhbnkgb3RoZXIgdHlwZSBv ZiBzcGVjaWZpY2F0aW9uLgotCi0jIFRoZSAic2hlbGxjaGVjayBkaXNhYmxlIiBsaW5lIGFi b3ZlIHRoZSB0aW1lc3RhbXAgaW5oaWJpdHMgY29tcGxhaW50cwotIyBhYm91dCBmZWF0dXJl cyBhbmQgbGltaXRhdGlvbnMgb2YgdGhlIGNsYXNzaWMgQm91cm5lIHNoZWxsIHRoYXQgd2Vy ZQotIyBzdXBlcnNlZGVkIG9yIGxpZnRlZCBpbiBQT1NJWC4gIEhvd2V2ZXIsIHRoaXMgc2Ny aXB0IGlkZW50aWZpZXMgYSB3aWRlCi0jIHZhcmlldHkgb2YgcHJlLVBPU0lYIHN5c3RlbXMg dGhhdCBkbyBub3QgaGF2ZSBQT1NJWCBzaGVsbHMgYXQgYWxsLCBhbmQKLSMgZXZlbiBzb21l IHJlYXNvbmFibHkgY3VycmVudCBzeXN0ZW1zIChTb2xhcmlzIDEwIGFzIGNhc2UtaW4tcG9p bnQpIHN0aWxsCi0jIGhhdmUgYSBwcmUtUE9TSVggL2Jpbi9zaC4KLQotbWU9YGVjaG8gIiQw IiB8IHNlZCAtZSAncywuKi8sLCdgCi0KLXVzYWdlPSJcCi1Vc2FnZTogJDAgW09QVElPTl0g Q1BVLU1GUi1PUFNZUyBvciBBTElBUwotCi1DYW5vbmljYWxpemUgYSBjb25maWd1cmF0aW9u IG5hbWUuCi0KLU9wdGlvbnM6Ci0gIC1oLCAtLWhlbHAgICAgICAgICBwcmludCB0aGlzIGhl bHAsIHRoZW4gZXhpdAotICAtdCwgLS10aW1lLXN0YW1wICAgcHJpbnQgZGF0ZSBvZiBsYXN0 IG1vZGlmaWNhdGlvbiwgdGhlbiBleGl0Ci0gIC12LCAtLXZlcnNpb24gICAgICBwcmludCB2 ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0Ci0KLVJlcG9ydCBidWdzIGFuZCBwYXRjaGVzIHRv IDxjb25maWctcGF0Y2hlc0BnbnUub3JnPi4iCi0KLXZlcnNpb249IlwKLUdOVSBjb25maWcu c3ViICgkdGltZXN0YW1wKQotCi1Db3B5cmlnaHQgMTk5Mi0yMDIzIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotCi1UaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291 cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwotd2FycmFudHk7IG5v dCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuIgotCi1oZWxwPSIKLVRyeSAnJG1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3Jt YXRpb24uIgotCi0jIFBhcnNlIGNvbW1hbmQgbGluZQotd2hpbGUgdGVzdCAkIyAtZ3QgMCA7 IGRvCi0gIGNhc2UgJDEgaW4KLSAgICAtLXRpbWUtc3RhbXAgfCAtLXRpbWUqIHwgLXQgKQot ICAgICAgIGVjaG8gIiR0aW1lc3RhbXAiIDsgZXhpdCA7OwotICAgIC0tdmVyc2lvbiB8IC12 ICkKLSAgICAgICBlY2hvICIkdmVyc2lvbiIgOyBleGl0IDs7Ci0gICAgLS1oZWxwIHwgLS1o KiB8IC1oICkKLSAgICAgICBlY2hvICIkdXNhZ2UiOyBleGl0IDs7Ci0gICAgLS0gKSAgICAg IyBTdG9wIG9wdGlvbiBwcm9jZXNzaW5nCi0gICAgICAgc2hpZnQ7IGJyZWFrIDs7Ci0gICAg LSApCSMgVXNlIHN0ZGluIGFzIGlucHV0LgotICAgICAgIGJyZWFrIDs7Ci0gICAgLSogKQot ICAgICAgIGVjaG8gIiRtZTogaW52YWxpZCBvcHRpb24gJDEkaGVscCIgPiYyCi0gICAgICAg ZXhpdCAxIDs7Ci0KLSAgICAqbG9jYWwqKQotICAgICAgICMgRmlyc3QgcGFzcyB0aHJvdWdo IGFueSBsb2NhbCBtYWNoaW5lIHR5cGVzLgotICAgICAgIGVjaG8gIiQxIgotICAgICAgIGV4 aXQgOzsKLQotICAgICogKQotICAgICAgIGJyZWFrIDs7Ci0gIGVzYWMKLWRvbmUKLQotY2Fz ZSAkIyBpbgotIDApIGVjaG8gIiRtZTogbWlzc2luZyBhcmd1bWVudCRoZWxwIiA+JjIKLSAg ICBleGl0IDE7OwotIDEpIDs7Ci0gKikgZWNobyAiJG1lOiB0b28gbWFueSBhcmd1bWVudHMk aGVscCIgPiYyCi0gICAgZXhpdCAxOzsKLWVzYWMKLQotIyBTcGxpdCBmaWVsZHMgb2YgY29u ZmlndXJhdGlvbiB0eXBlCi0jIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIxNjIKLXNhdmVkX0lG Uz0kSUZTCi1JRlM9Ii0iIHJlYWQgZmllbGQxIGZpZWxkMiBmaWVsZDMgZmllbGQ0IDw8RU9G Ci0kMQotRU9GCi1JRlM9JHNhdmVkX0lGUwotCi0jIFNlcGFyYXRlIGludG8gbG9naWNhbCBj b21wb25lbnRzIGZvciBmdXJ0aGVyIHZhbGlkYXRpb24KLWNhc2UgJDEgaW4KLQkqLSotKi0q LSopCi0JCWVjaG8gIkludmFsaWQgY29uZmlndXJhdGlvbiAnJDEnOiBtb3JlIHRoYW4gZm91 ciBjb21wb25lbnRzIiA+JjIKLQkJZXhpdCAxCi0JCTs7Ci0JKi0qLSotKikKLQkJYmFzaWNf bWFjaGluZT0kZmllbGQxLSRmaWVsZDIKLQkJYmFzaWNfb3M9JGZpZWxkMy0kZmllbGQ0Ci0J CTs7Ci0JKi0qLSopCi0JCSMgQW1iaWd1b3VzIHdoZXRoZXIgQ09NUEFOWSBpcyBwcmVzZW50 LCBvciBza2lwcGVkIGFuZCBLRVJORUwtT1MgaXMgdHdvCi0JCSMgcGFydHMKLQkJbWF5YmVf b3M9JGZpZWxkMi0kZmllbGQzCi0JCWNhc2UgJG1heWJlX29zIGluCi0JCQludG8tcW54KiB8 IGxpbnV4LSogfCB1Y2xpbnV4LXVjbGliYyogXAotCQkJfCB1Y2xpbnV4LWdudSogfCBrZnJl ZWJzZCotZ251KiB8IGtuZXRic2QqLWdudSogfCBuZXRic2QqLWdudSogXAotCQkJfCBuZXRi c2QqLWVhYmkqIHwga29wZW5zb2xhcmlzKi1nbnUqIHwgY2xvdWRhYmkqLWVhYmkqIFwKLQkJ CXwgc3Rvcm0tY2hhb3MqIHwgb3MyLWVteCogfCBydG1rLW5vdmEqIHwgbWFuYWdhcm0tKikK LQkJCQliYXNpY19tYWNoaW5lPSRmaWVsZDEKLQkJCQliYXNpY19vcz0kbWF5YmVfb3MKLQkJ CQk7OwotCQkJYW5kcm9pZC1saW51eCkKLQkJCQliYXNpY19tYWNoaW5lPSRmaWVsZDEtdW5r bm93bgotCQkJCWJhc2ljX29zPWxpbnV4LWFuZHJvaWQKLQkJCQk7OwotCQkJKikKLQkJCQli YXNpY19tYWNoaW5lPSRmaWVsZDEtJGZpZWxkMgotCQkJCWJhc2ljX29zPSRmaWVsZDMKLQkJ CQk7OwotCQllc2FjCi0JCTs7Ci0JKi0qKQotCQkjIEEgbG9uZSBjb25maWcgd2UgaGFwcGVu IHRvIG1hdGNoIG5vdCBmaXR0aW5nIGFueSBwYXR0ZXJuCi0JCWNhc2UgJGZpZWxkMS0kZmll bGQyIGluCi0JCQlkZWNzdGF0aW9uLTMxMDApCi0JCQkJYmFzaWNfbWFjaGluZT1taXBzLWRl YwotCQkJCWJhc2ljX29zPQotCQkJCTs7Ci0JCQkqLSopCi0JCQkJIyBTZWNvbmQgY29tcG9u ZW50IGlzIHVzdWFsbHksIGJ1dCBub3QgYWx3YXlzIHRoZSBPUwotCQkJCWNhc2UgJGZpZWxk MiBpbgotCQkJCQkjIFByZXZlbnQgZm9sbG93aW5nIGNsYXVzZSBmcm9tIGhhbmRsaW5nIHRo aXMgdmFsaWQgb3MKLQkJCQkJc3VuKm9zKikKLQkJCQkJCWJhc2ljX21hY2hpbmU9JGZpZWxk MQotCQkJCQkJYmFzaWNfb3M9JGZpZWxkMgotCQkJCQkJOzsKLQkJCQkJemVwaHlyKikKLQkJ CQkJCWJhc2ljX21hY2hpbmU9JGZpZWxkMS11bmtub3duCi0JCQkJCQliYXNpY19vcz0kZmll bGQyCi0JCQkJCQk7OwotCQkJCQkjIE1hbnVmYWN0dXJlcnMKLQkJCQkJZGVjKiB8IG1pcHMq IHwgc2VxdWVudCogfCBlbmNvcmUqIHwgcGM1MzMqIHwgc2dpKiB8IHNvbnkqIFwKLQkJCQkJ fCBhdHQqIHwgNzMwMCogfCAzMzAwKiB8IGRlbHRhKiB8IG1vdG9yb2xhKiB8IHN1blsyMzRd KiBcCi0JCQkJCXwgdW5pY29tKiB8IGlibSogfCBuZXh0IHwgaHAgfCBpc2kqIHwgYXBvbGxv IHwgYWx0b3MqIFwKLQkJCQkJfCBjb252ZXJnZW50KiB8IG5jciogfCBuZXdzIHwgMzIqIHwg MzYwMCogfCAzMTAwKiBcCi0JCQkJCXwgaGl0YWNoaSogfCBjWzEyM10qIHwgY29udmV4KiB8 IHN1biB8IGNyZHMgfCBvbXJvbiogfCBkZyBcCi0JCQkJCXwgdWx0cmEgfCB0dGkqIHwgaGFy cmlzIHwgZG9scGhpbiB8IGhpZ2hsZXZlbCB8IGdvdWxkIFwKLQkJCQkJfCBjYm0gfCBucyB8 IG1hc3Njb21wIHwgYXBwbGUgfCBheGlzIHwga251dGggfCBjcmF5IFwKLQkJCQkJfCBtaWNy b2JsYXplKiB8IHNpbSB8IGNpc2NvIFwKLQkJCQkJfCBva2kgfCB3ZWMgfCB3cnMgfCB3aW5i b25kKQotCQkJCQkJYmFzaWNfbWFjaGluZT0kZmllbGQxLSRmaWVsZDIKLQkJCQkJCWJhc2lj X29zPQotCQkJCQkJOzsKLQkJCQkJKikKLQkJCQkJCWJhc2ljX21hY2hpbmU9JGZpZWxkMQot CQkJCQkJYmFzaWNfb3M9JGZpZWxkMgotCQkJCQkJOzsKLQkJCQllc2FjCi0JCQk7OwotCQll c2FjCi0JCTs7Ci0JKikKLQkJIyBDb252ZXJ0IHNpbmdsZS1jb21wb25lbnQgc2hvcnQtaGFu ZHMgbm90IHZhbGlkIGFzIHBhcnQgb2YKLQkJIyBtdWx0aS1jb21wb25lbnQgY29uZmlndXJh dGlvbnMuCi0JCWNhc2UgJGZpZWxkMSBpbgotCQkJMzg2YnNkKQotCQkJCWJhc2ljX21hY2hp bmU9aTM4Ni1wYwotCQkJCWJhc2ljX29zPWJzZAotCQkJCTs7Ci0JCQlhMjlraGlmKQotCQkJ CWJhc2ljX21hY2hpbmU9YTI5ay1hbWQKLQkJCQliYXNpY19vcz11ZGkKLQkJCQk7OwotCQkJ YWRvYmU2OGspCi0JCQkJYmFzaWNfbWFjaGluZT1tNjgwMTAtYWRvYmUKLQkJCQliYXNpY19v cz1zY291dAotCQkJCTs7Ci0JCQlhbGxpYW50KQotCQkJCWJhc2ljX21hY2hpbmU9Zng4MC1h bGxpYW50Ci0JCQkJYmFzaWNfb3M9Ci0JCQkJOzsKLQkJCWFsdG9zIHwgYWx0b3MzMDY4KQot CQkJCWJhc2ljX21hY2hpbmU9bTY4ay1hbHRvcwotCQkJCWJhc2ljX29zPQotCQkJCTs7Ci0J CQlhbTI5aykKLQkJCQliYXNpY19tYWNoaW5lPWEyOWstbm9uZQotCQkJCWJhc2ljX29zPWJz ZAotCQkJCTs7Ci0JCQlhbWRhaGwpCi0JCQkJYmFzaWNfbWFjaGluZT01ODAtYW1kYWhsCi0J CQkJYmFzaWNfb3M9c3lzdgotCQkJCTs7Ci0JCQlhbWlnYSkKLQkJCQliYXNpY19tYWNoaW5l PW02OGstdW5rbm93bgotCQkJCWJhc2ljX29zPQotCQkJCTs7Ci0JCQlhbWlnYW9zIHwgYW1p Z2Fkb3MpCi0JCQkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KLQkJCQliYXNpY19vcz1h bWlnYW9zCi0JCQkJOzsKLQkJCWFtaWdhdW5peCB8IGFtaXgpCi0JCQkJYmFzaWNfbWFjaGlu ZT1tNjhrLXVua25vd24KLQkJCQliYXNpY19vcz1zeXN2NAotCQkJCTs7Ci0JCQlhcG9sbG82 OCkKLQkJCQliYXNpY19tYWNoaW5lPW02OGstYXBvbGxvCi0JCQkJYmFzaWNfb3M9c3lzdgot CQkJCTs7Ci0JCQlhcG9sbG82OGJzZCkKLQkJCQliYXNpY19tYWNoaW5lPW02OGstYXBvbGxv Ci0JCQkJYmFzaWNfb3M9YnNkCi0JCQkJOzsKLQkJCWFyb3MpCi0JCQkJYmFzaWNfbWFjaGlu ZT1pMzg2LXBjCi0JCQkJYmFzaWNfb3M9YXJvcwotCQkJCTs7Ci0JCQlhdXgpCi0JCQkJYmFz aWNfbWFjaGluZT1tNjhrLWFwcGxlCi0JCQkJYmFzaWNfb3M9YXV4Ci0JCQkJOzsKLQkJCWJh bGFuY2UpCi0JCQkJYmFzaWNfbWFjaGluZT1uczMyay1zZXF1ZW50Ci0JCQkJYmFzaWNfb3M9 ZHluaXgKLQkJCQk7OwotCQkJYmxhY2tmaW4pCi0JCQkJYmFzaWNfbWFjaGluZT1iZmluLXVu a25vd24KLQkJCQliYXNpY19vcz1saW51eAotCQkJCTs7Ci0JCQljZWdjYykKLQkJCQliYXNp Y19tYWNoaW5lPWFybS11bmtub3duCi0JCQkJYmFzaWNfb3M9Y2VnY2MKLQkJCQk7OwotCQkJ Y29udmV4LWMxKQotCQkJCWJhc2ljX21hY2hpbmU9YzEtY29udmV4Ci0JCQkJYmFzaWNfb3M9 YnNkCi0JCQkJOzsKLQkJCWNvbnZleC1jMikKLQkJCQliYXNpY19tYWNoaW5lPWMyLWNvbnZl eAotCQkJCWJhc2ljX29zPWJzZAotCQkJCTs7Ci0JCQljb252ZXgtYzMyKQotCQkJCWJhc2lj X21hY2hpbmU9YzMyLWNvbnZleAotCQkJCWJhc2ljX29zPWJzZAotCQkJCTs7Ci0JCQljb252 ZXgtYzM0KQotCQkJCWJhc2ljX21hY2hpbmU9YzM0LWNvbnZleAotCQkJCWJhc2ljX29zPWJz ZAotCQkJCTs7Ci0JCQljb252ZXgtYzM4KQotCQkJCWJhc2ljX21hY2hpbmU9YzM4LWNvbnZl eAotCQkJCWJhc2ljX29zPWJzZAotCQkJCTs7Ci0JCQljcmF5KQotCQkJCWJhc2ljX21hY2hp bmU9ajkwLWNyYXkKLQkJCQliYXNpY19vcz11bmljb3MKLQkJCQk7OwotCQkJY3JkcyB8IHVu b3MpCi0JCQkJYmFzaWNfbWFjaGluZT1tNjhrLWNyZHMKLQkJCQliYXNpY19vcz0KLQkJCQk7 OwotCQkJZGEzMCkKLQkJCQliYXNpY19tYWNoaW5lPW02OGstZGEzMAotCQkJCWJhc2ljX29z PQotCQkJCTs7Ci0JCQlkZWNzdGF0aW9uIHwgcG1heCB8IHBtaW4gfCBkZWMzMTAwIHwgZGVj c3RhdG4pCi0JCQkJYmFzaWNfbWFjaGluZT1taXBzLWRlYwotCQkJCWJhc2ljX29zPQotCQkJ CTs7Ci0JCQlkZWx0YTg4KQotCQkJCWJhc2ljX21hY2hpbmU9bTg4ay1tb3Rvcm9sYQotCQkJ CWJhc2ljX29zPXN5c3YzCi0JCQkJOzsKLQkJCWRpY29zKQotCQkJCWJhc2ljX21hY2hpbmU9 aTY4Ni1wYwotCQkJCWJhc2ljX29zPWRpY29zCi0JCQkJOzsKLQkJCWRqZ3BwKQotCQkJCWJh c2ljX21hY2hpbmU9aTU4Ni1wYwotCQkJCWJhc2ljX29zPW1zZG9zZGpncHAKLQkJCQk7Owot CQkJZWJtb24yOWspCi0JCQkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAotCQkJCWJhc2ljX29z PWVibW9uCi0JCQkJOzsKLQkJCWVzMTgwMCB8IE9TRTY4ayB8IG9zZTY4ayB8IG9zZSB8IE9T RSkKLQkJCQliYXNpY19tYWNoaW5lPW02OGstZXJpY3Nzb24KLQkJCQliYXNpY19vcz1vc2UK LQkJCQk7OwotCQkJZ21pY3JvKQotCQkJCWJhc2ljX21hY2hpbmU9dHJvbi1nbWljcm8KLQkJ CQliYXNpY19vcz1zeXN2Ci0JCQkJOzsKLQkJCWdvMzIpCi0JCQkJYmFzaWNfbWFjaGluZT1p Mzg2LXBjCi0JCQkJYmFzaWNfb3M9Z28zMgotCQkJCTs7Ci0JCQloODMwMGhtcykKLQkJCQli YXNpY19tYWNoaW5lPWg4MzAwLWhpdGFjaGkKLQkJCQliYXNpY19vcz1obXMKLQkJCQk7Owot CQkJaDgzMDB4cmF5KQotCQkJCWJhc2ljX21hY2hpbmU9aDgzMDAtaGl0YWNoaQotCQkJCWJh c2ljX29zPXhyYXkKLQkJCQk7OwotCQkJaDg1MDBobXMpCi0JCQkJYmFzaWNfbWFjaGluZT1o ODUwMC1oaXRhY2hpCi0JCQkJYmFzaWNfb3M9aG1zCi0JCQkJOzsKLQkJCWhhcnJpcykKLQkJ CQliYXNpY19tYWNoaW5lPW04OGstaGFycmlzCi0JCQkJYmFzaWNfb3M9c3lzdjMKLQkJCQk7 OwotCQkJaHAzMDAgfCBocDMwMGhwdXgpCi0JCQkJYmFzaWNfbWFjaGluZT1tNjhrLWhwCi0J CQkJYmFzaWNfb3M9aHB1eAotCQkJCTs7Ci0JCQlocDMwMGJzZCkKLQkJCQliYXNpY19tYWNo aW5lPW02OGstaHAKLQkJCQliYXNpY19vcz1ic2QKLQkJCQk7OwotCQkJaHBwYW9zZikKLQkJ CQliYXNpY19tYWNoaW5lPWhwcGExLjEtaHAKLQkJCQliYXNpY19vcz1vc2YKLQkJCQk7Owot CQkJaHBwcm8pCi0JCQkJYmFzaWNfbWFjaGluZT1ocHBhMS4xLWhwCi0JCQkJYmFzaWNfb3M9 cHJvZWxmCi0JCQkJOzsKLQkJCWkzODZtYWNoKQotCQkJCWJhc2ljX21hY2hpbmU9aTM4Ni1t YWNoCi0JCQkJYmFzaWNfb3M9bWFjaAotCQkJCTs7Ci0JCQlpc2k2OCB8IGlzaSkKLQkJCQli YXNpY19tYWNoaW5lPW02OGstaXNpCi0JCQkJYmFzaWNfb3M9c3lzdgotCQkJCTs7Ci0JCQlt Njhrbm9tbXUpCi0JCQkJYmFzaWNfbWFjaGluZT1tNjhrLXVua25vd24KLQkJCQliYXNpY19v cz1saW51eAotCQkJCTs7Ci0JCQltYWdudW0gfCBtMzIzMCkKLQkJCQliYXNpY19tYWNoaW5l PW1pcHMtbWlwcwotCQkJCWJhc2ljX29zPXN5c3YKLQkJCQk7OwotCQkJbWVybGluKQotCQkJ CWJhc2ljX21hY2hpbmU9bnMzMmstdXRlawotCQkJCWJhc2ljX29zPXN5c3YKLQkJCQk7Owot CQkJbWluZ3c2NCkKLQkJCQliYXNpY19tYWNoaW5lPXg4Nl82NC1wYwotCQkJCWJhc2ljX29z PW1pbmd3NjQKLQkJCQk7OwotCQkJbWluZ3czMikKLQkJCQliYXNpY19tYWNoaW5lPWk2ODYt cGMKLQkJCQliYXNpY19vcz1taW5ndzMyCi0JCQkJOzsKLQkJCW1pbmd3MzJjZSkKLQkJCQli YXNpY19tYWNoaW5lPWFybS11bmtub3duCi0JCQkJYmFzaWNfb3M9bWluZ3czMmNlCi0JCQkJ OzsKLQkJCW1vbml0b3IpCi0JCQkJYmFzaWNfbWFjaGluZT1tNjhrLXJvbTY4awotCQkJCWJh c2ljX29zPWNvZmYKLQkJCQk7OwotCQkJbW9ycGhvcykKLQkJCQliYXNpY19tYWNoaW5lPXBv d2VycGMtdW5rbm93bgotCQkJCWJhc2ljX29zPW1vcnBob3MKLQkJCQk7OwotCQkJbW94aWVi b3gpCi0JCQkJYmFzaWNfbWFjaGluZT1tb3hpZS11bmtub3duCi0JCQkJYmFzaWNfb3M9bW94 aWVib3gKLQkJCQk7OwotCQkJbXNkb3MpCi0JCQkJYmFzaWNfbWFjaGluZT1pMzg2LXBjCi0J CQkJYmFzaWNfb3M9bXNkb3MKLQkJCQk7OwotCQkJbXN5cykKLQkJCQliYXNpY19tYWNoaW5l PWk2ODYtcGMKLQkJCQliYXNpY19vcz1tc3lzCi0JCQkJOzsKLQkJCW12cykKLQkJCQliYXNp Y19tYWNoaW5lPWkzNzAtaWJtCi0JCQkJYmFzaWNfb3M9bXZzCi0JCQkJOzsKLQkJCW5hY2wp Ci0JCQkJYmFzaWNfbWFjaGluZT1sZTMyLXVua25vd24KLQkJCQliYXNpY19vcz1uYWNsCi0J CQkJOzsKLQkJCW5jcjMwMDApCi0JCQkJYmFzaWNfbWFjaGluZT1pNDg2LW5jcgotCQkJCWJh c2ljX29zPXN5c3Y0Ci0JCQkJOzsKLQkJCW5ldGJzZDM4NikKLQkJCQliYXNpY19tYWNoaW5l PWkzODYtcGMKLQkJCQliYXNpY19vcz1uZXRic2QKLQkJCQk7OwotCQkJbmV0d2luZGVyKQot CQkJCWJhc2ljX21hY2hpbmU9YXJtdjRsLXJlYmVsCi0JCQkJYmFzaWNfb3M9bGludXgKLQkJ CQk7OwotCQkJbmV3cyB8IG5ld3M3MDAgfCBuZXdzODAwIHwgbmV3czkwMCkKLQkJCQliYXNp Y19tYWNoaW5lPW02OGstc29ueQotCQkJCWJhc2ljX29zPW5ld3NvcwotCQkJCTs7Ci0JCQlu ZXdzMTAwMCkKLQkJCQliYXNpY19tYWNoaW5lPW02ODAzMC1zb255Ci0JCQkJYmFzaWNfb3M9 bmV3c29zCi0JCQkJOzsKLQkJCW5lY3Y3MCkKLQkJCQliYXNpY19tYWNoaW5lPXY3MC1uZWMK LQkJCQliYXNpY19vcz1zeXN2Ci0JCQkJOzsKLQkJCW5oMzAwMCkKLQkJCQliYXNpY19tYWNo aW5lPW02OGstaGFycmlzCi0JCQkJYmFzaWNfb3M9Y3h1eAotCQkJCTs7Ci0JCQluaFs0NV0w MDApCi0JCQkJYmFzaWNfbWFjaGluZT1tODhrLWhhcnJpcwotCQkJCWJhc2ljX29zPWN4dXgK LQkJCQk7OwotCQkJbmluZHk5NjApCi0JCQkJYmFzaWNfbWFjaGluZT1pOTYwLWludGVsCi0J CQkJYmFzaWNfb3M9bmluZHkKLQkJCQk7OwotCQkJbW9uOTYwKQotCQkJCWJhc2ljX21hY2hp bmU9aTk2MC1pbnRlbAotCQkJCWJhc2ljX29zPW1vbjk2MAotCQkJCTs7Ci0JCQlub25zdG9w dXgpCi0JCQkJYmFzaWNfbWFjaGluZT1taXBzLWNvbXBhcQotCQkJCWJhc2ljX29zPW5vbnN0 b3B1eAotCQkJCTs7Ci0JCQlvczQwMCkKLQkJCQliYXNpY19tYWNoaW5lPXBvd2VycGMtaWJt Ci0JCQkJYmFzaWNfb3M9b3M0MDAKLQkJCQk7OwotCQkJT1NFNjgwMDAgfCBvc2U2ODAwMCkK LQkJCQliYXNpY19tYWNoaW5lPW02ODAwMC1lcmljc3NvbgotCQkJCWJhc2ljX29zPW9zZQot CQkJCTs7Ci0JCQlvczY4aykKLQkJCQliYXNpY19tYWNoaW5lPW02OGstbm9uZQotCQkJCWJh c2ljX29zPW9zNjhrCi0JCQkJOzsKLQkJCXBhcmFnb24pCi0JCQkJYmFzaWNfbWFjaGluZT1p ODYwLWludGVsCi0JCQkJYmFzaWNfb3M9b3NmCi0JCQkJOzsKLQkJCXBhcmlzYykKLQkJCQli YXNpY19tYWNoaW5lPWhwcGEtdW5rbm93bgotCQkJCWJhc2ljX29zPWxpbnV4Ci0JCQkJOzsK LQkJCXBzcCkKLQkJCQliYXNpY19tYWNoaW5lPW1pcHNhbGxlZ3JleGVsLXNvbnkKLQkJCQli YXNpY19vcz1wc3AKLQkJCQk7OwotCQkJcHczMikKLQkJCQliYXNpY19tYWNoaW5lPWk1ODYt dW5rbm93bgotCQkJCWJhc2ljX29zPXB3MzIKLQkJCQk7OwotCQkJcmRvcyB8IHJkb3M2NCkK LQkJCQliYXNpY19tYWNoaW5lPXg4Nl82NC1wYwotCQkJCWJhc2ljX29zPXJkb3MKLQkJCQk7 OwotCQkJcmRvczMyKQotCQkJCWJhc2ljX21hY2hpbmU9aTM4Ni1wYwotCQkJCWJhc2ljX29z PXJkb3MKLQkJCQk7OwotCQkJcm9tNjhrKQotCQkJCWJhc2ljX21hY2hpbmU9bTY4ay1yb202 OGsKLQkJCQliYXNpY19vcz1jb2ZmCi0JCQkJOzsKLQkJCXNhMjkyMDApCi0JCQkJYmFzaWNf bWFjaGluZT1hMjlrLWFtZAotCQkJCWJhc2ljX29zPXVkaQotCQkJCTs7Ci0JCQlzZWkpCi0J CQkJYmFzaWNfbWFjaGluZT1taXBzLXNlaQotCQkJCWJhc2ljX29zPXNlaXV4Ci0JCQkJOzsK LQkJCXNlcXVlbnQpCi0JCQkJYmFzaWNfbWFjaGluZT1pMzg2LXNlcXVlbnQKLQkJCQliYXNp Y19vcz0KLQkJCQk7OwotCQkJc3BzNykKLQkJCQliYXNpY19tYWNoaW5lPW02OGstYnVsbAot CQkJCWJhc2ljX29zPXN5c3YyCi0JCQkJOzsKLQkJCXN0MjAwMCkKLQkJCQliYXNpY19tYWNo aW5lPW02OGstdGFuZGVtCi0JCQkJYmFzaWNfb3M9Ci0JCQkJOzsKLQkJCXN0cmF0dXMpCi0J CQkJYmFzaWNfbWFjaGluZT1pODYwLXN0cmF0dXMKLQkJCQliYXNpY19vcz1zeXN2NAotCQkJ CTs7Ci0JCQlzdW4yKQotCQkJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1bgotCQkJCWJhc2lj X29zPQotCQkJCTs7Ci0JCQlzdW4yb3MzKQotCQkJCWJhc2ljX21hY2hpbmU9bTY4MDAwLXN1 bgotCQkJCWJhc2ljX29zPXN1bm9zMwotCQkJCTs7Ci0JCQlzdW4yb3M0KQotCQkJCWJhc2lj X21hY2hpbmU9bTY4MDAwLXN1bgotCQkJCWJhc2ljX29zPXN1bm9zNAotCQkJCTs7Ci0JCQlz dW4zKQotCQkJCWJhc2ljX21hY2hpbmU9bTY4ay1zdW4KLQkJCQliYXNpY19vcz0KLQkJCQk7 OwotCQkJc3VuM29zMykKLQkJCQliYXNpY19tYWNoaW5lPW02OGstc3VuCi0JCQkJYmFzaWNf b3M9c3Vub3MzCi0JCQkJOzsKLQkJCXN1bjNvczQpCi0JCQkJYmFzaWNfbWFjaGluZT1tNjhr LXN1bgotCQkJCWJhc2ljX29zPXN1bm9zNAotCQkJCTs7Ci0JCQlzdW40KQotCQkJCWJhc2lj X21hY2hpbmU9c3BhcmMtc3VuCi0JCQkJYmFzaWNfb3M9Ci0JCQkJOzsKLQkJCXN1bjRvczMp Ci0JCQkJYmFzaWNfbWFjaGluZT1zcGFyYy1zdW4KLQkJCQliYXNpY19vcz1zdW5vczMKLQkJ CQk7OwotCQkJc3VuNG9zNCkKLQkJCQliYXNpY19tYWNoaW5lPXNwYXJjLXN1bgotCQkJCWJh c2ljX29zPXN1bm9zNAotCQkJCTs7Ci0JCQlzdW40c29sMikKLQkJCQliYXNpY19tYWNoaW5l PXNwYXJjLXN1bgotCQkJCWJhc2ljX29zPXNvbGFyaXMyCi0JCQkJOzsKLQkJCXN1bjM4NiB8 IHN1bjM4NmkgfCByb2FkcnVubmVyKQotCQkJCWJhc2ljX21hY2hpbmU9aTM4Ni1zdW4KLQkJ CQliYXNpY19vcz0KLQkJCQk7OwotCQkJc3YxKQotCQkJCWJhc2ljX21hY2hpbmU9c3YxLWNy YXkKLQkJCQliYXNpY19vcz11bmljb3MKLQkJCQk7OwotCQkJc3ltbWV0cnkpCi0JCQkJYmFz aWNfbWFjaGluZT1pMzg2LXNlcXVlbnQKLQkJCQliYXNpY19vcz1keW5peAotCQkJCTs7Ci0J CQl0M2UpCi0JCQkJYmFzaWNfbWFjaGluZT1hbHBoYWV2NS1jcmF5Ci0JCQkJYmFzaWNfb3M9 dW5pY29zCi0JCQkJOzsKLQkJCXQ5MCkKLQkJCQliYXNpY19tYWNoaW5lPXQ5MC1jcmF5Ci0J CQkJYmFzaWNfb3M9dW5pY29zCi0JCQkJOzsKLQkJCXRvYWQxKQotCQkJCWJhc2ljX21hY2hp bmU9cGRwMTAteGtsCi0JCQkJYmFzaWNfb3M9dG9wczIwCi0JCQkJOzsKLQkJCXRwZikKLQkJ CQliYXNpY19tYWNoaW5lPXMzOTB4LWlibQotCQkJCWJhc2ljX29zPXRwZgotCQkJCTs7Ci0J CQl1ZGkyOWspCi0JCQkJYmFzaWNfbWFjaGluZT1hMjlrLWFtZAotCQkJCWJhc2ljX29zPXVk aQotCQkJCTs7Ci0JCQl1bHRyYTMpCi0JCQkJYmFzaWNfbWFjaGluZT1hMjlrLW55dQotCQkJ CWJhc2ljX29zPXN5bTEKLQkJCQk7OwotCQkJdjgxMCB8IG5lY3Y4MTApCi0JCQkJYmFzaWNf bWFjaGluZT12ODEwLW5lYwotCQkJCWJhc2ljX29zPW5vbmUKLQkJCQk7OwotCQkJdmF4dikK LQkJCQliYXNpY19tYWNoaW5lPXZheC1kZWMKLQkJCQliYXNpY19vcz1zeXN2Ci0JCQkJOzsK LQkJCXZtcykKLQkJCQliYXNpY19tYWNoaW5lPXZheC1kZWMKLQkJCQliYXNpY19vcz12bXMK LQkJCQk7OwotCQkJdnN0YSkKLQkJCQliYXNpY19tYWNoaW5lPWkzODYtcGMKLQkJCQliYXNp Y19vcz12c3RhCi0JCQkJOzsKLQkJCXZ4d29ya3M5NjApCi0JCQkJYmFzaWNfbWFjaGluZT1p OTYwLXdycwotCQkJCWJhc2ljX29zPXZ4d29ya3MKLQkJCQk7OwotCQkJdnh3b3JrczY4KQot CQkJCWJhc2ljX21hY2hpbmU9bTY4ay13cnMKLQkJCQliYXNpY19vcz12eHdvcmtzCi0JCQkJ OzsKLQkJCXZ4d29ya3MyOWspCi0JCQkJYmFzaWNfbWFjaGluZT1hMjlrLXdycwotCQkJCWJh c2ljX29zPXZ4d29ya3MKLQkJCQk7OwotCQkJeGJveCkKLQkJCQliYXNpY19tYWNoaW5lPWk2 ODYtcGMKLQkJCQliYXNpY19vcz1taW5ndzMyCi0JCQkJOzsKLQkJCXltcCkKLQkJCQliYXNp Y19tYWNoaW5lPXltcC1jcmF5Ci0JCQkJYmFzaWNfb3M9dW5pY29zCi0JCQkJOzsKLQkJCSop Ci0JCQkJYmFzaWNfbWFjaGluZT0kMQotCQkJCWJhc2ljX29zPQotCQkJCTs7Ci0JCWVzYWMK LQkJOzsKLWVzYWMKLQotIyBEZWNvZGUgMS1jb21wb25lbnQgb3IgYWQtaG9jIGJhc2ljIG1h Y2hpbmVzCi1jYXNlICRiYXNpY19tYWNoaW5lIGluCi0JIyBIZXJlIHdlIGhhbmRsZSB0aGUg ZGVmYXVsdCBtYW51ZmFjdHVyZXIgb2YgY2VydGFpbiBDUFUgdHlwZXMuICBJdCBpcyBpbgot CSMgc29tZSBjYXNlcyB0aGUgb25seSBtYW51ZmFjdHVyZXIsIGluIG90aGVycywgaXQgaXMg dGhlIG1vc3QgcG9wdWxhci4KLQl3ODlrKQotCQljcHU9aHBwYTEuMQotCQl2ZW5kb3I9d2lu Ym9uZAotCQk7OwotCW9wNTBuKQotCQljcHU9aHBwYTEuMQotCQl2ZW5kb3I9b2tpCi0JCTs7 Ci0Jb3A2MGMpCi0JCWNwdT1ocHBhMS4xCi0JCXZlbmRvcj1va2kKLQkJOzsKLQlpYm0qKQot CQljcHU9aTM3MAotCQl2ZW5kb3I9aWJtCi0JCTs7Ci0Jb3Jpb24xMDUpCi0JCWNwdT1jbGlw cGVyCi0JCXZlbmRvcj1oaWdobGV2ZWwKLQkJOzsKLQltYWMgfCBtcHcgfCBtYWMtbXB3KQot CQljcHU9bTY4awotCQl2ZW5kb3I9YXBwbGUKLQkJOzsKLQlwbWFjIHwgcG1hYy1tcHcpCi0J CWNwdT1wb3dlcnBjCi0JCXZlbmRvcj1hcHBsZQotCQk7OwotCi0JIyBSZWNvZ25pemUgdGhl IHZhcmlvdXMgbWFjaGluZSBuYW1lcyBhbmQgYWxpYXNlcyB3aGljaCBzdGFuZAotCSMgZm9y IGEgQ1BVIHR5cGUgYW5kIGEgY29tcGFueSBhbmQgc29tZXRpbWVzIGV2ZW4gYW4gT1MuCi0J M2IxIHwgNzMwMCB8IDczMDAtYXR0IHwgYXR0LTczMDAgfCBwYzczMDAgfCBzYWZhcmkgfCB1 bml4cGMpCi0JCWNwdT1tNjgwMDAKLQkJdmVuZG9yPWF0dAotCQk7OwotCTNiKikKLQkJY3B1 PXdlMzJrCi0JCXZlbmRvcj1hdHQKLQkJOzsKLQlibHVlZ2VuZSopCi0JCWNwdT1wb3dlcnBj Ci0JCXZlbmRvcj1pYm0KLQkJYmFzaWNfb3M9Y25rCi0JCTs7Ci0JZGVjc3lzdGVtMTAqIHwg ZGVjMTAqKQotCQljcHU9cGRwMTAKLQkJdmVuZG9yPWRlYwotCQliYXNpY19vcz10b3BzMTAK LQkJOzsKLQlkZWNzeXN0ZW0yMCogfCBkZWMyMCopCi0JCWNwdT1wZHAxMAotCQl2ZW5kb3I9 ZGVjCi0JCWJhc2ljX29zPXRvcHMyMAotCQk7OwotCWRlbHRhIHwgMzMwMCB8IG1vdG9yb2xh LTMzMDAgfCBtb3Rvcm9sYS1kZWx0YSBcCi0JICAgICAgfCAzMzAwLW1vdG9yb2xhIHwgZGVs dGEtbW90b3JvbGEpCi0JCWNwdT1tNjhrCi0JCXZlbmRvcj1tb3Rvcm9sYQotCQk7OwotCWRw eDIqKQotCQljcHU9bTY4awotCQl2ZW5kb3I9YnVsbAotCQliYXNpY19vcz1zeXN2MwotCQk7 OwotCWVuY29yZSB8IHVtYXggfCBtbWF4KQotCQljcHU9bnMzMmsKLQkJdmVuZG9yPWVuY29y ZQotCQk7OwotCWVseHNpKQotCQljcHU9ZWx4c2kKLQkJdmVuZG9yPWVseHNpCi0JCWJhc2lj X29zPSR7YmFzaWNfb3M6LWJzZH0KLQkJOzsKLQlmeDI4MDApCi0JCWNwdT1pODYwCi0JCXZl bmRvcj1hbGxpYW50Ci0JCTs7Ci0JZ2VuaXgpCi0JCWNwdT1uczMyawotCQl2ZW5kb3I9bnMK LQkJOzsKLQloMzA1MHIqIHwgaGl1eCopCi0JCWNwdT1ocHBhMS4xCi0JCXZlbmRvcj1oaXRh Y2hpCi0JCWJhc2ljX29zPWhpdXh3ZTIKLQkJOzsKLQlocDNrOVswLTldWzAtOV0gfCBocDlb MC05XVswLTldKQotCQljcHU9aHBwYTEuMAotCQl2ZW5kb3I9aHAKLQkJOzsKLQlocDlrMlsw LTldWzAtOV0gfCBocDlrMzFbMC05XSkKLQkJY3B1PW02ODAwMAotCQl2ZW5kb3I9aHAKLQkJ OzsKLQlocDlrM1syLTldWzAtOV0pCi0JCWNwdT1tNjhrCi0JCXZlbmRvcj1ocAotCQk7Owot CWhwOWs2WzAtOV1bMC05XSB8IGhwNlswLTldWzAtOV0pCi0JCWNwdT1ocHBhMS4wCi0JCXZl bmRvcj1ocAotCQk7OwotCWhwOWs3WzAtNzldWzAtOV0gfCBocDdbMC03OV1bMC05XSkKLQkJ Y3B1PWhwcGExLjEKLQkJdmVuZG9yPWhwCi0JCTs7Ci0JaHA5azc4WzAtOV0gfCBocDc4WzAt OV0pCi0JCSMgRklYTUU6IHJlYWxseSBocHBhMi4wLWhwCi0JCWNwdT1ocHBhMS4xCi0JCXZl bmRvcj1ocAotCQk7OwotCWhwOWs4WzY3XTEgfCBocDhbNjddMSB8IGhwOWs4MFsyNF0gfCBo cDgwWzI0XSB8IGhwOWs4Wzc4XTkgfCBocDhbNzhdOSB8IGhwOWs4OTMgfCBocDg5MykKLQkJ IyBGSVhNRTogcmVhbGx5IGhwcGEyLjAtaHAKLQkJY3B1PWhwcGExLjEKLQkJdmVuZG9yPWhw Ci0JCTs7Ci0JaHA5azhbMC05XVsxMzY3OV0gfCBocDhbMC05XVsxMzY3OV0pCi0JCWNwdT1o cHBhMS4xCi0JCXZlbmRvcj1ocAotCQk7OwotCWhwOWs4WzAtOV1bMC05XSB8IGhwOFswLTld WzAtOV0pCi0JCWNwdT1ocHBhMS4wCi0JCXZlbmRvcj1ocAotCQk7OwotCWkqODZ2MzIpCi0J CWNwdT1gZWNobyAiJDEiIHwgc2VkIC1lICdzLzg2LiovODYvJ2AKLQkJdmVuZG9yPXBjCi0J CWJhc2ljX29zPXN5c3YzMgotCQk7OwotCWkqODZ2NCopCi0JCWNwdT1gZWNobyAiJDEiIHwg c2VkIC1lICdzLzg2LiovODYvJ2AKLQkJdmVuZG9yPXBjCi0JCWJhc2ljX29zPXN5c3Y0Ci0J CTs7Ci0JaSo4NnYpCi0JCWNwdT1gZWNobyAiJDEiIHwgc2VkIC1lICdzLzg2LiovODYvJ2AK LQkJdmVuZG9yPXBjCi0JCWJhc2ljX29zPXN5c3YKLQkJOzsKLQlpKjg2c29sMikKLQkJY3B1 PWBlY2hvICIkMSIgfCBzZWQgLWUgJ3MvODYuKi84Ni8nYAotCQl2ZW5kb3I9cGMKLQkJYmFz aWNfb3M9c29sYXJpczIKLQkJOzsKLQlqOTAgfCBqOTAtY3JheSkKLQkJY3B1PWo5MAotCQl2 ZW5kb3I9Y3JheQotCQliYXNpY19vcz0ke2Jhc2ljX29zOi11bmljb3N9Ci0JCTs7Ci0JaXJp cyB8IGlyaXM0ZCkKLQkJY3B1PW1pcHMKLQkJdmVuZG9yPXNnaQotCQljYXNlICRiYXNpY19v cyBpbgotCQkgICAgaXJpeCopCi0JCQk7OwotCQkgICAgKikKLQkJCWJhc2ljX29zPWlyaXg0 Ci0JCQk7OwotCQllc2FjCi0JCTs7Ci0JbWluaWZyYW1lKQotCQljcHU9bTY4MDAwCi0JCXZl bmRvcj1jb252ZXJnZW50Ci0JCTs7Ci0JKm1pbnQgfCBtaW50WzAtOV0qIHwgKk1pTlQgfCAq TWlOVFswLTldKikKLQkJY3B1PW02OGsKLQkJdmVuZG9yPWF0YXJpCi0JCWJhc2ljX29zPW1p bnQKLQkJOzsKLQluZXdzLTM2MDAgfCByaXNjLW5ld3MpCi0JCWNwdT1taXBzCi0JCXZlbmRv cj1zb255Ci0JCWJhc2ljX29zPW5ld3NvcwotCQk7OwotCW5leHQgfCBtKi1uZXh0KQotCQlj cHU9bTY4awotCQl2ZW5kb3I9bmV4dAotCQljYXNlICRiYXNpY19vcyBpbgotCQkgICAgb3Bl bnN0ZXAqKQotCQkgICAgICAgIDs7Ci0JCSAgICBuZXh0c3RlcCopCi0JCQk7OwotCQkgICAg bnMyKikKLQkJICAgICAgYmFzaWNfb3M9bmV4dHN0ZXAyCi0JCQk7OwotCQkgICAgKikKLQkJ ICAgICAgYmFzaWNfb3M9bmV4dHN0ZXAzCi0JCQk7OwotCQllc2FjCi0JCTs7Ci0JbnAxKQot CQljcHU9bnAxCi0JCXZlbmRvcj1nb3VsZAotCQk7OwotCW9wNTBuLSogfCBvcDYwYy0qKQot CQljcHU9aHBwYTEuMQotCQl2ZW5kb3I9b2tpCi0JCWJhc2ljX29zPXByb2VsZgotCQk7Owot CXBhLWhpdGFjaGkpCi0JCWNwdT1ocHBhMS4xCi0JCXZlbmRvcj1oaXRhY2hpCi0JCWJhc2lj X29zPWhpdXh3ZTIKLQkJOzsKLQlwYmQpCi0JCWNwdT1zcGFyYwotCQl2ZW5kb3I9dHRpCi0J CTs7Ci0JcGJiKQotCQljcHU9bTY4awotCQl2ZW5kb3I9dHRpCi0JCTs7Ci0JcGM1MzIpCi0J CWNwdT1uczMyawotCQl2ZW5kb3I9cGM1MzIKLQkJOzsKLQlwbikKLQkJY3B1PXBuCi0JCXZl bmRvcj1nb3VsZAotCQk7OwotCXBvd2VyKQotCQljcHU9cG93ZXIKLQkJdmVuZG9yPWlibQot CQk7OwotCXBzMikKLQkJY3B1PWkzODYKLQkJdmVuZG9yPWlibQotCQk7OwotCXJtWzQ2XTAw KQotCQljcHU9bWlwcwotCQl2ZW5kb3I9c2llbWVucwotCQk7OwotCXJ0cGMgfCBydHBjLSop Ci0JCWNwdT1yb21wCi0JCXZlbmRvcj1pYm0KLQkJOzsKLQlzZGUpCi0JCWNwdT1taXBzaXNh MzIKLQkJdmVuZG9yPXNkZQotCQliYXNpY19vcz0ke2Jhc2ljX29zOi1lbGZ9Ci0JCTs7Ci0J c2ltc28td3JzKQotCQljcHU9c3BhcmNsaXRlCi0JCXZlbmRvcj13cnMKLQkJYmFzaWNfb3M9 dnh3b3JrcwotCQk7OwotCXRvd2VyIHwgdG93ZXItMzIpCi0JCWNwdT1tNjhrCi0JCXZlbmRv cj1uY3IKLQkJOzsKLQl2cHAqfHZ4fHZ4LSopCi0JCWNwdT1mMzAxCi0JCXZlbmRvcj1mdWpp dHN1Ci0JCTs7Ci0JdzY1KQotCQljcHU9dzY1Ci0JCXZlbmRvcj13ZGMKLQkJOzsKLQl3ODlr LSopCi0JCWNwdT1ocHBhMS4xCi0JCXZlbmRvcj13aW5ib25kCi0JCWJhc2ljX29zPXByb2Vs ZgotCQk7OwotCW5vbmUpCi0JCWNwdT1ub25lCi0JCXZlbmRvcj1ub25lCi0JCTs7Ci0JbGVv bnxsZW9uWzMtOV0pCi0JCWNwdT1zcGFyYwotCQl2ZW5kb3I9JGJhc2ljX21hY2hpbmUKLQkJ OzsKLQlsZW9uLSp8bGVvblszLTldLSopCi0JCWNwdT1zcGFyYwotCQl2ZW5kb3I9YGVjaG8g IiRiYXNpY19tYWNoaW5lIiB8IHNlZCAncy8tLiovLydgCi0JCTs7Ci0KLQkqLSopCi0JCSMg c2hlbGxjaGVjayBkaXNhYmxlPVNDMjE2MgotCQlzYXZlZF9JRlM9JElGUwotCQlJRlM9Ii0i IHJlYWQgY3B1IHZlbmRvciA8PEVPRgotJGJhc2ljX21hY2hpbmUKLUVPRgotCQlJRlM9JHNh dmVkX0lGUwotCQk7OwotCSMgV2UgdXNlICdwYycgcmF0aGVyIHRoYW4gJ3Vua25vd24nCi0J IyBiZWNhdXNlICgxKSB0aGF0J3Mgd2hhdCB0aGV5IG5vcm1hbGx5IGFyZSwgYW5kCi0JIyAo MikgdGhlIHdvcmQgInVua25vd24iIHRlbmRzIHRvIGNvbmZ1c2UgYmVnaW5uaW5nIHVzZXJz LgotCWkqODYgfCB4ODZfNjQpCi0JCWNwdT0kYmFzaWNfbWFjaGluZQotCQl2ZW5kb3I9cGMK LQkJOzsKLQkjIFRoZXNlIHJ1bGVzIGFyZSBkdXBsaWNhdGVkIGZyb20gYmVsb3cgZm9yIHNh a2Ugb2YgdGhlIHNwZWNpYWwgY2FzZSBhYm92ZTsKLQkjIGkuZS4gdGhpbmdzIHRoYXQgbm9y bWFsaXplZCB0byB4ODYgYXJjaGVzIHNob3VsZCBhbHNvIGRlZmF1bHQgdG8gInBjIgotCXBj OTgpCi0JCWNwdT1pMzg2Ci0JCXZlbmRvcj1wYwotCQk7OwotCXg2NCB8IGFtZDY0KQotCQlj cHU9eDg2XzY0Ci0JCXZlbmRvcj1wYwotCQk7OwotCSMgUmVjb2duaXplIHRoZSBiYXNpYyBD UFUgdHlwZXMgd2l0aG91dCBjb21wYW55IG5hbWUuCi0JKikKLQkJY3B1PSRiYXNpY19tYWNo aW5lCi0JCXZlbmRvcj11bmtub3duCi0JCTs7Ci1lc2FjCi0KLXVuc2V0IC12IGJhc2ljX21h Y2hpbmUKLQotIyBEZWNvZGUgYmFzaWMgbWFjaGluZXMgaW4gdGhlIGZ1bGwgYW5kIHByb3Bl ciBDUFUtQ29tcGFueSBmb3JtLgotY2FzZSAkY3B1LSR2ZW5kb3IgaW4KLQkjIEhlcmUgd2Ug aGFuZGxlIHRoZSBkZWZhdWx0IG1hbnVmYWN0dXJlciBvZiBjZXJ0YWluIENQVSB0eXBlcyBp biBjYW5vbmljYWwgZm9ybS4gSXQgaXMgaW4KLQkjIHNvbWUgY2FzZXMgdGhlIG9ubHkgbWFu dWZhY3R1cmVyLCBpbiBvdGhlcnMsIGl0IGlzIHRoZSBtb3N0IHBvcHVsYXIuCi0JY3JheW52 LXVua25vd24pCi0JCXZlbmRvcj1jcmF5Ci0JCWJhc2ljX29zPSR7YmFzaWNfb3M6LXVuaWNv c21wfQotCQk7OwotCWM5MC11bmtub3duIHwgYzkwLWNyYXkpCi0JCXZlbmRvcj1jcmF5Ci0J CWJhc2ljX29zPSR7QmFzaWNfb3M6LXVuaWNvc30KLQkJOzsKLQlmeDgwLXVua25vd24pCi0J CXZlbmRvcj1hbGxpYW50Ci0JCTs7Ci0Jcm9tcC11bmtub3duKQotCQl2ZW5kb3I9aWJtCi0J CTs7Ci0JbW1peC11bmtub3duKQotCQl2ZW5kb3I9a251dGgKLQkJOzsKLQltaWNyb2JsYXpl LXVua25vd24gfCBtaWNyb2JsYXplZWwtdW5rbm93bikKLQkJdmVuZG9yPXhpbGlueAotCQk7 OwotCXJzNjAwMC11bmtub3duKQotCQl2ZW5kb3I9aWJtCi0JCTs7Ci0JdmF4LXVua25vd24p Ci0JCXZlbmRvcj1kZWMKLQkJOzsKLQlwZHAxMS11bmtub3duKQotCQl2ZW5kb3I9ZGVjCi0J CTs7Ci0Jd2UzMmstdW5rbm93bikKLQkJdmVuZG9yPWF0dAotCQk7OwotCWN5ZHJhLXVua25v d24pCi0JCXZlbmRvcj1jeWRyb21lCi0JCTs7Ci0JaTM3MC1pYm0qKQotCQl2ZW5kb3I9aWJt Ci0JCTs7Ci0Jb3Jpb24tdW5rbm93bikKLQkJdmVuZG9yPWhpZ2hsZXZlbAotCQk7OwotCXhw cy11bmtub3duIHwgeHBzMTAwLXVua25vd24pCi0JCWNwdT14cHMxMDAKLQkJdmVuZG9yPWhv bmV5d2VsbAotCQk7OwotCi0JIyBIZXJlIHdlIG5vcm1hbGl6ZSBDUFUgdHlwZXMgd2l0aCBh IG1pc3Npbmcgb3IgbWF0Y2hpbmcgdmVuZG9yCi0JYXJtaC11bmtub3duIHwgYXJtaC1hbHQp Ci0JCWNwdT1hcm12N2wKLQkJdmVuZG9yPWFsdAotCQliYXNpY19vcz0ke2Jhc2ljX29zOi1s aW51eC1nbnVlYWJpaGZ9Ci0JCTs7Ci0JZHB4MjAtdW5rbm93biB8IGRweDIwLWJ1bGwpCi0J CWNwdT1yczYwMDAKLQkJdmVuZG9yPWJ1bGwKLQkJYmFzaWNfb3M9JHtiYXNpY19vczotYm9z eH0KLQkJOzsKLQotCSMgSGVyZSB3ZSBub3JtYWxpemUgQ1BVIHR5cGVzIGlycmVzcGVjdGl2 ZSBvZiB0aGUgdmVuZG9yCi0JYW1kNjQtKikKLQkJY3B1PXg4Nl82NAotCQk7OwotCWJsYWNr ZmluLSopCi0JCWNwdT1iZmluCi0JCWJhc2ljX29zPWxpbnV4Ci0JCTs7Ci0JYzU0eC0qKQot CQljcHU9dGljNTR4Ci0JCTs7Ci0JYzU1eC0qKQotCQljcHU9dGljNTV4Ci0JCTs7Ci0JYzZ4 LSopCi0JCWNwdT10aWM2eAotCQk7OwotCWU1MDB2WzEyXS0qKQotCQljcHU9cG93ZXJwYwot CQliYXNpY19vcz0ke2Jhc2ljX29zfSJzcGUiCi0JCTs7Ci0JbWlwczMqLSopCi0JCWNwdT1t aXBzNjQKLQkJOzsKLQltczEtKikKLQkJY3B1PW10Ci0JCTs7Ci0JbTY4a25vbW11LSopCi0J CWNwdT1tNjhrCi0JCWJhc2ljX29zPWxpbnV4Ci0JCTs7Ci0JbTlzMTJ6LSogfCBtNjhoY3Mx MnotKiB8IGhjczEyei0qIHwgczEyei0qKQotCQljcHU9czEyegotCQk7OwotCW9wZW5yaXNj LSopCi0JCWNwdT1vcjMyCi0JCTs7Ci0JcGFyaXNjLSopCi0JCWNwdT1ocHBhCi0JCWJhc2lj X29zPWxpbnV4Ci0JCTs7Ci0JcGVudGl1bS0qIHwgcDUtKiB8IGs1LSogfCBrNi0qIHwgbmV4 Z2VuLSogfCB2aWFjMy0qKQotCQljcHU9aTU4NgotCQk7OwotCXBlbnRpdW1wcm8tKiB8IHA2 LSogfCA2eDg2LSogfCBhdGhsb24tKiB8IGF0aGxvbl8qLSopCi0JCWNwdT1pNjg2Ci0JCTs7 Ci0JcGVudGl1bWlpLSogfCBwZW50aXVtMi0qIHwgcGVudGl1bWlpaS0qIHwgcGVudGl1bTMt KikKLQkJY3B1PWk2ODYKLQkJOzsKLQlwZW50aXVtNC0qKQotCQljcHU9aTc4NgotCQk7Owot CXBjOTgtKikKLQkJY3B1PWkzODYKLQkJOzsKLQlwcGMtKiB8IHBwY2JlLSopCi0JCWNwdT1w b3dlcnBjCi0JCTs7Ci0JcHBjbGUtKiB8IHBvd2VycGNsaXR0bGUtKikKLQkJY3B1PXBvd2Vy cGNsZQotCQk7OwotCXBwYzY0LSopCi0JCWNwdT1wb3dlcnBjNjQKLQkJOzsKLQlwcGM2NGxl LSogfCBwb3dlcnBjNjRsaXR0bGUtKikKLQkJY3B1PXBvd2VycGM2NGxlCi0JCTs7Ci0Jc2Ix LSopCi0JCWNwdT1taXBzaXNhNjRzYjEKLQkJOzsKLQlzYjFlbC0qKQotCQljcHU9bWlwc2lz YTY0c2IxZWwKLQkJOzsKLQlzaDVlW2xiXS0qKQotCQljcHU9YGVjaG8gIiRjcHUiIHwgc2Vk ICdzL15cKHNoLlwpZVwoLlwpJC9cMVwyZS8nYAotCQk7OwotCXNwdXItKikKLQkJY3B1PXNw dXIKLQkJOzsKLQlzdHJvbmdhcm0tKiB8IHRodW1iLSopCi0JCWNwdT1hcm0KLQkJOzsKLQl0 eDM5LSopCi0JCWNwdT1taXBzdHgzOQotCQk7OwotCXR4MzllbC0qKQotCQljcHU9bWlwc3R4 MzllbAotCQk7OwotCXg2NC0qKQotCQljcHU9eDg2XzY0Ci0JCTs7Ci0JeHNjYWxlLSogfCB4 c2NhbGVlW2JsXS0qKQotCQljcHU9YGVjaG8gIiRjcHUiIHwgc2VkICdzL154c2NhbGUvYXJt LydgCi0JCTs7Ci0JYXJtNjQtKiB8IGFhcmNoNjRsZS0qKQotCQljcHU9YWFyY2g2NAotCQk7 OwotCi0JIyBSZWNvZ25pemUgdGhlIGNhbm9uaWNhbCBDUFUgVHlwZXMgdGhhdCBsaW1pdCBh bmQvb3IgbW9kaWZ5IHRoZQotCSMgY29tcGFueSBuYW1lcyB0aGV5IGFyZSBwYWlyZWQgd2l0 aC4KLQljcjE2LSopCi0JCWJhc2ljX29zPSR7YmFzaWNfb3M6LWVsZn0KLQkJOzsKLQljcmlz djMyLSogfCBldHJheGZzKi0qKQotCQljcHU9Y3Jpc3YzMgotCQl2ZW5kb3I9YXhpcwotCQk7 OwotCWNyaXMtKiB8IGV0cmF4Ki0qKQotCQljcHU9Y3JpcwotCQl2ZW5kb3I9YXhpcwotCQk7 OwotCWNyeC0qKQotCQliYXNpY19vcz0ke2Jhc2ljX29zOi1lbGZ9Ci0JCTs7Ci0JbmVvLXRh bmRlbSkKLQkJY3B1PW5lbwotCQl2ZW5kb3I9dGFuZGVtCi0JCTs7Ci0JbnNlLXRhbmRlbSkK LQkJY3B1PW5zZQotCQl2ZW5kb3I9dGFuZGVtCi0JCTs7Ci0JbnNyLXRhbmRlbSkKLQkJY3B1 PW5zcgotCQl2ZW5kb3I9dGFuZGVtCi0JCTs7Ci0JbnN2LXRhbmRlbSkKLQkJY3B1PW5zdgot CQl2ZW5kb3I9dGFuZGVtCi0JCTs7Ci0JbnN4LXRhbmRlbSkKLQkJY3B1PW5zeAotCQl2ZW5k b3I9dGFuZGVtCi0JCTs7Ci0JbWlwc2FsbGVncmV4ZWwtc29ueSkKLQkJY3B1PW1pcHNhbGxl Z3JleGVsCi0JCXZlbmRvcj1zb255Ci0JCTs7Ci0JdGlsZSotKikKLQkJYmFzaWNfb3M9JHti YXNpY19vczotbGludXgtZ251fQotCQk7OwotCi0JKikKLQkJIyBSZWNvZ25pemUgdGhlIGNh bm9uaWNhbCBDUFUgdHlwZXMgdGhhdCBhcmUgYWxsb3dlZCB3aXRoIGFueQotCQkjIGNvbXBh bnkgbmFtZS4KLQkJY2FzZSAkY3B1IGluCi0JCQkxNzUwYSB8IDU4MCBcCi0JCQl8IGEyOWsg XAotCQkJfCBhYXJjaDY0IHwgYWFyY2g2NF9iZSBcCi0JCQl8IGFiYWN1cyBcCi0JCQl8IGFs cGhhIHwgYWxwaGFldls0LThdIHwgYWxwaGFldjU2IHwgYWxwaGFldjZbNzhdIFwKLQkJCXwg YWxwaGE2NCB8IGFscGhhNjRldls0LThdIHwgYWxwaGE2NGV2NTYgfCBhbHBoYTY0ZXY2Wzc4 XSBcCi0JCQl8IGFscGhhcGNhNVs2N10gfCBhbHBoYTY0cGNhNVs2N10gXAotCQkJfCBhbTMz XzIuMCBcCi0JCQl8IGFtZGdjbiBcCi0JCQl8IGFyYyB8IGFyY2ViIHwgYXJjMzIgfCBhcmM2 NCBcCi0JCQl8IGFybSB8IGFybVtsYl1lIHwgYXJtZVtsYl0gfCBhcm12KiBcCi0JCQl8IGF2 ciB8IGF2cjMyIFwKLQkJCXwgYXNtanMgXAotCQkJfCBiYSBcCi0JCQl8IGJlMzIgfCBiZTY0 IFwKLQkJCXwgYmZpbiB8IGJwZiB8IGJzMjAwMCBcCi0JCQl8IGNbMTIzXSogfCBjMzAgfCBb Y2p0XTkwIHwgYzR4IFwKLQkJCXwgYzgwNTEgfCBjbGlwcGVyIHwgY3JheW52IHwgY3NreSB8 IGN5ZHJhIFwKLQkJCXwgZDEwdiB8IGQzMHYgfCBkbHggfCBkc3AxNnh4IFwKLQkJCXwgZTJr IHwgZWx4c2kgfCBlcGlwaGFueSBcCi0JCQl8IGYzMFswMV0gfCBmNzAwIHwgZmlkbyB8IGZy MzAgfCBmcnYgfCBmdDMyIHwgZng4MCBcCi0JCQl8IGg4MzAwIHwgaDg1MDAgXAotCQkJfCBo cHBhIHwgaHBwYTEuWzAxXSB8IGhwcGEyLjAgfCBocHBhMi4wW253XSB8IGhwcGE2NCBcCi0J CQl8IGhleGFnb24gXAotCQkJfCBpMzcwIHwgaSo4NiB8IGk4NjAgfCBpOTYwIHwgaWExNiB8 IGlhNjQgXAotCQkJfCBpcDJrIHwgaXEyMDAwIFwKLQkJCXwgazFvbSBcCi0JCQl8IGxlMzIg fCBsZTY0IFwKLQkJCXwgbG0zMiBcCi0JCQl8IGxvb25nYXJjaDMyIHwgbG9vbmdhcmNoNjQg XAotCQkJfCBtMzJjIHwgbTMyciB8IG0zMnJsZSBcCi0JCQl8IG01MjAwIHwgbTY4MDAwIHwg bTY4MFswMTIzNDZdMCB8IG02ODM2MCB8IG02ODM/MiB8IG02OGsgXAotCQkJfCBtNjgxMSB8 IG02OGhjMTEgfCBtNjgxMiB8IG02OGhjMTIgfCBtNjhoY3MxMnggXAotCQkJfCBtODgxMTAg fCBtODhrIHwgbWF4cSB8IG1iIHwgbWNvcmUgfCBtZXAgfCBtZXRhZyBcCi0JCQl8IG1pY3Jv YmxhemUgfCBtaWNyb2JsYXplZWwgXAotCQkJfCBtaXBzIHwgbWlwc2JlIHwgbWlwc2ViIHwg bWlwc2VsIHwgbWlwc2xlIFwKLQkJCXwgbWlwczE2IFwKLQkJCXwgbWlwczY0IHwgbWlwczY0 ZWIgfCBtaXBzNjRlbCBcCi0JCQl8IG1pcHM2NG9jdGVvbiB8IG1pcHM2NG9jdGVvbmVsIFwK LQkJCXwgbWlwczY0b3Jpb24gfCBtaXBzNjRvcmlvbmVsIFwKLQkJCXwgbWlwczY0cjU5MDAg fCBtaXBzNjRyNTkwMGVsIFwKLQkJCXwgbWlwczY0dnIgfCBtaXBzNjR2cmVsIFwKLQkJCXwg bWlwczY0dnI0MTAwIHwgbWlwczY0dnI0MTAwZWwgXAotCQkJfCBtaXBzNjR2cjQzMDAgfCBt aXBzNjR2cjQzMDBlbCBcCi0JCQl8IG1pcHM2NHZyNTAwMCB8IG1pcHM2NHZyNTAwMGVsIFwK LQkJCXwgbWlwczY0dnI1OTAwIHwgbWlwczY0dnI1OTAwZWwgXAotCQkJfCBtaXBzaXNhMzIg fCBtaXBzaXNhMzJlbCBcCi0JCQl8IG1pcHNpc2EzMnIyIHwgbWlwc2lzYTMycjJlbCBcCi0J CQl8IG1pcHNpc2EzMnIzIHwgbWlwc2lzYTMycjNlbCBcCi0JCQl8IG1pcHNpc2EzMnI1IHwg bWlwc2lzYTMycjVlbCBcCi0JCQl8IG1pcHNpc2EzMnI2IHwgbWlwc2lzYTMycjZlbCBcCi0J CQl8IG1pcHNpc2E2NCB8IG1pcHNpc2E2NGVsIFwKLQkJCXwgbWlwc2lzYTY0cjIgfCBtaXBz aXNhNjRyMmVsIFwKLQkJCXwgbWlwc2lzYTY0cjMgfCBtaXBzaXNhNjRyM2VsIFwKLQkJCXwg bWlwc2lzYTY0cjUgfCBtaXBzaXNhNjRyNWVsIFwKLQkJCXwgbWlwc2lzYTY0cjYgfCBtaXBz aXNhNjRyNmVsIFwKLQkJCXwgbWlwc2lzYTY0c2IxIHwgbWlwc2lzYTY0c2IxZWwgXAotCQkJ fCBtaXBzaXNhNjRzcjcxayB8IG1pcHNpc2E2NHNyNzFrZWwgXAotCQkJfCBtaXBzcjU5MDAg fCBtaXBzcjU5MDBlbCBcCi0JCQl8IG1pcHN0eDM5IHwgbWlwc3R4MzllbCBcCi0JCQl8IG1t aXggXAotCQkJfCBtbjEwMjAwIHwgbW4xMDMwMCBcCi0JCQl8IG1veGllIFwKLQkJCXwgbXQg XAotCQkJfCBtc3A0MzAgXAotCQkJfCBuZHMzMiB8IG5kczMybGUgfCBuZHMzMmJlIFwKLQkJ CXwgbmZwIFwKLQkJCXwgbmlvcyB8IG5pb3MyIHwgbmlvczJlYiB8IG5pb3MyZWwgXAotCQkJ fCBub25lIHwgbnAxIHwgbnMxNmsgfCBuczMyayB8IG52cHR4IFwKLQkJCXwgb3BlbjggXAot CQkJfCBvcjFrKiBcCi0JCQl8IG9yMzIgXAotCQkJfCBvcmlvbiBcCi0JCQl8IHBpY29jaGlw IFwKLQkJCXwgcGRwMTAgfCBwZHAxMSB8IHBqIHwgcGpsIHwgcG4gfCBwb3dlciBcCi0JCQl8 IHBvd2VycGMgfCBwb3dlcnBjNjQgfCBwb3dlcnBjNjRsZSB8IHBvd2VycGNsZSB8IHBvd2Vy cGNzcGUgXAotCQkJfCBwcnUgXAotCQkJfCBweXJhbWlkIFwKLQkJCXwgcmlzY3YgfCByaXNj djMyIHwgcmlzY3YzMmJlIHwgcmlzY3Y2NCB8IHJpc2N2NjRiZSBcCi0JCQl8IHJsNzggfCBy b21wIHwgcnM2MDAwIHwgcnggXAotCQkJfCBzMzkwIHwgczM5MHggXAotCQkJfCBzY29yZSBc Ci0JCQl8IHNoIHwgc2hsIFwKLQkJCXwgc2hbMTIzNF0gfCBzaFsyNF1hIHwgc2hbMjRdYWVb bGJdIHwgc2hbMjNdZSB8IHNoZVtsYl0gfCBzaFtsYl1lIFwKLQkJCXwgc2hbMTIzNF1lW2xi XSB8ICBzaFsxMjM0NV1bbGJdZSB8IHNoWzIzXWVsZSB8IHNoNjQgfCBzaDY0bGUgXAotCQkJ fCBzcGFyYyB8IHNwYXJjNjQgfCBzcGFyYzY0YiB8IHNwYXJjNjR2IHwgc3BhcmM4NnggfCBz cGFyY2xldCBcCi0JCQl8IHNwYXJjbGl0ZSBcCi0JCQl8IHNwYXJjdjggfCBzcGFyY3Y5IHwg c3BhcmN2OWIgfCBzcGFyY3Y5diB8IHN2MSB8IHN4KiBcCi0JCQl8IHNwdSBcCi0JCQl8IHRh aG9lIFwKLQkJCXwgdGh1bWJ2NyogXAotCQkJfCB0aWMzMCB8IHRpYzR4IHwgdGljNTR4IHwg dGljNTV4IHwgdGljNnggfCB0aWM4MCBcCi0JCQl8IHRyb24gXAotCQkJfCB1Ymljb20zMiBc Ci0JCQl8IHY3MCB8IHY4NTAgfCB2ODUwZSB8IHY4NTBlMSB8IHY4NTBlcyB8IHY4NTBlMiB8 IHY4NTBlMnYzIFwKLQkJCXwgdmF4IFwKLQkJCXwgdmlzaXVtIFwKLQkJCXwgdzY1IFwKLQkJ CXwgd2FzbTMyIHwgd2FzbTY0IFwKLQkJCXwgd2UzMmsgXAotCQkJfCB4ODYgfCB4ODZfNjQg fCB4YzE2eCB8IHhnYXRlIHwgeHBzMTAwIFwKLQkJCXwgeHN0b3JteTE2IHwgeHRlbnNhKiBc Ci0JCQl8IHltcCBcCi0JCQl8IHo4ayB8IHo4MCkKLQkJCQk7OwotCi0JCQkqKQotCQkJCWVj aG8gIkludmFsaWQgY29uZmlndXJhdGlvbiAnJDEnOiBtYWNoaW5lICckY3B1LSR2ZW5kb3In IG5vdCByZWNvZ25pemVkIiAxPiYyCi0JCQkJZXhpdCAxCi0JCQkJOzsKLQkJZXNhYwotCQk7 OwotZXNhYwotCi0jIEhlcmUgd2UgY2Fub25pY2FsaXplIGNlcnRhaW4gYWxpYXNlcyBmb3Ig bWFudWZhY3R1cmVycy4KLWNhc2UgJHZlbmRvciBpbgotCWRpZ2l0YWwqKQotCQl2ZW5kb3I9 ZGVjCi0JCTs7Ci0JY29tbW9kb3JlKikKLQkJdmVuZG9yPWNibQotCQk7OwotCSopCi0JCTs7 Ci1lc2FjCi0KLSMgRGVjb2RlIG1hbnVmYWN0dXJlci1zcGVjaWZpYyBhbGlhc2VzIGZvciBj ZXJ0YWluIG9wZXJhdGluZyBzeXN0ZW1zLgotCi1pZiB0ZXN0IHgkYmFzaWNfb3MgIT0geAot dGhlbgotCi0jIEZpcnN0IHJlY29nbml6ZSBzb21lIGFkLWhvYyBjYXNlcywgb3IgcGVyaGFw cyBzcGxpdCBrZXJuZWwtb3MsIG9yIGVsc2UganVzdAotIyBzZXQgb3MuCi1jYXNlICRiYXNp Y19vcyBpbgotCWdudS9saW51eCopCi0JCWtlcm5lbD1saW51eAotCQlvcz1gZWNobyAiJGJh c2ljX29zIiB8IHNlZCAtZSAnc3xnbnUvbGludXh8Z251fCdgCi0JCTs7Ci0Jb3MyLWVteCkK LQkJa2VybmVsPW9zMgotCQlvcz1gZWNobyAiJGJhc2ljX29zIiB8IHNlZCAtZSAnc3xvczIt ZW14fGVteHwnYAotCQk7OwotCW50by1xbngqKQotCQlrZXJuZWw9bnRvCi0JCW9zPWBlY2hv ICIkYmFzaWNfb3MiIHwgc2VkIC1lICdzfG50by1xbnh8cW54fCdgCi0JCTs7Ci0JKi0qKQot CQkjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzIxNjIKLQkJc2F2ZWRfSUZTPSRJRlMKLQkJSUZT PSItIiByZWFkIGtlcm5lbCBvcyA8PEVPRgotJGJhc2ljX29zCi1FT0YKLQkJSUZTPSRzYXZl ZF9JRlMKLQkJOzsKLQkjIERlZmF1bHQgT1Mgd2hlbiBqdXN0IGtlcm5lbCB3YXMgc3BlY2lm aWVkCi0JbnRvKikKLQkJa2VybmVsPW50bwotCQlvcz1gZWNobyAiJGJhc2ljX29zIiB8IHNl ZCAtZSAnc3xudG98cW54fCdgCi0JCTs7Ci0JbGludXgqKQotCQlrZXJuZWw9bGludXgKLQkJ b3M9YGVjaG8gIiRiYXNpY19vcyIgfCBzZWQgLWUgJ3N8bGludXh8Z251fCdgCi0JCTs7Ci0J bWFuYWdhcm0qKQotCQlrZXJuZWw9bWFuYWdhcm0KLQkJb3M9YGVjaG8gIiRiYXNpY19vcyIg fCBzZWQgLWUgJ3N8bWFuYWdhcm18bWxpYmN8J2AKLQkJOzsKLQkqKQotCQlrZXJuZWw9Ci0J CW9zPSRiYXNpY19vcwotCQk7OwotZXNhYwotCi0jIE5vdywgbm9ybWFsaXplIHRoZSBPUyAo a25vd2luZyB3ZSBqdXN0IGhhdmUgb25lIGNvbXBvbmVudCwgaXQncyBub3QgYSBrZXJuZWws Ci0jIGV0Yy4pCi1jYXNlICRvcyBpbgotCSMgRmlyc3QgbWF0Y2ggc29tZSBzeXN0ZW0gdHlw ZSBhbGlhc2VzIHRoYXQgbWlnaHQgZ2V0IGNvbmZ1c2VkCi0JIyB3aXRoIHZhbGlkIHN5c3Rl bSB0eXBlcy4KLQkjIHNvbGFyaXMqIGlzIGEgYmFzaWMgc3lzdGVtIHR5cGUsIHdpdGggdGhp cyBvbmUgZXhjZXB0aW9uLgotCWF1cm9yYXV4KQotCQlvcz1hdXJvcmF1eAotCQk7OwotCWJs dWVnZW5lKikKLQkJb3M9Y25rCi0JCTs7Ci0Jc29sYXJpczEgfCBzb2xhcmlzMS4qKQotCQlv cz1gZWNobyAiJG9zIiB8IHNlZCAtZSAnc3xzb2xhcmlzMXxzdW5vczR8J2AKLQkJOzsKLQlz b2xhcmlzKQotCQlvcz1zb2xhcmlzMgotCQk7OwotCXVuaXh3YXJlKikKLQkJb3M9c3lzdjQu MnV3Ci0JCTs7Ci0JIyBlczE4MDAgaXMgaGVyZSB0byBhdm9pZCBiZWluZyBtYXRjaGVkIGJ5 IGVzKiAoYSBkaWZmZXJlbnQgT1MpCi0JZXMxODAwKikKLQkJb3M9b3NlCi0JCTs7Ci0JIyBT b21lIHZlcnNpb24gbnVtYmVycyBuZWVkIG1vZGlmaWNhdGlvbgotCWNob3J1c29zKikKLQkJ b3M9Y2hvcnVzb3MKLQkJOzsKLQlpc2MpCi0JCW9zPWlzYzIuMgotCQk7OwotCXNjbzYpCi0J CW9zPXNjbzV2NgotCQk7OwotCXNjbzUpCi0JCW9zPXNjbzMuMnY1Ci0JCTs7Ci0Jc2NvNCkK LQkJb3M9c2NvMy4ydjQKLQkJOzsKLQlzY28zLjIuWzQtOV0qKQotCQlvcz1gZWNobyAiJG9z IiB8IHNlZCAtZSAncy9zY28zLjIuL3NjbzMuMnYvJ2AKLQkJOzsKLQlzY28qdiogfCBzY291 dCkKLQkJIyBEb24ndCBtYXRjaCBiZWxvdwotCQk7OwotCXNjbyopCi0JCW9zPXNjbzMuMnYy Ci0JCTs7Ci0JcHNvcyopCi0JCW9zPXBzb3MKLQkJOzsKLQlxbngqKQotCQlvcz1xbngKLQkJ OzsKLQloaXV4KikKLQkJb3M9aGl1eHdlMgotCQk7OwotCWx5bngqMTc4KQotCQlvcz1seW54 b3MxNzgKLQkJOzsKLQlseW54KjUpCi0JCW9zPWx5bnhvczUKLQkJOzsKLQlseW54b3MqKQot CQkjIGRvbid0IGdldCBjYXVnaHQgdXAgaW4gbmV4dCB3aWxkY2FyZAotCQk7OwotCWx5bngq KQotCQlvcz1seW54b3MKLQkJOzsKLQltYWNbMC05XSopCi0JCW9zPWBlY2hvICIkb3MiIHwg c2VkIC1lICdzfG1hY3xtYWNvc3wnYAotCQk7OwotCW9wZW5lZCopCi0JCW9zPW9wZW5lZGl0 aW9uCi0JCTs7Ci0Jb3M0MDAqKQotCQlvcz1vczQwMAotCQk7OwotCXN1bm9zNSopCi0JCW9z PWBlY2hvICIkb3MiIHwgc2VkIC1lICdzfHN1bm9zNXxzb2xhcmlzMnwnYAotCQk7OwotCXN1 bm9zNiopCi0JCW9zPWBlY2hvICIkb3MiIHwgc2VkIC1lICdzfHN1bm9zNnxzb2xhcmlzM3wn YAotCQk7OwotCXdpbmNlKikKLQkJb3M9d2luY2UKLQkJOzsKLQl1dGVrKikKLQkJb3M9YnNk Ci0JCTs7Ci0JZHluaXgqKQotCQlvcz1ic2QKLQkJOzsKLQlhY2lzKikKLQkJb3M9YW9zCi0J CTs7Ci0JYXRoZW9zKikKLQkJb3M9YXRoZW9zCi0JCTs7Ci0Jc3lsbGFibGUqKQotCQlvcz1z eWxsYWJsZQotCQk7OwotCTM4NmJzZCkKLQkJb3M9YnNkCi0JCTs7Ci0JY3RpeCogfCB1dHMq KQotCQlvcz1zeXN2Ci0JCTs7Ci0Jbm92YSopCi0JCW9zPXJ0bWstbm92YQotCQk7OwotCW5z MikKLQkJb3M9bmV4dHN0ZXAyCi0JCTs7Ci0JIyBQcmVzZXJ2ZSB0aGUgdmVyc2lvbiBudW1i ZXIgb2Ygc2luaXg1LgotCXNpbml4NS4qKQotCQlvcz1gZWNobyAiJG9zIiB8IHNlZCAtZSAn c3xzaW5peHxzeXN2fCdgCi0JCTs7Ci0Jc2luaXgqKQotCQlvcz1zeXN2NAotCQk7OwotCXRw ZiopCi0JCW9zPXRwZgotCQk7OwotCXRyaXRvbiopCi0JCW9zPXN5c3YzCi0JCTs7Ci0Jb3Nz KikKLQkJb3M9c3lzdjMKLQkJOzsKLQlzdnI0KikKLQkJb3M9c3lzdjQKLQkJOzsKLQlzdnIz KQotCQlvcz1zeXN2MwotCQk7OwotCXN5c3ZyNCkKLQkJb3M9c3lzdjQKLQkJOzsKLQlvc2Uq KQotCQlvcz1vc2UKLQkJOzsKLQkqbWludCB8IG1pbnRbMC05XSogfCAqTWlOVCB8IE1pTlRb MC05XSopCi0JCW9zPW1pbnQKLQkJOzsKLQlkaWNvcyopCi0JCW9zPWRpY29zCi0JCTs7Ci0J cGlrZW9zKikKLQkJIyBVbnRpbCByZWFsIG5lZWQgb2YgT1Mgc3BlY2lmaWMgc3VwcG9ydCBm b3IKLQkJIyBwYXJ0aWN1bGFyIGZlYXR1cmVzIGNvbWVzIHVwLCBiYXJlIG1ldGFsCi0JCSMg Y29uZmlndXJhdGlvbnMgYXJlIHF1aXRlIGZ1bmN0aW9uYWwuCi0JCWNhc2UgJGNwdSBpbgot CQkgICAgYXJtKikKLQkJCW9zPWVhYmkKLQkJCTs7Ci0JCSAgICAqKQotCQkJb3M9ZWxmCi0J CQk7OwotCQllc2FjCi0JCTs7Ci0JKikKLQkJIyBObyBub3JtYWxpemF0aW9uLCBidXQgbm90 IG5lY2Vzc2FyaWx5IGFjY2VwdGVkLCB0aGF0IGNvbWVzIGJlbG93LgotCQk7OwotZXNhYwot Ci1lbHNlCi0KLSMgSGVyZSB3ZSBoYW5kbGUgdGhlIGRlZmF1bHQgb3BlcmF0aW5nIHN5c3Rl bXMgdGhhdCBjb21lIHdpdGggdmFyaW91cyBtYWNoaW5lcy4KLSMgVGhlIHZhbHVlIHNob3Vs ZCBiZSB3aGF0IHRoZSB2ZW5kb3IgY3VycmVudGx5IHNoaXBzIG91dCB0aGUgZG9vciB3aXRo IHRoZWlyCi0jIG1hY2hpbmUgb3IgcHV0IGFub3RoZXIgd2F5LCB0aGUgbW9zdCBwb3B1bGFy IG9zIHByb3ZpZGVkIHdpdGggdGhlIG1hY2hpbmUuCi0KLSMgTm90ZSB0aGF0IGlmIHlvdSdy ZSBnb2luZyB0byB0cnkgdG8gbWF0Y2ggIi1NQU5VRkFDVFVSRVIiIGhlcmUgKHNheSwKLSMg Ii1zdW4iKSwgdGhlbiB5b3UgaGF2ZSB0byB0ZWxsIHRoZSBjYXNlIHN0YXRlbWVudCB1cCB0 b3dhcmRzIHRoZSB0b3AKLSMgdGhhdCBNQU5VRkFDVFVSRVIgaXNuJ3QgYW4gb3BlcmF0aW5n IHN5c3RlbS4gIE90aGVyd2lzZSwgY29kZSBhYm92ZQotIyB3aWxsIHNpZ25hbCBhbiBlcnJv ciBzYXlpbmcgdGhhdCBNQU5VRkFDVFVSRVIgaXNuJ3QgYW4gb3BlcmF0aW5nCi0jIHN5c3Rl bSwgYW5kIHdlJ2xsIG5ldmVyIGdldCB0byB0aGlzIHBvaW50LgotCi1rZXJuZWw9Ci1jYXNl ICRjcHUtJHZlbmRvciBpbgotCXNjb3JlLSopCi0JCW9zPWVsZgotCQk7OwotCXNwdS0qKQot CQlvcz1lbGYKLQkJOzsKLQkqLWFjb3JuKQotCQlvcz1yaXNjaXgxLjIKLQkJOzsKLQlhcm0q LXJlYmVsKQotCQlrZXJuZWw9bGludXgKLQkJb3M9Z251Ci0JCTs7Ci0JYXJtKi1zZW1pKQot CQlvcz1hb3V0Ci0JCTs7Ci0JYzR4LSogfCB0aWM0eC0qKQotCQlvcz1jb2ZmCi0JCTs7Ci0J YzgwNTEtKikKLQkJb3M9ZWxmCi0JCTs7Ci0JY2xpcHBlci1pbnRlcmdyYXBoKQotCQlvcz1j bGl4Ci0JCTs7Ci0JaGV4YWdvbi0qKQotCQlvcz1lbGYKLQkJOzsKLQl0aWM1NHgtKikKLQkJ b3M9Y29mZgotCQk7OwotCXRpYzU1eC0qKQotCQlvcz1jb2ZmCi0JCTs7Ci0JdGljNngtKikK LQkJb3M9Y29mZgotCQk7OwotCSMgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIHRoZSAqLWRlYyBl bnRyeS4KLQlwZHAxMC0qKQotCQlvcz10b3BzMjAKLQkJOzsKLQlwZHAxMS0qKQotCQlvcz1u b25lCi0JCTs7Ci0JKi1kZWMgfCB2YXgtKikKLQkJb3M9dWx0cml4NC4yCi0JCTs7Ci0JbTY4 Ki1hcG9sbG8pCi0JCW9zPWRvbWFpbgotCQk7OwotCWkzODYtc3VuKQotCQlvcz1zdW5vczQu MC4yCi0JCTs7Ci0JbTY4MDAwLXN1bikKLQkJb3M9c3Vub3MzCi0JCTs7Ci0JbTY4Ki1jaXNj bykKLQkJb3M9YW91dAotCQk7OwotCW1lcC0qKQotCQlvcz1lbGYKLQkJOzsKLQltaXBzKi1j aXNjbykKLQkJb3M9ZWxmCi0JCTs7Ci0JbWlwcyotKikKLQkJb3M9ZWxmCi0JCTs7Ci0Jb3Iz Mi0qKQotCQlvcz1jb2ZmCi0JCTs7Ci0JKi10dGkpCSMgbXVzdCBiZSBiZWZvcmUgc3BhcmMg ZW50cnkgb3Igd2UgZ2V0IHRoZSB3cm9uZyBvcy4KLQkJb3M9c3lzdjMKLQkJOzsKLQlzcGFy Yy0qIHwgKi1zdW4pCi0JCW9zPXN1bm9zNC4xLjEKLQkJOzsKLQlwcnUtKikKLQkJb3M9ZWxm Ci0JCTs7Ci0JKi1iZSkKLQkJb3M9YmVvcwotCQk7OwotCSotaWJtKQotCQlvcz1haXgKLQkJ OzsKLQkqLWtudXRoKQotCQlvcz1tbWl4d2FyZQotCQk7OwotCSotd2VjKQotCQlvcz1wcm9l bGYKLQkJOzsKLQkqLXdpbmJvbmQpCi0JCW9zPXByb2VsZgotCQk7OwotCSotb2tpKQotCQlv cz1wcm9lbGYKLQkJOzsKLQkqLWhwKQotCQlvcz1ocHV4Ci0JCTs7Ci0JKi1oaXRhY2hpKQot CQlvcz1oaXV4Ci0JCTs7Ci0JaTg2MC0qIHwgKi1hdHQgfCAqLW5jciB8ICotYWx0b3MgfCAq LW1vdG9yb2xhIHwgKi1jb252ZXJnZW50KQotCQlvcz1zeXN2Ci0JCTs7Ci0JKi1jYm0pCi0J CW9zPWFtaWdhb3MKLQkJOzsKLQkqLWRnKQotCQlvcz1kZ3V4Ci0JCTs7Ci0JKi1kb2xwaGlu KQotCQlvcz1zeXN2MwotCQk7OwotCW02OGstY2N1cikKLQkJb3M9cnR1Ci0JCTs7Ci0JbTg4 ay1vbXJvbiopCi0JCW9zPWx1bmEKLQkJOzsKLQkqLW5leHQpCi0JCW9zPW5leHRzdGVwCi0J CTs7Ci0JKi1zZXF1ZW50KQotCQlvcz1wdHgKLQkJOzsKLQkqLWNyZHMpCi0JCW9zPXVub3MK LQkJOzsKLQkqLW5zKQotCQlvcz1nZW5peAotCQk7OwotCWkzNzAtKikKLQkJb3M9bXZzCi0J CTs7Ci0JKi1nb3VsZCkKLQkJb3M9c3lzdgotCQk7OwotCSotaGlnaGxldmVsKQotCQlvcz1i c2QKLQkJOzsKLQkqLWVuY29yZSkKLQkJb3M9YnNkCi0JCTs7Ci0JKi1zZ2kpCi0JCW9zPWly aXgKLQkJOzsKLQkqLXNpZW1lbnMpCi0JCW9zPXN5c3Y0Ci0JCTs7Ci0JKi1tYXNzY29tcCkK LQkJb3M9cnR1Ci0JCTs7Ci0JZjMwWzAxXS1mdWppdHN1IHwgZjcwMC1mdWppdHN1KQotCQlv cz11eHB2Ci0JCTs7Ci0JKi1yb202OGspCi0JCW9zPWNvZmYKLQkJOzsKLQkqLSpidWcpCi0J CW9zPWNvZmYKLQkJOzsKLQkqLWFwcGxlKQotCQlvcz1tYWNvcwotCQk7OwotCSotYXRhcmkq KQotCQlvcz1taW50Ci0JCTs7Ci0JKi13cnMpCi0JCW9zPXZ4d29ya3MKLQkJOzsKLQkqKQot CQlvcz1ub25lCi0JCTs7Ci1lc2FjCi0KLWZpCi0KLSMgTm93LCB2YWxpZGF0ZSBvdXIgKHBv dGVudGlhbGx5IGZpeGVkLXVwKSBPUy4KLWNhc2UgJG9zIGluCi0JIyBTb21ldGltZXMgd2Ug ZG8gImtlcm5lbC1saWJjIiwgc28gdGhvc2UgbmVlZCB0byBjb3VudCBhcyBPU2VzLgotCW11 c2wqIHwgbmV3bGliKiB8IHJlbGliYyogfCB1Y2xpYmMqKQotCQk7OwotCSMgTGlrZXdpc2Ug Zm9yICJrZXJuZWwtYWJpIgotCWVhYmkqIHwgZ251ZWFiaSopCi0JCTs7Ci0JIyBWeFdvcmtz IHBhc3NlcyBleHRyYSBjcHUgaW5mbyBpbiB0aGUgNHRoIGZpbGVkLgotCXNpbWxpbnV4IHwg c2ltd2luZG93cyB8IHNwZSkKLQkJOzsKLQkjIE5vdyBhY2NlcHQgdGhlIGJhc2ljIHN5c3Rl bSB0eXBlcy4KLQkjIFRoZSBwb3J0YWJsZSBzeXN0ZW1zIGNvbWVzIGZpcnN0LgotCSMgRWFj aCBhbHRlcm5hdGl2ZSBNVVNUIGVuZCBpbiBhICogdG8gbWF0Y2ggYSB2ZXJzaW9uIG51bWJl ci4KLQlnbnUqIHwgYW5kcm9pZCogfCBic2QqIHwgbWFjaCogfCBtaW5peCogfCBnZW5peCog fCB1bHRyaXgqIHwgaXJpeCogXAotCSAgICAgfCAqdm1zKiB8IGVzaXgqIHwgYWl4KiB8IGNu ayogfCBzdW5vcyB8IHN1bm9zWzM0XSogXAotCSAgICAgfCBocHV4KiB8IHVub3MqIHwgb3Nm KiB8IGx1bmEqIHwgZGd1eCogfCBhdXJvcmF1eCogfCBzb2xhcmlzKiBcCi0JICAgICB8IHN5 bSogfCAgcGxhbjkqIHwgcHNwKiB8IHNpbSogfCB4cmF5KiB8IG9zNjhrKiB8IHY4OHIqIFwK LQkgICAgIHwgaGl1eCogfCBhYnVnIHwgbmFjbCogfCBuZXR3YXJlKiB8IHdpbmRvd3MqIFwK LQkgICAgIHwgb3M5KiB8IG1hY29zKiB8IG9zeCogfCBpb3MqIFwKLQkgICAgIHwgbXB3KiB8 IG1hZ2ljKiB8IG1taXh3YXJlKiB8IG1vbjk2MCogfCBsbmV3cyogXAotCSAgICAgfCBhbWln YW9zKiB8IGFtaWdhZG9zKiB8IG1zZG9zKiB8IG5ld3NvcyogfCB1bmljb3MqIHwgYW9mKiBc Ci0JICAgICB8IGFvcyogfCBhcm9zKiB8IGNsb3VkYWJpKiB8IHNvcnRpeCogfCB0d2l6emxl ciogXAotCSAgICAgfCBuaW5keSogfCB2eHNpbSogfCB2eHdvcmtzKiB8IGVibW9uKiB8IGht cyogfCBtdnMqIFwKLQkgICAgIHwgY2xpeCogfCByaXNjb3MqIHwgdW5pcGx1cyogfCBpcmlz KiB8IGlzYyogfCBydHUqIHwgeGVuaXgqIFwKLQkgICAgIHwgbWlyYnNkKiB8IG5ldGJzZCog fCBkaWNvcyogfCBvcGVuZWRpdGlvbiogfCBvc2UqIFwKLQkgICAgIHwgYml0cmlnKiB8IG9w ZW5ic2QqIHwgc2VjYnNkKiB8IHNvbGlkYnNkKiB8IGxpYmVydHlic2QqIHwgb3MxMDgqIFwK LQkgICAgIHwgZWtrb2JzZCogfCBmcmVlYnNkKiB8IHJpc2NpeCogfCBseW54b3MqIHwgb3M0 MDAqIFwKLQkgICAgIHwgYm9zeCogfCBuZXh0c3RlcCogfCBjeHV4KiB8IGFvdXQqIHwgZWxm KiB8IG9hYmkqIFwKLQkgICAgIHwgcHR4KiB8IGNvZmYqIHwgZWNvZmYqIHwgd2lubnQqIHwg ZG9tYWluKiB8IHZzdGEqIFwKLQkgICAgIHwgdWRpKiB8IGxpdGVzKiB8IGllZWUqIHwgZ28z MiogfCBhdXgqIHwgaGNvcyogXAotCSAgICAgfCBjaG9ydXNyZGIqIHwgY2VnY2MqIHwgZ2xp ZGl4KiB8IHNlcmVuaXR5KiBcCi0JICAgICB8IGN5Z3dpbiogfCBtc3lzKiB8IHBlKiB8IG1v c3MqIHwgcHJvZWxmKiB8IHJ0ZW1zKiBcCi0JICAgICB8IG1pZGlwaXgqIHwgbWluZ3czMiog fCBtaW5ndzY0KiB8IG1pbnQqIFwKLQkgICAgIHwgdXhwdiogfCBiZW9zKiB8IG1wZWl4KiB8 IHVkayogfCBtb3hpZWJveCogXAotCSAgICAgfCBpbnRlcml4KiB8IHV3aW4qIHwgbWtzKiB8 IHJoYXBzb2R5KiB8IGRhcndpbiogXAotCSAgICAgfCBvcGVuc3RlcCogfCBvc2tpdCogfCBj b25peCogfCBwdzMyKiB8IG5vbnN0b3B1eCogXAotCSAgICAgfCBzdG9ybS1jaGFvcyogfCB0 b3BzMTAqIHwgdGVuZXgqIHwgdG9wczIwKiB8IGl0cyogXAotCSAgICAgfCBvczIqIHwgdm9z KiB8IHBhbG1vcyogfCB1Y2xpbnV4KiB8IG51Y2xldXMqIHwgbW9ycGhvcyogXAotCSAgICAg fCBzY291dCogfCBzdXBlcnV4KiB8IHN5c3YqIHwgcnRtayogfCB0cGYqIHwgd2luZGlzcyog XAotCSAgICAgfCBwb3dlcm1heCogfCBkbml4KiB8IG54NiB8IG54NyB8IHNlaSogfCBkcmFn b25mbHkqIFwKLQkgICAgIHwgc2t5b3MqIHwgaGFpa3UqIHwgcmRvcyogfCB0b3BwZXJzKiB8 IGRyb3BzKiB8IGVzKiBcCi0JICAgICB8IG9uZWZzKiB8IHRpcnRvcyogfCBwaG9lbml4KiB8 IGZ1Y2hzaWEqIHwgcmVkb3gqIHwgYm1lKiBcCi0JICAgICB8IG1pZG5pZ2h0YnNkKiB8IGFt ZGhzYSogfCB1bmxlYXNoZWQqIHwgZW1zY3JpcHRlbiogfCB3YXNpKiBcCi0JICAgICB8IG5z ayogfCBwb3dlcnVuaXgqIHwgZ2Vub2RlKiB8IHp2bW9lKiB8IHFueCogfCBlbXgqIHwgemVw aHlyKiBcCi0JICAgICB8IGZpd2l4KiB8IG1saWJjKiApCi0JCTs7Ci0JIyBUaGlzIG9uZSBp cyBleHRyYSBzdHJpY3Qgd2l0aCBhbGxvd2VkIHZlcnNpb25zCi0Jc2NvMy4ydjIgfCBzY28z LjJ2WzQtOV0qIHwgc2NvNXY2KikKLQkJIyBEb24ndCBmb3JnZXQgdmVyc2lvbiBpZiBpdCBp cyAzLjJ2NCBvciBuZXdlci4KLQkJOzsKLQlub25lKQotCQk7OwotCWtlcm5lbCogKQotCQkj IFJlc3RyaWN0ZWQgZnVydGhlciBiZWxvdwotCQk7OwotCSopCi0JCWVjaG8gIkludmFsaWQg Y29uZmlndXJhdGlvbiAnJDEnOiBPUyAnJG9zJyBub3QgcmVjb2duaXplZCIgMT4mMgotCQll eGl0IDEKLQkJOzsKLWVzYWMKLQotIyBBcyBhIGZpbmFsIHN0ZXAgZm9yIE9TLXJlbGF0ZWQg dGhpbmdzLCB2YWxpZGF0ZSB0aGUgT1Mta2VybmVsIGNvbWJpbmF0aW9uCi0jIChnaXZlbiBh IHZhbGlkIE9TKSwgaWYgdGhlcmUgaXMgYSBrZXJuZWwuCi1jYXNlICRrZXJuZWwtJG9zIGlu Ci0JbGludXgtZ251KiB8IGxpbnV4LWRpZXRsaWJjKiB8IGxpbnV4LWFuZHJvaWQqIHwgbGlu dXgtbmV3bGliKiBcCi0JCSAgIHwgbGludXgtbXVzbCogfCBsaW51eC1yZWxpYmMqIHwgbGlu dXgtdWNsaWJjKiB8IGxpbnV4LW1saWJjKiApCi0JCTs7Ci0JdWNsaW51eC11Y2xpYmMqICkK LQkJOzsKLQltYW5hZ2FybS1tbGliYyogfCBtYW5hZ2FybS1rZXJuZWwqICkKLQkJOzsKLQkt ZGlldGxpYmMqIHwgLW5ld2xpYiogfCAtbXVzbCogfCAtcmVsaWJjKiB8IC11Y2xpYmMqIHwg LW1saWJjKiApCi0JCSMgVGhlc2UgYXJlIGp1c3QgbGliYyBpbXBsZW1lbnRhdGlvbnMsIG5v dCBhY3R1YWwgT1NlcywgYW5kIHRodXMKLQkJIyByZXF1aXJlIGEga2VybmVsLgotCQllY2hv ICJJbnZhbGlkIGNvbmZpZ3VyYXRpb24gJyQxJzogbGliYyAnJG9zJyBuZWVkcyBleHBsaWNp dCBrZXJuZWwuIiAxPiYyCi0JCWV4aXQgMQotCQk7OwotCS1rZXJuZWwqICkKLQkJZWNobyAi SW52YWxpZCBjb25maWd1cmF0aW9uICckMSc6ICckb3MnIG5lZWRzIGV4cGxpY2l0IGtlcm5l bC4iIDE+JjIKLQkJZXhpdCAxCi0JCTs7Ci0JKi1rZXJuZWwqICkKLQkJZWNobyAiSW52YWxp ZCBjb25maWd1cmF0aW9uICckMSc6ICcka2VybmVsJyBkb2VzIG5vdCBzdXBwb3J0ICckb3Mn LiIgMT4mMgotCQlleGl0IDEKLQkJOzsKLQlrZnJlZWJzZCotZ251KiB8IGtvcGVuc29sYXJp cyotZ251KikKLQkJOzsKLQl2eHdvcmtzLXNpbWxpbnV4IHwgdnh3b3Jrcy1zaW13aW5kb3dz IHwgdnh3b3Jrcy1zcGUpCi0JCTs7Ci0JbnRvLXFueCopCi0JCTs7Ci0Jb3MyLWVteCkKLQkJ OzsKLQkqLWVhYmkqIHwgKi1nbnVlYWJpKikKLQkJOzsKLQktKikKLQkJIyBCbGFuayBrZXJu ZWwgd2l0aCByZWFsIE9TIGlzIGFsd2F5cyBmaW5lLgotCQk7OwotCSotKikKLQkJZWNobyAi SW52YWxpZCBjb25maWd1cmF0aW9uICckMSc6IEtlcm5lbCAnJGtlcm5lbCcgbm90IGtub3du IHRvIHdvcmsgd2l0aCBPUyAnJG9zJy4iIDE+JjIKLQkJZXhpdCAxCi0JCTs7Ci1lc2FjCi0K LSMgSGVyZSB3ZSBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2Uga25vdyB0aGUgb3MsIGFuZCB0 aGUgQ1BVIHR5cGUsIGJ1dCBub3QgdGhlCi0jIG1hbnVmYWN0dXJlci4gIFdlIHBpY2sgdGhl IGxvZ2ljYWwgbWFudWZhY3R1cmVyLgotY2FzZSAkdmVuZG9yIGluCi0JdW5rbm93bikKLQkJ Y2FzZSAkY3B1LSRvcyBpbgotCQkJKi1yaXNjaXgqKQotCQkJCXZlbmRvcj1hY29ybgotCQkJ CTs7Ci0JCQkqLXN1bm9zKikKLQkJCQl2ZW5kb3I9c3VuCi0JCQkJOzsKLQkJCSotY25rKiB8 ICotYWl4KikKLQkJCQl2ZW5kb3I9aWJtCi0JCQkJOzsKLQkJCSotYmVvcyopCi0JCQkJdmVu ZG9yPWJlCi0JCQkJOzsKLQkJCSotaHB1eCopCi0JCQkJdmVuZG9yPWhwCi0JCQkJOzsKLQkJ CSotbXBlaXgqKQotCQkJCXZlbmRvcj1ocAotCQkJCTs7Ci0JCQkqLWhpdXgqKQotCQkJCXZl bmRvcj1oaXRhY2hpCi0JCQkJOzsKLQkJCSotdW5vcyopCi0JCQkJdmVuZG9yPWNyZHMKLQkJ CQk7OwotCQkJKi1kZ3V4KikKLQkJCQl2ZW5kb3I9ZGcKLQkJCQk7OwotCQkJKi1sdW5hKikK LQkJCQl2ZW5kb3I9b21yb24KLQkJCQk7OwotCQkJKi1nZW5peCopCi0JCQkJdmVuZG9yPW5z Ci0JCQkJOzsKLQkJCSotY2xpeCopCi0JCQkJdmVuZG9yPWludGVyZ3JhcGgKLQkJCQk7Owot CQkJKi1tdnMqIHwgKi1vcGVuZWQqKQotCQkJCXZlbmRvcj1pYm0KLQkJCQk7OwotCQkJKi1v czQwMCopCi0JCQkJdmVuZG9yPWlibQotCQkJCTs7Ci0JCQlzMzkwLSogfCBzMzkweC0qKQot CQkJCXZlbmRvcj1pYm0KLQkJCQk7OwotCQkJKi1wdHgqKQotCQkJCXZlbmRvcj1zZXF1ZW50 Ci0JCQkJOzsKLQkJCSotdHBmKikKLQkJCQl2ZW5kb3I9aWJtCi0JCQkJOzsKLQkJCSotdnhz aW0qIHwgKi12eHdvcmtzKiB8ICotd2luZGlzcyopCi0JCQkJdmVuZG9yPXdycwotCQkJCTs7 Ci0JCQkqLWF1eCopCi0JCQkJdmVuZG9yPWFwcGxlCi0JCQkJOzsKLQkJCSotaG1zKikKLQkJ CQl2ZW5kb3I9aGl0YWNoaQotCQkJCTs7Ci0JCQkqLW1wdyogfCAqLW1hY29zKikKLQkJCQl2 ZW5kb3I9YXBwbGUKLQkJCQk7OwotCQkJKi0qbWludCB8ICotbWludFswLTldKiB8ICotKk1p TlQgfCAqLU1pTlRbMC05XSopCi0JCQkJdmVuZG9yPWF0YXJpCi0JCQkJOzsKLQkJCSotdm9z KikKLQkJCQl2ZW5kb3I9c3RyYXR1cwotCQkJCTs7Ci0JCWVzYWMKLQkJOzsKLWVzYWMKLQot ZWNobyAiJGNwdS0kdmVuZG9yLSR7a2VybmVsOiska2VybmVsLX0kb3MiCi1leGl0Ci0KLSMg TG9jYWwgdmFyaWFibGVzOgotIyBldmFsOiAoYWRkLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sg J3RpbWUtc3RhbXApCi0jIHRpbWUtc3RhbXAtc3RhcnQ6ICJ0aW1lc3RhbXA9JyIKLSMgdGlt ZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkIgotIyB0aW1lLXN0YW1wLWVuZDogIici Ci0jIEVuZDoKZGlmZiAtLWdpdCBhL2V4ZWMvaW5zdGFsbC1zaCBiL2V4ZWMvaW5zdGFsbC1z aApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZTA0NmVmZGYwYTMuLjAwMDAwMDAw MDAwCi0tLSBhL2V4ZWMvaW5zdGFsbC1zaAorKysgL2Rldi9udWxsCkBAIC0xLDU0MSArMCww IEBACi0jIS91c3IvYmluL3NoCi0jIGluc3RhbGwgLSBpbnN0YWxsIGEgcHJvZ3JhbSwgc2Ny aXB0LCBvciBkYXRhZmlsZQotCi1zY3JpcHR2ZXJzaW9uPTIwMjAtMTEtMTQuMDE7ICMgVVRD Ci0KLSMgVGhpcyBvcmlnaW5hdGVzIGZyb20gWDExUjUgKG1pdC91dGlsL3NjcmlwdHMvaW5z dGFsbC5zaCksIHdoaWNoIHdhcwotIyBsYXRlciByZWxlYXNlZCBpbiBYMTFSNiAoeGMvY29u ZmlnL3V0aWwvaW5zdGFsbC5zaCkgd2l0aCB0aGUKLSMgZm9sbG93aW5nIGNvcHlyaWdodCBh bmQgbGljZW5zZS4KLSMKLSMgQ29weXJpZ2h0IChDKSAxOTk0IFggQ29uc29ydGl1bQotIwot IyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55 IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5Ci0jIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29j aWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0bwotIyBkZWFs IGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91 dCBsaW1pdGF0aW9uIHRoZQotIyByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdl LCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3IKLSMgc2VsbCBjb3Bp ZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUg U29mdHdhcmUgaXMKLSMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xs b3dpbmcgY29uZGl0aW9uczoKLSMKLSMgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5k IHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KLSMgYWxsIGNv cGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuCi0jCi0jIFRI RSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFO WSBLSU5ELCBFWFBSRVNTIE9SCi0jIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlU RUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLAotIyBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZF TlQgU0hBTEwgVEhFCi0jIFggQ09OU09SVElVTSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwg REFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSMgQU4gQUNUSU9OIE9G IENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1Ig SU4gQ09OTkVDLQotIyBUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RI RVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgotIwotIyBFeGNlcHQgYXMgY29udGFpbmVk IGluIHRoaXMgbm90aWNlLCB0aGUgbmFtZSBvZiB0aGUgWCBDb25zb3J0aXVtIHNoYWxsIG5v dAotIyBiZSB1c2VkIGluIGFkdmVydGlzaW5nIG9yIG90aGVyd2lzZSB0byBwcm9tb3RlIHRo ZSBzYWxlLCB1c2Ugb3Igb3RoZXIgZGVhbC0KLSMgaW5ncyBpbiB0aGlzIFNvZnR3YXJlIHdp dGhvdXQgcHJpb3Igd3JpdHRlbiBhdXRob3JpemF0aW9uIGZyb20gdGhlIFggQ29uc29yLQot IyB0aXVtLgotIwotIwotIyBGU0YgY2hhbmdlcyB0byB0aGlzIGZpbGUgYXJlIGluIHRoZSBw dWJsaWMgZG9tYWluLgotIwotIyBDYWxsaW5nIHRoaXMgc2NyaXB0IGluc3RhbGwtc2ggaXMg cHJlZmVycmVkIG92ZXIgaW5zdGFsbC5zaCwgdG8gcHJldmVudAotIyAnbWFrZScgaW1wbGlj aXQgcnVsZXMgZnJvbSBjcmVhdGluZyBhIGZpbGUgY2FsbGVkIGluc3RhbGwgZnJvbSBpdAot IyB3aGVuIHRoZXJlIGlzIG5vIE1ha2VmaWxlLgotIwotIyBUaGlzIHNjcmlwdCBpcyBjb21w YXRpYmxlIHdpdGggdGhlIEJTRCBpbnN0YWxsIHNjcmlwdCwgYnV0IHdhcyB3cml0dGVuCi0j IGZyb20gc2NyYXRjaC4KLQotdGFiPScJJwotbmw9JwotJwotSUZTPSIgJHRhYiRubCIKLQot IyBTZXQgRE9JVFBST0cgdG8gImVjaG8iIHRvIHRlc3QgdGhpcyBzY3JpcHQuCi0KLWRvaXQ9 JHtET0lUUFJPRy19Ci1kb2l0X2V4ZWM9JHtkb2l0Oi1leGVjfQotCi0jIFB1dCBpbiBhYnNv bHV0ZSBmaWxlIG5hbWVzIGlmIHlvdSBkb24ndCBoYXZlIHRoZW0gaW4geW91ciBwYXRoOwot IyBvciB1c2UgZW52aXJvbm1lbnQgdmFycy4KLQotY2hncnBwcm9nPSR7Q0hHUlBQUk9HLWNo Z3JwfQotY2htb2Rwcm9nPSR7Q0hNT0RQUk9HLWNobW9kfQotY2hvd25wcm9nPSR7Q0hPV05Q Uk9HLWNob3dufQotY21wcHJvZz0ke0NNUFBST0ctY21wfQotY3Bwcm9nPSR7Q1BQUk9HLWNw fQotbWtkaXJwcm9nPSR7TUtESVJQUk9HLW1rZGlyfQotbXZwcm9nPSR7TVZQUk9HLW12fQot cm1wcm9nPSR7Uk1QUk9HLXJtfQotc3RyaXBwcm9nPSR7U1RSSVBQUk9HLXN0cmlwfQotCi1w b3NpeF9ta2Rpcj0KLQotIyBEZXNpcmVkIG1vZGUgb2YgaW5zdGFsbGVkIGZpbGUuCi1tb2Rl PTA3NTUKLQotIyBDcmVhdGUgZGlycyAoaW5jbHVkaW5nIGludGVybWVkaWF0ZSBkaXJzKSB1 c2luZyBtb2RlIDc1NS4KLSMgVGhpcyBpcyBsaWtlIEdOVSAnaW5zdGFsbCcgYXMgb2YgY29y ZXV0aWxzIDguMzIgKDIwMjApLgotbWtkaXJfdW1hc2s9MjIKLQotYmFja3Vwc3VmZml4PQot Y2hncnBjbWQ9Ci1jaG1vZGNtZD0kY2htb2Rwcm9nCi1jaG93bmNtZD0KLW12Y21kPSRtdnBy b2cKLXJtY21kPSIkcm1wcm9nIC1mIgotc3RyaXBjbWQ9Ci0KLXNyYz0KLWRzdD0KLWRpcl9h cmc9Ci1kc3RfYXJnPQotCi1jb3B5X29uX2NoYW5nZT1mYWxzZQotaXNfdGFyZ2V0X2FfZGly ZWN0b3J5PXBvc3NpYmx5Ci0KLXVzYWdlPSJcCi1Vc2FnZTogJDAgW09QVElPTl0uLi4gWy1U XSBTUkNGSUxFIERTVEZJTEUKLSAgIG9yOiAkMCBbT1BUSU9OXS4uLiBTUkNGSUxFUy4uLiBE SVJFQ1RPUlkKLSAgIG9yOiAkMCBbT1BUSU9OXS4uLiAtdCBESVJFQ1RPUlkgU1JDRklMRVMu Li4KLSAgIG9yOiAkMCBbT1BUSU9OXS4uLiAtZCBESVJFQ1RPUklFUy4uLgotCi1JbiB0aGUg MXN0IGZvcm0sIGNvcHkgU1JDRklMRSB0byBEU1RGSUxFLgotSW4gdGhlIDJuZCBhbmQgM3Jk LCBjb3B5IGFsbCBTUkNGSUxFUyB0byBESVJFQ1RPUlkuCi1JbiB0aGUgNHRoLCBjcmVhdGUg RElSRUNUT1JJRVMuCi0KLU9wdGlvbnM6Ci0gICAgIC0taGVscCAgICAgZGlzcGxheSB0aGlz IGhlbHAgYW5kIGV4aXQuCi0gICAgIC0tdmVyc2lvbiAgZGlzcGxheSB2ZXJzaW9uIGluZm8g YW5kIGV4aXQuCi0KLSAgLWMgICAgICAgICAgICAoaWdub3JlZCkKLSAgLUMgICAgICAgICAg ICBpbnN0YWxsIG9ubHkgaWYgZGlmZmVyZW50IChwcmVzZXJ2ZSBkYXRhIG1vZGlmaWNhdGlv biB0aW1lKQotICAtZCAgICAgICAgICAgIGNyZWF0ZSBkaXJlY3RvcmllcyBpbnN0ZWFkIG9m IGluc3RhbGxpbmcgZmlsZXMuCi0gIC1nIEdST1VQICAgICAgJGNoZ3JwcHJvZyBpbnN0YWxs ZWQgZmlsZXMgdG8gR1JPVVAuCi0gIC1tIE1PREUgICAgICAgJGNobW9kcHJvZyBpbnN0YWxs ZWQgZmlsZXMgdG8gTU9ERS4KLSAgLW8gVVNFUiAgICAgICAkY2hvd25wcm9nIGluc3RhbGxl ZCBmaWxlcyB0byBVU0VSLgotICAtcCAgICAgICAgICAgIHBhc3MgLXAgdG8gJGNwcHJvZy4K LSAgLXMgICAgICAgICAgICAkc3RyaXBwcm9nIGluc3RhbGxlZCBmaWxlcy4KLSAgLVMgU1VG RklYICAgICBhdHRlbXB0IHRvIGJhY2sgdXAgZXhpc3RpbmcgZmlsZXMsIHdpdGggc3VmZml4 IFNVRkZJWC4KLSAgLXQgRElSRUNUT1JZICBpbnN0YWxsIGludG8gRElSRUNUT1JZLgotICAt VCAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvciBpZiBEU1RGSUxFIGlzIGEgZGlyZWN0b3J5 LgotCi1FbnZpcm9ubWVudCB2YXJpYWJsZXMgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgY29tbWFu ZHM6Ci0gIENIR1JQUFJPRyBDSE1PRFBST0cgQ0hPV05QUk9HIENNUFBST0cgQ1BQUk9HIE1L RElSUFJPRyBNVlBST0cKLSAgUk1QUk9HIFNUUklQUFJPRwotCi1CeSBkZWZhdWx0LCBybSBp cyBpbnZva2VkIHdpdGggLWY7IHdoZW4gb3ZlcnJpZGRlbiB3aXRoIFJNUFJPRywKLWl0J3Mg dXAgdG8geW91IHRvIHNwZWNpZnkgLWYgaWYgeW91IHdhbnQgaXQuCi0KLUlmIC1TIGlzIG5v dCBzcGVjaWZpZWQsIG5vIGJhY2t1cHMgYXJlIGF0dGVtcHRlZC4KLQotRW1haWwgYnVnIHJl cG9ydHMgdG8gYnVnLWF1dG9tYWtlQGdudS5vcmcuCi1BdXRvbWFrZSBob21lIHBhZ2U6IGh0 dHBzOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYXV0b21ha2UvCi0iCi0KLXdoaWxlIHRlc3Qg JCMgLW5lIDA7IGRvCi0gIGNhc2UgJDEgaW4KLSAgICAtYykgOzsKLQotICAgIC1DKSBjb3B5 X29uX2NoYW5nZT10cnVlOzsKLQotICAgIC1kKSBkaXJfYXJnPXRydWU7OwotCi0gICAgLWcp IGNoZ3JwY21kPSIkY2hncnBwcm9nICQyIgotICAgICAgICBzaGlmdDs7Ci0KLSAgICAtLWhl bHApIGVjaG8gIiR1c2FnZSI7IGV4aXQgJD87OwotCi0gICAgLW0pIG1vZGU9JDIKLSAgICAg ICAgY2FzZSAkbW9kZSBpbgotICAgICAgICAgIConICcqIHwgKiIkdGFiIiogfCAqIiRubCIq IHwgKicqJyogfCAqJz8nKiB8IConWycqKQotICAgICAgICAgICAgZWNobyAiJDA6IGludmFs aWQgbW9kZTogJG1vZGUiID4mMgotICAgICAgICAgICAgZXhpdCAxOzsKLSAgICAgICAgZXNh YwotICAgICAgICBzaGlmdDs7Ci0KLSAgICAtbykgY2hvd25jbWQ9IiRjaG93bnByb2cgJDIi Ci0gICAgICAgIHNoaWZ0OzsKLQotICAgIC1wKSBjcHByb2c9IiRjcHByb2cgLXAiOzsKLQot ICAgIC1zKSBzdHJpcGNtZD0kc3RyaXBwcm9nOzsKLQotICAgIC1TKSBiYWNrdXBzdWZmaXg9 IiQyIgotICAgICAgICBzaGlmdDs7Ci0KLSAgICAtdCkKLSAgICAgICAgaXNfdGFyZ2V0X2Ff ZGlyZWN0b3J5PWFsd2F5cwotICAgICAgICBkc3RfYXJnPSQyCi0gICAgICAgICMgUHJvdGVj dCBuYW1lcyBwcm9ibGVtYXRpYyBmb3IgJ3Rlc3QnIGFuZCBvdGhlciB1dGlsaXRpZXMuCi0g ICAgICAgIGNhc2UgJGRzdF9hcmcgaW4KLSAgICAgICAgICAtKiB8IFs9XChcKSFdKSBkc3Rf YXJnPS4vJGRzdF9hcmc7OwotICAgICAgICBlc2FjCi0gICAgICAgIHNoaWZ0OzsKLQotICAg IC1UKSBpc190YXJnZXRfYV9kaXJlY3Rvcnk9bmV2ZXI7OwotCi0gICAgLS12ZXJzaW9uKSBl Y2hvICIkMCAkc2NyaXB0dmVyc2lvbiI7IGV4aXQgJD87OwotCi0gICAgLS0pIHNoaWZ0Ci0g ICAgICAgIGJyZWFrOzsKLQotICAgIC0qKSBlY2hvICIkMDogaW52YWxpZCBvcHRpb246ICQx IiA+JjIKLSAgICAgICAgZXhpdCAxOzsKLQotICAgICopICBicmVhazs7Ci0gIGVzYWMKLSAg c2hpZnQKLWRvbmUKLQotIyBXZSBhbGxvdyB0aGUgdXNlIG9mIG9wdGlvbnMgLWQgYW5kIC1U IHRvZ2V0aGVyLCBieSBtYWtpbmcgLWQKLSMgdGFrZSB0aGUgcHJlY2VkZW5jZTsgdGhpcyBp cyBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIEdOVSBpbnN0YWxsLgotCi1pZiB0ZXN0IC1uICIk ZGlyX2FyZyI7IHRoZW4KLSAgaWYgdGVzdCAtbiAiJGRzdF9hcmciOyB0aGVuCi0gICAgZWNo byAiJDA6IHRhcmdldCBkaXJlY3Rvcnkgbm90IGFsbG93ZWQgd2hlbiBpbnN0YWxsaW5nIGEg ZGlyZWN0b3J5LiIgPiYyCi0gICAgZXhpdCAxCi0gIGZpCi1maQotCi1pZiB0ZXN0ICQjIC1u ZSAwICYmIHRlc3QgLXogIiRkaXJfYXJnJGRzdF9hcmciOyB0aGVuCi0gICMgV2hlbiAtZCBp cyB1c2VkLCBhbGwgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgZGlyZWN0b3JpZXMgdG8gY3Jl YXRlLgotICAjIFdoZW4gLXQgaXMgdXNlZCwgdGhlIGRlc3RpbmF0aW9uIGlzIGFscmVhZHkg c3BlY2lmaWVkLgotICAjIE90aGVyd2lzZSwgdGhlIGxhc3QgYXJndW1lbnQgaXMgdGhlIGRl c3RpbmF0aW9uLiAgUmVtb3ZlIGl0IGZyb20gJEAuCi0gIGZvciBhcmcKLSAgZG8KLSAgICBp ZiB0ZXN0IC1uICIkZHN0X2FyZyI7IHRoZW4KLSAgICAgICMgJEAgaXMgbm90IGVtcHR5OiBp dCBjb250YWlucyBhdCBsZWFzdCAkYXJnLgotICAgICAgc2V0IGZub3JkICIkQCIgIiRkc3Rf YXJnIgotICAgICAgc2hpZnQgIyBmbm9yZAotICAgIGZpCi0gICAgc2hpZnQgIyBhcmcKLSAg ICBkc3RfYXJnPSRhcmcKLSAgICAjIFByb3RlY3QgbmFtZXMgcHJvYmxlbWF0aWMgZm9yICd0 ZXN0JyBhbmQgb3RoZXIgdXRpbGl0aWVzLgotICAgIGNhc2UgJGRzdF9hcmcgaW4KLSAgICAg IC0qIHwgWz1cKFwpIV0pIGRzdF9hcmc9Li8kZHN0X2FyZzs7Ci0gICAgZXNhYwotICBkb25l Ci1maQotCi1pZiB0ZXN0ICQjIC1lcSAwOyB0aGVuCi0gIGlmIHRlc3QgLXogIiRkaXJfYXJn IjsgdGhlbgotICAgIGVjaG8gIiQwOiBubyBpbnB1dCBmaWxlIHNwZWNpZmllZC4iID4mMgot ICAgIGV4aXQgMQotICBmaQotICAjIEl0J3MgT0sgdG8gY2FsbCAnaW5zdGFsbC1zaCAtZCcg d2l0aG91dCBhcmd1bWVudC4KLSAgIyBUaGlzIGNhbiBoYXBwZW4gd2hlbiBjcmVhdGluZyBj b25kaXRpb25hbCBkaXJlY3Rvcmllcy4KLSAgZXhpdCAwCi1maQotCi1pZiB0ZXN0IC16ICIk ZGlyX2FyZyI7IHRoZW4KLSAgaWYgdGVzdCAkIyAtZ3QgMSB8fCB0ZXN0ICIkaXNfdGFyZ2V0 X2FfZGlyZWN0b3J5IiA9IGFsd2F5czsgdGhlbgotICAgIGlmIHRlc3QgISAtZCAiJGRzdF9h cmciOyB0aGVuCi0gICAgICBlY2hvICIkMDogJGRzdF9hcmc6IElzIG5vdCBhIGRpcmVjdG9y eS4iID4mMgotICAgICAgZXhpdCAxCi0gICAgZmkKLSAgZmkKLWZpCi0KLWlmIHRlc3QgLXog IiRkaXJfYXJnIjsgdGhlbgotICBkb19leGl0PScoZXhpdCAkcmV0KTsgZXhpdCAkcmV0Jwot ICB0cmFwICJyZXQ9MTI5OyAkZG9fZXhpdCIgMQotICB0cmFwICJyZXQ9MTMwOyAkZG9fZXhp dCIgMgotICB0cmFwICJyZXQ9MTQxOyAkZG9fZXhpdCIgMTMKLSAgdHJhcCAicmV0PTE0Mzsg JGRvX2V4aXQiIDE1Ci0KLSAgIyBTZXQgdW1hc2sgc28gYXMgbm90IHRvIGNyZWF0ZSB0ZW1w cyB3aXRoIHRvby1nZW5lcm91cyBtb2Rlcy4KLSAgIyBIb3dldmVyLCAnc3RyaXAnIHJlcXVp cmVzIGJvdGggcmVhZCBhbmQgd3JpdGUgYWNjZXNzIHRvIHRlbXBzLgotICBjYXNlICRtb2Rl IGluCi0gICAgIyBPcHRpbWl6ZSBjb21tb24gY2FzZXMuCi0gICAgKjY0NCkgY3BfdW1hc2s9 MTMzOzsKLSAgICAqNzU1KSBjcF91bWFzaz0yMjs7Ci0KLSAgICAqWzAtN10pCi0gICAgICBp ZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCi0gICAgICAgIHVfcGx1c19ydz0KLSAgICAg IGVsc2UKLSAgICAgICAgdV9wbHVzX3J3PSclIDIwMCcKLSAgICAgIGZpCi0gICAgICBjcF91 bWFzaz1gZXhwciAnKCcgNzc3IC0gJG1vZGUgJSAxMDAwICcpJyAkdV9wbHVzX3J3YDs7Ci0g ICAgKikKLSAgICAgIGlmIHRlc3QgLXogIiRzdHJpcGNtZCI7IHRoZW4KLSAgICAgICAgdV9w bHVzX3J3PQotICAgICAgZWxzZQotICAgICAgICB1X3BsdXNfcnc9LHUrcncKLSAgICAgIGZp Ci0gICAgICBjcF91bWFzaz0kbW9kZSR1X3BsdXNfcnc7OwotICBlc2FjCi1maQotCi1mb3Ig c3JjCi1kbwotICAjIFByb3RlY3QgbmFtZXMgcHJvYmxlbWF0aWMgZm9yICd0ZXN0JyBhbmQg b3RoZXIgdXRpbGl0aWVzLgotICBjYXNlICRzcmMgaW4KLSAgICAtKiB8IFs9XChcKSFdKSBz cmM9Li8kc3JjOzsKLSAgZXNhYwotCi0gIGlmIHRlc3QgLW4gIiRkaXJfYXJnIjsgdGhlbgot ICAgIGRzdD0kc3JjCi0gICAgZHN0ZGlyPSRkc3QKLSAgICB0ZXN0IC1kICIkZHN0ZGlyIgot ICAgIGRzdGRpcl9zdGF0dXM9JD8KLSAgICAjIERvbid0IGNob3duIGRpcmVjdG9yaWVzIHRo YXQgYWxyZWFkeSBleGlzdC4KLSAgICBpZiB0ZXN0ICRkc3RkaXJfc3RhdHVzID0gMDsgdGhl bgotICAgICAgY2hvd25jbWQ9IiIKLSAgICBmaQotICBlbHNlCi0KLSAgICAjIFdhaXRpbmcg Zm9yIHRoaXMgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlICIkY3Bwcm9nICRzcmMgJGRzdHRtcCIg Y29tbWFuZAotICAgICMgbWlnaHQgY2F1c2UgZGlyZWN0b3JpZXMgdG8gYmUgY3JlYXRlZCwg d2hpY2ggd291bGQgYmUgZXNwZWNpYWxseSBiYWQKLSAgICAjIGlmICRzcmMgKGFuZCB0aHVz ICRkc3R0bXApIGNvbnRhaW5zICcqJy4KLSAgICBpZiB0ZXN0ICEgLWYgIiRzcmMiICYmIHRl c3QgISAtZCAiJHNyYyI7IHRoZW4KLSAgICAgIGVjaG8gIiQwOiAkc3JjIGRvZXMgbm90IGV4 aXN0LiIgPiYyCi0gICAgICBleGl0IDEKLSAgICBmaQotCi0gICAgaWYgdGVzdCAteiAiJGRz dF9hcmciOyB0aGVuCi0gICAgICBlY2hvICIkMDogbm8gZGVzdGluYXRpb24gc3BlY2lmaWVk LiIgPiYyCi0gICAgICBleGl0IDEKLSAgICBmaQotICAgIGRzdD0kZHN0X2FyZwotCi0gICAg IyBJZiBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeSwgYXBwZW5kIHRoZSBpbnB1dCBmaWxl bmFtZS4KLSAgICBpZiB0ZXN0IC1kICIkZHN0IjsgdGhlbgotICAgICAgaWYgdGVzdCAiJGlz X3RhcmdldF9hX2RpcmVjdG9yeSIgPSBuZXZlcjsgdGhlbgotICAgICAgICBlY2hvICIkMDog JGRzdF9hcmc6IElzIGEgZGlyZWN0b3J5IiA+JjIKLSAgICAgICAgZXhpdCAxCi0gICAgICBm aQotICAgICAgZHN0ZGlyPSRkc3QKLSAgICAgIGRzdGJhc2U9YGJhc2VuYW1lICIkc3JjImAK LSAgICAgIGNhc2UgJGRzdCBpbgotCSovKSBkc3Q9JGRzdCRkc3RiYXNlOzsKLQkqKSAgZHN0 PSRkc3QvJGRzdGJhc2U7OwotICAgICAgZXNhYwotICAgICAgZHN0ZGlyX3N0YXR1cz0wCi0g ICAgZWxzZQotICAgICAgZHN0ZGlyPWBkaXJuYW1lICIkZHN0ImAKLSAgICAgIHRlc3QgLWQg IiRkc3RkaXIiCi0gICAgICBkc3RkaXJfc3RhdHVzPSQ/Ci0gICAgZmkKLSAgZmkKLQotICBj YXNlICRkc3RkaXIgaW4KLSAgICAqLykgZHN0ZGlyc2xhc2g9JGRzdGRpcjs7Ci0gICAgKikg IGRzdGRpcnNsYXNoPSRkc3RkaXIvOzsKLSAgZXNhYwotCi0gIG9ic29sZXRlX21rZGlyX3Vz ZWQ9ZmFsc2UKLQotICBpZiB0ZXN0ICRkc3RkaXJfc3RhdHVzICE9IDA7IHRoZW4KLSAgICBj YXNlICRwb3NpeF9ta2RpciBpbgotICAgICAgJycpCi0gICAgICAgICMgV2l0aCAtZCwgY3Jl YXRlIHRoZSBuZXcgZGlyZWN0b3J5IHdpdGggdGhlIHVzZXItc3BlY2lmaWVkIG1vZGUuCi0g ICAgICAgICMgT3RoZXJ3aXNlLCByZWx5IG9uICRta2Rpcl91bWFzay4KLSAgICAgICAgaWYg dGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCi0gICAgICAgICAgbWtkaXJfbW9kZT0tbSRtb2Rl Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBta2Rpcl9tb2RlPQotICAgICAgICBmaQotCi0g ICAgICAgIHBvc2l4X21rZGlyPWZhbHNlCi0JIyBUaGUgJFJBTkRPTSB2YXJpYWJsZSBpcyBu b3QgcG9ydGFibGUgKGUuZy4sIGRhc2gpLiAgVXNlIGl0Ci0JIyBoZXJlIGhvd2V2ZXIgd2hl biBwb3NzaWJsZSBqdXN0IHRvIGxvd2VyIGNvbGxpc2lvbiBjaGFuY2UuCi0JdG1wZGlyPSR7 VE1QRElSLS90bXB9L2lucyRSQU5ET00tJCQKLQotCXRyYXAgJwotCSAgcmV0PSQ/Ci0JICBy bWRpciAiJHRtcGRpci9hL2IiICIkdG1wZGlyL2EiICIkdG1wZGlyIiAyPi9kZXYvbnVsbAot CSAgZXhpdCAkcmV0Ci0JJyAwCi0KLQkjIEJlY2F1c2UgIm1rZGlyIC1wIiBmb2xsb3dzIGV4 aXN0aW5nIHN5bWxpbmtzIGFuZCB3ZSBsaWtlbHkgd29yawotCSMgZGlyZWN0bHkgaW4gd29y bGQtd3JpdGVhYmxlIC90bXAsIG1ha2Ugc3VyZSB0aGF0IHRoZSAnJHRtcGRpcicKLQkjIGRp cmVjdG9yeSBpcyBzdWNjZXNzZnVsbHkgY3JlYXRlZCBmaXJzdCBiZWZvcmUgd2UgYWN0dWFs bHkgdGVzdAotCSMgJ21rZGlyIC1wJy4KLQlpZiAodW1hc2sgJG1rZGlyX3VtYXNrICYmCi0J ICAgICRta2RpcnByb2cgJG1rZGlyX21vZGUgIiR0bXBkaXIiICYmCi0JICAgIGV4ZWMgJG1r ZGlycHJvZyAkbWtkaXJfbW9kZSAtcCAtLSAiJHRtcGRpci9hL2IiKSA+L2Rldi9udWxsIDI+ JjEKLQl0aGVuCi0JICBpZiB0ZXN0IC16ICIkZGlyX2FyZyIgfHwgewotCSAgICAgICAjIENo ZWNrIGZvciBQT1NJWCBpbmNvbXBhdGliaWxpdGllcyB3aXRoIC1tLgotCSAgICAgICAjIEhQ LVVYIDExLjIzIGFuZCBJUklYIDYuNSBta2RpciAtbSAtcCBzZXRzIGdyb3VwLSBvcgotCSAg ICAgICAjIG90aGVyLXdyaXRhYmxlIGJpdCBvZiBwYXJlbnQgZGlyZWN0b3J5IHdoZW4gaXQg c2hvdWxkbid0LgotCSAgICAgICAjIEZyZWVCU0QgNi4xIG1rZGlyIC1tIC1wIHNldHMgbW9k ZSBvZiBleGlzdGluZyBkaXJlY3RvcnkuCi0JICAgICAgIHRlc3RfdG1wZGlyPSIkdG1wZGly L2EiCi0JICAgICAgIGxzX2xkX3RtcGRpcj1gbHMgLWxkICIkdGVzdF90bXBkaXIiYAotCSAg ICAgICBjYXNlICRsc19sZF90bXBkaXIgaW4KLQkJIGQ/Pz8/LT9yLSopIGRpZmZlcmVudF9t b2RlPTcwMDs7Ci0JCSBkPz8/Py0/LS0qKSBkaWZmZXJlbnRfbW9kZT03NTU7OwotCQkgKikg ZmFsc2U7OwotCSAgICAgICBlc2FjICYmCi0JICAgICAgICRta2RpcnByb2cgLW0kZGlmZmVy ZW50X21vZGUgLXAgLS0gIiR0ZXN0X3RtcGRpciIgJiYgewotCQkgbHNfbGRfdG1wZGlyXzE9 YGxzIC1sZCAiJHRlc3RfdG1wZGlyImAKLQkJIHRlc3QgIiRsc19sZF90bXBkaXIiID0gIiRs c19sZF90bXBkaXJfMSIKLQkgICAgICAgfQotCSAgICAgfQotCSAgdGhlbiBwb3NpeF9ta2Rp cj06Ci0JICBmaQotCSAgcm1kaXIgIiR0bXBkaXIvYS9iIiAiJHRtcGRpci9hIiAiJHRtcGRp ciIKLQllbHNlCi0JICAjIFJlbW92ZSBhbnkgZGlycyBsZWZ0IGJlaGluZCBieSBhbmNpZW50 IG1rZGlyIGltcGxlbWVudGF0aW9ucy4KLQkgIHJtZGlyIC4vJG1rZGlyX21vZGUgLi8tcCAu Ly0tICIkdG1wZGlyIiAyPi9kZXYvbnVsbAotCWZpCi0JdHJhcCAnJyAwOzsKLSAgICBlc2Fj Ci0KLSAgICBpZgotICAgICAgJHBvc2l4X21rZGlyICYmICgKLSAgICAgICAgdW1hc2sgJG1r ZGlyX3VtYXNrICYmCi0gICAgICAgICRkb2l0X2V4ZWMgJG1rZGlycHJvZyAkbWtkaXJfbW9k ZSAtcCAtLSAiJGRzdGRpciIKLSAgICAgICkKLSAgICB0aGVuIDoKLSAgICBlbHNlCi0KLSAg ICAgICMgbWtkaXIgZG9lcyBub3QgY29uZm9ybSB0byBQT1NJWCwKLSAgICAgICMgb3IgaXQg ZmFpbGVkIHBvc3NpYmx5IGR1ZSB0byBhIHJhY2UgY29uZGl0aW9uLiAgQ3JlYXRlIHRoZQot ICAgICAgIyBkaXJlY3RvcnkgdGhlIHNsb3cgd2F5LCBzdGVwIGJ5IHN0ZXAsIGNoZWNraW5n IGZvciByYWNlcyBhcyB3ZSBnby4KLQotICAgICAgY2FzZSAkZHN0ZGlyIGluCi0gICAgICAg IC8qKSBwcmVmaXg9Jy8nOzsKLSAgICAgICAgWy09XChcKSFdKikgcHJlZml4PScuLyc7Owot ICAgICAgICAqKSAgcHJlZml4PScnOzsKLSAgICAgIGVzYWMKLQotICAgICAgb0lGUz0kSUZT Ci0gICAgICBJRlM9LwotICAgICAgc2V0IC1mCi0gICAgICBzZXQgZm5vcmQgJGRzdGRpcgot ICAgICAgc2hpZnQKLSAgICAgIHNldCArZgotICAgICAgSUZTPSRvSUZTCi0KLSAgICAgIHBy ZWZpeGVzPQotCi0gICAgICBmb3IgZAotICAgICAgZG8KLSAgICAgICAgdGVzdCBYIiRkIiA9 IFggJiYgY29udGludWUKLQotICAgICAgICBwcmVmaXg9JHByZWZpeCRkCi0gICAgICAgIGlm IHRlc3QgLWQgIiRwcmVmaXgiOyB0aGVuCi0gICAgICAgICAgcHJlZml4ZXM9Ci0gICAgICAg IGVsc2UKLSAgICAgICAgICBpZiAkcG9zaXhfbWtkaXI7IHRoZW4KLSAgICAgICAgICAgICh1 bWFzayAkbWtkaXJfdW1hc2sgJiYKLSAgICAgICAgICAgICAkZG9pdF9leGVjICRta2RpcnBy b2cgJG1rZGlyX21vZGUgLXAgLS0gIiRkc3RkaXIiKSAmJiBicmVhawotICAgICAgICAgICAg IyBEb24ndCBmYWlsIGlmIHR3byBpbnN0YW5jZXMgYXJlIHJ1bm5pbmcgY29uY3VycmVudGx5 LgotICAgICAgICAgICAgdGVzdCAtZCAiJHByZWZpeCIgfHwgZXhpdCAxCi0gICAgICAgICAg ZWxzZQotICAgICAgICAgICAgY2FzZSAkcHJlZml4IGluCi0gICAgICAgICAgICAgICpcJyop IHFwcmVmaXg9YGVjaG8gIiRwcmVmaXgiIHwgc2VkICJzLycvJ1xcXFxcXFxcJycvZyJgOzsK LSAgICAgICAgICAgICAgKikgcXByZWZpeD0kcHJlZml4OzsKLSAgICAgICAgICAgIGVzYWMK LSAgICAgICAgICAgIHByZWZpeGVzPSIkcHJlZml4ZXMgJyRxcHJlZml4JyIKLSAgICAgICAg ICBmaQotICAgICAgICBmaQotICAgICAgICBwcmVmaXg9JHByZWZpeC8KLSAgICAgIGRvbmUK LQotICAgICAgaWYgdGVzdCAtbiAiJHByZWZpeGVzIjsgdGhlbgotICAgICAgICAjIERvbid0 IGZhaWwgaWYgdHdvIGluc3RhbmNlcyBhcmUgcnVubmluZyBjb25jdXJyZW50bHkuCi0gICAg ICAgICh1bWFzayAkbWtkaXJfdW1hc2sgJiYKLSAgICAgICAgIGV2YWwgIlwkZG9pdF9leGVj IFwkbWtkaXJwcm9nICRwcmVmaXhlcyIpIHx8Ci0gICAgICAgICAgdGVzdCAtZCAiJGRzdGRp ciIgfHwgZXhpdCAxCi0gICAgICAgIG9ic29sZXRlX21rZGlyX3VzZWQ9dHJ1ZQotICAgICAg ZmkKLSAgICBmaQotICBmaQotCi0gIGlmIHRlc3QgLW4gIiRkaXJfYXJnIjsgdGhlbgotICAg IHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3QiOyB9ICYm Ci0gICAgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdCI7 IH0gJiYKLSAgICB7IHRlc3QgIiRvYnNvbGV0ZV9ta2Rpcl91c2VkJGNob3duY21kJGNoZ3Jw Y21kIiA9IGZhbHNlIHx8Ci0gICAgICB0ZXN0IC16ICIkY2htb2RjbWQiIHx8ICRkb2l0ICRj aG1vZGNtZCAkbW9kZSAiJGRzdCI7IH0gfHwgZXhpdCAxCi0gIGVsc2UKLQotICAgICMgTWFr ZSBhIGNvdXBsZSBvZiB0ZW1wIGZpbGUgbmFtZXMgaW4gdGhlIHByb3BlciBkaXJlY3Rvcnku Ci0gICAgZHN0dG1wPSR7ZHN0ZGlyc2xhc2h9X2luc3QuJCRfCi0gICAgcm10bXA9JHtkc3Rk aXJzbGFzaH1fcm0uJCRfCi0KLSAgICAjIFRyYXAgdG8gY2xlYW4gdXAgdGhvc2UgdGVtcCBm aWxlcyBhdCBleGl0LgotICAgIHRyYXAgJ3JldD0kPzsgcm0gLWYgIiRkc3R0bXAiICIkcm10 bXAiICYmIGV4aXQgJHJldCcgMAotCi0gICAgIyBDb3B5IHRoZSBmaWxlIG5hbWUgdG8gdGhl IHRlbXAgbmFtZS4KLSAgICAodW1hc2sgJGNwX3VtYXNrICYmCi0gICAgIHsgdGVzdCAteiAi JHN0cmlwY21kIiB8fCB7Ci0JICMgQ3JlYXRlICRkc3R0bXAgcmVhZC13cml0ZSBzbyB0aGF0 IGNwIGRvZXNuJ3QgY3JlYXRlIGl0IHJlYWQtb25seSwKLQkgIyB3aGljaCB3b3VsZCBjYXVz ZSBzdHJpcCB0byBmYWlsLgotCSBpZiB0ZXN0IC16ICIkZG9pdCI7IHRoZW4KLQkgICA6ID4i JGRzdHRtcCIgIyBObyBuZWVkIHRvIGZvcmstZXhlYyAndG91Y2gnLgotCSBlbHNlCi0JICAg JGRvaXQgdG91Y2ggIiRkc3R0bXAiCi0JIGZpCi0gICAgICAgfQotICAgICB9ICYmCi0gICAg ICRkb2l0X2V4ZWMgJGNwcHJvZyAiJHNyYyIgIiRkc3R0bXAiKSAmJgotCi0gICAgIyBhbmQg c2V0IGFueSBvcHRpb25zOyBkbyBjaG1vZCBsYXN0IHRvIHByZXNlcnZlIHNldHVpZCBiaXRz LgotICAgICMKLSAgICAjIElmIGFueSBvZiB0aGVzZSBmYWlsLCB3ZSBhYm9ydCB0aGUgd2hv bGUgdGhpbmcuICBJZiB3ZSB3YW50IHRvCi0gICAgIyBpZ25vcmUgZXJyb3JzIGZyb20gYW55 IG9mIHRoZXNlLCBqdXN0IG1ha2Ugc3VyZSBub3QgdG8gaWdub3JlCi0gICAgIyBlcnJvcnMg ZnJvbSB0aGUgYWJvdmUgIiRkb2l0ICRjcHByb2cgJHNyYyAkZHN0dG1wIiBjb21tYW5kLgot ICAgICMKLSAgICB7IHRlc3QgLXogIiRjaG93bmNtZCIgfHwgJGRvaXQgJGNob3duY21kICIk ZHN0dG1wIjsgfSAmJgotICAgIHsgdGVzdCAteiAiJGNoZ3JwY21kIiB8fCAkZG9pdCAkY2hn cnBjbWQgIiRkc3R0bXAiOyB9ICYmCi0gICAgeyB0ZXN0IC16ICIkc3RyaXBjbWQiIHx8ICRk b2l0ICRzdHJpcGNtZCAiJGRzdHRtcCI7IH0gJiYKLSAgICB7IHRlc3QgLXogIiRjaG1vZGNt ZCIgfHwgJGRvaXQgJGNobW9kY21kICRtb2RlICIkZHN0dG1wIjsgfSAmJgotCi0gICAgIyBJ ZiAtQywgZG9uJ3QgYm90aGVyIHRvIGNvcHkgaWYgaXQgd291bGRuJ3QgY2hhbmdlIHRoZSBm aWxlLgotICAgIGlmICRjb3B5X29uX2NoYW5nZSAmJgotICAgICAgIG9sZD1gTENfQUxMPUMg bHMgLWRsTCAiJGRzdCIgICAgIDI+L2Rldi9udWxsYCAmJgotICAgICAgIG5ldz1gTENfQUxM PUMgbHMgLWRsTCAiJGRzdHRtcCIgIDI+L2Rldi9udWxsYCAmJgotICAgICAgIHNldCAtZiAm JgotICAgICAgIHNldCBYICRvbGQgJiYgb2xkPTokMjokNDokNTokNiAmJgotICAgICAgIHNl dCBYICRuZXcgJiYgbmV3PTokMjokNDokNTokNiAmJgotICAgICAgIHNldCArZiAmJgotICAg ICAgIHRlc3QgIiRvbGQiID0gIiRuZXciICYmCi0gICAgICAgJGNtcHByb2cgIiRkc3QiICIk ZHN0dG1wIiA+L2Rldi9udWxsIDI+JjEKLSAgICB0aGVuCi0gICAgICBybSAtZiAiJGRzdHRt cCIKLSAgICBlbHNlCi0gICAgICAjIElmICRiYWNrdXBzdWZmaXggaXMgc2V0LCBhbmQgdGhl IGZpbGUgYmVpbmcgaW5zdGFsbGVkCi0gICAgICAjIGFscmVhZHkgZXhpc3RzLCBhdHRlbXB0 IGEgYmFja3VwLiAgRG9uJ3Qgd29ycnkgaWYgaXQgZmFpbHMsCi0gICAgICAjIGUuZy4sIGlm IG12IGRvZXNuJ3Qgc3VwcG9ydCAtZi4KLSAgICAgIGlmIHRlc3QgLW4gIiRiYWNrdXBzdWZm aXgiICYmIHRlc3QgLWYgIiRkc3QiOyB0aGVuCi0gICAgICAgICRkb2l0ICRtdmNtZCAtZiAi JGRzdCIgIiRkc3QkYmFja3Vwc3VmZml4IiAyPi9kZXYvbnVsbAotICAgICAgZmkKLQotICAg ICAgIyBSZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCi0gICAgICAk ZG9pdCAkbXZjbWQgLWYgIiRkc3R0bXAiICIkZHN0IiAyPi9kZXYvbnVsbCB8fAotCi0gICAg ICAjIFRoZSByZW5hbWUgZmFpbGVkLCBwZXJoYXBzIGJlY2F1c2UgbXYgY2FuJ3QgcmVuYW1l IHNvbWV0aGluZyBlbHNlCi0gICAgICAjIHRvIGl0c2VsZiwgb3IgcGVyaGFwcyBiZWNhdXNl IG12IGlzIHNvIGFuY2llbnQgdGhhdCBpdCBkb2VzIG5vdAotICAgICAgIyBzdXBwb3J0IC1m LgotICAgICAgewotICAgICAgICAjIE5vdyByZW1vdmUgb3IgbW92ZSBhc2lkZSBhbnkgb2xk IGZpbGUgYXQgZGVzdGluYXRpb24gbG9jYXRpb24uCi0gICAgICAgICMgV2UgdHJ5IHRoaXMg dHdvIHdheXMgc2luY2Ugcm0gY2FuJ3QgdW5saW5rIGl0c2VsZiBvbiBzb21lCi0gICAgICAg ICMgc3lzdGVtcyBhbmQgdGhlIGRlc3RpbmF0aW9uIGZpbGUgbWlnaHQgYmUgYnVzeSBmb3Ig b3RoZXIKLSAgICAgICAgIyByZWFzb25zLiAgSW4gdGhpcyBjYXNlLCB0aGUgZmluYWwgY2xl YW51cCBtaWdodCBmYWlsIGJ1dCB0aGUgbmV3Ci0gICAgICAgICMgZmlsZSBzaG91bGQgc3Rp bGwgaW5zdGFsbCBzdWNjZXNzZnVsbHkuCi0gICAgICAgIHsKLSAgICAgICAgICB0ZXN0ICEg LWYgIiRkc3QiIHx8Ci0gICAgICAgICAgJGRvaXQgJHJtY21kICIkZHN0IiAyPi9kZXYvbnVs bCB8fAotICAgICAgICAgIHsgJGRvaXQgJG12Y21kIC1mICIkZHN0IiAiJHJtdG1wIiAyPi9k ZXYvbnVsbCAmJgotICAgICAgICAgICAgeyAkZG9pdCAkcm1jbWQgIiRybXRtcCIgMj4vZGV2 L251bGw7IDo7IH0KLSAgICAgICAgICB9IHx8Ci0gICAgICAgICAgeyBlY2hvICIkMDogY2Fu bm90IHVubGluayBvciByZW5hbWUgJGRzdCIgPiYyCi0gICAgICAgICAgICAoZXhpdCAxKTsg ZXhpdCAxCi0gICAgICAgICAgfQotICAgICAgICB9ICYmCi0KLSAgICAgICAgIyBOb3cgcmVu YW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgotICAgICAgICAkZG9pdCAk bXZjbWQgIiRkc3R0bXAiICIkZHN0IgotICAgICAgfQotICAgIGZpIHx8IGV4aXQgMQotCi0g ICAgdHJhcCAnJyAwCi0gIGZpCi1kb25lCi0KLSMgTG9jYWwgdmFyaWFibGVzOgotIyBldmFs OiAoYWRkLWhvb2sgJ2JlZm9yZS1zYXZlLWhvb2sgJ3RpbWUtc3RhbXApCi0jIHRpbWUtc3Rh bXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKLSMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnkt JTAybS0lMDJkLiUwMkgiCi0jIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDMCIKLSMgdGlt ZS1zdGFtcC1lbmQ6ICI7ICMgVVRDIgotIyBFbmQ6Ci0tIAoyLjQwLjEKCg== --------------Y9zKd6YDOALoFFolFRTvw4ke-- From debbugs-submit-bounces@debbugs.gnu.org Sun Jan 21 01:53:16 2024 Received: (at 68464-done) by debbugs.gnu.org; 21 Jan 2024 06:53:16 +0000 Received: from localhost ([127.0.0.1]:36422 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rRRhk-0004tj-3T for submit@debbugs.gnu.org; Sun, 21 Jan 2024 01:53:16 -0500 Received: from mail-wm1-x329.google.com ([2a00:1450:4864:20::329]:47581) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rRRhh-0004tW-MF for 68464-done@debbugs.gnu.org; Sun, 21 Jan 2024 01:53:14 -0500 Received: by mail-wm1-x329.google.com with SMTP id 5b1f17b1804b1-40e7065b7bdso25683855e9.3 for <68464-done@debbugs.gnu.org>; Sat, 20 Jan 2024 22:53:10 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1705819984; x=1706424784; darn=debbugs.gnu.org; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to; bh=sRmTJzPp8Pb/11rdtcoUe5CZPOlv2KbWeAreGAm5rEk=; b=d2+YDVZUoPiPPJo8tFgsmGhPPlFtQKGhRKoUJ/srUEFfDBhfRA3ezPQELNC5eOE0lc 0KA+I2Gq5Ge+hD0M8T6CCCfu7iclZsW4kox3zNARXQR/CRqcb7l8z3MzkF8GEpuMWBP1 QzO/86BMvdC+PQPdylEOJUrdZpkpWrvd6UwmzTjM9m1tBCw9As/0naMa3on3KodrNvcz ZhdZyOJE3O12y0lCt1Yyffwx+rhVzBa8S7UFKvXRuGxk/k4TLX8ARigveAT5wDAmPoGB hS7eejUkY77mpWh8EylKxjBlmvmSpyxzAC7ZNyrsNIjn2PoaCJExpoAc9SErow9KpE7h 5yLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1705819984; x=1706424784; h=mime-version:user-agent:message-id:date:references:in-reply-to :subject:cc:to:from:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=sRmTJzPp8Pb/11rdtcoUe5CZPOlv2KbWeAreGAm5rEk=; b=UZXjMuApw9N3AL6btDSPOEZbYGFnzkVYLFB4QX+uqo12FlPyNsJBD0IDjAWHbcPWJj yx/oyFEsPiEv2G72bclJuQFgiLdRo3bUww8R1muuSpQgHJ5ddJDLf9a634zM1JiWJbuZ Mn8Yixk7CHuLMpObFccJID2Cuzv7K3djJT16Qd4gcyHGJDrHdc7ELsuHgACVVPYWE1aM VMZhQxHwKZIXCszyc9ZUdKWBR0mxoVPZdePI8WFUwnZMrMCFGlsORlnSLH42TTtnb773 EUo0W4edvd8jedaFAWE/2YMPJndaG0wJBFv2Z3KgX0LqIT9cccHuCP1PDCzjnrDgJUrb Bm7w== X-Gm-Message-State: AOJu0YzOgAcU3RTwzV4rkpjBsXjA54CW4kVJ3xBLDhnFJRaLoFly/ACk ggkjizX6nEy8XbGcBbaO8mn0c+EH0tH7mn//J+ELge3n29e2k+2H X-Google-Smtp-Source: AGHT+IEPfs8W95dQ9tgbz+sowaay1njvEyi4L88myxgvtSnDjm7UzPAQJW5HsmlRWHJnOE9953ZV3A== X-Received: by 2002:a05:600c:1c29:b0:40d:8ff4:ea0f with SMTP id j41-20020a05600c1c2900b0040d8ff4ea0fmr886454wms.12.1705819984432; Sat, 20 Jan 2024 22:53:04 -0800 (PST) Received: from Pro.fritz.box (pd9e364d6.dip0.t-ipconnect.de. [217.227.100.214]) by smtp.gmail.com with ESMTPSA id z10-20020a05600c0a0a00b0040e486bc0dfsm38989892wmp.27.2024.01.20.22.53.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Jan 2024 22:53:04 -0800 (PST) From: =?utf-8?Q?Gerd_M=C3=B6llmann?= To: Paul Eggert Subject: Re: bug#68464: 30.0.50; autogen.sh creating modified files in build-aux with Autoconf 2.72 In-Reply-To: <2cdc3032-6173-4a24-895d-f4c0c2722995@cs.ucla.edu> (Paul Eggert's message of "Sat, 20 Jan 2024 16:51:06 -0800") References: <838r4qeonh.fsf@gnu.org> <878r4q5nzx.fsf@killashandra.ballybran.fr> <87le8q710o.fsf@igel.home> <83jzoac5uk.fsf@gnu.org> <878r4pauwq.fsf@killashandra.ballybran.fr> <83edectjln.fsf@gnu.org> <2cdc3032-6173-4a24-895d-f4c0c2722995@cs.ucla.edu> Date: Sun, 21 Jan 2024 07:53:02 +0100 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 68464-done Cc: Eli Zaretskii , schwab@linux-m68k.org, 68464-done@debbugs.gnu.org, Pierre =?utf-8?Q?T=C3=A9choueyres?= X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Paul Eggert writes: > Boldly closing the bug report; we can reopen it if there are still > issues here. Works perfectly here, macOS with Autoconf 2.72. Thanks, Paul! From debbugs-submit-bounces@debbugs.gnu.org Sun Jan 21 04:56:39 2024 Received: (at 68464) by debbugs.gnu.org; 21 Jan 2024 09:56:39 +0000 Received: from localhost ([127.0.0.1]:36614 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rRUZC-00044E-Ok for submit@debbugs.gnu.org; Sun, 21 Jan 2024 04:56:39 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:37912) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1rRUZA-000440-90 for 68464@debbugs.gnu.org; Sun, 21 Jan 2024 04:56:37 -0500 Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1rRUYz-0001fP-TM; Sun, 21 Jan 2024 04:56:25 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From: Date; bh=/ShGPFmezRhFgZHqKwfYJ1DwyEJyQAE0uOwGGzFphwA=; b=TDBXYzwWrNEdXpGCI+oc v7OUxvj60ljwcjvIq7uvrRdLCuWsDTSX7DAFYIehyRcmz/wl6seTvsB/jvXq3AeLGfd7NYol2H1RZ bBGjCraNazwNn/kFOCI0i5YHrk64SnaYBT2pCE5oWw900uehWk8cyIMnw7zqU9GmGlQeAurl0ZVRR o3mmUYnjEecWj0stCg1Yd4Fq8wlfDRBQOjuMqe3DADqdgsunzn6vGvGAYh0u5n47VARV0jWgAYGL7 5EINNZ03EAmD7q2gZhCXTTdKN8DhU8Cv3OnXMzxB9Uc7KsPd0Yhcgn+Uw/RZv+uu96hUY3fA7WyBt CeQiuoQipVlJkg==; Date: Sun, 21 Jan 2024 11:56:08 +0200 Message-Id: <83a5ozrow7.fsf@gnu.org> From: Eli Zaretskii To: Paul Eggert In-Reply-To: <2cdc3032-6173-4a24-895d-f4c0c2722995@cs.ucla.edu> (message from Paul Eggert on Sat, 20 Jan 2024 16:51:06 -0800) Subject: Re: bug#68464: 30.0.50; autogen.sh creating modified files in build-aux with Autoconf 2.72 References: <838r4qeonh.fsf@gnu.org> <878r4q5nzx.fsf@killashandra.ballybran.fr> <87le8q710o.fsf@igel.home> <83jzoac5uk.fsf@gnu.org> <878r4pauwq.fsf@killashandra.ballybran.fr> <83edectjln.fsf@gnu.org> <2cdc3032-6173-4a24-895d-f4c0c2722995@cs.ucla.edu> MIME-version: 1.0 Content-type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 68464 Cc: gerd.moellmann@gmail.com, 68464@debbugs.gnu.org, schwab@linux-m68k.org, pierre.techoueyres@free.fr X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > Date: Sat, 20 Jan 2024 16:51:06 -0800 > Cc: schwab@linux-m68k.org, gerd.moellmann@gmail.com, > 68464-done@debbugs.gnu.org, Pierre Téchoueyres > > From: Paul Eggert > > Anyway, these two files (along with other Gnulib-derived files in the > Emacs repository) are updated automatically by admin/merge-gnulib. Today > I did such an update on the master branch, so config.guess and > config.sub are now updated to their latest versions. Thanks. > I then reproduced the problem that Gerd mentioned. Gnulib's config.guess > etc. tend to be more up-to-date, and anyway the Emacs build is more > reproducible if we use the Emacs repository version of config.guess etc. > (instead of whatever version the developer's Autoconf happens to have), > so I installed the attached patch which fixed the problem for me. And thanks. From unknown Fri Aug 15 15:38:18 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Sun, 18 Feb 2024 12:24:16 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator