Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vY2z7-00CYGl-0r for pgpool-hackers@arkaria.postgresql.org; Tue, 23 Dec 2025 14:03:34 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vY2z5-001cE9-3A for pgpool-hackers@arkaria.postgresql.org; Tue, 23 Dec 2025 14:03:32 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vY2z5-001cE1-0Y for pgpool-hackers@lists.postgresql.org; Tue, 23 Dec 2025 14:03:32 +0000 Received: from mail-yx1-xb12d.google.com ([2607:f8b0:4864:20::b12d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vY2z1-002C2N-26 for pgpool-hackers@lists.postgresql.org; Tue, 23 Dec 2025 14:03:31 +0000 Received: by mail-yx1-xb12d.google.com with SMTP id 956f58d0204a3-6467b7c3853so2082769d50.0 for ; Tue, 23 Dec 2025 06:03:27 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tailorbrands.com; s=google; t=1766498606; x=1767103406; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=r4buDzzKNTq50OmF1T+HMOLpYRZiLdFygd4CXuJE6z4=; b=hqdj6H8qgMwIrNOg9py4BkiEut+gNFwC5DyzQhrlnb1SlDZH3nWkm22YJqRdVUTHOb i+6Q9AuSAIIrWsf3zKood9L4tUAsYuOGPg+OAyiOHg0xJ/KFqzLeLbSCGu/R5BGO3cRi kyLZiY4jAX9h11YaxsX1H95m/6llz0KAYqp5g+7DAHAZR2g84VNewd1gFGBzHDJBdTBq NbLTDU5BrKEY9cNQ4pAq7V+pC1yFFtXuEkyK5oMH7GjYc1ZH+wVlQ14dbBlRt25Z2ezx dzCX0zXDpLz2TATiampKYz1WqIiOy7JnCHb8oqglPvLnM7jA7qGC5SodvQxhbwpejdJ0 +9ww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1766498606; x=1767103406; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=r4buDzzKNTq50OmF1T+HMOLpYRZiLdFygd4CXuJE6z4=; b=B76lgfJmqK+nvSr37wQ2vFoCcsoM4A5/8/zVb41bx9W7WQ65B2d6DYtMET8SjxWyA5 vlfvGRg1IeDYlkrYORirqW2jY0VOrvpRd4xJ47xaiU8nqmmBlBPBRu+3QviduFLw+16M k+Av/9mhv8xLPHLAX1T1vgdMKtxvChwSU6SDwRHBwxg6F+kVPWWzE9qT9FsbBgLKWkg2 P1FIt79S8iAAiHt6Z7mM8879p3yYonEkgUtfO9v2tBWDN3rEjVAO8eZCfvjJq6sVhUGt w7UEVEJ7sI8PHnTwQs9cKvxgm5Afb5hBDZzv5LDW7Q/k/pRuNS7IkpsKkBHx6UidPQdG 7Arg== X-Gm-Message-State: AOJu0Yzcz1ZFKyMyrsl1gV1ectAOXYNALvKX7FEMZ3rXZRKLqMdTLnjL Aam0gVLb8puWyCwobBgfFHh1OzRTiPiPjMN1e0+XG6S0+Ib6YbTBrPXOB9zWDcraPZ/3UdyyLpc I+/+dzAh4caMcGmBHMH228quqYNNACFY6qxliH05hkUAYPhMTy19NwWto3W4J X-Gm-Gg: AY/fxX7BKKce+XCkCQH4PnrfaUrip6RlvcmqzFv9HNuqOzQ8VD1Z7C5+rPVIn1nF5WT JaEUQOlF4zJRfX2Z8b75GEfwuVEJ480NIuyoEUshyQilmo1RUrtsl7/+x7Y4jAQU3MbHaaEI3T9 LkASGWDwDl/1hNXtxIm8eD5+c3a5g6CPFrwJejQHmV8sjbBitgn+1IT84u4dTywKzNCiK/VosSU JAz03N28/XVj9kl9YXit6LSvWO3QwtxkJuVPH5ud5tUB/wdqfMr4u2LlVWovygo59lzInTwf3Y3 jIzDOwYyFRHgl80Bylk+2Xj+XyUhUADF8RyxTUoQ8xIiJ6VFZ71e7S1SHIPPAPbgy+nC X-Google-Smtp-Source: AGHT+IGT28ocrUCJ1X/bDgZQ8niNo6cF4V7YwKaq6njOdJCkfoFfmQqfbjqp0bB7L1SXGST34dnokGHp7f/mpiXqdpU= X-Received: by 2002:a53:c9cb:0:b0:641:f5bc:6999 with SMTP id 956f58d0204a3-6466a924034mr9024043d50.85.1766498606180; Tue, 23 Dec 2025 06:03:26 -0800 (PST) MIME-Version: 1.0 References: <20251223.091342.1595559830808064194.ishii@postgresql.org> <20251223.174625.653233061559427537.ishii@postgresql.org> In-Reply-To: <20251223.174625.653233061559427537.ishii@postgresql.org> From: Nadav Shatz Date: Tue, 23 Dec 2025 16:03:13 +0200 X-Gm-Features: AQt7F2pWkz_dvHvF-72hAiTtyDZhKij7Rr-7MBDP80Kn66LRpx_SJS2BciWUPnc Message-ID: Subject: Re: Proposal: recent access based routing for primary-replica setups To: Tatsuo Ishii Cc: pgpool-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="000000000000eba2b506469f019a" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000eba2b506469f019a Content-Type: multipart/alternative; boundary="000000000000eba2b406469f0198" --000000000000eba2b406469f0198 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Tatsuo, Thank you for the note. I've removed the docker stuff. started working in an ubuntu 24 VM to match the setup. hopefully the results will be better, had so many issues compiling and testing before that stuff wasn't properly formulated. Attaching the latest patch. this is what i'm seeing: adav@lima-dev:/src/pgpool2/src/test/regression$ PGHOST=3D/tmp ./regress.sh = -p /usr/bin 041.external_replication_delay creating pgpool-II temporary installation ... moving pgpool_setup to temporary installation path ... moving watchdog_setup to temporary installation path ... using pgpool-II at /src/pgpool2/src/test/regression/temp/installed ************************* REGRESSION MODE : install Pgpool-II version : pgpool-II version 4.8devel (mitsukakeboshi) Pgpool-II install path : /src/pgpool2/src/test/regression/temp/installed PostgreSQL bin : /usr/lib/postgresql/16/bin PostgreSQL Major version : 16 pgbench : /usr/lib/postgresql/16/bin/pgbench PostgreSQL jdbc : /usr/local/pgsql/share/postgresql-9.2-1003.jdbc4.jar ************************* testing 041.external_replication_delay...ok. out of 1 ok:1 failed:0 timeout:0 On Tue, Dec 23, 2025 at 10:46=E2=80=AFAM Tatsuo Ishii wrote: > > Hi Tatsuo, > > > > I'km running into issues testing this and have created a full docker > > compose setup - can you please point me to up to date guides on the bes= t > > way to run the tests so i know we're doing it the same way? > > > > Thank you for all your help! > > I have run the regression test on the Pgpool-II master branch on my > Ubuntu 24 box. > > cd pgpool2/src/test/regression > ./regress.sh 041 > > This time I noticed: > > - The patch does not named with version number > - The patch creates .dockerignore and docker/ directory. > > Are they intended? I am asking because they are different from the > previous version. > > > On Tue, Dec 23, 2025 at 2:13=E2=80=AFAM Tatsuo Ishii > wrote: > > > >> > I think everything is passing now. new version attached. > >> > >> Unfortunately Test1 did not pass. > >> > >> =3D=3D=3D Test1: Basic external command with integer millisecond value= s =3D=3D=3D > >> waiting for server to start....1438600 2025-12-23 09:09:48.337 JST LOG= : > >> redirecting log output to logging collector process > >> 1438600 2025-12-23 09:09:48.337 JST HINT: Future log output will appe= ar > >> in directory "log". > >> done > >> server started > >> waiting for server to start....1438617 2025-12-23 09:09:48.443 JST LOG= : > >> redirecting log output to logging collector process > >> 1438617 2025-12-23 09:09:48.443 JST HINT: Future log output will appe= ar > >> in directory "log". > >> done > >> server started > >> waiting for server to start....1438634 2025-12-23 09:09:48.561 JST LOG= : > >> redirecting log output to logging collector process > >> 1438634 2025-12-23 09:09:48.561 JST HINT: Future log output will appe= ar > >> in directory "log". > >> done > >> server started > >> CREATE TABLE > >> Waiting for sr_check to run... > >> Command executed after 1 seconds > >> node_id | hostname | port | status | pg_status | lb_weight | role > | > >> pg_role | select_cnt | load_balance_node | replication_delay | > >> replication_state | replication_sync_state | last_status_change > >> > >> > ---------+-----------+-------+--------+-----------+-----------+---------+= ---------+------------+-------------------+-------------------+------------= -------+------------------------+--------------------- > >> 0 | localhost | 11002 | up | up | 0.333333 | primar= y > | > >> primary | 0 | true | 0 | > >> | | 2025-12-23 09:09:49 > >> 1 | localhost | 11003 | up | up | 0.333333 | standb= y > | > >> standby | 0 | false | 0 | > >> | | 2025-12-23 09:09:49 > >> 2 | localhost | 11004 | up | up | 0.333333 | standb= y > | > >> standby | 0 | false | 0 | > >> | | 2025-12-23 09:09:49 > >> (3 rows) > >> > >> fail: external command delay logging not found > >> > >> > On Mon, Nov 24, 2025 at 9:41=E2=80=AFAM Tatsuo Ishii > >> wrote: > >> > > >> >> Thank you for updating the patch! This time the patch applies witho= ut > >> >> any issue and compiles fine. Unfortunately regression test failed. > >> >> > >> >> testing 041.external_replication_delay...failed. > >> >> > >> >> From the regression log, it seems Test7 failed. > >> >> > >> >> > >> > -------------------------------------------------------------------------= ----- > >> >> =3D=3D=3D Test7: Command timeout handling =3D=3D=3D > >> >> waiting for server to start....411181 2025-11-24 16:31:05.244 JST > LOG: > >> >> redirecting log output to logging collector process > >> >> 411181 2025-11-24 16:31:05.244 JST HINT: Future log output will > appear > >> in > >> >> directory "log". > >> >> done > >> >> server started > >> >> waiting for server to start....411196 2025-11-24 16:31:05.352 JST > LOG: > >> >> redirecting log output to logging collector process > >> >> 411196 2025-11-24 16:31:05.352 JST HINT: Future log output will > appear > >> in > >> >> directory "log". > >> >> done > >> >> server started > >> >> waiting for server to start....411213 2025-11-24 16:31:05.461 JST > LOG: > >> >> redirecting log output to logging collector process > >> >> 411213 2025-11-24 16:31:05.461 JST HINT: Future log output will > appear > >> in > >> >> directory "log". > >> >> done > >> >> server started > >> >> Waiting for command timeout... > >> >> fail: command timeout not detected > >> >> > >> >> > >> > -------------------------------------------------------------------------= ----- > >> >> > >> >> Attached is the pgpool.log. If you need more info, please let me > know. > >> >> > >> >> Best regards, > >> >> -- > >> >> Tatsuo Ishii > >> >> SRA OSS K.K. > >> >> English: http://www.sraoss.co.jp/index_en/ > >> >> Japanese:http://www.sraoss.co.jp > >> >> > >> >> > >> >> > Hi Tatsuo, > >> >> > > >> >> > Sorry again, this was due to the separation of 2 patches and i on= ly > >> sent > >> >> > the one. > >> >> > > >> >> > I've merged it into 1 commit and 1 patch and rebased over master = to > >> avoid > >> >> > these issues moving forward. > >> >> > > >> >> > PFA latest version > >> >> > > >> >> > On Thu, Nov 20, 2025 at 1:09=E2=80=AFAM Tatsuo Ishii > > >> >> wrote: > >> >> > > >> >> >> Hi Nadav, > >> >> >> > >> >> >> Thank you for new patch. > >> >> >> Unfortunately the patch did not apply to current master. > >> >> >> > >> >> >> $ git apply > >> >> >> ~/0001-Fix-multiple-issues-in-external-replication-delay-fe.patc= h > >> >> >> error: patch failed: > >> src/streaming_replication/pool_worker_child.c:694 > >> >> >> error: src/streaming_replication/pool_worker_child.c: patch does > not > >> >> apply > >> >> >> > >> >> >> Maybe the patch is on top of your previous patch? > >> >> >> > >> >> >> Also I suggest to use "-v" option of "git format-patch" to add t= he > >> >> >> patch version number so that we can easily know which patch is t= he > >> >> >> latest. > >> >> >> > >> >> >> Best regards, > >> >> >> -- > >> >> >> Tatsuo Ishii > >> >> >> SRA OSS K.K. > >> >> >> English: http://www.sraoss.co.jp/index_en/ > >> >> >> Japanese:http://www.sraoss.co.jp > >> >> >> > >> >> >> > Hi Tatsuo, > >> >> >> > > >> >> >> > Please see attached an updated version. > >> >> >> > > >> >> >> > thank you > >> >> >> > > >> >> >> > On Fri, Nov 7, 2025 at 2:07=E2=80=AFAM Tatsuo Ishii < > ishii@postgresql.org> > >> >> >> wrote: > >> >> >> > > >> >> >> >> > Sorry for that - thanks for the patch. > >> >> >> >> > > >> >> >> >> > Please find attached a new version > >> >> >> >> > >> >> >> >> Thanks for the new version. Unfortunately this time regressio= n > >> test > >> >> >> >> fails at: > >> >> >> >> > >> >> >> >> > Waiting for command timeout... > >> >> >> >> > fail: command timeout not detected > >> >> >> >> > >> >> >> >> Attached is the pgpool.log. > >> >> >> >> > >> >> >> >> Best regards, > >> >> >> >> -- > >> >> >> >> Tatsuo Ishii > >> >> >> >> SRA OSS K.K. > >> >> >> >> English: http://www.sraoss.co.jp/index_en/ > >> >> >> >> Japanese:http://www.sraoss.co.jp > >> >> >> >> > >> >> >> >> > On Mon, Nov 3, 2025 at 9:05=E2=80=AFAM Tatsuo Ishii < > >> ishii@postgresql.org> > >> >> >> >> wrote: > >> >> >> >> > > >> >> >> >> >> > thanks and sorry for the issues, please find attached > updated > >> >> >> version. > >> >> >> >> >> > >> >> >> >> >> No problem. > >> >> >> >> >> > >> >> >> >> >> This time the patch applies fine, no compiler warnings. > >> However, > >> >> >> >> >> regression test did not passed here (on Ubuntu 24 LTS if > this > >> >> >> >> >> matters). So I looked into > >> >> >> >> >> > >> src/test/regression/tests/041.external_replication_delay/test.sh a > >> >> >> >> >> little bit and apply attached patch (test.sh.patch). It > moved > >> >> forward > >> >> >> >> >> partially but failed at: > >> >> >> >> >> > >> >> >> >> >> fail: command execution failure not detected > >> >> >> >> >> > >> >> >> >> >> Please find attached > >> >> >> >> >> > >> >> >> >> > >> >> >> > >> >> > >> > src/test/regression/tests/041.external_replication_delay/testdir/pgpool.l= og > >> >> >> >> >> and src/test/regression/log/041.external_replication_delay= . > >> >> >> >> >> > >> >> >> >> >> Best regards, > >> >> >> >> >> -- > >> >> >> >> >> Tatsuo Ishii > >> >> >> >> >> SRA OSS K.K. > >> >> >> >> >> English: http://www.sraoss.co.jp/index_en/ > >> >> >> >> >> Japanese:http://www.sraoss.co.jp > >> >> >> >> >> > >> >> >> >> > > >> >> >> >> > > >> >> >> >> > -- > >> >> >> >> > Nadav Shatz > >> >> >> >> > Tailor Brands | CTO > >> >> >> >> > >> >> >> > > >> >> >> > > >> >> >> > -- > >> >> >> > Nadav Shatz > >> >> >> > Tailor Brands | CTO > >> >> >> > >> >> > > >> >> > > >> >> > -- > >> >> > Nadav Shatz > >> >> > Tailor Brands | CTO > >> >> > >> > > >> > > >> > -- > >> > Nadav Shatz > >> > Tailor Brands | CTO > >> > > > > > > -- > > Nadav Shatz > > Tailor Brands | CTO > --=20 Nadav Shatz Tailor Brands | CTO --000000000000eba2b406469f0198 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi Tatsuo,

Thank you for the note.

I've removed the docker stuff. started working in = an ubuntu 24 VM to match the setup. hopefully the results will be better, h= ad so many issues compiling and testing before that stuff wasn't proper= ly formulated.

Attaching the latest patch.

this is what i'= ;m seeing:
adav@lima-dev:/src/pgpool2/src/test/regression$ PGHOST= =3D/tmp ./regress.sh -p /usr/bin 041.external_replication_delay
creating= pgpool-II temporary installation ...
moving pgpool_setup to temporary i= nstallation path ...
moving watchdog_setup to temporary installation pat= h ...
using pgpool-II at /src/pgpool2/src/test/regression/temp/installed=
*************************
REGRESSION MODE =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0: install
Pgpool-II version =C2=A0 =C2=A0 =C2=A0 =C2=A0: pgpoo= l-II version 4.8devel (mitsukakeboshi)
Pgpool-II install path =C2=A0 : /= src/pgpool2/src/test/regression/temp/installed
PostgreSQL bin =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 : /usr/lib/postgresql/16/bin
PostgreSQL Major v= ersion : 16
pgbench =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0: /usr/lib/postgresql/16/bin/pgbench
PostgreSQL jdbc =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0: /usr/local/pgsql/share/postgresql-9.2-1003.jdb= c4.jar
*************************
testing 041.external_replication_del= ay...ok.
out of 1 ok:1 failed:0 timeout:0


<= /div>

On Tue, Dec 23, 2025 at 10:46=E2=80=AFAM Tatsuo Ishii <ishii@postgresql.org> = wrote:
> Hi T= atsuo,
>
> I'km running into issues testing this and have created a full dock= er
> compose setup - can you please point me to up to date guides on the be= st
> way to run the tests so i know we're doing it the same way?
>
> Thank you for all your help!

I have run the regression test on the Pgpool-II master branch on my
Ubuntu 24 box.

cd pgpool2/src/test/regression
./regress.sh 041

This time I noticed:

- The patch does not named with version number
- The patch creates .dockerignore and docker/ directory.

Are they intended? I am asking because they are different from the
previous version.

> On Tue, Dec 23, 2025 at 2:13=E2=80=AFAM Tatsuo Ishii <ishii@postgresql.org> w= rote:
>
>> > I think everything is passing now. new version attached.
>>
>> Unfortunately Test1 did not pass.
>>
>> =3D=3D=3D Test1: Basic external command with integer millisecond v= alues =3D=3D=3D
>> waiting for server to start....1438600 2025-12-23 09:09:48.337 JST= LOG:
>> redirecting log output to logging collector process
>> 1438600 2025-12-23 09:09:48.337 JST HINT:=C2=A0 Future log output = will appear
>> in directory "log".
>>=C2=A0 done
>> server started
>> waiting for server to start....1438617 2025-12-23 09:09:48.443 JST= LOG:
>> redirecting log output to logging collector process
>> 1438617 2025-12-23 09:09:48.443 JST HINT:=C2=A0 Future log output = will appear
>> in directory "log".
>>=C2=A0 done
>> server started
>> waiting for server to start....1438634 2025-12-23 09:09:48.561 JST= LOG:
>> redirecting log output to logging collector process
>> 1438634 2025-12-23 09:09:48.561 JST HINT:=C2=A0 Future log output = will appear
>> in directory "log".
>>=C2=A0 done
>> server started
>> CREATE TABLE
>> Waiting for sr_check to run...
>> Command executed after 1 seconds
>>=C2=A0 node_id | hostname=C2=A0 | port=C2=A0 | status | pg_status |= lb_weight |=C2=A0 role=C2=A0 =C2=A0|
>> pg_role | select_cnt | load_balance_node | replication_delay |
>> replication_state | replication_sync_state | last_status_change >>
>> ---------+-----------+-------+--------+-----------+-----------+---= ------+---------+------------+-------------------+-------------------+-----= --------------+------------------------+---------------------
>>=C2=A0 0=C2=A0 =C2=A0 =C2=A0 =C2=A0| localhost | 11002 | up=C2=A0 = =C2=A0 =C2=A0| up=C2=A0 =C2=A0 =C2=A0 =C2=A0 | 0.333333=C2=A0 | primary | >> primary | 0=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | true=C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 0=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0|
>>=C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 2025-12-23 09:09:49
>>=C2=A0 1=C2=A0 =C2=A0 =C2=A0 =C2=A0| localhost | 11003 | up=C2=A0 = =C2=A0 =C2=A0| up=C2=A0 =C2=A0 =C2=A0 =C2=A0 | 0.333333=C2=A0 | standby | >> standby | 0=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | false=C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 0=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0|
>>=C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 2025-12-23 09:09:49
>>=C2=A0 2=C2=A0 =C2=A0 =C2=A0 =C2=A0| localhost | 11004 | up=C2=A0 = =C2=A0 =C2=A0| up=C2=A0 =C2=A0 =C2=A0 =C2=A0 | 0.333333=C2=A0 | standby | >> standby | 0=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | false=C2=A0 =C2=A0= =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 0=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0|
>>=C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 2025-12-23 09:09:49
>> (3 rows)
>>
>> fail: external command delay logging not found
>>
>> > On Mon, Nov 24, 2025 at 9:41=E2=80=AFAM Tatsuo Ishii <ishii@postgresql.org<= /a>>
>> wrote:
>> >
>> >> Thank you for updating the patch! This time the patch app= lies without
>> >> any issue and compiles fine. Unfortunately regression tes= t failed.
>> >>
>> >> testing 041.external_replication_delay...failed.
>> >>
>> >> From the regression log, it seems Test7 failed.
>> >>
>> >>
>> ------------------------------------------------------------------= ------------
>> >> =3D=3D=3D Test7: Command timeout handling =3D=3D=3D
>> >> waiting for server to start....411181 2025-11-24 16:31:05= .244 JST LOG:
>> >> redirecting log output to logging collector process
>> >> 411181 2025-11-24 16:31:05.244 JST HINT:=C2=A0 Future log= output will appear
>> in
>> >> directory "log".
>> >>=C2=A0 done
>> >> server started
>> >> waiting for server to start....411196 2025-11-24 16:31:05= .352 JST LOG:
>> >> redirecting log output to logging collector process
>> >> 411196 2025-11-24 16:31:05.352 JST HINT:=C2=A0 Future log= output will appear
>> in
>> >> directory "log".
>> >>=C2=A0 done
>> >> server started
>> >> waiting for server to start....411213 2025-11-24 16:31:05= .461 JST LOG:
>> >> redirecting log output to logging collector process
>> >> 411213 2025-11-24 16:31:05.461 JST HINT:=C2=A0 Future log= output will appear
>> in
>> >> directory "log".
>> >>=C2=A0 done
>> >> server started
>> >> Waiting for command timeout...
>> >> fail: command timeout not detected
>> >>
>> >>
>> ------------------------------------------------------------------= ------------
>> >>
>> >> Attached is the pgpool.log. If you need more info, please= let me know.
>> >>
>> >> Best regards,
>> >> --
>> >> Tatsuo Ishii
>> >> SRA OSS K.K.
>> >> English:
http://www.sraoss.co.jp/index_en/ >> >> Japanese:http://www.sraoss.co.jp
>> >>
>> >>
>> >> > Hi Tatsuo,
>> >> >
>> >> > Sorry again, this was due to the separation of 2 pat= ches and i only
>> sent
>> >> > the one.
>> >> >
>> >> > I've merged it into 1 commit and 1 patch and reb= ased over master to
>> avoid
>> >> > these issues moving forward.
>> >> >
>> >> > PFA latest version
>> >> >
>> >> > On Thu, Nov 20, 2025 at 1:09=E2=80=AFAM Tatsuo Ishii= <ishii@postgr= esql.org>
>> >> wrote:
>> >> >
>> >> >> Hi Nadav,
>> >> >>
>> >> >> Thank you for new patch.
>> >> >> Unfortunately the patch did not apply to current= master.
>> >> >>
>> >> >> $ git apply
>> >> >> ~/0001-Fix-multiple-issues-in-external-replicati= on-delay-fe.patch
>> >> >> error: patch failed:
>> src/streaming_replication/pool_worker_child.c:694
>> >> >> error: src/streaming_replication/pool_worker_chi= ld.c: patch does not
>> >> apply
>> >> >>
>> >> >> Maybe the patch is on top of your previous patch= ?
>> >> >>
>> >> >> Also I suggest to use "-v" option of &= quot;git format-patch" to add the
>> >> >> patch version number so that we can easily know = which patch is the
>> >> >> latest.
>> >> >>
>> >> >> Best regards,
>> >> >> --
>> >> >> Tatsuo Ishii
>> >> >> SRA OSS K.K.
>> >> >> English: http://www.sraoss.co.jp/index_e= n/
>> >> >> Japanese:http://www.sraoss.co.jp
>> >> >>
>> >> >> > Hi Tatsuo,
>> >> >> >
>> >> >> > Please see attached an updated version.
>> >> >> >
>> >> >> > thank you
>> >> >> >
>> >> >> > On Fri, Nov 7, 2025 at 2:07=E2=80=AFAM Tats= uo Ishii <ishi= i@postgresql.org>
>> >> >> wrote:
>> >> >> >
>> >> >> >> > Sorry for that - thanks for the pa= tch.
>> >> >> >> >
>> >> >> >> > Please find attached a new version=
>> >> >> >>
>> >> >> >> Thanks for the new version. Unfortunate= ly this time regression
>> test
>> >> >> >> fails at:
>> >> >> >>
>> >> >> >> > Waiting for command timeout...
>> >> >> >> > fail: command timeout not detected=
>> >> >> >>
>> >> >> >> Attached is the pgpool.log.
>> >> >> >>
>> >> >> >> Best regards,
>> >> >> >> --
>> >> >> >> Tatsuo Ishii
>> >> >> >> SRA OSS K.K.
>> >> >> >> English: http://www.sraoss.co.j= p/index_en/
>> >> >> >> Japanese:http://www.sraoss.co.jp
>> >> >> >>
>> >> >> >> > On Mon, Nov 3, 2025 at 9:05=E2=80= =AFAM Tatsuo Ishii <
>> ishii@po= stgresql.org>
>> >> >> >> wrote:
>> >> >> >> >
>> >> >> >> >> > thanks and sorry for the = issues, please find attached updated
>> >> >> version.
>> >> >> >> >>
>> >> >> >> >> No problem.
>> >> >> >> >>
>> >> >> >> >> This time the patch applies fi= ne, no compiler warnings.
>> However,
>> >> >> >> >> regression test did not passed= here (on Ubuntu 24 LTS if this
>> >> >> >> >> matters).=C2=A0 So I looked in= to
>> >> >> >> >>
>> src/test/regression/tests/041.external_replication_delay/test.sh a=
>> >> >> >> >> little bit and apply attached = patch (test.sh.patch). It moved
>> >> forward
>> >> >> >> >> partially but failed at:
>> >> >> >> >>
>> >> >> >> >> fail: command execution failur= e not detected
>> >> >> >> >>
>> >> >> >> >> Please find attached
>> >> >> >> >>
>> >> >> >>
>> >> >>
>> >>
>> src/test/regression/tests/041.external_replication_delay/testdir/p= gpool.log
>> >> >> >> >> and src/test/regression/log/04= 1.external_replication_delay.
>> >> >> >> >>
>> >> >> >> >> Best regards,
>> >> >> >> >> --
>> >> >> >> >> Tatsuo Ishii
>> >> >> >> >> SRA OSS K.K.
>> >> >> >> >> English: http://www.sr= aoss.co.jp/index_en/
>> >> >> >> >> Japanese:http://www.sraoss.co.jp=
>> >> >> >> >>
>> >> >> >> >
>> >> >> >> >
>> >> >> >> > --
>> >> >> >> > Nadav Shatz
>> >> >> >> > Tailor Brands | CTO
>> >> >> >>
>> >> >> >
>> >> >> >
>> >> >> > --
>> >> >> > Nadav Shatz
>> >> >> > Tailor Brands | CTO
>> >> >>
>> >> >
>> >> >
>> >> > --
>> >> > Nadav Shatz
>> >> > Tailor Brands | CTO
>> >>
>> >
>> >
>> > --
>> > Nadav Shatz
>> > Tailor Brands | CTO
>>
>
>
> --
> Nadav Shatz
> Tailor Brands | CTO


--
Nadav Shatz
<= font color=3D"#000000">Tailor Brands=C2=A0| CTO
--000000000000eba2b406469f0198-- --000000000000eba2b506469f019a Content-Type: application/octet-stream; name="latest.patch" Content-Disposition: attachment; filename="latest.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjinnfne0 RnJvbSBhYWYxNTBmMTk1YWM0NTM0MDVhYmJmYmRlM2VmZTBmNWZkZTY0YTM4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYWRhdiBTaGF0eiA8bmFkYXZAdGFpbG9yYnJhbmRzLmNvbT4K RGF0ZTogVHVlLCAyMyBEZWMgMjAyNSAxMzozOTowNCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdICAg IGZlYXQ6IGV4dGVybmFsIHJlcGxpY2F0aW9uIGRlbGF5IGluamVjdGlvbiB2aWEgZXh0ZXJuYWwK IGNvbW1hbmQKCiAgICBBZGQgc3VwcG9ydCBmb3Igb2J0YWluaW5nIHJlcGxpY2F0aW9uIGRlbGF5 IGZyb20gYW4gZXh0ZXJuYWwgY29tbWFuZAogICAgaW5zdGVhZCBvZiBxdWVyeWluZyBwZ19zdGF0 X3JlcGxpY2F0aW9uIGRpcmVjdGx5LiBUaGlzIGFsbG93cyBmb3IKICAgIG1vcmUgZmxleGlibGUg bW9uaXRvcmluZyBzZXR1cHMgd2hlcmUgcmVwbGljYXRpb24gZGVsYXkgaW5mb3JtYXRpb24KICAg IG1heSBjb21lIGZyb20gZXh0ZXJuYWwgbW9uaXRvcmluZyBzeXN0ZW1zLgoKICAgIE5ldyBjb25m aWd1cmF0aW9uIHBhcmFtZXRlcnM6CiAgICAtIHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQ6 IFBhdGggdG8gZXh0ZXJuYWwgY29tbWFuZCB0aGF0IHByb3ZpZGVzCiAgICAgIGRlbGF5IHZhbHVl cy4gV2hlbiBzZXQsIHBncG9vbCBjYWxscyB0aGlzIGNvbW1hbmQgaW5zdGVhZCBvZiBxdWVyeWlu ZwogICAgICBQb3N0Z3JlU1FMIGRpcmVjdGx5LgogICAgLSByZXBsaWNhdGlvbl9kZWxheV9zb3Vy Y2VfdGltZW91dDogVGltZW91dCBpbiBzZWNvbmRzIGZvciB0aGUgZXh0ZXJuYWwKICAgICAgY29t bWFuZCAoZGVmYXVsdDogMTApLgoKICAgIFRoZSBleHRlcm5hbCBjb21tYW5kIHJlY2VpdmVzIHJl cGxpY2EgaWRlbnRpZmllcnMgYXMgYXJndW1lbnRzIGluCiAgICAiaG9zdDpwb3J0IiBmb3JtYXQg YW5kIHNob3VsZCBvdXRwdXQgZGVsYXkgdmFsdWVzIGluIG1pbGxpc2Vjb25kcywKICAgIG9uZSBw ZXIgbGluZSwgY29ycmVzcG9uZGluZyB0byBlYWNoIHJlcGxpY2EgYXJndW1lbnQuCgogICAgSW5j bHVkZXMgcmVncmVzc2lvbiB0ZXN0ICgwNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkpIGNv dmVyaW5nOgogICAgLSBBcmd1bWVudCBmb3JtYXQgdmFsaWRhdGlvbgogICAgLSBJbnRlZ2VyIGFu ZCBmbG9hdGluZy1wb2ludCBkZWxheSBwYXJzaW5nCiAgICAtIEVycm9yIGhhbmRsaW5nIGZvciBt YWxmb3JtZWQgb3V0cHV0IGFuZCB0aW1lb3V0cwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9z dHJlYW0tY2hlY2suc2dtbCBiL2RvYy9zcmMvc2dtbC9zdHJlYW0tY2hlY2suc2dtbAppbmRleCBk MmNhM2NhNDljNjJkZDQ4MWZiOGUxODYxNmIxMmFiNTIxNTIxYjFmLi5mYzQ3OTkwODA3MmY2YWZj NjM5MjNhYzY5OWJlMGY2M2UxNWJjOTBhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3RyZWFt LWNoZWNrLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N0cmVhbS1jaGVjay5zZ21sCkBAIC0zMDks NiArMzA5LDc0IEBAIEdSQU5UIHBnX21vbml0b3IgVE8gc3JfY2hlY2tfdXNlcjsKICAgICA8L2xp c3RpdGVtPgogICA8L3Zhcmxpc3RlbnRyeT4KIAorICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcmVw bGljYXRpb24tZGVsYXktc291cmNlLWNtZCIgeHJlZmxhYmVsPSJyZXBsaWNhdGlvbl9kZWxheV9z b3VyY2VfY21kIj4KKyAgIDx0ZXJtPjx2YXJuYW1lPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9j bWQ8L3Zhcm5hbWU+ICg8dHlwZT5zdHJpbmc8L3R5cGU+KQorICAgIDxpbmRleHRlcm0+CisgICAg IDxwcmltYXJ5Pjx2YXJuYW1lPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQ8L3Zhcm5hbWU+ IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgIDwvaW5kZXh0ZXJtPgorICAg PC90ZXJtPgorICAgPGxpc3RpdGVtPgorICAgIDxwYXJhPgorICAgICBTcGVjaWZpZXMgYW4gZXh0 ZXJuYWwgY29tbWFuZCB0byByZXRyaWV2ZSByZXBsaWNhdGlvbiBkZWxheSBpbmZvcm1hdGlvbiBm b3IgcmVwbGljYSBub2Rlcy4KKyAgICAgV2hlbiB0aGlzIHBhcmFtZXRlciBpcyBzZXQgYW5kIG5v dCBlbXB0eSwgPHByb2R1Y3RuYW1lPlBncG9vbC1JSTwvcHJvZHVjdG5hbWU+IHVzZXMgdGhlCisg ICAgIGV4dGVybmFsIGNvbW1hbmQgaW5zdGVhZCBvZiBidWlsdC1pbiBkYXRhYmFzZSBxdWVyaWVz IHRvIG9idGFpbiByZXBsaWNhdGlvbiBkZWxheXMuCisgICAgIFRoZSBjb21tYW5kIGlzIGV4ZWN1 dGVkIGFzIHRoZSA8cHJvZHVjdG5hbWU+UGdwb29sLUlJPC9wcm9kdWN0bmFtZT4gcHJvY2VzcyB1 c2VyLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIGNvbW1hbmQgcmVjZWl2ZXMg cmVwbGljYSBub2RlIGlkZW50aWZpZXJzIGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzLCB3aXRoIHRo ZSBwcmltYXJ5CisgICAgIG5vZGUgb21pdHRlZC4gRWFjaCBpZGVudGlmaWVyIGlzIGluIHRoZSBm b3JtYXQgPGxpdGVyYWw+Jmx0O2hvc3RuYW1lJmd0OzombHQ7cG9ydCZndDs8L2xpdGVyYWw+LAor ICAgICBmb3IgZXhhbXBsZSA8bGl0ZXJhbD5zZXJ2ZXIxOjU0MzIgc2VydmVyMjo1NDMyPC9saXRl cmFsPi4gVGhlIG9yZGVyIG1hdGNoZXMKKyAgICAgPHByb2R1Y3RuYW1lPlBncG9vbC1JSTwvcHJv ZHVjdG5hbWU+J3MgYmFja2VuZCBvcmRlciAoZXhjbHVkaW5nIHRoZSBwcmltYXJ5KSwgYWxsb3dp bmcgdGhlCisgICAgIHNjcmlwdCB0byBjb3JyZWxhdGUgZXh0ZXJuYWwgbWV0cmljcyAoc3VjaCBh cyBmcm9tIEFXUyBDbG91ZFdhdGNoIGZvciBBdXJvcmEpIHRvIHRoZSBjb3JyZWN0IG5vZGVzLgor ICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIGNvbW1hbmQgbXVzdCB3cml0ZSBhIHNp bmdsZSBsaW5lIHRvIHN0ZG91dCBjb250YWluaW5nIG9uZSB3aGl0ZXNwYWNlLXNlcGFyYXRlZCBk ZWxheSB2YWx1ZQorICAgICBwZXIgcmVwbGljYSwgaW4gbWlsbGlzZWNvbmRzLCBpbiB0aGUgc2Ft ZSBvcmRlciBhcyB0aGUgYXJndW1lbnRzLiBUaGUgcHJpbWFyeSBub2RlJ3MgZGVsYXkgaXMKKyAg ICAgaW1wbGljaXRseSB6ZXJvIGFuZCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBvdXRw dXQuIERlbGF5IHZhbHVlcyBjYW4gYmUgaW50ZWdlcnMgb3IKKyAgICAgZmxvYXRpbmctcG9pbnQg bnVtYmVycy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFNwZWNpYWwgdmFsdWU6IDxs aXRlcmFsPi0xPC9saXRlcmFsPiBpbmRpY2F0ZXMgYSByZXBsaWNhIHRoYXQgaXMgZG93biBidXQg bm90IHlldCBkZXRlY3RlZAorICAgICBieSA8cHJvZHVjdG5hbWU+UGdwb29sLUlJPC9wcm9kdWN0 bmFtZT4ncyBoZWFsdGggY2hlY2tzLiA8cHJvZHVjdG5hbWU+UGdwb29sLUlJPC9wcm9kdWN0bmFt ZT4KKyAgICAgd2lsbCBsb2cgdGhpcyBjb25kaXRpb24gYnV0IHJlbHkgb24gaXRzIG93biBoZWFs dGgtY2hlY2sgbG9naWMgdG8gZGVjaWRlIHdoZXRoZXIgdG8gdHJpZ2dlcgorICAgICBmYWlsb3Zl cjsgbm8gZmFpbG92ZXIgaXMgdHJpZ2dlcmVkIHNvbGVseSBieSByZWNlaXZpbmcgPGxpdGVyYWw+ LTE8L2xpdGVyYWw+LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgRXhhbXBsZSBmb3Ig YSAzLW5vZGUgY2x1c3RlciAoMSBwcmltYXJ5ICsgMiByZXBsaWNhcyk6IGlmIHRoZSBjb21tYW5k IHJlY2VpdmVzIGFyZ3VtZW50cworICAgICA8bGl0ZXJhbD5zZXJ2ZXIxOjU0MzIgc2VydmVyMjo1 NDMyPC9saXRlcmFsPiwgaXQgc2hvdWxkIG91dHB1dCA8bGl0ZXJhbD4iMjUuNSAxMDAiPC9saXRl cmFsPgorICAgICB0byBpbmRpY2F0ZSB0aGUgZmlyc3QgcmVwbGljYSBoYXMgMjUuNW1zIGRlbGF5 IGFuZCB0aGUgc2Vjb25kIGhhcyAxMDBtcyBkZWxheS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+ CisgICAgIERlZmF1bHQgaXMgZW1wdHkgKHVzZSBidWlsdC1pbiByZXBsaWNhdGlvbiBkZWxheSBx dWVyaWVzKS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoaXMgcGFyYW1ldGVyIGNh biBiZSBjaGFuZ2VkIGJ5IHJlbG9hZGluZyB0aGUgPHByb2R1Y3RuYW1lPlBncG9vbC1JSTwvPiBj b25maWd1cmF0aW9ucy4KKyAgICA8L3BhcmE+CisgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3Rl bnRyeT4KKworICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcmVwbGljYXRpb24tZGVsYXktc291cmNl LXRpbWVvdXQiIHhyZWZsYWJlbD0icmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQiPgor ICAgPHRlcm0+PHZhcm5hbWU+cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQ8L3Zhcm5h bWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICA8aW5kZXh0ZXJtPgorICAgICA8cHJpbWFy eT48dmFybmFtZT5yZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dDwvdmFybmFtZT4gY29u ZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgPC9pbmRleHRlcm0+CisgICA8L3Rl cm0+CisgICA8bGlzdGl0ZW0+CisgICAgPHBhcmE+CisgICAgIFNwZWNpZmllcyB0aGUgdGltZW91 dCBpbiBzZWNvbmRzIGZvciB0aGUgZXh0ZXJuYWwgY29tbWFuZCBzcGVjaWZpZWQgYnkKKyAgICAg PHhyZWYgbGlua2VuZD0iZ3VjLXJlcGxpY2F0aW9uLWRlbGF5LXNvdXJjZS1jbWQiPi4KKyAgICAg SWYgdGhlIGNvbW1hbmQgZG9lcyBub3QgZmluaXNoIHdpdGhpbiB0aGUgdGltZW91dCwgPHByb2R1 Y3RuYW1lPlBncG9vbC1JSTwvcHJvZHVjdG5hbWU+CisgICAgIGxvZ3MgYW4gZXJyb3IgYW5kIGNv bnRpbnVlcyB1c2luZyB0aGUgYnVpbHQtaW4gbWV0aG9kLgorICAgIDwvcGFyYT4KKyAgICA8cGFy YT4KKyAgICAgRGVmYXVsdCBpcyAxMCBzZWNvbmRzLiBWYWxpZCByYW5nZSBpcyAxLTM2MDAgc2Vj b25kcy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBi ZSBjaGFuZ2VkIGJ5IHJlbG9hZGluZyB0aGUgPHByb2R1Y3RuYW1lPlBncG9vbC1JSTwvPiBjb25m aWd1cmF0aW9ucy4KKyAgICA8L3BhcmE+CisgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRy eT4KKwogICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbG9nLXN0YW5kYnktZGVsYXkiIHhyZWZsYWJl bD0ibG9nX3N0YW5kYnlfZGVsYXkiPgogICAgPHRlcm0+PHZhcm5hbWU+bG9nX3N0YW5kYnlfZGVs YXk8L3Zhcm5hbWU+ICg8dHlwZT5lbnVtPC90eXBlPikKICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0t Z2l0IGEvc3JjL2NvbmZpZy9wb29sX2NvbmZpZ192YXJpYWJsZXMuYyBiL3NyYy9jb25maWcvcG9v bF9jb25maWdfdmFyaWFibGVzLmMKaW5kZXggMGEwZTQ4MzE0OTE5MGUxNGNhMTM0MDZjMDhkMGVl MmFjMGE5YzUzYS4uN2M2ZDE4MDMxMTc1NDFhYWJhNTBkOWY5ZmY2MmU0MWUxNDVjNWQ5NSAxMDA2 NDQKLS0tIGEvc3JjL2NvbmZpZy9wb29sX2NvbmZpZ192YXJpYWJsZXMuYworKysgYi9zcmMvY29u ZmlnL3Bvb2xfY29uZmlnX3ZhcmlhYmxlcy5jCkBAIC05ODAsNiArOTgwLDE2IEBAIHN0YXRpYyBz dHJ1Y3QgY29uZmlnX3N0cmluZyBDb25maWd1cmVOYW1lc1N0cmluZ1tdID0KIAkJTlVMTCwgTlVM TCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsicmVwbGljYXRpb25fZGVsYXlfc291cmNlX2Nt ZCIsIENGR0NYVF9SRUxPQUQsIFNUUkVBTUlOR19SRVBMSUNBVElPTl9DT05GSUcsCisJCQkiRXh0 ZXJuYWwgY29tbWFuZCB0byByZXRyaWV2ZSByZXBsaWNhdGlvbiBkZWxheSBpbmZvcm1hdGlvbi4i LAorCQkJQ09ORklHX1ZBUl9UWVBFX1NUUklORywgZmFsc2UsIDAKKwkJfSwKKwkJJmdfcG9vbF9j b25maWcucmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCwKKwkJIiIsCisJCU5VTEwsIE5VTEws IE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImZhaWxiYWNrX2NvbW1hbmQiLCBDRkdDWFRfUkVM T0FELCBGQUlMT1ZFUl9DT05GSUcsCiAJCQkiQ29tbWFuZCB0byBleGVjdXRlIHdoZW4gYmFja2Vu ZCBub2RlIGlzIGF0dGFjaGVkLiIsCkBAIC0yMzM0LDYgKzIzNDQsMTcgQEAgc3RhdGljIHN0cnVj dCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJ fSwKIAorCXsKKwkJeyJyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dCIsIENGR0NYVF9S RUxPQUQsIFNUUkVBTUlOR19SRVBMSUNBVElPTl9DT05GSUcsCisJCQkiVGltZW91dCBmb3IgZXh0 ZXJuYWwgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCBleGVjdXRpb24gaW4gc2Vjb25kcy4iLAor CQkJQ09ORklHX1ZBUl9UWVBFX0lOVCwgZmFsc2UsIDAKKwkJfSwKKwkJJmdfcG9vbF9jb25maWcu cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQsCisJCTEwLAorCQkxLCAzNjAwLAorCQlO VUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCS8qIEVuZC1vZi1saXN0IG1hcmtlciAqLwogCUVNUFRZ X0NPTkZJR19JTlQKIH07CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb29sX2NvbmZpZy5oIGIv c3JjL2luY2x1ZGUvcG9vbF9jb25maWcuaAppbmRleCA3NThkNTE1NTI1YzkzYzFjM2YyNjg2ZGEw NDliMjk0YTI4NmE1NzRhLi42ZjVmODhmYjIwMGMyZWE4MmNjY2RkZDhmMDJjMzVjOGQwYWRlOGY0 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb29sX2NvbmZpZy5oCisrKyBiL3NyYy9pbmNsdWRl L3Bvb2xfY29uZmlnLmgKQEAgLTg2LDcgKzg2LDYgQEAgdHlwZWRlZiBlbnVtIExvZ1N0YW5kYnlE ZWxheU1vZGVzCiAJTFNEX05PTkUKIH0gTG9nU3RhbmRieURlbGF5TW9kZXM7CiAKLQogdHlwZWRl ZiBlbnVtIE1lbUNhY2hlTWV0aG9kCiB7CiAJU0hNRU1fQ0FDSEUgPSAxLApAQCAtMzY0LDYgKzM2 Myw4IEBAIHR5cGVkZWYgc3RydWN0CiAJY2hhcgkgICAqc3JfY2hlY2tfcGFzc3dvcmQ7CS8qIHBh c3N3b3JkIGZvciBzcl9jaGVja191c2VyICovCiAJY2hhcgkgICAqc3JfY2hlY2tfZGF0YWJhc2U7 CS8qIFBvc3RncmVTUUwgZGF0YWJhc2UgbmFtZSBmb3Igc3RyZWFtaW5nCiAJCQkJCQkJCQkgKiBy ZXBsaWNhdGlvbiBjaGVjayAqLworCWNoYXIJICAgKnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9j bWQ7CS8qIGV4dGVybmFsIGNvbW1hbmQgZm9yIHJlcGxpY2F0aW9uIGRlbGF5ICovCisJaW50CQkJ cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQ7CS8qIHRpbWVvdXQgZm9yIGV4dGVybmFs IGNvbW1hbmQgaW4gc2Vjb25kcyAqLwogCWNoYXIJICAgKmZhaWxvdmVyX2NvbW1hbmQ7CS8qIGV4 ZWN1dGUgY29tbWFuZCB3aGVuIGZhaWxvdmVyIGhhcHBlbnMgKi8KIAljaGFyCSAgICpmb2xsb3df cHJpbWFyeV9jb21tYW5kOyAvKiBleGVjdXRlIGNvbW1hbmQgd2hlbiBmYWlsb3ZlciBpcwogCQkJ CQkJCQkJCSAqIGVuZGVkICovCmRpZmYgLS1naXQgYS9zcmMvc2FtcGxlL3BncG9vbC5jb25mLnNh bXBsZS1zdHJlYW0gYi9zcmMvc2FtcGxlL3BncG9vbC5jb25mLnNhbXBsZS1zdHJlYW0KaW5kZXgg Nzk3OTA2NDkxY2I5OTZkMjRjNTliMzcxMGY0NjJmMTQwNTczNzI0OC4uNDU0ZmRiOWU1ZDFmZDY1 NDM3YjZhNjdmMTJhYjYyNjU4ZWEwOGY0OSAxMDA2NDQKLS0tIGEvc3JjL3NhbXBsZS9wZ3Bvb2wu Y29uZi5zYW1wbGUtc3RyZWFtCisrKyBiL3NyYy9zYW1wbGUvcGdwb29sLmNvbmYuc2FtcGxlLXN0 cmVhbQpAQCAtNTE5LDYgKzUxOSwyMCBAQCBiYWNrZW5kX2NsdXN0ZXJpbmdfbW9kZSA9IHN0cmVh bWluZ19yZXBsaWNhdGlvbgogCiAjc3JfY2hlY2tfZGF0YWJhc2UgPSAncG9zdGdyZXMnCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRGF0YWJhc2UgbmFtZSBmb3Igc3RyZWFt aW5nIHJlcGxpY2F0aW9uIGNoZWNrCisKKyNyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kID0g JycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFeHRlcm5hbCBjb21tYW5k IHRvIHJldHJpZXZlIHJlcGxpY2F0aW9uIGRlbGF5IGluZm9ybWF0aW9uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgSWYgc2V0LCBwZ3Bvb2wgdXNlcyB0aGlzIGNvbW1hbmQg aW5zdGVhZCBvZiBidWlsdC1pbiBxdWVyaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgQ29tbWFuZCByZWNlaXZlcyByZXBsaWNhIG5vZGUgaWRlbnRpZmllcnMgKGhvc3Q6 cG9ydCkgYXMgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg UHJpbWFyeSBub2RlIGlzIG9taXR0ZWQgZnJvbSBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBDb21tYW5kIHNob3VsZCBvdXRwdXQgb25lIGRlbGF5IHZhbHVl IChpbiBtcykgcGVyIHJlcGxpY2EKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBVc2UgLTEgdG8gaW5kaWNhdGUgYSByZXBsaWNhIHRoYXQgaXMgZG93biBidXQgbm90IHlldCBk ZXRlY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZvcm1hdDogIjI1 IDEwMCIgZm9yIDIgcmVwbGljYXMgKGUuZy4sIDMtbm9kZSBjbHVzdGVyIHdpdGggMSBwcmltYXJ5 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENvbW1hbmQgcnVucyBhcyB0 aGUgcGdwb29sIHByb2Nlc3MgdXNlcgorI3JlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0 ID0gMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaW1lb3V0IGZvciBl eHRlcm5hbCBjb21tYW5kIGV4ZWN1dGlvbiBpbiBzZWNvbmRzCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgUmFuZ2U6IDEtMzYwMCBzZWNvbmRzIChkZWZhdWx0OiAxMCkKKwog I2RlbGF5X3RocmVzaG9sZCA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBUaHJlc2hvbGQgYmVmb3JlIG5vdCBkaXNwYXRjaGluZyBxdWVyeSB0byBzdGFuZGJ5IG5vZGUK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBVbml0IGlzIGluIGJ5dGVzCmRp ZmYgLS1naXQgYS9zcmMvc3RyZWFtaW5nX3JlcGxpY2F0aW9uL3Bvb2xfd29ya2VyX2NoaWxkLmMg Yi9zcmMvc3RyZWFtaW5nX3JlcGxpY2F0aW9uL3Bvb2xfd29ya2VyX2NoaWxkLmMKaW5kZXggNWJm MTljMzdkMGNmMTAzM2M2MjRmMzRhYjM3MzdmMTg4NzFiYzJmNS4uNDU3ZDBmYWIwOTEyZDQ0YjE5 ZGU3MGMwNWJlOGYyMDQ2ZGQ5ODdjNSAxMDA2NDQKLS0tIGEvc3JjL3N0cmVhbWluZ19yZXBsaWNh dGlvbi9wb29sX3dvcmtlcl9jaGlsZC5jCisrKyBiL3NyYy9zdHJlYW1pbmdfcmVwbGljYXRpb24v cG9vbF93b3JrZXJfY2hpbGQuYwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5o PgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8 c3lzL3dhaXQuaD4KIAogI2lmZGVmIEhBVkVfQ1JZUFRfSAogI2luY2x1ZGUgPGNyeXB0Lmg+CkBA IC03Niw2ICs3Nyw4IEBAIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgcmVzdGFydF9yZXF1 ZXN0ID0gMDsKIHN0YXRpYyB2b2lkIGVzdGFibGlzaF9wZXJzaXN0ZW50X2Nvbm5lY3Rpb24odm9p ZCk7CiBzdGF0aWMgdm9pZCBkaXNjYXJkX3BlcnNpc3RlbnRfY29ubmVjdGlvbih2b2lkKTsKIHN0 YXRpYyB2b2lkIGNoZWNrX3JlcGxpY2F0aW9uX3RpbWVfbGFnKHZvaWQpOworc3RhdGljIHZvaWQg Y2hlY2tfcmVwbGljYXRpb25fdGltZV9sYWdfd2l0aF9jbWQodm9pZCk7CitzdGF0aWMgY2hhciAq YnVpbGRfaW5zdGFuY2VfaWRlbnRpZmllcl9mb3Jfbm9kZShpbnQgbm9kZV9pZCk7CiBzdGF0aWMg dm9pZCBDaGVja1JlcGxpY2F0aW9uVGltZUxhZ0Vycm9yQ2Iodm9pZCAqYXJnKTsKIHN0YXRpYyB1 bnNpZ25lZCBsb25nIGxvbmcgaW50IHRleHRfdG9fbHNuKGNoYXIgKnRleHQpOwogc3RhdGljIFJF VFNJR1RZUEUgbXlfc2lnbmFsX2hhbmRsZXIoaW50IHNpZyk7CkBAIC0yNTksMTEgKzI2MiwxNiBA QCBkb193b3JrZXJfY2hpbGQodm9pZCAqcGFyYW1zKQogCQkJCQlQT09MX05PREVfU1RBVFVTICpu b2RlX3N0YXR1czsKIAkJCQkJaW50CQkJaTsKIAotCQkJCQkvKiBEbyByZXBsaWNhdGlvbiB0aW1l IGxhZyBjaGVja2luZyAqLwotCQkJCQljaGVja19yZXBsaWNhdGlvbl90aW1lX2xhZygpOworCQkJ LyogRG8gcmVwbGljYXRpb24gdGltZSBsYWcgY2hlY2tpbmcgKi8KKwkJCS8qIFVzZSBleHRlcm5h bCBjb21tYW5kIGlmIHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQgaXMgY29uZmlndXJlZCAq LworCQkJaWYgKHBvb2xfY29uZmlnLT5yZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kICYmCisJ CQkJc3RybGVuKHBvb2xfY29uZmlnLT5yZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kKSA+IDAp CisJCQkJY2hlY2tfcmVwbGljYXRpb25fdGltZV9sYWdfd2l0aF9jbWQoKTsKKwkJCWVsc2UKKwkJ CQljaGVja19yZXBsaWNhdGlvbl90aW1lX2xhZygpOwogCi0JCQkJCS8qIENoZWNrIG5vZGUgc3Rh dHVzICovCi0JCQkJCW5vZGVfc3RhdHVzID0gdmVyaWZ5X2JhY2tlbmRfbm9kZV9zdGF0dXMoc2xv dHMpOworCQkJLyogQ2hlY2sgbm9kZSBzdGF0dXMgKi8KKwkJCW5vZGVfc3RhdHVzID0gdmVyaWZ5 X2JhY2tlbmRfbm9kZV9zdGF0dXMoc2xvdHMpOwogCiAKIAkJCQkJZm9yIChpID0gMDsgaSA8IE5V TV9CQUNLRU5EUzsgaSsrKQpAQCAtNjU5LDYgKzY2Nyw0MjAgQEAgY2hlY2tfcmVwbGljYXRpb25f dGltZV9sYWcodm9pZCkKIAllcnJvcl9jb250ZXh0X3N0YWNrID0gY2FsbGJhY2sucHJldmlvdXM7 CiB9CiAKKyNkZWZpbmUgTUFYX0NNRF9PVVRQVVQgNDA5NgorI2RlZmluZSBNQVhfUkVBU09OQUJM RV9ERUxBWV9NUyAzNjAwMDAwLjAgIC8qIDEgaG91ciBpbiBtaWxsaXNlY29uZHMgKi8KKworLyoK KyAqIENoZWNrIHJlcGxpY2F0aW9uIHRpbWUgbGFnIHVzaW5nIGV4dGVybmFsIGNvbW1hbmQKKyAq CisgKiBUaGUgZXh0ZXJuYWwgY29tbWFuZCByZWNlaXZlcyBvbmx5IHJlcGxpY2EgKHN0YW5kYnkp IG5vZGUgaWRlbnRpZmllcnMgYXMgYXJndW1lbnRzLAorICogb21pdHRpbmcgdGhlIHByaW1hcnkg bm9kZS4gSXQgcmV0dXJucyBkZWxheSB2YWx1ZXMgaW4gbWlsbGlzZWNvbmRzIGZvciBlYWNoIHJl cGxpY2EuCisgKiBBIHZhbHVlIG9mIC0xIGluZGljYXRlcyBhIG5vZGUgdGhhdCBpcyBkb3duIGJ1 dCBub3QgeWV0IGRldGVjdGVkIGJ5IHBncG9vbCdzIGhlYWx0aCBjaGVja3MuCisgKi8KK3N0YXRp YyB2b2lkCitjaGVja19yZXBsaWNhdGlvbl90aW1lX2xhZ193aXRoX2NtZCh2b2lkKQoreworCWNo YXIJCSAgICpjb21tYW5kID0gTlVMTDsKKwljaGFyCQkgICAqbGluZTsKKwljaGFyCQkgICAqdG9r ZW47CisJY2hhcgkJICAgKnNhdmVwdHI7CisJZG91YmxlCQkJZGVsYXlfbXM7CisJdWludDY0CQkJ ZGVsYXk7CisJaW50CQkJCXRva2VuX2NvdW50ID0gMDsKKwlCYWNrZW5kSW5mbwkgICAqYmtpbmZv OworCUVycm9yQ29udGV4dENhbGxiYWNrIGNhbGxiYWNrOworCWludAkJCQlwaXBlZmRbMl0gPSB7 LTEsIC0xfTsKKwlwaWRfdAkJCXBpZCA9IC0xOworCWludAkJCQlyZXQ7CisJc3RydWN0IHRpbWV2 YWwJdGltZW91dDsKKwlmZF9zZXQJCQlyZWFkZmRzOworCXNzaXplX3QJCQlieXRlc19yZWFkOwor CWludAkJCQlzdGF0dXM7CisJaW50CQkJCW51bV9yZXBsaWNhczsKKworCWlmIChOVU1fQkFDS0VO RFMgPD0gMSkKKwl7CisJCS8qIElmIHRoZXJlJ3Mgb25seSBvbmUgbm9kZSwgdGhlcmUncyBubyBw b2ludCB0byBkbyBjaGVja2luZyAqLworCQlyZXR1cm47CisJfQorCisJaWYgKFJFQUxfUFJJTUFS WV9OT0RFX0lEIDwgMCkKKwl7CisJCS8qIE5vIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUncyBubyBw cmltYXJ5ICovCisJCXJldHVybjsKKwl9CisKKwlpZiAoIVZBTElEX0JBQ0tFTkQoUkVBTF9QUklN QVJZX05PREVfSUQpKQorCXsKKwkJLyogTm8gbmVlZCB0byBjaGVjayByZXBsaWNhdGlvbiBkZWxh eSBpZiBwcmltYXJ5IGlzIGRvd24gKi8KKwkJcmV0dXJuOworCX0KKworCS8qIENhcHR1cmUgcHJp bWFyeSBub2RlIElEIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucyBkdXJpbmcgZXhlY3V0aW9uICov CisJaW50IHByaW1hcnlfbm9kZV9pZCA9IFJFQUxfUFJJTUFSWV9OT0RFX0lEOworCisJaWYgKCFw b29sX2NvbmZpZy0+cmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCB8fAorCQlzdHJsZW4ocG9v bF9jb25maWctPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQpID09IDApCisJeworCQllcmVw b3J0KFdBUk5JTkcsCisJCQkJKGVycm1zZygicmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCBp cyBub3QgY29uZmlndXJlZCIpLAorCQkJCSBlcnJoaW50KCJTZXQgcmVwbGljYXRpb25fZGVsYXlf c291cmNlX2NtZCB0byB1c2UgZXh0ZXJuYWwgY29tbWFuZCBtb2RlIikpKTsKKwkJLyogRmFsbCBi YWNrIHRvIGJ1aWx0aW4gbWV0aG9kICovCisJCWNoZWNrX3JlcGxpY2F0aW9uX3RpbWVfbGFnKCk7 CisJCXJldHVybjsKKwl9CisKKwkvKiBBbGxvY2F0ZSBidWZmZXIgZm9yIGNvbW1hbmQgb3V0cHV0 ICovCisJbGluZSA9IHBhbGxvYyhNQVhfQ01EX09VVFBVVCk7CisJbWVtc2V0KGxpbmUsIDAsIE1B WF9DTURfT1VUUFVUKTsKKworCS8qCisJICogUmVnaXN0ZXIgYSBlcnJvciBjb250ZXh0IGNhbGxi YWNrIHRvIHRocm93IHByb3BlciBjb250ZXh0IG1lc3NhZ2UKKwkgKi8KKwljYWxsYmFjay5jYWxs YmFjayA9IENoZWNrUmVwbGljYXRpb25UaW1lTGFnRXJyb3JDYjsKKwljYWxsYmFjay5hcmcgPSBO VUxMOworCWNhbGxiYWNrLnByZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9j b250ZXh0X3N0YWNrID0gJmNhbGxiYWNrOworCisJLyogRXhlY3V0ZSBjb21tYW5kIGFzIGN1cnJl bnQgcHJvY2VzcyB1c2VyICovCisJUEdfVFJZKCk7CisJeworCQljb25zdCBjaGFyICpiYXNlX2Nv bW1hbmQgPSBwb29sX2NvbmZpZy0+cmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZDsKKwkJc2l6 ZV90IHRvdGFsX2xlbiA9IHN0cmxlbihiYXNlX2NvbW1hbmQpICsgMTsgLyogKzEgZm9yIE5VTCAq LworCisJCS8qIEJ1aWxkIGNvbW1hbmQgd2l0aCByZXBsaWNhLW9ubHkgYXJndW1lbnRzIChvbWl0 IHByaW1hcnkpICovCisJCS8qIENhbGN1bGF0ZSB0b3RhbCBjb21tYW5kIGxlbmd0aCBpbmNsdWRp bmcgc3BhY2Utc2VwYXJhdGVkIHJlcGxpY2EgaWRlbnRpZmllcnMgKi8KKwkJZm9yIChpbnQgaSA9 IDA7IGkgPCBOVU1fQkFDS0VORFM7IGkrKykKKwkJeworCQkJaWYgKGkgPT0gcHJpbWFyeV9ub2Rl X2lkKQorCQkJCWNvbnRpbnVlOyAvKiBTa2lwIHByaW1hcnkgbm9kZSAqLworCisJCQljaGFyICpp ZGVudCA9IGJ1aWxkX2luc3RhbmNlX2lkZW50aWZpZXJfZm9yX25vZGUoaSk7CisJCQl0b3RhbF9s ZW4gKz0gMSAvKiBzcGFjZSAqLyArIHN0cmxlbihpZGVudCk7CisJCQlwZnJlZShpZGVudCk7CisJ CX0KKworCQljb21tYW5kID0gcGFsbG9jKHRvdGFsX2xlbik7CisJCXN0cmxjcHkoY29tbWFuZCwg YmFzZV9jb21tYW5kLCB0b3RhbF9sZW4pOworCisJCS8qIEFwcGVuZCByZXBsaWNhIGlkZW50aWZp ZXJzICovCisJCXNpemVfdCBjdXJyZW50X2xlbiA9IHN0cmxlbihjb21tYW5kKTsKKwkJZm9yIChp bnQgaSA9IDA7IGkgPCBOVU1fQkFDS0VORFM7IGkrKykKKwkJeworCQkJaWYgKGkgPT0gcHJpbWFy eV9ub2RlX2lkKQorCQkJCWNvbnRpbnVlOyAvKiBTa2lwIHByaW1hcnkgbm9kZSAqLworCisJCQlj aGFyICppZGVudCA9IGJ1aWxkX2luc3RhbmNlX2lkZW50aWZpZXJfZm9yX25vZGUoaSk7CisKKwkJ CS8qIEFwcGVuZCBzcGFjZSBhbmQgaWRlbnRpZmllciAqLworCQkJc25wcmludGYoY29tbWFuZCAr IGN1cnJlbnRfbGVuLCB0b3RhbF9sZW4gLSBjdXJyZW50X2xlbiwgIiAlcyIsIGlkZW50KTsKKwkJ CWN1cnJlbnRfbGVuICs9IHN0cmxlbihjb21tYW5kICsgY3VycmVudF9sZW4pOworCisJCQlwZnJl ZShpZGVudCk7CisJCX0KKworCQllcmVwb3J0KERFQlVHMSwKKwkJCQkoZXJybXNnKCJleGVjdXRp bmcgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZDogJXMiLCBjb21tYW5kKSkpOworCisJCWlmIChw aXBlKHBpcGVmZCkgPT0gLTEpCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2co InBpcGUgZmFpbGVkOiAlbSIpKSk7CisJCX0KKworCQlwaWQgPSBmb3JrKCk7CisJCWlmIChwaWQg PT0gLTEpCisJCXsKKwkJCWNsb3NlKHBpcGVmZFswXSk7CisJCQljbG9zZShwaXBlZmRbMV0pOwor CQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygiZm9yayBmYWlsZWQ6ICVtIikpKTsKKwkJ fQorCisJCWlmIChwaWQgPT0gMCkKKwkJeworCQkJLyogQ2hpbGQgcHJvY2VzcyAqLworCQkJY2xv c2UocGlwZWZkWzBdKTsgLyogQ2xvc2UgcmVhZCBlbmQgKi8KKwkJCWlmIChkdXAyKHBpcGVmZFsx XSwgU1RET1VUX0ZJTEVOTykgPT0gLTEpCisJCQl7CisJCQkJZnByaW50ZihzdGRlcnIsICJkdXAy IGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisJCQkJZXhpdCgxKTsKKwkJCX0KKwkJ CWNsb3NlKHBpcGVmZFsxXSk7IC8qIENsb3NlIHdyaXRlIGVuZCAoZHVwbGljYXRlZCB0byBzdGRv dXQpICovCisKKwkJCS8qIEV4ZWN1dGUgY29tbWFuZCB1c2luZyBzaGVsbCAqLworCQkJZXhlY2wo Ii9iaW4vc2giLCAic2giLCAiLWMiLCBjb21tYW5kLCAoY2hhciAqKU5VTEwpOworCisJCQkvKiBJ ZiBleGVjbCBmYWlscyAqLworCQkJZnByaW50ZihzdGRlcnIsICJleGVjbCBmYWlsZWQ6ICVzXG4i LCBzdHJlcnJvcihlcnJubykpOworCQkJX2V4aXQoMTI3KTsKKwkJfQorCisJCS8qIFBhcmVudCBw cm9jZXNzICovCisJCWNsb3NlKHBpcGVmZFsxXSk7IC8qIENsb3NlIHdyaXRlIGVuZCAqLworCQlw aXBlZmRbMV0gPSAtMTsKKworCQkvKiBTZXQgdXAgdGltZW91dCBmb3Igc2VsZWN0ICovCisJCXRp bWVvdXQudHZfc2VjID0gcG9vbF9jb25maWctPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1l b3V0OworCQl0aW1lb3V0LnR2X3VzZWMgPSAwOworCisJCUZEX1pFUk8oJnJlYWRmZHMpOworCQlG RF9TRVQocGlwZWZkWzBdLCAmcmVhZGZkcyk7CisKKwkJLyogV2FpdCBmb3Igb3V0cHV0IG9yIHRp bWVvdXQgKi8KKwkJcmV0ID0gc2VsZWN0KHBpcGVmZFswXSArIDEsICZyZWFkZmRzLCBOVUxMLCBO VUxMLCAmdGltZW91dCk7CisKKwkJaWYgKHJldCA9PSAtMSkKKwkJeworCQkJaW50IHNhdmVfZXJy bm8gPSBlcnJubzsKKwkJCWtpbGwocGlkLCBTSUdLSUxMKTsKKwkJCXdhaXRwaWQocGlkLCBOVUxM LCAwKTsKKwkJCXBpZCA9IC0xOworCQkJY2xvc2UocGlwZWZkWzBdKTsKKwkJCXBpcGVmZFswXSA9 IC0xOworCQkJaWYgKHNhdmVfZXJybm8gPT0gRUlOVFIpCisJCQl7CisJCQkJLyogSW50ZXJydXB0 ZWQgKi8KKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJKGVycm1zZygic2VsZWN0IGludGVycnVw dGVkIGR1cmluZyByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIGV4ZWN1dGlvbiIpKSk7CisJCQl9 CisJCQllbHNlCisJCQl7CisJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCShlcnJtc2coInNlbGVj dCBmYWlsZWQ6ICVtIikpKTsKKwkJCX0KKwkJfQorCQllbHNlIGlmIChyZXQgPT0gMCkKKwkJewor CQkJLyogVGltZW91dCAqLworCQkJa2lsbChwaWQsIFNJR0tJTEwpOworCQkJd2FpdHBpZChwaWQs IE5VTEwsIDApOworCQkJcGlkID0gLTE7CisJCQljbG9zZShwaXBlZmRbMF0pOworCQkJcGlwZWZk WzBdID0gLTE7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJybXNnKCJyZXBsaWNhdGlvbiBk ZWxheSBjb21tYW5kIHRpbWVkIG91dCBhZnRlciAlZCBzZWNvbmRzOiAlcyIsCisJCQkJCQkJcG9v bF9jb25maWctPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0LCBjb21tYW5kKSwKKwkJ CQkJIGVycmhpbnQoIkNvbnNpZGVyIGluY3JlYXNpbmcgcmVwbGljYXRpb25fZGVsYXlfc291cmNl X3RpbWVvdXQgb3Igb3B0aW1pemluZyB0aGUgY29tbWFuZCIpKSk7CisJCX0KKworCQkvKiBEYXRh IGlzIGF2YWlsYWJsZSAqLworCQlieXRlc19yZWFkID0gcmVhZChwaXBlZmRbMF0sIGxpbmUsIE1B WF9DTURfT1VUUFVUIC0gMSk7CisJCWNsb3NlKHBpcGVmZFswXSk7CisJCXBpcGVmZFswXSA9IC0x OworCisJCS8qIFdhaXQgZm9yIGNoaWxkIHRvIGZpbmlzaCAqLworCQl3YWl0cGlkKHBpZCwgJnN0 YXR1cywgMCk7CisJCXBpZCA9IC0xOworCisJCWlmIChieXRlc19yZWFkIDwgMCkKKwkJeworCQkJ ZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygiZmFpbGVkIHRvIHJlYWQgb3V0cHV0IGZyb20g cmVwbGljYXRpb24gZGVsYXkgY29tbWFuZDogJXMiLCBjb21tYW5kKSwKKwkJCQkJIGVycmRldGFp bCgicmVhZCBmYWlsZWQ6ICVtIikpKTsKKwkJfQorCisJCS8qIENoZWNrIGV4aXQgc3RhdHVzICov CisJCWlmIChXSUZFWElURUQoc3RhdHVzKSAmJiBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IDApCisJ CXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2coInJlcGxpY2F0aW9uIGRlbGF5IGNv bW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVkOiAlcyIsCisJCQkJCQkJV0VYSVRTVEFUVVMo c3RhdHVzKSwgY29tbWFuZCkpKTsKKwkJfQorCQllbHNlIGlmIChXSUZTSUdOQUxFRChzdGF0dXMp KQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJybXNnKCJyZXBsaWNhdGlvbiBkZWxh eSBjb21tYW5kIHRlcm1pbmF0ZWQgYnkgc2lnbmFsICVkOiAlcyIsCisJCQkJCQkJV1RFUk1TSUco c3RhdHVzKSwgY29tbWFuZCkpKTsKKwkJfQorCisJCS8qIENoZWNrIGlmIG91dHB1dCB3YXMgdHJ1 bmNhdGVkICovCisJCWlmIChieXRlc19yZWFkID09IE1BWF9DTURfT1VUUFVUIC0gMSAmJiBsaW5l W01BWF9DTURfT1VUUFVUIC0gMl0gIT0gJ1xuJykKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAor CQkJCQkoZXJybXNnKCJyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIG91dHB1dCBtYXkgaGF2ZSBi ZWVuIHRydW5jYXRlZCIpKSk7CisJCX0KKworCQkvKiBOdWxsLXRlcm1pbmF0ZSB0aGUgc3RyaW5n ICovCisJCWxpbmVbYnl0ZXNfcmVhZF0gPSAnXDAnOworCisJCXBmcmVlKGNvbW1hbmQpOworCQlj b21tYW5kID0gTlVMTDsKKworCQkvKiBTZXQgcHJpbWFyeSBub2RlIGRlbGF5IHRvIDAgKi8KKwkJ YmtpbmZvID0gcG9vbF9nZXRfbm9kZV9pbmZvKHByaW1hcnlfbm9kZV9pZCk7CisJCWJraW5mby0+ c3RhbmRieV9kZWxheSA9IDA7CisJCWJraW5mby0+c3RhbmRieV9kZWxheV9ieV90aW1lID0gdHJ1 ZTsKKworCQkvKiBDb3VudCBleHBlY3RlZCByZXBsaWNhcyAqLworCQludW1fcmVwbGljYXMgPSBO VU1fQkFDS0VORFMgLSAxOyAvKiBUb3RhbCBub2RlcyBtaW51cyBwcmltYXJ5ICovCisKKwkJLyog Q291bnQgdG9rZW5zIGluIG91dHB1dCBmb3IgdmFsaWRhdGlvbiAqLworCQljaGFyICpsaW5lX2Nv cHkgPSBwc3RyZHVwKGxpbmUpOworCQljaGFyICp0ZW1wX3Rva2VuID0gc3RydG9rKGxpbmVfY29w eSwgIiBcdFxuIik7CisJCXdoaWxlICh0ZW1wX3Rva2VuICE9IE5VTEwpCisJCXsKKwkJCXRva2Vu X2NvdW50Kys7CisJCQl0ZW1wX3Rva2VuID0gc3RydG9rKE5VTEwsICIgXHRcbiIpOworCQl9CisJ CXBmcmVlKGxpbmVfY29weSk7CisKKwkJLyogVmFsaWRhdGUgb3V0cHV0IGZvcm1hdCAqLworCQlp ZiAodG9rZW5fY291bnQgPT0gMCkKKwkJeworCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkoZXJy bXNnKCJyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIHByb2R1Y2VkIG5vIG91dHB1dCIpLAorCQkJ CQkgZXJyaGludCgiQ29tbWFuZCBzaG91bGQgb3V0cHV0IGRlbGF5IHZhbHVlcyBzZXBhcmF0ZWQg Ynkgc3BhY2VzLCBvbmUgcGVyIHJlcGxpY2Egbm9kZSIpKSk7CisJCX0KKwkJZWxzZSBpZiAodG9r ZW5fY291bnQgPCBudW1fcmVwbGljYXMpCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJ KGVycm1zZygicmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCByZXR1cm5lZCAlZCB2YWx1ZXMsIGV4 cGVjdGVkICVkIChvbmUgcGVyIHJlcGxpY2EsIGV4Y2x1ZGluZyBwcmltYXJ5KSIsCisJCQkJCQkJ dG9rZW5fY291bnQsIG51bV9yZXBsaWNhcyksCisJCQkJCSBlcnJoaW50KCJDb21tYW5kIHNob3Vs ZCBvdXRwdXQgb25lIGRlbGF5IHZhbHVlIHBlciByZXBsaWNhIG5vZGUuIE1pc3NpbmcgdmFsdWVz IHdpbGwgYmUgdHJlYXRlZCBhcyAwLiIpKSk7CisJCX0KKwkJZWxzZSBpZiAodG9rZW5fY291bnQg PiBudW1fcmVwbGljYXMpCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJKGVycm1zZygi cmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCByZXR1cm5lZCAlZCB2YWx1ZXMsIGV4cGVjdGVkICVk IChvbmUgcGVyIHJlcGxpY2EsIGV4Y2x1ZGluZyBwcmltYXJ5KSIsCisJCQkJCQkJdG9rZW5fY291 bnQsIG51bV9yZXBsaWNhcyksCisJCQkJCSBlcnJoaW50KCJDb21tYW5kIHNob3VsZCBvdXRwdXQg ZXhhY3RseSBvbmUgZGVsYXkgdmFsdWUgcGVyIHJlcGxpY2Egbm9kZS4gRXh0cmEgdmFsdWVzIHdp bGwgYmUgaWdub3JlZC4iKSkpOworCQl9CisKKwkJLyogUGFyc2UgdGhlIG91dHB1dCAtIG9uZSBk ZWxheSB2YWx1ZSBwZXIgcmVwbGljYSBpbiBvcmRlciAqLworCQl0b2tlbiA9IHN0cnRva19yKGxp bmUsICIgXHRcbiIsICZzYXZlcHRyKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IE5VTV9CQUNL RU5EUyAmJiB0b2tlbiAhPSBOVUxMOyBpKyspCisJCXsKKwkJCWlmIChpID09IHByaW1hcnlfbm9k ZV9pZCkKKwkJCQljb250aW51ZTsgLyogU2tpcCBwcmltYXJ5IC0gaXQncyBub3QgaW4gdGhlIG91 dHB1dCAqLworCisJCQlpZiAoIVZBTElEX0JBQ0tFTkQoaSkpCisJCQl7CisJCQkJLyogU2tpcCBp bnZhbGlkIGJhY2tlbmQgYnV0IGNvbnN1bWUgdG9rZW4gKi8KKwkJCQl0b2tlbiA9IHN0cnRva19y KE5VTEwsICIgXHRcbiIsICZzYXZlcHRyKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJY2hh ciAqZW5kcHRyOworCQkJZGVsYXlfbXMgPSBzdHJ0b2QodG9rZW4sICZlbmRwdHIpOworCisJCQkv KiBWYWxpZGF0ZSB0aGUgY29udmVyc2lvbiAqLworCQkJaWYgKCplbmRwdHIgIT0gJ1wwJykKKwkJ CXsKKwkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCQkoZXJybXNnKCJpbnZhbGlkIGRlbGF5IHZh bHVlICclcycgZm9yIG5vZGUgJWQsIHRyZWF0aW5nIGFzIDAiLAorCQkJCQkJCQl0b2tlbiwgaSkp KTsKKwkJCQlkZWxheV9tcyA9IDA7CisJCQl9CisKKwkJCWJraW5mbyA9IHBvb2xfZ2V0X25vZGVf aW5mbyhpKTsKKworCQkJLyogSGFuZGxlIC0xIGZvciBkb3duIG5vZGVzICovCisJCQlpZiAoZGVs YXlfbXMgPT0gLTEuMCkKKwkJCXsKKwkJCQllcmVwb3J0KExPRywKKwkJCQkJCShlcnJtc2coIm5v ZGUgJWQgcmVwb3J0ZWQgYXMgZG93biBieSBleHRlcm5hbCBjb21tYW5kIChkZWxheSAtMSksIHJl bHlpbmcgb24gaGVhbHRoIGNoZWNrIGZvciBmYWlsb3ZlciBkZWNpc2lvbiIsCisJCQkJCQkJCWkp KSk7CisJCQkJLyogS2VlcCBwcmV2aW91cyBkZWxheSB2YWx1ZSwgZG9uJ3QgdHJpZ2dlciBmYWls b3ZlciAqLworCQkJCXRva2VuID0gc3RydG9rX3IoTlVMTCwgIiBcdFxuIiwgJnNhdmVwdHIpOwor CQkJCWNvbnRpbnVlOworCQkJfQorCisJCQkvKiBWYWxpZGF0ZSBkZWxheSB2YWx1ZSByYW5nZSAq LworCQkJaWYgKGRlbGF5X21zIDwgMCkKKwkJCXsKKwkJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJ CQkoZXJybXNnKCJuZWdhdGl2ZSBkZWxheSB2YWx1ZSAlLjNmIGZvciBub2RlICVkIChvdGhlciB0 aGFuIC0xKSwgdHJlYXRpbmcgYXMgMCIsCisJCQkJCQkJCWRlbGF5X21zLCBpKSkpOworCQkJCWRl bGF5X21zID0gMDsKKwkJCX0KKwkJCWVsc2UgaWYgKGRlbGF5X21zID4gTUFYX1JFQVNPTkFCTEVf REVMQVlfTVMpCisJCQl7CisJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJKGVycm1zZygiZXh0 cmVtZWx5IGxhcmdlIGRlbGF5IHZhbHVlICUuM2YgZm9yIG5vZGUgJWQiLAorCQkJCQkJCQlkZWxh eV9tcywgaSkpKTsKKwkJCX0KKworCQkJLyogQ29udmVydCBkZWxheSBmcm9tIG1pbGxpc2Vjb25k cyB0byBtaWNyb3NlY29uZHMgZm9yIGludGVybmFsIHN0b3JhZ2UgKi8KKwkJCWRlbGF5ID0gKHVp bnQ2NCkoZGVsYXlfbXMgKiAxMDAwKTsKKwkJCWJraW5mby0+c3RhbmRieV9kZWxheSA9IGRlbGF5 OworCQkJYmtpbmZvLT5zdGFuZGJ5X2RlbGF5X2J5X3RpbWUgPSB0cnVlOworCisJCQkvKiBMb2cg ZGVsYXkgaWYgbmVjZXNzYXJ5ICovCisJCQl1aW50NjQgZGVsYXlfdGhyZXNob2xkX2J5X3RpbWUg PSBwb29sX2NvbmZpZy0+ZGVsYXlfdGhyZXNob2xkX2J5X3RpbWUgKiAxMDAwOyAvKiB0aHJlc2hv bGQgaXMgaW4gbWlsbGlzZWNvbmRzLCBjb252ZXJ0IHRvIG1pY3Jvc2Vjb25kcyAqLworCisJCQlp ZiAoKHBvb2xfY29uZmlnLT5sb2dfc3RhbmRieV9kZWxheSA9PSBMU0RfQUxXQVlTICYmIGRlbGF5 X21zID4gMCkgfHwKKwkJCQkocG9vbF9jb25maWctPmxvZ19zdGFuZGJ5X2RlbGF5ID09IExTRF9P VkVSX1RIUkVTSE9MRCAmJgorCQkJCSBia2luZm8tPnN0YW5kYnlfZGVsYXkgPiBkZWxheV90aHJl c2hvbGRfYnlfdGltZSkpCisJCQl7CisJCQkJZXJlcG9ydChMT0csCisJCQkJCQkoZXJybXNnKCJS ZXBsaWNhdGlvbiBvZiBub2RlOiAlZCBpcyBiZWhpbmQgJS4zZiBzZWNvbmQocykgZnJvbSB0aGUg cHJpbWFyeSBzZXJ2ZXIgKG5vZGU6ICVkKSBbZXh0ZXJuYWwgY29tbWFuZF0iLAorCQkJCQkJCQlp LCBkZWxheV9tcyAvIDEwMDAsIHByaW1hcnlfbm9kZV9pZCkpKTsKKwkJCX0KKworCQkJdG9rZW4g PSBzdHJ0b2tfcihOVUxMLCAiIFx0XG4iLCAmc2F2ZXB0cik7CisJCX0KKworCX0KKwlQR19DQVRD SCgpOworCXsKKwkJLyogQ2xlYW51cCBpbiBjYXNlIG9mIGVycm9yICovCisJCWlmIChwaWQgPiAw KSB7CisJCQlraWxsKHBpZCwgU0lHS0lMTCk7CisJCQl3YWl0cGlkKHBpZCwgTlVMTCwgMCk7CisJ CX0KKwkJaWYgKHBpcGVmZFswXSAhPSAtMSkgY2xvc2UocGlwZWZkWzBdKTsKKwkJaWYgKHBpcGVm ZFsxXSAhPSAtMSkgY2xvc2UocGlwZWZkWzFdKTsKKworCQlpZiAobGluZSkKKwkJCXBmcmVlKGxp bmUpOworCQlpZiAoY29tbWFuZCkKKwkJCXBmcmVlKGNvbW1hbmQpOworCQllcnJvcl9jb250ZXh0 X3N0YWNrID0gY2FsbGJhY2sucHJldmlvdXM7CisJCVBHX1JFX1RIUk9XKCk7CisJfQorCVBHX0VO RF9UUlkoKTsKKworCS8qIE5vcm1hbCBjbGVhbnVwICovCisJaWYgKGxpbmUpCisJCXBmcmVlKGxp bmUpOworCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGNhbGxiYWNrLnByZXZpb3VzOworfQorCisv KgorICogYnVpbGRfaW5zdGFuY2VfaWRlbnRpZmllcl9mb3Jfbm9kZQorICogIEJ1aWxkIGFuIGlk ZW50aWZpZXIgc3RyaW5nIGZvciBhIGJhY2tlbmQgbm9kZSBmb3IgcGFzc2luZyB0byBleHRlcm5h bCBjb21tYW5kcy4KKyAqICBGb3JtYXQ6ICI8aG9zdG5hbWU+Ojxwb3J0PiIKKyAqLworc3RhdGlj IGNoYXIgKgorYnVpbGRfaW5zdGFuY2VfaWRlbnRpZmllcl9mb3Jfbm9kZShpbnQgbm9kZV9pZCkK K3sKKwlCYWNrZW5kSW5mbyAqYmkgPSBwb29sX2dldF9ub2RlX2luZm8obm9kZV9pZCk7CisJY29u c3QgY2hhciAqaG9zdG5hbWU7CisKKwlpZiAoIWJpIHx8IGJpLT5iYWNrZW5kX2hvc3RuYW1lWzBd ID09ICdcMCcgfHwgYmktPmJhY2tlbmRfcG9ydCA8PSAwKQorCXsKKwkJLyogRmFsbGJhY2sgaWYg aG9zdG5hbWUgb3IgcG9ydCBpcyBub3Qgc2V0ICovCisJCXJldHVybiBwc3ByaW50ZigidW5rbm93 bl9ub2RlXyVkIiwgbm9kZV9pZCk7CisJfQorCisJaG9zdG5hbWUgPSBiaS0+YmFja2VuZF9ob3N0 bmFtZTsKKworCS8qIFZhbGlkYXRlIGhvc3RuYW1lIGZvciBzZWN1cml0eSAtIGNoZWNrIGZvciBz aGVsbCBtZXRhY2hhcmFjdGVycyAqLworCWlmIChzdHJwYnJrKGhvc3RuYW1lLCAiJGBcXHw7Jjw+ KClbXXt9XCJcJ1xuXHJcdCIpICE9IE5VTEwpCisJeworCQllcmVwb3J0KExPRywKKwkJCQkoZXJy bXNnKCJob3N0bmFtZSBmb3Igbm9kZSAlZCBjb250YWlucyBwb3RlbnRpYWxseSBkYW5nZXJvdXMg Y2hhcmFjdGVyczogJXMiLAorCQkJCQkJbm9kZV9pZCwgaG9zdG5hbWUpLAorCQkJCSBlcnJoaW50 KCJIb3N0bmFtZXMgd2l0aCBzaGVsbCBtZXRhY2hhcmFjdGVycyBtYXkgcG9zZSBzZWN1cml0eSBy aXNrcyB3aGVuIHVzZWQgd2l0aCBleHRlcm5hbCBjb21tYW5kcy4gQ29uc2lkZXIgdXNpbmcgSVAg YWRkcmVzc2VzIG9yIHNhbml0aXplZCBob3N0bmFtZXMuIikpKTsKKwl9CisKKwkvKiBVc2UgaG9z dG5hbWU6cG9ydCBmb3JtYXQgKi8KKwlyZXR1cm4gcHNwcmludGYoIiVzOiVkIiwgaG9zdG5hbWUs IGJpLT5iYWNrZW5kX3BvcnQpOworfQorCiBzdGF0aWMgdm9pZAogQ2hlY2tSZXBsaWNhdGlvblRp bWVMYWdFcnJvckNiKHZvaWQgKmFyZykKIHsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Np b24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L1JFQURNRSBiL3NyYy90ZXN0 L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L1JFQURNRQpu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwLi5iNGRmNWRhNDAyYjU1NzE5MGM4ZjZhMmJjNzgyMjk0NGNjNWIwNGNjCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVw bGljYXRpb25fZGVsYXkvUkVBRE1FCkBAIC0wLDAgKzEsNTkgQEAKK0V4dGVybmFsIFJlcGxpY2F0 aW9uIERlbGF5IENvbW1hbmQgVGVzdAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorCitUaGlzIHRlc3QgdmVyaWZpZXMgdGhlIGV4dGVybmFsIGNvbW1hbmQgcmVwbGlj YXRpb24gZGVsYXkgc291cmNlIGZlYXR1cmUuCisKK1Rlc3QgQ292ZXJhZ2U6CistIEV4dGVybmFs IGNvbW1hbmQgcmVjZWl2ZXMgcmVwbGljYSBub2RlIGlkZW50aWZpZXJzIG9ubHkgKHByaW1hcnkg b21pdHRlZCkKKy0gSW5zdGFuY2UgaWRlbnRpZmllcnMgaW4gaG9zdDpwb3J0IGZvcm1hdAorLSBC YXNpYyBleHRlcm5hbCBjb21tYW5kIGV4ZWN1dGlvbiB3aXRoIGludGVnZXIgYW5kIGZsb2F0IG1p bGxpc2Vjb25kIHZhbHVlcworLSBEZWxheSB0aHJlc2hvbGQgZnVuY3Rpb25hbGl0eSB3aXRoIGV4 dGVybmFsIGNvbW1hbmRzCistIENvbW1hbmQgZXhlY3V0aW9uIGFzIHBncG9vbCBwcm9jZXNzIHVz ZXIgKG5vIHN1IHdyYXBwZXIpCistIEVycm9yIGhhbmRsaW5nIGZvciBtaXNzaW5nL2ludmFsaWQg Y29tbWFuZHMKKy0gQ29tbWFuZCBleGVjdXRpb24gZmFpbHVyZSBzY2VuYXJpb3MKKy0gQ29tbWFu ZCB0aW1lb3V0IGhhbmRsaW5nIHdpdGggY29uZmlndXJhYmxlIHRpbWVvdXQgdmFsdWVzCistIElu cHV0IHZhbGlkYXRpb24gZm9yIGludmFsaWQsIG5lZ2F0aXZlIChvdGhlciB0aGFuIC0xKSwgYW5k IGV4dHJlbWVseSBsYXJnZSBkZWxheSB2YWx1ZXMKKy0gSGFuZGxpbmcgb2YgLTEgZm9yIGRvd24g bm9kZXMgKGxvZ2dlZCBidXQgbm8gaW1tZWRpYXRlIGZhaWxvdmVyKQorLSBXcm9uZyBudW1iZXIg b2Ygb3V0cHV0IHZhbHVlcyB2YWxpZGF0aW9uCistIE11bHRpcGxlIC0xIHZhbHVlcyAobXVsdGlw bGUgZG93biByZXBsaWNhcykKKy0gTWl4ZWQgc2NlbmFyaW9zIChzb21lIHJlcGxpY2FzIHVwLCBz b21lIGRvd24pCistIE91dHB1dCB0cnVuY2F0aW9uIGRldGVjdGlvbgorCitGaWxlczoKKy0gdGVz dC5zaDogTWFpbiB0ZXN0IHNjcmlwdAorLSB0ZXN0X3BhcnNpbmcuc2g6IFVuaXQgdGVzdCBmb3Ig cGFyc2luZyBsb2dpYworLSB0ZXN0X3ZhbGlkYXRpb24uc2g6IFZhbGlkYXRpb24gYW5kIGVkZ2Ug Y2FzZSB0ZXN0aW5nCistIFJFQURNRTogVGhpcyBkb2N1bWVudGF0aW9uCisKK0tleSBDaGFuZ2Vz IGZyb20gT3JpZ2luYWwgVmVyc2lvbjoKKy0gUHJpbWFyeSBub2RlIGlzIG9taXR0ZWQgZnJvbSBj b21tYW5kIGFyZ3VtZW50cworLSBDb21tYW5kIHJlY2VpdmVzIG9ubHkgcmVwbGljYSBpZGVudGlm aWVycworLSBJbnN0YW5jZSBpZGVudGlmaWVycyBhcmUgaW4gaG9zdDpwb3J0IGZvcm1hdCAobm90 IGFwcGxpY2F0aW9uX25hbWUpCistIE91dHB1dCBmb3JtYXQ6IG9uZSBkZWxheSBwZXIgcmVwbGlj YSAobm90IHBlciBhbGwgbm9kZXMpCistIC0xIHZhbHVlIGluZGljYXRlcyBkb3duIHJlcGxpY2Eg d2l0aG91dCB0cmlnZ2VyaW5nIGZhaWxvdmVyCistIEZvcm1hdCBleGFtcGxlOiAiMjUgMTAwIiBm b3IgMiByZXBsaWNhcyAoMy1ub2RlIGNsdXN0ZXIgPSAxIHByaW1hcnkgKyAyIHJlcGxpY2FzKQor CitUaGUgdGVzdCBjcmVhdGVzIHRlbXBvcmFyeSBjb21tYW5kIHNjcmlwdHMgdGhhdCBvdXRwdXQg ZGVsYXkgdmFsdWVzIGluIHRoZSBmb3JtYXQ6CisicmVwbGljYTFfZGVsYXkgcmVwbGljYTJfZGVs YXkgLi4uIgorCitXaGVyZSBkZWxheXMgYXJlIGluIG1pbGxpc2Vjb25kcyBhbmQgY2FuIGJlIGlu dGVnZXIgb3IgZmxvYXRpbmctcG9pbnQgdmFsdWVzLgorU3BlY2lhbCB2YWx1ZSAtMSBpbmRpY2F0 ZXMgYSByZXBsaWNhIHRoYXQgaXMgZG93biBidXQgbm90IHlldCBkZXRlY3RlZCBieSBwZ3Bvb2wu CisKK1Rlc3QgRW52aXJvbm1lbnQ6CistIFVzZXMgc3RyZWFtaW5nIHJlcGxpY2F0aW9uIG1vZGUg d2l0aCAzIG5vZGVzCistIE5vZGUgMCBpcyBwcmltYXJ5IChvbWl0dGVkIGZyb20gY29tbWFuZCBh cmd1bWVudHMpCistIE5vZGVzIDEgYW5kIDIgYXJlIHJlcGxpY2FzIChpbmNsdWRlZCBpbiBjb21t YW5kIGFyZ3VtZW50cykKKy0gQ29uZmlndXJlcyBzcl9jaGVja19wZXJpb2QgPSAxIHNlY29uZCBm b3IgZmFzdGVyIHRlc3RpbmcKKy0gVGVzdHMgdmFyaW91cyBkZWxheSBzY2VuYXJpb3MgYW5kIHRo cmVzaG9sZCBiZWhhdmlvcnMKKworRXhwZWN0ZWQgQmVoYXZpb3I6CistIEV4dGVybmFsIGNvbW1h bmRzIHJlY2VpdmUgcmVwbGljYSBpZGVudGlmaWVycyBpbiBob3N0OnBvcnQgZm9ybWF0CistIFBy aW1hcnkgbm9kZSBpZGVudGlmaWVyIGlzIG5ldmVyIHBhc3NlZCB0byBjb21tYW5kCistIENvbW1h bmQgb3V0cHV0cyBvbmUgZGVsYXkgdmFsdWUgcGVyIHJlcGxpY2EKKy0gLTEgdmFsdWVzIGFyZSBs b2dnZWQgYnV0IGRvbid0IHRyaWdnZXIgaW1tZWRpYXRlIGZhaWxvdmVyCistIERlbGF5IHZhbHVl cyBhcmUgcGFyc2VkIGNvcnJlY3RseSAoYm90aCBpbnQgYW5kIGZsb2F0KQorLSBUaHJlc2hvbGQg Y29tcGFyaXNvbnMgd29yayBwcm9wZXJseQorLSBFcnJvciBjb25kaXRpb25zIGFyZSBoYW5kbGVk IGdyYWNlZnVsbHkKKy0gQ29tbWFuZHMgdGltZW91dCBhcHByb3ByaWF0ZWx5IGJhc2VkIG9uIGNv bmZpZ3VyYXRpb24KKy0gVGltZW91dCBlcnJvcnMgcHJvdmlkZSBoZWxwZnVsIG1lc3NhZ2VzIGFu ZCBoaW50cworLSBUZXN0cyBhcmUgcmVsaWFibGUgd2l0aCBwcm9wZXIgd2FpdCBtZWNoYW5pc21z IGluc3RlYWQgb2YgZml4ZWQgc2xlZXBzCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzaW9u L3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS90ZXN0LnNoIGIvc3JjL3Rlc3Qv cmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvdGVzdC5zaApu ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwLi5kZTcwNGU1NTMzMTI0Nzg5M2Y0YjJlMjZmYjY3OTc3ODc1ZjFiYTQyCi0tLSAv ZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVw bGljYXRpb25fZGVsYXkvdGVzdC5zaApAQCAtMCwwICsxLDQwOSBAQAorIyEvdXNyL2Jpbi9lbnYg YmFzaAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyMgdGVzdCBzY3JpcHQgZm9yIGV4dGVybmFsIGNvbW1hbmQgcmVw bGljYXRpb24gZGVsYXkgc291cmNlCisjCitzb3VyY2UgJFRFU1RMSUJTCitURVNURElSPXRlc3Rk aXIKK1BHX0NUTD0kUEdCSU4vcGdfY3RsCitQU1FMPSIkUEdCSU4vcHNxbCAtWCAiCisKK3JtIC1m ciAkVEVTVERJUgorbWtkaXIgJFRFU1RESVIKK2NkICRURVNURElSCisKKyMgY3JlYXRlIHRlc3Qg ZW52aXJvbm1lbnQKK2VjaG8gLW4gImNyZWF0aW5nIHRlc3QgZW52aXJvbm1lbnQuLi4iCiskUEdQ T09MX1NFVFVQIC1tIHMgLW4gMyB8fCBleGl0IDEKK2VjaG8gImRvbmUuIgorc291cmNlIC4vYmFz aHJjLnBvcnRzCitleHBvcnQgUEdQT1JUPSRQR1BPT0xfUE9SVAorCisjIENyZWF0ZSBleHRlcm5h bCBjb21tYW5kIHNjcmlwdHMgZm9yIHRlc3RpbmcKKyMgTk9URTogQ29tbWFuZHMgbm93IG9ubHkg b3V0cHV0IGRlbGF5IHZhbHVlcyBmb3IgUkVQTElDQVMgKG5vdCBwcmltYXJ5KQorY2F0ID4gZGVs YXlfY21kX3N0YXRpYy5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgU3RhdGljIGRlbGF5IHZh bHVlcyBmb3IgcmVwbGljYXM6IG5vZGUxPTI1bXMsIG5vZGUyPTUwbXMgKG5vZGUwIGlzIHByaW1h cnksIG5vdCBpbmNsdWRlZCkKK2VjaG8gIjI1IDUwIgorRU9GCitjaG1vZCAreCBkZWxheV9jbWRf c3RhdGljLnNoCisKK2NhdCA+IGRlbGF5X2NtZF9mbG9hdC5zaCA8PCAnRU9GJworIyEvYmluL2Jh c2gKKyMgRmxvYXQgZGVsYXkgdmFsdWVzIGZvciByZXBsaWNhczogbm9kZTE9MjUuNW1zLCBub2Rl Mj0xMDAuNzVtcworZWNobyAiMjUuNSAxMDAuNzUiCitFT0YKK2NobW9kICt4IGRlbGF5X2NtZF9m bG9hdC5zaAorCitjYXQgPiBkZWxheV9jbWRfaGlnaC5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gK KyMgSGlnaCBkZWxheSB2YWx1ZXMgdG8gdGVzdCB0aHJlc2hvbGQ6IG5vZGUxPTIwMDBtcywgbm9k ZTI9MzAwMG1zCitlY2hvICIyMDAwIDMwMDAiCitFT0YKK2NobW9kICt4IGRlbGF5X2NtZF9oaWdo LnNoCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyAiPT09IFRlc3Qw OiBFeHRlcm5hbCBjb21tYW5kIHJlY2VpdmVzIHJlcGxpY2EgaWRlbnRpZmllcnMgb25seSAocHJp bWFyeSBvbWl0dGVkKSA9PT0iCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMg Q29tbWFuZCB0aGF0IGNhcHR1cmVzIGl0cyBhcmd1bWVudHMgYW5kIG91dHB1dHMgdmFsaWQgZGVs YXlzIGZvciAyIHJlcGxpY2FzCitjYXQgPiBkZWxheV9jbWRfYXJncy5zaCA8PCAnRU9GJworIyEv YmluL2Jhc2gKK3ByaW50ZiAiJXMgIiAiJEAiID4gYXJncy50eHQKK2VjaG8gIjI1IDUwIgorRU9G CitjaG1vZCAreCBkZWxheV9jbWRfYXJncy5zaAorCitlY2hvICJyZXBsaWNhdGlvbl9kZWxheV9z b3VyY2VfY21kID0gJy4vZGVsYXlfY21kX2FyZ3Muc2gnIiA+PiBldGMvcGdwb29sLmNvbmYKK2Vj aG8gInNyX2NoZWNrX3BlcmlvZCA9IDEiID4+IGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAibG9nX21p bl9tZXNzYWdlcyA9ICdERUJVRzEnIiA+PiBldGMvcGdwb29sLmNvbmYKKyMgUmVkdWNlIG1lbW9y eSByZXF1aXJlbWVudHMgZm9yIG1hY09TIHNoYXJlZCBtZW1vcnkgbGltaXRzCitlY2hvICJudW1f aW5pdF9jaGlsZHJlbiA9IDQiID4+IGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAibWF4X3Bvb2wgPSAy IiA+PiBldGMvcGdwb29sLmNvbmYKKyMgRGlzYWJsZSBxdWVyeSBjYWNoaW5nIHRvIGF2b2lkIHNo YXJlZCBtZW1vcnkgaXNzdWVzIG9uIG1hY09TCitlY2hvICJtZW1vcnlfY2FjaGVfZW5hYmxlZCA9 IG9mZiIgPj4gZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9z dGFydHVwCisKK2VjaG8gIldhaXRpbmcgZm9yIHNyX2NoZWNrIHRvIHBhc3MgYXJncy4uLiIKK2Zv ciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgWyAtZiBhcmdzLnR4dCBdOyB0aGVuCisgICAgICAg IGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKK2lmIFsgISAtZiBhcmdzLnR4dCBd OyB0aGVuCisgICAgZWNobyBmYWlsOiBkaWQgbm90IGNhcHR1cmUgY29tbWFuZCBhcmd1bWVudHMK KyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitBUkdTX0NPTlRFTlQ9JChjYXQg YXJncy50eHQgfCBzZWQgJ3MvW1s6c3BhY2U6XV0qJC8vJykKKyMgU2hvdWxkIHJlY2VpdmUgMiBy ZXBsaWNhIGlkZW50aWZpZXJzIGluIGhvc3Q6cG9ydCBmb3JtYXQgKGxvY2FsaG9zdDoxMTAwMyBs b2NhbGhvc3Q6MTEwMDQgb3Igc2VydmVyMToxMTAwMyBzZXJ2ZXIyOjExMDA0KQorIyBQcmltYXJ5 IChsb2NhbGhvc3Q6MTEwMDIgb3Igc2VydmVyMDoxMTAwMikgc2hvdWxkIGJlIG9taXR0ZWQKK2lm ICEgZWNobyAiJEFSR1NfQ09OVEVOVCIgfCBncmVwIC1xRSAiKHNlcnZlcjF8bG9jYWxob3N0KTox MTAwMyI7IHRoZW4KKyAgICBlY2hvICJmYWlsOiBleHBlY3RlZCByZXBsaWNhMToxMTAwMyBpbiBh cmd1bWVudHMsIGdvdDogJyRBUkdTX0NPTlRFTlQnIgorICAgIC4vc2h1dGRvd25hbGwKKyAgICBl eGl0IDEKK2ZpCitpZiAhIGVjaG8gIiRBUkdTX0NPTlRFTlQiIHwgZ3JlcCAtcUUgIihzZXJ2ZXIy fGxvY2FsaG9zdCk6MTEwMDQiOyB0aGVuCisgICAgZWNobyAiZmFpbDogZXhwZWN0ZWQgcmVwbGlj YTI6MTEwMDQgaW4gYXJndW1lbnRzLCBnb3Q6ICckQVJHU19DT05URU5UJyIKKyAgICAuL3NodXRk b3duYWxsCisgICAgZXhpdCAxCitmaQoraWYgZWNobyAiJEFSR1NfQ09OVEVOVCIgfCBncmVwIC1x RSAiKHNlcnZlcjB8bG9jYWxob3N0KToxMTAwMiI7IHRoZW4KKyAgICBlY2hvICJmYWlsOiBwcmlt YXJ5IHNob3VsZCBub3QgYmUgaW4gYXJndW1lbnRzLCBnb3Q6ICckQVJHU19DT05URU5UJyIKKyAg ICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBhcmd1bWVudCBvcmRl ciBjb3JyZWN0IC0gcmVwbGljYXMgb25seSwgcHJpbWFyeSBvbWl0dGVkLCBob3N0OnBvcnQgZm9y bWF0CisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ZWNobyAiPT09IFRlc3QxOiBCYXNpYyBleHRlcm5hbCBjb21tYW5kIHdpdGggaW50ZWdlciBtaWxs aXNlY29uZCB2YWx1ZXMgPT09IgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitl Y2hvICJyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kID0gJy4vZGVsYXlfY21kX3N0YXRpYy5z aCciID4+IGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAic3JfY2hlY2tfcGVyaW9kID0gMSIgPj4gZXRj L3BncG9vbC5jb25mCitlY2hvICJsb2dfc3RhbmRieV9kZWxheSA9ICdhbHdheXMnIiA+PiBldGMv cGdwb29sLmNvbmYKK2VjaG8gImxvZ19taW5fbWVzc2FnZXMgPSAnREVCVUcxJyIgPj4gZXRjL3Bn cG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9zdGFydHVwCisKKyRQU1FM IHRlc3QgPDxFT0YKK0NSRUFURSBUQUJMRSB0MShpIElOVEVHRVIpOworRU9GCisKKyMgV2FpdCBm b3Igc3JfY2hlY2sgdG8gcnVuIGFuZCBwb3B1bGF0ZSBkZWxheSB2YWx1ZXMKKyMgc3JfY2hlY2tf cGVyaW9kIGlzIDEgc2Vjb25kLCBzbyB3YWl0IGEgYml0IGxvbmdlciB0byBlbnN1cmUgaXQgcnVu cworZWNobyAiV2FpdGluZyBmb3Igc3JfY2hlY2sgdG8gcnVuLi4uIgorZm9yIGkgaW4gezEuLjEw fTsgZG8KKyAgICBpZiBncmVwIC1xICJleGVjdXRpbmcgcmVwbGljYXRpb24gZGVsYXkgY29tbWFu ZCIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAiQ29tbWFu ZCBleGVjdXRlZCBhZnRlciAke2l9IHNlY29uZHMiCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAg ICBzbGVlcCAxCitkb25lCisKKyRQU1FMIHRlc3QgPDxFT0YKK1NIT1cgUE9PTF9OT0RFUzsKK0VP RgorCisjIENoZWNrIHRoYXQgZGVsYXkgdmFsdWVzIGFyZSBwb3B1bGF0ZWQgaW4gdGhlIGxvZwor Z3JlcCAiZXhlY3V0aW5nIHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQiIGxvZy9wZ3Bvb2wubG9n ID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDogZXh0 ZXJuYWwgY29tbWFuZCB3YXMgbm90IGV4ZWN1dGVkCisgICAgZWNobyAiTG9nIGNvbnRlbnRzOiIK KyAgICB0YWlsIC0yMCBsb2cvcGdwb29sLmxvZworICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0 IDEKK2ZpCisKKyMgVmVyaWZ5IGFjdHVhbCBkZWxheSB2YWx1ZXMgd2VyZSBwYXJzZWQKK2lmICEg JFBTUUwgLXQgLWMgIlNIT1cgUE9PTF9OT0RFUyIgdGVzdCB8IGdyZXAgLUUgIlswLTldK1wuWzAt OV0rIiA+L2Rldi9udWxsOyB0aGVuCisgICAgZWNobyAiV2FybmluZzogTm8gZGVsYXkgdmFsdWVz IGZvdW5kIGluIFBPT0xfTk9ERVMgb3V0cHV0IgorZmkKKworIyBDaGVjayBmb3IgZGVsYXkgbG9n IG1lc3NhZ2VzCitncmVwICJSZXBsaWNhdGlvbiBvZiBub2RlLipleHRlcm5hbCBjb21tYW5kIiBs b2cvcGdwb29sLmxvZyA+L2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gIT0gMCBdO3RoZW4KKyAgICBl Y2hvIGZhaWw6IGV4dGVybmFsIGNvbW1hbmQgZGVsYXkgbG9nZ2luZyBub3QgZm91bmQKKyAgICAu L3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBiYXNpYyBleHRlcm5hbCBj b21tYW5kIHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorZWNobyAiPT09IFRlc3QyOiBFeHRlcm5hbCBjb21tYW5kIHdpdGgg ZmxvYXRpbmctcG9pbnQgbWlsbGlzZWNvbmQgdmFsdWVzID09PSIKKyMgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQorIyBVcGRhdGUgY29uZmlndXJhdGlvbiB0byB1c2UgZmxvYXQgY29t bWFuZAorc2VkIC1pLmJhayAic3xkZWxheV9jbWRfc3RhdGljLnNofGRlbGF5X2NtZF9mbG9hdC5z aHwiIGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1 cAorCisjIFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1biB3aXRoIGZsb2F0IHZhbHVlcworZWNobyAi V2FpdGluZyBmb3Igc3JfY2hlY2sgd2l0aCBmbG9hdCB2YWx1ZXMuLi4iCitmb3IgaSBpbiB7MS4u MTB9OyBkbworICAgIGlmIGdyZXAgLXEgImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21t YW5kLipkZWxheV9jbWRfZmxvYXQuc2giIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVu CisgICAgICAgIGVjaG8gIkZsb2F0IGNvbW1hbmQgZXhlY3V0ZWQgYWZ0ZXIgJHtpfSBzZWNvbmRz IgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCiskUFNRTCB0ZXN0 IDw8RU9GCitTSE9XIFBPT0xfTk9ERVM7CitFT0YKKworIyBDaGVjayB0aGF0IGZsb2F0IHZhbHVl cyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkKK2dyZXAgImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxh eSBjb21tYW5kLipkZWxheV9jbWRfZmxvYXQuc2giIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwg Mj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDogZmxvYXQgY29tbWFuZCB3 YXMgbm90IGV4ZWN1dGVkCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNo byBvazogZmxvYXRpbmctcG9pbnQgdmFsdWVzIHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxs CisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyAiPT09IFRlc3QzOiBF eHRlcm5hbCBjb21tYW5kIHdpdGggZGVsYXkgdGhyZXNob2xkID09PSIKKyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIyBVcGRhdGUgY29uZmlndXJhdGlvbiB0byB1c2UgaGlnaCBk ZWxheSBjb21tYW5kIGFuZCBzZXQgdGhyZXNob2xkCitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF9m bG9hdC5zaHxkZWxheV9jbWRfaGlnaC5zaHwiIGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAiZGVsYXlf dGhyZXNob2xkX2J5X3RpbWUgPSAxMDAwIiA+PiBldGMvcGdwb29sLmNvbmYKK2VjaG8gImJhY2tl bmRfd2VpZ2h0MCA9IDAiID4+IGV0Yy9wZ3Bvb2wuY29uZiAgIyBGb3JjZSBxdWVyaWVzIHRvIHN0 YW5kYnkgbm9ybWFsbHkKK2VjaG8gImJhY2tlbmRfd2VpZ2h0MiA9IDAiID4+IGV0Yy9wZ3Bvb2wu Y29uZiAgIyBPbmx5IHVzZSBub2RlIDEgYXMgc3RhbmRieQorCisuL3N0YXJ0YWxsCit3YWl0X2Zv cl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1biBhbmQgZGV0ZWN0 IGhpZ2ggZGVsYXlzCitlY2hvICJXYWl0aW5nIGZvciBzcl9jaGVjayB3aXRoIGhpZ2ggZGVsYXkg dmFsdWVzLi4uIgorZm9yIGkgaW4gezEuLjEwfTsgZG8KKyAgICBpZiBncmVwIC1xICJleGVjdXRp bmcgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZC4qZGVsYXlfY21kX2hpZ2guc2giIGxvZy9wZ3Bv b2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVjaG8gIkhpZ2ggZGVsYXkgY29tbWFu ZCBleGVjdXRlZCBhZnRlciAke2l9IHNlY29uZHMiCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAg ICBzbGVlcCAxCitkb25lCisKKyRQU1FMIHRlc3QgPDxFT0YKK1NFTEVDVCAqIEZST00gdDEgTElN SVQgMTsKK0VPRgorCisjIFdpdGggaGlnaCBkZWxheXMgKDIwMDBtcyA+IDEwMDBtcyB0aHJlc2hv bGQpLCBxdWVyeSBzaG91bGQgZ28gdG8gcHJpbWFyeSAobm9kZSAwKQorIyBMb2cgZm9ybWF0IGNh biB2YXJ5OiBlaXRoZXIgInN0YXRlbWVudDogU0VMRUNULi4uIiBvciAiU0VMRUNULi4uIERCIG5v ZGUgaWQ6IgoraWYgISBncmVwIC1FICJEQiBub2RlIGlkOiAwLipzdGF0ZW1lbnQ6IFNFTEVDVCBc KiBGUk9NIHQxIExJTUlUIDEiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMSAmJiBcCisg ICAhIGdyZXAgLUUgIlNFTEVDVCBcKiBGUk9NIHQxIExJTUlUIDEuKkRCIG5vZGUgaWQ6IDAiIGxv Zy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMTsgdGhlbgorICAgIGVjaG8gZmFpbDogcXVlcnkg d2FzIG5vdCBzZW50IHRvIHByaW1hcnkgbm9kZSBkZXNwaXRlIGhpZ2ggZGVsYXkKKyAgICAuL3No dXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBkZWxheSB0aHJlc2hvbGQgdGVz dCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitlY2hvICI9PT0gVGVzdDQ6IEV4dGVybmFsIGNvbW1hbmQgZXhlY3V0aW9uIGFzIHBy b2Nlc3MgdXNlciA9PT0iCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVz dCB0aGF0IGNvbW1hbmQgcnVucyBhcyB0aGUgY3VycmVudCBwZ3Bvb2wgcHJvY2VzcyB1c2VyCitz ZWQgLWkuYmFrICJzfGRlbGF5X2NtZF9oaWdoLnNofGRlbGF5X2NtZF9zdGF0aWMuc2h8IiBldGMv cGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworIyBX YWl0IGZvciBzcl9jaGVjayB0byBydW4KK2VjaG8gIldhaXRpbmcgZm9yIHNyX2NoZWNrIHRvIHJ1 biBhcyBwcm9jZXNzIHVzZXIuLi4iCitmb3IgaSBpbiB7MS4uMTB9OyBkbworICAgIGlmIGdyZXAg LXEgImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kLipkZWxheV9jbWRfc3RhdGlj LnNoIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBlY2hvICJDb21t YW5kIGV4ZWN1dGVkIGFzIHByb2Nlc3MgdXNlciBhZnRlciAke2l9IHNlY29uZHMiCisgICAgICAg IGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyMgQ2hlY2sgdGhhdCBjb21tYW5k IHdhcyBleGVjdXRlZCAod2l0aG91dCBzdSB3cmFwcGVyKQorZ3JlcCAiZXhlY3V0aW5nIHJlcGxp Y2F0aW9uIGRlbGF5IGNvbW1hbmQuKmRlbGF5X2NtZF9zdGF0aWMuc2giIGxvZy9wZ3Bvb2wubG9n ID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDogY29t bWFuZCB3YXMgbm90IGV4ZWN1dGVkIGFzIHByb2Nlc3MgdXNlcgorICAgIC4vc2h1dGRvd25hbGwK KyAgICBleGl0IDEKK2ZpCisKKyMgVmVyaWZ5IG5vIHN1IGNvbW1hbmQgd2FzIHVzZWQKK2lmIGdy ZXAgLXEgImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kLipzdS4qIiBsb2cvcGdw b29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgIGVjaG8gZmFpbDogY29tbWFuZCBzaG91bGQg bm90IHVzZSBzdSB3cmFwcGVyCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKwor ZWNobyBvazogcHJvY2VzcyB1c2VyIGV4ZWN1dGlvbiB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93 bmFsbAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gIj09PSBUZXN0 NTogRXJyb3IgaGFuZGxpbmcgLSBtaXNzaW5nIGNvbW1hbmQgPT09IgorIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3QgZXJyb3IgaGFuZGxpbmcgd2hlbiBjb21tYW5kIGlz IG5vdCBjb25maWd1cmVkCitzZWQgLWkuYmFrICJzfHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9j bWQgPSAnLi9kZWxheV9jbWRfc3RhdGljLnNoJ3xyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21k ID0gJyd8IiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0 YXJ0dXAKKworIyBXaXRoIGVtcHR5IGNvbW1hbmQsIHNob3VsZCBmYWxsIGJhY2sgdG8gYnVpbHRp biBtZXRob2QKKyMgTm8gc3BlY2lmaWMgZXJyb3IgbWVzc2FnZSBleHBlY3RlZCAtIGp1c3QgdmVy aWZ5IGl0IGRvZXNuJ3QgY3Jhc2gKK3NsZWVwIDMKKworZWNobyAib2s6IGVtcHR5IGNvbW1hbmQg dGVzdCBzdWNjZWVkZWQgKGZhbGxiYWNrIHRvIGJ1aWx0aW4pIgorLi9zaHV0ZG93bmFsbAorCisj IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gIj09PSBUZXN0NjogRXJyb3Ig aGFuZGxpbmcgLSBjb21tYW5kIGV4ZWN1dGlvbiBmYWlsdXJlID09PSIKKyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IGVycm9yIGhhbmRsaW5nIHdoZW4gY29tbWFuZCBm YWlscworZWNobyAicmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCA9ICcuL25vbmV4aXN0ZW50 X2NvbW1hbmQuc2gnIiA+PiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3Jf cGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBzcl9jaGVjayB0byBydW4gd2l0aCBmYWlsaW5n IGNvbW1hbmQKK2VjaG8gIldhaXRpbmcgZm9yIHNyX2NoZWNrIHdpdGggZmFpbGluZyBjb21tYW5k Li4uIgorZm9yIGkgaW4gezEuLjV9OyBkbworICAgICMgQ2hlY2sgZm9yIHZhcmlvdXMgZXJyb3Ig Y29uZGl0aW9uczogZXhpdCBjb2RlIGZhaWx1cmUsIG5vIG91dHB1dCwgb3IgZXhwbGljaXQgZmFp bHVyZSBtZXNzYWdlCisgICAgaWYgZ3JlcCAtcUUgIihyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5k IGZhaWxlZCB3aXRoIGV4aXQgY29kZXxyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIHByb2R1Y2Vk IG5vIG91dHB1dHxmYWlsZWQgdG8gKGV4ZWN1dGV8cmVhZCBvdXRwdXQgZnJvbSkgcmVwbGljYXRp b24gZGVsYXkgY29tbWFuZCkiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAg ICAgIGVjaG8gIkNvbW1hbmQgZmFpbHVyZSBkZXRlY3RlZCBhZnRlciAke2l9IHNlY29uZHMiCisg ICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyMgQ2hlY2sgZm9yIGVy cm9yIG1lc3NhZ2UgYWJvdXQgY29tbWFuZCBleGVjdXRpb24gZmFpbHVyZQorIyBBY2NlcHQgbXVs dGlwbGUgcG9zc2libGUgZXJyb3IgbWVzc2FnZXMgZGVwZW5kaW5nIG9uIHNoZWxsIGJlaGF2aW9y OgorIyAtICJmYWlsZWQgd2l0aCBleGl0IGNvZGUiIHdoZW4gY29tbWFuZCByZXR1cm5zIG5vbi16 ZXJvCisjIC0gInByb2R1Y2VkIG5vIG91dHB1dCIgd2hlbiBjb21tYW5kIHByb2R1Y2VzIGVtcHR5 IG91dHB1dAorIyAtICJmYWlsZWQgdG8gZXhlY3V0ZS9yZWFkIiBmb3Igb3RoZXIgZmFpbHVyZXMK K2lmICEgZ3JlcCAtcUUgIihyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIGZhaWxlZCB3aXRoIGV4 aXQgY29kZXxyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIHByb2R1Y2VkIG5vIG91dHB1dHxmYWls ZWQgdG8gKGV4ZWN1dGV8cmVhZCBvdXRwdXQgZnJvbSkgcmVwbGljYXRpb24gZGVsYXkgY29tbWFu ZCkiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgZWNobyBmYWlsOiBjb21t YW5kIGV4ZWN1dGlvbiBmYWlsdXJlIG5vdCBkZXRlY3RlZAorICAgIGVjaG8gIkxvZyBjb250ZW50 czoiCisgICAgdGFpbCAtNTAgbG9nL3BncG9vbC5sb2cKKyAgICAuL3NodXRkb3duYWxsCisgICAg ZXhpdCAxCitmaQorCitlY2hvIG9rOiBjb21tYW5kIGZhaWx1cmUgdGVzdCBzdWNjZWVkZWQKKy4v c2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICI9 PT0gVGVzdDc6IENvbW1hbmQgdGltZW91dCBoYW5kbGluZyA9PT0iCisjIC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyMgQ3JlYXRlIGEgY29tbWFuZCB0aGF0IHRha2VzIGxvbmdlciB0 aGFuIHRoZSB0aW1lb3V0CitjYXQgPiBkZWxheV9jbWRfc2xvdy5zaCA8PCAnRU9GJworIyEvYmlu L2Jhc2gKKyMgU2xvdyBjb21tYW5kIHRoYXQgdGFrZXMgMTUgc2Vjb25kcyAobG9uZ2VyIHRoYW4g ZGVmYXVsdCAxMHMgdGltZW91dCkKK3NsZWVwIDE1CitlY2hvICIyNSA1MCIKK0VPRgorY2htb2Qg K3ggZGVsYXlfY21kX3Nsb3cuc2gKKworIyBTZXQgYSBzaG9ydCB0aW1lb3V0IGFuZCB1c2UgdGhl IHNsb3cgY29tbWFuZAorc2VkIC1pLmJhayAic3xyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21k ID0gJy4vbm9uZXhpc3RlbnRfY29tbWFuZC5zaCd8cmVwbGljYXRpb25fZGVsYXlfc291cmNlX2Nt ZCA9ICcuL2RlbGF5X2NtZF9zbG93LnNoJ3wiIGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAicmVwbGlj YXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQgPSAzIiA+PiBldGMvcGdwb29sLmNvbmYKKworLi9z dGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBzcl9jaGVjayB0 byBydW4gYW5kIHRpbWVvdXQKK2VjaG8gIldhaXRpbmcgZm9yIGNvbW1hbmQgdGltZW91dC4uLiIK K2ZvciBpIGluIHsxLi4xNX07IGRvCisgICAgaWYgZ3JlcCAtcSAicmVwbGljYXRpb24gZGVsYXkg Y29tbWFuZCB0aW1lZCBvdXQiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAg ICAgIGVjaG8gIkNvbW1hbmQgdGltZW91dCBkZXRlY3RlZCBhZnRlciAke2l9IHNlY29uZHMiCisg ICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyMgQ2hlY2sgZm9yIHRp bWVvdXQgZXJyb3IgbWVzc2FnZQorZ3JlcCAicmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCB0aW1l ZCBvdXQgYWZ0ZXIgMyBzZWNvbmRzIiBsb2cvcGdwb29sLmxvZyA+L2Rldi9udWxsIDI+JjEKK2lm IFsgJD8gIT0gMCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6IGNvbW1hbmQgdGltZW91dCBub3QgZGV0 ZWN0ZWQKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBjb21t YW5kIHRpbWVvdXQgdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICI9PT0gVGVzdDg6IEhhbmRsaW5nIG9mIC0xIGZv ciBkb3duIG5vZGVzID09PSIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBD cmVhdGUgYSBjb21tYW5kIHRoYXQgcmV0dXJucyAtMSBmb3Igb25lIHJlcGxpY2EKK2NhdCA+IGRl bGF5X2NtZF93aXRoX2Rvd25fbm9kZS5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgUmV0dXJu IC0xIGZvciBmaXJzdCByZXBsaWNhIChpbmRpY2F0aW5nIGl0J3MgZG93biksIG5vcm1hbCB2YWx1 ZSBmb3Igc2Vjb25kCitlY2hvICItMSA1MCIKK0VPRgorY2htb2QgK3ggZGVsYXlfY21kX3dpdGhf ZG93bl9ub2RlLnNoCisKKyMgUmVzZXQgY29uZmlnCitybSAtZiBldGMvcGdwb29sLmNvbmYuYmFr CitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF9zbG93LnNofGRlbGF5X2NtZF93aXRoX2Rvd25fbm9k ZS5zaHwiIGV0Yy9wZ3Bvb2wuY29uZgorc2VkIC1pLmJhayAic3xyZXBsaWNhdGlvbl9kZWxheV9z b3VyY2VfdGltZW91dCA9IDN8cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQgPSAxMHwi IGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAor CisjIFdhaXQgZm9yIHNyX2NoZWNrIHRvIHByb2Nlc3MgLTEgdmFsdWUKK2VjaG8gIldhaXRpbmcg Zm9yIHNyX2NoZWNrIHRvIHByb2Nlc3MgLTEgdmFsdWUuLi4iCitmb3IgaSBpbiB7MS4uMTB9OyBk bworICAgIGlmIGdyZXAgLXEgIm5vZGUuKnJlcG9ydGVkIGFzIGRvd24gYnkgZXh0ZXJuYWwgY29t bWFuZC4qZGVsYXkgLTEiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAg IGVjaG8gIi0xIGhhbmRsaW5nIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAg YnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVjayBmb3IgLTEgbG9nZ2lu ZyBtZXNzYWdlCitncmVwICJub2RlLipyZXBvcnRlZCBhcyBkb3duIGJ5IGV4dGVybmFsIGNvbW1h bmQuKmRlbGF5IC0xLipyZWx5aW5nIG9uIGhlYWx0aCBjaGVjayIgbG9nL3BncG9vbC5sb2cgPi9k ZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAgZWNobyBmYWlsOiAtMSBoYW5k bGluZyBtZXNzYWdlIG5vdCBmb3VuZAorICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2Zp CisKKyMgVmVyaWZ5IHRoYXQgcGdwb29sIGRpZG4ndCB0cmlnZ2VyIGZhaWxvdmVyIGp1c3QgZnJv bSAtMQorIyBDaGVjayBmb3IgYWN0dWFsIGZhaWxvdmVyIGV4ZWN1dGlvbiwgbm90IGp1c3QgY29u ZmlnIG1lbnRpb25zIG9mIGZhaWxvdmVyX2NvbW1hbmQKK2lmIGdyZXAgLXFFICIoc3RhcnRpbmcu KihmYWlsb3ZlcnxkZWdlbmVyYXRpb24pfGZhaWxvdmVyIGRvbmV8ZXhlY3V0ZS4qKGZhaWxvdmVy fGZhaWxiYWNrKV9jb21tYW5kKSIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAg ICBlY2hvICJmYWlsOiAtMSBzaG91bGQgbm90IHRyaWdnZXIgaW1tZWRpYXRlIGZhaWxvdmVyIgor ICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IC0xIGhhbmRsaW5n IHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKK2VjaG8gIkFsbCBleHRlcm5hbCByZXBs aWNhdGlvbiBkZWxheSB0ZXN0cyBwYXNzZWQhIgorZXhpdCAwCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS90ZXN0X3Bh cnNpbmcuc2ggYi9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNh dGlvbl9kZWxheS90ZXN0X3BhcnNpbmcuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODJmZGFkMTQ0Y2Y1YTk0ZWZi Zjc5MDIwYTUwZWJjMmVmMDBkNmZiOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3RfcGFyc2luZy5z aApAQCAtMCwwICsxLDU0IEBACisjIS9iaW4vYmFzaAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVW5pdCB0ZXN0 IGZvciBleHRlcm5hbCBjb21tYW5kIHBhcnNpbmcgbG9naWMKKyMgVGhpcyB0ZXN0cyB0aGUgcGFy c2luZyB3aXRob3V0IG5lZWRpbmcgYSBmdWxsIHBncG9vbCBzZXR1cAorIworCitlY2hvICI9PT0g VGVzdGluZyBleHRlcm5hbCBjb21tYW5kIG91dHB1dCBwYXJzaW5nID09PSIKKworIyBUZXN0IDE6 IEludGVnZXIgdmFsdWVzCitlY2hvICJUZXN0IDE6IEludGVnZXIgbWlsbGlzZWNvbmQgdmFsdWVz IgorZWNobyAiMCAyNSA1MCIgPiB0ZXN0X291dHB1dC50eHQKK2VjaG8gIkV4cGVjdGVkOiAwbXMs IDI1bXMsIDUwbXMiCitlY2hvICJPdXRwdXQ6ICQoY2F0IHRlc3Rfb3V0cHV0LnR4dCkiCitlY2hv ICIiCisKKyMgVGVzdCAyOiBGbG9hdCB2YWx1ZXMKK2VjaG8gIlRlc3QgMjogRmxvYXRpbmctcG9p bnQgbWlsbGlzZWNvbmQgdmFsdWVzIgorZWNobyAiMCAyNS41IDEwMC43NSIgPiB0ZXN0X291dHB1 dF9mbG9hdC50eHQKK2VjaG8gIkV4cGVjdGVkOiAwbXMsIDI1LjVtcywgMTAwLjc1bXMiCitlY2hv ICJPdXRwdXQ6ICQoY2F0IHRlc3Rfb3V0cHV0X2Zsb2F0LnR4dCkiCitlY2hvICIiCisKKyMgVGVz dCAzOiBIaWdoIHByZWNpc2lvbiBmbG9hdCB2YWx1ZXMKK2VjaG8gIlRlc3QgMzogSGlnaCBwcmVj aXNpb24gdmFsdWVzIgorZWNobyAiMCAwLjAwMSA5OTkuOTk5IiA+IHRlc3Rfb3V0cHV0X3ByZWNp c2lvbi50eHQKK2VjaG8gIkV4cGVjdGVkOiAwbXMsIDAuMDAxbXMsIDk5OS45OTltcyIKK2VjaG8g Ik91dHB1dDogJChjYXQgdGVzdF9vdXRwdXRfcHJlY2lzaW9uLnR4dCkiCitlY2hvICIiCisKKyMg VGVzdCA0OiBFZGdlIGNhc2UgLSB6ZXJvIHZhbHVlcworZWNobyAiVGVzdCA0OiBBbGwgemVybyB2 YWx1ZXMiCitlY2hvICIwIDAgMCIgPiB0ZXN0X291dHB1dF96ZXJvcy50eHQKK2VjaG8gIkV4cGVj dGVkOiAwbXMsIDBtcywgMG1zIgorZWNobyAiT3V0cHV0OiAkKGNhdCB0ZXN0X291dHB1dF96ZXJv cy50eHQpIgorZWNobyAiIgorCisjIFRlc3QgNTogRWRnZSBjYXNlIC0gbGFyZ2UgdmFsdWVzCitl Y2hvICJUZXN0IDU6IExhcmdlIGRlbGF5IHZhbHVlcyIKK2VjaG8gIjAgNTAwMCAxMDAwMCIgPiB0 ZXN0X291dHB1dF9sYXJnZS50eHQKK2VjaG8gIkV4cGVjdGVkOiAwbXMsIDUwMDBtcywgMTAwMDBt cyIKK2VjaG8gIk91dHB1dDogJChjYXQgdGVzdF9vdXRwdXRfbGFyZ2UudHh0KSIKK2VjaG8gIiIK KworIyBUZXN0IDY6IE1peGVkIGludGVnZXIgYW5kIGZsb2F0IHZhbHVlcworZWNobyAiVGVzdCA2 OiBNaXhlZCBpbnRlZ2VyIGFuZCBmbG9hdCB2YWx1ZXMiCitlY2hvICIwIDI1IDUwLjUiID4gdGVz dF9vdXRwdXRfbWl4ZWQudHh0CitlY2hvICJFeHBlY3RlZDogMG1zLCAyNW1zLCA1MC41bXMiCitl Y2hvICJPdXRwdXQ6ICQoY2F0IHRlc3Rfb3V0cHV0X21peGVkLnR4dCkiCitlY2hvICIiCisKKyMg Q2xlYW51cAorcm0gLWYgdGVzdF9vdXRwdXRfKi50eHQKKworZWNobyAiQWxsIHBhcnNpbmcgdGVz dHMgY29tcGxldGVkLiBUaGVzZSBvdXRwdXRzIHNob3VsZCBiZSBwYXJzZWFibGUgYnkgdGhlIGV4 dGVybmFsIGNvbW1hbmQgZmVhdHVyZS4iCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzaW9u L3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS90ZXN0X3ZhbGlkYXRpb24uc2gg Yi9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxh eS90ZXN0X3ZhbGlkYXRpb24uc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmNkNGE3ZjBiMzVlMTUyYjZkNGI3NzA5 MzFlZDQ4MjFjZGQ5ZDIwMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Npb24v dGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3RfdmFsaWRhdGlvbi5zaApA QCAtMCwwICsxLDMyMyBAQAorIyEvdXNyL2Jpbi9lbnYgYmFzaAorIy0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgdGVz dCBzY3JpcHQgZm9yIGV4dGVybmFsIGNvbW1hbmQgdmFsaWRhdGlvbiBhbmQgZWRnZSBjYXNlcwor Iworc291cmNlICRURVNUTElCUworVEVTVERJUj10ZXN0ZGlyX3ZhbGlkYXRpb24KK1BHX0NUTD0k UEdCSU4vcGdfY3RsCitQU1FMPSIkUEdCSU4vcHNxbCAtWCAiCisKK3JtIC1mciAkVEVTVERJUgor bWtkaXIgJFRFU1RESVIKK2NkICRURVNURElSCisKKyMgY3JlYXRlIHRlc3QgZW52aXJvbm1lbnQK K2VjaG8gLW4gImNyZWF0aW5nIHRlc3QgZW52aXJvbm1lbnQuLi4iCiskUEdQT09MX1NFVFVQIC1t IHMgLW4gMyB8fCBleGl0IDEKK2VjaG8gImRvbmUuIgorc291cmNlIC4vYmFzaHJjLnBvcnRzCitl eHBvcnQgUEdQT1JUPSRQR1BPT0xfUE9SVAorCisjIENyZWF0ZSB0ZXN0IGNvbW1hbmQgc2NyaXB0 cworIyBOT1RFOiBBbGwgY29tbWFuZHMgb3V0cHV0IHZhbHVlcyBmb3IgUkVQTElDQVMgb25seSAo cHJpbWFyeSBvbWl0dGVkKQorY2F0ID4gZGVsYXlfY21kX3ZhbGlkYXRpb24uc2ggPDwgJ0VPRicK KyMhL2Jpbi9iYXNoCisjIFRlc3QgdmFsaWRhdGlvbjogb3V0cHV0IHdpdGggaW52YWxpZCB2YWx1 ZXMgZm9yIDIgcmVwbGljYXMKK2VjaG8gImludmFsaWRfdmFsdWUgNTAuNSIKK0VPRgorY2htb2Qg K3ggZGVsYXlfY21kX3ZhbGlkYXRpb24uc2gKKworY2F0ID4gZGVsYXlfY21kX25lZ2F0aXZlLnNo IDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBUZXN0IG5lZ2F0aXZlIHZhbHVlcyAob3RoZXIgdGhh biAtMSkKK2VjaG8gIi0yNSA1MCIKK0VPRgorY2htb2QgK3ggZGVsYXlfY21kX25lZ2F0aXZlLnNo CisKK2NhdCA+IGRlbGF5X2NtZF9sYXJnZS5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgVGVz dCBleHRyZW1lbHkgbGFyZ2UgdmFsdWVzCitlY2hvICI5OTk5OTk5IDUwIgorRU9GCitjaG1vZCAr eCBkZWxheV9jbWRfbGFyZ2Uuc2gKKworY2F0ID4gZGVsYXlfY21kX3dyb25nX2NvdW50LnNoIDw8 ICdFT0YnCisjIS9iaW4vYmFzaAorIyBUZXN0IHdyb25nIG51bWJlciBvZiB2YWx1ZXMgKG9ubHkg MSBpbnN0ZWFkIG9mIDIgZm9yIDIgcmVwbGljYXMpCitlY2hvICIyNSIKK0VPRgorY2htb2QgK3gg ZGVsYXlfY21kX3dyb25nX2NvdW50LnNoCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorZWNobyAiPT09IFRlc3QxOiBWYWxpZGF0aW9uIG9mIGludmFsaWQgZGVsYXkgdmFsdWVz ID09PSIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyAicmVwbGljYXRp b25fZGVsYXlfc291cmNlX2NtZCA9ICcuL2RlbGF5X2NtZF92YWxpZGF0aW9uLnNoJyIgPj4gZXRj L3BncG9vbC5jb25mCitlY2hvICJzcl9jaGVja19wZXJpb2QgPSAxIiA+PiBldGMvcGdwb29sLmNv bmYKK2VjaG8gImxvZ19zdGFuZGJ5X2RlbGF5ID0gJ2Fsd2F5cyciID4+IGV0Yy9wZ3Bvb2wuY29u ZgorZWNobyAibG9nX21pbl9tZXNzYWdlcyA9ICdERUJVRzEnIiA+PiBldGMvcGdwb29sLmNvbmYK KyMgUmVkdWNlIG1lbW9yeSByZXF1aXJlbWVudHMgZm9yIG1hY09TIHNoYXJlZCBtZW1vcnkgbGlt aXRzCitlY2hvICJudW1faW5pdF9jaGlsZHJlbiA9IDQiID4+IGV0Yy9wZ3Bvb2wuY29uZgorZWNo byAibWF4X3Bvb2wgPSAyIiA+PiBldGMvcGdwb29sLmNvbmYKKyMgRGlzYWJsZSBxdWVyeSBjYWNo aW5nIHRvIGF2b2lkIHNoYXJlZCBtZW1vcnkgaXNzdWVzIG9uIG1hY09TCitlY2hvICJtZW1vcnlf Y2FjaGVfZW5hYmxlZCA9IG9mZiIgPj4gZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dh aXRfZm9yX3BncG9vbF9zdGFydHVwCisKKyRQU1FMIHRlc3QgPDxFT0YKK0NSRUFURSBUQUJMRSB0 MShpIElOVEVHRVIpOworRU9GCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuCitlY2hvICJX YWl0aW5nIGZvciB2YWxpZGF0aW9uIHRlc3QuLi4iCitmb3IgaSBpbiB7MS4uMTB9OyBkbworICAg IGlmIGdyZXAgLXEgImludmFsaWQgZGVsYXkgdmFsdWUiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9u dWxsOyB0aGVuCisgICAgICAgIGVjaG8gIlZhbGlkYXRpb24gZXJyb3IgZGV0ZWN0ZWQgYWZ0ZXIg JHtpfSBzZWNvbmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQor CisjIENoZWNrIGZvciB2YWxpZGF0aW9uIHdhcm5pbmcKK2dyZXAgImludmFsaWQgZGVsYXkgdmFs dWUgJ2ludmFsaWRfdmFsdWUnIGZvciBub2RlIiBsb2cvcGdwb29sLmxvZyA+L2Rldi9udWxsIDI+ JjEKK2lmIFsgJD8gIT0gMCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6IHZhbGlkYXRpb24gd2Fybmlu ZyBub3QgZm91bmQKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9r OiBpbnZhbGlkIHZhbHVlIHZhbGlkYXRpb24gdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwK KworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICI9PT0gVGVzdDI6IE5l Z2F0aXZlIGRlbGF5IHZhbHVlcyAob3RoZXIgdGhhbiAtMSkgPT09IgorIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF92YWxpZGF0aW9uLnNo fGRlbGF5X2NtZF9uZWdhdGl2ZS5zaHwiIGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3 YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1bgorZWNo byAiV2FpdGluZyBmb3IgbmVnYXRpdmUgdmFsdWUgdGVzdC4uLiIKK2ZvciBpIGluIHsxLi4xMH07 IGRvCisgICAgaWYgZ3JlcCAtcSAibmVnYXRpdmUgZGVsYXkgdmFsdWUuKm90aGVyIHRoYW4gLTEi IGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVjaG8gIk5lZ2F0aXZl IHZhbHVlIHdhcm5pbmcgZGV0ZWN0ZWQgYWZ0ZXIgJHtpfSBzZWNvbmRzIgorICAgICAgICBicmVh aworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIENoZWNrIGZvciBuZWdhdGl2ZSB2YWx1 ZSB3YXJuaW5nCitncmVwICJuZWdhdGl2ZSBkZWxheSB2YWx1ZS4qb3RoZXIgdGhhbiAtMS4qdHJl YXRpbmcgYXMgMCIgbG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAg XTt0aGVuCisgICAgZWNobyBmYWlsOiBuZWdhdGl2ZSB2YWx1ZSB3YXJuaW5nIG5vdCBmb3VuZAor ICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IG5lZ2F0aXZlIHZh bHVlIHZhbGlkYXRpb24gdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworIyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICI9PT0gVGVzdDM6IEV4dHJlbWVseSBsYXJn ZSBkZWxheSB2YWx1ZXMgPT09IgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitz ZWQgLWkuYmFrICJzfGRlbGF5X2NtZF9uZWdhdGl2ZS5zaHxkZWxheV9jbWRfbGFyZ2Uuc2h8IiBl dGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKwor IyBXYWl0IGZvciBzcl9jaGVjayB0byBydW4KK2VjaG8gIldhaXRpbmcgZm9yIGxhcmdlIHZhbHVl IHRlc3QuLi4iCitmb3IgaSBpbiB7MS4uMTB9OyBkbworICAgIGlmIGdyZXAgLXEgImV4dHJlbWVs eSBsYXJnZSBkZWxheSB2YWx1ZSIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAg ICAgICAgZWNobyAiTGFyZ2UgdmFsdWUgd2FybmluZyBkZXRlY3RlZCBhZnRlciAke2l9IHNlY29u ZHMiCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyMgQ2hlY2sg Zm9yIGxhcmdlIHZhbHVlIHdhcm5pbmcKK2dyZXAgImV4dHJlbWVseSBsYXJnZSBkZWxheSB2YWx1 ZS4qZm9yIG5vZGUiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAw IF07dGhlbgorICAgIGVjaG8gZmFpbDogbGFyZ2UgdmFsdWUgd2FybmluZyBub3QgZm91bmQKKyAg ICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBsYXJnZSB2YWx1ZSB2 YWxpZGF0aW9uIHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyAiPT09IFRlc3Q0OiBXcm9uZyBudW1iZXIgb2Ygb3V0 cHV0IHZhbHVlcyA9PT0iCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3NlZCAt aS5iYWsgInN8ZGVsYXlfY21kX2xhcmdlLnNofGRlbGF5X2NtZF93cm9uZ19jb3VudC5zaHwiIGV0 Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisj IFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1bgorZWNobyAiV2FpdGluZyBmb3Igd3JvbmcgY291bnQg dGVzdC4uLiIKK2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgZ3JlcCAtcSAicmV0dXJuZWQu KnZhbHVlcywgZXhwZWN0ZWQuKnJlcGxpY2EiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0 aGVuCisgICAgICAgIGVjaG8gIldyb25nIGNvdW50IHdhcm5pbmcgZGV0ZWN0ZWQgYWZ0ZXIgJHtp fSBzZWNvbmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisj IENoZWNrIGZvciB3cm9uZyBjb3VudCB3YXJuaW5nCitncmVwICJyZXR1cm5lZC4qdmFsdWVzLCBl eHBlY3RlZC4qcmVwbGljYS4qQ29tbWFuZCBzaG91bGQgb3V0cHV0IG9uZSBkZWxheSB2YWx1ZSBw ZXIgcmVwbGljYSIgbG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAg XTt0aGVuCisgICAgZWNobyBmYWlsOiB3cm9uZyBjb3VudCB2YWxpZGF0aW9uIHRlc3Qgbm90IGZv dW5kCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNobyBvazogd3Jvbmcg Y291bnQgdmFsaWRhdGlvbiB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93bmFsbAorCisjIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gIj09PSBUZXN0NTogTXVsdGlwbGUgLTEg dmFsdWVzID09PSIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorY2F0ID4gZGVs YXlfY21kX211bHRpX2Rvd24uc2ggPDwgJ0VPRicKKyMhL2Jpbi9iYXNoCisjIFRlc3QgbXVsdGlw bGUgcmVwbGljYXMgZG93bgorZWNobyAiLTEgLTEiCitFT0YKK2NobW9kICt4IGRlbGF5X2NtZF9t dWx0aV9kb3duLnNoCisKK3NlZCAtaS5iYWsgInN8ZGVsYXlfY21kX3dyb25nX2NvdW50LnNofGRl bGF5X2NtZF9tdWx0aV9kb3duLnNofCIgZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dh aXRfZm9yX3BncG9vbF9zdGFydHVwCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuCitlY2hv ICJXYWl0aW5nIGZvciBtdWx0aS1kb3duIHRlc3QuLi4iCitmb3IgaSBpbiB7MS4uMTB9OyBkbwor ICAgIGlmIGdyZXAgLXEgIm5vZGUuKnJlcG9ydGVkIGFzIGRvd24gYnkgZXh0ZXJuYWwgY29tbWFu ZCIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAiTXVsdGlw bGUgZG93biBub2RlcyBkZXRlY3RlZCBhZnRlciAke2l9IHNlY29uZHMiCisgICAgICAgIGJyZWFr CisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyMgQ2hlY2sgZm9yIG11bHRpcGxlIC0xIGhh bmRsaW5nCitET1dOX0NPVU5UPSQoZ3JlcCAtYyAibm9kZS4qcmVwb3J0ZWQgYXMgZG93biBieSBl eHRlcm5hbCBjb21tYW5kLipkZWxheSAtMSIgbG9nL3BncG9vbC5sb2cpCitpZiBbICIkRE9XTl9D T1VOVCIgLWx0IDIgXTsgdGhlbgorICAgIGVjaG8gZmFpbDogZXhwZWN0ZWQgMiBkb3duIG5vZGUg bWVzc2FnZXMsIGZvdW5kICRET1dOX0NPVU5UCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQg MQorZmkKKworZWNobyBvazogbXVsdGlwbGUgLTEgaGFuZGxpbmcgdGVzdCBzdWNjZWVkZWQKKy4v c2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICI9 PT0gVGVzdDY6IENvbW1hbmQgdGltZW91dCB3aXRoIGRpZmZlcmVudCB0aW1lb3V0IHZhbHVlcyA9 PT0iCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2NhdCA+IGRlbGF5X2NtZF90 aW1lb3V0LnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBDb21tYW5kIHRoYXQgdGFrZXMgNSBz ZWNvbmRzCitzbGVlcCA1CitlY2hvICIyNSA1MCIKK0VPRgorY2htb2QgK3ggZGVsYXlfY21kX3Rp bWVvdXQuc2gKKworIyBUZXN0IHdpdGggdGltZW91dCBzaG9ydGVyIHRoYW4gY29tbWFuZCBkdXJh dGlvbgorc2VkIC1pLmJhayAic3xkZWxheV9jbWRfbXVsdGlfZG93bi5zaHxkZWxheV9jbWRfdGlt ZW91dC5zaHwiIGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAicmVwbGljYXRpb25fZGVsYXlfc291cmNl X3RpbWVvdXQgPSAyIiA+PiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3Jf cGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciB0aW1lb3V0CitlY2hvICJXYWl0aW5nIGZvciB0 aW1lb3V0IHRlc3QgKDJzIHRpbWVvdXQsIDVzIGNvbW1hbmQpLi4uIgorZm9yIGkgaW4gezEuLjEw fTsgZG8KKyAgICBpZiBncmVwIC1xICJyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIHRpbWVkIG91 dCBhZnRlciAyIHNlY29uZHMiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAg ICAgIGVjaG8gIlRpbWVvdXQgZGV0ZWN0ZWQgYWZ0ZXIgJHtpfSBzZWNvbmRzIgorICAgICAgICBi cmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIENoZWNrIGZvciB0aW1lb3V0IG1l c3NhZ2UKK2dyZXAgInJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgdGltZWQgb3V0IGFmdGVyIDIg c2Vjb25kcyIgbG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0 aGVuCisgICAgZWNobyBmYWlsOiB0aW1lb3V0IG5vdCBkZXRlY3RlZAorICAgIC4vc2h1dGRvd25h bGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IHRpbWVvdXQgdGVzdCBzdWNjZWVkZWQKKy4v c2h1dGRvd25hbGwKKworIyBUZXN0IHdpdGggdGltZW91dCBsb25nZXIgdGhhbiBjb21tYW5kIGR1 cmF0aW9uCitzZWQgLWkuYmFrICJzfHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0ID0g MnxyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dCA9IDEwfCIgZXRjL3BncG9vbC5jb25m CisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9zdGFydHVwCisKKyMgV2FpdCBmb3Igc3Vj Y2Vzc2Z1bCBleGVjdXRpb24KK2VjaG8gIldhaXRpbmcgZm9yIHN1Y2Nlc3NmdWwgZXhlY3V0aW9u ICgxMHMgdGltZW91dCwgNXMgY29tbWFuZCkuLi4iCitmb3IgaSBpbiB7MS4uMTV9OyBkbworICAg IGlmIGdyZXAgLXEgImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kLipkZWxheV9j bWRfdGltZW91dC5zaCIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgICAg ZWNobyAiQ29tbWFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkgYWZ0ZXIgJHtpfSBzZWNvbmRzIgor ICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIFNob3VsZCBub3Qg dGltZW91dCB0aGlzIHRpbWUKK2lmIGdyZXAgLXEgInJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQg dGltZWQgb3V0IiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgIGVjaG8gZmFp bDogY29tbWFuZCBzaG91bGQgbm90IGhhdmUgdGltZWQgb3V0IHdpdGggMTBzIHRpbWVvdXQKKyAg ICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiBleHRlbmRlZCB0aW1l b3V0IHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorZWNobyAiPT09IFRlc3Q3OiBNaXggb2YgdmFsaWQgZGVsYXlzIGFuZCAt MSA9PT0iCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2NhdCA+IGRlbGF5X2Nt ZF9taXhlZC5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgT25lIHJlcGxpY2EgdXAgKDI1bXMp LCBvbmUgZG93biAoLTEpCitlY2hvICIyNSAtMSIKK0VPRgorY2htb2QgK3ggZGVsYXlfY21kX21p eGVkLnNoCisKK3NlZCAtaS5iYWsgInN8ZGVsYXlfY21kX3RpbWVvdXQuc2h8ZGVsYXlfY21kX21p eGVkLnNofCIgZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9z dGFydHVwCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sKK2VjaG8gIldhaXRpbmcgZm9yIG1peGVkIGRl bGF5IHRlc3QuLi4iCitmb3IgaSBpbiB7MS4uMTB9OyBkbworICAgIGlmIGdyZXAgLXEgIm5vZGUu KnJlcG9ydGVkIGFzIGRvd24gYnkgZXh0ZXJuYWwgY29tbWFuZCIgbG9nL3BncG9vbC5sb2cgMj4v ZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAiTWl4ZWQgZGVsYXkgaGFuZGxpbmcgZGV0ZWN0 ZWQgYWZ0ZXIgJHtpfSBzZWNvbmRzIgorICAgICAgICBicmVhaworICAgIGZpCisgICAgc2xlZXAg MQorZG9uZQorCisjIFNob3VsZCBsb2cgb25lIC0xIGFuZCBwcm9jZXNzIG9uZSBub3JtYWwgZGVs YXkKK2dyZXAgIm5vZGUuKnJlcG9ydGVkIGFzIGRvd24gYnkgZXh0ZXJuYWwgY29tbWFuZC4qZGVs YXkgLTEiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhl bgorICAgIGVjaG8gZmFpbDogLTEgbm90IGxvZ2dlZAorICAgIC4vc2h1dGRvd25hbGwKKyAgICBl eGl0IDEKK2ZpCisKKyMgU2hvdWxkIGFsc28gbG9nIHRoZSBub3JtYWwgcmVwbGljYSBkZWxheQor Z3JlcCAiUmVwbGljYXRpb24gb2Ygbm9kZS4qZXh0ZXJuYWwgY29tbWFuZCIgbG9nL3BncG9vbC5s b2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAgZWNobyAiTm90ZTog Tm9ybWFsIHJlcGxpY2EgZGVsYXkgbG9nZ2luZyBtYXkgbm90IGJlIHZpc2libGUgd2l0aCBsb2df c3RhbmRieV9kZWxheSBzZXR0aW5ncyIKK2ZpCisKK2VjaG8gb2s6IG1peGVkIGRlbGF5IGhhbmRs aW5nIHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKK2VjaG8gIkFsbCB2YWxpZGF0aW9u IHRlc3RzIHBhc3NlZCEiCitleGl0IDAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0tIAoy LjUyLjAKCg== --000000000000eba2b506469f019a--