Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lhVBW-00011P-21 for pgsql-hackers@arkaria.postgresql.org; Fri, 14 May 2021 10:36:46 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lhVAx-0001Ab-Pu for pgsql-hackers@arkaria.postgresql.org; Fri, 14 May 2021 10:36:11 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lhVAx-00019n-Dx for pgsql-hackers@lists.postgresql.org; Fri, 14 May 2021 10:36:11 +0000 Received: from mail-m17670.qiye.163.com ([59.111.176.70]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lhVAq-0007s9-62 for pgsql-hackers@postgresql.org; Fri, 14 May 2021 10:36:08 +0000 Received: from activesync-2-hmail-entmail-virt40.dg.163.org (localhost [127.0.0.1]) by mail-m17670.qiye.163.com (Hmail) with ESMTP id B90293C014A; Fri, 14 May 2021 18:35:53 +0800 (CST) From: "Pengchengliu" To: "'Greg Nancarrow'" Cc: "'Andres Freund'" , "'PostgreSQL-development'" References: <000901d742f1$acae3ad0$060ab070$@tju.edu.cn> <20210507035510.he7e5hiu6dsi4rug@alap3.anarazel.de> <000001d7432b$33cc4a00$9b64de00$@tju.edu.cn> <000601d74604$d8af7570$8a0e6050$@tju.edu.cn> <002501d74796$ce4083c0$6ac18b40$@tju.edu.cn> <000601d74868$4cacca30$e6065e90$@tju.edu.cn> In-Reply-To: Subject: RE: Parallel scan with SubTransGetTopmostTransaction assert coredump Date: Fri, 14 May 2021 18:35:53 +0800 Message-ID: <002f01d748ac$eaa781a0$bff684e0$@tju.edu.cn> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0030_01D748EF.F8CD59B0" X-Mailer: Microsoft Outlook 16.0 Thread-Index: AQJWZzOrsYDN3Ar+nCJfWwrfcv+5KQKg04GwAjPEpnoBa3FGLQFfmMneAjZdCbACx8BMQwIzciSwAk3xh68DTHSB36lBLlwQ Content-Language: zh-cn X-HM-Spam-Status: e1kfGhgUHx5ZQUtXWQgYFAkeWUFZS1VLWVdZKFlBSE83V1ktWUFJV1kPCR oVCBIfWUFZGUlDGlYeQkMYGRhITkIYHxlVEwETFhoSFyQUDg9ZV1kWGg8SFR0UWUFZT0tIVUpKS0 hOSFVLWQY+ X-HM-Sender-Digest: e1kMHhlZQQ8JDh5XWRIfHhUPWUFZRzo4GDpCOjoRPxM3NzM8OTYMTws9 ERoLHlVKVUpNSUtCQ0NOTk9KT0lVMxYaEhdVCx4VHBgTHhUcFxIOOw8RDlUeHw5VGBVFWVdZEgtZ QVlJSkNVSVVCTFVCSVlXWQgBWUFMTUNISjcG X-HM-Tid: 0a796a726a1eda5akuwsb90293c014a List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multipart message in MIME format. ------=_NextPart_000_0030_01D748EF.F8CD59B0 Content-Type: multipart/alternative; boundary="----=_NextPart_001_0031_01D748EF.F8CD80C0" ------=_NextPart_001_0031_01D748EF.F8CD80C0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Greg, =20 When you get the different xmin between active snapshot and = transaction snapshot, maybe there is no coredump.=20 As maybe there is not tupe(xmin) between ActiveSnapshot->xmin and = TransactionSnapshot->xmin which needs to be scaned in parallel process. =20 There is no doubt, it is very likely that ActiveSnapshot->xmin = precedes TransactionSnapshot->xmin. =20 For this coredump, we must make sure parallel and snapshot overflow. = If snapshot is not overflow, you cannot get the coredump.=20 As coredump is from parallel scan in MVCC when snapshot is overflow. =20 Did you use pgbench with the script sub_120.sql which I provide in = attachment?=20 As the default PGPROC_MAX_CACHED_SUBXIDS is 64. In script sub_120.sql, = for one transaction, it will use 120 subtransactions which is much = larger than 64. While getting the snapshot, it must be overflow. I really don't know = why your snapshot is not overflow. Did you increase the number PGPROC_MAX_CACHED_SUBXIDS? Please don't = change any codes, now we just use the origin codes in PG13.2. I have checked the codes in master branch, there is no change about = this mechanism. This issue should still exist.=20 =20 =20 Thanks Pengcheng =20 -----Original Message----- From: Greg Nancarrow =20 Sent: 2021=E5=B9=B45=E6=9C=8814=E6=97=A5 16:47 To: Pengchengliu Cc: Andres Freund ; PostgreSQL-development = Subject: Re: Parallel scan with SubTransGetTopmostTransaction assert = coredump =20 On Fri, May 14, 2021 at 12:25 PM Pengchengliu < = pengchengliu@tju.edu.cn> wrote: >=20 > Hi Greg, >=20 > Thanks for you replay and test. >=20 >=20 >=20 > When main process gets the transaction snapshot in = InitializeParallelDSM->GetTransactionSnapshot, the transaction snapshot = xmin is very likely follows active snapshot xmin. >=20 >=20 >=20 > Use gdb it is easy to verify it. >=20 > Create env as blow: >=20 >=20 >=20 > 1, Use PG13.2(3fb4c75e857adee3da4386e947ba58a75f3e74b7), init a = cluster database. >=20 > 2, Append the postgres.conf as below: >=20 >=20 >=20 > max_connections =3D 2000 >=20 > parallel_setup_cost=3D0 >=20 > parallel_tuple_cost=3D0 >=20 > min_parallel_table_scan_size=3D0 >=20 > max_parallel_workers_per_gather=3D8 >=20 > max_parallel_workers =3D 128 >=20 >=20 >=20 > 3, Start the cluster database. Use the init_test.sql script in = attachment to create some test tables. >=20 > 4, Use the sub_120.sql script in attachment with pgbench to test it. >=20 >=20 >=20 > pgbench -d postgres -p 33550 -n -r -f sub_120.sql -c 200 -j 200 = -T 1800 >=20 >=20 >=20 >=20 >=20 >=20 >=20 > Then you can login the database, and use GDB to verify it. >=20 > 1, First use explain, make sure force Parallel is OK. >=20 >=20 >=20 > postgres=3D# explain (verbose,analyze) select count(*) from = contend1; >=20 > =20 > QUERY PLAN >=20 >=20 >=20 > ---------------------------------------------------------------------- > --------------------------------------------------------------- >=20 > ---------------- >=20 > Finalize Aggregate (cost=3D12006.11..12006.12 rows=3D1 width=3D8) = (actual=20 > time=3D1075.214..1075.449 rows=3D1 loops=3D1) >=20 > Output: count(*) >=20 > -> Gather (cost=3D12006.08..12006.09 rows=3D8 width=3D8) (actual=20 > time=3D1075.198..1075.433 rows=3D1 loops=3D1) >=20 > Output: (PARTIAL count(*)) >=20 > Workers Planned: 8 >=20 > Workers Launched: 0 >=20 > -> Partial Aggregate (cost=3D12006.08..12006.09 rows=3D1=20 > width=3D8) (actual time=3D1074.674..1074.676 rows=3D1 loops=3D1) >=20 > Output: PARTIAL count(*) >=20 > -> Parallel Seq Scan on public.contend1 =20 > (cost=3D0.00..11690.06 rows=3D126406 width=3D0) (actual = time=3D0.008..587.454=20 > rows=3D1 >=20 > 010200 loops=3D1) >=20 > Output: id, val, c2, c3, c4, c5, c6, c7, c8, c9,=20 > c10, crt_time >=20 > Planning Time: 0.123 ms >=20 > Execution Time: 1075.588 ms >=20 > postgres=3D# select pg_backend_pid(); >=20 > pg_backend_pid >=20 > ---------------- >=20 > 2182678 >=20 >=20 >=20 >=20 >=20 > 2, use gdb to debug our backend process. Add the breakpoint in = parallel.c:219 and continue. >=20 >=20 >=20 > gdb -q -p 2182678 >=20 > ... >=20 > (gdb) b parallel.c:219 >=20 > Breakpoint 1 at 0x55d085: file = /home/liupc/build/build_postgres2/../../devel/postgres2/src/backend/acces= s/transam/parallel.c, line 219. >=20 > (gdb) c >=20 > Continuing. >=20 >=20 >=20 > 3, In the psql clinet, we can execute the explain command in step1 = again. >=20 > After we get the breakpoint in gdb, we wait a moment. Then we = execute next. >=20 > Use gdb check active_snapshot and transaction_snapshot, = active_snapshot->xmin is 158987 and transaction_snapshot->xmin is = 162160. >=20 > When I use gdb test it, sometimes active_snapshot is the same as = transaction_snapshot. Then you can try it multiple times, and before = execute next, try wait longer time. >=20 >=20 >=20 > Breakpoint 1, InitializeParallelDSM (pcxt=3D0x2d53670) >=20 > at=20 > /home/liupc/build/build_postgres2/../../devel/postgres2/src/backend/ac > cess/transam/parallel.c:219 >=20 > 219 Snapshot transaction_snapshot =3D = GetTransactionSnapshot(); >=20 > (gdb) n >=20 > 220 Snapshot active_snapshot =3D = GetActiveSnapshot(); >=20 > (gdb) >=20 > 223 oldcontext =3D = MemoryContextSwitchTo(TopTransactionContext); >=20 > (gdb) p *transaction_snapshot >=20 > $1 =3D {snapshot_type =3D SNAPSHOT_MVCC, xmin =3D 162160, xmax =3D = 183011, xip=20 > =3D 0x2d50d10, xcnt =3D 179, subxip =3D 0x148a9cddf010, >=20 > subxcnt =3D 0, suboverflowed =3D true, takenDuringRecovery =3D = false,=20 > copied =3D false, curcid =3D 0, speculativeToken =3D 0, >=20 > active_count =3D 0, regd_count =3D 0, ph_node =3D {first_child =3D = 0x0,=20 > next_sibling =3D 0x0, prev_or_parent =3D 0x0}, whenTaken =3D 0, lsn = =3D 0} >=20 > (gdb) p *active_snapshot >=20 > $2 =3D {snapshot_type =3D SNAPSHOT_MVCC, xmin =3D 158987, xmax =3D = 173138, xip=20 > =3D 0x2d53288, xcnt =3D 178, subxip =3D 0x0, subxcnt =3D 0, >=20 > suboverflowed =3D true, takenDuringRecovery =3D false, copied =3D = true,=20 > curcid =3D 0, speculativeToken =3D 0, active_count =3D 1, >=20 > regd_count =3D 2, ph_node =3D {first_child =3D 0x0, next_sibling =3D = 0x0,=20 > prev_or_parent =3D 0x2d52e48}, whenTaken =3D 0, lsn =3D 0} >=20 > (gdb) >=20 >=20 =20 Hi Pengcheng, =20 I followed all your steps. However, I perhaps get different behavior in my environment. 99% of the time, the xmin and xmax of the active_snapshot and = transaction_snapshot are the same (regardless of how long I wait at = different points after the breakpoint is hit). I've had one or two = instances where the xmax values differ. I managed to catch just one case = where there were different xmin and xmax values in the snapshots, but = this occurred just prior to the pgbench client completing and = terminating, and when I continued in the debugger, there was no = crash/coredump. =20 However, I think I've spotted something potentially important to this = issue: For me, almost always "suboverflowed =3D false" in the snapshots (except = in that one case, right at the end of the pgbench run), yet in your gdb = example "suboverflowed =3D true" in both of the snapshots (i.e. the = snapshot subxip array has overflowed). I'm guessing that this may be = related to the coredump issue, but I'm not exactly sure how it has = happened, and why it seemingly isn't being handled correctly and causes = that Assert to fire in your case. Can you try and find out how the snapshot suboverflow is being set in = your case? (since you are getting this readily in your examined snapshots???) I think there's only several places where it can be set to = "true" (e.g. procarray.c:1641). Also, does increasing PGPROC_MAX_CACHED_SUBXIDS avoid, or delay, the = problem for you? It's currently defined as 64. I notice that there's been some changes related to snapshot data = handling and subxid overflow since 13.2, so I'm wondering whether your = coredump issue can be reproduced with the latest code? =20 Regards, Greg Nancarrow Fujitsu Australia ------=_NextPart_001_0031_01D748EF.F8CD80C0 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Hi Greg,

=C2=A0

=C2=A0=C2=A0When you get the different xmin between = active snapshot and transaction snapshot, maybe there is no coredump. =

=C2=A0=C2=A0As maybe there is not = tupe(xmin) between ActiveSnapshot->xmin and = TransactionSnapshot->xmin which needs to be scaned in parallel = process.

=C2=A0

=C2=A0=C2=A0There is no doubt, it is very likely = that ActiveSnapshot->xmin precedes = TransactionSnapshot->xmin.

=C2=A0

=C2=A0=C2=A0For this coredump, we must make sure = parallel and snapshot overflow. If snapshot is not overflow, you cannot = get the coredump.

=C2=A0=C2=A0As = coredump is from parallel scan in MVCC when snapshot is = overflow.

=C2=A0

=C2=A0=C2=A0Did you use pgbench with the script = sub_120.sql which I provide in attachment?

=C2=A0=C2=A0As the default = PGPROC_MAX_CACHED_SUBXIDS is 64. In script sub_120.sql, for one = transaction, it will use 120 subtransactions which is much larger than = 64.

=C2=A0 While getting the = snapshot, it must be overflow. I really don't know why your snapshot is = not overflow.

=C2=A0=C2=A0Did you increase the number = PGPROC_MAX_CACHED_SUBXIDS? Please don't change any codes, now we just = use the origin codes in PG13.2.

=C2=A0 I have checked the codes in master branch, = there is no change about this mechanism. This issue should still exist. =

=C2=A0=C2=A0

=C2=A0=C2=A0

=C2=A0=C2=A0Thanks

=C2=A0 Pengcheng

 

-----Original Message-----
From: Greg Nancarrow = <gregn4422@gmail.com>
Sent: 2021=E5=B9=B45=E6=9C=8814=E6=97=A5 = 16:47
To: Pengchengliu <pengchengliu@tju.edu.cn>
Cc: Andres = Freund <andres@anarazel.de>; PostgreSQL-development = <pgsql-hackers@postgresql.org>
Subject: Re: Parallel scan with = SubTransGetTopmostTransaction assert coredump

 

On = Fri, May 14, 2021 at 12:25 PM Pengchengliu <pengchengliu@tju.edu.cn> wrote:

> 

> Hi Greg,

> 

>=C2=A0=C2=A0 Thanks for you replay and = test.

> 

> 

> 

>=C2=A0=C2=A0 When main process gets the = transaction snapshot in = InitializeParallelDSM->GetTransactionSnapshot,=C2=A0 the transaction = snapshot xmin is very likely follows active snapshot = xmin.

> 

> 

> 

>=C2=A0=C2=A0 Use gdb it is easy to verify = it.

> 

>=C2=A0=C2=A0 Create env as = blow:

> 

> 

> 

>=C2=A0 =C2=A01, Use = PG13.2(3fb4c75e857adee3da4386e947ba58a75f3e74b7), init a cluster = database.

> 

>=C2=A0=C2=A0 2, Append the postgres.conf as = below:

> 

> 

> 

>=C2=A0=C2=A0 max_connections =3D = 2000

> 

>=C2=A0=C2=A0 = parallel_setup_cost=3D0

> 

>=C2=A0=C2=A0 = parallel_tuple_cost=3D0

> 

>=C2=A0=C2=A0 = min_parallel_table_scan_size=3D0

> 

>=C2=A0=C2=A0 = max_parallel_workers_per_gather=3D8

> 

>=C2=A0=C2=A0 max_parallel_workers =3D = 128

> 

> 

> 

>=C2=A0=C2=A0 3, Start the cluster database. Use = the init_test.sql script in attachment to create some test = tables.

> 

>=C2=A0=C2=A0 4, Use the sub_120.sql script in = attachment with pgbench to test it.

> 

> 

> 

>=C2=A0=C2=A0 pgbench=C2=A0 -d postgres -p = 33550=C2=A0 -n -r -f sub_120.sql=C2=A0=C2=A0 -c 200 -j 200 -T = 1800

> 

> 

> 

> 

> 

> 

> 

>=C2=A0=C2=A0 Then you can login the database, = and use GDB to verify it.

> 

>=C2=A0=C2=A0 1, First use explain, make sure = force Parallel is OK.

> 

> 

> 

>=C2=A0=C2=A0 postgres=3D# explain = (verbose,analyze) select count(*) from contend1;

> 

>=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=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=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 =

> QUERY PLAN

> 

> 

> 

> = ----------------------------------------------------------------------

> = ---------------------------------------------------------------

> 

> ----------------

> 

> Finalize Aggregate=C2=A0 = (cost=3D12006.11..12006.12 rows=3D1 width=3D8) (actual

> time=3D1075.214..1075.449 rows=3D1 = loops=3D1)

> 

>=C2=A0=C2=A0=C2=A0 Output: = count(*)

> 

>=C2=A0=C2=A0=C2=A0 ->=C2=A0 Gather=C2=A0 = (cost=3D12006.08..12006.09 rows=3D8 width=3D8) (actual

> time=3D1075.198..1075.433 rows=3D1 = loops=3D1)

> 

>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 Output: (PARTIAL count(*))

> 

>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 Workers Planned: 8

> 

>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 Workers Launched: 0

> 

>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= =C2=A0 ->=C2=A0 Partial Aggregate=C2=A0 (cost=3D12006.08..12006.09 = rows=3D1

> width=3D8) (actual = time=3D1074.674..1074.676 rows=3D1 loops=3D1)

> 

>=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 Output: PARTIAL = count(*)

> 

>=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 Parallel Seq Scan = on public.contend1=C2=A0

> = (cost=3D0.00..11690.06 rows=3D126406 width=3D0) (actual = time=3D0.008..587.454

> = rows=3D1

> 

> 010200 loops=3D1)

> 

>=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 Output: id, val, c2, c3, c4, c5, c6, c7, c8, c9,

> c10, crt_time

> 

> Planning Time: 0.123 ms

> 

> Execution Time: 1075.588 ms

> 

>=C2=A0 postgres=3D# select = pg_backend_pid();

> 

> pg_backend_pid

> 

> ----------------

> 

>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= 2182678

> 

> 

> 

> 

> 

>=C2=A0=C2=A0 2, use gdb to debug our backend = process. Add the breakpoint in parallel.c:219 and = continue.

> 

> 

> 

>=C2=A0=C2=A0 gdb=C2=A0 -q -p = 2182678

> 

>=C2=A0=C2=A0 ...

> 

>=C2=A0=C2=A0 (gdb) b = parallel.c:219

> 

> Breakpoint 1 at 0x55d085: file = /home/liupc/build/build_postgres2/../../devel/postgres2/src/backend/acces= s/transam/parallel.c, line 219.

> 

>=C2=A0=C2=A0 (gdb) c

> 

> Continuing.

> 

> 

> 

>=C2=A0=C2=A0 3, In the psql clinet, we can = execute the explain command in step1 again.

> 

> =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0After we get the = breakpoint in gdb, we wait a moment. Then we execute = next.

> 

>=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 Use gdb check = active_snapshot and transaction_snapshot, active_snapshot->xmin is = 158987 and transaction_snapshot->xmin is 162160.

> 

> When I use gdb test it, sometimes = active_snapshot is the same as transaction_snapshot. Then you can try it = multiple times, and before execute next, try wait longer = time.

> 

> 

> 

>=C2=A0=C2=A0=C2=A0 Breakpoint 1, = InitializeParallelDSM (pcxt=3D0x2d53670)

> 

>=C2=A0=C2=A0=C2=A0=C2=A0 at

> = /home/liupc/build/build_postgres2/../../devel/postgres2/src/backend/ac

> = cess/transam/parallel.c:219

> 

> = 219=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= Snapshot=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 transaction_snapshot = =3D GetTransactionSnapshot();

> 

> (gdb) n

> 

> = 220=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= Snapshot=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 active_snapshot =3D = GetActiveSnapshot();

> 

> (gdb)

> 

> = 223=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0= oldcontext =3D = MemoryContextSwitchTo(TopTransactionContext);

> 

> (gdb) p *transaction_snapshot

> 

> $1 =3D {snapshot_type =3D SNAPSHOT_MVCC, xmin = =3D 162160, xmax =3D 183011, xip

> =3D 0x2d50d10, xcnt =3D 179, subxip =3D = 0x148a9cddf010,

> 

>=C2=A0=C2=A0 subxcnt =3D 0, suboverflowed =3D = true, takenDuringRecovery =3D false,

> copied =3D false, curcid =3D 0, = speculativeToken =3D 0,

> 

>=C2=A0=C2=A0 active_count =3D 0, regd_count =3D = 0, ph_node =3D {first_child =3D 0x0,

> next_sibling =3D 0x0, prev_or_parent =3D 0x0}, = whenTaken =3D 0, lsn =3D 0}

> 

> (gdb) p *active_snapshot

> 

> $2 =3D {snapshot_type =3D SNAPSHOT_MVCC, xmin = =3D 158987, xmax =3D 173138, xip

> =3D 0x2d53288, xcnt =3D 178, subxip =3D 0x0, = subxcnt =3D 0,

> 

>=C2=A0=C2=A0 suboverflowed =3D true, = takenDuringRecovery =3D false, copied =3D true,

> curcid =3D 0, speculativeToken =3D 0, = active_count =3D 1,

> 

>=C2=A0=C2=A0 regd_count =3D 2, ph_node =3D = {first_child =3D 0x0, next_sibling =3D 0x0,

> prev_or_parent =3D 0x2d52e48}, whenTaken =3D = 0, lsn =3D 0}

> 

> (gdb)

> 

> 

 

Hi = Pengcheng,

 

I followed all your steps.

However, I perhaps get different behavior in my = environment.

99% of the time, the = xmin and xmax of the active_snapshot and transaction_snapshot are the = same (regardless of how long I wait at different points after the = breakpoint is hit). I've had one or two instances where the xmax values = differ. I managed to catch just one case where there were different xmin = and xmax values in the snapshots, but this occurred just prior to the = pgbench client completing and terminating, and when I continued in the = debugger, there was no crash/coredump.

 

However, I think I've spotted something potentially = important to this issue:

For me, = almost always "suboverflowed =3D false" in the snapshots = (except in that one case, right at the end of the pgbench run), yet in = your gdb example "suboverflowed =3D true" in both of the = snapshots (i.e. the snapshot subxip array has overflowed). I'm guessing = that this may be related to the coredump issue, but I'm not exactly sure = how it has happened, and why it seemingly isn't being handled correctly = and causes that Assert to fire in your case.

Can you try and find out how the snapshot = suboverflow is being set in your case? (since you are getting this = readily in your examined

snapshots???) I think there's only several places = where it can be set to "true" (e.g. = procarray.c:1641).

Also, does = increasing PGPROC_MAX_CACHED_SUBXIDS avoid, or delay, the problem for = you? It's currently defined as 64.

I notice that there's been some changes related to = snapshot data handling and subxid overflow since 13.2, so I'm wondering = whether your coredump issue can be reproduced with the latest = code?

 

Regards,

Greg = Nancarrow

Fujitsu = Australia

------=_NextPart_001_0031_01D748EF.F8CD80C0-- ------=_NextPart_000_0030_01D748EF.F8CD59B0 Content-Type: application/x-tar; name="test_script.tar" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="test_script.tar" dGVzdF9zY3JpcHQvAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADAwMDA3MDAAMDAwMTc1 NwAwMDAxNzU3ADAwMDAwMDAwMDAwADE0MDQ1MjEwMDIxADAxMjQyNAAgNQAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB1c3RhciAgAGxpdXBjAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAbGl1cGMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB0 ZXN0X3NjcmlwdC9zdWJfMTIwLnNxbAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDAwMDYwMAAwMDAxNzU3 ADAwMDE3NTcAMDAwMDAwNDUwMjYAMTQwNDUyMTAwMjEAMDE0MzMxACAwAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbGl1cGMAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAABsaXVwYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAoK QkVHSU47ClxzZXQgbnVtIHJhbmRvbSgxLDEwKQpcc2V0IHBudW0gcmFuZG9tKDEsOTk5OTk5OSkK UFJFUEFSRSBzZWxfOnBudW0oaW50ZWdlcikgQVMgU0VMRUNUIGNvdW50KCopIEZST00gY29udGVu ZDpudW0gV0hFUkUgaWQgQkVUV0VFTiAkMSBBTkQgJDEgKyAxMDA7ClBSRVBBUkUgaXN0XzpwbnVt KGludGVnZXIpIEFTIGluc2VydCBpbnRvIGNvbnRlbmQ6bnVtKGlkLHZhbCkgIHZhbHVlcyAoJDEs IDEpOwpQUkVQQVJFIHVwZF86cG51bShpbnRlZ2VyKSBBUyBVUERBVEUgY29udGVuZDpudW0gU0VU IHZhbCA9IHZhbCArIDEgV0hFUkUgaWQgPSAkMTsKClNBVkVQT0lOVCBhXzE7ClxzZXQgcm5kIHJh bmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsK RVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNh dmVwb2ludCBhXzE7ClNBVkVQT0lOVCBhXzI7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVD VVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzI7ClNBVkVQ T0lOVCBhXzM7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAq IDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVu dF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzM7ClNBVkVQT0lOVCBhXzQ7ClxzZXQgcm5k IHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lk KTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNl IHNhdmVwb2ludCBhXzQ7ClNBVkVQT0lOVCBhXzU7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpF WEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBu dW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzU7ClNB VkVQT0lOVCBhXzY7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgx MCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNs aWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzY7ClNBVkVQT0lOVCBhXzc7ClxzZXQg cm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50 X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxl YXNlIHNhdmVwb2ludCBhXzc7ClNBVkVQT0lOVCBhXzg7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkw KQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxf OnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzg7 ClNBVkVQT0lOVCBhXzk7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsg OmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzk7ClNBVkVQT0lOVCBhXzEwOwpc c2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNs aWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsK cmVsZWFzZSBzYXZlcG9pbnQgYV8xMDsKU0FWRVBPSU5UIGFfMTE7ClxzZXQgcm5kIHJhbmRvbSgx LDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VU RSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2lu dCBhXzExOwpTQVZFUE9JTlQgYV8xMjsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUg aXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAq IDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTI7ClNBVkVQT0lO VCBhXzEzOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6 cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRf aWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xMzsKU0FWRVBPSU5UIGFfMTQ7ClxzZXQgcm5k IHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lk KTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNl IHNhdmVwb2ludCBhXzE0OwpTQVZFUE9JTlQgYV8xNTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTAp CkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86 cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTU7 ClNBVkVQT0lOVCBhXzE2Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBu dW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCAr IDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xNjsKU0FWRVBPSU5UIGFfMTc7 ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6 Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEp OwpyZWxlYXNlIHNhdmVwb2ludCBhXzE3OwpTQVZFUE9JTlQgYV8xODsKXHNldCBybmQgcmFuZG9t KDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVD VVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBv aW50IGFfMTg7ClNBVkVQT0lOVCBhXzE5Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VU RSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEw ICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xOTsKU0FWRVBP SU5UIGFfMjA7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAq IDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVu dF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzIwOwpTQVZFUE9JTlQgYV8yMTsKXHNldCBy bmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRf aWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVh c2Ugc2F2ZXBvaW50IGFfMjE7ClNBVkVQT0lOVCBhXzIyOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5 MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2Vs XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8y MjsKU0FWRVBPSU5UIGFfMjM7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86 cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5k ICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzIzOwpTQVZFUE9JTlQgYV8y NDsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCAr IDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsg MSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMjQ7ClNBVkVQT0lOVCBhXzI1Owpcc2V0IHJuZCByYW5k b20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVY RUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZl cG9pbnQgYV8yNTsKU0FWRVBPSU5UIGFfMjY7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVD VVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzI2OwpTQVZF UE9JTlQgYV8yNzsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEw ICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xp ZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMjc7ClNBVkVQT0lOVCBhXzI4Owpcc2V0 IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVu dF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVs ZWFzZSBzYXZlcG9pbnQgYV8yODsKU0FWRVBPSU5UIGFfMjk7ClxzZXQgcm5kIHJhbmRvbSgxLDk5 OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBz ZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBh XzI5OwpTQVZFUE9JTlQgYV8zMDsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0 XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpy bmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMzA7ClNBVkVQT0lOVCBh XzMxOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5k ICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQg KyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8zMTsKU0FWRVBPSU5UIGFfMzI7ClxzZXQgcm5kIHJh bmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsK RVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNh dmVwb2ludCBhXzMyOwpTQVZFUE9JTlQgYV8zMzsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVY RUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMzM7ClNB VkVQT0lOVCBhXzM0Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpj bGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8zNDsKU0FWRVBPSU5UIGFfMzU7Clxz ZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xp ZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpy ZWxlYXNlIHNhdmVwb2ludCBhXzM1OwpTQVZFUE9JTlQgYV8zNjsKXHNldCBybmQgcmFuZG9tKDEs OTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRF IHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50 IGFfMzY7ClNBVkVQT0lOVCBhXzM3Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBp c3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICog OnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8zNzsKU0FWRVBPSU5U IGFfMzg7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpy bmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9p ZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzM4OwpTQVZFUE9JTlQgYV8zOTsKXHNldCBybmQg cmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQp OwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ug c2F2ZXBvaW50IGFfMzk7ClNBVkVQT0lOVCBhXzQwOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkK RVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpw bnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV80MDsK U0FWRVBPSU5UIGFfNDE7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsg OmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzQxOwpTQVZFUE9JTlQgYV80MjsK XHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpj bGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7 CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNDI7ClNBVkVQT0lOVCBhXzQzOwpcc2V0IHJuZCByYW5kb20o MSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNV VEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9p bnQgYV80MzsKU0FWRVBPSU5UIGFfNDQ7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRF IGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAg KiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzQ0OwpTQVZFUE9J TlQgYV80NTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICog OnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50 X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNDU7ClNBVkVQT0lOVCBhXzQ2Owpcc2V0IHJu ZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9p ZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFz ZSBzYXZlcG9pbnQgYV80NjsKU0FWRVBPSU5UIGFfNDc7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkw KQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxf OnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzQ3 OwpTQVZFUE9JTlQgYV80ODsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0Xzpw bnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQg KyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNDg7ClNBVkVQT0lOVCBhXzQ5 Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsg OmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAx KTsKcmVsZWFzZSBzYXZlcG9pbnQgYV80OTsKU0FWRVBPSU5UIGFfNTA7ClxzZXQgcm5kIHJhbmRv bSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhF Q1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVw b2ludCBhXzUwOwpTQVZFUE9JTlQgYV81MTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNV VEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgx MCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNTE7ClNBVkVQ T0lOVCBhXzUyOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAg KiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGll bnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV81MjsKU0FWRVBPSU5UIGFfNTM7ClxzZXQg cm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50 X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxl YXNlIHNhdmVwb2ludCBhXzUzOwpTQVZFUE9JTlQgYV81NDsKXHNldCBybmQgcmFuZG9tKDEsOTk5 OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNl bF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFf NTQ7ClNBVkVQT0lOVCBhXzU1Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3Rf OnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJu ZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV81NTsKU0FWRVBPSU5UIGFf NTY7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQg KyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCAr IDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzU2OwpTQVZFUE9JTlQgYV81NzsKXHNldCBybmQgcmFu ZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpF WEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2 ZXBvaW50IGFfNTc7ClNBVkVQT0lOVCBhXzU4Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhF Q1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVt KDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV81ODsKU0FW RVBPSU5UIGFfNTk7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgx MCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNs aWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzU5OwpTQVZFUE9JTlQgYV82MDsKXHNl dCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGll bnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJl bGVhc2Ugc2F2ZXBvaW50IGFfNjA7ClNBVkVQT0lOVCBhXzYxOwpcc2V0IHJuZCByYW5kb20oMSw5 OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUg c2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQg YV82MTsKU0FWRVBPSU5UIGFfNjI7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlz dF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6 cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzYyOwpTQVZFUE9JTlQg YV82MzsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJu ZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lk ICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNjM7ClNBVkVQT0lOVCBhXzY0Owpcc2V0IHJuZCBy YW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7 CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBz YXZlcG9pbnQgYV82NDsKU0FWRVBPSU5UIGFfNjU7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpF WEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBu dW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzY1OwpT QVZFUE9JTlQgYV82NjsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVt KDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6 Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNjY7ClNBVkVQT0lOVCBhXzY3Owpc c2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNs aWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsK cmVsZWFzZSBzYXZlcG9pbnQgYV82NzsKU0FWRVBPSU5UIGFfNjg7ClxzZXQgcm5kIHJhbmRvbSgx LDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VU RSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2lu dCBhXzY4OwpTQVZFUE9JTlQgYV82OTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUg aXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAq IDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNjk7ClNBVkVQT0lO VCBhXzcwOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6 cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRf aWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV83MDsKU0FWRVBPSU5UIGFfNzE7ClxzZXQgcm5k IHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lk KTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNl IHNhdmVwb2ludCBhXzcxOwpTQVZFUE9JTlQgYV83MjsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTAp CkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86 cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfNzI7 ClNBVkVQT0lOVCBhXzczOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBu dW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCAr IDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV83MzsKU0FWRVBPSU5UIGFfNzQ7 ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6 Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEp OwpyZWxlYXNlIHNhdmVwb2ludCBhXzc0OwpTQVZFUE9JTlQgYV83NTsKXHNldCBybmQgcmFuZG9t KDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVD VVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBv aW50IGFfNzU7ClNBVkVQT0lOVCBhXzc2Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VU RSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEw ICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV83NjsKU0FWRVBP SU5UIGFfNzc7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAq IDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVu dF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzc3OwpTQVZFUE9JTlQgYV83ODsKXHNldCBy bmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRf aWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVh c2Ugc2F2ZXBvaW50IGFfNzg7ClNBVkVQT0lOVCBhXzc5Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5 MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2Vs XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV83 OTsKU0FWRVBPSU5UIGFfODA7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86 cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5k ICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzgwOwpTQVZFUE9JTlQgYV84 MTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCAr IDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsg MSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfODE7ClNBVkVQT0lOVCBhXzgyOwpcc2V0IHJuZCByYW5k b20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVY RUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZl cG9pbnQgYV84MjsKU0FWRVBPSU5UIGFfODM7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVD VVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzgzOwpTQVZF UE9JTlQgYV84NDsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEw ICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xp ZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfODQ7ClNBVkVQT0lOVCBhXzg1Owpcc2V0 IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVu dF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVs ZWFzZSBzYXZlcG9pbnQgYV84NTsKU0FWRVBPSU5UIGFfODY7ClxzZXQgcm5kIHJhbmRvbSgxLDk5 OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBz ZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBh Xzg2OwpTQVZFUE9JTlQgYV84NzsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0 XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpy bmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfODc7ClNBVkVQT0lOVCBh Xzg4Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5k ICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQg KyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV84ODsKU0FWRVBPSU5UIGFfODk7ClxzZXQgcm5kIHJh bmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsK RVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNh dmVwb2ludCBhXzg5OwpTQVZFUE9JTlQgYV85MDsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVY RUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfOTA7ClNB VkVQT0lOVCBhXzkxOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpj bGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV85MTsKU0FWRVBPSU5UIGFfOTI7Clxz ZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xp ZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpy ZWxlYXNlIHNhdmVwb2ludCBhXzkyOwpTQVZFUE9JTlQgYV85MzsKXHNldCBybmQgcmFuZG9tKDEs OTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRF IHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50 IGFfOTM7ClNBVkVQT0lOVCBhXzk0Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBp c3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICog OnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV85NDsKU0FWRVBPSU5U IGFfOTU7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpy bmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9p ZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzk1OwpTQVZFUE9JTlQgYV85NjsKXHNldCBybmQg cmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQp OwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ug c2F2ZXBvaW50IGFfOTY7ClNBVkVQT0lOVCBhXzk3Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkK RVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpw bnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV85NzsK U0FWRVBPSU5UIGFfOTg7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsg OmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzk4OwpTQVZFUE9JTlQgYV85OTsK XHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpj bGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7 CnJlbGVhc2Ugc2F2ZXBvaW50IGFfOTk7ClNBVkVQT0lOVCBhXzEwMDsKXHNldCBybmQgcmFuZG9t KDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVD VVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBv aW50IGFfMTAwOwpTQVZFUE9JTlQgYV8xMDE7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVD VVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzEwMTsKU0FW RVBPSU5UIGFfMTAyOwpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0o MTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpj bGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xMDI7ClNBVkVQT0lOVCBhXzEwMzsK XHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpj bGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7 CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTAzOwpTQVZFUE9JTlQgYV8xMDQ7ClxzZXQgcm5kIHJhbmRv bSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhF Q1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVw b2ludCBhXzEwNDsKU0FWRVBPSU5UIGFfMTA1Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhF Q1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVt KDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xMDU7ClNB VkVQT0lOVCBhXzEwNjsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVt KDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6 Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTA2OwpTQVZFUE9JTlQgYV8xMDc7 ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6 Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEp OwpyZWxlYXNlIHNhdmVwb2ludCBhXzEwNzsKU0FWRVBPSU5UIGFfMTA4Owpcc2V0IHJuZCByYW5k b20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVY RUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZl cG9pbnQgYV8xMDg7ClNBVkVQT0lOVCBhXzEwOTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVY RUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTA5OwpT QVZFUE9JTlQgYV8xMTA7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51 bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsg OmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzExMDsKU0FWRVBPSU5UIGFfMTEx Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsg OmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAx KTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xMTE7ClNBVkVQT0lOVCBhXzExMjsKXHNldCBybmQgcmFu ZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpF WEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2 ZXBvaW50IGFfMTEyOwpTQVZFUE9JTlQgYV8xMTM7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpF WEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBu dW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzExMzsK U0FWRVBPSU5UIGFfMTE0Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBu dW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCAr IDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xMTQ7ClNBVkVQT0lOVCBhXzEx NTsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0XzpwbnVtKDEwICogOnJuZCAr IDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkICsg MSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTE1OwpTQVZFUE9JTlQgYV8xMTY7ClxzZXQgcm5kIHJh bmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQgKyA6Y2xpZW50X2lkKTsK RVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCArIDEpOwpyZWxlYXNlIHNh dmVwb2ludCBhXzExNjsKU0FWRVBPSU5UIGFfMTE3Owpcc2V0IHJuZCByYW5kb20oMSw5OTk5MCkK RVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7CkVYRUNVVEUgc2VsXzpw bnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBzYXZlcG9pbnQgYV8xMTc7 ClNBVkVQT0lOVCBhXzExODsKXHNldCBybmQgcmFuZG9tKDEsOTk5OTApCkVYRUNVVEUgaXN0Xzpw bnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQpOwpFWEVDVVRFIHNlbF86cG51bSgxMCAqIDpybmQg KyA6Y2xpZW50X2lkICsgMSk7CnJlbGVhc2Ugc2F2ZXBvaW50IGFfMTE4OwpTQVZFUE9JTlQgYV8x MTk7ClxzZXQgcm5kIHJhbmRvbSgxLDk5OTkwKQpFWEVDVVRFIGlzdF86cG51bSgxMCAqIDpybmQg KyA6Y2xpZW50X2lkKTsKRVhFQ1VURSBzZWxfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCAr IDEpOwpyZWxlYXNlIHNhdmVwb2ludCBhXzExOTsKU0FWRVBPSU5UIGFfMTIwOwpcc2V0IHJuZCBy YW5kb20oMSw5OTk5MCkKRVhFQ1VURSBpc3RfOnBudW0oMTAgKiA6cm5kICsgOmNsaWVudF9pZCk7 CkVYRUNVVEUgc2VsXzpwbnVtKDEwICogOnJuZCArIDpjbGllbnRfaWQgKyAxKTsKcmVsZWFzZSBz YXZlcG9pbnQgYV8xMjA7CkRFQUxMT0NBVEUgQUxMOwpDT01NSVQ7CgAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAB0ZXN0X3NjcmlwdC9pbml0X3Rlc3Quc3FsAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAMDAwMDYwMAAwMDAxNzU3ADAwMDE3NTcAMDAwMDAwMDEyNTEAMTQwNDUyMTAwMjEAMDE1MTUw ACAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHVzdGFyICAAbGl1 cGMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsaXVwYwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAACBkbyBsYW5ndWFnZSBwbHBnc3FsICQkICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAKCSBkZWNsYXJlCgkgYmVnaW4KCSAgIGV4ZWN1dGUgJ2Ryb3AgdGFibGUgaWYg ZXhpc3RzIGNvbnRlbmQnOwoJICAgICBleGVjdXRlICdjcmVhdGUgdGFibGUgY29udGVuZChpZCBp bnQsIHZhbCBpbnQsIGMyIGludCBkZWZhdWx0IDAsYzMgaW50IGRlZmF1bHQgMCxjNCBpbnQgZGVm YXVsdCAwLGM1IGludCBkZWZhdWx0IDAsYzYgaW50IGRlZmF1bHQgMCxjNyBpbnQgZGVmYXVsdCAw LGM4IGludCBkZWZhdWx0IDAsYzkKCSAgICAgICBpbnQgZGVmYXVsdCAwLGMxMCBpbnQgZGVmYXVs dCAwLCBjcnRfdGltZSB0aW1lc3RhbXAgZGVmYXVsdCBub3coKSknOwoJICAgICAgICAgZXhlY3V0 ZSAnaW5zZXJ0IGludG8gY29udGVuZChpZCx2YWwpIHNlbGVjdCBnZW5lcmF0ZV9zZXJpZXMoMSwx MDAwMDAwKSwxICc7CgkJICAgCgkJICAKCQkgICBmb3IgaSBpbiAxLi4xMCBsb29wCgkJCSAgICAg ICBleGVjdXRlIGZvcm1hdCgnZHJvcCB0YWJsZSBpZiBleGlzdHMgY29udGVuZCVzJywgaSk7CgkJ CSAgICAgICAgICAgZXhlY3V0ZSBmb3JtYXQoJ2NyZWF0ZSB0YWJsZSBjb250ZW5kJXMgYXMgc2Vs ZWN0ICogZnJvbSBjb250ZW5kICcsIGkpOwoJCQkJICAgICBlbmQgbG9vcDsKCQkJICAgICBlbmQ7 CgkJCSAgICAgJCQ7CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ------=_NextPart_000_0030_01D748EF.F8CD59B0--