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.94.2) (envelope-from ) id 1taixk-004U6P-B5 for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Jan 2025 22:12:41 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1taixj-00630m-1F for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Jan 2025 22:12:39 +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.94.2) (envelope-from ) id 1taixi-00630d-Dl for pgsql-hackers@lists.postgresql.org; Wed, 22 Jan 2025 22:12:38 +0000 Received: from forward102d.mail.yandex.net ([178.154.239.213]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1taixd-000z5p-1x for pgsql-hackers@postgresql.org; Wed, 22 Jan 2025 22:12:37 +0000 Received: from mail-nwsmtp-smtp-production-main-35.klg.yp-c.yandex.net (mail-nwsmtp-smtp-production-main-35.klg.yp-c.yandex.net [IPv6:2a02:6b8:c42:3ba4:0:640:5b85:0]) by forward102d.mail.yandex.net (Yandex) with ESMTPS id 9261560924; Thu, 23 Jan 2025 01:12:29 +0300 (MSK) Received: by mail-nwsmtp-smtp-production-main-35.klg.yp-c.yandex.net (smtp/Yandex) with ESMTPSA id tBgpuX1OfqM0-XDkW6W2c; Thu, 23 Jan 2025 01:12:28 +0300 X-Yandex-Fwd: 1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tantorlabs.com; s=mail; t=1737583948; bh=I9NnGlni4ouO2wajqmcQ1mKtnhQcEui9Hhrb5R7o39U=; h=In-Reply-To:Cc:Date:References:To:Subject:Message-ID:From; b=o1r5GHtCi7SNSszA7etSFRMXJ7AUnI7bVwOVBcxOu38tn4f9wXvqOiZHRlhaGOwIO vdZNSIoF2Kljyi5HxBkHcwPeMGlqGiCamUa/LT+YySyUeNlPB9JTqJYJ0oV/K+Wuve tXzoGwWF0b2NQ2HXJWvv2qY/Z4+L2bfAzlLQzUp4= Authentication-Results: mail-nwsmtp-smtp-production-main-35.klg.yp-c.yandex.net; dkim=pass header.i=@tantorlabs.com Content-Type: multipart/mixed; boundary="------------H0UZsTPWlYZftYiXXSQVVwRQ" Message-ID: <0cafe9f5-a5e7-42e4-805f-b182f002ac27@tantorlabs.com> Date: Thu, 23 Jan 2025 01:11:55 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Sample rate added to pg_stat_statements From: Ilia Evdokimov To: Sami Imseih , Alexander Korotkov Cc: "Andrey M. Borodin" , Alena Rybakina , Michael Paquier , Greg Sabino Mullane , pgsql-hackers References: <320a31e6-4c91-438b-ab17-8a1d72384727@tantorlabs.com> <52e5e3aa-066a-4daf-8d65-77c34a2f0d98@tantorlabs.com> <6482A576-4465-4E46-A42C-F1767E8DDE30@yandex-team.ru> <20994d10-ab44-4c6b-91bc-c4675cd2e58e@tantorlabs.com> <9D8A5BC8-A3A5-4DA9-9382-F30D343247D1@yandex-team.ru> <6cf6270b-e8fa-4d99-b74a-17e781cdf309@tantorlabs.com> <3a27c830-b81f-4560-9774-a87d9b922fbd@tantorlabs.com> <7da368b6-e44f-47bd-891e-236bfb51bd26@tantorlabs.com> Content-Language: en-US In-Reply-To: <7da368b6-e44f-47bd-891e-236bfb51bd26@tantorlabs.com> List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------H0UZsTPWlYZftYiXXSQVVwRQ Content-Type: multipart/alternative; boundary="------------FR006Dr6mwykWywJleARbIN4" --------------FR006Dr6mwykWywJleARbIN4 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit On 20.01.2025 17:20, Ilia Evdokimov wrote: > > On 15.01.2025 20:16, Sami Imseih wrote: >>> Probably, but first I suggest benchmarking with sampling applied to >>> all queries. If the results are good, we can later filter certain >>> queries based on different characteristics. >> Absolutely. The benchmark numbers to justify this feature are >> the next step. Thanks for your work on this! >> >> Regards, >> >> Sami >> > Hi hackers, > > I’d like to share the results of my benchmark. > > To stress the spinlock in pg_stat_statements while incrementing > counters for popular entries, it's important to use the same query > repeatedly. To avoid overloading pgss with normalization, the queries > should not contain constants. I found that using the query 'SELECT > now()' works best for this purpose. > > I ran the benchmark on a machine with 48 CPUs, which may not be > sufficient to fully test sampling, but I was able to achieve around > 1.5 million TPS using 'SELECT now()'. To load the CPUs to about > 85-90%, I ran pgbench with -c 45 -j 45, using a custom 'SELECT now()' > in pgbench_script.sql file containing 'SELECT now()'. The benchmark > was conducted on a newly created 'pgbench' database, , with processes > like autovacuum, fsync, and checkpoints disabled(e.g., checkpoint > _timeout = '24h'). > > I tested various 'sample_rate' values and compared the performance > with pgss both enabled and disabled. The detailed results are attached > in the 'sample_rate.txt' file, along with pgbench progress reports > every 10 seconds. > > > pgbench -c 45 -j 45 -T 200 -f pgbench_script.sql --progress=10 pgbench > > sample_rate | num of transactions | lat | stddev | tps > >         1.0 |      1207127.572580 |0.037|  0.030 | 241400836 >         0.8 |      1403551.516338 |0.032|  0.031 | 280673286 >         0.5 |      1658596.614064 |0.027|  0.012 | 331679344 >         0.2 |      1757747.509476 |0.025|  0.008 | 351507156 >         0.0 |      1760055.986259 |0.025|  0.008 | 351965559 >    pgss off |      1828743.791205 |0.024|  0.008 | 365703762 > > > If anyone has the capability to run this benchmark on machines with > more CPUs or with different queries, it would be nice. I’d appreciate > any suggestions or feedback. > > --. > Best regards, > Ilia Evdokimov, > Tantor Labs LLC. Hi hackers, I'd like to share the results of a new benchmark I conducted using the pgbench tool with the -M prepared -S flags! Previously, I shared a benchmark focused on extreme high-load scenarios, but now I’ve conducted a more realistic test case based on Alexander’s suggestion [0]. Machine Characteristics: * 48 CPUs * 374 GB RAM * 3 TB Disk To avoid interference from background processes, I disabled autovacuum and synchronous operations using the following settings in postgresql.auto.conf:     autovacuum = off     fsync = off     checkpoint_timeout = '24h'     shared_preload_libraries = 'pg_stat_statements' Create a test database:     createdb pgbench     pgbench -i -s 3000 pgbench If pg_stat_statements is enabled, reset its hash table before starting the benchmark:     psql -c 'SELECT pg_stat_statements_reset()' Run the benchmark with the following command:     pgbench -c 46 -j 46 -T 200 -M prepared -S --progress=10 pgbench Here are the results with and without pg_stat_statements, varying the sample_rate parameter: sample_rate |                 tps | lat | stddev | num of transactions        1.0 |      1299070.105018 |0.035|  0.055 | 259781895        0.8 |      1393327.873249 |0.033|  0.039 | 278630669        0.5 |      1420303.856480 |0.032|  0.037 | 284023396        0.2 |      1432482.672301 |0.032|  0.037 | 286461834        0.0 |      1760055.986259 |0.032|  0.036 | 290169584   pgss off |      1460920.805259 |0.031|  0.036 | 292144256 When pg_stat_statements is enabled, TPS decreases by about 10%. However, by leveraging the new sampling feature (sample_rate), it is possible to significantly mitigate this overhead. For detailed benchmark results with the '-M prepared -S' flags, please see the attached file 'sample_rate_prepared.txt' P.S. Previously, I shared results under extreme high-load conditions using the query 'SELECT now()'. For clarity, I’m rewriting those results for better readability: sample_rate |                 tps | lat | stddev | num of transactions        1.0 |      1207127.572580 |0.037|  0.030 | 241400836        0.8 |      1403551.516338 |0.032|  0.031 | 280673286        0.5 |      1658596.614064 |0.027|  0.012 | 331679344        0.2 |      1757747.509476 |0.025|  0.008 | 351507156        0.0 |      1760055.986259 |0.025|  0.008 | 351965559   pgss off |      1828743.791205 |0.024|  0.008 | 365703762 Here, we observed a significant ~33% decrease in TPS when pgss was enabled without sampling. Any thoughts? [0]: https://www.postgresql.org/message-id/CAPpHfdsTKAQqC3A48-MGQhrhfEamXZPb64w%3Dutk7thQcOMNr7Q%40mail.gmail.com -- Best regards, Ilia Evdokimov, Tantor Labs LLC. --------------FR006Dr6mwykWywJleARbIN4 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: 8bit


On 20.01.2025 17:20, Ilia Evdokimov wrote:

On 15.01.2025 20:16, Sami Imseih wrote:
Probably, but first I suggest benchmarking with sampling applied to all queries. If the results are good, we can later filter certain queries based on different characteristics.
Absolutely. The benchmark numbers to justify this feature are
the next step. Thanks for your work on this!

Regards,

Sami

Hi hackers,

I’d like to share the results of my benchmark.

To stress the spinlock in pg_stat_statements while incrementing counters for popular entries, it's important to use the same query repeatedly. To avoid overloading pgss with normalization, the queries should not contain constants. I found that using the query 'SELECT now()' works best for this purpose.

I ran the benchmark on a machine with 48 CPUs, which may not be sufficient to fully test sampling, but I was able to achieve around 1.5 million TPS using 'SELECT now()'. To load the CPUs to about 85-90%, I ran pgbench with -c 45 -j 45, using a custom 'SELECT now()' in pgbench_script.sql file containing 'SELECT now()'. The benchmark was conducted on a newly created 'pgbench' database, , with processes like autovacuum, fsync, and checkpoints disabled(e.g., checkpoint _timeout = '24h').

I tested various 'sample_rate' values and compared the performance with pgss both enabled and disabled. The detailed results are attached in the 'sample_rate.txt' file, along with pgbench progress reports every 10 seconds.


pgbench -c 45 -j 45 -T 200 -f pgbench_script.sql --progress=10 pgbench

sample_rate | num of transactions | lat | stddev | tps

        1.0 |      1207127.572580 |0.037|  0.030 | 241400836
        0.8 |      1403551.516338 |0.032|  0.031 | 280673286
        0.5 |      1658596.614064 |0.027|  0.012 | 331679344
        0.2 |      1757747.509476 |0.025|  0.008 | 351507156
        0.0 |      1760055.986259 |0.025|  0.008 | 351965559
   pgss off |      1828743.791205 |0.024|  0.008 | 365703762


If anyone has the capability to run this benchmark on machines with more CPUs or with different queries, it would be nice. I’d appreciate any suggestions or feedback.

--.
Best regards,
Ilia Evdokimov,
Tantor Labs LLC.


Hi hackers,


I'd like to share the results of a new benchmark I conducted using the pgbench tool with the -M prepared -S flags!


Previously, I shared a benchmark focused on extreme high-load scenarios, but now I’ve conducted a more realistic test case based on Alexander’s suggestion [0].

Machine Characteristics:

  • 48 CPUs
  • 374 GB RAM
  • 3 TB Disk

To avoid interference from background processes, I disabled autovacuum and synchronous operations using the following settings in postgresql.auto.conf:
    autovacuum = off
    fsync = off
    checkpoint_timeout = '24h'
    shared_preload_libraries = 'pg_stat_statements'

Create a test database:
    createdb pgbench
    pgbench -i -s 3000 pgbench

If pg_stat_statements is enabled, reset its hash table before starting the benchmark:
    psql -c 'SELECT pg_stat_statements_reset()'

Run the benchmark with the following command:
    pgbench -c 46 -j 46 -T 200 -M prepared -S --progress=10 pgbench


Here are the results with and without pg_stat_statements, varying the sample_rate parameter:

sample_rate |                 tps | lat | stddev | num of transactions
       1.0 |      1299070.105018 |0.035|  0.055 | 259781895
       0.8 |      1393327.873249 |0.033|  0.039 | 278630669
       0.5 |      1420303.856480 |0.032|  0.037 | 284023396
       0.2 |      1432482.672301 |0.032|  0.037 | 286461834
       0.0 |      1760055.986259 |0.032|  0.036 | 290169584
  pgss off |      1460920.805259 |0.031|  0.036 | 292144256

When pg_stat_statements is enabled, TPS decreases by about 10%. However, by leveraging the new sampling feature (sample_rate), it is possible to significantly mitigate this overhead. For detailed benchmark results with the '-M prepared -S' flags, please see the attached file 'sample_rate_prepared.txt'


P.S. Previously, I shared results under extreme high-load conditions using the query 'SELECT now()'. For clarity, I’m rewriting those results for better readability:

sample_rate |                 tps | lat | stddev | num of transactions
       1.0 |      1207127.572580 |0.037|  0.030 | 241400836
       0.8 |      1403551.516338 |0.032|  0.031 | 280673286
       0.5 |      1658596.614064 |0.027|  0.012 | 331679344
       0.2 |      1757747.509476 |0.025|  0.008 | 351507156
       0.0 |      1760055.986259 |0.025|  0.008 | 351965559
  pgss off |      1828743.791205 |0.024|  0.008 | 365703762

Here, we observed a significant ~33% decrease in TPS when pgss was enabled without sampling.


Any thoughts?


[0]: https://www.postgresql.org/message-id/CAPpHfdsTKAQqC3A48-MGQhrhfEamXZPb64w%3Dutk7thQcOMNr7Q%40mail.gmail.com

--
Best regards,
Ilia Evdokimov,
Tantor Labs LLC.

--------------FR006Dr6mwykWywJleARbIN4-- --------------H0UZsTPWlYZftYiXXSQVVwRQ Content-Type: text/plain; charset=UTF-8; name="sample_rate_prepared.txt" Content-Disposition: attachment; filename="sample_rate_prepared.txt" Content-Transfer-Encoding: base64 cGdfc3RhdF9zdGF0ZW1lbnRzLnNhbXBsZV9yYXRlID0gMS4wCgpwZ2JlbmNoIC1jIDQ2IC1q IDQ2IC1UIDIwMCAtTSBwcmVwYXJlZCAtUyAtLXByb2dyZXNzPTEwIHBnYmVuY2gKcGdiZW5j aCAoMTYuNikKc3RhcnRpbmcgdmFjdXVtLi4uZW5kLgpwcm9ncmVzczogMTAuMCBzLCAzMTQ5 NzguNiB0cHMsIGxhdCAwLjE0NiBtcyBzdGRkZXYgMC4yNTcsIDAgZmFpbGVkCnByb2dyZXNz OiAyMC4wIHMsIDg0OTY1NS4zIHRwcywgbGF0IDAuMDU0IG1zIHN0ZGRldiAwLjEwOCwgMCBm YWlsZWQKcHJvZ3Jlc3M6IDMwLjAgcywgMTMzODIyNy4xIHRwcywgbGF0IDAuMDM0IG1zIHN0 ZGRldiAwLjA0NSwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDQwLjAgcywgMTM3NTgwMC4wIHRwcywg bGF0IDAuMDMzIG1zIHN0ZGRldiAwLjA0MiwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDUwLjAgcywg MTM4MzQwMy4yIHRwcywgbGF0IDAuMDMzIG1zIHN0ZGRldiAwLjAzOSwgMCBmYWlsZWQKcHJv Z3Jlc3M6IDYwLjAgcywgMTM4MTM0OC4yIHRwcywgbGF0IDAuMDMzIG1zIHN0ZGRldiAwLjA0 NCwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDcwLjAgcywgMTM4NjA3OS4zIHRwcywgbGF0IDAuMDMz IG1zIHN0ZGRldiAwLjA0MCwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDgwLjAgcywgMTM3MjMxNC45 IHRwcywgbGF0IDAuMDMzIG1zIHN0ZGRldiAwLjA0MCwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDkw LjAgcywgMTM4MzIzMS4yIHRwcywgbGF0IDAuMDMzIG1zIHN0ZGRldiAwLjA0MiwgMCBmYWls ZWQKcHJvZ3Jlc3M6IDEwMC4wIHMsIDEzNzY3MDIuMyB0cHMsIGxhdCAwLjAzMyBtcyBzdGRk ZXYgMC4wNDIsIDAgZmFpbGVkCnByb2dyZXNzOiAxMTAuMCBzLCAxMzc1NjIyLjQgdHBzLCBs YXQgMC4wMzMgbXMgc3RkZGV2IDAuMDQzLCAwIGZhaWxlZApwcm9ncmVzczogMTIwLjAgcywg MTM4NzU3Ny4wIHRwcywgbGF0IDAuMDMzIG1zIHN0ZGRldiAwLjA0MCwgMCBmYWlsZWQKcHJv Z3Jlc3M6IDEzMC4wIHMsIDEzODM1NDAuMyB0cHMsIGxhdCAwLjAzMyBtcyBzdGRkZXYgMC4w MzksIDAgZmFpbGVkCnByb2dyZXNzOiAxNDAuMCBzLCAxMzgzMTM4LjYgdHBzLCBsYXQgMC4w MzMgbXMgc3RkZGV2IDAuMDQwLCAwIGZhaWxlZApwcm9ncmVzczogMTUwLjAgcywgMTM3NzI0 Ny42IHRwcywgbGF0IDAuMDMzIG1zIHN0ZGRldiAwLjA0MiwgMCBmYWlsZWQKcHJvZ3Jlc3M6 IDE2MC4wIHMsIDEzODI4MzAuOSB0cHMsIGxhdCAwLjAzMyBtcyBzdGRkZXYgMC4wMzksIDAg ZmFpbGVkCnByb2dyZXNzOiAxNzAuMCBzLCAxMzgzNjM3LjcgdHBzLCBsYXQgMC4wMzMgbXMg c3RkZGV2IDAuMDQxLCAwIGZhaWxlZApwcm9ncmVzczogMTgwLjAgcywgMTM4MTgxMS43IHRw cywgbGF0IDAuMDMzIG1zIHN0ZGRldiAwLjA0MSwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDE5MC4w IHMsIDEzODIzODQuNyB0cHMsIGxhdCAwLjAzMyBtcyBzdGRkZXYgMC4wNDEsIDAgZmFpbGVk CnRyYW5zYWN0aW9uIHR5cGU6IDxidWlsdGluOiBzZWxlY3Qgb25seT4Kc2NhbGluZyBmYWN0 b3I6IDMwMDAKcXVlcnkgbW9kZTogcHJlcGFyZWQKbnVtYmVyIG9mIGNsaWVudHM6IDQ2Cm51 bWJlciBvZiB0aHJlYWRzOiA0NgptYXhpbXVtIG51bWJlciBvZiB0cmllczogMQpkdXJhdGlv bjogMjAwIHMKbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBhY3R1YWxseSBwcm9jZXNzZWQ6IDI1 OTc4MTg5NQpudW1iZXIgb2YgZmFpbGVkIHRyYW5zYWN0aW9uczogMCAoMC4wMDAlKQpsYXRl bmN5IGF2ZXJhZ2UgPSAwLjAzNSBtcwpsYXRlbmN5IHN0ZGRldiA9IDAuMDU1IG1zCmluaXRp YWwgY29ubmVjdGlvbiB0aW1lID0gMjYuNDQ4IG1zCnRwcyA9IDEyOTkwNzAuMTA1MDE4ICh3 aXRob3V0IGluaXRpYWwgY29ubmVjdGlvbiB0aW1lKQoKcGdiZW5jaD0jIHNlbGVjdCBxdWVy eSwgY2FsbHMgZnJvbSBwZ19zdGF0X3N0YXRlbWVudHMgd2hlcmUgY2FsbHMgPiAxMDAwOwog ICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAgICAgICAgICB8 ICAgY2FsbHMgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCiBTRUxFQ1QgYWJhbGFuY2UgRlJPTSBwZ2JlbmNo X2FjY291bnRzIFdIRVJFIGFpZCA9ICQxIHwgMjU5NzgxODk1CigxIHJvdykKCgpwZ2JlbmNo PSMgc2hvdyBwZ19zdGF0X3N0YXRlbWVudHMuc2FtcGxlX3JhdGUgOwogcGdfc3RhdF9zdGF0 ZW1lbnRzLnNhbXBsZV9yYXRlIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog MQooMSByb3cpCgpwZ2JlbmNoPSMgc2VsZWN0IGNvdW50KCopIGZyb20gcGdfc3RhdF9zdGF0 ZW1lbnRzOwogY291bnQgCi0tLS0tLS0KICAgMTMwCigxIHJvdykKCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQoKcGdfc3RhdF9zdGF0ZW1lbnRzLnNhbXBsZV9yYXRlID0gMC44CgpwZ2JlbmNoIC1j IDQ2IC1qIDQ2IC1UIDIwMCAtTSBwcmVwYXJlZCAtUyAtLXByb2dyZXNzPTEwIHBnYmVuY2gK cGdiZW5jaCAoMTYuNikKc3RhcnRpbmcgdmFjdXVtLi4uZW5kLgpwcm9ncmVzczogMTAuMCBz LCAzMTkwNDYuMyB0cHMsIGxhdCAwLjE0NCBtcyBzdGRkZXYgMC4yNTcsIDAgZmFpbGVkCnBy b2dyZXNzOiAyMC4wIHMsIDg5MzExNi4xIHRwcywgbGF0IDAuMDUxIG1zIHN0ZGRldiAwLjEw MiwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDMwLjAgcywgMTQ0MDUzOS4xIHRwcywgbGF0IDAuMDMy IG1zIHN0ZGRldiAwLjAyNSwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDQwLjAgcywgMTQ4NDI2MS44 IHRwcywgbGF0IDAuMDMxIG1zIHN0ZGRldiAwLjAxNSwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDUw LjAgcywgMTQ4Mzk1Ny41IHRwcywgbGF0IDAuMDMxIG1zIHN0ZGRldiAwLjAxOCwgMCBmYWls ZWQKcHJvZ3Jlc3M6IDYwLjAgcywgMTQ5MTAzMC45IHRwcywgbGF0IDAuMDMxIG1zIHN0ZGRl diAwLjAxNCwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDcwLjAgcywgMTQ4MzE3MS4wIHRwcywgbGF0 IDAuMDMxIG1zIHN0ZGRldiAwLjAxNCwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDgwLjAgcywgMTQ3 NTM2OC41IHRwcywgbGF0IDAuMDMxIG1zIHN0ZGRldiAwLjAxNSwgMCBmYWlsZWQKcHJvZ3Jl c3M6IDkwLjAgcywgMTQ4NzcxOS43IHRwcywgbGF0IDAuMDMxIG1zIHN0ZGRldiAwLjAxNSwg MCBmYWlsZWQKcHJvZ3Jlc3M6IDEwMC4wIHMsIDE0ODUzODcuMCB0cHMsIGxhdCAwLjAzMSBt cyBzdGRkZXYgMC4wMTYsIDAgZmFpbGVkCnByb2dyZXNzOiAxMTAuMCBzLCAxNDc0MTc4LjQg dHBzLCBsYXQgMC4wMzEgbXMgc3RkZGV2IDAuMDIwLCAwIGZhaWxlZApwcm9ncmVzczogMTIw LjAgcywgMTQ4OTE3OC4yIHRwcywgbGF0IDAuMDMxIG1zIHN0ZGRldiAwLjAxNiwgMCBmYWls ZWQKcHJvZ3Jlc3M6IDEzMC4wIHMsIDE0ODA0OTMuNyB0cHMsIGxhdCAwLjAzMSBtcyBzdGRk ZXYgMC4wMTUsIDAgZmFpbGVkCnByb2dyZXNzOiAxNDAuMCBzLCAxNDc3NjY2LjMgdHBzLCBs YXQgMC4wMzEgbXMgc3RkZGV2IDAuMDE0LCAwIGZhaWxlZApwcm9ncmVzczogMTUwLjAgcywg MTQ4MzA2Ny40IHRwcywgbGF0IDAuMDMxIG1zIHN0ZGRldiAwLjAxNiwgMCBmYWlsZWQKcHJv Z3Jlc3M6IDE2MC4wIHMsIDE0ODA2NjQuMyB0cHMsIGxhdCAwLjAzMSBtcyBzdGRkZXYgMC4w MTQsIDAgZmFpbGVkCnByb2dyZXNzOiAxNzAuMCBzLCAxNDgyODQ4LjMgdHBzLCBsYXQgMC4w MzEgbXMgc3RkZGV2IDAuMDE5LCAwIGZhaWxlZApwcm9ncmVzczogMTgwLjAgcywgMTQ4Mjc4 MC4yIHRwcywgbGF0IDAuMDMxIG1zIHN0ZGRldiAwLjAxNSwgMCBmYWlsZWQKcHJvZ3Jlc3M6 IDE5MC4wIHMsIDE0ODcwOTMuMCB0cHMsIGxhdCAwLjAzMSBtcyBzdGRkZXYgMC4wMTUsIDAg ZmFpbGVkCnRyYW5zYWN0aW9uIHR5cGU6IDxidWlsdGluOiBzZWxlY3Qgb25seT4Kc2NhbGlu ZyBmYWN0b3I6IDMwMDAKcXVlcnkgbW9kZTogcHJlcGFyZWQKbnVtYmVyIG9mIGNsaWVudHM6 IDQ2Cm51bWJlciBvZiB0aHJlYWRzOiA0NgptYXhpbXVtIG51bWJlciBvZiB0cmllczogMQpk dXJhdGlvbjogMjAwIHMKbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBhY3R1YWxseSBwcm9jZXNz ZWQ6IDI3ODYzMDY2OQpudW1iZXIgb2YgZmFpbGVkIHRyYW5zYWN0aW9uczogMCAoMC4wMDAl KQpsYXRlbmN5IGF2ZXJhZ2UgPSAwLjAzMyBtcwpsYXRlbmN5IHN0ZGRldiA9IDAuMDM5IG1z CmluaXRpYWwgY29ubmVjdGlvbiB0aW1lID0gMjYuMDA0IG1zCnRwcyA9IDEzOTMzMjcuODcz MjQ5ICh3aXRob3V0IGluaXRpYWwgY29ubmVjdGlvbiB0aW1lKQoKcGdiZW5jaD0jIHNlbGVj dCBxdWVyeSwgY2FsbHMgZnJvbSBwZ19zdGF0X3N0YXRlbWVudHMgd2hlcmUgY2FsbHMgPiAx MDAwOwogICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgY2FsbHMgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCiBTRUxFQ1QgYWJhbGFuY2UgRlJPTSBw Z2JlbmNoX2FjY291bnRzIFdIRVJFIGFpZCA9ICQxIHwgMjIyOTAyMjI2CigxIHJvdykKCnBn YmVuY2g9IyBzaG93IHBnX3N0YXRfc3RhdGVtZW50cy5zYW1wbGVfcmF0ZSA7CiBwZ19zdGF0 X3N0YXRlbWVudHMuc2FtcGxlX3JhdGUgCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAwLjgKKDEgcm93KQoKcGdiZW5jaD0jIHNlbGVjdCBjb3VudCgqKSBmcm9tIHBnX3N0 YXRfc3RhdGVtZW50czsKIGNvdW50IAotLS0tLS0tCiAgIDExNwooMSByb3cpCgoKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CgpwZ19zdGF0X3N0YXRlbWVudHMuc2FtcGxlX3JhdGUgPSAwLjUKCnBn YmVuY2ggLWMgNDYgLWogNDYgLVQgMjAwIC1NIHByZXBhcmVkIC1TIC0tcHJvZ3Jlc3M9MTAg cGdiZW5jaApwZ2JlbmNoICgxNi42KQpzdGFydGluZyB2YWN1dW0uLi5lbmQuCnByb2dyZXNz OiAxMC4wIHMsIDMxMzM2MS43IHRwcywgbGF0IDAuMTQ2IG1zIHN0ZGRldiAwLjI2MywgMCBm YWlsZWQKcHJvZ3Jlc3M6IDIwLjAgcywgOTA3MTc3LjAgdHBzLCBsYXQgMC4wNTEgbXMgc3Rk ZGV2IDAuMTAzLCAwIGZhaWxlZApwcm9ncmVzczogMzAuMCBzLCAxNDY3NzQxLjMgdHBzLCBs YXQgMC4wMzEgbXMgc3RkZGV2IDAuMDIyLCAwIGZhaWxlZApwcm9ncmVzczogNDAuMCBzLCAx NTE0MTExLjQgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAuMDA5LCAwIGZhaWxlZApwcm9n cmVzczogNTAuMCBzLCAxNTA4NDAyLjIgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAuMDA4 LCAwIGZhaWxlZApwcm9ncmVzczogNjAuMCBzLCAxNTExNzUyLjYgdHBzLCBsYXQgMC4wMzAg bXMgc3RkZGV2IDAuMDA4LCAwIGZhaWxlZApwcm9ncmVzczogNzAuMCBzLCAxNTA1NDU2LjAg dHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAuMDA5LCAwIGZhaWxlZApwcm9ncmVzczogODAu MCBzLCAxNTAyNjY2LjQgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAuMDA4LCAwIGZhaWxl ZApwcm9ncmVzczogOTAuMCBzLCAxNTEyMDMzLjEgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2 IDAuMDA3LCAwIGZhaWxlZApwcm9ncmVzczogMTAwLjAgcywgMTUwMzk5Ni43IHRwcywgbGF0 IDAuMDMwIG1zIHN0ZGRldiAwLjAwNywgMCBmYWlsZWQKcHJvZ3Jlc3M6IDExMC4wIHMsIDE1 MDY1NzEuNyB0cHMsIGxhdCAwLjAzMCBtcyBzdGRkZXYgMC4wMDcsIDAgZmFpbGVkCnByb2dy ZXNzOiAxMjAuMCBzLCAxNTIzODA5LjYgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAuMDEz LCAwIGZhaWxlZApwcm9ncmVzczogMTMwLjAgcywgMTUxNTg1My4xIHRwcywgbGF0IDAuMDMw IG1zIHN0ZGRldiAwLjAwOCwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDE0MC4wIHMsIDE1MTE3NTMu OSB0cHMsIGxhdCAwLjAzMCBtcyBzdGRkZXYgMC4wMTAsIDAgZmFpbGVkCnByb2dyZXNzOiAx NTAuMCBzLCAxNTExNjI2LjEgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAuMDEwLCAwIGZh aWxlZApwcm9ncmVzczogMTYwLjAgcywgMTUxMzA4OC41IHRwcywgbGF0IDAuMDMwIG1zIHN0 ZGRldiAwLjAwOCwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDE3MC4wIHMsIDE1MjA3NTYuOSB0cHMs IGxhdCAwLjAzMCBtcyBzdGRkZXYgMC4wMDksIDAgZmFpbGVkCnByb2dyZXNzOiAxODAuMCBz LCAxNTE5ODUxLjcgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAuMDEwLCAwIGZhaWxlZApw cm9ncmVzczogMTkwLjAgcywgMTUxNzczMC42IHRwcywgbGF0IDAuMDMwIG1zIHN0ZGRldiAw LjAwOSwgMCBmYWlsZWQKdHJhbnNhY3Rpb24gdHlwZTogPGJ1aWx0aW46IHNlbGVjdCBvbmx5 PgpzY2FsaW5nIGZhY3RvcjogMzAwMApxdWVyeSBtb2RlOiBwcmVwYXJlZApudW1iZXIgb2Yg Y2xpZW50czogNDYKbnVtYmVyIG9mIHRocmVhZHM6IDQ2Cm1heGltdW0gbnVtYmVyIG9mIHRy aWVzOiAxCmR1cmF0aW9uOiAyMDAgcwpudW1iZXIgb2YgdHJhbnNhY3Rpb25zIGFjdHVhbGx5 IHByb2Nlc3NlZDogMjg0MDIzMzk2Cm51bWJlciBvZiBmYWlsZWQgdHJhbnNhY3Rpb25zOiAw ICgwLjAwMCUpCmxhdGVuY3kgYXZlcmFnZSA9IDAuMDMyIG1zCmxhdGVuY3kgc3RkZGV2ID0g MC4wMzcgbXMKaW5pdGlhbCBjb25uZWN0aW9uIHRpbWUgPSAyNy4yNDIgbXMKdHBzID0gMTQy MDMwMy44NTY0ODAgKHdpdGhvdXQgaW5pdGlhbCBjb25uZWN0aW9uIHRpbWUpCgpwZ2JlbmNo PSMgc2VsZWN0IHF1ZXJ5LCBjYWxscyBmcm9tIHBnX3N0YXRfc3RhdGVtZW50cyB3aGVyZSBj YWxscyA+IDEwMDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5ICAgICAgICAgICAg ICAgICAgICAgICAgIHwgICBjYWxscyAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KIFNFTEVDVCBhYmFsYW5j ZSBGUk9NIHBnYmVuY2hfYWNjb3VudHMgV0hFUkUgYWlkID0gJDEgfCAxNDIwMTQzMjAKKDEg cm93KQoKcGdiZW5jaD0jIHNob3cgcGdfc3RhdF9zdGF0ZW1lbnRzLnNhbXBsZV9yYXRlIDsK IHBnX3N0YXRfc3RhdGVtZW50cy5zYW1wbGVfcmF0ZSAKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIDAuNQooMSByb3cpCgpwZ2JlbmNoPSMgc2VsZWN0IGNvdW50KCopIGZy b20gcGdfc3RhdF9zdGF0ZW1lbnRzOwogY291bnQgCi0tLS0tLS0KICAgIDgzCigxIHJvdykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQoKcGdfc3RhdF9zdGF0ZW1lbnRzLnNhbXBsZV9yYXRlID0g MC4yCgpwZ2JlbmNoIC1jIDQ2IC1qIDQ2IC1UIDIwMCAtTSBwcmVwYXJlZCAtUyAtLXByb2dy ZXNzPTEwIHBnYmVuY2gKcGdiZW5jaCAoMTYuNikKc3RhcnRpbmcgdmFjdXVtLi4uZW5kLgpw cm9ncmVzczogMTAuMCBzLCAzMDU3MzUuOCB0cHMsIGxhdCAwLjE1MCBtcyBzdGRkZXYgMC4y NjYsIDAgZmFpbGVkCnByb2dyZXNzOiAyMC4wIHMsIDg4NjIxMS41IHRwcywgbGF0IDAuMDUy IG1zIHN0ZGRldiAwLjEwNSwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDMwLjAgcywgMTQ3NzQ0OS4z IHRwcywgbGF0IDAuMDMxIG1zIHN0ZGRldiAwLjAyMywgMCBmYWlsZWQKcHJvZ3Jlc3M6IDQw LjAgcywgMTUzMzYwOC42IHRwcywgbGF0IDAuMDMwIG1zIHN0ZGRldiAwLjAwNywgMCBmYWls ZWQKcHJvZ3Jlc3M6IDUwLjAgcywgMTUyMDY4Ni4wIHRwcywgbGF0IDAuMDMwIG1zIHN0ZGRl diAwLjAwNywgMCBmYWlsZWQKcHJvZ3Jlc3M6IDYwLjAgcywgMTUyMTE2My43IHRwcywgbGF0 IDAuMDMwIG1zIHN0ZGRldiAwLjAwNywgMCBmYWlsZWQKcHJvZ3Jlc3M6IDcwLjAgcywgMTUw NjA5My4zIHRwcywgbGF0IDAuMDMwIG1zIHN0ZGRldiAwLjAwNywgMCBmYWlsZWQKcHJvZ3Jl c3M6IDgwLjAgcywgMTUyMTkyNi42IHRwcywgbGF0IDAuMDMwIG1zIHN0ZGRldiAwLjAwOSwg MCBmYWlsZWQKcHJvZ3Jlc3M6IDkwLjAgcywgMTUzMjcxNS40IHRwcywgbGF0IDAuMDMwIG1z IHN0ZGRldiAwLjAwNiwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDEwMC4wIHMsIDE1MzY4MTguMiB0 cHMsIGxhdCAwLjAzMCBtcyBzdGRkZXYgMC4wMDgsIDAgZmFpbGVkCnByb2dyZXNzOiAxMTAu MCBzLCAxNTMyMTU2LjUgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAuMDA4LCAwIGZhaWxl ZApwcm9ncmVzczogMTIwLjAgcywgMTUzMTA3Ny42IHRwcywgbGF0IDAuMDMwIG1zIHN0ZGRl diAwLjAwNywgMCBmYWlsZWQKcHJvZ3Jlc3M6IDEzMC4wIHMsIDE1MzM0NDUuMCB0cHMsIGxh dCAwLjAzMCBtcyBzdGRkZXYgMC4wMTEsIDAgZmFpbGVkCnByb2dyZXNzOiAxNDAuMCBzLCAx NTMwNDY1LjEgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAuMDA2LCAwIGZhaWxlZApwcm9n cmVzczogMTUwLjAgcywgMTUzMzI2NC44IHRwcywgbGF0IDAuMDMwIG1zIHN0ZGRldiAwLjAw NiwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDE2MC4wIHMsIDE1MzE3MDYuNCB0cHMsIGxhdCAwLjAz MCBtcyBzdGRkZXYgMC4wMDksIDAgZmFpbGVkCnByb2dyZXNzOiAxNzAuMCBzLCAxNTI3NzY4 LjEgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAuMDA2LCAwIGZhaWxlZApwcm9ncmVzczog MTgwLjAgcywgMTUyMzc2Mi45IHRwcywgbGF0IDAuMDMwIG1zIHN0ZGRldiAwLjAwOCwgMCBm YWlsZWQKcHJvZ3Jlc3M6IDE5MC4wIHMsIDE1MzEyNjQuNyB0cHMsIGxhdCAwLjAzMCBtcyBz dGRkZXYgMC4wMDgsIDAgZmFpbGVkCnRyYW5zYWN0aW9uIHR5cGU6IDxidWlsdGluOiBzZWxl Y3Qgb25seT4Kc2NhbGluZyBmYWN0b3I6IDMwMDAKcXVlcnkgbW9kZTogcHJlcGFyZWQKbnVt YmVyIG9mIGNsaWVudHM6IDQ2Cm51bWJlciBvZiB0aHJlYWRzOiA0NgptYXhpbXVtIG51bWJl ciBvZiB0cmllczogMQpkdXJhdGlvbjogMjAwIHMKbnVtYmVyIG9mIHRyYW5zYWN0aW9ucyBh Y3R1YWxseSBwcm9jZXNzZWQ6IDI4NjQ2MTgzNApudW1iZXIgb2YgZmFpbGVkIHRyYW5zYWN0 aW9uczogMCAoMC4wMDAlKQpsYXRlbmN5IGF2ZXJhZ2UgPSAwLjAzMiBtcwpsYXRlbmN5IHN0 ZGRldiA9IDAuMDM3IG1zCmluaXRpYWwgY29ubmVjdGlvbiB0aW1lID0gMjYuMTg5IG1zCnRw cyA9IDE0MzI0ODIuNjcyMzAxICh3aXRob3V0IGluaXRpYWwgY29ubmVjdGlvbiB0aW1lKQoK cGdiZW5jaD0jIHNlbGVjdCBxdWVyeSwgY2FsbHMgZnJvbSBwZ19zdGF0X3N0YXRlbWVudHMg d2hlcmUgY2FsbHMgPiAxMDAwOwogICAgICAgICAgICAgICAgICAgICAgICBxdWVyeSAgICAg ICAgICAgICAgICAgICAgICAgICB8ICBjYWxscyAgIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLQogU0VMRUNUIGFi YWxhbmNlIEZST00gcGdiZW5jaF9hY2NvdW50cyBXSEVSRSBhaWQgPSAkMSB8IDU3Mjk0NjMx CigxIHJvdykKCnBnYmVuY2g9IyBzaG93IHBnX3N0YXRfc3RhdGVtZW50cy5zYW1wbGVfcmF0 ZSA7CiBwZ19zdGF0X3N0YXRlbWVudHMuc2FtcGxlX3JhdGUgCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCiAwLjIKKDEgcm93KQoKcGdiZW5jaD0jIHNlbGVjdCBjb3VudCgq KSBmcm9tIHBnX3N0YXRfc3RhdGVtZW50czsKIGNvdW50IAotLS0tLS0tCiAgICA1NgooMSBy b3cpCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CgpwZ19zdGF0X3N0YXRlbWVudHMuc2FtcGxlX3Jh dGUgPSAwLjAKCnBnYmVuY2ggLWMgNDYgLWogNDYgLVQgMjAwIC1NIHByZXBhcmVkIC1TIC0t cHJvZ3Jlc3M9MTAgcGdiZW5jaApwZ2JlbmNoICgxNi42KQpzdGFydGluZyB2YWN1dW0uLi5l bmQuCnByb2dyZXNzOiAxMC4wIHMsIDMwODYxMi4zIHRwcywgbGF0IDAuMTQ5IG1zIHN0ZGRl diAwLjI2MywgMCBmYWlsZWQKcHJvZ3Jlc3M6IDIwLjAgcywgOTA0NDk0LjMgdHBzLCBsYXQg MC4wNTEgbXMgc3RkZGV2IDAuMTAzLCAwIGZhaWxlZApwcm9ncmVzczogMzAuMCBzLCAxNDk3 NjA5LjggdHBzLCBsYXQgMC4wMzEgbXMgc3RkZGV2IDAuMDIzLCAwIGZhaWxlZApwcm9ncmVz czogNDAuMCBzLCAxNTQ5OTQ1LjcgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAuMDA3LCAw IGZhaWxlZApwcm9ncmVzczogNTAuMCBzLCAxNTUyMDAxLjYgdHBzLCBsYXQgMC4wMzAgbXMg c3RkZGV2IDAuMDA5LCAwIGZhaWxlZApwcm9ncmVzczogNjAuMCBzLCAxNTUwOTk4LjYgdHBz LCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAuMDA3LCAwIGZhaWxlZApwcm9ncmVzczogNzAuMCBz LCAxNTUyNzI2LjEgdHBzLCBsYXQgMC4wMjkgbXMgc3RkZGV2IDAuMDA2LCAwIGZhaWxlZApw cm9ncmVzczogODAuMCBzLCAxNTUxODQ3LjIgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2IDAu MDA2LCAwIGZhaWxlZApwcm9ncmVzczogOTAuMCBzLCAxNTQyMzc1LjUgdHBzLCBsYXQgMC4w MzAgbXMgc3RkZGV2IDAuMDA4LCAwIGZhaWxlZApwcm9ncmVzczogMTAwLjAgcywgMTU1MjY2 Ni44IHRwcywgbGF0IDAuMDI5IG1zIHN0ZGRldiAwLjAwNiwgMCBmYWlsZWQKcHJvZ3Jlc3M6 IDExMC4wIHMsIDE1NDI3NzkuNyB0cHMsIGxhdCAwLjAzMCBtcyBzdGRkZXYgMC4wMTAsIDAg ZmFpbGVkCnByb2dyZXNzOiAxMjAuMCBzLCAxNTMzNzE3LjcgdHBzLCBsYXQgMC4wMzAgbXMg c3RkZGV2IDAuMDA3LCAwIGZhaWxlZApwcm9ncmVzczogMTMwLjAgcywgMTUzMjQxMy45IHRw cywgbGF0IDAuMDMwIG1zIHN0ZGRldiAwLjAwNywgMCBmYWlsZWQKcHJvZ3Jlc3M6IDE0MC4w IHMsIDE1NDQ5MTkuNiB0cHMsIGxhdCAwLjAzMCBtcyBzdGRkZXYgMC4wMDYsIDAgZmFpbGVk CnByb2dyZXNzOiAxNTAuMCBzLCAxNTM5NTY4LjUgdHBzLCBsYXQgMC4wMzAgbXMgc3RkZGV2 IDAuMDA2LCAwIGZhaWxlZApwcm9ncmVzczogMTYwLjAgcywgMTU1MTA3Mi45IHRwcywgbGF0 IDAuMDMwIG1zIHN0ZGRldiAwLjAwNywgMCBmYWlsZWQKcHJvZ3Jlc3M6IDE3MC4wIHMsIDE1 NTgzNTIuNSB0cHMsIGxhdCAwLjAyOSBtcyBzdGRkZXYgMC4wMDksIDAgZmFpbGVkCnByb2dy ZXNzOiAxODAuMCBzLCAxNTU2NDc3LjQgdHBzLCBsYXQgMC4wMjkgbXMgc3RkZGV2IDAuMDA3 LCAwIGZhaWxlZApwcm9ncmVzczogMTkwLjAgcywgMTU0OTY2OS42IHRwcywgbGF0IDAuMDMw IG1zIHN0ZGRldiAwLjAwNywgMCBmYWlsZWQKdHJhbnNhY3Rpb24gdHlwZTogPGJ1aWx0aW46 IHNlbGVjdCBvbmx5PgpzY2FsaW5nIGZhY3RvcjogMzAwMApxdWVyeSBtb2RlOiBwcmVwYXJl ZApudW1iZXIgb2YgY2xpZW50czogNDYKbnVtYmVyIG9mIHRocmVhZHM6IDQ2Cm1heGltdW0g bnVtYmVyIG9mIHRyaWVzOiAxCmR1cmF0aW9uOiAyMDAgcwpudW1iZXIgb2YgdHJhbnNhY3Rp b25zIGFjdHVhbGx5IHByb2Nlc3NlZDogMjkwMTY5NTg0Cm51bWJlciBvZiBmYWlsZWQgdHJh bnNhY3Rpb25zOiAwICgwLjAwMCUpCmxhdGVuY3kgYXZlcmFnZSA9IDAuMDMyIG1zCmxhdGVu Y3kgc3RkZGV2ID0gMC4wMzYgbXMKaW5pdGlhbCBjb25uZWN0aW9uIHRpbWUgPSAyNy4wOTAg bXMKdHBzID0gMTQ1MTAzNi41NDc0OTYgKHdpdGhvdXQgaW5pdGlhbCBjb25uZWN0aW9uIHRp bWUpCgpwZ2JlbmNoPSMgc2VsZWN0IHF1ZXJ5LCBjYWxscyBmcm9tIHBnX3N0YXRfc3RhdGVt ZW50cyB3aGVyZSBjYWxscyA+IDEwMDA7CiBxdWVyeSB8IGNhbGxzIAotLS0tLS0tKy0tLS0t LS0KKDAgcm93cykKCnBnYmVuY2g9IyBzaG93IHBnX3N0YXRfc3RhdGVtZW50cy5zYW1wbGVf cmF0ZSA7CiBwZ19zdGF0X3N0YXRlbWVudHMuc2FtcGxlX3JhdGUgCi0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCiAwCigxIHJvdykKCnBnYmVuY2g9IyBzZWxlY3QgY291bnQo KikgZnJvbSBwZ19zdGF0X3N0YXRlbWVudHM7CiBjb3VudCAKLS0tLS0tLQogICAgIDAKKDEg cm93KQoKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQoKcGdfc3RhdF9zdGF0ZW1lbnRzIGlzIG9mZgoK cGdiZW5jaCAtYyA0NiAtaiA0NiAtVCAyMDAgLU0gcHJlcGFyZWQgLVMgLS1wcm9ncmVzcz0x MCBwZ2JlbmNoCnBnYmVuY2ggKDE2LjYpCnN0YXJ0aW5nIHZhY3V1bS4uLmVuZC4KcHJvZ3Jl c3M6IDEwLjAgcywgMzE2NDEwLjQgdHBzLCBsYXQgMC4xNDUgbXMgc3RkZGV2IDAuMjU3LCAw IGZhaWxlZApwcm9ncmVzczogMjAuMCBzLCA5MTkwMjcuMiB0cHMsIGxhdCAwLjA1MCBtcyBz dGRkZXYgMC4xMDMsIDAgZmFpbGVkCnByb2dyZXNzOiAzMC4wIHMsIDE1MTM4MjcuMiB0cHMs IGxhdCAwLjAzMCBtcyBzdGRkZXYgMC4wMjEsIDAgZmFpbGVkCnByb2dyZXNzOiA0MC4wIHMs IDE1NTU3MDcuNCB0cHMsIGxhdCAwLjAyOSBtcyBzdGRkZXYgMC4wMDYsIDAgZmFpbGVkCnBy b2dyZXNzOiA1MC4wIHMsIDE1NTI4MjAuOCB0cHMsIGxhdCAwLjAyOSBtcyBzdGRkZXYgMC4w MDYsIDAgZmFpbGVkCnByb2dyZXNzOiA2MC4wIHMsIDE1NjQ5ODUuOSB0cHMsIGxhdCAwLjAy OSBtcyBzdGRkZXYgMC4wMDYsIDAgZmFpbGVkCnByb2dyZXNzOiA3MC4wIHMsIDE1NTk1MDcu NCB0cHMsIGxhdCAwLjAyOSBtcyBzdGRkZXYgMC4wMDcsIDAgZmFpbGVkCnByb2dyZXNzOiA4 MC4wIHMsIDE1NjE4NzEuMiB0cHMsIGxhdCAwLjAyOSBtcyBzdGRkZXYgMC4wMDYsIDAgZmFp bGVkCnByb2dyZXNzOiA5MC4wIHMsIDE1NjMwNzYuNSB0cHMsIGxhdCAwLjAyOSBtcyBzdGRk ZXYgMC4wMDYsIDAgZmFpbGVkCnByb2dyZXNzOiAxMDAuMCBzLCAxNTYyMDMwLjQgdHBzLCBs YXQgMC4wMjkgbXMgc3RkZGV2IDAuMDA2LCAwIGZhaWxlZApwcm9ncmVzczogMTEwLjAgcywg MTU1NTA0MC4zIHRwcywgbGF0IDAuMDI5IG1zIHN0ZGRldiAwLjAwOCwgMCBmYWlsZWQKcHJv Z3Jlc3M6IDEyMC4wIHMsIDE1NTcyOTUuOCB0cHMsIGxhdCAwLjAyOSBtcyBzdGRkZXYgMC4w MDgsIDAgZmFpbGVkCnByb2dyZXNzOiAxMzAuMCBzLCAxNTUyNTU2LjkgdHBzLCBsYXQgMC4w MjkgbXMgc3RkZGV2IDAuMDA4LCAwIGZhaWxlZApwcm9ncmVzczogMTQwLjAgcywgMTU0NzE1 NS4zIHRwcywgbGF0IDAuMDMwIG1zIHN0ZGRldiAwLjAwNiwgMCBmYWlsZWQKcHJvZ3Jlc3M6 IDE1MC4wIHMsIDE1NDMyNjYuNSB0cHMsIGxhdCAwLjAzMCBtcyBzdGRkZXYgMC4wMDgsIDAg ZmFpbGVkCnByb2dyZXNzOiAxNjAuMCBzLCAxNTYxMDg2LjggdHBzLCBsYXQgMC4wMjkgbXMg c3RkZGV2IDAuMDA3LCAwIGZhaWxlZApwcm9ncmVzczogMTcwLjAgcywgMTU1ODk5My45IHRw cywgbGF0IDAuMDI5IG1zIHN0ZGRldiAwLjAwOSwgMCBmYWlsZWQKcHJvZ3Jlc3M6IDE4MC4w IHMsIDE1NTQ2MTYuOCB0cHMsIGxhdCAwLjAyOSBtcyBzdGRkZXYgMC4wMDYsIDAgZmFpbGVk CnByb2dyZXNzOiAxOTAuMCBzLCAxNTU3OTcyLjAgdHBzLCBsYXQgMC4wMjkgbXMgc3RkZGV2 IDAuMDA3LCAwIGZhaWxlZAp0cmFuc2FjdGlvbiB0eXBlOiA8YnVpbHRpbjogc2VsZWN0IG9u bHk+CnNjYWxpbmcgZmFjdG9yOiAzMDAwCnF1ZXJ5IG1vZGU6IHByZXBhcmVkCm51bWJlciBv ZiBjbGllbnRzOiA0NgpudW1iZXIgb2YgdGhyZWFkczogNDYKbWF4aW11bSBudW1iZXIgb2Yg dHJpZXM6IDEKZHVyYXRpb246IDIwMCBzCm51bWJlciBvZiB0cmFuc2FjdGlvbnMgYWN0dWFs bHkgcHJvY2Vzc2VkOiAyOTIxNDQyNTYKbnVtYmVyIG9mIGZhaWxlZCB0cmFuc2FjdGlvbnM6 IDAgKDAuMDAwJSkKbGF0ZW5jeSBhdmVyYWdlID0gMC4wMzEgbXMKbGF0ZW5jeSBzdGRkZXYg PSAwLjAzNiBtcwppbml0aWFsIGNvbm5lY3Rpb24gdGltZSA9IDI5LjA4NSBtcwp0cHMgPSAx NDYwOTIwLjgwNTI1OSAod2l0aG91dCBpbml0aWFsIGNvbm5lY3Rpb24gdGltZSkK --------------H0UZsTPWlYZftYiXXSQVVwRQ--