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 1nUTph-00084B-JH for pgadmin-hackers@arkaria.postgresql.org; Wed, 16 Mar 2022 13:36:59 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1nUTpg-0002Qs-0l for pgadmin-hackers@arkaria.postgresql.org; Wed, 16 Mar 2022 13:36:56 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nUSi0-0007zU-KS for pgadmin-hackers@lists.postgresql.org; Wed, 16 Mar 2022 12:24:58 +0000 Received: from mail-oo1-xc2f.google.com ([2607:f8b0:4864:20::c2f]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1nUShx-0006cv-7S for pgadmin-hackers@postgresql.org; Wed, 16 Mar 2022 12:24:55 +0000 Received: by mail-oo1-xc2f.google.com with SMTP id s203-20020a4a3bd4000000b003191c2dcbe8so2438422oos.9 for ; Wed, 16 Mar 2022 05:24:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=enterprisedb.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=oQjwTTNDFS4DKjrjSnfub39FgsZjDejyOWnMSuZhE88=; b=bzW4ZH8ER0aQXWmf/r5NQdZPdUQ5VLuPzr5ZWduedzu5AkwfXCp3BZTn1+az1fUB0d VK7SzGMoSB0UrFJj1g7YlC5rpmboSNZjf9x32uAasBEa0nlLM7Iq6OGpcbA+aNRup+ke r3co4amzkSXsgSj84dRdkwC+VmeL16ktFdKM5HRLmLIZAUO6Hkt5fHoKyZiCM2ELI8gU Cb9ElQ+GpqbIcu5reIbuaMuYEE4iq0iwK6X2FlymSiQWLgDnPNob9ltOhrhulh/2gHAL foO4n7sqXd/thARaqaPIs0dIoQeJYo4/A3qEm5kdzL5XnhLzHI8KIkIi+iv/Ed3I3GMD 1xtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=oQjwTTNDFS4DKjrjSnfub39FgsZjDejyOWnMSuZhE88=; b=RjkNyzZLw5lHHNOfl6qpf9BU88kL5rdgSRHDUQa/KEkr4je/H+pgpqWfEFwWs8qc0N s2Bl1jJCmw0mXHgQCoLAK/SQgXBIx9/fR6rNqMYtxyeM3XhhYFgVmo2KNNNMpNTl974Y be36oVwJVN7U71Zp/83DMYu6WaPyK/xWdm/nnhn/3F9rLUv5nj5WaOAF++iZm6r/+UKh LE2AyWs3NQW1PZwLWad55UdmgK9quDuAQ9X5chh7gH4qSetRO8SsWSxGsmEJzRQBil5V y09VJLgt5Gkiiqht485QRFIo/X/y1QipikQgUaIKp5xQ86WggmvtiXqBosCTv0d/aPYa XB0g== X-Gm-Message-State: AOAM533gC9jPTcuRtZQDgf8W2CbzaWnxuinO7Cp8AE+YgQ01nUJ3vzXG Y0LMzhDPnimZq1KtJ5Q8U7JqgO2y9FisKQvPe5emNJYZt95f6/CC3U67+pa1lSYqweeZ1iNSI7M z4fbQZXCG0Zsz2bATOVn5OnEm7M1yUhCXyDAQvi8Mp/tOirecSsM73yUFtNLG22WaommOYALM/s BLXW1Yj1QKv+WlOViTqNU3Yej5sjSlyYDOtTTj08df3TA5G+1t6Wzayr+e8A== X-Google-Smtp-Source: ABdhPJwbmt5Rg7hcHQMhTS1p2l62GtI4T1WTqcnDkoJSUZ477pXCPicW/Cl3pvH9jmSKBPg8JGc7NBHafKhTQAY7WXk= X-Received: by 2002:a05:6870:e393:b0:da:294d:86a5 with SMTP id x19-20020a056870e39300b000da294d86a5mr3305468oad.0.1647433491674; Wed, 16 Mar 2022 05:24:51 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Aditya Toshniwal Date: Wed, 16 Mar 2022 17:54:15 +0530 Message-ID: Subject: Re: [pgAdmin][RM6131] Port query tool to React To: Akshay Joshi Cc: pgadmin-hackers Content-Type: multipart/mixed; boundary="0000000000001157a905da550079" X-CLOUD-SEC-AV-Info: enterprisedb,google_mail,monitor X-CLOUD-SEC-AV-Sent: true X-Gm-Spam: 0 X-Gm-Phishy: 0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000001157a905da550079 Content-Type: multipart/related; boundary="0000000000001157a805da550078" --0000000000001157a805da550078 Content-Type: multipart/alternative; boundary="0000000000001157a705da550077" --0000000000001157a705da550077 Content-Type: text/plain; charset="UTF-8" Hi, Attached is an updated one with few more improvements and fixes. On Wed, Mar 16, 2022 at 1:40 PM Aditya Toshniwal < aditya.toshniwal@enterprisedb.com> wrote: > Please find the attached patch :) > > On Wed, Mar 16, 2022 at 12:16 PM Akshay Joshi < > akshay.joshi@enterprisedb.com> wrote: > >> Hi Aditya >> >> I think you forgot to attach the patch. >> >> On Tue, Mar 15, 2022 at 4:00 PM Aditya Toshniwal < >> aditya.toshniwal@enterprisedb.com> wrote: >> >>> Hi Hackers, >>> >>> Attached is the initial patch that migrates the SQL Editor tool to >>> React based. Change highlights: >>> 1. Complete rewrite to React code. >>> 2. UI improvements based on suggestions and requests. >>> 3. Work towards stability and performance improvement. >>> 4. Keep row numbers in view when scrolling horizontally. Fixes #3989 >>> 5. Fixed status bar at the bottom with useful details. Fixes #3253 >>> 6. Relocate GIS Viewer Button to the Left Side of Results Table. Fixed >>> #6830 >>> 7. Allow to remove single history records. Refs #4113 >>> 8. Macros usability improvements. Ref #6969 >>> 9. Connection bar visibility issue. Fixes #7188 >>> 10. Query tool layout issues. Fixes #6725 >>> >>> Please note, there are still few minor niggles at some places but the >>> patch qualified to be reviewed. We will need a good amount of time to test >>> this properly. So, I am sending the feature patch. JS test cases and >>> documentation patches will follow soon. >>> >>> Please review. >>> >>> [image: image.png] >>> -- >>> Thanks, >>> Aditya Toshniwal >>> pgAdmin Hacker | Software Architect | *edbpostgres.com* >>> >>> "Don't Complain about Heat, Plant a TREE" >>> >> >> >> -- >> *Thanks & Regards* >> *Akshay Joshi* >> *pgAdmin Hacker | Principal Software Architect* >> *EDB Postgres * >> >> *Mobile: +91 976-788-8246* >> > > > -- > Thanks, > Aditya Toshniwal > pgAdmin Hacker | Software Architect | *edbpostgres.com* > > "Don't Complain about Heat, Plant a TREE" > -- Thanks, Aditya Toshniwal pgAdmin Hacker | Software Architect | *edbpostgres.com* "Don't Complain about Heat, Plant a TREE" --0000000000001157a705da550077 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hi,

Attached is an updated one with few more improvements = and fixes.

On Wed, Mar 16, 2022 at 1:40 PM Aditya Toshniwal <aditya.toshniwal@enterprised= b.com> wrote:
Please find the attached patch :)

On Wed, Mar 16, 202= 2 at 12:16 PM Akshay Joshi <akshay.joshi@enterprisedb.com> wrote:
H= i=C2=A0Aditya

I think you forgot to attach the pat= ch.

On Tue, Mar 15, 2022 at 4:00 PM Aditya Toshniwal <aditya.toshniwal@= enterprisedb.com> wrote:
Hi Hackers,

Attached is the=C2=A0initial patch that migrates the SQL Ed= itor tool to React based. Change highlights:
1. Complete rewrite to Reac= t code.
2. UI improvements based on suggestions and requests.
3. Work= towards stability and performance improvement.
4. Keep row numbers in v= iew when scrolling horizontally. Fixes #3989
5. Fixed status bar at the = bottom with useful details. Fixes #3253
6. Relocate GIS Viewer Button to= the Left Side of Results Table. Fixed #6830
7. Allow to remove single h= istory records. Refs #4113
8. Macros usability improvements. Ref #69699. Connection bar visibility issue. Fixes #7188
10. Query tool layout = issues. Fixes #6725

Please note, there are still fe= w minor niggles at some places but the patch qualified to be reviewed. We w= ill need a good amount of time to test this properly. So, I am sending the = feature patch.=C2=A0JS test cases and documentation patches will follow soon.=C2=A0

Please review.

3D"image.png"
--=
Thanks,
Ad= itya Toshniwal
pgAdmin Hacker=C2=A0| <= font size=3D"2" color=3D"#000000" face=3D"arial, sans-serif">Software Archi= tect=C2=A0| <= font face=3D"arial, sans-serif" color=3D"#000000">edbpostgres.com
"Don't Complain about Heat, Plant a TREE"<= /font>


--
Thank= s & Regards
Akshay Joshi
pgAdmin Hacker | Principal Softw= are Architect
EDB Po= stgres
Mobile: +91 976-788-8246



--
Thanks,
Aditya Toshniwal=
pgAdmin Hacker=C2=A0| Software Architect=C2=A0| = edbpostgres.com
=
&q= uot;Don't Complain about Heat, Plant a TREE"


--
Thanks,
Aditya Toshniwal
pgAdmin Hacker=C2=A0| Software A= rchitect=C2=A0| edbpostgres.com
"Don't Complain about Heat, Plant a TREE&qu= ot;
--0000000000001157a705da550077-- --0000000000001157a805da550078 Content-Type: image/png; name="image.png" Content-Disposition: inline; filename="image.png" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: ii_l0rzsnu50 iVBORw0KGgoAAAANSUhEUgAACwQAAAUACAYAAABDeXSLAAAMbGlDQ1BJQ0MgUHJvZmlsZQAASImV VwdYU8kWnluSkJDQAhGQEnoTRHqREkKLQUCqYCMkgYQSY0JQsaOLCq4FFVGs6KqIomsBZFERe1kU e18sqCjrYkFRVN6EBHTdV753vm/u/PfMmf+UO3PvHQC0e3hSaQ6qA0CuJE8WFxHCHJuSyiQ9BQig AT1gDYx5fLmUFRsbBaAM9H+X9zegNZSrzkquf47/V9ETCOV8AJDxEKcL5PxciJsAwNfzpbI8AIhK vdXUPKkSz4VYXwYDhHiVEmeq8E4lTlfhxn6bhDg2xJcB0KDyeLJMALTuQT0zn58JebQ+Q+wqEYgl AGgPgziQL+IJIFbGPiw3d7ISl0NsD+2lEMN4gE/6d5yZf+NPH+Tn8TIHsSqvftEIFculObzp/2dp /rfk5igGfNjCRhXJIuOU+cMa3sqezFViKsSdkvToGGWtIe4RC1R1BwCliBSRiSp71IQvZ8P6AQbE rgJeKBdiE4jDJTnRUWp9eoY4nAMxXC3oNHEeJwFiQ4gXCeVh8WqbzbLJcWpfaG2GjM1S68/yZP1+ lb4eKLITWWr+NyIhR82PaRWIEpIhpkBsnS9OioZYC2IXeXY8V20zskDEjh6wkSnilPFbQxwnlESE qPix/AxZeJzavjhXPpAvtlkk5kSr8f48UUKkqj7YST6vP36YC3ZZKGElDvAI5WOjBnIRCEPDVLlj z4WSxHg1T480LyRONRenSHNi1fa4pTAnQqm3hNhDnh+vnosn5cHFqeLHM6R5sQmqOPGCLN6oWFU8 +HIQBdggFDCBArZ0MBlkAXFLZ10nvFONhAMekIFMIATOas3AjOT+EQm8xoMC8CdEQiAfnBfSPyoE +VD/ZVCrujqDjP7R/P4Z2eApxLmAC3LgvaJ/lmTQWxJ4AjXif3jnwcaH8ebAphz/9/oB7TcNC2qi 1BrFgEem9oAlMYwYSowkhhMdcGM8EPfHo+A1GDY33Af3Hcjjmz3hKaGV8IhwndBGuD1JXCj7IcrR oA3yh6trkf59LXBbyOmJh+ABkB0y4wzcGDjjHtAPCw+Cnj2hlq2OW1kV5g/cf8vgu6ehtiO7klHy EHIw2f7HmVqOWp6DLMpaf18fVazpg/VmD4786J/9XfUFsOf+aIktwg5gZ7Dj2DmsEasDTOwYVo9d xI4o8eDqetK/uga8xfXHkw15xP/wx1P7VFZS7lrt2uH6WTWWJ5yWp9x47MnS6TJxpiiPyYJfByGT I+G7DGO6ubq5AaD81qheX28Z/d8QhHH+m24+3OMBkr6+vsZvOu4nAA5awO3f9k1ndwW+JuB7+uwK vkKWr9LhygsBviW04U4zAmbACtjDfNyAF/AHwSAMjAIxIAGkgImwyiK4zmVgKpgJ5oEiUAKWg9Vg HdgEtoKdYA/YD+pAIzgOToML4DK4Du7C1dMOXoIu8B70IghCQmgIHTFCzBEbxAlxQ3yQQCQMiULi kBQkDclEJIgCmYnMR0qQUmQdsgWpQn5FDiPHkXNIK3IbeYh0IG+QTyiGUlF91BS1RYejPigL5aIJ 6AQ0E52CFqAL0KVoOVqJ7kZr0ePoBfQ62oa+RLsxgGliDMwCc8Z8MDYWg6ViGZgMm40VY2VYJVaD NcDnfBVrwzqxjzgRp+NM3Bmu4Eg8EefjU/DZ+BJ8Hb4Tr8VP4lfxh3gX/pVAI5gQnAh+BA5hLCGT MJVQRCgjbCccIpyCe6md8J5IJDKIdkRvuBdTiFnEGcQlxA3EvcQmYivxMbGbRCIZkZxIAaQYEo+U RyoirSXtJh0jXSG1k3o0NDXMNdw0wjVSNSQahRplGrs0jmpc0Xim0UvWIduQ/cgxZAF5OnkZeRu5 gXyJ3E7upehS7CgBlARKFmUepZxSQzlFuUd5q6mpaanpqzlGU6w5V7Ncc5/mWc2Hmh+pelRHKps6 nqqgLqXuoDZRb1Pf0mg0W1owLZWWR1tKq6KdoD2g9WjRtVy0OFoCrTlaFVq1Wle0XmmTtW20WdoT tQu0y7QPaF/S7tQh69jqsHV4OrN1KnQO69zU6dal647QjdHN1V2iu0v3nO5zPZKerV6YnkBvgd5W vRN6j+kY3YrOpvPp8+nb6Kfo7fpEfTt9jn6Wfon+Hv0W/S4DPQMPgySDaQYVBkcM2hgYw5bBYeQw ljH2M24wPg0xHcIaIhyyeEjNkCtDPhgONQw2FBoWG+41vG74yYhpFGaUbbTCqM7ovjFu7Gg8xniq 8UbjU8adQ/WH+g/lDy0eun/oHRPUxNEkzmSGyVaTiybdpmamEaZS07WmJ0w7zRhmwWZZZqvMjpp1 mNPNA83F5qvMj5m/YBowWcwcZjnzJLPLwsQi0kJhscWixaLX0s4y0bLQcq/lfSuKlY9VhtUqq2ar Lmtz69HWM62rre/YkG18bEQ2a2zO2HywtbNNtl1oW2f73M7QjmNXYFdtd8+eZh9kP8W+0v6aA9HB xyHbYYPDZUfU0dNR5FjheMkJdfJyEjttcGodRhjmO0wyrHLYTWeqM8s537na+aELwyXKpdClzuXV cOvhqcNXDD8z/Kurp2uO6zbXuyP0RowaUTiiYcQbN0c3vluF2zV3mnu4+xz3evfXHk4eQo+NHrc8 6Z6jPRd6Nnt+8fL2knnVeHV4W3unea/3vumj7xPrs8TnrC/BN8R3jm+j70c/L788v/1+f/k7+2f7 7/J/PtJupHDktpGPAywDeAFbAtoCmYFpgZsD24IsgnhBlUGPgq2CBcHbg5+xHFhZrN2sVyGuIbKQ QyEf2H7sWeymUCw0IrQ4tCVMLywxbF3Yg3DL8Mzw6vCuCM+IGRFNkYRIbuSKyJscUw6fU8XpGuU9 ataok1wqN567jvsoyjFKFtUwGh09avTK0feibaIl0XUxIIYTszLmfqxd7JTY38YQx8SOqRjzNG5E 3My4M/H0+Enxu+LfJ4QkLEu4m2ifqEhsTtJOGp9UlfQhOTS5NLlt7PCxs8ZeSDFOEafUp5JSk1K3 p3aPCxu3elz7eM/xReNvTLCbMG3CuYnGE3MmHpmkPYk36UAaIS05bVfaZ14Mr5LXnc5JX5/exWfz 1/BfCoIFqwQdwgBhqfBZRkBGacbzzIDMlZkdoiBRmahTzBavE7/OiszalPUhOyZ7R3ZfTnLO3lyN 3LTcwxI9Sbbk5GSzydMmt0qdpEXStil+U1ZP6ZJxZdvliHyCvD5PH/7UX1TYK35SPMwPzK/I75ma NPXANN1pkmkXpztOXzz9WUF4wS8z8Bn8Gc0zLWbOm/lwFmvWltnI7PTZzXOs5iyY0z43Yu7OeZR5 2fN+L3QtLC18Nz95fsMC0wVzFzz+KeKn6iKtIlnRzYX+CzctwheJF7Usdl+8dvHXYkHx+RLXkrKS z0v4S87/POLn8p/7lmYsbVnmtWzjcuJyyfIbK4JW7CzVLS0ofbxy9MraVcxVxaverZ60+lyZR9mm NZQ1ijVt5VHl9Wut1y5f+3mdaN31ipCKvetN1i9e/2GDYMOVjcEbazaZbirZ9GmzePOtLRFbaitt K8u2Erfmb326LWnbmV98fqnabry9ZPuXHZIdbTvjdp6s8q6q2mWya1k1Wq2o7tg9fvflPaF76muc a7bsZewt2Qf2Kfa9+DXt1xv7ufubD/gcqDloc3D9Ifqh4lqkdnptV52orq0+pb718KjDzQ3+DYd+ c/ltR6NFY8URgyPLjlKOLjjad6zgWHeTtKnzeObxx82Tmu+eGHvi2skxJ1tOcU+dPR1++sQZ1plj ZwPONp7zO3f4vM/5ugteF2ovel489Lvn74davFpqL3lfqr/se7mhdWTr0StBV45fDb16+hrn2oXr 0ddbbyTeuHVz/M22W4Jbz2/n3H59J/9O79259wj3iu/r3C97YPKg8g+HP/a2ebUdeRj68OKj+Ed3 H/Mfv3wif/K5fcFT2tOyZ+bPqp67PW/sCO+4/GLci/aX0pe9nUV/6v65/pX9q4N/Bf91sWtsV/tr 2eu+N0veGr3d8c7jXXN3bPeD97nvez8U9xj17Pzo8/HMp+RPz3qnfiZ9Lv/i8KXhK/frvb7cvj4p T8br/xXAYEMzMgB4swMAWgoAdHhuo4xTnQX7BVGdX/sR+E9YdV7sFy8AamCn/I1nNwGwDzbbuZAb NuUvfEIwQN3dB5ta5BnubiouKjwJEXr6+t6aAkBqAOCLrK+vd0Nf35dtMNjbADRNUZ1BlUKEZ4bN oUp0e+W4Af+Dojqffpfjjz1QRuABfuz/BbfwkAzZCGeBAAAAlmVYSWZNTQAqAAAACAAFARIAAwAA AAEAAQAAARoABQAAAAEAAABKARsABQAAAAEAAABSASgAAwAAAAEAAgAAh2kABAAAAAEAAABaAAAA AAAAAJAAAAABAAAAkAAAAAEAA5KGAAcAAAASAAAAhKACAAQAAAABAAALBKADAAQAAAABAAAFAAAA AABBU0NJSQAAAFNjcmVlbnNob3QfoGL4AAAACXBIWXMAABYlAAAWJQFJUiTwAAAC3WlUWHRYTUw6 Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4 bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cu dzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9u IHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29t L2V4aWYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90 aWZmLzEuMC8iPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVz ZXJDb21tZW50PgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+MjgyMDwvZXhpZjpQaXhl bFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj4xMjgwPC9leGlmOlBp eGVsWURpbWVuc2lvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNv bHV0aW9uVW5pdD4KICAgICAgICAgPHRpZmY6WFJlc29sdXRpb24+MTQ0LzE8L3RpZmY6WFJlc29s dXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjE0NC8xPC90aWZmOllSZXNvbHV0aW9u PgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICA8 L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4K2gK9FAAAQABJREFU eAHs3QecE2X+x/GHpe0CCyyCgKAUEQFFBRtiRywnf/QErOgpds9256l4CpbTs59dDwuCnnqKiAW7 iIoNGyB6YKWKgHQW2GVp/3wfeOLskDLZZLNJ9vO8XiHJlGdm3jOZTch3fqkxY9a8TSbUChsW6o6G AAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAlkg0LRo c/43LwvWlVVEAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE EEAAgQgCmzZtMgSCI8AwCAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAAB BBBAAAEEEEAAgUwXUBi4Ro0aBIIzfUexfggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggg gAACCCCAAAIIIIAAAggggAACCEQSUBhYoeBakUbGGrZ6TYlZumylWbW6xJSVrbOdxJqecQgggAAC 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 CCCAAAIIIIAAAggggAAC5FZjHwMKA6u4b17syRiLAAIIIIAAAggggAACCCCAAAIIIIAAAggggAAC CCCAAAIIIIAAAggggAACCCCAAAIIIIAAApkqoFAwgeBM3TusFwIIIIAAAggggAACCCCAAAIIIIAA AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAgEECAQHQGISBBBAAAEEEEAAAQQQQAABBBBA AAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEMk1g06ZNdpUIBGfanmF9EEAAAQQQQAAB BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQCCBQo0YNOxWB4ABYTIIA AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggEAmCqhKMIHg TNwzrBMCCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJx BBQGVpVgAsFxoBiNAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCA AAIIIIBAJgooDKxQcK1MXDnWCQEEEEAgdwT0x2b9uvVm3bp1ZsOGDbmzYWwJAmkWqFmzpqldu7ap VbuWvaorzYtncQgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIZKOAqBBMI zsCdwyohgAACuSKwrmydKS0tzZXNYTsQqFIBBeptqD70ksrPzze169Su0vVh4QgggAACCCCAAAII IIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAJVL6AKwWoEgqt+X7AGCCCAQE4KKAisQLBavXoF pm7duqZWzdCfnc1/f3Jym9koBCpNYJMx6zesN2vXrjVr1pTYoP2GjRtsMLjSlknHCCCAAAIIIIAA AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAhkvoArBagkHgleHQihLl600q1aXmLJQ0Mt1 lPFbzArmhECtWjVNQX5dU1CQbxo3amDqhe6TaTqel4WO5+LVa7Ycz8n0xry60KBOqGJlYf16pqio oakfCoEm08rWrTdrSjaHStet31IZM5kOs2Te1aHzq1r9+sn5VXRza9asaWqHXmuqPlov9HrTPk20 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 MkJOnjgpJ06ckFOnToXCtJkjAkEpYD5ePLLwa8p6IxeUE2VSCCCAAAIIIIAAAggggAACCCCAAAII IIAAAggggAACCCCAAAIIIIAAAlUqUFBQQCC4SsU5GAIIIFADBTS4qMFgfdAQQAABBBBAAAEEEEAA AQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQT8J6BhYM1ohflvSEZCAAEEEEAAAQQQQAAB BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAgaoS0DCwhoIJBFeVOMdBAAEE EEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEDAjwJUCPYjJkMh gAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCBQ1QJaIVhb hHXgrMwsa5FnBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBA AAEEEAhygYbx9cwM7UBwkM+X6SGAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAA AggggAACCCCAAAIIIICAk0CJCsHt2rRw2swiAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAA AggggAACCCCAAAIIIIAAAggggAACCASzQH5+vpkeFYKD+SoxNwQQQAABBBBAAAEEEEAAAQQQQAAB BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBDwIaIVgfYR52M5qBBBAAAEEEEAAAQQQQAAB BBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEAgBAQLBIXCRmCICCCCAAAIIIIAA AggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALFBbQ6sLaI4ht4jQACCCCA AAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAALBL5Cfny8FBQUE goP/UjFDBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEE SgqEhYWZlYX/ltzOGgQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAA 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 fvOb5RWfX3755eljH/tYete73pXuv//+swaC444iSBvX/uxnP0tPPPFEeZ3tTl/zmtekr3zlK+mS Sy456ZTYd/fdd6fbb789ffGLXyxNvCe28UYwOMK6N998c5MwcNxMhKHvuuuu9PGPfzzdd999JYT8 ve99r4SQI/R8yy23lM/OFgiu5XkizDvf+c706KOPFt8f/OAHpUX52WefTS972ctOPM0/EyBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYM8JRKluzjkNP3zsx6Wq9rzzDuy5L9n7 C73yguUNn//Fc+no1x9Jx771o/TMj//3+C2/dCsg+4d/9kfpDdcdShGWPdfxi2PPpEe//nB6/P4f pee2Zu4cB99xWbp0K+R73iXn73y0qz+P/eePyn1ttxmnFPcTYeEI877Y/Ty51dx7dOs+jm3dx86x 22t3zo/v8j9f/e+1ZuzM+q/Pf/s0k0u2XCOsGt/n/8MRzzJecZx/ye/vOny76nVnMo2/E0fvfuT4 3/Hd/P2OwPzO8Yb3XFH+Du/83dj5fCfkXvNed2af6c9oLI8W3PgX6Bvf+MYSgj3Tead+9pOf/CR9 8IMfLI3nn/3sZ9OFF15YgsE77ea/+c1v0uOPP54eeeSREvaN66+99tr0yU9+8tRRJ/389NNPlyBs /B8er3/969OrXvWqk37f+ofnnnsuff/73y//MbniiivSvn37llq5qufZljzzzDOlzTkcHnjggbOd 5nMCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjsOQGB4IqPdJVAcMX1RhEg sKEC0SJ8xx13pC996UvprW9964ve5Uc/+tF05513pje96U3pa1/72oue65cnC9xzzz3pwx/+cLrm mmtKg/LJv/UTAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE9qZANASPe/Or +VYECBDYHIH77ttuOz548OA5b2oct/+1fOWVV57zXCf8ViDaij/96U+XD26++ebf/sI/ESBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYI8LCATv8Qfs6xEgsBkCl19+ebmRT33q U+mFF1444009//zz6TOf+Uw6cuRIOnDgQLr++uvPeJ4PTxd48skn0wc+8IH00EMPpcOHD6e3vOUt p5/kEwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECOxBgRIG3iqiHH742I9z fL/zzjuwB79m36/0ygsY9hW3jcDvhsB3v/vddOONN6Zf/vKX6cILL0xvf/vb08UXX5xe/vKXp6ef fjodO3Ys3XvvveX3F1xwQfrCF76QDh069Lvx5Wa+ywceeCDddNNN6de//nV697vfnW699da0b9++ me/KegIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECPQVEAiu6C0QXBHTKAJ7 TODo0aMl6HvXXXelX/3qVyd9u8VikQ4ePJhuuOGGdO2116b9+/ef9Hs/nF3g5z//efrIRz5SXm97 29vOfqLfECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYI8KTNOkIbjmsxUI rqlpFoG9KfDCCy+kn/70p+X17LPPlqbgV7/61Vpt9+bj9q0IECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECDQRWDRZYslBAgQIFAE9u3blyIAHC8HAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBBYR6C0Aw9DEgheR9G1BAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBGYSGMexbN5+n+kmrCVAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYDWBaAjOOSeB4NX8XEWAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgVoFoCBYInvURWE6AAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgdYESBt4KBWsIXt3QlQQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRmExiGoewWCJ7tEVhMgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYHWBaZrKxQLBqxu6kgABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMBsAhqCZ6O3mAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMD6AhEIzjknDcHrW5pAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYBaBCAULBM9CbykBAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBOgICwXUcTSFAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQVSDnXPYJBHdlt4wAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAHYFhGMoggeA6nqYQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ6C4QLcECwd3ZLSRAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwvkCEgaMlWCB4fUsTCBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECHQXiDCwhuDu7BYSIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqCOgIbiOoykECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEZhGIhuA4FrNst5QAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgbUEoiE4DoHgtRhdTIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAeAQ3B87jbSoAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCKwDRNZY6G4CqchhAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoKxANwfEa+661jQABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgACBmgICwTU1zSJAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECDQSSDageNYdNpnDQECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECFQWmaUo5Z4HgiqZGESBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIEOgmMI5j2bX93m2tRQQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1BKIhmCB4Fqa5hAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDoLCAQ3BncOgIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQK1BEoYeBw1BNcCNYcAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIBAT4FhGMq6sedSuwgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQqCcwTZOG4HqcJhEgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBDoKzCOo0BwX3LbCBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECNQRiHbgnHNa1BlnCgECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECPQWiHTiO7feem+0iQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBtgZ2GYIHgtSkNIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQINBfIBqCc84agvvT20iAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgfYESBt4KBWsIXt/SBAIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLdBYZhKDsFgrvTW0iAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgfYFpmsoQgeD1LU0gQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0F1AQ3B3cgsJECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1BOIQHDOOWkIrmdqEgECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGuAhEKFgjuSm4ZAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgboCAsF1PU0jQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAg0EUg51z2CAR34baEAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAQF2BYRjKQIHguq6mESBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIEOgmEC3BAsHduC0iQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgUE8gwsDREiwQXM/UJAIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLdBCIMrCG4G7dFBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBOoKaAiu62kaAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAga4C0RAcx6LrVssIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIEKgiEA3BcQgEV+E0hAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgEBfAQ3Bfb1tI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIFBVYJqmMk9DcFVWwwgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAj0EYiG4HiNfdbZQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIBACwGB4BaqZhIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBBoLBDtwHEsGu8xngABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgACBBgLTNKWcs0BwA1sjCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECDQXGMex7Nh+b77OAgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIEagtEQ7BAcG1V8wgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAh0EhAI7gRtDQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAIHaAiUMPI4agmvDmkeAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECgh8AwDGXN2GOZHQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQI1BeYpklDcH1WEwkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAj0ERjHUSC4D7UtBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBOoKRDtwzjkt6o41jQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgACBHgLRDhzH9nuPjXYQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIFBNYKchWCC4GqlBBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBPoJRENwzllDcD9ymwgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAjUEyhh4K1QsIbgeqYmESBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIEOgmMAxD2SUQ3I3cIgIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQL1BKZpKsMEguuZmkSAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECgm4CG4G7UFhEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBCoLxCB4Jxz0hBc39ZEAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAl0EIhQsENyF2hICBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECbQQEgtu4mkqAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECgqUDOucwXCG7KbDgBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgACBNgLDMJTBAsFtfE0lQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAg0FwgWoIFgpszW0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECgvkCEgaMlWCC4vq2JBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBJoLRBhYQ3BzZgsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQItBHQENzG1VQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECXQSiITiORZdtlhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgUFUgGoLjEAiuymoYAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAgT4CGoL7ONtCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAoInANE1lrobgJryGEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIEGgrEA3B8RrbrjGdAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAIGWAgLBLXXNJkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQINBIINqB41g0mm8sAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQINBaZpSjlngeCGxkYTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQaCYwjmOZvf3ebI3BBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAi0EoiGYIHgVrrmEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIEGgsIBDcGNh4AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAq0EShh4HDUEtwI2lwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgEBLgWEYyvix5RKzCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBBoJzBNk4bgdrwmEyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIEGgrMI6jQHBbYtMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQItBGIduCcc1q0GW8qAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQItBaIdOI7t95abzCZAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAoLrATkOwQHB1WgMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQItBeIhuCcs4bg9tQ2ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIEKgvUMLAW6FgDcH1bU0kQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAg0FxgGIayQyC4ObUFBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBOoLTNNUhgoE17c1kQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgEBzAQ3BzYktIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQINBOIALBOeekIbidsckECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIEmgpEKFgguCmx4QQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgTaCggEt/U1nQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgEATgZxzmSsQ3ITXUAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQJtBYZhKAsEgts6m06AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECgmUC0BAsEN+M1mAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgEA7gQgDR0uwQHA7Y5MJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQINBOIMLCG4Ga8BhMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBBoK6AhuK2v6QQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgSaCkRDcByLplsMJ0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECgiUA0BMchENyE11ACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECbQU0BLf1NZ0AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIBAU4Fpmsp8DcFNmQ0nQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAg0EYgGoLjNbYZbyoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAj0EBIJ7KNtBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAoLJAtAPHsag81zgCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBDoITNOUcs4CwR2srSBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBQXWAcxzJz+736eAMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIEGgtEA3BAsGtlc0nQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAg0EhAILgRrLEECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIEWguUMPA4aghuDW0+AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAgRYCwzCUsWOL4WYSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQINBeYJomDcHtmW0gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAg0EZgHEeB4Da0phIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBBoKxDtwDnntGi7xnQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBFoIRDtwHNvvLTaYSYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIBAM4GdhmCB4GbEBhMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBBoJxANwTlnDcHtiE0mQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAg0E6ghIG3QsEagtsZm0yAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECgmcAwDGW2QHAzYoMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQItBOYpqkMFwhuZ2wyAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAgWYCGoKb0RpMgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAoL1ABIJzzklDcHtrGwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAg0EYhQsEBwE1pDCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECPQREAju42wLAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAgaoCOecyTyC4KqthBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBPoIDMNQFgkE9/G2hQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgEB1gWgJFgiuzmogAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAgfYCEQaOlmCB4PbWNhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBCoLhBhYA3B1VkNJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQINBHQENwH2dbCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CDQRiIbgOBZNphtKgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gEBTgWgIjkMguCmz4QQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgTaCGgIbuNqKgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIEu AtM0lT0agrtwW0KAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg rkA0BMdrrDvWNAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE egoIBPfUtosAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAJYFo B45jUWmeMQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIdBSY pinlnAWCO5pbRYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCa wDiOZdb2e7WxBhEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg 0EsgGoIFgntp20OAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg soBAcGVQ4wgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAj0Eihh 4HHUENwL3B4CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECNQWG YSjjxppDzSJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoJ/A NE0agvtx20SAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgrsA4 jgLBdUlNI0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBHINqB c85p0WedLQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1BSI duA4tt9rTjaLAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHm AjsNwQLBzaktIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBf IBqCc84aguvTmkiAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg vUAJA2+FgjUEt7e2gQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gEB1gWEYykyB4Oq0BhIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBBoLzBNU1kiENze2gYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAEC1QU0BFcnNZAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA P4EIBOeck4bgfuY2ESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI EKgqEKFggeCqpIYRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ 6CsgENzX2zYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECVQRy zmWOQHAVTkMIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI9BUY hqEsFAju624bAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWoC 0RIsEFyN0yACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC/QQi DBwtwQLB/cxtIkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIFBN IMLAGoKrcRpEgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoK+A huC+3rYRIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqCoQDcFx LKpONYwAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgS4C0RAc h0BwF25LCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECNQV0BBc 19M0AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAl0Fpmkq+zQE d2W3jAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAdgWgIjtdY Z5wpBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAjMISAQPIe6 nQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTWFIh24DgWa85x OQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECMwhM05RyzgLB M9hbSYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBtgXEcy4zt 97XHGUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQG+BaAgW CO6tbh8BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBSgICwZUg jSFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQW6CEgcdRQ3Bv ePsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1BAYhqGMGWsM M4MAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgf4C0zRpCO7P biMBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBOgLjOAoE16E0 hQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBfgWgHzjmnRd+1 thEgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgUEMg2oHj2H6v MdEMAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgS6Cew0BAsE dyO3iAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEA9gWgIzjlr CK5HahIBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBfgIlDLwV CtYQ3M/cJgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLVBIZh KLMEgquRGkSAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgn8A0 TWWZQHA/c5sIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIVBPQ EFyN0iACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC/QUiEJxz ThqC+9vbSIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCKQISC BYKrUBpCgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYB4BgeB5 3G0lQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsJZAzrlcLxC8 FqOLCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECMwjMAxDWSwQ PI+/rQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgTWFoiWYIHg tRkNIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBfIMLA0RIs ENzf3kYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECawtEGFhD 8NqMBhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCYR0BD8Dzu thIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBCoIhANwXEsqkwz hAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBrgLREByHQHBX dssIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI1BHQEFzH0RQC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECswhM01T2agiehd9S AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAusJRENwvMb1xria AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIE5BQSC59S3mwAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMCKAtEOHMdixetdRoAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAjALTNKWcs0DwjM/A agIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIrC4zjWK7dfl95 jAsJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEJhLIBqCBYLn 0reXAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwJoCAsFrArqc AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwFwCJQw8jhqC53oA 9hIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBYR2AYhnL5uM4Q 1xIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMJ/ANE0agufj t5kAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAegLjOAoEr0fo agIECBAgQIAAAQIECBAgQIAAAQIECMDX/nQAAEAASURBVBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQLzCEQ7cM45LeZZbysBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAusIRDtwHNvv60xyLQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAEC3QV2GoIFgrvTW0iAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIEBgfYFoCM45awhen9IEAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAv0FShh4KxSsIbi/vY0ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIE1hYYhqHMEAhem9IAAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAv0FpmkqSwWC+9vbSIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQGBtAQ3BaxMaQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQGA+gQgE55yThuD5noHNBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBNYSiFCwQPBahC4mQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgMK+AQPC8/rYTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQWEkg51yuEwheic9FBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBOYVGIah3IBA8LzPwXYCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECKwtES7BA8Mp8LiRAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECAwn0CEgaMlWCB4vmdgMwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAIGVBSIMrCF4ZT4XEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIEJhXQEPwvP62EyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIEFhLIBqC41isNcXFBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAjMIhANwXEIBM/CbykBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgACB9QQ0BK/n52oCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECswpM01T2awie9TFYToAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQGA1gWgIjte42uWuIkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIEBgEwQEgjfhKbgHAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAksKRDtwHIslr3M6AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIbIDBNU8o5CwRvwLNwCwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgSWFhjHsVyz/b705S4gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQGBugWgIFgie+ynYT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQGBFAYHgFeFcRoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQGBugRIGHkcNwXM/CPsJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIrCIwDEO5bFzlYtcQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIDC/wDRNGoLnfwzugAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgMBqAuM4CgSvRucqAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAvMKRDtwzjkt5r0N2wkQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQWEUg2oHj2H5fZYJrCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBCYTWCnIVggeLZHYDEBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgACB1QWiITjnrCF4dUJXEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIEJhPoISBt0LBGoLnewY2EyBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIEFhZYBiGcq1A8MqELiRAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECAwn8A0TWW5QPB8z8BmAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAisLaAhemc6FBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBOYXiEBwzjlpCJ7/WbgDAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAisJRChYIHglOhcRIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQ2AwBgeDNeA7uggABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgMBSAjnncr5A8FJsTiZAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECCwGQLDMJQbEQjejOfhLggQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgsLRAtwQLBS7O5gAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgMD8AhEGjpZggeD5n4U7IECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQILC0QISBNQQvzeYCAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABApshoCF4M56DuyBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECCwkkA0BMexWOlqFxEgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgMKtANATHIRA862OwnAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMBqAhqCV3NzFQECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAAIGNEJimqdyHhuCNeBxuggABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMByAtEQHK9xucucTYAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAJgkIBG/S03AvBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBHYpEO3AcSx2eb7TCBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDYIIFpmlLOWSB4g56JWyFAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwa4FxHMu52++7vsyJBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhsikA0BAsEb8rTcB8ECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElhQQCF4SzOkECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIENkWghIHHUUPwpjwQ90GAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgGYFhGMrp4zIXOZcAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgc0RmKZJQ/DmPA53QoAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGA5gXEcBYKXI3M2AQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgc0QiHbgnHNabMbtuAsCBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJYRiHbgOLbfl7nSuQQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIzC6w0xAsEDz7o3ADBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJYXiIbgnLOG4OXpXEGA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgfoESBt4KBWsInv9Z uAMCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECSwsMw1CuEQhe ms4FBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBOYXmKap3IRA 8PzPwh0QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWFpAQ/DS ZC4gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsDkCEQjOOScN wZvzTNwJAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgaUEIhQs ELwUmZMJECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIbJaAQPBm PQ93Q4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBXAjnncp5A 8K64nESAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgswSGYSg3 JBC8Wc/F3RAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDYtUC0 BAsE75rLiQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQ2RyDC wNESLBC8Oc/EnRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDY tUCEgTUE75rLiQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQ2 S0BD8GY9D3dDgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYCmB aAiOY7HUVU4mQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAj BKIhOA6B4I14HG6CAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA wHICGoKX83I2AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgY0S mKap3I+G4I16LG6GAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA wO4EoiE4XuPuTncWAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQKbKCAQvIlPxT0RIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ OIdAtAPHsTjHeX5NgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gMAGCkzTlHLOAsEb+GzcEgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAIFzCozjWM7Zfj/n6U4gQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQGDTBKIhWCB4056K+yFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECCwSwGB4F1COY0AAQIECBAgQIAAAQIECBAgQIAAgf9j7z7g7KjK/oGfXdIbIZCEJEAS OtKRXgQURLAg6B9EwFcRBQQriCAoiIoFFRAEVFBREKSIUqIIiCBKl95bICSEkN4L7P7vc5a53G3Z 3ZBN7pLv+Xzu3rkzZ86c+c7MXXzf3z4hQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECFSbQA4D19aq EFxtF8Z8CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECLRHoKam JnerbU9nfQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQqD6B uro6FYKr77KYEQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIH2 CdTW1goEt49KLwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLV JRDVgevr61O36pqW2RAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAg0B6BqA4creFne/bQhwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgACBqhEoKgQLBFfNJTERAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAu0XiArB9fX1KgS3n0xPAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAtUjkMPApVCwCsHVc03MhAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgEC7BWpqanJfgeB2k+lIgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAoHoE6urq8mQEgqvnmpgJAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAgXYLqBDcbiodCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECFSfQASC6+vrkwrB1XdtzIgAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIBAuwQiFCwQ3C4qnQgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAhUp4BAcHVeF7MiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgsFiB+vr6vF0geLFMNhIgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBCoToGampo8MYHg6rw+ZkWAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECgTYGoEiwQ3CaTDgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgSqTyDCwFElWCC4+q6NGREgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBoUyDCwCoEt8mkAwECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAAIHqFFAhuDqvi1kRIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQaJdAVAiO1q1dvXUiQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKCqBKJCcDSB4Kq6LCZDgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoH0CKgS3z0kvAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAlUpUFdXl+elQnBVXh6TIkCAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQILB4gagQHK/axXezlQABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBahYQCK7mq2NuBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBFoRiOrA0bq1st1qAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSqWKCuri7V19cLBFfxNTI1AgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAq0K1NbW5m0NP1vtZgMBAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtUqEBWCBYKr9eqYFwECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIE2BASC2wCymQABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEC1CuQwcG2tCsHVeoHMiwABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMDiBGpqavLm2sV1so0AAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgeoVqKurUyG4ei+PmREgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBBYvEBtba1A8OKJbCVAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQnQJRHbi+vj51q87pmRUB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAosTiOrA0Rp+Lq6n bQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIVJ1AUSFYILjq Lo0JESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGhbICoE19fX qxDcNpUeBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBKpPIIeB S6FgFYKr79qYEQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIE2 BWpqanIfgeA2qXQgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg UH0CdXV1eVICwdV3bcyIAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAQJsCKgS3SaQDAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA geoViEBwfX19UiG4eq+RmREgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBBYrECEggWCF0tkIwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAIHqFhAIru7rY3YECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIEWhSor6/P6wWCW+SxkgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgEB1C9TU1OQJCgRX93UyOwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQKtCkSVYIHgVnlsIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIFC9AhEGjirBAsHVe43MjAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgECrAhEGViG4VR4bCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECFS3gArB1X19zI4AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIDAYgWiQnC0bovtZSMBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAlUpEBWCowkEV+XlMSkCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECixdQIXjxPrYSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQqGqBurq6PD8Vgqv6MpkcAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAgZYFokJwvGpb3mwtAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQJdQUAguCtcJXMkQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAg0EQgqgNH69ZkvY8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECHQBgbq6ulRfXy8Q3AWulSkSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQaCZQW1ub1zX8bLbZCgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIEql0gKgQLBFf7VTI/AgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAq0ICAS3AmM1AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAgWoXyGHg2loVgqv9QpkfAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAgZYEampq8uraljZaR4AAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIBA9QvU1dWpEFz9l8kMCRAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECLQsUFtbKxDcMo21BAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBKpbIKoD19fXp27VPU2zI0CAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgJYGoDhyt4WdLPawjQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKBqBYoKwQLBVXuJTIwAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA6wJRIbi+vl6F4NaJbCFAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBQvQI5DFwKBasQXL3XyMwIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItCpQU1OTtwkEt0pkAwECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHqFairq8uTEwiu3mtkZgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgRaFVAhuFUaGwgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhUv0AEguvr65MKwdV/rcyQ AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQIsCEQoWCG6RxkoC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECXUNAILhrXCezJECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINBIoL6+Pn8WCG7E4gMB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBriFQU1OTJyoQ3DWu l1kSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQaCYQVYIFgpux WEGAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg+gUiDBxVggWC q/9amSEBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBZgIRBlYh uBmLFQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgS6hoAKwV3j OpklAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgRYFokJwtG4t brWSAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGqFogKwdEE gqv6MpkcAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZYFVAhu 2cVaAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAl1CoK6uLs9T heAucblMkgABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEBjgagQ HK/axqt9IkCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgKwkI BHelq2WuBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBN4UiOrA 0bq9+dkbAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJdSKCu ri7V19cLBHeha2aqBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BMoCtbW1ebnhZ3m1BQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIEuopAVAgWCO4qV8s8CRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECDQREAhuAuIjAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA ga4ikMPAtbUqBHeVC2aeBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBCoFampq8sfaypWWCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBDoOgJ1dXUqBHedy2WmBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBBoL1NbWCgQ3JvGJAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAQNcQiOrA9fX1qVvXmK5ZEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBQKRDVgaM1/KzcYpkAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAgaoXKCoECwRX/aUyQQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQLNBaJCcH19vQrBzWmsIUCAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIFD9AjkMXAoFqxBc/dfKDAkQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAg0E6ipqcnrBIKb0VhBgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAoPoF6urq8iQFgqv/WpkhAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWYCKgQ3I7GCAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAQNcRiEBwfX19UiG461wzMyVAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECDQSCBCwQLBjUh8IECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQINC1BASCu9b1MlsCBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECWaC+vj6/CwS7IQgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAh0QYGampo8a4HgLnjxTJkAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBACESVYIFg9wIBAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgACBLigQYeCoEiwQ3AUvnikTIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQiDCwCsHuAwIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQJdVECF4C564UybAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAQAhEheBo3fJPPwgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQ6FICUSE4mkBwl7psJkuAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECgQUCF4E64E+bMmdcJoxqSAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQHOB3r175pXlCsH1dW8072VNhwTmzWfYITCdCRAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElligT59eKaoEvxUIrq9f 4sHsSIAAAQIECBAgQIAAAQIECHQFgZquMElzJECAAIFlLeDXw7IWdzwCBAgQIECAAAECBJaRgP+5 s4ygHYYAAQIECBCoCoFyILgoGVwVszIJAgQIECBAgAABAgQIECBAoBME/L9AOgHVkAQIECBAgAAB AgQIECBAgAABAlUq4P8aVqUXxrQIECBAgACBpSoQ1YGjlQPB/fr2WaoHMBgBAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAp0nUFdXl+rr698KBHfeoYxMgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMDSFqitrc1DNvxc2qMbjwAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBTheICsECwZ3O7AAE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEOkdAILhzXI1KgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoNMFchi4tlaF4E6XdgAC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECnSBQU1OTR63thLEN SYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAMhCoq6tTIXgZ ODsEAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgU4RqK2tFQju FFmDEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEOhkgagOXF9f n7p18nEMT4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAJwhE deBoDT874QCGJECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg 8wSKCsECwZ1nbGQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC nSYQFYLr6+tVCO40YQMTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQ6ESBHAYuhYJVCO5EZEMTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQ6CyBmpqaPLRAcGcJG5cAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIBAJwrU1dXl0bt14jEMTYAAAQIEVliBefPmpRdffDHNmjUrDR8+PL+Kv8ZZYVGcOAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIF3qEDkhKZOnZreeOONJTrDlVZaKQ0a NCj179+/Q/sXmSSB4A6x6UyAAAECK7rAtGnT0sCBA1Pxi7Spx7hx49L3vve9dNttt6X6+vry5sGD B6fddtstffe7321133LnKluYPXt26tGjR35V2dRMhwABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgEBVCLydMHCcQASJY4wlCQRHTmm5BYJ/8Lu/p7sfe6HRRahJNal/355pyKABaZ1h q6W9d9okjRq+aqM+PhBYkQT22muvFEG8aHvvvXc6+eSTO3T6xx13XLrzzjvzPsOGDUtXXXVVh/bX mUBnClxxxRXp7LPPzoc4/PDD02c+85k2D3fMMcekBx54IK2xxhrpT3/6U5v9l3aHCy64IJ111llp ww03TNdcc02zYO/48ePTRz7ykTR37txmh37ttdfSvffe22yfZh2rbMVdd92VjjjiiNSzZ8909dVX pzXXXLPKZmg6BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJa/wJJWBq6c+ZKO EcUNl1sgeNbcBWnazOaBqakz56QXX5ma7n1sbLr85vvSNu8alU76zN5plQF9Ks95qS0/8NS49OqU malv7x5ply3XW2rjdoWBbrnnybTo9TfSmquvkjZee3jVTXlFvjbFxZgyZUqKMuLRIsz7la98JfXr 16/YvNj3iRMnpjFjxpTLj/fq1Wux/W0ksKwF5s2blyZPnpwPe+aZZ6bdd989jRo1arHTmDFjRt6n b9++i+23JBtnzpyZbr755rzrtttum0PHTce5//77c9Xfp59+OkX/lVdeuVGX73znOzkMHL9gjz/+ +PTBD34w/8XOk08+mR5++OEUZf2rrd19990pgszxl0V77rlns+k9+uijaf78+fkV5y0Q3IzICgIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLLXWC5BYKLM+/ds3v64dH7FR/TlBlz 0jPjJqVHnhufHn1uQrr38bHp8O//If3omP3SumsOKfdbWgtX3/pA+vcDz5RCsYNWuEDwmZfdkmbN nZ8+sstmVRkIXpGvTUv3d4Qnr7322vTJT36ypc3N1kWAeEn/WqDZYFYQ6GSBBQsWpJNOOildcskl y62C7iuvvJJOPPHEfKY/+9nPWgwEf/WrX02DBw9OW2+9dbMw8Ouvv57uuOOOvP8WW2yRDjvssLLa VlttleJVje0Pf/hDuummm9Lo0aNbDATvv//+adKkSfmPEXbZZZdqPAVzIkCAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIFB1AmuvvXa75vT888+3q19rnerr63PmarkHgldaqTZtsUHj f378fdtumOf919seSude+a80efrsdMqvrk8XnXxo6lUKEGsEVlSBP/3pT+0KBEcQOALBGoGuJHDf ffelP/7xj+nggw+u2mm/613vSqeffnqL8xs7dmw5hP+BD3ygxT5dceWgQYPSN7/5za44dXMmQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg8I4XiH/NPFptNZ/pvrtunk45/IN5ii9P mpYuuvY/7ZruG3V1qa6UeO7Mtuj1Nzpl+Nff6Py5L42Jh7G27AQ233zzfLAnn3wyPfTQQ20e+Pbb b09R7TRaR6uSRpi4bgmv78KFC9ucW0sdFi1alOKvFJakxb5L2qKi69tpS3rsMFa9ubF8r1698oqf /OQnacKECY03vo1PcY2X9H7u6GFnzJhR3mXkyJHl5bezsKTP1Nt5jt/OfGPfeJbf7rMVYyzJM+LZ ertXz/4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJdUSDyNsu9QnBbcDtvsW7a eO3h6bHnJ6Qx/300fX6/XVL3bis12+2liVPTn299MD310sT03LjXciB49dVWTttsNDL93wd3SAP7 9y7vc+fDz6ffXv/f/Hn8a9Pz+6tTZqbPn35JXt6ldMxD99m+3D8WImB83e0Pp/ueeDE99eKr6dWp M/OYI1dfNX1iz63Tjpuv06h/Rz68MnlGuuqW/6V/P/Rsem3arNSje7e07hqD08ajh6VDP7h96t+n IShXOeZ/Hnw2XTzmrrzq+0ftmwav0r9yc15+4oVX0pmX3ZKXjz14z7TByKHpd9fdmf77yHN53Zz5 C/L77Q8+U3J7NS8fvu/OaduNR+Xly268N916/1Np/bWGpuMO2TNFxeb4/My4SWnBwtfTemsNSdu9 a1Se40q1zbPl3zjnmjRt1py0wyZrp898ZMc8ZtMfP/79P9KzL08qH2NJrk3TMd+Jn9/znvekl19+ OU2ZMiVFleAiINzauUafaOutt17abLPN0v/+97/Wuub1c+fOTZdddlm6+uqr04svvpi6d++e991m m23SF7/4xdS791vPT+VAEYiN/a655poU1VHnzZuXhgwZkjbccMN05JFHLjaM/Mwzz6Rzzz03Pfzw wzm8HIHQNddcM+21117psMMOS3369Kk8VKPlf//73+mGG25Ijz76aIpy6bHvWmutlfbbb79cQTnm 31qL45533nk5WB2h6dgvjL761a+mSZMmpe9+97t510suuaTF845A9q9//et07733punTp6fhw4fn 8z300EPTjju2fJ/HgNOmTUvnn39+irD2uHHjcmhyjTXWSFtvvXU65phj8jitzXlFWP+lL30pnXHG GSnuxW9961vpoosuWuLTjmfl4osvTjfffHN69dVXU48ePfI12mKLLdIXvvCFNGDAgEZjH3XUUfna L1jQ8J0YG88888z0m9/8JveL6x1VcqPFvXPLLbekgQMHlucYcx0zZkyee+5U+vGDH/wg39/x+etf /3rafvvt0xNPPJFOPvnk3OXEE0/M1z5/qPgxf/78dOWVV+Zn8YUXXkgxp2HDhqVNNtkkP4vrr79+ Re/Gi/EsXHrppfm5iD8eiHBs3GM777xzPu/iHGKvW2+9tTy/l156KQ8UQeyPfexjeXmPPfZI4RLt tttuSz//+c/zcryPGDEiL1f+mD17drr88svTX/7yl/wdEsded911U1RU/uxnP5u/Tyr7F8tf+cpX 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 fUsVeueUwsYvv9oQ3my183LasPqqDYHgiVMazmk5TeMdfdgiELzSSivlsOO5556bxowZk4OzUY03 2iuvvJKKKqMHHnhg2aPYt7zizYWXX365vCpChr///e/LnysXYtxoEyZMyH9FUHx5RGjzy1/+cq5U evDBB+eQawQT99hjj7TDDju0WKk0xolQY/S5+eabc9XhG264IYeJI5QcYcjWArexb9HuuuuuXPH3 pZdeyhWRI9gcgdu6Vp7FynNtz/jFcYr3Yv8IJB566KHF6mbvtbW1eQ5F/+iw2mqrpQj8Rgg1Aqhx jhHYjkrFe+21V9poo42ajbOir4jw77e//e18f0Uo+Pvf/34644wzFssS92e0AQMGpJVXXrnVvquu umrq169fvm/Hjh3bar9luWH69OmpuGcWd3/Gsx5/FNBae+GFF9Kll16ann766fx9EPdrUcm7tX3e zvrKKtxNQ+5Nx41QcgSCY44dbcV3Tjzjlc2zValhmQABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAYEUVKHJzXSIQHEHTujeDQINX7tvomsXqn1xyU7rhPw+XAoENm/r27plWHdgv9eze LUWQ96VSWDha0+rCDb3b/vlUqTLvN8/7S5o8veGfaO+2Um1auV/vNGLIwFRbKl0c62fOmV8+ftsj pjR91tzcbfAqDWHOxe0zqHTOEQgeP2XG4rott22DBjRck8JnuU3kHXzgRYsWlc8uqp+ef/75ad68 eenaa69NEcaNFlV3I/zXt2/fVFkFt6iMWx7gzYUIWhatqE5afG7pPYLFs2bNKlfzjfDvlVdemc48 88z073//O1cQvuyyy1K8IpD5gQ98IB133HHl/sWYvXr1ShFo/u1vf5v3jyrDUQ02XlExePPNN0+f +9zncmi42Kd4nzlzZjr88MPTQw89lFdFADeONWLEiBTVfWN+RYC5MjxYWVk0KhB3tBVWU6dOTVEV ta02efLkRl2OPPLItMEGG6QLL7wwV1t+9NFHU7ziOkZV47imcV5xPlqDQNw/EZ7+xz/+ke/zD33o Q2lxlazj2kSLCtpttQiSzp49u1HV67b26cztlSHZmFtHW9zrEaCO57G47yM8HPd6z549c3XseM6i Fds7eoyW+hcVxmNbVA1fXIsqv9GK4PPi+nZkm2erI1r6EiBAgAABAgQIECBAgAABAgQIECBAgAAB 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 ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgSWjUB9fX2qra0VCF423I5CgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYOkK1NTU5AFVCF66rkYjQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgsEwE6urq8nEEgpcJt4MQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWLoCKgQvXU+jESBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEFimAhEIrq+vTyoEL1N2 ByNAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCw9AQiFCwQvPQ8 jUSAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEBgmQsIBC9zcgck QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg8PYF6uvr8yACwW/f 0ggECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIElrlATU1NPma3 4si7HvHTYtE7AQJNBG775bFN1vhIgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIEFj+AlElWIXg5X8dzIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIBAhwUiDBxVggWCO0xnBwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQLLXyDCwCoEL//rYAYECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIElkhAheAlYrMTAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAgeoQiArB0bpVx3TMggABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgACBjghEheBoNc+PHd+w1JG99SVAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA 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 QNOLNpF7mKJErIAAAggggAACCCCAAAIIIIAAAggggAACCDS0gAaqVVAwAcFV3I02OrBe9dPW1lbF 0ikKAQQaVUAP/xUQodS7d2934YUXNmpTqDcCCAQC9O0Ag0kEEECgxgIKIrSASwUFz507t+QaZZlX 2krUsmzVddKkSX70cQVGDh06NBfIm7YdGjV13LhxfjPlpf1RzQ+YqmwFauoevNrfHtCqZV9yySW5 b2zQ/0umTJmS9rApef1all1ypdkwVqCW/Se2QsxEAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQKBK AhaL2l6l8igGAQQQQCADgWoGQmRQXbJAAIGEAvTthFCshgACCFRBwD7ImUVRWeaVtj61LFt1VSAt CQEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEKi/Q0dHhC2GE4MpbUwICCCBQlsDkyZPd dddd5/r06ePGjBlTVl5sjAAC9SNA366ffUFNEEAAAd1jrVmzxv+ccMIJZYFkmVfaitSybNV1+vTp flRdfdBl2LBhaaufW1/bX3PNNW7x4sU+n2p/cEZla3TgWtx/t2rZ+hYU289nnXVW7lioxkQty65G +1qpjFr2n1Zypq0IIIAAAggggAACCCCAAAIIIIAAAggggAAC9SdgIwQTEFx/+6ZgjfTVqfrqUqUR I0YUXFcL9QB17dq1fj19ZaseaCZNtq1GdrIHc7ZtWI/evXsnfthbKE/LO/pqZcXVw/LTNkk8onnz vnUEFi5cmGtsmr5gx1jc8ZfLMJiw41Wz0pQTZNFlUv124sSJXeaHMxTAoq+3VkrTF6x92i6r+iov UnMJlNJ/bJs0x1Wp/Sc8/pOUZ+WkuX5pj1qbNJ2kHK1XKFWybxcql2XZ78ukpnbsaf00x5Cdq9Ns k7ROhdYL+1ba/hJum6TeZpO2nHz1D/trkuuila/8kl7z85VdznyrR5xDaKoykrRL64XbJdkX2qZQ MtskTmHZyjNpnbWulRNXZ+sTWi9tPQqtnzQIMWxXXP1Ur6R5ad20yWzytaWWZSsIOGkgcLF2KDC7 3ODsfLZ2DMX1NW2Tph35ysg3v5Zl2zlGdYvrj5Vsd7Gyk9wX5TMtNr+WZSc5X8TVv1j/iNuGecn6 bng85DuPRi1tf2h+XN+Jrh++L9bnw3U1nbasUtoTLZP3CCCAAAIIIIAAAggggAACCCCAAAIIIIAA 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 Hj6DM888M3f+sfOQXt/61re6t7/97e7973+/++lPfxo7iu9VV13ltz377LPzVmbRokXuHe94h19P 58e9997bl3/YYYfl3SZugYISTz75ZPehD30objHzUgo0yzVBn4izFE7bvEZ9DduirwBJmrI676rM 73znO27//fd3l156qVPgNQkBBBBAAAEEGk+g0e/5Zs2a5d7znvf4vwN0n0Oqb4FGP97qW5faIYAA AggggAACCCCAAAIIIIAAAggggECrCVisQLdWazjtbS4BjVx59913u1GjRjkFqdU6qS4PPvigH6FX QXRh0oiXv/71r92MGTPcAw880Glk33C9YtMLFixwN998c97VzjjjDKeAujvuuMPde++97qijjsq7 bqEFstXomvnS0KFD3fTp012fPn3yrcL8Oheg/3TdQfSfrib55ihQd6+99sot1sjl+rCDzoH60eir OkfYyMK5FQtM/Otf/3Kf+MQn3MaNG9373vc+d+655xZYu/CiXr16Od3sZHWOqrf+Urj12S9tlmuC Ru63D9Lsuuuu2UNVOUcLdLG26H2xbycIq5jlfYv62tVXX+1OOeUUN2XKFHfLLbeERTGNAAIIIIAA Ag0g0Oj3fLvssovTB6V69+7t/xZoAPKWrmKjH28tvfNoPAIIIIAAAggggAACCCCAAAIIIIAAAgjU nUBHR4f/HzkBwXW3a6hQGgGNhKtR6N74xjem2axi62pU4J133tmNHz++UxkK0BkxYoRTULDSfvvt 51///e9/+9ekvxQk96UvfaloMLFG31RAsEbXLDUguFCdCAYupNM4y+g/8fuK/hPvEp07duxYd845 50Rnu/nz57svfOEL7tFHH3WTJk1yP/nJTxI9jH/66af9BztWr17t/uM//sNddtllibbrUoFXZ5x6 6qlu5MiRbrfddsu3Sqr59dZfUlW+wis30jVBx4MFBO++++4Vlqle9uFxHk4Xq0HW9y0HHnigO+64 49xvf/tbf3+mex8SAggggAACCDSHQCPc873rXe/y9yD2YanmkG/NVjTC8daae4ZWI4AAAggggAAC CCCAAAIIIIAAAggggEC9CtgIwa99b3K91pR6IdAgAvfdd597+OGH3Xvf+163xx57dKl1t27d3Ac/ +EE/uu/vfvc7d+ihh3ZZp9iM7373u+6JJ55wJ510Um5V68y5GdsmFJDzlre8xWk0YY3UmWXioUyW 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 hAKTlH00vMRz38L7yjQC0QqMHDnSnnrqKStbtqy98847lpaWlm0TU6ZMsVdeecW++OKLTOspIFfl pJNOynR5tDMVPPinP/3Jli1bZtdee6317t072yb0+Vb/nnnmGdN4eNm/f79rS/MbNmwYvphpBBDI hUA055FSpUrZP//5T/c5nT9/fqZb+/HHH938WH1GFy9ebLqZQH/n+/bta8oUnl3R332dR9TPzIo/ zymTerVq1TKrwjwEEEAAAQQQQAABBBJKoGTJkq6/uuktvOzduzd8FtMIIIAAAggggAACCCCAAAII IIAAAggggAACCBSYgAsGPhwTSobgAiPP+4YaNGjgGhk6dGgggFcz1q5d67L9btu2zS3fsmWLG+qf Zs2auYyhb7zxhv3888+B+RoZNmyYmy5durTVqFHDjRcrVsxuv/12N67HmgdnMFUGlLvvvjuQ6c9n FVbleO6b2xn+QSCXAtOmTbN7773XSpQo4QLrmzRpkmNLF1xwgavTv39/80FxfqUVK1aY5qvkFHDn 18luqM/lnXfeafPmzXPt/fWvf7UiRYpkt4o1atTIqlev7jKOP/nkkyHZwJU+/vnnn7cdO3a4wOdY BS1n2yEWIpDkAtGeR/QZ9ueRp59+2mXZDSZSlv/JkyebbhA6//zzgxflanz9+vUuw7gCG3RDwXXX XZdjO+eee66lpqba1KlTTd9Lgssvv/xif/vb39ysiy++OHgR4wgggAACCCCAAAIIJKzAcccd5/q+ YcOGkJtrdaPt3LlzE3a/6DgCCCCAAAIIIIAAAggggAACCCCAAAIIIIBA4gv4eLHUxN+VwrMHN954 ow0cONAU8KtAoTPOOMMF9ClLoIIV9cOEsvcGPz5c2UJHjx5tM2fOtDZt2ljTpk1dxs9vvvkmUE/B jkWLFg1A3nTTTTZixAhTVsJrrrnGbUfZCtWGMp4o2194NuJ47ltgxxhBIEoBZd7t1q2bKWOusgP7 ALesmlEm7goVKpg+DxMmTLCJEydau3bt3OdV2bcVvD9p0iT3OVIwsD6feS2vv/66CwxUO2vWrLFO nTpl2eSll15qXbp0MQX+K7PnDTfc4M4pX375pZ199tmmzOE6N+hGANV58cUXXcBflg2yAAEEchTI 7XlEwfr6PCqwQEG1CsDV+UWfz+nTp7vt9urVy0444YQc+5BThb/85S/u/KHPvb4z6JVV0Y1B+j7R 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 c06u21Lg79atWzOsv2rVKnv77bftsssus5deeinDcmYggAACCCCAAAIIIIAAAggggAACCCCAAAII FE4BBQTr2nLMMgSrsY8++sief/5527x5c0A1NTXVOnXqZPfcc49VqFAhMJ8RBBBA4FgIKDW6Am7j uZQsWdL02r17dzx3k74hgEASCezbt8/OOOOMbPfozDPPtCFDhoTU0Xe+v/zlLzZt2jQ7cOCAW6bv fueee677TlixYsWQ+vE2wd+EeDsi9AcBBBBAAAEEEIi9gDID/+EPf3BPDbriiivs2WefDdmIvhP6 Ejzu50Uz9BkYtE5u2lq5cqV98skn9tlnn5n62rt375DN16lTxz744APr0aOHvfrqq1auXDm79dZb Q+owgQACCCCAAAIIIIAAAggggAACCCCAAAIIIFA4BXSNOmYBwQ888IB9/PHHVrRoUbvkkktcVg1l 3xg1apS7UD1nzhx3QVtBIhQEEEAAAQQQQACB+BH4+eefXWf05bBMmTKZdix8vta57rrrbPXq1Va3 bl0777zzTMEW//3vf23ixIkuA5uyr8V7UHCmO8tMBBBAAAEEEEAAgaQRGD58uAsG1s3Bf//73zPs lxIYbNu2zc0vX758huWRzlCyBJ8MQeORtqUncej6qQKBZ8yY4TI4ZLfNs88+2x599FG788477fXX X3dZiUuUKJHdKixDAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQKCQCMYnOHT9+vAsGVkbLQYMG2emn nx7g69q1q3Xo0ME9Qvpf//qX/fGPfwwsK0wj+iGAggACCCCAAAIIxKOADwg++eSTTQETkRQ9TlnB wMoc/P7771vp0qXdajt27HAZ2L799lsbOHCgC1SIpD3qIIAAAggggAACCCCQHwIzZ850zTZr1izT 5itVqhQICD7++OMzrRPpTLXlSyRt6XphixYtTEHBKrrRTmXFihVumNU/zZs3d4u2bNnigp2bNGmS VVXmI4AAAggggAACCCCAAAIIIIAAAggggAACCBQCAV1vVhK4o8/Ey8NODxs2zK2tx+8FBwNrZsOG Da1jx45u+ddff+2G/IMAAggggAACCCAQPwLr1q1znalRo0ZEnTpw4IANHjzY1f3zn/8cCAbWjLJl y1r37t3dMj3OOD093Y3zDwIIIIAAAggggAACx0Jg5cqVbrO6kS246OJoSkqKy+rrb+SPJIg3uI3g cbXh1w8eD66T2bieptapUyf78MMPbcKECeaDfTOr6+dVqVLFatWq5SZXrVrlZzNEAAEEEEAAAQQQ QAABBBBAAAEEEEAAAQQQKKQCCgZWiUmG4GXLlpkeTZdVpo20tDS3sQ0bNrgh/+RNYNOmTS4T87x5 82zhwoXux4bGjRvbHXfcYbVr18608e+//9769+9vP/30k23fvj3waG8FcSuzc2Zl5MiR7pGFCxYs MAUI6QcJbSO7Eu12FFCkrNLffPONzZ8/34oVK2b169e3m2++2fQIxKxKbvqWVVvML9wC+/fvd+89 /QioGxo2btxoCozT40KLFi1q5cqVsxNPPNGKFy8eAqX3q9bVsuOOOy5kmd7X3333nZt32mmnuXZC KjCBAAIIxJmAzxBcvXr1iHqmzMA6X5YqVcpat26dYZ0LL7zQFNigdvX9r1q1ahnqxOMM/ibE41Gh TwgggAACCCCAQN4E9u7d6xrQ/++Di4J3W7Vq5f7PXqZMGXdNoHLlysFVLJrrVsrSq2sEKieccILV rFkzpK0XXnjBdA31gQcecNfZtFAXaKdPn+6uq4ZUjmBC+6Pv5X7/IliFKggggAACCCCAAAIIIIAA AggggAACCCCAAAJJLKBkFTEJCB46dGi2TD4wzl8Uz7YyC7MVmDVrlvXo0cPWr1/v6unHC2U6mTNn jn366af27rvvukcNBjeigNuHH37YdMAV9KgAYK0zdepU9yjvTz75xIIfaah6Tz/9tL3zzjuBZvQD g36gGD16dOAxioGFv45Eux0FXSqD4OzZs10L6oMedfjDDz+4QOSePXtat27dQjaT276FNMIEAkEC ylzpA+EU2Lto0SK3VD/K6f2mAHoFs7Vp08YFt/lVFQinH9384zz9fA2D29S4AospCCCAQDwL+O8V PiD44MGD7vxXsWLFTLvtz5vKTJbZOU7BwFpX50/9vU+UgODg8zd/EzI99MxEAAEEEEAAAQSSRuDS Sy81vVQUzPvZZ5+F7Fu0163+7//+L7D+448/HhjXyNatW+21115z83TDvW6E90VJFigIIIAAAggg gAACCCCAAAIIIIAAAggggAACCORFQHFuindLyUsjkay7Z88emzJliqvaoUOHSFahThYCCj687bbb XDBw586dneuMGTNsxIgR1rZtW9u3b5/de++9LojRN6HA38cee8zNU4Ct6isbr7IF16lTx1asWGF9 +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 8qbs3hMmTHCZhwkIDhdiGgEEEEAAAQQQQAABBBBAAAEEEEAAAQQQQAABBBBAAAEEEEAAAQQQiI2A f+p6Smyay7qVokWL2g033OAqjBs3LuuKLMlRYOHChda9e3fbsGGD9ezZ02bOnGmzZs2y8ePH29ix Y61GjRquDX9wfYMK/n3ooYfsq6++sgEDBtitt95q1atXtzFjxrhjoyBhXypVquRGleGZgkAyCcTz 56ew983fRMLjWJPpE8e+JIrA+++/b999950L7NV3hM6dO4e8dAOSyssvv+zma6hSq1YtN1QgsX9C gZsR9I9/0oBvI2gRowgggAACCCCAAAIIIIAAAggggAACCCCAAAIIIIAAAggggAACCCCAAAIxEvBP vYtJQLCCSRQgsmjRoky7V6VKFTf/p59+ynQ5MyMTGDFihClQV1mXu3XrFsjEHNnaZgrObtmypfXp 08cFECvoR4E8yh7sswrXqVPHNbdu3Trz2f8ibZ96CMSzQDx/fgp73+rWreveOitXrozntxB9QyAp BRYsWOD2S98Hpk6dmuG1Z88et/yHH35wy77//ns3racT+GD+ZcuWuXnh/2zcuNHNql27dvgiphFA AAEEEEAAAQQQSFgBrpcl7KGj4wgggAACCCCAAAIIIIAAAggggAACCCCAQNIK+CSyMQkInjJlir3y yiv2xRdfZAqm7JcqJ510UqbLmRmZwJIlS1zF4sWLZ1hh8+bNtn379gzzlVFYQcBvv/12yLKUlBTr 2rWrm6eAndWrV7txBe0owGffvn02fPjwkHU0ocCgnTt3ZpjPDATiXSCePz+FvW+nn366e/vMmDHD Vq1aleGt5IMKMyxgBgII5Fmgb9++Nn/+/CxfPmBfN36p3quvvhrYZps2bdz4oEGDAvP8iG5g+vrr r93kiSee6GczRAABBBBAAAEEEEAgYQVKlizp+r5169YM+7B3794M85iBAAIIIIAAAggggAACCCCA AAIIIIAAAggggEBBCSggWElhYxIQfMEFF7h+9+/f33zwr9+RFStWmOarXHLJJX42w1wINGjQwK01 dOjQQACvZqxdu9Y9xts/snvLli2B1ps1a2YbNmywN954w37++efAfI0MGzbMTZcuXdpq1KjhxosV K2a33367G1fm4OCszsqAcvfdd5sPzvNZhV1l/kEgzgXi+fNT2PvWpEkT098RnWN69eplO3bsCLyb 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 mGOORo/b/t0I9Mf5tddeS/PNN1+vQobPP/98mjRpUlpggQXSkksu2atrOWXKlPTYY4/l8HOEGeef f/5ujr7rxfEiff3113u137vvvpueeOKJFGNG1ddFF120605rlr733ntp4sSJ6W9/+1t1HyHtGqBh OjnbbLOllVdeOZ9d3Jfa2Z566qn08MMPpwUXXDCtvvrq1aHrly+00ELpE5/4RIrX6AMPPFDdzgQB AgTaLRAVy6ONHTu211+giM8XfX3Pb/d5FeN5TygkPBMgQIAAAQIEhq+Az3zD99o6MwIECBAgQIAA AQIECBAgQIAAAQIECBCYIVDkHlsaCI4A6aabbpoirLnzzjunI444gn8LBPriHOHsm266KV166aXp 97//fbrnnntyyKerw4pA7sUXX5xOPvnk9Oqrr1Y3GT16dNpuu+3S/vvv32XgJ47nu9/9bu6/utP0 iQg4HnXUUWmllVaqXdxp+umnn87Hd9lll6VNNtkkHXzwwZ22KRY888wzeaw4pzjeoi2zzDLp0EMP Teuvv36xqPocoeEf/ehH6de//nUOqxcrolpsjLXZZpsVizwPQ4FSqZQicDuYW3x5Ih7vvPPOYD5M x0aAwDAX+O///u/8Xh+nefrpp6fPfvaz3Z5xfIHnqquuyu/f8X4c7+FDoXlPGApXyTESIECAAAEC BBoT8JmvMT97EyBAgAABAgQIECBAgAABAgQIECBAgMDQEIi8RssCwdF5BDIjDKy1TqC3zhMmTMgh nSuuuCJXxO3NER1yyCHpkksuSaNGjUobbbRRWnbZZdMLL7yQrr322nTuueemv/zlL7nPCAgXLSru br755ikqFi+33HJp7bXXTq+88kq68cYb091335222mqrFAGjWFfbYvvoN4LKd91110zh3trtaqcf f/zx9MUvfjGPtdRSS6W11lorh5vvuOOO9OCDD6bdd9+9U4Bp6tSpOcz80EMP5SqtG2+8ca54+Lvf /S4999xzab/99ktvvfVW2mabbWqHMk2AAAECBEaUQFTPjy/39NQ++OCDdPvtt6ff/OY3Kd5Ho6p5 tKIKe0/7WkeAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAcgciRRpXgD5Oczem3 2stFF12U7rzzzur8SJ8I8Fa03jifccYZ6YQTTsjDx88krrnmmrO8NlFxN8LAUaX0ggsuSKusskr1 8Pfcc8+0xRZbpAceeCBX2d1ll12q6w444IAc0I2g7oknnpjDxLEygrj77LNPuvnmm9ORRx6Zzj// /Oo+YbPGGmvk/WLhkksumdc99dRT1W3qJ8rlcjrwwAPzPl/4whfyWHFu0WJdhNHj+A877LC04YYb Vo/jJz/5SYow8Ec/+tFc/Xi++ebL+0Tl4qh++IMf/CAdd9xxubL13HPPndf5hwABAgQIjDSBCANH KLintscee6RbbrklbxLvpyussEK6//77e9rFOgIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAgSYLRBg4cpilJvebu4sqst///vdTBCrXW2+9Vgyhz+kCvXWO6rv//M//nCL0GiHtuDZF ixdCVy2q+EbbaaedZgoDx7Ko7rvtttvGZPrzn/+cn+Of+Lnwe+65J88ffPDB1RBuLBgzZkwOEcd0 bBNVBWtbVBnebrvtUgScIzS82mqr1a7uND1p0qR07733ptlnnz2fVxEGjg3jpyCjunGcW4SZnnji ier+RXBp3333TUUYOFbGtlEVOPadMmVKevjhh6v7mCBAgAABAiNJ4Pe//32u5h+fHYov6XT1eeH9 99/PX7o57bTT8ueLHXfcMTN1te1I8nOuBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AIF2CrS0QnBUgH3zzTfzT00/+OCD7TyvETVWb5333nvv9M1vfrNqE9dmVm3ixIk5xPuJT3yiy03H jx+fl7/00kvV9RHyPfroo1OEexdeeOHq8mJirbXWypPxk+KvvPJKWmSRRfJ8BIciqByh4d62xx57 LG8flX5rg73F/rFs/vnnz4HgOMYIMUf78pe/nKZNm5b+3//7f8Wm1ec45tjukUceSZMnT64uNzG8 BSLQFvepCINHJeyXX345Pf/88zngPmrUqDTvvPPmitIRPq9tsU/sG6/B+mrS8RqLCtrRVl555ZnC 8bV9mCZAgMBgE3jrrbfS4Ycfnt/Ljz/++PS1r32t20P8+c9/3qf37m47GkQrvCcMoovhUAgQIECA AAECLRLwma9FsLolQIAAAQIECBAgQIAAAQIECBAgQIAAgQETKIq3jW72EVxzzTXpd7/7XVp99dXT DjvskA477LBmD6G/6QJ9ce5L0LbAvfzyy4vJLp+LsGOEIYu24IIL5sBtMV///OSTT+ZFsU8RBi62 6esxbrTRRmnChAnF7p2en3vuuRwGjhf6sssuW10fVYi7axFUfvbZZ3MwdM011+xuM8uHmUC5XE4v vvhiPqsI9kbYPFq8duKbE2+88UaKUPnaa6+dA3J55fR/Ijg8derUavXMYnk81/YZ0xEs1ggQIDAU BE488cT8pZgIAn/sYx/r8ZD7+t7dY2eDZGXt/dt7wiC5KA6DAAECBAgQINBkAZ/5mgyqOwIECBAg QIAAAQIECBAgQIAAAQIECBAYcIHIuUVraiD4tddeyxVio5JmVJUrUscDfrbD7AAG2vndd99Nt956 a1bdYosteqUb4d2jjjoqb7vVVlv1ap9GNrr++uvz7lGVeNFFF51lV1ER9pRTTklTpkxJ66+/fpcV jmfZiQ2GvECEgaNK9Lhx43L4N4LCUTE6gr+TJk2aKVw+5E/WCRAgQKBO4E9/+lM677zz0tJLL52+ /vWv160debPeE0beNXfGBAgQIECAwMgT8Jlv5F1zZ0yAAAECBAgQIECAAAECBAgQIECAAIHhKFBk dZsaCI4QcFTN/OY3vyk418JXzUA7n3TSSemFF15I6623XlpttdW6PdPvf//76c0330x33nlnmjhx Yg5YHnHEEWnnnXfudp9mrHjmmWfSj370o1zpd//99++2ywsvvDBXGX7ooYfSPffck6vBfulLX0rH HXdct/tYMbwFll9++bTUUktVT3LxxRdPr776aq6W+frrr1eXmyBAgMBwE4gq+Yccckg+rXgfHI7V f/t6zbwn9FXM9gQIECBAgACBoSfgM9/Qu2aOmAABAgQIECBAgAABAgQIECBAgAABAgQ6C8Sv40Vr WiA4KsZeeumlubrmXnvt1XlES5oiMNDOl112WTrnnHPSfPPNl4455pgez+mSSy5JUc24aFF5deON Ny5mW/L89ttvpz333DMHkXffffe06qqrdjvOH/7wh3TddddV18dPg2+77bZCUFWRkTexxBJLdDrp hRZaKAeC33nnnU7rLCBAgMBwETj11FPTE088kbbbbru0xhprDJfTaug8vCc0xGdnAgQIECBAgMCQ EPCZb0hcJgdJgAABAgQIECBAgAABAgQIECBAgAABArMQiArB8SjNYrterY4Q5uGHH54rsn7ve99L s802W6/2s1HfBAba+Y477sjVA0ePHp0iOLTYYov1eAJRgffKK69MZ555Ztpll13S448/nj73uc+l a665psf9+rvygw8+SPvss096+OGH09prr52+/e1v99jVYYcdlq6++ur061//Oh188MFpjjnmSDvs sEM64YQTetzPypElEK/3aMW3KEbW2TtbAgRGgkBUyj/jjDPSIosskg466KCRcMr9PkfvCf2msyMB AgQIECBAYMgI+Mw3ZC6VAyVAgAABAgQIECBAgAABAgQIECBAgACBOoGmVAg+5ZRT0jPPPJN23nnn Hiuy1o1tto8CA+k8YcKEFJWf33///XT88cfnwO2sDj8qAkdbccUV0wYbbJArDkYfsf+mm246q937 tL5SqeQQU1T9jZ97/M///M80atSoHvtYfPHFq+vXWmutfEybbbZZDkVtv/32ackll6yuN0GAAAEC BIajQHyZJr4UM23atHTUUUeleeeddziepnMiQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECAxbgagOHK3hQPADDzyQfvWrX+XO7rvvvvSVr3wlTxf/PPbYY3ny+uuvTzE9duzY9NOf/rRY 7bmXAgPp/PTTT6ddd901TZkyJR144IFp22237eVRz7zZRhttlMaNG5cmT56cImAcQeFmtZNOOild dtll6SMf+Uj65S9/2a9AUwSEP/OZz6TLL7883XDDDfmcm3V8+iFAgAABAoNRID7DxWeMqIJ23nnn 5Uftcb7wwgt59sc//nE699xz02qrrZa+8Y1v1G5imgABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAYAAFyuVyiqKqDQeCH3nkkRSdRbvnnnu6PaUIgcZD5bluiXpcMVDOr776avrqV7+a XnrppbT77rvnKsHdHehf//rXdO2116aFFloo7bjjjl1utvDCC6fnn38+Pfroo00LBJ9zzjnpZz/7 WR43wsDxk+ddtbfffjudeeaZedWee+6Z5phjjk6bxfFFK4LsnTawgECdQFTX1AgQIDBUBeILOtGi QvDtt9/e7Wk8/PDDeV18sUvrXsB7Qvc21hAgQIAAAQIEhouAz3zD5Uo6DwIECBAgQIAAAQIECBAg QIAAAQIECAwfgVKplE+m4UDwF7/4xbTZZpt1K3PEEUekSy+9NAdEDz300G63s6JngYFwjgDtbrvt liZOnJi23HLL/JPiPR3le++9l37yk5/kKtBbb711mn322Wfa/P333899xcLllltupnX9nbn66qvT sccem+aZZ5509tlnp/Hjx3fb1ZxzzpnOOuus9NZbb6VPfepTucph/cYRvI7WrOOr79/88BGIQPnU qVPTa6+9loogeXF2sVwjQIDAUBA4/vjj0zHHHNPtoW6yySbpqaeeSlEheMMNN0yjRo3qdtuRvMJ7 wki++s6dAAECBAgQGCkCPvONlCvtPAkQIECAAAECBAgQIECAAAECBAgQIDA0BaJC8IxYcAPHH8GQ +A/i3T3iJ6ijxXOxTQPDjdhd2+0c1U722WefdN9996WNNtoofe9730sdHR09+q+wwgpp3LhxKYLE ES6qrZgSVaRPPvnk9Oabb+bQ7vLLL99jX71Zeccdd6RvfetbacyYMbny74orrtjjbnH86667bt7m uOOOy0HO2h1uuOGG9Ic//CEHmT/96U/XrjJNoJPA3HPPnZdF9ewIwxctpu+9995i1jMBAgQGtcBs s81W/XxWfE6rfS7e++NLPrE8ttc6C3hP6GxiCQECBAgQIEBguAn4zDfcrqjzIUCAAAECBAgQIECA AAECBAgQIECAwPASiEBwwxWChxeJsykETj/99ByOjfnnnnsubbfddsWqTs8bb7xx2mOPPXJIKCoE 77DDDun8889P//u//5s++clPpihHfffdd6dHH300b/PDH/4wB8Q7ddSHBRE63muvvVJUHY7qwCee eGKPe5955plp/vnnz0HlOJYIbEalw6gUHMvj2O68887cx0EHHZSWXXbZHvuzksBSSy2V/zamTJmS brnllrTQQguld999N8V8UYKdEgECBAiMDAHvCSPjOjtLAgQIECBAYGQL+Mw3sq+/sydAgAABAgQI ECBAgAABAgQIECBAgMBgFsjVgafnNAWC23SVigp7bRqu4WFeeeWVah8PPvhgdbqriagMXLTVVlst XXXVVbmi8G233ZYmTpyYV0WF6PXWWy8ddthhaZlllik27/fz1KlTc/AyOnj11Vfzo6fOIjgcLcK/ V199df7p84svvjhdeeWV1d3iPA4++OCkOnCVxEQPAnPNNVdaddVV04QJE3IQOCoFx995vMZWWmml FK9/jQABAgRGhoD3hJFxnZ0lAQIECBAgMLIFfOYb2dff2RMgQIAAAQIECBAgQIAAAQIECBAgQGAw CxT51I4nJj5biQNdevxig/l4h+yxPTnpuXzsC8w3NlcNHTVqVH6OCqLFo3oxpocJoxXzeWYI/zNt 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 AAECBAgQIECAAAECBAgQIECAAAECBAgQINA7gSKT2ikQHLsXK2O6p9Bv7Xaxrda9AKvubawhQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDou0C5XM47dRkIru2uqyBr TyHh2n1H6nRXZiPVwnkTIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAi0RiAyq/GYZSC4q+EFXrtSsYwAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIBA+wVK7R/SiAQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQINCpQFPntV4XgRge3PwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECjQmUy+VUqVSSQHBjjvYmQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgMCACpVIpjzvj3wE5BIMSIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQINCIQFQIFghuRNC+BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAZQQCB4APENTYAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQKARgRwGLpVUCG4E0b4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIEBkqgo6MjD10aqAMwLgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECjQmUy2UVghsjtDcBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgACBgRMolUoCwQPHb2QCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAEC/ReI6sCVSiWN7n8X9iRAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAYKAEojpwtBn/DtRRGJcAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgX4JFBWCBYL7xWcnAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgMrEBWCK5WKCsEDexmMToAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKB/AjkMPD0UrEJw//zsRYAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGBABTo6OvL4AsEDehkMToAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKB/AuVyOe8oENw/P3sRIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQGFABFYIHlN/gBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBBoTiEBwpVJJKgQ35mhvAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgMmEKFggeAB4zcwAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgcYFBIIbN9QDAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgbYLVCqVPKZAcNvpDUiAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgcYGOjo7ciUBw45Z6IECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIDAgAlElWCB4QOgNSoAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQKAxgQgDR5VggeDGHO1NgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYEAEIgysQvCA0BuUAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQOMCKgQ3bqgHAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgMmEBWCo40esCMwMAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC/RaICsHRBIL7TWhHAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgMnoELwwNkbmQABAgQIECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEDDAuVyOfehQnDDlDogQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0H6BqBAcj1L7hzYiAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQLNEhAIbpakfggQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0USCqA0cb3cYxDUWAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQJMEyuVyqlQqAsFN8tQNAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgbYKlEqlPN6Mf9s6tMEI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGiGQFQIFghuhqQ+ CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECAyAgEDwAKAbkgAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgEAzBHIYuFRSIbgZmPog QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0G6Bjo6OPGSp3QMb jwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB5giUy2UVgptD qRcCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC7RcolUoCwe1n NyIBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBxgWiOnClUkmj G+9KDwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItFsgqgNH m/Fvu0c3HgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECDQkU FYIFghtitDMBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBgRGI CsGVSkWF4IHhNyoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB xgRyGHh6KFiF4MYc7U2AAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IEBgQAQ6OjryuALBA8JvUAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQKNCZTL5dyBQHBjjvYmQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgMCACKgQPCLtBCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECDRHIALBlUolqRDcHE+9ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIEGi7QISCBYLbzm5AAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAs0TEAhunqWeCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECLRNoFKp5LEEgttGbiACBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECzRPo6OjInQkEN89UTwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgTaKhBVggWC20puMAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQLNEYgwcFQJFghujqdeCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECLRVIMLAKgS3ldxgBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAAECBJonoEJw8yz1RIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQKDtAlEhONroto9sQAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIEGhaICsHRBIIbptQBAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAgfYLqBDcfnMjEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIEGiaQLlczn2pENw0Uh0RIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQaJ9AVAiOR6l9QxqJAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAIFmCwgEN1tUfwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgTaIBDVgaONbsNYhiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAoMkC5XI5VSoVgeAmu+qOAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAQFsESqVSHmfGv20Z0iAECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECDRTICoECwQ3U1RfBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBNooIBDcRmxDESBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIEGimQA4Dl0oqBDcTVV8ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIE2iXQ0dGRhyq1a0DjECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECDQXIFyuaxCcHNJ9UaAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECgfQKlUkkguH3cRiJAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECDQPIGoDlypVNLo5nWpJwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIE2iUQ1YGjzfi3XaMahwABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgACBpggUFYIFgpvCqRMCBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAEC7RWICsGVSkWF4PayG40AAQIECBAgQIAAAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAcwRyGHh6KFiF4OZ46oUAAQIECBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAWwU6OjryeALBbWU3GAECBAgQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHmCJTL5dyRQHBzPPVCgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAoK0CKgS3ldtgBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBJorEIHgSqWSVAhurqveCBAgQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECLRNIELBAsFt4zYQAQIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgeYLCAQ331SPBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBFouUKlU8hgCwS2nNgABAgQIECBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB5gt0dHTkTgWCm2+rRwIECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQJtEYgqwQLBbaE2CAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIHmCkQYOKoECwQ311VvBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBNoiEGFgFYLbQm0QAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAs0XUCG4+aZ6JECAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINA2gagQHG1020Y0EAECBAgQIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECTROICsHRBIKbRqojAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAu0TUCG4fdZGIkCAAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINB0gXK5nPtUIbjptDokQIAAAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg0HqBqBAcj1LrhzICAQIECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQKtEhAIbpWsfgkQIECAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAi0UCCqA0cb3cIxdE2AAAECBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAQIsEyuVyqlQqAsEt8tUtAQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgZYKlEql3P+Mf1s6lM4JECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEGiFQFQIFghuhaw+CRAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECLRBQCC4DciGIECAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQINAKgRwGLpVUCG4Frj4JECBA gAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItFqgo6MjD1Fq9UD6J0CA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECgNQLlclmF4NbQ6pUA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA6wVKpZJAcOuZjUCA AAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg+QJRHbhSqaTRze9a jwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQItFogqgNHm/Fv q0fTPwECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECTRUoKgQL BDeVVWcECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE2iMQFYIr lYoKwe3hNgoBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB5grk MPD0ULAKwc111RsBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgACB tgh0dHTkcQSC28JtEAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQLNFSiXy7lDgeDmuuqNAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAQFsEVAhuC7NBCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CLRGIALBlUolqRDcGl+9EiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIEGi5QISCBYJbzmwAAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAq0TEAhuna2eCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CLRMoFKp5L4FgltGrGMCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECrRPo6OjInQsEt85YzwQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgRaKhBVggWCW0qscwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQKtEYgwcFQJFghuja9eCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIECLRUIMLAKgS3lFjnBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBFonoEJw62z1TIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQKDlAlEhONrolo9kAAIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg QIAAAQIEmi4QFYKjCQQ3nVaHBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECBFovoEJw642NQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQKBlAuVyOfetQnDLiHVMgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAoHUCUSE4HqXWDaFnAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBAgAABAgRaLSAQ3Gph/RMgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECBBogUBUB442uuj7yUnPFZOeCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECBAY5ALjPzIuVSqVDwPBg/x4HR4BAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgAABAjUCpVIpz1UrBC89frGa1SYJEBjpAkXVcPeGkf5KcP4ECAxGAffo wXhVHBMBAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAYGAEokLwjFjwwIxvVAIECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEGhAQCG4Az64ECBAgQIAA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEBlIgh4FLJRWCB/IiGJsAAQIE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBAfwU6OjryrqX+dmA/AgQI ECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQGVqBcLqsQPLCXwOgE CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE+i9QKpUEgvvPZ08C BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECAycQ1YErlUoaPXCH YGQCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBPorENWBo834 t7+92I8AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgQERKCoE CwQPCL9BCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDQmEBWC K5WKCsGNMdqbAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwMAI 5DDw9FCwCsED429UAgQIEPwm5qYAADa9SURBVCBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIECBAgAABAg0JdHR05P1HN9SLnQkQmEkgkvbPPvtsfiy00EJpqaWWSqNGjZppGzMECBAg QIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgWYIlMvlVFIhuBmUKU2ePDkt u+yy+XHeeec1p1O9DDmBK6+8Mq255ppp3XXXTTvssEPaeOON03333TfkzmOwHfCrr76annrqqfT+ ++8PtkNzPENAYP3118/35v32228IHG3/DjHe0J9++un03nvv9auDqVOn5v2jn2a3559/Pr355pv9 6rbR8+pp0Ndffz298MILPW3S7bpWHle3g1pBgAABAgQIECBAgAABAgQIECBAgAABAgQIECBAgAAB AgQIEBjEAlFI88UXX0zPPfdciulWt2ZmNqdMmZKzMx988EG/Dvull15KkZFpx3l3d4BtqxB80003 pUMOOaS745jl8htvvDHNPffcs9zOBiNTIAJw2267bb6RhMB1112X5p9//rZjXHbZZemAAw6ojjt2 7NhcGXjeeeetLuvPxOGHH55+97vf5V2PP/749JnPfKY/3Qy5fSJIfdZZZ6W4f7z99tv5+OMbDOPH j0/bb799vubuC0PusjrgJgtceOGF6ZJLLkmPPPJIeuedd9Lo0aPT0ksvne8T+++/f57vbsgI2J98 8snplltuSU888USKDzRzzjlnWmGFFdKXv/zl9KUvfam7XWe5/M9//nP68Y9/nCZMmJD+9re/5e2X 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 NfoLSZbjkSkpO3Xq1KrqNtl24oknpm2Y+rfddtsm+9lw44031jI0tzLwKyvLNiJ3N+oX+5BGI97x jnfUym+11VaxebP5nDNnTuoLQuFpp51WE37LHWQijckYoXX69Ok9inD/b7PNNmnbn//85x774gdS e0RkQo3fM2fOTF85lmzFVYEw/6UvfalA2G43RowYkcYrxzOeqBPRu964q3cespnG6hRWmlBPOZjT FixYkOaJfMEDmZlDzGQOrco8TX1XXnllqpKs2vUWZZTP2e3ftON3v/tdZbW0L+bl8v1QecCLG5kT Y4EFWc2r+s6xLGrgoV2OeKawveq50mn95fPFb4TvWKhBJvby/Us5pHq281wr8/jQhz6UsiGzn2dq OdhOvQRza7P/WeG+OuKII9Jxd9xxRy37edrw33+QbkNUPuqoo/JdSWTvpF89Kiv9iDHNeA3xNy/C 9aPNBH3geRjRKe+ox08JSEACEpCABCQgAQlIQAISkIAEJCABCUhAAhKQgAQkIAEJSEACEpCABCSw ORAgYdwpp5ySuvLXv/610quJfiID42MSiMS5t9QNLzLO0+onruWFF16YDvvUpz5VfPzjH2+pCrwx XBPcSJJ97r333i0d3xeFcadIfPo/66UvztKlOs8888wkym3YsKE48sgjk1kd8heZas8666zilltu SWe75JJLinJGRHZEFkQyQVaJvW9/+9vT8bxSnOyZ3KxkdrzvvvuS+HfZZZel/fzz7LPP1r739Rey XZ5wwgnpND/84Q+LefPm1eQzGCDIIVbR1vHjx9du1HK7QjKkHBHyb14uMq3++9//TpvjmLwM3yOL KGLXpz/96dSGkKhhS9ZbMr0SSKx5IFbT3jzjaL6/v78feuihtYyqn/vc5woYhxjI/fa9730vMadd CLplia2/27s5n++AAw6oyYtky2WsM/mSxZRrsmLFiuJb3/pWcdxxx6UxgOyIyJk/KILP5MmT01fS 0pPxmsmO8UIW8a9//evpL8qWP48//viaBDl37twkHz///POpGPf5/fffXxx77LEFcj0PBOpuNyK7 a9xziOyxOKGVOmknDxjmL+RHMqZHPPnkk2mckgkbVgihEfw+99xz00/YzJo1qyZssnHNmjXF0Ucf nT6RlRFjq3hHfX35CeeTTz45PUxDekYe//KXv1z84Ac/SKdmzmIRQTOBOM58SrCoAhE0ssyzjYzs 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 --0000000000001157a805da550078-- --0000000000001157a905da550079 Content-Type: application/octet-stream; name="RM6131_v2.patch" Content-Disposition: attachment; filename="RM6131_v2.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_l0tjc8yv1 ZGlmZiAtLWdpdCBhL3dlYi9wYWNrYWdlLmpzb24gYi93ZWIvcGFja2FnZS5qc29uCmluZGV4IGU0 YTI3YmQxMC4uMzk1NjFjZGQ0IDEwMDY0NAotLS0gYS93ZWIvcGFja2FnZS5qc29uCisrKyBiL3dl Yi9wYWNrYWdlLmpzb24KQEAgLTE1Miw4ICsxNTIsMTAgQEAKICAgICAicmVhY3QiOiAiXjE3LjAu MSIsCiAgICAgInJlYWN0LWFzcGVuIjogIl4xLjEuMCIsCiAgICAgInJlYWN0LWNoZWNrYm94LXRy ZWUiOiAiXjEuNy4yIiwKKyAgICAicmVhY3QtZGF0YS1ncmlkIjogIl43LjAuMC1iZXRhLjExIiwK ICAgICAicmVhY3QtZG9tIjogIl4xNy4wLjEiLAogICAgICJyZWFjdC1kcmFnZ2FibGUiOiAiXjQu NC40IiwKKyAgICAicmVhY3QtbGVhZmxldCI6ICJeMy4yLjIiLAogICAgICJyZWFjdC1zZWxlY3Qi OiAiXjQuMi4xIiwKICAgICAicmVhY3QtdGFibGUiOiAiXjcuNi4zIiwKICAgICAicmVhY3QtdGlt ZXItaG9vayI6ICJeMy4wLjUiLApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9fX2lu aXRfXy5weSBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvX19pbml0X18ucHkKaW5kZXggNTE3MjMyMjEw Li40YTdlMThlYjAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvX19pbml0X18ucHkK KysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9fX2luaXRfXy5weQpAQCAtNTQsNyArNTQsOCBAQCBm cm9tIHBnYWRtaW4udXRpbHMubWFzdGVyX3Bhc3N3b3JkIGltcG9ydCB2YWxpZGF0ZV9tYXN0ZXJf cGFzc3dvcmQsIFwKICAgICBzZXRfY3J5cHRfa2V5LCBwcm9jZXNzX21hc3RlcnBhc3NfZGlzYWJs ZWQKIGZyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQgVXNlcgogZnJvbSBwZ2FkbWluLnV0aWxzLmNv bnN0YW50cyBpbXBvcnQgTUlNRVRZUEVfQVBQX0pTLCBQR0FETUlOX05PREUsXAotICAgIElOVEVS TkFMLCBLRVJCRVJPUywgTERBUCwgUVRfREVGQVVMVF9QTEFDRUhPTERFUiwgT0FVVEgyLCBXRUJT RVJWRVIKKyAgICBJTlRFUk5BTCwgS0VSQkVST1MsIExEQVAsIFFUX0RFRkFVTFRfUExBQ0VIT0xE RVIsIE9BVVRIMiwgV0VCU0VSVkVSLFwKKyAgICBWV19FRFRfREVGQVVMVF9QTEFDRUhPTERFUgog ZnJvbSBwZ2FkbWluLmF1dGhlbnRpY2F0ZSBpbXBvcnQgQXV0aFNvdXJjZU1hbmFnZXIKIAogdHJ5 OgpAQCAtODU0LDYgKzg1NSw3IEBAIGRlZiB1dGlscygpOgogICAgICAgICAgICAgbG9nb3V0X3Vy bD1nZXRfbG9nb3V0X3VybCgpLAogICAgICAgICAgICAgcGxhdGZvcm09c3lzLnBsYXRmb3JtLAog ICAgICAgICAgICAgcXRfZGVmYXVsdF9wbGFjZWhvbGRlcj1RVF9ERUZBVUxUX1BMQUNFSE9MREVS LAorICAgICAgICAgICAgdndfZWR0X2RlZmF1bHRfcGxhY2Vob2xkZXI9VldfRURUX0RFRkFVTFRf UExBQ0VIT0xERVIsCiAgICAgICAgICAgICBlbmFibGVfcHNxbD1jb25maWcuRU5BQkxFX1BTUUwK ICAgICAgICAgKSwKICAgICAgICAgMjAwLCB7J0NvbnRlbnQtVHlwZSc6IE1JTUVUWVBFX0FQUF9K U30pCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9icm93c2VyL3JlZ2lzdGVyX2Jyb3dzZXJfcHJl ZmVyZW5jZXMucHkgYi93ZWIvcGdhZG1pbi9icm93c2VyL3JlZ2lzdGVyX2Jyb3dzZXJfcHJlZmVy ZW5jZXMucHkKaW5kZXggYWY3ZGM0ZjJjLi43ZjcwNGExZTIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL2Jyb3dzZXIvcmVnaXN0ZXJfYnJvd3Nlcl9wcmVmZXJlbmNlcy5weQorKysgYi93ZWIvcGdh ZG1pbi9icm93c2VyL3JlZ2lzdGVyX2Jyb3dzZXJfcHJlZmVyZW5jZXMucHkKQEAgLTEwLDcgKzEw LDcgQEAgaW1wb3J0IHN5cwogZnJvbSBmbGFza19iYWJlbCBpbXBvcnQgZ2V0dGV4dAogZnJvbSBw Z2FkbWluLnV0aWxzLmNvbnN0YW50cyBpbXBvcnQgUFJFRl9MQUJFTF9ESVNQTEFZLFwKICAgICBQ UkVGX0xBQkVMX0tFWUJPQVJEX1NIT1JUQ1VUUywgUFJFRl9MQUJFTF9UQUJTX1NFVFRJTkdTLCBc Ci0gICAgUFJFRl9MQUJFTF9PUFRJT05TLCBRVF9ERUZBVUxUX1BMQUNFSE9MREVSCisgICAgUFJF Rl9MQUJFTF9PUFRJT05TLCBRVF9ERUZBVUxUX1BMQUNFSE9MREVSLCBWV19FRFRfREVGQVVMVF9Q TEFDRUhPTERFUgogZnJvbSBmbGFza19zZWN1cml0eSBpbXBvcnQgY3VycmVudF91c2VyCiBpbXBv cnQgY29uZmlnCiAKQEAgLTQ4Myw3ICs0ODMsNyBAQCBkZWYgcmVnaXN0ZXJfYnJvd3Nlcl9wcmVm ZXJlbmNlcyhzZWxmKToKICAgICBzZWxmLnZlX2VkdF90YWJfdGl0bGUgPSBzZWxmLnByZWZlcmVu Y2UucmVnaXN0ZXIoCiAgICAgICAgICd0YWJfc2V0dGluZ3MnLCAndndfZWR0X3RhYl90aXRsZV9w bGFjZWhvbGRlcicsCiAgICAgICAgIGdldHRleHQoIlZpZXcvRWRpdCBkYXRhIHRhYiB0aXRsZSIp LAotICAgICAgICAndGV4dCcsICclU0NIRU1BJS4lVEFCTEUlLyVEQVRBQkFTRSUvJVVTRVJOQU1F JUAlU0VSVkVSJScsCisgICAgICAgICd0ZXh0JywgVldfRURUX0RFRkFVTFRfUExBQ0VIT0xERVIs CiAgICAgICAgIGNhdGVnb3J5X2xhYmVsPVBSRUZfTEFCRUxfRElTUExBWSwKICAgICAgICAgaGVs cF9zdHI9Z2V0dGV4dCgKICAgICAgICAgICAgICdTdXBwb3J0ZWQgcGxhY2Vob2xkZXJzIGFyZSAl U0NIRU1BJSwgJVRBQkxFJSwgJURBVEFCQVNFJSwgJwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zdGF0aWMvanMvY29sbGVjdGlvbi5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3Rh dGljL2pzL2NvbGxlY3Rpb24uanMKaW5kZXggOWY5NDRmZjE5Li5iNDE4Njg4NmIgMTAwNjQ0Ci0t LSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL2NvbGxlY3Rpb24uanMKKysrIGIvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvY29sbGVjdGlvbi5qcwpAQCAtNTA3LDggKzUwNyw4 IEBAIGRlZmluZShbCiAgICAgICAgICk7CiAgICAgICB9LAogICAgICAgc2hvd19xdWVyeV90b29s OiBmdW5jdGlvbigpIHsKLSAgICAgICAgaWYocGdBZG1pbi5EYXRhR3JpZCkgewotICAgICAgICAg IHBnQWRtaW4uRGF0YUdyaWQuc2hvd19xdWVyeV90b29sKCcnLCBwZ0FkbWluLkJyb3dzZXIudHJl ZS5zZWxlY3RlZCgpKTsKKyAgICAgICAgaWYocGdBZG1pbi5Ub29scy5TUUxFZGl0b3IpIHsKKyAg ICAgICAgICBwZ0FkbWluLlRvb2xzLlNRTEVkaXRvci5zaG93UXVlcnlUb29sKCcnLCBwZ0FkbWlu LkJyb3dzZXIudHJlZS5zZWxlY3RlZCgpKTsKICAgICAgICAgfQogICAgICAgfSwKICAgICAgIHNo b3dfc2VhcmNoX29iamVjdHM6IGZ1bmN0aW9uKCkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v YnJvd3Nlci9zdGF0aWMvanMva2V5Ym9hcmQuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRp Yy9qcy9rZXlib2FyZC5qcwppbmRleCA5ODlmOGJiNWIuLjFhYTg4YzIzMSAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMva2V5Ym9hcmQuanMKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zdGF0aWMvanMva2V5Ym9hcmQuanMKQEAgLTI1Myw3ICsyNTMsNyBAQCBfLmV4 dGVuZChwZ0Jyb3dzZXIua2V5Ym9hcmROYXZpZ2F0aW9uLCB7CiAgICAgICByZXR1cm47CiAKICAg ICAvLyBDYWxsIGRhdGEgZ3JpZCBtZXRob2QgdG8gcmVuZGVyIHF1ZXJ5IHRvb2wKLSAgICBwZ0Fk bWluLkRhdGFHcmlkLnNob3dfcXVlcnlfdG9vbCgnJywgdHJlZS5pKTsKKyAgICBwZ0FkbWluLlRv b2xzLlNRTEVkaXRvci5zaG93UXVlcnlUb29sKCcnLCB0cmVlLmkpOwogICB9LAogICBiaW5kU3Vi TWVudVZpZXdEYXRhOiBmdW5jdGlvbigpIHsKICAgICBjb25zdCB0cmVlID0gdGhpcy5nZXRUcmVl RGV0YWlscygpOwpAQCAtMjYyLDcgKzI2Miw3IEBAIF8uZXh0ZW5kKHBnQnJvd3Nlci5rZXlib2Fy ZE5hdmlnYXRpb24sIHsKICAgICAgIHJldHVybjsKIAogICAgIC8vIENhbGwgZGF0YSBncmlkIG1l dGhvZCB0byByZW5kZXIgdmlldyBkYXRhCi0gICAgcGdBZG1pbi5EYXRhR3JpZC5zaG93X2RhdGFf Z3JpZCh7J21udWlkJzogMX0sIHRyZWUuaSk7CisgICAgcGdBZG1pbi5Ub29scy5TUUxFZGl0b3Iu c2hvd1ZpZXdEYXRhKHsnbW51aWQnOiAxfSwgdHJlZS5pKTsKICAgfSwKICAgYmluZFN1Yk1lbnVT ZWFyY2hPYmplY3RzOiBmdW5jdGlvbigpIHsKICAgICBjb25zdCB0cmVlID0gdGhpcy5nZXRUcmVl RGV0YWlscygpOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9k ZS5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzL25vZGUuanMKaW5kZXggOWU2ZDNk NTQzLi4yM2M3YTg2MjIgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pz L25vZGUuanMKKysrIGIvd2ViL3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvbm9kZS5qcwpAQCAt OTc1LDcgKzk3NSw3IEBAIGRlZmluZSgncGdhZG1pbi5icm93c2VyLm5vZGUnLCBbCiAgICAgICAg ICAgc3FsX3VybCA9ICdzcWwnOwogICAgICAgICB9CiAgICAgICAgIC8vIE9wZW4gZGF0YSBncmlk ICYgcGFzcyB0aGUgVVJMIGZvciBmZXRjaGluZwotICAgICAgICBwZ0FkbWluLkRhdGFHcmlkLnNo b3dfcXVlcnlfdG9vbCgKKyAgICAgICAgcGdBZG1pbi5Ub29scy5TUUxFZGl0b3Iuc2hvd1F1ZXJ5 VG9vbCgKICAgICAgICAgICBvYmouZ2VuZXJhdGVfdXJsKGksIHNxbF91cmwsIGQsIHRydWUpLAog ICAgICAgICAgIGksIHNjcmlwdFR5cGUKICAgICAgICAgKTsKQEAgLTEwMDEsNyArMTAwMSw3IEBA IGRlZmluZSgncGdhZG1pbi5icm93c2VyLm5vZGUnLCBbCiAgICAgICAgICAgfTsKICAgICAgICAg ICBwZ0Jyb3dzZXIuTm9kZS5jYWxsYmFja3Muc2hvd19zY3JpcHQoZGF0YSk7CiAgICAgICAgIH1l bHNlewotICAgICAgICAgIHBnQWRtaW4uRGF0YUdyaWQuc2hvd19xdWVyeV90b29sKCcnLCBpKTsK KyAgICAgICAgICBwZ0FkbWluLlRvb2xzLlNRTEVkaXRvci5zaG93UXVlcnlUb29sKCcnLCBpKTsK ICAgICAgICAgfQogICAgICAgfSwKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci9z dGF0aWMvanMvcHJlZmVyZW5jZXMuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy9w cmVmZXJlbmNlcy5qcwppbmRleCA2MDAwMjdhYzQuLjNmMWFhYjE2YiAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vYnJvd3Nlci9zdGF0aWMvanMvcHJlZmVyZW5jZXMuanMKKysrIGIvd2ViL3BnYWRt aW4vYnJvd3Nlci9zdGF0aWMvanMvcHJlZmVyZW5jZXMuanMKQEAgLTExMiw2ICsxMTIsMTAgQEAg Xy5leHRlbmQocGdCcm93c2VyLCB7CiAgICAgfSwgNTAwKTsKICAgfSwKIAorICB0cmlnZ2VyUHJl ZmVyZW5jZXNDaGFuZ2U6IGZ1bmN0aW9uKG1vZHVsZUNoYW5nZWQpIHsKKyAgICAkLmV2ZW50LnRy aWdnZXIoJ3ByZWZjaGFuZ2U6Jyttb2R1bGVDaGFuZ2VkKTsKKyAgfSwKKwogICByZWZsZWN0UHJl ZmVyZW5jZXM6IGZ1bmN0aW9uKG1vZHVsZSkgewogICAgIGxldCBvYmogPSB0aGlzOwogCkBAIC0x MzAsNyArMTM0LDEzIEBAIF8uZXh0ZW5kKHBnQnJvd3NlciwgewogICB9LAogCiAgIG9uUHJlZmVy ZW5jZXNDaGFuZ2U6IGZ1bmN0aW9uKG1vZHVsZSwgZXZlbnRIYW5kbGVyKSB7Ci0gICAgJChwZ1dp bmRvdykub24oJ3ByZWZjaGFuZ2U6Jyttb2R1bGUsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgbGV0 IGV2ZW50V2luZG93ID0gcGdXaW5kb3c7CisgICAgaWYgKHdpbmRvdy5sb2NhdGlvbiA9PT0gd2lu ZG93LnBhcmVudD8ubG9jYXRpb24gKSB7CisgICAgICAvLyBUaGUgcGFnZSBpcyBpbiBhIG5ldyB0 YWIKKyAgICAgIGV2ZW50V2luZG93ID0gd2luZG93OworICAgIH0KKworICAgICQoZXZlbnRXaW5k b3cpLm9uKCdwcmVmY2hhbmdlOicrbW9kdWxlLCBmdW5jdGlvbihldmVudCkgewogICAgICAgZXZl bnRIYW5kbGVyKGV2ZW50KTsKICAgICB9KTsKICAgfSwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc3RhdGljL2pzL3Rvb2xiYXIuanMgYi93ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRp Yy9qcy90b29sYmFyLmpzCmluZGV4IGI5NzE2NWYyZC4uZmM5MTUwMjZlIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9icm93c2VyL3N0YXRpYy9qcy90b29sYmFyLmpzCisrKyBiL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvc3RhdGljL2pzL3Rvb2xiYXIuanMKQEAgLTExMiwxMSArMTEyLDExIEBAIGV4cG9y dCBmdW5jdGlvbiBpbml0aWFsaXplVG9vbGJhcihwYW5lbCwgd2NEb2NrZXIpIHsKICAgLy8gTGlz dGVuIG9uIGJ1dHRvbiBjbGljayBldmVudC4KICAgcGFuZWwub24od2NEb2NrZXIuRVZFTlQuQlVU VE9OLCBmdW5jdGlvbihkYXRhKSB7CiAgICAgaWYgKCduYW1lJyBpbiBkYXRhICYmIGRhdGEubmFt ZSA9PT0gZ2V0dGV4dCgnUXVlcnkgVG9vbCcpKQotICAgICAgcGdBZG1pbi5EYXRhR3JpZC5zaG93 X3F1ZXJ5X3Rvb2woJycsIHBnQWRtaW4uQnJvd3Nlci50cmVlLnNlbGVjdGVkKCkpOworICAgICAg cGdBZG1pbi5Ub29scy5TUUxFZGl0b3Iuc2hvd1F1ZXJ5VG9vbCgnJywgcGdBZG1pbi5Ccm93c2Vy LnRyZWUuc2VsZWN0ZWQoKSk7CiAgICAgZWxzZSBpZiAoJ25hbWUnIGluIGRhdGEgJiYgZGF0YS5u YW1lID09PSBnZXR0ZXh0KCdWaWV3IERhdGEnKSkKLSAgICAgIHBnQWRtaW4uRGF0YUdyaWQuc2hv d19kYXRhX2dyaWQoe21udWlkOiAzfSwgcGdBZG1pbi5Ccm93c2VyLnRyZWUuc2VsZWN0ZWQoKSk7 CisgICAgICBwZ0FkbWluLlRvb2xzLlNRTEVkaXRvci5zaG93Vmlld0RhdGEoe21udWlkOiAzfSwg cGdBZG1pbi5Ccm93c2VyLnRyZWUuc2VsZWN0ZWQoKSk7CiAgICAgZWxzZSBpZiAoJ25hbWUnIGlu IGRhdGEgJiYgZGF0YS5uYW1lID09PSBnZXR0ZXh0KCdGaWx0ZXJlZCBSb3dzJykpCi0gICAgICBw Z0FkbWluLkRhdGFHcmlkLnNob3dfZmlsdGVyZWRfcm93KHttbnVpZDogNH0sIHBnQWRtaW4uQnJv d3Nlci50cmVlLnNlbGVjdGVkKCkpOworICAgICAgcGdBZG1pbi5Ub29scy5TUUxFZGl0b3Iuc2hv d19maWx0ZXJlZF9yb3coe21udWlkOiA0fSwgcGdBZG1pbi5Ccm93c2VyLnRyZWUuc2VsZWN0ZWQo KSk7CiAgICAgZWxzZSBpZiAoJ25hbWUnIGluIGRhdGEgJiYgZGF0YS5uYW1lID09PSBnZXR0ZXh0 KCdTZWFyY2ggb2JqZWN0cycpKQogICAgICAgcGdBZG1pbi5TZWFyY2hPYmplY3RzLnNob3dfc2Vh cmNoX29iamVjdHMoJycsIHBnQWRtaW4uQnJvd3Nlci50cmVlLnNlbGVjdGVkKCkpOwogICAgIGVs c2UgaWYgKCduYW1lJyBpbiBkYXRhICYmIGRhdGEubmFtZSA9PT0gZ2V0dGV4dCgnUFNRTCBUb29s JykpewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vYnJvd3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9q cy91dGlscy5qcyBiL3dlYi9wZ2FkbWluL2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIvanMvdXRp bHMuanMKaW5kZXggNmNlODdiZWMwLi42Yzk3MWU3YzYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L2Jyb3dzZXIvdGVtcGxhdGVzL2Jyb3dzZXIvanMvdXRpbHMuanMKKysrIGIvd2ViL3BnYWRtaW4v YnJvd3Nlci90ZW1wbGF0ZXMvYnJvd3Nlci9qcy91dGlscy5qcwpAQCAtNTYsNiArNTYsNyBAQCBk ZWZpbmUoJ3BnYWRtaW4uYnJvd3Nlci51dGlscycsCiAgIHBnQWRtaW5bJ2VuYWJsZV9wc3FsJ10g PSAgJ3t7ZW5hYmxlX3BzcWx9fScgPT0gJ1RydWUnOwogICBwZ0FkbWluWydwbGF0Zm9ybSddID0g ICd7e3BsYXRmb3JtfX0nOwogICBwZ0FkbWluWydxdF9kZWZhdWx0X3BsYWNlaG9sZGVyJ10gPSAn e3txdF9kZWZhdWx0X3BsYWNlaG9sZGVyfX0nCisgIHBnQWRtaW5bJ3Z3X2VkdF9kZWZhdWx0X3Bs YWNlaG9sZGVyJ10gPSAne3t2d19lZHRfZGVmYXVsdF9wbGFjZWhvbGRlcn19JwogCiAgIC8qIEdF VCBCaW5hcnkgUGF0aCBCcm93c2UgY29uZmlnICovCiAgIHBnQWRtaW5bJ2VuYWJsZV9iaW5hcnlf cGF0aF9icm93c2luZyddID0gJ3t7IGN1cnJlbnRfYXBwLmNvbmZpZy5nZXQoJ0VOQUJMRV9CSU5B UllfUEFUSF9CUk9XU0lORycpIH19JyA9PSAnVHJ1ZSc7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9taXNjL3N0YXRpYy9leHBsYWluL2pzL3N2Z19kb3dubG9hZGVyLmpzIGIvd2ViL3BnYWRtaW4v bWlzYy9zdGF0aWMvZXhwbGFpbi9qcy9zdmdfZG93bmxvYWRlci5qcwppbmRleCAxMGEzYjBkNGQu LmJmMTcyOGE4NCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vbWlzYy9zdGF0aWMvZXhwbGFpbi9q cy9zdmdfZG93bmxvYWRlci5qcworKysgYi93ZWIvcGdhZG1pbi9taXNjL3N0YXRpYy9leHBsYWlu L2pzL3N2Z19kb3dubG9hZGVyLmpzCkBAIC0xNCw3ICsxNCw3IEBAIGxldCBzdmdEb3dubG9hZGVy ID0gewogICB9LAogCiAgIGRvd25sb2FkU1ZHOiBmdW5jdGlvbihjb250ZW50LCBmaWxlTmFtZSkg IHsKLSAgICAvLyBTYWZhcmkgeGxpbmsgTlMgaXNzdWUgZml4CisgICAgLy8gU2FmYXJpIHhsaW5r IE5TIGlzc3VlIGZpeGJsb2JVUkwKICAgICBjb250ZW50ID0gY29udGVudC5yZXBsYWNlKC9OU1xk KzpocmVmL2dpLCAneGxpbms6aHJlZicpOwogCiAgICAgdmFyIHN2Z1VSTCA9IHRoaXMuYmxvYlVS TChjb250ZW50LCAnaW1hZ2Uvc3ZnK3htbCcpOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vcHJl ZmVyZW5jZXMvc3RhdGljL2pzL3ByZWZlcmVuY2VzLmpzIGIvd2ViL3BnYWRtaW4vcHJlZmVyZW5j ZXMvc3RhdGljL2pzL3ByZWZlcmVuY2VzLmpzCmluZGV4IGViZWYzMWNhZC4uOThhZjgyYjA0IDEw MDY0NAotLS0gYS93ZWIvcGdhZG1pbi9wcmVmZXJlbmNlcy9zdGF0aWMvanMvcHJlZmVyZW5jZXMu anMKKysrIGIvd2ViL3BnYWRtaW4vcHJlZmVyZW5jZXMvc3RhdGljL2pzL3ByZWZlcmVuY2VzLmpz CkBAIC0xMyw3ICsxMyw3IEBAIGRlZmluZSgncGdhZG1pbi5wcmVmZXJlbmNlcycsIFsKICAgJ3Nv dXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAnanF1ZXJ5JywgJ3VuZGVyc2NvcmUn LCAnYmFja2JvbmUnLAogICAncGdhZG1pbi5hbGVydGlmeWpzJywgJ3NvdXJjZXMvcGdhZG1pbics ICdwZ2FkbWluLmJhY2tmb3JtJywKICAgJ3BnYWRtaW4uYnJvd3NlcicsICdzb3VyY2VzL21vZGlm eV9hbmltYXRpb24nLAotICAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9v bCcsCisgICd0b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbCcsCiAgICdz b3VyY2VzL3RyZWUvcGdhZG1pbl90cmVlX3NhdmVfc3RhdGUnLAogXSwgZnVuY3Rpb24oCiAgIGdl dHRleHQsIHVybF9mb3IsICQsIF8sIEJhY2tib25lLCBBbGVydGlmeSwgcGdBZG1pbiwgQmFja2Zv cm0sIHBnQnJvd3NlciwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3NldHRpbmdzL19faW5pdF9f LnB5IGIvd2ViL3BnYWRtaW4vc2V0dGluZ3MvX19pbml0X18ucHkKaW5kZXggMzcxYjk1MWY4Li5m ODM0MTI4MDYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3NldHRpbmdzL19faW5pdF9fLnB5Cisr KyBiL3dlYi9wZ2FkbWluL3NldHRpbmdzL19faW5pdF9fLnB5CkBAIC0xMjIsNyArMTIyLDcgQEAg ZGVmIHN0b3JlKHNldHRpbmc9Tm9uZSwgdmFsdWU9Tm9uZSk6CiAgICAgICAgICAgICBzdG9yZV9z ZXR0aW5nKHNldHRpbmcsIHZhbHVlKQogICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAg ICAgc3VjY2VzcyA9IDAKLSAgICAgICAgZXJyb3Jtc2cgPSBlLm1lc3NhZ2UKKyAgICAgICAgZXJy b3Jtc2cgPSBzdHIoZSkKIAogICAgIHRyeToKICAgICAgICAgaW5mbyA9IHRyYWNlYmFjay5mb3Jt YXRfZXhjKCkKQEAgLTE0MSwxMiArMTQxLDIxIEBAIGRlZiByZXNldF9sYXlvdXQoKToKICAgICAi IiJSZXNldCBjb25maWd1cmF0aW9uIHNldHRpbmciIiIKIAogICAgIHRyeToKLSAgICAgICAgZGIu c2Vzc2lvbi5xdWVyeShTZXR0aW5nKSBcCi0gICAgICAgICAgICAuZmlsdGVyKFNldHRpbmcudXNl cl9pZCA9PSBjdXJyZW50X3VzZXIuaWQpXAotICAgICAgICAgICAgLmZpbHRlcigoU2V0dGluZy5z ZXR0aW5nID09ICdCcm93c2VyL0xheW91dCcpIHwKLSAgICAgICAgICAgICAgICAgICAgKFNldHRp bmcuc2V0dGluZyA9PSAnU1FMRWRpdG9yL0xheW91dCcpIHwKLSAgICAgICAgICAgICAgICAgICAg KFNldHRpbmcuc2V0dGluZyA9PSAnRGVidWdnZXIvTGF5b3V0JykpXAotICAgICAgICAgICAgLmRl bGV0ZSgpCisgICAgICAgIGlmIHJlcXVlc3QucGFyYW1zWydzZXR0aW5nJ10gaW4gWworICAgICAg ICAgICAgICAgICdCcm93c2VyL0xheW91dCcsICdTUUxFZGl0b3IvTGF5b3V0JywgJ0RlYnVnZ2Vy L0xheW91dCddOgorICAgICAgICAgICAgZGIuc2Vzc2lvbi5xdWVyeShTZXR0aW5nKSBcCisgICAg ICAgICAgICAgICAgLmZpbHRlcihTZXR0aW5nLnVzZXJfaWQgPT0gY3VycmVudF91c2VyLmlkKSBc CisgICAgICAgICAgICAgICAgLmZpbHRlcigoU2V0dGluZy5zZXR0aW5nID09ICdCcm93c2VyL0xh eW91dCcpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIChTZXR0aW5nLnNldHRpbmcgPT0gJ1NR TEVkaXRvci9MYXlvdXQnKSB8CisgICAgICAgICAgICAgICAgICAgICAgICAoU2V0dGluZy5zZXR0 aW5nID09ICdEZWJ1Z2dlci9MYXlvdXQnKSkgXAorICAgICAgICAgICAgICAgIC5kZWxldGUoKQor ICAgICAgICBlbHNlOgorICAgICAgICAgICAgZGIuc2Vzc2lvbi5xdWVyeShTZXR0aW5nKSBcCisg ICAgICAgICAgICAgICAgLmZpbHRlcihTZXR0aW5nLnVzZXJfaWQgPT0gY3VycmVudF91c2VyLmlk KVwKKyAgICAgICAgICAgICAgICAuZmlsdGVyKChTZXR0aW5nLnNldHRpbmcgPT0gJ0Jyb3dzZXIv TGF5b3V0JykgfAorICAgICAgICAgICAgICAgICAgICAgICAgKFNldHRpbmcuc2V0dGluZyA9PSAn U1FMRWRpdG9yL0xheW91dCcpIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIChTZXR0aW5nLnNl dHRpbmcgPT0gJ0RlYnVnZ2VyL0xheW91dCcpKVwKKyAgICAgICAgICAgICAgICAuZGVsZXRlKCkK IAogICAgICAgICBkYi5zZXNzaW9uLmNvbW1pdCgpCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl OgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2J1bmRsZS9hcHAuanMgYi93ZWIvcGdh ZG1pbi9zdGF0aWMvYnVuZGxlL2FwcC5qcwppbmRleCBmYzM1ZGE2NTMuLmNiZjg5YWVlNCAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2J1bmRsZS9hcHAuanMKKysrIGIvd2ViL3BnYWRt aW4vc3RhdGljL2J1bmRsZS9hcHAuanMKQEAgLTgsNyArOCw3IEBACiAvLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBkZWZpbmUo J2FwcCcsIFsKLSAgJ3NvdXJjZXMvcGdhZG1pbicsICdidW5kbGVkX2Jyb3dzZXInLCAncGdhZG1p bi5kYXRhZ3JpZCcsCisgICdzb3VyY2VzL3BnYWRtaW4nLCAnYnVuZGxlZF9icm93c2VyJywKIF0s IGZ1bmN0aW9uKHBnQWRtaW4pIHsKICAgdmFyIGluaXRpYWxpemVNb2R1bGVzID0gZnVuY3Rpb24o T2JqZWN0KSB7CiAgICAgZm9yICh2YXIga2V5IGluIE9iamVjdCkgewpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vQW5hbHlzaXMuanN4IGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL0V4cGxhaW4vQW5hbHlzaXMuanN4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uZmE4MjJiMTU2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL0V4cGxhaW4vQW5hbHlzaXMuanN4CkBAIC0wLDAgKzEsMjE1IEBACisvLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8g cGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMjIsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMg cmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbXBvcnQg eyBtYWtlU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL3N0eWxlcyc7CitpbXBvcnQgUmVhY3Qg ZnJvbSAncmVhY3QnOworaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7CitpbXBvcnQgXyBmcm9tICds b2Rhc2gnOworaW1wb3J0IEFycm93UmlnaHRBbHRJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29u cy9BcnJvd1JpZ2h0QWx0JzsKK2ltcG9ydCBGaWJlck1hbnVhbFJlY29yZEljb24gZnJvbSAnQG1h dGVyaWFsLXVpL2ljb25zL0ZpYmVyTWFudWFsUmVjb3JkJzsKK2ltcG9ydCBIVE1MUmVhY3RQYXJz ZSBmcm9tICdodG1sLXJlYWN0LXBhcnNlcic7CitpbXBvcnQgeyBjb21tb25UYWJsZVN0eWxlcyB9 IGZyb20gJy4uL1RoZW1lJzsKK2ltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7CisK K2NvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRoZW1lKT0+KHsKKyAgY29sbGFwc2libGU6 IHsKKyAgICBjdXJzb3I6ICdwb2ludGVyJywKKyAgfSwKKyAgY29sbGFwc2VQYXJlbnQ6IHsKKyAg ICBib3JkZXJCb3R0b206ICcycHggZGFzaGVkICcrdGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4s CisgIH0sCisgIGxldmVsMjogeworICAgIGJhY2tncm91bmRDb2xvcjogJyNmZmYnLAorICAgIGNv bG9yOiAnIzAwMCcsCisgIH0sCisgIGxldmVsMzogeworICAgIGJhY2tncm91bmRDb2xvcjogJyNm ZmYnLAorICAgIGNvbG9yOiAnIzAwMCcsCisgIH0sCisgIGxldmVsNDogeworICAgIGJhY2tncm91 bmRDb2xvcjogJyNmZmYnLAorICAgIGNvbG9yOiAnIzAwMCcsCisgIH0sCit9KSk7CisKK2Z1bmN0 aW9uIGdldFJvd0NsYXNzbmFtZShkYXRhLCBjb2xsYXBzZVBhcmVudCkgeworICBjb25zdCBjbGFz c2VzID0gdXNlU3R5bGVzKCk7CisgIGxldCBjbGFzc05hbWUgPSBbXTsKKyAgaWYoZGF0YVsnUGxh bnMnXT8ubGVuZ3RoID4gMCkgeworICAgIGNsYXNzTmFtZS5wdXNoKGNsYXNzZXMuY29sbGFwc2li bGUpOworICB9CisgIGlmKCFfLmlzRW1wdHkoZGF0YVsnZXhjbHVzaXZlX2ZsYWcnXSkpIHsKKyAg ICBjbGFzc05hbWUucHVzaChjbGFzc2VzWydsZXZlbCcrZGF0YVsnZXhjbHVzaXZlX2ZsYWcnXV0p OworICB9CisgIGlmKCFfLmlzRW1wdHkoZGF0YVsnaW5jbHVzaXZlX2ZsYWcnXSkpIHsKKyAgICBj bGFzc05hbWUucHVzaChjbGFzc2VzWydsZXZlbCcrZGF0YVsnaW5jbHVzaXZlX2ZsYWcnXV0pOwor ICB9CisgIGlmKCFfLmlzRW1wdHkoZGF0YVsncm93c3hfZmxhZyddKSkgeworICAgIGNsYXNzTmFt ZS5wdXNoKGNsYXNzZXNbJ2xldmVsJytkYXRhWydyb3dzeF9mbGFnJ11dKTsKKyAgfQorICBpZihj b2xsYXBzZVBhcmVudCkgeworICAgIGNsYXNzTmFtZS5wdXNoKGNsYXNzZXMuY29sbGFwc2VQYXJl bnQpOworICB9CisgIHJldHVybiBjbGFzc05hbWU7Cit9CisKK2Z1bmN0aW9uIE5vZGVUZXh0KHtk aXNwbGF5VGV4dCwgZXh0cmFJbmZvfSkgeworICByZXR1cm4gKAorICAgIDw+CisgICAgICA8QXJy b3dSaWdodEFsdEljb24gZm9udFNpemU9InNtYWxsIiAvPiB7ZGlzcGxheVRleHR9CisgICAgICB7 ZXh0cmFJbmZvPy5sZW5ndGggPiAwICYmIDx1bD4KKyAgICAgICAge2V4dHJhSW5mby5tYXAoKGl0 ZW0sIGkpPT57CisgICAgICAgICAgcmV0dXJuIDxsaSBrZXk9e2l9PntIVE1MUmVhY3RQYXJzZShp dGVtKX08L2xpPjsKKyAgICAgICAgfSl9CisgICAgICA8L3VsPn0KKyAgICA8Lz4pOworfQorTm9k ZVRleHQucHJvcFR5cGVzID0geworICBkaXNwbGF5VGV4dDogUHJvcFR5cGVzLnN0cmluZywKKyAg ZXh0cmFJbmZvOiBQcm9wVHlwZXMuYXJyYXksCit9OworCitmdW5jdGlvbiBFeHBsYWluUm93KHty b3csIHNob3csIGFjdGl2ZUV4SWQsIHNldEFjdGl2ZUV4SWQsIGNvbGxhcHNlZEV4SWQsIHRvZ2ds ZUNvbGxhcHNlRXhJZH0pIHsKKyAgbGV0IGRhdGEgPSByb3dbJ2RhdGEnXTsKKyAgY29uc3QgZXhJ ZCA9IGBwZ2FfZXhfJHtkYXRhWydsZXZlbCddLmpvaW4oJ18nKX1gOworICBjb25zdCBwYXJlbnRF eElkID0gYHBnYV9leF8ke2RhdGFbJ3BhcmVudF9ub2RlJ119YDsKKyAgY29uc3QgY29sbGFwc2Vk ID0gY29sbGFwc2VkRXhJZC5maW5kSW5kZXgoKHYpPT5wYXJlbnRFeElkLnN0YXJ0c1dpdGgodikp ID4gLTE7CisgIGNvbnN0IGNsYXNzTmFtZSA9IGdldFJvd0NsYXNzbmFtZShkYXRhLCBjb2xsYXBz ZWRFeElkLmluZGV4T2YoZXhJZCkgPiAtMSk7CisgIGxldCBvblJvd0NsaWNrID0gKGUpPT57Cisg ICAgdG9nZ2xlQ29sbGFwc2VFeElkKGUuY3VycmVudFRhcmdldC5nZXRBdHRyaWJ1dGUoJ2RhdGEt ZXgtaWQnKSwgZGF0YVsnUGxhbnMnXT8ubGVuZ3RoKTsKKyAgfTsKKworICByZXR1cm4gKAorICAg IDx0ciBvbk1vdXNlRW50ZXI9eyhlKT0+e3NldEFjdGl2ZUV4SWQoZS5jdXJyZW50VGFyZ2V0Lmdl dEF0dHJpYnV0ZSgnZGF0YS1leC1pZCcpKTt9fQorICAgICAgb25Nb3VzZUxlYXZlPXsoKT0+e3Nl dEFjdGl2ZUV4SWQobnVsbCk7fX0KKyAgICAgIGNsYXNzTmFtZT17Y2xzeChjbGFzc05hbWUpfSBk YXRhLXBhcmVudD17cGFyZW50RXhJZH0KKyAgICAgIGRhdGEtZXgtaWQ9e2BwZ2FfZXhfJHtkYXRh WydsZXZlbCddLmpvaW4oJ18nKX1gfQorICAgICAgc3R5bGU9e2NvbGxhcHNlZCA/IHtkaXNwbGF5 OiAnbm9uZSd9IDoge319CisgICAgICBvbkNsaWNrPXtvblJvd0NsaWNrfT4KKyAgICAgIDx0ZD4K KyAgICAgICAgPEZpYmVyTWFudWFsUmVjb3JkSWNvbiBmb250U2l6ZT0ic21hbGwiIHN0eWxlPXt7 dmlzaWJpbGl0eTogYWN0aXZlRXhJZD09cGFyZW50RXhJZCA/ICd2aXNpYmxlJyA6ICdoaWRkZW4n fX0gLz4KKyAgICAgIDwvdGQ+CisgICAgICA8dGQ+e2RhdGFbJ19zZXJpYWwnXX0uPC90ZD4KKyAg ICAgIDx0ZCBzdHlsZT17e3BhZGRpbmdMZWZ0OiBkYXRhWydsZXZlbCddLmxlbmd0aCozMCsncHgn fX0gdGl0bGU9e3Jvd1sndG9vbHRpcF90ZXh0J119PgorICAgICAgICA8Tm9kZVRleHQgZGlzcGxh eVRleHQ9e3Jvd1snZGlzcGxheV90ZXh0J119IGV4dHJhSW5mbz17cm93Wydub2RlX2V4dHJhX2lu Zm8nXX0gLz4KKyAgICAgIDwvdGQ+CisgICAgICA8dGQgc3R5bGU9e3Nob3cuc2hvd190aW1pbmdz ID8ge30gOiB7ZGlzcGxheTogJ25vbmUnfX0+CisgICAgICAgIHtkYXRhWydleGNsdXNpdmUnXSAm JiAoZGF0YVsnZXhjbHVzaXZlJ10rJyBtcycpfQorICAgICAgPC90ZD4KKyAgICAgIDx0ZCBzdHls ZT17c2hvdy5zaG93X3RpbWluZ3MgPyB7fSA6IHtkaXNwbGF5OiAnbm9uZSd9fT4KKyAgICAgICAg e2RhdGFbJ2luY2x1c2l2ZSddICYmIChkYXRhWydpbmNsdXNpdmUnXSsnIG1zJyl9CisgICAgICA8 L3RkPgorICAgICAgPHRkIHN0eWxlPXt7ZGlzcGxheTogJ25vbmUnfX0+eyFfLmlzVW5kZWZpbmVk KGRhdGFbJ3Jvd3N4X2ZsYWcnXSkKKyAgICAgICAgJiYgKGRhdGFbJ3Jvd3N4X2RpcmVjdGlvbidd ID09ICdwb3NpdGl2ZScgPyAnJnVhcnI7JyA6ICcmZGFycjsnKQorICAgICAgfTwvdGQ+CisgICAg ICA8dGQgc3R5bGU9e3Nob3cuc2hvd19yb3dzeCA/IHt9IDoge2Rpc3BsYXk6ICdub25lJ319Pgor ICAgICAgICB7ZGF0YVsncm93c3gnXX0KKyAgICAgIDwvdGQ+CisgICAgICA8dGQgc3R5bGU9eyhz aG93LnNob3dfcm93c3ggfHwgc2hvdy5zaG93X3Jvd3MpID8ge30gOiB7ZGlzcGxheTogJ25vbmUn fX0+CisgICAgICAgIHtkYXRhWydBY3R1YWwgUm93cyddfQorICAgICAgPC90ZD4KKyAgICAgIDx0 ZCBzdHlsZT17KHNob3cuc2hvd19yb3dzeCB8fCBzaG93LnNob3dfcGxhbl9yb3dzKSA/IHt9IDog e2Rpc3BsYXk6ICdub25lJ319PgorICAgICAgICB7ZGF0YVsnUGxhbiBSb3dzJ119CisgICAgICA8 L3RkPgorICAgICAgPHRkIHN0eWxlPXsoc2hvdy5zaG93X3Jvd3N4IHx8IHNob3cuc2hvd19yb3dz KSA/IHt9IDoge2Rpc3BsYXk6ICdub25lJ319PgorICAgICAgICB7ZGF0YVsnQWN0dWFsIExvb3Bz J119CisgICAgICA8L3RkPgorICAgIDwvdHI+CisgICk7Cit9CitFeHBsYWluUm93LnByb3BUeXBl cyA9IHsKKyAgcm93OiBQcm9wVHlwZXMuc2hhcGUoeworICAgIGRhdGE6IFByb3BUeXBlcy5zaGFw ZSh7CisgICAgICBQbGFuczogUHJvcFR5cGVzLmFycmF5LAorICAgICAgbGV2ZWw6IFByb3BUeXBl cy5udW1iZXIsCisgICAgICBfc2VyaWFsOiBQcm9wVHlwZXMubnVtYmVyLAorICAgICAgcGFyZW50 X25vZGU6IFByb3BUeXBlcy5udW1iZXIsCisgICAgICBleGNsdXNpdmU6IFByb3BUeXBlcy5udW1i ZXIsCisgICAgICBpbmNsdXNpdmU6IFByb3BUeXBlcy5udW1iZXIsCisgICAgICByb3dzeF9kaXJl Y3Rpb246IFByb3BUeXBlcy5zdHJpbmcsCisgICAgICByb3dzeDogUHJvcFR5cGVzLm51bWJlciwK KyAgICAgIHJvd3N4X2ZsYWc6IFByb3BUeXBlcy5udW1iZXIsCisgICAgICAnQWN0dWFsIFJvd3Mn OiBQcm9wVHlwZXMubnVtYmVyLAorICAgICAgJ1BsYW4gUm93cyc6IFByb3BUeXBlcy5udW1iZXIs CisgICAgICAnQWN0dWFsIExvb3BzJzogUHJvcFR5cGVzLm51bWJlciwKKyAgICB9KSwKKyAgICBu b2RlX2V4dHJhX2luZm86IFByb3BUeXBlcy5hcnJheSwKKyAgICBkaXNwbGF5X3RleHQ6IFByb3BU eXBlcy5zdHJpbmcsCisgICAgdG9vbHRpcF90ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLAorICB9KSwK KyAgc2hvdzogUHJvcFR5cGVzLnNoYXBlKHsKKyAgICBzaG93X3RpbWluZ3M6IFByb3BUeXBlcy5i b29sLAorICAgIHNob3dfcm93c3g6IFByb3BUeXBlcy5ib29sLAorICAgIHNob3dfcm93czogUHJv cFR5cGVzLmJvb2wsCisgICAgc2hvd19wbGFuX3Jvd3M6IFByb3BUeXBlcy5ib29sLAorICB9KSwK KyAgYWN0aXZlRXhJZDogUHJvcFR5cGVzLnN0cmluZywKKyAgc2V0QWN0aXZlRXhJZDogUHJvcFR5 cGVzLnN0cmluZywKKyAgY29sbGFwc2VkRXhJZDogUHJvcFR5cGVzLnN0cmluZywKKyAgdG9nZ2xl Q29sbGFwc2VFeElkOiBQcm9wVHlwZXMuZnVuYywKK307CisKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0 aW9uIEFuYWx5c2lzKHtleHBsYWluVGFibGV9KSB7CisgIGNvbnN0IHRhYmxlQ2xhc3NlcyA9IGNv bW1vblRhYmxlU3R5bGVzKCk7CisgIGNvbnN0IFthY3RpdmVFeElkLCBzZXRBY3RpdmVFeElkXSA9 IFJlYWN0LnVzZVN0YXRlKCk7CisgIGNvbnN0IFtjb2xsYXBzZWRFeElkLCBzZXRDb2xsYXBzZWRF eElkXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTsKKworICBjb25zdCB0b2dnbGVDb2xsYXBzZUV4SWQg PSAoZXhJZCwgaGFzUGxhbnM9dHJ1ZSk9PnsKKyAgICBpZihoYXNQbGFucykgeworICAgICAgc2V0 Q29sbGFwc2VkRXhJZCgocHJldik9PnsKKyAgICAgICAgaWYocHJldi5pbmRleE9mKGV4SWQpID4g LTEpIHsKKyAgICAgICAgICByZXR1cm4gcHJldi5maWx0ZXIoKHYpPT52IT1leElkKTsKKyAgICAg ICAgfQorICAgICAgICByZXR1cm4gWy4uLnByZXYsIGV4SWRdOworICAgICAgfSk7CisgICAgfQor ICB9OworICByZXR1cm4gPHRhYmxlIGNsYXNzTmFtZT17Y2xzeCh0YWJsZUNsYXNzZXMudGFibGUs IHRhYmxlQ2xhc3Nlcy5ub0JvcmRlciwgdGFibGVDbGFzc2VzLmJvcmRlckJvdHRvbSl9PgorICAg IDx0aGVhZD4KKyAgICAgIDx0cj4KKyAgICAgICAgPHRoIHJvd1NwYW49IjIiIHN0eWxlPXt7d2lk dGg6ICczMHB4J319PjwvdGg+CisgICAgICAgIDx0aCByb3dTcGFuPSIyIj48YnV0dG9uIGRpc2Fi bGVkPSIiPiM8L2J1dHRvbj48L3RoPgorICAgICAgICA8dGggcm93U3Bhbj0iMiI+PGJ1dHRvbiBk aXNhYmxlZD0iIj5Ob2RlPC9idXR0b24+PC90aD4KKyAgICAgICAgPHRoIGNvbFNwYW49IjIiIHN0 eWxlPXtleHBsYWluVGFibGUuc2hvd190aW1pbmdzID8ge30gOiB7ZGlzcGxheTogJ25vbmUnfX0+ CisgICAgICAgICAgPGJ1dHRvbiBkaXNhYmxlZD0iIj5UaW1pbmdzPC9idXR0b24+CisgICAgICAg IDwvdGg+CisgICAgICAgIDx0aCBzdHlsZT17KGV4cGxhaW5UYWJsZS5zaG93X3Jvd3N4IHx8IGV4 cGxhaW5UYWJsZS5zaG93X3Jvd3MpID8ge30gOiB7ZGlzcGxheTogJ25vbmUnfX0gY29sU3Bhbj0i MyI+CisgICAgICAgICAgPGJ1dHRvbiBkaXNhYmxlZD0iIj5Sb3dzPC9idXR0b24+CisgICAgICAg IDwvdGg+CisgICAgICAgIDx0aCBzdHlsZT17KGV4cGxhaW5UYWJsZS5zaG93X3Jvd3N4IHx8IGV4 cGxhaW5UYWJsZS5zaG93X3Jvd3MpID8ge30gOiB7ZGlzcGxheTogJ25vbmUnfX0gcm93U3Bhbj0i MiI+CisgICAgICAgICAgPGJ1dHRvbiBkaXNhYmxlZD0iIj5Mb29wczwvYnV0dG9uPgorICAgICAg ICA8L3RoPgorICAgICAgPC90cj4KKyAgICAgIDx0cj4KKyAgICAgICAgPHRoIHN0eWxlPXtleHBs YWluVGFibGUuc2hvd190aW1pbmdzID8ge30gOiB7ZGlzcGxheTogJ25vbmUnfX0+CisgICAgICAg ICAgPGJ1dHRvbiBkaXNhYmxlZD0iIj5FeGNsdXNpdmU8L2J1dHRvbj4KKyAgICAgICAgPC90aD4K KyAgICAgICAgPHRoIHN0eWxlPXtleHBsYWluVGFibGUuc2hvd190aW1pbmdzID8ge30gOiB7ZGlz cGxheTogJ25vbmUnfX0+CisgICAgICAgICAgPGJ1dHRvbiBkaXNhYmxlZD0iIj5JbmNsdXNpdmU8 L2J1dHRvbj4KKyAgICAgICAgPC90aD4KKyAgICAgICAgPHRoIHN0eWxlPXtleHBsYWluVGFibGUu c2hvd19yb3dzeCA/IHt9IDoge2Rpc3BsYXk6ICdub25lJ319PjxidXR0b24gZGlzYWJsZWQ9IiI+ Um93cyBYPC9idXR0b24+PC90aD4KKyAgICAgICAgPHRoIHN0eWxlPXsoZXhwbGFpblRhYmxlLnNo b3dfcm93c3ggfHwgZXhwbGFpblRhYmxlLnNob3dfcm93cykgPyB7fSA6IHtkaXNwbGF5OiAnbm9u ZSd9fT48YnV0dG9uIGRpc2FibGVkPSIiPkFjdHVhbDwvYnV0dG9uPjwvdGg+CisgICAgICAgIDx0 aCBzdHlsZT17KGV4cGxhaW5UYWJsZS5zaG93X3Jvd3N4IHx8IGV4cGxhaW5UYWJsZS5wbGFuX3Jv d3MpID8ge30gOiB7ZGlzcGxheTogJ25vbmUnfX0+PGJ1dHRvbiBkaXNhYmxlZD0iIj5QbGFuPC9i dXR0b24+PC90aD4KKyAgICAgIDwvdHI+CisgICAgPC90aGVhZD4KKyAgICA8dGJvZHk+CisgICAg ICB7Xy5zb3J0QnkoZXhwbGFpblRhYmxlLnJvd3MsKHIpPT5yWydkYXRhJ11bJ19zZXJpYWwnXSku bWFwKChyb3csIGkpPT57CisgICAgICAgIHJldHVybiA8RXhwbGFpblJvdyBrZXk9e2l9IHJvdz17 cm93fSBzaG93PXt7CisgICAgICAgICAgc2hvd190aW1pbmdzOiBleHBsYWluVGFibGUuc2hvd190 aW1pbmdzLAorICAgICAgICAgIHNob3dfcm93c3g6IGV4cGxhaW5UYWJsZS5zaG93X3Jvd3N4LAor ICAgICAgICAgIHNob3dfcm93czogZXhwbGFpblRhYmxlLnNob3dfcm93cywKKyAgICAgICAgICBz aG93X3BsYW5fcm93czogZXhwbGFpblRhYmxlLnNob3dfcGxhbl9yb3dzLAorICAgICAgICB9fSBh Y3RpdmVFeElkPXthY3RpdmVFeElkfSBzZXRBY3RpdmVFeElkPXtzZXRBY3RpdmVFeElkfSBjb2xs YXBzZWRFeElkPXtjb2xsYXBzZWRFeElkfSB0b2dnbGVDb2xsYXBzZUV4SWQ9e3RvZ2dsZUNvbGxh cHNlRXhJZH0gLz47CisgICAgICB9KX0KKyAgICA8L3Rib2R5PgorICA8L3RhYmxlPjsKK30KKwor QW5hbHlzaXMucHJvcFR5cGVzID0geworICBleHBsYWluVGFibGU6IFByb3BUeXBlcy5vYmplY3Qs Cit9OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vRXhwbGFpblN0 YXRpc3RpY3MuanN4IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vRXhwbGFpblN0YXRp c3RpY3MuanN4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNDQ0YmFiMzAx Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vRXhwbGFp blN0YXRpc3RpY3MuanN4CkBAIC0wLDAgKzEsMTM5IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRo ZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbXBvcnQgUmVhY3QgZnJv bSAncmVhY3QnOworaW1wb3J0IHsgQm94LCBHcmlkLCBtYWtlU3R5bGVzIH0gZnJvbSAnQG1hdGVy aWFsLXVpL2NvcmUnOworaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKK2lt cG9ydCB7IGNvbW1vblRhYmxlU3R5bGVzIH0gZnJvbSAnLi4vVGhlbWUnOworaW1wb3J0IGNsc3gg ZnJvbSAnY2xzeCc7CitpbXBvcnQgXyBmcm9tICdsb2Rhc2gnOworaW1wb3J0IFByb3BUeXBlcyBm cm9tICdwcm9wLXR5cGVzJzsKKworY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcygodGhlbWUp PT4oeworICB0aXRsZTogeworICAgIGZvbnRXZWlnaHQ6ICdib2xkJywKKyAgfSwKKyAgdGFibGVS b3c6IHsKKyAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuZ3JleVsyMDBdCisgIH0s CisgIHRhYmxlTmFtZTp7CisgICAgZm9udFdlaWdodDogJ2JvbGQnLAorICB9LAorICBub2RlTmFt ZTogeworICAgIHBhZGRpbmdMZWZ0OiAnMzBweCcsCisgIH0sCit9KSk7CisKK2V4cG9ydCBkZWZh dWx0IGZ1bmN0aW9uIEV4cGxhaW5TdGF0aXN0aWNzKHtleHBsYWluVGFibGV9KSB7CisgIC8vIF9y ZW5kZXJTdGF0aXN0aWNzVGFibGUKKyAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpOworICBj b25zdCB0YWJsZUNsYXNzZXMgPSBjb21tb25UYWJsZVN0eWxlcygpOworICByZXR1cm4gKAorICAg IDxCb3ggcD17MX0+CisgICAgICA8R3JpZCBjb250YWluZXIgc3BhY2luZz17MX0+CisgICAgICAg IDxHcmlkIGl0ZW0gbGc9ezZ9IG1kPXsxMn0+CisgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2Ns YXNzZXMudGl0bGV9PntnZXR0ZXh0KCdTdGF0aXN0aWNzIHBlciBOb2RlIFR5cGUnKX08L2Rpdj4K KyAgICAgICAgICA8dGFibGUgY2xhc3NOYW1lPXtjbHN4KHRhYmxlQ2xhc3Nlcy50YWJsZSl9Pgor ICAgICAgICAgICAgPHRoZWFkPgorICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAg PHRoPntnZXR0ZXh0KCdOb2RlIHR5cGUnKX08L3RoPgorICAgICAgICAgICAgICAgIDx0aD57Z2V0 dGV4dCgnQ291bnQnKX08L3RoPgorICAgICAgICAgICAgICAgIHtleHBsYWluVGFibGUuc2hvd190 aW1pbmdzICYmIDw+CisgICAgICAgICAgICAgICAgICA8dGg+e2dldHRleHQoJ1RpbWUgc3BlbnQn KX08L3RoPgorICAgICAgICAgICAgICAgICAgPHRoPnsnJSAnK2dldHRleHQoJ29mIHF1ZXJ5Jyl9 PC90aD4KKyAgICAgICAgICAgICAgICA8Lz59CisgICAgICAgICAgICAgIDwvdHI+CisgICAgICAg ICAgICA8L3RoZWFkPgorICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICB7Xy5zb3J0 QnkoT2JqZWN0LmtleXMoZXhwbGFpblRhYmxlLnN0YXRpc3RpY3Mubm9kZXMpKS5tYXAoKGtleSwg aSk9PnsKKyAgICAgICAgICAgICAgICBsZXQgbm9kZSA9IGV4cGxhaW5UYWJsZS5zdGF0aXN0aWNz Lm5vZGVzW2tleV07CisgICAgICAgICAgICAgICAgcmV0dXJuIDx0ciBrZXk9e2l9PgorICAgICAg ICAgICAgICAgICAgPHRkPntub2RlLm5hbWV9PC90ZD4KKyAgICAgICAgICAgICAgICAgIDx0ZD57 bm9kZS5jb3VudH08L3RkPgorICAgICAgICAgICAgICAgICAge2V4cGxhaW5UYWJsZS5zaG93X3Rp bWluZ3MgJiYgPD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPntNYXRoLmNlaWwxMChub2RlLnN1 bV9vZl90aW1lcywgLTMpICsgJyBtcyd9PC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkPntN YXRoLmNlaWwxMCgoKG5vZGUuc3VtX29mX3RpbWVzfHwwKS8oZXhwbGFpblRhYmxlLnRvdGFsX3Rp bWV8fDEpKSAqIDEwMCwgLTIpKyAnJSd9PC90ZD4KKyAgICAgICAgICAgICAgICAgIDwvPn0KKyAg ICAgICAgICAgICAgICA8L3RyPjsKKyAgICAgICAgICAgICAgfSl9CisgICAgICAgICAgICA8L3Ri b2R5PgorICAgICAgICAgIDwvdGFibGU+CisgICAgICAgIDwvR3JpZD4KKyAgICAgICAgPEdyaWQg aXRlbSBsZz17Nn0gbWQ9ezEyfT4KKyAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy50 aXRsZX0+e2dldHRleHQoJ1N0YXRpc3RpY3MgcGVyIFJlbGF0aW9uJyl9PC9kaXY+CisgICAgICAg ICAgPHRhYmxlIGNsYXNzTmFtZT17Y2xzeCh0YWJsZUNsYXNzZXMudGFibGUpfT4KKyAgICAgICAg ICAgIDx0aGVhZD4KKyAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgIDx0aD57Z2V0 dGV4dCgnUmVsYXRpb24gbmFtZScpfTwvdGg+CisgICAgICAgICAgICAgICAgPHRoPntnZXR0ZXh0 KCdTY2FuIGNvdW50Jyl9PC90aD4KKyAgICAgICAgICAgICAgICB7ZXhwbGFpblRhYmxlLnNob3df dGltaW5ncyAmJiA8PgorICAgICAgICAgICAgICAgICAgPHRoPntnZXR0ZXh0KCdUb3RhbCB0aW1l Jyl9PC90aD4KKyAgICAgICAgICAgICAgICAgIDx0aD57JyUgJytnZXR0ZXh0KCdvZiBxdWVyeScp fTwvdGg+CisgICAgICAgICAgICAgICAgPC8+fQorICAgICAgICAgICAgICA8L3RyPgorICAgICAg ICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgPHRoPntnZXR0ZXh0KCdOb2RlIHR5cGUnKX08 L3RoPgorICAgICAgICAgICAgICAgIDx0aD57Z2V0dGV4dCgnQ291bnQnKX08L3RoPgorICAgICAg ICAgICAgICAgIHtleHBsYWluVGFibGUuc2hvd190aW1pbmdzICYmIDw+CisgICAgICAgICAgICAg ICAgICA8dGg+e2dldHRleHQoJ1N1bSBvZiB0aW1lcycpfTwvdGg+CisgICAgICAgICAgICAgICAg ICA8dGg+eyclICcrZ2V0dGV4dCgnb2YgcmVsYXRpb24nKX08L3RoPgorICAgICAgICAgICAgICAg IDwvPn0KKyAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGhlYWQ+CisgICAgICAg ICAgICA8dGJvZHk+CisgICAgICAgICAgICAgIHtfLnNvcnRCeShPYmplY3Qua2V5cyhleHBsYWlu VGFibGUuc3RhdGlzdGljcy50YWJsZXMpKS5tYXAoKGtleSwgaSk9PnsKKyAgICAgICAgICAgICAg ICBsZXQgdGFibGUgPSBleHBsYWluVGFibGUuc3RhdGlzdGljcy50YWJsZXNba2V5XTsKKyAgICAg ICAgICAgICAgICB0YWJsZS5zdW1fb2ZfdGltZXMgPSBfLnN1bUJ5KHRhYmxlLm5vZGVzLCAnc3Vt X29mX3RpbWVzJyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIDxSZWFjdC5GcmFnbWVudCBrZXk9 e2l9PgorICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzTmFtZT17Y2xhc3Nlcy50YWJsZVJvd30+ CisgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9e2NsYXNzZXMudGFibGVOYW1lfT57 dGFibGUubmFtZX08L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQ+e3RhYmxlLmNvdW50fTwv dGQ+CisgICAgICAgICAgICAgICAgICAgIHtleHBsYWluVGFibGUuc2hvd190aW1pbmdzICYmIDw+ CisgICAgICAgICAgICAgICAgICAgICAgPHRkPntNYXRoLmNlaWwxMCh0YWJsZS5zdW1fb2ZfdGlt ZXMsIC0zKSArICcgbXMnfTwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgPHRkPntNYXRoLmNl aWwxMCgoKHRhYmxlLnN1bV9vZl90aW1lc3x8MCkvKGV4cGxhaW5UYWJsZS50b3RhbF90aW1lfHwx KSkgKiAxMDAsIC0yKSsgJyUnfTwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDwvPn0KKyAgICAg ICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICB7Xy5zb3J0QnkoT2JqZWN0Lmtl eXModGFibGUubm9kZXMpKS5tYXAoKG5vZGVLZXksIGopPT57CisgICAgICAgICAgICAgICAgICAg IGxldCBub2RlID0gdGFibGUubm9kZXNbbm9kZUtleV07CisgICAgICAgICAgICAgICAgICAgIHJl dHVybiA8dHIga2V5PXtqfT4KKyAgICAgICAgICAgICAgICAgICAgICA8dGQ+PGRpdiBjbGFzc05h bWU9e2NsYXNzZXMubm9kZU5hbWV9Pntub2RlLm5hbWV9PC9kaXY+PC90ZD4KKyAgICAgICAgICAg ICAgICAgICAgICA8dGQ+e25vZGUuY291bnR9PC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICB7 ZXhwbGFpblRhYmxlLnNob3dfdGltaW5ncyAmJiA8PgorICAgICAgICAgICAgICAgICAgICAgICAg PHRkPntNYXRoLmNlaWwxMChub2RlLnN1bV9vZl90aW1lcywgLTMpICsgJyBtcyd9PC90ZD4KKyAg ICAgICAgICAgICAgICAgICAgICAgIDx0ZD57TWF0aC5jZWlsMTAoKChub2RlLnN1bV9vZl90aW1l c3x8MCkvKHRhYmxlLnN1bV9vZl90aW1lc3x8MSkpICogMTAwLCAtMikrICclJ308L3RkPgorICAg ICAgICAgICAgICAgICAgICAgIDwvPn0KKyAgICAgICAgICAgICAgICAgICAgPC90cj47CisgICAg ICAgICAgICAgICAgICB9KX0KKyAgICAgICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PjsKKyAg ICAgICAgICAgICAgfSl9CisgICAgICAgICAgICA8L3Rib2R5PgorICAgICAgICAgIDwvdGFibGU+ CisgICAgICAgIDwvR3JpZD4KKyAgICAgIDwvR3JpZD4KKyAgICA8L0JveD4KKyAgKTsKK30KKwor Y29uc3QgTm9kZVR5cGUgPSB7CisgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsCisgIGNvdW50OiBQ cm9wVHlwZXMubnVtYmVyLAorICBzdW1fb2ZfdGltZXM6IFByb3BUeXBlcy5udW1iZXIsCit9Owor RXhwbGFpblN0YXRpc3RpY3MucHJvcFR5cGVzID0geworICBleHBsYWluVGFibGU6IFByb3BUeXBl cy5zaGFwZSh7CisgICAgc2hvd190aW1pbmdzOiBQcm9wVHlwZXMuYm9vbCwKKyAgICBzdGF0aXN0 aWNzOiBQcm9wVHlwZXMuc2hhcGUoeworICAgICAgbm9kZXM6IFByb3BUeXBlcy5hcnJheU9mKE5v ZGVUeXBlKSwKKyAgICAgIHRhYmxlczogUHJvcFR5cGVzLmFycmF5T2YoeworICAgICAgICAuLi5O b2RlVHlwZSwKKyAgICAgICAgbm9kZXM6IFByb3BUeXBlcy5hcnJheU9mKE5vZGVUeXBlKSwKKyAg ICAgIH0pLAorICAgIH0pLAorICAgIHRvdGFsX3RpbWU6IFByb3BUeXBlcy5udW1iZXIsCisgIH0p LAorfTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL0dyYXBoaWNh bC5qc3ggYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9HcmFwaGljYWwuanN4Cm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNTNiOTAyOWYwCi0tLSAvZGV2L251bGwK KysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vR3JhcGhpY2FsLmpzeApAQCAtMCww ICsxLDQzMyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8v CisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBU ZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExp Y2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLworaW1wb3J0IHsgQm94LCBDYXJkLCBDYXJkQ29udGVudCwgQ2FyZEhl YWRlciwgbWFrZVN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJzsKK2ltcG9ydCBSZWFj dCwge3VzZUVmZmVjdH0gZnJvbSAncmVhY3QnOworaW1wb3J0IF8gZnJvbSAnbG9kYXNoJzsKK2lt cG9ydCB7IFBnQnV0dG9uR3JvdXAsIFBnSWNvbkJ1dHRvbiB9IGZyb20gJy4uL2NvbXBvbmVudHMv QnV0dG9ucyc7CitpbXBvcnQgWm9vbUluSWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvWm9v bUluJzsKK2ltcG9ydCBab29tT3V0SWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvWm9vbU91 dCc7CitpbXBvcnQgWm9vbU91dE1hcEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1pvb21P dXRNYXAnOworaW1wb3J0IFNhdmVBbHRJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9TYXZl QWx0JzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7CitpbXBvcnQgUmVh Y3RET01TZXJ2ZXIgZnJvbSAncmVhY3QtZG9tL3NlcnZlcic7CitpbXBvcnQgdXJsX2ZvciBmcm9t ICdzb3VyY2VzL3VybF9mb3InOworaW1wb3J0IHsgZG93bmxvYWRTdmcgfSBmcm9tICcuL3N2Z19k b3dubG9hZCc7CitpbXBvcnQgQ2xvc2VJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9DbG9z ZVJvdW5kZWQnOworaW1wb3J0IHsgY29tbW9uVGFibGVTdHlsZXMgfSBmcm9tICcuLi9UaGVtZSc7 CitpbXBvcnQgY2xzeCBmcm9tICdjbHN4JzsKK2ltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10 eXBlcyc7CisKKy8vIFNvbWUgcHJlZGVmaW5lZCBjb25zdGFudHMgdXNlZCB0byBjYWxjdWxhdGUg aW1hZ2UgbG9jYXRpb24gYW5kIGl0cyBib3JkZXIKK3ZhciBwV0lEVEggPSAxMDAuOwordmFyIHBI RUlHSFQgPSAxMDAuOwordmFyIElNQUdFX1dJRFRIID0gNTA7Cit2YXIgSU1BR0VfSEVJR0hUID0g NTA7Cit2YXIgQVJST1dfV0lEVEggPSAxMCwKKyAgQVJST1dfSEVJR0hUID0gMTA7Cit2YXIgVFhU X0FMSUdOID0gNSwKKyAgVFhUX1NJWkUgPSAnMTVweCc7Cit2YXIgeE1hcmdpbiA9IDI1LAorICB5 TWFyZ2luID0gMjU7Cit2YXIgTUlOX1pPT01fRkFDVE9SID0gMC4zLAorICBNQVhfWk9PTV9GQUNU T1IgPSAyLAorICBJTklUX1pPT01fRkFDVE9SID0gMTsKK3ZhciBaT09NX1JBVElPID0gMC4wNTsK KworY29uc3QgQVVYSUxJQVJZX0tFWVMgPSBbJ2ltYWdlJywgJ1BsYW5zJywgJ2xldmVsJywgJ2lt YWdlX3RleHQnLCAneHBvcycsICd5cG9zJywgJ3dpZHRoJywgJ2hlaWdodCcsICd0b3RhbF90aW1l JywgJ3BhcmVudF9ub2RlJywgJ19zZXJpYWwnLCAnYXJyX2lkJ107CisKK2Z1bmN0aW9uIFBvbHlM aW5lKHtzdGFydHgsIHN0YXJ0eSwgZW5keCwgZW5keSwgb3B0cywgYXJyb3dPcHRzfSkgeworICAv LyBDYWxjdWxhdGUgZW5kIHBvaW50IG9mIGZpcnN0IHN0YXJ0aW5nIHN0cmFpZ2h0IGxpbmUgKHN0 YXJ0eDEsIHN0YXJ0eTEpCisgIC8vIENhbGN1bGF0ZSBzdGFydCBwb2ludCBvZiAybmQgc3RyYWln aHQgbGluZSAoZW5keDEsIGVuZHkxKQorICBsZXQgbWlkWDEgPSBzdGFydHggKyAoKGVuZHggLSBz dGFydHgpIC8gMyksCisgICAgbWlkWDIgPSBzdGFydHggKyAoMiAqICgoZW5keCAtIHN0YXJ0eCkg LyAzKSk7CisgIHJldHVybiAoCisgICAgPD4KKyAgICAgIDxsaW5lIHgxPXtzdGFydHh9IHgyPXtt aWRYMX0geTE9e3N0YXJ0eX0geTI9e3N0YXJ0eX0gey4uLm9wdHN9PjwvbGluZT4KKyAgICAgIDxs aW5lIHgxPXttaWRYMS0xfSB4Mj17bWlkWDJ9IHkxPXtzdGFydHl9IHkyPXtlbmR5fSB7Li4ub3B0 c30+PC9saW5lPgorICAgICAgPGxpbmUgeDE9e21pZFgyfSB4Mj17ZW5keH0geTE9e2VuZHl9IHky PXtlbmR5fSB7Li4ub3B0c30gey4uLmFycm93T3B0c30+PC9saW5lPgorICAgIDwvPgorICApOwor fQorUG9seUxpbmUucHJvcFR5cGVzID0geworICBzdGFydHg6IFByb3BUeXBlcy5udW1iZXIsCisg IHN0YXJ0eTogUHJvcFR5cGVzLm51bWJlciwKKyAgZW5keDogUHJvcFR5cGVzLm51bWJlciwKKyAg ZW5keTogUHJvcFR5cGVzLm51bWJlciwKKyAgb3B0czogUHJvcFR5cGVzLm9iamVjdCwKKyAgYXJy b3dPcHRzOiBQcm9wVHlwZXMub2JqZWN0LAorfTsKKworZnVuY3Rpb24gTXVsdGl0ZXh0KHtjdXJy ZW50WHBvcywgY3VycmVudFlwb3MsIGxhYmVsLCBtYXhXaWR0aH0pIHsKKyAgbGV0IGFiYyA9ICdh YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJzsKKyAg dmFyIHhtbG5zID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKKyAgdmFyIHN2Z0VsZW0g PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoeG1sbnMsICdzdmcnKTsKKyAgc3ZnRWxlbS5zZXRB dHRyaWJ1dGVOUyh4bWxucywgJ2hlaWdodCcsICcxMDAlJyk7CisgIHN2Z0VsZW0uc2V0QXR0cmli dXRlTlMoeG1sbnMsICd3aWR0aCcsICcxMDAlJyk7CisgIHZhciB0ZXh0ID0gZG9jdW1lbnQuY3Jl YXRlRWxlbWVudE5TKHhtbG5zLCAndGV4dCcpOworICB0ZXh0LmlubmVySFRNTCA9IGFiYzsKKyAg dGV4dC5zZXRBdHRyaWJ1dGVOUyh4bWxucywgJ3gnLCAwKTsKKyAgdGV4dC5zZXRBdHRyaWJ1dGVO Uyh4bWxucywgJ3knLCAwKTsKKyAgbGV0IGF0dHJpYnV0ZXM9eworICAgICdmb250LXNpemUnOiBU WFRfU0laRSwKKyAgICAndGV4dC1hbmNob3InOiAnbWlkZGxlJywKKyAgICAnZmlsbCc6ICcjMjIy JywKKyAgfTsKKyAgT2JqZWN0LmtleXMoYXR0cmlidXRlcykuZm9yRWFjaCgoa2V5KT0+eworICAg IHRleHQuc2V0QXR0cmlidXRlTlMoeG1sbnMsIGtleSwgYXR0cmlidXRlc1trZXldKTsKKyAgfSk7 CisgIHN2Z0VsZW0uYXBwZW5kQ2hpbGQodGV4dCk7CisgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hp bGQoc3ZnRWxlbSk7CisgIC8qCisgICogRmluZCBsZXR0ZXIgd2lkdGggaW4gcGl4ZWxzIGFuZAor ICAqIGluZGV4IGZyb20gd2hlcmUgdGhlIHRleHQgc2hvdWxkIGJlIGJyb2tlbgorICAqLworICB2 YXIgbGV0dGVyV2lkdGggPSB0ZXh0LmdldEJCb3goKS53aWR0aCAvIGFiYy5sZW5ndGgsCisgICAg d29yZEJyZWFrSW5kZXggPSBNYXRoLnJvdW5kKChtYXhXaWR0aCAvIGxldHRlcldpZHRoKSkgLSAx OworICBzdmdFbGVtLnJlbW92ZSgpOworCisgIHZhciB3b3JkcyA9IGxhYmVsLnNwbGl0KCcgJyks CisgICAgd2lkdGhTb0ZhciA9IDAsCisgICAgbGluZXMgPSBbXSwKKyAgICBjdXJyTGluZSA9ICcn LAorICAgIC8qCisgICAgKiBGdW5jdGlvbiB0byBkaXZpZGUgc3RyaW5nIGludG8gbXVsdGlwbGUg bGluZXMKKyAgICAqIGFuZCBzdG9yZSB0aGVtIGluIGFuIGFycmF5IGlmIGl0IHNpemUgY3Jvc3Nl cworICAgICogdGhlIG1heC13aWR0aCBib3VuZGFyeS4KKyAgICAqLworICAgIHNwbGl0VGV4dElu TXVsdGlMaW5lID0gZnVuY3Rpb24obGVhZGluZywgc29fZmFyLCBsaW5lKSB7CisgICAgICB2YXIg bCA9IGxpbmUubGVuZ3RoLAorICAgICAgICByZXMgPSBbXTsKKworICAgICAgaWYgKGwgPT0gMCkK KyAgICAgICAgcmV0dXJuIHJlczsKKworICAgICAgaWYgKHNvX2ZhciAmJiAoc29fZmFyICsgKGwg KiBsZXR0ZXJXaWR0aCkgPiBtYXhXaWR0aCkpIHsKKyAgICAgICAgcmVzLnB1c2gobGVhZGluZyk7 CisgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoc3BsaXRUZXh0SW5NdWx0aUxpbmUoJycsIDAsIGxp bmUpKTsKKyAgICAgIH0gZWxzZSBpZiAoc29fZmFyKSB7CisgICAgICAgIHJlcy5wdXNoKGxlYWRp bmcgKyAnICcgKyBsaW5lKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChsZWFkaW5nKQor ICAgICAgICAgIHJlcy5wdXNoKGxlYWRpbmcpOworICAgICAgICBpZiAobGluZS5sZW5ndGggPiB3 b3JkQnJlYWtJbmRleCArIDEpCisgICAgICAgICAgcmVzLnB1c2gobGluZS5zbGljZSgwLCB3b3Jk QnJlYWtJbmRleCkgKyAnLScpOworICAgICAgICBlbHNlCisgICAgICAgICAgcmVzLnB1c2gobGlu ZSk7CisgICAgICAgIHJlcyA9IHJlcy5jb25jYXQoc3BsaXRUZXh0SW5NdWx0aUxpbmUoJycsIDAs IGxpbmUuc2xpY2Uod29yZEJyZWFrSW5kZXgpKSk7CisgICAgICB9CisKKyAgICAgIHJldHVybiBy ZXM7CisgICAgfTsKKworICBmb3IgKHZhciBpID0gMDsgaSA8IHdvcmRzLmxlbmd0aDsgaSsrKSB7 CisgICAgdmFyIHRtcEFyciA9IHNwbGl0VGV4dEluTXVsdGlMaW5lKAorICAgICAgY3VyckxpbmUs IHdpZHRoU29GYXIsIHdvcmRzW2ldCisgICAgKTsKKworICAgIGlmIChjdXJyTGluZSkgeworICAg ICAgbGluZXMgPSBsaW5lcy5zbGljZSgwLCBsaW5lcy5sZW5ndGggLSAxKTsKKyAgICB9CisgICAg bGluZXMgPSBsaW5lcy5jb25jYXQodG1wQXJyKTsKKyAgICBjdXJyTGluZSA9IGxpbmVzW2xpbmVz Lmxlbmd0aCAtIDFdOworICAgIHdpZHRoU29GYXIgPSAoY3VyckxpbmUubGVuZ3RoICogbGV0dGVy V2lkdGgpOworICB9CisKKyAgcmV0dXJuICgKKyAgICA8dGV4dCB4PXtjdXJyZW50WHBvc30geT17 Y3VycmVudFlwb3N9IGZpbGw9IiMyMjIyMjIiIHN0eWxlPXt7Zm9udFNpemU6IFRYVF9TSVpFLCB0 ZXh0QW5jaG9yOiAnbWlkZGxlJ319PgorICAgICAge2xpbmVzLm1hcCgobGluZSwgaSk9PnsKKyAg ICAgICAgaWYoaSA+IDApIHsKKyAgICAgICAgICByZXR1cm4gPHRzcGFuIGtleT17aX0gZHk9IjEu MmVtIiB4PXtjdXJyZW50WHBvc30+e2xpbmV9PC90c3Bhbj47CisgICAgICAgIH0KKyAgICAgICAg cmV0dXJuIDx0c3BhbiBrZXk9e2l9PntsaW5lfTwvdHNwYW4+OworICAgICAgfSl9CisgICAgPC90 ZXh0PgorICApOworfQorCitNdWx0aXRleHQucHJvcFR5cGVzID0geworICBjdXJyZW50WHBvczog UHJvcFR5cGVzLm51bWJlciwKKyAgY3VycmVudFlwb3M6IFByb3BUeXBlcy5udW1iZXIsCisgIGxh YmVsOiBQcm9wVHlwZXMuc3RyaW5nLAorICBtYXhXaWR0aDogUHJvcFR5cGVzLm51bWJlciwKK307 CitmdW5jdGlvbiBJbWFnZSh7cGxhbiwgbGFiZWwsIGN1cnJlbnRYcG9zLCBjdXJyZW50WXBvcywg Y29udGVudCwgZG93bmxvYWQsIG9uTm9kZUNsaWNrfSkgeworICByZXR1cm4gKAorICAgIDw+Cisg ICAgICA8aW1hZ2UgaHJlZj17Y29udGVudH0KKyAgICAgICAgcHJlc2VydmVBc3BlY3RSYXRpbz0i bm9uZSIKKyAgICAgICAgeD17Y3VycmVudFhwb3MgKyAocFdJRFRIIC0gSU1BR0VfV0lEVEgpIC8g Mn0KKyAgICAgICAgeT17Y3VycmVudFlwb3MgKyAocEhFSUdIVCAtIElNQUdFX0hFSUdIVCkgLyAy fQorICAgICAgICB3aWR0aD17SU1BR0VfV0lEVEh9IGhlaWdodD17SU1BR0VfSEVJR0hUfQorICAg ICAgICBzdHlsZT17e2N1cnNvcjogJ3BvaW50ZXInfX0gb25DbGljaz17b25Ob2RlQ2xpY2t9Pgor ICAgICAgICB7ZG93bmxvYWQgJiYKKyAgICAgICAgICA8dGl0bGU+CisgICAgICAgICAgICA8Tm9k ZURldGFpbHMgcGxhbj17cGxhbn0gZG93bmxvYWQ9e3RydWV9IC8+CisgICAgICAgICAgPC90aXRs ZT4KKyAgICAgICAgfQorICAgICAgPC9pbWFnZT4KKyAgICAgIDxNdWx0aXRleHQgY3VycmVudFhw b3M9e2N1cnJlbnRYcG9zICsgKHBXSURUSCAvIDIpICsgVFhUX0FMSUdOfSBjdXJyZW50WXBvcz17 Y3VycmVudFlwb3MgKyBwSEVJR0hUIC0gVFhUX0FMSUdOfSBsYWJlbD17bGFiZWx9IG1heFdpZHRo PXsxNTB9IC8+CisgICAgPC8+CisgICk7Cit9CisKK0ltYWdlLnByb3BUeXBlcyA9IHsKKyAgcGxh bjogUHJvcFR5cGVzLm9iamVjdCwKKyAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsCisgIGN1cnJl bnRYcG9zOiBQcm9wVHlwZXMubnVtYmVyLAorICBjdXJyZW50WXBvczogUHJvcFR5cGVzLm51bWJl ciwKKyAgY29udGVudDogUHJvcFR5cGVzLnN0cmluZywKKyAgZG93bmxvYWQ6IFByb3BUeXBlcy5i b29sLAorICBvbk5vZGVDbGljazogUHJvcFR5cGVzLmZ1bmMsCit9OworZnVuY3Rpb24gTm9kZURl dGFpbHMoe3BsYW4sIGRvd25sb2FkPWZhbHNlfSkgeworICByZXR1cm4gPD4KKyAgICB7T2JqZWN0 LmtleXMocGxhbikubWFwKChrZXkpPT57CisgICAgICBpZihBVVhJTElBUllfS0VZUy5pbmRleE9m KGtleSkgIT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDw+PC8+OworICAgICAgfQorICAgICAgaWYo ZG93bmxvYWQpIHsKKyAgICAgICAgcmV0dXJuIGAke2tleX06ICR7cGxhbltrZXldfVxuYDsKKyAg ICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAoPHRyIGtleT17a2V5fT4KKyAgICAgICAgICA8 dGQ+e18uZXNjYXBlKGtleSl9PC90ZD4KKyAgICAgICAgICA8dGQ+e18uZXNjYXBlKHBsYW5ba2V5 XSl9PC90ZD4KKyAgICAgICAgPC90cj4pOworICAgICAgfQorICAgIH0pfQorICA8Lz47Cit9CitO b2RlRGV0YWlscy5wcm9wVHlwZXMgPSB7CisgIHBsYW46IFByb3BUeXBlcy5vYmplY3QsCisgIGRv d25sb2FkOiBQcm9wVHlwZXMuYm9vbCwKK307CisKK2Z1bmN0aW9uIFBsYW5Db250ZW50KHtwbGFu LCBwWHBvcywgcFlwb3MsIC4uLnByb3BzfSkgeworICBsZXQgY3VycmVudFhwb3MgPSBwcm9wcy54 cG9zICsgcGxhbi54cG9zLAorICAgIGN1cnJlbnRZcG9zID0gcHJvcHMueXBvcyArIHBsYW4ueXBv cywKKyAgICBpc1N1YlBsYW4gPSAocGxhblsnUGFyZW50IFJlbGF0aW9uc2hpcCddID09PSAnU3Vi UGxhbicpOworICBjb25zdCBub2RlTGFiZWwgPSBwbGFuLlNjaGVtYSA9PSB1bmRlZmluZWQgPwor ICAgIHBsYW4uaW1hZ2VfdGV4dCA6IHBsYW4uU2NoZW1hICsgJy4nICsgcGxhbi5pbWFnZV90ZXh0 OworCisgIGxldCBjb2xvckZnID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5kb2N1bWVudEVs ZW1lbnQpLmdldFByb3BlcnR5VmFsdWUoJy0tY29sb3ItZmcnKTsKKyAgbGV0IHBvbHlsaW5lUHJv cHMgPSBudWxsOworICBpZighXy5pc1VuZGVmaW5lZChwWXBvcykpIHsKKyAgICBsZXQgYXJyb3dT aXplID0gcHJvcHMuY3R4LmFycm93c1twbGFuWydhcnJfaWQnXV07CisgICAgcG9seWxpbmVQcm9w cyA9IHsKKyAgICAgIHN0YXJ0eDogY3VycmVudFhwb3MgKyBwV0lEVEgsCisgICAgICBzdGFydHk6 IGN1cnJlbnRZcG9zICsgKHBIRUlHSFQgLyAyKSwKKyAgICAgIGVuZHg6IHBYcG9zIC0gQVJST1df V0lEVEgsCisgICAgICBlbmR5OiBwWXBvcyArIChwSEVJR0hUIC8gMiksCisgICAgICBhcnJfaWQ6 IHBsYW5bJ2Fycl9pZCddLAorICAgIH07CisgICAgcG9seWxpbmVQcm9wcy5vcHRzID0geworICAg ICAgc3Ryb2tlOiBjb2xvckZnLAorICAgICAgc3Ryb2tlV2lkdGg6IGFycm93U2l6ZSArIDIsCisg ICAgfTsKKyAgICBwb2x5bGluZVByb3BzLmFycm93T3B0cyA9IHsKKyAgICAgIHN0eWxlOiB7Cisg ICAgICAgIG1hcmtlckVuZDogYHVybCgiIyR7cGxhblsnYXJyX2lkJ119IilgLAorICAgICAgfQor ICAgIH07CisgIH0KKyAgcmV0dXJuICgKKyAgICA8PgorICAgICAgPGc+CisgICAgICAgIHtpc1N1 YlBsYW4gJiYKKyAgICAgIDw+CisgICAgICAgIDxyZWN0IHg9e2N1cnJlbnRYcG9zIC0gcGxhbi53 aWR0aCArIHBXSURUSCArIHhNYXJnaW59CisgICAgICAgICAgeT17Y3VycmVudFlwb3MgLSBwbGFu LmhlaWdodCArIHBIRUlHSFQgKyB5TWFyZ2luIC0gVFhUX0FMSUdOfQorICAgICAgICAgIHdpZHRo PXtwbGFuLndpZHRoIC0geE1hcmdpbn0KKyAgICAgICAgICBoZWlnaHQ9e3BsYW4uaGVpZ2h0ICsg KGN1cnJlbnRZcG9zIC0geU1hcmdpbil9CisgICAgICAgICAgcng9ezV9CisgICAgICAgICAgc3Ry b2tlPSIjNDQ0NDQ0IgorICAgICAgICAgIHN0cm9rZVdpZHRoPXsxLjJ9CisgICAgICAgICAgZmls bD0iZ3JheSIKKyAgICAgICAgICBmaWxsT3BhY2l0eT17MC4yfQorICAgICAgICAvPgorICAgICAg ICA8dHNwYW4geD17Y3VycmVudFhwb3MgKyBwV0lEVEggLSAocGxhbi53aWR0aCAvIDIpIC0geE1h cmdpbn0KKyAgICAgICAgICB5PXtjdXJyZW50WXBvcyArIHBIRUlHSFQgLSAocGxhbi5oZWlnaHQg LyAyKSAtIHlNYXJnaW59CisgICAgICAgICAgZm9udFNpemU9e1RYVF9TSVpFfQorICAgICAgICAg IHRleHRBbmNob3I9InN0YXJ0IgorICAgICAgICAgIGZpbGw9InJlZCIKKyAgICAgICAgPntwbGFu WydTdWJwbGFuIE5hbWUnXX08L3RzcGFuPgorICAgICAgPC8+fQorICAgICAgICA8SW1hZ2UKKyAg ICAgICAgICBsYWJlbD17bm9kZUxhYmVsfQorICAgICAgICAgIGNvbnRlbnQ9e3VybF9mb3IoJ21p c2MuaW5kZXgnKSArICdzdGF0aWMvZXhwbGFpbi9pbWcvJyArIHBsYW4uaW1hZ2V9CisgICAgICAg ICAgY3VycmVudFhwb3M9e2N1cnJlbnRYcG9zfQorICAgICAgICAgIGN1cnJlbnRZcG9zPXtjdXJy ZW50WXBvc30KKyAgICAgICAgICBwbGFuPXtwbGFufQorICAgICAgICAgIGRvd25sb2FkPXtwcm9w cy5kb3dubG9hZH0KKyAgICAgICAgICBvbk5vZGVDbGljaz17KCk9PnByb3BzLm9uTm9kZUNsaWNr KG5vZGVMYWJlbCwgcGxhbil9CisgICAgICAgIC8+CisgICAgICAgIHtwb2x5bGluZVByb3BzICYm IDxQb2x5TGluZSB7Li4ucG9seWxpbmVQcm9wc30gLz59CisgICAgICA8L2c+CisgICAgICB7cGxh blsnUGxhbnMnXS5tYXAoKHAsIGkpPT4oCisgICAgICAgIDxQbGFuQ29udGVudCBrZXk9e2l9IHBs YW49e3B9IHBYcG9zPXtjdXJyZW50WHBvc30gcFlwb3M9e2N1cnJlbnRZcG9zfSB7Li4ucHJvcHN9 Lz4KKyAgICAgICkpfQorICAgIDwvPgorICApOworfQorCitQbGFuQ29udGVudC5wcm9wVHlwZXMg PSB7CisgIHBsYW46IFByb3BUeXBlcy5vYmplY3QsCisgIHBYcG9zOiBQcm9wVHlwZXMubnVtYmVy LAorICBwWXBvczogUHJvcFR5cGVzLm51bWJlciwKKyAgeHBvczogUHJvcFR5cGVzLm51bWJlciwK KyAgeXBvczogUHJvcFR5cGVzLm51bWJlciwKKyAgY3R4OiBQcm9wVHlwZXMub2JqZWN0LAorICBk b3dubG9hZDogUHJvcFR5cGVzLmJvb2wsCisgIG9uTm9kZUNsaWNrOiBQcm9wVHlwZXMuZnVuYywK K307CisKK2Z1bmN0aW9uIFBsYW5TVkcoe3BsYW5EYXRhLCB6b29tRmFjdG9yLCBmaXRab29tRmFj dG9yLCAuLi5wcm9wc30pIHsKKyAgdXNlRWZmZWN0KCgpPT57CisgICAgZml0Wm9vbUZhY3RvciAm JiBmaXRab29tRmFjdG9yKHBsYW5EYXRhLndpZHRoKTsKKyAgfSwgW3BsYW5EYXRhLndpZHRoXSk7 CisKKyAgcmV0dXJuICgKKyAgICA8c3ZnIGhlaWdodD17cGxhbkRhdGEuaGVpZ2h0Knpvb21GYWN0 b3J9IHdpZHRoPXtwbGFuRGF0YS53aWR0aCp6b29tRmFjdG9yfSB2ZXJzaW9uPSIxLjEiIHhtbG5z PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CisgICAgICA8ZGVmcz4KKyAgICAgICAge09i amVjdC5rZXlzKHByb3BzLmN0eC5hcnJvd3MpLm1hcCgoYXJyX2lkLCBpKT0+eworICAgICAgICAg IGxldCBhcnJvd1BvaW50cyA9IFsKKyAgICAgICAgICAgIDAsIDAsCisgICAgICAgICAgICAwLCAo QVJST1dfV0lEVEggLyAyKSwKKyAgICAgICAgICAgIEFSUk9XX0hFSUdIVCwgKEFSUk9XX1dJRFRI IC8gNCksCisgICAgICAgICAgICAwLCAwCisgICAgICAgICAgXS5qb2luKCcsJyk7CisgICAgICAg ICAgbGV0IHZpZXdCb3ggPSBbMCwgMCwgMiAqIEFSUk9XX1dJRFRILCAyICogQVJST1dfSEVJR0hU XS5qb2luKCcgJyk7CisgICAgICAgICAgcmV0dXJuKAorICAgICAgICAgICAgPG1hcmtlciBrZXk9 e2l9IHZpZXdCb3g9e3ZpZXdCb3h9IG1hcmtlcldpZHRoPXtBUlJPV19XSURUSH0gbWFya2VySGVp Z2h0PXtBUlJPV19IRUlHSFR9IG9yaWVudD0iYXV0byIgcmVmWD0iMCIgcmVmWT17QVJST1dfV0lE VEggLyA0fSBpZD17YXJyX2lkfSBmaWxsPSIjMjIyMjIyIj4KKyAgICAgICAgICAgICAgPHBvbHln b24gcG9pbnRzPXthcnJvd1BvaW50c30+PC9wb2x5Z29uPgorICAgICAgICAgICAgPC9tYXJrZXI+ CisgICAgICAgICAgKTsKKyAgICAgICAgfSl9CisgICAgICA8L2RlZnM+CisgICAgICA8ZyB0cmFu c2Zvcm09e2BtYXRyaXgoJHt6b29tRmFjdG9yfSwwLDAsJHt6b29tRmFjdG9yfSwwLDApYH0+Cisg ICAgICAgIDxyZWN0IHg9IjAiIHk9IjAiIHdpZHRoPXtwbGFuRGF0YS53aWR0aH0gaGVpZ2h0PXtw bGFuRGF0YS5oZWlnaHR9IHJ4PSI1IiByeT0iNSIgZmlsbD0iI2ZmZmZmZiI+PC9yZWN0PgorICAg ICAgICA8UGxhbkNvbnRlbnQgcGxhbj17cGxhbkRhdGFbJ1BsYW4nXX0geHBvcz17cGxhbkRhdGEu d2lkdGggLSB4TWFyZ2lufSB5cG9zPXt5TWFyZ2lufSB7Li4ucHJvcHN9Lz4KKyAgICAgIDwvZz4K KyAgICA8L3N2Zz4KKyAgKTsKK30KKworUGxhblNWRy5wcm9wVHlwZXMgPSB7CisgIHBsYW5EYXRh OiBQcm9wVHlwZXMub2JqZWN0LAorICB6b29tRmFjdG9yOiBQcm9wVHlwZXMubnVtYmVyLAorICBm aXRab29tRmFjdG9yOiBQcm9wVHlwZXMubnVtYmVyLAorICBjdHg6IFByb3BUeXBlcy5vYmplY3Qs Cit9OworCisKK2NvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRoZW1lKT0+KHsKKyAgZXhw bGFpbkRldGFpbHM6IHsKKyAgICBtaW5XaWR0aDogJzIwMHB4JywKKyAgICBtYXhXaWR0aDogJzMw MHB4JywKKyAgICBwb3NpdGlvbjogJ2Fic29sdXRlJywKKyAgICB0b3A6ICcwLjI1cmVtJywKKyAg ICBib3R0b206ICcwLjI1cmVtJywKKyAgICByaWdodDogJzAuMjVyZW0nLAorICAgIGJvcmRlckNv bG9yOiB0aGVtZS5vdGhlclZhcnMuYm9yZGVyQ29sb3IsCisgICAgLy8gYm94LXNoYWRvdzogMCAw LjEyNXJlbSAwLjVyZW0gcmdiKDEzMiAxNDIgMTYwIC8gMjglKTsKKyAgICB3b3JkQnJlYWs6ICdi cmVhay1hbGwnLAorICAgIGRpc3BsYXk6ICdmbGV4JywKKyAgICBmbGV4RGlyZWN0aW9uOiAnY29s dW1uJywKKyAgICB6SW5kZXg6IDk5LAorICB9LAorICBleHBsYWluQ29udGVudDogeworICAgIGhl aWdodDogJzEwMCUnLAorICAgIG92ZXJmbG93OiAnYXV0bycsCisgIH0KK30pKTsKKworZXhwb3J0 IGRlZmF1bHQgZnVuY3Rpb24gR3JhcGhpY2FsKHtwbGFuRGF0YSwgY3R4fSkgeworICBjb25zdCB0 YWJsZVN0eWxlcyA9IGNvbW1vblRhYmxlU3R5bGVzKCk7CisgIGNvbnN0IGNsYXNzZXMgPSB1c2VT dHlsZXMoKTsKKyAgY29uc3QgZ3JhcGhDb250YWluZXJSZWYgPSBSZWFjdC51c2VSZWYoKTsKKyAg Y29uc3QgW3pvb21GYWN0b3IsIHNldFpvb21GYWN0b3JdID0gUmVhY3QudXNlU3RhdGUoSU5JVF9a T09NX0ZBQ1RPUik7CisgIGNvbnN0IFtbZXhwbGFpblBsYW5UaXRsZSwgZXhwbGFpblBsYW5EZXRh aWxzXSwgc2V0RXhwbGFpblBsYW5EZXRhaWxzXSA9IFJlYWN0LnVzZVN0YXRlKFtudWxsLCBudWxs XSk7CisKKyAgY29uc3Qgb25DbWRDbGljayA9IChjbWQpPT57CisgICAgaWYoY21kID09ICdpbicp IHsKKyAgICAgIHNldFpvb21GYWN0b3IoKHByZXYpPT57CisgICAgICAgIGlmKHByZXYgPj0gTUFY X1pPT01fRkFDVE9SKSByZXR1cm4gcHJldjsKKyAgICAgICAgcmV0dXJuIHByZXYrWk9PTV9SQVRJ TzsKKyAgICAgIH0pOworICAgIH0gZWxzZSBpZihjbWQgPT0gJ291dCcpIHsKKyAgICAgIHNldFpv b21GYWN0b3IoKHByZXYpPT57CisgICAgICAgIGlmKHByZXYgPD0gTUlOX1pPT01fRkFDVE9SKSBy ZXR1cm4gcHJldjsKKyAgICAgICAgcmV0dXJuIHByZXYtWk9PTV9SQVRJTzsKKyAgICAgIH0pOwor ICAgIH0gZWxzZSB7CisgICAgICBzZXRab29tRmFjdG9yKElOSVRfWk9PTV9GQUNUT1IpOworICAg IH0KKyAgfTsKKworICBjb25zdCBmaXRab29tRmFjdG9yID0gUmVhY3QudXNlQ2FsbGJhY2soKHN2 Z1dpZHRoKT0+eworICAgIC8qCisgICAgKiBTY2FsZSBncmFwaCBpbiBjYXNlIGl0cyB3aWR0aCBp cyBiaWdnZXIgdGhhbiBwYW5lbCB3aWR0aAorICAgICogaW4gd2hpY2ggdGhlIGdyYXBoIGlzIGRp c3BsYXllZAorICAgICovCisgICAgaWYoZ3JhcGhDb250YWluZXJSZWYuY3VycmVudC5vZmZzZXRX aWR0aCAmJiBzdmdXaWR0aCkgeworICAgICAgbGV0IHpvb21GYWN0b3IgPSBncmFwaENvbnRhaW5l clJlZi5jdXJyZW50Lm9mZnNldFdpZHRoL3N2Z1dpZHRoOworICAgICAgem9vbUZhY3RvciA9IHpv b21GYWN0b3IgPCBNSU5fWk9PTV9GQUNUT1IgPyBNSU5fWk9PTV9GQUNUT1IgOiB6b29tRmFjdG9y OworICAgICAgem9vbUZhY3RvciA9IHpvb21GYWN0b3IgPiBJTklUX1pPT01fRkFDVE9SID8gSU5J VF9aT09NX0ZBQ1RPUiA6IHpvb21GYWN0b3I7CisgICAgICBzZXRab29tRmFjdG9yKHpvb21GYWN0 b3IpOworICAgIH0KKyAgfSwgW10pOworCisgIGNvbnN0IG9uRG93bmxvYWRDbGljayA9ICgpPT57 CisgICAgZG93bmxvYWRTdmcoUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdGF0aWNNYXJrdXAoCisg ICAgICA8UGxhblNWRyBwbGFuRGF0YT17cGxhbkRhdGF9IGRvd25sb2FkPXt0cnVlfSBjdHg9e2N0 eH0gem9vbUZhY3Rvcj17SU5JVF9aT09NX0ZBQ1RPUn0gb25Ob2RlQ2xpY2s9eygpPT57fX0vPgor ICAgICksICdleHBsYWluX3BsYW5fJyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkgKyAnLnN2Zycp OworICB9OworCisgIGNvbnN0IG9uTm9kZUNsaWNrID0gUmVhY3QudXNlQ2FsbGJhY2soKHRpdGxl LCBkZXRhaWxzKT0+eworICAgIHNldEV4cGxhaW5QbGFuRGV0YWlscyhbdGl0bGUsIGRldGFpbHNd KTsKKyAgfSwgW10pOworCisgIHJldHVybiAoCisgICAgPEJveCByZWY9e2dyYXBoQ29udGFpbmVy UmVmfSBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIiBvdmVyZmxvdz0iYXV0byI+CisgICAgICA8 Qm94IHBvc2l0aW9uPSJhYnNvbHV0ZSIgdG9wPSI0cHgiIGxlZnQ9IjRweCIgZ3JpZEdhcD0iNHB4 IiBkaXNwbGF5PSJmbGV4Ij4KKyAgICAgICAgPFBnQnV0dG9uR3JvdXAgc2l6ZT0ic21hbGwiPgor ICAgICAgICAgIDxQZ0ljb25CdXR0b24gdGl0bGU9e2dldHRleHQoJ1pvb20gaW4nKX0gaWNvbj17 PFpvb21Jbkljb24gLz59IG9uQ2xpY2s9eygpPT5vbkNtZENsaWNrKCdpbicpfS8+CisgICAgICAg ICAgPFBnSWNvbkJ1dHRvbiB0aXRsZT17Z2V0dGV4dCgnWm9vbSB0byBvcmlnaW5hbCcpfSBpY29u PXs8Wm9vbU91dE1hcEljb24gLz59IG9uQ2xpY2s9eygpPT5vbkNtZENsaWNrKCl9Lz4KKyAgICAg ICAgICA8UGdJY29uQnV0dG9uIHRpdGxlPXtnZXR0ZXh0KCdab29tIG91dCcpfSBpY29uPXs8Wm9v bU91dEljb24gLz59IG9uQ2xpY2s9eygpPT5vbkNtZENsaWNrKCdvdXQnKX0vPgorICAgICAgICA8 L1BnQnV0dG9uR3JvdXA+CisgICAgICAgIDxQZ0J1dHRvbkdyb3VwIHNpemU9InNtYWxsIj4KKyAg ICAgICAgICA8UGdJY29uQnV0dG9uIHRpdGxlPXtnZXR0ZXh0KCdEb3dubG9hZCcpfSBpY29uPXs8 U2F2ZUFsdEljb24gLz59IG9uQ2xpY2s9e29uRG93bmxvYWRDbGlja30vPgorICAgICAgICA8L1Bn QnV0dG9uR3JvdXA+CisgICAgICA8L0JveD4KKyAgICAgIDxQbGFuU1ZHIHBsYW5EYXRhPXtwbGFu RGF0YX0gY3R4PXtjdHh9IHpvb21GYWN0b3I9e3pvb21GYWN0b3J9IGZpdFpvb21GYWN0b3I9e2Zp dFpvb21GYWN0b3J9CisgICAgICAgIG9uTm9kZUNsaWNrPXtvbk5vZGVDbGlja30KKyAgICAgIC8+ CisgICAgICB7Qm9vbGVhbihleHBsYWluUGxhbkRldGFpbHMpICYmCisgICAgICA8Q2FyZCBjbGFz c05hbWU9e2NsYXNzZXMuZXhwbGFpbkRldGFpbHN9PgorICAgICAgICA8Q2FyZEhlYWRlciB0aXRs ZT17PEJveCBkaXNwbGF5PSJmbGV4Ij4KKyAgICAgICAgICB7ZXhwbGFpblBsYW5UaXRsZX0KKyAg ICAgICAgICA8Qm94IG1hcmdpbkxlZnQ9ImF1dG8iPgorICAgICAgICAgICAgPFBnSWNvbkJ1dHRv biB0aXRsZT17Z2V0dGV4dCgnQ2xvc2UnKX0gaWNvbj17PENsb3NlSWNvbiAvPn0gc2l6ZT0ieHMi IG5vQm9yZGVyIG9uQ2xpY2s9eygpPT5zZXRFeHBsYWluUGxhbkRldGFpbHMoW251bGwsIG51bGxd KX0vPgorICAgICAgICAgIDwvQm94PgorICAgICAgICA8L0JveD59IC8+CisgICAgICAgIDxDYXJk Q29udGVudCBjbGFzc05hbWU9e2NsYXNzZXMuZXhwbGFpbkNvbnRlbnR9PgorICAgICAgICAgIDx0 YWJsZSBjbGFzc05hbWU9e2Nsc3godGFibGVTdHlsZXMudGFibGUsIHRhYmxlU3R5bGVzLmJvcmRl ckJvdHRvbSl9PgorICAgICAgICAgICAgPHRib2R5PgorICAgICAgICAgICAgICA8Tm9kZURldGFp bHMgZG93bmxvYWQ9e2ZhbHNlfSBwbGFuPXtleHBsYWluUGxhbkRldGFpbHN9IC8+CisgICAgICAg ICAgICA8L3Rib2R5PgorICAgICAgICAgIDwvdGFibGU+CisgICAgICAgIDwvQ2FyZENvbnRlbnQ+ CisgICAgICA8L0NhcmQ+fQorICAgIDwvQm94PgorICApOworfQorCitHcmFwaGljYWwucHJvcFR5 cGVzID0geworICBwbGFuRGF0YTogUHJvcFR5cGVzLm9iamVjdCwKKyAgY3R4OiBQcm9wVHlwZXMu b2JqZWN0LAorfTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL0lt YWdlTWFwcGVyLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vSW1hZ2VNYXBwZXIu anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4wMjgyN2RlNzYKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9JbWFnZU1hcHBlci5q cwpAQCAtMCwwICsxLDMwMCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvKgorICogQSBtYXAgd2hpY2ggaXMgdXNlZCB0 byBmZXRjaCB0aGUgaW1hZ2UgdG8gYmUgZHJhd24gYW5kCisgKiB0ZXh0IHdoaWNoIHdpbGwgYXBw ZWFyIGJlbG93IGl0CisgKi8KKworY29uc3QgSW1hZ2VNYXBwZXIgPSB7CisgICdBZ2dyZWdhdGUn OiB7CisgICAgJ2ltYWdlJzogJ2V4X2FnZ3JlZ2F0ZS5zdmcnLAorICAgICdpbWFnZV90ZXh0Jzog J0FnZ3JlZ2F0ZScsCisgIH0sCisgICdBcHBlbmQnOiB7CisgICAgJ2ltYWdlJzogJ2V4X2FwcGVu ZC5zdmcnLAorICAgICdpbWFnZV90ZXh0JzogJ0FwcGVuZCcsCisgIH0sCisgICdCaXRtYXAgSW5k ZXggU2Nhbic6IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICByZXR1cm4geworICAgICAgJ2ltYWdlJzog J2V4X2JtcF9pbmRleC5zdmcnLAorICAgICAgJ2ltYWdlX3RleHQnOiBkYXRhWydJbmRleCBOYW1l J10sCisgICAgfTsKKyAgfSwKKyAgJ0JpdG1hcCBIZWFwIFNjYW4nOiBmdW5jdGlvbihkYXRhKSB7 CisgICAgcmV0dXJuIHsKKyAgICAgICdpbWFnZSc6ICdleF9ibXBfaGVhcC5zdmcnLAorICAgICAg J2ltYWdlX3RleHQnOiBkYXRhWydSZWxhdGlvbiBOYW1lJ10sCisgICAgfTsKKyAgfSwKKyAgJ0Jp dG1hcEFuZCc6IHsKKyAgICAnaW1hZ2UnOiAnZXhfYm1wX2FuZC5zdmcnLAorICAgICdpbWFnZV90 ZXh0JzogJ0JpdG1hcCBBTkQnLAorICB9LAorICAnQml0bWFwT3InOiB7CisgICAgJ2ltYWdlJzog J2V4X2JtcF9vci5zdmcnLAorICAgICdpbWFnZV90ZXh0JzogJ0JpdG1hcCBPUicsCisgIH0sCisg ICdDVEUgU2Nhbic6IHsKKyAgICAnaW1hZ2UnOiAnZXhfY3RlX3NjYW4uc3ZnJywKKyAgICAnaW1h Z2VfdGV4dCc6ICdDVEUgU2NhbicsCisgIH0sCisgICdGdW5jdGlvbiBTY2FuJzogeworICAgICdp bWFnZSc6ICdleF9yZXN1bHQuc3ZnJywKKyAgICAnaW1hZ2VfdGV4dCc6ICdGdW5jdGlvbiBTY2Fu JywKKyAgfSwKKyAgJ0ZvcmVpZ24gU2Nhbic6IHsKKyAgICAnaW1hZ2UnOiAnZXhfZm9yZWlnbl9z Y2FuLnN2ZycsCisgICAgJ2ltYWdlX3RleHQnOiAnRm9yZWlnbiBTY2FuJywKKyAgfSwKKyAgJ0dh dGhlcic6IHsKKyAgICAnaW1hZ2UnOiAnZXhfZ2F0aGVyX21vdGlvbi5zdmcnLAorICAgICdpbWFn ZV90ZXh0JzogJ0dhdGhlcicsCisgIH0sCisgICdHYXRoZXIgTWVyZ2UnOiB7CisgICAgJ2ltYWdl JzogJ2V4X2dhdGhlcl9tZXJnZS5zdmcnLAorICAgICdpbWFnZV90ZXh0JzogJ0dhdGhlciBNZXJn ZScsCisgIH0sCisgICdHcm91cCc6IHsKKyAgICAnaW1hZ2UnOiAnZXhfZ3JvdXAuc3ZnJywKKyAg ICAnaW1hZ2VfdGV4dCc6ICdHcm91cCcsCisgIH0sCisgICdHcm91cEFnZ3JlZ2F0ZSc6IHsKKyAg ICAnaW1hZ2UnOiAnZXhfYWdncmVnYXRlLnN2ZycsCisgICAgJ2ltYWdlX3RleHQnOiAnR3JvdXAg QWdncmVnYXRlJywKKyAgfSwKKyAgJ0hhc2gnOiB7CisgICAgJ2ltYWdlJzogJ2V4X2hhc2guc3Zn JywKKyAgICAnaW1hZ2VfdGV4dCc6ICdIYXNoJywKKyAgfSwKKyAgJ0hhc2ggSm9pbic6IGZ1bmN0 aW9uKGRhdGEpIHsKKyAgICBpZiAoIWRhdGFbJ0pvaW4gVHlwZSddKSByZXR1cm4geworICAgICAg J2ltYWdlJzogJ2V4X2pvaW4uc3ZnJywKKyAgICAgICdpbWFnZV90ZXh0JzogJ0pvaW4nLAorICAg IH07CisgICAgc3dpdGNoIChkYXRhWydKb2luIFR5cGUnXSkgeworICAgIGNhc2UgJ0FudGknOgor ICAgICAgcmV0dXJuIHsKKyAgICAgICAgJ2ltYWdlJzogJ2V4X2hhc2hfYW50aV9qb2luLnN2Zycs CisgICAgICAgICdpbWFnZV90ZXh0JzogJ0hhc2ggQW50aSBKb2luJywKKyAgICAgIH07CisgICAg Y2FzZSAnU2VtaSc6CisgICAgICByZXR1cm4geworICAgICAgICAnaW1hZ2UnOiAnZXhfaGFzaF9z ZW1pX2pvaW4uc3ZnJywKKyAgICAgICAgJ2ltYWdlX3RleHQnOiAnSGFzaCBTZW1pIEpvaW4nLAor ICAgICAgfTsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIHsKKyAgICAgICAgJ2ltYWdlJzog J2V4X2hhc2guc3ZnJywKKyAgICAgICAgJ2ltYWdlX3RleHQnOiBTdHJpbmcoJ0hhc2ggJyArIGRh dGFbJ0pvaW4gVHlwZSddICsgJyBKb2luJyksCisgICAgICB9OworICAgIH0KKyAgfSwKKyAgJ0hh c2hBZ2dyZWdhdGUnOiB7CisgICAgJ2ltYWdlJzogJ2V4X2FnZ3JlZ2F0ZS5zdmcnLAorICAgICdp bWFnZV90ZXh0JzogJ0hhc2ggQWdncmVnYXRlJywKKyAgfSwKKyAgJ0luZGV4IE9ubHkgU2Nhbic6 IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICByZXR1cm4geworICAgICAgJ2ltYWdlJzogJ2V4X2luZGV4 X29ubHlfc2Nhbi5zdmcnLAorICAgICAgJ2ltYWdlX3RleHQnOiBkYXRhWydJbmRleCBOYW1lJ10s CisgICAgfTsKKyAgfSwKKyAgJ0luZGV4IFNjYW4nOiBmdW5jdGlvbihkYXRhKSB7CisgICAgcmV0 dXJuIHsKKyAgICAgICdpbWFnZSc6ICdleF9pbmRleF9zY2FuLnN2ZycsCisgICAgICAnaW1hZ2Vf dGV4dCc6IGRhdGFbJ0luZGV4IE5hbWUnXSwKKyAgICB9OworICB9LAorICAnSW5kZXggU2NhbiBC YWNrd29yZCc6IHsKKyAgICAnaW1hZ2UnOiAnZXhfaW5kZXhfc2Nhbi5zdmcnLAorICAgICdpbWFn ZV90ZXh0JzogJ0luZGV4IEJhY2t3YXJkIFNjYW4nLAorICB9LAorICAnTGltaXQnOiB7CisgICAg J2ltYWdlJzogJ2V4X2xpbWl0LnN2ZycsCisgICAgJ2ltYWdlX3RleHQnOiAnTGltaXQnLAorICB9 LAorICAnTG9ja1Jvd3MnOiB7CisgICAgJ2ltYWdlJzogJ2V4X2xvY2tfcm93cy5zdmcnLAorICAg ICdpbWFnZV90ZXh0JzogJ0xvY2sgUm93cycsCisgIH0sCisgICdNYXRlcmlhbGl6ZSc6IHsKKyAg ICAnaW1hZ2UnOiAnZXhfbWF0ZXJpYWxpemUuc3ZnJywKKyAgICAnaW1hZ2VfdGV4dCc6ICdNYXRl cmlhbGl6ZScsCisgIH0sCisgICdNZXJnZSBBcHBlbmQnOiB7CisgICAgJ2ltYWdlJzogJ2V4X21l cmdlX2FwcGVuZC5zdmcnLAorICAgICdpbWFnZV90ZXh0JzogJ01lcmdlIEFwcGVuZCcsCisgIH0s CisgICdNZXJnZSBKb2luJzogZnVuY3Rpb24oZGF0YSkgeworICAgIHN3aXRjaCAoZGF0YVsnSm9p biBUeXBlJ10pIHsKKyAgICBjYXNlICdBbnRpJzoKKyAgICAgIHJldHVybiB7CisgICAgICAgICdp bWFnZSc6ICdleF9tZXJnZV9hbnRpX2pvaW4uc3ZnJywKKyAgICAgICAgJ2ltYWdlX3RleHQnOiAn TWVyZ2UgQW50aSBKb2luJywKKyAgICAgIH07CisgICAgY2FzZSAnU2VtaSc6CisgICAgICByZXR1 cm4geworICAgICAgICAnaW1hZ2UnOiAnZXhfbWVyZ2Vfc2VtaV9qb2luLnN2ZycsCisgICAgICAg ICdpbWFnZV90ZXh0JzogJ01lcmdlIFNlbWkgSm9pbicsCisgICAgICB9OworICAgIGRlZmF1bHQ6 CisgICAgICByZXR1cm4geworICAgICAgICAnaW1hZ2UnOiAnZXhfbWVyZ2Uuc3ZnJywKKyAgICAg ICAgJ2ltYWdlX3RleHQnOiBTdHJpbmcoJ01lcmdlICcgKyBkYXRhWydKb2luIFR5cGUnXSArICcg Sm9pbicpLAorICAgICAgfTsKKyAgICB9CisgIH0sCisgICdNb2RpZnlUYWJsZSc6IGZ1bmN0aW9u KGRhdGEpIHsKKyAgICBzd2l0Y2ggKGRhdGFbJ09wZXJhdGlvbiddKSB7CisgICAgY2FzZSAnSW5z ZXJ0JzoKKyAgICAgIHJldHVybiB7CisgICAgICAgICdpbWFnZSc6ICdleF9pbnNlcnQuc3ZnJywK KyAgICAgICAgJ2ltYWdlX3RleHQnOiAnSW5zZXJ0JywKKyAgICAgIH07CisgICAgY2FzZSAnVXBk YXRlJzoKKyAgICAgIHJldHVybiB7CisgICAgICAgICdpbWFnZSc6ICdleF91cGRhdGUuc3ZnJywK KyAgICAgICAgJ2ltYWdlX3RleHQnOiAnVXBkYXRlJywKKyAgICAgIH07CisgICAgY2FzZSAnRGVs ZXRlJzoKKyAgICAgIHJldHVybiB7CisgICAgICAgICdpbWFnZSc6ICdleF9kZWxldGUuc3ZnJywK KyAgICAgICAgJ2ltYWdlX3RleHQnOiAnRGVsZXRlJywKKyAgICAgIH07CisgICAgfQorICB9LAor ICAnTmFtZWQgVHVwbGVzdG9yZSBTY2FuJzogeworICAgICdpbWFnZSc6ICdleF9uYW1lZF90dXBs ZXN0b3JlX3NjYW4uc3ZnJywKKyAgICAnaW1hZ2VfdGV4dCc6ICdOYW1lZCBUdXBsZXN0b3JlIFNj YW4nLAorICB9LAorICAnTmVzdGVkIExvb3AnOiBmdW5jdGlvbihkYXRhKSB7CisgICAgc3dpdGNo IChkYXRhWydKb2luIFR5cGUnXSkgeworICAgIGNhc2UgJ0FudGknOgorICAgICAgcmV0dXJuIHsK KyAgICAgICAgJ2ltYWdlJzogJ2V4X25lc3RlZF9sb29wX2FudGlfam9pbi5zdmcnLAorICAgICAg ICAnaW1hZ2VfdGV4dCc6ICdOZXN0ZWQgTG9vcCBBbnRpIEpvaW4nLAorICAgICAgfTsKKyAgICBj YXNlICdTZW1pJzoKKyAgICAgIHJldHVybiB7CisgICAgICAgICdpbWFnZSc6ICdleF9uZXN0ZWRf bG9vcF9zZW1pX2pvaW4uc3ZnJywKKyAgICAgICAgJ2ltYWdlX3RleHQnOiAnTmVzdGVkIExvb3Ag U2VtaSBKb2luJywKKyAgICAgIH07CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiB7CisgICAg ICAgICdpbWFnZSc6ICdleF9uZXN0ZWQuc3ZnJywKKyAgICAgICAgJ2ltYWdlX3RleHQnOiAnTmVz dGVkIExvb3AgJyArIGRhdGFbJ0pvaW4gVHlwZSddICsgJyBKb2luJywKKyAgICAgIH07CisgICAg fQorICB9LAorICAnUHJvamVjdFNldCc6IHsKKyAgICAnaW1hZ2UnOiAnZXhfcHJvamVjdHNldC5z dmcnLAorICAgICdpbWFnZV90ZXh0JzogJ1Byb2plY3RTZXQnLAorICB9LAorICAnUmVjdXJzaXZl IFVuaW9uJzogeworICAgICdpbWFnZSc6ICdleF9yZWN1cnNpdmVfdW5pb24uc3ZnJywKKyAgICAn aW1hZ2VfdGV4dCc6ICdSZWN1cnNpdmUgVW5pb24nLAorICB9LAorICAnUmVzdWx0JzogeworICAg ICdpbWFnZSc6ICdleF9yZXN1bHQuc3ZnJywKKyAgICAnaW1hZ2VfdGV4dCc6ICdSZXN1bHQnLAor ICB9LAorICAnU2FtcGxlIFNjYW4nOiB7CisgICAgJ2ltYWdlJzogJ2V4X3NjYW4uc3ZnJywKKyAg ICAnaW1hZ2VfdGV4dCc6ICdTYW1wbGUgU2NhbicsCisgIH0sCisgICdTY2FuJzogeworICAgICdp bWFnZSc6ICdleF9zY2FuLnN2ZycsCisgICAgJ2ltYWdlX3RleHQnOiAnU2NhbicsCisgIH0sCisg ICdTZWVrJzogeworICAgICdpbWFnZSc6ICdleF9zZWVrLnN2ZycsCisgICAgJ2ltYWdlX3RleHQn OiAnU2VlaycsCisgIH0sCisgICdTZXRPcCc6IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICBsZXQgc3Ry YXRlZ3kgPSBkYXRhWydTdHJhdGVneSddLAorICAgICAgY29tbWFuZCA9IGRhdGFbJ0NvbW1hbmQn XTsKKworICAgIGlmIChzdHJhdGVneSA9PSAnSGFzaGVkJykgeworICAgICAgaWYgKGNvbW1hbmQu c3RhcnRzV2l0aCgnSW50ZXJzZWN0JykpIHsKKyAgICAgICAgaWYgKGNvbW1hbmQgPT0gJ0ludGVy c2VjdCBBbGwnKQorICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICAnaW1hZ2UnOiAnZXhf aGFzaF9zZXRvcF9pbnRlcnNlY3RfYWxsLnN2ZycsCisgICAgICAgICAgICAnaW1hZ2VfdGV4dCc6 ICdIYXNoZWQgSW50ZXJzZWN0IEFsbCcsCisgICAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHsK KyAgICAgICAgICAnaW1hZ2UnOiAnZXhfaGFzaF9zZXRvcF9pbnRlcnNlY3Quc3ZnJywKKyAgICAg ICAgICAnaW1hZ2VfdGV4dCc6ICdIYXNoZWQgSW50ZXJzZWN0JywKKyAgICAgICAgfTsKKyAgICAg IH0gZWxzZSBpZiAoY29tbWFuZC5zdGFydHNXaXRoKCdFeGNlcHQnKSkgeworICAgICAgICBpZiAo Y29tbWFuZCA9PSAnRXhjZXB0IEFsbCcpCisgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg ICdpbWFnZSc6ICdleF9oYXNoX3NldG9wX2V4Y2VwdF9hbGwuc3ZnJywKKyAgICAgICAgICAgICdp bWFnZV90ZXh0JzogJ0hhc2hlZCBFeGNlcHQgQWxsJywKKyAgICAgICAgICB9OworICAgICAgICBy ZXR1cm4geworICAgICAgICAgICdpbWFnZSc6ICdleF9oYXNoX3NldG9wX2V4Y2VwdC5zdmcnLAor ICAgICAgICAgICdpbWFnZV90ZXh0JzogJ0hhc2ggRXhjZXB0JywKKyAgICAgICAgfTsKKyAgICAg IH0KKyAgICAgIHJldHVybiB7CisgICAgICAgICdpbWFnZSc6ICdleF9oYXNoX3NldG9wX3Vua25v d24uc3ZnJywKKyAgICAgICAgJ2ltYWdlX3RleHQnOiAnSGFzaGVkIFNldE9wIFVua25vd24nLAor ICAgICAgfTsKKyAgICB9CisgICAgcmV0dXJuIHsKKyAgICAgICdpbWFnZSc6ICdleF9zZXRvcC5z dmcnLAorICAgICAgJ2ltYWdlX3RleHQnOiAnU2V0T3AnLAorICAgIH07CisgIH0sCisgICdTZXEg U2Nhbic6IGZ1bmN0aW9uKGRhdGEpIHsKKyAgICByZXR1cm4geworICAgICAgJ2ltYWdlJzogJ2V4 X3NjYW4uc3ZnJywKKyAgICAgICdpbWFnZV90ZXh0JzogZGF0YVsnUmVsYXRpb24gTmFtZSddLAor ICAgIH07CisgIH0sCisgICdTdWJxdWVyeSBTY2FuJzogeworICAgICdpbWFnZSc6ICdleF9zdWJw bGFuLnN2ZycsCisgICAgJ2ltYWdlX3RleHQnOiAnU3ViUXVlcnkgU2NhbicsCisgIH0sCisgICdT b3J0JzogeworICAgICdpbWFnZSc6ICdleF9zb3J0LnN2ZycsCisgICAgJ2ltYWdlX3RleHQnOiAn U29ydCcsCisgIH0sCisgICdUaWQgU2Nhbic6IHsKKyAgICAnaW1hZ2UnOiAnZXhfdGlkX3NjYW4u c3ZnJywKKyAgICAnaW1hZ2VfdGV4dCc6ICdUaWQgU2NhbicsCisgIH0sCisgICdUYWJsZSBGdW5j dGlvbiBTY2FuJzogeworICAgICdpbWFnZSc6ICdleF90YWJsZV9mdW5jX3NjYW4uc3ZnJywKKyAg ICAnaW1hZ2VfdGV4dCc6ICdUYWJsZSBGdW5jdGlvbiBTY2FuJywKKyAgfSwKKyAgJ1VuaXF1ZSc6 IHsKKyAgICAnaW1hZ2UnOiAnZXhfdW5pcXVlLnN2ZycsCisgICAgJ2ltYWdlX3RleHQnOiAnVW5p cXVlJywKKyAgfSwKKyAgJ1ZhbHVlcyBTY2FuJzogeworICAgICdpbWFnZSc6ICdleF92YWx1ZXNf c2Nhbi5zdmcnLAorICAgICdpbWFnZV90ZXh0JzogJ1ZhbHVlcyBTY2FuJywKKyAgfSwKKyAgJ1dp bmRvd0FnZyc6IHsKKyAgICAnaW1hZ2UnOiAnZXhfd2luZG93X2FnZ3JlZ2F0ZS5zdmcnLAorICAg ICdpbWFnZV90ZXh0JzogJ1dpbmRvdyBBZ2dyZWdhdGUnLAorICB9LAorICAnV29ya1RhYmxlIFNj YW4nOiB7CisgICAgJ2ltYWdlJzogJ2V4X3dvcmt0YWJsZV9zY2FuLnN2ZycsCisgICAgJ2ltYWdl X3RleHQnOiAnV29ya1RhYmxlIFNjYW4nLAorICB9LAorICAnVW5kZWZpbmVkJzogeworICAgICdp bWFnZSc6ICdleF91bmtub3duLnN2ZycsCisgICAgJ2ltYWdlX3RleHQnOiAnVW5kZWZpbmVkJywK KyAgfSwKK307CisKK2V4cG9ydCBkZWZhdWx0IEltYWdlTWFwcGVyOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vY3NzL2V4cGxhaW4uY3NzIGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL0V4cGxhaW4vY3NzL2V4cGxhaW4uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMC4uZDFmOGJiYjI3Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL0V4cGxhaW4vY3NzL2V4cGxhaW4uY3NzCkBAIC0wLDAgKzEsMjMgQEAKKy5leHBs YWluLXRvb2x0aXAgeworICBkaXNwbGF5OiB0YWJsZS1jZWxsOworICB0ZXh0LWFsaWduOiBsZWZ0 OworICB3aGl0ZS1zcGFjZTogbm93cmFwOworICBwYWRkaW5nOiAycHggIWltcG9ydGFudDsKKyAg Zm9udC1zaXplOiBzbWFsbDsKK30KKwordGQuZXhwbGFpbi10b29sdGlwLXZhbCB7CisgIGRpc3Bs YXk6IHRhYmxlLWNlbGw7CisgIHRleHQtYWxpZ246IGxlZnQ7CisgIHdoaXRlLXNwYWNlOiBwcmUt d3JhcDsKKyAgcGFkZGluZzogMnB4ICFpbXBvcnRhbnQ7CisgIGZvbnQtc2l6ZTogc21hbGw7Cisg IGZvbnQtd2VpZ2h0OiBub3JtYWw7Cit9CisKKy5wZ2FkbWluLXRvb2x0aXAtdGFibGUgeworICBi b3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOworICBib3JkZXItc3BhY2luZzogMXB4OworICB0b3A6 IGF1dG87CisgIGxlZnQ6IGF1dG87Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMv anMvRXhwbGFpbi9pbWcvZXhfYWdncmVnYXRlLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9F eHBsYWluL2ltZy9leF9hZ2dyZWdhdGUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uZjYzNDJlNTBkCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL0V4cGxhaW4vaW1nL2V4X2FnZ3JlZ2F0ZS5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxu cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+ PHN0eWxlPi5jbHMtMXtmaWxsOiNmMGVjYjY7fS5jbHMtMntmaWxsOiNjMThmMzU7fS5jbHMtMywu Y2xzLTh7ZmlsbDojYzhmZmFjO30uY2xzLTR7ZmlsbDojNDhkNjAxO30uY2xzLTV7ZmlsbDojZDNk NGYzO30uY2xzLTZ7ZmlsbDojNjY2YmQxO30uY2xzLTExLC5jbHMtNywuY2xzLTl7ZmlsbDpub25l O30uY2xzLTd7c3Ryb2tlOiM2NjZiZDE7fS5jbHMtMTAsLmNscy0xMSwuY2xzLTcsLmNscy05e3N0 cm9rZS1saW5lam9pbjpyb3VuZDt9LmNscy03LC5jbHMtOXtvcGFjaXR5OjAuODt9LmNscy04e3N0 cm9rZTojNDhkNjAxO3N0cm9rZS1taXRlcmxpbWl0OjEwO29wYWNpdHk6MC43O30uY2xzLTl7c3Ry b2tlOiNjMThmMzU7fS5jbHMtMTB7ZmlsbDojMzQ0OTVlO30uY2xzLTEwLC5jbHMtMTF7c3Ryb2tl OiMzNDQ5NWU7fS5jbHMtMTF7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7fTwvc3R5bGU+PC9kZWZzPjx0 aXRsZT5leF9hZ2dyZWdhdGU8L3RpdGxlPjxnIGlkPSJleF9icm9hZGNhc3RfbW90aW9uIj48cmVj dCBjbGFzcz0iY2xzLTEiIHg9IjM4LjQyIiB5PSIyNy4yNSIgd2lkdGg9IjguMjgiIGhlaWdodD0i OSIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQ2LjIsMjcuNzV2OEgzOC45MnYtOEg0Ni4ybTEt MUgzNy45MnYxMEg0Ny4ydi0xMFoiLz48cmVjdCBjbGFzcz0iY2xzLTEiIHg9IjQ2LjcyIiB5PSIy Ny4yNSIgd2lkdGg9IjguMjgiIGhlaWdodD0iOSIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU0 LjUsMjcuNzV2OEg0Ny4yMnYtOEg1NC41bTEtMUg0Ni4yMnYxMEg1NS41di0xMFoiLz48cGF0aCBj bGFzcz0iY2xzLTMiIGQ9Ik0zOS45Miw0NS4yM2MtMS4zNywwLTEuNS0uMTMtMS41LTEuNXYtNy41 SDQ2Ljd2OVoiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik00Ni4yLDM2LjczdjhIMzkuOTJhMy4y NSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJ2LTdINDYuMm0xLTFI MzcuOTJ2OGMwLDEuNjUuMzUsMiwyLDJINDcuMnYtMTBaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBk PSJNNDYuNzIsNDUuMjN2LTlINTV2Ny41YzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGgg Y2xhc3M9ImNscy00IiBkPSJNNTQuNSwzNi43M3Y3YTMuMjksMy4yOSwwLDAsMS0uMDguOSwyLjE4 LDIuMTgsMCwwLDEtLjkyLjFINDcuMjJ2LThINTQuNW0xLTFINDYuMjJ2MTBINTMuNWMxLjY1LDAs Mi0uMzUsMi0ydi04WiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTM4LjQyLDI3LjI3di03LjVj MC0xLjM3LjEzLTEuNSwxLjUtMS41SDQ2Ljd2OVoiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik00 Ni4yLDE4Ljc3djhIMzguOTJ2LTdhMy4yOSwzLjI5LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCww LDEsLjkyLS4xSDQ2LjJtMS0xSDM5LjkyYy0xLjY1LDAtMiwuMzUtMiwydjhINDcuMnYtMTBaIi8+ PHBhdGggY2xhc3M9ImNscy01IiBkPSJNNDYuNzIsMjcuMjd2LTlINTMuNWMxLjM3LDAsMS41LjEz LDEuNSwxLjV2Ny41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTUzLjUsMTguNzdhMy4yNSwz LjI1LDAsMCwxLC45LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4xLjkydjdINDcuMjJ2LThINTMuNW0w LTFINDYuMjJ2MTBINTUuNXYtOGMwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRoIGNsYXNzPSJjbHMt NSIgZD0iTTksMjUuNDNWMTMuOTNjMC0xLjM3LjEzLTEuNSwxLjUtMS41aDUuNzh2MTNaIi8+PHBh dGggY2xhc3M9ImNscy02IiBkPSJNMTUuODEsMTIuOTN2MTJIOS41M3YtMTFhMy4yOCwzLjI4LDAs MCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDUuMjhtMS0xSDEwLjUzYy0xLjY1LDAt MiwuMzUtMiwydjEyaDguMjh2LTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTE2LjMyLDI1 LjQzdi0xM0gyMi4xYzEuMzcsMCwxLjUuMTMsMS41LDEuNXYxMS41WiIvPjxwYXRoIGNsYXNzPSJj bHMtNiIgZD0iTTIyLjEsMTIuOTNBMy4yNSwzLjI1LDAsMCwxLDIzLDEzaDBhMi4xOCwyLjE4LDAs MCwxLC4xLjkydjExSDE2Ljgydi0xMkgyMi4xbTAtMUgxNS44MnYxNEgyNC4xdi0xMmMwLTEuNjUt LjM1LTItMi0yWiIvPjxsaW5lIGNsYXNzPSJjbHMtNyIgeDE9IjkuMDYiIHkxPSIxOC43NyIgeDI9 IjE1LjgiIHkyPSIxOC43NyIvPjxsaW5lIGNsYXNzPSJjbHMtNyIgeDE9IjE2LjA4IiB5MT0iMTgu NzciIHgyPSIyMy41NyIgeTI9IjE4Ljc3Ii8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTAuNTMs NTEuNDVDOS4xNiw1MS40NSw5LDUxLjMzLDksNTBWMzguNDVoNy4yOHYxM1oiLz48cGF0aCBjbGFz cz0iY2xzLTQiIGQ9Ik0xNS44MSwzOVY1MUgxMC41M2EzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBh Mi4xOCwyLjE4LDAsMCwxLS4xLS45MlYzOWg2LjI4bTEtMUg4LjUzVjUwYzAsMS42NS4zNSwyLDIs Mmg2LjI4VjM4WiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE2LjMyLDUxLjQ1di0xM0gyMy42 VjUwYzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNMjMu MSwzOVY1MGEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xSDE2Ljgy VjM5SDIzLjFtMS0xSDE1LjgyVjUySDIyLjFjMS42NSwwLDItLjM1LDItMlYzOFoiLz48bGluZSBj bGFzcz0iY2xzLTgiIHgxPSIxNi4wOCIgeTE9IjQ0LjgiIHgyPSIyMy41NyIgeTI9IjQ0LjgiLz48 bGluZSBjbGFzcz0iY2xzLTgiIHgxPSI5LjA2IiB5MT0iNDQuOCIgeDI9IjE1LjgiIHkyPSI0NC44 Ii8+PHJlY3QgY2xhc3M9ImNscy0xIiB4PSIxNi4zMiIgeT0iMjUuNDMiIHdpZHRoPSI3LjI4IiBo ZWlnaHQ9IjEzIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjMuMSwyNS45M3YxMkgxNi44MnYt MTJIMjMuMW0xLTFIMTUuODJ2MTRIMjQuMXYtMTRaIi8+PGxpbmUgY2xhc3M9ImNscy05IiB4MT0i MTYuMDgiIHkxPSIzMS43OCIgeDI9IjIzLjU3IiB5Mj0iMzEuNzgiLz48cmVjdCBjbGFzcz0iY2xz LTEiIHg9IjkuMDMiIHk9IjI1LjQzIiB3aWR0aD0iNy4yOCIgaGVpZ2h0PSIxMyIvPjxwYXRoIGNs YXNzPSJjbHMtMiIgZD0iTTE1LjgxLDI1LjkzdjEySDkuNTN2LTEyaDYuMjhtMS0xSDguNTN2MTRo OC4yOHYtMTRaIi8+PGxpbmUgY2xhc3M9ImNscy05IiB4MT0iOS4wNiIgeTE9IjMxLjc4IiB4Mj0i MTUuOCIgeTI9IjMxLjc4Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xMCIgcG9pbnRzPSIzNy4wMSAy My4xMSAzMy44NyAyNC4xMiAzNS4xNiAyMC4zOSAzNy4wMSAyMy4xMSIvPjxsaW5lIGNsYXNzPSJj bHMtMTEiIHgxPSIzNC45MSIgeTE9IjIyLjU3IiB4Mj0iMjUiIHkyPSIxOS4wNCIvPjxwb2x5Z29u IGNsYXNzPSJjbHMtMTAiIHBvaW50cz0iMzcuMDEgNDAuODcgMzMuODcgMzkuODcgMzUuMTYgNDMu NiAzNy4wMSA0MC44NyIvPjxsaW5lIGNsYXNzPSJjbHMtMTEiIHgxPSIzNC45MSIgeTE9IjQxLjQy IiB4Mj0iMjUiIHkyPSI0NC45NSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTAiIHBvaW50cz0iMzcu MDcgMzEuNzggMzQuNDMgMzMuNzYgMzQuNDMgMjkuOCAzNy4wNyAzMS43OCIvPjxsaW5lIGNsYXNz PSJjbHMtMTEiIHgxPSIzNC44OSIgeTE9IjMxLjg4IiB4Mj0iMjUiIHkyPSIzMS45MiIvPjwvZz48 L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfYXBwZW5kLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9FeHBsYWluL2ltZy9leF9hcHBlbmQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMC4uYzQzNTk3Yzg0Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL0V4cGxhaW4vaW1nL2V4X2FwcGVuZC5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxu cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+ PHN0eWxlPi5jbHMtMXtmaWxsOiM1MjhkMTk7fS5jbHMtMSwuY2xzLTJ7c3Ryb2tlOiM1MjhkMTk7 fS5jbHMtMSwuY2xzLTExLC5jbHMtMiwuY2xzLTh7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO30uY2xz LTExLC5jbHMtMiwuY2xzLTh7ZmlsbDpub25lO30uY2xzLTJ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7 c3Ryb2tlLXdpZHRoOjJweDt9LmNscy0ze2ZpbGw6I2YwZWNiNjt9LmNscy00e2ZpbGw6IzM1ODhj MTt9LmNscy01e2ZpbGw6I2FkZGZmMzt9LmNscy02e2ZpbGw6IzI5ODBiOTt9LmNscy03e29wYWNp dHk6MC43O30uY2xzLTh7c3Ryb2tlOiNjMThmMzU7fS5jbHMtOXtmaWxsOiNkM2Q0ZjM7fS5jbHMt MTB7ZmlsbDojNjY2YmQxO30uY2xzLTExe3N0cm9rZTojNjY2YmQxO308L3N0eWxlPjwvZGVmcz48 dGl0bGU+ZXhfYXBwZW5kPC90aXRsZT48ZyBpZD0iZXhfYXBwZW5kIj48cG9seWdvbiBjbGFzcz0i Y2xzLTEiIHBvaW50cz0iMjMuMDQgMzguMTEgMjUuNTcgNDEuNDkgMjAuNTEgNDEuNDkgMjMuMDQg MzguMTEiLz48bGluZSBjbGFzcz0iY2xzLTIiIHgxPSIyMy4wNCIgeTE9IjQxLjQ5IiB4Mj0iMjMu MDQiIHkyPSI0NC40NyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSI0MC45OCAzOC4x MSA0My41IDQxLjQ5IDM4LjQ1IDQxLjQ5IDQwLjk4IDM4LjExIi8+PGxpbmUgY2xhc3M9ImNscy0y IiB4MT0iNDAuOTciIHkxPSI0MS40OSIgeDI9IjQwLjk3IiB5Mj0iNDQuNDciLz48cGF0aCBjbGFz cz0iY2xzLTMiIGQ9Ik04LDM0LjVjLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVWMTIuNWg1MVYzM2Mw LDEuMzctLjEzLDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTU3LDEzVjMz YTMuMjgsMy4yOCwwLDAsMS0uMDguOUEyLjE4LDIuMTgsMCwwLDEsNTYsMzRIOGEzLjI1LDMuMjUs MCwwLDEtLjktLjA4aDBBMi4xOCwyLjE4LDAsMCwxLDcsMzNWMTNINTdtMS0xSDZWMzNjMCwxLjY1 LjM1LDIsMiwySDU2YzEuNjUsMCwyLS4zNSwyLTJWMTJaIi8+PHBhdGggY2xhc3M9ImNscy01IiBk PSJNNDYuMzgsMTIuNXYtNkg1NmMxLjM3LDAsMS41LjEzLDEuNSwxLjV2NC41WiIvPjxwYXRoIGNs YXNzPSJjbHMtNiIgZD0iTTU2LDdhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBBMi4xOCwyLjE4LDAs MCwxLDU3LDh2NEg0Ni44OFY3SDU2bTAtMUg0NS44OHY3SDU4VjhjMC0xLjY1LS4zNS0yLTItMloi Lz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik02LjUyLDEyLjVWOGMwLTEuMzcuMTMtMS41LDEuNS0x LjVIMTcuNnY2WiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTE3LjEsN3Y1SDdWOGEzLjI4LDMu MjgsMCwwLDEsLjA4LS45QTIuMTgsMi4xOCwwLDAsMSw4LDdIMTcuMW0xLTFIOEM2LjM3LDYsNiw2 LjM1LDYsOHY1SDE4LjFWNloiLz48cmVjdCBjbGFzcz0iY2xzLTUiIHg9IjM2LjgyIiB5PSI2LjUi IHdpZHRoPSI5LjU2IiBoZWlnaHQ9IjYiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik00NS44OCw3 djVIMzcuMzFWN2g4LjU2bTEtMUgzNi4zMnY3SDQ2Ljg4VjZaIi8+PHJlY3QgY2xhc3M9ImNscy01 IiB4PSIyNy4yNSIgeT0iNi41IiB3aWR0aD0iOS41NiIgaGVpZ2h0PSI2Ii8+PHBhdGggY2xhc3M9 ImNscy02IiBkPSJNMzYuMzIsN3Y1SDI3Ljc1VjdoOC41Nm0xLTFIMjYuNzZ2N0gzNy4zMlY2WiIv PjxyZWN0IGNsYXNzPSJjbHMtNSIgeD0iMTcuNjIiIHk9IjYuNSIgd2lkdGg9IjkuNjIiIGhlaWdo dD0iNiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTI2Ljc0LDd2NUgxOC4xMlY3aDguNjFtMS0x SDE3LjEzdjdIMjcuNzRWNloiLz48ZyBjbGFzcz0iY2xzLTciPjxsaW5lIGNsYXNzPSJjbHMtOCIg eDE9IjE3LjYxIiB5MT0iMzQiIHgyPSIxNy42MSIgeTI9IjEzIi8+PGxpbmUgY2xhc3M9ImNscy04 IiB4MT0iMzYuOCIgeTE9IjM0IiB4Mj0iMzYuOCIgeTI9IjEzIi8+PGxpbmUgY2xhc3M9ImNscy04 IiB4MT0iMjcuMjEiIHkxPSIzNCIgeDI9IjI3LjIxIiB5Mj0iMTMiLz48bGluZSBjbGFzcz0iY2xz LTgiIHgxPSI0Ni4zOSIgeTE9IjM0IiB4Mj0iNDYuMzkiIHkyPSIxMyIvPjxsaW5lIGNsYXNzPSJj bHMtOCIgeDE9IjciIHkxPSIxOS44NSIgeDI9IjU3LjI1IiB5Mj0iMTkuODUiLz48bGluZSBjbGFz cz0iY2xzLTgiIHgxPSI3IiB5MT0iMjcuMjMiIHgyPSI1Ny4yNSIgeTI9IjI3LjIzIi8+PC9nPjxy ZWN0IGNsYXNzPSJjbHMtOSIgeD0iNi41MiIgeT0iNDguNSIgd2lkdGg9IjUwLjk4IiBoZWlnaHQ9 IjkiIHJ4PSIxLjUiIHJ5PSIxLjUiLz48cGF0aCBjbGFzcz0iY2xzLTEwIiBkPSJNNTYsNDlhMy4y NSwzLjI1LDAsMCwxLC45LjA4aDBBMi4xOCwyLjE4LDAsMCwxLDU3LDUwdjZhMy4yOCwzLjI4LDAs MCwxLS4wOC45QTIuMTgsMi4xOCwwLDAsMSw1Niw1N0g4YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDho MEEyLjE4LDIuMTgsMCwwLDEsNyw1NlY1MGEzLjI4LDMuMjgsMCwwLDEsLjA4LS45QTIuMTgsMi4x OCwwLDAsMSw4LDQ5SDU2bTAtMUg4Yy0xLjY1LDAtMiwuMzUtMiwydjZjMCwxLjY1LjM1LDIsMiwy SDU2YzEuNjUsMCwyLS4zNSwyLTJWNTBjMC0xLjY1LS4zNS0yLTItMloiLz48ZyBjbGFzcz0iY2xz LTciPjxsaW5lIGNsYXNzPSJjbHMtMTEiIHgxPSIxNy42IiB5MT0iNTcuMDYiIHgyPSIxNy42IiB5 Mj0iNDguODMiLz48bGluZSBjbGFzcz0iY2xzLTExIiB4MT0iMjcuMiIgeTE9IjU3LjA2IiB4Mj0i MjcuMiIgeTI9IjQ4LjgzIi8+PGxpbmUgY2xhc3M9ImNscy0xMSIgeDE9IjM2LjgiIHkxPSI1Ny4w NiIgeDI9IjM2LjgiIHkyPSI0OC44MyIvPjxsaW5lIGNsYXNzPSJjbHMtMTEiIHgxPSI0Ni40IiB5 MT0iNTcuMDYiIHgyPSI0Ni40IiB5Mj0iNDguODMiLz48L2c+PC9nPjwvc3ZnPgpcIE5vIG5ld2xp bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBs YWluL2ltZy9leF9ibXBfYW5kLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2lt Zy9leF9ibXBfYW5kLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjQz OTMxNzhlYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWlu L2ltZy9leF9ibXBfYW5kLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3 LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0x LC5jbHMtOHtmaWxsOiMzNDQ5NWU7fS5jbHMtMntmaWxsOiNkM2Q0ZjM7fS5jbHMtM3tmaWxsOiM2 NjZiZDE7fS5jbHMtNHtmaWxsOiNhZGRmZjM7fS5jbHMtNXtmaWxsOiMyOTgwYjk7fS5jbHMtNntv cGFjaXR5OjAuNzt9LmNscy0xMSwuY2xzLTd7ZmlsbDpub25lO3N0cm9rZS1saW5lam9pbjpyb3Vu ZDt9LmNscy03e3N0cm9rZTojNjY2YmQxO30uY2xzLTh7Zm9udC1zaXplOjZweDtmb250LWZhbWls eTpIZWx2ZXRpY2EtQm9sZCwgSGVsdmV0aWNhO2ZvbnQtd2VpZ2h0OjcwMDt9LmNscy05e2ZpbGw6 I2YwZWNiNjt9LmNscy0xMHtmaWxsOiNjMThmMzU7fS5jbHMtMTF7c3Ryb2tlOiNjMThmMzU7fTwv c3R5bGU+PC9kZWZzPjx0aXRsZT5leF9ibXBfYW5kPC90aXRsZT48ZyBpZD0iZXhfYm1wX2FuZCI+ PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjYsMjguODlhNS4yLDUuMiwwLDAsMS0uNDYtMi4wNyw0 LjYyLDQuNjIsMCwwLDEsMS40LTMuNDVBNS4xNCw1LjE0LDAsMCwxLDMwLjY5LDIyYTQuNjgsNC42 OCwwLDAsMSwzLjQ5LDEuMjcsNC4xOSw0LjE5LDAsMCwxLDEuMjYsMyw1LjQ3LDUuNDcsMCwwLDEt MS4zLDMuNjJBMTIuMjQsMTIuMjQsMCwwLDEsMzEuNiwzMmwzLjkxLDQuNjlRMzUuOSwzNS41Niwz NiwzNXQuMzEtMS42MmgyLjVhMTYsMTYsMCwwLDEtMSw0cS0uNzQsMS45LS43NCwxLjUzbDMuODEs NC42NUgzNy41NWwtMi0yLjQ2YTEwLjU1LDEwLjU1LDAsMCwxLTIuMTksMS45LDcuNTUsNy41NSww LDAsMS00LDEuMDVRMjYsNDQsMjQuNDksNDIuMTlBNi4xOCw2LjE4LDAsMCwxLDIzLDM4LjExLDUu ODksNS44OSwwLDAsMSwyNC40NSwzNGExNi4xNiwxNi4xNiwwLDAsMSwzLjM3LTIuNDlBMTEuMDYs MTEuMDYsMCwwLDEsMjYsMjguODlabTYuMzMsMTJhNi4wOSw2LjA5LDAsMCwwLDEuNzktMS42N2wt NC44NS01LjkzYTE0Ljc0LDE0Ljc0LDAsMCwwLTIuNjgsMi4xMSwzLjkzLDMuOTMsMCwwLDAtMSwy LjY4LDMuMDgsMy4wOCwwLDAsMCwxLjI1LDIuNjQsNC4zOSw0LjM5LDAsMCwwLDIuNjYuOTJBNS4w NSw1LjA1LDAsMCwwLDMyLjMzLDQwLjkzWm0tLjIxLTEyLjJBMy4zMSwzLjMxLDAsMCwwLDMzLDI2 LjUzYTIuMzUsMi4zNSwwLDAsMC0uNjMtMS42NCwyLjE3LDIuMTcsMCwwLDAtMS42OS0uNjksMi4y NiwyLjI2LDAsMCwwLTIuNTYsMi4zLDMuMjcsMy4yNywwLDAsMCwuNDksMS43MSwxNS44MywxNS44 MywwLDAsMCwxLjY0LDIuMTJBMTEuMDgsMTEuMDgsMCwwLDAsMzIuMTIsMjguNzRaIi8+PHJlY3Qg Y2xhc3M9ImNscy0yIiB4PSI2LjU0IiB5PSI3LjUiIHdpZHRoPSIxMS45OCIgaGVpZ2h0PSI0OSIg cng9IjEuNSIgcnk9IjEuNSIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTE3LDhhMy4yNSwzLjI1 LDAsMCwxLC45LjA4aDBBMi4xOCwyLjE4LDAsMCwxLDE4LDlWNTVhMy4yOCwzLjI4LDAsMCwxLS4w OC45QTIuMTgsMi4xOCwwLDAsMSwxNyw1Nkg4YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMEEyLjE4 LDIuMTgsMCwwLDEsNyw1NVY5YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjlBMi4xOCwyLjE4LDAsMCwx LDgsOGg5bTAtMUg4QzYuMzksNyw2LDcuMzUsNiw5VjU1YzAsMS42NS4zNSwyLDIsMmg5YzEuNjUs MCwyLS4zNSwyLTJWOWMwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0i TTYuNTQsMTUuNVY5YzAtMS4zNy4xMy0xLjUsMS41LTEuNWg5YzEuMzcsMCwxLjUuMTMsMS41LDEu NXY2LjVaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNMTcsOGEzLjI1LDMuMjUsMCwwLDEsLjku MDhoMEEyLjE4LDIuMTgsMCwwLDEsMTgsOXY2SDdWOWEzLjI4LDMuMjgsMCwwLDEsLjA4LS45QTIu MTgsMi4xOCwwLDAsMSw4LDhoOW0wLTFIOEM2LjM5LDcsNiw3LjM1LDYsOXY3SDE5VjljMC0xLjY1 LS4zNS0yLTItMloiLz48ZyBjbGFzcz0iY2xzLTYiPjxsaW5lIGNsYXNzPSJjbHMtNyIgeDE9Ijcu MDUiIHkxPSIyMy43NCIgeDI9IjE4LjAyIiB5Mj0iMjMuNzQiLz48bGluZSBjbGFzcz0iY2xzLTci IHgxPSI3LjA1IiB5MT0iMzEuNDkiIHgyPSIxOC4wMiIgeTI9IjMxLjQ5Ii8+PGxpbmUgY2xhc3M9 ImNscy03IiB4MT0iNy4wNSIgeTE9IjM5LjIzIiB4Mj0iMTguMDIiIHkyPSIzOS4yMyIvPjxsaW5l IGNsYXNzPSJjbHMtNyIgeDE9IjcuMDUiIHkxPSI0Ni45NyIgeDI9IjE4LjAyIiB5Mj0iNDYuOTci Lz48L2c+PHRleHQgY2xhc3M9ImNscy04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMC44NyAyMS44 MykiPjE8L3RleHQ+PHRleHQgY2xhc3M9ImNscy04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMC44 NyAyOS43NikiPjA8L3RleHQ+PHRleHQgY2xhc3M9ImNscy04IiB0cmFuc2Zvcm09InRyYW5zbGF0 ZSgxMC44NyA0NS4yNCkiPjE8L3RleHQ+PHRleHQgY2xhc3M9ImNscy04IiB0cmFuc2Zvcm09InRy YW5zbGF0ZSgxMC44NyAzNy42MikiPjA8L3RleHQ+PHRleHQgY2xhc3M9ImNscy04IiB0cmFuc2Zv cm09InRyYW5zbGF0ZSgxMC44NyA1My4zMykiPjA8L3RleHQ+PHJlY3QgY2xhc3M9ImNscy05IiB4 PSI0NS40NyIgeT0iNy41IiB3aWR0aD0iMTEuOTgiIGhlaWdodD0iNDkiIHJ4PSIxLjUiIHJ5PSIx LjUiLz48cGF0aCBjbGFzcz0iY2xzLTEwIiBkPSJNNTYsOGEzLjI1LDMuMjUsMCwwLDEsLjkuMDho MEEyLjE4LDIuMTgsMCwwLDEsNTcsOVY1NWEzLjI4LDMuMjgsMCwwLDEtLjA4LjlBMi4xOCwyLjE4 LDAsMCwxLDU2LDU2SDQ3YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMEEyLjE4LDIuMTgsMCwwLDEs NDYsNTVWOUEzLjI4LDMuMjgsMCwwLDEsNDYsOC4xLDIuMTgsMi4xOCwwLDAsMSw0Nyw4aDltMC0x SDQ3Yy0xLjY1LDAtMiwuMzUtMiwyVjU1YzAsMS42NS4zNSwyLDIsMmg5YzEuNjUsMCwyLS4zNSwy LTJWOWMwLTEuNjUtLjM1LTItMi0yWiIvPjxnIGNsYXNzPSJjbHMtNiI+PGxpbmUgY2xhc3M9ImNs cy0xMSIgeDE9IjQ1Ljk4IiB5MT0iMjMuNzQiIHgyPSI1Ni45NSIgeTI9IjIzLjc0Ii8+PGxpbmUg Y2xhc3M9ImNscy0xMSIgeDE9IjQ1Ljk4IiB5MT0iMzEuNDkiIHgyPSI1Ni45NSIgeTI9IjMxLjQ5 Ii8+PGxpbmUgY2xhc3M9ImNscy0xMSIgeDE9IjQ1Ljk4IiB5MT0iMzkuMjMiIHgyPSI1Ni45NSIg eTI9IjM5LjIzIi8+PGxpbmUgY2xhc3M9ImNscy0xMSIgeDE9IjQ1Ljk4IiB5MT0iNDYuOTciIHgy PSI1Ni45NSIgeTI9IjQ2Ljk3Ii8+PC9nPjx0ZXh0IGNsYXNzPSJjbHMtOCIgdHJhbnNmb3JtPSJ0 cmFuc2xhdGUoNDkuOCAyMS44MykiPjA8L3RleHQ+PHRleHQgY2xhc3M9ImNscy04IiB0cmFuc2Zv cm09InRyYW5zbGF0ZSg0OS44IDI5Ljc2KSI+MDwvdGV4dD48dGV4dCBjbGFzcz0iY2xzLTgiIHRy YW5zZm9ybT0idHJhbnNsYXRlKDQ5LjggNDUuMjQpIj4xPC90ZXh0Pjx0ZXh0IGNsYXNzPSJjbHMt OCIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoNDkuOCAzNy42MikiPjE8L3RleHQ+PHRleHQgY2xhc3M9 ImNscy04IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSg0OS44IDUzLjMzKSI+MTwvdGV4dD48cGF0aCBj bGFzcz0iY2xzLTQiIGQ9Ik00NS40NywxNS41VjljMC0xLjM3LjEzLTEuNSwxLjUtMS41aDljMS4z NywwLDEuNS4xMywxLjUsMS41djYuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik01Niw4YTMu MjUsMy4yNSwwLDAsMSwuOS4wOGgwQTIuMTgsMi4xOCwwLDAsMSw1Nyw5djZINDZWOUEzLjI4LDMu MjgsMCwwLDEsNDYsOC4xLDIuMTgsMi4xOCwwLDAsMSw0Nyw4aDltMC0xSDQ3Yy0xLjY1LDAtMiwu MzUtMiwydjdINThWOWMwLTEuNjUtLjM1LTItMi0yWiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5l IGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFp bi9pbWcvZXhfYm1wX2hlYXAuc3ZnIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1n L2V4X2JtcF9oZWFwLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjhl ZWQ1MTYxMAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWlu L2ltZy9leF9ibXBfaGVhcC5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3 dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMt MXtmaWxsOiNmMGVjYjY7fS5jbHMtMntmaWxsOiNjMThmMzU7fS5jbHMtM3tvcGFjaXR5OjAuNzt9 LmNscy0xMCwuY2xzLTEzLC5jbHMtMTUsLmNscy00e2ZpbGw6bm9uZTt9LmNscy00e3N0cm9rZToj YzE4ZjM1O30uY2xzLTEwLC5jbHMtMTIsLmNscy0xMywuY2xzLTE0LC5jbHMtMTUsLmNscy00e3N0 cm9rZS1saW5lam9pbjpyb3VuZDt9LmNscy01e2ZpbGw6I2FkZGZmMzt9LmNscy0xNCwuY2xzLTZ7 ZmlsbDojMjk4MGI5O30uY2xzLTExLC5jbHMtN3tmaWxsOiMzNDQ5NWU7fS5jbHMtOHtmaWxsOiNk M2Q0ZjM7fS5jbHMtOXtmaWxsOiM2NjZiZDE7fS5jbHMtMTB7c3Ryb2tlOiM2NjZiZDE7fS5jbHMt MTF7Zm9udC1zaXplOjZweDtmb250LWZhbWlseTpIZWx2ZXRpY2EtQm9sZCwgSGVsdmV0aWNhO2Zv bnQtd2VpZ2h0OjcwMDt9LmNscy0xMntmaWxsOiM1MjhkMTk7fS5jbHMtMTIsLmNscy0xM3tzdHJv a2U6IzUyOGQxOTt9LmNscy0xMywuY2xzLTE1e3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS13 aWR0aDoycHg7fS5jbHMtMTQsLmNscy0xNXtzdHJva2U6IzI5ODBiOTt9PC9zdHlsZT48L2RlZnM+ PHRpdGxlPmV4X2JtcF9oZWFwPC90aXRsZT48ZyBpZD0iZXhfYm1wX2hlYXAiPjxwYXRoIGNsYXNz PSJjbHMtMSIgZD0iTTM3LDU2LjVjLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVWOWMwLS45LjQzLTEu NSwyLjUtMS41SDU1YzIuMDcsMCwyLjUuNiwyLjUsMS41VjU1YzAsMS4zNy0uMTMsMS41LTEuNSwx LjVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTUsOGMyLDAsMiwuNTUsMiwxVjU1YTMuMjgs My4yOCwwLDAsMS0uMDguOUEyLjE4LDIuMTgsMCwwLDEsNTYsNTZIMzdhMy4yNSwzLjI1LDAsMCwx LS45LS4wOGgwQTIuMTcsMi4xNywwLDAsMSwzNiw1NVY5YzAtLjQ1LDAtMSwyLTFINTVtMC0xSDM4 Yy0xLjY1LDAtMywuMzUtMywyVjU1YzAsMS42NS4zNSwyLDIsMkg1NmMxLjY1LDAsMi0uMzUsMi0y VjljMC0xLjY1LTEuMzUtMi0zLTJaIi8+PGcgY2xhc3M9ImNscy0zIj48bGluZSBjbGFzcz0iY2xz LTQiIHgxPSIzNS45OCIgeTE9IjIzLjc0IiB4Mj0iNTYuOTQiIHkyPSIyMy43NCIvPjxsaW5lIGNs YXNzPSJjbHMtNCIgeDE9IjM1Ljk4IiB5MT0iMzEuNDkiIHgyPSI1Ni45NCIgeTI9IjMxLjQ5Ii8+ PGxpbmUgY2xhc3M9ImNscy00IiB4MT0iMzUuOTgiIHkxPSIzOS4yMyIgeDI9IjU2Ljk0IiB5Mj0i MzkuMjMiLz48bGluZSBjbGFzcz0iY2xzLTQiIHgxPSIzNS45OCIgeTE9IjQ2Ljk3IiB4Mj0iNTYu OTQiIHkyPSI0Ni45NyIvPjwvZz48ZyBjbGFzcz0iY2xzLTMiPjxsaW5lIGNsYXNzPSJjbHMtNCIg eDE9IjUwLjA0IiB5MT0iMTYiIHgyPSI1MC4wNCIgeTI9IjU2LjExIi8+PGxpbmUgY2xhc3M9ImNs cy00IiB4MT0iNDMuMDciIHkxPSIxNiIgeDI9IjQzLjA3IiB5Mj0iNTYuMTEiLz48L2c+PHBhdGgg Y2xhc3M9ImNscy01IiBkPSJNMzUuNDcsMTUuNVY5YzAtMS4zNy4xMy0xLjUsMS41LTEuNUg1NmMx LjM3LDAsMS41LjEzLDEuNSwxLjV2Ni41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTU2LDhh My4yNSwzLjI1LDAsMCwxLC45LjA4aDBBMi4xOCwyLjE4LDAsMCwxLDU3LDl2NkgzNlY5QTMuMjgs My4yOCwwLDAsMSwzNiw4LjEsMi4xOCwyLjE4LDAsMCwxLDM3LDhINTZtMC0xSDM3Yy0xLjY1LDAt MiwuMzUtMiwydjdINThWOWMwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIg ZD0iTTM2LjcxLDI1bDUuMTIuMDh2NS4zOWwtNS4xMi0uMDhaIi8+PHBhdGggY2xhc3M9ImNscy03 IiBkPSJNNTEuMDcsNDAuNDhsNS4xMi4wOFY0NmwtNS4xMi0uMDhaIi8+PHBhdGggY2xhc3M9ImNs cy04IiBkPSJNOCw1Ni41Yy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjEwYzAtMi4wNy42LTIuNSwx LjUtMi41aDljLjksMCwxLjUuNDMsMS41LDIuNVY1NWMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIv PjxwYXRoIGNsYXNzPSJjbHMtOSIgZD0iTTE3LDhjLjQ1LDAsMSwwLDEsMlY1NWEzLjI4LDMuMjgs MCwwLDEtLjA4LjlBMi4xOCwyLjE4LDAsMCwxLDE3LDU2SDhhMy4yNSwzLjI1LDAsMCwxLS45LS4w OGgwQTIuMTgsMi4xOCwwLDAsMSw3LDU1VjEwYzAtMiwuNTUtMiwxLTJoOW0wLTFIOEM2LjM1LDcs Niw4LjM1LDYsMTBWNTVjMCwxLjY1LjM1LDIsMiwyaDljMS42NSwwLDItLjM1LDItMlYxMGMwLTEu NjUtLjM1LTMtMi0zWiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTYuNSwxNS41VjljMC0xLjM3 LjEzLTEuNSwxLjUtMS41aDljMS4zNywwLDEuNS4xMywxLjUsMS41djYuNVoiLz48cGF0aCBjbGFz cz0iY2xzLTYiIGQ9Ik0xNyw4YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwQTIuMTcsMi4xNywwLDAs MSwxOCw5djZIN1Y5YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjlBMi4xOCwyLjE4LDAsMCwxLDgsOGg5 bTAtMUg4QzYuMzUsNyw2LDcuMzUsNiw5djdIMTlWOWMwLTEuNjUtLjM1LTItMi0yWiIvPjxnIGNs YXNzPSJjbHMtMyI+PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9IjcuMDEiIHkxPSIyMy43NCIgeDI9 IjE3Ljk3IiB5Mj0iMjMuNzQiLz48bGluZSBjbGFzcz0iY2xzLTEwIiB4MT0iNy4wMSIgeTE9IjMx LjQ5IiB4Mj0iMTcuOTciIHkyPSIzMS40OSIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSI3LjAx IiB5MT0iMzkuMjMiIHgyPSIxNy45NyIgeTI9IjM5LjIzIi8+PGxpbmUgY2xhc3M9ImNscy0xMCIg eDE9IjcuMDEiIHkxPSI0Ni45NyIgeDI9IjE3Ljk3IiB5Mj0iNDYuOTciLz48L2c+PHRleHQgY2xh c3M9ImNscy0xMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAuODIgMjEuODMpIj4xPC90ZXh0Pjx0 ZXh0IGNsYXNzPSJjbHMtMTEiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEwLjgyIDI5Ljc2KSI+MDwv dGV4dD48dGV4dCBjbGFzcz0iY2xzLTExIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMC44MiA0NS4y NCkiPjE8L3RleHQ+PHRleHQgY2xhc3M9ImNscy0xMSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTAu ODIgMzcuNjIpIj4wPC90ZXh0Pjx0ZXh0IGNsYXNzPSJjbHMtMTEiIHRyYW5zZm9ybT0idHJhbnNs YXRlKDEwLjgyIDUzLjMzKSI+MDwvdGV4dD48cG9seWdvbiBjbGFzcz0iY2xzLTEyIiBwb2ludHM9 IjE3LjgxIDI3LjQ5IDIxLjE5IDI0Ljk2IDIxLjE5IDMwLjAyIDE3LjgxIDI3LjQ5Ii8+PGxpbmUg Y2xhc3M9ImNscy0xMyIgeDE9IjIxLjE5IiB5MT0iMjcuNDkiIHgyPSIzNi4xNiIgeTI9IjI3LjQ5 Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xMiIgcG9pbnRzPSIxNy44MSA0My4wMSAyMS4xOSA0MC40 OCAyMS4xOSA0NS41NCAxNy44MSA0My4wMSIvPjxsaW5lIGNsYXNzPSJjbHMtMTMiIHgxPSIyMS4x OSIgeTE9IjQzLjAxIiB4Mj0iNTAuMDQiIHkyPSI0My4wMSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMt MTQiIHBvaW50cz0iMzAuNDcgNTEuNjggMjcuOTQgNDguMyAzMyA0OC4zIDMwLjQ3IDUxLjY4Ii8+ PGxpbmUgY2xhc3M9ImNscy0xNSIgeDE9IjMwLjQ3IiB5MT0iNDguMyIgeDI9IjMwLjQ3IiB5Mj0i MTcuMzIiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X2JtcF9pbmRleC5zdmcgYi93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfYm1wX2luZGV4LnN2ZwpuZXcgZmls ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjhlNzhmNWMwYQotLS0gL2Rldi9udWxsCisr KyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9ibXBfaW5kZXguc3ZnCkBA IC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3 Qm94PSIwIDAgNjQgNjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojZjBlY2I2O30uY2xzLTJ7 ZmlsbDojYzE4ZjM1O30uY2xzLTN7b3BhY2l0eTowLjc7fS5jbHMtMTQsLmNscy00LC5jbHMtOXtm aWxsOm5vbmU7fS5jbHMtNHtzdHJva2U6I2MxOGYzNTt9LmNscy0xMywuY2xzLTE0LC5jbHMtNCwu Y2xzLTgsLmNscy05e3N0cm9rZS1saW5lam9pbjpyb3VuZDt9LmNscy01e2ZpbGw6I2FkZGZmMzt9 LmNscy02e2ZpbGw6IzI5ODBiOTt9LmNscy0xNSwuY2xzLTcsLmNscy04e2ZpbGw6IzM0NDk1ZTt9 LmNscy04LC5jbHMtOXtzdHJva2U6IzM0NDk1ZTt9LmNscy0xNCwuY2xzLTl7c3Ryb2tlLWxpbmVj YXA6cm91bmQ7c3Ryb2tlLXdpZHRoOjJweDt9LmNscy0xMCwuY2xzLTEye2ZpbGw6I2QzZDRmMzt9 LmNscy0xMXtmaWxsOiM2NjZiZDE7fS5jbHMtMTJ7c3Ryb2tlOiM2NjZiZDE7c3Ryb2tlLW1pdGVy bGltaXQ6MTA7fS5jbHMtMTN7ZmlsbDojNTI4ZDE5O30uY2xzLTEzLC5jbHMtMTR7c3Ryb2tlOiM1 MjhkMTk7fS5jbHMtMTV7Zm9udC1zaXplOjZweDtmb250LWZhbWlseTpIZWx2ZXRpY2EtQm9sZCwg SGVsdmV0aWNhO2ZvbnQtd2VpZ2h0OjcwMDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmV4X2JtcF9p bmRleDwvdGl0bGU+PGcgaWQ9ImV4X2JtcF9pbmRleCI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJN MzcsNTQuNWMtMS4zNywwLTEuNS0uMTMtMS41LTEuNVYxNi41aDIyVjUzYzAsMS4zNy0uMTMsMS41 LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTcsMTdWNTNhMy4yOCwzLjI4LDAs MCwxLS4wOC45QTIuMTgsMi4xOCwwLDAsMSw1Niw1NEgzN2EzLjI1LDMuMjUsMCwwLDEtLjktLjA4 aDBBMi4xNywyLjE3LDAsMCwxLDM2LDUzVjE3SDU3bTEtMUgzNVY1M2MwLDEuNjUuMzUsMiwyLDJI NTZjMS42NSwwLDItLjM1LDItMlYxNloiLz48ZyBjbGFzcz0iY2xzLTMiPjxsaW5lIGNsYXNzPSJj bHMtNCIgeDE9IjM2LjAzIiB5MT0iMjMuNzQiIHgyPSI1Ni45OSIgeTI9IjIzLjc0Ii8+PGxpbmUg Y2xhc3M9ImNscy00IiB4MT0iMzYuMDMiIHkxPSIzMS40OSIgeDI9IjU2Ljk5IiB5Mj0iMzEuNDki Lz48bGluZSBjbGFzcz0iY2xzLTQiIHgxPSIzNi4wMyIgeTE9IjM5LjIzIiB4Mj0iNTYuOTkiIHky PSIzOS4yMyIvPjxsaW5lIGNsYXNzPSJjbHMtNCIgeDE9IjM2LjAzIiB5MT0iNDYuOTciIHgyPSI1 Ni45OSIgeTI9IjQ2Ljk3Ii8+PC9nPjxnIGNsYXNzPSJjbHMtMyI+PGxpbmUgY2xhc3M9ImNscy00 IiB4MT0iNTAuMDgiIHkxPSIxNyIgeDI9IjUwLjA4IiB5Mj0iNTQuMTEiLz48bGluZSBjbGFzcz0i Y2xzLTQiIHgxPSI0My4xMiIgeTE9IjE3IiB4Mj0iNDMuMTIiIHkyPSI1NC4xMSIvPjwvZz48cGF0 aCBjbGFzcz0iY2xzLTUiIGQ9Ik0zNS41MiwxNi41VjEwYzAtLjkuNDMtMS41LDIuNS0xLjVINTZj MS4zNywwLDEuNS4xMywxLjUsMS41djYuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik01Niw5 YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwQTIuMTgsMi4xOCwwLDAsMSw1NywxMHY2SDM2VjEwYzAt LjQ1LDAtMSwyLTFINTZtMC0xSDM4Yy0xLjY1LDAtMywuMzUtMywydjdINThWMTBjMC0xLjY1LS4z NS0yLTItMloiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik0zNi43NiwyNWw1LjEyLjA4djUuMzls LTUuMTItLjA4WiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTM2Ljc2LDQwLjQ4bDUuMTIuMDhW NDZsLTUuMTItLjA4WiIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtOCIgcG9pbnRzPSIzMC4yIDUxLjY4 IDI3LjY4IDQ4LjMgMzIuNzMgNDguMyAzMC4yIDUxLjY4Ii8+PGxpbmUgY2xhc3M9ImNscy05IiB4 MT0iMzAuMiIgeTE9IjQ4LjMiIHgyPSIzMC4yIiB5Mj0iMTcuMzIiLz48cGF0aCBjbGFzcz0iY2xz LTEwIiBkPSJNMTAsNTQuNWMtMS4zNywwLTEuNS0uMTMtMS41LTEuNVYxNi41aDEyVjUzYzAsMS4z Ny0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy0xMSIgZD0iTTIwLDE3VjUzYTMu MjgsMy4yOCwwLDAsMS0uMDguOUEyLjE4LDIuMTgsMCwwLDEsMTksNTRIMTBhMy4yNSwzLjI1LDAs MCwxLS45LS4wOGgwQTIuMTgsMi4xOCwwLDAsMSw5LDUzVjE3SDIwbTEtMUg4VjUzYzAsMS42NS4z NSwyLDIsMmg5YzEuNjUsMCwyLS4zNSwyLTJWMTZaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJN OC41LDE2LjVWMTBjMC0xLjM3LjEzLTEuNSwxLjUtMS41aDljMS4zNywwLDEuNS4xMywxLjUsMS41 djYuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik0xOSw5YTMuMjUsMy4yNSwwLDAsMSwuOS4w OGgwQTIuMTcsMi4xNywwLDAsMSwyMCwxMHY2SDlWMTBhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOUEy LjE4LDIuMTgsMCwwLDEsMTAsOWg5bTAtMUgxMGMtMS42NSwwLTIsLjM1LTIsMnY3SDIxVjEwYzAt MS42NS0uMzUtMi0yLTJaIi8+PGxpbmUgY2xhc3M9ImNscy0xMiIgeDE9IjkiIHkxPSIyMy43NCIg eDI9IjE5Ljk5IiB5Mj0iMjMuNzQiLz48bGluZSBjbGFzcz0iY2xzLTEyIiB4MT0iOSIgeTE9IjMx LjQ5IiB4Mj0iMTkuOTkiIHkyPSIzMS40OSIvPjxsaW5lIGNsYXNzPSJjbHMtMTIiIHgxPSI5IiB5 MT0iMzkuMjMiIHgyPSIxOS45OSIgeTI9IjM5LjIzIi8+PGxpbmUgY2xhc3M9ImNscy0xMiIgeDE9 IjkiIHkxPSI0Ni45OCIgeDI9IjE5Ljk5IiB5Mj0iNDYuOTgiLz48cG9seWdvbiBjbGFzcz0iY2xz LTEzIiBwb2ludHM9IjE3LjgxIDI3LjQ5IDIxLjE5IDI0Ljk2IDIxLjE5IDMwLjAyIDE3LjgxIDI3 LjQ5Ii8+PGxpbmUgY2xhc3M9ImNscy0xNCIgeDE9IjIxLjE5IiB5MT0iMjcuNDkiIHgyPSIzNi4x NiIgeTI9IjI3LjQ5Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xMyIgcG9pbnRzPSIxNy44MSA0My4y MiAyMS4xOSA0MC42OSAyMS4xOSA0NS43NSAxNy44MSA0My4yMiIvPjxsaW5lIGNsYXNzPSJjbHMt MTQiIHgxPSIyMS4xOSIgeTE9IjQzLjIyIiB4Mj0iMzYuMTYiIHkyPSI0My4yMiIvPjx0ZXh0IGNs YXNzPSJjbHMtMTUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEyLjgyIDIyLjQ1KSI+MDwvdGV4dD48 dGV4dCBjbGFzcz0iY2xzLTE1IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMi44MiAzMC4wMikiPjE8 L3RleHQ+PHRleHQgY2xhc3M9ImNscy0xNSIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTIuODIgNDUu MjQpIj4xPC90ZXh0Pjx0ZXh0IGNsYXNzPSJjbHMtMTUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEy LjgyIDM3LjMzKSI+MDwvdGV4dD48dGV4dCBjbGFzcz0iY2xzLTE1IiB0cmFuc2Zvcm09InRyYW5z bGF0ZSgxMi44MiA1Mi43MykiPjA8L3RleHQ+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9l eF9ibXBfb3Iuc3ZnIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X2JtcF9v ci5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi40N2JiODYyOTYKLS0t IC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfYm1w X29yLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAw L3N2ZyIgdmlld0JveD0iMCAwIDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0xLC5jbHMtMTF7Zmls bDpub25lO3N0cm9rZS1saW5lam9pbjpyb3VuZDt9LmNscy0xe3N0cm9rZTojMzQ0OTVlO3N0cm9r ZS1saW5lY2FwOnJvdW5kO3N0cm9rZS13aWR0aDo0cHg7fS5jbHMtMiwuY2xzLTR7ZmlsbDojZDNk NGYzO30uY2xzLTN7ZmlsbDojNjY2YmQxO30uY2xzLTR7c3Ryb2tlOiM2NjZiZDE7c3Ryb2tlLW1p dGVybGltaXQ6MTA7fS5jbHMtNXtmb250LXNpemU6NnB4O2ZpbGw6IzM0NDk1ZTtmb250LWZhbWls eTpIZWx2ZXRpY2EtQm9sZCwgSGVsdmV0aWNhO2ZvbnQtd2VpZ2h0OjcwMDt9LmNscy02e2ZpbGw6 I2FkZGZmMzt9LmNscy03e2ZpbGw6IzI5ODBiOTt9LmNscy04e2ZpbGw6I2YwZWNiNjt9LmNscy05 e2ZpbGw6I2MxOGYzNTt9LmNscy0xMHtvcGFjaXR5OjAuNzt9LmNscy0xMXtzdHJva2U6I2MxOGYz NTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmV4X2JtcF9vcjwvdGl0bGU+PGcgaWQ9ImV4X2JtcF9v ciI+PGxpbmUgY2xhc3M9ImNscy0xIiB4MT0iMzIiIHkxPSIxNS44NCIgeDI9IjMyIiB5Mj0iNDgu MTYiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xMCw1Ni41Yy0xLjM3LDAtMS41LS4xMy0xLjUt MS41VjE1LjQ2aDEyVjU1YzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNs cy0zIiBkPSJNMjAsMTZWNTVhMy4yOCwzLjI4LDAsMCwxLS4wOC45QTIuMTgsMi4xOCwwLDAsMSwx OSw1NkgxMGEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBBMi4xOCwyLjE4LDAsMCwxLDksNTVWMTZI MjBtMS0xSDhWNTVjMCwxLjY1LjM1LDIsMiwyaDljMS42NSwwLDItLjM1LDItMlYxNVoiLz48bGlu ZSBjbGFzcz0iY2xzLTQiIHgxPSI5LjAxIiB5MT0iMjMuNzQiIHgyPSIxOS45NyIgeTI9IjIzLjc0 Ii8+PGxpbmUgY2xhc3M9ImNscy00IiB4MT0iOS4wMSIgeTE9IjMxLjQ5IiB4Mj0iMTkuOTciIHky PSIzMS40OSIvPjxsaW5lIGNsYXNzPSJjbHMtNCIgeDE9IjkuMDEiIHkxPSIzOS4yMyIgeDI9IjE5 Ljk3IiB5Mj0iMzkuMjMiLz48bGluZSBjbGFzcz0iY2xzLTQiIHgxPSI5LjAxIiB5MT0iNDYuOTci IHgyPSIxOS45NyIgeTI9IjQ2Ljk3Ii8+PHRleHQgY2xhc3M9ImNscy01IiB0cmFuc2Zvcm09InRy YW5zbGF0ZSgxMi44MiAyMS44MykiPjE8L3RleHQ+PHRleHQgY2xhc3M9ImNscy01IiB0cmFuc2Zv cm09InRyYW5zbGF0ZSgxMi44MiAyOS43NikiPjA8L3RleHQ+PHRleHQgY2xhc3M9ImNscy01IiB0 cmFuc2Zvcm09InRyYW5zbGF0ZSgxMi44MiA0NS4yNCkiPjE8L3RleHQ+PHRleHQgY2xhc3M9ImNs cy01IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMi44MiAzNy42MikiPjA8L3RleHQ+PHRleHQgY2xh c3M9ImNscy01IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMi44MiA1My4zMykiPjA8L3RleHQ+PHBh dGggY2xhc3M9ImNscy02IiBkPSJNOC41LDE1LjVWOWMwLTEuMzcuMTMtMS41LDEuNS0xLjVoOWMx LjM3LDAsMS41LjEzLDEuNSwxLjV2Ni41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTE5LDhh My4yNSwzLjI1LDAsMCwxLC45LjA4aDBBMi4xNywyLjE3LDAsMCwxLDIwLDl2Nkg5VjlhMy4yOCwz LjI4LDAsMCwxLC4wOC0uOUEyLjE4LDIuMTgsMCwwLDEsMTAsOGg5bTAtMUgxMEM4LjM1LDcsOCw3 LjM1LDgsOXY3SDIxVjljMC0xLjY1LS4zNS0yLTItMloiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9 Ik00NSw1Ni41Yy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjE1LjQ2aDEyVjU1YzAsMS4zNy0uMTMs MS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy05IiBkPSJNNTUsMTZWNTVhMy4yOCwzLjI4 LDAsMCwxLS4wOC45QTIuMTgsMi4xOCwwLDAsMSw1NCw1Nkg0NWEzLjI1LDMuMjUsMCwwLDEtLjkt LjA4aDBBMi4xOCwyLjE4LDAsMCwxLDQ0LDU1VjE2SDU1bTEtMUg0M1Y1NWMwLDEuNjUuMzUsMiwy LDJoOWMxLjY1LDAsMi0uMzUsMi0yVjE1WiIvPjxnIGNsYXNzPSJjbHMtMTAiPjxsaW5lIGNsYXNz PSJjbHMtMTEiIHgxPSI0NC4wMyIgeTE9IjIzLjc0IiB4Mj0iNTQuOTkiIHkyPSIyMy43NCIvPjxs aW5lIGNsYXNzPSJjbHMtMTEiIHgxPSI0NC4wMyIgeTE9IjMxLjQ5IiB4Mj0iNTQuOTkiIHkyPSIz MS40OSIvPjxsaW5lIGNsYXNzPSJjbHMtMTEiIHgxPSI0NC4wMyIgeTE9IjM5LjIzIiB4Mj0iNTQu OTkiIHkyPSIzOS4yMyIvPjxsaW5lIGNsYXNzPSJjbHMtMTEiIHgxPSI0NC4wMyIgeTE9IjQ2Ljk3 IiB4Mj0iNTQuOTkiIHkyPSI0Ni45NyIvPjwvZz48dGV4dCBjbGFzcz0iY2xzLTUiIHRyYW5zZm9y bT0idHJhbnNsYXRlKDQ3Ljg0IDIxLjgzKSI+MDwvdGV4dD48dGV4dCBjbGFzcz0iY2xzLTUiIHRy YW5zZm9ybT0idHJhbnNsYXRlKDQ3Ljg0IDI5Ljc2KSI+MDwvdGV4dD48dGV4dCBjbGFzcz0iY2xz LTUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ3Ljg0IDQ1LjI0KSI+MTwvdGV4dD48dGV4dCBjbGFz cz0iY2xzLTUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ3Ljg0IDM3LjYyKSI+MTwvdGV4dD48dGV4 dCBjbGFzcz0iY2xzLTUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ3Ljg0IDUzLjMzKSI+MTwvdGV4 dD48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik00My41MiwxNS41VjljMC0xLjM3LjEzLTEuNSwxLjUt MS41aDljMS4zNywwLDEuNS4xMywxLjUsMS41djYuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9 Ik01NCw4YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwQTIuMTgsMi4xOCwwLDAsMSw1NSw5djZINDRW OWEzLjI4LDMuMjgsMCwwLDEsLjA4LS45QTIuMTgsMi4xOCwwLDAsMSw0NSw4aDltMC0xSDQ1Yy0x LjY1LDAtMiwuMzUtMiwydjdINTZWOWMwLTEuNjUtLjM1LTItMi0yWiIvPjwvZz48L3N2Zz4KXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMv anMvRXhwbGFpbi9pbWcvZXhfYnJvYWRjYXN0X21vdGlvbi5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvRXhwbGFpbi9pbWcvZXhfYnJvYWRjYXN0X21vdGlvbi5zdmcKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwLi5iMzRiYTFhOGEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfYnJvYWRjYXN0X21vdGlvbi5zdmcKQEAg LTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdC b3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmMGVjYjY7fS5jbHMtMntm aWxsOiNjMThmMzU7fS5jbHMtM3tvcGFjaXR5OjAuNzt9LmNscy00LC5jbHMtNntmaWxsOm5vbmU7 fS5jbHMtNHtzdHJva2U6I2MxOGYzNTt9LmNscy00LC5jbHMtNSwuY2xzLTZ7c3Ryb2tlLWxpbmVq b2luOnJvdW5kO30uY2xzLTV7ZmlsbDojMzQ0OTVlO30uY2xzLTUsLmNscy02e3N0cm9rZTojMzQ0 OTVlO30uY2xzLTZ7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5l eF9icm9hZGNhc3RfbW90aW9uPC90aXRsZT48ZyBpZD0iZXhfYnJvYWRjYXN0X21vdGlvbiI+PHBh dGggY2xhc3M9ImNscy0xIiBkPSJNMjEuNTYsNTEuNjljLTEuMzQsMC0xLjQ5LS4xMy0xLjUtMS40 MVYxNC4xNWMwLTEuMjguMTUtMS40MSwxLjUtMS40MWg5YzEuMzQsMCwxLjQ4LjEzLDEuNSwxLjQx VjUwLjI4YzAsMS4yOC0uMTUsMS40MS0xLjUsMS40MVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9 Ik0yMS41NiwxMy4yNGg5YTMuMDksMy4wOSwwLDAsMSwuOS4wOGgwYTIsMiwwLDAsMSwuMS44NFY1 MC4yN2EzLDMsMCwwLDEtLjA4LjgxLDIuMTUsMi4xNSwwLDAsMS0uOTIuMWgtOWEzLjA5LDMuMDks MCwwLDEtLjktLjA4aDBhMiwyLDAsMCwxLS4xLS44NFYxNC4xNmEzLDMsMCwwLDEsLjA4LS44MSwy LjE1LDIuMTUsMCwwLDEsLjkyLS4xbTAtMWMtMS42MSwwLTIsLjM0LTIsMS45aDBWNTAuMjhoMGMw LDEuNTYuMzgsMS45LDIsMS45aDljMS42MSwwLDItLjM0LDItMS45aDBWMTQuMTVoMGMwLTEuNTYt LjM4LTEuOS0yLTEuOVoiLz48ZyBjbGFzcz0iY2xzLTMiPjxsaW5lIGNsYXNzPSJjbHMtNCIgeDE9 IjIwLjU3IiB5MT0iMTkuOTMiIHgyPSIzMS41NCIgeTI9IjE5LjkzIi8+PGxpbmUgY2xhc3M9ImNs cy00IiB4MT0iMjAuNTciIHkxPSIyNy42NyIgeDI9IjMxLjU0IiB5Mj0iMjcuNjciLz48bGluZSBj bGFzcz0iY2xzLTQiIHgxPSIyMC41NyIgeTE9IjM1LjQyIiB4Mj0iMzEuNTQiIHkyPSIzNS40MiIv PjxsaW5lIGNsYXNzPSJjbHMtNCIgeDE9IjIwLjU3IiB5MT0iNDMuMTYiIHgyPSIzMS41NCIgeTI9 IjQzLjE2Ii8+PC9nPjxwb2x5Z29uIGNsYXNzPSJjbHMtNSIgcG9pbnRzPSI0My4zIDU0LjY4IDQy LjI3IDUxLjU1IDQwLjAxIDU0Ljc5IDQzLjMgNTQuNjgiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgx PSI0MS41NyIgeTE9IjUzLjM1IiB4Mj0iMzMuNSIgeTI9IjQ3LjY0Ii8+PHBvbHlnb24gY2xhc3M9 ImNscy01IiBwb2ludHM9IjQzLjMgOS4zMiA0Mi4yNyAxMi40NSA0MC4wMSA5LjIxIDQzLjMgOS4z MiIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjQxLjU3IiB5MT0iMTAuNjUiIHgyPSIzMy41IiB5 Mj0iMTYuMzYiLz48cG9seWdvbiBjbGFzcz0iY2xzLTUiIHBvaW50cz0iNDUuNDQgMzEuNjMgNDIu OCAyOS42NSA0Mi44IDMzLjYgNDUuNDQgMzEuNjMiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI0 My4yNSIgeTE9IjMxLjUzIiB4Mj0iMzMuMzYiIHkyPSIzMS40OCIvPjxwb2x5Z29uIGNsYXNzPSJj bHMtNSIgcG9pbnRzPSI0NS4wNCAxOC45NSA0MS44OCAxOCA0My4yMyAyMS43MSA0NS4wNCAxOC45 NSIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjQyLjk1IiB5MT0iMTkuNjEiIHgyPSIzMy42NCIg eTI9IjIyLjk1Ii8+PHBvbHlnb24gY2xhc3M9ImNscy01IiBwb2ludHM9IjQ1LjA0IDQzLjQ4IDQx Ljg4IDQ0LjQ0IDQzLjIzIDQwLjcyIDQ1LjA0IDQzLjQ4Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4 MT0iNDIuOTUiIHkxPSI0Mi44MyIgeDI9IjMzLjY0IiB5Mj0iMzkuNDkiLz48L2c+PC9zdmc+Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL0V4cGxhaW4vaW1nL2V4X2N0ZV9zY2FuLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9F eHBsYWluL2ltZy9leF9jdGVfc2Nhbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwLi5hYzE4NjEwNjcKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMv anMvRXhwbGFpbi9pbWcvZXhfY3RlX3NjYW4uc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9 Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjQgNjQiPjxkZWZzPjxz dHlsZT4uY2xzLTEsLmNscy05e2ZpbGw6IzI5ODBiOTt9LmNscy0xLC5jbHMtMntzdHJva2U6IzI5 ODBiOTt9LmNscy0xLC5jbHMtMiwuY2xzLTYsLmNscy03e3N0cm9rZS1saW5lam9pbjpyb3VuZDt9 LmNscy0ye2ZpbGw6IzZjNmM2YztzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2Utd2lkdGg6MnB4 O30uY2xzLTN7ZmlsbDojY2FmMGI3O30uY2xzLTR7ZmlsbDojMzZjMTNkO30uY2xzLTUsLmNscy02 e29wYWNpdHk6MC43O30uY2xzLTYsLmNscy03e2ZpbGw6bm9uZTtzdHJva2U6IzM2YzEzZDt9LmNs cy04e2ZpbGw6I2FkZGZmMzt9LmNscy0xMHtmb250LXNpemU6MTJweDtmaWxsOiMzNDQ5NWU7Zm9u dC1mYW1pbHk6SGVsdmV0aWNhTmV1ZS1Cb2xkLCBIZWx2ZXRpY2EgTmV1ZTtmb250LXdlaWdodDo3 MDA7bGV0dGVyLXNwYWNpbmc6MC4xZW07fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5leF9jdGVfc2Nh bjwvdGl0bGU+PGcgaWQ9ImV4X2N0ZV9zY2FuIj48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50 cz0iOS45NyA1MC43NSA2LjQ5IDQ2LjEgMTMuNDUgNDYuMSA5Ljk3IDUwLjc1Ii8+PGxpbmUgY2xh c3M9ImNscy0yIiB4MT0iOS45NyIgeTE9IjQ2Ljc0IiB4Mj0iOS45NyIgeTI9IjE1Ljc2Ii8+PHBh dGggY2xhc3M9ImNscy0zIiBkPSJNMTgsNTcuNDRjLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVWMTUu NWg0MVY1NS45NGMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIg ZD0iTTU3LDE2VjU1Ljk0YTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIuMTgsMCwwLDEtLjky LjFIMThhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJWMTZI NTdtMS0xSDE2VjU1Ljk0YzAsMS42NS4zNSwyLDIsMkg1NmMxLjY1LDAsMi0uMzUsMi0yVjE1WiIv PjxnIGNsYXNzPSJjbHMtNSI+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMjQuNyIgeTE9IjU2Ljk0 IiB4Mj0iMjQuNyIgeTI9IjE1Ljk0Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iNDEuMSIgeTE9 IjU2Ljk0IiB4Mj0iNDEuMSIgeTI9IjE1Ljk0Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMzIu OSIgeTE9IjU2Ljk0IiB4Mj0iMzIuOSIgeTI9IjE1Ljk0Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4 MT0iNDkuMyIgeTE9IjU2Ljk0IiB4Mj0iNDkuMyIgeTI9IjE1Ljk0Ii8+PGcgY2xhc3M9ImNscy01 Ij48bGluZSBjbGFzcz0iY2xzLTciIHgxPSIxNyIgeTE9IjIzLjk0IiB4Mj0iNTYuOTciIHkyPSIy My45NCIvPjxsaW5lIGNsYXNzPSJjbHMtNyIgeDE9IjE3IiB5MT0iMzIuMzEiIHgyPSI1Ni45NyIg eTI9IjMyLjMxIi8+PGxpbmUgY2xhc3M9ImNscy03IiB4MT0iMTciIHkxPSI0MC42OCIgeDI9IjU2 Ljk3IiB5Mj0iNDAuNjgiLz48bGluZSBjbGFzcz0iY2xzLTciIHgxPSIxNyIgeTE9IjQ5LjA1IiB4 Mj0iNTYuOTciIHkyPSI0OS4wNSIvPjwvZz48L2c+PHBhdGggY2xhc3M9ImNscy04IiBkPSJNNDku MzEsMTUuNDl2LTlINTZjMS4zNywwLDEuNS4xMywxLjUsMS41djcuNVoiLz48cGF0aCBjbGFzcz0i Y2xzLTkiIGQ9Ik01Niw3YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwQTIuMTcsMi4xNywwLDAsMSw1 Nyw4djdINDkuODFWN0g1Nm0wLTFINDguODFWMTZINThWOGMwLTEuNjUtLjM1LTItMi0yWiIvPjxw YXRoIGNsYXNzPSJjbHMtOCIgZD0iTTE2LjUxLDE1LjQ5VjhjMC0xLjM3LjEzLTEuNSwxLjUtMS41 SDI0Ljd2OVoiLz48cGF0aCBjbGFzcz0iY2xzLTkiIGQ9Ik0yNC4yLDd2OEgxN1Y4YTMuMjgsMy4y OCwwLDAsMSwuMDgtLjlBMi4xOCwyLjE4LDAsMCwxLDE4LDdIMjQuMm0xLTFIMThjLTEuNjUsMC0y LC4zNS0yLDJ2OEgyNS4yVjZaIi8+PHJlY3QgY2xhc3M9ImNscy04IiB4PSI0MS4xIiB5PSI2LjQ5 IiB3aWR0aD0iOC4xOSIgaGVpZ2h0PSI5Ii8+PHBhdGggY2xhc3M9ImNscy05IiBkPSJNNDguNzks N3Y4SDQxLjZWN2g3LjE4bTEtMUg0MC42MVYxNmg5LjE5VjZaIi8+PHJlY3QgY2xhc3M9ImNscy04 IiB4PSIzMi45MSIgeT0iNi40OSIgd2lkdGg9IjguMTkiIGhlaWdodD0iOSIvPjxwYXRoIGNsYXNz PSJjbHMtOSIgZD0iTTQwLjYsN3Y4SDMzLjQxVjdINDAuNm0xLTFIMzIuNDJWMTZINDEuNlY2WiIv PjxyZWN0IGNsYXNzPSJjbHMtOCIgeD0iMjQuNzIiIHk9IjYuNDkiIHdpZHRoPSI4LjE3IiBoZWln aHQ9IjkiLz48cGF0aCBjbGFzcz0iY2xzLTkiIGQ9Ik0zMi40LDd2OEgyNS4yMlY3SDMyLjRtMS0x SDI0LjIyVjE2SDMzLjRWNloiLz48dGV4dCBjbGFzcz0iY2xzLTEwIiB0cmFuc2Zvcm09InRyYW5z bGF0ZSgyMy4zNSAzOC40KSI+Q1RFPC90ZXh0PjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVu ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcv ZXhfZGVsZXRlLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9kZWxl dGUuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uODlkOTY4MDViCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X2Rl bGV0ZS5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw MC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNmMGVj YjY7fS5jbHMtMntmaWxsOiNjMThmMzY7fS5jbHMtMywuY2xzLTR7b3BhY2l0eTowLjc7fS5jbHMt NCwuY2xzLTV7ZmlsbDpub25lO3N0cm9rZTojYzE4ZjM2O3N0cm9rZS1saW5lam9pbjpyb3VuZDt9 LmNscy02e2ZpbGw6I2FkZGZmMzt9LmNscy03e2ZpbGw6IzI5ODBiOTt9LmNscy04e2ZpbGw6I2Y2 NGQxMjt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmV4X2RlbGV0ZTwvdGl0bGU+PGcgaWQ9ImV4X2Rl bGV0ZSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTgsNTcuNDRjLTEuMzcsMC0xLjUtLjEzLTEu NS0xLjVWMTUuNWg0MVY1NS45NGMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNz PSJjbHMtMiIgZD0iTTU3LDE2VjU1Ljk0YTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIuMTgs MCwwLDEtLjkyLjFIMThhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0u MS0uOTJWMTZINTdtMS0xSDE2VjU1Ljk0YzAsMS42NS4zNSwyLDIsMkg1NmMxLjY1LDAsMi0uMzUs Mi0yVjE1WiIvPjxnIGNsYXNzPSJjbHMtMyI+PGxpbmUgY2xhc3M9ImNscy00IiB4MT0iMjQuNyIg eTE9IjU2Ljk0IiB4Mj0iMjQuNyIgeTI9IjE1Ljk0Ii8+PGxpbmUgY2xhc3M9ImNscy00IiB4MT0i NDEuMSIgeTE9IjU2Ljk0IiB4Mj0iNDEuMSIgeTI9IjE1Ljk0Ii8+PGxpbmUgY2xhc3M9ImNscy00 IiB4MT0iMzIuOSIgeTE9IjU2Ljk0IiB4Mj0iMzIuOSIgeTI9IjE1Ljk0Ii8+PGxpbmUgY2xhc3M9 ImNscy00IiB4MT0iNDkuMyIgeTE9IjU2Ljk0IiB4Mj0iNDkuMyIgeTI9IjE1Ljk0Ii8+PGcgY2xh c3M9ImNscy0zIj48bGluZSBjbGFzcz0iY2xzLTUiIHgxPSIxNyIgeTE9IjIzLjk0IiB4Mj0iNTYu OTciIHkyPSIyMy45NCIvPjxsaW5lIGNsYXNzPSJjbHMtNSIgeDE9IjE3IiB5MT0iMzIuMzEiIHgy PSI1Ni45NyIgeTI9IjMyLjMxIi8+PGxpbmUgY2xhc3M9ImNscy01IiB4MT0iMTciIHkxPSI0MC42 OCIgeDI9IjU2Ljk3IiB5Mj0iNDAuNjgiLz48bGluZSBjbGFzcz0iY2xzLTUiIHgxPSIxNyIgeTE9 IjQ5LjA1IiB4Mj0iNTYuOTciIHkyPSI0OS4wNSIvPjwvZz48L2c+PHBhdGggY2xhc3M9ImNscy02 IiBkPSJNNDkuMzEsMTUuNDl2LTlINTZjMS4zNywwLDEuNS4xMywxLjUsMS41djcuNVoiLz48cGF0 aCBjbGFzcz0iY2xzLTciIGQ9Ik01Niw3YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwQTIuMTcsMi4x NywwLDAsMSw1Nyw4djdINDkuODFWN0g1Nm0wLTFINDguODFWMTZINThWOGMwLTEuNjUtLjM1LTIt Mi0yWiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTE2LjUxLDE1LjQ5VjhjMC0xLjM3LjEzLTEu NSwxLjUtMS41SDI0Ljd2OVoiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik0yNC4yLDd2OEgxN1Y4 YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjlBMi4xOCwyLjE4LDAsMCwxLDE4LDdIMjQuMm0xLTFIMThj LTEuNjUsMC0yLC4zNS0yLDJ2OEgyNS4yVjZaIi8+PHJlY3QgY2xhc3M9ImNscy02IiB4PSI0MS4x IiB5PSI2LjQ5IiB3aWR0aD0iOC4xOSIgaGVpZ2h0PSI5Ii8+PHBhdGggY2xhc3M9ImNscy03IiBk PSJNNDguNzksN3Y4SDQxLjZWN2g3LjE4bTEtMUg0MC42MVYxNmg5LjE5VjZaIi8+PHJlY3QgY2xh c3M9ImNscy02IiB4PSIzMi45MSIgeT0iNi40OSIgd2lkdGg9IjguMTkiIGhlaWdodD0iOSIvPjxw YXRoIGNsYXNzPSJjbHMtNyIgZD0iTTQwLjYsN3Y4SDMzLjQxVjdINDAuNm0xLTFIMzIuNDJWMTZI NDEuNlY2WiIvPjxyZWN0IGNsYXNzPSJjbHMtNiIgeD0iMjQuNzIiIHk9IjYuNDkiIHdpZHRoPSI4 LjE3IiBoZWlnaHQ9IjkiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik0zMi40LDd2OEgyNS4yMlY3 SDMyLjRtMS0xSDI0LjIyVjE2SDMzLjRWNloiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik0xNy41 LDI0Ljk0aDYuMnY2LjM3SDE3LjVaIi8+PHBhdGggY2xhc3M9ImNscy04IiBkPSJNMjUuNzEsNDEu NzJoNi4ydjYuMzdoLTYuMloiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik0zMy45NCw0MS43Mmg2 LjJ2Ni4zN2gtNi4yWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTYsMjkuMjJhMy4zNywzLjM3 LDAsMCwxLDUuNzEtMi40M2gwbC4xMy4xMy4wNS4wNUwyMy40NSwzOC41MmEuNC40LDAsMCwxLC4x OC4ybDEuNjMsNS44MnYuMDZoMGEuNDYuNDYsMCwwLDEsMCwuMTIuNDEuNDEsMCwwLDEsMCwuMTJz MCwwLDAsMGgwYS40LjQsMCwwLDEtLjA2LjFsMCwwLDAsMC0uMS4wNmgwbC0uMTIsMC0uMTIsMGgt LjA3bC01LjgyLTEuNjNhLjQuNCwwLDAsMS0uMi0uMThMNi45NSwzMS41OGEuNC40LDAsMCwxLS4w OC0uMTJBMy4zNSwzLjM1LDAsMCwxLDYsMjkuMjJaTTE4LjksNDIuMzhsMS0yaDBMMTAsMzAuNDEs OC40NiwzMS45M1ptNSwuNTUtLjg0Ljg0LDEuMTcuMzNabS0xLTMuNDgtMi4yNiwxLjA5TDE5LjYs NDIuOGwyLjU3LjcyTDIzLjY2LDQyWm0tLjQyLS43TDEyLjA4LDI4LjMxbC0xLjUyLDEuNTIsOS45 Myw5LjkzaDBaTTYuODMsMjkuMjVhMi41NSwyLjU1LDAsMCwwLC44MywxLjg4aDBsLjIyLjIyLDMu NjItMy42Mi0uMjItLjIyaDBhMi41NiwyLjU2LDAsMCwwLTQuNDUsMS43M1oiLz48cG9seWdvbiBj bGFzcz0iY2xzLTEiIHBvaW50cz0iMTguOSA0Mi4zOCAxOS45IDQwLjM2IDE5LjkgNDAuMzUgOS45 NyAzMC40MiA4LjQ1IDMxLjk0IDE4LjkgNDIuMzgiLz48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBv aW50cz0iMTIuMDcgMjguMzIgMTAuNTUgMjkuODQgMjAuNDggMzkuNzcgMjAuNDkgMzkuNzYgMjIu NTIgMzguNzYgMTIuMDcgMjguMzIiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik02Ljg1LDI5LjIx YTIuNTUsMi41NSwwLDAsMCwuODMsMS44OGgwbC4yMi4yMiwzLjYyLTMuNjItLjIyLS4yMmgwYTIu NTYsMi41NiwwLDAsMC00LjQ1LDEuNzNaIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xIiBwb2ludHM9 IjIyLjk0IDM5LjQ1IDIwLjY5IDQwLjU0IDE5LjYgNDIuOCAyMi4xNyA0My41MiAyMy42NiA0Mi4w MyAyMi45NCAzOS40NSIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfZm9yZWlnbl9z Y2FuLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9mb3JlaWduX3Nj YW4uc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uYTlmMWMzZDJiCi0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X2Zv cmVpZ25fc2Nhbi5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyBpZD0iXzEiIGRhdGEtbmFtZT0iMSIg eG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjQgNjQiPjxk ZWZzPjxzdHlsZT4uY2xzLTEsLmNscy05e2ZpbGw6IzM0NDk1ZTt9LmNscy0xLC5jbHMtMntzdHJv a2U6IzM0NDk1ZTt9LmNscy0xLC5jbHMtMiwuY2xzLTZ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO30u Y2xzLTIsLmNscy02e2ZpbGw6bm9uZTt9LmNscy0ye3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9r ZS13aWR0aDoycHg7fS5jbHMtM3tmaWxsOiNkYWU3ZTc7fS5jbHMtNHtmaWxsOiM4M2I4YmQ7fS5j bHMtNXtvcGFjaXR5OjAuODt9LmNscy02e3N0cm9rZTojODNiOGJkO30uY2xzLTd7ZmlsbDojYWRk ZmYzO30uY2xzLTh7ZmlsbDojMjk4MGI5O30uY2xzLTl7Zm9udC1zaXplOjEycHg7Zm9udC1mYW1p bHk6SGVsdmV0aWNhTmV1ZS1Cb2xkLCBIZWx2ZXRpY2EgTmV1ZTtmb250LXdlaWdodDo3MDA7bGV0 dGVyLXNwYWNpbmc6MC4xZW07fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5leF9mb3JlaWduX3NjYW48 L3RpdGxlPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSI5Ljk3IDUwLjc1IDYuNDkgNDYu MSAxMy40NSA0Ni4xIDkuOTcgNTAuNzUiLz48bGluZSBjbGFzcz0iY2xzLTIiIHgxPSI5Ljk3IiB5 MT0iNDYuNzQiIHgyPSI5Ljk3IiB5Mj0iMTUuNzYiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0x OCw1Ny40NGMtMS4zNywwLTEuNS0uMTMtMS41LTEuNVYxNS41aDQxVjU1Ljk0YzAsMS4zNy0uMTMs MS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNNTcsMTZWNTUuOTRhMy4yOCwz LjI4LDAsMCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUgxOGEzLjI1LDMuMjUsMCwwLDEt LjktLjA4aDBhMi4xOCwyLjE4LDAsMCwxLS4xLS45MlYxNkg1N20xLTFIMTZWNTUuOTRjMCwxLjY1 LjM1LDIsMiwySDU2YzEuNjUsMCwyLS4zNSwyLTJWMTVaIi8+PGcgY2xhc3M9ImNscy01Ij48bGlu ZSBjbGFzcz0iY2xzLTYiIHgxPSIyNC43IiB5MT0iNTYuOTQiIHgyPSIyNC43IiB5Mj0iMTUuOTQi Lz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI0MS4xIiB5MT0iNTYuOTQiIHgyPSI0MS4xIiB5Mj0i MTUuOTQiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSIzMi45IiB5MT0iNTYuOTQiIHgyPSIzMi45 IiB5Mj0iMTUuOTQiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI0OS4zIiB5MT0iNTYuOTQiIHgy PSI0OS4zIiB5Mj0iMTUuOTQiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSIxNyIgeTE9IjIzLjk0 IiB4Mj0iNTYuOTciIHkyPSIyMy45NCIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjE3IiB5MT0i MzIuMzEiIHgyPSI1Ni45NyIgeTI9IjMyLjMxIi8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMTci IHkxPSI0MC42OCIgeDI9IjU2Ljk3IiB5Mj0iNDAuNjgiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgx PSIxNyIgeTE9IjQ5LjA1IiB4Mj0iNTYuOTciIHkyPSI0OS4wNSIvPjwvZz48cGF0aCBjbGFzcz0i Y2xzLTciIGQ9Ik00OS4zMSwxNS40OXYtOUg1NmMxLjM3LDAsMS41LjEzLDEuNSwxLjV2Ny41WiIv PjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTU2LDdhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBBMi4x NywyLjE3LDAsMCwxLDU3LDh2N0g0OS44MVY3SDU2bTAtMUg0OC44MVYxNkg1OFY4YzAtMS42NS0u MzUtMi0yLTJaIi8+PHBhdGggY2xhc3M9ImNscy03IiBkPSJNMTYuNTEsMTUuNDlWOGMwLTEuMzcu MTMtMS41LDEuNS0xLjVIMjQuN3Y5WiIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTI0LjIsN3Y4 SDE3VjhhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOUEyLjE4LDIuMTgsMCwwLDEsMTgsN0gyNC4ybTEt MUgxOGMtMS42NSwwLTIsLjM1LTIsMnY4SDI1LjJWNloiLz48cmVjdCBjbGFzcz0iY2xzLTciIHg9 IjQxLjEiIHk9IjYuNDkiIHdpZHRoPSI4LjE5IiBoZWlnaHQ9IjkiLz48cGF0aCBjbGFzcz0iY2xz LTgiIGQ9Ik00OC43OSw3djhINDEuNlY3aDcuMThtMS0xSDQwLjYxVjE2aDkuMTlWNloiLz48cmVj dCBjbGFzcz0iY2xzLTciIHg9IjMyLjkxIiB5PSI2LjQ5IiB3aWR0aD0iOC4xOSIgaGVpZ2h0PSI5 Ii8+PHBhdGggY2xhc3M9ImNscy04IiBkPSJNNDAuNiw3djhIMzMuNDFWN0g0MC42bTEtMUgzMi40 MlYxNkg0MS42VjZaIi8+PHJlY3QgY2xhc3M9ImNscy03IiB4PSIyNC43MiIgeT0iNi40OSIgd2lk dGg9IjguMTciIGhlaWdodD0iOSIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTMyLjQsN3Y4SDI1 LjIyVjdIMzIuNG0xLTFIMjQuMjJWMTZIMzMuNFY2WiIvPjx0ZXh0IGNsYXNzPSJjbHMtOSIgdHJh bnNmb3JtPSJ0cmFuc2xhdGUoMjMuMzUgMzguNCkiPkNURTwvdGV4dD48L3N2Zz4KXCBObyBuZXds aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhw bGFpbi9pbWcvZXhfZ2F0aGVyX21lcmdlLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBs YWluL2ltZy9leF9nYXRoZXJfbWVyZ2Uuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uNGM2ZjFkYzdlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL0V4cGxhaW4vaW1nL2V4X2dhdGhlcl9tZXJnZS5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4 bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NC4wMyA2NCI+ PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNkM2Q0ZjM7fS5jbHMtMntmaWxsOiM2NjZiZDE7fS5j bHMtMywuY2xzLTZ7ZmlsbDojZjBlY2I2O30uY2xzLTR7ZmlsbDojYzE4ZjM2O30uY2xzLTV7b3Bh Y2l0eTowLjg7fS5jbHMtNntzdHJva2U6I2MxOGYzNjtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9LmNs cy03e2ZpbGw6I2FkZGZmMzt9LmNscy04e2ZpbGw6IzI5ODBiOTt9LmNscy0xMCwuY2xzLTl7Zmls bDojNTI4ZDE5O3N0cm9rZTojNTI4ZDE5O3N0cm9rZS1saW5lam9pbjpyb3VuZDt9LmNscy0xMHtz dHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2Utd2lkdGg6MnB4O308L3N0eWxlPjwvZGVmcz48dGl0 bGU+Z2F0aGVyX21lcmdlPC90aXRsZT48ZyBpZD0iZXhfYXBwZW5kIj48cGF0aCBjbGFzcz0iY2xz LTEiIGQ9Ik0xMi44MiwxNC4zYy0xLjM3LDAtMS41LS4xMi0xLjUtMS41di00YzAtMS4zOC4xMy0x LjUsMS41LTEuNWg0LjV2N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNi44Miw3LjgydjZo LTRhMy41NCwzLjU0LDAsMCwxLS45LS4wN2gwYTIuMTYsMi4xNiwwLDAsMS0uMS0uOTN2LTRhMi43 LDIuNywwLDAsMSwuMDgtLjlzLjE5LS4xLjkyLS4xaDRtMS0xaC01Yy0xLjY1LDAtMiwuMzUtMiwy djRjMCwxLjY1LjM1LDIsMiwyaDV2LThaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTcuMzIs MTQuM3YtN0gyMi4xYzEuMzgsMCwxLjUuMTIsMS41LDEuNXY0YzAsMS4zOC0uMTIsMS41LTEuNSwx LjVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjIuMSw3LjgyYTMuNDQsMy40NCwwLDAsMSwu OS4wN2gwYTIuMTYsMi4xNiwwLDAsMSwuMS45M3Y0YTMuNzEsMy43MSwwLDAsMS0uMDcuOSwyLjE2 LDIuMTYsMCwwLDEtLjkzLjFIMTcuODJ2LTZIMjIuMW0wLTFIMTYuODJ2OEgyMi4xYzEuNjUsMCwy LS4zNSwyLTJ2LTRjMC0xLjY1LS4zNS0yLTItMloiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0y Ny44NywxNC4zYy0xLjM3LDAtMS41LS4xMi0xLjUtMS41di00YzAtMS4zOC4xMy0xLjUsMS41LTEu NWg0LjV2N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zMS44Nyw3LjgydjZoLTRhMy42NCwz LjY0LDAsMCwxLS45LS4wN2gwYTIuNCwyLjQsMCwwLDEtLjEtLjkzdi00YTMuMTgsMy4xOCwwLDAs MSwuMDgtLjksMi4wOCwyLjA4LDAsMCwxLC45Mi0uMWg0bTEtMWgtNWMtMS42NSwwLTIsLjM1LTIs MnY0YzAsMS42NS4zNSwyLDIsMmg1di04WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTMyLjM4 LDE0LjN2LTdoNC43OGMxLjM3LDAsMS41LjEyLDEuNSwxLjV2NGMwLDEuMzgtLjEzLDEuNS0xLjUs MS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM3LjE2LDcuODJhMy4zOSwzLjM5LDAsMCwx LC44OS4wN2gwYTIuNCwyLjQsMCwwLDEsLjEuOTN2NGEzLjE4LDMuMTgsMCwwLDEtLjA4LjksMi4w OCwyLjA4LDAsMCwxLS45Mi4xSDMyLjg4di02aDQuMjhtMC0xSDMxLjg4djhoNS4yOGMxLjY1LDAs Mi0uMzUsMi0ydi00YzAtMS42NS0uMzUtMi0yLTJaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJN NDIuOTMsMTQuM2MtMS4zOCwwLTEuNS0uMTItMS41LTEuNXYtNGMwLTEuMzguMTItMS41LDEuNS0x LjVoNC41djdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDYuOTMsNy44MnY2aC00YTMuNDQs My40NCwwLDAsMS0uOS0uMDdoMGEyLjE2LDIuMTYsMCwwLDEtLjEtLjkzdi00YTMuNzEsMy43MSww LDAsMSwuMDctLjksMi4xNiwyLjE2LDAsMCwxLC45My0uMWg0bTEtMWgtNWMtMS42NSwwLTIsLjM1 LTIsMnY0YzAsMS42NS4zNSwyLDIsMmg1di04WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQ3 LjQzLDE0LjN2LTdoNC43OGMxLjM3LDAsMS41LjEyLDEuNSwxLjV2NGMwLDEuMzgtLjEzLDEuNS0x LjUsMS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUyLjIxLDcuODJhMy41NCwzLjU0LDAs MCwxLC45LjA3aDBhMi4xNiwyLjE2LDAsMCwxLC4xLjkzdjRhMi43LDIuNywwLDAsMS0uMDguOXMt LjE5LjEtLjkyLjFINDcuOTN2LTZoNC4yOG0wLTFINDYuOTN2OGg1LjI4YzEuNjUsMCwyLS4zNSwy LTJ2LTRjMC0xLjY1LS4zNS0yLTItMloiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yMS4yMSw1 Ny40NGMtMS4zOCwwLTEuNS0uMTMtMS41LTEuNVY0NC40OWgyNC42VjU1Ljk0YzAsMS4zNy0uMTMs MS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNNDMuODEsNDVWNTUuOTRhNCw0 LDAsMCwxLS4wNy45LDIuNCwyLjQsMCwwLDEtLjkzLjFIMjEuMjFhMy4xMSwzLjExLDAsMCwxLS45 LS4wOGgwYTIuMTMsMi4xMywwLDAsMS0uMS0uOTJWNDVoMjMuNm0xLTFIMTkuMjFWNTUuOTRjMCwx LjY1LjM1LDIsMiwyaDIxLjZjMS42NSwwLDItLjM1LDItMlY0NFoiLz48ZyBjbGFzcz0iY2xzLTUi PjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjI3LjkxIiB5MT0iNTYuOTMiIHgyPSIyNy45MSIgeTI9 IjQ0LjkzIi8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMzYuMTIiIHkxPSI1Ni45MyIgeDI9IjM2 LjEyIiB5Mj0iNDQuOTMiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSIyMC4yIiB5MT0iNTAuOTMi IHgyPSI0My43OSIgeTI9IjUwLjkzIi8+PC9nPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTM2LjEz LDQ0LjQ5di02aDYuNjljMS4zNywwLDEuNS4xMiwxLjUsMS41djQuNVoiLz48cGF0aCBjbGFzcz0i Y2xzLTgiIGQ9Ik00Mi44MiwzOWEzLjU0LDMuNTQsMCwwLDEsLjkuMDdoMGEyLjE2LDIuMTYsMCww LDEsLjEuOTN2NEgzNi42M1YzOWg2LjE5bTAtMUgzNS42M3Y3aDkuMTlWNDBjMC0xLjY1LS4zNS0y LTItMloiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik0xOS43MSw0NC40OVY0MGMwLTEuMzguMTIt MS41LDEuNS0xLjVIMjcuOXY2WiIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTI3LjQsMzl2NUgy MC4yMVY0MGEzLjcxLDMuNzEsMCwwLDEsLjA3LS45LDIuMTYsMi4xNiwwLDAsMSwuOTMtLjFIMjcu NG0xLTFIMjEuMjFjLTEuNjUsMC0yLC4zNS0yLDJ2NUgyOC40VjM4WiIvPjxyZWN0IGNsYXNzPSJj bHMtNyIgeD0iMjcuOTIiIHk9IjM4LjQ5IiB3aWR0aD0iOC4xOSIgaGVpZ2h0PSI2Ii8+PHBhdGgg Y2xhc3M9ImNscy04IiBkPSJNMzUuNjEsMzl2NUgyOC40MlYzOWg3LjE4bTEtMUgyNy40M3Y3aDku MTlWMzhaIi8+PHBvbHlnb24gY2xhc3M9ImNscy05IiBwb2ludHM9IjI3LjEgMzYuMzggMjcuOTYg MzIuMjUgMjMuMzggMzQuMzkgMjcuMSAzNi4zOCIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSIy NS41NSIgeTE9IjMzLjA2IiB4Mj0iMTguOTYiIHkyPSIxOC45NCIvPjxwb2x5Z29uIGNsYXNzPSJj bHMtOSIgcG9pbnRzPSIzMi40IDM2LjIgMzQuOTIgMzIuODIgMjkuODYgMzIuODIgMzIuNCAzNi4y Ii8+PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9IjMyLjM5IiB5MT0iMzIuNTQiIHgyPSIzMi4zOSIg eTI9IjE4LjAyIi8+PHBvbHlnb24gY2xhc3M9ImNscy05IiBwb2ludHM9IjM4LjUyIDM2LjM4IDM3 LjY1IDMyLjI1IDQyLjI0IDM0LjM5IDM4LjUyIDM2LjM4Ii8+PGxpbmUgY2xhc3M9ImNscy0xMCIg eDE9IjQwLjA2IiB5MT0iMzMuMDYiIHgyPSI0Ni42NSIgeTI9IjE4Ljk0Ii8+PC9nPjwvc3ZnPgpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9FeHBsYWluL2ltZy9leF9nYXRoZXJfbW90aW9uLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9FeHBsYWluL2ltZy9leF9nYXRoZXJfbW90aW9uLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAuLmIzZjIwODFhZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2Fk bWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9nYXRoZXJfbW90aW9uLnN2ZwpAQCAtMCwwICsx IEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAw IDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2FkZGZmMzt9LmNscy0ye2ZpbGw6IzI5 ODBiOTt9LmNscy0ze2ZpbGw6bm9uZTtzdHJva2U6I2QwNDQ2NTtzdHJva2UtbGluZWNhcDpyb3Vu ZDtzdHJva2UtbGluZWpvaW46cm91bmQ7fS5jbHMtNHtmaWxsOiNkMDQ0NjU7fS5jbHMtNXtmaWxs OiNmM2M3ZDc7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5leF9nYXRoZXJfbW90aW9uPC90aXRsZT48 ZyBpZD0iZXhfZGVsZXRlIj48cmVjdCBjbGFzcz0iY2xzLTEiIHg9IjQ3LjE5IiB5PSI0NS40MyIg d2lkdGg9IjkiIGhlaWdodD0iOSIgcng9IjAuNSIgcnk9IjAuNSIvPjxwYXRoIGNsYXNzPSJjbHMt MiIgZD0iTTU1LjY5LDQ1LjkzdjhoLTh2LThoOG0wLTFoLThhMSwxLDAsMCwwLTEsMXY4YTEsMSww LDAsMCwxLDFoOGExLDEsMCwwLDAsMS0xdi04YTEsMSwwLDAsMC0xLTFaIi8+PHJlY3QgY2xhc3M9 ImNscy0xIiB4PSI3LjgxIiB5PSI0NS40MyIgd2lkdGg9IjkiIGhlaWdodD0iOSIgcng9IjAuNSIg cnk9IjAuNSIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTE2LjMxLDQ1LjkzdjhoLTh2LThoOG0w LTFoLThhMSwxLDAsMCwwLTEsMXY4YTEsMSwwLDAsMCwxLDFoOGExLDEsMCwwLDAsMS0xdi04YTEs MSwwLDAsMC0xLTFaIi8+PHJlY3QgY2xhc3M9ImNscy0xIiB4PSIyNy41MSIgeT0iOS41NyIgd2lk dGg9IjkiIGhlaWdodD0iOSIgcng9IjAuNSIgcnk9IjAuNSIvPjxwYXRoIGNsYXNzPSJjbHMtMiIg ZD0iTTM2LDEwLjA3djhIMjh2LThoOG0wLTFIMjhhMSwxLDAsMCwwLTEsMXY4YTEsMSwwLDAsMCwx LDFoOGExLDEsMCwwLDAsMS0xdi04YTEsMSwwLDAsMC0xLTFaIi8+PGxpbmUgY2xhc3M9ImNscy0z IiB4MT0iMTguMTQiIHkxPSI0NC4yIiB4Mj0iMjEuOTIiIHkyPSI0Mi4wMiIvPjxwYXRoIGNsYXNz PSJjbHMtNCIgZD0iTTI0LDQwLjgyYTEyLjA5LDEyLjA5LDAsMCwwLTIsMy4zNmwtLjM1LTItMS41 NS0xLjNBMTIuMDgsMTIuMDgsMCwwLDAsMjQsNDAuODJaIi8+PGxpbmUgY2xhc3M9ImNscy0zIiB4 MT0iNDIuMDYiIHkxPSI0Mi4yMiIgeDI9IjQ1Ljg0IiB5Mj0iNDQuNCIvPjxwYXRoIGNsYXNzPSJj bHMtNCIgZD0iTTQwLDQxYTEyLjA5LDEyLjA5LDAsMCwxLDIsMy4zNmwuMzUtMiwxLjU1LTEuM0Ex Mi4wOCwxMi4wOCwwLDAsMSw0MCw0MVoiLz48bGluZSBjbGFzcz0iY2xzLTMiIHgxPSIzMi4wOSIg eTE9IjIwLjA3IiB4Mj0iMzIuMDgiIHkyPSIyNC40MyIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0i TTMyLjA4LDI2Ljg1YTEyLjA5LDEyLjA5LDAsMCwwLTEuOS0zLjQybDEuOS42OSwxLjktLjY5QTEy LjA4LDEyLjA4LDAsMCwwLDMyLjA4LDI2Ljg1WiIvPjxjaXJjbGUgY2xhc3M9ImNscy01IiBjeD0i MzIuMDgiIGN5PSIzNS45MyIgcj0iNy41Ii8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNMzIuMDgs MjguOTNhNyw3LDAsMSwxLTcsNyw3LDcsMCwwLDEsNy03bTAtMWE4LDgsMCwxLDAsOCw4LDgsOCww LDAsMC04LThaIi8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9ncm91cC5zdmcgYi93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfZ3JvdXAuc3ZnCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNDRhYTk3ZmUyCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X2dyb3VwLnN2ZwpAQCAtMCwwICsx IEBACis8c3ZnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNm MGVjYjY7fS5jbHMtMntmaWxsOiNjMThmMzU7fS5jbHMtMTAsLmNscy0ze2ZpbGw6I2QzZDRmMzt9 LmNscy00e2ZpbGw6IzY2NmJkMTt9LmNscy01e2ZpbGw6I2FkZGZmMzt9LmNscy02e2ZpbGw6IzI5 ODBiOTt9LmNscy03e29wYWNpdHk6MC43O30uY2xzLTgsLmNscy05e2ZpbGw6bm9uZTtzdHJva2Ut bGluZWpvaW46cm91bmQ7fS5jbHMtMTEsLmNscy04e3N0cm9rZTojYzE4ZjM1O30uY2xzLTEwLC5j bHMtMTIsLmNscy05e3N0cm9rZTojNjY2YmQxO30uY2xzLTEwLC5jbHMtMTEsLmNscy0xMntzdHJv a2UtbWl0ZXJsaW1pdDoxMDt9LmNscy0xMXtmaWxsOiMzNDQ5NWU7fS5jbHMtMTJ7ZmlsbDojNTI4 ZDE5O308L3N0eWxlPjwvZGVmcz48dGl0bGU+ZXhfZ3JvdXA8L3RpdGxlPjxyZWN0IGNsYXNzPSJj bHMtMSIgeD0iMTkuMDMiIHk9IjE2IiB3aWR0aD0iMzUuOTgiIGhlaWdodD0iMjQuOTYiLz48cGF0 aCBjbGFzcz0iY2xzLTIiIGQ9Ik01NC41MiwxNi41djI0aC0zNXYtMjRoMzVtMS0xaC0zN3YyNmgz N3YtMjZaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjAuNTMsNTZjLTEuMzcsMC0xLjUtLjEz LTEuNS0xLjVWNDFINTVWNTQuNWMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNz PSJjbHMtNCIgZD0iTTU0LjUyLDQxLjV2MTNhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIuMTgsMi4x OCwwLDAsMS0uOTIuMWgtMzNhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAs MS0uMS0uOTJ2LTEzaDM1bTEtMWgtMzd2MTRjMCwxLjY1LjM1LDIsMiwyaDMzYzEuNjUsMCwyLS4z NSwyLTJ2LTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTQ2Ljg3LDE2VjhoNi42M2MxLjM3 LDAsMS41LjEzLDEuNSwxLjVWMTZaIi8+PHBhdGggY2xhc3M9ImNscy02IiBkPSJNNTMuNDksOC41 YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTgsMi4xOCwwLDAsMSwuMS45MnY2SDQ3LjM3di03 aDYuMTNtMC0xSDQ2LjM3djloOS4xM3YtN2MwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRoIGNsYXNz PSJjbHMtNSIgZD0iTTE5LDE2VjkuNWMwLTEuMzcuMTMtMS41LDEuNS0xLjVoNi41OXY4WiIvPjxw YXRoIGNsYXNzPSJjbHMtNiIgZD0iTTI2LjU5LDguNXY3SDE5LjUxdi02YTMuMjgsMy4yOCwwLDAs MSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg2LjA5bTEtMUgyMC41MWMtMS42NSwwLTIs LjM1LTIsMnY3aDkuMDl2LTlaIi8+PHJlY3QgY2xhc3M9ImNscy01IiB4PSI0MC4zMSIgeT0iOCIg d2lkdGg9IjcuMDUiIGhlaWdodD0iOCIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTQ2Ljg2LDgu NXY3SDQwLjh2LTdoNm0xLTFoLTh2OWg4LjA1di05WiIvPjxyZWN0IGNsYXNzPSJjbHMtNSIgeD0i MzMuNzQiIHk9IjgiIHdpZHRoPSI2LjU3IiBoZWlnaHQ9IjgiLz48cGF0aCBjbGFzcz0iY2xzLTYi IGQ9Ik0zOS44MSw4LjV2N0gzNC4yNHYtN2g1LjU2bTEtMUgzMy4yNXY5aDcuNTd2LTlaIi8+PHJl Y3QgY2xhc3M9ImNscy01IiB4PSIyNi42MiIgeT0iOCIgd2lkdGg9IjcuMSIgaGVpZ2h0PSI4Ii8+ PHBhdGggY2xhc3M9ImNscy02IiBkPSJNMzMuMjMsOC41djdIMjcuMTJ2LTdoNi4xbTEtMWgtOC4x djloOC4xMXYtOVoiLz48ZyBjbGFzcz0iY2xzLTciPjxsaW5lIGNsYXNzPSJjbHMtOCIgeDE9IjI2 LjYxIiB5MT0iNDAuNSIgeDI9IjI2LjYxIiB5Mj0iMTYuNSIvPjxsaW5lIGNsYXNzPSJjbHMtOCIg eDE9IjQwLjI5IiB5MT0iNDAuNSIgeDI9IjQwLjI5IiB5Mj0iMTYuNSIvPjxsaW5lIGNsYXNzPSJj bHMtOCIgeDE9IjMzLjciIHkxPSI0MC41IiB4Mj0iMzMuNyIgeTI9IjE2LjUiLz48bGluZSBjbGFz cz0iY2xzLTgiIHgxPSI0Ny4zNyIgeTE9IjQwLjUiIHgyPSI0Ny4zNyIgeTI9IjE2LjUiLz48bGlu ZSBjbGFzcz0iY2xzLTkiIHgxPSIyNi42MSIgeTE9IjU1LjYyIiB4Mj0iMjYuNjEiIHkyPSI0MC41 Ii8+PGxpbmUgY2xhc3M9ImNscy05IiB4MT0iNDAuMjkiIHkxPSI1NS42MiIgeDI9IjQwLjI5IiB5 Mj0iNDAuNSIvPjxsaW5lIGNsYXNzPSJjbHMtOSIgeDE9IjMzLjciIHkxPSI1NS42MiIgeDI9IjMz LjciIHkyPSI0MC41Ii8+PGxpbmUgY2xhc3M9ImNscy05IiB4MT0iNDcuMzciIHkxPSI1NS42MiIg eDI9IjQ3LjM3IiB5Mj0iNDAuNSIvPjxsaW5lIGNsYXNzPSJjbHMtOCIgeDE9IjE5LjQ5IiB5MT0i MjQuMzUiIHgyPSI1NC40NiIgeTI9IjI0LjM1Ii8+PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9IjE5 LjUyIiB5MT0iNDguNSIgeDI9IjU0LjQ5IiB5Mj0iNDguNSIvPjxsaW5lIGNsYXNzPSJjbHMtOCIg eDE9IjE5LjQ5IiB5MT0iMzIuNzMiIHgyPSI1NC40NiIgeTI9IjMyLjczIi8+PC9nPjxwYXRoIGNs YXNzPSJjbHMtMTEiIGQ9Ik0xNC44OCwzOC4yOWwtLjUzLDBhNC4zNCw0LjM0LDAsMCwxLS42Ny0u MTFBNS4zOSw1LjM5LDAsMCwxLDEzLDM3LjlhMi45LDIuOSwwLDAsMS0uNy0uNDEsMy4zMSwzLjMx LDAsMCwxLS44My0uOUEzLjY1LDMuNjUsMCwwLDEsMTEsMzUuNTJjLS4wOS0uMzktLjIyLTUuMjUt LjMtNS42NmEyLjM5LDIuMzksMCwwLDAtLjQ3LTEuMDYsMi42NiwyLjY2LDAsMCwwLTEtLjczLjY5 LjY5LDAsMCwxLDAtMS4xNywyLjY1LDIuNjUsMCwwLDAsMS0uNzMsMi4zNywyLjM3LDAsMCwwLC40 Ny0xLjA2Yy4wOC0uNDEuMTMtMi45MS4xNC0zLjM4QTcsNywwLDAsMSwxMSwyMC40NWEzLjY2LDMu NjYsMCwwLDEsLjQzLTEuMDcsMy4zNCwzLjM0LDAsMCwxLC44My0uOSwyLjg5LDIuODksMCwwLDEs LjctLjQxLDUuMTIsNS4xMiwwLDAsMSwuNzItLjIzLDQuMTEsNC4xMSwwLDAsMSwuNjctLjExbC41 Mywwdi40NGE0LjQ3LDQuNDcsMCwwLDAtMi4wNS41MSwyLjgyLDIuODIsMCwwLDAtMS4wNiwxLjA4 LDMuNTgsMy41OCwwLDAsMC0uNCwxLjRjMCwuNS0uMTQsMy43LS4yLDRhMi43NywyLjc3LDAsMCwx LS4yNi44MywyLjQxLDIuNDEsMCwwLDEtLjQ0LjYsMi41MiwyLjUyLDAsMCwxLS42Mi40NiwzLjY1 LDMuNjUsMCwwLDEtLjY0LjI3LDMuNTIsMy41MiwwLDAsMS0uNi4xM2MtLjE5LDAtLjE5LjEsMCwu MTJhMy41LDMuNSwwLDAsMSwuNi4xMyw0LDQsMCwwLDEsLjY0LjI3LDIuNTMsMi41MywwLDAsMSwu NjIuNDYsMi4zNywyLjM3LDAsMCwxLC40NC42LDIuNzYsMi43NiwwLDAsMSwuMjYuODMsMi41Niwy LjU2LDAsMCwxLC4xMy45M3MwLDMuNi4wNiw0LjFhMy41OSwzLjU5LDAsMCwwLC40LDEuNCwyLjgx LDIuODEsMCwwLDAsMS4wNiwxLjA4LDQuNDIsNC40MiwwLDAsMCwyLjA1LjUxWiIvPjxwYXRoIGNs YXNzPSJjbHMtMTIiIGQ9Ik0xNC44OCw1NS4zbC0uNTMsMGE0LjM0LDQuMzQsMCwwLDEtLjY3LS4x MSw1LjM5LDUuMzksMCwwLDEtLjcyLS4yMywyLjksMi45LDAsMCwxLS43LS40MSwzLjMxLDMuMzEs MCwwLDEtLjgzLS45QTMuNjUsMy42NSwwLDAsMSwxMSw1Mi41M2MtLjA5LS4zOS0uMjItMS4yNS0u My0xLjY2YTIuMzksMi4zOSwwLDAsMC0uNDctMS4wNiwyLjY2LDIuNjYsMCwwLDAtMS0uNzMuNjku NjksMCwwLDEsMC0xLjE3LDIuNjUsMi42NSwwLDAsMCwxLS43MywyLjM3LDIuMzcsMCwwLDAsLjQ3 LTEuMDZjLjA4LS40MS4yMS0xLjI4LjMtMS42NmEzLjY2LDMuNjYsMCwwLDEsLjQzLTEuMDcsMy4z NCwzLjM0LDAsMCwxLC44My0uOSwyLjg5LDIuODksMCwwLDEsLjctLjQxLDUuMTIsNS4xMiwwLDAs MSwuNzItLjIzLDQuMTEsNC4xMSwwLDAsMSwuNjctLjExbC41Mywwdi40NGE0LjQ3LDQuNDcsMCww LDAtMi4wNS41MSwyLjgyLDIuODIsMCwwLDAtMS4wNiwxLjA4LDMuNTgsMy41OCwwLDAsMC0uNCwx LjQsNy42Niw3LjY2LDAsMCwxLS4yLDEsMi43NywyLjc3LDAsMCwxLS4yNi44MywyLjQxLDIuNDEs MCwwLDEtLjQ0LjYsMi41MiwyLjUyLDAsMCwxLS42Mi40NiwzLjY1LDMuNjUsMCwwLDEtLjY0LjI3 LDMuNTIsMy41MiwwLDAsMS0uNi4xM2MtLjE5LDAtLjE5LjEsMCwuMTJhMy41LDMuNSwwLDAsMSwu Ni4xMyw0LDQsMCwwLDEsLjY0LjI3LDIuNTMsMi41MywwLDAsMSwuNjIuNDYsMi4zNywyLjM3LDAs MCwxLC40NC42LDIuNzYsMi43NiwwLDAsMSwuMjYuODMsNy42Niw3LjY2LDAsMCwxLC4yLDEsMy41 OSwzLjU5LDAsMCwwLC40LDEuNCwyLjgxLDIuODEsMCwwLDAsMS4wNiwxLjA4LDQuNDIsNC40Miww LDAsMCwyLjA1LjUxWiIvPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9oYXNoLnN2ZyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9oYXNoLnN2ZwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmRmZDhjNmNiNwotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9oYXNoLnN2ZwpAQCAtMCwwICsxIEBA Cis8c3ZnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw MC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTEwLC5j bHMtMTF7ZmlsbDojZDNkNGYzO30uY2xzLTJ7ZmlsbDojNjY2YmQxO30uY2xzLTN7ZmlsbDojYWRk ZmYzO30uY2xzLTR7ZmlsbDojMjk4MGI5O30uY2xzLTV7b3BhY2l0eTowLjc7fS5jbHMtMTIsLmNs cy02e2ZpbGw6bm9uZTt9LmNscy0xMCwuY2xzLTExLC5jbHMtNntzdHJva2U6IzY2NmJkMTt9LmNs cy0xMiwuY2xzLTE0LC5jbHMtMTUsLmNscy02e3N0cm9rZS1saW5lam9pbjpyb3VuZDt9LmNscy03 e2ZpbGw6I2YwZWNiNjt9LmNscy04e2ZpbGw6I2MxOGYzNTt9LmNscy05e2ZpbGw6IzcyY2VlZTtz dHJva2U6IzI5ODBiOTt9LmNscy0xNSwuY2xzLTl7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7fS5jbHMt MTAsLmNscy0xMSwuY2xzLTl7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fS5jbHMtMTEsLmNscy0xMntv cGFjaXR5OjAuODt9LmNscy0xMntzdHJva2U6I2MxOGYzNTt9LmNscy0xM3tmaWxsOiNjMDA7fS5j bHMtMTQsLmNscy0xNXtmaWxsOiM1MjhkMTk7c3Ryb2tlOiM1MjhkMTk7fS5jbHMtMTV7c3Ryb2tl LXdpZHRoOjJweDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmV4X2hhc2g8L3RpdGxlPjxwYXRoIGNs YXNzPSJjbHMtMSIgZD0iTTEwLjM4LDU2LjVjLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVWMTUuNWg5 VjU1YzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTcu MzYsMTZWNTVhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMWgtNmEz LjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xNywyLjE3LDAsMCwxLS4xLS45MlYxNmg4bTEtMWgt MTBWNTVjMCwxLjY1LjM1LDIsMiwyaDZjMS42NSwwLDItLjM1LDItMlYxNVoiLz48cGF0aCBjbGFz cz0iY2xzLTMiIGQ9Ik04Ljg4LDE1LjVWOWMwLTEuMzcuMTMtMS41LDEuNS0xLjVoNmMxLjM3LDAs MS41LjEzLDEuNSwxLjV2Ni41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTE2LjM2LDhhMy4y NSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xNywyLjE3LDAsMCwxLC4xLjkydjZoLThWOWEzLjI4LDMu MjgsMCwwLDEsLjA4LS45LDIuMTgsMi4xOCwwLDAsMSwuOTItLjFoNm0wLTFoLTZjLTEuNjUsMC0y LC4zNS0yLDJ2N2gxMFY5YzAtMS42NS0uMzUtMi0yLTJaIi8+PGcgY2xhc3M9ImNscy01Ij48bGlu ZSBjbGFzcz0iY2xzLTYiIHgxPSI5LjM5IiB5MT0iMjMuNzQiIHgyPSIxNy4zNSIgeTI9IjIzLjc0 Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iOS4zOSIgeTE9IjMxLjQ5IiB4Mj0iMTcuMzUiIHky PSIzMS40OSIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjkuMzkiIHkxPSIzOS4yMyIgeDI9IjE3 LjM1IiB5Mj0iMzkuMjMiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI5LjM5IiB5MT0iNDYuOTci IHgyPSIxNy4zNSIgeTI9IjQ2Ljk3Ii8+PC9nPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTQ3LjQs NDYuMjJ2LTI4aDYuMjJjMS4zNywwLDEuNS4xMywxLjUsMS41djI1YzAsMS4zNy0uMTMsMS41LTEu NSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTMuNjIsMTguNzJhMy4yNSwzLjI1LDAs MCwxLC45LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4xLjkydjI1YTMuMjgsMy4yOCwwLDAsMS0uMDgu OSwyLjE4LDIuMTgsMCwwLDEtLjkyLjFINDcuOXYtMjdoNS43Mm0wLTFINDYuOXYyOWg2LjcyYzEu NjUsMCwyLS4zNSwyLTJ2LTI1YzAtMS42NS0uMzUtMi0yLTJaIi8+PHBhdGggY2xhc3M9ImNscy03 IiBkPSJNMjYuNjQsNDYuMjJjLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVWMjQuMjJINDcuNDJ2MjJa Ii8+PHBhdGggY2xhc3M9ImNscy04IiBkPSJNNDYuOTIsMjQuNzJ2MjFIMjYuNjRhMy4yNSwzLjI1 LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJ2LTIwSDQ2LjkybTEtMUgyNC42 NHYyMWMwLDEuNjUuMzUsMiwyLDJINDcuOTJ2LTIzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0i TTI1LjE0LDI0LjIydi00LjVjMC0xLjM3LjEzLTEuNSwxLjUtMS41SDQ3LjQydjZaIi8+PHBhdGgg Y2xhc3M9ImNscy00IiBkPSJNNDYuOTIsMTguNzJ2NUgyNS42NHYtNGEzLjI4LDMuMjgsMCwwLDEs LjA4LS45LDIuMTgsMi4xOCwwLDAsMSwuOTItLjFINDYuOTJtMS0xSDI2LjY0Yy0xLjY1LDAtMiwu MzUtMiwydjVINDcuOTJ2LTdaIi8+PGxpbmUgY2xhc3M9ImNscy05IiB4MT0iMzIuNiIgeTE9IjI0 LjA1IiB4Mj0iMzIuNiIgeTI9IjE4LjI0Ii8+PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9IjU1IiB5 MT0iMjQuMjIiIHgyPSI0Ny45MiIgeTI9IjI0LjIyIi8+PGxpbmUgY2xhc3M9ImNscy0xMSIgeDE9 IjU1IiB5MT0iMzEuNDkiIHgyPSI0Ny45MiIgeTI9IjMxLjQ5Ii8+PGxpbmUgY2xhc3M9ImNscy0x MSIgeDE9IjU1IiB5MT0iMzguOTYiIHgyPSI0Ny45MiIgeTI9IjM4Ljk2Ii8+PGxpbmUgY2xhc3M9 ImNscy05IiB4MT0iNDAuMzUiIHkxPSIyNC4wNSIgeDI9IjQwLjM1IiB5Mj0iMTguMjQiLz48bGlu ZSBjbGFzcz0iY2xzLTEyIiB4MT0iMzIuNiIgeTE9IjQ2LjA1IiB4Mj0iMzIuNiIgeTI9IjI0Ljcy Ii8+PGxpbmUgY2xhc3M9ImNscy0xMiIgeDE9IjQwLjM1IiB5MT0iNDYuMDUiIHgyPSI0MC4zNSIg eTI9IjI0LjcyIi8+PGxpbmUgY2xhc3M9ImNscy0xMiIgeDE9IjI1LjE3IiB5MT0iMzEuNTciIHgy PSI0Ny40MiIgeTI9IjMxLjU3Ii8+PGxpbmUgY2xhc3M9ImNscy0xMiIgeDE9IjI1LjE3IiB5MT0i MzguOTYiIHgyPSI0Ny40MiIgeTI9IjM4Ljk2Ii8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTEw LjI3LDMyLjg2aDYuMzhWMzhIMTAuMjdaIi8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTMzLjgx LDMyLjcxaDUuNHY1LjIzaC01LjRaIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xNCIgcG9pbnRzPSIz My40MyAzNS41MyAzMC4wNSAzMyAzMC4wNSAzOC4wNiAzMy40MyAzNS41MyIvPjxsaW5lIGNsYXNz PSJjbHMtMTUiIHgxPSIyOS43NyIgeTE9IjM1LjUzIiB4Mj0iMTkuMzMiIHkyPSIzNS41MyIvPjxw b2x5Z29uIGNsYXNzPSJjbHMtMTQiIHBvaW50cz0iMzYuODQgNy42NyAzNC4zMSAxMS4wNSAzOS4z NyAxMS4wNSAzNi44NCA3LjY3Ii8+PGxpbmUgY2xhc3M9ImNscy0xNSIgeDE9IjM2Ljg0IiB5MT0i MTEuMzMiIHgyPSIzNi44NCIgeTI9IjMwLjc3Ii8+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4 X2hhc2hfYW50aV9qb2luLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9l eF9oYXNoX2FudGlfam9pbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw Li4zOWE5MzU0YjgKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhw bGFpbi9pbWcvZXhfaGFzaF9hbnRpX2pvaW4uc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgaWQ9Il8x IiBkYXRhLW5hbWU9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0Jv eD0iMCAwIDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0xLC5jbHMtMTB7ZmlsbDojZDNkNGYzO30u Y2xzLTJ7ZmlsbDojNjY2YmQxO30uY2xzLTN7ZmlsbDojYWRkZmYzO30uY2xzLTR7ZmlsbDojMjk4 MGI5O30uY2xzLTV7b3BhY2l0eTowLjc7fS5jbHMtMTEsLmNscy0xNiwuY2xzLTZ7ZmlsbDpub25l O30uY2xzLTEwLC5jbHMtNntzdHJva2U6IzY2NmJkMTt9LmNscy0xMSwuY2xzLTEzLC5jbHMtMTQs LmNscy02e3N0cm9rZS1saW5lam9pbjpyb3VuZDt9LmNscy03e2ZpbGw6I2YwZWNiNjt9LmNscy04 e2ZpbGw6I2MxOGYzNTt9LmNscy05e2ZpbGw6IzcyY2VlZTtzdHJva2U6IzI5ODBiOTt9LmNscy0x NCwuY2xzLTl7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7fS5jbHMtMTAsLmNscy0xNiwuY2xzLTl7c3Ry b2tlLW1pdGVybGltaXQ6MTA7fS5jbHMtMTF7c3Ryb2tlOiNjMThmMzU7fS5jbHMtMTJ7ZmlsbDoj YzAwO30uY2xzLTEzLC5jbHMtMTR7ZmlsbDojNTI4ZDE5O3N0cm9rZTojNTI4ZDE5O30uY2xzLTE0 e3N0cm9rZS13aWR0aDoycHg7fS5jbHMtMTV7ZmlsbDojZGVmNGZkO30uY2xzLTE2e3N0cm9rZToj YzAwO3N0cm9rZS13aWR0aDoxLjVweDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmV4X2hhc2hfYW50 aV9qb2luPC90aXRsZT48cmVjdCBjbGFzcz0iY2xzLTEiIHg9IjguNjYiIHk9IjcuNSIgd2lkdGg9 IjguOTgiIGhlaWdodD0iNDkiIHJ4PSIxLjUiIHJ5PSIxLjUiLz48cGF0aCBjbGFzcz0iY2xzLTIi IGQ9Ik0xNi4xNCw4YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTgsMi4xOCwwLDAsMSwuMS45 MlY1NWEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xaC02YTMuMjUs My4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCwwLDEtLjEtLjkyVjlhMy4yOCwzLjI4LDAs MCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDZtMC0xaC02Yy0xLjY1LDAtMiwuMzUt MiwyVjU1YzAsMS42NS4zNSwyLDIsMmg2YzEuNjUsMCwyLS4zNSwyLTJWOWMwLTEuNjUtLjM1LTIt Mi0yWiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTguNjYsMTUuNVY5YzAtMS4zNy4xMy0xLjUs MS41LTEuNWg2YzEuMzcsMCwxLjUuMTMsMS41LDEuNXY2LjVaIi8+PHBhdGggY2xhc3M9ImNscy00 IiBkPSJNMTYuMTQsOGEzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEu OTJ2NmgtOFY5YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg2 bTAtMWgtNmMtMS42NSwwLTIsLjM1LTIsMnY3aDEwVjljMC0xLjY1LS4zNS0yLTItMloiLz48ZyBj bGFzcz0iY2xzLTUiPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjkuMTciIHkxPSIyMy43NCIgeDI9 IjE3LjEzIiB5Mj0iMjMuNzQiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI5LjE3IiB5MT0iMzEu NDkiIHgyPSIxNy4xMyIgeTI9IjMxLjQ5Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iOS4xNyIg eTE9IjM5LjIzIiB4Mj0iMTcuMTMiIHkyPSIzOS4yMyIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9 IjkuMTciIHkxPSI0Ni45NyIgeDI9IjE3LjEzIiB5Mj0iNDYuOTciLz48L2c+PHBhdGggY2xhc3M9 ImNscy0xIiBkPSJNNDcuMTgsNDYuMjJ2LTI4SDUzLjRjMS4zNywwLDEuNS4xMywxLjUsMS41djI1 YzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTMuNCwx OC43MmEzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2MjVhMy4y OCwzLjI4LDAsMCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUg0Ny42OHYtMjdINTMuNG0w LTFINDYuNjh2MjlINTMuNGMxLjY1LDAsMi0uMzUsMi0ydi0yNWMwLTEuNjUtLjM1LTItMi0yWiIv PjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTI2LjQyLDQ2LjIyYy0xLjM3LDAtMS41LS4xMy0xLjUt MS41VjI0LjIySDQ3LjJ2MjJaIi8+PHBhdGggY2xhc3M9ImNscy04IiBkPSJNNDYuNywyNC43MnYy MUgyNi40MmEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xOCwyLjE4LDAsMCwxLS4xLS45MnYt MjBINDYuN20xLTFIMjQuNDJ2MjFjMCwxLjY1LjM1LDIsMiwySDQ3Ljd2LTIzWiIvPjxwYXRoIGNs YXNzPSJjbHMtMyIgZD0iTTI0LjkyLDI0LjIydi00LjVjMC0xLjM3LjEzLTEuNSwxLjUtMS41SDQ3 LjJ2NloiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik00Ni43LDE4LjcydjVIMjUuNDJ2LTRhMy4y OCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xSDQ2LjdtMS0xSDI2LjQy Yy0xLjY1LDAtMiwuMzUtMiwydjVINDcuN3YtN1oiLz48bGluZSBjbGFzcz0iY2xzLTkiIHgxPSIz Mi4zOCIgeTE9IjI0LjA1IiB4Mj0iMzIuMzgiIHkyPSIxOC4yNCIvPjxsaW5lIGNsYXNzPSJjbHMt MTAiIHgxPSI1NC43OCIgeTE9IjI0LjIyIiB4Mj0iNDcuNyIgeTI9IjI0LjIyIi8+PGxpbmUgY2xh c3M9ImNscy05IiB4MT0iNDAuMTMiIHkxPSIyNC4wNSIgeDI9IjQwLjEzIiB5Mj0iMTguMjQiLz48 bGluZSBjbGFzcz0iY2xzLTExIiB4MT0iMzIuMzgiIHkxPSI0Ni4wNSIgeDI9IjMyLjM4IiB5Mj0i MjQuNzIiLz48bGluZSBjbGFzcz0iY2xzLTExIiB4MT0iNDAuMTMiIHkxPSI0Ni4wNSIgeDI9IjQw LjEzIiB5Mj0iMjQuNzIiLz48bGluZSBjbGFzcz0iY2xzLTExIiB4MT0iMjQuOTUiIHkxPSIzMS41 NyIgeDI9IjQ3LjIiIHkyPSIzMS41NyIvPjxsaW5lIGNsYXNzPSJjbHMtMTEiIHgxPSIyNC45NSIg eTE9IjM4Ljk2IiB4Mj0iNDcuMiIgeTI9IjM4Ljk2Ii8+PHBhdGggY2xhc3M9ImNscy0xMiIgZD0i TTEwLjA1LDMyLjg2aDYuMzdWMzhIMTAuMDVaIi8+PHBhdGggY2xhc3M9ImNscy0xMiIgZD0iTTMz LjU5LDMyLjcxSDM5djUuMjNoLTUuNFoiLz48cG9seWdvbiBjbGFzcz0iY2xzLTEzIiBwb2ludHM9 IjMzLjIxIDM1LjUzIDI5LjgzIDMzIDI5LjgzIDM4LjA2IDMzLjIxIDM1LjUzIi8+PGxpbmUgY2xh c3M9ImNscy0xNCIgeDE9IjI5LjU1IiB5MT0iMzUuNTMiIHgyPSIxOS4xMSIgeTI9IjM1LjUzIi8+ PHBvbHlnb24gY2xhc3M9ImNscy0xMyIgcG9pbnRzPSIzNi42MiA3LjY3IDM0LjA5IDExLjA1IDM5 LjE1IDExLjA1IDM2LjYyIDcuNjciLz48bGluZSBjbGFzcz0iY2xzLTE0IiB4MT0iMzYuNjIiIHkx PSIxMS4zMyIgeDI9IjM2LjYyIiB5Mj0iMzAuNzciLz48Y2lyY2xlIGNsYXNzPSJjbHMtMTUiIGN4 PSI1MC44IiBjeT0iMzQuMzciIHI9IjQuMjkiLz48cGF0aCBjbGFzcz0iY2xzLTEyIiBkPSJNNTAu OCwzMC44M2EzLjU0LDMuNTQsMCwxLDEtMy41NCwzLjU0LDMuNTUsMy41NSwwLDAsMSwzLjU0LTMu NTRtMC0xLjVhNSw1LDAsMSwwLDUsNSw1LDUsMCwwLDAtNS01WiIvPjxsaW5lIGNsYXNzPSJjbHMt MTYiIHgxPSI0Ny41MiIgeTE9IjM2LjY0IiB4Mj0iNTQuMDMiIHkyPSIzMS45MSIvPjwvc3ZnPgpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9FeHBsYWluL2ltZy9leF9oYXNoX3NlbWlfam9pbi5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvRXhwbGFpbi9pbWcvZXhfaGFzaF9zZW1pX2pvaW4uc3ZnCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMC4uYzBkOTg4NmQ2Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X2hhc2hfc2VtaV9qb2luLnN2ZwpAQCAtMCww ICsxIEBACis8c3ZnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5v cmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xz LTEwLC5jbHMtMTF7ZmlsbDojZDNkNGYzO30uY2xzLTJ7ZmlsbDojNjY2YmQxO30uY2xzLTN7Zmls bDojYWRkZmYzO30uY2xzLTR7ZmlsbDojMjk4MGI5O30uY2xzLTV7b3BhY2l0eTowLjc7fS5jbHMt MTIsLmNscy02e2ZpbGw6bm9uZTt9LmNscy0xMCwuY2xzLTExLC5jbHMtNntzdHJva2U6IzY2NmJk MTt9LmNscy0xMiwuY2xzLTE0LC5jbHMtMTUsLmNscy02e3N0cm9rZS1saW5lam9pbjpyb3VuZDt9 LmNscy03e2ZpbGw6I2YwZWNiNjt9LmNscy04e2ZpbGw6I2MxOGYzNTt9LmNscy05e2ZpbGw6Izcy Y2VlZTtzdHJva2U6IzI5ODBiOTt9LmNscy0xNSwuY2xzLTl7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7 fS5jbHMtMTAsLmNscy0xMSwuY2xzLTl7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fS5jbHMtMTF7b3Bh Y2l0eTowLjg7fS5jbHMtMTJ7c3Ryb2tlOiNjMThmMzU7fS5jbHMtMTN7ZmlsbDojYzAwO30uY2xz LTE0LC5jbHMtMTV7ZmlsbDojNTI4ZDE5O3N0cm9rZTojNTI4ZDE5O30uY2xzLTE1e3N0cm9rZS13 aWR0aDoycHg7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5leF9oYXNoX3NlbWlfam9pbjwvdGl0bGU+ PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTAuMTYsNTYuNWMtMS4zNywwLTEuNS0uMTMtMS41LTEu NVYxNS41aDlWNTVjMCwxLjM3LS4xMywxLjUtMS41LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTIi IGQ9Ik0xNy4xNCwxNlY1NWEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45 Mi4xaC02YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCwwLDEtLjEtLjkyVjE2 aDhtMS0xaC0xMFY1NWMwLDEuNjUuMzUsMiwyLDJoNmMxLjY1LDAsMi0uMzUsMi0yVjE1WiIvPjxw YXRoIGNsYXNzPSJjbHMtMyIgZD0iTTguNjYsMTUuNVY5YzAtMS4zNy4xMy0xLjUsMS41LTEuNWg2 YzEuMzcsMCwxLjUuMTMsMS41LDEuNXY2LjVaIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNMTYu MTQsOGEzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2NmgtOFY5 YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg2bTAtMWgtNmMt MS42NSwwLTIsLjM1LTIsMnY3aDEwVjljMC0xLjY1LS4zNS0yLTItMloiLz48ZyBjbGFzcz0iY2xz LTUiPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjkuMTciIHkxPSIyMy43NCIgeDI9IjE3LjEzIiB5 Mj0iMjMuNzQiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI5LjE3IiB5MT0iMzEuNDkiIHgyPSIx Ny4xMyIgeTI9IjMxLjQ5Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iOS4xNyIgeTE9IjM5LjIz IiB4Mj0iMTcuMTMiIHkyPSIzOS4yMyIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjkuMTciIHkx PSI0Ni45NyIgeDI9IjE3LjEzIiB5Mj0iNDYuOTciLz48L2c+PHBhdGggY2xhc3M9ImNscy0xIiBk PSJNNDcuMTgsNDYuMjJ2LTI4SDUzLjRjMS4zNywwLDEuNS4xMywxLjUsMS41djI1YzAsMS4zNy0u MTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTMuNCwxOC43MmEzLjI1 LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2MjVhMy4yOCwzLjI4LDAs MCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUg0Ny42OHYtMjdINTMuNG0wLTFINDYuNjh2 MjlINTMuNGMxLjY1LDAsMi0uMzUsMi0ydi0yNWMwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRoIGNs YXNzPSJjbHMtNyIgZD0iTTI2LjQyLDQ2LjIyYy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjI0LjIy SDQ3LjJ2MjJaIi8+PHBhdGggY2xhc3M9ImNscy04IiBkPSJNNDYuNywyNC43MnYyMUgyNi40MmEz LjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xOCwyLjE4LDAsMCwxLS4xLS45MnYtMjBINDYuN20x LTFIMjQuNDJ2MjFjMCwxLjY1LjM1LDIsMiwySDQ3Ljd2LTIzWiIvPjxwYXRoIGNsYXNzPSJjbHMt MyIgZD0iTTI0LjkyLDI0LjIydi00LjVjMC0xLjM3LjEzLTEuNSwxLjUtMS41SDQ3LjJ2NloiLz48 cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik00Ni43LDE4LjcydjVIMjUuNDJ2LTRhMy4yOCwzLjI4LDAs MCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xSDQ2LjdtMS0xSDI2LjQyYy0xLjY1LDAt MiwuMzUtMiwydjVINDcuN3YtN1oiLz48bGluZSBjbGFzcz0iY2xzLTkiIHgxPSIzMi4zOCIgeTE9 IjI0LjA1IiB4Mj0iMzIuMzgiIHkyPSIxOC4yNCIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSI1 NC43OCIgeTE9IjI0LjIyIiB4Mj0iNDcuNyIgeTI9IjI0LjIyIi8+PGxpbmUgY2xhc3M9ImNscy0x MSIgeDE9IjU0Ljc4IiB5MT0iMzEuNDkiIHgyPSI0Ny43IiB5Mj0iMzEuNDkiLz48bGluZSBjbGFz cz0iY2xzLTExIiB4MT0iNTQuNzgiIHkxPSIzOC45NiIgeDI9IjQ3LjciIHkyPSIzOC45NiIvPjxs aW5lIGNsYXNzPSJjbHMtOSIgeDE9IjQwLjEzIiB5MT0iMjQuMDUiIHgyPSI0MC4xMyIgeTI9IjE4 LjI0Ii8+PGxpbmUgY2xhc3M9ImNscy0xMiIgeDE9IjMyLjM4IiB5MT0iNDYuMDUiIHgyPSIzMi4z OCIgeTI9IjI0LjcyIi8+PGxpbmUgY2xhc3M9ImNscy0xMiIgeDE9IjQwLjEzIiB5MT0iNDYuMDUi IHgyPSI0MC4xMyIgeTI9IjI0LjcyIi8+PGxpbmUgY2xhc3M9ImNscy0xMiIgeDE9IjI0Ljk1IiB5 MT0iMzEuNTciIHgyPSI0Ny4yIiB5Mj0iMzEuNTciLz48bGluZSBjbGFzcz0iY2xzLTEyIiB4MT0i MjQuOTUiIHkxPSIzOC45NiIgeDI9IjQ3LjIiIHkyPSIzOC45NiIvPjxwYXRoIGNsYXNzPSJjbHMt MTMiIGQ9Ik0xMC4wNSwzMi44Nmg2LjM3VjM4SDEwLjA1WiIvPjxwYXRoIGNsYXNzPSJjbHMtMTMi IGQ9Ik0zMy41OSwzMi43MUgzOXY1LjIzaC01LjRaIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xNCIg cG9pbnRzPSIzMy4yMSAzNS41MyAyOS44MyAzMyAyOS44MyAzOC4wNiAzMy4yMSAzNS41MyIvPjxs aW5lIGNsYXNzPSJjbHMtMTUiIHgxPSIyOS41NSIgeTE9IjM1LjUzIiB4Mj0iMTkuMTEiIHkyPSIz NS41MyIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTQiIHBvaW50cz0iMzYuNjIgNy42NyAzNC4wOSAx MS4wNSAzOS4xNSAxMS4wNSAzNi42MiA3LjY3Ii8+PGxpbmUgY2xhc3M9ImNscy0xNSIgeDE9IjM2 LjYyIiB5MT0iMTEuMzMiIHgyPSIzNi42MiIgeTI9IjMwLjc3Ii8+PC9zdmc+ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxh aW4vaW1nL2V4X2hhc2hfc2V0b3BfZXhjZXB0LnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9F eHBsYWluL2ltZy9leF9oYXNoX3NldG9wX2V4Y2VwdC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi42ZDgzMTk5MzEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfaGFzaF9zZXRvcF9leGNlcHQuc3ZnCkBAIC0wLDAg KzEgQEAKKzxzdmcgaWQ9Il8xIiBkYXRhLW5hbWU9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y Zy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0xLC5jbHMt M3tmaWxsOiNmMGVjYjY7fS5jbHMtMntmaWxsOiNjMThmMzU7fS5jbHMtMTAsLmNscy0ze3N0cm9r ZTojYzE4ZjM1O30uY2xzLTMsLmNscy05e3N0cm9rZS1taXRlcmxpbWl0OjEwO30uY2xzLTEwLC5j bHMtMywuY2xzLTh7b3BhY2l0eTowLjg7fS5jbHMtNHtmaWxsOiNhZGRmZjM7fS5jbHMtNXtmaWxs OiMyOTgwYjk7fS5jbHMtNntmaWxsOiNkM2Q0ZjM7fS5jbHMtN3tmaWxsOiM2NjZiZDE7fS5jbHMt MTAsLmNscy04e2ZpbGw6bm9uZTtzdHJva2UtbGluZWpvaW46cm91bmQ7fS5jbHMtOHtzdHJva2U6 IzY2NmJkMTt9LmNscy05e2ZpbGw6IzM0NDk1ZTtzdHJva2U6IzUyOGQxOTt9LmNscy0xMXtmaWxs OiM4OGY2MjU7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5leF9oYXNoX3NldG9wX2V4Y2VwdDwvdGl0 bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTMuMTYsNTguMjFjLTEuMzcsMC0xLjUtLjEzLTEu NS0xLjVWMzkuNTJoN1Y1Ni43MWMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNz PSJjbHMtMiIgZD0iTTE4LjE1LDQwVjU2LjcxYTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIu MTgsMCwwLDEtLjkyLjFoLTRhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTcsMi4xNywwLDAs MS0uMS0uOTJWNDBoNm0xLTFoLThWNTYuNzFjMCwxLjY1LjM1LDIsMiwyaDRjMS42NSwwLDItLjM1 LDItMlYzOVoiLz48bGluZSBjbGFzcz0iY2xzLTMiIHgxPSIxMi4wNSIgeTE9IjQ1Ljg3IiB4Mj0i MTguMjkiIHkyPSI0NS44NyIvPjxsaW5lIGNsYXNzPSJjbHMtMyIgeDE9IjEyLjA1IiB5MT0iNTEu NzkiIHgyPSIxOC4yOSIgeTI9IjUxLjc5Ii8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNMTEuNjYs MTEuNjdWNy4xN2MwLTEuMzcuMTMtMS41LDEuNS0xLjVoNGMxLjM3LDAsMS41LjEzLDEuNSwxLjV2 NC41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTE3LjE1LDYuMTdhMy4yNSwzLjI1LDAsMCwx LC45LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4xLjkydjRoLTZ2LTRhMy4yOCwzLjI4LDAsMCwxLC4w OC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDRtMC0xaC00Yy0xLjY1LDAtMiwuMzUtMiwydjVo OHYtNWMwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTEzLjE2LDMw LjM2Yy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjExLjY3aDdWMjguODZjMCwxLjM3LS4xMywxLjUt MS41LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik0xOC4xNSwxMi4xN1YyOC44NmEzLjI4 LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xaC00YTMuMjUsMy4yNSwwLDAs MS0uOS0uMDhoMGEyLjE4LDIuMTgsMCwwLDEtLjEtLjkyVjEyLjE3aDZtMS0xaC04VjI4Ljg2YzAs MS42NS4zNSwyLDIsMmg0YzEuNjUsMCwyLS4zNSwyLTJWMTEuMTdaIi8+PGxpbmUgY2xhc3M9ImNs cy04IiB4MT0iMTIuMDUiIHkxPSIxOC4wMiIgeDI9IjE4LjI5IiB5Mj0iMTguMDIiLz48bGluZSBj bGFzcz0iY2xzLTgiIHgxPSIxMi4wNSIgeTE9IjIzLjk0IiB4Mj0iMTguMjkiIHkyPSIyMy45NCIv PjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTExLjY2LDM5LjUyVjM1YzAtMS4zNy4xMy0xLjUsMS41 LTEuNWg0YzEuMzcsMCwxLjUuMTMsMS41LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9ImNscy01IiBk PSJNMTcuMTUsMzRhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xNywyLjE3LDAsMCwxLC4xLjky djRoLTZWMzVhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDRt MC0xaC00Yy0xLjY1LDAtMiwuMzUtMiwydjVoOFYzNWMwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRo IGNsYXNzPSJjbHMtOSIgZD0iTTIyLjI1LDQxLjEyYTQuNDIsNC40MiwwLDAsMCwyLjA1LS41MSwy LjgxLDIuODEsMCwwLDAsMS4wNi0xLjA4LDMuNTksMy41OSwwLDAsMCwuNC0xLjRxLjA2LS43NS4w Ni0xLjQ2VjM3YzAtLjY4LDAtMS4yNSwwLTEuNzJBOS4yOCw5LjI4LDAsMCwxLDI2LDM0LjFhMi43 NiwyLjc2LDAsMCwxLC4yNi0uODMsMi4zNywyLjM3LDAsMCwxLC40NC0uNiwyLjUzLDIuNTMsMCww LDEsLjYyLS40Niw0LDQsMCwwLDEsLjY0LS4yNywzLjUsMy41LDAsMCwxLC42LS4xM2MuMTksMCwu MTktLjEsMC0uMTJhMy41MiwzLjUyLDAsMCwxLS42LS4xMywzLjY1LDMuNjUsMCwwLDEtLjY0LS4y NywyLjUyLDIuNTIsMCwwLDEtLjYyLS40NiwyLjQxLDIuNDEsMCwwLDEtLjQ0LS42LDIuNzcsMi43 NywwLDAsMS0uMjYtLjgzLDkuMzEsOS4zMSwwLDAsMS0uMTEtMS4ycTAtLjcxLDAtMS43M3YuMzZj MC0uNDcsMC0xLS4wNi0xLjQ2YTMuNTgsMy41OCwwLDAsMC0uNC0xLjRBMi44MiwyLjgyLDAsMCww LDI0LjMsMjIuOWE0LjQ3LDQuNDcsMCwwLDAtMi4wNS0uNTFWMjJsLjUzLDBhNC4xMSw0LjExLDAs MCwxLC42Ny4xMSw1LjEyLDUuMTIsMCwwLDEsLjcyLjIzLDIuODksMi44OSwwLDAsMSwuNy40MSwz LjM0LDMuMzQsMCwwLDEsLjgzLjksMy42NiwzLjY2LDAsMCwxLC40MywxLjA3QTcsNywwLDAsMSwy Ni4yOCwyNmMwLC40NywwLDEuODgsMCwxLjg4YTcuOSw3LjksMCwwLDAsLjEyLDEuNSwyLjM3LDIu MzcsMCwwLDAsLjQ3LDEuMDYsMi42NSwyLjY1LDAsMCwwLDEsLjczLjY5LjY5LDAsMCwxLDAsMS4x NywyLjY2LDIuNjYsMCwwLDAtMSwuNzMsMi4zOSwyLjM5LDAsMCwwLS40NywxLjA2LDcuOSw3Ljks MCwwLDAtLjEyLDEuNXMtLjA5LDIuNzgtLjE4LDMuMTdhMy42NSwzLjY1LDAsMCwxLS40MywxLjA3 LDMuMzEsMy4zMSwwLDAsMS0uODMuOSwyLjksMi45LDAsMCwxLS43LjQxLDUuMzksNS4zOSwwLDAs MS0uNzIuMjMsNC4zNCw0LjM0LDAsMCwxLS42Ny4xMWwtLjUzLDBaIi8+PHBhdGggY2xhc3M9ImNs cy0xIiBkPSJNMzUuMTgsMzcuNzljLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVWMjQuNzlINDF2MTNa Ii8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDAuNDYsMjUuMjl2MTJIMzUuMThhMy4yNSwzLjI1 LDAsMCwxLS45LS4wOGgwYTIuMTcsMi4xNywwLDAsMS0uMS0uOTJ2LTExaDYuMjhtMS0xSDMzLjE4 djEyYzAsMS42NS4zNSwyLDIsMmg2LjI4di0xNFoiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik00 MC45NSwzNy43OXYtMTNoNy4yOHYxMS41YzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGgg Y2xhc3M9ImNscy03IiBkPSJNNDcuNzMsMjUuMjl2MTFhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIu MTgsMi4xOCwwLDAsMS0uOTIuMUg0MS40NXYtMTJoNi4yOG0xLTFINDAuNDV2MTRoNi4yOGMxLjY1 LDAsMi0uMzUsMi0ydi0xMloiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0zMy42OCwyNC43OXYt NC41YzAtMS4zNy4xMy0xLjUsMS41LTEuNUg0MXY2WiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0i TTQwLjQ2LDE5LjI5djVIMzQuMTh2LTRhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgs MCwwLDEsLjkyLS4xaDUuMjhtMS0xSDM1LjE4Yy0xLjY1LDAtMiwuMzUtMiwydjVoOC4yOHYtN1oi Lz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik00MC45NSwyNC43OXYtNmg1Ljc4YzEuMzcsMCwxLjUu MTMsMS41LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNNDYuNzMsMTkuMjlhMy4y NSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4xLjkydjRINDEuNDV2LTVoNS4y OG0wLTFINDAuNDV2N2g4LjI4di01YzAtMS42NS0uMzUtMi0yLTJaIi8+PGxpbmUgY2xhc3M9ImNs cy04IiB4MT0iNDAuNzEiIHkxPSIzMS4xNCIgeDI9IjQ4LjIiIHkyPSIzMS4xNCIvPjxsaW5lIGNs YXNzPSJjbHMtMTAiIHgxPSIzMy43MSIgeTE9IjMxLjE0IiB4Mj0iNDAuNDUiIHkyPSIzMS4xNCIv PjxwYXRoIGNsYXNzPSJjbHMtMTEiIGQ9Ik0zNiw1MC40MmE4LjQsOC40LDAsMCwxLDUtNy42Niw4 LjQsOC40LDAsMSwwLDAsMTUuMzNBOC40LDguNCwwLDAsMSwzNiw1MC40MloiLz48cGF0aCBjbGFz cz0iY2xzLTIiIGQ9Ik0zNy41Niw0My40YTYuOSw2LjksMCwxLDEtNi45LDYuOSw2LjkxLDYuOTEs MCwwLDEsNi45LTYuOW0wLTEuNWE4LjQsOC40LDAsMSwwLDguNCw4LjQsOC40LDguNCwwLDAsMC04 LjQtOC40WiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTQ0LjQzLDQzLjRhNi45LDYuOSwwLDEs MS02LjksNi45LDYuOTEsNi45MSwwLDAsMSw2LjktNi45bTAtMS41YTguNCw4LjQsMCwxLDAsOC40 LDguNCw4LjQsOC40LDAsMCwwLTguNC04LjRaIi8+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4 X2hhc2hfc2V0b3BfZXhjZXB0X2FsbC5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFp bi9pbWcvZXhfaGFzaF9zZXRvcF9leGNlcHRfYWxsLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAuLmM0N2IxMDgxZAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9oYXNoX3NldG9wX2V4Y2VwdF9hbGwuc3ZnCkBAIC0w LDAgKzEgQEAKKzxzdmcgaWQ9Il8xIiBkYXRhLW5hbWU9IjEiIHhtbG5zPSJodHRwOi8vd3d3Lncz Lm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0xLC5j bHMtM3tmaWxsOiNmMGVjYjY7fS5jbHMtMntmaWxsOiNjMThmMzU7fS5jbHMtMTAsLmNscy0ze3N0 cm9rZTojYzE4ZjM1O30uY2xzLTMsLmNscy05e3N0cm9rZS1taXRlcmxpbWl0OjEwO30uY2xzLTEw LC5jbHMtMywuY2xzLTh7b3BhY2l0eTowLjg7fS5jbHMtNHtmaWxsOiNhZGRmZjM7fS5jbHMtNXtm aWxsOiMyOTgwYjk7fS5jbHMtNntmaWxsOiNkM2Q0ZjM7fS5jbHMtN3tmaWxsOiM2NjZiZDE7fS5j bHMtMTAsLmNscy04e2ZpbGw6bm9uZTtzdHJva2UtbGluZWpvaW46cm91bmQ7fS5jbHMtOHtzdHJv a2U6IzY2NmJkMTt9LmNscy0xMiwuY2xzLTl7ZmlsbDojMzQ0OTVlO30uY2xzLTl7c3Ryb2tlOiM1 MjhkMTk7fS5jbHMtMTF7ZmlsbDojODhmNjI1O30uY2xzLTEye2ZvbnQtc2l6ZTo5cHg7Zm9udC1m YW1pbHk6SGVsdmV0aWNhLUJvbGQsIEhlbHZldGljYTtmb250LXdlaWdodDo3MDA7fTwvc3R5bGU+ PC9kZWZzPjx0aXRsZT5leF9oYXNoX3NldG9wX2V4Y2VwdF9hbGw8L3RpdGxlPjxwYXRoIGNsYXNz PSJjbHMtMSIgZD0iTTEzLjE2LDU4LjIxYy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjM5LjUyaDdW NTYuNzFjMCwxLjM3LS4xMywxLjUtMS41LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0x OC4xNSw0MFY1Ni43MWEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4x aC00YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE3LDIuMTcsMCwwLDEtLjEtLjkyVjQwaDZt MS0xaC04VjU2LjcxYzAsMS42NS4zNSwyLDIsMmg0YzEuNjUsMCwyLS4zNSwyLTJWMzlaIi8+PGxp bmUgY2xhc3M9ImNscy0zIiB4MT0iMTIuMDUiIHkxPSI0NS44NyIgeDI9IjE4LjI5IiB5Mj0iNDUu ODciLz48bGluZSBjbGFzcz0iY2xzLTMiIHgxPSIxMi4wNSIgeTE9IjUxLjc5IiB4Mj0iMTguMjki IHkyPSI1MS43OSIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTExLjY2LDExLjY3VjcuMTdjMC0x LjM3LjEzLTEuNSwxLjUtMS41aDRjMS4zNywwLDEuNS4xMywxLjUsMS41djQuNVoiLz48cGF0aCBj bGFzcz0iY2xzLTUiIGQ9Ik0xNy4xNSw2LjE3YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTcs Mi4xNywwLDAsMSwuMS45MnY0aC02di00YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4 LDAsMCwxLC45Mi0uMWg0bTAtMWgtNGMtMS42NSwwLTIsLjM1LTIsMnY1aDh2LTVjMC0xLjY1LS4z NS0yLTItMloiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik0xMy4xNiwzMC4zNmMtMS4zNywwLTEu NS0uMTMtMS41LTEuNVYxMS42N2g3VjI4Ljg2YzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBh dGggY2xhc3M9ImNscy03IiBkPSJNMTguMTUsMTIuMTdWMjguODZhMy4yOCwzLjI4LDAsMCwxLS4w OC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMWgtNGEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4x NywyLjE3LDAsMCwxLS4xLS45MlYxMi4xN2g2bTEtMWgtOFYyOC44NmMwLDEuNjUuMzUsMiwyLDJo NGMxLjY1LDAsMi0uMzUsMi0yVjExLjE3WiIvPjxsaW5lIGNsYXNzPSJjbHMtOCIgeDE9IjEyLjA1 IiB5MT0iMTguMDIiIHgyPSIxOC4yOSIgeTI9IjE4LjAyIi8+PGxpbmUgY2xhc3M9ImNscy04IiB4 MT0iMTIuMDUiIHkxPSIyMy45NCIgeDI9IjE4LjI5IiB5Mj0iMjMuOTQiLz48cGF0aCBjbGFzcz0i Y2xzLTQiIGQ9Ik0xMS42NiwzOS41MlYzNWMwLTEuMzcuMTMtMS41LDEuNS0xLjVoNGMxLjM3LDAs MS41LjEzLDEuNSwxLjV2NC41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTE3LjE1LDM0YTMu MjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTcsMi4xNywwLDAsMSwuMS45MnY0aC02VjM1YTMuMjgs My4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg0bTAtMWgtNGMtMS42NSww LTIsLjM1LTIsMnY1aDhWMzVjMC0xLjY1LS4zNS0yLTItMloiLz48cGF0aCBjbGFzcz0iY2xzLTki IGQ9Ik0yMi4yNSw0MS4xMmE0LjQyLDQuNDIsMCwwLDAsMi4wNS0uNTEsMi44MSwyLjgxLDAsMCww LDEuMDYtMS4wOCwzLjU5LDMuNTksMCwwLDAsLjQtMS40cS4wNi0uNzUuMDYtMS40NlYzN2MwLS42 OCwwLTEuMjUsMC0xLjcyQTkuMjgsOS4yOCwwLDAsMSwyNiwzNC4xYTIuNzYsMi43NiwwLDAsMSwu MjYtLjgzLDIuMzcsMi4zNywwLDAsMSwuNDQtLjYsMi41MywyLjUzLDAsMCwxLC42Mi0uNDYsNCw0 LDAsMCwxLC42NC0uMjcsMy41LDMuNSwwLDAsMSwuNi0uMTNjLjE5LDAsLjE5LS4xLDAtLjEyYTMu NTIsMy41MiwwLDAsMS0uNi0uMTMsMy42NSwzLjY1LDAsMCwxLS42NC0uMjcsMi41MiwyLjUyLDAs MCwxLS42Mi0uNDYsMi40MSwyLjQxLDAsMCwxLS40NC0uNiwyLjc3LDIuNzcsMCwwLDEtLjI2LS44 Myw5LjMxLDkuMzEsMCwwLDEtLjExLTEuMnEwLS43MSwwLTEuNzN2LjM2YzAtLjQ3LDAtMS0uMDYt MS40NmEzLjU4LDMuNTgsMCwwLDAtLjQtMS40QTIuODIsMi44MiwwLDAsMCwyNC4zLDIyLjlhNC40 Nyw0LjQ3LDAsMCwwLTIuMDUtLjUxVjIybC41MywwYTQuMTEsNC4xMSwwLDAsMSwuNjcuMTEsNS4x Miw1LjEyLDAsMCwxLC43Mi4yMywyLjg5LDIuODksMCwwLDEsLjcuNDEsMy4zNCwzLjM0LDAsMCwx LC44My45LDMuNjYsMy42NiwwLDAsMSwuNDMsMS4wN0E3LDcsMCwwLDEsMjYuMjgsMjZjMCwuNDcs MCwxLjg4LDAsMS44OGE3LjksNy45LDAsMCwwLC4xMiwxLjUsMi4zNywyLjM3LDAsMCwwLC40Nywx LjA2LDIuNjUsMi42NSwwLDAsMCwxLC43My42OS42OSwwLDAsMSwwLDEuMTcsMi42NiwyLjY2LDAs MCwwLTEsLjczLDIuMzksMi4zOSwwLDAsMC0uNDcsMS4wNiw3LjksNy45LDAsMCwwLS4xMiwxLjVz LS4wOSwyLjc4LS4xOCwzLjE3YTMuNjUsMy42NSwwLDAsMS0uNDMsMS4wNywzLjMxLDMuMzEsMCww LDEtLjgzLjksMi45LDIuOSwwLDAsMS0uNy40MSw1LjM5LDUuMzksMCwwLDEtLjcyLjIzLDQuMzQs NC4zNCwwLDAsMS0uNjcuMTFsLS41MywwWiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM1LjE4 LDM3Ljc5Yy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjI0Ljc5SDQxdjEzWiIvPjxwYXRoIGNsYXNz PSJjbHMtMiIgZD0iTTQwLjQ2LDI1LjI5djEySDM1LjE4YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDho MGEyLjE4LDIuMTgsMCwwLDEtLjEtLjkydi0xMWg2LjI4bTEtMUgzMy4xOHYxMmMwLDEuNjUuMzUs MiwyLDJoNi4yOHYtMTRaIi8+PHBhdGggY2xhc3M9ImNscy02IiBkPSJNNDAuOTUsMzcuNzl2LTEz aDcuMjh2MTEuNWMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIg ZD0iTTQ3LjczLDI1LjI5djExYTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIuMTgsMCwwLDEt LjkyLjFINDEuNDV2LTEyaDYuMjhtMS0xSDQwLjQ1djE0aDYuMjhjMS42NSwwLDItLjM1LDItMnYt MTJaIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNMzMuNjgsMjQuNzl2LTQuNWMwLTEuMzcuMTMt MS41LDEuNS0xLjVINDF2NloiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik00MC40NiwxOS4yOXY1 SDM0LjE4di00YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg1 LjI4bTEtMUgzNS4xOGMtMS42NSwwLTIsLjM1LTIsMnY1aDguMjh2LTdaIi8+PHBhdGggY2xhc3M9 ImNscy00IiBkPSJNNDAuOTUsMjQuNzl2LTZoNS43OGMxLjM3LDAsMS41LjEzLDEuNSwxLjV2NC41 WiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTQ2LjczLDE5LjI5YTMuMjUsMy4yNSwwLDAsMSwu OS4wOGgwYTIuMTcsMi4xNywwLDAsMSwuMS45MnY0SDQxLjQ1di01aDUuMjhtMC0xSDQwLjQ1djdo OC4yOHYtNWMwLTEuNjUtLjM1LTItMi0yWiIvPjxsaW5lIGNsYXNzPSJjbHMtOCIgeDE9IjQwLjcx IiB5MT0iMzEuMTQiIHgyPSI0OC4yIiB5Mj0iMzEuMTQiLz48bGluZSBjbGFzcz0iY2xzLTEwIiB4 MT0iMzMuNzEiIHkxPSIzMS4xNCIgeDI9IjQwLjQ1IiB5Mj0iMzEuMTQiLz48cGF0aCBjbGFzcz0i Y2xzLTExIiBkPSJNMzYsNTAuNDJhOC40LDguNCwwLDAsMSw1LTcuNjYsOC40LDguNCwwLDEsMCww LDE1LjMzQTguNCw4LjQsMCwwLDEsMzYsNTAuNDJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJN MzcuNTYsNDMuNGE2LjksNi45LDAsMSwxLTYuOSw2LjksNi45MSw2LjkxLDAsMCwxLDYuOS02Ljlt MC0xLjVhOC40LDguNCwwLDEsMCw4LjQsOC40LDguNCw4LjQsMCwwLDAtOC40LTguNFoiLz48cGF0 aCBjbGFzcz0iY2xzLTciIGQ9Ik00NC40Myw0My40YTYuOSw2LjksMCwxLDEtNi45LDYuOSw2Ljkx LDYuOTEsMCwwLDEsNi45LTYuOW0wLTEuNWE4LjQsOC40LDAsMSwwLDguNCw4LjQsOC40LDguNCww LDAsMC04LjQtOC40WiIvPjx0ZXh0IGNsYXNzPSJjbHMtMTIiIHRyYW5zZm9ybT0idHJhbnNsYXRl KDIwLjM1IDE4LjAyKSI+QWxsPC90ZXh0Pjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp bGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9oYXNo X3NldG9wX2ludGVyc2VjdC5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcv ZXhfaGFzaF9zZXRvcF9pbnRlcnNlY3Quc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uYjNjNGFiN2FmCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL0V4cGxhaW4vaW1nL2V4X2hhc2hfc2V0b3BfaW50ZXJzZWN0LnN2ZwpAQCAtMCwwICsxIEBA Cis8c3ZnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAw MC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiM4OGY2 MjU7fS5jbHMtMiwuY2xzLTR7ZmlsbDojZjBlY2I2O30uY2xzLTN7ZmlsbDojYzE4ZjM1O30uY2xz LTExLC5jbHMtNHtzdHJva2U6I2MxOGYzNTt9LmNscy0xMCwuY2xzLTR7c3Ryb2tlLW1pdGVybGlt aXQ6MTA7fS5jbHMtMTEsLmNscy00LC5jbHMtOXtvcGFjaXR5OjAuODt9LmNscy01e2ZpbGw6I2Fk ZGZmMzt9LmNscy02e2ZpbGw6IzI5ODBiOTt9LmNscy03e2ZpbGw6I2QzZDRmMzt9LmNscy04e2Zp bGw6IzY2NmJkMTt9LmNscy0xMSwuY2xzLTl7ZmlsbDpub25lO3N0cm9rZS1saW5lam9pbjpyb3Vu ZDt9LmNscy05e3N0cm9rZTojNjY2YmQxO30uY2xzLTEwe2ZpbGw6IzM0NDk1ZTtzdHJva2U6IzUy OGQxOTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmV4X2hhc2hfc2V0b3BfaW50ZXJzZWN0PC90aXRs ZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00MSw0Mi43QTguNCw4LjQsMCwwLDAsNDEsNTgsOC40 LDguNCwwLDAsMCw0MSw0Mi43WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTEzLjE2LDU4LjI3 Yy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjM5LjU4aDdWNTYuNzdjMCwxLjM3LS4xMywxLjUtMS41 LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xOC4xNSw0MC4wOFY1Ni43N2EzLjI4LDMu MjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xaC00YTMuMjUsMy4yNSwwLDAsMS0u OS0uMDhoMGEyLjE3LDIuMTcsMCwwLDEtLjEtLjkyVjQwLjA4aDZtMS0xaC04VjU2Ljc3YzAsMS42 NS4zNSwyLDIsMmg0YzEuNjUsMCwyLS4zNSwyLTJWMzkuMDhaIi8+PGxpbmUgY2xhc3M9ImNscy00 IiB4MT0iMTIuMDUiIHkxPSI0NS45MyIgeDI9IjE4LjI5IiB5Mj0iNDUuOTMiLz48bGluZSBjbGFz cz0iY2xzLTQiIHgxPSIxMi4wNSIgeTE9IjUxLjg1IiB4Mj0iMTguMjkiIHkyPSI1MS44NSIvPjxw YXRoIGNsYXNzPSJjbHMtNSIgZD0iTTExLjY2LDExLjczVjcuMjNjMC0xLjM3LjEzLTEuNSwxLjUt MS41aDRjMS4zNywwLDEuNS4xMywxLjUsMS41djQuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9 Ik0xNy4xNSw2LjIzYTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTcsMi4xNywwLDAsMSwuMS45 MnY0aC02di00YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg0 bTAtMWgtNGMtMS42NSwwLTIsLjM1LTIsMnY1aDh2LTVjMC0xLjY1LS4zNS0yLTItMloiLz48cGF0 aCBjbGFzcz0iY2xzLTciIGQ9Ik0xMy4xNiwzMC40MmMtMS4zNywwLTEuNS0uMTMtMS41LTEuNVYx MS43M2g3VjI4LjkyYzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy04 IiBkPSJNMTguMTUsMTIuMjNWMjguOTJhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIuMTgsMi4xOCww LDAsMS0uOTIuMWgtNGEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xNywyLjE3LDAsMCwxLS4x LS45MlYxMi4yM2g2bTEtMWgtOFYyOC45MmMwLDEuNjUuMzUsMiwyLDJoNGMxLjY1LDAsMi0uMzUs Mi0yVjExLjIzWiIvPjxsaW5lIGNsYXNzPSJjbHMtOSIgeDE9IjEyLjA1IiB5MT0iMTguMDgiIHgy PSIxOC4yOSIgeTI9IjE4LjA4Ii8+PGxpbmUgY2xhc3M9ImNscy05IiB4MT0iMTIuMDUiIHkxPSIy NCIgeDI9IjE4LjI5IiB5Mj0iMjQiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0xMS42NiwzOS41 OHYtNC41YzAtMS4zNy4xMy0xLjUsMS41LTEuNWg0YzEuMzcsMCwxLjUuMTMsMS41LDEuNXY0LjVa Ii8+PHBhdGggY2xhc3M9ImNscy02IiBkPSJNMTcuMTUsMzQuMDhhMy4yNSwzLjI1LDAsMCwxLC45 LjA4aDBhMi4xNywyLjE3LDAsMCwxLC4xLjkydjRoLTZ2LTRhMy4yOCwzLjI4LDAsMCwxLC4wOC0u OSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDRtMC0xaC00Yy0xLjY1LDAtMiwuMzUtMiwydjVoOHYt NWMwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRoIGNsYXNzPSJjbHMtMTAiIGQ9Ik0yMi4yNSw0MS4x OGE0LjQyLDQuNDIsMCwwLDAsMi4wNS0uNTEsMi44MSwyLjgxLDAsMCwwLDEuMDYtMS4wOCwzLjU5 LDMuNTksMCwwLDAsLjQtMS40cS4wNi0uNzUuMDYtMS40NnYuMzVjMC0uNjgsMC0xLjI1LDAtMS43 MmE5LjI4LDkuMjgsMCwwLDEsLjExLTEuMiwyLjc2LDIuNzYsMCwwLDEsLjI2LS44MywyLjM3LDIu MzcsMCwwLDEsLjQ0LS42LDIuNTMsMi41MywwLDAsMSwuNjItLjQ2LDQsNCwwLDAsMSwuNjQtLjI3 LDMuNSwzLjUsMCwwLDEsLjYtLjEzYy4xOSwwLC4xOS0uMSwwLS4xMmEzLjUyLDMuNTIsMCwwLDEt LjYtLjEzLDMuNjUsMy42NSwwLDAsMS0uNjQtLjI3LDIuNTIsMi41MiwwLDAsMS0uNjItLjQ2LDIu NDEsMi40MSwwLDAsMS0uNDQtLjYsMi43NywyLjc3LDAsMCwxLS4yNi0uODMsOS4zMSw5LjMxLDAs MCwxLS4xMS0xLjJxMC0uNzEsMC0xLjczdi4zNmMwLS40NywwLTEtLjA2LTEuNDZhMy41OCwzLjU4 LDAsMCwwLS40LTEuNEEyLjgyLDIuODIsMCwwLDAsMjQuMywyM2E0LjQ3LDQuNDcsMCwwLDAtMi4w NS0uNTFWMjJsLjUzLDBhNC4xMSw0LjExLDAsMCwxLC42Ny4xMSw1LjEyLDUuMTIsMCwwLDEsLjcy LjIzLDIuODksMi44OSwwLDAsMSwuNy40MSwzLjM0LDMuMzQsMCwwLDEsLjgzLjksMy42NiwzLjY2 LDAsMCwxLC40MywxLjA3LDcsNywwLDAsMSwuMTYsMS4yOWMwLC40NywwLDEuODgsMCwxLjg4YTcu OSw3LjksMCwwLDAsLjEyLDEuNSwyLjM3LDIuMzcsMCwwLDAsLjQ3LDEuMDYsMi42NSwyLjY1LDAs MCwwLDEsLjczLjY5LjY5LDAsMCwxLDAsMS4xNywyLjY2LDIuNjYsMCwwLDAtMSwuNzMsMi4zOSwy LjM5LDAsMCwwLS40NywxLjA2LDcuOSw3LjksMCwwLDAtLjEyLDEuNXMtLjA5LDIuNzgtLjE4LDMu MTdhMy42NSwzLjY1LDAsMCwxLS40MywxLjA3LDMuMzEsMy4zMSwwLDAsMS0uODMuOSwyLjksMi45 LDAsMCwxLS43LjQxLDUuMzksNS4zOSwwLDAsMS0uNzIuMjMsNC4zNCw0LjM0LDAsMCwxLS42Ny4x MWwtLjUzLDBaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMzUuMTgsMzcuODVjLTEuMzcsMC0x LjUtLjEzLTEuNS0xLjVWMjQuODVINDF2MTNaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNNDAu NDYsMjUuMzV2MTJIMzUuMThhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTcsMi4xNywwLDAs MS0uMS0uOTJ2LTExaDYuMjhtMS0xSDMzLjE4djEyYzAsMS42NS4zNSwyLDIsMmg2LjI4di0xNFoi Lz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik00MC45NSwzNy44NXYtMTNoNy4yOHYxMS41YzAsMS4z Ny0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy04IiBkPSJNNDcuNzMsMjUuMzV2 MTFhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUg0MS40NXYtMTJo Ni4yOG0xLTFINDAuNDV2MTRoNi4yOGMxLjY1LDAsMi0uMzUsMi0ydi0xMloiLz48cGF0aCBjbGFz cz0iY2xzLTUiIGQ9Ik0zMy42OCwyNC44NXYtNC41YzAtMS4zNy4xMy0xLjUsMS41LTEuNUg0MXY2 WiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTQwLjQ2LDE5LjM1djVIMzQuMTh2LTRhMy4yOCwz LjI4LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDUuMjhtMS0xSDM1LjE4Yy0x LjY1LDAtMiwuMzUtMiwydjVoOC4yOHYtN1oiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik00MC45 NSwyNC44NXYtNmg1Ljc4YzEuMzcsMCwxLjUuMTMsMS41LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9 ImNscy02IiBkPSJNNDYuNzMsMTkuMzVhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xOCwyLjE4 LDAsMCwxLC4xLjkydjRINDEuNDV2LTVoNS4yOG0wLTFINDAuNDV2N2g4LjI4di01YzAtMS42NS0u MzUtMi0yLTJaIi8+PGxpbmUgY2xhc3M9ImNscy05IiB4MT0iNDAuNzEiIHkxPSIzMS4yIiB4Mj0i NDguMiIgeTI9IjMxLjIiLz48bGluZSBjbGFzcz0iY2xzLTExIiB4MT0iMzMuNzEiIHkxPSIzMS4y IiB4Mj0iNDAuNDUiIHkyPSIzMS4yIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMzcuNTYsNDMu NDZhNi45LDYuOSwwLDEsMS02LjksNi45LDYuOTEsNi45MSwwLDAsMSw2LjktNi45bTAtMS41YTgu NCw4LjQsMCwxLDAsOC40LDguNCw4LjQsOC40LDAsMCwwLTguNC04LjRaIi8+PHBhdGggY2xhc3M9 ImNscy04IiBkPSJNNDQuNDMsNDMuNDZhNi45LDYuOSwwLDEsMS02LjksNi45LDYuOTEsNi45MSww LDAsMSw2LjktNi45bTAtMS41YTguNCw4LjQsMCwxLDAsOC40LDguNCw4LjQsOC40LDAsMCwwLTgu NC04LjRaIi8+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X2hhc2hfc2V0b3BfaW50ZXJzZWN0 X2FsbC5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfaGFzaF9zZXRv cF9pbnRlcnNlY3RfYWxsLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAu LjBiYTdlNDQ2OQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBs YWluL2ltZy9leF9oYXNoX3NldG9wX2ludGVyc2VjdF9hbGwuc3ZnCkBAIC0wLDAgKzEgQEAKKzxz dmcgaWQ9Il8xIiBkYXRhLW5hbWU9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2 ZyIgdmlld0JveD0iMCAwIDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6Izg4ZjYyNTt9 LmNscy0yLC5jbHMtNHtmaWxsOiNmMGVjYjY7fS5jbHMtM3tmaWxsOiNjMThmMzU7fS5jbHMtMTEs LmNscy00e3N0cm9rZTojYzE4ZjM1O30uY2xzLTEwLC5jbHMtNHtzdHJva2UtbWl0ZXJsaW1pdDox MDt9LmNscy0xMSwuY2xzLTQsLmNscy05e29wYWNpdHk6MC44O30uY2xzLTV7ZmlsbDojYWRkZmYz O30uY2xzLTZ7ZmlsbDojMjk4MGI5O30uY2xzLTd7ZmlsbDojZDNkNGYzO30uY2xzLTh7ZmlsbDoj NjY2YmQxO30uY2xzLTExLC5jbHMtOXtmaWxsOm5vbmU7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO30u Y2xzLTl7c3Ryb2tlOiM2NjZiZDE7fS5jbHMtMTAsLmNscy0xMntmaWxsOiMzNDQ5NWU7fS5jbHMt MTB7c3Ryb2tlOiM1MjhkMTk7fS5jbHMtMTJ7Zm9udC1zaXplOjlweDtmb250LWZhbWlseTpIZWx2 ZXRpY2EtQm9sZCwgSGVsdmV0aWNhO2ZvbnQtd2VpZ2h0OjcwMDt9PC9zdHlsZT48L2RlZnM+PHRp dGxlPmV4X2hhc2hfc2V0b3BfaW50ZXJzZWN0X2FsbDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0x IiBkPSJNNDEsNDIuN0E4LjQsOC40LDAsMCwwLDQxLDU4LDguNCw4LjQsMCwwLDAsNDEsNDIuN1oi Lz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xMy4xNiw1OC4yN2MtMS4zNywwLTEuNS0uMTMtMS41 LTEuNVYzOS41OGg3VjU2Ljc3YzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9 ImNscy0zIiBkPSJNMTguMTUsNDAuMDhWNTYuNzdhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIuMTgs Mi4xOCwwLDAsMS0uOTIuMWgtNGEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xNywyLjE3LDAs MCwxLS4xLS45MlY0MC4wOGg2bTEtMWgtOFY1Ni43N2MwLDEuNjUuMzUsMiwyLDJoNGMxLjY1LDAs Mi0uMzUsMi0yVjM5LjA4WiIvPjxsaW5lIGNsYXNzPSJjbHMtNCIgeDE9IjEyLjA1IiB5MT0iNDUu OTMiIHgyPSIxOC4yOSIgeTI9IjQ1LjkzIi8+PGxpbmUgY2xhc3M9ImNscy00IiB4MT0iMTIuMDUi IHkxPSI1MS44NSIgeDI9IjE4LjI5IiB5Mj0iNTEuODUiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9 Ik0xMS42NiwxMS43M1Y3LjIzYzAtMS4zNy4xMy0xLjUsMS41LTEuNWg0YzEuMzcsMCwxLjUuMTMs MS41LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9ImNscy02IiBkPSJNMTcuMTUsNi4yM2EzLjI1LDMu MjUsMCwwLDEsLjkuMDhoMGEyLjE3LDIuMTcsMCwwLDEsLjEuOTJ2NGgtNnYtNGEzLjI4LDMuMjgs MCwwLDEsLjA4LS45LDIuMTgsMi4xOCwwLDAsMSwuOTItLjFoNG0wLTFoLTRjLTEuNjUsMC0yLC4z NS0yLDJ2NWg4di01YzAtMS42NS0uMzUtMi0yLTJaIi8+PHBhdGggY2xhc3M9ImNscy03IiBkPSJN MTMuMTYsMzAuNDJjLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVWMTEuNzNoN1YyOC45MmMwLDEuMzct LjEzLDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTE4LjE1LDEyLjIzVjI4 LjkyYTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIuMTgsMCwwLDEtLjkyLjFoLTRhMy4yNSwz LjI1LDAsMCwxLS45LS4wOGgwYTIuMTcsMi4xNywwLDAsMS0uMS0uOTJWMTIuMjNoNm0xLTFoLThW MjguOTJjMCwxLjY1LjM1LDIsMiwyaDRjMS42NSwwLDItLjM1LDItMlYxMS4yM1oiLz48bGluZSBj bGFzcz0iY2xzLTkiIHgxPSIxMi4wNSIgeTE9IjE4LjA4IiB4Mj0iMTguMjkiIHkyPSIxOC4wOCIv PjxsaW5lIGNsYXNzPSJjbHMtOSIgeDE9IjEyLjA1IiB5MT0iMjQiIHgyPSIxOC4yOSIgeTI9IjI0 Ii8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNMTEuNjYsMzkuNTh2LTQuNWMwLTEuMzcuMTMtMS41 LDEuNS0xLjVoNGMxLjM3LDAsMS41LjEzLDEuNSwxLjV2NC41WiIvPjxwYXRoIGNsYXNzPSJjbHMt NiIgZD0iTTE3LjE1LDM0LjA4YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTcsMi4xNywwLDAs MSwuMS45MnY0aC02di00YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45 Mi0uMWg0bTAtMWgtNGMtMS42NSwwLTIsLjM1LTIsMnY1aDh2LTVjMC0xLjY1LS4zNS0yLTItMloi Lz48cGF0aCBjbGFzcz0iY2xzLTEwIiBkPSJNMjIuMjUsNDEuMThhNC40Miw0LjQyLDAsMCwwLDIu MDUtLjUxLDIuODEsMi44MSwwLDAsMCwxLjA2LTEuMDgsMy41OSwzLjU5LDAsMCwwLC40LTEuNHEu MDYtLjc1LjA2LTEuNDZ2LjM1YzAtLjY4LDAtMS4yNSwwLTEuNzJhOS4yOCw5LjI4LDAsMCwxLC4x MS0xLjIsMi43NiwyLjc2LDAsMCwxLC4yNi0uODMsMi4zNywyLjM3LDAsMCwxLC40NC0uNiwyLjUz LDIuNTMsMCwwLDEsLjYyLS40Niw0LDQsMCwwLDEsLjY0LS4yNywzLjUsMy41LDAsMCwxLC42LS4x M2MuMTksMCwuMTktLjEsMC0uMTJhMy41MiwzLjUyLDAsMCwxLS42LS4xMywzLjY1LDMuNjUsMCww LDEtLjY0LS4yNywyLjUyLDIuNTIsMCwwLDEtLjYyLS40NiwyLjQxLDIuNDEsMCwwLDEtLjQ0LS42 LDIuNzcsMi43NywwLDAsMS0uMjYtLjgzLDkuMzEsOS4zMSwwLDAsMS0uMTEtMS4ycTAtLjcxLDAt MS43M3YuMzZjMC0uNDcsMC0xLS4wNi0xLjQ2YTMuNTgsMy41OCwwLDAsMC0uNC0xLjRBMi44Miwy LjgyLDAsMCwwLDI0LjMsMjNhNC40Nyw0LjQ3LDAsMCwwLTIuMDUtLjUxVjIybC41MywwYTQuMTEs NC4xMSwwLDAsMSwuNjcuMTEsNS4xMiw1LjEyLDAsMCwxLC43Mi4yMywyLjg5LDIuODksMCwwLDEs LjcuNDEsMy4zNCwzLjM0LDAsMCwxLC44My45LDMuNjYsMy42NiwwLDAsMSwuNDMsMS4wNyw3LDcs MCwwLDEsLjE2LDEuMjljMCwuNDcsMCwxLjg4LDAsMS44OGE3LjksNy45LDAsMCwwLC4xMiwxLjUs Mi4zNywyLjM3LDAsMCwwLC40NywxLjA2LDIuNjUsMi42NSwwLDAsMCwxLC43My42OS42OSwwLDAs MSwwLDEuMTcsMi42NiwyLjY2LDAsMCwwLTEsLjczLDIuMzksMi4zOSwwLDAsMC0uNDcsMS4wNiw3 LjksNy45LDAsMCwwLS4xMiwxLjVzLS4wOSwyLjc4LS4xOCwzLjE3YTMuNjUsMy42NSwwLDAsMS0u NDMsMS4wNywzLjMxLDMuMzEsMCwwLDEtLjgzLjksMi45LDIuOSwwLDAsMS0uNy40MSw1LjM5LDUu MzksMCwwLDEtLjcyLjIzLDQuMzQsNC4zNCwwLDAsMS0uNjcuMTFsLS41MywwWiIvPjxwYXRoIGNs YXNzPSJjbHMtMiIgZD0iTTM1LjE4LDM3Ljg1Yy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjI0Ljg1 SDQxdjEzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTQwLjQ2LDI1LjM1djEySDM1LjE4YTMu MjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE3LDIuMTcsMCwwLDEtLjEtLjkydi0xMWg2LjI4bTEt MUgzMy4xOHYxMmMwLDEuNjUuMzUsMiwyLDJoNi4yOHYtMTRaIi8+PHBhdGggY2xhc3M9ImNscy03 IiBkPSJNNDAuOTUsMzcuODV2LTEzaDcuMjh2MTEuNWMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIv PjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTQ3LjczLDI1LjM1djExYTMuMjgsMy4yOCwwLDAsMS0u MDguOSwyLjE4LDIuMTgsMCwwLDEtLjkyLjFINDEuNDV2LTEyaDYuMjhtMS0xSDQwLjQ1djE0aDYu MjhjMS42NSwwLDItLjM1LDItMnYtMTJaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNMzMuNjgs MjQuODV2LTQuNWMwLTEuMzcuMTMtMS41LDEuNS0xLjVINDF2NloiLz48cGF0aCBjbGFzcz0iY2xz LTYiIGQ9Ik00MC40NiwxOS4zNXY1SDM0LjE4di00YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4x OCwyLjE4LDAsMCwxLC45Mi0uMWg1LjI4bTEtMUgzNS4xOGMtMS42NSwwLTIsLjM1LTIsMnY1aDgu Mjh2LTdaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNNDAuOTUsMjQuODV2LTZoNS43OGMxLjM3 LDAsMS41LjEzLDEuNSwxLjV2NC41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTQ2LjczLDE5 LjM1YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTcsMi4xNywwLDAsMSwuMS45MnY0SDQxLjQ1 di01aDUuMjhtMC0xSDQwLjQ1djdoOC4yOHYtNWMwLTEuNjUtLjM1LTItMi0yWiIvPjxsaW5lIGNs YXNzPSJjbHMtOSIgeDE9IjQwLjcxIiB5MT0iMzEuMiIgeDI9IjQ4LjIiIHkyPSIzMS4yIi8+PGxp bmUgY2xhc3M9ImNscy0xMSIgeDE9IjMzLjcxIiB5MT0iMzEuMiIgeDI9IjQwLjQ1IiB5Mj0iMzEu MiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTM3LjU2LDQzLjQ2YTYuOSw2LjksMCwxLDEtNi45 LDYuOSw2LjkxLDYuOTEsMCwwLDEsNi45LTYuOW0wLTEuNWE4LjQsOC40LDAsMSwwLDguNCw4LjQs OC40LDguNCwwLDAsMC04LjQtOC40WiIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTQ0LjQzLDQz LjQ2YTYuOSw2LjksMCwxLDEtNi45LDYuOSw2LjkxLDYuOTEsMCwwLDEsNi45LTYuOW0wLTEuNWE4 LjQsOC40LDAsMSwwLDguNCw4LjQsOC40LDguNCwwLDAsMC04LjQtOC40WiIvPjx0ZXh0IGNsYXNz PSJjbHMtMTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIwLjk4IDE4LjM2KSI+QWxsPC90ZXh0Pjwv c3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9oYXNoX3NldG9wX3Vua25vd24uc3ZnIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X2hhc2hfc2V0b3BfdW5rbm93bi5zdmcKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5iZmFhZGNmZjMKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfaGFzaF9zZXRvcF91 bmtub3duLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxu cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+ PHN0eWxlPi5jbHMtMSwuY2xzLTN7ZmlsbDojZjBlY2I2O30uY2xzLTJ7ZmlsbDojYzE4ZjM1O30u Y2xzLTEwLC5jbHMtM3tzdHJva2U6I2MxOGYzNTt9LmNscy0zLC5jbHMtOXtzdHJva2UtbWl0ZXJs aW1pdDoxMDt9LmNscy0xMCwuY2xzLTMsLmNscy04e29wYWNpdHk6MC44O30uY2xzLTR7ZmlsbDoj YWRkZmYzO30uY2xzLTV7ZmlsbDojMjk4MGI5O30uY2xzLTZ7ZmlsbDojZDNkNGYzO30uY2xzLTd7 ZmlsbDojNjY2YmQxO30uY2xzLTEwLC5jbHMtOHtmaWxsOm5vbmU7c3Ryb2tlLWxpbmVqb2luOnJv dW5kO30uY2xzLTh7c3Ryb2tlOiM2NjZiZDE7fS5jbHMtOXtmaWxsOiMzNDQ5NWU7c3Ryb2tlOiM1 MjhkMTk7fS5jbHMtMTF7Zm9udC1zaXplOjlweDtmaWxsOiNjMDA7Zm9udC1mYW1pbHk6SGVsdmV0 aWNhLUJvbGQsIEhlbHZldGljYTtmb250LXdlaWdodDo3MDA7fTwvc3R5bGU+PC9kZWZzPjx0aXRs ZT5leF9oYXNoX3NldG9wX3Vua25vd248L3RpdGxlPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTEz LjE2LDU4LjI3Yy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjM5LjU4aDdWNTYuNzdjMCwxLjM3LS4x MywxLjUtMS41LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xOC4xNSw0MC4wOFY1Ni43 N2EzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xaC00YTMuMjUsMy4y NSwwLDAsMS0uOS0uMDhoMGEyLjE3LDIuMTcsMCwwLDEtLjEtLjkyVjQwLjA4aDZtMS0xaC04VjU2 Ljc3YzAsMS42NS4zNSwyLDIsMmg0YzEuNjUsMCwyLS4zNSwyLTJWMzkuMDhaIi8+PGxpbmUgY2xh c3M9ImNscy0zIiB4MT0iMTIuMDUiIHkxPSI0NS45MyIgeDI9IjE4LjI5IiB5Mj0iNDUuOTMiLz48 bGluZSBjbGFzcz0iY2xzLTMiIHgxPSIxMi4wNSIgeTE9IjUxLjg1IiB4Mj0iMTguMjkiIHkyPSI1 MS44NSIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTExLjY2LDExLjczVjcuMjNjMC0xLjM3LjEz LTEuNSwxLjUtMS41aDRjMS4zNywwLDEuNS4xMywxLjUsMS41djQuNVoiLz48cGF0aCBjbGFzcz0i Y2xzLTUiIGQ9Ik0xNy4xNSw2LjIzYTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTcsMi4xNyww LDAsMSwuMS45MnY0aC02di00YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwx LC45Mi0uMWg0bTAtMWgtNGMtMS42NSwwLTIsLjM1LTIsMnY1aDh2LTVjMC0xLjY1LS4zNS0yLTIt MloiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik0xMy4xNiwzMC40MmMtMS4zNywwLTEuNS0uMTMt MS41LTEuNVYxMS43M2g3VjI4LjkyYzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xh c3M9ImNscy03IiBkPSJNMTguMTUsMTIuMjNWMjguOTJhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIu MTgsMi4xOCwwLDAsMS0uOTIuMWgtNGEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xNywyLjE3 LDAsMCwxLS4xLS45MlYxMi4yM2g2bTEtMWgtOFYyOC45MmMwLDEuNjUuMzUsMiwyLDJoNGMxLjY1 LDAsMi0uMzUsMi0yVjExLjIzWiIvPjxsaW5lIGNsYXNzPSJjbHMtOCIgeDE9IjEyLjA1IiB5MT0i MTguMDgiIHgyPSIxOC4yOSIgeTI9IjE4LjA4Ii8+PGxpbmUgY2xhc3M9ImNscy04IiB4MT0iMTIu MDUiIHkxPSIyNCIgeDI9IjE4LjI5IiB5Mj0iMjQiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0x MS42NiwzOS41OHYtNC41YzAtMS4zNy4xMy0xLjUsMS41LTEuNWg0YzEuMzcsMCwxLjUuMTMsMS41 LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNMTcuMTUsMzQuMDhhMy4yNSwzLjI1 LDAsMCwxLC45LjA4aDBhMi4xNywyLjE3LDAsMCwxLC4xLjkydjRoLTZ2LTRhMy4yOCwzLjI4LDAs MCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDRtMC0xaC00Yy0xLjY1LDAtMiwuMzUt MiwydjVoOHYtNWMwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRoIGNsYXNzPSJjbHMtOSIgZD0iTTIy LjI1LDQxLjE4YTQuNDIsNC40MiwwLDAsMCwyLjA1LS41MSwyLjgxLDIuODEsMCwwLDAsMS4wNi0x LjA4LDMuNTksMy41OSwwLDAsMCwuNC0xLjRxLjA2LS43NS4wNi0xLjQ2di4zNWMwLS42OCwwLTEu MjUsMC0xLjcyYTkuMjgsOS4yOCwwLDAsMSwuMTEtMS4yLDIuNzYsMi43NiwwLDAsMSwuMjYtLjgz LDIuMzcsMi4zNywwLDAsMSwuNDQtLjYsMi41MywyLjUzLDAsMCwxLC42Mi0uNDYsNCw0LDAsMCwx LC42NC0uMjcsMy41LDMuNSwwLDAsMSwuNi0uMTNjLjE5LDAsLjE5LS4xLDAtLjEyYTMuNTIsMy41 MiwwLDAsMS0uNi0uMTMsMy42NSwzLjY1LDAsMCwxLS42NC0uMjcsMi41MiwyLjUyLDAsMCwxLS42 Mi0uNDYsMi40MSwyLjQxLDAsMCwxLS40NC0uNiwyLjc3LDIuNzcsMCwwLDEtLjI2LS44Myw5LjMx LDkuMzEsMCwwLDEtLjExLTEuMnEwLS43MSwwLTEuNzN2LjM2YzAtLjQ3LDAtMS0uMDYtMS40NmEz LjU4LDMuNTgsMCwwLDAtLjQtMS40QTIuODIsMi44MiwwLDAsMCwyNC4zLDIzYTQuNDcsNC40Nyww LDAsMC0yLjA1LS41MVYyMmwuNTMsMGE0LjExLDQuMTEsMCwwLDEsLjY3LjExLDUuMTIsNS4xMiww LDAsMSwuNzIuMjMsMi44OSwyLjg5LDAsMCwxLC43LjQxLDMuMzQsMy4zNCwwLDAsMSwuODMuOSwz LjY2LDMuNjYsMCwwLDEsLjQzLDEuMDcsNyw3LDAsMCwxLC4xNiwxLjI5YzAsLjQ3LDAsMS44OCww LDEuODhhNy45LDcuOSwwLDAsMCwuMTIsMS41LDIuMzcsMi4zNywwLDAsMCwuNDcsMS4wNiwyLjY1 LDIuNjUsMCwwLDAsMSwuNzMuNjkuNjksMCwwLDEsMCwxLjE3LDIuNjYsMi42NiwwLDAsMC0xLC43 MywyLjM5LDIuMzksMCwwLDAtLjQ3LDEuMDYsNy45LDcuOSwwLDAsMC0uMTIsMS41cy0uMDksMi43 OC0uMTgsMy4xN2EzLjY1LDMuNjUsMCwwLDEtLjQzLDEuMDcsMy4zMSwzLjMxLDAsMCwxLS44My45 LDIuOSwyLjksMCwwLDEtLjcuNDEsNS4zOSw1LjM5LDAsMCwxLS43Mi4yMyw0LjM0LDQuMzQsMCww LDEtLjY3LjExbC0uNTMsMFoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0zNS4xOCwzNy44NWMt MS4zNywwLTEuNS0uMTMtMS41LTEuNVYyNC44NUg0MXYxM1oiLz48cGF0aCBjbGFzcz0iY2xzLTIi IGQ9Ik00MC40NiwyNS4zNXYxMkgzNS4xOGEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xNywy LjE3LDAsMCwxLS4xLS45MnYtMTFoNi4yOG0xLTFIMzMuMTh2MTJjMCwxLjY1LjM1LDIsMiwyaDYu Mjh2LTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTQwLjk1LDM3Ljg1di0xM2g3LjI4djEx LjVjMCwxLjM3LS4xMywxLjUtMS41LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik00Ny43 MywyNS4zNXYxMWEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xSDQx LjQ1di0xMmg2LjI4bTEtMUg0MC40NXYxNGg2LjI4YzEuNjUsMCwyLS4zNSwyLTJ2LTEyWiIvPjxw YXRoIGNsYXNzPSJjbHMtNCIgZD0iTTMzLjY4LDI0Ljg1di00LjVjMC0xLjM3LjEzLTEuNSwxLjUt MS41SDQxdjZaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNNDAuNDYsMTkuMzV2NUgzNC4xOHYt NGEzLjI4LDMuMjgsMCwwLDEsLjA4LS45LDIuMTgsMi4xOCwwLDAsMSwuOTItLjFoNS4yOG0xLTFI MzUuMThjLTEuNjUsMC0yLC4zNS0yLDJ2NWg4LjI4di03WiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIg ZD0iTTQwLjk1LDI0Ljg1di02aDUuNzhjMS4zNywwLDEuNS4xMywxLjUsMS41djQuNVoiLz48cGF0 aCBjbGFzcz0iY2xzLTUiIGQ9Ik00Ni43MywxOS4zNWEzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEy LjE4LDIuMTgsMCwwLDEsLjEuOTJ2NEg0MS40NXYtNWg1LjI4bTAtMUg0MC40NXY3aDguMjh2LTVj MC0xLjY1LS4zNS0yLTItMloiLz48bGluZSBjbGFzcz0iY2xzLTgiIHgxPSI0MC43MSIgeTE9IjMx LjIiIHgyPSI0OC4yIiB5Mj0iMzEuMiIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSIzMy43MSIg eTE9IjMxLjIiIHgyPSI0MC40NSIgeTI9IjMxLjIiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0z Ny41Niw0My40NmE2LjksNi45LDAsMSwxLTYuOSw2LjksNi45MSw2LjkxLDAsMCwxLDYuOS02Ljlt MC0xLjVhOC40LDguNCwwLDEsMCw4LjQsOC40LDguNCw4LjQsMCwwLDAtOC40LTguNFoiLz48cGF0 aCBjbGFzcz0iY2xzLTciIGQ9Ik00NC40Myw0My40NmE2LjksNi45LDAsMSwxLTYuOSw2LjksNi45 MSw2LjkxLDAsMCwxLDYuOS02LjltMC0xLjVhOC40LDguNCwwLDEsMCw4LjQsOC40LDguNCw4LjQs MCwwLDAtOC40LTguNFoiLz48dGV4dCBjbGFzcz0iY2xzLTExIiB0cmFuc2Zvcm09InRyYW5zbGF0 ZSgzOC4yOSA1My44NSkiPj88L3RleHQ+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls ZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X2luZGV4 X29ubHlfc2Nhbi5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfaW5k ZXhfb25seV9zY2FuLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmUy N2M3OTkyNAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWlu L2ltZy9leF9pbmRleF9vbmx5X3NjYW4uc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgaWQ9Il8xIiBk YXRhLW5hbWU9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0i MCAwIDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Izc0NzQ3NDtz dHJva2Utd2lkdGg6MC43NXB4O30uY2xzLTEsLmNscy03e3N0cm9rZS1saW5lY2FwOnJvdW5kO30u Y2xzLTEsLmNscy02LC5jbHMtN3tzdHJva2UtbGluZWpvaW46cm91bmQ7fS5jbHMtMntmaWxsOiNm MGVjYjY7fS5jbHMtM3tmaWxsOiNjMThmMzU7fS5jbHMtNHtmaWxsOiNhZGRmZjM7fS5jbHMtNSwu Y2xzLTYsLmNscy03e2ZpbGw6IzI5ODBiOTt9LmNscy02LC5jbHMtN3tzdHJva2U6IzI5ODBiOTt9 LmNscy03e3N0cm9rZS13aWR0aDoycHg7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5leF9pbmRleF9v bmx5X3NjYW48L3RpdGxlPjxsaW5lIGNsYXNzPSJjbHMtMSIgeDE9IjM2Ljg5IiB5MT0iMjQuNDEi IHgyPSIyNC45IiB5Mj0iMzEuMyIvPjxsaW5lIGNsYXNzPSJjbHMtMSIgeDE9IjM2Ljg5IiB5MT0i MjQuNDEiIHgyPSI0OC44NyIgeTI9IjMxLjMiLz48bGluZSBjbGFzcz0iY2xzLTEiIHgxPSIyNC45 IiB5MT0iMzcuMjIiIHgyPSIxOC45MiIgeTI9IjQzLjIyIi8+PGxpbmUgY2xhc3M9ImNscy0xIiB4 MT0iMjQuOSIgeTE9IjM3LjIyIiB4Mj0iMzAuODkiIHkyPSI0My4yMiIvPjxsaW5lIGNsYXNzPSJj bHMtMSIgeDE9IjQ4Ljg3IiB5MT0iMzcuMjIiIHgyPSI0Mi41NSIgeTI9IjQzLjIyIi8+PGxpbmUg Y2xhc3M9ImNscy0xIiB4MT0iNDguODciIHkxPSIzNy4yMiIgeDI9IjU0Ljg1IiB5Mj0iNDMuMjIi Lz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zMy4zOSwyMy45MWMtMS4zNywwLTEuNS0uMTMtMS41 LTEuNVYxOC4yMmgxMHY0LjE5YzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9 ImNscy0zIiBkPSJNNDEuMzgsMTguNzJ2My42OWEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwy LjE4LDAsMCwxLS45Mi4xaC03YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCww LDEtLjEtLjkyVjE4LjcyaDltMS0xaC0xMXY0LjY5YzAsMS42NS4zNSwyLDIsMmg3YzEuNjUsMCwy LS4zNSwyLTJWMTcuNzJaIi8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIyMC45MSIgeT0iMzEuMDMi IHdpZHRoPSI3Ljk4IiBoZWlnaHQ9IjUuNjkiIHJ4PSIxLjUiIHJ5PSIxLjUiLz48cGF0aCBjbGFz cz0iY2xzLTMiIGQ9Ik0yNy4zOSwzMS41M2EzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIu MTgsMCwwLDEsLjEuOTJ2Mi42OWEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwx LS45Mi4xaC01YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCwwLDEtLjEtLjky VjMyLjUzYTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg1bTAt MWgtNWMtMS42NSwwLTIsLjM1LTIsMnYyLjY5YzAsMS42NS4zNSwyLDIsMmg1YzEuNjUsMCwyLS4z NSwyLTJWMzIuNTNjMC0xLjY1LS4zNS0yLTItMloiLz48cmVjdCBjbGFzcz0iY2xzLTIiIHg9IjE0 LjkyIiB5PSI0My43MiIgd2lkdGg9IjcuOTgiIGhlaWdodD0iNS42OSIgcng9IjEuNSIgcnk9IjEu NSIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTIxLjQxLDQ0LjIyYTMuMjUsMy4yNSwwLDAsMSwu OS4wOGgwYTIuMTgsMi4xOCwwLDAsMSwuMS45MnYyLjY5YTMuMjgsMy4yOCwwLDAsMS0uMDguOSwy LjE4LDIuMTgsMCwwLDEtLjkyLjFoLTVhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4x OCwwLDAsMS0uMS0uOTJWNDUuMjJhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCww LDEsLjkyLS4xaDVtMC0xaC01Yy0xLjY1LDAtMiwuMzUtMiwydjIuNjljMCwxLjY1LjM1LDIsMiwy aDVjMS42NSwwLDItLjM1LDItMlY0NS4yMmMwLTEuNjUtLjM1LTItMi0yWiIvPjxyZWN0IGNsYXNz PSJjbHMtMiIgeD0iMjYuODkiIHk9IjQzLjcyIiB3aWR0aD0iNy45OCIgaGVpZ2h0PSI1LjY5IiBy eD0iMS41IiByeT0iMS41Ii8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMzMuMzgsNDQuMjJhMy4y NSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4xLjkydjIuNjlhMy4yOCwzLjI4 LDAsMCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMWgtNWEzLjI1LDMuMjUsMCwwLDEtLjkt LjA4aDBhMi4xOCwyLjE4LDAsMCwxLS4xLS45MlY0NS4yMmEzLjI4LDMuMjgsMCwwLDEsLjA4LS45 LDIuMTgsMi4xOCwwLDAsMSwuOTItLjFoNW0wLTFoLTVjLTEuNjUsMC0yLC4zNS0yLDJ2Mi42OWMw LDEuNjUuMzUsMiwyLDJoNWMxLjY1LDAsMi0uMzUsMi0yVjQ1LjIyYzAtMS42NS0uMzUtMi0yLTJa Ii8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSIzOC44OSIgeT0iNDMuNzIiIHdpZHRoPSI3Ljk4IiBo ZWlnaHQ9IjUuNjkiIHJ4PSIxLjUiIHJ5PSIxLjUiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik00 NS4zOCw0NC4yMmEzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2 Mi42OWEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xaC01YTMuMjUs My4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCwwLDEtLjEtLjkyVjQ1LjIyYTMuMjgsMy4y OCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg1bTAtMWgtNWMtMS42NSwwLTIs LjM1LTIsMnYyLjY5YzAsMS42NS4zNSwyLDIsMmg1YzEuNjUsMCwyLS4zNSwyLTJWNDUuMjJjMC0x LjY1LS4zNS0yLTItMloiLz48cmVjdCBjbGFzcz0iY2xzLTIiIHg9IjUwLjg2IiB5PSI0My43MiIg d2lkdGg9IjcuOTgiIGhlaWdodD0iNS42OSIgcng9IjEuNSIgcnk9IjEuNSIvPjxwYXRoIGNsYXNz PSJjbHMtMyIgZD0iTTU3LjM1LDQ0LjIyYTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTgsMi4x OCwwLDAsMSwuMS45MnYyLjY5YTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIuMTgsMCwwLDEt LjkyLjFoLTVhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJW NDUuMjJhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDVtMC0x aC01Yy0xLjY1LDAtMiwuMzUtMiwydjIuNjljMCwxLjY1LjM1LDIsMiwyaDVjMS42NSwwLDItLjM1 LDItMlY0NS4yMmMwLTEuNjUtLjM1LTItMi0yWiIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iNDQu ODgiIHk9IjMwLjk3IiB3aWR0aD0iNy45OCIgaGVpZ2h0PSI1LjY5IiByeD0iMS41IiByeT0iMS41 Ii8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNNTEuMzYsMzEuNDdhMy4yNSwzLjI1LDAsMCwxLC45 LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4xLjkydjIuNjlhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIu MTgsMi4xOCwwLDAsMS0uOTIuMWgtNWEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xOCwyLjE4 LDAsMCwxLS4xLS45MlYzMi40N2EzLjI4LDMuMjgsMCwwLDEsLjA4LS45LDIuMTgsMi4xOCwwLDAs MSwuOTItLjFoNW0wLTFoLTVjLTEuNjUsMC0yLC4zNS0yLDJ2Mi42OWMwLDEuNjUuMzUsMiwyLDJo NWMxLjY1LDAsMi0uMzUsMi0yVjMyLjQ3YzAtMS42NS0uMzUtMi0yLTJaIi8+PHBhdGggY2xhc3M9 ImNscy00IiBkPSJNMzEuODksMTguMjhWMTYuMDljMC0xLjM3LjEzLTEuNSwxLjUtMS41aDdjMS4z NywwLDEuNS4xMywxLjUsMS41djIuMTlaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNNDAuMzgs MTUuMDlhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xNywyLjE3LDAsMCwxLC4xLjkydjEuNjlo LTlWMTYuMDlhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDdt MC0xaC03Yy0xLjY1LDAtMiwuMzUtMiwydjIuNjloMTFWMTYuMDljMC0xLjY1LS4zNS0yLTItMloi Lz48cG9seWdvbiBjbGFzcz0iY2xzLTYiIHBvaW50cz0iOC4xMyA0OS40NSA0LjY1IDQ0LjggMTEu NjEgNDQuOCA4LjEzIDQ5LjQ1Ii8+PGxpbmUgY2xhc3M9ImNscy03IiB4MT0iOC4xMyIgeTE9IjQ1 LjQzIiB4Mj0iOC4xMyIgeTI9IjE4LjQ2Ii8+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg ZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X2lu ZGV4X3NjYW4uc3ZnIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X2luZGV4 X3NjYW4uc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMGI1YjFiMDNk Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4 X2luZGV4X3NjYW4uc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgaWQ9Il8xIiBkYXRhLW5hbWU9IjEi IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDY0IDY0Ij48 ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6bm9uZTtzdHJva2U6Izc0NzQ3NDtzdHJva2UtbGluZWNh cDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLXdpZHRoOjAuNzVweDt9LmNscy0y LC5jbHMtOHtmaWxsOiNmMGVjYjY7fS5jbHMtM3tmaWxsOiNjMThmMzU7fS5jbHMtNHtmaWxsOiNh ZGRmZjM7fS5jbHMtNXtmaWxsOiMyOTgwYjk7fS5jbHMtNntmaWxsOiNjMThmMzY7fS5jbHMtN3tv cGFjaXR5OjAuODt9LmNscy04e3N0cm9rZTojYzE4ZjM2O3N0cm9rZS1taXRlcmxpbWl0OjEwO308 L3N0eWxlPjwvZGVmcz48dGl0bGU+ZXhfaW5kZXhfc2NhbjwvdGl0bGU+PGxpbmUgY2xhc3M9ImNs cy0xIiB4MT0iMTMuODUiIHkxPSIzNi4yMyIgeDI9IjE5LjEyIiB5Mj0iNDQuNyIvPjxsaW5lIGNs YXNzPSJjbHMtMSIgeDE9IjEzLjg1IiB5MT0iMzYuMjMiIHgyPSIxOS4wOSIgeTI9IjI3LjkyIi8+ PGxpbmUgY2xhc3M9ImNscy0xIiB4MT0iMjcuNjQiIHkxPSI0NC4zMyIgeDI9IjM1LjY0IiB5Mj0i NTAuMjMiLz48bGluZSBjbGFzcz0iY2xzLTEiIHgxPSIyNy42NCIgeTE9IjQ0LjMzIiB4Mj0iMzUu NjQiIHkyPSIzOC45MiIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTkuMjYiIHk9IjQxLjY1IiB3 aWR0aD0iNy45OCIgaGVpZ2h0PSI1LjY5IiByeD0iMS41IiByeT0iMS41Ii8+PHBhdGggY2xhc3M9 ImNscy0zIiBkPSJNMjUuNzUsNDIuMTVhMy41NCwzLjU0LDAsMCwxLC45LjA3aDBhMi40LDIuNCww LDAsMSwuMS45M3YyLjY5YTMuMTgsMy4xOCwwLDAsMS0uMDguOXMtLjE5LjEtLjkyLjFoLTVhMy4x MSwzLjExLDAsMCwxLS45LS4wOGgwYTIuMjUsMi4yNSwwLDAsMS0uMS0uOTJWNDMuMTVhMy4xOCwz LjE4LDAsMCwxLC4wOC0uOXMuMTktLjEuOTItLjFoNW0wLTFoLTVjLTEuNjUsMC0yLC4zNS0yLDJ2 Mi42OWMwLDEuNjUuMzUsMiwyLDJoNWMxLjY1LDAsMi0uMzUsMi0yVjQzLjE1YzAtMS42NS0uMzUt Mi0yLTJaIi8+PGxpbmUgY2xhc3M9ImNscy0xIiB4MT0iMjcuNjQiIHkxPSIyNy44MyIgeDI9IjM1 LjY0IiB5Mj0iMzMuNzMiLz48bGluZSBjbGFzcz0iY2xzLTEiIHgxPSIyNy42NCIgeTE9IjI3Ljgz IiB4Mj0iMzUuNjQiIHkyPSIyMi40MiIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMTkuMjYiIHk9 IjI1LjE1IiB3aWR0aD0iNy45OCIgaGVpZ2h0PSI1LjY5IiByeD0iMS41IiByeT0iMS41Ii8+PHBh dGggY2xhc3M9ImNscy0zIiBkPSJNMjUuNzUsMjUuNjVhMy41NCwzLjU0LDAsMCwxLC45LjA3aDBh Mi40LDIuNCwwLDAsMSwuMS45M3YyLjY5YTMuMTgsMy4xOCwwLDAsMS0uMDguOXMtLjE5LjEtLjky LjFoLTVhMy4xMSwzLjExLDAsMCwxLS45LS4wOGgwYTIuMjUsMi4yNSwwLDAsMS0uMS0uOTJWMjYu NjVhMy4xOCwzLjE4LDAsMCwxLC4wOC0uOXMuMTktLjEuOTItLjFoNW0wLTFoLTVjLTEuNjUsMC0y LC4zNS0yLDJ2Mi42OWMwLDEuNjUuMzUsMiwyLDJoNWMxLjY1LDAsMi0uMzUsMi0yVjI2LjY1YzAt MS42NS0uMzUtMi0yLTJaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNi42MSw0MC44OWMtMS4z OCwwLTEuNS0uMTMtMS41LTEuNVYzNS4yaDh2NC4xOWMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIv PjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTEyLjU5LDM1Ljd2My42OWEyLjcsMi43LDAsMCwxLS4w OC45cy0uMTkuMS0uOTIuMWgtNWEzLDMsMCwwLDEtLjktLjA4aDBhMi40NSwyLjQ1LDAsMCwxLS4w OS0uOTJWMzUuN2g3bTEtMWgtOXY0LjY5YzAsMS42NS4zNSwyLDIsMmg1YzEuNjUsMCwyLS4zNSwy LTJWMzQuN1oiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik01LjExLDM1LjI2VjMzLjA3YzAtMS4z OC4xMi0xLjUsMS41LTEuNWg1YzEuMzcsMCwxLjUuMTIsMS41LDEuNXYyLjE5WiIvPjxwYXRoIGNs YXNzPSJjbHMtNSIgZD0iTTExLjU5LDMyLjA3YTMuNTQsMy41NCwwLDAsMSwuOS4wN2gwYTIuMTYs Mi4xNiwwLDAsMSwuMS45M3YxLjY5aC03VjMzLjA3YTMuNzEsMy43MSwwLDAsMSwuMDctLjksMi4x NiwyLjE2LDAsMCwxLC45My0uMWg1bTAtMWgtNWMtMS42NSwwLTIsLjM1LTIsMnYyLjY5aDlWMzMu MDdjMC0xLjY1LS4zNS0yLTItMloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zNS43NCw1My40 N2MtMS4zOCwwLTEuNS0uMTItMS41LTEuNVYxOS41M0g1OC44OVY1MmMwLDEuMzgtLjEzLDEuNS0x LjUsMS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTU4LjM5LDIwVjUyYTIuNywyLjcsMCww LDEtLjA4LjlzLS4xOS4xLS45Mi4xSDM1Ljc0YTMuNTQsMy41NCwwLDAsMS0uOS0uMDdoMGEyLjE2 LDIuMTYsMCwwLDEtLjEtLjkzVjIwSDU4LjM5bTEtMUgzMy43NFY1MmMwLDEuNjUuMzUsMiwyLDJI NTcuMzljMS42NSwwLDItLjM1LDItMlYxOVoiLz48ZyBjbGFzcz0iY2xzLTciPjxsaW5lIGNsYXNz PSJjbHMtOCIgeDE9IjQyLjQ0IiB5MT0iNTIuOTciIHgyPSI0Mi40NCIgeTI9IjE5Ljk3Ii8+PGxp bmUgY2xhc3M9ImNscy04IiB4MT0iNTAuNjMiIHkxPSI1Mi45NyIgeDI9IjUwLjYzIiB5Mj0iMTku OTciLz48bGluZSBjbGFzcz0iY2xzLTgiIHgxPSIzNC43MyIgeTE9IjI3Ljk3IiB4Mj0iNTguMzci IHkyPSIyNy45NyIvPjxsaW5lIGNsYXNzPSJjbHMtOCIgeDE9IjM0LjczIiB5MT0iMzYuMzQiIHgy PSI1OC4zNyIgeTI9IjM2LjM0Ii8+PGxpbmUgY2xhc3M9ImNscy04IiB4MT0iMzQuNzMiIHkxPSI0 NC43MSIgeDI9IjU4LjM3IiB5Mj0iNDQuNzEiLz48L2c+PHBhdGggY2xhc3M9ImNscy00IiBkPSJN NTAuNywxOS41M3YtOWg2LjY5YzEuMzgsMCwxLjUuMTIsMS41LDEuNXY3LjVaIi8+PHBhdGggY2xh c3M9ImNscy01IiBkPSJNNTcuMzksMTFhMy40NCwzLjQ0LDAsMCwxLC45LjA3aDBhMi42MiwyLjYy LDAsMCwxLC4wOS45M3Y3SDUxLjJWMTFoNi4xOW0wLTFINTAuMlYyMGg5LjE5VjEyYzAtMS42NS0u MzUtMi0yLTJaIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNMzQuMjMsMTkuNTNWMTJjMC0xLjM4 LjEzLTEuNSwxLjUtMS41aDYuN3Y5WiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTQxLjkzLDEx djhoLTcuMlYxMmEzLjE4LDMuMTgsMCwwLDEsLjA4LS45LDIuMDgsMi4wOCwwLDAsMSwuOTItLjFo Ni4ybTEtMWgtNy4yYy0xLjY1LDAtMiwuMzUtMiwydjhoOS4yVjEwWiIvPjxyZWN0IGNsYXNzPSJj bHMtNCIgeD0iNDIuNDUiIHk9IjEwLjUzIiB3aWR0aD0iOC4xNyIgaGVpZ2h0PSI5Ii8+PHBhdGgg Y2xhc3M9ImNscy01IiBkPSJNNTAuMTIsMTF2OEg0M1YxMWg3LjE3bTEtMUg0MlYyMGg5LjE3VjEw WiIvPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9pbnNlcnQuc3ZnIGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X2luc2VydC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi4yMDJiZWFhNGUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfaW5zZXJ0LnN2ZwpAQCAtMCwwICsxIEBACis8c3Zn IGlkPSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmci IHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTV7ZmlsbDojZjBl Y2I2O30uY2xzLTJ7ZmlsbDojYzE4ZjM2O30uY2xzLTN7ZmlsbDojODhmNjI1O30uY2xzLTR7b3Bh Y2l0eTowLjg7fS5jbHMtNXtzdHJva2U6I2MxOGYzNjtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9LmNs cy02e2ZpbGw6I2FkZGZmMzt9LmNscy03e2ZpbGw6IzI5ODBiOTt9PC9zdHlsZT48L2RlZnM+PHRp dGxlPmV4X2luc2VydDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTYuNzMsNTcuNDdj LTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVWMTUuNTNoNDFWNTZjMCwxLjM3LS4xMywxLjUtMS41LDEu NVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01NS43MiwxNlY1NmEzLjI5LDMuMjksMCwwLDEt LjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xaC0zOGEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBh Mi4xOCwyLjE4LDAsMCwxLS4xLS45MlYxNmg0MG0xLTFoLTQyVjU2YzAsMS42NS4zNSwyLDIsMmgz OGMxLjY1LDAsMi0uMzUsMi0yVjE1WiIvPjxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iNDguNTIiIHk9 IjQ5LjUzIiB3aWR0aD0iNy4yMiIgaGVpZ2h0PSI3LjQ0Ii8+PHJlY3QgY2xhc3M9ImNscy0zIiB4 PSI0MC4zMiIgeT0iNDkuNTMiIHdpZHRoPSI3LjIyIiBoZWlnaHQ9IjcuNDQiLz48cmVjdCBjbGFz cz0iY2xzLTMiIHg9IjMyLjEyIiB5PSI0OS41MyIgd2lkdGg9IjcuMjIiIGhlaWdodD0iNy40NCIv PjxnIGNsYXNzPSJjbHMtNCI+PGxpbmUgY2xhc3M9ImNscy01IiB4MT0iMjMuNDMiIHkxPSI1Ni45 NyIgeDI9IjIzLjQzIiB5Mj0iMTUuOTciLz48bGluZSBjbGFzcz0iY2xzLTUiIHgxPSIzOS44MyIg eTE9IjU2Ljk3IiB4Mj0iMzkuODMiIHkyPSIxNS45NyIvPjxsaW5lIGNsYXNzPSJjbHMtNSIgeDE9 IjMxLjYzIiB5MT0iNTYuOTciIHgyPSIzMS42MyIgeTI9IjE1Ljk3Ii8+PGxpbmUgY2xhc3M9ImNs cy01IiB4MT0iNDguMDMiIHkxPSI1Ni45NyIgeDI9IjQ4LjAzIiB5Mj0iMTUuOTciLz48bGluZSBj bGFzcz0iY2xzLTUiIHgxPSIxNS43MyIgeTE9IjIzLjk3IiB4Mj0iNTUuNyIgeTI9IjIzLjk3Ii8+ PGxpbmUgY2xhc3M9ImNscy01IiB4MT0iMTUuNzMiIHkxPSIzMi4zNCIgeDI9IjU1LjciIHkyPSIz Mi4zNCIvPjxsaW5lIGNsYXNzPSJjbHMtNSIgeDE9IjE1LjczIiB5MT0iNDAuNzEiIHgyPSI1NS43 IiB5Mj0iNDAuNzEiLz48bGluZSBjbGFzcz0iY2xzLTUiIHgxPSIxNS43MyIgeTE9IjQ5LjA4IiB4 Mj0iNTUuNyIgeTI9IjQ5LjA4Ii8+PC9nPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTQ4LDE1LjUz di05aDYuNjljMS4zNywwLDEuNS4xMywxLjUsMS41djcuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTci IGQ9Ik01NC43Myw3YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTgsMi4xOCwwLDAsMSwuMS45 MnY3SDQ4LjUzVjdoNi4xOW0wLTFINDcuNTNWMTZoOS4xOVY4YzAtMS42NS0uMzUtMi0yLTJaIi8+ PHBhdGggY2xhc3M9ImNscy02IiBkPSJNMTUuMjMsMTUuNTNWOGMwLTEuMzcuMTMtMS41LDEuNS0x LjVoNi42OXY5WiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTIyLjkzLDd2OEgxNS43M1Y4YTMu MjksMy4yOSwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg2LjE5bTEtMUgxNi43 M2MtMS42NSwwLTIsLjM1LTIsMnY4aDkuMTlWNloiLz48cmVjdCBjbGFzcz0iY2xzLTYiIHg9IjM5 LjgzIiB5PSI2LjUzIiB3aWR0aD0iOC4xOSIgaGVpZ2h0PSI5Ii8+PHBhdGggY2xhc3M9ImNscy03 IiBkPSJNNDcuNTIsN3Y4SDQwLjMzVjdoNy4xOG0xLTFIMzkuMzNWMTZoOS4xOVY2WiIvPjxyZWN0 IGNsYXNzPSJjbHMtNiIgeD0iMzEuNjQiIHk9IjYuNTMiIHdpZHRoPSI4LjE5IiBoZWlnaHQ9Ijki Lz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik0zOS4zMyw3djhIMzIuMTRWN2g3LjE4bTEtMUgzMS4x NFYxNmg5LjE5VjZaIi8+PHJlY3QgY2xhc3M9ImNscy02IiB4PSIyMy40NSIgeT0iNi41MyIgd2lk dGg9IjguMTciIGhlaWdodD0iOSIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTMxLjEyLDd2OEgy My45NVY3aDcuMTdtMS0xSDIzVjE2aDkuMThWNloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03 LjI3LDI4LjI4QTMuMzcsMy4zNywwLDAsMSwxMywyNS44NWgwbC4xMy4xMy4wNS4wNUwyNC43Miwz Ny41OGEuNC40LDAsMCwxLC4xOC4ybDEuNjMsNS44MnYuMDZoMGEuNDYuNDYsMCwwLDEsMCwuMTIu NDEuNDEsMCwwLDEsMCwuMTJzMCwwLDAsMGgwYS40LjQsMCwwLDEtLjA2LjFsMCwwLDAsMC0uMS4w NmgwbC0uMTIsMC0uMTIsMEgyNmwtNS44Mi0xLjYzYS40LjQsMCwwLDEtLjItLjE4TDguMjIsMzAu NjRhLjQuNCwwLDAsMS0uMDgtLjEyQTMuMzUsMy4zNSwwLDAsMSw3LjI3LDI4LjI4Wm0xMi45LDEz LjE1LDEtMmgwbC05LjkzLTkuOTNMOS43MywzMVptNSwuNTUtLjg0Ljg0LDEuMTcuMzNabS0xLTMu NDhMMjIsMzkuNmwtMS4wOSwyLjI2LDIuNTcuNzIsMS40OS0xLjQ5Wm0tLjQyLS43TDEzLjM1LDI3 LjM3bC0xLjUyLDEuNTIsOS45Myw5LjkzaDBaTTguMSwyOC4zMWEyLjU1LDIuNTUsMCwwLDAsLjgz LDEuODhoMGwuMjIuMjIsMy42Mi0zLjYyLS4yMi0uMjJoMEEyLjU2LDIuNTYsMCwwLDAsOC4xLDI4 LjMxWiIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMSIgcG9pbnRzPSIyMC4xNyA0MS40NSAyMS4xNyAz OS40MiAyMS4xOCAzOS40MSAxMS4yNSAyOS40OCA5LjczIDMxIDIwLjE3IDQxLjQ1Ii8+PHBvbHln b24gY2xhc3M9ImNscy0xIiBwb2ludHM9IjEzLjM1IDI3LjM4IDExLjgzIDI4LjkgMjEuNzYgMzgu ODMgMjEuNzcgMzguODIgMjMuNzkgMzcuODMgMTMuMzUgMjcuMzgiLz48cGF0aCBjbGFzcz0iY2xz LTEiIGQ9Ik04LjEyLDI4LjI3QTIuNTUsMi41NSwwLDAsMCw5LDMwLjE1SDlsLjIyLjIyLDMuNjIt My42Mi0uMjItLjIyaDBhMi41NiwyLjU2LDAsMCwwLTQuNDUsMS43M1oiLz48cG9seWdvbiBjbGFz cz0iY2xzLTEiIHBvaW50cz0iMjQuMjIgMzguNTIgMjEuOTYgMzkuNiAyMC44NyA0MS44NiAyMy40 NCA0Mi41OCAyNC45NCA0MS4wOSAyNC4yMiAzOC41MiIvPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQg ZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2lt Zy9leF9qb2luLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9qb2lu LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjMwMTQ2YTllYQotLS0g L2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9qb2lu LnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxucz0iaHR0 cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxl Pi5jbHMtMXtmaWxsOiMzNDQ5NWU7c3Ryb2tlOiM1MjhkMTk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7 fS5jbHMtMntmaWxsOiNmMGVjYjY7fS5jbHMtM3tmaWxsOiNjMThmMzU7fS5jbHMtNHtmaWxsOiNk M2Q0ZjM7fS5jbHMtNXtmaWxsOiM2NjZiZDE7fS5jbHMtNntmaWxsOiNhZGRmZjM7fS5jbHMtN3tm aWxsOiMyOTgwYjk7fS5jbHMtOCwuY2xzLTl7ZmlsbDpub25lO3N0cm9rZS1saW5lam9pbjpyb3Vu ZDtvcGFjaXR5OjAuODt9LmNscy04e3N0cm9rZTojNjY2YmQxO30uY2xzLTl7c3Ryb2tlOiNjMThm MzU7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5leF9qb2luPC90aXRsZT48cGF0aCBjbGFzcz0iY2xz LTEiIGQ9Ik0zMC4yNyw0MS4zNmE0LjQyLDQuNDIsMCwwLDAsMi4wNS0uNTEsMi44MSwyLjgxLDAs MCwwLDEuMDYtMS4wOCwzLjU5LDMuNTksMCwwLDAsLjQtMS40cS4wNi0uNzUuMDYtMS40NnYuMzVj MC0uNjgsMC0xLjI1LDAtMS43MmE5LjI4LDkuMjgsMCwwLDEsLjExLTEuMiwyLjc2LDIuNzYsMCww LDEsLjI2LS44MywyLjM3LDIuMzcsMCwwLDEsLjQ0LS42LDIuNTMsMi41MywwLDAsMSwuNjItLjQ2 LDQsNCwwLDAsMSwuNjQtLjI3LDMuNSwzLjUsMCwwLDEsLjYtLjEzYy4xOSwwLC4xOS0uMSwwLS4x MmEzLjUyLDMuNTIsMCwwLDEtLjYtLjEzLDMuNjUsMy42NSwwLDAsMS0uNjQtLjI3LDIuNTIsMi41 MiwwLDAsMS0uNjItLjQ2LDIuNDEsMi40MSwwLDAsMS0uNDQtLjYsMi43NywyLjc3LDAsMCwxLS4y Ni0uODMsOS4zMSw5LjMxLDAsMCwxLS4xMS0xLjJxMC0uNzEsMC0xLjczdi4zNmMwLS40NywwLTEt LjA2LTEuNDZhMy41OCwzLjU4LDAsMCwwLS40LTEuNCwyLjgyLDIuODIsMCwwLDAtMS4wNi0xLjA4 LDQuNDcsNC40NywwLDAsMC0yLjA1LS41MVYyMi4ybC41MywwYTQuMTEsNC4xMSwwLDAsMSwuNjcu MTEsNS4xMiw1LjEyLDAsMCwxLC43Mi4yMywyLjg5LDIuODksMCwwLDEsLjcuNDEsMy4zNCwzLjM0 LDAsMCwxLC44My45QTMuNjYsMy42NiwwLDAsMSwzNC4xNSwyNWE3LDcsMCwwLDEsLjE2LDEuMjlj MCwuNDcsMCwxLjg4LDAsMS44OGE3LjksNy45LDAsMCwwLC4xMiwxLjUsMi4zNywyLjM3LDAsMCww LC40NywxLjA2LDIuNjUsMi42NSwwLDAsMCwxLC43My42OS42OSwwLDAsMSwwLDEuMTcsMi42Niwy LjY2LDAsMCwwLTEsLjczLDIuMzksMi4zOSwwLDAsMC0uNDcsMS4wNiw3LjksNy45LDAsMCwwLS4x MiwxLjVzLS4wOSwyLjc4LS4xOCwzLjE3YTMuNjUsMy42NSwwLDAsMS0uNDMsMS4wNywzLjMxLDMu MzEsMCwwLDEtLjgzLjksMi45LDIuOSwwLDAsMS0uNy40MSw1LjM5LDUuMzksMCwwLDEtLjcyLjIz LDQuMzQsNC4zNCwwLDAsMS0uNjcuMTFsLS41MywwWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0i TTQxLjE0LDQ5Ljg4Yy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjE5Ljg4aDcuMjh2MzBaIi8+PHBh dGggY2xhc3M9ImNscy0zIiBkPSJNNDYuNDIsMjAuMzh2MjlINDEuMTRhMy4yNSwzLjI1LDAsMCwx LS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJ2LTI4aDYuMjhtMS0xSDM5LjE0djI5YzAs MS42NS4zNSwyLDIsMmg2LjI4di0zMVoiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik00Ni45LDQ5 Ljg4di0zMGg3LjI4djI4LjVjMCwxLjM3LS4xMywxLjUtMS41LDEuNVoiLz48cGF0aCBjbGFzcz0i Y2xzLTUiIGQ9Ik01My42OSwyMC4zOHYyOGEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4 LDAsMCwxLS45Mi4xSDQ3LjR2LTI5aDYuMjhtMS0xSDQ2LjR2MzFoNi4yOGMxLjY1LDAsMi0uMzUs Mi0ydi0yOVoiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik0zOS42NCwxOS44OHYtNC41YzAtMS4z Ny4xMy0xLjUsMS41LTEuNWg1Ljc4djZaIi8+PHBhdGggY2xhc3M9ImNscy03IiBkPSJNNDYuNDIs MTQuMzh2NUg0MC4xNHYtNGEzLjI4LDMuMjgsMCwwLDEsLjA4LS45LDIuMTgsMi4xOCwwLDAsMSwu OTItLjFoNS4yOG0xLTFINDEuMTRjLTEuNjUsMC0yLC4zNS0yLDJ2NWg4LjI4di03WiIvPjxwYXRo IGNsYXNzPSJjbHMtNiIgZD0iTTQ2LjkxLDE5Ljg4di02aDUuNzhjMS4zNywwLDEuNS4xMywxLjUs MS41djQuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik01Mi42OSwxNC4zOGEzLjI1LDMuMjUs MCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2NEg0Ny40MXYtNWg1LjI4bTAtMUg0 Ni40MXY3aDguMjh2LTVjMC0xLjY1LS4zNS0yLTItMloiLz48bGluZSBjbGFzcz0iY2xzLTgiIHgx PSI0Ni42NyIgeTE9IjI2LjIzIiB4Mj0iNTQuMTYiIHkyPSIyNi4yMyIvPjxsaW5lIGNsYXNzPSJj bHMtOSIgeDE9IjM5LjY3IiB5MT0iMjYuMjMiIHgyPSI0Ni40IiB5Mj0iMjYuMjMiLz48bGluZSBj bGFzcz0iY2xzLTgiIHgxPSI0Ni42NyIgeTE9IjMyLjIzIiB4Mj0iNTQuMTYiIHkyPSIzMi4yMyIv PjxsaW5lIGNsYXNzPSJjbHMtOSIgeDE9IjM5LjY3IiB5MT0iMzIuMjMiIHgyPSI0Ni40IiB5Mj0i MzIuMjMiLz48bGluZSBjbGFzcz0iY2xzLTgiIHgxPSI0Ni42NyIgeTE9IjM4LjIzIiB4Mj0iNTQu MTYiIHkyPSIzOC4yMyIvPjxsaW5lIGNsYXNzPSJjbHMtOSIgeDE9IjM5LjY3IiB5MT0iMzguMjMi IHgyPSI0Ni40IiB5Mj0iMzguMjMiLz48bGluZSBjbGFzcz0iY2xzLTgiIHgxPSI0Ni42NyIgeTE9 IjQ0LjIzIiB4Mj0iNTQuMTYiIHkyPSI0NC4yMyIvPjxsaW5lIGNsYXNzPSJjbHMtOSIgeDE9IjM5 LjY3IiB5MT0iNDQuMjMiIHgyPSI0Ni40IiB5Mj0iNDQuMjMiLz48cGF0aCBjbGFzcz0iY2xzLTQi IGQ9Ik0xMS4zNCwyOS4zMWMtMS4zNywwLTEuNS0uMTMtMS41LTEuNVYxNi4zMWg3LjI4djEzWiIv PjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTE2LjYyLDE2LjgxdjEySDExLjM0YTMuMjUsMy4yNSww LDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCwwLDEtLjEtLjkydi0xMWg2LjI4bTEtMUg5LjM0djEy YzAsMS42NS4zNSwyLDIsMmg2LjI4di0xNFoiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xNy4x MSwyOS4zMXYtMTNoNy4yOHYxMS41YzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xh c3M9ImNscy01IiBkPSJNMjMuODksMTYuODF2MTFhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIuMTgs Mi4xOCwwLDAsMS0uOTIuMUgxNy42MXYtMTJoNi4yOG0xLTFIMTYuNjF2MTRoNi4yOGMxLjY1LDAs Mi0uMzUsMi0ydi0xMloiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik05Ljg0LDE2LjMxdi00LjVj MC0xLjM3LjEzLTEuNSwxLjUtMS41aDUuNzh2NloiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik0x Ni42MiwxMC44MXY1SDEwLjM0di00YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAs MCwxLC45Mi0uMWg1LjI4bTEtMUgxMS4zNGMtMS42NSwwLTIsLjM1LTIsMnY1aDguMjh2LTdaIi8+ PHBhdGggY2xhc3M9ImNscy02IiBkPSJNMTcuMTEsMTYuMzF2LTZoNS43OGMxLjM3LDAsMS41LjEz LDEuNSwxLjV2NC41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTIyLjg5LDEwLjgxYTMuMjUs My4yNSwwLDAsMSwuOS4wOGgwYTIuMTgsMi4xOCwwLDAsMSwuMS45MnY0SDE3LjYxdi01aDUuMjht MC0xSDE2LjYxdjdoOC4yOHYtNWMwLTEuNjUtLjM1LTItMi0yWiIvPjxsaW5lIGNsYXNzPSJjbHMt OCIgeDE9IjE2Ljg3IiB5MT0iMjIuNjYiIHgyPSIyNC4zNyIgeTI9IjIyLjY2Ii8+PGxpbmUgY2xh c3M9ImNscy04IiB4MT0iOS44NyIgeTE9IjIyLjY2IiB4Mj0iMTYuNjEiIHkyPSIyMi42NiIvPjxw YXRoIGNsYXNzPSJjbHMtMiIgZD0iTTExLjM0LDUzLjQ2Yy0xLjM3LDAtMS41LS4xMy0xLjUtMS41 VjQwLjQ2aDcuMjh2MTNaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTYuNjIsNDFWNTNIMTEu MzRhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJWNDFoNi4y OG0xLTFIOS4zNFY1MmMwLDEuNjUuMzUsMiwyLDJoNi4yOFY0MFoiLz48cGF0aCBjbGFzcz0iY2xz LTIiIGQ9Ik0xNy4xMSw1My40NnYtMTNoNy4yOFY1MmMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIv PjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTIzLjg5LDQxVjUyYTMuMjgsMy4yOCwwLDAsMS0uMDgu OSwyLjE4LDIuMTgsMCwwLDEtLjkyLjFIMTcuNjFWNDFoNi4yOG0xLTFIMTYuNjFWNTRoNi4yOGMx LjY1LDAsMi0uMzUsMi0yVjQwWiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTkuODQsNDAuNDZW MzZjMC0xLjM3LjEzLTEuNSwxLjUtMS41aDUuNzh2NloiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9 Ik0xNi42MiwzNXY1SDEwLjM0VjM2YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAs MCwxLC45Mi0uMWg1LjI4bTEtMUgxMS4zNGMtMS42NSwwLTIsLjM1LTIsMnY1aDguMjhWMzRaIi8+ PHBhdGggY2xhc3M9ImNscy02IiBkPSJNMTcuMTEsNDAuNDZ2LTZoNS43OGMxLjM3LDAsMS41LjEz LDEuNSwxLjV2NC41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTIyLjg5LDM1YTMuMjUsMy4y NSwwLDAsMSwuOS4wOGgwYTIuMTgsMi4xOCwwLDAsMSwuMS45MnY0SDE3LjYxVjM1aDUuMjhtMC0x SDE2LjYxdjdoOC4yOFYzNmMwLTEuNjUtLjM1LTItMi0yWiIvPjxsaW5lIGNsYXNzPSJjbHMtOSIg eDE9IjE2Ljg3IiB5MT0iNDYuODEiIHgyPSIyNC4zNyIgeTI9IjQ2LjgxIi8+PGxpbmUgY2xhc3M9 ImNscy05IiB4MT0iOS44NyIgeTE9IjQ2LjgxIiB4Mj0iMTYuNjEiIHkyPSI0Ni44MSIvPjwvc3Zn PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9FeHBsYWluL2ltZy9leF9saW1pdC5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMv RXhwbGFpbi9pbWcvZXhfbGltaXQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMC4uMjQ0MzE3YTcyCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pz L0V4cGxhaW4vaW1nL2V4X2xpbWl0LnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIGlkPSJfMSIgZGF0 YS1uYW1lPSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAg MCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTR7ZmlsbDojZjBlY2I2O30uY2xzLTJ7 ZmlsbDojYzE4ZjM2O30uY2xzLTN7b3BhY2l0eTowLjg7fS5jbHMtNHtzdHJva2U6I2MxOGYzNjt9 LmNscy00LC5jbHMtN3tzdHJva2UtbWl0ZXJsaW1pdDoxMDt9LmNscy01e2ZpbGw6I2FkZGZmMzt9 LmNscy02e2ZpbGw6IzI5ODBiOTt9LmNscy03e2ZpbGw6I2QzZDRmMztzdHJva2U6I2MwMDt9LmNs cy03LC5jbHMtOXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2Utd2lkdGg6MS41cHg7fS5jbHMt OCwuY2xzLTl7ZmlsbDojNTI4ZDE5O30uY2xzLTl7c3Ryb2tlOiM1MjhkMTk7c3Ryb2tlLWxpbmVq b2luOnJvdW5kO308L3N0eWxlPjwvZGVmcz48dGl0bGU+ZXhfbGltaXQ8L3RpdGxlPjxwYXRoIGNs YXNzPSJjbHMtMSIgZD0iTTEyLjc5LDUzLjQ3Yy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjE5LjUz aDQxVjUyYzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJN NTEuNzcsMjBWNTJhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMWgt MzhhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTcsMi4xNywwLDAsMS0uMS0uOTJWMjBoNDBt MS0xaC00MlY1MmMwLDEuNjUuMzUsMiwyLDJoMzhjMS42NSwwLDItLjM1LDItMlYxOVoiLz48ZyBj bGFzcz0iY2xzLTMiPjxsaW5lIGNsYXNzPSJjbHMtNCIgeDE9IjE5LjQ4IiB5MT0iNTIuOTciIHgy PSIxOS40OCIgeTI9IjE5Ljk3Ii8+PGxpbmUgY2xhc3M9ImNscy00IiB4MT0iMzUuODgiIHkxPSI1 Mi45NyIgeDI9IjM1Ljg4IiB5Mj0iMTkuOTciLz48bGluZSBjbGFzcz0iY2xzLTQiIHgxPSIyNy42 OCIgeTE9IjUyLjk3IiB4Mj0iMjcuNjgiIHkyPSIxOS45NyIvPjxsaW5lIGNsYXNzPSJjbHMtNCIg eDE9IjQ0LjA4IiB5MT0iNTIuOTciIHgyPSI0NC4wOCIgeTI9IjE5Ljk3Ii8+PGxpbmUgY2xhc3M9 ImNscy00IiB4MT0iMTEuNzgiIHkxPSIyNy45NyIgeDI9IjUxLjc1IiB5Mj0iMjcuOTciLz48bGlu ZSBjbGFzcz0iY2xzLTQiIHgxPSIxMS43OCIgeTE9IjM2LjM0IiB4Mj0iNTEuNzUiIHkyPSIzNi4z NCIvPjxsaW5lIGNsYXNzPSJjbHMtNCIgeDE9IjExLjc4IiB5MT0iNDQuNzEiIHgyPSI1MS43NSIg eTI9IjQ0LjcxIi8+PC9nPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTQ0LjA5LDE5LjUzdi05aDYu NjljMS4zNywwLDEuNS4xMywxLjUsMS41djcuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik01 MC43OCwxMWEzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2N0g0 NC41OVYxMWg2LjE5bTAtMUg0My41OVYyMGg5LjE5VjEyYzAtMS42NS0uMzUtMi0yLTJaIi8+PHBh dGggY2xhc3M9ImNscy01IiBkPSJNMTEuMjksMTkuNTNWMTJjMC0xLjM3LjEzLTEuNSwxLjUtMS41 aDYuNjl2OVoiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik0xOSwxMXY4SDExLjc5VjEyYTMuMjgs My4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMUgxOW0xLTFIMTIuNzljLTEu NjUsMC0yLC4zNS0yLDJ2OEgyMFYxMFoiLz48cmVjdCBjbGFzcz0iY2xzLTUiIHg9IjM1Ljg4IiB5 PSIxMC41MyIgd2lkdGg9IjguMTgiIGhlaWdodD0iOSIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0i TTQzLjU3LDExdjhIMzYuMzhWMTFoNy4xOG0xLTFIMzUuMzlWMjBoOS4xOVYxMFoiLz48cmVjdCBj bGFzcz0iY2xzLTUiIHg9IjI3LjY5IiB5PSIxMC41MyIgd2lkdGg9IjguMTkiIGhlaWdodD0iOSIv PjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTM1LjM4LDExdjhIMjguMTlWMTFoNy4xOG0xLTFIMjcu MlYyMGg5LjE5VjEwWiIvPjxyZWN0IGNsYXNzPSJjbHMtNSIgeD0iMTkuNSIgeT0iMTAuNTMiIHdp ZHRoPSI4LjE3IiBoZWlnaHQ9IjkiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik0yNy4xOCwxMXY4 SDIwVjExaDcuMTdtMS0xSDE5VjIwaDkuMThWMTBaIi8+PGxpbmUgY2xhc3M9ImNscy03IiB4MT0i Ni4zMSIgeTE9IjE5Ljc2IiB4Mj0iNTcuNzciIHkyPSIxOS43NyIvPjxsaW5lIGNsYXNzPSJjbHMt NyIgeDE9IjYuMzEiIHkxPSIzNi4zMyIgeDI9IjU3Ljc3IiB5Mj0iMzYuMzQiLz48cG9seWdvbiBj bGFzcz0iY2xzLTgiIHBvaW50cz0iNTYuMjUgMzQuNzEgNTguNzggMzEuMzMgNTMuNzIgMzEuMzMg NTYuMjUgMzQuNzEiLz48bGluZSBjbGFzcz0iY2xzLTkiIHgxPSI1Ni4yNSIgeTE9IjMyLjE4IiB4 Mj0iNTYuMjUiIHkyPSIyMS45NCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtOCIgcG9pbnRzPSI3Ljc1 IDM0LjcxIDEwLjI4IDMxLjMzIDUuMjIgMzEuMzMgNy43NSAzNC43MSIvPjxsaW5lIGNsYXNzPSJj bHMtOSIgeDE9IjcuNzUiIHkxPSIzMi4xOCIgeDI9IjcuNzUiIHkyPSIyMS45NCIvPjwvc3ZnPgpc IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9FeHBsYWluL2ltZy9leF9sb2NrX3Jvd3Muc3ZnIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pz L0V4cGxhaW4vaW1nL2V4X2xvY2tfcm93cy5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwLi4wMDFhYjVmODUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvRXhwbGFpbi9pbWcvZXhfbG9ja19yb3dzLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIGlk PSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHht bG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2aWV3Qm94PSIwIDAgNjQg NjQiPjxkZWZzPjxzdHlsZT4uY2xzLTEsLmNscy01e2ZpbGw6I2YwZWNiNjt9LmNscy0ye2ZpbGw6 I2MxOGYzNjt9LmNscy0ze2ZpbGw6I2ZmYmQzMDt9LmNscy00e29wYWNpdHk6MC44O30uY2xzLTV7 c3Ryb2tlOiNjMThmMzY7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fS5jbHMtNntmaWxsOiNhZGRmZjM7 fS5jbHMtN3tmaWxsOiMyOTgwYjk7fS5jbHMtOHtmaWxsOnVybCgjbGluZWFyLWdyYWRpZW50KTt9 LmNscy05e2ZpbGw6Izc1NzI3Mjt9LmNscy0xMHtmaWxsOiNmYmYxYzM7fTwvc3R5bGU+PGxpbmVh ckdyYWRpZW50IGlkPSJsaW5lYXItZ3JhZGllbnQiIHgxPSI1LjAzIiB5MT0iMjcuMjUiIHgyPSIx NC43MSIgeTI9IjM2LjkzIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHN0b3Agb2Zm c2V0PSIwIiBzdG9wLWNvbG9yPSIjY2ViYTU5Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9y PSIjYjc2NDUxIi8+PC9saW5lYXJHcmFkaWVudD48L2RlZnM+PHRpdGxlPmV4X2xvY2tfcm93czwv dGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTkuNzQsNTcuNDdjLTEuMzcsMC0xLjUtLjEz LTEuNS0xLjVWMTUuNTNoNDFWNTZjMCwxLjM3LS4xMywxLjUtMS41LDEuNVoiLz48cGF0aCBjbGFz cz0iY2xzLTIiIGQ9Ik01OC43MiwxNlY1NmEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4 LDAsMCwxLS45Mi4xaC0zOGEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xOCwyLjE4LDAsMCwx LS4xLS45MlYxNmg0MG0xLTFoLTQyVjU2YzAsMS42NS4zNSwyLDIsMmgzOGMxLjY1LDAsMi0uMzUs Mi0yVjE1WiIvPjxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMTguNzIiIHk9IjI0LjU2IiB3aWR0aD0i Ny4yMiIgaGVpZ2h0PSI3LjQ0Ii8+PHJlY3QgY2xhc3M9ImNscy0zIiB4PSIzNS4xMyIgeT0iNDEu MTEiIHdpZHRoPSI3LjIyIiBoZWlnaHQ9IjcuNDQiLz48cmVjdCBjbGFzcz0iY2xzLTMiIHg9IjI2 LjkyIiB5PSI0MS4xMSIgd2lkdGg9IjcuMjIiIGhlaWdodD0iNy40NCIvPjxnIGNsYXNzPSJjbHMt NCI+PGxpbmUgY2xhc3M9ImNscy01IiB4MT0iMjYuNDMiIHkxPSI1Ni45NyIgeDI9IjI2LjQzIiB5 Mj0iMTUuOTciLz48bGluZSBjbGFzcz0iY2xzLTUiIHgxPSI0Mi44MyIgeTE9IjU2Ljk3IiB4Mj0i NDIuODMiIHkyPSIxNS45NyIvPjxsaW5lIGNsYXNzPSJjbHMtNSIgeDE9IjM0LjYzIiB5MT0iNTYu OTciIHgyPSIzNC42MyIgeTI9IjE1Ljk3Ii8+PGxpbmUgY2xhc3M9ImNscy01IiB4MT0iNTEuMDMi IHkxPSI1Ni45NyIgeDI9IjUxLjAzIiB5Mj0iMTUuOTciLz48bGluZSBjbGFzcz0iY2xzLTUiIHgx PSIxOC43MyIgeTE9IjIzLjk3IiB4Mj0iNTguNyIgeTI9IjIzLjk3Ii8+PGxpbmUgY2xhc3M9ImNs cy01IiB4MT0iMTguNzMiIHkxPSIzMi4zNCIgeDI9IjU4LjciIHkyPSIzMi4zNCIvPjxsaW5lIGNs YXNzPSJjbHMtNSIgeDE9IjE4LjczIiB5MT0iNDAuNzEiIHgyPSI1OC43IiB5Mj0iNDAuNzEiLz48 bGluZSBjbGFzcz0iY2xzLTUiIHgxPSIxOC43MyIgeTE9IjQ5LjA4IiB4Mj0iNTguNyIgeTI9IjQ5 LjA4Ii8+PC9nPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTUxLDE1LjUzdi05aDYuNjljMS4zNyww LDEuNS4xMywxLjUsMS41djcuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik01Ny43Myw3YTMu MjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTgsMi4xOCwwLDAsMSwuMS45MnY3SDUxLjU0VjdoNi4x OW0wLTFINTAuNTRWMTZoOS4xOVY4YzAtMS42NS0uMzUtMi0yLTJaIi8+PHBhdGggY2xhc3M9ImNs cy02IiBkPSJNMTguMjQsMTUuNTNWOGMwLTEuMzcuMTMtMS41LDEuNS0xLjVoNi42OXY5WiIvPjxw YXRoIGNsYXNzPSJjbHMtNyIgZD0iTTI1LjkzLDd2OEgxOC43NFY4YTMuMjgsMy4yOCwwLDAsMSwu MDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg2LjE5bTEtMUgxOS43NGMtMS42NSwwLTIsLjM1 LTIsMnY4aDkuMTlWNloiLz48cmVjdCBjbGFzcz0iY2xzLTYiIHg9IjQyLjgzIiB5PSI2LjUzIiB3 aWR0aD0iOC4xOSIgaGVpZ2h0PSI5Ii8+PHBhdGggY2xhc3M9ImNscy03IiBkPSJNNTAuNTIsN3Y4 SDQzLjMzVjdoNy4xOG0xLTFINDIuMzRWMTZoOS4xOVY2WiIvPjxyZWN0IGNsYXNzPSJjbHMtNiIg eD0iMzQuNjQiIHk9IjYuNTMiIHdpZHRoPSI4LjE5IiBoZWlnaHQ9IjkiLz48cGF0aCBjbGFzcz0i Y2xzLTciIGQ9Ik00Mi4zMyw3djhIMzUuMTRWN2g3LjE4bTEtMUgzNC4xNVYxNmg5LjE5VjZaIi8+ PHJlY3QgY2xhc3M9ImNscy02IiB4PSIyNi40NSIgeT0iNi41MyIgd2lkdGg9IjguMTciIGhlaWdo dD0iOSIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTM0LjEzLDd2OEgyNi45NVY3aDcuMTdtMS0x SDI2VjE2aDkuMThWNloiLz48cGF0aCBpZD0iU2hhcGUiIGNsYXNzPSJjbHMtOCIgZD0iTTE0LjA3 LDI3LjE5SDUuNjdhMS40LDEuNCwwLDAsMC0xLjQsMS40djdBMS40LDEuNCwwLDAsMCw1LjY3LDM3 aDguNGExLjQsMS40LDAsMCwwLDEuNC0xLjR2LTdhMS40LDEuNCwwLDAsMC0xLjQtMS40Wm0wLDgu NEg1LjY3di03aDguNFoiLz48cGF0aCBpZD0iU2hhcGUtMiIgZGF0YS1uYW1lPSJTaGFwZSIgY2xh c3M9ImNscy05IiBkPSJNMTMuMzcsMjcuMTl2LTEuNGEzLjUsMy41LDAsMCwwLTcsMHMwLDEuNDIs MCwxLjQySDcuN3MwLTEuNDEsMC0xLjQyYTIuMTcsMi4xNywwLDAsMSw0LjM0LDB2MS40WiIvPjxy ZWN0IGNsYXNzPSJjbHMtMTAiIHg9IjUuNjciIHk9IjI4LjU5IiB3aWR0aD0iOC40IiBoZWlnaHQ9 IjciLz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfbWF0ZXJpYWxpemUuc3ZnIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X21hdGVyaWFsaXplLnN2ZwpuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmIwYjg3NDU3YQotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9tYXRlcmlhbGl6ZS5zdmcKQEAg LTAsMCArMSBAQAorPHN2ZyBpZD0iXzEiIGRhdGEtbmFtZT0iMSIgeG1sbnM9Imh0dHA6Ly93d3cu dzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjQgNjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7 b3BhY2l0eTowLjY7fS5jbHMtMntmaWxsOiNmMGVjYjY7fS5jbHMtM3tmaWxsOiNjMThmMzU7fS5j bHMtNHtmaWxsOiNhZGRmZjM7fS5jbHMtNXtmaWxsOiMyOTgwYjk7fS5jbHMtNntmaWxsOm5vbmU7 c3Ryb2tlOiNjMThmMzU7b3BhY2l0eTowLjg7fS5jbHMtNiwuY2xzLTcsLmNscy04e3N0cm9rZS1s aW5lam9pbjpyb3VuZDt9LmNscy03LC5jbHMtOHtmaWxsOiM1MjhkMTk7c3Ryb2tlOiM1MjhkMTk7 fS5jbHMtOHtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2Utd2lkdGg6MnB4O308L3N0eWxlPjwv ZGVmcz48dGl0bGU+ZXhfbWF0ZXJpYWxpemU8L3RpdGxlPjxnIGNsYXNzPSJjbHMtMSI+PHBhdGgg Y2xhc3M9ImNscy0yIiBkPSJNMTAuMTcsNDkuODhjLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVWMTku ODhIMTZ2MzBaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTUuNDUsMjAuMzh2MjlIMTAuMTdh My4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJ2LTI4aDYuMjht MS0xSDguMTd2MjljMCwxLjY1LjM1LDIsMiwyaDYuMjh2LTMxWiIvPjxwYXRoIGNsYXNzPSJjbHMt MiIgZD0iTTE1Ljk0LDQ5Ljg4di0zMGg3LjI4djI4LjVjMCwxLjM3LS4xMywxLjUtMS41LDEuNVoi Lz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0yMi43MiwyMC4zOHYyOGEzLjI4LDMuMjgsMCwwLDEt LjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xSDE2LjQ0di0yOWg2LjI4bTEtMUgxNS40NHYzMWg2 LjI4YzEuNjUsMCwyLS4zNSwyLTJ2LTI5WiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTguNjcs MTkuODh2LTQuNWMwLTEuMzcuMTMtMS41LDEuNS0xLjVIMTZ2NloiLz48cGF0aCBjbGFzcz0iY2xz LTUiIGQ9Ik0xNS40NSwxNC4zOHY1SDkuMTd2LTRhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4 LDIuMTgsMCwwLDEsLjkyLS4xaDUuMjhtMS0xSDEwLjE3Yy0xLjY1LDAtMiwuMzUtMiwydjVoOC4y OHYtN1oiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xNS45NCwxOS44OHYtNmg1Ljc4YzEuMzcs MCwxLjUuMTMsMS41LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNMjEuNzIsMTQu MzhhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4xLjkydjRIMTYuNDR2 LTVoNS4yOG0wLTFIMTUuNDR2N2g4LjI4di01YzAtMS42NS0uMzUtMi0yLTJaIi8+PGxpbmUgY2xh c3M9ImNscy02IiB4MT0iMTUuNyIgeTE9IjI2LjIzIiB4Mj0iMjMuMTkiIHkyPSIyNi4yMyIvPjxs aW5lIGNsYXNzPSJjbHMtNiIgeDE9IjguNyIgeTE9IjI2LjIzIiB4Mj0iMTUuNDQiIHkyPSIyNi4y MyIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjE1LjciIHkxPSIzMi4yMyIgeDI9IjIzLjE5IiB5 Mj0iMzIuMjMiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI4LjciIHkxPSIzMi4yMyIgeDI9IjE1 LjQ0IiB5Mj0iMzIuMjMiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSIxNS43IiB5MT0iMzguMjMi IHgyPSIyMy4xOSIgeTI9IjM4LjIzIi8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iOC43IiB5MT0i MzguMjMiIHgyPSIxNS40NCIgeTI9IjM4LjIzIi8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMTUu NyIgeTE9IjQ0LjIzIiB4Mj0iMjMuMTkiIHkyPSI0NC4yMyIvPjxsaW5lIGNsYXNzPSJjbHMtNiIg eDE9IjguNyIgeTE9IjQ0LjIzIiB4Mj0iMTUuNDQiIHkyPSI0NC4yMyIvPjwvZz48cGF0aCBjbGFz cz0iY2xzLTIiIGQ9Ik00Mi40NSw0OS44OGMtMS4zNywwLTEuNS0uMTMtMS41LTEuNVYxOS44OGg3 LjI4djMwWiIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTQ3LjczLDIwLjM4djI5SDQyLjQ1YTMu MjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCwwLDEtLjEtLjkydi0yOGg2LjI4bTEt MUg0MC40NXYyOWMwLDEuNjUuMzUsMiwyLDJoNi4yOHYtMzFaIi8+PHBhdGggY2xhc3M9ImNscy0y IiBkPSJNNDguMjIsNDkuODh2LTMwSDU1LjV2MjguNWMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIv PjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTU1LDIwLjM4djI4YTMuMjgsMy4yOCwwLDAsMS0uMDgu OSwyLjE4LDIuMTgsMCwwLDEtLjkyLjFINDguNzJ2LTI5SDU1bTEtMUg0Ny43MnYzMUg1NGMxLjY1 LDAsMi0uMzUsMi0ydi0yOVoiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik00MSwxOS44OHYtNC41 YzAtMS4zNy4xMy0xLjUsMS41LTEuNWg1Ljc4djZaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJN NDcuNzMsMTQuMzh2NUg0MS40NXYtNGEzLjI4LDMuMjgsMCwwLDEsLjA4LS45LDIuMTgsMi4xOCww LDAsMSwuOTItLjFoNS4yOG0xLTFINDIuNDVjLTEuNjUsMC0yLC4zNS0yLDJ2NWg4LjI4di03WiIv PjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTQ4LjIyLDE5Ljg4di02SDU0YzEuMzcsMCwxLjUuMTMs MS41LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNNTQsMTQuMzhhMy4yNSwzLjI1 LDAsMCwxLC45LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4xLjkydjRINDguNzJ2LTVINTRtMC0xSDQ3 LjcydjdINTZ2LTVjMC0xLjY1LS4zNS0yLTItMloiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI0 Ny45OCIgeTE9IjI2LjIzIiB4Mj0iNTUuNDciIHkyPSIyNi4yMyIvPjxsaW5lIGNsYXNzPSJjbHMt NiIgeDE9IjQwLjk4IiB5MT0iMjYuMjMiIHgyPSI0Ny43MiIgeTI9IjI2LjIzIi8+PGxpbmUgY2xh c3M9ImNscy02IiB4MT0iNDcuOTgiIHkxPSIzMi4yMyIgeDI9IjU1LjQ3IiB5Mj0iMzIuMjMiLz48 bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI0MC45OCIgeTE9IjMyLjIzIiB4Mj0iNDcuNzIiIHkyPSIz Mi4yMyIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjQ3Ljk4IiB5MT0iMzguMjMiIHgyPSI1NS40 NyIgeTI9IjM4LjIzIi8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iNDAuOTgiIHkxPSIzOC4yMyIg eDI9IjQ3LjcyIiB5Mj0iMzguMjMiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI0Ny45OCIgeTE9 IjQ0LjIzIiB4Mj0iNTUuNDciIHkyPSI0NC4yMyIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjQw Ljk4IiB5MT0iNDQuMjMiIHgyPSI0Ny43MiIgeTI9IjQ0LjIzIi8+PHBvbHlnb24gY2xhc3M9ImNs cy03IiBwb2ludHM9IjM3LjU1IDMyIDM0LjE3IDI5LjQ3IDM0LjE3IDM0LjUzIDM3LjU1IDMyIi8+ PGxpbmUgY2xhc3M9ImNscy04IiB4MT0iMzMuODkiIHkxPSIzMiIgeDI9IjI2LjQ1IiB5Mj0iMzIi Lz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfbWVyZ2Uuc3ZnIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL0V4cGxhaW4vaW1nL2V4X21lcmdlLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAuLjVmNDQ4NjkzYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9FeHBsYWluL2ltZy9leF9tZXJnZS5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyBpZD0i XzEiIGRhdGEtbmFtZT0iMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3 Qm94PSIwIDAgNjQgNjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDojZDNkNGYzO30uY2xzLTJ7 ZmlsbDojNjY2YmQxO30uY2xzLTN7ZmlsbDpub25lO3N0cm9rZTojNjY2YmQxO30uY2xzLTEwLC5j bHMtMTEsLmNscy0ze3N0cm9rZS1saW5lam9pbjpyb3VuZDt9LmNscy0zLC5jbHMtNntvcGFjaXR5 OjAuODt9LmNscy00LC5jbHMtN3tmaWxsOiNmMGVjYjY7fS5jbHMtNXtmaWxsOiNjMThmMzY7fS5j bHMtN3tzdHJva2U6I2MxOGYzNjtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9LmNscy04e2ZpbGw6I2Fk ZGZmMzt9LmNscy05e2ZpbGw6IzI5ODBiOTt9LmNscy0xMCwuY2xzLTExe2ZpbGw6IzUyOGQxOTtz dHJva2U6IzUyOGQxOTt9LmNscy0xMXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2Utd2lkdGg6 MnB4O308L3N0eWxlPjwvZGVmcz48dGl0bGU+ZXhfbWVyZ2U8L3RpdGxlPjxwYXRoIGNsYXNzPSJj bHMtMSIgZD0iTTkuNSwxNy40OEM4LjEzLDE3LjQ4LDgsMTcuMzYsOCwxNlYxMmMwLTEuMzcuMTMt MS41LDEuNS0xLjVIMTR2N1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xMy41LDExdjZoLTRh My4yNSwzLjI1LDAsMCwxLS45LS4wOGgwQTIuMTgsMi4xOCwwLDAsMSw4LjUsMTZWMTJhMy4yOCwz LjI4LDAsMCwxLC4wOC0uOUEyLjE4LDIuMTgsMCwwLDEsOS41LDExaDRtMS0xaC01Yy0xLjY1LDAt MiwuMzUtMiwydjRjMCwxLjY1LjM1LDIsMiwyaDVWMTBaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBk PSJNMTQsMTcuNDh2LTdIMjUuMTljMS4zNywwLDEuNS4xMywxLjUsMS41djRjMCwxLjM3LS4xMywx LjUtMS41LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yNS4xOSwxMWEzLjI1LDMuMjUs MCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2NGEzLjI4LDMuMjgsMCwwLDEtLjA4 LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xSDE0LjVWMTFIMjUuMTltMC0xSDEzLjV2OEgyNS4xOWMx LjY1LDAsMi0uMzUsMi0yVjEyYzAtMS42NS0uMzUtMi0yLTJaIi8+PGxpbmUgY2xhc3M9ImNscy0z IiB4MT0iMjAuMjciIHkxPSIxNy4xIiB4Mj0iMjAuMjciIHkyPSIxMC44NiIvPjxwYXRoIGNsYXNz PSJjbHMtNCIgZD0iTTMyLjg5LDUzLjVjLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVWMjcuNTZINTZW NTJjMCwxLjM3LS4xMywxLjUtMS41LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik01NS40 OSwyOC4wNlY1MmEzLjI5LDMuMjksMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xSDMy Ljg5YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCwwLDEtLjEtLjkyVjI4LjA2 aDIzLjZtMS0xSDMwLjg5VjUyYzAsMS42NS4zNSwyLDIsMmgyMS42YzEuNjUsMCwyLS4zNSwyLTJW MjcuMDZaIi8+PGcgY2xhc3M9ImNscy02Ij48bGluZSBjbGFzcz0iY2xzLTciIHgxPSIzOS41OCIg eTE9IjUyLjk5IiB4Mj0iMzkuNTgiIHkyPSIyOCIvPjxsaW5lIGNsYXNzPSJjbHMtNyIgeDE9IjQ3 LjgiIHkxPSI1Mi45OSIgeDI9IjQ3LjgiIHkyPSIyOCIvPjxsaW5lIGNsYXNzPSJjbHMtNyIgeDE9 IjMxLjg4IiB5MT0iMzMuOTkiIHgyPSI1NS40NyIgeTI9IjMzLjk5Ii8+PGxpbmUgY2xhc3M9ImNs cy03IiB4MT0iMzEuODgiIHkxPSI0MC4zNiIgeDI9IjU1LjQ3IiB5Mj0iNDAuMzYiLz48bGluZSBj bGFzcz0iY2xzLTciIHgxPSIzMS44OCIgeTE9IjQ2LjczIiB4Mj0iNTUuNDciIHkyPSI0Ni43MyIv PjwvZz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik00Ny44MSwyNy41NXYtNkg1NC41YzEuMzcsMCwx LjUuMTMsMS41LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9ImNscy05IiBkPSJNNTQuNSwyMi4wNWEz LjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2NEg0OC4zMXYtNUg1 NC41bTAtMUg0Ny4zMXY3SDU2LjV2LTVjMC0xLjY1LS4zNS0yLTItMloiLz48cGF0aCBjbGFzcz0i Y2xzLTgiIGQ9Ik0zMS4zOSwyNy41NXYtNC41YzAtMS4zNy4xMy0xLjUsMS41LTEuNWg2LjY5djZa Ii8+PHBhdGggY2xhc3M9ImNscy05IiBkPSJNMzkuMDgsMjIuMDV2NUgzMS44OXYtNGEzLjI4LDMu MjgsMCwwLDEsLjA4LS45LDIuMTgsMi4xOCwwLDAsMSwuOTItLjFoNi4xOW0xLTFIMzIuODljLTEu NjUsMC0yLC4zNS0yLDJ2NWg5LjE5di03WiIvPjxyZWN0IGNsYXNzPSJjbHMtOCIgeD0iMzkuNiIg eT0iMjEuNTUiIHdpZHRoPSI4LjE5IiBoZWlnaHQ9IjYiLz48cGF0aCBjbGFzcz0iY2xzLTkiIGQ9 Ik00Ny4yOSwyMi4wNXY1SDQwLjF2LTVoNy4xOG0xLTFIMzkuMTF2N2g5LjE5di03WiIvPjxwb2x5 Z29uIGNsYXNzPSJjbHMtMTAiIHBvaW50cz0iMjcuODcgNDQgMjQuNDkgNDEuNDcgMjQuNDkgNDYu NTMgMjcuODcgNDQiLz48bGluZSBjbGFzcz0iY2xzLTExIiB4MT0iMjQuMjEiIHkxPSI0NCIgeDI9 IjE3LjEiIHkyPSI0NCIvPjxsaW5lIGNsYXNzPSJjbHMtMTEiIHgxPSIxNi45NiIgeTE9IjIxLjU2 IiB4Mj0iMTYuOTYiIHkyPSI0NCIvPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9tZXJnZV9h bnRpX2pvaW4uc3ZnIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X21lcmdl X2FudGlfam9pbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4yZTdh MDBkNjUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9p bWcvZXhfbWVyZ2VfYW50aV9qb2luLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIGlkPSJfMSIgZGF0 YS1uYW1lPSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAg MCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtmaWxsOiNkM2Q0ZjM7fS5jbHMtMntmaWxsOiM2 NjZiZDE7fS5jbHMtMTAsLmNscy0xMywuY2xzLTN7ZmlsbDpub25lO30uY2xzLTN7c3Ryb2tlOiM2 NjZiZDE7fS5jbHMtMTAsLmNscy0zLC5jbHMtNCwuY2xzLTV7c3Ryb2tlLWxpbmVqb2luOnJvdW5k O30uY2xzLTEwLC5jbHMtM3tvcGFjaXR5OjAuODt9LmNscy00LC5jbHMtNXtmaWxsOiM1MjhkMTk7 c3Ryb2tlOiM1MjhkMTk7fS5jbHMtNXtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2Utd2lkdGg6 MnB4O30uY2xzLTZ7ZmlsbDojZjBlY2I2O30uY2xzLTd7ZmlsbDojYzE4ZjM1O30uY2xzLTh7Zmls bDojYWRkZmYzO30uY2xzLTl7ZmlsbDojMjk4MGI5O30uY2xzLTEwe3N0cm9rZTojYzE4ZjM1O30u Y2xzLTExe2ZpbGw6I2RlZjRmZDt9LmNscy0xMntmaWxsOiNjMDA7fS5jbHMtMTN7c3Ryb2tlOiNj MDA7c3Ryb2tlLW1pdGVybGltaXQ6MTA7c3Ryb2tlLXdpZHRoOjEuNXB4O308L3N0eWxlPjwvZGVm cz48dGl0bGU+ZXhfbWVyZ2VfYW50aV9qb2luPC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9 Ik0xMC4xMiwxOC41OWMtMS4zNywwLTEuNS0uMTMtMS41LTEuNXYtNGMwLTEuMzcuMTMtMS41LDEu NS0xLjVoNC41djdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTQuMTIsMTIuMTF2NmgtNGEz LjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xNywyLjE3LDAsMCwxLS4xLS45MnYtNGEzLjI5LDMu MjksMCwwLDEsLjA4LS45LDIuMTgsMi4xOCwwLDAsMSwuOTItLjFoNG0xLTFoLTVjLTEuNjUsMC0y LC4zNS0yLDJ2NGMwLDEuNjUuMzUsMiwyLDJoNXYtOFoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9 Ik0xNC42MywxOC41OXYtN0gyNS44MWMxLjM3LDAsMS41LjEzLDEuNSwxLjV2NGMwLDEuMzctLjEz LDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTI1LjgxLDEyLjExYTMuMjUs My4yNSwwLDAsMSwuOS4wOGgwYTIuMTgsMi4xOCwwLDAsMSwuMS45MnY0YTMuMjgsMy4yOCwwLDAs MS0uMDguOSwyLjE4LDIuMTgsMCwwLDEtLjkyLjFIMTUuMTN2LTZIMjUuODFtMC0xSDE0LjEzdjhI MjUuODFjMS42NSwwLDItLjM1LDItMnYtNGMwLTEuNjUtLjM1LTItMi0yWiIvPjxsaW5lIGNsYXNz PSJjbHMtMyIgeDE9IjIwLjkiIHkxPSIxOC4yMSIgeDI9IjIwLjkiIHkyPSIxMS45NyIvPjxwb2x5 Z29uIGNsYXNzPSJjbHMtNCIgcG9pbnRzPSIyOC40OSAzOC4xMSAyNS4xMSAzNS41OCAyNS4xMSA0 MC42NCAyOC40OSAzOC4xMSIvPjxsaW5lIGNsYXNzPSJjbHMtNSIgeDE9IjI0LjgzIiB5MT0iMzgu MTEiIHgyPSIxNy43MyIgeTI9IjM4LjExIi8+PGxpbmUgY2xhc3M9ImNscy01IiB4MT0iMTcuNTgi IHkxPSIyMi42NyIgeDI9IjE3LjU4IiB5Mj0iMzguMTEiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9 Ik0zNC4yNiw1Mi4xNmMtMS4zNywwLTEuNS0uMTMtMS41LTEuNVYyOC4xNkg0MHYyNFoiLz48cGF0 aCBjbGFzcz0iY2xzLTciIGQ9Ik0zOS41NCwyOC42NnYyM0gzNC4yNmEzLjI1LDMuMjUsMCwwLDEt LjktLjA4aDBhMi4xOCwyLjE4LDAsMCwxLS4xLS45MnYtMjJoNi4yOG0xLTFIMzIuMjZ2MjNjMCwx LjY1LjM1LDIsMiwyaDYuMjh2LTI1WiIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTMyLjc2LDI4 LjE2di00LjVjMC0xLjM3LjEzLTEuNSwxLjUtMS41SDQwdjZaIi8+PHBhdGggY2xhc3M9ImNscy05 IiBkPSJNMzkuNTQsMjIuNjZ2NUgzMy4yNnYtNGEzLjI4LDMuMjgsMCwwLDEsLjA4LS45LDIuMTgs Mi4xOCwwLDAsMSwuOTItLjFoNS4yOG0xLTFIMzQuMjZjLTEuNjUsMC0yLC4zNS0yLDJ2NWg4LjI4 di03WiIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSIzMi43OSIgeTE9IjM0LjUxIiB4Mj0iMzku NTMiIHkyPSIzNC41MSIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSIzMi43OSIgeTE9IjQwLjUx IiB4Mj0iMzkuNTMiIHkyPSI0MC41MSIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSIzMi43OSIg eTE9IjQ2LjUxIiB4Mj0iMzkuNTMiIHkyPSI0Ni41MSIvPjxyZWN0IGNsYXNzPSJjbHMtNiIgeD0i NDAuMDYiIHk9IjI4LjE2IiB3aWR0aD0iNy4yOCIgaGVpZ2h0PSIyNCIvPjxwYXRoIGNsYXNzPSJj bHMtNyIgZD0iTTQ2Ljg0LDI4LjY2djIzSDQwLjU2di0yM2g2LjI4bTEtMUgzOS41NnYyNWg4LjI4 di0yNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00Ny4zMiw1Mi4xNnYtMjRoNy4yOHYyMi41 YzAsMS4zNy0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTQuMTEs MjguNjZ2MjJhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUg0Ny44 MnYtMjNoNi4yOG0xLTFINDYuODJ2MjVoNi4yOGMxLjY1LDAsMi0uMzUsMi0ydi0yM1oiLz48cmVj dCBjbGFzcz0iY2xzLTgiIHg9IjQwLjA2IiB5PSIyMi4xNiIgd2lkdGg9IjcuMjgiIGhlaWdodD0i NiIvPjxwYXRoIGNsYXNzPSJjbHMtOSIgZD0iTTQ2Ljg0LDIyLjY2djVINDAuNTZ2LTVoNi4yOG0x LTFIMzkuNTZ2N2g4LjI4di03WiIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTQ3LjMyLDI4LjE2 di02aDUuNzhjMS4zNywwLDEuNS4xMywxLjUsMS41djQuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTki IGQ9Ik01My4xMSwyMi42NmEzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE3LDIuMTcsMCwwLDEs LjEuOTJ2NEg0Ny44MnYtNWg1LjI4bTAtMUg0Ni44M3Y3aDguMjh2LTVjMC0xLjY1LS4zNS0yLTIt MloiLz48bGluZSBjbGFzcz0iY2xzLTMiIHgxPSI0Ny4wOSIgeTE9IjM0LjUxIiB4Mj0iNTQuNTgi IHkyPSIzNC41MSIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSI0MC4wOSIgeTE9IjM0LjUxIiB4 Mj0iNDYuODIiIHkyPSIzNC41MSIvPjxsaW5lIGNsYXNzPSJjbHMtMyIgeDE9IjQ3LjA5IiB5MT0i NDAuNTEiIHgyPSI1NC41OCIgeTI9IjQwLjUxIi8+PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9IjQw LjA5IiB5MT0iNDAuNTEiIHgyPSI0Ni44MiIgeTI9IjQwLjUxIi8+PGxpbmUgY2xhc3M9ImNscy0z IiB4MT0iNDcuMDkiIHkxPSI0Ni41MSIgeDI9IjU0LjU4IiB5Mj0iNDYuNTEiLz48bGluZSBjbGFz cz0iY2xzLTEwIiB4MT0iNDAuMDkiIHkxPSI0Ni41MSIgeDI9IjQ2LjgyIiB5Mj0iNDYuNTEiLz48 Y2lyY2xlIGNsYXNzPSJjbHMtMTEiIGN4PSI1MC44MyIgY3k9IjQwLjQ2IiByPSI0LjI5Ii8+PHBh dGggY2xhc3M9ImNscy0xMiIgZD0iTTUwLjgzLDM2LjkyYTMuNTQsMy41NCwwLDEsMS0zLjU0LDMu NTQsMy41NSwzLjU1LDAsMCwxLDMuNTQtMy41NG0wLTEuNWE1LDUsMCwxLDAsNSw1LDUsNSwwLDAs MC01LTVaIi8+PGxpbmUgY2xhc3M9ImNscy0xMyIgeDE9IjQ3LjU1IiB5MT0iNDIuNzMiIHgyPSI1 NC4wNiIgeTI9IjM4Ii8+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X21lcmdlX2FwcGVuZC5z dmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfbWVyZ2VfYXBwZW5kLnN2 ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjU0MGY4YTk2OQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9tZXJnZV9h cHBlbmQuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgaWQ9Il8xIiBkYXRhLW5hbWU9IjEiIHhtbG5z PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDY0IDY0Ij48ZGVmcz48 c3R5bGU+LmNscy0xLC5jbHMtN3tmaWxsOiMzNDQ5NWU7fS5jbHMtMXtzdHJva2U6IzUyOGQxOTtz dHJva2UtbWl0ZXJsaW1pdDoxMDt9LmNscy0ye2ZpbGw6I2YwZWNiNjt9LmNscy0ze2ZpbGw6I2Mx OGYzNTt9LmNscy00e2ZpbGw6I2FkZGZmMzt9LmNscy01e2ZpbGw6IzI5ODBiOTt9LmNscy0xMCwu Y2xzLTZ7ZmlsbDpub25lO3N0cm9rZS1saW5lam9pbjpyb3VuZDtvcGFjaXR5OjAuODt9LmNscy02 e3N0cm9rZTojYzE4ZjM1O30uY2xzLTh7ZmlsbDojZDNkNGYzO30uY2xzLTl7ZmlsbDojNjY2YmQx O30uY2xzLTEwe3N0cm9rZTojNjY2YmQxO308L3N0eWxlPjwvZGVmcz48dGl0bGU+ZXhfbWVyZ2Vf YXBwZW5kPC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0yOC4zMiw0MS4zNmE0LjQyLDQu NDIsMCwwLDAsMi4wNS0uNTEsMi44MSwyLjgxLDAsMCwwLDEuMDYtMS4wOCwzLjU5LDMuNTksMCww LDAsLjQtMS40cS4wNi0uNzUuMDYtMS40NnYuMzVjMC0uNjgsMC0xLjI1LDAtMS43MmE5LjI4LDku MjgsMCwwLDEsLjExLTEuMiwyLjc2LDIuNzYsMCwwLDEsLjI2LS44MywyLjM3LDIuMzcsMCwwLDEs LjQ0LS42LDIuNTMsMi41MywwLDAsMSwuNjItLjQ2LDQsNCwwLDAsMSwuNjQtLjI3LDMuNSwzLjUs MCwwLDEsLjYtLjEzYy4xOSwwLC4xOS0uMSwwLS4xMmEzLjUyLDMuNTIsMCwwLDEtLjYtLjEzLDMu NjUsMy42NSwwLDAsMS0uNjQtLjI3LDIuNTIsMi41MiwwLDAsMS0uNjItLjQ2LDIuNDEsMi40MSww LDAsMS0uNDQtLjYsMi43NywyLjc3LDAsMCwxLS4yNi0uODMsOS4zMSw5LjMxLDAsMCwxLS4xMS0x LjJxMC0uNzEsMC0xLjczdi4zNmMwLS40NywwLTEtLjA2LTEuNDZhMy41OCwzLjU4LDAsMCwwLS40 LTEuNCwyLjgyLDIuODIsMCwwLDAtMS4wNi0xLjA4LDQuNDcsNC40NywwLDAsMC0yLjA1LS41MVYy Mi4ybC41MywwYTQuMTEsNC4xMSwwLDAsMSwuNjcuMTEsNS4xMiw1LjEyLDAsMCwxLC43Mi4yMywy Ljg5LDIuODksMCwwLDEsLjcuNDEsMy4zNCwzLjM0LDAsMCwxLC44My45QTMuNjYsMy42NiwwLDAs MSwzMi4yLDI1YTcsNywwLDAsMSwuMTYsMS4yOWMwLC40NywwLDEuODgsMCwxLjg4YTcuOSw3Ljks MCwwLDAsLjEyLDEuNUEyLjM3LDIuMzcsMCwwLDAsMzMsMzAuNjlhMi42NSwyLjY1LDAsMCwwLDEs LjczLjY5LjY5LDAsMCwxLDAsMS4xNywyLjY2LDIuNjYsMCwwLDAtMSwuNzMsMi4zOSwyLjM5LDAs MCwwLS40NywxLjA2LDcuOSw3LjksMCwwLDAtLjEyLDEuNXMtLjA5LDIuNzgtLjE4LDMuMTdhMy42 NSwzLjY1LDAsMCwxLS40MywxLjA3LDMuMzEsMy4zMSwwLDAsMS0uODMuOSwyLjksMi45LDAsMCwx LS43LjQxLDUuMzksNS4zOSwwLDAsMS0uNzIuMjMsNC4zNCw0LjM0LDAsMCwxLS42Ny4xMWwtLjUz LDBaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTEuMzksNTMuNDZjLTEuMzcsMC0xLjUtLjEz LTEuNS0xLjVWNDAuNDZoNy4yOHYxM1oiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xNi42Nyw0 MVY1M0gxMS4zOWEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xOCwyLjE4LDAsMCwxLS4xLS45 MlY0MWg2LjI4bTEtMUg5LjM5VjUyYzAsMS42NS4zNSwyLDIsMmg2LjI4VjQwWiIvPjxwYXRoIGNs YXNzPSJjbHMtMiIgZD0iTTE3LjE2LDUzLjQ2di0xM2g3LjI4VjUyYzAsMS4zNy0uMTMsMS41LTEu NSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjMuOTQsNDFWNTJhMy4yOCwzLjI4LDAs MCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUgxNy42NlY0MWg2LjI4bTEtMUgxNi42NlY1 NGg2LjI4YzEuNjUsMCwyLS4zNSwyLTJWNDBaIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNOS44 OSw0MC40NlYzNmMwLTEuMzcuMTMtMS41LDEuNS0xLjVoNS43OHY2WiIvPjxwYXRoIGNsYXNzPSJj bHMtNSIgZD0iTTE2LjY3LDM1djVIMTAuMzlWMzZhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4 LDIuMTgsMCwwLDEsLjkyLS4xaDUuMjhtMS0xSDExLjM5Yy0xLjY1LDAtMiwuMzUtMiwydjVoOC4y OFYzNFoiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xNy4xNiw0MC40NnYtNmg1Ljc4YzEuMzcs MCwxLjUuMTMsMS41LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNMjIuOTQsMzVh My4yNSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4xLjkydjRIMTcuNjZWMzVo NS4yOG0wLTFIMTYuNjZ2N2g4LjI4VjM2YzAtMS42NS0uMzUtMi0yLTJaIi8+PGxpbmUgY2xhc3M9 ImNscy02IiB4MT0iMTYuOTIiIHkxPSI0Ni44MSIgeDI9IjI0LjQxIiB5Mj0iNDYuODEiLz48bGlu ZSBjbGFzcz0iY2xzLTYiIHgxPSI5LjkyIiB5MT0iNDYuODEiIHgyPSIxNi42NiIgeTI9IjQ2Ljgx Ii8+PHBhdGggY2xhc3M9ImNscy03IiBkPSJNMTMuNzcsNDJ2My4zNkgxM1Y0MloiLz48cGF0aCBj bGFzcz0iY2xzLTciIGQ9Ik0xMi44OSw0OC40N3YzLjM2aC0uNzdWNDguNDdaIi8+PHBhdGggY2xh c3M9ImNscy03IiBkPSJNMTQuOTUsNDguNDd2My4zNmgtLjc3VjQ4LjQ3WiIvPjxwYXRoIGNsYXNz PSJjbHMtOCIgZD0iTTExLjM5LDI5LjMxYy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjE2LjMxaDcu Mjh2MTNaIi8+PHBhdGggY2xhc3M9ImNscy05IiBkPSJNMTYuNjcsMTYuODF2MTJIMTEuMzlhMy4y NSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJ2LTExaDYuMjhtMS0x SDkuMzl2MTJjMCwxLjY1LjM1LDIsMiwyaDYuMjh2LTE0WiIvPjxwYXRoIGNsYXNzPSJjbHMtOCIg ZD0iTTE3LjE2LDI5LjMxdi0xM2g3LjI4djExLjVjMCwxLjM3LS4xMywxLjUtMS41LDEuNVoiLz48 cGF0aCBjbGFzcz0iY2xzLTkiIGQ9Ik0yMy45NCwxNi44MXYxMWEzLjI4LDMuMjgsMCwwLDEtLjA4 LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xSDE3LjY2di0xMmg2LjI4bTEtMUgxNi42NnYxNGg2LjI4 YzEuNjUsMCwyLS4zNSwyLTJ2LTEyWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTkuODksMTYu MzF2LTQuNWMwLTEuMzcuMTMtMS41LDEuNS0xLjVoNS43OHY2WiIvPjxwYXRoIGNsYXNzPSJjbHMt NSIgZD0iTTE2LjY3LDEwLjgxdjVIMTAuMzl2LTRhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4 LDIuMTgsMCwwLDEsLjkyLS4xaDUuMjhtMS0xSDExLjM5Yy0xLjY1LDAtMiwuMzUtMiwydjVoOC4y OHYtN1oiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xNy4xNiwxNi4zMXYtNmg1Ljc4YzEuMzcs MCwxLjUuMTMsMS41LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNMjIuOTQsMTAu ODFhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4xLjkydjRIMTcuNjZ2 LTVoNS4yOG0wLTFIMTYuNjZ2N2g4LjI4di01YzAtMS42NS0uMzUtMi0yLTJaIi8+PGxpbmUgY2xh c3M9ImNscy0xMCIgeDE9IjE2LjkyIiB5MT0iMjIuNjYiIHgyPSIyNC40MSIgeTI9IjIyLjY2Ii8+ PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9IjkuOTIiIHkxPSIyMi42NiIgeDI9IjE2LjY2IiB5Mj0i MjIuNjYiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik0xMy43NywxNy43OXYzLjM2SDEzVjE3Ljc5 WiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTEyLjg5LDI0LjE3djMuMzZoLS43N1YyNC4xN1oi Lz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik0xNC45NSwyNC4xN3YzLjM2aC0uNzdWMjQuMTdaIi8+ PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNDAuNTQsNDcuNzZjLTEuMzcsMC0xLjUtLjEzLTEuNS0x LjV2LTQuOGg3LjI4djYuM1oiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik00NS44Miw0MnY1LjNI NDAuNTRhMy4yNiwzLjI2LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJWNDJo Ni4yOG0xLTFIMzguNTR2NS4zYzAsMS42NS4zNSwyLDIsMmg2LjI4VjQxWiIvPjxwYXRoIGNsYXNz PSJjbHMtMiIgZD0iTTQ2LjMxLDQ3Ljc2di02LjNoNy4yOHY0LjhjMCwxLjM3LS4xMywxLjUtMS41 LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik01My4wOSw0MnY0LjNhMy4yOCwzLjI4LDAs MCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUg0Ni44MVY0Mmg2LjI4bTEtMUg0NS44MXY3 LjNoNi4yOGMxLjY1LDAsMi0uMzUsMi0yVjQxWiIvPjxyZWN0IGNsYXNzPSJjbHMtOCIgeD0iMzku MDQiIHk9IjM1LjE2IiB3aWR0aD0iNy4yOCIgaGVpZ2h0PSI2LjMiLz48cGF0aCBjbGFzcz0iY2xz LTkiIGQ9Ik00NS44MiwzNS42NlY0MUgzOS41NHYtNS4zaDYuMjhtMS0xSDM4LjU0VjQyaDguMjh2 LTcuM1oiLz48cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjQ2LjMxIiB5PSIzNS4xNiIgd2lkdGg9Ijcu MjgiIGhlaWdodD0iNi4zIi8+PHBhdGggY2xhc3M9ImNscy05IiBkPSJNNTMuMDksMzUuNjZWNDFI NDYuODF2LTUuM2g2LjI4bTEtMUg0NS44MVY0Mmg4LjI4di03LjNaIi8+PHJlY3QgY2xhc3M9ImNs cy0yIiB4PSIzOS4wNCIgeT0iMjguODQiIHdpZHRoPSI3LjI4IiBoZWlnaHQ9IjYuMyIvPjxwYXRo IGNsYXNzPSJjbHMtMyIgZD0iTTQ1LjgyLDI5LjM0djUuM0gzOS41NHYtNS4zaDYuMjhtMS0xSDM4 LjU0djcuM2g4LjI4di03LjNaIi8+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSI0Ni4zMSIgeT0iMjgu ODQiIHdpZHRoPSI3LjI4IiBoZWlnaHQ9IjYuMyIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTUz LjA5LDI5LjM0djUuM0g0Ni44MXYtNS4zaDYuMjhtMS0xSDQ1LjgxdjcuM2g4LjI4di03LjNaIi8+ PHJlY3QgY2xhc3M9ImNscy04IiB4PSIzOS4wNCIgeT0iMjIuNTUiIHdpZHRoPSI3LjI4IiBoZWln aHQ9IjYuMyIvPjxwYXRoIGNsYXNzPSJjbHMtOSIgZD0iTTQ1LjgyLDIzdjUuM0gzOS41NFYyM2g2 LjI4bTEtMUgzOC41NHY3LjNoOC4yOFYyMloiLz48cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjQ2LjMx IiB5PSIyMi41NSIgd2lkdGg9IjcuMjgiIGhlaWdodD0iNi4zIi8+PHBhdGggY2xhc3M9ImNscy05 IiBkPSJNNTMuMDksMjN2NS4zSDQ2LjgxVjIzaDYuMjhtMS0xSDQ1LjgxdjcuM2g4LjI4VjIyWiIv PjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTM5LDIyLjU0di00LjhjMC0xLjM3LjEzLTEuNSwxLjUt MS41aDUuNzh2Ni4zWiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTQ1LjgyLDE2Ljc0VjIySDM5 LjU0di00LjNhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDUu MjhtMS0xSDQwLjU0Yy0xLjY1LDAtMiwuMzUtMiwyVjIzaDguMjh2LTcuM1oiLz48cGF0aCBjbGFz cz0iY2xzLTQiIGQ9Ik00Ni4zMSwyMi41NHYtNi4zaDUuNzhjMS4zNywwLDEuNS4xMywxLjUsMS41 djQuOFoiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik01Mi4wOSwxNi43NGEzLjI1LDMuMjUsMCww LDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJWMjJINDYuODF2LTUuM2g1LjI4bTAtMUg0 NS44MVYyM2g4LjI4di01LjNjMC0xLjY1LS4zNS0yLTItMloiLz48cGF0aCBjbGFzcz0iY2xzLTci IGQ9Ik00MywyNC4xMnYzLjM2aC0uNzdWMjQuMTJaIi8+PHBhdGggY2xhc3M9ImNscy03IiBkPSJN NDMsMzAuMzN2My4zNmgtLjc3VjMwLjMzWiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTQyLjE1 LDQzdjMuMzZoLS43N1Y0M1oiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik00NC4yMSw0M3YzLjM2 aC0uNzdWNDNaIi8+PHBhdGggY2xhc3M9ImNscy03IiBkPSJNNDIuMTUsMzYuNzh2My4zNmgtLjc3 VjM2Ljc4WiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTQ0LjIxLDM2Ljc4djMuMzZoLS43N1Yz Ni43OFoiLz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfbWVyZ2Vfc2VtaV9qb2luLnN2ZyBi L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9tZXJnZV9zZW1pX2pvaW4uc3Zn Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNjcyY2Q0ZTVhCi0tLSAvZGV2 L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X21lcmdlX3Nl bWlfam9pbi5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyBpZD0iXzEiIGRhdGEtbmFtZT0iMSIgeG1s bnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjQgNjQiPjxkZWZz PjxzdHlsZT4uY2xzLTF7ZmlsbDojZDNkNGYzO30uY2xzLTJ7ZmlsbDojNjY2YmQxO30uY2xzLTEw LC5jbHMtM3tmaWxsOm5vbmU7b3BhY2l0eTowLjg7fS5jbHMtM3tzdHJva2U6IzY2NmJkMTt9LmNs cy0xMCwuY2xzLTMsLmNscy00LC5jbHMtNXtzdHJva2UtbGluZWpvaW46cm91bmQ7fS5jbHMtNCwu Y2xzLTV7ZmlsbDojNTI4ZDE5O3N0cm9rZTojNTI4ZDE5O30uY2xzLTV7c3Ryb2tlLWxpbmVjYXA6 cm91bmQ7c3Ryb2tlLXdpZHRoOjJweDt9LmNscy02e2ZpbGw6I2YwZWNiNjt9LmNscy03e2ZpbGw6 I2MxOGYzNTt9LmNscy04e2ZpbGw6I2FkZGZmMzt9LmNscy05e2ZpbGw6IzI5ODBiOTt9LmNscy0x MHtzdHJva2U6I2MxOGYzNTt9LmNscy0xMXtvcGFjaXR5OjAuNjt9PC9zdHlsZT48L2RlZnM+PHRp dGxlPmV4X21lcmdlX3NlbWlfam9pbjwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTAu NTEsMTguMThjLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjV2LTRjMC0xLjM3LjEzLTEuNSwxLjUtMS41 SDE1djdaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMTQuNTEsMTEuNjl2NmgtNGEzLjI2LDMu MjYsMCwwLDEtLjktLjA4aDBhMi4xOCwyLjE4LDAsMCwxLS4xLS45MnYtNGEzLjI4LDMuMjgsMCww LDEsLjA4LS45LDIuMTgsMi4xOCwwLDAsMSwuOTItLjFoNG0xLTFoLTVjLTEuNjUsMC0yLC4zNS0y LDJ2NGMwLDEuNjUuMzUsMiwyLDJoNXYtOFoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNSwx OC4xOHYtN0gyNi4yYzEuMzcsMCwxLjUuMTMsMS41LDEuNXY0YzAsMS4zNy0uMTMsMS41LTEuNSwx LjVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjYuMiwxMS42OWEzLjI1LDMuMjUsMCwwLDEs LjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2NGEzLjI5LDMuMjksMCwwLDEtLjA4LjksMi4x OCwyLjE4LDAsMCwxLS45Mi4xSDE1LjUxdi02SDI2LjJtMC0xSDE0LjUxdjhIMjYuMmMxLjY1LDAs Mi0uMzUsMi0ydi00YzAtMS42NS0uMzUtMi0yLTJaIi8+PGxpbmUgY2xhc3M9ImNscy0zIiB4MT0i MjEuMjgiIHkxPSIxNy43OSIgeDI9IjIxLjI4IiB5Mj0iMTEuNTUiLz48cG9seWdvbiBjbGFzcz0i Y2xzLTQiIHBvaW50cz0iMjguODggMzcuNjkgMjUuNSAzNS4xNiAyNS41IDQwLjIyIDI4Ljg4IDM3 LjY5Ii8+PGxpbmUgY2xhc3M9ImNscy01IiB4MT0iMjUuMjEiIHkxPSIzNy42OSIgeDI9IjE4LjEx IiB5Mj0iMzcuNjkiLz48bGluZSBjbGFzcz0iY2xzLTUiIHgxPSIxNy45NyIgeTE9IjIyLjI1IiB4 Mj0iMTcuOTciIHkyPSIzNy42OSIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTM0LjY0LDUyLjU3 Yy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjI4LjU3aDcuMjh2MjRaIi8+PHBhdGggY2xhc3M9ImNs cy03IiBkPSJNMzkuOTIsMjkuMDd2MjNIMzQuNjRhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIu MTgsMi4xOCwwLDAsMS0uMS0uOTJ2LTIyaDYuMjhtMS0xSDMyLjY0djIzYzAsMS42NS4zNSwyLDIs Mmg2LjI4di0yNVoiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik0zMy4xNCwyOC41N3YtNC41YzAt MS4zNy4xMy0xLjUsMS41LTEuNWg1Ljc4djZaIi8+PHBhdGggY2xhc3M9ImNscy05IiBkPSJNMzku OTIsMjMuMDd2NUgzMy42NHYtNGEzLjI4LDMuMjgsMCwwLDEsLjA4LS45LDIuMTgsMi4xOCwwLDAs MSwuOTItLjFoNS4yOG0xLTFIMzQuNjRjLTEuNjUsMC0yLC4zNS0yLDJ2NWg4LjI4di03WiIvPjxs aW5lIGNsYXNzPSJjbHMtMTAiIHgxPSIzMy4xNyIgeTE9IjM0LjkyIiB4Mj0iMzkuOTEiIHkyPSIz NC45MiIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSIzMy4xNyIgeTE9IjQwLjkyIiB4Mj0iMzku OTEiIHkyPSI0MC45MiIvPjxsaW5lIGNsYXNzPSJjbHMtMTAiIHgxPSIzMy4xNyIgeTE9IjQ2Ljky IiB4Mj0iMzkuOTEiIHkyPSI0Ni45MiIvPjxnIGNsYXNzPSJjbHMtMTEiPjxyZWN0IGNsYXNzPSJj bHMtNiIgeD0iNDAuNDQiIHk9IjI4LjU3IiB3aWR0aD0iNy4yOCIgaGVpZ2h0PSIyNCIvPjxwYXRo IGNsYXNzPSJjbHMtNyIgZD0iTTQ3LjIyLDI5LjA3djIzSDQwLjk0di0yM2g2LjI4bTEtMUgzOS45 NHYyNWg4LjI4di0yNVoiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00Ny43MSw1Mi41N3YtMjRI NTV2MjIuNWMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0i TTU0LjQ5LDI5LjA3djIyYTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIuMTgsMCwwLDEtLjky LjFINDguMjF2LTIzaDYuMjhtMS0xSDQ3LjIxdjI1aDYuMjhjMS42NSwwLDItLjM1LDItMnYtMjNa Ii8+PHJlY3QgY2xhc3M9ImNscy04IiB4PSI0MC40NCIgeT0iMjIuNTciIHdpZHRoPSI3LjI4IiBo ZWlnaHQ9IjYiLz48cGF0aCBjbGFzcz0iY2xzLTkiIGQ9Ik00Ny4yMiwyMy4wN3Y1SDQwLjk0di01 aDYuMjhtMS0xSDM5Ljk0djdoOC4yOHYtN1oiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik00Ny43 MSwyOC41N3YtNmg1Ljc4YzEuMzcsMCwxLjUuMTMsMS41LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9 ImNscy05IiBkPSJNNTMuNDksMjMuMDdhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xOCwyLjE4 LDAsMCwxLC4xLjkydjRINDguMjF2LTVoNS4yOG0wLTFINDcuMjF2N2g4LjI4di01YzAtMS42NS0u MzUtMi0yLTJaIi8+PGxpbmUgY2xhc3M9ImNscy0zIiB4MT0iNDcuNDciIHkxPSIzNC45MiIgeDI9 IjU0Ljk2IiB5Mj0iMzQuOTIiLz48bGluZSBjbGFzcz0iY2xzLTEwIiB4MT0iNDAuNDciIHkxPSIz NC45MiIgeDI9IjQ3LjIxIiB5Mj0iMzQuOTIiLz48bGluZSBjbGFzcz0iY2xzLTMiIHgxPSI0Ny40 NyIgeTE9IjQwLjkyIiB4Mj0iNTQuOTYiIHkyPSI0MC45MiIvPjxsaW5lIGNsYXNzPSJjbHMtMTAi IHgxPSI0MC40NyIgeTE9IjQwLjkyIiB4Mj0iNDcuMjEiIHkyPSI0MC45MiIvPjxsaW5lIGNsYXNz PSJjbHMtMyIgeDE9IjQ3LjQ3IiB5MT0iNDYuOTIiIHgyPSI1NC45NiIgeTI9IjQ2LjkyIi8+PGxp bmUgY2xhc3M9ImNscy0xMCIgeDE9IjQwLjQ3IiB5MT0iNDYuOTIiIHgyPSI0Ny4yMSIgeTI9IjQ2 LjkyIi8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9uYW1lZF90dXBsZXN0b3JlX3Nj YW4uc3ZnIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X25hbWVkX3R1cGxl c3RvcmVfc2Nhbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4zZDBm YTU1ZmYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9p bWcvZXhfbmFtZWRfdHVwbGVzdG9yZV9zY2FuLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIGlkPSJf MSIgZGF0YS1uYW1lPSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdC b3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTIsLmNscy00LC5jbHMtNiwu Y2xzLTh7ZmlsbDojZjNjN2Q3O30uY2xzLTEsLmNscy0ye3N0cm9rZTojZDA0NDY1O30uY2xzLTEs LmNscy0yLC5jbHMtMywuY2xzLTQsLmNscy01LC5jbHMtNiwuY2xzLTcsLmNscy04e3N0cm9rZS1t aXRlcmxpbWl0OjEwO30uY2xzLTIsLmNscy00LC5jbHMtNiwuY2xzLTh7b3BhY2l0eTowLjU7fS5j bHMtM3tmaWxsOiNhZGRmZjM7fS5jbHMtMywuY2xzLTR7c3Ryb2tlOiMyOTgwYjk7fS5jbHMtNXtm aWxsOiNmMGVjYjY7fS5jbHMtNSwuY2xzLTZ7c3Ryb2tlOiNjMThmMzY7fS5jbHMtN3tmaWxsOiNk M2Q0ZjM7fS5jbHMtNywuY2xzLTh7c3Ryb2tlOiM2NjZiZDE7fS5jbHMtMTAsLmNscy05e2ZpbGw6 IzY0NjQ2NDtzdHJva2U6IzY0NjQ2NDtzdHJva2UtbGluZWpvaW46cm91bmQ7fS5jbHMtMTB7c3Ry b2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLXdpZHRoOjJweDt9PC9zdHlsZT48L2RlZnM+PHRpdGxl Pm5hbWVkX3R1cGxlc3RvcmVfc2NhbjwvdGl0bGU+PHJlY3QgY2xhc3M9ImNscy0xIiB4PSIyMi44 MSIgeT0iMjIuMzIiIHdpZHRoPSIzMS4wNSIgaGVpZ2h0PSI3LjA0IiByeD0iMSIvPjxsaW5lIGNs YXNzPSJjbHMtMiIgeDE9IjM0Ljg5IiB5MT0iMjkuMDgiIHgyPSIzNC44OSIgeTI9IjIyLjg0Ii8+ PGxpbmUgY2xhc3M9ImNscy0yIiB4MT0iMjguODMiIHkxPSIyOS4wOCIgeDI9IjI4LjgzIiB5Mj0i MjIuODQiLz48bGluZSBjbGFzcz0iY2xzLTIiIHgxPSI0MS4yNyIgeTE9IjI5LjA4IiB4Mj0iNDEu MjciIHkyPSIyMi44NCIvPjxsaW5lIGNsYXNzPSJjbHMtMiIgeDE9IjQ3LjQiIHkxPSIyOS4wOCIg eDI9IjQ3LjQiIHkyPSIyMi44NCIvPjxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMjIuODEiIHk9IjM0 LjY4IiB3aWR0aD0iMzEuMDUiIGhlaWdodD0iNy4wNCIgcng9IjEiLz48bGluZSBjbGFzcz0iY2xz LTQiIHgxPSIzNC44OSIgeTE9IjQxLjQ0IiB4Mj0iMzQuODkiIHkyPSIzNS4yIi8+PGxpbmUgY2xh c3M9ImNscy00IiB4MT0iMjguODMiIHkxPSI0MS40NCIgeDI9IjI4LjgzIiB5Mj0iMzUuMiIvPjxs aW5lIGNsYXNzPSJjbHMtNCIgeDE9IjQxLjI3IiB5MT0iNDEuNDQiIHgyPSI0MS4yNyIgeTI9IjM1 LjIiLz48bGluZSBjbGFzcz0iY2xzLTQiIHgxPSI0Ny40IiB5MT0iNDEuNDQiIHgyPSI0Ny40IiB5 Mj0iMzUuMiIvPjxyZWN0IGNsYXNzPSJjbHMtNSIgeD0iMjIuODEiIHk9IjQ3LjI0IiB3aWR0aD0i MzEuMDUiIGhlaWdodD0iNy4wNCIgcng9IjEiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSIzNC44 OSIgeTE9IjU0IiB4Mj0iMzQuODkiIHkyPSI0Ny43NiIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9 IjI4LjgzIiB5MT0iNTQiIHgyPSIyOC44MyIgeTI9IjQ3Ljc2Ii8+PGxpbmUgY2xhc3M9ImNscy02 IiB4MT0iNDEuMjciIHkxPSI1NCIgeDI9IjQxLjI3IiB5Mj0iNDcuNzYiLz48bGluZSBjbGFzcz0i Y2xzLTYiIHgxPSI0Ny40IiB5MT0iNTQiIHgyPSI0Ny40IiB5Mj0iNDcuNzYiLz48cmVjdCBjbGFz cz0iY2xzLTciIHg9IjIyLjgxIiB5PSI5LjcyIiB3aWR0aD0iMzEuMDUiIGhlaWdodD0iNy4wNCIg cng9IjEiLz48bGluZSBjbGFzcz0iY2xzLTgiIHgxPSIzNC44OSIgeTE9IjE2LjQ3IiB4Mj0iMzQu ODkiIHkyPSIxMC4yMyIvPjxsaW5lIGNsYXNzPSJjbHMtOCIgeDE9IjI4LjgzIiB5MT0iMTYuNDci IHgyPSIyOC44MyIgeTI9IjEwLjIzIi8+PGxpbmUgY2xhc3M9ImNscy04IiB4MT0iNDEuMjciIHkx PSIxNi40NyIgeDI9IjQxLjI3IiB5Mj0iMTAuMjMiLz48bGluZSBjbGFzcz0iY2xzLTgiIHgxPSI0 Ny40IiB5MT0iMTYuNDciIHgyPSI0Ny40IiB5Mj0iMTAuMjMiLz48cG9seWdvbiBjbGFzcz0iY2xz LTkiIHBvaW50cz0iMTMuNjIgNTMuOTkgMTAuMTQgNDkuMzUgMTcuMDkgNDkuMzUgMTMuNjIgNTMu OTkiLz48bGluZSBjbGFzcz0iY2xzLTEwIiB4MT0iMTMuNjIiIHkxPSI0OS45OCIgeDI9IjEzLjYy IiB5Mj0iMTAuMDEiLz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfbmVzdGVkLnN2ZyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9uZXN0ZWQuc3ZnCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMzYyMzY3NWIyCi0tLSAvZGV2L251bGwKKysrIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X25lc3RlZC5zdmcKQEAgLTAsMCAr MSBAQAorPHN2ZyBpZD0iXzEiIGRhdGEtbmFtZT0iMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn LzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjQgNjQiPjxkZWZzPjxzdHlsZT4uY2xzLTEsLmNscy0z e2ZpbGw6bm9uZTtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ry b2tlLXdpZHRoOjJweDt9LmNscy0xe3N0cm9rZTojNjY2YmQxO30uY2xzLTJ7ZmlsbDojNjY2YmQx O30uY2xzLTN7c3Ryb2tlOiM4ZDgxMTk7fS5jbHMtNHtmaWxsOiM4ZDgxMTk7fTwvc3R5bGU+PC9k ZWZzPjx0aXRsZT5leF9uZXN0ZWQ8L3RpdGxlPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTE3LjIz LDIwYTYsNiwwLDAsMSw2LTZoMjJhNiw2LDAsMCwxLDYsNlY0NGE2LDYsMCwwLDEtNiw2aC0yMmE2 LDYsMCwwLDEtNi02VjMyLjI3Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0yIiBwb2ludHM9IjE3LjIz IDI3LjMxIDEyLjc3IDMzLjI2IDIxLjY4IDMzLjI2IDE3LjIzIDI3LjMxIi8+PHBhdGggY2xhc3M9 ImNscy0zIiBkPSJNMjQuMjMsMjVjMC0zLjMuNy00LDQtNGgxMmMzLjMsMCw0LC43LDQsNFYzOWMw LDMuMy0uNyw0LTQsNEgyOC43MmMtMy4zLDAtNC0uNy00LTRWMzMuNzIiLz48cG9seWdvbiBjbGFz cz0iY2xzLTQiIHBvaW50cz0iMjQuNjcgMzEuMzQgMjAuNzEgMzYuMSAyOC4yMyAzNi4xIDI0LjY3 IDMxLjM0Ii8+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X25lc3RlZF9sb29wX2FudGlfam9p bi5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfbmVzdGVkX2xvb3Bf YW50aV9qb2luLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjA4NWNm NmIxOAotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2lt Zy9leF9uZXN0ZWRfbG9vcF9hbnRpX2pvaW4uc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgaWQ9Il8x IiBkYXRhLW5hbWU9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0Jv eD0iMCAwIDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0xLC5jbHMtMTEsLmNscy0xNSwuY2xzLTMs LmNscy04e2ZpbGw6bm9uZTt9LmNscy0xLC5jbHMtOHtzdHJva2U6IzY2NmJkMTt9LmNscy0xLC5j bHMtM3tzdHJva2UtbGluZWNhcDpyb3VuZDt9LmNscy0xLC5jbHMtMTEsLmNscy0zLC5jbHMtOHtz dHJva2UtbGluZWpvaW46cm91bmQ7fS5jbHMtMSwuY2xzLTE1LC5jbHMtM3tzdHJva2Utd2lkdGg6 MS41cHg7fS5jbHMtMntmaWxsOiM2NjZiZDE7fS5jbHMtM3tzdHJva2U6IzhkODExOTt9LmNscy00 e2ZpbGw6IzhkODExOTt9LmNscy01e2ZpbGw6I2QzZDRmMzt9LmNscy02e2ZpbGw6I2FkZGZmMzt9 LmNscy03e2ZpbGw6IzI5ODBiOTt9LmNscy0xMSwuY2xzLTh7b3BhY2l0eTowLjg7fS5jbHMtOXtm aWxsOiNmMGVjYjY7fS5jbHMtMTB7ZmlsbDojYzE4ZjM1O30uY2xzLTExe3N0cm9rZTojYzE4ZjM1 O30uY2xzLTEye2ZpbGw6IzM0NDk1ZTtzdHJva2U6IzUyOGQxOTt9LmNscy0xMiwuY2xzLTE1e3N0 cm9rZS1taXRlcmxpbWl0OjEwO30uY2xzLTEze2ZpbGw6I2RlZjRmZDt9LmNscy0xNHtmaWxsOiNj MDA7fS5jbHMtMTV7c3Ryb2tlOiNjMDA7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5leF9uZXN0ZWRf bG9vcF9hbnRpX2pvaW48L3RpdGxlPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTguNjgsMjIuMzJj MC0uMzUuMDYtMy42OS4xNy00YTMsMywwLDAsMSwyLjgzLTJoMTRhMywzLDAsMCwxLDMsM3YyNGEz LDMsMCwwLDEtMywzaC0xNGEzLDMsMCwwLDEtMy0zVjI4LjQ2Ii8+PHBvbHlnb24gY2xhc3M9ImNs cy0yIiBwb2ludHM9IjguNjggMjUuOTggNi40NSAyOC45NSAxMC45IDI4Ljk1IDguNjggMjUuOTgi Lz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xMi4xOCwyNC44MmMwLS4yNiwwLTMuNDgsMC0zLjY4 LjExLTEuMDcuNTgtMS4zMiwyLTEuMzJoOWMxLjY1LDAsMiwuMzUsMiwydjE5YzAsMS42NS0uMzUs Mi0yLDJIMTQuNDJjLTEuNjUsMC0yLS4zNS0yLTJWMjkuMTgiLz48cG9seWdvbiBjbGFzcz0iY2xz LTQiIHBvaW50cz0iMTIuNCAyNy45OSAxMC40MiAzMC4zNyAxNC4xOCAzMC4zNyAxMi40IDI3Ljk5 Ii8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNNDguODcsNDYuOTR2LTI0aDcuMjh2MjIuNWMwLDEu MzctLjEzLDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTU1LjY1LDIzLjQ0 djIyYTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIuMTgsMCwwLDEtLjkyLjFINDkuMzd2LTIz aDYuMjhtMS0xSDQ4LjM3djI1aDYuMjhjMS42NSwwLDItLjM1LDItMnYtMjNaIi8+PHBhdGggY2xh c3M9ImNscy02IiBkPSJNNDguODcsMjIuOTR2LTZoNS43OGMxLjM3LDAsMS41LjEzLDEuNSwxLjV2 NC41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTU0LjY1LDE3LjQ0YTMuMjUsMy4yNSwwLDAs MSwuOS4wOGgwYTIuMTcsMi4xNywwLDAsMSwuMS45MnY0SDQ5LjM3di01aDUuMjhtMC0xSDQ4LjM3 djdoOC4yOHYtNWMwLTEuNjUtLjM1LTItMi0yWiIvPjxsaW5lIGNsYXNzPSJjbHMtOCIgeDE9IjQ4 LjYzIiB5MT0iMjkuMjkiIHgyPSI1Ni4xMiIgeTI9IjI5LjI5Ii8+PGxpbmUgY2xhc3M9ImNscy04 IiB4MT0iNDguNjMiIHkxPSIzNS4yOSIgeDI9IjU2LjEyIiB5Mj0iMzUuMjkiLz48bGluZSBjbGFz cz0iY2xzLTgiIHgxPSI0OC42MyIgeTE9IjQxLjI5IiB4Mj0iNTYuMTIiIHkyPSI0MS4yOSIvPjxw YXRoIGNsYXNzPSJjbHMtOSIgZD0iTTQzLjEsNDYuOTRjLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVW MjIuOTRoNy4yOHYyNFoiLz48cGF0aCBjbGFzcz0iY2xzLTEwIiBkPSJNNDguMzgsMjMuNDR2MjNI NDMuMWEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xOCwyLjE4LDAsMCwxLS4xLS45MnYtMjJo Ni4yOG0xLTFINDEuMXYyM2MwLDEuNjUuMzUsMiwyLDJoNi4yOHYtMjVaIi8+PHBhdGggY2xhc3M9 ImNscy02IiBkPSJNNDEuNiwyMi45NHYtNC41YzAtMS4zNy4xMy0xLjUsMS41LTEuNWg1Ljc4djZa Ii8+PHBhdGggY2xhc3M9ImNscy03IiBkPSJNNDguMzgsMTcuNDR2NUg0Mi4xdi00YTMuMjksMy4y OSwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg1LjI4bTEtMUg0My4xYy0xLjY1 LDAtMiwuMzUtMiwydjVoOC4yOHYtN1oiLz48bGluZSBjbGFzcz0iY2xzLTExIiB4MT0iNDEuNjMi IHkxPSIyOS4yOSIgeDI9IjQ4LjM3IiB5Mj0iMjkuMjkiLz48bGluZSBjbGFzcz0iY2xzLTExIiB4 MT0iNDEuNjMiIHkxPSIzNS4yOSIgeDI9IjQ4LjM3IiB5Mj0iMzUuMjkiLz48bGluZSBjbGFzcz0i Y2xzLTExIiB4MT0iNDEuNjMiIHkxPSI0MS4yOSIgeDI9IjQ4LjM3IiB5Mj0iNDEuMjkiLz48cGF0 aCBjbGFzcz0iY2xzLTEyIiBkPSJNMzMuODcsMzUuNjFBOS4yOCw5LjI4LDAsMCwxLDM0LDM0LjRh Mi43NiwyLjc2LDAsMCwxLC4yNi0uODMsMi4zNywyLjM3LDAsMCwxLC40NC0uNiwyLjUzLDIuNTMs MCwwLDEsLjYyLS40Niw0LDQsMCwwLDEsLjY0LS4yNywzLjUsMy41LDAsMCwxLC42LS4xM2MuMTks MCwuMTktLjEsMC0uMTJhMy41MiwzLjUyLDAsMCwxLS42LS4xMywzLjY1LDMuNjUsMCwwLDEtLjY0 LS4yNywyLjUyLDIuNTIsMCwwLDEtLjYyLS40NiwyLjQxLDIuNDEsMCwwLDEtLjQ0LS42LDIuNzcs Mi43NywwLDAsMS0uMjYtLjgzLDkuMzEsOS4zMSwwLDAsMS0uMTEtMS4yYzAtLjQ3LjUuNzcuNTgs MS4xOGEyLjM3LDIuMzcsMCwwLDAsLjQ3LDEuMDYsMi42NSwyLjY1LDAsMCwwLDEsLjczLjY5LjY5 LDAsMCwxLDAsMS4xNywyLjY2LDIuNjYsMCwwLDAtMSwuNzMsMi4zOSwyLjM5LDAsMCwwLS40Nywx LjA2QzM0LjM3LDM0Ljg0LDMzLjg1LDM2LjA4LDMzLjg3LDM1LjYxWiIvPjxjaXJjbGUgY2xhc3M9 ImNscy0xMyIgY3g9IjUyLjUxIiBjeT0iMzUuMjkiIHI9IjQuMjkiLz48cGF0aCBjbGFzcz0iY2xz LTE0IiBkPSJNNTIuNTEsMzEuNzVBMy41NCwzLjU0LDAsMSwxLDQ5LDM1LjI5YTMuNTUsMy41NSww LDAsMSwzLjU0LTMuNTRtMC0xLjVhNSw1LDAsMSwwLDUsNSw1LDUsMCwwLDAtNS01WiIvPjxsaW5l IGNsYXNzPSJjbHMtMTUiIHgxPSI0OS4yMiIgeTE9IjM3LjU3IiB4Mj0iNTUuNzMiIHkyPSIzMi44 MyIvPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9uZXN0ZWRfbG9vcF9zZW1pX2pvaW4uc3Zn IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X25lc3RlZF9sb29wX3NlbWlf am9pbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5iMzljYjY5MzYK LS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhf bmVzdGVkX2xvb3Bfc2VtaV9qb2luLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIGlkPSJfMSIgZGF0 YS1uYW1lPSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAg MCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMXtvcGFjaXR5OjAuNjt9LmNscy0ye2ZpbGw6I2Qz ZDRmMzt9LmNscy0ze2ZpbGw6IzY2NmJkMTt9LmNscy00e2ZpbGw6I2FkZGZmMzt9LmNscy01e2Zp bGw6IzI5ODBiOTt9LmNscy0xMSwuY2xzLTEyLC5jbHMtNiwuY2xzLTl7ZmlsbDpub25lO3N0cm9r ZS1saW5lam9pbjpyb3VuZDt9LmNscy0xMSwuY2xzLTZ7c3Ryb2tlOiM2NjZiZDE7fS5jbHMtNiwu Y2xzLTl7b3BhY2l0eTowLjg7fS5jbHMtN3tmaWxsOiNmMGVjYjY7fS5jbHMtOHtmaWxsOiNjMThm MzU7fS5jbHMtOXtzdHJva2U6I2MxOGYzNTt9LmNscy0xMHtmaWxsOiMzNDQ5NWU7c3Ryb2tlOiM1 MjhkMTk7c3Ryb2tlLW1pdGVybGltaXQ6MTA7fS5jbHMtMTEsLmNscy0xMntzdHJva2UtbGluZWNh cDpyb3VuZDtzdHJva2Utd2lkdGg6MS41cHg7fS5jbHMtMTJ7c3Ryb2tlOiM4ZDgxMTk7fS5jbHMt MTN7ZmlsbDojOGQ4MTE5O308L3N0eWxlPjwvZGVmcz48dGl0bGU+ZXhfbmVzdGVkX2xvb3Bfc2Vt aV9qb2luPC90aXRsZT48ZyBjbGFzcz0iY2xzLTEiPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQ5 LjQ1LDQ2Ljg4di0yNGg3LjI4djIyLjVjMCwxLjM3LS4xMywxLjUtMS41LDEuNVoiLz48cGF0aCBj bGFzcz0iY2xzLTMiIGQ9Ik01Ni4yMywyMy4zOHYyMmEzLjI5LDMuMjksMCwwLDEtLjA4LjksMi4x OCwyLjE4LDAsMCwxLS45Mi4xSDQ5Ljk1di0yM2g2LjI4bTEtMUg0OC45NXYyNWg2LjI4YzEuNjUs MCwyLS4zNSwyLTJ2LTIzWiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTQ5LjQ1LDIyLjg4di02 aDUuNzhjMS4zNywwLDEuNS4xMywxLjUsMS41djQuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9 Ik01NS4yMywxNy4zOGEzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEu OTJ2NEg0OS45NXYtNWg1LjI4bTAtMUg0OXY3aDguMjh2LTVjMC0xLjY1LS4zNS0yLTItMloiLz48 bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI0OS4yMSIgeTE9IjI5LjIzIiB4Mj0iNTYuNzEiIHkyPSIy OS4yMyIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjQ5LjIxIiB5MT0iMzUuMjMiIHgyPSI1Ni43 MSIgeTI9IjM1LjIzIi8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iNDkuMjEiIHkxPSI0MS4yMyIg eDI9IjU2LjcxIiB5Mj0iNDEuMjMiLz48L2c+PHBhdGggY2xhc3M9ImNscy03IiBkPSJNNDMuNjgs NDYuODhjLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVWMjIuODhoNy4yOHYyNFoiLz48cGF0aCBjbGFz cz0iY2xzLTgiIGQ9Ik00OSwyMy4zOHYyM0g0My42OGEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBh Mi4xOCwyLjE4LDAsMCwxLS4xLS45MnYtMjJINDltMS0xSDQxLjY4djIzYzAsMS42NS4zNSwyLDIs Mkg1MHYtMjVaIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNNDIuMTgsMjIuODh2LTQuNWMwLTEu MzcuMTMtMS41LDEuNS0xLjVoNS43OHY2WiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTQ5LDE3 LjM4djVINDIuNjh2LTRhMy4yOSwzLjI5LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjky LS4xSDQ5bTEtMUg0My42OGMtMS42NSwwLTIsLjM1LTIsMnY1SDUwdi03WiIvPjxsaW5lIGNsYXNz PSJjbHMtOSIgeDE9IjQyLjIxIiB5MT0iMjkuMjMiIHgyPSI0OC45NSIgeTI9IjI5LjIzIi8+PGxp bmUgY2xhc3M9ImNscy05IiB4MT0iNDIuMjEiIHkxPSIzNS4yMyIgeDI9IjQ4Ljk1IiB5Mj0iMzUu MjMiLz48bGluZSBjbGFzcz0iY2xzLTkiIHgxPSI0Mi4yMSIgeTE9IjQxLjIzIiB4Mj0iNDguOTUi IHkyPSI0MS4yMyIvPjxwYXRoIGNsYXNzPSJjbHMtMTAiIGQ9Ik0zNC40NSwzNS41NWE5LjI4LDku MjgsMCwwLDEsLjExLTEuMiwyLjc2LDIuNzYsMCwwLDEsLjI2LS44MywyLjM3LDIuMzcsMCwwLDEs LjQ0LS42LDIuNTMsMi41MywwLDAsMSwuNjItLjQ2LDQsNCwwLDAsMSwuNjQtLjI3LDMuNSwzLjUs MCwwLDEsLjYtLjEzYy4xOSwwLC4xOS0uMSwwLS4xMmEzLjUyLDMuNTIsMCwwLDEtLjYtLjEzLDMu NjUsMy42NSwwLDAsMS0uNjQtLjI3LDIuNTIsMi41MiwwLDAsMS0uNjItLjQ2LDIuNDEsMi40MSww LDAsMS0uNDQtLjYsMi43NywyLjc3LDAsMCwxLS4yNi0uODMsOS4zMSw5LjMxLDAsMCwxLS4xMS0x LjJjMC0uNDcuNS43Ny41OCwxLjE4YTIuMzcsMi4zNywwLDAsMCwuNDcsMS4wNiwyLjY1LDIuNjUs MCwwLDAsMSwuNzMuNjkuNjksMCwwLDEsMCwxLjE3LDIuNjYsMi42NiwwLDAsMC0xLC43M0EyLjM5 LDIuMzksMCwwLDAsMzUsMzQuMzdDMzUsMzQuNzgsMzQuNDQsMzYsMzQuNDUsMzUuNTVaIi8+PHBh dGggY2xhc3M9ImNscy0xMSIgZD0iTTksMjMuMDVjMC0uMzUuMDYtMy42OS4xNy00YTMsMywwLDAs MSwyLjgzLTJIMjZhMywzLDAsMCwxLDMsM3YyNGEzLDMsMCwwLDEtMywzSDEyYTMsMywwLDAsMS0z LTNWMjkuMTkiLz48cG9seWdvbiBjbGFzcz0iY2xzLTMiIHBvaW50cz0iOC45OSAyNi43MSA2Ljc3 IDI5LjY4IDExLjIyIDI5LjY4IDguOTkgMjYuNzEiLz48cGF0aCBjbGFzcz0iY2xzLTEyIiBkPSJN MTIuNDksMjUuNTVjMC0uMjYsMC0zLjQ4LDAtMy42OC4xMS0xLjA3LjU4LTEuMzIsMi0xLjMyaDlj MS42NSwwLDIsLjM1LDIsMnYxOWMwLDEuNjUtLjM1LDItMiwySDE0Ljc0Yy0xLjY1LDAtMi0uMzUt Mi0yVjI5LjkxIi8+PHBvbHlnb24gY2xhc3M9ImNscy0xMyIgcG9pbnRzPSIxMi43MSAyOC43MiAx MC43NCAzMS4xIDE0LjQ5IDMxLjEgMTIuNzEgMjguNzIiLz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0 IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9p bWcvZXhfcHJvamVjdHNldC5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcv ZXhfcHJvamVjdHNldC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi41 OTQzZWQ0YWEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFp bi9pbWcvZXhfcHJvamVjdHNldC5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0cDov L3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NC4wMyA2NCI+PGRlZnM+PHN0eWxl Pi5jbHMtMXtmaWxsOm5vbmU7c3Ryb2tlOiNkMDQ0NjU7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ry b2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoxLjVweDt9LmNscy0yLC5jbHMtNHtmaWxs OiNlNmU2ZTY7fS5jbHMtM3tmaWxsOiM4MTgxODE7fS5jbHMtNHtzdHJva2U6IzgxODE4MTt9LmNs cy00LC5jbHMtNXtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9LmNscy01e2ZpbGw6I2QzZDRmMztzdHJv a2U6IzY2NmJkMTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPnByb2plY3RzZXQ8L3RpdGxlPjxnIGlk PSJfMSIgZGF0YS1uYW1lPSIxIj48bGluZSBjbGFzcz0iY2xzLTEiIHgxPSI1My42NCIgeTE9IjIw LjYzIiB4Mj0iNTQuNTgiIHkyPSIxOC4zNSIvPjxsaW5lIGNsYXNzPSJjbHMtMSIgeDE9IjUxLjM2 IiB5MT0iMjYuMTgiIHgyPSI1Mi41MiIgeTI9IjIzLjM2Ii8+PGxpbmUgY2xhc3M9ImNscy0xIiB4 MT0iNDEuMzMiIHkxPSI1MC41MiIgeDI9IjUwLjMxIiB5Mj0iMjguNzMiLz48bGluZSBjbGFzcz0i Y2xzLTEiIHgxPSIxMC4zOCIgeTE9IjIwLjYzIiB4Mj0iOS40NSIgeTI9IjE4LjM1Ii8+PGxpbmUg Y2xhc3M9ImNscy0xIiB4MT0iMTIuNjciIHkxPSIyNi4xOCIgeDI9IjExLjUxIiB5Mj0iMjMuMzYi Lz48bGluZSBjbGFzcz0iY2xzLTEiIHgxPSIyMi43IiB5MT0iNTAuNTIiIHgyPSIxMy43MiIgeTI9 IjI4LjczIi8+PGxpbmUgY2xhc3M9ImNscy0xIiB4MT0iMjAuNjEiIHkxPSIzMi4zOCIgeDI9IjE5 LjQ0IiB5Mj0iMjkuNTYiLz48bGluZSBjbGFzcz0iY2xzLTEiIHgxPSIyOC4xMyIgeTE9IjUwLjUy IiB4Mj0iMjEuNjYiIHkyPSIzNC45MyIvPjxsaW5lIGNsYXNzPSJjbHMtMSIgeDE9IjIxLjM0IiB5 MT0iOS42MSIgeDI9IjIwLjg0IiB5Mj0iOC43MyIvPjxsaW5lIGNsYXNzPSJjbHMtMSIgeDE9IjI0 LjI3IiB5MT0iMTYuNjQiIHgyPSIyMi4zOSIgeTI9IjEyLjE2Ii8+PGxpbmUgY2xhc3M9ImNscy0x IiB4MT0iNDMuNTgiIHkxPSIzMi4zOCIgeDI9IjQ0Ljc0IiB5Mj0iMjkuNTYiLz48bGluZSBjbGFz cz0iY2xzLTEiIHgxPSIzNi4wNSIgeTE9IjUwLjUyIiB4Mj0iNDIuNTMiIHkyPSIzNC45MyIvPjxs aW5lIGNsYXNzPSJjbHMtMSIgeDE9IjQzLjU2IiB5MT0iMTAuODkiIHgyPSI0NC4xMSIgeTI9Ijku NjQiLz48bGluZSBjbGFzcz0iY2xzLTEiIHgxPSI0MS4wNyIgeTE9IjE2Ljg1IiB4Mj0iNDIuNTEi IHkyPSIxMy40NCIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTE0LjQxLDYzLjUzdi00YTMuNSwz LjUsMCwwLDEsMy41LTMuNWgyOC41YTMuNSwzLjUsMCwwLDEsMy41LDMuNXY0WiIvPjxwYXRoIGNs YXNzPSJjbHMtMyIgZD0iTTQ2LjQxLDU2LjQ5YTMsMywwLDAsMSwzLDNWNjNIMTQuOTFWNTkuNDlh MywzLDAsMCwxLDMtM2gyOC41bTAtMUgxNy45MWE0LDQsMCwwLDAtNCw0VjY0aDM2LjVWNTkuNDlh NCw0LDAsMCwwLTQtNFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yMi4yNyw1NS45bC0xLjg1 LTUuNDhhLjExLjExLDAsMCwxLC4wOS0uMDVoMjMuM2EuMTEuMTEsMCwwLDEsLjA5LjA1TDQyLjA1 LDU1LjlaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNNDMuMjIsNTAuODcsNDEuNjksNTUuNEgy Mi42M0wyMS4xLDUwLjg3SDQzLjIybS41OS0xSDIwLjUxYS42LjYsMCwwLDAtLjYuNmwyLDUuOTNo MjAuNWwyLTUuOTNhLjYuNiwwLDAsMC0uNi0uNloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0z Mi4wOCw2MS4wNmExLjM5LDEuMzksMCwxLDEsMS4zOC0xLjM4QTEuMzgsMS4zOCwwLDAsMSwzMi4w OCw2MS4wNloiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0zMi4wOCw1OC43OWEuODkuODksMCwx LDEtLjg5Ljg5Ljg5Ljg5LDAsMCwxLC44OS0uODltMC0xQTEuODksMS44OSwwLDEsMCwzNCw1OS42 OGExLjg5LDEuODksMCwwLDAtMS44OC0xLjg5WiIvPjxsaW5lIGNsYXNzPSJjbHMtNCIgeDE9IjIx LjE3IiB5MT0iNTIuMjgiIHgyPSIyOC4yOSIgeTI9IjUyLjI4Ii8+PGxpbmUgY2xhc3M9ImNscy00 IiB4MT0iMjEuODMiIHkxPSI1NC4wOCIgeDI9IjM0LjY5IiB5Mj0iNTQuMDgiLz48L2c+PGcgaWQ9 ImV4X2FwcGVuZCI+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNMjIuMDYsMjMuODdINDJhMCwwLDAs MCwxLDAsMHYzYTEsMSwwLDAsMS0xLDFIMjMuMDZhMSwxLDAsMCwxLTEtMXYtM0EwLDAsMCwwLDEs MjIuMDYsMjMuODdaIi8+PHJlY3QgY2xhc3M9ImNscy01IiB4PSIyNy4wNyIgeT0iMjMuODciIHdp ZHRoPSI1IiBoZWlnaHQ9IjQiLz48cmVjdCBjbGFzcz0iY2xzLTUiIHg9IjMyLjAzIiB5PSIyMy44 NyIgd2lkdGg9IjUiIGhlaWdodD0iNCIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTIzLjA2LDIw LjEzSDQxYTEsMSwwLDAsMSwxLDF2M2EwLDAsMCwwLDEsMCwwSDIyLjA2YTAsMCwwLDAsMSwwLDB2 LTNBMSwxLDAsMCwxLDIzLjA2LDIwLjEzWiIvPjxyZWN0IGNsYXNzPSJjbHMtNSIgeD0iMjcuMDci IHk9IjIwLjEzIiB3aWR0aD0iNSIgaGVpZ2h0PSI0Ii8+PHJlY3QgY2xhc3M9ImNscy01IiB4PSIz Mi4wMyIgeT0iMjAuMTMiIHdpZHRoPSI1IiBoZWlnaHQ9IjQiLz48L2c+PC9zdmc+ClwgTm8gbmV3 bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4 cGxhaW4vaW1nL2V4X3JlY3Vyc2l2ZV91bmlvbi5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMv RXhwbGFpbi9pbWcvZXhfcmVjdXJzaXZlX3VuaW9uLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAwMDAwMDAwMDAuLmZiNWUyZTQwMgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWlu L3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9yZWN1cnNpdmVfdW5pb24uc3ZnCkBAIC0wLDAgKzEg QEAKKzxzdmcgaWQ9Il8xIiBkYXRhLW5hbWU9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8y MDAwL3N2ZyIgdmlld0JveD0iMCAwIDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6IzM0 NDk1ZTtzdHJva2U6IzUyOGQxOTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9LmNscy0ye2ZpbGw6I2Qz ZDRmMzt9LmNscy0ze2ZpbGw6IzY2NmJkMTt9LmNscy00e2ZpbGw6I2FkZGZmMzt9LmNscy01e2Zp bGw6IzI5ODBiOTt9LmNscy02LC5jbHMtOXtmaWxsOm5vbmU7c3Ryb2tlLWxpbmVqb2luOnJvdW5k O29wYWNpdHk6MC44O30uY2xzLTZ7c3Ryb2tlOiM2NjZiZDE7fS5jbHMtN3tmaWxsOiNmMGVjYjY7 fS5jbHMtOHtmaWxsOiNjMThmMzU7fS5jbHMtOXtzdHJva2U6I2MxOGYzNTt9PC9zdHlsZT48L2Rl ZnM+PHRpdGxlPmV4X3JlY3Vyc2l2ZV91bmlvbjwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBk PSJNNC41OSwyNS4yMUE5LjI4LDkuMjgsMCwwLDEsNC43LDI0LDIuNzYsMi43NiwwLDAsMSw1LDIz LjE4YTIuMzcsMi4zNywwLDAsMSwuNDQtLjZBMi41MywyLjUzLDAsMCwxLDYsMjIuMTJhNCw0LDAs MCwxLC42NC0uMjcsMy41LDMuNSwwLDAsMSwuNi0uMTNjLjE5LDAsLjE5LS4xLDAtLjEyYTMuNTIs My41MiwwLDAsMS0uNi0uMTNBMy42NSwzLjY1LDAsMCwxLDYsMjEuMmEyLjUyLDIuNTIsMCwwLDEt LjYyLS40NiwyLjQxLDIuNDEsMCwwLDEtLjQ0LS42LDIuNzcsMi43NywwLDAsMS0uMjYtLjgzLDku MzEsOS4zMSwwLDAsMS0uMTEtMS4yYzAtLjQ3LjUuNzcuNTgsMS4xOGEyLjM3LDIuMzcsMCwwLDAs LjQ3LDEuMDYsMi42NSwyLjY1LDAsMCwwLDEsLjczLjY5LjY5LDAsMCwxLDAsMS4xNywyLjY2LDIu NjYsMCwwLDAtMSwuNzNBMi4zOSwyLjM5LDAsMCwwLDUuMTcsMjRDNS4wOSwyNC40NCw0LjU3LDI1 LjY4LDQuNTksMjUuMjFaIi8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNC41OSw0OS4zNmE5LjI4 LDkuMjgsMCwwLDEsLjExLTEuMkEyLjc2LDIuNzYsMCwwLDEsNSw0Ny4zM2EyLjM3LDIuMzcsMCww LDEsLjQ0LS42QTIuNTMsMi41MywwLDAsMSw2LDQ2LjI3LDQsNCwwLDAsMSw2LjY1LDQ2YTMuNSwz LjUsMCwwLDEsLjYtLjEzYy4xOSwwLC4xOS0uMSwwLS4xMmEzLjUyLDMuNTIsMCwwLDEtLjYtLjEz QTMuNjUsMy42NSwwLDAsMSw2LDQ1LjM1YTIuNTIsMi41MiwwLDAsMS0uNjItLjQ2LDIuNDEsMi40 MSwwLDAsMS0uNDQtLjYsMi43NywyLjc3LDAsMCwxLS4yNi0uODMsOS4zMSw5LjMxLDAsMCwxLS4x MS0xLjJjMC0uNDcuNS43Ny41OCwxLjE4YTIuMzcsMi4zNywwLDAsMCwuNDcsMS4wNiwyLjY1LDIu NjUsMCwwLDAsMSwuNzMuNjkuNjksMCwwLDEsMCwxLjE3LDIuNjYsMi42NiwwLDAsMC0xLC43Mywy LjM5LDIuMzksMCwwLDAtLjQ3LDEuMDZDNS4wOSw0OC41OSw0LjU3LDQ5LjgzLDQuNTksNDkuMzZa Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMjkuMiw0MS4zNmE0LjQyLDQuNDIsMCwwLDAsMi4w NS0uNTEsMi44MSwyLjgxLDAsMCwwLDEuMDYtMS4wOCwzLjU5LDMuNTksMCwwLDAsLjQtMS40cS4w Ni0uNzUuMDYtMS40NnYuMzVjMC0uNjgsMC0xLjI1LDAtMS43MmE5LjI4LDkuMjgsMCwwLDEsLjEx LTEuMiwyLjc2LDIuNzYsMCwwLDEsLjI2LS44MywyLjM3LDIuMzcsMCwwLDEsLjQ0LS42LDIuNTMs Mi41MywwLDAsMSwuNjItLjQ2LDQsNCwwLDAsMSwuNjQtLjI3LDMuNSwzLjUsMCwwLDEsLjYtLjEz Yy4xOSwwLC4xOS0uMSwwLS4xMmEzLjUyLDMuNTIsMCwwLDEtLjYtLjEzLDMuNjUsMy42NSwwLDAs MS0uNjQtLjI3LDIuNTIsMi41MiwwLDAsMS0uNjItLjQ2LDIuNDEsMi40MSwwLDAsMS0uNDQtLjYs Mi43NywyLjc3LDAsMCwxLS4yNi0uODMsOS4zMSw5LjMxLDAsMCwxLS4xMS0xLjJxMC0uNzEsMC0x Ljczdi4zNmMwLS40NywwLTEtLjA2LTEuNDZhMy41OCwzLjU4LDAsMCwwLS40LTEuNCwyLjgyLDIu ODIsMCwwLDAtMS4wNi0xLjA4LDQuNDcsNC40NywwLDAsMC0yLjA1LS41MVYyMi4ybC41MywwYTQu MTEsNC4xMSwwLDAsMSwuNjcuMTEsNS4xMiw1LjEyLDAsMCwxLC43Mi4yMywyLjg5LDIuODksMCww LDEsLjcuNDEsMy4zNCwzLjM0LDAsMCwxLC44My45QTMuNjYsMy42NiwwLDAsMSwzMy4wOCwyNWE3 LDcsMCwwLDEsLjE2LDEuMjljMCwuNDcsMCwxLjg4LDAsMS44OGE3LjksNy45LDAsMCwwLC4xMiwx LjUsMi4zNywyLjM3LDAsMCwwLC40NywxLjA2LDIuNjUsMi42NSwwLDAsMCwxLC43My42OS42OSww LDAsMSwwLDEuMTcsMi42NiwyLjY2LDAsMCwwLTEsLjczLDIuMzksMi4zOSwwLDAsMC0uNDcsMS4w Niw3LjksNy45LDAsMCwwLS4xMiwxLjVzLS4wOSwyLjc4LS4xOCwzLjE3YTMuNjUsMy42NSwwLDAs MS0uNDMsMS4wNywzLjMxLDMuMzEsMCwwLDEtLjgzLjksMi45LDIuOSwwLDAsMS0uNy40MSw1LjM5 LDUuMzksMCwwLDEtLjcyLjIzLDQuMzQsNC4zNCwwLDAsMS0uNjcuMTFsLS41MywwWiIvPjxwYXRo IGNsYXNzPSJjbHMtMiIgZD0iTTEyLjI3LDI5LjMxYy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjE2 LjMxaDcuMjh2MTNaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTcuNTUsMTYuODF2MTJIMTIu MjdhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJ2LTExaDYu MjhtMS0xSDEwLjI3djEyYzAsMS42NS4zNSwyLDIsMmg2LjI4di0xNFoiLz48cGF0aCBjbGFzcz0i Y2xzLTIiIGQ9Ik0xOCwyOS4zMXYtMTNoNy4yOHYxMS41YzAsMS4zNy0uMTMsMS41LTEuNSwxLjVa Ii8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMjQuODIsMTYuODF2MTFhMy4yOCwzLjI4LDAsMCwx LS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUgxOC41NHYtMTJoNi4yOG0xLTFIMTcuNTR2MTRo Ni4yOGMxLjY1LDAsMi0uMzUsMi0ydi0xMloiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xMC43 NywxNi4zMXYtNC41YzAtMS4zNy4xMy0xLjUsMS41LTEuNWg1Ljc4djZaIi8+PHBhdGggY2xhc3M9 ImNscy01IiBkPSJNMTcuNTUsMTAuODF2NUgxMS4yN3YtNGEzLjI4LDMuMjgsMCwwLDEsLjA4LS45 LDIuMTgsMi4xOCwwLDAsMSwuOTItLjFoNS4yOG0xLTFIMTIuMjdjLTEuNjUsMC0yLC4zNS0yLDJ2 NWg4LjI4di03WiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTE4LDE2LjMxdi02aDUuNzhjMS4z NywwLDEuNS4xMywxLjUsMS41djQuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0yMy44Miwx MC44MWEzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2NEgxOC41 NHYtNWg1LjI4bTAtMUgxNy41NHY3aDguMjh2LTVjMC0xLjY1LS4zNS0yLTItMloiLz48bGluZSBj bGFzcz0iY2xzLTYiIHgxPSIxNy44IiB5MT0iMjIuNjYiIHgyPSIyNS4yOSIgeTI9IjIyLjY2Ii8+ PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMTAuOCIgeTE9IjIyLjY2IiB4Mj0iMTcuNTQiIHkyPSIy Mi42NiIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTEyLjI3LDUzLjQ2Yy0xLjM3LDAtMS41LS4x My0xLjUtMS41VjQwLjQ2aDcuMjh2MTNaIi8+PHBhdGggY2xhc3M9ImNscy04IiBkPSJNMTcuNTUs NDFWNTNIMTIuMjdhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0u OTJWNDFoNi4yOG0xLTFIMTAuMjdWNTJjMCwxLjY1LjM1LDIsMiwyaDYuMjhWNDBaIi8+PHBhdGgg Y2xhc3M9ImNscy03IiBkPSJNMTgsNTMuNDZ2LTEzaDcuMjhWNTJjMCwxLjM3LS4xMywxLjUtMS41 LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik0yNC44Miw0MVY1MmEzLjI4LDMuMjgsMCww LDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xSDE4LjU0VjQxaDYuMjhtMS0xSDE3LjU0VjU0 aDYuMjhjMS42NSwwLDItLjM1LDItMlY0MFoiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xMC43 Nyw0MC40NlYzNmMwLTEuMzcuMTMtMS41LDEuNS0xLjVoNS43OHY2WiIvPjxwYXRoIGNsYXNzPSJj bHMtNSIgZD0iTTE3LjU1LDM1djVIMTEuMjdWMzZhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4 LDIuMTgsMCwwLDEsLjkyLS4xaDUuMjhtMS0xSDEyLjI3Yy0xLjY1LDAtMiwuMzUtMiwydjVoOC4y OFYzNFoiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xOCw0MC40NnYtNmg1Ljc4YzEuMzcsMCwx LjUuMTMsMS41LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNMjMuODIsMzVhMy4y NSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4xLjkydjRIMTguNTRWMzVoNS4y OG0wLTFIMTcuNTR2N2g4LjI4VjM2YzAtMS42NS0uMzUtMi0yLTJaIi8+PGxpbmUgY2xhc3M9ImNs cy05IiB4MT0iMTcuOCIgeTE9IjQ2LjgxIiB4Mj0iMjUuMjkiIHkyPSI0Ni44MSIvPjxsaW5lIGNs YXNzPSJjbHMtOSIgeDE9IjEwLjgiIHkxPSI0Ni44MSIgeDI9IjE3LjU0IiB5Mj0iNDYuODEiLz48 cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik01Ni42MSwzNS41NWE5LjI4LDkuMjgsMCwwLDEsLjExLTEu MiwyLjc2LDIuNzYsMCwwLDEsLjI2LS44MywyLjM3LDIuMzcsMCwwLDEsLjQ0LS42LDIuNTMsMi41 MywwLDAsMSwuNjItLjQ2LDQsNCwwLDAsMSwuNjQtLjI3LDMuNSwzLjUsMCwwLDEsLjYtLjEzYy4x OSwwLC4xOS0uMSwwLS4xMmEzLjUyLDMuNTIsMCwwLDEtLjYtLjEzLDMuNjUsMy42NSwwLDAsMS0u NjQtLjI3LDIuNTIsMi41MiwwLDAsMS0uNjItLjQ2LDIuNDEsMi40MSwwLDAsMS0uNDQtLjYsMi43 NywyLjc3LDAsMCwxLS4yNi0uODMsOS4zMSw5LjMxLDAsMCwxLS4xMS0xLjJjMC0uNDcuNS43Ny41 OCwxLjE4YTIuMzcsMi4zNywwLDAsMCwuNDcsMS4wNiwyLjY1LDIuNjUsMCwwLDAsMSwuNzMuNjku NjksMCwwLDEsMCwxLjE3LDIuNjYsMi42NiwwLDAsMC0xLC43MywyLjM5LDIuMzksMCwwLDAtLjQ3 LDEuMDZDNTcuMTEsMzQuNzgsNTYuNiwzNiw1Ni42MSwzNS41NVoiLz48cmVjdCBjbGFzcz0iY2xz LTIiIHg9IjM5LjE3IiB5PSIyMS40IiB3aWR0aD0iNy4yOCIgaGVpZ2h0PSIxMyIvPjxwYXRoIGNs YXNzPSJjbHMtMyIgZD0iTTQ1Ljk1LDIxLjl2MTJIMzkuNjd2LTEyaDYuMjhtMS0xSDM4LjY3djE0 aDguMjh2LTE0WiIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iNDYuNDQiIHk9IjIxLjQiIHdpZHRo PSI3LjI4IiBoZWlnaHQ9IjEzIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNNTMuMjIsMjEuOXYx Mkg0Ni45M3YtMTJoNi4yOG0xLTFINDUuOTN2MTRoOC4yOHYtMTRaIi8+PHBhdGggY2xhc3M9ImNs cy00IiBkPSJNMzkuMTcsMjEuNFYxNi45YzAtMS4zNy4xMy0xLjUsMS41LTEuNWg1Ljc4djZaIi8+ PHBhdGggY2xhc3M9ImNscy01IiBkPSJNNDUuOTUsMTUuOXY1SDM5LjY3di00YTMuMjgsMy4yOCww LDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg1LjI4bTEtMUg0MC42N2MtMS42NSww LTIsLjM1LTIsMnY1SDQ3di03WiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTQ2LjQ0LDIxLjR2 LTZoNS43OGMxLjM3LDAsMS41LjEzLDEuNSwxLjV2NC41WiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIg ZD0iTTUyLjIyLDE1LjlhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4x LjkydjRINDYuOTR2LTVoNS4yOG0wLTFINDUuOTR2N2g4LjI4di01YzAtMS42NS0uMzUtMi0yLTJa Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iNDYuMiIgeTE9IjI3Ljc1IiB4Mj0iNTMuNjkiIHky PSIyNy43NSIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjM5LjIiIHkxPSIyNy43NSIgeDI9IjQ1 LjkzIiB5Mj0iMjcuNzUiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik00MC42Nyw0Ny4zOGMtMS4z NywwLTEuNS0uMTMtMS41LTEuNVYzNC4zOGg3LjI4djEzWiIvPjxwYXRoIGNsYXNzPSJjbHMtOCIg ZD0iTTQ1Ljk1LDM0Ljg4djEySDQwLjY3YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIu MTgsMCwwLDEtLjEtLjkydi0xMWg2LjI4bTEtMUgzOC42N3YxMmMwLDEuNjUuMzUsMiwyLDJoNi4y OHYtMTRaIi8+PHBhdGggY2xhc3M9ImNscy03IiBkPSJNNDYuNDQsNDcuMzh2LTEzaDcuMjh2MTEu NWMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTUzLjIy LDM0Ljg4djExYTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIuMTgsMCwwLDEtLjkyLjFINDYu OTN2LTEyaDYuMjhtMS0xSDQ1LjkzdjE0aDYuMjhjMS42NSwwLDItLjM1LDItMnYtMTJaIi8+PGxp bmUgY2xhc3M9ImNscy05IiB4MT0iNDYuMiIgeTE9IjQwLjczIiB4Mj0iNTMuNjkiIHkyPSI0MC43 MyIvPjxsaW5lIGNsYXNzPSJjbHMtOSIgeDE9IjM5LjIiIHkxPSI0MC43MyIgeDI9IjQ1LjkzIiB5 Mj0iNDAuNzMiLz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfcmVkaXN0cmlidXRlX21vdGlv bi5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfcmVkaXN0cmlidXRl X21vdGlvbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5kZDdkOTUz NTMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcv ZXhfcmVkaXN0cmlidXRlX21vdGlvbi5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxucz0iaHR0 cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxl Pi5jbHMtMXtmaWxsOiNmM2M3ZDc7fS5jbHMtMntmaWxsOiNkMDQ0NjU7fS5jbHMtM3tmaWxsOm5v bmU7c3Ryb2tlOiMyOTgwYjk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJv dW5kO30uY2xzLTR7ZmlsbDojMjk4MGI5O30uY2xzLTV7ZmlsbDojYWRkZmYzO308L3N0eWxlPjwv ZGVmcz48dGl0bGU+ZXhfcmVkaXN0cmlidXRlX21vdGlvbjwvdGl0bGU+PGcgaWQ9ImV4X2RlbGV0 ZSI+PHJlY3QgY2xhc3M9ImNscy0xIiB4PSI0Ny4xOSIgeT0iNDUuNDMiIHdpZHRoPSI5IiBoZWln aHQ9IjkiIHJ4PSIwLjUiIHJ5PSIwLjUiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01NS42OSw0 NS45M3Y4aC04di04aDhtMC0xaC04YTEsMSwwLDAsMC0xLDF2OGExLDEsMCwwLDAsMSwxaDhhMSwx LDAsMCwwLDEtMXYtOGExLDEsMCwwLDAtMS0xWiIvPjxyZWN0IGNsYXNzPSJjbHMtMSIgeD0iNy44 MSIgeT0iNDUuNDMiIHdpZHRoPSI5IiBoZWlnaHQ9IjkiIHJ4PSIwLjUiIHJ5PSIwLjUiLz48cGF0 aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNi4zMSw0NS45M3Y4aC04di04aDhtMC0xaC04YTEsMSwwLDAs MC0xLDF2OGExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCwwLDEtMXYtOGExLDEsMCwwLDAtMS0xWiIv PjxyZWN0IGNsYXNzPSJjbHMtMSIgeD0iMjcuNTEiIHk9IjkuNTciIHdpZHRoPSI5IiBoZWlnaHQ9 IjkiIHJ4PSIwLjUiIHJ5PSIwLjUiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zNiwxMC4wN3Y4 SDI4di04aDhtMC0xSDI4YTEsMSwwLDAsMC0xLDF2OGExLDEsMCwwLDAsMSwxaDhhMSwxLDAsMCww LDEtMXYtOGExLDEsMCwwLDAtMS0xWiIvPjxsaW5lIGNsYXNzPSJjbHMtMyIgeDE9IjIwLjIzIiB5 MT0iNDMiIHgyPSIyNC4wMSIgeTI9IjQwLjgyIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNMTgu MTQsNDQuMmExMi4wOSwxMi4wOSwwLDAsMSwzLjkxLS4wNmwtMS41NS0xLjMtLjM1LTJBMTIuMDgs MTIuMDgsMCwwLDEsMTguMTQsNDQuMloiLz48bGluZSBjbGFzcz0iY2xzLTMiIHgxPSIzOS45NiIg eTE9IjQxLjAyIiB4Mj0iNDMuNzUiIHkyPSI0My4yIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJN NDUuODQsNDQuNGExMi4wOSwxMi4wOSwwLDAsMC0zLjkxLS4wNkw0My40Nyw0M2wuMzUtMkExMi4w OCwxMi4wOCwwLDAsMCw0NS44NCw0NC40WiIvPjxsaW5lIGNsYXNzPSJjbHMtMyIgeDE9IjMyLjA4 IiB5MT0iMjIuNDgiIHgyPSIzMi4wOCIgeTI9IjI2Ljg1Ii8+PHBhdGggY2xhc3M9ImNscy00IiBk PSJNMzIuMDksMjAuMDdhMTIuMDksMTIuMDksMCwwLDEtMS45MSwzLjQybDEuOS0uNjksMS45LjY5 QTEyLjA4LDEyLjA4LDAsMCwxLDMyLjA5LDIwLjA3WiIvPjxjaXJjbGUgY2xhc3M9ImNscy01IiBj eD0iMzIuMDgiIGN5PSIzNS45MyIgcj0iNy41Ii8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNMzIu MDgsMjguOTNhNyw3LDAsMSwxLTcsNyw3LDcsMCwwLDEsNy03bTAtMWE4LDgsMCwxLDAsOCw4LDgs OCwwLDAsMC04LThaIi8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9yZXN1bHQuc3Zn IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X3Jlc3VsdC5zdmcKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5mOGJiZDBhYjYKLS0tIC9kZXYvbnVsbAor KysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfcmVzdWx0LnN2ZwpAQCAt MCwwICsxIEBACis8c3ZnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxucz0iaHR0cDovL3d3dy53 My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMSwu Y2xzLTZ7ZmlsbDojZjBlY2I2O30uY2xzLTJ7ZmlsbDojYzE4ZjM2O30uY2xzLTN7ZmlsbDojYWRk ZmYzO30uY2xzLTR7ZmlsbDojMjk4MGI5O30uY2xzLTV7b3BhY2l0eTowLjg7fS5jbHMtNntzdHJv a2U6IzM0NDk1ZTtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmV4 X3Jlc3VsdDwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTAsNTcuNDdjLTEuMzcsMC0x LjUtLjEzLTEuNS0xLjVWMTUuNTNoNDdWNTZjMCwxLjM3LS4xMywxLjUtMS41LDEuNVoiLz48cGF0 aCBjbGFzcz0iY2xzLTIiIGQ9Ik01NSwxNlY1NmEzLjI4LDMuMjgsMCwwLDEtLjA4LjlBMi4xOCwy LjE4LDAsMCwxLDU0LDU3SDEwYTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMEEyLjE3LDIuMTcsMCww LDEsOSw1NlYxNkg1NW0xLTFIOFY1NmMwLDEuNjUuMzUsMiwyLDJINTRjMS42NSwwLDItLjM1LDIt MlYxNVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik04LjUsMTUuNTNWOGMwLTEuMzcuMTMtMS41 LDEuNS0xLjVINTRjMS4zNywwLDEuNS4xMywxLjUsMS41djcuNVoiLz48cGF0aCBjbGFzcz0iY2xz LTQiIGQ9Ik01NCw3YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwQTIuMTgsMi4xOCwwLDAsMSw1NSw4 djdIOVY4YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjlBMi4xOCwyLjE4LDAsMCwxLDEwLDdINTRtMC0x SDEwQzguMzUsNiw4LDYuMzgsOCw4djhINTZWOGMwLTEuNjUtLjM1LTItMi0yWiIvPjxnIGNsYXNz PSJjbHMtNSI+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMTQiIHkxPSIyNS45NyIgeDI9IjIzLjk3 IiB5Mj0iMjUuOTciLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSIxNCIgeTE9IjM0LjM0IiB4Mj0i MjMuOTciIHkyPSIzNC4zNCIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjE0IiB5MT0iNDIuNzEi IHgyPSIyMy45NyIgeTI9IjQyLjcxIi8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMTQiIHkxPSI1 MS4wOCIgeDI9IjIzLjk3IiB5Mj0iNTEuMDgiLz48L2c+PGcgY2xhc3M9ImNscy01Ij48bGluZSBj bGFzcz0iY2xzLTYiIHgxPSIxNCIgeTE9IjIxLjk3IiB4Mj0iMjMuOTciIHkyPSIyMS45NyIvPjxs aW5lIGNsYXNzPSJjbHMtNiIgeDE9IjE0IiB5MT0iMzAuMzQiIHgyPSIyMy45NyIgeTI9IjMwLjM0 Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMTQiIHkxPSIzOC43MSIgeDI9IjIzLjk3IiB5Mj0i MzguNzEiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSIxNCIgeTE9IjQ3LjA4IiB4Mj0iMjMuOTci IHkyPSI0Ny4wOCIvPjwvZz48ZyBjbGFzcz0iY2xzLTUiPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9 IjE0IiB5MT0iMTEuMDMiIHgyPSIyMy45NyIgeTI9IjExLjAzIi8+PC9nPjxnIGNsYXNzPSJjbHMt NSI+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMjciIHkxPSIxMS4wMyIgeDI9IjM2Ljk3IiB5Mj0i MTEuMDMiLz48L2c+PGcgY2xhc3M9ImNscy01Ij48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI0MCIg eTE9IjExLjAzIiB4Mj0iNDkuOTciIHkyPSIxMS4wMyIvPjwvZz48ZyBjbGFzcz0iY2xzLTUiPjxs aW5lIGNsYXNzPSJjbHMtNiIgeDE9IjI3IiB5MT0iMjUuOTciIHgyPSIzNi45NyIgeTI9IjI1Ljk3 Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMjciIHkxPSIzNC4zNCIgeDI9IjM2Ljk3IiB5Mj0i MzQuMzQiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSIyNyIgeTE9IjQyLjcxIiB4Mj0iMzYuOTci IHkyPSI0Mi43MSIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjI3IiB5MT0iNTEuMDgiIHgyPSIz Ni45NyIgeTI9IjUxLjA4Ii8+PC9nPjxnIGNsYXNzPSJjbHMtNSI+PGxpbmUgY2xhc3M9ImNscy02 IiB4MT0iMjciIHkxPSIyMS45NyIgeDI9IjM2Ljk3IiB5Mj0iMjEuOTciLz48bGluZSBjbGFzcz0i Y2xzLTYiIHgxPSIyNyIgeTE9IjMwLjM0IiB4Mj0iMzYuOTciIHkyPSIzMC4zNCIvPjxsaW5lIGNs YXNzPSJjbHMtNiIgeDE9IjI3IiB5MT0iMzguNzEiIHgyPSIzNi45NyIgeTI9IjM4LjcxIi8+PGxp bmUgY2xhc3M9ImNscy02IiB4MT0iMjciIHkxPSI0Ny4wOCIgeDI9IjM2Ljk3IiB5Mj0iNDcuMDgi Lz48L2c+PGcgY2xhc3M9ImNscy01Ij48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI0MCIgeTE9IjI1 Ljk3IiB4Mj0iNDkuOTciIHkyPSIyNS45NyIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjQwIiB5 MT0iMzQuMzQiIHgyPSI0OS45NyIgeTI9IjM0LjM0Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0i NDAiIHkxPSI0Mi43MSIgeDI9IjQ5Ljk3IiB5Mj0iNDIuNzEiLz48bGluZSBjbGFzcz0iY2xzLTYi IHgxPSI0MCIgeTE9IjUxLjA4IiB4Mj0iNDkuOTciIHkyPSI1MS4wOCIvPjwvZz48ZyBjbGFzcz0i Y2xzLTUiPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjQwIiB5MT0iMjEuOTciIHgyPSI0OS45NyIg eTI9IjIxLjk3Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iNDAiIHkxPSIzMC4zNCIgeDI9IjQ5 Ljk3IiB5Mj0iMzAuMzQiLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI0MCIgeTE9IjM4LjcxIiB4 Mj0iNDkuOTciIHkyPSIzOC43MSIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjQwIiB5MT0iNDcu MDgiIHgyPSI0OS45NyIgeTI9IjQ3LjA4Ii8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5k IG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9l eF9zY2FuLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9zY2FuLnN2 ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLmZlMzIxNjEwNQotLS0gL2Rl di9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9zY2FuLnN2 ZwpAQCAtMCwwICsxIEBACis8c3ZnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxucz0iaHR0cDov L3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5j bHMtMSwuY2xzLTIsLmNscy04e2ZpbGw6IzI5ODBiOTt9LmNscy0xLC5jbHMtMntzdHJva2U6IzI5 ODBiOTtzdHJva2UtbGluZWpvaW46cm91bmQ7fS5jbHMtMntzdHJva2UtbGluZWNhcDpyb3VuZDtz dHJva2Utd2lkdGg6MnB4O30uY2xzLTMsLmNscy02e2ZpbGw6I2YwZWNiNjt9LmNscy00e2ZpbGw6 I2MxOGYzNjt9LmNscy01e29wYWNpdHk6MC44O30uY2xzLTZ7c3Ryb2tlOiNjMThmMzY7c3Ryb2tl LW1pdGVybGltaXQ6MTA7fS5jbHMtN3tmaWxsOiNhZGRmZjM7fTwvc3R5bGU+PC9kZWZzPjx0aXRs ZT5leF9zY2FuPC90aXRsZT48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iOS4wNiA1MC43 OCA1LjU4IDQ2LjE0IDEyLjU0IDQ2LjE0IDkuMDYgNTAuNzgiLz48bGluZSBjbGFzcz0iY2xzLTIi IHgxPSI5LjA2IiB5MT0iNDYuNzciIHgyPSI5LjA2IiB5Mj0iMTUuOCIvPjxwYXRoIGNsYXNzPSJj bHMtMyIgZD0iTTE4LjQzLDU3LjQ3Yy0xLjM4LDAtMS41LS4xMi0xLjUtMS41VjE1LjUzaDQxVjU2 YzAsMS4zOC0uMTIsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNNTcuNDEs MTZWNTZhMy43MSwzLjcxLDAsMCwxLS4wNy45LDIuMTYsMi4xNiwwLDAsMS0uOTMuMWgtMzhhMy41 NCwzLjU0LDAsMCwxLS45LS4wN2gwYTIuMTYsMi4xNiwwLDAsMS0uMS0uOTNWMTZoNDBtMS0xaC00 MlY1NmMwLDEuNjUuMzUsMiwyLDJoMzhjMS42NSwwLDItLjM1LDItMlYxNVoiLz48ZyBjbGFzcz0i Y2xzLTUiPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjI1LjEzIiB5MT0iNTYuOTciIHgyPSIyNS4x MyIgeTI9IjE1Ljk3Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iNDEuNTIiIHkxPSI1Ni45NyIg eDI9IjQxLjUyIiB5Mj0iMTUuOTciLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSIzMy4zMiIgeTE9 IjU2Ljk3IiB4Mj0iMzMuMzIiIHkyPSIxNS45NyIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjQ5 LjcyIiB5MT0iNTYuOTciIHgyPSI0OS43MiIgeTI9IjE1Ljk3Ii8+PGxpbmUgY2xhc3M9ImNscy02 IiB4MT0iMTcuNDIiIHkxPSIyMy45NyIgeDI9IjU3LjQiIHkyPSIyMy45NyIvPjxsaW5lIGNsYXNz PSJjbHMtNiIgeDE9IjE3LjQyIiB5MT0iMzIuMzQiIHgyPSI1Ny40IiB5Mj0iMzIuMzQiLz48bGlu ZSBjbGFzcz0iY2xzLTYiIHgxPSIxNy40MiIgeTE9IjQwLjcxIiB4Mj0iNTcuNCIgeTI9IjQwLjcx Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iMTcuNDIiIHkxPSI0OS4wOCIgeDI9IjU3LjQiIHky PSI0OS4wOCIvPjwvZz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik00OS43MywxNS41M3YtOWg2LjY5 YzEuMzcsMCwxLjUuMTIsMS41LDEuNXY3LjVaIi8+PHBhdGggY2xhc3M9ImNscy04IiBkPSJNNTYu NDIsN2EzLjU0LDMuNTQsMCwwLDEsLjkuMDdoMGEyLjE2LDIuMTYsMCwwLDEsLjEuOTN2N0g1MC4y M1Y3aDYuMTltMC0xSDQ5LjIzVjE2aDkuMTlWOGMwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRoIGNs YXNzPSJjbHMtNyIgZD0iTTE2LjkyLDE1LjUzVjhjMC0xLjM4LjEzLTEuNSwxLjUtMS41aDYuN3Y5 WiIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTI0LjYyLDd2OGgtNy4yVjhhMy4xOCwzLjE4LDAs MCwxLC4wOC0uOSwyLjA4LDIuMDgsMCwwLDEsLjkyLS4xaDYuMm0xLTFoLTcuMmMtMS42NSwwLTIs LjM1LTIsMnY4aDkuMlY2WiIvPjxyZWN0IGNsYXNzPSJjbHMtNyIgeD0iNDEuNTIiIHk9IjYuNTMi IHdpZHRoPSI4LjE5IiBoZWlnaHQ9IjkiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik00OS4yMSw3 djhINDJWN2g3LjE5bTEtMUg0MVYxNmg5LjE5VjZaIi8+PHJlY3QgY2xhc3M9ImNscy03IiB4PSIz My4zMyIgeT0iNi41MyIgd2lkdGg9IjguMTkiIGhlaWdodD0iOSIvPjxwYXRoIGNsYXNzPSJjbHMt OCIgZD0iTTQxLDd2OEgzMy44M1Y3SDQxbTEtMUgzMi44M1YxNkg0MlY2WiIvPjxyZWN0IGNsYXNz PSJjbHMtNyIgeD0iMjUuMTQiIHk9IjYuNTMiIHdpZHRoPSI4LjE3IiBoZWlnaHQ9IjkiLz48cGF0 aCBjbGFzcz0iY2xzLTgiIGQ9Ik0zMi44MSw3djhIMjUuNjRWN2g3LjE3bTEtMUgyNC42NFYxNmg5 LjE3VjZaIi8+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X3NlZWsuc3ZnIGIvd2ViL3BnYWRt aW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X3NlZWsuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMC4uNmE3NWE1ZWFiCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X3NlZWsuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcg aWQ9Il8xIiBkYXRhLW5hbWU9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIg dmlld0JveD0iMCAwIDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0xLC5jbHMtNHtmaWxsOiNmMGVj YjY7fS5jbHMtMntmaWxsOiNjMThmMzY7fS5jbHMtM3tvcGFjaXR5OjAuODt9LmNscy00e3N0cm9r ZTojYzE4ZjM2O3N0cm9rZS1taXRlcmxpbWl0OjEwO30uY2xzLTV7ZmlsbDojYWRkZmYzO30uY2xz LTZ7ZmlsbDojMjk4MGI5O30uY2xzLTcsLmNscy04e2ZpbGw6IzUyOGQxOTtzdHJva2U6IzUyOGQx OTtzdHJva2UtbGluZWpvaW46cm91bmQ7fS5jbHMtOHtzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJv a2Utd2lkdGg6MnB4O30uY2xzLTl7ZmlsbDojMzQ0OTVlO308L3N0eWxlPjwvZGVmcz48dGl0bGU+ ZXhfc2VlazwvdGl0bGU+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTgsNTcuNDZjLTEuMzcsMC0x LjUtLjEzLTEuNS0xLjVWMTUuNTJoNDFWNTZjMCwxLjM3LS4xMywxLjUtMS41LDEuNVoiLz48cGF0 aCBjbGFzcz0iY2xzLTIiIGQ9Ik01NywxNlY1NmEzLjI4LDMuMjgsMCwwLDEtLjA4LjlBMi4xOCwy LjE4LDAsMCwxLDU2LDU3SDE4YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMEEyLjE4LDIuMTgsMCww LDEsMTcsNTZWMTZINTdtMS0xSDE2VjU2YzAsMS42NS4zNSwyLDIsMkg1NmMxLjY1LDAsMi0uMzUs Mi0yVjE1WiIvPjxnIGNsYXNzPSJjbHMtMyI+PGxpbmUgY2xhc3M9ImNscy00IiB4MT0iMjQuNyIg eTE9IjU2Ljk1IiB4Mj0iMjQuNyIgeTI9IjE1Ljk2Ii8+PGxpbmUgY2xhc3M9ImNscy00IiB4MT0i NDEuMSIgeTE9IjU2Ljk1IiB4Mj0iNDEuMSIgeTI9IjE1Ljk2Ii8+PGxpbmUgY2xhc3M9ImNscy00 IiB4MT0iMzIuOSIgeTE9IjU2Ljk1IiB4Mj0iMzIuOSIgeTI9IjE1Ljk2Ii8+PGxpbmUgY2xhc3M9 ImNscy00IiB4MT0iNDkuMyIgeTE9IjU2Ljk1IiB4Mj0iNDkuMyIgeTI9IjE1Ljk2Ii8+PGxpbmUg Y2xhc3M9ImNscy00IiB4MT0iMTciIHkxPSIyMy45NSIgeDI9IjU2Ljk3IiB5Mj0iMjMuOTUiLz48 bGluZSBjbGFzcz0iY2xzLTQiIHgxPSIxNyIgeTE9IjMyLjMyIiB4Mj0iNTYuOTciIHkyPSIzMi4z MiIvPjxsaW5lIGNsYXNzPSJjbHMtNCIgeDE9IjE3IiB5MT0iNDAuNjkiIHgyPSI1Ni45NyIgeTI9 IjQwLjY5Ii8+PGxpbmUgY2xhc3M9ImNscy00IiB4MT0iMTciIHkxPSI0OS4wNiIgeDI9IjU2Ljk3 IiB5Mj0iNDkuMDYiLz48L2c+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNNDkuMzEsMTUuNTF2LTlI NTZjMS4zNywwLDEuNS4xMywxLjUsMS41djcuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik01 Niw3YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwQTIuMTgsMi4xOCwwLDAsMSw1Nyw4djdINDkuODFW N0g1Nm0wLTFINDguODFWMTZINThWOGMwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRoIGNsYXNzPSJj bHMtNSIgZD0iTTE2LjUxLDE1LjUxVjhjMC0xLjM3LjEzLTEuNSwxLjUtMS41SDI0Ljd2OVoiLz48 cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik0yNC4yLDd2OEgxN1Y4YTMuMjgsMy4yOCwwLDAsMSwuMDgt LjlBMi4xOCwyLjE4LDAsMCwxLDE4LDdIMjQuMm0xLTFIMThjLTEuNjUsMC0yLC4zNS0yLDJ2OEgy NS4yVjZaIi8+PHJlY3QgY2xhc3M9ImNscy01IiB4PSI0MS4xIiB5PSI2LjUxIiB3aWR0aD0iOC4x OSIgaGVpZ2h0PSI5Ii8+PHBhdGggY2xhc3M9ImNscy02IiBkPSJNNDguNzksN3Y4SDQxLjZWN2g3 LjE4bTEtMUg0MC42MVYxNmg5LjE5VjZaIi8+PHJlY3QgY2xhc3M9ImNscy01IiB4PSIzMi45MSIg eT0iNi41MSIgd2lkdGg9IjguMTkiIGhlaWdodD0iOSIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0i TTQwLjYsN3Y4SDMzLjQxVjdINDAuNm0xLTFIMzIuNDJWMTZINDEuNlY2WiIvPjxyZWN0IGNsYXNz PSJjbHMtNSIgeD0iMjQuNzIiIHk9IjYuNTEiIHdpZHRoPSI4LjE3IiBoZWlnaHQ9IjkiLz48cGF0 aCBjbGFzcz0iY2xzLTYiIGQ9Ik0zMi40LDd2OEgyNS4yMlY3SDMyLjRtMS0xSDI0LjIyVjE2SDMz LjRWNloiLz48cG9seWdvbiBjbGFzcz0iY2xzLTciIHBvaW50cz0iMTQuOTEgNTMuMSAxMS41MyA1 MC41NyAxMS41MyA1NS42MyAxNC45MSA1My4xIi8+PGxpbmUgY2xhc3M9ImNscy04IiB4MT0iMTEu MjUiIHkxPSI1My4xIiB4Mj0iNC4xNCIgeTI9IjUzLjEiLz48cG9seWdvbiBjbGFzcz0iY2xzLTci IHBvaW50cz0iMTQuOTEgMzYuMjkgMTEuNTMgMzMuNzYgMTEuNTMgMzguODIgMTQuOTEgMzYuMjki Lz48bGluZSBjbGFzcz0iY2xzLTgiIHgxPSIxMS4yNSIgeTE9IjM2LjI5IiB4Mj0iNC4xNCIgeTI9 IjM2LjI5Ii8+PGxpbmUgY2xhc3M9ImNscy04IiB4MT0iNCIgeTE9IjE1LjY2IiB4Mj0iNCIgeTI9 IjUzLjEiLz48cmVjdCBjbGFzcz0iY2xzLTkiIHg9IjE3Ljk5IiB5PSIzMy43NyIgd2lkdGg9IjUu MjIiIGhlaWdodD0iNS40NCIvPjxyZWN0IGNsYXNzPSJjbHMtOSIgeD0iMTcuOTkiIHk9IjUwLjU3 IiB3aWR0aD0iNS4yMiIgaGVpZ2h0PSI1LjQ0Ii8+PC9zdmc+ClwgTm8gbmV3bGluZSBhdCBlbmQg b2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4 X3NldG9wLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF9zZXRvcC5z dmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi40M2IzMDliNWYKLS0tIC9k ZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfc2V0b3Au c3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgaWQ9Il8xIiBkYXRhLW5hbWU9IjEiIHhtbG5zPSJodHRw Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDY0IDY0Ij48ZGVmcz48c3R5bGU+ LmNscy0xe29wYWNpdHk6MC43O30uY2xzLTJ7ZmlsbDojZjBlY2I2O30uY2xzLTN7ZmlsbDojYzE4 ZjM1O30uY2xzLTR7ZmlsbDojZDNkNGYzO30uY2xzLTV7ZmlsbDojNjY2YmQxO30uY2xzLTZ7Zmls bDojYWRkZmYzO30uY2xzLTd7ZmlsbDojMjk4MGI5O308L3N0eWxlPjwvZGVmcz48dGl0bGU+ZXhf c2V0b3A8L3RpdGxlPjxnIGNsYXNzPSJjbHMtMSI+PHJlY3QgY2xhc3M9ImNscy0yIiB4PSI0Ni4w MSIgeT0iMzUuNTgiIHdpZHRoPSI3IiBoZWlnaHQ9IjciLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9 Ik01Mi41MSwzNi4wOHY2aC02di02aDZtMS0xaC04djhoOHYtOFoiLz48cGF0aCBjbGFzcz0iY2xz LTIiIGQ9Ik0xOS41MSw0OS41NmExLjUsMS41LDAsMCwxLTEuNS0xLjV2LTUuNWg3djdaIi8+PHBh dGggY2xhc3M9ImNscy0zIiBkPSJNMjQuNTEsNDMuMDZ2NmgtNWExLDEsMCwwLDEtMS0xdi01aDZt MS0xaC04djZhMiwyLDAsMCwwLDIsMmg2di04WiIvPjxyZWN0IGNsYXNzPSJjbHMtMiIgeD0iMjUu MDQiIHk9IjQyLjU2IiB3aWR0aD0iNyIgaGVpZ2h0PSI3Ii8+PHBhdGggY2xhc3M9ImNscy0zIiBk PSJNMzEuNTQsNDMuMDZ2NmgtNnYtNmg2bTEtMWgtOHY4aDh2LThaIi8+PHJlY3QgY2xhc3M9ImNs cy0yIiB4PSIzMi4wMSIgeT0iNDIuNTYiIHdpZHRoPSI3IiBoZWlnaHQ9IjciLz48cGF0aCBjbGFz cz0iY2xzLTMiIGQ9Ik0zOC41MSw0My4wNnY2aC02di02aDZtMS0xaC04djhoOHYtOFoiLz48cmVj dCBjbGFzcz0iY2xzLTIiIHg9IjM5LjA0IiB5PSI0Mi41NiIgd2lkdGg9IjciIGhlaWdodD0iNyIv PjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTQ1LjU0LDQzLjA2djZoLTZ2LTZoNm0xLTFoLTh2OGg4 di04WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQ2LDQ5LjU2di03aDd2NS41YTEuNSwxLjUs MCwwLDEtMS41LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik01Mi41MSw0My4wNnY1YTEs MSwwLDAsMS0xLDFoLTV2LTZoNm0xLTFoLTh2OGg2YTIsMiwwLDAsMCwyLTJ2LTZaIi8+PHBhdGgg Y2xhc3M9ImNscy0yIiBkPSJNNDYsMjguNDN2LTdoNS41YTEuNSwxLjUsMCwwLDEsMS41LDEuNXY1 LjVaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNNTEuNTEsMjEuOTNhMSwxLDAsMCwxLDEsMXY1 aC02di02aDVtMC0xaC02djhoOHYtNmEyLDIsMCwwLDAtMi0yWiIvPjxyZWN0IGNsYXNzPSJjbHMt MiIgeD0iNDYuMDEiIHk9IjI4LjUiIHdpZHRoPSI3IiBoZWlnaHQ9IjciLz48cGF0aCBjbGFzcz0i Y2xzLTMiIGQ9Ik01Mi41MSwyOXY2aC02VjI5aDZtMS0xaC04djhoOFYyOFoiLz48L2c+PGcgY2xh c3M9ImNscy0xIj48cmVjdCBjbGFzcz0iY2xzLTQiIHg9IjEwLjk5IiB5PSIyOC4zNiIgd2lkdGg9 IjciIGhlaWdodD0iNyIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTE3LjQ5LDI4Ljg2djZoLTZ2 LTZoNm0xLTFoLTh2OGg4di04WiIvPjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTEyLjQ5LDQyLjM2 YTEuNSwxLjUsMCwwLDEtMS41LTEuNXYtNS41aDd2N1oiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9 Ik0xNy40OSwzNS44NnY2aC01YTEsMSwwLDAsMS0xLTF2LTVoNm0xLTFoLTh2NmEyLDIsMCwwLDAs MiwyaDZ2LThaIi8+PHJlY3QgY2xhc3M9ImNscy00IiB4PSIxMC45OSIgeT0iMjEuMjgiIHdpZHRo PSI3IiBoZWlnaHQ9IjciLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0xNy40OSwyMS43OHY2aC02 di02aDZtMS0xaC04djhoOHYtOFoiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xMSwyMS40NHYt NS41YTEuNSwxLjUsMCwwLDEsMS41LTEuNUgxOHY3WiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0i TTE3LjQ5LDE0Ljk0djZoLTZ2LTVhMSwxLDAsMCwxLDEtMWg1bTEtMWgtNmEyLDIsMCwwLDAtMiwy djZoOHYtOFoiLz48cmVjdCBjbGFzcz0iY2xzLTQiIHg9IjE3Ljk2IiB5PSIxNC40NCIgd2lkdGg9 IjciIGhlaWdodD0iNyIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTI0LjQ2LDE0Ljk0djZoLTZ2 LTZoNm0xLTFoLTh2OGg4di04WiIvPjxyZWN0IGNsYXNzPSJjbHMtNCIgeD0iMjQuOTkiIHk9IjE0 LjQ0IiB3aWR0aD0iNyIgaGVpZ2h0PSI3Ii8+PHBhdGggY2xhc3M9ImNscy01IiBkPSJNMzEuNDks MTQuOTR2NmgtNnYtNmg2bTEtMWgtOHY4aDh2LThaIi8+PHJlY3QgY2xhc3M9ImNscy00IiB4PSIz Mi4wMSIgeT0iMTQuNDQiIHdpZHRoPSI3IiBoZWlnaHQ9IjciLz48cGF0aCBjbGFzcz0iY2xzLTUi IGQ9Ik0zOC41MSwxNC45NHY2aC02di02aDZtMS0xaC04djhoOHYtOFoiLz48cGF0aCBjbGFzcz0i Y2xzLTQiIGQ9Ik0zOSwyMS40NHYtN2g1LjVhMS41LDEuNSwwLDAsMSwxLjUsMS41djUuNVoiLz48 cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik00NC40OSwxNC45NGExLDEsMCwwLDEsMSwxdjVoLTZ2LTZo NW0wLTFoLTZ2OGg4di02YTIsMiwwLDAsMC0yLTJaIi8+PC9nPjxyZWN0IGNsYXNzPSJjbHMtNiIg eD0iMTguMDEiIHk9IjIxLjQzIiB3aWR0aD0iNyIgaGVpZ2h0PSI3Ii8+PHBhdGggY2xhc3M9ImNs cy03IiBkPSJNMjQuNTEsMjEuOTN2NmgtNnYtNmg2bTEtMWgtOHY4aDh2LThaIi8+PHJlY3QgY2xh c3M9ImNscy02IiB4PSIyNS4wNCIgeT0iMjEuNDMiIHdpZHRoPSI3IiBoZWlnaHQ9IjciLz48cGF0 aCBjbGFzcz0iY2xzLTciIGQ9Ik0zMS41NCwyMS45M3Y2aC02di02aDZtMS0xaC04djhoOHYtOFoi Lz48cmVjdCBjbGFzcz0iY2xzLTYiIHg9IjM5LjA0IiB5PSIyMS40MyIgd2lkdGg9IjciIGhlaWdo dD0iNyIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTQ1LjU0LDIxLjkzdjZoLTZ2LTZoNm0xLTFo LTh2OGg4di04WiIvPjxyZWN0IGNsYXNzPSJjbHMtNiIgeD0iMzkuMDQiIHk9IjI4LjUiIHdpZHRo PSI3IiBoZWlnaHQ9IjciLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik00NS41NCwyOXY2aC02VjI5 aDZtMS0xaC04djhoOFYyOFoiLz48cmVjdCBjbGFzcz0iY2xzLTYiIHg9IjE4LjAxIiB5PSIzNS41 OCIgd2lkdGg9IjciIGhlaWdodD0iNyIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTI0LjUxLDM2 LjA4djZoLTZ2LTZoNm0xLTFoLTh2OGg4di04WiIvPjxyZWN0IGNsYXNzPSJjbHMtNiIgeD0iMjUu MDQiIHk9IjM1LjU4IiB3aWR0aD0iNyIgaGVpZ2h0PSI3Ii8+PHBhdGggY2xhc3M9ImNscy03IiBk PSJNMzEuNTQsMzYuMDh2NmgtNnYtNmg2bTEtMWgtOHY4aDh2LThaIi8+PHJlY3QgY2xhc3M9ImNs cy02IiB4PSIzMi4wMSIgeT0iMzUuNTgiIHdpZHRoPSI3IiBoZWlnaHQ9IjciLz48cGF0aCBjbGFz cz0iY2xzLTciIGQ9Ik0zOC41MSwzNi4wOHY2aC02di02aDZtMS0xaC04djhoOHYtOFoiLz48cmVj dCBjbGFzcz0iY2xzLTYiIHg9IjM5LjA0IiB5PSIzNS41OCIgd2lkdGg9IjciIGhlaWdodD0iNyIv PjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTQ1LjU0LDM2LjA4djZoLTZ2LTZoNm0xLTFoLTh2OGg4 di04WiIvPjxyZWN0IGNsYXNzPSJjbHMtNiIgeD0iMzIuMDEiIHk9IjIxLjQzIiB3aWR0aD0iNyIg aGVpZ2h0PSI3Ii8+PHBhdGggY2xhc3M9ImNscy03IiBkPSJNMzguNTEsMjEuOTN2NmgtNnYtNmg2 bTEtMWgtOHY4aDh2LThaIi8+PHJlY3QgY2xhc3M9ImNscy02IiB4PSIxOC4wMSIgeT0iMjguNSIg d2lkdGg9IjciIGhlaWdodD0iNyIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTI0LjUxLDI5djZo LTZWMjloNm0xLTFoLTh2OGg4VjI4WiIvPjxyZWN0IGNsYXNzPSJjbHMtNiIgeD0iMjUuMDQiIHk9 IjI4LjUiIHdpZHRoPSI3IiBoZWlnaHQ9IjciLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik0zMS41 NCwyOXY2aC02VjI5aDZtMS0xaC04djhoOFYyOFoiLz48cmVjdCBjbGFzcz0iY2xzLTYiIHg9IjMy LjAxIiB5PSIyOC41IiB3aWR0aD0iNyIgaGVpZ2h0PSI3Ii8+PHBhdGggY2xhc3M9ImNscy03IiBk PSJNMzguNTEsMjl2NmgtNlYyOWg2bTEtMWgtOHY4aDhWMjhaIi8+PC9zdmc+ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxh aW4vaW1nL2V4X3NvcnQuc3ZnIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4 X3NvcnQuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNTY4NjM5YWFk Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4 X3NvcnQuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgaWQ9Il8xIiBkYXRhLW5hbWU9IjEiIHhtbG5z PSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDY0IDY0Ij48ZGVmcz48 c3R5bGU+LmNscy0xe2ZpbGw6I2QzZDRmMzt9LmNscy0ye2ZpbGw6IzY2NmJkMTt9LmNscy0ze2Zp bGw6I2I2ZWVmZjt9LmNscy00e2ZpbGw6IzBjYzVmZjt9LmNscy01e2ZpbGw6I2M4ZmZhYzt9LmNs cy02e2ZpbGw6IzQ4ZDYwMTt9LmNscy03e2ZpbGw6I2YwZWNiNjt9LmNscy04e2ZpbGw6I2MxOGYz NTt9LmNscy05e2ZpbGw6I2ZmZTdlNzt9LmNscy0xMHtmaWxsOiNmZjNkM2Q7fS5jbHMtMTF7Zmls bDojYWRkZmYzO30uY2xzLTEye2ZpbGw6IzI5ODBiOTt9LmNscy0xM3tmaWxsOiMzNDQ5NWU7fS5j bHMtMTQsLmNscy0xNXtmaWxsOiM1MjhkMTk7c3Ryb2tlOiM1MjhkMTk7c3Ryb2tlLWxpbmVqb2lu OnJvdW5kO30uY2xzLTE1e3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS13aWR0aDoycHg7fTwv c3R5bGU+PC9kZWZzPjx0aXRsZT5leF9zb3J0PC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9 Ik0xMy4xOSw1MC45NGMtMS4zNywwLTEuNS0uMTMtMS41LTEuNXYtNC44SDIzdjYuM1oiLz48cGF0 aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yMi40Nyw0NS4xNHY1LjNIMTMuMTlhMy4yNSwzLjI1LDAsMCwx LS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJ2LTQuM0gyMi40N20xLTFIMTEuMTl2NS4z YzAsMS42NS4zNSwyLDIsMkgyMy40N3YtNy4zWiIvPjxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMTEu NjkiIHk9IjM4LjMxIiB3aWR0aD0iMTEuMjgiIGhlaWdodD0iNi4zIi8+PHBhdGggY2xhc3M9ImNs cy00IiBkPSJNMjIuNDcsMzguODF2NS4zSDEyLjE5di01LjNIMjIuNDdtMS0xSDExLjE5djcuM0gy My40N3YtNy4zWiIvPjxyZWN0IGNsYXNzPSJjbHMtNSIgeD0iMTEuNjkiIHk9IjMxLjk3IiB3aWR0 aD0iMTEuMjgiIGhlaWdodD0iNi4zMSIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTIyLjQ3LDMy LjQ3djUuM0gxMi4xOXYtNS4zSDIyLjQ3bTEtMUgxMS4xOXY3LjNIMjMuNDd2LTcuM1oiLz48cmVj dCBjbGFzcz0iY2xzLTciIHg9IjExLjY5IiB5PSIyNS42OCIgd2lkdGg9IjExLjI4IiBoZWlnaHQ9 IjYuMyIvPjxwYXRoIGNsYXNzPSJjbHMtOCIgZD0iTTIyLjQ3LDI2LjE4djUuM0gxMi4xOXYtNS4z SDIyLjQ3bTEtMUgxMS4xOXY3LjNIMjMuNDd2LTcuM1oiLz48cmVjdCBjbGFzcz0iY2xzLTkiIHg9 IjExLjY5IiB5PSIxOS4zOCIgd2lkdGg9IjExLjI4IiBoZWlnaHQ9IjYuMyIvPjxwYXRoIGNsYXNz PSJjbHMtMTAiIGQ9Ik0yMi40NywxOS44OHY1LjNIMTIuMTl2LTUuM0gyMi40N20xLTFIMTEuMTl2 Ny4zSDIzLjQ3di03LjNaIi8+PHBhdGggY2xhc3M9ImNscy0xMSIgZD0iTTExLjY5LDE5LjM2di00 LjhjMC0xLjM3LjIyLTEuNDQsMS4wNy0xLjQ5SDIxLjljLjg1LDAsMS4wNy4xMiwxLjA3LDEuNDl2 NC44WiIvPjxwYXRoIGNsYXNzPSJjbHMtMTIiIGQ9Ik0yMS44NywxMy41NmgwYTIuMjQsMi4yNCww LDAsMSwuNS4wN2gwYTIuMjMsMi4yMywwLDAsMSwuMS45MnY0LjNIMTIuMTl2LTQuM2EzLjA3LDMu MDcsMCwwLDEsLjA4LS45LDEuMywxLjMsMCwwLDEsLjUyLS4wOWg5LjA4bTEuNi0xaDBabTAsMEgx Mi43NGMtMS4yNS4wNy0xLjU0LjUtMS41NCwydjUuM0gyMy40N3YtNS4zYzAtMS40OC0uMjktMS45 MS0xLjU0LTJaIi8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTE3LjUxLDIwLjkzdjMuMzZoLS43 N1YyMC45M1oiLz48cGF0aCBjbGFzcz0iY2xzLTEzIiBkPSJNMTkuMzIsMjAuOTN2My4zNmgtLjc3 VjIwLjkzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMTMiIGQ9Ik0xNS42NywyMC45M3YzLjM2SDE0LjlW MjAuOTNaIi8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTE3LjUxLDI3LjIydjMuMzZoLS43N1Yy Ny4yMloiLz48cGF0aCBjbGFzcz0iY2xzLTEzIiBkPSJNMTkuMzIsMjcuMjJ2My4zNmgtLjc3VjI3 LjIyWiIvPjxwYXRoIGNsYXNzPSJjbHMtMTMiIGQ9Ik0yMS4wNywyNy4yMnYzLjM2SDIwLjNWMjcu MjJaIi8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTE0LDI3LjIydjMuMzZoLS43N1YyNy4yMloi Lz48cGF0aCBjbGFzcz0iY2xzLTEzIiBkPSJNMTUuNjcsMjcuMjJ2My4zNkgxNC45VjI3LjIyWiIv PjxwYXRoIGNsYXNzPSJjbHMtMTMiIGQ9Ik0xOC42NSwzOS43OHYzLjM2aC0uNzdWMzkuNzhaIi8+ PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTIwLjQsMzkuNzh2My4zNmgtLjc3VjM5Ljc4WiIvPjxw YXRoIGNsYXNzPSJjbHMtMTMiIGQ9Ik0xNS4yMywzOS43OHYzLjM2aC0uNzdWMzkuNzhaIi8+PHBh dGggY2xhc3M9ImNscy0xMyIgZD0iTTE2Ljg3LDM5Ljc4djMuMzZIMTYuMVYzOS43OFoiLz48cGF0 aCBjbGFzcz0iY2xzLTEzIiBkPSJNMTcuNTEsMzMuNTl2My4zNmgtLjc3VjMzLjU5WiIvPjxwYXRo IGNsYXNzPSJjbHMtMTMiIGQ9Ik0xOC42NSw0Ni4xMXYzLjM2aC0uNzdWNDYuMTFaIi8+PHBhdGgg Y2xhc3M9ImNscy0xMyIgZD0iTTE2Ljg3LDQ2LjExdjMuMzZIMTYuMVY0Ni4xMVoiLz48cGF0aCBj bGFzcz0iY2xzLTciIGQ9Ik00Mi41Myw1MC45NGMtMS4zNywwLTEuNS0uMTMtMS41LTEuNXYtNC44 SDUyLjMxdjYuM1oiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik01MS44MSw0NS4xNHY1LjNINDIu NTNhMy4yNiwzLjI2LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJ2LTQuM0g1 MS44MW0xLTFINDAuNTN2NS4zYzAsMS42NS4zNSwyLDIsMkg1Mi44MXYtNy4zWiIvPjxyZWN0IGNs YXNzPSJjbHMtMyIgeD0iNDEuMDMiIHk9IjM4LjMxIiB3aWR0aD0iMTEuMjgiIGhlaWdodD0iNi4z Ii8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNNTEuODEsMzguODF2NS4zSDQxLjUzdi01LjNINTEu ODFtMS0xSDQwLjUzdjcuM0g1Mi44MXYtNy4zWiIvPjxyZWN0IGNsYXNzPSJjbHMtOSIgeD0iNDEu MDMiIHk9IjMxLjk3IiB3aWR0aD0iMTEuMjgiIGhlaWdodD0iNi4zMSIvPjxwYXRoIGNsYXNzPSJj bHMtMTAiIGQ9Ik01MS44MSwzMi40N3Y1LjNINDEuNTN2LTUuM0g1MS44MW0xLTFINDAuNTN2Ny4z SDUyLjgxdi03LjNaIi8+PHJlY3QgY2xhc3M9ImNscy0xIiB4PSI0MS4wMyIgeT0iMjUuNjgiIHdp ZHRoPSIxMS4yOCIgaGVpZ2h0PSI2LjMiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik01MS44MSwy Ni4xOHY1LjNINDEuNTN2LTUuM0g1MS44MW0xLTFINDAuNTN2Ny4zSDUyLjgxdi03LjNaIi8+PHJl Y3QgY2xhc3M9ImNscy01IiB4PSI0MS4wMyIgeT0iMTkuMzgiIHdpZHRoPSIxMS4yOCIgaGVpZ2h0 PSI2LjMiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik01MS44MSwxOS44OHY1LjNINDEuNTN2LTUu M0g1MS44MW0xLTFINDAuNTN2Ny4zSDUyLjgxdi03LjNaIi8+PHBhdGggY2xhc3M9ImNscy0xMSIg ZD0iTTQxLDE5LjM2di00LjhjMC0xLjM3LjIyLTEuNDQsMS4wNy0xLjQ5aDkuMTRjLjg1LDAsMS4w Ny4xMiwxLjA3LDEuNDl2NC44WiIvPjxwYXRoIGNsYXNzPSJjbHMtMTIiIGQ9Ik01MS4yMSwxMy41 NmgwYTIuMjQsMi4yNCwwLDAsMSwuNS4wN2gwYTIuMjMsMi4yMywwLDAsMSwuMS45MnY0LjNINDEu NTN2LTQuM2EzLjA3LDMuMDcsMCwwLDEsLjA4LS45LDEuMywxLjMsMCwwLDEsLjUyLS4wOWg5LjA4 bTEuNi0xaDBabTAsMEg0Mi4wN2MtMS4yNS4wNy0xLjU0LjUtMS41NCwydjUuM0g1Mi44MXYtNS4z YzAtMS40OC0uMjktMS45MS0xLjU0LTJaIi8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTQ2Ljg0 LDMzLjQ0VjM2LjhoLS43N1YzMy40NFoiLz48cGF0aCBjbGFzcz0iY2xzLTEzIiBkPSJNNDguNjYs MzMuNDRWMzYuOGgtLjc3VjMzLjQ0WiIvPjxwYXRoIGNsYXNzPSJjbHMtMTMiIGQ9Ik00NSwzMy40 NFYzNi44aC0uNzdWMzMuNDRaIi8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTQ2Ljg0LDQ2LjEx djMuMzZoLS43N1Y0Ni4xMVoiLz48cGF0aCBjbGFzcz0iY2xzLTEzIiBkPSJNNDguNjYsNDYuMTF2 My4zNmgtLjc3VjQ2LjExWiIvPjxwYXRoIGNsYXNzPSJjbHMtMTMiIGQ9Ik01MC40MSw0Ni4xMXYz LjM2aC0uNzdWNDYuMTFaIi8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTQzLjM2LDQ2LjExdjMu MzZoLS43N1Y0Ni4xMVoiLz48cGF0aCBjbGFzcz0iY2xzLTEzIiBkPSJNNDUsNDYuMTF2My4zNmgt Ljc3VjQ2LjExWiIvPjxwYXRoIGNsYXNzPSJjbHMtMTMiIGQ9Ik00OCwzOS43OHYzLjM2aC0uNzdW MzkuNzhaIi8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTQ5LjczLDM5Ljc4djMuMzZINDlWMzku NzhaIi8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTQ0LjU3LDM5Ljc4djMuMzZINDMuOFYzOS43 OFoiLz48cGF0aCBjbGFzcz0iY2xzLTEzIiBkPSJNNDYuMiwzOS43OHYzLjM2aC0uNzdWMzkuNzha Ii8+PHBhdGggY2xhc3M9ImNscy0xMyIgZD0iTTQ2Ljg0LDIwLjg1djMuMzZoLS43N1YyMC44NVoi Lz48cGF0aCBjbGFzcz0iY2xzLTEzIiBkPSJNNDcuNzMsMjcuMjJ2My4zNkg0N1YyNy4yMloiLz48 cGF0aCBjbGFzcz0iY2xzLTEzIiBkPSJNNDYsMjcuMjJ2My4zNmgtLjc3VjI3LjIyWiIvPjxwb2x5 Z29uIGNsYXNzPSJjbHMtMTQiIHBvaW50cz0iMzcuMzggMzIgMzQgMjkuNDcgMzQgMzQuNTMgMzcu MzggMzIiLz48bGluZSBjbGFzcz0iY2xzLTE1IiB4MT0iMzMuNzIiIHkxPSIzMiIgeDI9IjI2LjYy IiB5Mj0iMzIiLz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfc3VicGxhbi5zdmcgYi93ZWIv cGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfc3VicGxhbi5zdmcKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5lOThlOTlmNzMKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfc3VicGxhbi5zdmcKQEAgLTAsMCAr MSBAQAorPHN2ZyBpZD0iXzEiIGRhdGEtbmFtZT0iMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn LzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjQgNjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7ZmlsbDoj ZjBlY2I2O30uY2xzLTJ7ZmlsbDojYzE4ZjM1O30uY2xzLTN7ZmlsbDojYWRkZmYzO30uY2xzLTR7 ZmlsbDojMjk4MGI5O30uY2xzLTUsLmNscy02LC5jbHMtOHtmaWxsOm5vbmU7fS5jbHMtNXtzdHJv a2U6I2MxOGYzNTtvcGFjaXR5OjAuODt9LmNscy0xMCwuY2xzLTExLC5jbHMtNSwuY2xzLTYsLmNs cy04e3N0cm9rZS1saW5lam9pbjpyb3VuZDt9LmNscy02e3N0cm9rZTojNjY2YmQxO30uY2xzLTEx LC5jbHMtNiwuY2xzLTh7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7fS5jbHMtNiwuY2xzLTh7c3Ryb2tl LXdpZHRoOjEuNXB4O30uY2xzLTd7ZmlsbDojNjY2YmQxO30uY2xzLTh7c3Ryb2tlOiM4ZDgxMTk7 fS5jbHMtOXtmaWxsOiM4ZDgxMTk7fS5jbHMtMTAsLmNscy0xMXtmaWxsOiM1MjhkMTk7c3Ryb2tl OiM1MjhkMTk7fS5jbHMtMTF7c3Ryb2tlLXdpZHRoOjJweDt9PC9zdHlsZT48L2RlZnM+PHRpdGxl PmV4X3N1YnBsYW48L3RpdGxlPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0iTTksNTMuMzhjLTEuMzcs MC0xLjUtLjEzLTEuNS0xLjVWNDAuMzhoNy4yOHYxM1oiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9 Ik0xNC4yMyw0MC44OHYxMkg5YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCww LDEtLjEtLjkydi0xMWg2LjI4bTEtMUg3djEyYzAsMS42NS4zNSwyLDIsMmg2LjI4di0xNFoiLz48 cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNC43Miw1My4zOHYtMTNIMjJ2MTEuNWMwLDEuMzctLjEz LDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTIxLjUsNDAuODh2MTFhMy4y OCwzLjI4LDAsMCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUgxNS4yMnYtMTJIMjEuNW0x LTFIMTQuMjJ2MTRIMjAuNWMxLjY1LDAsMi0uMzUsMi0ydi0xMloiLz48cGF0aCBjbGFzcz0iY2xz LTMiIGQ9Ik03LjQ1LDQwLjM4di00LjVjMC0xLjM3LjEzLTEuNSwxLjUtMS41aDUuNzh2NloiLz48 cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0xNC4yMywzNC44OHY1SDh2LTRBMy4yOCwzLjI4LDAsMCwx LDgsMzVhMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg1LjI4bTEtMUg5Yy0xLjY1LDAtMiwuMzUtMiwy djVoOC4yOHYtN1oiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik0xNC43Miw0MC4zOHYtNkgyMC41 YzEuMzcsMCwxLjUuMTMsMS41LDEuNXY0LjVaIi8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNMjAu NSwzNC44OGEzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2NEgx NS4yMnYtNUgyMC41bTAtMUgxNC4yMnY3SDIyLjV2LTVjMC0xLjY1LS4zNS0yLTItMloiLz48bGlu ZSBjbGFzcz0iY2xzLTUiIHgxPSIxNC40OCIgeTE9IjQ2LjczIiB4Mj0iMjEuOTciIHkyPSI0Ni43 MyIvPjxsaW5lIGNsYXNzPSJjbHMtNSIgeDE9IjcuNDgiIHkxPSI0Ni43MyIgeDI9IjE0LjIyIiB5 Mj0iNDYuNzMiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik00My41Myw1My4zOGMtMS4zNywwLTEu NS0uMTMtMS41LTEuNVY0MC4zOGg3LjI4djEzWiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTQ4 LjgxLDQwLjg4djEySDQzLjUzYTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCww LDEtLjEtLjkydi0xMWg2LjI4bTEtMUg0MS41M3YxMmMwLDEuNjUuMzUsMiwyLDJoNi4yOHYtMTRa Ii8+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNNDkuMyw1My4zOHYtMTNoNy4yOHYxMS41YzAsMS4z Ny0uMTMsMS41LTEuNSwxLjVaIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTYuMDgsNDAuODh2 MTFhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUg0OS44di0xMmg2 LjI4bTEtMUg0OC44djE0aDYuMjhjMS42NSwwLDItLjM1LDItMnYtMTJaIi8+PHBhdGggY2xhc3M9 ImNscy0zIiBkPSJNNDIsNDAuMzh2LTQuNWMwLTEuMzcuMTMtMS41LDEuNS0xLjVoNS43OHY2WiIv PjxwYXRoIGNsYXNzPSJjbHMtNCIgZD0iTTQ4LjgxLDM0Ljg4djVINDIuNTN2LTRhMy4yOCwzLjI4 LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDUuMjhtMS0xSDQzLjUzYy0xLjY1 LDAtMiwuMzUtMiwydjVoOC4yOHYtN1oiLz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik00OS4zLDQw LjM4di02aDUuNzhjMS4zNywwLDEuNS4xMywxLjUsMS41djQuNVoiLz48cGF0aCBjbGFzcz0iY2xz LTQiIGQ9Ik01NS4wOCwzNC44OEEzLjI1LDMuMjUsMCwwLDEsNTYsMzVoMGEyLjE3LDIuMTcsMCww LDEsLjEuOTJ2NEg0OS44di01aDUuMjhtMC0xSDQ4Ljh2N2g4LjI4di01YzAtMS42NS0uMzUtMi0y LTJaIi8+PGxpbmUgY2xhc3M9ImNscy01IiB4MT0iNDkuMDYiIHkxPSI0Ni43MyIgeDI9IjU2LjU1 IiB5Mj0iNDYuNzMiLz48bGluZSBjbGFzcz0iY2xzLTUiIHgxPSI0Mi4wNiIgeTE9IjQ2LjczIiB4 Mj0iNDguOCIgeTI9IjQ2LjczIi8+PHBhdGggY2xhc3M9ImNscy02IiBkPSJNMjMuNSwxMi44OGEz LDMsMCwwLDEsMy0zaDExYTMsMywwLDAsMSwzLDN2MTJhMywzLDAsMCwxLTMsM2gtMTFhMywzLDAs MCwxLTMtM1YxOSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtNyIgcG9pbnRzPSIyMy41IDE2LjU0IDIx LjI3IDE5LjUxIDI1LjczIDE5LjUxIDIzLjUgMTYuNTQiLz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9 Ik0yNywxNS4zOGMwLTEuNjUuMzUtMiwyLTJoNmMxLjY1LDAsMiwuMzUsMiwydjdjMCwxLjY1LS4z NSwyLTIsMkgyOS4yNWMtMS42NSwwLTItLjM1LTItMlYxOS43NCIvPjxwb2x5Z29uIGNsYXNzPSJj bHMtOSIgcG9pbnRzPSIyNy4yMiAxOC41NSAyNS4yNCAyMC45MyAyOSAyMC45MyAyNy4yMiAxOC41 NSIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTAiIHBvaW50cz0iNDAuOTEgNDQuMiAzNy41MyA0MS42 NyAzNy41MyA0Ni43MyA0MC45MSA0NC4yIi8+PGxpbmUgY2xhc3M9ImNscy0xMSIgeDE9IjM5LjI1 IiB5MT0iNDQuMiIgeDI9IjMyLjE0IiB5Mj0iNDQuMiIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTAi IHBvaW50cz0iMjMuMjMgNDQuMiAyNi42MSA0MS42NyAyNi42MSA0Ni43MyAyMy4yMyA0NC4yIi8+ PGxpbmUgY2xhc3M9ImNscy0xMSIgeDE9IjI0LjkiIHkxPSI0NC4yIiB4Mj0iMzIiIHkyPSI0NC4y Ii8+PGxpbmUgY2xhc3M9ImNscy0xMSIgeDE9IjMyIiB5MT0iMjkuNzciIHgyPSIzMiIgeTI9IjQ0 LjIiLz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfdGFibGVfZnVuY19zY2FuLnN2ZyBiL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF90YWJsZV9mdW5jX3NjYW4uc3ZnCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uN2E4NTU1NTA2Ci0tLSAvZGV2L251 bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X3RhYmxlX2Z1bmNf c2Nhbi5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyBpZD0iXzEiIGRhdGEtbmFtZT0iMSIgeG1sbnM9 Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjQgNjQiPjxkZWZzPjxz dHlsZT4uY2xzLTF7ZmlsbDojZjNjN2Q3O30uY2xzLTJ7ZmlsbDojZDA0NDY1O30uY2xzLTN7b3Bh Y2l0eTowLjU7fS5jbHMtNHtmaWxsOm5vbmU7c3Ryb2tlOiNkMDQ0NjU7fS5jbHMtNCwuY2xzLTcs LmNscy04e3N0cm9rZS1saW5lam9pbjpyb3VuZDt9LmNscy01e2ZpbGw6I2FkZGZmMzt9LmNscy02 LC5jbHMtNywuY2xzLTh7ZmlsbDojMjk4MGI5O30uY2xzLTcsLmNscy04e3N0cm9rZTojMjk4MGI5 O30uY2xzLTh7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLXdpZHRoOjJweDt9PC9zdHlsZT48 L2RlZnM+PHRpdGxlPnRhYmxlX2Z1bl9zY2FuPC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9 Ik0yMi44NSw0OWMtMS4zNywwLTEuNS0uMTItMS41LTEuNVYyNEg1NC4xNFY0Ny40N2MwLDEuMzgt LjEzLDEuNS0xLjUsMS41WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTUzLjY0LDI0LjUzVjQ3 LjQ3YTMuMTgsMy4xOCwwLDAsMS0uMDguOXMtLjE5LjEtLjkyLjFIMjIuODVBMy4zOSwzLjM5LDAs MCwxLDIyLDQ4LjRoMGEyLjQsMi40LDAsMCwxLS4xLS45M1YyNC41M0g1My42NG0xLTFIMjAuODVW NDcuNDdjMCwxLjY1LjM1LDIsMiwySDUyLjY0YzEuNjUsMCwyLS4zNSwyLTJWMjMuNTNaIi8+PGcg Y2xhc3M9ImNscy0zIj48bGluZSBjbGFzcz0iY2xzLTQiIHgxPSIzNy43NSIgeTE9IjQ4LjQ3IiB4 Mj0iMzcuNzUiIHkyPSIyNC40NyIvPjxsaW5lIGNsYXNzPSJjbHMtNCIgeDE9IjI5LjU1IiB5MT0i NDguNDciIHgyPSIyOS41NSIgeTI9IjI0LjQ3Ii8+PGxpbmUgY2xhc3M9ImNscy00IiB4MT0iNDUu OTUiIHkxPSI0OC40NyIgeDI9IjQ1Ljk1IiB5Mj0iMjQuNDciLz48bGluZSBjbGFzcz0iY2xzLTQi IHgxPSIyMS44NSIgeTE9IjMyLjQ3IiB4Mj0iNTMuNjIiIHkyPSIzMi40NyIvPjxsaW5lIGNsYXNz PSJjbHMtNCIgeDE9IjIxLjg1IiB5MT0iNDAuODQiIHgyPSI1My42MiIgeTI9IjQwLjg0Ii8+PC9n PjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTQ2LDI0VjE1aDYuNjljMS4zOCwwLDEuNS4xMiwxLjUs MS41VjI0WiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTUyLjY0LDE1LjUzYTMuNDQsMy40NCww LDAsMSwuOS4wN2gwYTIuMTYsMi4xNiwwLDAsMSwuMS45M3Y3SDQ2LjQ1di04aDYuMTltMC0xSDQ1 LjQ1djEwaDkuMTl2LThjMC0xLjY1LS4zNS0yLTItMloiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9 Ik0yMS4zNSwyNHYtNy41YzAtMS4zOC4xMy0xLjUsMS41LTEuNWg2LjY5djlaIi8+PHBhdGggY2xh c3M9ImNscy02IiBkPSJNMjksMTUuNTN2OEgyMS44NXYtN2EyLjcsMi43LDAsMCwxLC4wOC0uOXMu MTktLjEuOTItLjFIMjltMS0xSDIyLjg1Yy0xLjY1LDAtMiwuMzUtMiwydjhIMzB2LTEwWiIvPjxy ZWN0IGNsYXNzPSJjbHMtNSIgeD0iMzcuNzUiIHk9IjE1LjAzIiB3aWR0aD0iOC4xOSIgaGVpZ2h0 PSI5Ii8+PHBhdGggY2xhc3M9ImNscy02IiBkPSJNNDUuNDMsMTUuNTN2OEgzOC4yNHYtOGg3LjE4 bTEtMUgzNy4yNXYxMGg5LjE5di0xMFoiLz48cmVjdCBjbGFzcz0iY2xzLTUiIHg9IjI5LjU2IiB5 PSIxNS4wMyIgd2lkdGg9IjguMTkiIGhlaWdodD0iOSIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0i TTM3LjI0LDE1LjUzdjhIMzAuMDV2LThoNy4xOG0xLTFIMjkuMDZ2MTBoOS4xOXYtMTBaIi8+PHBv bHlnb24gY2xhc3M9ImNscy03IiBwb2ludHM9IjEyLjgzIDQ3LjM4IDkuMzYgNDIuNzMgMTYuMzEg NDIuNzMgMTIuODMgNDcuMzgiLz48bGluZSBjbGFzcz0iY2xzLTgiIHgxPSIxMi44MyIgeTE9IjQz LjM2IiB4Mj0iMTIuODMiIHkyPSIxNi4zOSIvPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m IGZpbGUKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF90 aWRfc2Nhbi5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfdGlkX3Nj YW4uc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZDQyYmFmZDU3Ci0t LSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X3Rp ZF9zY2FuLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxu cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+ PHN0eWxlPi5jbHMtMXtmaWxsOiNlNmU2ZTY7fS5jbHMtMntmaWxsOiM4MTgxODE7fS5jbHMtM3tm aWxsOiNmYmU2NWE7fS5jbHMtNHtmaWxsOiNjNDk1M2I7fS5jbHMtNXtmaWxsOm5vbmU7c3Ryb2tl OiMyOTgwYjk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9r ZS13aWR0aDoxLjVweDt9LmNscy02e2ZpbGw6IzI5ODBiOTt9PC9zdHlsZT48L2RlZnM+PHRpdGxl PmV4X3RpZF9zY2FuPC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0zNS40Nyw1MC42OWMt OS41NywwLTE2LTIuODQtMTYtNS41czYuNDMtNS41LDE2LTUuNSwxNiwyLjg0LDE2LDUuNVM0NSw1 MC42OSwzNS40Nyw1MC42OVoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zNS40Nyw0MC4xOWM4 Ljg3LDAsMTUuNSwyLjY0LDE1LjUsNXMtNi42Myw1LTE1LjUsNVMyMCw0Ny41NSwyMCw0NS4xOXM2 LjYzLTUsMTUuNS01bTAtMWMtOS4xMSwwLTE2LjUsMi42OS0xNi41LDZzNy4zOSw2LDE2LjUsNlM1 Miw0OC41LDUyLDQ1LjE5cy03LjM5LTYtMTYuNS02WiIvPjxwYXRoIGNsYXNzPSJjbHMtMSIgZD0i TTM1LjQ3LDQ2LjI4Yy05LjU3LDAtMTYtMi44NC0xNi01LjVzNi40My01LjUsMTYtNS41LDE2LDIu ODQsMTYsNS41UzQ1LDQ2LjI4LDM1LjQ3LDQ2LjI4WiIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0i TTM1LjQ3LDM1Ljc4YzguODcsMCwxNS41LDIuNjQsMTUuNSw1cy02LjYzLDUtMTUuNSw1UzIwLDQz LjE0LDIwLDQwLjc4czYuNjMtNSwxNS41LTVtMC0xYy05LjExLDAtMTYuNSwyLjY5LTE2LjUsNnM3 LjM5LDYsMTYuNSw2LDE2LjUtMi42OSwxNi41LTYtNy4zOS02LTE2LjUtNloiLz48cGF0aCBjbGFz cz0iY2xzLTEiIGQ9Ik0zNS40Nyw0MmMtOS41NywwLTE2LTIuODQtMTYtNS41czYuNDMtNS41LDE2 LTUuNSwxNiwyLjg0LDE2LDUuNVM0NSw0MiwzNS40Nyw0MloiLz48cGF0aCBjbGFzcz0iY2xzLTIi IGQ9Ik0zNS40NywzMS40NmM4Ljg3LDAsMTUuNSwyLjY0LDE1LjUsNXMtNi42Myw1LTE1LjUsNVMy MCwzOC44MywyMCwzNi40NnM2LjYzLTUsMTUuNS01bTAtMWMtOS4xMSwwLTE2LjUsMi42OS0xNi41 LDZzNy4zOSw2LDE2LjUsNiwxNi41LTIuNjksMTYuNS02LTcuMzktNi0xNi41LTZaIi8+PHBhdGgg Y2xhc3M9ImNscy0xIiBkPSJNMzUuNDcsMzcuNTJjLTkuNTcsMC0xNi0yLjg0LTE2LTUuNXM2LjQz LTUuNSwxNi01LjUsMTYsMi44NCwxNiw1LjVTNDUsMzcuNTIsMzUuNDcsMzcuNTJaIi8+PHBhdGgg Y2xhc3M9ImNscy0yIiBkPSJNMzUuNDcsMjdDNDQuMzQsMjcsNTEsMjkuNjYsNTEsMzJzLTYuNjMs NS0xNS41LDVTMjAsMzQuMzgsMjAsMzJzNi42My01LDE1LjUtNW0wLTFDMjYuMzYsMjYsMTksMjgu NywxOSwzMnM3LjM5LDYsMTYuNSw2UzUyLDM1LjMzLDUyLDMycy03LjM5LTYtMTYuNS02WiIvPjxw YXRoIGNsYXNzPSJjbHMtMSIgZD0iTTM1LjQ3LDMyLjY5Yy05LjU3LDAtMTYtMi44NC0xNi01LjVz Ni40My01LjUsMTYtNS41LDE2LDIuODQsMTYsNS41UzQ1LDMyLjY5LDM1LjQ3LDMyLjY5WiIvPjxw YXRoIGNsYXNzPSJjbHMtMiIgZD0iTTM1LjQ3LDIyLjE5YzguODcsMCwxNS41LDIuNjQsMTUuNSw1 cy02LjYzLDUtMTUuNSw1UzIwLDI5LjU1LDIwLDI3LjE5czYuNjMtNSwxNS41LTVtMC0xYy05LjEx LDAtMTYuNSwyLjY5LTE2LjUsNnM3LjM5LDYsMTYuNSw2UzUyLDMwLjUsNTIsMjcuMTlzLTcuMzkt Ni0xNi41LTZaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTkuNTUsMjYuNjljLjczLTIuNDUs Ni43Mi00LjkxLDE1LjQzLTV2NVoiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik0zNC40NywyMi4y djRIMjAuMzVjMS40Ni0yLDctMy44MywxNC4xMi00bTEtMWMtOS4xMSwwLTE2LjUsMi42OS0xNi41 LDZoMTYuNXYtNloiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik0xMiwyNmMyLjM4LTguMzcsMTIu OTItMTMuMjEsMjItMTMuMjEiLz48cGF0aCBjbGFzcz0iY2xzLTYiIGQ9Ik00MC40LDEyLjgxYTMx LjczLDMxLjczLDAsMCwwLTksNWwxLjgxLTUtMS44MS01QTMxLjcsMzEuNywwLDAsMCw0MC40LDEy LjgxWiIvPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF91bmlxdWUuc3ZnIGIvd2ViL3BnYWRt aW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X3VuaXF1ZS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwLi5kNmNjMjYxYjQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfdW5pcXVlLnN2ZwpAQCAtMCwwICsxIEBACis8 c3ZnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9z dmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+PHN0eWxlPi5jbHMtMSwuY2xzLTN7ZmlsbDoj ZjBlY2I2O30uY2xzLTJ7ZmlsbDojYzE4ZjM1O30uY2xzLTN7c3Ryb2tlOiNjMThmMzU7fS5jbHMt MywuY2xzLTQsLmNscy03LC5jbHMtOHtzdHJva2UtbWl0ZXJsaW1pdDoxMDt9LmNscy0zLC5jbHMt N3tvcGFjaXR5OjAuODt9LmNscy00e2ZpbGw6IzM0NDk1ZTtzdHJva2U6IzUyOGQxOTt9LmNscy01 LC5jbHMtNywuY2xzLTh7ZmlsbDojZDNkNGYzO30uY2xzLTZ7ZmlsbDojNjY2YmQxO30uY2xzLTd7 c3Ryb2tlOiM2NjZiZDE7fS5jbHMtOHtzdHJva2U6I2MwMDtzdHJva2UtbGluZWNhcDpyb3VuZDtz dHJva2Utd2lkdGg6MS41cHg7b3BhY2l0eTowLjU7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5leF91 bmlxdWU8L3RpdGxlPjxyZWN0IGNsYXNzPSJjbHMtMSIgeD0iNDAuMyIgeT0iMTcuMjYiIHdpZHRo PSI5Ljk4IiBoZWlnaHQ9IjUuNjkiIHJ4PSIxLjUiIHJ5PSIxLjUiLz48cGF0aCBjbGFzcz0iY2xz LTIiIGQ9Ik00OC43OSwxNy43NmEzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCww LDEsLjEuOTJ2Mi42OWEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4x aC03YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCwwLDEtLjEtLjkyVjE4Ljc2 YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg3bTAtMWgtN2Mt MS42NSwwLTIsLjM1LTIsMnYyLjY5YzAsMS42NS4zNSwyLDIsMmg3YzEuNjUsMCwyLS4zNSwyLTJW MTguNzZjMC0xLjY1LS4zNS0yLTItMloiLz48cmVjdCBjbGFzcz0iY2xzLTEiIHg9IjEzLjcxIiB5 PSIxMC43NiIgd2lkdGg9IjkuOTgiIGhlaWdodD0iMTguNjkiIHJ4PSIxLjUiIHJ5PSIxLjUiLz48 cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0yMi4yLDExLjI2YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgw YTIuMTgsMi4xOCwwLDAsMSwuMS45MlYyNy45NWEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwy LjE4LDAsMCwxLS45Mi4xaC03YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCww LDEtLjEtLjkyVjEyLjI2YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45 Mi0uMWg3bTAtMWgtN2MtMS42NSwwLTIsLjM1LTIsMlYyNy45NWMwLDEuNjUuMzUsMiwyLDJoN2Mx LjY1LDAsMi0uMzUsMi0yVjEyLjI2YzAtMS42NS0uMzUtMi0yLTJaIi8+PGxpbmUgY2xhc3M9ImNs cy0zIiB4MT0iMTQuMSIgeTE9IjE3LjE3IiB4Mj0iMjMuMzQiIHkyPSIxNy4xNyIvPjxsaW5lIGNs YXNzPSJjbHMtMyIgeDE9IjE0LjEiIHkxPSIyMy40IiB4Mj0iMjMuMzQiIHkyPSIyMy40Ii8+PHBh dGggY2xhc3M9ImNscy00IiBkPSJNMjguODcsMjcuNDdBNC40Miw0LjQyLDAsMCwwLDMwLjkyLDI3 LDIuODEsMi44MSwwLDAsMCwzMiwyNS44OGEzLjU5LDMuNTksMCwwLDAsLjQtMS40YzAtLjUuMDct LjM2LjA5LS44M2E5LjI4LDkuMjgsMCwwLDEsLjExLTEuMiwyLjc2LDIuNzYsMCwwLDEsLjI2LS44 MywyLjM3LDIuMzcsMCwwLDEsLjQ0LS42LDIuNTMsMi41MywwLDAsMSwuNjItLjQ2LDQsNCwwLDAs MSwuNjQtLjI3LDMuNSwzLjUsMCwwLDEsLjYtLjEzYy4xOSwwLC4xOS0uMSwwLS4xMmEzLjUyLDMu NTIsMCwwLDEtLjYtLjEzLDMuNjUsMy42NSwwLDAsMS0uNjQtLjI3LDIuNTIsMi41MiwwLDAsMS0u NjItLjQ2LDIuNDEsMi40MSwwLDAsMS0uNDQtLjYsMi43NywyLjc3LDAsMCwxLS4yNi0uODMsOS4z MSw5LjMxLDAsMCwxLS4xMS0xLjJjMC0uNDcsMC0uMzMtLjA5LS44M2EzLjU4LDMuNTgsMCwwLDAt LjQtMS40LDIuODIsMi44MiwwLDAsMC0xLjA2LTEuMDgsNC40Nyw0LjQ3LDAsMCwwLTIuMDUtLjUx VjEyLjNsLjUzLDBhNC4xMSw0LjExLDAsMCwxLC42Ny4xMSw1LjEyLDUuMTIsMCwwLDEsLjcyLjIz LDIuODksMi44OSwwLDAsMSwuNy40MSwzLjM0LDMuMzQsMCwwLDEsLjgzLjksMy42NiwzLjY2LDAs MCwxLC40MywxLjA3LDcsNywwLDAsMSwuMTYsMS4yOWMwLC40NywwLS4xMiwwLS4xMmE3LjksNy45 LDAsMCwwLC4xMiwxLjUsMi4zNywyLjM3LDAsMCwwLC40NywxLjA2LDIuNjUsMi42NSwwLDAsMCwx LC43My42OS42OSwwLDAsMSwwLDEuMTcsMi42NiwyLjY2LDAsMCwwLTEsLjczQTIuMzksMi4zOSww LDAsMCwzMywyMi40N2E3LjksNy45LDAsMCwwLS4xMiwxLjVzLS4wOS43OC0uMTgsMS4xN2EzLjY1 LDMuNjUsMCwwLDEtLjQzLDEuMDcsMy4zMSwzLjMxLDAsMCwxLS44My45LDIuOSwyLjksMCwwLDEt LjcuNDEsNS4zOSw1LjM5LDAsMCwxLS43Mi4yMyw0LjM0LDQuMzQsMCwwLDEtLjY3LjExbC0uNTMs MFoiLz48cmVjdCBjbGFzcz0iY2xzLTUiIHg9IjQwLjMiIHk9IjQxLjA1IiB3aWR0aD0iOS45OCIg aGVpZ2h0PSI1LjY5IiByeD0iMS41IiByeT0iMS41Ii8+PHBhdGggY2xhc3M9ImNscy02IiBkPSJN NDguNzksNDEuNTVhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xNywyLjE3LDAsMCwxLC4xLjky djIuNjlhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMWgtN2EzLjI1 LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xOCwyLjE4LDAsMCwxLS4xLS45MlY0Mi41NWEzLjI4LDMu MjgsMCwwLDEsLjA4LS45LDIuMTgsMi4xOCwwLDAsMSwuOTItLjFoN20wLTFoLTdjLTEuNjUsMC0y LC4zNS0yLDJ2Mi42OWMwLDEuNjUuMzUsMiwyLDJoN2MxLjY1LDAsMi0uMzUsMi0yVjQyLjU1YzAt MS42NS0uMzUtMi0yLTJaIi8+PHJlY3QgY2xhc3M9ImNscy01IiB4PSIxMy43OSIgeT0iMzQuNTUi IHdpZHRoPSI5Ljk4IiBoZWlnaHQ9IjE4LjY5IiByeD0iMS41IiByeT0iMS41Ii8+PHBhdGggY2xh c3M9ImNscy02IiBkPSJNMjIuMjgsMzUuMDVhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xNywy LjE3LDAsMCwxLC4xLjkyVjUxLjc0YTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIuMTgsMCww LDEtLjkyLjFoLTdhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0u OTJWMzYuMDVhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDdt MC0xaC03Yy0xLjY1LDAtMiwuMzUtMiwyVjUxLjc0YzAsMS42NS4zNSwyLDIsMmg3YzEuNjUsMCwy LS4zNSwyLTJWMzYuMDVjMC0xLjY1LS4zNS0yLTItMloiLz48bGluZSBjbGFzcz0iY2xzLTciIHgx PSIxNC4xOCIgeTE9IjQwLjk3IiB4Mj0iMjMuNDIiIHkyPSI0MC45NyIvPjxsaW5lIGNsYXNzPSJj bHMtNyIgeDE9IjE0LjE4IiB5MT0iNDcuMiIgeDI9IjIzLjQyIiB5Mj0iNDcuMiIvPjxwYXRoIGNs YXNzPSJjbHMtNCIgZD0iTTI4Ljg3LDUxLjI2YTQuNDIsNC40MiwwLDAsMCwyLjA1LS41MUEyLjgx LDIuODEsMCwwLDAsMzIsNDkuNjdhMy41OSwzLjU5LDAsMCwwLC40LTEuNGMwLS41LjA3LS4zNi4w OS0uODNhOS4yOCw5LjI4LDAsMCwxLC4xMS0xLjIsMi43NiwyLjc2LDAsMCwxLC4yNi0uODMsMi4z NywyLjM3LDAsMCwxLC40NC0uNiwyLjUzLDIuNTMsMCwwLDEsLjYyLS40Niw0LDQsMCwwLDEsLjY0 LS4yNywzLjUsMy41LDAsMCwxLC42LS4xM2MuMTksMCwuMTktLjEsMC0uMTJhMy41MiwzLjUyLDAs MCwxLS42LS4xMywzLjY1LDMuNjUsMCwwLDEtLjY0LS4yNywyLjUyLDIuNTIsMCwwLDEtLjYyLS40 NiwyLjQxLDIuNDEsMCwwLDEtLjQ0LS42LDIuNzcsMi43NywwLDAsMS0uMjYtLjgzLDkuMzEsOS4z MSwwLDAsMS0uMTEtMS4yYzAtLjQ3LDAtLjMzLS4wOS0uODNhMy41OCwzLjU4LDAsMCwwLS40LTEu NEEyLjgyLDIuODIsMCwwLDAsMzAuOTIsMzdhNC40Nyw0LjQ3LDAsMCwwLTIuMDUtLjUxVjM2LjFs LjUzLDBhNC4xMSw0LjExLDAsMCwxLC42Ny4xMSw1LjEyLDUuMTIsMCwwLDEsLjcyLjIzLDIuODks Mi44OSwwLDAsMSwuNy40MSwzLjM0LDMuMzQsMCwwLDEsLjgzLjksMy42NiwzLjY2LDAsMCwxLC40 MywxLjA3LDcsNywwLDAsMSwuMTYsMS4yOWMwLC40NywwLS4xMiwwLS4xMmE3LjksNy45LDAsMCww LC4xMiwxLjUsMi4zNywyLjM3LDAsMCwwLC40NywxLjA2LDIuNjUsMi42NSwwLDAsMCwxLC43My42 OS42OSwwLDAsMSwwLDEuMTcsMi42NiwyLjY2LDAsMCwwLTEsLjczQTIuMzksMi4zOSwwLDAsMCwz Myw0Ni4yN2E3LjksNy45LDAsMCwwLS4xMiwxLjVzLS4wOS43OC0uMTgsMS4xN0EzLjY1LDMuNjUs MCwwLDEsMzIuMzIsNTBhMy4zMSwzLjMxLDAsMCwxLS44My45LDIuOSwyLjksMCwwLDEtLjcuNDEs NS4zOSw1LjM5LDAsMCwxLS43Mi4yMyw0LjM0LDQuMzQsMCwwLDEtLjY3LjExbC0uNTMsMFoiLz48 bGluZSBjbGFzcz0iY2xzLTgiIHgxPSIxNC4xIiB5MT0iMjkuMDUiIHgyPSIyMy4zNCIgeTI9IjEw Ljk5Ii8+PGxpbmUgY2xhc3M9ImNscy04IiB4MT0iMTQuMTgiIHkxPSI1Mi45MiIgeDI9IjIzLjQy IiB5Mj0iMzQuODciLz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n aXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfdW5rbm93bi5zdmcgYi93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfdW5rbm93bi5zdmcKbmV3IGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi4zYWY2OTU3NGQKLS0tIC9kZXYvbnVsbAorKysg Yi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfdW5rbm93bi5zdmcKQEAgLTAs MCArMSBAQAorPHN2ZyBpZD0iXzEiIGRhdGEtbmFtZT0iMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMu b3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgNjQgNjQiPjxkZWZzPjxzdHlsZT4uY2xzLTF7Zmls bDojMWNhZmU0O308L3N0eWxlPjwvZGVmcz48dGl0bGU+ZXhfdW5rbm93bjwvdGl0bGU+PHBhdGgg Y2xhc3M9ImNscy0xIiBkPSJNMjMuMzQsMTMuMmExNC43NiwxNC43NiwwLDAsMSw4LjE2LTIuMTQs MTcuNTcsMTcuNTcsMCwwLDEsMTAuNTYsM3E0LjIsMyw0LjIsOWExMC4xOCwxMC4xOCwwLDAsMS0x LjgyLDYuMTYsMjEsMjEsMCwwLDEtNC4wOSwzLjg4bC0yLDEuNTVhNiw2LDAsMCwwLTIuMTYsM0Ex Mi41LDEyLjUsMCwwLDAsMzUuODMsNDFIMjguMmEyMi4xMSwyMi4xMSwwLDAsMSwuOS02LjU3LDEx LjU3LDExLjU3LDAsMCwxLDMuNzYtNC4xOGwyLTEuNkE3LjE3LDcuMTcsMCwwLDAsMzYuNTMsMjdh NS42Nyw1LjY3LDAsMCwwLDEuMTItMy40LDYuNTgsNi41OCwwLDAsMC0xLjI1LTMuOXEtMS4yNS0x Ljc2LTQuNTYtMS43NnQtNC42MiwyLjE3YTguMzQsOC4zNCwwLDAsMC0xLjM2LDQuNUgxNy43NFEx OC4wOCwxNi41NSwyMy4zNCwxMy4yWk0yOCw0NC44MWg4LjQxdjguMTNIMjhaIi8+PC9zdmc+Clwg Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL0V4cGxhaW4vaW1nL2V4X3VwZGF0ZS5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhw bGFpbi9pbWcvZXhfdXBkYXRlLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAuLjFmODJiYjFkYgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9F eHBsYWluL2ltZy9leF91cGRhdGUuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgaWQ9Il8xIiBkYXRh LW5hbWU9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAw IDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0xLC5jbHMtNXtmaWxsOiNmMGVjYjY7fS5jbHMtMntm aWxsOiNjMThmMzY7fS5jbHMtM3tmaWxsOiNmZmJkMzA7fS5jbHMtNHtvcGFjaXR5OjAuODt9LmNs cy01e3N0cm9rZTojYzE4ZjM2O3N0cm9rZS1taXRlcmxpbWl0OjEwO30uY2xzLTZ7ZmlsbDojYWRk ZmYzO30uY2xzLTd7ZmlsbDojMjk4MGI5O308L3N0eWxlPjwvZGVmcz48dGl0bGU+ZXhfdXBkYXRl PC90aXRsZT48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik0xNi43Myw1Ny40N2MtMS4zNywwLTEuNS0u MTMtMS41LTEuNVYxNS41M2g0MVY1NmMwLDEuMzctLjEzLDEuNS0xLjUsMS41WiIvPjxwYXRoIGNs YXNzPSJjbHMtMiIgZD0iTTU1LjcyLDE2VjU2YTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIu MTgsMCwwLDEtLjkyLjFoLTM4YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCww LDEtLjEtLjkyVjE2aDQwbTEtMWgtNDJWNTZjMCwxLjY1LjM1LDIsMiwyaDM4YzEuNjUsMCwyLS4z NSwyLTJWMTVaIi8+PHJlY3QgY2xhc3M9ImNscy0zIiB4PSIzMi4xMiIgeT0iNDEuMiIgd2lkdGg9 IjcuMjIiIGhlaWdodD0iNy40NCIvPjxyZWN0IGNsYXNzPSJjbHMtMyIgeD0iMjMuOTIiIHk9IjQx LjIiIHdpZHRoPSI3LjIyIiBoZWlnaHQ9IjcuNDQiLz48cmVjdCBjbGFzcz0iY2xzLTMiIHg9IjE1 LjcyIiB5PSIyNC40OCIgd2lkdGg9IjcuMjIiIGhlaWdodD0iNy40NCIvPjxnIGNsYXNzPSJjbHMt NCI+PGxpbmUgY2xhc3M9ImNscy01IiB4MT0iMjMuNDMiIHkxPSI1Ni45NyIgeDI9IjIzLjQzIiB5 Mj0iMTUuOTciLz48bGluZSBjbGFzcz0iY2xzLTUiIHgxPSIzOS44MyIgeTE9IjU2Ljk3IiB4Mj0i MzkuODMiIHkyPSIxNS45NyIvPjxsaW5lIGNsYXNzPSJjbHMtNSIgeDE9IjMxLjYzIiB5MT0iNTYu OTciIHgyPSIzMS42MyIgeTI9IjE1Ljk3Ii8+PGxpbmUgY2xhc3M9ImNscy01IiB4MT0iNDguMDMi IHkxPSI1Ni45NyIgeDI9IjQ4LjAzIiB5Mj0iMTUuOTciLz48bGluZSBjbGFzcz0iY2xzLTUiIHgx PSIxNS43MyIgeTE9IjIzLjk3IiB4Mj0iNTUuNyIgeTI9IjIzLjk3Ii8+PGxpbmUgY2xhc3M9ImNs cy01IiB4MT0iMTUuNzMiIHkxPSIzMi4zNCIgeDI9IjU1LjciIHkyPSIzMi4zNCIvPjxsaW5lIGNs YXNzPSJjbHMtNSIgeDE9IjE1LjczIiB5MT0iNDAuNzEiIHgyPSI1NS43IiB5Mj0iNDAuNzEiLz48 bGluZSBjbGFzcz0iY2xzLTUiIHgxPSIxNS43MyIgeTE9IjQ5LjA4IiB4Mj0iNTUuNyIgeTI9IjQ5 LjA4Ii8+PC9nPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTQ4LDE1LjUzdi05aDYuNjljMS4zNyww LDEuNS4xMywxLjUsMS41djcuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTciIGQ9Ik01NC43Myw3YTMu MjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTgsMi4xOCwwLDAsMSwuMS45MnY3SDQ4LjUzVjdoNi4x OW0wLTFINDcuNTNWMTZoOS4xOVY4YzAtMS42NS0uMzUtMi0yLTJaIi8+PHBhdGggY2xhc3M9ImNs cy02IiBkPSJNMTUuMjMsMTUuNTNWOGMwLTEuMzcuMTMtMS41LDEuNS0xLjVoNi42OXY5WiIvPjxw YXRoIGNsYXNzPSJjbHMtNyIgZD0iTTIyLjkzLDd2OEgxNS43M1Y4YTMuMjgsMy4yOCwwLDAsMSwu MDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg2LjE5bTEtMUgxNi43M2MtMS42NSwwLTIsLjM1 LTIsMnY4aDkuMTlWNloiLz48cmVjdCBjbGFzcz0iY2xzLTYiIHg9IjM5LjgzIiB5PSI2LjUzIiB3 aWR0aD0iOC4xOSIgaGVpZ2h0PSI5Ii8+PHBhdGggY2xhc3M9ImNscy03IiBkPSJNNDcuNTIsN3Y4 SDQwLjMzVjdoNy4xOG0xLTFIMzkuMzNWMTZoOS4xOVY2WiIvPjxyZWN0IGNsYXNzPSJjbHMtNiIg eD0iMzEuNjQiIHk9IjYuNTMiIHdpZHRoPSI4LjE5IiBoZWlnaHQ9IjkiLz48cGF0aCBjbGFzcz0i Y2xzLTciIGQ9Ik0zOS4zMyw3djhIMzIuMTRWN2g3LjE4bTEtMUgzMS4xNFYxNmg5LjE5VjZaIi8+ PHJlY3QgY2xhc3M9ImNscy02IiB4PSIyMy40NSIgeT0iNi41MyIgd2lkdGg9IjguMTciIGhlaWdo dD0iOSIvPjxwYXRoIGNsYXNzPSJjbHMtNyIgZD0iTTMxLjEyLDd2OEgyMy45NVY3aDcuMTdtMS0x SDIzVjE2aDkuMThWNloiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik03LjI3LDI4LjI4QTMuMzcs My4zNywwLDAsMSwxMywyNS44NWgwbC4xMy4xMy4wNS4wNUwyNC43MiwzNy41OGEuNC40LDAsMCwx LC4xOC4ybDEuNjMsNS44MnYuMDZoMGEuNDYuNDYsMCwwLDEsMCwuMTIuNDEuNDEsMCwwLDEsMCwu MTJzMCwwLDAsMGgwYS40LjQsMCwwLDEtLjA2LjFsMCwwLDAsMC0uMS4wNmgwbC0uMTIsMC0uMTIs MEgyNmwtNS44Mi0xLjYzYS40LjQsMCwwLDEtLjItLjE4TDguMjIsMzAuNjRhLjQuNCwwLDAsMS0u MDgtLjEyQTMuMzUsMy4zNSwwLDAsMSw3LjI3LDI4LjI4Wm0xMi45LDEzLjE1LDEtMmgwbC05Ljkz LTkuOTNMOS43MywzMVptNSwuNTUtLjg0Ljg0LDEuMTcuMzNabS0xLTMuNDhMMjIsMzkuNmwtMS4w OSwyLjI2LDIuNTcuNzIsMS40OS0xLjQ5Wm0tLjQyLS43TDEzLjM1LDI3LjM3bC0xLjUyLDEuNTIs OS45Myw5LjkzaDBaTTguMSwyOC4zMWEyLjU1LDIuNTUsMCwwLDAsLjgzLDEuODhoMGwuMjIuMjIs My42Mi0zLjYyLS4yMi0uMjJoMEEyLjU2LDIuNTYsMCwwLDAsOC4xLDI4LjMxWiIvPjxwb2x5Z29u IGNsYXNzPSJjbHMtMSIgcG9pbnRzPSIyMC4xNyA0MS40NSAyMS4xNyAzOS40MiAyMS4xOCAzOS40 MSAxMS4yNSAyOS40OCA5LjczIDMxIDIwLjE3IDQxLjQ1Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0x IiBwb2ludHM9IjEzLjM1IDI3LjM4IDExLjgzIDI4LjkgMjEuNzYgMzguODMgMjEuNzcgMzguODIg MjMuNzkgMzcuODMgMTMuMzUgMjcuMzgiLz48cGF0aCBjbGFzcz0iY2xzLTEiIGQ9Ik04LjEyLDI4 LjI3QTIuNTUsMi41NSwwLDAsMCw5LDMwLjE1SDlsLjIyLjIyLDMuNjItMy42Mi0uMjItLjIyaDBh Mi41NiwyLjU2LDAsMCwwLTQuNDUsMS43M1oiLz48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50 cz0iMjQuMjIgMzguNTIgMjEuOTYgMzkuNiAyMC44NyA0MS44NiAyMy40NCA0Mi41OCAyNC45NCA0 MS4wOSAyNC4yMiAzOC41MiIvPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL2ltZy9leF92YWx1ZXNfc2Nh bi5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfdmFsdWVzX3NjYW4u c3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uNDJjODMxOTAxCi0tLSAv ZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxhaW4vaW1nL2V4X3ZhbHVl c19zY2FuLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIGlkPSJfMSIgZGF0YS1uYW1lPSIxIiB4bWxu cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+ PHN0eWxlPi5jbHMtMXtmaWxsOiNmMGVjYjY7fS5jbHMtMntmaWxsOiNjMThmMzU7fS5jbHMtM3tm aWxsOiMyOTgwYjk7c3Ryb2tlOiMyOTgwYjk7c3Ryb2tlLWxpbmVjYXA6cm91bmQ7c3Ryb2tlLWxp bmVqb2luOnJvdW5kO3N0cm9rZS13aWR0aDoycHg7fTwvc3R5bGU+PC9kZWZzPjx0aXRsZT5leF92 YWx1ZXNfc2NhbjwvdGl0bGU+PHJlY3QgY2xhc3M9ImNscy0xIiB4PSIyMC41IiB5PSIxNC4xNyIg d2lkdGg9IjYuOTgiIGhlaWdodD0iNS42OSIgcng9IjEuNSIgcnk9IjEuNSIvPjxwYXRoIGNsYXNz PSJjbHMtMiIgZD0iTTI2LDE0LjY3YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTgsMi4xOCww LDAsMSwuMS45MnYyLjY5YTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIuMTgsMCwwLDEtLjky LjFIMjJhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJWMTUu NjdhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDRtMC0xSDIy Yy0xLjY1LDAtMiwuMzUtMiwydjIuNjljMCwxLjY1LjM1LDIsMiwyaDRjMS42NSwwLDItLjM1LDIt MlYxNS42N2MwLTEuNjUtLjM1LTItMi0yWiIvPjxyZWN0IGNsYXNzPSJjbHMtMSIgeD0iMzMuNSIg eT0iMTcuMTciIHdpZHRoPSI2Ljk4IiBoZWlnaHQ9IjUuNjkiIHJ4PSIxLjUiIHJ5PSIxLjUiLz48 cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zOSwxNy42N2EzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEy LjE4LDIuMTgsMCwwLDEsLjEuOTJ2Mi42OWEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4 LDAsMCwxLS45Mi4xSDM1YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCwwLDEt LjEtLjkyVjE4LjY3YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0u MWg0bTAtMUgzNWMtMS42NSwwLTIsLjM1LTIsMnYyLjY5YzAsMS42NS4zNSwyLDIsMmg0YzEuNjUs MCwyLS4zNSwyLTJWMTguNjdjMC0xLjY1LS4zNS0yLTItMloiLz48cmVjdCBjbGFzcz0iY2xzLTEi IHg9IjQ2LjUiIHk9IjIwLjE0IiB3aWR0aD0iNi45OCIgaGVpZ2h0PSI1LjY5IiByeD0iMS41IiBy eT0iMS41Ii8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTIsMjAuNjRhMy4yNSwzLjI1LDAsMCwx LC45LjA4aDBhMi4xNywyLjE3LDAsMCwxLC4xLjkydjIuNjlhMy4yOCwzLjI4LDAsMCwxLS4wOC45 LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUg0OGEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xOCwy LjE4LDAsMCwxLS4xLS45MlYyMS42NGEzLjI4LDMuMjgsMCwwLDEsLjA4LS45LDIuMTgsMi4xOCww LDAsMSwuOTItLjFoNG0wLTFINDhjLTEuNjUsMC0yLC4zNS0yLDJ2Mi42OWMwLDEuNjUuMzUsMiwy LDJoNGMxLjY1LDAsMi0uMzUsMi0yVjIxLjY0YzAtMS42NS0uMzUtMi0yLTJaIi8+PHJlY3QgY2xh c3M9ImNscy0xIiB4PSIyMC41IiB5PSIyNi4yNSIgd2lkdGg9IjYuOTgiIGhlaWdodD0iNS42OSIg cng9IjEuNSIgcnk9IjEuNSIvPjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTI2LDI2Ljc1YTMuMjUs My4yNSwwLDAsMSwuOS4wOGgwYTIuMTcsMi4xNywwLDAsMSwuMS45MnYyLjY5YTMuMjgsMy4yOCww LDAsMS0uMDguOSwyLjE4LDIuMTgsMCwwLDEtLjkyLjFIMjJhMy4yNSwzLjI1LDAsMCwxLS45LS4w OGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJWMjcuNzVhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwy LjE4LDIuMTgsMCwwLDEsLjkyLS4xaDRtMC0xSDIyYy0xLjY1LDAtMiwuMzUtMiwydjIuNjljMCwx LjY1LjM1LDIsMiwyaDRjMS42NSwwLDItLjM1LDItMlYyNy43NWMwLTEuNjUtLjM1LTItMi0yWiIv PjxyZWN0IGNsYXNzPSJjbHMtMSIgeD0iMzMuNSIgeT0iMjkuMjUiIHdpZHRoPSI2Ljk4IiBoZWln aHQ9IjUuNjkiIHJ4PSIxLjUiIHJ5PSIxLjUiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zOSwy OS43NWEzLjI1LDMuMjUsMCwwLDEsLjkuMDhoMGEyLjE3LDIuMTcsMCwwLDEsLjEuOTJ2Mi42OWEz LjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xSDM1YTMuMjUsMy4yNSww LDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCwwLDEtLjEtLjkyVjMwLjc1YTMuMjgsMy4yOCwwLDAs MSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg0bTAtMUgzNWMtMS42NSwwLTIsLjM1LTIs MnYyLjY5YzAsMS42NS4zNSwyLDIsMmg0YzEuNjUsMCwyLS4zNSwyLTJWMzAuNzVjMC0xLjY1LS4z NS0yLTItMloiLz48cmVjdCBjbGFzcz0iY2xzLTEiIHg9IjQ2LjUiIHk9IjMyLjIyIiB3aWR0aD0i Ni45OCIgaGVpZ2h0PSI1LjY5IiByeD0iMS41IiByeT0iMS41Ii8+PHBhdGggY2xhc3M9ImNscy0y IiBkPSJNNTIsMzIuNzJhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xOCwyLjE4LDAsMCwxLC4x LjkydjIuNjlhMy4yOCwzLjI4LDAsMCwxLS4wOC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUg0OGEz LjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4xOCwyLjE4LDAsMCwxLS4xLS45MlYzMy43MmEzLjI4 LDMuMjgsMCwwLDEsLjA4LS45LDIuMTgsMi4xOCwwLDAsMSwuOTItLjFoNG0wLTFINDhjLTEuNjUs MC0yLC4zNS0yLDJ2Mi42OWMwLDEuNjUuMzUsMiwyLDJoNGMxLjY1LDAsMi0uMzUsMi0yVjMzLjcy YzAtMS42NS0uMzUtMi0yLTJaIi8+PHJlY3QgY2xhc3M9ImNscy0xIiB4PSIyMC41IiB5PSIzOC4x NyIgd2lkdGg9IjYuOTgiIGhlaWdodD0iNS42OSIgcng9IjEuNSIgcnk9IjEuNSIvPjxwYXRoIGNs YXNzPSJjbHMtMiIgZD0iTTI2LDM4LjY3YTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTgsMi4x OCwwLDAsMSwuMS45MnYyLjY5YTMuMjgsMy4yOCwwLDAsMS0uMDguOSwyLjE4LDIuMTgsMCwwLDEt LjkyLjFIMjJhMy4yNSwzLjI1LDAsMCwxLS45LS4wOGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJW MzkuNjdhMy4yOCwzLjI4LDAsMCwxLC4wOC0uOSwyLjE4LDIuMTgsMCwwLDEsLjkyLS4xaDRtMC0x SDIyYy0xLjY1LDAtMiwuMzUtMiwydjIuNjljMCwxLjY1LjM1LDIsMiwyaDRjMS42NSwwLDItLjM1 LDItMlYzOS42N2MwLTEuNjUtLjM1LTItMi0yWiIvPjxyZWN0IGNsYXNzPSJjbHMtMSIgeD0iMzMu NSIgeT0iNDEuMTciIHdpZHRoPSI2Ljk4IiBoZWlnaHQ9IjUuNjkiIHJ4PSIxLjUiIHJ5PSIxLjUi Lz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0zOSw0MS42N2EzLjI1LDMuMjUsMCwwLDEsLjkuMDho MGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2Mi42OWEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwy LjE4LDAsMCwxLS45Mi4xSDM1YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE4LDIuMTgsMCww LDEtLjEtLjkyVjQyLjY3YTMuMjgsMy4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45 Mi0uMWg0bTAtMUgzNWMtMS42NSwwLTIsLjM1LTIsMnYyLjY5YzAsMS42NS4zNSwyLDIsMmg0YzEu NjUsMCwyLS4zNSwyLTJWNDIuNjdjMC0xLjY1LS4zNS0yLTItMloiLz48cmVjdCBjbGFzcz0iY2xz LTEiIHg9IjQ2LjUiIHk9IjQ0LjE0IiB3aWR0aD0iNi45OCIgaGVpZ2h0PSI1LjY5IiByeD0iMS41 IiByeT0iMS41Ii8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNNTIsNDQuNjRhMy4yNSwzLjI1LDAs MCwxLC45LjA4aDBhMi4xNywyLjE3LDAsMCwxLC4xLjkydjIuNjlhMy4yOCwzLjI4LDAsMCwxLS4w OC45LDIuMTgsMi4xOCwwLDAsMS0uOTIuMUg0OGEzLjI1LDMuMjUsMCwwLDEtLjktLjA4aDBhMi4x OCwyLjE4LDAsMCwxLS4xLS45MlY0NS42NGEzLjI4LDMuMjgsMCwwLDEsLjA4LS45LDIuMTgsMi4x OCwwLDAsMSwuOTItLjFoNG0wLTFINDhjLTEuNjUsMC0yLC4zNS0yLDJ2Mi42OWMwLDEuNjUuMzUs MiwyLDJoNGMxLjY1LDAsMi0uMzUsMi0yVjQ1LjY0YzAtMS42NS0uMzUtMi0yLTJaIi8+PHBvbHln b24gY2xhc3M9ImNscy0zIiBwb2ludHM9IjEzLjQ5IDQ5LjQ5IDEwLjAxIDQ0Ljg1IDE2Ljk3IDQ0 Ljg1IDEzLjQ5IDQ5LjQ5Ii8+PGxpbmUgY2xhc3M9ImNscy0zIiB4MT0iMTMuNDkiIHkxPSI0NS40 OCIgeDI9IjEzLjQ5IiB5Mj0iMTQuNTEiLz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm aWxlCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhfd2lu ZG93X2FnZ3JlZ2F0ZS5zdmcgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbWcvZXhf d2luZG93X2FnZ3JlZ2F0ZS5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw Li44NWIzYzg1NWMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhw bGFpbi9pbWcvZXhfd2luZG93X2FnZ3JlZ2F0ZS5zdmcKQEAgLTAsMCArMSBAQAorPHN2ZyB4bWxu cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA2NCA2NCI+PGRlZnM+ PHN0eWxlPi5jbHMtMXtmaWxsOiNmMGVjYjY7fS5jbHMtMntmaWxsOiNjMThmMzU7fS5jbHMtMywu Y2xzLTh7ZmlsbDojYzhmZmFjO30uY2xzLTR7ZmlsbDojNDhkNjAxO30uY2xzLTV7ZmlsbDojZDNk NGYzO30uY2xzLTZ7ZmlsbDojNjY2YmQxO30uY2xzLTEwLC5jbHMtNywuY2xzLTl7ZmlsbDpub25l O30uY2xzLTd7c3Ryb2tlOiM2NjZiZDE7fS5jbHMtMTAsLmNscy0xMSwuY2xzLTcsLmNscy05e3N0 cm9rZS1saW5lam9pbjpyb3VuZDt9LmNscy03LC5jbHMtOXtvcGFjaXR5OjAuODt9LmNscy04e3N0 cm9rZTojNDhkNjAxO3N0cm9rZS1taXRlcmxpbWl0OjEwO29wYWNpdHk6MC43O30uY2xzLTl7c3Ry b2tlOiNjMThmMzU7fS5jbHMtMTAsLmNscy0xMXtzdHJva2U6IzM0NDk1ZTt9LmNscy0xMHtzdHJv a2UtbGluZWNhcDpyb3VuZDt9LmNscy0xMXtmaWxsOiMzNDQ5NWU7fTwvc3R5bGU+PC9kZWZzPjx0 aXRsZT5leF93aW5kb3dfYWdncmVnYXRlPC90aXRsZT48ZyBpZD0iZXhfYnJvYWRjYXN0X21vdGlv biI+PHJlY3QgY2xhc3M9ImNscy0xIiB4PSI0MC42NyIgeT0iMjcuMzEiIHdpZHRoPSI4LjI4IiBo ZWlnaHQ9IjkiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik00OC40NSwyNy44MXY4SDQxLjE3di04 aDcuMjhtMS0xSDQwLjE3djEwaDkuMjh2LTEwWiIvPjxyZWN0IGNsYXNzPSJjbHMtMSIgeD0iNDgu OTciIHk9IjI3LjMxIiB3aWR0aD0iOC4yOCIgaGVpZ2h0PSI5Ii8+PHBhdGggY2xhc3M9ImNscy0y IiBkPSJNNTYuNzUsMjcuODF2OEg0OS40N3YtOGg3LjI4bTEtMUg0OC40N3YxMGg5LjI4di0xMFoi Lz48cGF0aCBjbGFzcz0iY2xzLTMiIGQ9Ik00Mi4xNyw0NS4yOWMtMS4zNywwLTEuNS0uMTMtMS41 LTEuNXYtNy41aDguMjh2OVoiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik00OC40NSwzNi43OXY4 SDQyLjE3YTMuMjUsMy4yNSwwLDAsMS0uOS0uMDhoMGEyLjE3LDIuMTcsMCwwLDEtLjEtLjkydi03 aDcuMjhtMS0xSDQwLjE3djhjMCwxLjY1LjM1LDIsMiwyaDcuMjh2LTEwWiIvPjxwYXRoIGNsYXNz PSJjbHMtMyIgZD0iTTQ5LDQ1LjI5di05aDguMjh2Ny41YzAsMS4zNy0uMTMsMS41LTEuNSwxLjVa Ii8+PHBhdGggY2xhc3M9ImNscy00IiBkPSJNNTYuNzUsMzYuNzl2N2EzLjI4LDMuMjgsMCwwLDEt LjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xSDQ5LjQ3di04aDcuMjhtMS0xSDQ4LjQ3djEwaDcu MjhjMS42NSwwLDItLjM1LDItMnYtOFoiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik00MC42Nywy Ny4zM3YtNy41YzAtMS4zNy4xMy0xLjUsMS41LTEuNWg2Ljc4djlaIi8+PHBhdGggY2xhc3M9ImNs cy02IiBkPSJNNDguNDUsMTguODN2OEg0MS4xN3YtN2EzLjI4LDMuMjgsMCwwLDEsLjA4LS45LDIu MTgsMi4xOCwwLDAsMSwuOTItLjFoNi4yOG0xLTFINDIuMTdjLTEuNjUsMC0yLC4zNS0yLDJ2OGg5 LjI4di0xMFoiLz48cGF0aCBjbGFzcz0iY2xzLTUiIGQ9Ik00OSwyNy4zM3YtOWg2Ljc4YzEuMzcs MCwxLjUuMTMsMS41LDEuNXY3LjVaIi8+PHBhdGggY2xhc3M9ImNscy02IiBkPSJNNTUuNzUsMTgu ODNhMy4yNSwzLjI1LDAsMCwxLC45LjA4aDBhMi4xNywyLjE3LDAsMCwxLC4xLjkydjdINDkuNDd2 LThoNi4yOG0wLTFINDguNDd2MTBoOS4yOHYtOGMwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRoIGNs YXNzPSJjbHMtNSIgZD0iTTExLjI4LDI1LjQ5VjE0YzAtMS4zNy4xMy0xLjUsMS41LTEuNWg1Ljc4 djEzWiIvPjxwYXRoIGNsYXNzPSJjbHMtNiIgZD0iTTE4LjA2LDEzVjI1SDExLjc4VjE0YTMuMjgs My4yOCwwLDAsMSwuMDgtLjksMi4xOCwyLjE4LDAsMCwxLC45Mi0uMWg1LjI4bTEtMUgxMi43OGMt MS42NSwwLTIsLjM1LTIsMlYyNmg4LjI4VjEyWiIvPjxwYXRoIGNsYXNzPSJjbHMtNSIgZD0iTTE4 LjU3LDI1LjQ5di0xM2g1Ljc4YzEuMzcsMCwxLjUuMTMsMS41LDEuNXYxMS41WiIvPjxwYXRoIGNs YXNzPSJjbHMtNiIgZD0iTTI0LjM1LDEzYTMuMjUsMy4yNSwwLDAsMSwuOS4wOGgwYTIuMTgsMi4x OCwwLDAsMSwuMS45MlYyNUgxOS4wN1YxM2g1LjI4bTAtMUgxOC4wN1YyNmg4LjI4VjE0YzAtMS42 NS0uMzUtMi0yLTJaIi8+PGxpbmUgY2xhc3M9ImNscy03IiB4MT0iMTEuMzEiIHkxPSIxOC44MyIg eDI9IjE4LjA1IiB5Mj0iMTguODMiLz48bGluZSBjbGFzcz0iY2xzLTciIHgxPSIxOC4zMyIgeTE9 IjE4LjgzIiB4Mj0iMjUuODIiIHkyPSIxOC44MyIvPjxwYXRoIGNsYXNzPSJjbHMtMyIgZD0iTTEy Ljc4LDUxLjUxYy0xLjM3LDAtMS41LS4xMy0xLjUtMS41VjM4LjUxaDcuMjh2MTNaIi8+PHBhdGgg Y2xhc3M9ImNscy00IiBkPSJNMTguMDYsMzlWNTFIMTIuNzhhMy4yNSwzLjI1LDAsMCwxLS45LS4w OGgwYTIuMTgsMi4xOCwwLDAsMS0uMS0uOTJWMzloNi4yOG0xLTFIMTAuNzhWNTBjMCwxLjY1LjM1 LDIsMiwyaDYuMjhWMzhaIi8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTguNTcsNTEuNTF2LTEz aDcuMjhWNTBjMCwxLjM3LS4xMywxLjUtMS41LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9 Ik0yNS4zNSwzOVY1MGEzLjI4LDMuMjgsMCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4x SDE5LjA3VjM5aDYuMjhtMS0xSDE4LjA3VjUyaDYuMjhjMS42NSwwLDItLjM1LDItMlYzOFoiLz48 bGluZSBjbGFzcz0iY2xzLTgiIHgxPSIxOC4zMyIgeTE9IjQ0Ljg2IiB4Mj0iMjUuODIiIHkyPSI0 NC44NiIvPjxsaW5lIGNsYXNzPSJjbHMtOCIgeDE9IjExLjMxIiB5MT0iNDQuODYiIHgyPSIxOC4w NSIgeTI9IjQ0Ljg2Ii8+PHJlY3QgY2xhc3M9ImNscy0xIiB4PSIxOC41NyIgeT0iMjUuNDkiIHdp ZHRoPSI3LjI4IiBoZWlnaHQ9IjEzIi8+PHBhdGggY2xhc3M9ImNscy0yIiBkPSJNMjUuMzUsMjZW MzhIMTkuMDdWMjZoNi4yOG0xLTFIMTguMDdWMzloOC4yOFYyNVoiLz48bGluZSBjbGFzcz0iY2xz LTkiIHgxPSIxOC4zMyIgeTE9IjMxLjg0IiB4Mj0iMjUuODIiIHkyPSIzMS44NCIvPjxyZWN0IGNs YXNzPSJjbHMtMSIgeD0iMTEuMjgiIHk9IjI1LjQ5IiB3aWR0aD0iNy4yOCIgaGVpZ2h0PSIxMyIv PjxwYXRoIGNsYXNzPSJjbHMtMiIgZD0iTTE4LjA2LDI2VjM4SDExLjc4VjI2aDYuMjhtMS0xSDEw Ljc4VjM5aDguMjhWMjVaIi8+PGxpbmUgY2xhc3M9ImNscy05IiB4MT0iMTEuMzEiIHkxPSIzMS44 NCIgeDI9IjE4LjA1IiB5Mj0iMzEuODQiLz48cmVjdCBjbGFzcz0iY2xzLTEwIiB4PSI2LjI1IiB5 PSIxOC44NCIgd2lkdGg9IjI1IiBoZWlnaHQ9IjI1Ljk5IiByeD0iMiIgcnk9IjIiLz48cG9seWdv biBjbGFzcz0iY2xzLTExIiBwb2ludHM9IjM5LjMyIDIyLjk1IDM2LjY4IDI0LjkzIDM2LjY4IDIw Ljk4IDM5LjMyIDIyLjk1Ii8+PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9IjM3LjE0IiB5MT0iMjMu MDUiIHgyPSIzMS4yNSIgeTI9IjIzLjA5Ii8+PHBvbHlnb24gY2xhc3M9ImNscy0xMSIgcG9pbnRz PSIzOS4zMiAzMS44NCAzNi42OCAzMy44MiAzNi42OCAyOS44NiAzOS4zMiAzMS44NCIvPjxsaW5l IGNsYXNzPSJjbHMtMTAiIHgxPSIzNy4xNCIgeTE9IjMxLjk0IiB4Mj0iMzEuMjUiIHkyPSIzMS45 OCIvPjxwb2x5Z29uIGNsYXNzPSJjbHMtMTEiIHBvaW50cz0iMzkuMzIgNDAuNiAzNi42OCA0Mi41 OCAzNi42OCAzOC42MyAzOS4zMiA0MC42Ii8+PGxpbmUgY2xhc3M9ImNscy0xMCIgeDE9IjM3LjE0 IiB5MT0iNDAuNyIgeDI9IjMxLjI1IiB5Mj0iNDAuNzUiLz48L2c+PC9zdmc+ClwgTm8gbmV3bGlu ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL0V4cGxh aW4vaW1nL2V4X3dvcmt0YWJsZV9zY2FuLnN2ZyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBs YWluL2ltZy9leF93b3JrdGFibGVfc2Nhbi5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwLi5lZWJjMDE2OWMKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvRXhwbGFpbi9pbWcvZXhfd29ya3RhYmxlX3NjYW4uc3ZnCkBAIC0wLDAgKzEgQEAKKzxz dmcgaWQ9Il8xIiBkYXRhLW5hbWU9IjEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2 ZyIgdmlld0JveD0iMCAwIDY0IDY0Ij48ZGVmcz48c3R5bGU+LmNscy0xLC5jbHMtOXtmaWxsOiMy OTgwYjk7fS5jbHMtMSwuY2xzLTJ7c3Ryb2tlOiMyOTgwYjk7fS5jbHMtMSwuY2xzLTIsLmNscy02 LC5jbHMtN3tzdHJva2UtbGluZWpvaW46cm91bmQ7fS5jbHMtMiwuY2xzLTYsLmNscy03e2ZpbGw6 bm9uZTt9LmNscy0ye3N0cm9rZS1saW5lY2FwOnJvdW5kO3N0cm9rZS13aWR0aDoycHg7fS5jbHMt M3tmaWxsOiNmM2M3ZDc7fS5jbHMtNHtmaWxsOiNkMDQ0NjU7fS5jbHMtNXtvcGFjaXR5OjAuNTt9 LmNscy02LC5jbHMtN3tzdHJva2U6I2QwNDQ2NTt9LmNscy03e29wYWNpdHk6MC44O30uY2xzLTh7 ZmlsbDojYWRkZmYzO30uY2xzLTEwe2ZvbnQtc2l6ZToxMHB4O2ZpbGw6IzM0NDk1ZTtmb250LWZh bWlseTpIZWx2ZXRpY2FOZXVlLUJvbGQsIEhlbHZldGljYSBOZXVlO2ZvbnQtd2VpZ2h0OjcwMDt9 LmNscy0xMCwuY2xzLTEye2xldHRlci1zcGFjaW5nOjAuMWVtO30uY2xzLTExe2xldHRlci1zcGFj aW5nOjAuMDFlbTt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPmV4X3dvcmt0YWJsZV9zY2FuPC90aXRs ZT48cG9seWdvbiBjbGFzcz0iY2xzLTEiIHBvaW50cz0iOS43MiA1MC43OCA2LjI1IDQ2LjE0IDEz LjIgNDYuMTQgOS43MiA1MC43OCIvPjxsaW5lIGNsYXNzPSJjbHMtMiIgeDE9IjkuNzIiIHkxPSI0 Ni43NyIgeDI9IjkuNzIiIHkyPSIxNS44Ii8+PHBhdGggY2xhc3M9ImNscy0zIiBkPSJNMTcuNzYs NTcuNDdjLTEuMzcsMC0xLjUtLjEzLTEuNS0xLjVWMTUuNTNoNDFWNTZjMCwxLjM3LS4xMywxLjUt MS41LDEuNVoiLz48cGF0aCBjbGFzcz0iY2xzLTQiIGQ9Ik01Ni43NSwxNlY1NmEzLjI4LDMuMjgs MCwwLDEtLjA4LjksMi4xOCwyLjE4LDAsMCwxLS45Mi4xaC0zOGEzLjI1LDMuMjUsMCwwLDEtLjkt LjA4aDBhMi4xNywyLjE3LDAsMCwxLS4xLS45MlYxNmg0MG0xLTFoLTQyVjU2YzAsMS42NS4zNSwy LDIsMmgzOGMxLjY1LDAsMi0uMzUsMi0yVjE1WiIvPjxnIGNsYXNzPSJjbHMtNSI+PGxpbmUgY2xh c3M9ImNscy02IiB4MT0iMjQuNDYiIHkxPSI1Ni45NyIgeDI9IjI0LjQ2IiB5Mj0iMTUuOTciLz48 bGluZSBjbGFzcz0iY2xzLTYiIHgxPSI0MC44NiIgeTE9IjU2Ljk3IiB4Mj0iNDAuODYiIHkyPSIx NS45NyIvPjxsaW5lIGNsYXNzPSJjbHMtNiIgeDE9IjMyLjY2IiB5MT0iNTYuOTciIHgyPSIzMi42 NiIgeTI9IjE1Ljk3Ii8+PGxpbmUgY2xhc3M9ImNscy02IiB4MT0iNDkuMDYiIHkxPSI1Ni45NyIg eDI9IjQ5LjA2IiB5Mj0iMTUuOTciLz48bGluZSBjbGFzcz0iY2xzLTYiIHgxPSIxNi43NiIgeTE9 IjIzLjk3IiB4Mj0iNTYuNzMiIHkyPSIyMy45NyIvPjxsaW5lIGNsYXNzPSJjbHMtNyIgeDE9IjE2 Ljc2IiB5MT0iMzIuMzQiIHgyPSI1Ni43MyIgeTI9IjMyLjM0Ii8+PGxpbmUgY2xhc3M9ImNscy02 IiB4MT0iMTYuNzYiIHkxPSI0MC43MSIgeDI9IjU2LjczIiB5Mj0iNDAuNzEiLz48bGluZSBjbGFz cz0iY2xzLTYiIHgxPSIxNi43NiIgeTE9IjQ5LjA4IiB4Mj0iNTYuNzMiIHkyPSI0OS4wOCIvPjwv Zz48cGF0aCBjbGFzcz0iY2xzLTgiIGQ9Ik00OS4wNiwxNS41M3YtOWg2LjY5YzEuMzcsMCwxLjUu MTMsMS41LDEuNXY3LjVaIi8+PHBhdGggY2xhc3M9ImNscy05IiBkPSJNNTUuNzYsN2EzLjI1LDMu MjUsMCwwLDEsLjkuMDhoMGEyLjE4LDIuMTgsMCwwLDEsLjEuOTJ2N0g0OS41NlY3aDYuMTltMC0x SDQ4LjU2VjE2aDkuMTlWOGMwLTEuNjUtLjM1LTItMi0yWiIvPjxwYXRoIGNsYXNzPSJjbHMtOCIg ZD0iTTE2LjI2LDE1LjUzVjhjMC0xLjM3LjEzLTEuNSwxLjUtMS41aDYuNjl2OVoiLz48cGF0aCBj bGFzcz0iY2xzLTkiIGQ9Ik0yNCw3djhIMTYuNzZWOGEzLjI5LDMuMjksMCwwLDEsLjA4LS45LDIu MTgsMi4xOCwwLDAsMSwuOTItLjFIMjRtMS0xSDE3Ljc2Yy0xLjY1LDAtMiwuMzUtMiwydjhIMjVW NloiLz48cmVjdCBjbGFzcz0iY2xzLTgiIHg9IjQwLjg2IiB5PSI2LjUzIiB3aWR0aD0iOC4xOSIg aGVpZ2h0PSI5Ii8+PHBhdGggY2xhc3M9ImNscy05IiBkPSJNNDguNTQsN3Y4SDQxLjM2VjdoNy4x OG0xLTFINDAuMzZWMTZoOS4xOVY2WiIvPjxyZWN0IGNsYXNzPSJjbHMtOCIgeD0iMzIuNjciIHk9 IjYuNTMiIHdpZHRoPSI4LjE5IiBoZWlnaHQ9IjkiLz48cGF0aCBjbGFzcz0iY2xzLTkiIGQ9Ik00 MC4zNiw3djhIMzMuMTdWN2g3LjE4bTEtMUgzMi4xN1YxNmg5LjE5VjZaIi8+PHJlY3QgY2xhc3M9 ImNscy04IiB4PSIyNC40OCIgeT0iNi41MyIgd2lkdGg9IjguMTciIGhlaWdodD0iOSIvPjxwYXRo IGNsYXNzPSJjbHMtOSIgZD0iTTMyLjE1LDd2OEgyNVY3aDcuMTdtMS0xSDI0VjE2aDkuMThWNloi Lz48dGV4dCBjbGFzcz0iY2xzLTEwIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxOC45OCAzMy41NSki PldPUks8dHNwYW4gY2xhc3M9ImNscy0xMSI+PHRzcGFuIHg9Ii0wLjQyIiB5PSIxMiI+VDwvdHNw YW4+PHRzcGFuIGNsYXNzPSJjbHMtMTIiIHg9IjUuNzgiIHk9IjEyIj5BQkxFPC90c3Bhbj48L3Rz cGFuPjwvdGV4dD48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvRXhwbGFpbi9pbmRleC5qc3ggYi93ZWIvcGdhZG1pbi9z dGF0aWMvanMvRXhwbGFpbi9pbmRleC5qc3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw MDAwMDAwLi41N2JhNGRiYTIKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMv anMvRXhwbGFpbi9pbmRleC5qc3gKQEAgLTAsMCArMSw0ODEgQEAKKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAy MiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCB7IEJv eCwgVGFiLCBUYWJzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUnOworaW1wb3J0IFJlYWN0IGZy b20gJ3JlYWN0JzsKK2ltcG9ydCBfIGZyb20gJ2xvZGFzaCc7CitpbXBvcnQgR3JhcGhpY2FsIGZy b20gJy4vR3JhcGhpY2FsJzsKK2ltcG9ydCBUYWJQYW5lbCBmcm9tICcuLi9jb21wb25lbnRzL1Rh YlBhbmVsJzsKK2ltcG9ydCBnZXR0ZXh0ICBmcm9tICdzb3VyY2VzL2dldHRleHQnOworaW1wb3J0 IEltYWdlTWFwcGVyIGZyb20gJy4vSW1hZ2VNYXBwZXInOworaW1wb3J0IHsgbWFrZVN0eWxlcyB9 IGZyb20gJ0BtYXRlcmlhbC11aS9zdHlsZXMnOworaW1wb3J0IEFuYWx5c2lzIGZyb20gJy4vQW5h bHlzaXMnOworaW1wb3J0IEV4cGxhaW5TdGF0aXN0aWNzIGZyb20gJy4vRXhwbGFpblN0YXRpc3Rp Y3MnOworaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJzsKKworY29uc3QgdXNlU3R5 bGVzID0gbWFrZVN0eWxlcygodGhlbWUpPT4oeworICB0YWJQYW5lbDogeworICAgIHBhZGRpbmc6 IDAsCisgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQuZGVmYXVs dCwKKyAgfQorfSkpOworCisvLyBTb21lIHByZWRlZmluZWQgY29uc3RhbnRzIHVzZWQgdG8gY2Fs Y3VsYXRlIGltYWdlIGxvY2F0aW9uIGFuZCBpdHMgYm9yZGVyCit2YXIgcFdJRFRIID0gMTAwLjsK K3ZhciBwSEVJR0hUID0gMTAwLjsKK3ZhciBvZmZzZXRYID0gMjAwLAorICBvZmZzZXRZID0gNjA7 Cit2YXIgeE1hcmdpbiA9IDI1LAorICB5TWFyZ2luID0gMjU7CisKK2NvbnN0IERFRkFVTFRfQVJS T1dfU0laRSA9IDI7CisKK2Z1bmN0aW9uIG5vZGVFeHBsYWluVGFibGVEYXRhKF9wbGFuRGF0YSwg X2N0eCkgeworICBsZXQgbm9kZV9pbmZvLAorICAgIGRpc3BsYXlfdGV4dCA9IFtdLAorICAgIHRv b2x0aXAgPSBbXSwKKyAgICBub2RlX2V4dHJhX2luZm8gPSBbXSwKKyAgICBpbmZvID0gX2N0eC5l eHBsYWluVGFibGU7CisKKyAgLy8gRGlzcGxheTogPE5PREU+WyB1c2luZyA8SW5kZXg+IF0gWyBv biA8U2NoZW1hPi48VGFibGU+WyBhcyA8QWxpYXM+XV0KKworICBpZiAoL1NjYW4vLnRlc3QoX3Bs YW5EYXRhWydOb2RlIFR5cGUnXSkpIHsKKyAgICBkaXNwbGF5X3RleHQucHVzaChfcGxhbkRhdGFb J05vZGUgVHlwZSddKTsKKyAgICB0b29sdGlwLnB1c2goX3BsYW5EYXRhWydOb2RlIFR5cGUnXSk7 CisgIH0gZWxzZSB7CisgICAgZGlzcGxheV90ZXh0LnB1c2goX3BsYW5EYXRhWydpbWFnZV90ZXh0 J10pOworICAgIHRvb2x0aXAucHVzaChfcGxhbkRhdGFbJ2ltYWdlX3RleHQnXSk7CisgIH0KKyAg bm9kZV9pbmZvID0gdG9vbHRpcC5qb2luKCcnKTsKKworICBpZiAodHlwZW9mKF9wbGFuRGF0YVsn SW5kZXggTmFtZSddKSAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICBkaXNwbGF5X3RleHQucHVzaCgn IHVzaW5nICcpOworICAgIHRvb2x0aXAucHVzaCgnIHVzaW5nICcpOworICAgIGRpc3BsYXlfdGV4 dC5wdXNoKF8uZXNjYXBlKF9wbGFuRGF0YVsnSW5kZXggTmFtZSddKSk7CisgICAgdG9vbHRpcC5w dXNoKF9wbGFuRGF0YVsnSW5kZXggTmFtZSddKTsKKyAgfQorCisgIGlmICh0eXBlb2YoX3BsYW5E YXRhWydSZWxhdGlvbiBOYW1lJ10pICE9PSAndW5kZWZpbmVkJykgeworICAgIGRpc3BsYXlfdGV4 dC5wdXNoKCcgb24gJyk7CisgICAgdG9vbHRpcC5wdXNoKCcgb24gJyk7CisgICAgaWYgKHR5cGVv ZihfcGxhbkRhdGFbJ1NjaGVtYSddKSAhPT0gJ3VuZGVmaW5lZCcpIHsKKyAgICAgIGRpc3BsYXlf dGV4dC5wdXNoKF8uZXNjYXBlKF9wbGFuRGF0YVsnU2NoZW1hJ10pKTsKKyAgICAgIHRvb2x0aXAu cHVzaChfcGxhbkRhdGFbJ1NjaGVtYSddKTsKKyAgICAgIGRpc3BsYXlfdGV4dC5wdXNoKCcuJyk7 CisgICAgICB0b29sdGlwLnB1c2goJy4nKTsKKyAgICB9CisgICAgZGlzcGxheV90ZXh0LnB1c2go Xy5lc2NhcGUoX3BsYW5EYXRhWydSZWxhdGlvbiBOYW1lJ10pKTsKKyAgICB0b29sdGlwLnB1c2go X3BsYW5EYXRhWydSZWxhdGlvbiBOYW1lJ10pOworCisgICAgaWYgKHR5cGVvZihfcGxhbkRhdGFb J0FsaWFzJ10pICE9PSAndW5kZWZpbmVkJykgeworICAgICAgZGlzcGxheV90ZXh0LnB1c2goJyBh cyAnKTsKKyAgICAgIHRvb2x0aXAucHVzaCgnIGFzICcpOworICAgICAgZGlzcGxheV90ZXh0LnB1 c2goXy5lc2NhcGUoX3BsYW5EYXRhWydBbGlhcyddKSk7CisgICAgICB0b29sdGlwLnB1c2goXy5l c2NhcGUoX3BsYW5EYXRhWydBbGlhcyddKSk7CisgICAgfQorICB9CisKKyAgaWYgKAorICAgIHR5 cGVvZihfcGxhbkRhdGFbJ1BsYW4gUm93cyddKSAhPT0gJ3VuZGVmaW5lZCcgJiYKKyAgICB0eXBl b2YoX3BsYW5EYXRhWydQbGFuIFdpZHRoJ10pICE9PSAndW5kZWZpbmVkJworICApIHsKKyAgICBs ZXQgY29zdCA9IFsKKyAgICAgICcgKGNvc3Q9JywKKyAgICAgICh0eXBlb2YoX3BsYW5EYXRhWydT dGFydHVwIENvc3QnXSkgIT09ICd1bmRlZmluZWQnID8KKyAgICAgICAgX3BsYW5EYXRhWydTdGFy dHVwIENvc3QnXSA6ICcnKSwKKyAgICAgICcuLicsCisgICAgICAodHlwZW9mKF9wbGFuRGF0YVsn VG90YWwgQ29zdCddKSAhPT0gJ3VuZGVmaW5lZCcgPworICAgICAgICBfcGxhbkRhdGFbJ1RvdGFs IENvc3QnXSA6ICcnKSwKKyAgICAgICcgcm93cz0nLAorICAgICAgX3BsYW5EYXRhWydQbGFuIFJv d3MnXSwKKyAgICAgICcgd2lkdGg9JywKKyAgICAgIF9wbGFuRGF0YVsnUGxhbiBXaWR0aCddLAor ICAgICAgJyknLAorICAgIF0uam9pbignJyk7CisgICAgZGlzcGxheV90ZXh0LnB1c2goY29zdCk7 CisgICAgdG9vbHRpcC5wdXNoKGNvc3QpOworICB9CisKKyAgaWYgKAorICAgIHR5cGVvZihfcGxh bkRhdGFbJ0FjdHVhbCBTdGFydHVwIFRpbWUnXSkgIT09ICd1bmRlZmluZWQnIHx8CisgICAgdHlw ZW9mKF9wbGFuRGF0YVsnQWN0dWFsIFRvdGFsIFRpbWUnXSkgIT09ICd1bmRlZmluZWQnIHx8Cisg ICAgdHlwZW9mKF9wbGFuRGF0YVsnQWN0dWFsIFJvd3MnXSkgIT09ICd1bmRlZmluZWQnCisgICkg eworICAgIGxldCBhY3R1YWwgPSBbCisgICAgICAnICgnLAorICAgICAgKHR5cGVvZihfcGxhbkRh dGFbJ0FjdHVhbCBTdGFydHVwIFRpbWUnXSkgIT09ICd1bmRlZmluZWQnID8KKyAgICAgICAgKCdh Y3R1YWw9JyArIF9wbGFuRGF0YVsnQWN0dWFsIFN0YXJ0dXAgVGltZSddKSArICcuLicgOiAnJwor ICAgICAgKSwKKyAgICAgICh0eXBlb2YoX3BsYW5EYXRhWydBY3R1YWwgVG90YWwgVGltZSddKSAh PT0gJ3VuZGVmaW5lZCcgPworICAgICAgICBfcGxhbkRhdGFbJ0FjdHVhbCBUb3RhbCBUaW1lJ10g KyAnICcgOiAnJworICAgICAgKSwKKyAgICAgICh0eXBlb2YoX3BsYW5EYXRhWydBY3R1YWwgUm93 cyddKSAhPT0gJ3VuZGVmaW5lZCcgPworICAgICAgICAoJ3Jvd3M9JyArIF9wbGFuRGF0YVsnQWN0 dWFsIFJvd3MnXSkgOiAnJworICAgICAgKSwKKyAgICAgICh0eXBlb2YoX3BsYW5EYXRhWydBY3R1 YWwgTG9vcHMnXSkgIT09ICd1bmRlZmluZWQnID8KKyAgICAgICAgKCcgbG9vcHM9JyArIF9wbGFu RGF0YVsnQWN0dWFsIExvb3BzJ10pIDogJycKKyAgICAgICksCisgICAgICAnKScsCisgICAgXS5q b2luKCcnKTsKKworICAgIGRpc3BsYXlfdGV4dC5wdXNoKGFjdHVhbCk7CisgICAgdG9vbHRpcC5w dXNoKGFjdHVhbCk7CisgIH0KKworICBpZiAoJ0pvaW4gRmlsdGVyJyBpbiBfcGxhbkRhdGEpIHsK KyAgICBub2RlX2V4dHJhX2luZm8ucHVzaCgKKyAgICAgICc8c3Ryb25nPicgKyBnZXR0ZXh0KCdK b2luIEZpbHRlcicpICsgJzwvc3Ryb25nPjogJyArIF8uZXNjYXBlKF9wbGFuRGF0YVsnSm9pbiBG aWx0ZXInXSkKKyAgICApOworICB9CisKKyAgaWYgKCdGaWx0ZXInIGluIF9wbGFuRGF0YSkgewor ICAgIG5vZGVfZXh0cmFfaW5mby5wdXNoKCc8c3Ryb25nPicgKyBnZXR0ZXh0KCdGaWx0ZXInKSAr ICc8L3N0cm9uZz46ICcgKyBfLmVzY2FwZShfcGxhbkRhdGFbJ0ZpbHRlciddKSk7CisgIH0KKwor ICBpZiAoJ0luZGV4IENvbmQnIGluIF9wbGFuRGF0YSkgeworICAgIG5vZGVfZXh0cmFfaW5mby5w dXNoKCc8c3Ryb25nPicgKyBnZXR0ZXh0KCdJbmRleCBDb25kJykgKyAnPC9zdHJvbmc+OiAnICsg Xy5lc2NhcGUoX3BsYW5EYXRhWydJbmRleCBDb25kJ10pKTsKKyAgfQorCisgIGlmICgnSGFzaCBD b25kJyBpbiBfcGxhbkRhdGEpIHsKKyAgICBub2RlX2V4dHJhX2luZm8ucHVzaCgnPHN0cm9uZz4n ICsgZ2V0dGV4dCgnSGFzaCBDb25kJykgKyAnPC9zdHJvbmc+OiAnICsgXy5lc2NhcGUoX3BsYW5E YXRhWydIYXNoIENvbmQnXSkpOworICB9CisKKyAgaWYgKCdSb3dzIFJlbW92ZWQgYnkgRmlsdGVy JyBpbiBfcGxhbkRhdGEpIHsKKyAgICBub2RlX2V4dHJhX2luZm8ucHVzaCgKKyAgICAgICc8c3Ry b25nPicgKyBnZXR0ZXh0KCdSb3dzIFJlbW92ZWQgYnkgRmlsdGVyJykgKyAnPC9zdHJvbmc+OiAn ICsKKyAgICAgICAgXy5lc2NhcGUoX3BsYW5EYXRhWydSb3dzIFJlbW92ZWQgYnkgRmlsdGVyJ10p CisgICAgKTsKKyAgfQorCisgIGlmICgnUGVhayBNZW1vcnkgVXNhZ2UnIGluIF9wbGFuRGF0YSkg eworICAgIHZhciBidWZmZXIgPSBbCisgICAgICAnPHN0cm9uZz4nICsgZ2V0dGV4dCgnQnVja2V0 cycpICsgJzwvc3Ryb25nPjonLCBfLmVzY2FwZShfcGxhbkRhdGFbJ0hhc2ggQnVja2V0cyddKSwK KyAgICAgICc8c3Ryb25nPicgKyBnZXR0ZXh0KCdCYXRjaGVzJykgKyAnPC9zdHJvbmc+OicsIF8u ZXNjYXBlKF9wbGFuRGF0YVsnSGFzaCBCYXRjaGVzJ10pLAorICAgICAgJzxzdHJvbmc+JyArIGdl dHRleHQoJ01lbW9yeSBVc2FnZScpICsgJzwvc3Ryb25nPjonLCBfLmVzY2FwZShfcGxhbkRhdGFb J1BlYWsgTWVtb3J5IFVzYWdlJ10pLCAna0InLAorICAgIF0uam9pbignICcpOworICAgIG5vZGVf ZXh0cmFfaW5mby5wdXNoKGJ1ZmZlcik7CisgIH0KKworICBpZiAoJ1JlY2hlY2sgQ29uZCcgaW4g X3BsYW5EYXRhKSB7CisgICAgbm9kZV9leHRyYV9pbmZvLnB1c2goJzxzdHJvbmc+JyArIGdldHRl eHQoJ1JlY2hlY2sgQ29uZCcpICsgJzwvc3Ryb25nPjogJyArIF9wbGFuRGF0YVsnUmVjaGVjayBD b25kJ10pOworICB9CisKKyAgaWYgKCdFeGFjdCBIZWFwIEJsb2NrcycgaW4gX3BsYW5EYXRhKSB7 CisgICAgbm9kZV9leHRyYV9pbmZvLnB1c2goJzxzdHJvbmc+JyArIGdldHRleHQoJ0hlYXAgQmxv Y2tzJykgKyAnPC9zdHJvbmc+OiBleGFjdD0nICsgX3BsYW5EYXRhWydFeGFjdCBIZWFwIEJsb2Nr cyddKTsKKyAgfQorCisgIGluZm8ucm93cy5wdXNoKHsKKyAgICBkYXRhOiBfcGxhbkRhdGEsCisg ICAgZGlzcGxheV90ZXh0OiBkaXNwbGF5X3RleHQuam9pbignJyksCisgICAgdG9vbHRpcF90ZXh0 OiB0b29sdGlwLmpvaW4oJycpLAorICAgIG5vZGVfZXh0cmFfaW5mbzogbm9kZV9leHRyYV9pbmZv LAorICB9KTsKKworICBpZiAodHlwZW9mKF9wbGFuRGF0YVsnZXhjbHVzaXZlX2ZsYWcnXSkgIT09 ICd1bmRlZmluZWQnKSB7CisgICAgaW5mby5zaG93X3RpbWluZ3MgPSB0cnVlOworICB9CisKKyAg aWYgKHR5cGVvZihfcGxhbkRhdGFbJ3Jvd3N4X2ZsYWcnXSkgIT09ICd1bmRlZmluZWQnKSB7Cisg ICAgaW5mby5zaG93X3Jvd3N4ID0gdHJ1ZTsKKyAgfQorCisgIGlmICh0eXBlb2YoX3BsYW5EYXRh WydBY3R1YWwgTG9vcHMnXSkgIT09ICd1bmRlZmluZWQnKSB7CisgICAgaW5mby5zaG93X3Jvd3Mg PSB0cnVlOworICB9CisKKyAgaWYgKHR5cGVvZihfcGxhbkRhdGFbJ1BsYW4gUm93cyddKSAhPT0g J3VuZGVmaW5lZCcpIHsKKyAgICBpbmZvLnNob3dfcGxhbl9yb3dzID0gdHJ1ZTsKKyAgfQorCisg IGlmICh0eXBlb2YoX3BsYW5EYXRhWyd0b3RhbF90aW1lJ10pICE9PSAndW5kZWZpbmVkJykgewor ICAgIGluZm8udG90YWxfdGltZSA9IF9wbGFuRGF0YVsndG90YWxfdGltZSddOworICB9CisKKyAg bGV0IG5vZGU7CisKKyAgaWYgKHR5cGVvZihfcGxhbkRhdGFbJ1JlbGF0aW9uIE5hbWUnXSkgIT09 ICd1bmRlZmluZWQnKSB7CisgICAgbGV0IHJlbGF0aW9uTmFtZSA9ICgKKyAgICAgICAgdHlwZW9m KF9wbGFuRGF0YVsnU2NoZW1hJ10pICE9PSAndW5kZWZpbmVkJyA/CisgICAgICAgICAgKF9wbGFu RGF0YVsnU2NoZW1hJ10gKyAnLicpIDogJycKKyAgICAgICkgKyBfcGxhbkRhdGFbJ1JlbGF0aW9u IE5hbWUnXSwKKyAgICAgIHRhYmxlID0gaW5mby5zdGF0aXN0aWNzLnRhYmxlc1tyZWxhdGlvbk5h bWVdIHx8IHsKKyAgICAgICAgbmFtZTogcmVsYXRpb25OYW1lLAorICAgICAgICBjb3VudDogMCwK KyAgICAgICAgc3VtX29mX3RpbWVzOiAwLAorICAgICAgICBub2Rlczoge30sCisgICAgICB9Owor CisgICAgbm9kZSA9IHRhYmxlLm5vZGVzW25vZGVfaW5mb10gfHwgeworICAgICAgbmFtZTogbm9k ZV9pbmZvLAorICAgICAgY291bnQ6IDAsCisgICAgICBzdW1fb2ZfdGltZXM6IDAsCisgICAgfTsK KworICAgIHRhYmxlLmNvdW50Kys7CisgICAgdGFibGUuc3VtX29mX3RpbWVzICs9IF9wbGFuRGF0 YVsnZXhjbHVzaXZlJ107CisgICAgbm9kZS5jb3VudCsrOworICAgIG5vZGUuc3VtX29mX3RpbWVz ICs9IF9wbGFuRGF0YVsnZXhjbHVzaXZlJ107CisKKyAgICB0YWJsZS5ub2Rlc1tub2RlX2luZm9d ID0gbm9kZTsKKyAgICBpbmZvLnN0YXRpc3RpY3MudGFibGVzW3JlbGF0aW9uTmFtZV0gPSB0YWJs ZTsKKyAgfQorCisgIG5vZGUgPSBpbmZvLnN0YXRpc3RpY3Mubm9kZXNbbm9kZV9pbmZvXSB8fCB7 CisgICAgbmFtZTogbm9kZV9pbmZvLAorICAgIGNvdW50OiAwLAorICAgIHN1bV9vZl90aW1lczog MCwKKyAgfTsKKworICBub2RlLmNvdW50Kys7CisgIG5vZGUuc3VtX29mX3RpbWVzICs9IF9wbGFu RGF0YVsnZXhjbHVzaXZlJ107CisgIGluZm8uc3RhdGlzdGljcy5ub2Rlc1tub2RlX2luZm9dID0g bm9kZTsKK30KKworZnVuY3Rpb24gcGFyc2VQbGFuKGRhdGEsIGN0eCkgeworICB2YXIgaWR4ID0g MSwKKyAgICBsdmwgPSBkYXRhLmxldmVsID0gZGF0YS5sZXZlbCB8fCBbaWR4XSwKKyAgICBwbGFu cyA9IFtdLAorICAgIG5vZGVUeXBlID0gZGF0YVsnTm9kZSBUeXBlJ10sCisgICAgLy8gQ2FsY3Vs YXRpbmcgcmVsYXRpdmUgeHBvcyBvZiBjdXJyZW50IG5vZGUgZnJvbSB0b3Agbm9kZQorICAgIHhw b3MgPSBkYXRhLnhwb3MgPSBkYXRhLnhwb3MgLSBwV0lEVEgsCisgICAgLy8gQ2FsY3VsYXRpbmcg cmVsYXRpdmUgeXBvcyBvZiBjdXJyZW50IG5vZGUgZnJvbSB0b3Agbm9kZQorICAgIHlwb3MgPSBk YXRhLnlwb3MsCisgICAgbWF4Q2hpbGRXaWR0aCA9IDA7CisKKyAgY3R4LnRvdGFsTm9kZXMrKzsK KyAgY3R4LmV4cGxhaW5UYWJsZS50b3RhbF90aW1lID0gZGF0YVsndG90YWxfdGltZSddIHx8IGRh dGFbJ0FjdHVhbCBUb3RhbCBUaW1lJ107CisKKyAgZGF0YVsnX3NlcmlhbCddID0gY3R4LnRvdGFs Tm9kZXM7CisgIGRhdGFbJ3dpZHRoJ10gPSBwV0lEVEg7CisgIGRhdGFbJ2hlaWdodCddID0gcEhF SUdIVDsKKworICAvLyBDYWxjdWxhdGUgYXJyb3cgd2lkdGggYWNjb3JkaW5nIHRvIGNvc3Qgb2Yg YSBwYXJ0aWN1bGFyIHBsYW4KKyAgbGV0IGFycm93U2l6ZSA9IERFRkFVTFRfQVJST1dfU0laRTsK KyAgbGV0IHN0YXJ0Q29zdCA9IGRhdGFbJ1N0YXJ0dXAgQ29zdCddLAorICAgIHRvdGFsQ29zdCA9 IGRhdGFbJ1RvdGFsIENvc3QnXTsKKyAgaWYgKHN0YXJ0Q29zdCAhPSB1bmRlZmluZWQgJiYgdG90 YWxDb3N0ICE9IHVuZGVmaW5lZCkgeworICAgIGFycm93U2l6ZSA9IE1hdGgucm91bmQoTWF0aC5s b2coKHN0YXJ0Q29zdCArIHRvdGFsQ29zdCkgLyAyICsgc3RhcnRDb3N0KSk7CisgICAgYXJyb3dT aXplID0gYXJyb3dTaXplIDwgMSA/IDEgOiBhcnJvd1NpemUgPiAxMCA/IDEwIDogYXJyb3dTaXpl OworICB9CisgIGRhdGFbJ2Fycl9pZCddID0gXy51bmlxdWVJZCgnYXJyJyk7CisgIGN0eC5hcnJv d3NbZGF0YVsnYXJyX2lkJ11dID0gYXJyb3dTaXplOworICAvKgorICAgKiBjYWxjdWxhdGluZyB4 cG9zLCB5cG9zLCB3aWR0aCBhbmQgaGVpZ2h0IGlmIGN1cnJlbnQgbm9kZSBpcyBhIHN1YnBsYW4K KyAgICovCisgIGlmIChkYXRhWydQYXJlbnQgUmVsYXRpb25zaGlwJ10gPT09ICdTdWJQbGFuJykg eworICAgIGRhdGFbJ3dpZHRoJ10gKz0gKHhNYXJnaW4gKiAyKSArICh4TWFyZ2luIC8gMik7Cisg ICAgZGF0YVsnaGVpZ2h0J10gKz0gKHlNYXJnaW4gKiAyKTsKKyAgICBkYXRhWyd5cG9zJ10gKz0g eU1hcmdpbjsKKyAgICB4cG9zIC09IHhNYXJnaW47CisgICAgeXBvcyArPSB5TWFyZ2luOworICB9 CisKKyAgaWYgKG5vZGVUeXBlLnN0YXJ0c1dpdGgoJyhzbGljZScpKQorICAgIG5vZGVUeXBlID0g bm9kZVR5cGUuc3Vic3RyaW5nKDAsIDcpOworCisgIC8vIEdldCB0aGUgaW1hZ2UgaW5mb3JtYXRp b24gZm9yIGN1cnJlbnQgbm9kZQorICB2YXIgbWFwcGVkSW1hZ2UgPSAoXy5pc0Z1bmN0aW9uKElt YWdlTWFwcGVyW25vZGVUeXBlXSkgJiYKKyAgICAgIEltYWdlTWFwcGVyW25vZGVUeXBlXS5hcHBs eSh1bmRlZmluZWQsIFtkYXRhXSkpIHx8CisgICAgSW1hZ2VNYXBwZXJbbm9kZVR5cGVdIHx8IHsK KyAgICAnaW1hZ2UnOiAnZXhfdW5rbm93bi5zdmcnLAorICAgICdpbWFnZV90ZXh0Jzogbm9kZVR5 cGUsCisgIH07CisKKyAgZGF0YVsnaW1hZ2UnXSA9IG1hcHBlZEltYWdlWydpbWFnZSddOworICBk YXRhWydpbWFnZV90ZXh0J10gPSBtYXBwZWRJbWFnZVsnaW1hZ2VfdGV4dCddOworCisgIGlmICgn QWN0dWFsIFRvdGFsIFRpbWUnIGluIGRhdGEgJiYgJ0FjdHVhbCBMb29wcycgaW4gZGF0YSkgewor ICAgIGRhdGFbJ2luY2x1c2l2ZSddID0gTWF0aC5jZWlsMTAoCisgICAgICBkYXRhWydBY3R1YWwg VG90YWwgVGltZSddICogZGF0YVsnQWN0dWFsIExvb3BzJ10sIC0zCisgICAgKTsKKyAgICBkYXRh WydleGNsdXNpdmUnXSA9IGRhdGFbJ2luY2x1c2l2ZSddOworICAgIGRhdGFbJ2luY2x1c2l2ZV9m YWN0b3InXSA9ICBkYXRhWydpbmNsdXNpdmUnXSAvICgKKyAgICAgIGRhdGFbJ3RvdGFsX3RpbWUn XSB8fCBkYXRhWydBY3R1YWwgVG90YWwgVGltZSddCisgICAgKTsKKyAgICBkYXRhWydpbmNsdXNp dmVfZmxhZyddID0gZGF0YVsnaW5jbHVzaXZlX2ZhY3RvciddIDw9IDAuMSA/ICcxJyA6CisgICAg ICBkYXRhWydpbmNsdXNpdmVfZmFjdG9yJ10gPCAwLjUgPyAnMicgOgorICAgICAgICBkYXRhWydp bmNsdXNpdmVfZmFjdG9yJ10gPD0gMC45ID8gJzMnIDogJzQnOworICB9CisKKyAgaWYgKCdBY3R1 YWwgUm93cycgaW4gZGF0YSAmJiAnUGxhbiBSb3dzJyBpbiBkYXRhKSB7CisgICAgaWYgKAorICAg ICAgZGF0YVsnQWN0dWFsIFJvd3MnXSA9PT0gMCB8fCBkYXRhWydBY3R1YWwgUm93cyddID4gZGF0 YVsnUGxhbiBSb3dzJ10KKyAgICApIHsKKyAgICAgIGRhdGFbJ3Jvd3N4J10gPSBkYXRhWydQbGFu IFJvd3MnXSA9PT0gMCA/IDAgOgorICAgICAgICAoZGF0YVsnQWN0dWFsIFJvd3MnXSAvIGRhdGFb J1BsYW4gUm93cyddKTsKKyAgICAgIGRhdGFbJ3Jvd3N4X2RpcmVjdGlvbiddID0gJ25lZ2F0aXZl JzsKKyAgICB9IGVsc2UgeworICAgICAgZGF0YVsncm93c3gnXSA9IGRhdGFbJ0FjdHVhbCBSb3dz J10gPT09IDAgPyAwIDogKAorICAgICAgICBkYXRhWydQbGFuIFJvd3MnXSAvIGRhdGFbJ0FjdHVh bCBSb3dzJ10KKyAgICAgICk7CisgICAgICBkYXRhWydyb3dzeF9kaXJlY3Rpb24nXSA9ICdwb3Np dGl2ZSc7CisgICAgfQorICAgIGRhdGFbJ3Jvd3N4X2ZsYWcnXSA9IGRhdGFbJ3Jvd3N4J10gPD0g MTAgPyAnMScgOiAoCisgICAgICBkYXRhWydyb3dzeCddIDw9IDEwMCA/ICcyJyA6IChkYXRhWydy b3dzeCddIDw9IDEwMDAgPyAnMycgOiAnNCcpCisgICAgKTsKKyAgICBkYXRhWydyb3dzeCddID0g TWF0aC5jZWlsMTAoZGF0YVsncm93c3gnXSwgLTIpOworICB9CisKKyAgLy8gU3RhcnQgY2FsY3Vs YXRpbmcgeHBvcywgeXBvcywgd2lkdGggYW5kIGhlaWdodCBmb3IgY2hpbGQgcGxhbnMgaWYgYW55 CisgIGlmICgnUGxhbnMnIGluIGRhdGEpIHsKKyAgICBkYXRhWyd3aWR0aCddICs9IG9mZnNldFg7 CisKKyAgICBkYXRhWydQbGFucyddLmZvckVhY2goZnVuY3Rpb24ocCkgeworICAgICAgbGV0IGxl dmVsID0gXy5jbG9uZShsdmwpOworICAgICAgbGV2ZWwucHVzaChpZHgpOworCisgICAgICBsZXQg cGxhbiA9IHBhcnNlUGxhbih7CisgICAgICAgIC4uLnAsCisgICAgICAgICdsZXZlbCc6IGxldmVs LAorICAgICAgICB4cG9zOiB4cG9zIC0gb2Zmc2V0WCwKKyAgICAgICAgeXBvczogeXBvcywKKyAg ICAgICAgdG90YWxfdGltZTogZGF0YVsndG90YWxfdGltZSddIHx8IGRhdGFbJ0FjdHVhbCBUb3Rh bCBUaW1lJ10sCisgICAgICAgIHBhcmVudF9ub2RlOiBsdmwuam9pbignXycpLAorICAgICAgfSwg Y3R4KTsKKworICAgICAgaWYgKG1heENoaWxkV2lkdGggPCBwbGFuLndpZHRoKSB7CisgICAgICAg IG1heENoaWxkV2lkdGggPSBwbGFuLndpZHRoOworICAgICAgfQorCisgICAgICBpZiAoJ2V4Y2x1 c2l2ZScgaW4gZGF0YSkgeworICAgICAgICBpZiAocGxhbi5pbmNsdXNpdmUpIHsKKyAgICAgICAg ICBkYXRhWydleGNsdXNpdmUnXSAtPSBwbGFuLmluY2x1c2l2ZTsKKyAgICAgICAgfQorICAgICAg fQorCisgICAgICB2YXIgY2hpbGRIZWlnaHQgPSBwbGFuLmhlaWdodDsKKworICAgICAgaWYgKGlk eCAhPT0gMSkgeworICAgICAgICBkYXRhWydoZWlnaHQnXSA9IGRhdGFbJ2hlaWdodCddICsgY2hp bGRIZWlnaHQgKyBvZmZzZXRZOworICAgICAgfSBlbHNlIGlmIChjaGlsZEhlaWdodCA+IGRhdGFb J2hlaWdodCddKSB7CisgICAgICAgIGRhdGFbJ2hlaWdodCddID0gY2hpbGRIZWlnaHQ7CisgICAg ICB9CisgICAgICB5cG9zICs9IGNoaWxkSGVpZ2h0ICsgb2Zmc2V0WTsKKworICAgICAgcGxhbnMu cHVzaChwbGFuKTsKKyAgICAgIGlkeCsrOworICAgIH0pOworICB9CisKKyAgaWYgKCdleGNsdXNp dmUnIGluIGRhdGEpIHsKKyAgICBkYXRhWydleGNsdXNpdmUnXSA9IE1hdGguY2VpbDEwKGRhdGFb J2V4Y2x1c2l2ZSddLCAtMyk7CisgICAgZGF0YVsnZXhjbHVzaXZlX2ZhY3RvciddID0gKAorICAg ICAgZGF0YVsnZXhjbHVzaXZlJ10gLyAoZGF0YVsndG90YWxfdGltZSddIHx8IGRhdGFbJ0FjdHVh bCBUb3RhbCBUaW1lJ10pCisgICAgKTsKKyAgICBkYXRhWydleGNsdXNpdmVfZmxhZyddID0gZGF0 YVsnZXhjbHVzaXZlX2ZhY3RvciddIDw9IDAuMSA/ICcxJyA6CisgICAgICBkYXRhWydleGNsdXNp dmVfZmFjdG9yJ10gPCAwLjUgPyAnMicgOgorICAgICAgICBkYXRhWydleGNsdXNpdmVfZmFjdG9y J10gPD0gMC45ID8gJzMnIDogJzQnOworICB9CisKKyAgLy8gRmluYWwgV2lkdGggYW5kIEhlaWdo dCBvZiBjdXJyZW50IG5vZGUKKyAgZGF0YVsnd2lkdGgnXSArPSBtYXhDaGlsZFdpZHRoOworICBk YXRhWydQbGFucyddID0gcGxhbnM7CisgIG5vZGVFeHBsYWluVGFibGVEYXRhKGRhdGEsIGN0eCk7 CisKKyAgcmV0dXJuIGRhdGE7Cit9CisKK2Z1bmN0aW9uIHBhcnNlUGxhbkRhdGEoZGF0YSwgY3R4 KSB7CisgIGxldCByZXRQbGFuID0ge307CisgIGlmKGRhdGEpIHsKKyAgICBpZiAoJ1BsYW4nIGlu IGRhdGEpIHsKKyAgICAgIGxldCBwbGFuID0gcGFyc2VQbGFuKHsKKyAgICAgICAgLi4uZGF0YVsn UGxhbiddLAorICAgICAgICB4cG9zOiAwLAorICAgICAgICB5cG9zOiAwLAorICAgICAgfSwgY3R4 KTsKKyAgICAgIHJldFBsYW5bJ1BsYW4nXSA9IHBsYW47CisgICAgICByZXRQbGFuWyd4cG9zJ10g PSAwOworICAgICAgcmV0UGxhblsneXBvcyddID0gMDsKKyAgICAgIHJldFBsYW5bJ3dpZHRoJ10g PSBwbGFuLndpZHRoICsgKHhNYXJnaW4gKiAyKTsKKyAgICAgIHJldFBsYW5bJ2hlaWdodCddID0g cGxhbi5oZWlnaHQgKyAoeU1hcmdpbiAqIDQpOworICAgIH0KKworICAgIHJldFBsYW5bJ1N0YXRp c3RpY3MnXSA9IHsKKyAgICAgICdKSVQnOiBbXSwKKyAgICAgICdUcmlnZ2Vycyc6IFtdLAorICAg ICAgJ1N1bW1hcnknOiB7fSwKKyAgICB9OworICAgIGlmIChkYXRhICYmICdKSVQnIGluIGRhdGEp IHsKKyAgICAgIHJldFBsYW5bJ1N0YXRpc3RpY3MnXVsnSklUJ10gPSByZXRQbGFuWydKSVQnXTsK KyAgICB9CisgICAgaWYgKGRhdGEgJiYgJ1RyaWdnZXJzJyBpbiBkYXRhKSB7CisgICAgICByZXRQ bGFuWydTdGF0aXN0aWNzJ11bJ1RyaWdnZXJzJ10gPSByZXRQbGFuWydKSVRyaWdnZXJzVCddOwor ICAgIH0KKyAgICBpZihkYXRhKSB7CisgICAgICBsZXQgc3VtbUtleXMgPSBbJ1BsYW5uaW5nIFRp bWUnLCAnRXhlY3V0aW9uIFRpbWUnXSwKKyAgICAgICAgc3VtbWFyeSA9IHt9OworCisgICAgICBz dW1tS2V5cy5mb3JFYWNoKChrZXkpPT57CisgICAgICAgIGlmIChrZXkgaW4gZGF0YSkgeworICAg ICAgICAgIHN1bW1hcnlba2V5XSA9IGRhdGFba2V5XTsKKyAgICAgICAgfQorICAgICAgfSk7CisK KyAgICAgIHJldFBsYW5bJ1N0YXRpc3RpY3MnXVsnU3VtbWFyeSddID0gc3VtbWFyeTsKKyAgICB9 CisgICAgaWYgKGRhdGEgJiYgJ1NldHRpbmdzJyBpbiBkYXRhKSB7CisgICAgICByZXRQbGFuWydT dGF0aXN0aWNzJ11bJ1NldHRpbmdzJ10gPSBkYXRhWydTZXR0aW5ncyddOworICAgIH0KKyAgfQor ICByZXR1cm4gcmV0UGxhbjsKK30KKworZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRXhwbGFpbih7 cGxhbnM9W119KSB7CisgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAgY29uc3QgW3Rh YlZhbHVlLCBzZXRUYWJWYWx1ZV0gPSBSZWFjdC51c2VTdGF0ZSgwKTsKKworICBsZXQgY3R4ID0g UmVhY3QudXNlUmVmKHsKKyAgICB0b3RhbE5vZGVzOiAwLAorICAgIHRvdGFsRG93bmxvYWRlZE5v ZGVzOiAwLAorICAgIGlzRG93bmxvYWRlZDogMCwKKyAgICBleHBsYWluVGFibGU6IHsKKyAgICAg IHJvd3M6IFtdLAorICAgICAgc3RhdGlzdGljczogeworICAgICAgICB0YWJsZXM6IHt9LAorICAg ICAgICBub2Rlczoge30sCisgICAgICB9LAorICAgIH0sCisgICAgYXJyb3dzOiB7fSwKKyAgfSk7 CisgIGxldCBwbGFuRGF0YSA9IFJlYWN0LnVzZU1lbW8oKCk9PnBhcnNlUGxhbkRhdGEocGxhbnNb MF0sIGN0eC5jdXJyZW50KSwgW3BsYW5zXSk7CisKKyAgcmV0dXJuICgKKyAgICA8Qm94IGhlaWdo dD0iMTAwJSIgZGlzcGxheT0iZmxleCIgZmxleERpcmVjdGlvbj0iY29sdW1uIj4KKyAgICAgIDxC b3g+CisgICAgICAgIDxUYWJzCisgICAgICAgICAgdmFsdWU9e3RhYlZhbHVlfQorICAgICAgICAg IG9uQ2hhbmdlPXsoX2UsIHNlbFRhYlZhbHVlKSA9PiB7CisgICAgICAgICAgICBzZXRUYWJWYWx1 ZShzZWxUYWJWYWx1ZSk7CisgICAgICAgICAgfX0KKyAgICAgICAgICAvLyBpbmRpY2F0b3JDb2xv cj0icHJpbWFyeSIKKyAgICAgICAgICB2YXJpYW50PSJzY3JvbGxhYmxlIgorICAgICAgICAgIHNj cm9sbEJ1dHRvbnM9ImF1dG8iCisgICAgICAgICAgYWN0aW9uPXsocmVmKT0+cmVmICYmIHJlZi51 cGRhdGVJbmRpY2F0b3IoKX0KKyAgICAgICAgPgorICAgICAgICAgIDxUYWIgbGFiZWw9IkdyYXBo aWNhbCIgLz4KKyAgICAgICAgICA8VGFiIGxhYmVsPSJBbmFseXNpcyIgLz4KKyAgICAgICAgICA8 VGFiIGxhYmVsPSJTdGF0aXN0aWNzIiAvPgorICAgICAgICA8L1RhYnM+CisgICAgICA8L0JveD4K KyAgICAgIDxUYWJQYW5lbCB2YWx1ZT17dGFiVmFsdWV9IGluZGV4PXswfSBjbGFzc05hbWVSb290 PXtjbGFzc2VzLnRhYlBhbmVsfT4KKyAgICAgICAgPEdyYXBoaWNhbCBwbGFuRGF0YT17cGxhbkRh dGF9IGN0eD17Y3R4LmN1cnJlbnR9Lz4KKyAgICAgIDwvVGFiUGFuZWw+CisgICAgICA8VGFiUGFu ZWwgdmFsdWU9e3RhYlZhbHVlfSBpbmRleD17MX0gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQ YW5lbH0+CisgICAgICAgIDxBbmFseXNpcyBleHBsYWluVGFibGU9e2N0eC5jdXJyZW50LmV4cGxh aW5UYWJsZX0gLz4KKyAgICAgIDwvVGFiUGFuZWw+CisgICAgICA8VGFiUGFuZWwgdmFsdWU9e3Rh YlZhbHVlfSBpbmRleD17Mn0gY2xhc3NOYW1lUm9vdD17Y2xhc3Nlcy50YWJQYW5lbH0+CisgICAg ICAgIDxFeHBsYWluU3RhdGlzdGljcyBleHBsYWluVGFibGU9e2N0eC5jdXJyZW50LmV4cGxhaW5U YWJsZX0gLz4KKyAgICAgIDwvVGFiUGFuZWw+CisgICAgPC9Cb3g+CisgICk7Cit9CisKK0V4cGxh aW4ucHJvcFR5cGVzID0geworICBwbGFuczogUHJvcFR5cGVzLmFycmF5LAorfTsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL3N2Z19kb3dubG9hZC5qcyBiL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL3N2Z19kb3dubG9hZC5qcwpuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwMDAuLjVmNzBmODE4MwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9FeHBsYWluL3N2Z19kb3dubG9hZC5qcwpAQCAtMCwwICsxLDU0IEBA CisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8KKy8vIENvcHly aWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KKy8vIFRo aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQorLy8K Ky8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCitpbXBvcnQgZ2V0QXBpSW5zdGFuY2UgZnJvbSAnLi4vYXBpX2luc3RhbmNlJzsKKwor ZnVuY3Rpb24gY29udmVydEltYWdlVVJMdG9EYXRhVVJJKGFwaSwgaW1hZ2UpIHsKKyAgcmV0dXJu IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeworICAgIGxldCBocmVmID0g aW1hZ2UuZ2V0QXR0cmlidXRlKCdocmVmJykgfHwgaW1hZ2UuZ2V0QXR0cmlidXRlTlMoJ2h0dHA6 Ly93d3cudzMub3JnLzE5OTkveGxpbmsnLCAnaHJlZicpOworICAgIGFwaS5nZXQoaHJlZikudGhl bigoe2RhdGF9KT0+eworICAgICAgaW1hZ2Uuc2V0QXR0cmlidXRlKCdocmVmJywgJ2RhdGE6aW1h Z2Uvc3ZnK3htbDtiYXNlNjQsJyt3aW5kb3cuYnRvYShkYXRhKSk7CisgICAgICByZXNvbHZlKCk7 CisgICAgfSkuY2F0Y2goKCk9PnsKKyAgICAgIHJlamVjdCgpOworICAgIH0pOworICB9KTsKK30K KworZXhwb3J0IGZ1bmN0aW9uIGRvd25sb2FkU3ZnKHN2Zywgc3ZnTmFtZSkgeworICBsZXQgc3Zn RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgIHN2Z0Rpdi5pbm5lckhUTUwg PSBzdmc7CisgIHN2Z0Rpdi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7CisgIHN2Z0Rpdi5z dHlsZS5kaXNwbGF5ID0gJ3RhYmxlJzsKKyAgc3ZnRGl2LnN0eWxlLnBvc2l0aW9uID0gJ2Fic29s dXRlJzsKKyAgbGV0IHN2Z0VsZW1lbnQgPSBzdmdEaXYuZmlyc3RDaGlsZDsKKyAgbGV0IGFwaSA9 IGdldEFwaUluc3RhbmNlKCk7CisgIGlmICghc3ZnRWxlbWVudCkgeyByZXR1cm47IH0KKworICBs ZXQgaW1hZ2VzID0gc3ZnRWxlbWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaW1hZ2UnKTsKKyAg bGV0IGltYWdlX3Byb21pc2VzID0gW107CisgIGlmIChpbWFnZXMpeworICAgIGZvciAobGV0IGlt YWdlIG9mIGltYWdlcykgeworICAgICAgaWYgKChpbWFnZS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKSAm JiBpbWFnZS5nZXRBdHRyaWJ1dGUoJ2hyZWYnKS5pbmRleE9mKCdkYXRhOicpID09PSAtMSkKKyAg ICAgIHx8IChpbWFnZS5nZXRBdHRyaWJ1dGUoJ3hsaW5rOmhyZWYnKSAmJiBpbWFnZS5nZXRBdHRy aWJ1dGUoJ3hsaW5rOmhyZWYnKS5pbmRleE9mKCdkYXRhOicpID09PSAtMSkpIHsKKyAgICAgICAg aW1hZ2VfcHJvbWlzZXMucHVzaChjb252ZXJ0SW1hZ2VVUkx0b0RhdGFVUkkoYXBpLCBpbWFnZSkp OworICAgICAgfQorICAgIH0KKyAgfQorCisgIFByb21pc2UuYWxsKGltYWdlX3Byb21pc2VzKS50 aGVuKGZ1bmN0aW9uKCkgeworICAgIGxldCBibG9iID0gbmV3IEJsb2IoW3N2Z0VsZW1lbnQub3V0 ZXJIVE1MXSwge3R5cGU6ICdpbWFnZS9zdmcreG1sJ30pOworICAgIGxldCBzdmdVUkwgPSAod2lu ZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMKS5jcmVhdGVPYmplY3RVUkwoYmxvYik7CisgICAg bGV0IG5ld0VsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7CisgICAgbmV3RWxl bWVudC5ocmVmID0gc3ZnVVJMOworICAgIG5ld0VsZW1lbnQuc2V0QXR0cmlidXRlKCdkb3dubG9h ZCcsIHN2Z05hbWUpOworICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3RWxlbWVudCk7 CisgICAgbmV3RWxlbWVudC5jbGljaygpOworICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQo bmV3RWxlbWVudCk7CisgIH0pOworfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pz L1NjaGVtYVZpZXcvRm9ybVZpZXcuanN4IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL1NjaGVtYVZp ZXcvRm9ybVZpZXcuanN4CmluZGV4IDY4NDM5MGQ3Zi4uN2YwZDk4OGVkIDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvU2NoZW1hVmlldy9Gb3JtVmlldy5qc3gKKysrIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL1NjaGVtYVZpZXcvRm9ybVZpZXcuanN4CkBAIC0xODcsOCArMTg3LDgg QEAgZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRm9ybVZpZXcoewogICAgICAgICAgIGlmKF8uaXNB cnJheShkZXApKSB7CiAgICAgICAgICAgICBzb3VyY2UgPSBkZXA7CiAgICAgICAgICAgfQotICAg ICAgICAgIGlmKGZpZWxkLmRlcENoYW5nZSkgewotICAgICAgICAgICAgZGVwTGlzdGVuZXIuYWRk RGVwTGlzdGVuZXIoc291cmNlLCBhY2Nlc3NQYXRoLmNvbmNhdChmaWVsZC5pZCksIGZpZWxkLmRl cENoYW5nZSk7CisgICAgICAgICAgaWYoZmllbGQuZGVwQ2hhbmdlIHx8IGZpZWxkLmRlZmVycmVk RGVwQ2hhbmdlKSB7CisgICAgICAgICAgICBkZXBMaXN0ZW5lci5hZGREZXBMaXN0ZW5lcihzb3Vy Y2UsIGFjY2Vzc1BhdGguY29uY2F0KGZpZWxkLmlkKSwgZmllbGQuZGVwQ2hhbmdlLCBmaWVsZC5k ZWZlcnJlZERlcENoYW5nZSk7CiAgICAgICAgICAgfQogICAgICAgICAgIGlmKGZpZWxkLmRlcENo YW5nZSB8fCBmaWVsZC5kZWZlcnJlZERlcENoYW5nZSkgewogICAgICAgICAgICAgZGVwTGlzdGVu ZXIuYWRkRGVwTGlzdGVuZXIoc291cmNlLCBhY2Nlc3NQYXRoLmNvbmNhdChmaWVsZC5pZCksIGZp ZWxkLmRlcENoYW5nZSwgZmllbGQuZGVmZXJyZWREZXBDaGFuZ2UpOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL1RoZW1lL2luZGV4LmpzeCBiL3dlYi9wZ2FkbWluL3N0YXRpYy9q cy9UaGVtZS9pbmRleC5qc3gKaW5kZXggZGE1OGZhZmE4Li45ZTRjZWQ2YzYgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9UaGVtZS9pbmRleC5qc3gKKysrIGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL1RoZW1lL2luZGV4LmpzeApAQCAtMTczLDcgKzE3Myw3IEBAIGJhc2ljU2V0dGlu Z3MgPSBjcmVhdGVNdWlUaGVtZShiYXNpY1NldHRpbmdzLCB7CiAgICAgICBwb3BwZXI6IHsKICAg ICAgICAgdG9wOiAwLAogICAgICAgICB6SW5kZXg6IDk5OTksCi0gICAgICB9CisgICAgICB9LAog ICAgIH0sCiAgICAgTXVpTWVudTogewogICAgICAgbGlzdDogewpAQCAtMjMxLDYgKzIzMSw5IEBA IGJhc2ljU2V0dGluZ3MgPSBjcmVhdGVNdWlUaGVtZShiYXNpY1NldHRpbmdzLCB7CiAgICAgTXVp TGlzdEl0ZW06IHsKICAgICAgIGRpc2FibGVHdXR0ZXJzOiB0cnVlLAogICAgIH0sCisgICAgTXVp VG9vbHRpcDogeworICAgICAgYXJyb3c6IHRydWUsCisgICAgfQogICB9LAogfSk7CiAKQEAgLTQ5 Miw2ICs0OTUsMTYgQEAgZnVuY3Rpb24gZ2V0RmluYWxUaGVtZShiYXNlVGhlbWUpIHsKICAgICAg ICAgICAgIH0KICAgICAgICAgICB9LAogICAgICAgICB9CisgICAgICB9LAorICAgICAgTXVpVG9v bHRpcDogeworICAgICAgICB0b29sdGlwOiB7CisgICAgICAgICAgZm9udFNpemU6ICcwLjdyZW0n LAorICAgICAgICAgIGNvbG9yOiBiYXNlVGhlbWUucGFsZXR0ZS5iYWNrZ3JvdW5kLmRlZmF1bHQs CisgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBiYXNlVGhlbWUucGFsZXR0ZS50ZXh0LnByaW1h cnksCisgICAgICAgIH0sCisgICAgICAgIGFycm93OiB7CisgICAgICAgICAgY29sb3I6IGJhc2VU aGVtZS5wYWxldHRlLnRleHQucHJpbWFyeSwKKyAgICAgICAgfQogICAgICAgfQogICAgIH0KICAg fSwgYmFzZVRoZW1lKTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9UaGVtZS9z dGFuZGFyZC5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9UaGVtZS9zdGFuZGFyZC5qcwppbmRl eCBkZGM5Y2Q3MzUuLjEzN2Y1MDBkYSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pz L1RoZW1lL3N0YW5kYXJkLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9UaGVtZS9zdGFu ZGFyZC5qcwpAQCAtMTAxLDcgKzEwMSw3IEBAIGV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGJhc2lj U2V0dGluZ3MpIHsKICAgICAgIHN0ZXBGZzogJyMwMDAnLAogICAgICAgdG9nZ2xlQnRuQmc6ICcj MDAwJywKICAgICAgIGVkaXRvclRvb2xiYXJCZzogJyNlYmVlZjMnLAotICAgICAgZGF0YWdyaWRC ZzogJyNmZmYnLAorICAgICAgcXREYXRhZ3JpZEJnOiAnI2ZmZicsCiAgICAgfQogICB9KTsKIH0K ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9hcGlfaW5zdGFuY2UuanMgYi93ZWIv cGdhZG1pbi9zdGF0aWMvanMvYXBpX2luc3RhbmNlLmpzCmluZGV4IGM2Y2UzOGNiMS4uNGE0YzY1 NDY3IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvYXBpX2luc3RhbmNlLmpzCisr KyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9hcGlfaW5zdGFuY2UuanMKQEAgLTI5LDcgKzI5LDcg QEAgZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXBpRXJyb3IoZXJyb3IpIHsKICAgICAvLyBUaGUgcmVx dWVzdCB3YXMgbWFkZSBhbmQgdGhlIHNlcnZlciByZXNwb25kZWQgd2l0aCBhIHN0YXR1cyBjb2Rl CiAgICAgLy8gdGhhdCBmYWxscyBvdXQgb2YgdGhlIHJhbmdlIG9mIDJ4eAogICAgIGlmKGVycm9y LnJlc3BvbnNlLmhlYWRlcnNbJ2NvbnRlbnQtdHlwZSddID09ICdhcHBsaWNhdGlvbi9qc29uJykg ewotICAgICAgcmV0dXJuIGBJTlRFUk5BTCBTRVJWRVIgRVJST1I6ICR7ZXJyb3IucmVzcG9uc2Uu ZGF0YS5lcnJvcm1zZ31gOworICAgICAgcmV0dXJuIGVycm9yLnJlc3BvbnNlLmRhdGEuZXJyb3Jt c2c7CiAgICAgfSBlbHNlIHsKICAgICAgIHJldHVybiBlcnJvci5yZXNwb25zZS5zdGF0dXNUZXh0 OwogICAgIH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL0J1 dHRvbnMuanN4IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2NvbXBvbmVudHMvQnV0dG9ucy5qc3gK aW5kZXggM2VhZjdjMTU1Li42OWNhYTExODcgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9jb21wb25lbnRzL0J1dHRvbnMuanN4CisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9j b21wb25lbnRzL0J1dHRvbnMuanN4CkBAIC0xMjcsMTIgKzEyNywxMiBAQCBEZWZhdWx0QnV0dG9u LnByb3BUeXBlcyA9IHsKIAogCiAvKiBwZ0FkbWluIEljb24gYnV0dG9uLCB0YWtlcyBJY29uIGNv bXBvbmVudCBhcyBpbnB1dCAqLwotZXhwb3J0IGNvbnN0IFBnSWNvbkJ1dHRvbiA9IGZvcndhcmRS ZWYoKHtpY29uLCB0aXRsZSwgc2hvcnRjdXQsIGFjY2Vzc0tleSwgY2xhc3NOYW1lLCBzcGxpdEJ1 dHRvbiwgc3R5bGUsIGNvbG9yLCAuLi5wcm9wc30sIHJlZik9PnsKK2V4cG9ydCBjb25zdCBQZ0lj b25CdXR0b24gPSBmb3J3YXJkUmVmKCh7aWNvbiwgdGl0bGUsIHNob3J0Y3V0LCBjbGFzc05hbWUs IHNwbGl0QnV0dG9uLCBzdHlsZSwgY29sb3IsIGFjY2Vzc2tleSwgLi4ucHJvcHN9LCByZWYpPT57 CiAgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKIAogICBsZXQgc2hvcnRjdXRUaXRsZSA9 IG51bGw7Ci0gIGlmKGFjY2Vzc0tleSB8fCBzaG9ydGN1dCkgewotICAgIHNob3J0Y3V0VGl0bGUg PSA8U2hvcnRjdXRUaXRsZSB0aXRsZT17dGl0bGV9IGFjY2Vzc0tleT17YWNjZXNzS2V5fSBzaG9y dGN1dD17c2hvcnRjdXR9Lz47CisgIGlmKGFjY2Vzc2tleSB8fCBzaG9ydGN1dCkgeworICAgIHNo b3J0Y3V0VGl0bGUgPSA8U2hvcnRjdXRUaXRsZSB0aXRsZT17dGl0bGV9IGFjY2Vzc2tleT17YWNj ZXNza2V5fSBzaG9ydGN1dD17c2hvcnRjdXR9Lz47CiAgIH0KIAogICAvKiBUb29sdGlwIGRvZXMg bm90IHdvcmsgZm9yIGRpc2FibGVkIGl0ZW1zICovCkBAIC0xNDAsMTQgKzE0MCwxNiBAQCBleHBv cnQgY29uc3QgUGdJY29uQnV0dG9uID0gZm9yd2FyZFJlZigoe2ljb24sIHRpdGxlLCBzaG9ydGN1 dCwgYWNjZXNzS2V5LCBjbGFzcwogICAgIGlmKGNvbG9yID09ICdwcmltYXJ5JykgewogICAgICAg cmV0dXJuICgKICAgICAgICAgPFByaW1hcnlCdXR0b24gcmVmPXtyZWZ9IHN0eWxlPXt7bWluV2lk dGg6IDAsIC4uLnN0eWxlfX0KLSAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcy5pY29u QnV0dG9uLCAoc3BsaXRCdXR0b24gPyBjbGFzc2VzLnNwbGl0QnV0dG9uIDogJycpLCBjbGFzc05h bWUpfSB7Li4ucHJvcHN9PgorICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChjbGFzc2VzLmljb25C dXR0b24sIChzcGxpdEJ1dHRvbiA/IGNsYXNzZXMuc3BsaXRCdXR0b24gOiAnJyksIGNsYXNzTmFt ZSl9CisgICAgICAgICAgYWNjZXNzS2V5PXthY2Nlc3NrZXl9IHsuLi5wcm9wc30+CiAgICAgICAg ICAge2ljb259CiAgICAgICAgIDwvUHJpbWFyeUJ1dHRvbj4KICAgICAgICk7CiAgICAgfSBlbHNl IHsKICAgICAgIHJldHVybiAoCiAgICAgICAgIDxEZWZhdWx0QnV0dG9uIHJlZj17cmVmfSBzdHls ZT17e21pbldpZHRoOiAwLCAuLi5zdHlsZX19Ci0gICAgICAgICAgY2xhc3NOYW1lPXtjbHN4KGNs YXNzZXMuaWNvbkJ1dHRvbiwgY2xhc3Nlcy5pY29uQnV0dG9uRGVmYXVsdCwgKHNwbGl0QnV0dG9u ID8gY2xhc3Nlcy5zcGxpdEJ1dHRvbiA6ICcnKSwgY2xhc3NOYW1lKX0gey4uLnByb3BzfT4KKyAg ICAgICAgICBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcy5pY29uQnV0dG9uLCBjbGFzc2VzLmljb25C dXR0b25EZWZhdWx0LCAoc3BsaXRCdXR0b24gPyBjbGFzc2VzLnNwbGl0QnV0dG9uIDogJycpLCBj bGFzc05hbWUpfQorICAgICAgICAgIGFjY2Vzc0tleT17YWNjZXNza2V5fSB7Li4ucHJvcHN9Pgog ICAgICAgICAgIHtpY29ufQogICAgICAgICA8L0RlZmF1bHRCdXR0b24+CiAgICAgICApOwpAQCAt MTU3LDcgKzE1OSw4IEBAIGV4cG9ydCBjb25zdCBQZ0ljb25CdXR0b24gPSBmb3J3YXJkUmVmKCh7 aWNvbiwgdGl0bGUsIHNob3J0Y3V0LCBhY2Nlc3NLZXksIGNsYXNzCiAgICAgICByZXR1cm4gKAog ICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvcnRjdXRUaXRsZSB8fCB0aXRsZSB8fCAnJ30gYXJp YS1sYWJlbD17dGl0bGUgfHwgJyd9PgogICAgICAgICAgIDxQcmltYXJ5QnV0dG9uIHJlZj17cmVm fSBzdHlsZT17e21pbldpZHRoOiAwLCAuLi5zdHlsZX19Ci0gICAgICAgICAgICBjbGFzc05hbWU9 e2Nsc3goY2xhc3Nlcy5pY29uQnV0dG9uLCAoc3BsaXRCdXR0b24gPyBjbGFzc2VzLnNwbGl0QnV0 dG9uIDogJycpLCBjbGFzc05hbWUpfSB7Li4ucHJvcHN9PgorICAgICAgICAgICAgY2xhc3NOYW1l PXtjbHN4KGNsYXNzZXMuaWNvbkJ1dHRvbiwgKHNwbGl0QnV0dG9uID8gY2xhc3Nlcy5zcGxpdEJ1 dHRvbiA6ICcnKSwgY2xhc3NOYW1lKX0KKyAgICAgICAgICAgIGFjY2Vzc0tleT17YWNjZXNza2V5 fSB7Li4ucHJvcHN9PgogICAgICAgICAgICAge2ljb259CiAgICAgICAgICAgPC9QcmltYXJ5QnV0 dG9uPgogICAgICAgICA8L1Rvb2x0aXA+CkBAIC0xNjYsNyArMTY5LDggQEAgZXhwb3J0IGNvbnN0 IFBnSWNvbkJ1dHRvbiA9IGZvcndhcmRSZWYoKHtpY29uLCB0aXRsZSwgc2hvcnRjdXQsIGFjY2Vz c0tleSwgY2xhc3MKICAgICAgIHJldHVybiAoCiAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG9y dGN1dFRpdGxlIHx8IHRpdGxlIHx8ICcnfSBhcmlhLWxhYmVsPXt0aXRsZSB8fCAnJ30+CiAgICAg ICAgICAgPERlZmF1bHRCdXR0b24gcmVmPXtyZWZ9IHN0eWxlPXt7bWluV2lkdGg6IDAsIC4uLnN0 eWxlfX0KLSAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzeChjbGFzc2VzLmljb25CdXR0b24sIGNs YXNzZXMuaWNvbkJ1dHRvbkRlZmF1bHQsIChzcGxpdEJ1dHRvbiA/IGNsYXNzZXMuc3BsaXRCdXR0 b24gOiAnJyksIGNsYXNzTmFtZSl9IHsuLi5wcm9wc30+CisgICAgICAgICAgICBjbGFzc05hbWU9 e2Nsc3goY2xhc3Nlcy5pY29uQnV0dG9uLCBjbGFzc2VzLmljb25CdXR0b25EZWZhdWx0LCAoc3Bs aXRCdXR0b24gPyBjbGFzc2VzLnNwbGl0QnV0dG9uIDogJycpLCBjbGFzc05hbWUpfQorICAgICAg ICAgICAgYWNjZXNzS2V5PXthY2Nlc3NrZXl9IHsuLi5wcm9wc30+CiAgICAgICAgICAgICB7aWNv bn0KICAgICAgICAgICA8L0RlZmF1bHRCdXR0b24+CiAgICAgICAgIDwvVG9vbHRpcD4KQEAgLTE3 OSw3ICsxODMsNyBAQCBQZ0ljb25CdXR0b24ucHJvcFR5cGVzID0gewogICBpY29uOiBDdXN0b21Q cm9wVHlwZXMuY2hpbGRyZW4sCiAgIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQs CiAgIHNob3J0Y3V0OiBDdXN0b21Qcm9wVHlwZXMuc2hvcnRjdXQsCi0gIGFjY2Vzc0tleTogUHJv cFR5cGVzLnN0cmluZywKKyAgYWNjZXNza2V5OiBQcm9wVHlwZXMuc3RyaW5nLAogICBjbGFzc05h bWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5zdHJpbmcsIFByb3BUeXBlcy5vYmpl Y3RdKSwKICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsCiAgIGNvbG9yOiBQcm9wVHlwZXMub25l T2YoWydwcmltYXJ5JywgJ2RlZmF1bHQnLCB1bmRlZmluZWRdKSwKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL0NvZGVNaXJyb3IuanN4IGIvd2ViL3BnYWRtaW4v c3RhdGljL2pzL2NvbXBvbmVudHMvQ29kZU1pcnJvci5qc3gKaW5kZXggN2UzYzBjZGRhLi5hZDE1 NmM4YWMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL0NvZGVN aXJyb3IuanN4CisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9jb21wb25lbnRzL0NvZGVNaXJy b3IuanN4CkBAIC04LDExICs4LDExIEBACiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBpbXBvcnQgUmVhY3QsIHsgdXNlRWZm ZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnOwotaW1wb3J0IHtk ZWZhdWx0IGFzIE9yaWdDb2RlTWlycm9yfSBmcm9tICdidW5kbGVkX2NvZGVtaXJyb3InOworaW1w b3J0IE9yaWdDb2RlTWlycm9yIGZyb20gJ2J1bmRsZWRfY29kZW1pcnJvcic7CiBpbXBvcnQge3Vz ZU9uU2NyZWVufSBmcm9tICdzb3VyY2VzL2N1c3RvbV9ob29rcyc7CiBpbXBvcnQgUHJvcFR5cGVz IGZyb20gJ3Byb3AtdHlwZXMnOwogaW1wb3J0IEN1c3RvbVByb3BUeXBlcyBmcm9tICcuLi9jdXN0 b21fcHJvcF90eXBlcyc7Ci1pbXBvcnQgcGdBZG1pbiBmcm9tICdzb3VyY2VzL3BnYWRtaW4nOwor aW1wb3J0IHBnV2luZG93IGZyb20gJ3NvdXJjZXMvd2luZG93JzsKIGltcG9ydCBnZXR0ZXh0IGZy b20gJ3NvdXJjZXMvZ2V0dGV4dCc7CiBpbXBvcnQgeyBCb3gsIElucHV0QWRvcm5tZW50LCBtYWtl U3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUnOwogaW1wb3J0IGNsc3ggZnJvbSAnY2xz eCc7CkBAIC03MCwzMSArNzAsNDAgQEAgZnVuY3Rpb24gcGFyc2VRdWVyeShxdWVyeSwgdXNlUmVn ZXg9ZmFsc2UsIG1hdGNoQ2FzZT1mYWxzZSkgewogICByZXR1cm4gcXVlcnk7CiB9CiAKK2Z1bmN0 aW9uIGdldFJlZ2V4RmluZGVyKHF1ZXJ5KSB7CisgIHJldHVybiAoc3RyZWFtKSA9PiB7CisgICAg cXVlcnkubGFzdEluZGV4ID0gc3RyZWFtLnBvczsKKyAgICB2YXIgbWF0Y2ggPSBxdWVyeS5leGVj KHN0cmVhbS5zdHJpbmcpOworICAgIGlmIChtYXRjaCAmJiBtYXRjaC5pbmRleCA9PSBzdHJlYW0u cG9zKSB7CisgICAgICBzdHJlYW0ucG9zICs9IG1hdGNoWzBdLmxlbmd0aCB8fCAxOworICAgICAg cmV0dXJuICdzZWFyY2hpbmcnOworICAgIH0gZWxzZSBpZiAobWF0Y2gpIHsKKyAgICAgIHN0cmVh bS5wb3MgPSBtYXRjaC5pbmRleDsKKyAgICB9IGVsc2UgeworICAgICAgc3RyZWFtLnNraXBUb0Vu ZCgpOworICAgIH0KKyAgfTsKK30KKworCitmdW5jdGlvbiBnZXRQbGFpblN0cmluZ0ZpbmRlcihx dWVyeSwgbWF0Y2hDYXNlKSB7CisgIHJldHVybiAoc3RyZWFtKSA9PiB7CisgICAgdmFyIG1hdGNo SW5kZXggPSAobWF0Y2hDYXNlID8gc3RyZWFtLnN0cmluZyA6ICBzdHJlYW0uc3RyaW5nLnRvTG93 ZXJDYXNlKCkpLmluZGV4T2YocXVlcnksIHN0cmVhbS5wb3MpOworICAgIGlmKG1hdGNoSW5kZXgg PT0gLTEpIHsKKyAgICAgIHN0cmVhbS5za2lwVG9FbmQoKTsKKyAgICB9IGVsc2UgaWYobWF0Y2hJ bmRleCA9PSBzdHJlYW0ucG9zKSB7CisgICAgICBzdHJlYW0ucG9zICs9IHF1ZXJ5Lmxlbmd0aDsK KyAgICAgIHJldHVybiAnc2VhcmNoaW5nJzsKKyAgICB9IGVsc2UgeworICAgICAgc3RyZWFtLnBv cyA9IG1hdGNoSW5kZXg7CisgICAgfQorICB9OworfQorCiBmdW5jdGlvbiBzZWFyY2hPdmVybGF5 KHF1ZXJ5LCBtYXRjaENhc2UpIHsKICAgcmV0dXJuIHsKICAgICB0b2tlbjogdHlwZW9mIHF1ZXJ5 ID09ICdzdHJpbmcnID8KLSAgICAgIChzdHJlYW0pID0+ewotICAgICAgICB2YXIgbWF0Y2hJbmRl eCA9IChtYXRjaENhc2UgPyBzdHJlYW0uc3RyaW5nIDogIHN0cmVhbS5zdHJpbmcudG9Mb3dlckNh c2UoKSkuaW5kZXhPZihxdWVyeSwgc3RyZWFtLnBvcyk7Ci0gICAgICAgIGlmKG1hdGNoSW5kZXgg PT0gLTEpIHsKLSAgICAgICAgICBzdHJlYW0uc2tpcFRvRW5kKCk7Ci0gICAgICAgIH0gZWxzZSBp ZihtYXRjaEluZGV4ID09IHN0cmVhbS5wb3MpIHsKLSAgICAgICAgICBzdHJlYW0ucG9zICs9IHF1 ZXJ5Lmxlbmd0aDsKLSAgICAgICAgICByZXR1cm4gJ3NlYXJjaGluZyc7Ci0gICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgc3RyZWFtLnBvcyA9IG1hdGNoSW5kZXg7Ci0gICAgICAgIH0KLSAgICAg IH0gOiAoc3RyZWFtKSA9PiB7Ci0gICAgICAgIHF1ZXJ5Lmxhc3RJbmRleCA9IHN0cmVhbS5wb3M7 Ci0gICAgICAgIHZhciBtYXRjaCA9IHF1ZXJ5LmV4ZWMoc3RyZWFtLnN0cmluZyk7Ci0gICAgICAg IGlmIChtYXRjaCAmJiBtYXRjaC5pbmRleCA9PSBzdHJlYW0ucG9zKSB7Ci0gICAgICAgICAgc3Ry ZWFtLnBvcyArPSBtYXRjaFswXS5sZW5ndGggfHwgMTsKLSAgICAgICAgICByZXR1cm4gJ3NlYXJj aGluZyc7Ci0gICAgICAgIH0gZWxzZSBpZiAobWF0Y2gpIHsKLSAgICAgICAgICBzdHJlYW0ucG9z ID0gbWF0Y2guaW5kZXg7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgc3RyZWFtLnNraXBU b0VuZCgpOwotICAgICAgICB9Ci0gICAgICB9CisgICAgICBnZXRQbGFpblN0cmluZ0ZpbmRlcihx dWVyeSwgbWF0Y2hDYXNlKSA6IGdldFJlZ2V4RmluZGVyKHF1ZXJ5KQogICB9OwogfQogCkBAIC0y NjAsMjggKzI2OSw5NiBAQCBGaW5kRGlhbG9nLnByb3BUeXBlcyA9IHsKICAgb25DbG9zZTogUHJv cFR5cGVzLmZ1bmMsCiB9OwogCitmdW5jdGlvbiBoYW5kbGVEcm9wKGVkaXRvciwgZSkgeworICB2 YXIgZHJvcERldGFpbHMgPSBudWxsOworICB0cnkgeworICAgIGRyb3BEZXRhaWxzID0gSlNPTi5w YXJzZShlLmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0JykpOworCisgICAgLyogU3RvcCBmaXJl Zm94IGZyb20gcmVkaXJlY3RpbmcgKi8KKworICAgIGlmKGUucHJldmVudERlZmF1bHQpIHsKKyAg ICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICB9CisgICAgaWYgKGUuc3RvcFByb3BhZ2F0aW9u KSB7CisgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOworICAgIH0KKyAgfSBjYXRjaChlcnJvcikg eworICAgIC8qIGlmIHBhcnNpbmcgZmFpbHMsIGl0IG11c3QgYmUgdGhlIGRyYWcgaW50ZXJuYWwg b2YgY29kZW1pcnJvciB0ZXh0ICovCisgICAgcmV0dXJuOworICB9CisKKyAgdmFyIGN1cnNvciA9 IGVkaXRvci5jb29yZHNDaGFyKHsKKyAgICBsZWZ0OiBlLngsCisgICAgdG9wOiBlLnksCisgIH0p OworICBlZGl0b3IucmVwbGFjZVJhbmdlKGRyb3BEZXRhaWxzLnRleHQsIGN1cnNvcik7CisgIGVk aXRvci5mb2N1cygpOworICBlZGl0b3Iuc2V0U2VsZWN0aW9uKHsKKyAgICAuLi5jdXJzb3IsCisg ICAgY2g6IGN1cnNvci5jaCArIGRyb3BEZXRhaWxzLmN1ci5mcm9tLAorICB9LHsKKyAgICAuLi5j dXJzb3IsCisgICAgY2g6IGN1cnNvci5jaCArZHJvcERldGFpbHMuY3VyLnRvLAorICB9KTsKK30K KworZnVuY3Rpb24gY2FsY0ZvbnRTaXplKGZvbnRTaXplKSB7CisgIGlmKGZvbnRTaXplKSB7Cisg ICAgZm9udFNpemUgPSBwYXJzZUZsb2F0KChNYXRoLnJvdW5kKHBhcnNlRmxvYXQoZm9udFNpemUg KyAnZSsyJykpICsgJ2UtMicpKTsKKyAgICBsZXQgcm91bmRlZCA9IE51bWJlcihmb250U2l6ZSk7 CisgICAgaWYocm91bmRlZCA+IDApIHsKKyAgICAgIHJldHVybiByb3VuZGVkICsgJ2VtJzsKKyAg ICB9CisgIH0KKyAgcmV0dXJuICcxZW0nOworfQorCiAvKiBSZWFjdCB3cmFwcGVyIGZvciBDb2Rl TWlycm9yICovCi1leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDb2RlTWlycm9yKHtjdXJyRWRpdG9y LCBuYW1lLCB2YWx1ZSwgb3B0aW9ucywgZXZlbnRzLCByZWFkb25seSwgZGlzYWJsZWQsIGNsYXNz TmFtZX0pIHsKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvZGVNaXJyb3Ioe2N1cnJFZGl0b3Is IG5hbWUsIHZhbHVlLCBvcHRpb25zLCBldmVudHMsIHJlYWRvbmx5LCBkaXNhYmxlZCwgY2xhc3NO YW1lLCBhdXRvY29tcGxldGU9ZmFsc2V9KSB7CiAgIGNvbnN0IHRhUmVmID0gdXNlUmVmKCk7CiAg IGNvbnN0IGVkaXRvciA9IHVzZVJlZigpOwogICBjb25zdCBjbVdyYXBwZXIgPSB1c2VSZWYoKTsK ICAgY29uc3QgaXNWaXNpYmxlVHJhY2sgPSB1c2VSZWYoKTsKICAgY29uc3QgY2xhc3NlcyA9IHVz ZVN0eWxlcygpOwogICBjb25zdCBbW3Nob3dGaW5kLCBpc1JlcGxhY2VdLCBzZXRTaG93RmluZF0g PSB1c2VTdGF0ZShbZmFsc2UsIGZhbHNlXSk7Ci0gIGNvbnN0IGRlZmF1bHRPcHRpb25zID0gewot ICAgIHRhYmluZGV4OiAnMCcsCi0gICAgbGluZU51bWJlcnM6IHRydWUsCi0gICAgc3R5bGVTZWxl Y3RlZFRleHQ6IHRydWUsCi0gICAgbW9kZTogJ3RleHQveC1wZ3NxbCcsCi0gICAgZm9sZE9wdGlv bnM6IHsKLSAgICAgIHdpZGdldDogJ1x1MjAyNicsCi0gICAgfSwKLSAgICBmb2xkR3V0dGVyOiB0 cnVlLAotICAgIGd1dHRlcnM6IFsnQ29kZU1pcnJvci1saW5lbnVtYmVycycsICdDb2RlTWlycm9y LWZvbGRndXR0ZXInXSwKLSAgICBleHRyYUtleXM6IHBnQWRtaW4uQnJvd3Nlci5lZGl0b3Jfc2hv cnRjdXRfa2V5cywKLSAgICBkcmFnRHJvcDogZmFsc2UsCi0gICAgc2NyZWVuUmVhZGVyTGFiZWw6 IGdldHRleHQoJ1NRTCBlZGl0b3InKSwKLSAgfTsKKyAgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB1 c2VNZW1vKCgpPT57CisgICAgbGV0IGdvTGVmdEtleSA9ICdDdHJsLUFsdC1MZWZ0JywKKyAgICAg IGdvUmlnaHRLZXkgPSAnQ3RybC1BbHQtUmlnaHQnLAorICAgICAgY29tbWVudEtleSA9ICdDdHJs LS8nOworICAgIGlmKGlzTWFjKCkpIHsKKyAgICAgIGdvTGVmdEtleSA9ICdDbWQtQWx0LUxlZnQn OworICAgICAgZ29SaWdodEtleSA9ICdDbWQtQWx0LVJpZ2h0JzsKKyAgICAgIGNvbW1lbnRLZXkg PSAnQ21kLS8nOworICAgIH0KKyAgICByZXR1cm4geworICAgICAgdGFiaW5kZXg6ICcwJywKKyAg ICAgIGxpbmVOdW1iZXJzOiB0cnVlLAorICAgICAgc3R5bGVTZWxlY3RlZFRleHQ6IHRydWUsCisg ICAgICBtb2RlOiAndGV4dC94LXBnc3FsJywKKyAgICAgIGZvbGRPcHRpb25zOiB7CisgICAgICAg IHdpZGdldDogJ1x1MjAyNicsCisgICAgICB9LAorICAgICAgZm9sZEd1dHRlcjogdHJ1ZSwKKyAg ICAgIGd1dHRlcnM6IFsnQ29kZU1pcnJvci1saW5lbnVtYmVycycsICdDb2RlTWlycm9yLWZvbGRn dXR0ZXInXSwKKyAgICAgIGV4dHJhS2V5czogeworICAgICAgICAvLyBBdXRvY29tcGxldGUgc3Fs IGNvbW1hbmQKKyAgICAgICAgLi4uKGF1dG9jb21wbGV0ZSA/IHsKKyAgICAgICAgICAnQ3RybC1T cGFjZSc6ICdhdXRvY29tcGxldGUnLAorICAgICAgICB9OiB7fSksCisgICAgICAgICdBbHQtVXAn OiAnZ29MaW5lVXAnLAorICAgICAgICAnQWx0LURvd24nOiAnZ29MaW5lRG93bicsCisgICAgICAg IC8vIE1vdmUgd29yZCBieSB3b3JkIGxlZnQvcmlnaHQKKyAgICAgICAgW2dvTGVmdEtleV06ICdn b0dyb3VwTGVmdCcsCisgICAgICAgIFtnb1JpZ2h0S2V5XTogJ2dvR3JvdXBSaWdodCcsCisgICAg ICAgIC8vIEFsbG93IHVzZXIgdG8gZGVsZXRlIFRhYihzKQorICAgICAgICAnU2hpZnQtVGFiJzog J2luZGVudExlc3MnLAorICAgICAgICAvL2NvbW1lbnQKKyAgICAgICAgW2NvbW1lbnRLZXldOiAn dG9nZ2xlQ29tbWVudCcsCisgICAgICB9LAorICAgICAgZHJhZ0Ryb3A6IHRydWUsCisgICAgICBz Y3JlZW5SZWFkZXJMYWJlbDogZ2V0dGV4dCgnU1FMIGVkaXRvcicpLAorICAgIH07CisgIH0pOwog CiAgIHVzZUVmZmVjdCgoKT0+ewogICAgIGNvbnN0IGZpbmFsT3B0aW9ucyA9IHsuLi5kZWZhdWx0 T3B0aW9ucywgLi4ub3B0aW9uc307CkBAIC0zMjQsMTIgKzQwMSw0MyBAQCBleHBvcnQgZGVmYXVs dCBmdW5jdGlvbiBDb2RlTWlycm9yKHtjdXJyRWRpdG9yLCBuYW1lLCB2YWx1ZSwgb3B0aW9ucywg ZXZlbnRzLCByZQogICAgIE9iamVjdC5rZXlzKGV2ZW50c3x8e30pLmZvckVhY2goKGV2ZW50TmFt ZSk9PnsKICAgICAgIGVkaXRvci5jdXJyZW50Lm9uKGV2ZW50TmFtZSwgZXZlbnRzW2V2ZW50TmFt ZV0pOwogICAgIH0pOwotCisgICAgZWRpdG9yLmN1cnJlbnQub24oJ2Ryb3AnLCBoYW5kbGVEcm9w KTsKKyAgICBpbml0UHJlZmVyZW5jZXMoKTsKICAgICByZXR1cm4gKCk9PnsKICAgICAgIGVkaXRv ci5jdXJyZW50Py50b1RleHRBcmVhKCk7CiAgICAgfTsKICAgfSwgW10pOwogCisgIGNvbnN0IGlu aXRQcmVmZXJlbmNlcyA9ICgpPT57CisgICAgcmVmbGVjdFByZWZlcmVuY2VzKCk7CisgICAgcGdX aW5kb3c/LnBnQWRtaW4/LkJyb3dzZXI/Lm9uUHJlZmVyZW5jZXNDaGFuZ2UoJ3NxbGVkaXRvcics IGZ1bmN0aW9uKCkgeworICAgICAgcmVmbGVjdFByZWZlcmVuY2VzKCk7CisgICAgfSk7CisgIH07 CisKKyAgY29uc3QgcmVmbGVjdFByZWZlcmVuY2VzID0gKCk9PnsKKyAgICBsZXQgcHJlZiA9IHBn V2luZG93Py5wZ0FkbWluPy5Ccm93c2VyPy5nZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnc3Fs ZWRpdG9yJykgfHwge307CisgICAgbGV0IHdyYXBFbGUgPSBlZGl0b3I/LmN1cnJlbnQuZ2V0V3Jh cHBlckVsZW1lbnQoKTsKKyAgICB3cmFwRWxlICYmICh3cmFwRWxlLnN0eWxlLmZvbnRTaXplID0g Y2FsY0ZvbnRTaXplKHByZWYuc3FsX2ZvbnRfc2l6ZSkpOworCisgICAgaWYocHJlZi5wbGFpbl9l ZGl0b3JfbW9kZSkgeworICAgICAgZWRpdG9yPy5jdXJyZW50LnNldE9wdGlvbignbW9kZScsICd0 ZXh0L3BsYWluJyk7CisgICAgICAvKiBBbHRob3VnaCBub3QgcmVxdWlyZWQsIHNldHRpbmcgZXhw bGljaXRseSBhcyBjb2RlbWlycm9yIHdpbGwgcmVtb3ZlIGNvZGUgZm9sZGluZyBvbmx5IG9uIG5l eHQgZWRpdCAqLworICAgICAgZWRpdG9yPy5jdXJyZW50LnNldE9wdGlvbignZm9sZEd1dHRlcics IGZhbHNlKTsKKyAgICB9IGVsc2UgeworICAgICAgZWRpdG9yPy5jdXJyZW50LnNldE9wdGlvbign bW9kZScsICd0ZXh0L3gtcGdzcWwnKTsKKyAgICAgIGVkaXRvcj8uY3VycmVudC5zZXRPcHRpb24o J2ZvbGRHdXR0ZXInLCBwcmVmLmNvZGVfZm9sZGluZyk7CisgICAgfQorCisgICAgZWRpdG9yPy5j dXJyZW50LnNldE9wdGlvbignaW5kZW50V2l0aFRhYnMnLCBwcmVmLmluZGVudF93aXRoX3RhYnMp OworICAgIGVkaXRvcj8uY3VycmVudC5zZXRPcHRpb24oJ2luZGVudFVuaXQnLCBwcmVmLnRhYl9z aXplKTsKKyAgICBlZGl0b3I/LmN1cnJlbnQuc2V0T3B0aW9uKCd0YWJTaXplJywgcHJlZi50YWJf c2l6ZSk7CisgICAgZWRpdG9yPy5jdXJyZW50LnNldE9wdGlvbignbGluZVdyYXBwaW5nJywgcHJl Zi53cmFwX2NvZGUpOworICAgIGVkaXRvcj8uY3VycmVudC5zZXRPcHRpb24oJ2F1dG9DbG9zZUJy YWNrZXRzJywgcHJlZi5pbnNlcnRfcGFpcl9icmFja2V0cyk7CisgICAgZWRpdG9yPy5jdXJyZW50 LnNldE9wdGlvbignbWF0Y2hCcmFja2V0cycsIHByZWYuYnJhY2VfbWF0Y2hpbmcpOworICAgIGVk aXRvcj8uY3VycmVudC5yZWZyZXNoKCk7CisgIH07CisKICAgdXNlRWZmZWN0KCgpPT57CiAgICAg aWYoZWRpdG9yLmN1cnJlbnQpIHsKICAgICAgIGlmKGRpc2FibGVkKSB7CkBAIC0zOTIsNCArNTAw LDUgQEAgQ29kZU1pcnJvci5wcm9wVHlwZXMgPSB7CiAgIHJlYWRvbmx5OiBQcm9wVHlwZXMuYm9v bCwKICAgZGlzYWJsZWQ6IFByb3BUeXBlcy5ib29sLAogICBjbGFzc05hbWU6IEN1c3RvbVByb3BU eXBlcy5jbGFzc05hbWUsCisgIGF1dG9jb21wbGV0ZTogUHJvcFR5cGVzLmJvb2wsCiB9OwpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2NvbXBvbmVudHMvRm9ybUNvbXBvbmVudHMu anN4IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2NvbXBvbmVudHMvRm9ybUNvbXBvbmVudHMuanN4 CmluZGV4IGNkY2ZhYjY0My4uMDJmOTQ0YWIwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0 aWMvanMvY29tcG9uZW50cy9Gb3JtQ29tcG9uZW50cy5qc3gKKysrIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL2NvbXBvbmVudHMvRm9ybUNvbXBvbmVudHMuanN4CkBAIC03NTIsNiArNzUyLDcgQEAg ZXhwb3J0IGNvbnN0IElucHV0U2VsZWN0ID0gZm9yd2FyZFJlZigoewogICBjb25zdCBbW2ZpbmFs T3B0aW9ucywgaXNMb2FkaW5nXSwgc2V0RmluYWxPcHRpb25zXSA9IHVzZVN0YXRlKFtbXSwgdHJ1 ZV0pOwogICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKCk7CiAKKwogICAvKiBSZWFjdCB3aWxsIGFs d2F5cyB0YWtlIG9wdGlvbnMgdmFyIGFzIGNoYW5nZWQgcGFyYW1ldGVyLiBTbywKICAgV2UgY2Fu bm90IHJ1biB0aGUgYmVsb3cgZWZmZWN0IHdpdGggb3B0aW9ucyBkZXBlbmRlbmN5IGFzIGl0IHdp bGwga2VlcCBvbgogICBsb2FkaW5nIHRoZSBvcHRpb25zLiBvcHRpb25zUmVsb2FkQmFzaXMgaXMg aGVscGZ1bCB0byBhdm9pZCByZXBlYXRlZApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL2NvbXBvbmVudHMvU2hvcnRjdXRUaXRsZS5qc3ggYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMv Y29tcG9uZW50cy9TaG9ydGN1dFRpdGxlLmpzeAppbmRleCA2ZWYxYTU2NGUuLjg5OGM2YTQ2MiAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2NvbXBvbmVudHMvU2hvcnRjdXRUaXRs ZS5qc3gKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2NvbXBvbmVudHMvU2hvcnRjdXRUaXRs ZS5qc3gKQEAgLTQsOCArNCwxMyBAQCBpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMn OwogaW1wb3J0IHsgaXNNYWMgfSBmcm9tICcuLi9rZXlib2FyZF9zaG9ydGN1dHMnOwogaW1wb3J0 IF8gZnJvbSAnbG9kYXNoJzsKIGltcG9ydCBDdXN0b21Qcm9wVHlwZXMgZnJvbSAnLi4vY3VzdG9t X3Byb3BfdHlwZXMnOworaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKIAog Y29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcygodGhlbWUpPT4oeworICBzaG9ydGN1dFRpdGxl OiB7CisgICAgd2lkdGg6ICcxMDAlJywKKyAgICB0ZXh0QWxpZ246ICdjZW50ZXInLAorICB9LAog ICBzaG9ydGN1dDogewogICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJywKICAgICBtYXJnaW5U b3A6ICcwLjEyNXJlbScsCkBAIC0xOSwxMCArMjQsNDMgQEAgY29uc3QgdXNlU3R5bGVzID0gbWFr ZVN0eWxlcygodGhlbWUpPT4oewogICB9LAogfSkpOwogCitleHBvcnQgZnVuY3Rpb24gZ2V0QnJv d3NlckFjY2Vzc2tleSgpIHsKKyAgLyogUmVmOiBodHRwczovL2dpdGh1Yi5jb20vdGlsbHNhbmRl cnMvYWNjZXNzLWtleS1sYWJlbC1wb2x5ZmlsbC8gKi8KKyAgbGV0IHVhID0gd2luZG93Lm5hdmln YXRvci51c2VyQWdlbnQ7CisgIC8vIG1hY09TCisgIGlmICh1YS5tYXRjaCgvbWFjaW50b3NoL2kp KSB7CisgICAgLy8gRmlyZWZveAorICAgIGlmICh1YS5tYXRjaCgvZmlyZWZveC9pKSkgeworICAg ICAgY29uc3QgZmlyZWZveFZlcnNpb24gPSB1YS5tYXRjaCgvZmlyZWZveFtccy9dKFxkKykvaSk7 CisgICAgICAvLyBGaXJlZm94IDwgdjE0CisgICAgICBpZiAoZmlyZWZveFZlcnNpb25bMV0gJiYg cGFyc2VJbnQoZmlyZWZveFZlcnNpb25bMV0sIDEwKSA8IDE0KSB7CisgICAgICAgIHJldHVybiBb J0N0cmwnXTsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIFsnQ3RybCcsICdPcHRpb24nXTsK KyAgfQorCisgIC8vIEludGVybmV0IEV4cGxvcmVyIC8gRWRnZQorICBpZiAodWEubWF0Y2goL21z aWV8dHJpZGVudC9pKSB8fCB1YS5tYXRjaCgvXHNlZGcvaSkpIHsKKyAgICByZXR1cm4gWydBbHQn XTsKKyAgfQorCisgIC8vIGlPUyAvIGlQYWRPUworICBpZiAodWEubWF0Y2goLyhpcG9kfGlwaG9u ZXxpcGFkKS9pKSkgeworICAgIC8vIGFjY2Vzc2tleUxhYmVsIGlzIHN1cHBvcnRlZCA+IHYxNCwg YnV0IHdlJ3JlIG5vdCBjaGVja2luZyBmb3IgdmVyc2lvbnMgaGVyZSwgc2luY2Ugd2UgdXNlCisg ICAgLy8gZmVhdHVyZSBzdXBwb3J0IGRldGVjdGlvbgorICAgIHJldHVybiBbJ0N0cmwnLCAnT3B0 aW9uJ107CisgIH0KKworICAvLyBGYWxsYmFjaworICAvLyBOb3RlOiBBcHBhcmVudGx5LCBDaHJv bWUgZm9yIEFuZHJvaWQgaXMgbm90IGV2ZW4gc3VwcG9ydGluZyBhY2Nlc3NrZXksIHNvIGJlIHBy ZXBhcmVkLgorICByZXR1cm4gW2dldHRleHQoJ0FjY2Vzc2tleScpXTsKK30KKwogZXhwb3J0IGZ1 bmN0aW9uIHNob3J0Y3V0VG9TdHJpbmcoc2hvcnRjdXQsIGFjY2Vzc2tleT1udWxsLCBhc0FycmF5 PWZhbHNlKSB7CiAgIGxldCBrZXlzID0gW107CiAgIGlmKGFjY2Vzc2tleSkgewotICAgIGtleXMu cHVzaCgnQWNjZXNza2V5Jyk7CisgICAga2V5cyA9IGdldEJyb3dzZXJBY2Nlc3NrZXkoKTsKICAg ICBrZXlzLnB1c2goXy5jYXBpdGFsaXplKGFjY2Vzc2tleT8udG9VcHBlckNhc2UoKSkpOwogICB9 IGVsc2UgaWYoc2hvcnRjdXQpIHsKICAgICBzaG9ydGN1dC5hbHQgJiYga2V5cy5wdXNoKChpc01h YygpID8gJ09wdGlvbicgOiAnQWx0JykpOwpAQCAtNDEsMTIgKzc5LDEyIEBAIGV4cG9ydCBmdW5j dGlvbiBzaG9ydGN1dFRvU3RyaW5nKHNob3J0Y3V0LCBhY2Nlc3NrZXk9bnVsbCwgYXNBcnJheT1m YWxzZSkgewogfQogCiAvKiBUaGUgdG9vbHRpcCBjb250ZW50IHRvIHNob3cgc2hvcnRjdXQgZGV0 YWlscyAqLwotZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2hvcnRjdXRUaXRsZSh7dGl0bGUsIHNo b3J0Y3V0LCBhY2Nlc3NLZXl9KSB7CitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTaG9ydGN1dFRp dGxlKHt0aXRsZSwgc2hvcnRjdXQsIGFjY2Vzc2tleX0pIHsKICAgY29uc3QgY2xhc3NlcyA9IHVz ZVN0eWxlcygpOwotICBsZXQga2V5cyA9IHNob3J0Y3V0VG9TdHJpbmcoc2hvcnRjdXQsIGFjY2Vz c0tleSwgdHJ1ZSk7CisgIGxldCBrZXlzID0gc2hvcnRjdXRUb1N0cmluZyhzaG9ydGN1dCwgYWNj ZXNza2V5LCB0cnVlKTsKICAgcmV0dXJuICgKICAgICA8PgotICAgICAgPGRpdj57dGl0bGV9PC9k aXY+CisgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5zaG9ydGN1dFRpdGxlfT57dGl0bGV9 PC9kaXY+CiAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5zaG9ydGN1dH0+CiAgICAgICAg IHtrZXlzLm1hcCgoa2V5LCBpKT0+ewogICAgICAgICAgIHJldHVybiA8ZGl2IGtleT17aX0gY2xh c3NOYW1lPXtjbGFzc2VzLmtleX0+e2tleX08L2Rpdj47CkBAIC01OSw1ICs5Nyw1IEBAIGV4cG9y dCBkZWZhdWx0IGZ1bmN0aW9uIFNob3J0Y3V0VGl0bGUoe3RpdGxlLCBzaG9ydGN1dCwgYWNjZXNz S2V5fSkgewogU2hvcnRjdXRUaXRsZS5wcm9wVHlwZXMgPSB7CiAgIHRpdGxlOiBQcm9wVHlwZXMu c3RyaW5nLAogICBzaG9ydGN1dDogQ3VzdG9tUHJvcFR5cGVzLnNob3J0Y3V0LAotICBhY2Nlc3NL ZXk6IFByb3BUeXBlcy5zdHJpbmcsCisgIGFjY2Vzc2tleTogUHJvcFR5cGVzLnN0cmluZywKIH07 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY3VzdG9tX2hvb2tzLmpzIGIvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL2N1c3RvbV9ob29rcy5qcwppbmRleCBiNjM3MGJiYmUuLjBiZWUy NGY5MyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2N1c3RvbV9ob29rcy5qcwor KysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvY3VzdG9tX2hvb2tzLmpzCkBAIC0xMDUsMjMgKzEw NSwyNCBAQCBleHBvcnQgZnVuY3Rpb24gdXNlS2V5Ym9hcmRTaG9ydGN1dHMoc2hvcnRjdXRzLCBl bGVSZWYpIHsKICAgY29uc3QgbWF0Y2hGb3VuZCA9IChzaG9ydGN1dCwgZSk9PnsKICAgICBpZigh c2hvcnRjdXQpIHJldHVybiBmYWxzZTsKICAgICBsZXQga2V5Q29kZSA9IGUud2hpY2ggfHwgZS5r ZXlDb2RlOwotICAgIHJldHVybiBzaG9ydGN1dC5hbHQgPT0gZS5hbHRLZXkgJiYKLSAgICAgIHNo b3J0Y3V0LnNoaWZ0ID09IGUuc2hpZnRLZXkgJiYKLSAgICAgIHNob3J0Y3V0LmNvbnRyb2wgPT0g ZS5jdHJsS2V5ICYmCisgICAgcmV0dXJuIEJvb2xlYW4oc2hvcnRjdXQuYWx0KSA9PSBlLmFsdEtl eSAmJgorICAgICAgQm9vbGVhbihzaG9ydGN1dC5zaGlmdCkgPT0gZS5zaGlmdEtleSAmJgorICAg ICAgQm9vbGVhbihzaG9ydGN1dC5jb250cm9sKSA9PSBlLmN0cmxLZXkgJiYKICAgICAgIHNob3J0 Y3V0LmtleS5rZXlfY29kZSA9PSBrZXlDb2RlOwogICB9OwogICB1c2VFZmZlY3QoKCk9PnsKICAg ICBsZXQgZWxlID0gZWxlUmVmLmN1cnJlbnQgPz8gZG9jdW1lbnQ7CiAgICAgY29uc3Qga2V5dXBD YWxsYmFjayA9IChlKT0+ewotICAgICAgZm9yKGxldCBpPTA7IGk8KHNob3J0Y3V0c1JlZi5jdXJy ZW50Pz9bXSkubGVuZ3RoOyBpKyspewotICAgICAgICBsZXQge3Nob3J0Y3V0LCBvcHRpb25zfSA9 IHNob3J0Y3V0c1JlZi5jdXJyZW50W2ldOwotICAgICAgICBpZihtYXRjaEZvdW5kKHNob3J0Y3V0 LCBlKSkgewotICAgICAgICAgIGlmKG9wdGlvbnMuY2FsbGJhY2sgJiYgKG9wdGlvbnMuZW5hYmxl ZCA/PyB0cnVlKSkgewotICAgICAgICAgICAgb3B0aW9ucy5jYWxsYmFjayhlKTsKLSAgICAgICAg ICB9Ci0gICAgICAgICAgYnJlYWs7CisgICAgICBQcm9taXNlLnJlc29sdmUoMCkudGhlbigoKT0+ eworICAgICAgICBsZXQgYWxsTGlzdGVuZXJzID0gXy5maWx0ZXIoc2hvcnRjdXRzUmVmLmN1cnJl bnQsIChzKT0+bWF0Y2hGb3VuZChzLnNob3J0Y3V0LCBlKSk7CisgICAgICAgIGZvcihjb25zdCB7 b3B0aW9uc30gb2YgYWxsTGlzdGVuZXJzKSB7CisgICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKDAp LnRoZW4oKCk9PnsKKyAgICAgICAgICAgIGlmKG9wdGlvbnMuY2FsbGJhY2sgJiYgKG9wdGlvbnMu ZW5hYmxlZCA/PyB0cnVlKSkgeworICAgICAgICAgICAgICBvcHRpb25zLmNhbGxiYWNrKGUpOwor ICAgICAgICAgICAgfQorICAgICAgICAgIH0pOwogICAgICAgICB9Ci0gICAgICB9CisgICAgICB9 KTsKICAgICB9OwogICAgIGVsZS5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIGtleXVwQ2FsbGJh Y2spOwogICAgIHJldHVybiAoKT0+ewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pz L2N1c3RvbV9wcm9wX3R5cGVzLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2N1c3RvbV9wcm9w X3R5cGVzLmpzCmluZGV4IDZiYTIxYTZkMy4uMWEyZDRjOTM1IDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvY3VzdG9tX3Byb3BfdHlwZXMuanMKKysrIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL2N1c3RvbV9wcm9wX3R5cGVzLmpzCkBAIC0zMSw5ICszMSw5IEBAIGNvbnN0IEN1c3Rv bVByb3BUeXBlcyA9IHsKICAgXSksCiAKICAgc2hvcnRjdXQ6IFByb3BUeXBlcy5zaGFwZSh7Ci0g ICAgYWx0OiBQcm9wVHlwZXMuYm9vbCwKLSAgICBjb250cm9sOiBQcm9wVHlwZXMuYm9vbCwKLSAg ICBzaGlmdDogUHJvcFR5cGVzLmJvb2wsCisgICAgYWx0OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQ cm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLm51bWJlcl0pLAorICAgIGNvbnRyb2w6IFByb3BUeXBl cy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5ib29sLCBQcm9wVHlwZXMubnVtYmVyXSksCisgICAgc2hp ZnQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5ib29sLCBQcm9wVHlwZXMubnVtYmVy XSksCiAgICAga2V5OiBQcm9wVHlwZXMuc2hhcGUoewogICAgICAgY2hhcjogUHJvcFR5cGVzLnN0 cmluZywKICAgICB9KSwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9oZWxwZXJz L0V2ZW50QnVzLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL2hlbHBlcnMvRXZlbnRCdXMuanMK aW5kZXggYTlkMDc3ODIwLi45YTY5MDY0MjkgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9oZWxwZXJzL0V2ZW50QnVzLmpzCisrKyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9oZWxw ZXJzL0V2ZW50QnVzLmpzCkBAIC0xLDQgKzEsMyBAQAotaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0 JzsKIGltcG9ydCBfIGZyb20gJ2xvZGFzaCc7CiAKIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEV2ZW50 QnVzIHsKQEAgLTYsMTEgKzUsMTIgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgRXZlbnRCdXMgewog ICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzID0gW107CiAgIH0KIAotICByZWdpc3Rlckxpc3RlbmVy KGV2ZW50LCBjYWxsYmFjaykgeworICByZWdpc3Rlckxpc3RlbmVyKGV2ZW50LCBjYWxsYmFjaywg b25jZT1mYWxzZSkgewogICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJzID0gdGhpcy5fZXZlbnRMaXN0 ZW5lcnMgfHwgW107CiAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lcnMucHVzaCh7CiAgICAgICBldmVu dDogZXZlbnQsCiAgICAgICBjYWxsYmFjazogY2FsbGJhY2ssCisgICAgICBmaXJlZDogb25jZSA/ ICdwZW5kaW5nJyA6ICdpZ25vcmUnLAogICAgIH0pOwogICB9CiAKQEAgLTI4LDE3ICsyOCwxOSBA QCBleHBvcnQgZGVmYXVsdCBjbGFzcyBFdmVudEJ1cyB7CiAgIH0KIAogICBmaXJlRXZlbnQoZXZl bnQsIC4uLmFyZ3MpIHsKKyAgICBsZXQgc2VsZiA9IHRoaXM7CiAgICAgUHJvbWlzZS5yZXNvbHZl KDApLnRoZW4oKCk9PnsKICAgICAgIGxldCBhbGxMaXN0ZW5lcnMgPSBfLmZpbHRlcih0aGlzLl9l dmVudExpc3RlbmVycywgKGUpPT5lLmV2ZW50PT1ldmVudCk7CiAgICAgICBpZihhbGxMaXN0ZW5l cnMpIHsKICAgICAgICAgZm9yKGNvbnN0IGxpc3RlbmVyIG9mIGFsbExpc3RlbmVycykgewogICAg ICAgICAgIFByb21pc2UucmVzb2x2ZSgwKS50aGVuKCgpPT57CiAgICAgICAgICAgICBsaXN0ZW5l ci5jYWxsYmFjayguLi5hcmdzKTsKKyAgICAgICAgICAgIGlmKGxpc3RlbmVyLmZpcmVkID09ICdw ZW5kaW5nJykgeworICAgICAgICAgICAgICBzZWxmLmRlcmVnaXN0ZXJMaXN0ZW5lcihldmVudCwg bGlzdGVuZXIuY2FsbGJhY2spOworICAgICAgICAgICAgfQogICAgICAgICAgIH0pOwogICAgICAg ICB9CiAgICAgICB9CiAgICAgfSk7CiAgIH0KIH0KLQotZXhwb3J0IGNvbnN0IEV2ZW50QnVzQ29u dGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQobmV3IEV2ZW50QnVzKCkpOwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vc3RhdGljL2pzL2hlbHBlcnMvTGF5b3V0LmpzeCBiL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9oZWxwZXJzL0xheW91dC5qc3gKaW5kZXggNWUzY2JlOWIwLi5jMDBhZmQxY2UgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9oZWxwZXJzL0xheW91dC5qc3gKKysrIGIv d2ViL3BnYWRtaW4vc3RhdGljL2pzL2hlbHBlcnMvTGF5b3V0LmpzeApAQCAtMSw4ICsxLDEwIEBA Ci1pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnOworaW1wb3J0IFJlYWN0LCB7IHVzZVJlZiwgdXNl TWVtbyB9IGZyb20gJ3JlYWN0JzsKIGltcG9ydCBEb2NrTGF5b3V0IGZyb20gJ3JjLWRvY2snOwog aW1wb3J0IHsgbWFrZVN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9zdHlsZXMnOwogaW1wb3J0 IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJzsKLWltcG9ydCBDdXN0b21Qcm9wVHlwZXMgZnJv bSAnLi4vY3VzdG9tX3Byb3BfdHlwZXMnOworaW1wb3J0IEV2ZW50QnVzIGZyb20gJy4vRXZlbnRC dXMnOworaW1wb3J0IGdldEFwaUluc3RhbmNlIGZyb20gJy4uL2FwaV9pbnN0YW5jZSc7CitpbXBv cnQgdXJsX2ZvciBmcm9tICdzb3VyY2VzL3VybF9mb3InOwogCiAKIGNvbnN0IHVzZVN0eWxlcyA9 IG1ha2VTdHlsZXMoKHRoZW1lKT0+KHsKQEAgLTI5LDYgKzMxLDkgQEAgY29uc3QgdXNlU3R5bGVz ID0gbWFrZVN0eWxlcygodGhlbWUpPT4oewogICAgIH0sCiAgICAgJyYgLmRvY2stcGFuZWwnOiB7 CiAgICAgICBib3JkZXI6ICdub25lJywKKyAgICAgICcmLmRyYWdnaW5nJzogeworICAgICAgICBv cGFjaXR5OiAwLjYsCisgICAgICB9LAogICAgICAgJyYuZG9jay1zdHlsZS1kaWFsb2dzJzogewog ICAgICAgICAnJi5kb2NrLXBhbmVsLmRyYWdnaW5nJzogewogICAgICAgICAgIG9wYWNpdHk6IDEs CkBAIC05NSw3ICsxMDAsNyBAQCBjb25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSk9 Pih7CiAgIH0KIH0pKTsKIAotCitleHBvcnQgY29uc3QgTGF5b3V0RXZlbnRzQ29udGV4dCA9IFJl YWN0LmNyZWF0ZUNvbnRleHQoKTsKIGV4cG9ydCBjbGFzcyBMYXlvdXRIZWxwZXIgewogICBzdGF0 aWMgZ2V0UGFuZWwoYXR0cnMpIHsKICAgICByZXR1cm4gewpAQCAtMTA1LDExICsxMTAsMTEgQEAg ZXhwb3J0IGNsYXNzIExheW91dEhlbHBlciB7CiAgIH0KIAogICBzdGF0aWMgY2xvc2UoZG9ja2Vy LCBwYW5lbElkKSB7Ci0gICAgZG9ja2VyLmRvY2tNb3ZlKGRvY2tlci5maW5kKHBhbmVsSWQpLCAn cmVtb3ZlJyk7CisgICAgZG9ja2VyPy5kb2NrTW92ZShkb2NrZXIuZmluZChwYW5lbElkKSwgJ3Jl bW92ZScpOwogICB9CiAKICAgc3RhdGljIGZvY3VzKGRvY2tlciwgcGFuZWxJZCkgewotICAgIGRv Y2tlci51cGRhdGVUYWIocGFuZWxJZCwgbnVsbCwgdHJ1ZSk7CisgICAgZG9ja2VyPy51cGRhdGVU YWIocGFuZWxJZCwgbnVsbCwgdHJ1ZSk7CiAgIH0KIAogICBzdGF0aWMgb3BlbkRpYWxvZyhkb2Nr ZXIsIHBhbmVsRGF0YSwgd2lkdGg9NTAwLCBoZWlnaHQ9MzAwKSB7CkBAIC0xNDksOCArMTU0LDIw IEBAIGV4cG9ydCBjbGFzcyBMYXlvdXRIZWxwZXIgewogICB9CiB9CiAKLWV4cG9ydCBkZWZhdWx0 IGZ1bmN0aW9uIExheW91dCh7Z3JvdXBzLCBsYXlvdXRJbnN0YW5jZSwgLi4ucHJvcHN9KSB7Citm dW5jdGlvbiBzYXZlTGF5b3V0KGxheW91dE9iaiwgbGF5b3V0SWQpIHsKKyAgbGV0IGFwaSA9IGdl dEFwaUluc3RhbmNlKCk7CisgIGlmKCFsYXlvdXRJZCB8fCAhbGF5b3V0T2JqKSB7CisgICAgcmV0 dXJuOworICB9CisgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7CisgIGZvcm1EYXRh LmFwcGVuZCgnc2V0dGluZycsIGxheW91dElkKTsKKyAgZm9ybURhdGEuYXBwZW5kKCd2YWx1ZScs IEpTT04uc3RyaW5naWZ5KGxheW91dE9iai5zYXZlTGF5b3V0KCkpKTsKKyAgYXBpLnBvc3QodXJs X2Zvcignc2V0dGluZ3Muc3RvcmVfYnVsaycpLCBmb3JtRGF0YSkKKyAgICAuY2F0Y2goKCk9Pnsv KiBObyBuZWVkIHRvIHRocm93IGVycm9yICovfSk7Cit9CitleHBvcnQgZGVmYXVsdCBmdW5jdGlv biBMYXlvdXQoe2dyb3VwcywgZ2V0TGF5b3V0SW5zdGFuY2UsIGxheW91dElkLCBzYXZlZExheW91 dCwgLi4ucHJvcHN9KSB7CiAgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAgY29uc3Qg bGF5b3V0T2JqID0gdXNlUmVmKCk7CiAgIGNvbnN0IGRlZmF1bHRHcm91cHMgPSBSZWFjdC51c2VN ZW1vKCgpPT4oewogICAgICdkaWFsb2dzJzogewogICAgICAgZGlzYWJsZURvY2s6IHRydWUsCkBA IC0xNTksMjEgKzE3Niw1NiBAQCBleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBMYXlvdXQoe2dyb3Vw cywgbGF5b3V0SW5zdGFuY2UsIC4uLnByb3BzfSkgewogICAgIH0sCiAgICAgLi4uZ3JvdXBzLAog ICB9KSwgW2dyb3Vwc10pOwotICByZXR1cm4gKAorCisgIGNvbnN0IGxheW91dEV2ZW50QnVzID0g UmVhY3QudXNlUmVmKG5ldyBFdmVudEJ1cygpKTsKKyAgcmV0dXJuIHVzZU1lbW8oKCk9PigKICAg ICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5kb2NrbGF5b3V0fT4KLSAgICAgIDxEb2NrTGF5b3V0 Ci0gICAgICAgIHN0eWxlPXt7Ci0gICAgICAgICAgaGVpZ2h0OiAnMTAwJScsCi0gICAgICAgIH19 Ci0gICAgICAgIHJlZj17bGF5b3V0SW5zdGFuY2V9Ci0gICAgICAgIGdyb3Vwcz17ZGVmYXVsdEdy b3Vwc30KLSAgICAgICAgey4uLnByb3BzfQotICAgICAgLz4KKyAgICAgIDxMYXlvdXRFdmVudHND b250ZXh0LlByb3ZpZGVyIHZhbHVlPXtsYXlvdXRFdmVudEJ1cy5jdXJyZW50fT4KKyAgICAgICAg PERvY2tMYXlvdXQKKyAgICAgICAgICBzdHlsZT17eworICAgICAgICAgICAgaGVpZ2h0OiAnMTAw JScsCisgICAgICAgICAgfX0KKyAgICAgICAgICByZWY9eyhvYmopPT57CisgICAgICAgICAgICBs YXlvdXRPYmouY3VycmVudCA9IG9iajsKKyAgICAgICAgICAgIGlmKGxheW91dE9iai5jdXJyZW50 KSB7CisgICAgICAgICAgICAgIGxheW91dE9iai5jdXJyZW50LnJlc2V0TGF5b3V0ID0gKCk9PnsK KyAgICAgICAgICAgICAgICBsYXlvdXRPYmouY3VycmVudC5sb2FkTGF5b3V0KHByb3BzLmRlZmF1 bHRMYXlvdXQpOworICAgICAgICAgICAgICAgIHNhdmVMYXlvdXQobGF5b3V0T2JqLmN1cnJlbnQs IGxheW91dElkKTsKKyAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg IGdldExheW91dEluc3RhbmNlPy4obGF5b3V0T2JqLmN1cnJlbnQpOworICAgICAgICAgICAgdHJ5 IHsKKyAgICAgICAgICAgICAgbGF5b3V0T2JqLmN1cnJlbnQ/LmxvYWRMYXlvdXQoSlNPTi5wYXJz ZShzYXZlZExheW91dCkpOworICAgICAgICAgICAgfSBjYXRjaCB7CisgICAgICAgICAgICAgIC8q IEZhbGxiYWNrIHRvIGRlZmF1bHQgKi8KKyAgICAgICAgICAgICAgbGF5b3V0T2JqLmN1cnJlbnQ/ LmxvYWRMYXlvdXQocHJvcHMuZGVmYXVsdExheW91dCk7CisgICAgICAgICAgICB9CisgICAgICAg ICAgfX0KKyAgICAgICAgICBncm91cHM9e2RlZmF1bHRHcm91cHN9CisgICAgICAgICAgb25MYXlv dXRDaGFuZ2U9eyhfbCwgY3VycmVudFRhYklkLCBkaXJlY3Rpb24pPT57CisgICAgICAgICAgICBz YXZlTGF5b3V0KGxheW91dE9iai5jdXJyZW50LCBsYXlvdXRJZCk7CisgICAgICAgICAgICBpZihP YmplY3QudmFsdWVzKExBWU9VVF9FVkVOVFMpLmluZGV4T2YoZGlyZWN0aW9uKSA+IC0xKSB7Cisg ICAgICAgICAgICAgIGxheW91dEV2ZW50QnVzLmN1cnJlbnQuZmlyZUV2ZW50KExBWU9VVF9FVkVO VFNbZGlyZWN0aW9uLnRvVXBwZXJDYXNlKCldLCBjdXJyZW50VGFiSWQpOworICAgICAgICAgICAg fQorICAgICAgICAgIH19CisgICAgICAgICAgey4uLnByb3BzfQorICAgICAgICAvPgorICAgICAg PC9MYXlvdXRFdmVudHNDb250ZXh0LlByb3ZpZGVyPgogICAgIDwvZGl2PgotICApOworICApLCBb XSk7CiB9CiAKIExheW91dC5wcm9wVHlwZXMgPSB7CiAgIGdyb3VwczogUHJvcFR5cGVzLm9iamVj dCwKLSAgbGF5b3V0SW5zdGFuY2U6IEN1c3RvbVByb3BUeXBlcy5yZWYsCisgIGdldExheW91dElu c3RhbmNlOiBQcm9wVHlwZXMuZnVuYywKK307CisKKworZXhwb3J0IGNvbnN0IExBWU9VVF9FVkVO VFMgPSB7CisgIEFDVElWRTogJ2FjdGl2ZScsCisgIFJFTU9WRTogJ3JlbW92ZScsCisgIEZMT0FU OiAnZmxvYXQnLAorICBGUk9OVDogJ2Zyb250JywKKyAgTUFYSU1JWkU6ICdtYXhpbWl6ZScsCisg IE1PVkU6ICdtb3ZlJywKIH07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvaGVs cGVycy9Nb2RhbFByb3ZpZGVyLmpzeCBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9oZWxwZXJzL01v ZGFsUHJvdmlkZXIuanN4CmluZGV4IDdlNGZlNTI2MC4uYmRlN2QyZTY0IDEwMDY0NAotLS0gYS93 ZWIvcGdhZG1pbi9zdGF0aWMvanMvaGVscGVycy9Nb2RhbFByb3ZpZGVyLmpzeAorKysgYi93ZWIv cGdhZG1pbi9zdGF0aWMvanMvaGVscGVycy9Nb2RhbFByb3ZpZGVyLmpzeApAQCAtMjUsNyArMjUs OCBAQCBjb25zdCBNb2RhbENvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KHt9KTsKIGV4cG9y dCBmdW5jdGlvbiB1c2VNb2RhbCgpIHsKICAgcmV0dXJuIFJlYWN0LnVzZUNvbnRleHQoTW9kYWxD b250ZXh0KTsKIH0KLWNvbnN0IHVzZUFsZXJ0U3R5bGVzID0gbWFrZVN0eWxlcygodGhlbWUpPT4o eworCitleHBvcnQgY29uc3QgdXNlTW9kYWxTdHlsZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSk9Pih7 CiAgIGZvb3RlcjogewogICAgIGRpc3BsYXk6ICdmbGV4JywKICAgICBqdXN0aWZ5Q29udGVudDog J2ZsZXgtZW5kJywKQEAgLTM4LDcgKzM5LDcgQEAgY29uc3QgdXNlQWxlcnRTdHlsZXMgPSBtYWtl U3R5bGVzKCh0aGVtZSk9Pih7CiB9KSk7CiAKIGZ1bmN0aW9uIEFsZXJ0Q29udGVudCh7dGV4dCwg Y29uZmlybSwgb2tMYWJlbD1nZXR0ZXh0KCdPSycpLCBjYW5jZWxMYWJlbD1nZXR0ZXh0KCdDYW5j ZWwnKSwgb25Pa0NsaWNrLCBvbkNhbmNlbENsaWNrfSkgewotICBjb25zdCBjbGFzc2VzID0gdXNl QWxlcnRTdHlsZXMoKTsKKyAgY29uc3QgY2xhc3NlcyA9IHVzZU1vZGFsU3R5bGVzKCk7CiAgIHJl dHVybiAoCiAgICAgPEJveCBkaXNwbGF5PSJmbGV4IiBmbGV4RGlyZWN0aW9uPSJjb2x1bW4iIGhl aWdodD0iMTAwJSI+CiAgICAgICA8Qm94IGZsZXhHcm93PSIxIiBwPXsyfT57dHlwZW9mKHRleHQp ID09ICdzdHJpbmcnID8gSFRNTFJlYWN0UGFyc2VyKHRleHQpIDogdGV4dH08L0JveD4KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsY3VsYXRlX3F1ZXJ5X3J1 bl90aW1lLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9jYWxjdWxhdGVfcXVl cnlfcnVuX3RpbWUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxODJhYjQyYS4u MDAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsY3VsYXRl X3F1ZXJ5X3J1bl90aW1lLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwot Ly8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLS8vCi0vLyBDb3B5cmlnaHQgKEMp IDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0vLyBUaGlzIHNvZnR3 YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKLS8vCi0vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwot Ci1pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7Ci1pbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3Vy Y2VzL2dldHRleHQnOwotCi1leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlUXVlcnlSdW5UaW1lKHN0 YXJ0VGltZSwgZW5kVGltZSkgewotICBsZXQgdG90YWxfbXMgPSBtb21lbnQoZW5kVGltZSkuZGlm ZihzdGFydFRpbWUpOwotICBsZXQgcmVzdWx0ID0gJyc7Ci0gIGxldCBzZWNzLCBtaW5zLCBocnM7 Ci0KLSAgLyogRXh0cmFjdCBzZWNvbmRzIGZyb20gbWlsbGlzZWNzICovCi0gIHNlY3MgPSBwYXJz ZUludCh0b3RhbF9tcy8xMDAwKTsKLSAgdG90YWxfbXMgPSB0b3RhbF9tcyUxMDAwOwotCi0gIC8q IEV4dHJhY3QgbWlucyBmcm9tIHNlY29uZHMgKi8KLSAgbWlucyA9IHBhcnNlSW50KHNlY3MvNjAp OwotICBzZWNzID0gc2VjcyU2MDsKLQotICAvKiBFeHRyYWN0IGhycyBmcm9tIG1pbnMgKi8KLSAg aHJzID0gcGFyc2VJbnQobWlucy82MCk7Ci0gIG1pbnMgPSBtaW5zJTYwOwotCi0gIHJlc3VsdCA9 IChocnM+MCA/IGhycyArICcgJyArIGdldHRleHQoJ2hyJykgKyAnICc6ICcnKQotICAgICAgICAg ICsgKG1pbnM+MCA/IG1pbnMgKyAnICcgKyBnZXR0ZXh0KCdtaW4nKSArICcgJzogJycpCi0gICAg ICAgICAgKyAoaHJzPD0wICYmIHNlY3M+MCA/IHNlY3MgKyAnICcgKyBnZXR0ZXh0KCdzZWNzJykg KyAnICc6ICcnKQotICAgICAgICAgICsgKGhyczw9MCAmJiBtaW5zPD0wID8gdG90YWxfbXMgKyAn ICcgKyBnZXR0ZXh0KCdtc2VjJykgKyAnICc6JycpOwotICByZXR1cm4gcmVzdWx0LnRyaW0oKTsK LX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsbF9yZW5k ZXJfYWZ0ZXJfcG9sbC5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsbF9y ZW5kZXJfYWZ0ZXJfcG9sbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTZmZTY4 OWUwLi4wMDAwMDAwMDAKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9jYWxs X3JlbmRlcl9hZnRlcl9wb2xsLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v LwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLS8vCi0vLyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0vLyBUaGlzIHNv ZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKLS8vCi0vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v LwotCi1pbXBvcnQge2NhbGN1bGF0ZVF1ZXJ5UnVuVGltZX0gZnJvbSAnLi9jYWxjdWxhdGVfcXVl cnlfcnVuX3RpbWUnOwotaW1wb3J0IGdldHRleHQgZnJvbSAnLi4vZ2V0dGV4dCc7Ci0KLWZ1bmN0 aW9uIGhhc1Jlc3VsdHNUb0Rpc3BsYXkocmVzKSB7Ci0gIHJldHVybiByZXMuY29saW5mbyAhPSBu dWxsOwotfQotCi1mdW5jdGlvbiBpc1F1ZXJ5VG9vbChzcWxFZGl0b3IpIHsKLSAgcmV0dXJuIHNx bEVkaXRvci5pc19xdWVyeV90b29sOwotfQotCi1mdW5jdGlvbiBpc05vdGlmaWNhdGlvbkVuYWJs ZWQoc3FsRWRpdG9yKSB7Ci0gIHJldHVybiBzcWxFZGl0b3IuaW5mb19ub3RpZmllcl90aW1lb3V0 ID49IDA7Ci19Ci0KLWV4cG9ydCBmdW5jdGlvbiBjYWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRv ciwgTm90aWZ5LCByZXMpIHsKLSAgc3FsRWRpdG9yLnF1ZXJ5X2VuZF90aW1lID0gbmV3IERhdGUo KTsKLSAgc3FsRWRpdG9yLnJvd3NfYWZmZWN0ZWQgPSByZXMucm93c19hZmZlY3RlZDsKLSAgc3Fs RWRpdG9yLmhhc19tb3JlX3Jvd3MgPSByZXMuaGFzX21vcmVfcm93czsKLQotICBpZiAoaGFzUmVz dWx0c1RvRGlzcGxheShyZXMpKSB7Ci0gICAgc3FsRWRpdG9yLl9yZW5kZXIocmVzKTsKLSAgfSBl bHNlIHsKLSAgICBzcWxFZGl0b3IudG90YWxfdGltZSA9IGNhbGN1bGF0ZVF1ZXJ5UnVuVGltZSgK LSAgICAgIHNxbEVkaXRvci5xdWVyeV9zdGFydF90aW1lLAotICAgICAgc3FsRWRpdG9yLnF1ZXJ5 X2VuZF90aW1lKTsKLSAgICBjb25zdCBtc2cgPSBnZXR0ZXh0KCdRdWVyeSByZXR1cm5lZCBzdWNj ZXNzZnVsbHkgaW4gJXMuJywgc3FsRWRpdG9yLnRvdGFsX3RpbWUpOwotICAgIGlmIChyZXMucmVz dWx0KQotICAgICAgcmVzLnJlc3VsdCArPSAnXG5cbicgKyBtc2c7Ci0gICAgZWxzZQotICAgICAg cmVzLnJlc3VsdCA9IG1zZzsKLSAgICBzcWxFZGl0b3IudXBkYXRlX21zZ19oaXN0b3J5KHRydWUs IHJlcy5yZXN1bHQsIGZhbHNlKTsKLSAgICBzcWxFZGl0b3IucmVzZXRfZGF0YV9zdG9yZSgpOwot ICAgIGlmIChpc05vdGlmaWNhdGlvbkVuYWJsZWQoc3FsRWRpdG9yKSkgewotICAgICAgTm90aWZ5 LnN1Y2Nlc3MobXNnLCBzcWxFZGl0b3IuaW5mb19ub3RpZmllcl90aW1lb3V0KTsKLSAgICB9Ci0g ICAgc3FsRWRpdG9yLmVuYWJsZV9kaXNhYmxlX2Rvd25sb2FkX2J0bih0cnVlKTsKLSAgfQotCi0g IGlmIChpc1F1ZXJ5VG9vbChzcWxFZGl0b3IpKSB7Ci0gICAgc3FsRWRpdG9yLmRpc2FibGVfdG9v bF9idXR0b25zKGZhbHNlKTsKLSAgfQotCi0gIHNxbEVkaXRvci50cmlnZ2VyKCdwZ2FkbWluLXNx bGVkaXRvcjpjaGVja19zeW5jaHJvbm91c19kYl9uYW1lX2NoYW5nZScsIHJlcyk7Ci0KLSAgc3Fs RWRpdG9yLnNldElzUXVlcnlSdW5uaW5nKGZhbHNlKTsKLSAgc3FsRWRpdG9yLnRyaWdnZXIoJ3Bn YWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci19CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2V4ZWN1dGVfcXVlcnkuanMgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvc3FsZWRpdG9yL2V4ZWN1dGVfcXVlcnkuanMKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGU2YTkxMWQ4NS4uMDAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9zcWxlZGl0b3IvZXhlY3V0ZV9xdWVyeS5qcworKysgL2Rldi9udWxsCkBAIC0xLDM3MCAr MCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwg VG9vbHMKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCi0vLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0 Z3JlU1FMIExpY2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1pbXBvcnQgZ2V0dGV4dCBm cm9tICcuLi9nZXR0ZXh0JzsKLWltcG9ydCAkIGZyb20gJ2pxdWVyeSc7Ci1pbXBvcnQgdXJsX2Zv ciBmcm9tICcuLi91cmxfZm9yJzsKLWltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7Ci1pbXBvcnQg KiBhcyBodHRwRXJyb3JIYW5kbGVyIGZyb20gJy4vcXVlcnlfdG9vbF9odHRwX2Vycm9yX2hhbmRs ZXInOwotaW1wb3J0ICogYXMgcXVlcnlUeG5TdGF0dXMgZnJvbSAnc291cmNlcy9zcWxlZGl0b3Iv cXVlcnlfdHhuX3N0YXR1c19jb25zdGFudHMnOwotaW1wb3J0ICogYXMgU3FsRWRpdG9yVXRpbHMg ZnJvbSAnc291cmNlcy9zcWxlZGl0b3JfdXRpbHMnOwotCi1jbGFzcyBMb2FkaW5nU2NyZWVuIHsK LSAgY29uc3RydWN0b3Ioc3FsRWRpdG9yKSB7Ci0gICAgdGhpcy5zcWxFZGl0b3IgPSBzcWxFZGl0 b3I7Ci0gIH0KLQotICBzZXRNZXNzYWdlKG1lc3NhZ2UpIHsKLSAgICB0aGlzLnNxbEVkaXRvci50 cmlnZ2VyKAotICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjptZXNzYWdlJywK LSAgICAgIGdldHRleHQobWVzc2FnZSkKLSAgICApOwotICB9Ci0KLSAgc2hvdyh3aXRoTWVzc2Fn ZSkgewotICAgIHRoaXMuc3FsRWRpdG9yLnRyaWdnZXIoCi0gICAgICAncGdhZG1pbi1zcWxlZGl0 b3I6bG9hZGluZy1pY29uOnNob3cnLAotICAgICAgd2l0aE1lc3NhZ2UKLSAgICApOwotICB9Ci0K LSAgaGlkZSgpIHsKLSAgICB0aGlzLnNxbEVkaXRvci50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRv cjpsb2FkaW5nLWljb246aGlkZScpOwotICB9Ci19Ci0KLWNsYXNzIEV4ZWN1dGVRdWVyeSB7Ci0g IGNvbnN0cnVjdG9yKHNxbEVkaXRvciwgdXNlck1hbmFnZW1lbnQpIHsKLSAgICB0aGlzLnNxbFNl cnZlck9iamVjdCA9IHNxbEVkaXRvcjsKLSAgICB0aGlzLmxvYWRpbmdTY3JlZW4gPSBuZXcgTG9h ZGluZ1NjcmVlbihzcWxFZGl0b3IpOwotICAgIHRoaXMudXNlck1hbmFnZW1lbnQgPSB1c2VyTWFu YWdlbWVudDsKLSAgfQotCi0gIGRlbGF5ZWRQb2xsKCkgewotICAgIGNvbnN0IHNlbGYgPSB0aGlz OwotICAgIHNldFRpbWVvdXQoCi0gICAgICAoKSA9PiB7Ci0gICAgICAgIHNlbGYucG9sbCgpOwot ICAgICAgfSwgc2VsZi5zcWxTZXJ2ZXJPYmplY3QuUE9MTF9GQUxMQkFDS19USU1FKCkpOwotICB9 Ci0KLSAgZXhlY3V0ZShzcWxTdGF0ZW1lbnQsIGV4cGxhaW5QbGFuLCBjb25uZWN0KSB7Ci0gICAg Ly8gSWYgaXQgaXMgYW4gZW1wdHkgcXVlcnksIGRvIG5vdGhpbmcuCi0gICAgaWYgKHNxbFN0YXRl bWVudC5sZW5ndGggPD0gMCkgewotICAgICAgLy8gRW5hYmxlIHF1ZXJ5IGV4ZWN1dGlvbiBidXR0 b24gaWYgdXNlciBleGVjdXRlIGVtcHR5IHF1ZXJ5LgotICAgICAgJCgnI2J0bi1mbGFzaCcpLnBy b3AoJ2Rpc2FibGVkJywgZmFsc2UpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0 IHNlbGYgPSB0aGlzOwotICAgIHNlbGYuZXhwbGFpblBsYW4gPSBleHBsYWluUGxhbjsKLQotICAg IGNvbnN0IHNxbFN0YXRlbWVudFdpdGhBbmFseXplID0gRXhlY3V0ZVF1ZXJ5LnByZXBhcmVBbmFs eXplU3FsKHNxbFN0YXRlbWVudCwgZXhwbGFpblBsYW4pOwotCi0gICAgc2VsZi5pbml0aWFsaXpl RXhlY3V0aW9uT25TcWxFZGl0b3Ioc3FsU3RhdGVtZW50V2l0aEFuYWx5emUpOwotICAgIGF4aW9z LnBvc3QoCi0gICAgICB0aGlzLmdlbmVyYXRlVVJMUmVjb25uZWN0aW9uRmxhZyhjb25uZWN0KSwK LSAgICAgIEpTT04uc3RyaW5naWZ5KHNxbFN0YXRlbWVudFdpdGhBbmFseXplKSwKLSAgICAgIHto ZWFkZXJzOiB7J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ319KQotICAgICAgLnRo ZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICBsZXQgaHR0cE1lc3NhZ2VEYXRhID0gcmVz dWx0LmRhdGE7Ci0gICAgICAgIHNlbGYucmVtb3ZlR3JpZFZpZXdNYXJrZXIoKTsKLQotICAgICAg ICBzZWxmLnVwZGF0ZVNxbEVkaXRvckxhc3RUcmFuc2FjdGlvblN0YXR1cyhodHRwTWVzc2FnZURh dGEuZGF0YS50cmFuc2FjdGlvbl9zdGF0dXMpOwotCi0gICAgICAgIGlmIChFeGVjdXRlUXVlcnku aXNTcWxDb3JyZWN0KGh0dHBNZXNzYWdlRGF0YSkpIHsKLSAgICAgICAgICBzZWxmLmxvYWRpbmdT Y3JlZW4uc2V0TWVzc2FnZSgnV2FpdGluZyBmb3IgdGhlIHF1ZXJ5IHRvIGNvbXBsZXRlLi4uJyk7 Ci0KLSAgICAgICAgICAvLyBEaXNhYmxlIGRyb3AgZG93biBhcnJvdyB0byBjaGFuZ2UgY29ubmVj dGlvbnMKLSAgICAgICAgICBTcWxFZGl0b3JVdGlscy5kaXNhYmxlX2Nvbm5lY3Rpb25fZHJvcGRv d24odHJ1ZSk7Ci0KLSAgICAgICAgICBzZWxmLnVwZGF0ZVNxbEVkaXRvclN0YXRlV2l0aEluZm9y bWF0aW9uRnJvbVNlcnZlcihodHRwTWVzc2FnZURhdGEuZGF0YSk7Ci0KLSAgICAgICAgICAvLyBJ ZiBzdGF0dXMgaXMgVHJ1ZSB0aGVuIHBvbGwgdGhlIHJlc3VsdC4KLSAgICAgICAgICBzZWxmLmRl bGF5ZWRQb2xsKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgc2VsZi5sb2FkaW5nU2Ny ZWVuLmhpZGUoKTsKLSAgICAgICAgICBzZWxmLmVuYWJsZVNRTEVkaXRvckJ1dHRvbnMoKTsKLSAg ICAgICAgICBzZWxmLmRpc2FibGVEb3dubG9hZEJ1dHRvbigpOwotICAgICAgICAgIC8vIEVuYWJs ZS9EaXNhYmxlIGNvbW1pdCBhbmQgcm9sbGJhY2sgYnV0dG9uLgotICAgICAgICAgIGlmIChyZXN1 bHQuZGF0YS5kYXRhLnRyYW5zYWN0aW9uX3N0YXR1cyA9PSBxdWVyeVR4blN0YXR1cy5UUkFOU0FD VElPTl9TVEFUVVNfSU5UUkFOUwotICAgICAgICAgICAgfHwgcmVzdWx0LmRhdGEuZGF0YS50cmFu c2FjdGlvbl9zdGF0dXMgPT0gcXVlcnlUeG5TdGF0dXMuVFJBTlNBQ1RJT05fU1RBVFVTX0lORVJS T1IpIHsKLSAgICAgICAgICAgIHNlbGYuZW5hYmxlVHJhbnNhY3Rpb25CdXR0b25zKCk7Ci0gICAg ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNlbGYuZGlzYWJsZVRyYW5zYWN0aW9uQnV0dG9u cygpOwotICAgICAgICAgIH0KLSAgICAgICAgICBzZWxmLnNxbFNlcnZlck9iamVjdC51cGRhdGVf bXNnX2hpc3RvcnkoZmFsc2UsIGh0dHBNZXNzYWdlRGF0YS5kYXRhLnJlc3VsdCk7Ci0gICAgICAg ICAgaWYgKCdub3RpZmllcycgaW4gaHR0cE1lc3NhZ2VEYXRhLmRhdGEpCi0gICAgICAgICAgICBz ZWxmLnNxbFNlcnZlck9iamVjdC51cGRhdGVfbm90aWZpY2F0aW9ucyhodHRwTWVzc2FnZURhdGEu ZGF0YS5ub3RpZmllcyk7Ci0KLSAgICAgICAgICAvLyBIaWdobGlnaHQgdGhlIGVycm9yIGluIHRo ZSBzcWwgcGFuZWwKLSAgICAgICAgICBzZWxmLnNxbFNlcnZlck9iamVjdC5faGlnaGxpZ2h0X2Vy cm9yKGh0dHBNZXNzYWdlRGF0YS5kYXRhLnJlc3VsdCk7Ci0gICAgICAgIH0KLSAgICAgIH0pLmNh dGNoKGZ1bmN0aW9uIChlcnJvcikgewotICAgICAgICBzZWxmLm9uRXhlY3V0ZUhUVFBFcnJvcihl cnJvcik7Ci0gICAgICB9Ci0gICAgICApOwotICB9Ci0KLSAgZ2VuZXJhdGVVUkxSZWNvbm5lY3Rp b25GbGFnKHNob3VsZFJlY29ubmVjdCkgewotICAgIGxldCB1cmwgPSB1cmxfZm9yKCdzcWxlZGl0 b3IucXVlcnlfdG9vbF9zdGFydCcsIHsKLSAgICAgICd0cmFuc19pZCc6IHRoaXMuc3FsU2VydmVy T2JqZWN0LnRyYW5zSWQsCi0gICAgfSk7Ci0KLSAgICBpZiAoc2hvdWxkUmVjb25uZWN0KSB7Ci0g ICAgICB1cmwgKz0gJz9jb25uZWN0PTEnOwotICAgIH0KLSAgICByZXR1cm4gdXJsOwotICB9Ci0K LSAgcG9sbCgpIHsKLSAgICBjb25zdCBzZWxmID0gdGhpczsKLSAgICBheGlvcy5nZXQoCi0gICAg ICB1cmxfZm9yKCdzcWxlZGl0b3IucG9sbCcsIHsKLSAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi5z cWxTZXJ2ZXJPYmplY3QudHJhbnNJZCwKLSAgICAgIH0pCi0gICAgKS50aGVuKAotICAgICAgKGh0 dHBNZXNzYWdlKSA9PiB7Ci0gICAgICAgIHNlbGYudXBkYXRlU3FsRWRpdG9yTGFzdFRyYW5zYWN0 aW9uU3RhdHVzKGh0dHBNZXNzYWdlLmRhdGEuZGF0YS50cmFuc2FjdGlvbl9zdGF0dXMpOwotCi0g ICAgICAgIC8vIEVuYWJsZS9EaXNhYmxlIGNvbW1pdCBhbmQgcm9sbGJhY2sgYnV0dG9uLgotICAg ICAgICBpZiAoaHR0cE1lc3NhZ2UuZGF0YS5kYXRhLnRyYW5zYWN0aW9uX3N0YXR1cyA9PSBxdWVy eVR4blN0YXR1cy5UUkFOU0FDVElPTl9TVEFUVVNfSU5UUkFOUwotICAgICAgICAgIHx8IGh0dHBN ZXNzYWdlLmRhdGEuZGF0YS50cmFuc2FjdGlvbl9zdGF0dXMgPT0gcXVlcnlUeG5TdGF0dXMuVFJB TlNBQ1RJT05fU1RBVFVTX0lORVJST1IpIHsKLSAgICAgICAgICBzZWxmLmVuYWJsZVRyYW5zYWN0 aW9uQnV0dG9ucygpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHNlbGYuZGlzYWJsZVRy YW5zYWN0aW9uQnV0dG9ucygpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKEV4ZWN1dGVRdWVy eS5pc1F1ZXJ5RmluaXNoZWQoaHR0cE1lc3NhZ2UpKSB7Ci0gICAgICAgICAgaWYgKHRoaXMuc3Fs U2VydmVyT2JqZWN0LmNsb3NlX29uX2lkbGVfdHJhbnNhY3Rpb24gJiYKLSAgICAgICAgICAgICAg aHR0cE1lc3NhZ2UuZGF0YS5kYXRhLnRyYW5zYWN0aW9uX3N0YXR1cyA9PSBxdWVyeVR4blN0YXR1 cy5UUkFOU0FDVElPTl9TVEFUVVNfSURMRSkKLSAgICAgICAgICAgIHRoaXMuc3FsU2VydmVyT2Jq ZWN0LmNoZWNrX25lZWRlZF9jb25maXJtYXRpb25zX2JlZm9yZV9jbG9zaW5nX3BhbmVsKCk7Ci0K LSAgICAgICAgICBzZWxmLmxvYWRpbmdTY3JlZW4uc2V0TWVzc2FnZSgnTG9hZGluZyBkYXRhIGZy b20gdGhlIGRhdGFiYXNlIHNlcnZlciBhbmQgcmVuZGVyaW5nLi4uJyk7Ci0KLSAgICAgICAgICBz ZWxmLnNxbFNlcnZlck9iamVjdC5jYWxsX3JlbmRlcl9hZnRlcl9wb2xsKGh0dHBNZXNzYWdlLmRh dGEuZGF0YSk7Ci0gICAgICAgICAgaWYgKCdub3RpZmllcycgaW4gaHR0cE1lc3NhZ2UuZGF0YS5k YXRhKQotICAgICAgICAgICAgc2VsZi5zcWxTZXJ2ZXJPYmplY3QudXBkYXRlX25vdGlmaWNhdGlv bnMoaHR0cE1lc3NhZ2UuZGF0YS5kYXRhLm5vdGlmaWVzKTsKLSAgICAgICAgfSBlbHNlIGlmIChF eGVjdXRlUXVlcnkuaXNRdWVyeVN0aWxsUnVubmluZyhodHRwTWVzc2FnZSkpIHsKLSAgICAgICAg ICAvLyBJZiBzdGF0dXMgaXMgQnVzeSB0aGVuIHBvbGwgdGhlIHJlc3VsdCBieSByZWN1cnNpdmUg Y2FsbCB0byB0aGUgcG9sbCBmdW5jdGlvbgotICAgICAgICAgIHRoaXMuZGVsYXllZFBvbGwoKTsK LSAgICAgICAgICBzZWxmLnNxbFNlcnZlck9iamVjdC5zZXRJc1F1ZXJ5UnVubmluZyh0cnVlKTsK LSAgICAgICAgICBpZiAoaHR0cE1lc3NhZ2UuZGF0YS5kYXRhLnJlc3VsdCkgewotICAgICAgICAg ICAgc2VsZi5zcWxTZXJ2ZXJPYmplY3QudXBkYXRlX21zZ19oaXN0b3J5KGh0dHBNZXNzYWdlLmRh dGEuZGF0YS5zdGF0dXMsIGh0dHBNZXNzYWdlLmRhdGEuZGF0YS5yZXN1bHQsIGZhbHNlKTsKLSAg ICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoRXhlY3V0ZVF1ZXJ5LmlzQ29ubmVjdGlvblRv U2VydmVyTG9zdFdoaWxlUG9sbGluZyhodHRwTWVzc2FnZSkpIHsKLSAgICAgICAgICBzZWxmLmxv YWRpbmdTY3JlZW4uaGlkZSgpOwotICAgICAgICAgIC8vIEVuYWJsZS9EaXNhYmxlIHF1ZXJ5IHRv b2wgYnV0dG9uIG9ubHkgaWYgaXNfcXVlcnlfdG9vbCBpcyB0cnVlLgotICAgICAgICAgIGlmIChz ZWxmLnNxbFNlcnZlck9iamVjdC5pc19xdWVyeV90b29sKSB7Ci0gICAgICAgICAgICBzZWxmLmVu YWJsZVNRTEVkaXRvckJ1dHRvbnMoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc2VsZi5zcWxT ZXJ2ZXJPYmplY3QudXBkYXRlX21zZ19oaXN0b3J5KGZhbHNlLCBodHRwTWVzc2FnZS5kYXRhLmRh dGEucmVzdWx0LCB0cnVlKTsKLSAgICAgICAgfSBlbHNlIGlmIChFeGVjdXRlUXVlcnkuaXNRdWVy eUNhbmNlbGxlZChodHRwTWVzc2FnZSkpIHsKLSAgICAgICAgICBzZWxmLmxvYWRpbmdTY3JlZW4u aGlkZSgpOwotICAgICAgICAgIHNlbGYuc3FsU2VydmVyT2JqZWN0LnVwZGF0ZV9tc2dfaGlzdG9y eShmYWxzZSwgJ0V4ZWN1dGlvbiBDYW5jZWxsZWQhJywgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICAg ICAgLy8gRW5hYmxlIGNvbm5lY3Rpb24gbGlzdCBkcm9wIGRvd24gYWdhaW4gZm9yIHF1ZXJ5IHRv b2wgb25seQotICAgICAgICBpZihzZWxmLnNxbFNlcnZlck9iamVjdC5pc19xdWVyeV90b29sICYm ICFFeGVjdXRlUXVlcnkuaXNRdWVyeVN0aWxsUnVubmluZyhodHRwTWVzc2FnZSkpewotICAgICAg ICAgIFNxbEVkaXRvclV0aWxzLmRpc2FibGVfY29ubmVjdGlvbl9kcm9wZG93bihmYWxzZSk7Ci0g ICAgICAgIH0KLSAgICAgIH0KLSAgICApLmNhdGNoKAotICAgICAgZXJyb3IgPT4gewotICAgICAg ICAvLyBFbmFibGUvRGlzYWJsZSBxdWVyeSB0b29sIGJ1dHRvbiBvbmx5IGlmIGlzX3F1ZXJ5X3Rv b2wgaXMgdHJ1ZS4KLSAgICAgICAgc2VsZi5zcWxTZXJ2ZXJPYmplY3QucmVzZXRRdWVyeUhpc3Rv cnlPYmplY3Qoc2VsZi5zcWxTZXJ2ZXJPYmplY3QpOwotCi0gICAgICAgIHNlbGYubG9hZGluZ1Nj cmVlbi5oaWRlKCk7Ci0gICAgICAgIHNlbGYuc3FsU2VydmVyT2JqZWN0LnNldElzUXVlcnlSdW5u aW5nKGZhbHNlKTsKLSAgICAgICAgaWYgKHNlbGYuc3FsU2VydmVyT2JqZWN0LmlzX3F1ZXJ5X3Rv b2wpIHsKLSAgICAgICAgICBzZWxmLmVuYWJsZVNRTEVkaXRvckJ1dHRvbnMoKTsKLSAgICAgICAg ICBTcWxFZGl0b3JVdGlscy5kaXNhYmxlX2Nvbm5lY3Rpb25fZHJvcGRvd24oZmFsc2UpOwotICAg ICAgICB9Ci0KLSAgICAgICAgaWYoZXJyb3IucmVzcG9uc2UpIHsKLSAgICAgICAgICBpZihFeGVj dXRlUXVlcnkud2FzQ29ubmVjdGlvbkxvc3RUb1B5dGhvblNlcnZlcihlcnJvci5yZXNwb25zZSkp IHsKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlQ29ubmVjdGlvblRvU2VydmVyTG9zdCgpOwotICAg ICAgICAgICAgcmV0dXJuOwotICAgICAgICAgIH0KLSAgICAgICAgICBjb25zdCBlcnJvckRhdGEg PSBlcnJvci5yZXNwb25zZS5kYXRhOwotCi0gICAgICAgICAgaWYgKHNlbGYudXNlck1hbmFnZW1l bnQuaXNQZ2FMb2dpblJlcXVpcmVkKGVycm9yRGF0YSkpIHsKLSAgICAgICAgICAgIHJldHVybiBz ZWxmLnVzZXJNYW5hZ2VtZW50LnBnYUxvZ2luKCk7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAg bGV0IG1zZyA9IEV4ZWN1dGVRdWVyeS5leHRyYWN0RXJyb3JNZXNzYWdlKGVycm9yRGF0YSk7Ci0K LSAgICAgICAgICBzZWxmLnNxbFNlcnZlck9iamVjdC51cGRhdGVfbXNnX2hpc3RvcnkoZmFsc2Us IG1zZyk7Ci0gICAgICAgICAgLy8gSGlnaGxpZ2h0IHRoZSBlcnJvciBpbiB0aGUgc3FsIHBhbmVs Ci0gICAgICAgICAgc2VsZi5zcWxTZXJ2ZXJPYmplY3QuX2hpZ2hsaWdodF9lcnJvcihtc2cpOwot ICAgICAgICB9IGVsc2UgaWYoZXJyb3IucmVxdWVzdCkgewotICAgICAgICAgIHNlbGYuaGFuZGxl Q29ubmVjdGlvblRvU2VydmVyTG9zdCgpOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfSBl bHNlIHsKLSAgICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsKLSAgICAgICAgfQotICAgICAg fSk7Ci0gIH0KLQotICBpbml0aWFsaXplRXhlY3V0aW9uT25TcWxFZGl0b3Ioc3FsU3RhdGVtZW50 KSB7Ci0gICAgdGhpcy5sb2FkaW5nU2NyZWVuLnNob3coZ2V0dGV4dCgnUnVubmluZyBxdWVyeS4u LicpKTsKLQotICAgICQoJyNidG4tZmxhc2gnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwotICAg IHRoaXMuZGlzYWJsZURvd25sb2FkQnV0dG9uKCk7Ci0KLSAgICB0aGlzLnNxbFNlcnZlck9iamVj dC5xdWVyeV9zdGFydF90aW1lID0gbmV3IERhdGUoKTsKLSAgICBpZiAodHlwZW9mIHNxbFN0YXRl bWVudCA9PT0gJ29iamVjdCcpIHsKLSAgICAgIHRoaXMuc3FsU2VydmVyT2JqZWN0LnF1ZXJ5ID0g c3FsU3RhdGVtZW50WydzcWwnXTsKLSAgICB9IGVsc2UgewotICAgICAgdGhpcy5zcWxTZXJ2ZXJP YmplY3QucXVlcnkgPSBzcWxTdGF0ZW1lbnQ7Ci0gICAgfQotCi0gICAgdGhpcy5zcWxTZXJ2ZXJP YmplY3Qucm93c19hZmZlY3RlZCA9IDA7Ci0gICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QuX2luaXRf cG9sbGluZ19mbGFncygpOwotICAgIHRoaXMuZGlzYWJsZVNRTEVkaXRvckJ1dHRvbnMoKTsKLSAg ICB0aGlzLmRpc2FibGVUcmFuc2FjdGlvbkJ1dHRvbnMoKTsKLSAgfQotCi0gIHN0YXRpYyBwcmVw YXJlQW5hbHl6ZVNxbChzcWxTdGF0ZW1lbnQsIGFuYWx5emVTcWwpIHsKLSAgICByZXR1cm4gewot ICAgICAgc3FsOiBzcWxTdGF0ZW1lbnQsCi0gICAgICBleHBsYWluX3BsYW46IGFuYWx5emVTcWws Ci0gICAgfTsKLSAgfQotCi0gIG9uRXhlY3V0ZUhUVFBFcnJvcihodHRwTWVzc2FnZSkgewotICAg IHRoaXMubG9hZGluZ1NjcmVlbi5oaWRlKCk7Ci0gICAgdGhpcy5lbmFibGVTUUxFZGl0b3JCdXR0 b25zKCk7Ci0KLSAgICBpZiAoRXhlY3V0ZVF1ZXJ5Lndhc0Nvbm5lY3Rpb25Mb3N0VG9QeXRob25T ZXJ2ZXIoaHR0cE1lc3NhZ2UucmVzcG9uc2UpKSB7Ci0gICAgICB0aGlzLmhhbmRsZUNvbm5lY3Rp b25Ub1NlcnZlckxvc3QoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAodGhpcy51 c2VyTWFuYWdlbWVudC5pc1BnYUxvZ2luUmVxdWlyZWQoaHR0cE1lc3NhZ2UucmVzcG9uc2UpKSB7 Ci0gICAgICB0aGlzLnNxbFNlcnZlck9iamVjdC5zYXZlU3RhdGUoJ2NoZWNrX2RhdGFfY2hhbmdl c190b19leGVjdXRlX3F1ZXJ5JywgW3RoaXMuZXhwbGFpblBsYW5dKTsKLSAgICAgIHRoaXMudXNl ck1hbmFnZW1lbnQucGdhTG9naW4oKTsKLSAgICB9Ci0KLSAgICBpZiAoaHR0cEVycm9ySGFuZGxl ci5odHRwUmVzcG9uc2VSZXF1aXJlc05ld1RyYW5zYWN0aW9uKGh0dHBNZXNzYWdlLnJlc3BvbnNl KSkgewotICAgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3Quc2F2ZVN0YXRlKCdjaGVja19kYXRhX2No YW5nZXNfdG9fZXhlY3V0ZV9xdWVyeScsIFt0aGlzLmV4cGxhaW5QbGFuXSk7Ci0gICAgICB0aGlz LnNxbFNlcnZlck9iamVjdC5pbml0VHJhbnNhY3Rpb24oKTsKLSAgICB9Ci0KLSAgICBpZiAodGhp cy53YXNEYXRhYmFzZUNvbm5lY3Rpb25Mb3N0KGh0dHBNZXNzYWdlKSkgewotICAgICAgdGhpcy5z cWxTZXJ2ZXJPYmplY3Quc2F2ZVN0YXRlKCdjaGVja19kYXRhX2NoYW5nZXNfdG9fZXhlY3V0ZV9x dWVyeScsIFt0aGlzLmV4cGxhaW5QbGFuXSk7Ci0gICAgICB0aGlzLnNxbFNlcnZlck9iamVjdC5o YW5kbGVfY29ubmVjdGlvbl9sb3N0KGZhbHNlLCBodHRwTWVzc2FnZSk7Ci0gICAgfQotCi0gICAg aWYodGhpcy5pc0NyeXB0S2V5TWlzc2luZyhodHRwTWVzc2FnZSkpIHsKLSAgICAgIHRoaXMuc3Fs U2VydmVyT2JqZWN0LnNhdmVTdGF0ZSgnY2hlY2tfZGF0YV9jaGFuZ2VzX3RvX2V4ZWN1dGVfcXVl cnknLCBbdGhpcy5leHBsYWluUGxhbl0pOwotICAgICAgdGhpcy5zcWxTZXJ2ZXJPYmplY3QuaGFu ZGxlX2NyeXB0a2V5X21pc3NpbmcoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBsZXQg bXNnID0gaHR0cE1lc3NhZ2UucmVzcG9uc2UuZGF0YS5lcnJvcm1zZzsKLSAgICB0aGlzLnNxbFNl cnZlck9iamVjdC51cGRhdGVfbXNnX2hpc3RvcnkoZmFsc2UsIG1zZyk7Ci0gIH0KLQotICB3YXNE YXRhYmFzZUNvbm5lY3Rpb25Mb3N0KGh0dHBNZXNzYWdlKSB7Ci0gICAgcmV0dXJuIGh0dHBNZXNz YWdlLnJlc3BvbnNlLnN0YXR1cyA9PT0gNTAzICYmCi0gICAgICBodHRwTWVzc2FnZS5yZXNwb25z ZS5kYXRhLmluZm8gIT09IHVuZGVmaW5lZCAmJgotICAgICAgaHR0cE1lc3NhZ2UucmVzcG9uc2Uu ZGF0YS5pbmZvID09PSAnQ09OTkVDVElPTl9MT1NUJzsKLSAgfQotCi0gIGlzQ3J5cHRLZXlNaXNz aW5nKGh0dHBNZXNzYWdlKSB7Ci0gICAgcmV0dXJuIGh0dHBNZXNzYWdlLnJlc3BvbnNlLnN0YXR1 cyA9PT0gNTAzICYmCi0gICAgICBodHRwTWVzc2FnZS5yZXNwb25zZS5kYXRhLmluZm8gIT09IHVu ZGVmaW5lZCAmJgotICAgICAgaHR0cE1lc3NhZ2UucmVzcG9uc2UuZGF0YS5pbmZvID09PSAnQ1JZ UFRLRVlfTUlTU0lORyc7Ci0gIH0KLQotICByZW1vdmVHcmlkVmlld01hcmtlcigpIHsKLSAgICBp ZiAodGhpcy5zcWxTZXJ2ZXJPYmplY3QuZ3JpZFZpZXcubWFya2VyKSB7Ci0gICAgICB0aGlzLnNx bFNlcnZlck9iamVjdC5ncmlkVmlldy5tYXJrZXIuY2xlYXIoKTsKLSAgICAgIGRlbGV0ZSB0aGlz LnNxbFNlcnZlck9iamVjdC5ncmlkVmlldy5tYXJrZXI7Ci0gICAgICB0aGlzLnNxbFNlcnZlck9i amVjdC5ncmlkVmlldy5tYXJrZXIgPSBudWxsOwotCi0gICAgICAvLyBSZW1vdmUgYWxyZWFkeSBl eGlzdGluZyBtYXJrZXIKLSAgICAgIHRoaXMuc3FsU2VydmVyT2JqZWN0LmdyaWRWaWV3LnF1ZXJ5 X3Rvb2xfb2JqLnJlbW92ZUxpbmVDbGFzcyh0aGlzLnNxbFNlcnZlck9iamVjdC5tYXJrZWRfbGlu ZV9ubywgJ3dyYXAnLCAnQ29kZU1pcnJvci1hY3RpdmVsaW5lLWJhY2tncm91bmQnKTsKLSAgICB9 Ci0gIH0KLQotICBkaXNhYmxlRG93bmxvYWRCdXR0b24oKSB7Ci0gICAgdGhpcy5zcWxTZXJ2ZXJP YmplY3QuZW5hYmxlX2Rpc2FibGVfZG93bmxvYWRfYnRuKHRydWUpOwotICB9Ci0KLSAgZW5hYmxl U1FMRWRpdG9yQnV0dG9ucygpIHsKLSAgICB0aGlzLnNxbFNlcnZlck9iamVjdC5kaXNhYmxlX3Rv b2xfYnV0dG9ucyhmYWxzZSk7Ci0gIH0KLQotICBkaXNhYmxlU1FMRWRpdG9yQnV0dG9ucygpIHsK LSAgICB0aGlzLnNxbFNlcnZlck9iamVjdC5kaXNhYmxlX3Rvb2xfYnV0dG9ucyh0cnVlKTsKLSAg fQotCi0gIGVuYWJsZVRyYW5zYWN0aW9uQnV0dG9ucygpIHsKLSAgICB0aGlzLnNxbFNlcnZlck9i amVjdC5kaXNhYmxlX3RyYW5zYWN0aW9uX2J1dHRvbnMoZmFsc2UpOwotICB9Ci0KLSAgZGlzYWJs ZVRyYW5zYWN0aW9uQnV0dG9ucygpIHsKLSAgICB0aGlzLnNxbFNlcnZlck9iamVjdC5zcGVjaWFs X3NxbCA9IHVuZGVmaW5lZDsKLSAgICB0aGlzLnNxbFNlcnZlck9iamVjdC5kaXNhYmxlX3RyYW5z YWN0aW9uX2J1dHRvbnModHJ1ZSk7Ci0gIH0KLQotICBzdGF0aWMgd2FzQ29ubmVjdGlvbkxvc3RU b1B5dGhvblNlcnZlcihodHRwUmVzcG9uc2UpIHsKLSAgICByZXR1cm4gXy5pc1VuZGVmaW5lZCho dHRwUmVzcG9uc2UpIHx8IF8uaXNVbmRlZmluZWQoaHR0cFJlc3BvbnNlLmRhdGEpOwotICB9Ci0K LSAgaGFuZGxlQ29ubmVjdGlvblRvU2VydmVyTG9zdCgpIHsKLSAgICB0aGlzLnNxbFNlcnZlck9i amVjdC51cGRhdGVfbXNnX2hpc3RvcnkoZmFsc2UsCi0gICAgICBnZXR0ZXh0KCdOb3QgY29ubmVj dGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVl biBjbG9zZWQuJykKLSAgICApOwotICB9Ci0KLSAgdXBkYXRlU3FsRWRpdG9yU3RhdGVXaXRoSW5m b3JtYXRpb25Gcm9tU2VydmVyKG1lc3NhZ2VEYXRhKSB7Ci0gICAgdGhpcy5zcWxTZXJ2ZXJPYmpl Y3QuY2FuX2VkaXQgPSBtZXNzYWdlRGF0YS5jYW5fZWRpdDsKLSAgICB0aGlzLnNxbFNlcnZlck9i amVjdC5jYW5fZmlsdGVyID0gbWVzc2FnZURhdGEuY2FuX2ZpbHRlcjsKLSAgICB0aGlzLnNxbFNl cnZlck9iamVjdC5pbmZvX25vdGlmaWVyX3RpbWVvdXQgPSBtZXNzYWdlRGF0YS5pbmZvX25vdGlm aWVyX3RpbWVvdXQ7Ci0gIH0KLQotICB1cGRhdGVTcWxFZGl0b3JMYXN0VHJhbnNhY3Rpb25TdGF0 dXModHJhbnNhY3Rpb25TdGF0dXMpIHsKLSAgICB0aGlzLnNxbFNlcnZlck9iamVjdC5sYXN0X3Ry YW5zYWN0aW9uX3N0YXR1cyA9IHRyYW5zYWN0aW9uU3RhdHVzOwotICB9Ci0KLSAgc3RhdGljIGlz U3FsQ29ycmVjdChodHRwTWVzc2FnZURhdGEpIHsKLSAgICByZXR1cm4gaHR0cE1lc3NhZ2VEYXRh LmRhdGEuc3RhdHVzOwotICB9Ci0KLSAgc3RhdGljIGV4dHJhY3RFcnJvck1lc3NhZ2UoaHR0cE1l c3NhZ2UpIHsKLSAgICBsZXQgbXNnID0gaHR0cE1lc3NhZ2UuZXJyb3Jtc2c7Ci0gICAgaWYgKGh0 dHBNZXNzYWdlLnJlc3BvbnNlSlNPTiAhPT0gdW5kZWZpbmVkICYmCi0gICAgICBodHRwTWVzc2Fn ZS5yZXNwb25zZUpTT04uZXJyb3Jtc2cgIT09IHVuZGVmaW5lZCkKLSAgICAgIG1zZyA9IGh0dHBN ZXNzYWdlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsKLQotICAgIHJldHVybiBtc2c7Ci0gIH0KLQot ICBzdGF0aWMgaXNRdWVyeUZpbmlzaGVkKGh0dHBNZXNzYWdlKSB7Ci0gICAgcmV0dXJuIGh0dHBN ZXNzYWdlLmRhdGEuZGF0YS5zdGF0dXMgPT09ICdTdWNjZXNzJzsKLSAgfQotCi0gIHN0YXRpYyBp c1F1ZXJ5U3RpbGxSdW5uaW5nKGh0dHBNZXNzYWdlKSB7Ci0gICAgcmV0dXJuIGh0dHBNZXNzYWdl LmRhdGEuZGF0YS5zdGF0dXMgPT09ICdCdXN5JzsKLSAgfQotCi0gIHN0YXRpYyBpc1F1ZXJ5Q2Fu Y2VsbGVkKGh0dHBNZXNzYWdlKSB7Ci0gICAgcmV0dXJuIGh0dHBNZXNzYWdlLmRhdGEuZGF0YS5z dGF0dXMgPT09ICdDYW5jZWwnOwotICB9Ci0KLSAgc3RhdGljIGlzQ29ubmVjdGlvblRvU2VydmVy TG9zdFdoaWxlUG9sbGluZyhodHRwTWVzc2FnZSkgewotICAgIHJldHVybiBodHRwTWVzc2FnZS5k YXRhLmRhdGEuc3RhdHVzID09PSAnTm90Q29ubmVjdGVkJzsKLSAgfQotfQotCi1tb2R1bGUuZXhw b3J0cyA9IHsKLSAgRXhlY3V0ZVF1ZXJ5OiBFeGVjdXRlUXVlcnksCi19OwpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9maWx0ZXJfZGlhbG9nLmpzIGIvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9maWx0ZXJfZGlhbG9nLmpzCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCA3NmExODdiNzEuLjAwMDAwMDAwMAotLS0gYS93ZWIvcGdhZG1pbi9z dGF0aWMvanMvc3FsZWRpdG9yL2ZpbHRlcl9kaWFsb2cuanMKKysrIC9kZXYvbnVsbApAQCAtMSwy NzggKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLS8v Ci0vLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBU ZWFtCi0vLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExp Y2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLwotCi1pbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQn OwotaW1wb3J0IHVybF9mb3IgZnJvbSAnc291cmNlcy91cmxfZm9yJzsKLWltcG9ydCAkIGZyb20g J2pxdWVyeSc7Ci1pbXBvcnQgQWxlcnRpZnkgZnJvbSAncGdhZG1pbi5hbGVydGlmeWpzJzsKLWlt cG9ydCBwZ0FkbWluIGZyb20gJ3NvdXJjZXMvcGdhZG1pbic7Ci1pbXBvcnQgQmFja2Zvcm0gZnJv bSAncGdhZG1pbi5iYWNrZm9ybSc7Ci1pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnOwotdmFyIHF1 ZXJ5VG9vbEFjdGlvbnMgPSByZXF1aXJlKCdzb3VyY2VzL3NxbGVkaXRvci9xdWVyeV90b29sX2Fj dGlvbnMnKTsKLWltcG9ydCBmaWx0ZXJEaWFsb2dNb2RlbCBmcm9tICdzb3VyY2VzL3NxbGVkaXRv ci9maWx0ZXJfZGlhbG9nX21vZGVsJzsKLWltcG9ydCB7aGFuZGxlUXVlcnlUb29sQWpheEVycm9y fSBmcm9tICdzb3VyY2VzL3NxbGVkaXRvci9xdWVyeV90b29sX2h0dHBfZXJyb3JfaGFuZGxlcic7 Ci1pbXBvcnQgTm90aWZ5IGZyb20gJy4uLy4uLy4uL3N0YXRpYy9qcy9oZWxwZXJzL05vdGlmaWVy JzsKLQotbGV0IEZpbHRlckRpYWxvZyA9IHsKLSAgZ2V0dXJsOiBmdW5jdGlvbih0cmFuc0lkLCBy ZWNvbm5lY3QpIHsKLSAgICBsZXQgdXJsID0gdXJsX2Zvcignc3FsZWRpdG9yLmdldF9maWx0ZXJf ZGF0YScsIHsKLSAgICAgICd0cmFuc19pZCc6IHRyYW5zSWQsCi0gICAgfSk7Ci0KLSAgICBpZihy ZWNvbm5lY3QpIHsKLSAgICAgIHVybCArPSAnP2Nvbm5lY3Q9MSc7Ci0gICAgfQotCi0gICAgcmV0 dXJuIHVybDsKLSAgfSwKLQotICAnZGlhbG9nJzogZnVuY3Rpb24oaGFuZGxlciwgcmVjb25uZWN0 KSB7Ci0gICAgbGV0IHRpdGxlID0gZ2V0dGV4dCgnU29ydC9GaWx0ZXIgb3B0aW9ucycpOwotCi0g ICAgJC5hamF4KHsKLSAgICAgIHVybDogdGhpcy5nZXR1cmwoaGFuZGxlci50cmFuc0lkLCByZWNv bm5lY3QpLAotICAgICAgaGVhZGVyczogewotICAgICAgICAnQ2FjaGUtQ29udHJvbCcgOiAnbm8t Y2FjaGUnLAotICAgICAgfSwKLSAgICB9KQotICAgICAgLmRvbmUoZnVuY3Rpb24gKHJlcykgewot ICAgICAgICBsZXQgcmVzcG9uc2UgPSByZXMuZGF0YS5yZXN1bHQ7Ci0KLSAgICAgICAgLy8gQ2hl Y2sgdGhlIGFsZXJ0aWZ5IGRpYWxvZyBhbHJlYWR5IGxvYWRlZCB0aGVuIGRlbGV0ZSBpdCB0byBj bGVhcgotICAgICAgICAvLyB0aGUgY2FjaGUKLSAgICAgICAgaWYgKEFsZXJ0aWZ5LmZpbHRlckRp YWxvZykgewotICAgICAgICAgIGRlbGV0ZSBBbGVydGlmeS5maWx0ZXJEaWFsb2c7Ci0gICAgICAg IH0KLQotICAgICAgICAvLyBDcmVhdGUgRGlhbG9nCi0gICAgICAgIEFsZXJ0aWZ5LmRpYWxvZygn ZmlsdGVyRGlhbG9nJywgZnVuY3Rpb24gZmFjdG9yeSgpIHsKLSAgICAgICAgICBsZXQgJGNvbnRh aW5lciA9ICQoJzxkaXYgY2xhc3M9XCdkYXRhX3NvcnRpbmdfZGlhbG9nXCc+PC9kaXY+Jyk7Ci0g ICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIG1haW46IGZ1bmN0aW9uKCkgewotICAgICAg ICAgICAgICB0aGlzLnNldCgndGl0bGUnLCBnZXR0ZXh0KCdTb3J0L0ZpbHRlciBvcHRpb25zJykp OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGJ1aWxkOiBmdW5jdGlvbigpIHsKLSAgICAg ICAgICAgICAgdGhpcy5lbGVtZW50cy5jb250ZW50LmFwcGVuZENoaWxkKCRjb250YWluZXIuZ2V0 KDApKTsKLSAgICAgICAgICAgICAgQWxlcnRpZnkucGdEaWFsb2dCdWlsZC5hcHBseSh0aGlzKTsK LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7Ci0gICAgICAg ICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgYnV0dG9uczogW3sKLSAgICAgICAgICAg ICAgICAgIHRleHQ6ICcnLAotICAgICAgICAgICAgICAgICAga2V5OiAxMTIsCi0gICAgICAgICAg ICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXByaW1hcnktaWNvbiBwdWxsLWxlZnQgZmEgZmEt cXVlc3Rpb24gcGctYWxlcnRpZnktaWNvbi1idXR0b24nLAotICAgICAgICAgICAgICAgICAgYXR0 cnM6IHsKLSAgICAgICAgICAgICAgICAgICAgbmFtZTogJ2RpYWxvZ19oZWxwJywKLSAgICAgICAg ICAgICAgICAgICAgdHlwZTogJ2J1dHRvbicsCi0gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBn ZXR0ZXh0KCdIZWxwJyksCi0gICAgICAgICAgICAgICAgICAgICdhcmlhLWxhYmVsJzogZ2V0dGV4 dCgnSGVscCcpLAotICAgICAgICAgICAgICAgICAgICB1cmw6IHVybF9mb3IoJ2hlbHAuc3RhdGlj JywgewotICAgICAgICAgICAgICAgICAgICAgICdmaWxlbmFtZSc6ICdlZGl0Z3JpZC5odG1sJywK LSAgICAgICAgICAgICAgICAgICAgfSksCi0gICAgICAgICAgICAgICAgICB9LAotICAgICAgICAg ICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0NhbmNlbCcpLAot ICAgICAgICAgICAgICAgICAga2V5OiAyNywKLSAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTog J2J0biBidG4tc2Vjb25kYXJ5IGZhIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAg ICAgICAgICAgICAgICAnZGF0YS1idG4tbmFtZSc6ICdjYW5jZWwnLAotICAgICAgICAgICAgICAg IH0sIHsKLSAgICAgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ09LJyksCi0gICAgICAgICAg ICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXByaW1hcnkgZmEgZmEtY2hlY2sgcGctYWxlcnRp ZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ29rJywKLSAg ICAgICAgICAgICAgICB9XSwKLSAgICAgICAgICAgICAgICAvLyBTZXQgb3B0aW9ucyBmb3IgZGlh bG9nCi0gICAgICAgICAgICAgICAgb3B0aW9uczogewotICAgICAgICAgICAgICAgICAgdGl0bGU6 IHRpdGxlLAotICAgICAgICAgICAgICAgICAgLy9kaXNhYmxlIGJvdGggcGFkZGluZyBhbmQgb3Zl cmZsb3cgY29udHJvbC4KLSAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICExLAotICAgICAgICAg ICAgICAgICAgb3ZlcmZsb3c6ICExLAotICAgICAgICAgICAgICAgICAgbW9kZWw6IDAsCi0gICAg ICAgICAgICAgICAgICByZXNpemFibGU6IHRydWUsCi0gICAgICAgICAgICAgICAgICBtYXhpbWl6 YWJsZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgIHBpbm5hYmxlOiBmYWxzZSwKLSAgICAgICAg ICAgICAgICAgIGNsb3NhYmxlQnlEaW1tZXI6IGZhbHNlLAotICAgICAgICAgICAgICAgICAgbW9k YWw6IGZhbHNlLAotICAgICAgICAgICAgICAgICAgYXV0b1Jlc2V0OiBmYWxzZSwKLSAgICAgICAg ICAgICAgICB9LAotICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg IGhvb2tzOiB7Ci0gICAgICAgICAgICAvLyB0cmlnZ2VyZWQgd2hlbiB0aGUgZGlhbG9nIGlzIGNs b3NlZAotICAgICAgICAgICAgICBvbmNsb3NlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg ICBpZiAodGhpcy52aWV3KSB7Ci0gICAgICAgICAgICAgICAgICB0aGlzLmZpbHRlckNvbGxlY3Rp b25Nb2RlbC5zdG9wU2Vzc2lvbigpOwotICAgICAgICAgICAgICAgICAgdGhpcy52aWV3Lm1vZGVs LnN0b3BTZXNzaW9uKCk7Ci0gICAgICAgICAgICAgICAgICB0aGlzLnZpZXcucmVtb3ZlKHsKLSAg ICAgICAgICAgICAgICAgICAgZGF0YTogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgaW50ZXJu YWw6IHRydWUsCi0gICAgICAgICAgICAgICAgICAgIHNpbGVudDogdHJ1ZSwKLSAgICAgICAgICAg ICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSwKLSAgICAgICAg ICAgIH0sCi0gICAgICAgICAgICBwcmVwYXJlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg bGV0IHNlbGYgPSB0aGlzOwotICAgICAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJycpOwotICAg ICAgICAgICAgICAvLyBEaXNhYmxlIE9rIGJ1dHRvbgotICAgICAgICAgICAgICB0aGlzLl9faW50 ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKLQotICAgICAgICAgICAg ICAvLyBTdGF0dXMgYmFyCi0gICAgICAgICAgICAgIHRoaXMuc3RhdHVzQmFyID0gJCgKLSAgICAg ICAgICAgICAgICAnPGRpdiBjbGFzcz1cJ3BnLXByb3Atc3RhdHVzLWJhciBwZy1lbC14cy0xMiBk LW5vbmVcJz4nICsKLSAgICAgICAgICAgICAgJyAgPGRpdiBjbGFzcz0iZXJyb3ItaW4tZm9vdGVy Ij4gJyArCi0gICAgICAgICAgICAgICcgICAgPGRpdiBjbGFzcz0iZC1mbGV4IHB4LTIgcHktMSI+ ICcgKwotICAgICAgICAgICAgICAnICAgICAgPGRpdiBjbGFzcz0icHItMiI+ICcgKwotICAgICAg ICAgICAgICAnICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUgdGV4 dC1kYW5nZXIiIGFyaWEtaGlkZGVuPSJ0cnVlIj48L2k+ICcgKwotICAgICAgICAgICAgICAnICAg ICAgPC9kaXY+ICcgKwotICAgICAgICAgICAgICAnICAgICAgPGRpdiBjbGFzcz0iYWxlcnQtdGV4 dCIgcm9sZT0iYWxlcnQiPjwvZGl2PiAnICsKLSAgICAgICAgICAgICAgJyAgICA8L2Rpdj4gJyAr Ci0gICAgICAgICAgICAgICcgIDwvZGl2PiAnICsKLSAgICAgICAgICAgICAgJzwvZGl2PicpLmFw cGVuZFRvKCRjb250YWluZXIpOwotCi0gICAgICAgICAgICAgIC8vIFRvIHNob3cgcHJvZ3Jlc3Mg b24gZmlsdGVyIFNhdmluZy9VcGRhdGluZyBvbiBBSkFYCi0gICAgICAgICAgICAgIHRoaXMuc2hv d0ZpbHRlclByb2dyZXNzID0gJCgKLSAgICAgICAgICAgICAgICBgPGRpdiBpZD0ic2hvd19maWx0 ZXJfcHJvZ3Jlc3MiIGNsYXNzPSJwZy1zcC1jb250YWluZXIgc3FsLWVkaXRvci1idXN5LWZldGNo aW5nIGQtbm9uZSI+Ci0gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwZy1zcC1jb250ZW50 Ij4KLSAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNv bC0xMiBwZy1zcC1pY29uIHNxbC1lZGl0b3ItYnVzeS1pY29uIj48L2Rpdj48L2Rpdj4KLSAgICAg ICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNvbC0xMiBwZy1z cC10ZXh0IHNxbC1lZGl0b3ItYnVzeS10ZXh0Ij5gICsgZ2V0dGV4dCgnTG9hZGluZyBkYXRhLi4u JykgKyBgPC9kaXY+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg ICAgPC9kaXY+YAotICAgICAgICAgICAgICApLmFwcGVuZFRvKCRjb250YWluZXIpOwotICAgICAg ICAgICAgICAkKAotICAgICAgICAgICAgICAgIHNlbGYuc2hvd0ZpbHRlclByb2dyZXNzWzBdCi0g ICAgICAgICAgICAgICkucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpOwotCi0gICAgICAgICAgICAgIHNl bGYuZmlsdGVyQ29sbGVjdGlvbk1vZGVsID0gZmlsdGVyRGlhbG9nTW9kZWwocmVzcG9uc2UpOwot Ci0gICAgICAgICAgICAgIGxldCBmaWVsZHMgPSBCYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hlbWEo Ci0gICAgICAgICAgICAgICAgbnVsbCwgc2VsZi5maWx0ZXJDb2xsZWN0aW9uTW9kZWwsICdjcmVh dGUnLCBudWxsLCBudWxsLCB0cnVlCi0gICAgICAgICAgICAgICk7Ci0KLSAgICAgICAgICAgICAg bGV0IHZpZXcgPSB0aGlzLnZpZXcgPSBuZXcgQmFja2Zvcm0uRGlhbG9nKHsKLSAgICAgICAgICAg ICAgICBlbDogJzxkaXY+PC9kaXY+JywKLSAgICAgICAgICAgICAgICBtb2RlbDogc2VsZi5maWx0 ZXJDb2xsZWN0aW9uTW9kZWwsCi0gICAgICAgICAgICAgICAgc2NoZW1hOiBmaWVsZHMsCi0gICAg ICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICQodGhpcy5lbGVtZW50cy5ib2R5LmNoaWxk Tm9kZXNbMF0pLmFkZENsYXNzKAotICAgICAgICAgICAgICAgICdhbGVydGlmeV90b29sc19kaWFs b2dfcHJvcGVydGllcyBvYmpfcHJvcGVydGllcycKLSAgICAgICAgICAgICAgKTsKLQotICAgICAg ICAgICAgICAkY29udGFpbmVyLmFwcGVuZCh2aWV3LnJlbmRlcigpLiRlbCk7Ci0KLSAgICAgICAg ICAgICAgLy8gRW5hYmxlL2Rpc2FibGUgc2F2ZSBidXR0b24gYW5kIHNob3cvaGlkZSBzdGF0dXNi YXIgYmFzZWQgb24gc2Vzc2lvbgotICAgICAgICAgICAgICB2aWV3Lmxpc3RlblRvKHZpZXcubW9k ZWwsICdwZ2FkbWluLXNlc3Npb246c3RhcnQnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAg ICB2aWV3Lmxpc3RlblRvKHZpZXcubW9kZWwsICdwZ2FkbWluLXNlc3Npb246aW52YWxpZCcsIGZ1 bmN0aW9uKG1zZykgewotICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0dXNCYXIucmVtb3ZlQ2xh c3MoJ2Qtbm9uZScpOwotICAgICAgICAgICAgICAgICAgJChzZWxmLnN0YXR1c0Jhci5maW5kKCcu YWxlcnQtdGV4dCcpKS5odG1sKG1zZyk7Ci0gICAgICAgICAgICAgICAgICAvLyBEaXNhYmxlIE9r YXkgYnV0dG9uCi0gICAgICAgICAgICAgICAgICBzZWxmLl9faW50ZXJuYWwuYnV0dG9uc1syXS5l bGVtZW50LmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAg ICAgICAgIHZpZXcubGlzdGVuVG8odmlldy5tb2RlbCwgJ3BnYWRtaW4tc2Vzc2lvbjp2YWxpZCcs IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0dXNCYXIuYWRkQ2xhc3Mo J2Qtbm9uZScpOwotICAgICAgICAgICAgICAgICAgJChzZWxmLnN0YXR1c0Jhci5maW5kKCcuYWxl cnQtdGV4dCcpKS5odG1sKCcnKTsKLSAgICAgICAgICAgICAgICAgIC8vIEVuYWJsZSBPa2F5IGJ1 dHRvbgotICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVu dC5kaXNhYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICB9 KTsKLQotICAgICAgICAgICAgICB2aWV3Lmxpc3RlblRvKHZpZXcubW9kZWwsICdwZ2FkbWluLXNl c3Npb246c3RvcCcsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHZpZXcuc3RvcExpc3Rl bmluZyh2aWV3Lm1vZGVsLCAncGdhZG1pbi1zZXNzaW9uOmludmFsaWQnKTsKLSAgICAgICAgICAg ICAgICB2aWV3LnN0b3BMaXN0ZW5pbmcodmlldy5tb2RlbCwgJ3BnYWRtaW4tc2Vzc2lvbjp2YWxp ZCcpOwotICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICAvLyBTdGFydHMgbW9uaXRv cmluZyBjaGFuZ2VzIHRvIG1vZGVsCi0gICAgICAgICAgICAgIHZpZXcubW9kZWwuc3RhcnROZXdT ZXNzaW9uKCk7Ci0KLSAgICAgICAgICAgICAgLy8gU2V0IGRhdGEgaW4gY29sbGVjdGlvbgotICAg ICAgICAgICAgICBsZXQgdmlld0RhdGFTb3J0aW5nTW9kZWwgPSB2aWV3Lm1vZGVsLmdldCgnZGF0 YV9zb3J0aW5nJyk7Ci0gICAgICAgICAgICAgIHZpZXdEYXRhU29ydGluZ01vZGVsLmFkZChyZXNw b25zZVsnZGF0YV9zb3J0aW5nJ10pOwotCi0gICAgICAgICAgICAgIC8vIEhpZGUgUHJvZ3Jlc3Mg Li4uCi0gICAgICAgICAgICAgICQoCi0gICAgICAgICAgICAgICAgc2VsZi5zaG93RmlsdGVyUHJv Z3Jlc3NbMF0KLSAgICAgICAgICAgICAgKS5hZGRDbGFzcygnZC1ub25lJyk7Ci0KLSAgICAgICAg ICAgIH0sCi0gICAgICAgICAgICAvLyBDYWxsYmFjayBmdW5jdGlvbnMgd2hlbiBjbGljayBvbiB0 aGUgYnV0dG9ucyBvZiB0aGUgQWxlcnRpZnkgZGlhbG9ncwotICAgICAgICAgICAgY2FsbGJhY2s6 IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzOwotCi0gICAgICAg ICAgICAgIGlmIChlLmJ1dHRvbi5lbGVtZW50Lm5hbWUgPT0gJ2RpYWxvZ19oZWxwJykgewotICAg ICAgICAgICAgICAgIGUuY2FuY2VsID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBwZ0FkbWluLkJy b3dzZXIuc2hvd0hlbHAoZS5idXR0b24uZWxlbWVudC5uYW1lLCBlLmJ1dHRvbi5lbGVtZW50Lmdl dEF0dHJpYnV0ZSgndXJsJyksCi0gICAgICAgICAgICAgICAgICBudWxsLCBudWxsKTsKLSAgICAg ICAgICAgICAgfSBlbHNlIGlmIChlLmJ1dHRvblsnZGF0YS1idG4tbmFtZSddID09PSAnb2snKSB7 Ci0gICAgICAgICAgICAgICAgZS5jYW5jZWwgPSB0cnVlOyAvLyBEbyBub3QgY2xvc2UgZGlhbG9n Ci0KLSAgICAgICAgICAgICAgICBsZXQgZmlsdGVyQ29sbGVjdGlvbk1vZGVsID0gdGhpcy5maWx0 ZXJDb2xsZWN0aW9uTW9kZWwudG9KU09OKCk7Ci0KLSAgICAgICAgICAgICAgICAvLyBTaG93IFBy b2dyZXNzIC4uLgotICAgICAgICAgICAgICAgICQoCi0gICAgICAgICAgICAgICAgICBzZWxmLnNo b3dGaWx0ZXJQcm9ncmVzc1swXQotICAgICAgICAgICAgICAgICkucmVtb3ZlQ2xhc3MoJ2Qtbm9u ZScpOwotCi0gICAgICAgICAgICAgICAgYXhpb3MucHV0KAotICAgICAgICAgICAgICAgICAgdXJs X2Zvcignc3FsZWRpdG9yLnNldF9maWx0ZXJfZGF0YScsIHsKLSAgICAgICAgICAgICAgICAgICAg J3RyYW5zX2lkJzogaGFuZGxlci50cmFuc0lkLAotICAgICAgICAgICAgICAgICAgfSksCi0gICAg ICAgICAgICAgICAgICBmaWx0ZXJDb2xsZWN0aW9uTW9kZWwKLSAgICAgICAgICAgICAgICApLnRo ZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIC8vIEhpZGUgUHJvZ3Jlc3Mg Li4uCi0gICAgICAgICAgICAgICAgICAkKAotICAgICAgICAgICAgICAgICAgICBzZWxmLnNob3dG aWx0ZXJQcm9ncmVzc1swXQotICAgICAgICAgICAgICAgICAgKS5hZGRDbGFzcygnZC1ub25lJyk7 Ci0KLSAgICAgICAgICAgICAgICAgIGxldCBmaWx0ZXJSZXNwb25zZSA9IHJlc3VsdC5kYXRhLmRh dGE7Ci0KLSAgICAgICAgICAgICAgICAgIGlmIChmaWx0ZXJSZXNwb25zZS5zdGF0dXMpIHsKLSAg ICAgICAgICAgICAgICAgICAgc2V0VGltZW91dCgKLSAgICAgICAgICAgICAgICAgICAgICBmdW5j dGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKTsgLy8gQ2xvc2Ug dGhlIGRpYWxvZyBub3cKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vdGlmeS5zdWNjZXNzKGdl dHRleHQoJ0ZpbHRlciB1cGRhdGVkIHN1Y2Nlc3NmdWxseScpKTsKLSAgICAgICAgICAgICAgICAg ICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMuZXhlY3V0ZVF1ZXJ5KGhhbmRsZXIpOwotICAgICAgICAg ICAgICAgICAgICAgIH0sIDEwCi0gICAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAg ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBOb3RpZnkuYWxlcnQoCi0gICAgICAg ICAgICAgICAgICAgICAgZ2V0dGV4dCgnVmFsaWRhdGlvbiBFcnJvcicpLAotICAgICAgICAgICAg ICAgICAgICAgIGZpbHRlclJlc3BvbnNlLnJlc3VsdAotICAgICAgICAgICAgICAgICAgICApOwot ICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24g KGVycm9yKSB7Ci0gICAgICAgICAgICAgICAgLy8gSGlkZSBQcm9ncmVzcyAuLi4KLSAgICAgICAg ICAgICAgICAgICQoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2hvd0ZpbHRlclByb2dyZXNz WzBdCi0gICAgICAgICAgICAgICAgICApLmFkZENsYXNzKCdkLW5vbmUnKTsKLSAgICAgICAgICAg ICAgICAgIGhhbmRsZXIub25FeGVjdXRlSFRUUEVycm9yKGVycm9yKTsKLQotICAgICAgICAgICAg ICAgICAgc2V0VGltZW91dCgKLSAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAg ICAgICAgICAgICAgICAgICAgTm90aWZ5LmVycm9yKGVycm9yKTsKLSAgICAgICAgICAgICAgICAg ICAgfSwgMTAKLSAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAg ICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpOwotICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgIH07Ci0gICAgICAgIH0pOwotCi0g ICAgICAgIEFsZXJ0aWZ5LmZpbHRlckRpYWxvZyh0aXRsZSkucmVzaXplVG8ocGdBZG1pbi5Ccm93 c2VyLnN0ZFcubWQscGdBZG1pbi5Ccm93c2VyLnN0ZEgubWQpOwotICAgICAgfSkKLSAgICAgIC5m YWlsKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKHBnQWRt aW4sIGhhbmRsZXIsIGUsICdfc2hvd19maWx0ZXInLCBbXSwgdHJ1ZSk7Ci0gICAgICB9KTsKLSAg fSwKLX07Ci0KLW1vZHVsZS5leHBvcnRzID0gRmlsdGVyRGlhbG9nOwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9maWx0ZXJfZGlhbG9nX21vZGVsLmpzIGIvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9maWx0ZXJfZGlhbG9nX21vZGVsLmpzCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWE2NmUzNGEuLjAwMDAwMDAwMAotLS0gYS93ZWIv cGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2ZpbHRlcl9kaWFsb2dfbW9kZWwuanMKKysrIC9k ZXYvbnVsbApAQCAtMSwxMzcgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3Rn cmVTUUwgVG9vbHMKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1p biBEZXZlbG9wbWVudCBUZWFtCi0vLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRo ZSBQb3N0Z3JlU1FMIExpY2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1pbXBvcnQgZ2V0dGV4dCBmcm9tICdz b3VyY2VzL2dldHRleHQnOwotaW1wb3J0IF8gZnJvbSAndW5kZXJzY29yZSc7Ci1pbXBvcnQgcGdB ZG1pbiBmcm9tICdzb3VyY2VzL3BnYWRtaW4nOwotaW1wb3J0IEJhY2tncmlkIGZyb20gJ3BnYWRt aW4uYmFja2dyaWQnOwotaW1wb3J0IEJhY2tmb3JtIGZyb20gJ3BnYWRtaW4uYmFja2Zvcm0nOwot Ci1leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmaWx0ZXJEaWFsb2dNb2RlbChyZXNwb25zZSkgewot Ci0gIGxldCBvcmRlcl9tYXBwaW5nID0gewotICAgICdhc2MnOiBnZXR0ZXh0KCdBU0MnKSwKLSAg ICAnZGVzYyc6IGdldHRleHQoJ0RFU0MnKSwKLSAgfTsKLQotICBsZXQgRGF0YVNvcnRpbmdNb2Rl bCA9IHBnQWRtaW4uQnJvd3Nlci5EYXRhTW9kZWwuZXh0ZW5kKHsKLSAgICBpZEF0dHJpYnV0ZTog J25hbWUnLAotICAgIGRlZmF1bHRzOiB7Ci0gICAgICBuYW1lOiB1bmRlZmluZWQsCi0gICAgICBv cmRlcjogJ2FzYycsCi0gICAgfSwKLSAgICBzY2hlbWE6IFt7Ci0gICAgICBpZDogJ25hbWUnLAot ICAgICAgbmFtZTogJ25hbWUnLAotICAgICAgbGFiZWw6IGdldHRleHQoJ0NvbHVtbicpLAotICAg ICAgY2VsbDogJ3NlbGVjdDInLAotICAgICAgZWRpdGFibGU6IHRydWUsCi0gICAgICBjZWxsSGVh ZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNjAnLAotICAgICAgaGVhZGVyQ2VsbDogQmFja2dy aWQuRXh0ZW5zaW9uLkN1c3RvbUhlYWRlckNlbGwsCi0gICAgICBkaXNhYmxlZDogZmFsc2UsCi0g ICAgICBjb250cm9sOiAnc2VsZWN0MicsCi0gICAgICBzZWxlY3QyOiB7Ci0gICAgICAgIGFsbG93 Q2xlYXI6IGZhbHNlLAotICAgICAgfSwKLSAgICAgIG9wdGlvbnM6IGZ1bmN0aW9uKCkgewotICAg ICAgICByZXR1cm4gXy5tYXAocmVzcG9uc2UuY29sdW1uX2xpc3QsIChvYmopID0+IHsKLSAgICAg ICAgICByZXR1cm4gewotICAgICAgICAgICAgdmFsdWU6IG9iaiwKLSAgICAgICAgICAgIGxhYmVs OiBvYmosCi0gICAgICAgICAgfTsKLSAgICAgICAgfSk7Ci0gICAgICB9LAotICAgIH0sCi0gICAg ewotICAgICAgaWQ6ICdvcmRlcicsCi0gICAgICBuYW1lOiAnb3JkZXInLAotICAgICAgbGFiZWw6 IGdldHRleHQoJ09yZGVyJyksCi0gICAgICBjb250cm9sOiAnc2VsZWN0MicsCi0gICAgICBjZWxs OiAnc2VsZWN0MicsCi0gICAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNDAn LAotICAgICAgaGVhZGVyQ2VsbDogQmFja2dyaWQuRXh0ZW5zaW9uLkN1c3RvbUhlYWRlckNlbGws Ci0gICAgICBlZGl0YWJsZTogdHJ1ZSwKLSAgICAgIGRlcHM6IFsndHlwZSddLAotICAgICAgc2Vs ZWN0MjogewotICAgICAgICBhbGxvd0NsZWFyOiBmYWxzZSwKLSAgICAgIH0sCi0gICAgICBvcHRp b25zOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIF8ubWFwKG9yZGVyX21hcHBpbmcsICh2 YWwsIGtleSkgPT4gewotICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICB2YWx1ZToga2V5 LAotICAgICAgICAgICAgbGFiZWw6IHZhbCwKLSAgICAgICAgICB9OwotICAgICAgICB9KTsKLSAg ICAgIH0sCi0gICAgfSwKLSAgICBdLAotICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKLSAgICAg IGxldCBtc2cgPSBudWxsOwotICAgICAgdGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7Ci0gICAgICBp ZiAoXy5pc1VuZGVmaW5lZCh0aGlzLmdldCgnbmFtZScpKSB8fAotICAgICAgICBfLmlzTnVsbCh0 aGlzLmdldCgnbmFtZScpKSB8fAotICAgICAgICBTdHJpbmcodGhpcy5nZXQoJ25hbWUnKSkucmVw bGFjZSgvXlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICBtc2cgPSBnZXR0ZXh0KCdQ bGVhc2Ugc2VsZWN0IGEgY29sdW1uLicpOwotICAgICAgICB0aGlzLmVycm9yTW9kZWwuc2V0KCdu YW1lJywgbXNnKTsKLSAgICAgICAgcmV0dXJuIG1zZzsKLSAgICAgIH0gZWxzZSBpZiAoXy5pc1Vu ZGVmaW5lZCh0aGlzLmdldCgnb3JkZXInKSkgfHwKLSAgICAgICAgXy5pc051bGwodGhpcy5nZXQo J29yZGVyJykpIHx8Ci0gICAgICAgIFN0cmluZyh0aGlzLmdldCgnb3JkZXInKSkucmVwbGFjZSgv XlxzK3xccyskL2csICcnKSA9PSAnJykgewotICAgICAgICBtc2cgPSBnZXR0ZXh0KCdQbGVhc2Ug c2VsZWN0IHRoZSBvcmRlci4nKTsKLSAgICAgICAgdGhpcy5lcnJvck1vZGVsLnNldCgnb3JkZXIn LCBtc2cpOwotICAgICAgICByZXR1cm4gbXNnOwotICAgICAgfQotICAgICAgcmV0dXJuIG51bGw7 Ci0gICAgfSwKLSAgfSk7Ci0KLSAgbGV0IEZpbHRlckNvbGxlY3Rpb25Nb2RlbCA9IHBnQWRtaW4u QnJvd3Nlci5EYXRhTW9kZWwuZXh0ZW5kKHsKLSAgICBpZEF0dHJpYnV0ZTogJ3NxbCcsCi0gICAg ZGVmYXVsdHM6IHsKLSAgICAgIHNxbDogcmVzcG9uc2Uuc3FsIHx8IG51bGwsCi0gICAgfSwKLSAg ICBzY2hlbWE6IFt7Ci0gICAgICBpZDogJ3NxbCcsCi0gICAgICBsYWJlbDogZ2V0dGV4dCgnU1FM IEZpbHRlcicpLAotICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgICB0eXBlOiAndGV4dCcsIG1v ZGU6IFsnY3JlYXRlJ10sCi0gICAgICBjb250cm9sOiBCYWNrZm9ybS5TcWxGaWVsZENvbnRyb2wu ZXh0ZW5kKHsKLSAgICAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICBsZXQgb2Jq ID0gQmFja2Zvcm0uU3FsRmllbGRDb250cm9sLnByb3RvdHlwZS5yZW5kZXIuYXBwbHkodGhpcywg YXJndW1lbnRzKTsKLSAgICAgICAgICAvLyBXZSBuZWVkIHRvIHNldCBmb2N1cyBvbiBlZGl0b3Ig YWZ0ZXIgdGhlIGRpYWxvZyByZW5kZXJzCi0gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0g ICAgICAgICAgICBvYmouc3FsQ3RybC5mb2N1cygpOwotICAgICAgICAgIH0sIDEwMDApOwotICAg ICAgICAgIHJldHVybiBvYmo7Ci0gICAgICAgIH0sCi0gICAgICB9KSwKLSAgICAgIGV4dHJhQ2xh c3NlczpbJ2N1c3RvbV9oZWlnaHRfY3NzX2NsYXNzJ10sCi0gICAgfSx7Ci0gICAgICBpZDogJ2Rh dGFfc29ydGluZycsCi0gICAgICBuYW1lOiAnZGF0YV9zb3J0aW5nJywKLSAgICAgIGxhYmVsOiBn ZXR0ZXh0KCdEYXRhIFNvcnRpbmcnKSwKLSAgICAgIG1vZGVsOiBEYXRhU29ydGluZ01vZGVsLAot ICAgICAgZWRpdGFibGU6IHRydWUsCi0gICAgICB0eXBlOiAnY29sbGVjdGlvbicsCi0gICAgICBt b2RlOiBbJ2NyZWF0ZSddLAotICAgICAgY29udHJvbDogJ3VuaXF1ZS1jb2wtY29sbGVjdGlvbics Ci0gICAgICB1bmlxdWVDb2w6IFsnbmFtZSddLAotICAgICAgY2FuQWRkOiB0cnVlLAotICAgICAg Y2FuRWRpdDogZmFsc2UsCi0gICAgICBjYW5EZWxldGU6IHRydWUsCi0gICAgICB2aXNpYmxlOiB0 cnVlLAotICAgICAgdmVyc2lvbl9jb21wYXRpYmxlOiB0cnVlLAotICAgIH1dLAotICAgIHZhbGlk YXRlOiBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0sCi0gIH0pOwotCi0g IHJldHVybiBuZXcgRmlsdGVyQ29sbGVjdGlvbk1vZGVsKCk7Ci19CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL2dlb21ldHJ5X3ZpZXdlci5qcyBiL3dlYi9wZ2Fk bWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvZ2VvbWV0cnlfdmlld2VyLmpzCmRlbGV0ZWQgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAyM2ExZDM4NDMuLjAwMDAwMDAwMAotLS0gYS93ZWIvcGdhZG1pbi9z dGF0aWMvanMvc3FsZWRpdG9yL2dlb21ldHJ5X3ZpZXdlci5qcworKysgL2Rldi9udWxsCkBAIC0x LDQzNCArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwot Ly8KLS8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50 IFRlYW0KLS8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwg TGljZW5jZQotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCi0KLWltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4 dCc7Ci1pbXBvcnQge0J1ZmZlcn0gZnJvbSAnYnVmZmVyJzsKLWltcG9ydCAkIGZyb20gJ2pxdWVy eSc7Ci0KLXZhciBMID0gbnVsbDsKLXZhciBHZW9tZXRyeSA9IG51bGw7Ci1sZXQgR2VvbWV0cnlW aWV3ZXIgPSB7Ci0gIHBhbmVsX2Nsb3NlZDogdHJ1ZSwKLQotICBnb19mb3JfcmVuZGVyOiBmdW5j dGlvbihoYW5kbGVyLCBpdGVtcywgY29sdW1ucywgY29sdW1uSW5kZXgpIHsKLSAgICBsZXQgc2Vs ZiA9IHRoaXM7Ci0KLSAgICBpZiAoIXNlbGYubWFwX2NvbXBvbmVudCkgewotICAgICAgc2VsZi5t YXBfY29tcG9uZW50ID0gaW5pdE1hcENvbXBvbmVudCgpOwotICAgIH0KLQotICAgIGlmIChzZWxm LnBhbmVsX2Nsb3NlZCkgewotICAgICAgbGV0IHdjRG9ja2VyID0gd2luZG93LndjRG9ja2VyOwot ICAgICAgbGV0IGdlb21ldHJ5X3ZpZXdlcl9wYW5lbCA9IGhhbmRsZXIuZ3JpZFZpZXcuZ2VvbWV0 cnlfdmlld2VyID0KLSAgICAgICAgaGFuZGxlci5ncmlkVmlldy5kb2NrZXIuYWRkUGFuZWwoJ2dl b21ldHJ5X3ZpZXdlcicsCi0gICAgICAgICAgd2NEb2NrZXIuRE9DSy5TVEFDS0VELCBoYW5kbGVy LmdyaWRWaWV3LmRhdGFfb3V0cHV0X3BhbmVsKTsKLSAgICAgICQoJyNnZW9tZXRyeV92aWV3ZXJf cGFuZWwnKVswXS5hcHBlbmRDaGlsZChzZWxmLm1hcF9jb21wb25lbnQubWFwQ29udGFpbmVyLmdl dCgwKSk7Ci0gICAgICBzZWxmLnBhbmVsX2Nsb3NlZCA9IGZhbHNlOwotCi0gICAgICBnZW9tZXRy eV92aWV3ZXJfcGFuZWwub24od2NEb2NrZXIuRVZFTlQuQ0xPU0VELCBmdW5jdGlvbiAoKSB7Ci0g ICAgICAgICQoJyNnZW9tZXRyeV92aWV3ZXJfcGFuZWwnKS5lbXB0eSgpOwotICAgICAgICBzZWxm Lm1hcF9jb21wb25lbnQuY2xlYXJNYXAoKTsKLSAgICAgICAgc2VsZi5wYW5lbF9jbG9zZWQgPSB0 cnVlOwotICAgICAgfSk7Ci0KLSAgICAgIGdlb21ldHJ5X3ZpZXdlcl9wYW5lbC5vbih3Y0RvY2tl ci5FVkVOVC5SRVNJWkVfRU5ERUQsIGZ1bmN0aW9uICgpIHsKLSAgICAgICAgaWYgKGdlb21ldHJ5 X3ZpZXdlcl9wYW5lbC5pc1Zpc2libGUoKSkgewotICAgICAgICAgIHNlbGYubWFwX2NvbXBvbmVu dC5yZXNpemVNYXAoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICAgIGdlb21ldHJ5X3Zp ZXdlcl9wYW5lbC5vbih3Y0RvY2tlci5FVkVOVC5WSVNJQklMSVRZX0NIQU5HRUQsIGZ1bmN0aW9u ICh2aXNpYmxlKSB7Ci0gICAgICAgIGlmICh2aXNpYmxlKSB7Ci0gICAgICAgICAgc2VsZi5tYXBf Y29tcG9uZW50LnJlc2l6ZU1hcCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHNlbGYu bWFwX2NvbXBvbmVudC5sb3NlRm9jdXMoKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgfQot Ci0gICAgaGFuZGxlci5ncmlkVmlldy5nZW9tZXRyeV92aWV3ZXIuZm9jdXMoKTsKLSAgICBzZWxm Lm1hcF9jb21wb25lbnQuY2xlYXJNYXAoKTsKLSAgICBsZXQgZGF0YU9iaiA9IHBhcnNlRGF0YShp dGVtcywgY29sdW1ucywgY29sdW1uSW5kZXgsIEdlb21ldHJ5KTsKLSAgICBzZWxmLm1hcF9jb21w b25lbnQucmVuZGVyTWFwKGRhdGFPYmopOwotICB9LAotCi0gIHJlbmRlcl9nZW9tZXRyaWVzOiBm dW5jdGlvbiAoaGFuZGxlciwgaXRlbXMsIGNvbHVtbnMsIGNvbHVtbkluZGV4KSB7Ci0gICAgbGV0 IHNlbGYgPSB0aGlzOwotICAgIHJlcXVpcmUuZW5zdXJlKFsnbGVhZmxldCcsICd3a3gnXSwgZnVu Y3Rpb24ocmVxdWlyZSkgewotICAgICAgTCA9IHJlcXVpcmUoJ2xlYWZsZXQnKTsKLSAgICAgIEdl b21ldHJ5ID0gcmVxdWlyZSgnd2t4JykuR2VvbWV0cnk7Ci0gICAgICBzZWxmLmdvX2Zvcl9yZW5k ZXIoaGFuZGxlciwgaXRlbXMsIGNvbHVtbnMsIGNvbHVtbkluZGV4KTsKLSAgICB9LCBmdW5jdGlv bihlcnJvcil7Ci0gICAgICB0aHJvdyhlcnJvcik7Ci0gICAgfSwgJ2dlb21ldHJ5Jyk7Ci0gIH0s Ci0KLSAgYWRkX2hlYWRlcl9idXR0b246IGZ1bmN0aW9uIChjb2x1bW5EZWZpbml0aW9uKSB7Ci0g ICAgY29sdW1uRGVmaW5pdGlvbi5oZWFkZXIgPSB7Ci0gICAgICBidXR0b25zOiBbCi0gICAgICAg IHsKLSAgICAgICAgICBjc3NDbGFzczogJ2Rpdi12aWV3LWdlb21ldHJ5LWNvbHVtbicsCi0gICAg ICAgICAgdG9vbHRpcDogJ1ZpZXcgYWxsIGdlb21ldHJpZXMgaW4gdGhpcyBjb2x1bW4nLAotICAg ICAgICAgIHNob3dPbkhvdmVyOiBmYWxzZSwKLSAgICAgICAgICBjb21tYW5kOiAndmlldy1nZW9t ZXRyaWVzJywKLSAgICAgICAgICBjb250ZW50OiAnPGJ1dHRvbiBjbGFzcz0iYnRuLXhzIGJ0bi1w cmltYXJ5Ij48aSBjbGFzcz0iZmEgZmEtZXllIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PC9pPjwvYnV0 dG9uPicsCi0gICAgICAgIH0sCi0gICAgICBdLAotICAgIH07Ci0gIH0sCi0KLSAgcGFyc2VfZGF0 YTogcGFyc2VEYXRhLAotfTsKLQotZnVuY3Rpb24gaW5pdE1hcENvbXBvbmVudCgpIHsKLSAgY29u c3QgZ2VvanNvbk1hcmtlck9wdGlvbnMgPSB7Ci0gICAgcmFkaXVzOiA0LAotICAgIHdlaWdodDog MywKLSAgfTsKLSAgY29uc3QgZ2VvanNvblN0eWxlID0gewotICAgIHdlaWdodDogMiwKLSAgfTsK LSAgY29uc3QgcG9wdXBPcHRpb24gPSB7Ci0gICAgY2xvc2VCdXR0b246IGZhbHNlLAotICAgIG1p bldpZHRoOiAyNjAsCi0gICAgbWF4V2lkdGg6IDMwMCwKLSAgICBtYXhIZWlnaHQ6IDMwMCwKLSAg fTsKLQotICBsZXQgbWFwQ29udGFpbmVyID0gJCgnPGRpdiBjbGFzcz0iZ2VvbWV0cnktdmlld2Vy LWNvbnRhaW5lciI+PC9kaXY+Jyk7Ci0gIGxldCBsbWFwID0gTC5tYXAobWFwQ29udGFpbmVyLmdl dCgwKSwgewotICAgIHByZWZlckNhbnZhczogdHJ1ZSwKLSAgfSkuc2V0Wm9vbSgwKTsKLQotICAv LyB1cGRhdGUgZGVmYXVsdCBhdHRyaWJ1dGlvbgotICBsbWFwLmF0dHJpYnV0aW9uQ29udHJvbC5z ZXRQcmVmaXgoJycpOwotCi0gIGxldCB2ZWN0b3JMYXllciA9IEwuZ2VvSlNPTihbXSwgewotICAg IHN0eWxlOiBnZW9qc29uU3R5bGUsCi0gICAgcG9pbnRUb0xheWVyOiBmdW5jdGlvbiAoZmVhdHVy ZSwgbGF0bG5nKSB7Ci0gICAgICByZXR1cm4gTC5jaXJjbGVNYXJrZXIobGF0bG5nLCBnZW9qc29u TWFya2VyT3B0aW9ucyk7Ci0gICAgfSwKLSAgfSk7Ci0gIHZlY3RvckxheWVyLmFkZFRvKGxtYXAp OwotICBsZXQgYmFzZUxheWVyc09iaiA9IHsKLSAgICAnRW1wdHknOiBMLnRpbGVMYXllcignJyks Ci0gICAgJ1N0cmVldCc6IEwudGlsZUxheWVyKCdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRt YXAub3JnL3t6fS97eH0ve3l9LnBuZycsCi0gICAgICB7Ci0gICAgICAgIG1heFpvb206IDE5LAot ICAgICAgICBhdHRyaWJ1dGlvbjogJyZjb3B5OyA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJl ZXRtYXAub3JnL2NvcHlyaWdodCIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5TdHJlZXRNYXA8L2E+JywK LSAgICAgIH0pLAotICAgICdUb3BvZ3JhcGh5JzogTC50aWxlTGF5ZXIoJ2h0dHBzOi8ve3N9LnRp bGUub3BlbnRvcG9tYXAub3JnL3t6fS97eH0ve3l9LnBuZycsCi0gICAgICB7Ci0gICAgICAgIG1h eFpvb206IDE3LAotICAgICAgICBhdHRyaWJ1dGlvbjogJyZjb3B5OyA8YSBocmVmPSJodHRwOi8v d3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodCIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5TdHJl ZXRNYXA8L2E+LCcgKwotICAgICAgICAgICcgJmNvcHk7IDxhIGhyZWY9Imh0dHA6Ly92aWV3Zmlu ZGVycGFub3JhbWFzLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPlNSVE08L2E+LCcgKwotICAgICAgICAg ICcgJmNvcHk7IDxhIGhyZWY9Imh0dHBzOi8vb3BlbnRvcG9tYXAub3JnIiB0YXJnZXQ9Il9ibGFu ayI+T3BlblRvcG9NYXA8L2E+JywKLSAgICAgIH0pLAotICAgICdHcmF5IFN0eWxlJzogTC50aWxl TGF5ZXIoJ2h0dHBzOi8vY2FydG9kYi1iYXNlbWFwcy17c30uZ2xvYmFsLnNzbC5mYXN0bHkubmV0 L2xpZ2h0X2FsbC97en0ve3h9L3t5fXtyfS5wbmcnLAotICAgICAgewotICAgICAgICBhdHRyaWJ1 dGlvbjogJyZjb3B5OyA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHly aWdodCIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5TdHJlZXRNYXA8L2E+LCcgKwotICAgICAgICAgICcg JmNvcHk7IDxhIGhyZWY9Imh0dHA6Ly9jYXJ0b2RiLmNvbS9hdHRyaWJ1dGlvbnMiIHRhcmdldD0i X2JsYW5rIj5DYXJ0b0RCPC9hPicsCi0gICAgICAgIHN1YmRvbWFpbnM6ICdhYmNkJywKLSAgICAg ICAgbWF4Wm9vbTogMTksCi0gICAgICB9KSwKLSAgICAnTGlnaHQgQ29sb3InOiBMLnRpbGVMYXll cignaHR0cHM6Ly9jYXJ0b2RiLWJhc2VtYXBzLXtzfS5nbG9iYWwuc3NsLmZhc3RseS5uZXQvcmFz dGVydGlsZXMvdm95YWdlci97en0ve3h9L3t5fXtyfS5wbmcnLAotICAgICAgewotICAgICAgICBh dHRyaWJ1dGlvbjogJyZjb3B5OyA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3Jn L2NvcHlyaWdodCIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5TdHJlZXRNYXA8L2E+LCcgKwotICAgICAg ICAgICcgJmNvcHk7IDxhIGhyZWY9Imh0dHA6Ly9jYXJ0b2RiLmNvbS9hdHRyaWJ1dGlvbnMiIHRh cmdldD0iX2JsYW5rIj5DYXJ0b0RCPC9hPicsCi0gICAgICAgIHN1YmRvbWFpbnM6ICdhYmNkJywK LSAgICAgICAgbWF4Wm9vbTogMTksCi0gICAgICB9KSwKLSAgICAnRGFyayBNYXR0ZXInOiBMLnRp bGVMYXllcignaHR0cHM6Ly9jYXJ0b2RiLWJhc2VtYXBzLXtzfS5nbG9iYWwuc3NsLmZhc3RseS5u ZXQvZGFya19hbGwve3p9L3t4fS97eX17cn0ucG5nJywKLSAgICAgIHsKLSAgICAgICAgYXR0cmli dXRpb246ICcmY29weTsgPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5 cmlnaHQiIHRhcmdldD0iX2JsYW5rIj5PcGVuU3RyZWV0TWFwPC9hPiwnICsKLSAgICAgICAgICAn ICZjb3B5OyA8YSBocmVmPSJodHRwOi8vY2FydG9kYi5jb20vYXR0cmlidXRpb25zIiB0YXJnZXQ9 Il9ibGFuayI+Q2FydG9EQjwvYT4nLAotICAgICAgICBzdWJkb21haW5zOiAnYWJjZCcsCi0gICAg ICAgIG1heFpvb206IDE5LAotICAgICAgfSksCi0gIH07Ci0gIGxldCBsYXllckNvbnRyb2wgPSBM LmNvbnRyb2wubGF5ZXJzKGJhc2VMYXllcnNPYmopOwotICBsZXQgZGVmYXVsdEJhc2VMYXllciA9 IGJhc2VMYXllcnNPYmouU3RyZWV0OwotICBsZXQgYmFzZUxheWVycyA9IF8udmFsdWVzKGJhc2VM YXllcnNPYmopOwotCi0gIGxldCBpbmZvQ29udHJvbCA9IEwuY29udHJvbCh7cG9zaXRpb246ICd0 b3ByaWdodCd9KTsKLSAgaW5mb0NvbnRyb2wub25BZGQgPSBmdW5jdGlvbiAoKSB7Ci0gICAgdGhp cy5fZGl2ID0gTC5Eb21VdGlsLmNyZWF0ZSgnZGl2JywgJ2dlb21ldHJ5LXZpZXdlci1pbmZvLWNv bnRyb2wnKTsKLSAgICByZXR1cm4gdGhpcy5fZGl2OwotICB9OwotICBpbmZvQ29udHJvbC51cGRh dGUgPSBmdW5jdGlvbiAoY29udGVudCkgewotICAgIHRoaXMuX2Rpdi5pbm5lckhUTUwgPSBjb250 ZW50OwotICB9OwotCi0gIGxldCBzZXRFUFNHMzg1NyA9IGZ1bmN0aW9uICgpIHsKLSAgICBpZiAo bG1hcC5vcHRpb25zLmNycyAhPT0gTC5DUlMuRVBTRzM4NTcpIHsKLSAgICAgIGxtYXAub3B0aW9u cy5jcnMgPSBMLkNSUy5FUFNHMzg1NzsKLSAgICAgIGxheWVyQ29udHJvbC5hZGRUbyhsbWFwKTsK LSAgICAgIGxtYXAuYWRkTGF5ZXIoZGVmYXVsdEJhc2VMYXllcik7Ci0gICAgICBtYXBDb250YWlu ZXIuYWRkQ2xhc3MoJ2dlb21ldHJ5LXZpZXdlci1jb250YWluZXItcGxhaW4tYmFja2dyb3VuZCcp OwotICAgICAgbG1hcC5zZXRNaW5ab29tKDApOwotICAgIH0KLSAgfTsKLQotICBsZXQgc2V0U2lt cGxlQ1JTID0gZnVuY3Rpb24gKCkgewotICAgIGlmIChsbWFwLm9wdGlvbnMuY3JzICE9PSBMLkNS Uy5TaW1wbGUpIHsKLSAgICAgIGxtYXAub3B0aW9ucy5jcnMgPSBMLkNSUy5TaW1wbGU7Ci0gICAg ICBsYXllckNvbnRyb2wucmVtb3ZlKCk7Ci0gICAgICBfLmVhY2goYmFzZUxheWVycywgZnVuY3Rp b24gKGxheWVyKSB7Ci0gICAgICAgIGlmIChsbWFwLmhhc0xheWVyKGxheWVyKSkgewotICAgICAg ICAgIGRlZmF1bHRCYXNlTGF5ZXIgPSBsYXllcjsKLSAgICAgICAgICBsYXllci5yZW1vdmUoKTsK LSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgICBtYXBDb250YWluZXIucmVtb3ZlQ2xhc3MoJ2dl b21ldHJ5LXZpZXdlci1jb250YWluZXItcGxhaW4tYmFja2dyb3VuZCcpOwotICAgIH0KLSAgfTsK LQotICBzZXRTaW1wbGVDUlMoKTsKLSAgc2V0RVBTRzM4NTcoKTsKLQotICByZXR1cm4gewotICAg ICdtYXBDb250YWluZXInOiBtYXBDb250YWluZXIsCi0gICAgJ2NsZWFyTWFwJzogZnVuY3Rpb24g KCkgewotICAgICAgbG1hcC5jbG9zZVBvcHVwKCk7Ci0gICAgICBpbmZvQ29udHJvbC5yZW1vdmUo KTsKLSAgICAgIHZlY3RvckxheWVyLmNsZWFyTGF5ZXJzKCk7Ci0gICAgfSwKLQotICAgICdsb3Nl Rm9jdXMnOiBmdW5jdGlvbigpIHsKLSAgICAgIGxtYXAuZmlyZSgnYmx1cicpOwotICAgIH0sCi0K LSAgICAncmVuZGVyTWFwJzogZnVuY3Rpb24gKGRhdGFPYmopIHsKLSAgICAgIGxldCBnZW9KU09O cyA9IGRhdGFPYmouZ2VvSlNPTnMsCi0gICAgICAgIFNSSUQgPSBkYXRhT2JqLnNlbGVjdGVkU1JJ RCwKLSAgICAgICAgZ2V0UG9wdXBDb250ZW50ID0gZGF0YU9iai5nZXRQb3B1cENvbnRlbnQsCi0g ICAgICAgIGluZm9MaXN0ID0gZGF0YU9iai5pbmZvTGlzdDsKLQotICAgICAgbGV0IGlzRW1wdHkg PSBmYWxzZTsKLSAgICAgIGlmIChnZW9KU09Ocy5sZW5ndGggPT09IDApIHsKLSAgICAgICAgaXNF bXB0eSA9IHRydWU7Ci0gICAgICB9Ci0KLSAgICAgIHRyeSB7Ci0gICAgICAgIHZlY3RvckxheWVy LmFkZERhdGEoZ2VvSlNPTnMpOwotICAgICAgfSBjYXRjaCAoZSkgewotICAgICAgICAvLyBJbnZh bGlkIExhdExuZyBvYmplY3Q6IChOYU4sIE5hTikKLSAgICAgICAgaW5mb0xpc3QucHVzaCgnQW4g ZXJyb3Igb2NjdXJyZWQgd2hpbGUgcmVuZGVyaW5nIGRhdGEuJyk7Ci0gICAgICAgIGlzRW1wdHkg PSB0cnVlOwotICAgICAgfQotCi0gICAgICBsZXQgYm91bmRzID0gdmVjdG9yTGF5ZXIuZ2V0Qm91 bmRzKCk7Ci0gICAgICBpZiAoIWJvdW5kcy5pc1ZhbGlkKCkpIHsKLSAgICAgICAgaXNFbXB0eSA9 IHRydWU7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChpbmZvTGlzdC5sZW5ndGggPiAwKSB7Ci0gICAg ICAgIGlmIChsbWFwLm9wdGlvbnMuY3JzID09PSBMLkNSUy5FUFNHMzg1NykgewotICAgICAgICAg IGxheWVyQ29udHJvbC5yZW1vdmUoKTsKLSAgICAgICAgICBpbmZvQ29udHJvbC5hZGRUbyhsbWFw KTsKLSAgICAgICAgICBsYXllckNvbnRyb2wuYWRkVG8obG1hcCk7Ci0gICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgaW5mb0NvbnRyb2wuYWRkVG8obG1hcCk7Ci0gICAgICAgIH0KLSAgICAgICAg bGV0IGluZm9Db250ZW50ID0gZ2VuZXJhdGVJbmZvQ29udGVudChpbmZvTGlzdCk7Ci0gICAgICAg IGluZm9Db250cm9sLnVwZGF0ZShpbmZvQ29udGVudCk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChp c0VtcHR5KSB7Ci0gICAgICAgIHNldFNpbXBsZUNSUygpOwotICAgICAgICBsbWFwLnNldFZpZXco WzAsIDBdLCBsbWFwLmdldFpvb20oKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLQotICAg ICAgaWYgKHR5cGVvZiBnZXRQb3B1cENvbnRlbnQgPT09ICdmdW5jdGlvbicpIHsKLSAgICAgICAg bGV0IGFkZFBvcHVwID0gZnVuY3Rpb24gKGxheWVyKSB7Ci0gICAgICAgICAgbGF5ZXIuYmluZFBv cHVwKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiBnZXRQb3B1cENvbnRlbnQobGF5 ZXIuZmVhdHVyZS5nZW9tZXRyeSk7Ci0gICAgICAgICAgfSwgcG9wdXBPcHRpb24pOwotICAgICAg ICB9OwotICAgICAgICB2ZWN0b3JMYXllci5lYWNoTGF5ZXIoYWRkUG9wdXApOwotICAgICAgfQot Ci0gICAgICBib3VuZHMgPSBib3VuZHMucGFkKDAuMSk7Ci0gICAgICBsZXQgbWF4TGVuZ3RoID0g TWF0aC5tYXgoYm91bmRzLmdldE5vcnRoKCkgLSBib3VuZHMuZ2V0U291dGgoKSwKLSAgICAgICAg Ym91bmRzLmdldEVhc3QoKSAtIGJvdW5kcy5nZXRXZXN0KCkpOwotICAgICAgaWYgKFNSSUQgPT09 IDQzMjYpIHsKLSAgICAgICAgc2V0RVBTRzM4NTcoKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAg IHNldFNpbXBsZUNSUygpOwotICAgICAgICBpZiAobWF4TGVuZ3RoID49IDE4MCkgewotICAgICAg ICAgIC8vIGNhbGN1bGF0ZSB0aGUgbWluIHpvb20gbGV2ZWwgdG8gZW5hYmxlIHRoZSBtYXAgdG8g Zml0IHRoZSB3aG9sZSBnZW9tZXRyeS4KLSAgICAgICAgICBsZXQgbWluWm9vbSA9IE1hdGguZmxv b3IoTWF0aC5sb2cyKDM2MCAvIG1heExlbmd0aCkpIC0gMjsKLSAgICAgICAgICBsbWFwLnNldE1p blpvb20obWluWm9vbSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgbG1hcC5zZXRNaW5a b29tKDApOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmIChtYXhMZW5ndGggPiAwKSB7 Ci0gICAgICAgIGxtYXAuZml0Qm91bmRzKGJvdW5kcyk7Ci0gICAgICB9IGVsc2UgewotICAgICAg ICBsbWFwLnNldFZpZXcoYm91bmRzLmdldENlbnRlcigpLCBsbWFwLmdldFpvb20oKSk7Ci0gICAg ICB9Ci0gICAgfSwKLQotICAgICdyZXNpemVNYXAnOiBmdW5jdGlvbiAoKSB7Ci0gICAgICBzZXRU aW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgbG1hcC5pbnZhbGlkYXRlU2l6ZSgpOwotICAg ICAgfSwgMTApOwotICAgIH0sCi0KLSAgfTsKLX0KLQotZnVuY3Rpb24gcGFyc2VEYXRhKGl0ZW1z LCBjb2x1bW5zLCBjb2x1bW5JbmRleCwgR2VvbWV0cnlMaWIpIHsKLSAgY29uc3QgbWF4UmVuZGVy Qnl0ZUxlbmd0aCA9IDIwICogMTAyNCAqIDEwMjQ7IC8vcmVuZGVyIGdlb21ldHJ5IGRhdGEgdXAg dG8gMjBNQgotICBjb25zdCBtYXhSZW5kZXJHZW9tZXRyaWVzID0gMTAwMDAwOyAvLyByZW5kZXIg Z2VvbWV0cmllcyB1cCB0byAxMDAwMDAKLSAgbGV0IGZpZWxkID0gY29sdW1uc1tjb2x1bW5JbmRl eF0uZmllbGQ7Ci0gIGxldCBnZW9tZXRyaWVzM0QgPSBbXSwKLSAgICBzdXBwb3J0ZWRHZW9tZXRy aWVzID0gW10sCi0gICAgdW5zdXBwb3J0ZWRJdGVtcyA9IFtdLAotICAgIGluZm9MaXN0ID0gW10s Ci0gICAgZ2VvbWV0cnlJdGVtTWFwID0gbmV3IE1hcCgpLAotICAgIG1peGVkU1JJRCA9IGZhbHNl LAotICAgIGdlb21ldHJ5VG90YWxCeXRlTGVuZ3RoID0gMCwKLSAgICB0b29MYXJnZURhdGFTaXpl ID0gZmFsc2UsCi0gICAgdG9vTWFueUdlb21ldHJpZXMgPSBmYWxzZTsKLQotICBpZiAoaXRlbXMu bGVuZ3RoID09PSAwKSB7Ci0gICAgaW5mb0xpc3QucHVzaCgnRW1wdHkgcm93LicpOwotICAgIHJl dHVybiB7Ci0gICAgICAnZ2VvSlNPTnMnOiBbXSwKLSAgICAgICdzZWxlY3RlZFNSSUQnOiAwLAot ICAgICAgJ2dldFBvcHVwQ29udGVudCc6IHVuZGVmaW5lZCwKLSAgICAgICdpbmZvTGlzdCc6IGlu Zm9MaXN0LAotICAgIH07Ci0gIH0KLQotICAvLyBwYXJzZSBld2tiIGRhdGEKLSAgXy5ldmVyeShp dGVtcywgZnVuY3Rpb24gKGl0ZW0pIHsKLSAgICB0cnkgewotICAgICAgbGV0IHZhbHVlID0gaXRl bVtmaWVsZF07Ci0gICAgICBsZXQgYnVmZmVyID0gQnVmZmVyLmZyb20odmFsdWUsICdoZXgnKTsK LSAgICAgIGxldCBnZW9tZXRyeSA9IEdlb21ldHJ5TGliLnBhcnNlKGJ1ZmZlcik7Ci0gICAgICBp ZiAoZ2VvbWV0cnkuaGFzWikgewotICAgICAgICBnZW9tZXRyaWVzM0QucHVzaChnZW9tZXRyeSk7 Ci0gICAgICB9IGVsc2UgewotICAgICAgICBnZW9tZXRyeVRvdGFsQnl0ZUxlbmd0aCArPSBidWZm ZXIuYnl0ZUxlbmd0aDsKLSAgICAgICAgaWYgKGdlb21ldHJ5VG90YWxCeXRlTGVuZ3RoID4gbWF4 UmVuZGVyQnl0ZUxlbmd0aCkgewotICAgICAgICAgIHRvb0xhcmdlRGF0YVNpemUgPSB0cnVlOwot ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoc3VwcG9ydGVk R2VvbWV0cmllcy5sZW5ndGggPj0gbWF4UmVuZGVyR2VvbWV0cmllcykgewotICAgICAgICAgIHRv b01hbnlHZW9tZXRyaWVzID0gdHJ1ZTsKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg IH0KLQotICAgICAgICBpZiAoIWdlb21ldHJ5LnNyaWQpIHsKLSAgICAgICAgICBnZW9tZXRyeS5z cmlkID0gMDsKLSAgICAgICAgfQotICAgICAgICBzdXBwb3J0ZWRHZW9tZXRyaWVzLnB1c2goZ2Vv bWV0cnkpOwotICAgICAgICBnZW9tZXRyeUl0ZW1NYXAuc2V0KGdlb21ldHJ5LCBpdGVtKTsKLSAg ICAgIH0KLSAgICB9IGNhdGNoIChlKSB7Ci0gICAgICB1bnN1cHBvcnRlZEl0ZW1zLnB1c2goaXRl bSk7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9KTsKLQotICAvLyBnZW5lcmF0ZSBtYXAg aW5mbyBjb250ZW50Ci0gIGlmICh0b29MYXJnZURhdGFTaXplIHx8IHRvb01hbnlHZW9tZXRyaWVz KSB7Ci0gICAgaW5mb0xpc3QucHVzaChzdXBwb3J0ZWRHZW9tZXRyaWVzLmxlbmd0aCArICcgb2Yg JyArIGl0ZW1zLmxlbmd0aCArICcgZ2VvbWV0cmllcyByZW5kZXJlZC4nKTsKLSAgfQotICBpZiAo Z2VvbWV0cmllczNELmxlbmd0aCA+IDApIHsKLSAgICBpbmZvTGlzdC5wdXNoKGdldHRleHQoJzNE IGdlb21ldHJpZXMgbm90IHJlbmRlcmVkLicpKTsKLSAgfQotICBpZiAodW5zdXBwb3J0ZWRJdGVt cy5sZW5ndGggPiAwKSB7Ci0gICAgaW5mb0xpc3QucHVzaChnZXR0ZXh0KCdVbnN1cHBvcnRlZCBn ZW9tZXRyaWVzIG5vdCByZW5kZXJlZC4nKSk7Ci0gIH0KLQotICBpZiAoc3VwcG9ydGVkR2VvbWV0 cmllcy5sZW5ndGggPT09IDApIHsKLSAgICByZXR1cm4gewotICAgICAgJ2dlb0pTT05zJzogW10s Ci0gICAgICAnc2VsZWN0ZWRTUklEJzogMCwKLSAgICAgICdnZXRQb3B1cENvbnRlbnQnOiB1bmRl ZmluZWQsCi0gICAgICAnaW5mb0xpc3QnOiBpbmZvTGlzdCwKLSAgICB9OwotICB9Ci0KLSAgLy8g Z3JvdXAgZ2VvbWV0cmllcyBieSBTUklECi0gIGxldCBnZW9tZXRyaWVzR3JvdXBCeVNSSUQgPSBf Lmdyb3VwQnkoc3VwcG9ydGVkR2VvbWV0cmllcywgJ3NyaWQnKTsKLSAgbGV0IFNSSURHZW9tZXRy aWVzUGFpcnMgPSBfLnBhaXJzKGdlb21ldHJpZXNHcm91cEJ5U1JJRCk7Ci0gIGlmIChTUklER2Vv bWV0cmllc1BhaXJzLmxlbmd0aCA+IDEpIHsKLSAgICBtaXhlZFNSSUQgPSB0cnVlOwotICB9Ci0g IC8vIHNlbGVjdCB0aGUgbGFyZ2VzdCBncm91cAotICBsZXQgc2VsZWN0ZWRQYWlyID0gXy5tYXgo U1JJREdlb21ldHJpZXNQYWlycywgZnVuY3Rpb24gKHBhaXIpIHsKLSAgICByZXR1cm4gcGFpclsx XS5sZW5ndGg7Ci0gIH0pOwotICBsZXQgc2VsZWN0ZWRTUklEID0gcGFyc2VJbnQoc2VsZWN0ZWRQ YWlyWzBdKTsKLSAgbGV0IHNlbGVjdGVkR2VvbWV0cmllcyA9IHNlbGVjdGVkUGFpclsxXTsKLQot ICBsZXQgZ2VvSlNPTnMgPSBfLm1hcChzZWxlY3RlZEdlb21ldHJpZXMsIGZ1bmN0aW9uIChnZW9t ZXRyeSkgewotICAgIHJldHVybiBnZW9tZXRyeS50b0dlb0pTT04oKTsKLSAgfSk7Ci0KLSAgbGV0 IGdldFBvcHVwQ29udGVudDsKLSAgaWYgKGNvbHVtbnMubGVuZ3RoID49IDMpIHsKLSAgICAvLyBh ZGQgcG9wdXAgd2hlbiBnZW9tZXRyeSBoYXMgcHJvcGVydGllcwotICAgIGdldFBvcHVwQ29udGVu dCA9IGZ1bmN0aW9uIChnZW9qc29uKSB7Ci0gICAgICBsZXQgZ2VvbWV0cnkgPSBzZWxlY3RlZEdl b21ldHJpZXNbZ2VvSlNPTnMuaW5kZXhPZihnZW9qc29uKV07Ci0gICAgICBsZXQgaXRlbSA9IGdl b21ldHJ5SXRlbU1hcC5nZXQoZ2VvbWV0cnkpOwotICAgICAgcmV0dXJuIGl0ZW1Ub1RhYmxlKGl0 ZW0sIGNvbHVtbnMsIGNvbHVtbkluZGV4KTsKLSAgICB9OwotICB9Ci0KLSAgaWYgKG1peGVkU1JJ RCkgewotICAgIGluZm9MaXN0LnB1c2goZ2V0dGV4dCgnR2VvbWV0cmllcyB3aXRoIG5vbi1TUklE ICVzIG5vdCByZW5kZXJlZC4nLCBzZWxlY3RlZFNSSUQpKTsKLSAgfQotCi0gIHJldHVybiB7Ci0g ICAgJ2dlb0pTT05zJzogZ2VvSlNPTnMsCi0gICAgJ3NlbGVjdGVkU1JJRCc6IHNlbGVjdGVkU1JJ RCwKLSAgICAnZ2V0UG9wdXBDb250ZW50JzogZ2V0UG9wdXBDb250ZW50LAotICAgICdpbmZvTGlz dCc6IGluZm9MaXN0LAotICB9OwotfQotCi1mdW5jdGlvbiBpdGVtVG9UYWJsZShpdGVtLCBjb2x1 bW5zLCBpZ25vcmVkQ29sdW1uSW5kZXgpIHsKLSAgbGV0IGNvbnRlbnQgPSAnPHRhYmxlIGNsYXNz PSJ0YWJsZSB0YWJsZS1ib3JkZXJlZCB0YWJsZS1zdHJpcGVkIHZpZXctZ2VvbWV0cnktcHJvcGVy dHktdGFibGUiPjx0Ym9keT4nOwotCi0gIC8vIHN0YXJ0IGZyb20gMSBiZWNhdXNlIGNvbHVtbnNb MF0gaXMgZW1wdHkKLSAgZm9yIChsZXQgaSA9IDE7IGkgPCBjb2x1bW5zLmxlbmd0aDsgaSsrKSB7 Ci0gICAgaWYgKGkgIT09IGlnbm9yZWRDb2x1bW5JbmRleCkgewotICAgICAgbGV0IGNvbHVtbkRl ZiA9IGNvbHVtbnNbaV07Ci0gICAgICBjb250ZW50ICs9ICc8dHI+PHRoPicgKyBjb2x1bW5EZWYu ZGlzcGxheV9uYW1lICsgJzwvdGg+JzsKLQotICAgICAgbGV0IHZhbHVlID0gaXRlbVtjb2x1bW5E ZWYuZmllbGRdOwotICAgICAgaWYgKF8uaXNVbmRlZmluZWQodmFsdWUpICYmIGNvbHVtbkRlZi5o YXNfZGVmYXVsdF92YWwpIHsKLSAgICAgICAgY29udGVudCArPSAnPHRkIGNsYXNzPSJ0ZC1kaXNh YmxlZCI+W2RlZmF1bHRdPC90ZD4nOwotICAgICAgfSBlbHNlIGlmICgoXy5pc1VuZGVmaW5lZCh2 YWx1ZSkgJiYgY29sdW1uRGVmLm5vdF9udWxsKSB8fAotICAgICAgICAoXy5pc1VuZGVmaW5lZCh2 YWx1ZSkgfHwgdmFsdWUgPT09IG51bGwpKSB7Ci0gICAgICAgIGNvbnRlbnQgKz0gJzx0ZCBjbGFz cz0idGQtZGlzYWJsZWQiPltudWxsXTwvdGQ+JzsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGNv bnRlbnQgKz0gJzx0ZD4nICsgdmFsdWUgKyAnPC90ZD4nOwotICAgICAgfQotCi0gICAgICBjb250 ZW50ICs9ICc8L3RyPic7Ci0gICAgfQotICB9Ci0gIGNvbnRlbnQgKz0gJzwvdGJvZHk+PC90YWJs ZT4nOwotICByZXR1cm4gY29udGVudDsKLX0KLQotZnVuY3Rpb24gZ2VuZXJhdGVJbmZvQ29udGVu dChpbmZvTGlzdCkgewotICByZXR1cm4gaW5mb0xpc3Quam9pbignPGJyPicpOwotfQotCi1tb2R1 bGUuZXhwb3J0cyA9IEdlb21ldHJ5Vmlld2VyOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL3NxbGVkaXRvci9oaXN0b3J5L2hpc3RvcnlfY29sbGVjdGlvbi5qcyBiL3dlYi9wZ2Fk bWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvaGlzdG9yeS9oaXN0b3J5X2NvbGxlY3Rpb24uanMKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0N2QxZDgyOS4uMDAwMDAwMDAwCi0tLSBhL3dl Yi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvaGlzdG9yeS9oaXN0b3J5X2NvbGxlY3Rpb24u anMKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gcGdBZG1pbiA0 IC0gUG9zdGdyZVNRTCBUb29scwotLy8KLS8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRo ZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KLS8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLWV4cG9ydCBkZWZhdWx0 IGNsYXNzIEhpc3RvcnlDb2xsZWN0aW9uIHsKLQotICBjb25zdHJ1Y3RvcihoaXN0b3J5X21vZGVs KSB7Ci0gICAgdGhpcy5oaXN0b3J5TGlzdCA9IF8uc29ydEJ5KGhpc3RvcnlfbW9kZWwsIG89Pm8u c3RhcnRfdGltZSk7Ci0gICAgdGhpcy5vbkFkZCgoKSA9PiB7LypUaGlzIGlzIGludGVudGlvbmFs IChTb25hclF1YmUpKi99KTsKLSAgfQotCi0gIGxlbmd0aCgpIHsKLSAgICByZXR1cm4gdGhpcy5o aXN0b3J5TGlzdC5sZW5ndGg7Ci0gIH0KLQotICBhZGQob2JqZWN0KSB7Ci0gICAgLyogYWRkIG9i amVjdCBpbiBzb3J0ZWQgb3JkZXIgKi8KLSAgICBsZXQgcHVzaEF0ID0gXy5zb3J0ZWRJbmRleCh0 aGlzLmhpc3RvcnlMaXN0LCBvYmplY3QsIG89Pm8uc3RhcnRfdGltZSk7Ci0gICAgdGhpcy5oaXN0 b3J5TGlzdC5zcGxpY2UocHVzaEF0LCAwLCBvYmplY3QpOwotICAgIHRoaXMub25BZGRIYW5kbGVy KG9iamVjdCk7Ci0gIH0KLQotICByZXNldCgpIHsKLSAgICB0aGlzLmhpc3RvcnlMaXN0ID0gW107 Ci0gICAgdGhpcy5vblJlc2V0SGFuZGxlcih0aGlzLmhpc3RvcnlMaXN0KTsKLSAgfQotCi0gIG9u QWRkKG9uQWRkSGFuZGxlcikgewotICAgIHRoaXMub25BZGRIYW5kbGVyID0gb25BZGRIYW5kbGVy OwotICB9Ci0KLSAgb25SZXNldChvblJlc2V0SGFuZGxlcikgewotICAgIHRoaXMub25SZXNldEhh bmRsZXIgPSBvblJlc2V0SGFuZGxlcjsKLSAgfQotfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v c3RhdGljL2pzL3NxbGVkaXRvci9oaXN0b3J5L3F1ZXJ5X2hpc3RvcnkuanMgYi93ZWIvcGdhZG1p bi9zdGF0aWMvanMvc3FsZWRpdG9yL2hpc3RvcnkvcXVlcnlfaGlzdG9yeS5qcwpkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggZThlNGU0ZDQ1Li4wMDAwMDAwMDAKLS0tIGEvd2ViL3BnYWRt aW4vc3RhdGljL2pzL3NxbGVkaXRvci9oaXN0b3J5L3F1ZXJ5X2hpc3RvcnkuanMKKysrIC9kZXYv bnVsbApAQCAtMSw5NiArMCwwIEBACi1pbXBvcnQgUXVlcnlIaXN0b3J5RGV0YWlscyBmcm9tICcu L3F1ZXJ5X2hpc3RvcnlfZGV0YWlscyc7Ci1pbXBvcnQgeyBRdWVyeUhpc3RvcnlFbnRyaWVzIH0g ZnJvbSAnLi9xdWVyeV9oaXN0b3J5X2VudHJpZXMnOwotaW1wb3J0IFNwbGl0IGZyb20gJ3NwbGl0 LmpzJzsKLWltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7Ci1pbXBvcnQgJCBm cm9tICdqcXVlcnknOwotCi1leHBvcnQgZGVmYXVsdCBjbGFzcyBRdWVyeUhpc3RvcnkgewotICBj b25zdHJ1Y3RvcihwYXJlbnROb2RlLCBoaXN0TW9kZWwpIHsKLSAgICB0aGlzLnBhcmVudE5vZGUg PSBwYXJlbnROb2RlOwotICAgIHRoaXMuaGlzdENvbGxlY3Rpb24gPSBoaXN0TW9kZWw7Ci0gICAg dGhpcy5lZGl0b3JQcmVmID0ge307Ci0KLSAgICB0aGlzLm9uQ29weVRvRWRpdG9ySGFuZGxlciA9 ICgpPT57LypUaGlzIGlzIGludGVudGlvbmFsIChTb25hclF1YmUpKi99OwotICAgIHRoaXMuaGlz dENvbGxlY3Rpb24ub25BZGQodGhpcy5vbkFkZEVudHJ5LmJpbmQodGhpcykpOwotICAgIHRoaXMu aGlzdENvbGxlY3Rpb24ub25SZXNldCh0aGlzLm9uUmVzZXRFbnRyaWVzLmJpbmQodGhpcykpOwot ICB9Ci0KLSAgZm9jdXMoKSB7Ci0gICAgaWYgKHRoaXMucXVlcnlIaXN0RW50cmllcykgewotICAg ICAgdGhpcy5xdWVyeUhpc3RFbnRyaWVzLmZvY3VzKCk7Ci0gICAgfQotICB9Ci0KLSAgb25BZGRF bnRyeShlbnRyeSkgewotICAgIGlmICh0aGlzLmhpc3RDb2xsZWN0aW9uLmxlbmd0aCgpID09IDEp IHsKLSAgICAgIHRoaXMucmVuZGVyKCk7Ci0gICAgfSBlbHNlIGlmICh0aGlzLnF1ZXJ5SGlzdEVu dHJpZXMpIHsKLSAgICAgIHRoaXMucXVlcnlIaXN0RW50cmllcy5hZGRFbnRyeShlbnRyeSk7Ci0g ICAgfQotICB9Ci0KLSAgb25SZXNldEVudHJpZXMoKSB7Ci0gICAgdGhpcy5pc1JlbmRlcmVkID0g ZmFsc2U7Ci0gICAgdGhpcy5xdWVyeUhpc3RFbnRyaWVzID0gbnVsbDsKLSAgICB0aGlzLnF1ZXJ5 SGlzdERldGFpbHMgPSBudWxsOwotICAgIHRoaXMucmVuZGVyKCk7Ci0gIH0KLQotICBvbkNvcHlU b0VkaXRvckNsaWNrKG9uQ29weVRvRWRpdG9ySGFuZGxlcikgewotICAgIHRoaXMub25Db3B5VG9F ZGl0b3JIYW5kbGVyID0gb25Db3B5VG9FZGl0b3JIYW5kbGVyOwotCi0gICAgaWYodGhpcy5xdWVy eUhpc3REZXRhaWxzKSB7Ci0gICAgICB0aGlzLnF1ZXJ5SGlzdERldGFpbHMub25Db3B5VG9FZGl0 b3JDbGljayh0aGlzLm9uQ29weVRvRWRpdG9ySGFuZGxlcik7Ci0gICAgfQotICB9Ci0KLSAgc2V0 RWRpdG9yUHJlZihlZGl0b3JQcmVmKSB7Ci0gICAgdGhpcy5lZGl0b3JQcmVmID0gewotICAgICAg Li4udGhpcy5lZGl0b3JQcmVmLAotICAgICAgLi4uZWRpdG9yUHJlZiwKLSAgICB9OwotICAgIGlm KHRoaXMucXVlcnlIaXN0RGV0YWlscykgewotICAgICAgdGhpcy5xdWVyeUhpc3REZXRhaWxzLnNl dEVkaXRvclByZWYodGhpcy5lZGl0b3JQcmVmKTsKLSAgICB9Ci0gIH0KLQotICByZW5kZXIoKSB7 Ci0gICAgaWYgKHRoaXMuaGlzdENvbGxlY3Rpb24ubGVuZ3RoKCkgPT0gMCkgewotICAgICAgdGhp cy5wYXJlbnROb2RlLmVtcHR5KCkKLSAgICAgICAgLnJlbW92ZUNsYXNzKCdkLWZsZXgnKQotICAg ICAgICAuYXBwZW5kKAotICAgICAgICAgICc8ZGl2IHJvbGU9InN0YXR1cyIgY2xhc3M9InBnLXBh bmVsLW1lc3NhZ2UiPicgKwotICAgICAgICAgICAgZ2V0dGV4dCgnTm8gaGlzdG9yeSBmb3VuZCcp ICsKLSAgICAgICAgICAnPC9kaXY+JwotICAgICAgICApOwotICAgIH0gZWxzZSB7Ci0gICAgICB0 aGlzLnBhcmVudE5vZGUuZW1wdHkoKS5hZGRDbGFzcygnZC1mbGV4Jyk7Ci0gICAgICBsZXQgJGhp c3RFbnRyaWVzID0gJCgnPGRpdj48ZGl2PicpLmFwcGVuZFRvKHRoaXMucGFyZW50Tm9kZSk7Ci0g ICAgICBsZXQgJGhpc3REZXRhaWxzID0gJCgnPGRpdj48ZGl2PicpLmFwcGVuZFRvKHRoaXMucGFy ZW50Tm9kZSk7Ci0KLSAgICAgIFNwbGl0KFskaGlzdEVudHJpZXNbMF0sICRoaXN0RGV0YWlsc1sw XV0sIHsKLSAgICAgICAgZ3V0dGVyU2l6ZTogMSwKLSAgICAgICAgY3Vyc29yOiAnZXctcmVzaXpl JywKLSAgICAgIH0pOwotCi0gICAgICAkaGlzdERldGFpbHMuY3NzKCdvdmVyZmxvdycsICdhdXRv Jyk7Ci0KLSAgICAgIHRoaXMucXVlcnlIaXN0RGV0YWlscyA9IG5ldyBRdWVyeUhpc3RvcnlEZXRh aWxzKCRoaXN0RGV0YWlscyk7Ci0gICAgICB0aGlzLnF1ZXJ5SGlzdERldGFpbHMuc2V0RWRpdG9y UHJlZih0aGlzLmVkaXRvclByZWYpOwotICAgICAgdGhpcy5xdWVyeUhpc3REZXRhaWxzLm9uQ29w eVRvRWRpdG9yQ2xpY2sodGhpcy5vbkNvcHlUb0VkaXRvckhhbmRsZXIpOwotICAgICAgdGhpcy5x dWVyeUhpc3REZXRhaWxzLnJlbmRlcigpOwotCi0gICAgICB0aGlzLnF1ZXJ5SGlzdEVudHJpZXMg PSBuZXcgUXVlcnlIaXN0b3J5RW50cmllcygkaGlzdEVudHJpZXMpOwotICAgICAgdGhpcy5xdWVy eUhpc3RFbnRyaWVzLm9uU2VsZWN0ZWRDaGFuZ2UoCi0gICAgICAgIChlbnRyeSA9PiB7Ci0gICAg ICAgICAgdGhpcy5xdWVyeUhpc3REZXRhaWxzLnNldEVudHJ5KGVudHJ5KTsKLSAgICAgICAgfSku YmluZCh0aGlzKQotICAgICAgKTsKLSAgICAgIHRoaXMucXVlcnlIaXN0RW50cmllcy5yZW5kZXIo KTsKLQotICAgICAgdGhpcy5oaXN0Q29sbGVjdGlvbi5oaXN0b3J5TGlzdC5tYXAoKGVudHJ5KT0+ ewotICAgICAgICB0aGlzLnF1ZXJ5SGlzdEVudHJpZXMuYWRkRW50cnkoZW50cnkpOwotICAgICAg fSk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3Fs ZWRpdG9yL2hpc3RvcnkvcXVlcnlfaGlzdG9yeV9kZXRhaWxzLmpzIGIvd2ViL3BnYWRtaW4vc3Rh dGljL2pzL3NxbGVkaXRvci9oaXN0b3J5L3F1ZXJ5X2hpc3RvcnlfZGV0YWlscy5qcwpkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc3YjcxMDk3Li4wMDAwMDAwMDAKLS0tIGEvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9oaXN0b3J5L3F1ZXJ5X2hpc3RvcnlfZGV0YWlscy5q cworKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi1pbXBvcnQgQ29kZU1pcnJvciBmcm9t ICdidW5kbGVkX2NvZGVtaXJyb3InOwotaW1wb3J0IGNsaXBib2FyZCBmcm9tICdzb3VyY2VzL3Nl bGVjdGlvbi9jbGlwYm9hcmQnOwotaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0 JzsKLWltcG9ydCAkIGZyb20gJ2pxdWVyeSc7Ci1pbXBvcnQgXyBmcm9tICd1bmRlcnNjb3JlJzsK LQotZXhwb3J0IGRlZmF1bHQgY2xhc3MgUXVlcnlIaXN0b3J5RGV0YWlscyB7Ci0gIGNvbnN0cnVj dG9yKHBhcmVudE5vZGUpIHsKLSAgICB0aGlzLnBhcmVudE5vZGUgPSBwYXJlbnROb2RlOwotICAg IHRoaXMuaXNDb3BpZWQgPSBmYWxzZTsKLSAgICB0aGlzLnRpbWVvdXQgPSBudWxsOwotICAgIHRo aXMuaXNSZW5kZXJlZCA9IGZhbHNlOwotICAgIHRoaXMuc3FsRm9udFNpemUgPSBudWxsOwotICAg IHRoaXMub25Db3B5VG9FZGl0b3JIYW5kbGVyID0gKCk9PnsvKlRoaXMgaXMgaW50ZW50aW9uYWwg KFNvbmFyUXViZSkqL307Ci0KLSAgICB0aGlzLmVkaXRvclByZWYgPSB7Ci0gICAgICAnc3FsX2Zv bnRfc2l6ZSc6ICcxZW0nLAotICAgICAgJ2NvcHlfdG9fZWRpdG9yJzogdHJ1ZSwKLSAgICB9Owot ICB9Ci0KLSAgc2V0RW50cnkoZW50cnkpIHsKLSAgICB0aGlzLmVudHJ5ID0gZW50cnk7Ci0gICAg aWYgKHRoaXMuaXNSZW5kZXJlZCkgewotICAgICAgdGhpcy5zZWxlY3RpdmVSZW5kZXIoKTsKLSAg ICB9IGVsc2UgewotICAgICAgdGhpcy5yZW5kZXIoKTsKLSAgICB9Ci0gIH0KLQotICBzZXRFZGl0 b3JQcmVmKGVkaXRvclByZWY9e30pIHsKLSAgICB0aGlzLmVkaXRvclByZWYgPSB7Ci0gICAgICAu Li50aGlzLmVkaXRvclByZWYsCi0gICAgICAuLi5lZGl0b3JQcmVmLAotICAgIH07Ci0KLSAgICBp Zih0aGlzLnF1ZXJ5X2NvZGVtaXJyb3IgJiYgIV8uaXNVbmRlZmluZWQoZWRpdG9yUHJlZi5zcWxf Zm9udF9zaXplKSkgewotICAgICAgJCh0aGlzLnF1ZXJ5X2NvZGVtaXJyb3IuZ2V0V3JhcHBlckVs ZW1lbnQoKSkuY3NzKAotICAgICAgICAnZm9udC1zaXplJyx0aGlzLmVkaXRvclByZWYuc3FsX2Zv bnRfc2l6ZQotICAgICAgKTsKLQotICAgICAgdGhpcy5xdWVyeV9jb2RlbWlycm9yLnJlZnJlc2go KTsKLSAgICB9Ci0KLSAgICBpZih0aGlzLiRjb3B5VG9FZGl0b3IgJiYgIV8uaXNVbmRlZmluZWQo ZWRpdG9yUHJlZi5jb3B5X3RvX2VkaXRvcikpIHsKLSAgICAgIGlmKGVkaXRvclByZWYuY29weV90 b19lZGl0b3IpIHsKLSAgICAgICAgdGhpcy4kY29weVRvRWRpdG9yLnJlbW92ZUNsYXNzKCdkLW5v bmUnKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMuJGNvcHlUb0VkaXRvci5hZGRDbGFz cygnZC1ub25lJyk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcGFyc2VFcnJvck1lc3NhZ2Uo bWVzc2FnZSkgewotICAgIHJldHVybiBtZXNzYWdlLm1hdGNoKC9FUlJPUjpccyooW15cblxyXSop L2kpCi0gICAgICA/IG1lc3NhZ2UubWF0Y2goL0VSUk9SOlxzKihbXlxuXHJdKikvaSlbMV0KLSAg ICAgIDogbWVzc2FnZTsKLSAgfQotCi0gIGZvcm1hdERhdGUoZGF0ZSkgewotICAgIHJldHVybiBk YXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpICsgJyAnICsgZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmco KTsKLSAgfQotCi0gIGNvcHlBbGxIYW5kbGVyKCkgewotICAgIGNsaXBib2FyZC5jb3B5VGV4dFRv Q2xpcGJvYXJkKHRoaXMuZW50cnkucXVlcnkpOwotCi0gICAgdGhpcy5jbGVhclByZXZpb3VzVGlt ZW91dCgpOwotCi0gICAgdGhpcy51cGRhdGVDb3B5QnV0dG9uKHRydWUpOwotCi0gICAgdGhpcy50 aW1lb3V0ID0gc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICB0aGlzLnVwZGF0ZUNvcHlCdXR0b24o ZmFsc2UpOwotICAgIH0sIDE1MDApOwotICB9Ci0KLSAgb25Db3B5VG9FZGl0b3JDbGljayhvbkNv cHlUb0VkaXRvckhhbmRsZXIpIHsKLSAgICB0aGlzLm9uQ29weVRvRWRpdG9ySGFuZGxlciA9IG9u Q29weVRvRWRpdG9ySGFuZGxlcjsKLSAgfQotCi0gIGNsZWFyUHJldmlvdXNUaW1lb3V0KCkgewot ICAgIGlmICh0aGlzLnRpbWVvdXQpIHsKLSAgICAgIGNsZWFyVGltZW91dCh0aGlzLnRpbWVvdXQp OwotICAgICAgdGhpcy50aW1lb3V0ID0gbnVsbDsKLSAgICB9Ci0gIH0KLQotICB1cGRhdGVDb3B5 QnV0dG9uKGNvcGllZCkgewotICAgIGlmIChjb3BpZWQpIHsKLSAgICAgIHRoaXMuJGNvcHlCdG4u YWRkQ2xhc3MoJ3dhcy1jb3BpZWQnKS5yZW1vdmVDbGFzcygnY29weS1hbGwnKTsKLSAgICAgIHRo aXMuJGNvcHlCdG4udGV4dChnZXR0ZXh0KCdDb3BpZWQhJykpOwotICAgIH0gZWxzZSB7Ci0gICAg ICB0aGlzLiRjb3B5QnRuLmFkZENsYXNzKCdjb3B5LWFsbCcpLnJlbW92ZUNsYXNzKCd3YXMtY29w aWVkJyk7Ci0gICAgICB0aGlzLiRjb3B5QnRuLnRleHQoZ2V0dGV4dCgnQ29weScpKTsKLSAgICB9 Ci0gIH0KLQotICB1cGRhdGVRdWVyeU1ldGFEYXRhKCkgewotICAgIGxldCBpdGVtVGVtcGxhdGUg PSAoZGF0YSwgZGVzY3JpcHRpb24pID0+IHsKLSAgICAgIGlmKGRhdGEpCi0gICAgICAgIHJldHVy biBgPGRpdiBjbGFzcz0naXRlbSc+Ci0gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ndmFs dWUnPiR7ZGF0YX08L3NwYW4+Ci0gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0nZGVzY3Jp cHRpb24nPiR7ZGVzY3JpcHRpb259PC9zcGFuPgotICAgICAgICAgICAgICA8L2Rpdj5gOwotICAg ICAgZWxzZQotICAgICAgICByZXR1cm4gJyc7Ci0gICAgfTsKLQotICAgIHRoaXMuJG1ldGFEYXRh LmVtcHR5KCkuYXBwZW5kKAotICAgICAgJzxkaXYgY2xhc3M9Im1ldGFkYXRhIj4nICsKLSAgICAg IGl0ZW1UZW1wbGF0ZSh0aGlzLmZvcm1hdERhdGUodGhpcy5lbnRyeS5zdGFydF90aW1lKSwgZ2V0 dGV4dCgnRGF0ZScpKSArCi0gICAgICBpdGVtVGVtcGxhdGUoCi0gICAgICAgIHRoaXMuZW50cnku cm93X2FmZmVjdGVkLnRvTG9jYWxlU3RyaW5nKCksCi0gICAgICAgIGdldHRleHQoJ1Jvd3MgQWZm ZWN0ZWQnKQotICAgICAgKSArCi0gICAgICBpdGVtVGVtcGxhdGUodGhpcy5lbnRyeS50b3RhbF90 aW1lLCBnZXR0ZXh0KCdEdXJhdGlvbicpKSArCi0gICAgICAnPC9kaXY+JwotICAgICk7Ci0gIH0K LQotICB1cGRhdGVNZXNzYWdlQ29udGVudCgpIHsKLSAgICB0aGlzLiRtZXNzYWdlX2NvbnRlbnQK LSAgICAgIC5lbXB0eSgpCi0gICAgICAuYXBwZW5kKGA8cHJlIGNsYXNzPSdjb250ZW50LXZhbHVl Jz4ke18uZXNjYXBlKHRoaXMuZW50cnkubWVzc2FnZSl9PC9wcmU+YCk7Ci0gIH0KLQotICB1cGRh dGVFcnJvck1lc3NhZ2UoKSB7Ci0gICAgaWYgKCF0aGlzLmVudHJ5LnN0YXR1cykgewotICAgICAg dGhpcy4kZXJyTXNnQmxvY2sucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpOwotICAgICAgdGhpcy4kZXJy TXNnQmxvY2suZW1wdHkoKS5hcHBlbmQoCi0gICAgICAgIGA8ZGl2IGNsYXNzPSdoaXN0b3J5LWVy cm9yLXRleHQnPgotICAgICAgICAgICAgPHNwYW4+YCArIGdldHRleHQoJ0Vycm9yIE1lc3NhZ2Un KSArIGA8L3NwYW4+ICR7Xy5lc2NhcGUodGhpcy5wYXJzZUVycm9yTWVzc2FnZSh0aGlzLmVudHJ5 Lm1lc3NhZ2UpKX0KLSAgICAgICAgPC9kaXY+YAotICAgICAgKTsKLSAgICB9IGVsc2UgewotICAg ICAgdGhpcy4kZXJyTXNnQmxvY2suYWRkQ2xhc3MoJ2Qtbm9uZScpOwotICAgICAgdGhpcy4kZXJy TXNnQmxvY2suZW1wdHkoKTsKLSAgICB9Ci0gIH0KLQotICB1cGRhdGVJbmZvTWVzc2FnZSgpIHsK LSAgICBpZiAodGhpcy5lbnRyeS5pbmZvKSB7Ci0gICAgICB0aGlzLiRpbmZvTXNnQmxvY2sucmVt b3ZlQ2xhc3MoJ2Qtbm9uZScpOwotICAgICAgdGhpcy4kaW5mb01zZ0Jsb2NrLmVtcHR5KCkuYXBw ZW5kKAotICAgICAgICBgPGRpdiBjbGFzcz0naGlzdG9yeS1pbmZvLXRleHQnPgotICAgICAgICAg ICAgJHt0aGlzLmVudHJ5LmluZm99Ci0gICAgICAgIDwvZGl2PmAKLSAgICAgICk7Ci0gICAgfSBl bHNlIHsKLSAgICAgIHRoaXMuJGluZm9Nc2dCbG9jay5hZGRDbGFzcygnZC1ub25lJyk7Ci0gICAg ICB0aGlzLiRpbmZvTXNnQmxvY2suZW1wdHkoKTsKLSAgICB9Ci0gIH0KLQotICBzZWxlY3RpdmVS ZW5kZXIoKSB7Ci0gICAgdGhpcy51cGRhdGVFcnJvck1lc3NhZ2UoKTsKLSAgICB0aGlzLnVwZGF0 ZUluZm9NZXNzYWdlKCk7Ci0gICAgdGhpcy51cGRhdGVDb3B5QnV0dG9uKGZhbHNlKTsKLSAgICB0 aGlzLnVwZGF0ZVF1ZXJ5TWV0YURhdGEoKTsKLSAgICB0aGlzLnF1ZXJ5X2NvZGVtaXJyb3Iuc2V0 VmFsdWUodGhpcy5lbnRyeS5xdWVyeSk7Ci0gICAgdGhpcy51cGRhdGVNZXNzYWdlQ29udGVudCgp OwotICB9Ci0KLSAgcmVuZGVyKCkgewotICAgIGlmICh0aGlzLmVudHJ5KSB7Ci0gICAgICB0aGlz LnBhcmVudE5vZGUuZW1wdHkoKS5hcHBlbmQoCi0gICAgICAgIGA8ZGl2IGlkPSdxdWVyeV9kZXRh aWwnIGNsYXNzPSdxdWVyeS1kZXRhaWwnPgotICAgICAgICAgICAgPGRpdiBjbGFzcz0nZXJyb3It bWVzc2FnZS1ibG9jayc+PC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSdpbmZvLW1lc3Nh Z2UtYmxvY2snPjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWV0YWRhdGEtYmxvY2sn PjwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0ncXVlcnktc3RhdGVtZW50LWJsb2NrJz4K LSAgICAgICAgICAgICAgPGRpdiBpZD0naGlzdG9yeS1kZXRhaWwtcXVlcnknPgotICAgICAgICAg ICAgICAgIDxidXR0b24gY2xhc3M9J2J0bi1jb3B5JyB0YWJpbmRleD0wIGFjY2Vzc2tleT0neSc+ PC9idXR0b24+Ci0gICAgICAgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0nYnRuLWNvcHktZWRpdG9y IGNvcHktdG8tZWRpdG9yJyB0YWJpbmRleD0wIGFjY2Vzc2tleT0neSc+YCArIGdldHRleHQoJ0Nv cHkgdG8gUXVlcnkgRWRpdG9yJykgKyBgPC9idXR0b24+Ci0gICAgICAgICAgICAgICAgPGRpdj48 L2Rpdj4KLSAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAg ICAgIDxkaXY+Ci0gICAgICAgICAgICAgIDxociBjbGFzcz0nYmxvY2stZGl2aWRlcicvPgotICAg ICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSdtZXNzYWdlLWJsb2NrJz4K LSAgICAgICAgICAgICAgPGRpdiBjbGFzcz0nbWVzc2FnZSc+Ci0gICAgICAgICAgICAgICAgPGRp diBjbGFzcz0nbWVzc2FnZS1oZWFkZXInPmAgKyBnZXR0ZXh0KCdNZXNzYWdlcycpICsgYDwvZGl2 PgotICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9J2NvbnRlbnQnPjwvZGl2PgotICAgICAgICAg ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj5gCi0gICAgICAp OwotCi0gICAgICB0aGlzLiRlcnJNc2dCbG9jayA9IHRoaXMucGFyZW50Tm9kZS5maW5kKCcuZXJy b3ItbWVzc2FnZS1ibG9jaycpOwotICAgICAgdGhpcy4kaW5mb01zZ0Jsb2NrID0gdGhpcy5wYXJl bnROb2RlLmZpbmQoJy5pbmZvLW1lc3NhZ2UtYmxvY2snKTsKLSAgICAgIHRoaXMuJGNvcHlCdG4g PSB0aGlzLnBhcmVudE5vZGUuZmluZCgnI2hpc3RvcnktZGV0YWlsLXF1ZXJ5IC5idG4tY29weScp OwotICAgICAgdGhpcy4kY29weUJ0bi5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgdGhpcy5jb3B5 QWxsSGFuZGxlci5iaW5kKHRoaXMpKTsKLSAgICAgIHRoaXMuJGNvcHlUb0VkaXRvciA9IHRoaXMu cGFyZW50Tm9kZS5maW5kKCcjaGlzdG9yeS1kZXRhaWwtcXVlcnkgLmJ0bi1jb3B5LWVkaXRvcicp OwotICAgICAgdGhpcy4kY29weVRvRWRpdG9yLm9mZignY2xpY2snKS5vbignY2xpY2snLCAoKSA9 PiB7Ci0gICAgICAgIHRoaXMub25Db3B5VG9FZGl0b3JIYW5kbGVyKHRoaXMuZW50cnkucXVlcnkp OwotICAgICAgfSk7Ci0gICAgICB0aGlzLiRjb3B5VG9FZGl0b3IuYWRkQ2xhc3ModGhpcy5lZGl0 b3JQcmVmLmNvcHlfdG9fZWRpdG9yPycnOidkLW5vbmUnKTsKLSAgICAgIHRoaXMuJG1ldGFEYXRh ID0gdGhpcy5wYXJlbnROb2RlLmZpbmQoJy5tZXRhZGF0YS1ibG9jaycpOwotICAgICAgdGhpcy5x dWVyeV9jb2RlbWlycm9yID0gQ29kZU1pcnJvcigKLSAgICAgICAgdGhpcy5wYXJlbnROb2RlLmZp bmQoJyNoaXN0b3J5LWRldGFpbC1xdWVyeSBkaXYnKVswXSwKLSAgICAgICAgewotICAgICAgICAg IHRhYmluZGV4OiAtMSwKLSAgICAgICAgICBtb2RlOiAndGV4dC94LXBnc3FsJywKLSAgICAgICAg ICByZWFkT25seTogdHJ1ZSwKLSAgICAgICAgfQotICAgICAgKTsKLSAgICAgICQodGhpcy5xdWVy eV9jb2RlbWlycm9yLmdldFdyYXBwZXJFbGVtZW50KCkpLmNzcygKLSAgICAgICAgJ2ZvbnQtc2l6 ZScsdGhpcy5lZGl0b3JQcmVmLnNxbF9mb250X3NpemUKLSAgICAgICk7Ci0gICAgICB0aGlzLiRt ZXNzYWdlX2NvbnRlbnQgPSB0aGlzLnBhcmVudE5vZGUuZmluZCgnLm1lc3NhZ2UtYmxvY2sgLmNv bnRlbnQnKTsKLQotICAgICAgdGhpcy5pc1JlbmRlcmVkID0gdHJ1ZTsKLSAgICAgIHRoaXMuc2Vs ZWN0aXZlUmVuZGVyKCk7Ci0gICAgfQotICB9Ci19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9z dGF0aWMvanMvc3FsZWRpdG9yL2hpc3RvcnkvcXVlcnlfaGlzdG9yeV9lbnRyaWVzLmpzIGIvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9oaXN0b3J5L3F1ZXJ5X2hpc3RvcnlfZW50cmll cy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFkNWNjMzEwLi4wMDAwMDAwMDAK LS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9oaXN0b3J5L3F1ZXJ5X2hpc3Rv cnlfZW50cmllcy5qcworKysgL2Rldi9udWxsCkBAIC0xLDI5NiArMCwwIEBACi1pbXBvcnQgbW9t ZW50IGZyb20gJ21vbWVudCc7Ci1pbXBvcnQgJCBmcm9tICdqcXVlcnknOwotaW1wb3J0IF8gZnJv bSAndW5kZXJzY29yZSc7Ci1pbXBvcnQgJ2Jvb3RzdHJhcC50b2dnbGUnOwotaW1wb3J0IGdldHRl eHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKLQotY29uc3QgQVJST1dVUCA9IDM4OwotY29uc3Qg QVJST1dET1dOID0gNDA7Ci0KLWV4cG9ydCBjbGFzcyBRdWVyeUhpc3RvcnlFbnRyeURhdGVHcm91 cCB7Ci0gIGNvbnN0cnVjdG9yKGRhdGUsIGdyb3VwS2V5KSB7Ci0gICAgdGhpcy5kYXRlID0gZGF0 ZTsKLSAgICB0aGlzLmZvcm1hdFN0cmluZyA9ICdNTU0gREQgWVlZWSc7Ci0gICAgdGhpcy5ncm91 cEtleSA9IGdyb3VwS2V5OwotICB9Ci0KLSAgZ2V0RGF0ZVByZWZpeCgpIHsKLSAgICBsZXQgcHJl Zml4ID0gJyc7Ci0gICAgaWYgKHRoaXMuaXNEYXlzQmVmb3JlKDApKSB7Ci0gICAgICBwcmVmaXgg PSAnVG9kYXkgLSAnOwotICAgIH0gZWxzZSBpZiAodGhpcy5pc0RheXNCZWZvcmUoMSkpIHsKLSAg ICAgIHByZWZpeCA9ICdZZXN0ZXJkYXkgLSAnOwotICAgIH0KLSAgICByZXR1cm4gcHJlZml4Owot ICB9Ci0KLSAgZ2V0RGF0ZUZvcm1hdHRlZChkYXRlKSB7Ci0gICAgcmV0dXJuIGRhdGUudG9Mb2Nh bGVEYXRlU3RyaW5nKCk7Ci0gIH0KLQotICBpc0RheXNCZWZvcmUoYmVmb3JlKSB7Ci0gICAgcmV0 dXJuICgKLSAgICAgIHRoaXMuZ2V0RGF0ZUZvcm1hdHRlZCh0aGlzLmRhdGUpID09PQotICAgICAg dGhpcy5nZXREYXRlRm9ybWF0dGVkKG1vbWVudCgpLnN1YnRyYWN0KGJlZm9yZSwgJ2RheXMnKS50 b0RhdGUoKSkKLSAgICApOwotICB9Ci0KLSAgcmVuZGVyKCkgewotICAgIHJldHVybiAkKGA8ZGl2 IGNsYXNzPSdxdWVyeS1ncm91cCcgZGF0YS1rZXk9JyR7dGhpcy5ncm91cEtleX0nPgotICAgICAg ICAgICAgPGRpdiBjbGFzcz0nZGF0ZS1sYWJlbCc+JHt0aGlzLmdldERhdGVQcmVmaXgoKX0ke3Ro aXMuZ2V0RGF0ZUZvcm1hdHRlZCh0aGlzLmRhdGUpfTwvZGl2PgotICAgICAgICAgICAgPHVsIGNs YXNzPSdxdWVyeS1lbnRyaWVzJz48L3VsPgotICAgICAgICA8L2Rpdj5gKTsKLSAgfQotfQotCi1l eHBvcnQgY2xhc3MgUXVlcnlIaXN0b3J5SXRlbSB7Ci0gIGNvbnN0cnVjdG9yKGVudHJ5KSB7Ci0g ICAgdGhpcy5lbnRyeSA9IGVudHJ5OwotICAgIHRoaXMuJGVsID0gbnVsbDsKLSAgICB0aGlzLm9u Q2xpY2tIYW5kbGVyID0gbnVsbDsKLSAgfQotCi0gIG9uQ2xpY2sob25DbGlja0hhbmRsZXIpIHsK LSAgICB0aGlzLm9uQ2xpY2tIYW5kbGVyID0gb25DbGlja0hhbmRsZXI7Ci0gICAgaWYgKHRoaXMu JGVsKSB7Ci0gICAgICB0aGlzLiRlbC5vZmYoJ2NsaWNrJykub24oJ2NsaWNrJywgZSA9PiB7Ci0g ICAgICAgIHRoaXMub25DbGlja0hhbmRsZXIoJChlLmN1cnJlbnRUYXJnZXQpKTsKLSAgICAgIH0p OwotICAgIH0KLSAgfQotCi0gIGZvcm1hdERhdGUoZGF0ZSkgewotICAgIHJldHVybiBtb21lbnQo ZGF0ZSkuZm9ybWF0KCdISDptbTpzcycpOwotICB9Ci0KLSAgZGF0YUtleSgpIHsKLSAgICByZXR1 cm4gdGhpcy5mb3JtYXREYXRlKHRoaXMuZW50cnkuc3RhcnRfdGltZSk7Ci0gIH0KLQotICByZW5k ZXIoaXNfcGdhZG1pbl9xdWVyaWVzX3Nob3duKSB7Ci0gICAgdGhpcy4kZWwgPSAkKAotICAgICAg YDxsaSBjbGFzcz0nbGlzdC1pdGVtJyB0YWJpbmRleD0nMCcgZGF0YS1rZXk9JyR7dGhpcy5kYXRh S2V5KCl9Jz4KLSAgICAgICAgICA8ZGl2IGNsYXNzPSdlbnRyeSAke3RoaXMuZW50cnkuc3RhdHVz ID8gJycgOiAnZXJyb3InfSc+Ci0gICAgICAgICAgICAgIDxkaXYgY2xhc3M9J3F1ZXJ5Jz4KLSAg ICAgICAgICAgICAgICAgIDxzcGFuIGlkPSJxdWVyeV9zb3VyY2VfaWNvbiIgY2xhc3M9InF1ZXJ5 LWhpc3RvcnktaWNvbiBzcWwtaWNvbi1sZyI+PC9zcGFuPgotICAgICAgICAgICAgICAgICAgJHtf LmVzY2FwZSh0aGlzLmVudHJ5LnF1ZXJ5KX0KLSAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAg ICAgICAgIDxkaXYgY2xhc3M9J290aGVyLWluZm8nPgotICAgICAgICAgICAgICA8ZGl2IGNsYXNz PSd0aW1lc3RhbXAnPiR7dGhpcy5mb3JtYXREYXRlKHRoaXMuZW50cnkuc3RhcnRfdGltZSl9PC9k aXY+Ci0gICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgIDwvZGl2PgotICAgICAgPC9saT5g Ci0gICAgKQotICAgICAgLmRhdGEoJ2VudHJ5ZGF0YScsIHRoaXMuZW50cnkpCi0gICAgICAub24o J2NsaWNrJywgZSA9PiB7Ci0gICAgICAgIHRoaXMub25DbGlja0hhbmRsZXIoJChlLmN1cnJlbnRU YXJnZXQpKTsKLSAgICAgIH0pOwotCi0gICAgbGV0IHF1ZXJ5X3NvdXJjZSA9IHRoaXMuZW50cnku cXVlcnlfc291cmNlOwotICAgIGlmKHF1ZXJ5X3NvdXJjZSkKLSAgICAgIHRoaXMuJGVsLmZpbmQo JyNxdWVyeV9zb3VyY2VfaWNvbicpCi0gICAgICAgIC5hZGRDbGFzcyhxdWVyeV9zb3VyY2UuSUNP Tl9DU1NfQ0xBU1MpCi0gICAgICAgIC5hdHRyKCdyb2xlJywgJ2ltZycpOwotCi0gICAgaWYodGhp cy5lbnRyeS5pc19wZ2FkbWluX3F1ZXJ5KSB7Ci0gICAgICB0aGlzLiRlbC5hZGRDbGFzcygncGdh ZG1pbi1xdWVyeS1oaXN0b3J5LWVudHJ5Jyk7Ci0gICAgICBpZighaXNfcGdhZG1pbl9xdWVyaWVz X3Nob3duKQotICAgICAgICB0aGlzLiRlbC5hZGRDbGFzcygnZC1ub25lJyk7Ci0gICAgfQotICB9 Ci19Ci0KLWV4cG9ydCBjbGFzcyBRdWVyeUhpc3RvcnlFbnRyaWVzIHsKLSAgY29uc3RydWN0b3Io cGFyZW50Tm9kZSkgewotICAgIHRoaXMucGFyZW50Tm9kZSA9IHBhcmVudE5vZGU7Ci0gICAgdGhp cy4kc2VsZWN0ZWRJdGVtID0gbnVsbDsKLSAgICB0aGlzLmdyb3VwS2V5Rm9ybWF0ID0gJ1lZWVkg TU0gREQnOwotCi0gICAgdGhpcy4kZWwgPSBudWxsOwotICAgIHRoaXMuaXNfcGdhZG1pbl9xdWVy aWVzX3Nob3duID0gbnVsbDsKLSAgfQotCi0gIG9uU2VsZWN0ZWRDaGFuZ2Uob25TZWxlY3RlZENo YW5nZUhhbmRsZXIpIHsKLSAgICB0aGlzLm9uU2VsZWN0ZWRDaGFuZ2VIYW5kbGVyID0gb25TZWxl Y3RlZENoYW5nZUhhbmRsZXI7Ci0gIH0KLQotICBmb2N1cygpIHsKLSAgICBpZiAoIXRoaXMuJHNl bGVjdGVkSXRlbSkgewotICAgICAgdGhpcy5zZXRTZWxlY3RlZExpc3RJdGVtKHRoaXMuJGVudHJp ZXNFbC5maW5kKCcubGlzdC1pdGVtJykuZmlyc3QoKSk7Ci0gICAgfQotICAgIHRoaXMuJHNlbGVj dGVkSXRlbS50cmlnZ2VyKCdjbGljaycpOwotICAgIHRoaXMuJGVudHJpZXNFbC5mb2N1cygpOwot ICB9Ci0KLSAgaXNBcnJvd0Rvd24oZXZlbnQpIHsKLSAgICByZXR1cm4gKGV2ZW50LmtleUNvZGUg fHwgZXZlbnQud2hpY2gpID09PSBBUlJPV0RPV047Ci0gIH0KLQotICBpc0Fycm93VXAoZXZlbnQp IHsKLSAgICByZXR1cm4gKGV2ZW50LmtleUNvZGUgfHwgZXZlbnQud2hpY2gpID09PSBBUlJPV1VQ OwotICB9Ci0KLSAgbmF2aWdhdGVVcEFuZERvd24oZXZlbnQpIHsKLSAgICBsZXQgYXJyb3dLZXlz ID0gW0FSUk9XVVAsIEFSUk9XRE9XTl07Ci0gICAgbGV0IGtleSA9IGV2ZW50LmtleUNvZGUgfHwg ZXZlbnQud2hpY2g7Ci0gICAgaWYgKGFycm93S2V5cy5pbmRleE9mKGtleSkgPiAtMSkgewotICAg ICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKLSAgICAgIHRoaXMub25LZXlEb3duSGFuZGxlcihl dmVudCk7Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotICB9 Ci0KLSAgb25LZXlEb3duSGFuZGxlcihldmVudCkgewotICAgIGlmICh0aGlzLmlzQXJyb3dEb3du KGV2ZW50KSkgewotICAgICAgaWYgKHRoaXMuJHNlbGVjdGVkSXRlbS5uZXh0KCkubGVuZ3RoID4g MCkgewotICAgICAgICB0aGlzLnNldFNlbGVjdGVkTGlzdEl0ZW0odGhpcy4kc2VsZWN0ZWRJdGVt Lm5leHQoKSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAvKiBpZiBsYXN0LCBqdW1wIHRvIG5l eHQgZ3JvdXAgKi8KLSAgICAgICAgbGV0ICRncm91cCA9IHRoaXMuJHNlbGVjdGVkSXRlbS5jbG9z ZXN0KCcucXVlcnktZ3JvdXAnKTsKLSAgICAgICAgaWYgKCRncm91cC5uZXh0KCkubGVuZ3RoID4g MCkgewotICAgICAgICAgIHRoaXMuc2V0U2VsZWN0ZWRMaXN0SXRlbSgKLSAgICAgICAgICAgICRn cm91cC5uZXh0KCkuZmluZCgnLmxpc3QtaXRlbScpLmZpcnN0KCkKLSAgICAgICAgICApOwotICAg ICAgICB9Ci0gICAgICB9Ci0gICAgfSBlbHNlIGlmICh0aGlzLmlzQXJyb3dVcChldmVudCkpIHsK LSAgICAgIGlmICh0aGlzLiRzZWxlY3RlZEl0ZW0ucHJldigpLmxlbmd0aCA+IDApIHsKLSAgICAg ICAgdGhpcy5zZXRTZWxlY3RlZExpc3RJdGVtKHRoaXMuJHNlbGVjdGVkSXRlbS5wcmV2KCkpOwot ICAgICAgfSBlbHNlIHsKLSAgICAgICAgLyogaWYgZmlyc3QsIGp1bXAgdG8gcHJldiBncm91cCAq LwotICAgICAgICBsZXQgJGdyb3VwID0gdGhpcy4kc2VsZWN0ZWRJdGVtLmNsb3Nlc3QoJy5xdWVy eS1ncm91cCcpOwotICAgICAgICBpZiAoJGdyb3VwLnByZXYoKS5sZW5ndGggPiAwKSB7Ci0gICAg ICAgICAgdGhpcy5zZXRTZWxlY3RlZExpc3RJdGVtKAotICAgICAgICAgICAgJGdyb3VwLnByZXYo KS5maW5kKCcubGlzdC1pdGVtJykubGFzdCgpCi0gICAgICAgICAgKTsKLSAgICAgICAgfQotICAg ICAgfQotICAgIH0KLSAgfQotCi0gIG9uU2VsZWN0TGlzdEl0ZW0oZXZlbnQpIHsKLSAgICB0aGlz LnNldFNlbGVjdGVkTGlzdEl0ZW0oJChldmVudC5jdXJyZW50VGFyZ2V0KSk7Ci0gIH0KLQotICBk YXRlQXNHcm91cEtleShkYXRlKSB7Ci0gICAgcmV0dXJuIG1vbWVudChkYXRlKS5mb3JtYXQodGhp cy5ncm91cEtleUZvcm1hdCk7Ci0gIH0KLQotICBzZXRTZWxlY3RlZExpc3RJdGVtKCRsaXN0SXRl bSkgewotICAgIGlmICh0aGlzLiRzZWxlY3RlZEl0ZW0pIHsKLSAgICAgIHRoaXMuJHNlbGVjdGVk SXRlbS5yZW1vdmVDbGFzcygnc2VsZWN0ZWQnKTsKLSAgICB9Ci0gICAgJGxpc3RJdGVtLmFkZENs YXNzKCdzZWxlY3RlZCcpOwotICAgIHRoaXMuJHNlbGVjdGVkSXRlbSA9ICRsaXN0SXRlbTsKLQot ICAgIHRoaXMuJHNlbGVjdGVkSXRlbVswXS5zY3JvbGxJbnRvVmlldyh7YmxvY2s6ICdjZW50ZXIn fSk7Ci0KLSAgICBpZiAodGhpcy5vblNlbGVjdGVkQ2hhbmdlSGFuZGxlcikgewotICAgICAgdGhp cy5vblNlbGVjdGVkQ2hhbmdlSGFuZGxlcih0aGlzLiRzZWxlY3RlZEl0ZW0uZGF0YSgnZW50cnlk YXRhJykpOwotICAgIH0KLSAgfQotCi0gIGFkZEVudHJ5KGVudHJ5KSB7Ci0gICAgLyogQWRkIHRo ZSBlbnRyeSBpbiByZXNwZWN0aXZlIGRhdGUgZ3JvdXAgaW4gZGVzY2VuZGluZyBzb3J0ZWQgb3Jk ZXIuICovCi0gICAgbGV0IGdyb3VwcyA9IHRoaXMuJGVudHJpZXNFbC5maW5kKCcucXVlcnktZ3Jv dXAnKTsKLSAgICBsZXQgZ3JvdXBzS2V5cyA9ICQubWFwKGdyb3VwcywgZ3JvdXAgPT4gewotICAg ICAgcmV0dXJuICQoZ3JvdXApLmF0dHIoJ2RhdGEta2V5Jyk7Ci0gICAgfSk7Ci0gICAgbGV0IGVu dHJ5R3JvdXBLZXkgPSB0aGlzLmRhdGVBc0dyb3VwS2V5KGVudHJ5LnN0YXJ0X3RpbWUpOwotICAg IGxldCBncm91cElkeCA9IF8uaW5kZXhPZihncm91cHNLZXlzLCBlbnRyeUdyb3VwS2V5KTsKLQot ICAgIGxldCAkZ3JvdXBFbCA9IG51bGw7Ci0gICAgLyogaWYgbm8gZ3JvdXBzIHByZXNlbnQgKi8K LSAgICBpZiAoZ3JvdXBzLmxlbmd0aCA9PSAwKSB7Ci0gICAgICAkZ3JvdXBFbCA9IG5ldyBRdWVy eUhpc3RvcnlFbnRyeURhdGVHcm91cCgKLSAgICAgICAgZW50cnkuc3RhcnRfdGltZSwKLSAgICAg ICAgZW50cnlHcm91cEtleQotICAgICAgKS5yZW5kZXIoKTsKLSAgICAgIHRoaXMuJGVudHJpZXNF bC5wcmVwZW5kKCRncm91cEVsKTsKLSAgICB9IGVsc2UgaWYgKGdyb3VwSWR4IDwgMCAmJiBncm91 cHMubGVuZ3RoICE9IDApIHsKLSAgICAgIC8qIGlmIGdyb3VwcyBhcmUgcHJlc2VudCwgYnV0IHRo aXMgaXMgYSBuZXcgZ3JvdXAgKi8KLSAgICAgICRncm91cEVsID0gbmV3IFF1ZXJ5SGlzdG9yeUVu dHJ5RGF0ZUdyb3VwKAotICAgICAgICBlbnRyeS5zdGFydF90aW1lLAotICAgICAgICBlbnRyeUdy b3VwS2V5Ci0gICAgICApLnJlbmRlcigpOwotCi0gICAgICBsZXQgaT0wOwotICAgICAgd2hpbGUo aTxncm91cHNLZXlzLmxlbmd0aCl7Ci0gICAgICAgIGlmKGVudHJ5R3JvdXBLZXkgPiBncm91cHNL ZXlzW2ldKSB7Ci0gICAgICAgICAgJGdyb3VwRWwuaW5zZXJ0QmVmb3JlKGdyb3Vwc1tpXSk7Ci0g ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaSsrOwotICAgICAgfQotICAgICAg aWYoaSA9PSBncm91cHNLZXlzLmxlbmd0aCkgewotICAgICAgICB0aGlzLiRlbnRyaWVzRWwuYXBw ZW5kKCRncm91cEVsKTsKLSAgICAgIH0KLSAgICB9IGVsc2UgaWYgKGdyb3VwSWR4ID49IDApIHsK LSAgICAgIC8qIGlmIHRoZSBncm91cCBpcyBwcmVzZW50ICovCi0gICAgICAkZ3JvdXBFbCA9ICQo Z3JvdXBzW2dyb3VwSWR4XSk7Ci0gICAgfQotCi0gICAgbGV0IG5ld0l0ZW0gPSBuZXcgUXVlcnlI aXN0b3J5SXRlbShlbnRyeSk7Ci0gICAgbmV3SXRlbS5vbkNsaWNrKHRoaXMuc2V0U2VsZWN0ZWRM aXN0SXRlbS5iaW5kKHRoaXMpKTsKLSAgICBuZXdJdGVtLnJlbmRlcih0aGlzLmlzX3BnYWRtaW5f cXVlcmllc19zaG93bik7Ci0KLSAgICBpZiAoIV8uaXNVbmRlZmluZWQoJGdyb3VwRWwpKXsKLSAg ICAgIGxldCBlbnRyaWVzID0gJGdyb3VwRWwuZmluZCgnLnF1ZXJ5LWVudHJpZXMnKS5maW5kKCcu bGlzdC1pdGVtJyk7Ci0gICAgICBsZXQgaT0wOwotICAgICAgaWYoZW50cmllcy5sZW5ndGggPiAw KQotICAgICAgewotICAgICAgICB3aGlsZShpPGVudHJpZXMubGVuZ3RoKXsKLSAgICAgICAgICBp ZihuZXdJdGVtLiRlbC5hdHRyKCdkYXRhLWtleScpID4gJChlbnRyaWVzW2ldKS5hdHRyKCdkYXRh LWtleScpKSB7Ci0gICAgICAgICAgICAkKG5ld0l0ZW0uJGVsKS5pbnNlcnRCZWZvcmUoZW50cmll c1tpXSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9ZWxzZXsKLSAgICAgICAgICAg ICQobmV3SXRlbS4kZWwpLmluc2VydEFmdGVyKGVudHJpZXNbaV0pOwotICAgICAgICAgIH0KLSAg ICAgICAgICBpKys7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZXsKLSAgICAgICAgJGdyb3VwRWwu ZmluZCgnLnF1ZXJ5LWVudHJpZXMnKS5hcHBlbmQobmV3SXRlbS4kZWwpOwotICAgICAgfQotICAg IH0KLSAgICB0aGlzLnNldFNlbGVjdGVkTGlzdEl0ZW0obmV3SXRlbS4kZWwpOwotICB9Ci0KLSAg dG9nZ2xlR2VuZXJhdGVkUXVlcmllcygpIHsKLSAgICB0aGlzLiRlbC5maW5kKCcucGdhZG1pbi1x dWVyeS1oaXN0b3J5LWVudHJ5JykuZWFjaChmdW5jdGlvbigpIHsKLSAgICAgICQodGhpcykudG9n Z2xlQ2xhc3MoJ2Qtbm9uZScpOwotICAgIH0pOwotICAgIHRoaXMuaXNfcGdhZG1pbl9xdWVyaWVz X3Nob3duID0gIXRoaXMuaXNfcGdhZG1pbl9xdWVyaWVzX3Nob3duOwotICB9Ci0KLSAgcmVuZGVy KCkgewotICAgIGxldCBzZWxmID0gdGhpczsKLSAgICBzZWxmLiRlbCA9ICQoYAotICAgICAgICA8 ZGl2IGNsYXNzPSJ0b2dnbGUtYW5kLWhpc3RvcnktY29udGFpbmVyIj4KLSAgICAgICAgICAgIDxk aXYgY2xhc3M9InF1ZXJ5LWhpc3RvcnktdG9nZ2xlIj4KLSAgICAgICAgICAgICAgICA8bGFiZWwg Y2xhc3M9ImNvbnRyb2wtbGFiZWwiIGZvcj0iZ2VuZXJhdGVkLXF1ZXJpZXMtdG9nZ2xlIj4KLSAg ICAgICAgICAgICAgICAgICAgYCArIGdldHRleHQoJ1Nob3cgcXVlcmllcyBnZW5lcmF0ZWQgaW50 ZXJuYWxseSBieSBwZ0FkbWluPycpICsgYAotICAgICAgICAgICAgICAgIDwvbGFiZWw+Ci0gICAg ICAgICAgICAgICAgPGlucHV0IGlkPSJnZW5lcmF0ZWQtcXVlcmllcy10b2dnbGUiIHR5cGU9ImNo ZWNrYm94IgotICAgICAgICAgICAgICAgICAgY2xhc3M9InBnYWRtaW4tY29udHJvbHMiIGRhdGEt c3R5bGU9InF1aWNrIgotICAgICAgICAgICAgICAgICAgZGF0YS1zaXplPSJtaW5pIiBkYXRhLW9u PSJgICsgZ2V0dGV4dCgnWWVzJykgKyAnIiBkYXRhLW9mZj0iJyArIGdldHRleHQoJ05vJykgKyBg IgotICAgICAgICAgICAgICAgICAgZGF0YS1vbnN0eWxlPSJzdWNjZXNzIiBkYXRhLW9mZnN0eWxl PSJ0ZXJuYXJ5IiBjaGVja2VkPgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2 IGlkPSdxdWVyeV9saXN0JyBjbGFzcz0ncXVlcnktaGlzdG9yeScgdGFiaW5kZXg9JzAnPjwvZGl2 PgotICAgICAgICA8L2Rpdj4KLSAgICBgKTsKLQotICAgIHNlbGYuJGVudHJpZXNFbCA9IHNlbGYu JGVsLmZpbmQoJyNxdWVyeV9saXN0Jyk7Ci0gICAgc2VsZi4kZW50cmllc0VsLm9uKCdrZXlkb3du JywgdGhpcy5uYXZpZ2F0ZVVwQW5kRG93bi5iaW5kKHRoaXMpKTsKLQotICAgIHNlbGYuaXNfcGdh ZG1pbl9xdWVyaWVzX3Nob3duID0gdHJ1ZTsKLQotICAgIHNlbGYuJGVsLmZpbmQoJyNnZW5lcmF0 ZWQtcXVlcmllcy10b2dnbGUnKS5ib290c3RyYXBUb2dnbGUoKS5jaGFuZ2UoCi0gICAgICBmdW5j dGlvbigpIHsKLSAgICAgICAgc2VsZi50b2dnbGVHZW5lcmF0ZWRRdWVyaWVzKCk7Ci0gICAgICB9 Ci0gICAgKTsKLQotICAgIHNlbGYucGFyZW50Tm9kZS5lbXB0eSgpLmFwcGVuZChzZWxmLiRlbCk7 Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvaGlz dG9yeS9xdWVyeV9zb3VyY2VzLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9o aXN0b3J5L3F1ZXJ5X3NvdXJjZXMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEz ZTNhMzc5Mi4uMDAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3Iv aGlzdG9yeS9xdWVyeV9zb3VyY2VzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAot Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLS8vCi0vLyBDb3B5cmln aHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0vLyBUaGlz IHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKLS8vCi0v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLwotCi0vKiBUaGlzIGZpbGUgY29udGFpbnMgdGhlIHNvdXJjZSBvZiB0aGUgcXVlcmllcyBp biB0aGUgaGlzdG9yeSBhbmQgdGhlaXIKLSAgIHJlc3BlY3RpdmUgaWNvbnMgY3NzIGNsYXNzZXMg Ki8KLQotZXhwb3J0IGNvbnN0IFF1ZXJ5U291cmNlcyA9IHsKLSAgRVhFQ1VURTogewotICAgIElD T05fQ1NTX0NMQVNTOiAnZmEgZmEtcGxheScsCi0gIH0sCi0gIEVYUExBSU46IHsKLSAgICBJQ09O X0NTU19DTEFTUzogJ2ZhIGZhLWhhbmQtcG9pbnRlcicsCi0gIH0sCi0gIEVYUExBSU5fQU5BTFla RTogewotICAgIElDT05fQ1NTX0NMQVNTOiAnZmEgZmEtbGlzdC1hbHQnLAotICB9LAotICBDT01N SVQ6IHsKLSAgICBJQ09OX0NTU19DTEFTUzogJ3BnLWZvbnQtaWNvbiBpY29uLWNvbW1pdCcsCi0g IH0sCi0gIFJPTExCQUNLOiB7Ci0gICAgSUNPTl9DU1NfQ0xBU1M6ICdwZy1mb250LWljb24gaWNv bi1yb2xsYmFjaycsCi0gIH0sCi0gIFNBVkVfREFUQTogewotICAgIElDT05fQ1NTX0NMQVNTOiAn cGctZm9udC1pY29uIGljb24tc2F2ZV9kYXRhX2NoYW5nZXMnLAotICB9LAotICBWSUVXX0RBVEE6 IHsKLSAgICBJQ09OX0NTU19DTEFTUzogJ3BnLWZvbnQtaWNvbiBwaWNvbi12aWV3X2RhdGEnLAot ICB9LAotfTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvbWFj cm8uanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL21hY3JvLmpzCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjQ3MGM5ZDUuLjAwMDAwMDAwMAotLS0gYS93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL21hY3JvLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzQx ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KLS8vCi0vLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCi0vLwot Ly8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQotLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KLQotaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsK LWltcG9ydCB1cmxfZm9yIGZyb20gJ3NvdXJjZXMvdXJsX2Zvcic7Ci1pbXBvcnQgJCBmcm9tICdq cXVlcnknOwotaW1wb3J0IF8gZnJvbSAndW5kZXJzY29yZSc7Ci1pbXBvcnQgQWxlcnRpZnkgZnJv bSAncGdhZG1pbi5hbGVydGlmeWpzJzsKLWltcG9ydCBwZ0FkbWluIGZyb20gJ3NvdXJjZXMvcGdh ZG1pbic7Ci1pbXBvcnQgQmFja2Zvcm0gZnJvbSAncGdhZG1pbi5iYWNrZm9ybSc7Ci1pbXBvcnQg bWFjcm9Nb2RlbCBmcm9tICdzb3VyY2VzL3NxbGVkaXRvci9tYWNyb19tb2RlbCc7Ci1pbXBvcnQg YXhpb3MgZnJvbSAnYXhpb3MnOwotaW1wb3J0IE5vdGlmeSBmcm9tICcuLi8uLi8uLi9zdGF0aWMv anMvaGVscGVycy9Ob3RpZmllcic7Ci0KLWxldCBNYWNyb0RpYWxvZyA9IHsKLSAgJ2RpYWxvZyc6 IGZ1bmN0aW9uKGhhbmRsZXIpIHsKLSAgICBsZXQgdGl0bGUgPSBnZXR0ZXh0KCdNYW5hZ2UgTWFj cm9zJyk7Ci0KLSAgICAvLyBDaGVjayB0aGUgYWxlcnRpZnkgZGlhbG9nIGFscmVhZHkgbG9hZGVk IHRoZW4gZGVsZXRlIGl0IHRvIGNsZWFyCi0gICAgLy8gdGhlIGNhY2hlCi0gICAgaWYgKEFsZXJ0 aWZ5Lm1hY3JvRGlhbG9nKSB7Ci0gICAgICBkZWxldGUgQWxlcnRpZnkubWFjcm9EaWFsb2c7Ci0g ICAgfQotCi0gICAgLy8gQ3JlYXRlIERpYWxvZwotICAgIEFsZXJ0aWZ5LmRpYWxvZygnbWFjcm9E aWFsb2cnLCBmdW5jdGlvbiBmYWN0b3J5KCkgewotICAgICAgbGV0ICRjb250YWluZXIgPSAkKCc8 ZGl2IGNsYXNzPVwnbWFjcm9fZGlhbG9nXCc+PC9kaXY+Jyk7Ci0gICAgICByZXR1cm4gewotICAg ICAgICBtYWluOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICB0aGlzLnNldCgndGl0bGUnLCAnPGkg Y2xhc3M9ImZhIGZhLXNjcm9sbCBzcWwtaWNvbi1sZyIgYXJpYS1oaWRkZW49InRydWUiIHJvbGU9 ImltZyI+PC9pPiAnICsgZ2V0dGV4dCgnTWFuYWdlIE1hY3JvcycpKTsKLSAgICAgICAgfSwKLSAg ICAgICAgYnVpbGQ6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29udGVu dC5hcHBlbmRDaGlsZCgkY29udGFpbmVyLmdldCgwKSk7Ci0gICAgICAgICAgQWxlcnRpZnkucGdE aWFsb2dCdWlsZC5hcHBseSh0aGlzKTsKLSAgICAgICAgfSwKLSAgICAgICAgc2V0dXA6IGZ1bmN0 aW9uKCkgewotICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBidXR0b25zOiBbewotICAg ICAgICAgICAgICB0ZXh0OiAnJywKLSAgICAgICAgICAgICAga2V5OiAxMTIsCi0gICAgICAgICAg ICAgIGNsYXNzTmFtZTogJ2J0biBidG4tcHJpbWFyeS1pY29uIHB1bGwtbGVmdCBmYSBmYS1xdWVz dGlvbiBwZy1hbGVydGlmeS1pY29uLWJ1dHRvbicsCi0gICAgICAgICAgICAgIGF0dHJzOiB7Ci0g ICAgICAgICAgICAgICAgbmFtZTogJ2RpYWxvZ19oZWxwJywKLSAgICAgICAgICAgICAgICB0eXBl OiAnYnV0dG9uJywKLSAgICAgICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnSGVscCcpLAotICAg ICAgICAgICAgICAgICdhcmlhLWxhYmVsJzogZ2V0dGV4dCgnSGVscCcpLAotICAgICAgICAgICAg ICAgIHVybDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7Ci0gICAgICAgICAgICAgICAgICAnZmls ZW5hbWUnOiAncXVlcnlfdG9vbC5odG1sJywKLSAgICAgICAgICAgICAgICB9KSwKLSAgICAgICAg ICAgICAgfSwKLSAgICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgn Q2FuY2VsJyksCi0gICAgICAgICAgICAgIGtleTogMjcsCi0gICAgICAgICAgICAgIGNsYXNzTmFt ZTogJ2J0biBidG4tc2Vjb25kYXJ5IGZhIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCi0g ICAgICAgICAgICAgICdkYXRhLWJ0bi1uYW1lJzogJ2NhbmNlbCcsCi0gICAgICAgICAgICB9LCB7 Ci0gICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ1NhdmUnKSwKLSAgICAgICAgICAgICAgY2xh c3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9uJywK LSAgICAgICAgICAgICAgJ2RhdGEtYnRuLW5hbWUnOiAnb2snLAotICAgICAgICAgICAgfV0sCi0g ICAgICAgICAgICBmb2N1czogewotICAgICAgICAgICAgICBlbGVtZW50OiBmdW5jdGlvbigpewot ICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICByZXR1cm5pbmcgZmFsc2Ugd2lsbCBmb2N1 cyBub3RoaW5nLCBidXQgaXQgd2lsbCBtYWtlCi0gICAgICAgICAgICAgIGNvbnRlbnRzIGJlaGlu ZCB0aGUgbW9kYWwgYWNjZXNzaWJsZSB2aWEgVGFiIGtleSwKLSAgICAgICAgICAgICAgc28gZm9j dXMgdGhlIGRpYWxvZyBpdHNlbGYgaW5zdGVhZC4KLSAgICAgICAgICAgICAgKi8KLSAgICAgICAg ICAgICAgICByZXR1cm4gJCh0aGlzLmVsZW1lbnRzLmRpYWxvZykuZmluZCgnLmhlYWRlci1pY29u LWNlbGwgYnV0dG9uJylbMF07Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgIHNlbGVj dDogdHJ1ZSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAvLyBTZXQgb3B0aW9ucyBmb3Ig ZGlhbG9nCi0gICAgICAgICAgICBvcHRpb25zOiB7Ci0gICAgICAgICAgICAgIHRpdGxlOiB0aXRs ZSwKLSAgICAgICAgICAgICAgLy9kaXNhYmxlIGJvdGggcGFkZGluZyBhbmQgb3ZlcmZsb3cgY29u dHJvbC4KLSAgICAgICAgICAgICAgcGFkZGluZzogITEsCi0gICAgICAgICAgICAgIG92ZXJmbG93 OiAhMSwKLSAgICAgICAgICAgICAgbW9kZWw6IDAsCi0gICAgICAgICAgICAgIHJlc2l6YWJsZTog dHJ1ZSwKLSAgICAgICAgICAgICAgbWF4aW1pemFibGU6IHRydWUsCi0gICAgICAgICAgICAgIHBp bm5hYmxlOiBmYWxzZSwKLSAgICAgICAgICAgICAgY2xvc2FibGVCeURpbW1lcjogZmFsc2UsCi0g ICAgICAgICAgICAgIG1vZGFsOiBmYWxzZSwKLSAgICAgICAgICAgICAgYXV0b1Jlc2V0OiBmYWxz ZSwKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgfTsKLSAgICAgICAgfSwKLSAgICAgICAgaG9v a3M6IHsKLSAgICAgICAgLy8gdHJpZ2dlcmVkIHdoZW4gdGhlIGRpYWxvZyBpcyBjbG9zZWQKLSAg ICAgICAgICBvbmNsb3NlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLnZpZXcp IHsKLSAgICAgICAgICAgICAgdGhpcy5tYWNyb0NvbGxlY3Rpb25Nb2RlbC5zdG9wU2Vzc2lvbigp OwotICAgICAgICAgICAgICB0aGlzLnZpZXcubW9kZWwuc3RvcFNlc3Npb24oKTsKLSAgICAgICAg ICAgICAgdGhpcy52aWV3LnJlbW92ZSh7Ci0gICAgICAgICAgICAgICAgZGF0YTogdHJ1ZSwKLSAg ICAgICAgICAgICAgICBpbnRlcm5hbDogdHJ1ZSwKLSAgICAgICAgICAgICAgICBzaWxlbnQ6IHRy dWUsCi0gICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0sCi0gICAg ICAgIH0sCi0gICAgICAgIHByZXBhcmU6IGZ1bmN0aW9uKCkgewotICAgICAgICAgIGxldCBzZWxm ID0gdGhpczsKLSAgICAgICAgICAkY29udGFpbmVyLmh0bWwoJycpOwotICAgICAgICAgIC8vIFN0 YXR1cyBiYXIKLSAgICAgICAgICB0aGlzLnN0YXR1c0JhciA9ICQoCi0gICAgICAgICAgICAnPGRp diBjbGFzcz1cJ3BnLXByb3Atc3RhdHVzLWJhciBwZy1lbC14cy0xMiBkLW5vbmVcJz4nICsKLSAg ICAgICAgICAnICA8ZGl2IGNsYXNzPSJlcnJvci1pbi1mb290ZXIiPiAnICsKLSAgICAgICAgICAn ICAgIDxkaXYgY2xhc3M9ImQtZmxleCBweC0yIHB5LTEiPiAnICsKLSAgICAgICAgICAnICAgICAg PGRpdiBjbGFzcz0icHItMiI+ICcgKwotICAgICAgICAgICcgICAgICAgIDxpIGNsYXNzPSJmYSBm YS1leGNsYW1hdGlvbi10cmlhbmdsZSB0ZXh0LWRhbmdlciIgYXJpYS1oaWRkZW49InRydWUiPjwv aT4gJyArCi0gICAgICAgICAgJyAgICAgIDwvZGl2PiAnICsKLSAgICAgICAgICAnICAgICAgPGRp diBjbGFzcz0iYWxlcnQtdGV4dCIgcm9sZT0iYWxlcnQiPjwvZGl2PiAnICsKLSAgICAgICAgICAn ICAgIDwvZGl2PiAnICsKLSAgICAgICAgICAnICA8L2Rpdj4gJyArCi0gICAgICAgICAgJzwvZGl2 PicpLmFwcGVuZFRvKCRjb250YWluZXIpOwotCi0gICAgICAgICAgLy8gVG8gc2hvdyBwcm9ncmVz cyBvbiBmaWx0ZXIgU2F2aW5nL1VwZGF0aW5nIG9uIEFKQVgKLSAgICAgICAgICB0aGlzLnNob3dG aWx0ZXJQcm9ncmVzcyA9ICQoCi0gICAgICAgICAgICBgPGRpdiBpZD0ic2hvd19maWx0ZXJfcHJv Z3Jlc3MiIGNsYXNzPSJwZy1zcC1jb250YWluZXIgc3FsLWVkaXRvci1idXN5LWZldGNoaW5nIGQt bm9uZSI+Ci0gICAgICAgICAgICAgIDxkaXYgY2xhc3M9InBnLXNwLWNvbnRlbnQiPgotICAgICAg ICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij48ZGl2IGNsYXNzPSJjb2wtMTIgcGctc3AtaWNv biBzcWwtZWRpdG9yLWJ1c3ktaWNvbiI+PC9kaXY+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICA8 ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNvbC0xMiBwZy1zcC10ZXh0IHNxbC1lZGl0b3It YnVzeS10ZXh0Ij5gICsgZ2V0dGV4dCgnTG9hZGluZyBkYXRhLi4uJykgKyBgPC9kaXY+PC9kaXY+ Ci0gICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgIDwvZGl2PmAKLSAgICAgICAgICApLmFw cGVuZFRvKCRjb250YWluZXIpOwotCi0gICAgICAgICAgc2VsZi5tYWNyb0NvbGxlY3Rpb25Nb2Rl bCA9IG1hY3JvTW9kZWwoaGFuZGxlci50cmFuc0lkKTsKLQotICAgICAgICAgIGxldCBmaWVsZHMg PSBCYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hlbWEoCi0gICAgICAgICAgICBudWxsLCBzZWxmLm1h Y3JvQ29sbGVjdGlvbk1vZGVsLCAnZWRpdCcsIG51bGwsIG51bGwsIHRydWUKLSAgICAgICAgICAp OwotCi0gICAgICAgICAgbGV0IE1hbmFnZU1hY3JvRGlhbG9nID0gQmFja2Zvcm0uRGlhbG9nLmV4 dGVuZCh7Ci0gICAgICAgICAgICB0ZW1wbGF0ZTogewotICAgICAgICAgICAgICAncGFuZWwnOiBf LnRlbXBsYXRlKAotICAgICAgICAgICAgICAgICc8ZGl2IHJvbGU9InRhYnBhbmVsIiB0YWJpbmRl eD0iLTEiIGNsYXNzPSJ0YWItcGFuZSA8JT1sYWJlbCU+IDwlPXRhYlBhbmVsQ29kZUNsYXNzJT4g cGctZWwtc20tMTIgcGctZWwtbWQtMTIgcGctZWwtbGctMTIgcGctZWwtMTIgZmFkZSIgaWQ9Ijwl PWNJZCU+Ij48L2Rpdj4nCi0gICAgICAgICAgICAgICksCi0gICAgICAgICAgICB9LAotICAgICAg ICAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgdGhpcy5jbGVhbnVwKCk7 Ci0KLSAgICAgICAgICAgICAgdmFyICBtID0gdGhpcy5tb2RlbCwKLSAgICAgICAgICAgICAgICBj b250cm9scyA9IHRoaXMuY29udHJvbHMsCi0gICAgICAgICAgICAgICAgdG1wbHMgPSB0aGlzLnRl bXBsYXRlLAotICAgICAgICAgICAgICAgIGRpYWxvZ19vYmogPSB0aGlzLAotICAgICAgICAgICAg ICAgIGlkeCA9ICh0aGlzLnRhYkluZGV4ICogMTAwKSwKLSAgICAgICAgICAgICAgICBldmFsRiA9 IGZ1bmN0aW9uKGYsIGQsIG1vZGVsKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gKF8uaXNG dW5jdGlvbihmKSA/ICEhZi5hcHBseShkLCBbbW9kZWxdKSA6ICEhZik7Ci0gICAgICAgICAgICAg ICAgfTsKLQotICAgICAgICAgICAgICB0aGlzLiRlbAotICAgICAgICAgICAgICAgIC5lbXB0eSgp Ci0gICAgICAgICAgICAgICAgLmF0dHIoJ3JvbGUnLCAndGFicGFuZWwnKQotICAgICAgICAgICAg ICAgIC5hdHRyKCdjbGFzcycsIF8ucmVzdWx0KHRoaXMsICd0YWJQYW5lbENsYXNzTmFtZScpKTsK LSAgICAgICAgICAgICAgbS5wYW5lbEVsID0gdGhpcy4kZWw7Ci0KLSAgICAgICAgICAgICAgdmFy IHRhYkNvbnRlbnQgPSAkKCc8ZGl2IGNsYXNzPSJ0YWItY29udGVudCBwZy1lbC1zbS0xMiBwZy1l bC1tZC0xMiBwZy1lbC1sZy0xMiBwZy1lbC0xMiBtYWNyby10YWIiPjwvZGl2PicpCi0gICAgICAg ICAgICAgICAgLmFwcGVuZFRvKHRoaXMuJGVsKTsKLQotICAgICAgICAgICAgICBfLmVhY2godGhp cy5zY2hlbWEsIGZ1bmN0aW9uKG8pIHsKLSAgICAgICAgICAgICAgICBpZHgrKzsKLSAgICAgICAg ICAgICAgICBpZiAoIW8udmVyc2lvbl9jb21wYXRpYmxlIHx8ICFldmFsRihvLnZpc2libGUsIG8s IG0pKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgIHZhciBlbCA9ICQoKHRtcGxzWydwYW5lbCddKShfLmV4dGVuZChvLCB7Ci0g ICAgICAgICAgICAgICAgICAndGFiSW5kZXgnOiBpZHgsCi0gICAgICAgICAgICAgICAgICAndGFi UGFuZWxDb2RlQ2xhc3MnOiBvLnRhYlBhbmVsQ29kZUNsYXNzID8gby50YWJQYW5lbENvZGVDbGFz cyA6ICcnLAotICAgICAgICAgICAgICAgIH0pKSkKLSAgICAgICAgICAgICAgICAgIC5hcHBlbmRU byh0YWJDb250ZW50KQotICAgICAgICAgICAgICAgICAgLnJlbW92ZUNsYXNzKCdjb2xsYXBzZScp LmFkZENsYXNzKCdjb2xsYXBzZScpOwotCi0gICAgICAgICAgICAgICAgby5maWVsZHMuZWFjaChm dW5jdGlvbihmKSB7Ci0gICAgICAgICAgICAgICAgICB2YXIgY250ciA9IG5ldyhmLmdldCgnY29u dHJvbCcpKSh7Ci0gICAgICAgICAgICAgICAgICAgIGZpZWxkOiBmLAotICAgICAgICAgICAgICAg ICAgICBtb2RlbDogbSwKLSAgICAgICAgICAgICAgICAgICAgZGlhbG9nOiBkaWFsb2dfb2JqLAot ICAgICAgICAgICAgICAgICAgICB0YWJJbmRleDogaWR4LAotICAgICAgICAgICAgICAgICAgfSk7 Ci0gICAgICAgICAgICAgICAgICBlbC5hcHBlbmQoY250ci5yZW5kZXIoKS4kZWwpOwotICAgICAg ICAgICAgICAgICAgY29udHJvbHMucHVzaChjbnRyKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAg ICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgdGFiQ29udGVudC5maW5kKCcudGFiLXBh bmUnKS5maXJzdCgpLmFkZENsYXNzKCdhY3RpdmUgc2hvdycpOwotCi0gICAgICAgICAgICAgIHJl dHVybiB0aGlzOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICB9KTsKLQotICAgICAgICAgIGxl dCB2aWV3ID0gc2VsZi52aWV3ID0gbmV3IE1hbmFnZU1hY3JvRGlhbG9nKHsKLSAgICAgICAgICAg IGVsOiAnPGRpdj48L2Rpdj4nLAotICAgICAgICAgICAgbW9kZWw6IHNlbGYubWFjcm9Db2xsZWN0 aW9uTW9kZWwsCi0gICAgICAgICAgICBzY2hlbWE6IGZpZWxkcywKLSAgICAgICAgICB9KTsKLQot ICAgICAgICAgIHNlbGYubWFjcm9Db2xsZWN0aW9uTW9kZWwuZmV0Y2goewotICAgICAgICAgICAg c3VjY2VzczogZnVuY3Rpb24oKSB7Ci0KLSAgICAgICAgICAgICAgLy8gV2UgZ290IHRoZSBsYXRl c3QgYXR0cmlidXRlcyBvZiB0aGUgb2JqZWN0LiBSZW5kZXIgdGhlIHZpZXcKLSAgICAgICAgICAg ICAgLy8gbm93LgotICAgICAgICAgICAgICAkY29udGFpbmVyLmFwcGVuZChzZWxmLnZpZXcucmVu ZGVyKCkuJGVsKTsKLSAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxl bWVudC5kaXNhYmxlZCA9IHRydWU7Ci0KLQotICAgICAgICAgICAgICAvLyBFbmFibGUvZGlzYWJs ZSBzYXZlIGJ1dHRvbiBhbmQgc2hvdy9oaWRlIHN0YXR1c2JhciBiYXNlZCBvbiBzZXNzaW9uCi0g ICAgICAgICAgICAgIHNlbGYudmlldy5saXN0ZW5UbyhzZWxmLnZpZXcubW9kZWwsICdwZ2FkbWlu LXNlc3Npb246c3RhcnQnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICBzZWxmLnZpZXcu bGlzdGVuVG8oc2VsZi52aWV3Lm1vZGVsLCAncGdhZG1pbi1zZXNzaW9uOmludmFsaWQnLCBmdW5j dGlvbihtc2cpIHsKLSAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdHVzQmFyLnJlbW92ZUNsYXNz KCdkLW5vbmUnKTsKLSAgICAgICAgICAgICAgICAgICQoc2VsZi5zdGF0dXNCYXIuZmluZCgnLmFs ZXJ0LXRleHQnKSkuaHRtbChtc2cpOwotICAgICAgICAgICAgICAgICAgLy8gRGlzYWJsZSBPa2F5 IGJ1dHRvbgotICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxl bWVudC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAg ICAgICB2aWV3Lmxpc3RlblRvKHNlbGYudmlldy5tb2RlbCwgJ3BnYWRtaW4tc2Vzc2lvbjp2YWxp ZCcsIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0dXNCYXIuYWRkQ2xh c3MoJ2Qtbm9uZScpOwotICAgICAgICAgICAgICAgICAgJChzZWxmLnN0YXR1c0Jhci5maW5kKCcu YWxlcnQtdGV4dCcpKS5odG1sKCcnKTsKLSAgICAgICAgICAgICAgICAgIC8vIEVuYWJsZSBPa2F5 IGJ1dHRvbgotICAgICAgICAgICAgICAgICAgc2VsZi5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxl bWVudC5kaXNhYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg ICB9KTsKLQotICAgICAgICAgICAgICB2aWV3Lmxpc3RlblRvKHNlbGYudmlldy5tb2RlbCwgJ3Bn YWRtaW4tc2Vzc2lvbjpzdG9wJywgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdmlldy5z dG9wTGlzdGVuaW5nKHNlbGYudmlldy5tb2RlbCwgJ3BnYWRtaW4tc2Vzc2lvbjppbnZhbGlkJyk7 Ci0gICAgICAgICAgICAgICAgdmlldy5zdG9wTGlzdGVuaW5nKHNlbGYudmlldy5tb2RlbCwgJ3Bn YWRtaW4tc2Vzc2lvbjp2YWxpZCcpOwotICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAg ICAvLyBTdGFydHMgbW9uaXRvcmluZyBjaGFuZ2VzIHRvIG1vZGVsCi0gICAgICAgICAgICAgIHNl bGYudmlldy5tb2RlbC5zdGFydE5ld1Nlc3Npb24oKTsKLQotICAgICAgICAgICAgfX0pOwotCi0g ICAgICAgICAgJCh0aGlzLmVsZW1lbnRzLmJvZHkuY2hpbGROb2Rlc1swXSkuYWRkQ2xhc3MoCi0g ICAgICAgICAgICAnYWxlcnRpZnlfdG9vbHNfZGlhbG9nX3Byb3BlcnRpZXMgb2JqX3Byb3BlcnRp ZXMnCi0gICAgICAgICAgKTsKLQotCi0KLSAgICAgICAgfSwKLSAgICAgICAgLy8gQ2FsbGJhY2sg ZnVuY3Rpb25zIHdoZW4gY2xpY2sgb24gdGhlIGJ1dHRvbnMgb2YgdGhlIEFsZXJ0aWZ5IGRpYWxv Z3MKLSAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICBsZXQgc2VsZiA9 IHRoaXM7Ci0KLSAgICAgICAgICBpZiAoZS5idXR0b24uZWxlbWVudC5uYW1lID09ICdkaWFsb2df aGVscCcpIHsKLSAgICAgICAgICAgIGUuY2FuY2VsID0gdHJ1ZTsKLSAgICAgICAgICAgIHBnQWRt aW4uQnJvd3Nlci5zaG93SGVscChlLmJ1dHRvbi5lbGVtZW50Lm5hbWUsIGUuYnV0dG9uLmVsZW1l bnQuZ2V0QXR0cmlidXRlKCd1cmwnKSwKLSAgICAgICAgICAgICAgbnVsbCwgbnVsbCk7Ci0gICAg ICAgICAgfSBlbHNlIGlmIChlLmJ1dHRvblsnZGF0YS1idG4tbmFtZSddID09PSAnb2snKSB7Ci0g ICAgICAgICAgICBlLmNhbmNlbCA9IHRydWU7IC8vIERvIG5vdCBjbG9zZSBkaWFsb2cKLQotICAg ICAgICAgICAgbGV0IGRhdGEgPSBzZWxmLnZpZXcubW9kZWwuZ2V0KCdtYWNybycpLnRvSlNPTih0 cnVlKTsKLQotICAgICAgICAgICAgaWYgKGRhdGEgPT0gdW5kZWZpbmVkIHx8IGRhdGEgPT0gbnVs bCkgewotICAgICAgICAgICAgICBzZWxmLmNsb3NlKCk7Ci0gICAgICAgICAgICAgIHJldHVybjsK LSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYXhpb3MucHV0KAotICAgICAgICAgICAgICB1 cmxfZm9yKCdzcWxlZGl0b3Iuc2V0X21hY3JvcycsIHsKLSAgICAgICAgICAgICAgICAndHJhbnNf aWQnOiBoYW5kbGVyLnRyYW5zSWQsCi0gICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICBk YXRhCi0gICAgICAgICAgICApLnRoZW4oZnVuY3Rpb24gKHJlc3VsdCkgewotICAgICAgICAgICAg Ly8gSGlkZSBQcm9ncmVzcyAuLi4KLSAgICAgICAgICAgICAgJCgKLSAgICAgICAgICAgICAgICBz ZWxmLnNob3dGaWx0ZXJQcm9ncmVzc1swXQotICAgICAgICAgICAgICApLmFkZENsYXNzKCdkLW5v bmUnKTsKLQotICAgICAgICAgICAgICBsZXQgbWFjcm9SZXNwb25zZSA9IHJlc3VsdDsKLQotICAg ICAgICAgICAgICBpZiAobWFjcm9SZXNwb25zZS5zdGF0dXMpIHsKLSAgICAgICAgICAgICAgICBz ZXRUaW1lb3V0KAotICAgICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg ICAgICAgIC8vIFVwZGF0ZSBNYWNybyBNZW51Ci0gICAgICAgICAgICAgICAgICAgIGxldCBtYWNy b3MgPSBzZWxmLnZpZXcubW9kZWwuZ2V0KCdtYWNybycpLnRvSlNPTigpLmZpbHRlcihtID0+IG0u bmFtZSAhPT0gdW5kZWZpbmVkIHx8IG0ubmFtZSAhPT0gbnVsbCk7Ci0gICAgICAgICAgICAgICAg ICAgIGhhbmRsZXIubWFjcm9zID0gbWFjcm9zOwotICAgICAgICAgICAgICAgICAgICB2YXIgc3Ry ID0gYAotICAgICAgICAgICAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGlkPSJidG4tbWFuYWdlLW1hY3JvcyIgaHJlZj0i IyIgdGFiaW5kZXg9IjAiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+ICR7 Z2V0dGV4dCgnTWFuYWdlIE1hY3Jvcy4uLicpfSA8L3NwYW4+Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgIDwvYT4KLSAgICAgICAgICAgICAgICAgICAgICA8L2xpPmA7Ci0KLSAgICAgICAgICAg ICAgICAgICAgbGV0IG1hY3JvX2xpc3RfdG1wbCA9ICcnOwotICAgICAgICAgICAgICAgICAgICBf LmVhY2gobWFjcm9zLCBmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgaWYgKG0u bmFtZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbWFjcm9fbGlzdF90bXBsICs9IGA8bGk+ Ci0gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZHJvcGRvd24taXRlbSBidG4tbWFj cm8iIGRhdGEtbWFjcm8taWQ9IiR7bS5pZH0iIGhyZWY9IiMiIHRhYmluZGV4PSIwIj4KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4gJHtfLmVzY2FwZShtLm5hbWUpfSA8L3NwYW4+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+ICgke20ua2V5X2xhYmVsfSkgPC9z cGFuPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgotICAgICAgICAgICAgICAgICAgICAg ICA8L2xpPmA7Ci0gICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9 KTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAobWFjcm9fbGlzdF90bXBsLmxlbmd0aCA+IDAp IHN0ciArPSAnPGxpIGNsYXNzPSJkcm9wZG93bi1kaXZpZGVyIj48L2xpPicgKyBtYWNyb19saXN0 X3RtcGw7Ci0gICAgICAgICAgICAgICAgICAgICQoJC5maW5kKCdkaXYuYnRuLWdyb3VwLm1yLTEu dXNlcl9tYWNyb3MgdWwuZHJvcGRvd24tbWVudScpKS5odG1sKCQoc3RyKSk7Ci0KLSAgICAgICAg ICAgICAgICAgICAgc2VsZi5jbG9zZSgpOyAvLyBDbG9zZSB0aGUgZGlhbG9nIG5vdwotICAgICAg ICAgICAgICAgICAgICBOb3RpZnkuc3VjY2VzcyhnZXR0ZXh0KCdNYWNybyB1cGRhdGVkIHN1Y2Nl c3NmdWxseScpKTsKLSAgICAgICAgICAgICAgICAgIH0sIDEwCi0gICAgICAgICAgICAgICAgKTsK LSAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBOb3RpZnkuYWxlcnQoCi0g ICAgICAgICAgICAgICAgICBnZXR0ZXh0KCdWYWxpZGF0aW9uIEVycm9yJyksCi0gICAgICAgICAg ICAgICAgICBtYWNyb1Jlc3BvbnNlLnJlc3VsdAotICAgICAgICAgICAgICAgICk7Ci0gICAgICAg ICAgICAgIH0KLQotICAgICAgICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGVycm9yKSB7Ci0gICAg ICAgICAgICAvLyBIaWRlIFByb2dyZXNzIC4uLgotICAgICAgICAgICAgICAkKAotICAgICAgICAg ICAgICAgIHNlbGYuc2hvd0ZpbHRlclByb2dyZXNzWzBdCi0gICAgICAgICAgICAgICkuYWRkQ2xh c3MoJ2Qtbm9uZScpOwotCi0gICAgICAgICAgICAgIHNldFRpbWVvdXQoCi0gICAgICAgICAgICAg ICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICBOb3RpZnkuZXJyb3IoZXJyb3IucmVz cG9uc2UuZGF0YS5lcnJvcm1zZyk7Ci0gICAgICAgICAgICAgICAgfSwgMTAKLSAgICAgICAgICAg ICAgKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg IHNlbGYuY2xvc2UoKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0sCi0gICAgICB9OwotICAgIH0p OwotCi0gICAgQWxlcnRpZnkubWFjcm9EaWFsb2codGl0bGUpLnJlc2l6ZVRvKHBnQWRtaW4uQnJv d3Nlci5zdGRXLmNhbGMocGdBZG1pbi5Ccm93c2VyLnN0ZFcubGcpLAotICAgICAgcGdBZG1pbi5C cm93c2VyLnN0ZEguY2FsYyhwZ0FkbWluLkJyb3dzZXIuc3RkSC5sZykpOwotICB9LAotfTsKLQot bW9kdWxlLmV4cG9ydHMgPSBNYWNyb0RpYWxvZzsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0 YXRpYy9qcy9zcWxlZGl0b3IvbWFjcm9fbW9kZWwuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMv c3FsZWRpdG9yL21hY3JvX21vZGVsLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBh OWMzMTZlNjguLjAwMDAwMDAwMAotLS0gYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9y L21hY3JvX21vZGVsLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjI1ICswLDAgQEAKLS8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8v Ci0vLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCi0vLwotLy8gQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQotLy8gVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCi0vLwotLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQot aW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKLWltcG9ydCBwZ0FkbWluIGZy b20gJ3NvdXJjZXMvcGdhZG1pbic7Ci1pbXBvcnQgQmFja2Zvcm0gZnJvbSAncGdhZG1pbi5iYWNr Zm9ybSc7Ci1pbXBvcnQgQmFja2dyaWQgZnJvbSAncGdhZG1pbi5iYWNrZ3JpZCc7Ci1pbXBvcnQg dXJsX2ZvciBmcm9tICdzb3VyY2VzL3VybF9mb3InOwotaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsK LWltcG9ydCBfIGZyb20gJ3VuZGVyc2NvcmUnOwotaW1wb3J0IE5vdGlmeSBmcm9tICcuLi9oZWxw ZXJzL05vdGlmaWVyJzsKLQotZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWFjcm9Nb2RlbCh0cmFu c0lkKSB7Ci0KLSAgbGV0IE1hY3JvTW9kZWwgPSBwZ0FkbWluLkJyb3dzZXIuRGF0YU1vZGVsLmV4 dGVuZCh7Ci0gICAgaWRBdHRyaWJ1dGU6ICdpZCcsCi0gICAgZGVmYXVsdHM6IHsKLSAgICAgIGlk OiB1bmRlZmluZWQsCi0gICAgICBrZXk6IHVuZGVmaW5lZCwKLSAgICAgIG5hbWU6IHVuZGVmaW5l ZCwKLSAgICAgIHNxbDogdW5kZWZpbmVkLAotICAgICAga2V5X2xhYmVsOiB1bmRlZmluZWQsCi0g ICAgfSwKLSAgICBzY2hlbWE6IFt7Ci0gICAgICBpZDogJ2tleV9sYWJlbCcsCi0gICAgICBuYW1l OiAna2V5X2xhYmVsJywKLSAgICAgIGxhYmVsOiBnZXR0ZXh0KCdLZXknKSwKLSAgICAgIHR5cGU6 ICd0ZXh0JywKLSAgICAgIGNlbGw6ICdzdHJpbmcnLAotICAgICAgZWRpdGFibGU6IGZhbHNlLAot ICAgICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0aF9wZXJjZW50XzEwJywKLSAgICAgIGhlYWRl ckNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5DdXN0b21IZWFkZXJDZWxsLAotICAgICAgZGlzYWJs ZWQ6IGZhbHNlLAotICAgIH0sIHsKLSAgICAgIGlkOiAnbmFtZScsCi0gICAgICBuYW1lOiAnbmFt ZScsCi0gICAgICBsYWJlbDogZ2V0dGV4dCgnTmFtZScpLAotICAgICAgY2VsbDogJ3N0cmluZycs Ci0gICAgICB0eXBlOiAndGV4dCcsCi0gICAgICBlZGl0YWJsZTogdHJ1ZSwKLSAgICAgIGNlbGxI ZWFkZXJDbGFzc2VzOiAnd2lkdGhfcGVyY2VudF8yMCcsCi0gICAgICBoZWFkZXJDZWxsOiBCYWNr Z3JpZC5FeHRlbnNpb24uQ3VzdG9tSGVhZGVyQ2VsbCwKLSAgICAgIGRpc2FibGVkOiBmYWxzZSwK LSAgICB9LCB7Ci0gICAgICBpZDogJ3NxbCcsCi0gICAgICBuYW1lOiAnc3FsJywKLSAgICAgIGxh YmVsOiBnZXR0ZXh0KCdTUUwnKSwKLSAgICAgIGNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5TcWxD ZWxsLAotICAgICAgdHlwZTogJ211bHRpbGluZScsCi0gICAgICBjb250cm9sOiBCYWNrZm9ybS5T cWxDb2RlQ29udHJvbCwKLSAgICAgIGVkaXRhYmxlOiB0cnVlLAotICAgICAgY2VsbEhlYWRlckNs YXNzZXM6ICd3aWR0aF9wZXJjZW50XzcwJywKLSAgICAgIGhlYWRlckNlbGw6IEJhY2tncmlkLkV4 dGVuc2lvbi5DdXN0b21IZWFkZXJDZWxsLAotICAgICAgZGlzYWJsZWQ6IGZhbHNlLAotICAgIH0s Ci0gICAgXSwKLSAgICB2YWxpZGF0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICBsZXQgbXNnID0gbnVs bDsKLSAgICAgIHRoaXMuZXJyb3JNb2RlbC5jbGVhcigpOwotICAgICAgaWYgKF8uaXNFbXB0eSh0 aGlzLmdldCgnbmFtZScpKSAmJiAgIShfLmlzRW1wdHkodGhpcy5nZXQoJ3NxbCcpKSkpIHsKLSAg ICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIGVudGVyIG1hY3JvIG5hbWUuJyk7Ci0gICAgICAg IHRoaXMuZXJyb3JNb2RlbC5zZXQoJ25hbWUnLCBtc2cpOwotICAgICAgICByZXR1cm4gbXNnOwot ICAgICAgfSBlbHNlIGlmIChfLmlzRW1wdHkodGhpcy5nZXQoJ3NxbCcpKSAmJiAgIShfLmlzRW1w dHkodGhpcy5nZXQoJ25hbWUnKSkpKSB7Ci0gICAgICAgIG1zZyA9IGdldHRleHQoJ1BsZWFzZSBl bnRlciBtYWNybyBzcWwuJyk7Ci0gICAgICAgIHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3NxbCcsIG1z Zyk7Ci0gICAgICAgIHJldHVybiBtc2c7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gbnVsbDsKLSAg ICB9LAotICB9KTsKLQotICBsZXQgTWFjcm9Db2xsZWN0aW9uTW9kZWwgPSBwZ0FkbWluLkJyb3dz ZXIuRGF0YU1vZGVsLmV4dGVuZCh7Ci0gICAgZGVmYXVsdHM6IHsKLSAgICAgIG1hY3JvOiB1bmRl ZmluZWQsCi0gICAgfSwKLSAgICB1cmxSb290OiB1cmxfZm9yKCdzcWxlZGl0b3IuZ2V0X21hY3Jv cycsIHsndHJhbnNfaWQnOiB0cmFuc0lkfSksCi0gICAgc2NoZW1hOiBbewotICAgICAgaWQ6ICdt YWNybycsCi0gICAgICBuYW1lOiAnbWFjcm8nLAotICAgICAgbGFiZWw6IGdldHRleHQoJ01hY3Jv cycpLAotICAgICAgbW9kZWw6IE1hY3JvTW9kZWwsCi0gICAgICBlZGl0YWJsZTogdHJ1ZSwKLSAg ICAgIHR5cGU6ICdjb2xsZWN0aW9uJywKLSAgICAgIGNvbnRyb2w6IEJhY2tmb3JtLlN1Yk5vZGVD b2xsZWN0aW9uQ29udHJvbC5leHRlbmQoewotICAgICAgICBzaG93R3JpZENvbnRyb2w6IGZ1bmN0 aW9uKGRhdGEpIHsKLSAgICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgICBncmlk Qm9keSA9ICQoJzxkaXYgY2xhc3M9XCdwZ2FkbWluLWNvbnRyb2wtZ3JvdXAgYmFja2dyaWQgZm9y bS1ncm91cCBwZy1lbC0xMiBvYmplY3Qgc3Vibm9kZVwnPjwvZGl2PicpOwotCi0gICAgICAgICAg dmFyIHN1Ym5vZGUgPSBkYXRhLnN1Ym5vZGUuc2NoZW1hID8gZGF0YS5zdWJub2RlIDogZGF0YS5z dWJub2RlLnByb3RvdHlwZSwKLSAgICAgICAgICAgIGdyaWRTY2hlbWEgPSBCYWNrZm9ybS5nZW5l cmF0ZUdyaWRDb2x1bW5zRnJvbU1vZGVsKAotICAgICAgICAgICAgICBkYXRhLm5vZGVfaW5mbywg c3Vibm9kZSwgdGhpcy5maWVsZC5nZXQoJ21vZGUnKSwgZGF0YS5jb2x1bW5zLCBkYXRhLnNjaGVt YV9ub2RlCi0gICAgICAgICAgICApOwotCi0gICAgICAgICAgLy8gQ2xlYW4gdXAgZXhpc3Rpbmcg Z3JpZCBpZiBhbnkgKGluIGNhc2Ugb2YgcmUtcmVuZGVyKQotICAgICAgICAgIGlmIChzZWxmLmdy aWQpIHsKLSAgICAgICAgICAgIHNlbGYuZ3JpZC5yZW1vdmUoKTsKLSAgICAgICAgICB9Ci0KLSAg ICAgICAgICAvLyBTZXQgdmlzaWJpbGl0eSBvZiBBZGQgYnV0dG9uCi0gICAgICAgICAgaWYgKGRh dGEuZGlzYWJsZWQgfHwgZGF0YS5jYW5BZGQgPT0gZmFsc2UpIHsKLSAgICAgICAgICAgICQoZ3Jp ZEJvZHkpLmZpbmQoJ2J1dHRvbi5hZGQnKS5yZW1vdmUoKTsKLSAgICAgICAgICB9Ci0KLSAgICAg ICAgICAvLyBJbnNlcnQgQ2xlYXIgQ2VsbCBpbnRvIEdyaWQKLSAgICAgICAgICBncmlkU2NoZW1h LmNvbHVtbnMudW5zaGlmdCh7Ci0gICAgICAgICAgICBuYW1lOiAncGctYmFja2Zvcm0tY2xlYXIn LAotICAgICAgICAgICAgbGFiZWw6ICc8aSBhcmlhLWxhYmVsPSInICsgZ2V0dGV4dCgnQ2xlYXIg cm93JykgKyAnIiBjbGFzcz0iZmEgZmEtZXJhc2VyIiB0aXRsZT0iJyArIGdldHRleHQoJ0NsZWFy IHJvdycpICsgJyI+PC9pPicsCi0gICAgICAgICAgICBjZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24u Q2xlYXJDZWxsLAotICAgICAgICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgICAgICAgY2Vs bF9wcmlvcml0eTogLTEsCi0gICAgICAgICAgICBzb3J0YWJsZTogZmFsc2UsCi0gICAgICAgICAg ICBoZWFkZXJDZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24uQ3VzdG9tSGVhZGVyQ2VsbC5leHRlbmQo ewotICAgICAgICAgICAgICBjbGFzc05hbWU6ICdoZWFkZXItaWNvbi1jZWxsJywKLSAgICAgICAg ICAgICAgZXZlbnRzOiB7Ci0gICAgICAgICAgICAgICAgJ2NsaWNrJzogJ2NsZWFyckFsbCcsCi0g ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgIGNsZWFyckFsbDogZnVuY3Rpb24oZSkgewot ICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKLSAgICAgICAgICAgICAgICB2YXIg dGhhdCA9IHRoaXM7Ci0gICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCBjaGVjayBpZiByb3cgaXMg ZGVsZXRhYmxlIG9yIG5vdAotCi0gICAgICAgICAgICAgICAgbGV0IG1hY3JvcyA9IHRoYXQuY29s bGVjdGlvbi50b0pTT04oKS5maWx0ZXIobSA9PiBtLm5hbWUgIT09IHVuZGVmaW5lZCAmJiBtLm5h bWUgIT09IG51bGwpOwotCi0gICAgICAgICAgICAgICAgaWYgKG1hY3Jvcy5sZW5ndGggPiAwKSB7 Ci0gICAgICAgICAgICAgICAgICBOb3RpZnkuY29uZmlybSgKLSAgICAgICAgICAgICAgICAgICAg Z2V0dGV4dCgnQ2xlYXIgQWxsIFJvd3MnKSwKLSAgICAgICAgICAgICAgICAgICAgZ2V0dGV4dCgn QXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGNsZWFyIGFsbCByb3dzPycpLAotICAgICAgICAgICAg ICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICBfLmVhY2godGhhdC5j b2xsZWN0aW9uLnRvSlNPTigpLCBmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg ICB0aGF0LmNvbGxlY3Rpb24uZ2V0KG0uaWQpLnNldCh7J25hbWUnOiBudWxsLCAnc3FsJzogbnVs bH0pOwotICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICB9LAot ICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgKTsK LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgIHJlbmRl cjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy4kZWwuZW1wdHkoKTsKLSAgICAg ICAgICAgICAgICB2YXIgY29sdW1uID0gdGhpcy5jb2x1bW47Ci0gICAgICAgICAgICAgICAgdmFy IGxhYmVsID0gJCgnPGJ1dHRvbiB0eXBlPSJidXR0b24iIHRpdGxlPSInICsgZ2V0dGV4dCgnQ2xl YXIgcm93JykgKyAnIiBhcmlhLWxhYmVsPSJDbGVhciByb3ciIGFyaWEtZXhwYW5kZWQ9ImZhbHNl IiB0YWJpbmRleD0iMCI+JykuaHRtbChjb2x1bW4uZ2V0KCdsYWJlbCcpKS5hcHBlbmQoJzxzcGFu IGNsYXNzPVwnc29ydC1jYXJldFwnIGFyaWEtaGlkZGVuPVwndHJ1ZVwnPjwvc3Bhbj4nKTsKLQot ICAgICAgICAgICAgICAgIHRoaXMuJGVsLmFwcGVuZChsYWJlbCk7Ci0gICAgICAgICAgICAgICAg dGhpcy4kZWwuYWRkQ2xhc3MoY29sdW1uLmdldCgnbmFtZScpKTsKLSAgICAgICAgICAgICAgICB0 aGlzLiRlbC5hZGRDbGFzcyhjb2x1bW4uZ2V0KCdkaXJlY3Rpb24nKSk7Ci0gICAgICAgICAgICAg ICAgdGhpcy4kZWwuYXR0cigncm9sZScsICdjb2x1bW5oZWFkZXInKTsKLSAgICAgICAgICAgICAg ICB0aGlzLiRlbC5hdHRyKCdhcmlhLWxhYmVsJywgJ2NvbHVtbmhlYWRlcicpOwotICAgICAgICAg ICAgICAgIHRoaXMuJGVsLmF0dHIoJ2FsdCcsICdjb2x1bW5oZWFkZXInKTsKLSAgICAgICAgICAg ICAgICB0aGlzLmRlbGVnYXRlRXZlbnRzKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXM7 Ci0KLSAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0pLAotICAgICAgICAgIH0pOwotCi0K LSAgICAgICAgICB2YXIgY29sbGVjdGlvbiA9IHNlbGYubW9kZWwuZ2V0KGRhdGEubmFtZSk7Ci0K LSAgICAgICAgICBpZiAoIWNvbGxlY3Rpb24pIHsKLSAgICAgICAgICAgIGNvbGxlY3Rpb24gPSBu ZXcocGdBZG1pbi5Ccm93c2VyLk5vZGUuQ29sbGVjdGlvbikobnVsbCwgewotICAgICAgICAgICAg ICBoYW5kbGVyOiBzZWxmLm1vZGVsLmhhbmRsZXIgfHwgc2VsZi5tb2RlbCwKLSAgICAgICAgICAg ICAgbW9kZWw6IGRhdGEubW9kZWwsCi0gICAgICAgICAgICAgIHRvcDogc2VsZi5tb2RlbC50b3Ag fHwgc2VsZi5tb2RlbCwKLSAgICAgICAgICAgICAgc2lsZW50OiB0cnVlLAotICAgICAgICAgICAg fSk7Ci0gICAgICAgICAgICBzZWxmLm1vZGVsLnNldChkYXRhLm5hbWUsIGNvbGxlY3Rpb24sIHsK LSAgICAgICAgICAgICAgc2lsZW50OiB0cnVlLAotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAg fQotCi0gICAgICAgICAgdmFyIGNlbGxFZGl0aW5nID0gZnVuY3Rpb24oYXJncykgewotICAgICAg ICAgICAgdmFyIGN0eCA9IHRoaXMsCi0gICAgICAgICAgICAgIGNlbGwgPSBhcmdzWzBdOwotICAg ICAgICAgICAgLy8gU2VhcmNoIGZvciBhbnkgb3RoZXIgcm93cyB3aGljaCBhcmUgb3Blbi4KLSAg ICAgICAgICAgIHRoaXMuZWFjaChmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgICAgIC8vIENoZWNr IGlmIHJvdyB3aGljaCB3ZSBhcmUgYWJvdXQgdG8gY2xvc2UgaXMgbm90IGN1cnJlbnQgcm93Lgot ICAgICAgICAgICAgICBpZiAoY2VsbC5tb2RlbCAhPSBtKSB7Ci0gICAgICAgICAgICAgICAgdmFy IGlkeCA9IGN0eC5pbmRleE9mKG0pOwotICAgICAgICAgICAgICAgIGlmIChpZHggPiAtMSkgewot ICAgICAgICAgICAgICAgICAgdmFyIHJvdyA9IGdyaWQuYm9keS5yb3dzW2lkeF0sCi0gICAgICAg ICAgICAgICAgICAgIHJvd0VkaXRDZWxsID0gcm93LiRlbC5maW5kKCcuc3Vibm9kZS1lZGl0LWlu LXByb2Nlc3MnKS5wYXJlbnQoKTsKLSAgICAgICAgICAgICAgICAgIC8vIE9ubHkgY2xvc2Ugcm93 IGlmIGl0J3Mgb3Blbi4KLSAgICAgICAgICAgICAgICAgIGlmIChyb3dFZGl0Q2VsbC5sZW5ndGgg PiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBldmVudCA9IG5ldyBFdmVudCgnY2xpY2sn KTsKLSAgICAgICAgICAgICAgICAgICAgcm93RWRpdENlbGxbMF0uZGlzcGF0Y2hFdmVudChldmVu dCk7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICB9OwotICAgICAgICAgIC8vIExpc3RlbiBm b3IgYW55IHJvdyB3aGljaCBpcyBhYm91dCB0byBlbnRlciBpbiBlZGl0IG1vZGUuCi0gICAgICAg ICAgY29sbGVjdGlvbi5vbignZW50ZXJpbmdFZGl0TW9kZScsIGNlbGxFZGl0aW5nLCBjb2xsZWN0 aW9uKTsKLQotICAgICAgICAgIC8vIEluaXRpYWxpemUgYSBuZXcgR3JpZCBpbnN0YW5jZQotICAg ICAgICAgIHZhciBncmlkID0gc2VsZi5ncmlkID0gbmV3IEJhY2tncmlkLkdyaWQoewotICAgICAg ICAgICAgY29sdW1uczogZ3JpZFNjaGVtYS5jb2x1bW5zLAotICAgICAgICAgICAgY29sbGVjdGlv bjogY29sbGVjdGlvbiwKLSAgICAgICAgICAgIHJvdzogdGhpcy5yb3csCi0gICAgICAgICAgICBj bGFzc05hbWU6ICdiYWNrZ3JpZCB0YWJsZSBwcmVzZW50YXRpb24gdGFibGUtYm9yZGVyZWQgdGFi bGUtbm9vdXRlci1ib3JkZXIgdGFibGUtaG92ZXInLAotICAgICAgICAgIH0pOwotCi0gICAgICAg ICAgLy8gUmVuZGVyIHN1Yk5vZGUgZ3JpZAotICAgICAgICAgIHZhciBzdWJOb2RlR3JpZCA9IGdy aWQucmVuZGVyKCkuJGVsOwotCi0gICAgICAgICAgcmV0dXJuIGdyaWRCb2R5LmFwcGVuZChzdWJO b2RlR3JpZCk7Ci0gICAgICAgIH0sCi0gICAgICB9KSwKLSAgICAgIGNvbHVtbnM6IFsna2V5X2xh YmVsJywgJ25hbWUnLCAnc3FsJ10sCi0gICAgICB2aXNpYmxlOiB0cnVlLAotICAgIH1dLAotICAg IHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKLSAgICAgIHJldHVybiBudWxsOwotICAgIH0sCi0gIH0p OwotCi0gIHJldHVybiBuZXcgTWFjcm9Db2xsZWN0aW9uTW9kZWwoKTsKLX0KZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvbmV3X2Nvbm5lY3Rpb25fZGlhbG9nLmpz IGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9uZXdfY29ubmVjdGlvbl9kaWFsb2cu anMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3NTJlYzNkNC4uMDAwMDAwMDAwCi0t LSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvbmV3X2Nvbm5lY3Rpb25fZGlhbG9n LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjg5ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBwZ0FkbWlu IDQgLSBQb3N0Z3JlU1FMIFRvb2xzCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwg VGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQotLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQotaW1wb3J0IGdldHRl eHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKLWltcG9ydCB1cmxfZm9yIGZyb20gJ3NvdXJjZXMv dXJsX2Zvcic7Ci1pbXBvcnQgJCBmcm9tICdqcXVlcnknOwotaW1wb3J0IEFsZXJ0aWZ5IGZyb20g J3BnYWRtaW4uYWxlcnRpZnlqcyc7Ci1pbXBvcnQgcGdBZG1pbiBmcm9tICdzb3VyY2VzL3BnYWRt aW4nOwotaW1wb3J0IEJhY2tmb3JtIGZyb20gJ3BnYWRtaW4uYmFja2Zvcm0nOwotaW1wb3J0IG5l d0Nvbm5lY3Rpb25EaWFsb2dNb2RlbCBmcm9tICdzb3VyY2VzL3NxbGVkaXRvci9uZXdfY29ubmVj dGlvbl9kaWFsb2dfbW9kZWwnOwotaW1wb3J0IE5vdGlmeSBmcm9tICdzdGF0aWMvanMvaGVscGVy cy9Ob3RpZmllcic7Ci0KLQotbGV0IE5ld0Nvbm5lY3Rpb25EaWFsb2cgPSB7Ci0gICdkaWFsb2cn OiBmdW5jdGlvbihoYW5kbGVyLCByZWNvbm5lY3QsIHByZWZlcmVuY2VzKSB7Ci0gICAgbGV0IHVy bCA9IHVybF9mb3IoJ3NxbGVkaXRvci5nZXRfbmV3X2Nvbm5lY3Rpb25fZGF0YScsIHsKLSAgICAg ICdzaWQnOiBoYW5kbGVyLnVybF9wYXJhbXMuc2lkLAotICAgICAgJ3NnaWQnOiBoYW5kbGVyLnVy bF9wYXJhbXMuc2dpZCwKLSAgICB9KTsKLQotICAgIGlmKHJlY29ubmVjdCkgewotICAgICAgdXJs ICs9ICc/Y29ubmVjdD0xJzsKLSAgICB9Ci0KLSAgICBsZXQgdGl0bGUgPSBnZXR0ZXh0KCdDb25u ZWN0IHRvIHNlcnZlcicpOwotCi0gICAgJC5hamF4KHsKLSAgICAgIHVybDogdXJsLAotICAgICAg aGVhZGVyczogewotICAgICAgICAnQ2FjaGUtQ29udHJvbCcgOiAnbm8tY2FjaGUnLAotICAgICAg fSwKLSAgICB9KS5kb25lKGZ1bmN0aW9uIChyZXMpIHsKLSAgICAgIGxldCByZXNwb25zZSA9IHJl cy5kYXRhLnJlc3VsdDsKLSAgICAgIHJlc3BvbnNlLmRhdGFiYXNlX2xpc3QgPSBbXTsKLSAgICAg IHJlc3BvbnNlLnVzZXJfbGlzdCA9IFtdOwotICAgICAgaWYgKEFsZXJ0aWZ5Lm5ld0Nvbm5lY3Rp b25EaWFsb2cpIHsKLSAgICAgICAgZGVsZXRlIEFsZXJ0aWZ5Lm5ld0Nvbm5lY3Rpb25EaWFsb2c7 Ci0gICAgICB9Ci0KLSAgICAgIC8vIENyZWF0ZSBEaWFsb2cKLSAgICAgIEFsZXJ0aWZ5LmRpYWxv ZygnbmV3Q29ubmVjdGlvbkRpYWxvZycsIGZ1bmN0aW9uIGZhY3RvcnkoKSB7Ci0gICAgICAgIGxl dCAkY29udGFpbmVyID0gJCgnPGRpdiBjbGFzcz1cJ25ldy1jb25uZWN0aW9uLWRpYWxvZ1wnPjwv ZGl2PicpOwotICAgICAgICByZXR1cm4gewotICAgICAgICAgIG1haW46IGZ1bmN0aW9uKG1lc3Nh Z2UpIHsKLSAgICAgICAgICAgIHRoaXMubXNnID0gbWVzc2FnZTsKLSAgICAgICAgICB9LAotICAg ICAgICAgIGJ1aWxkOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRoaXMuZWxlbWVudHMuY29u dGVudC5hcHBlbmRDaGlsZCgkY29udGFpbmVyLmdldCgwKSk7Ci0gICAgICAgICAgICBBbGVydGlm eS5wZ0RpYWxvZ0J1aWxkLmFwcGx5KHRoaXMpOwotICAgICAgICAgIH0sCi0gICAgICAgICAgc2V0 dXA6IGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICBidXR0 b25zOiBbCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgdGV4dDogJycsCi0g ICAgICAgICAgICAgICAgICBrZXk6IDExMiwKLSAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTog J2J0biBidG4tcHJpbWFyeS1pY29uIHB1bGwtbGVmdCBmYSBmYS1xdWVzdGlvbiBwZy1hbGVydGlm eS1pY29uLWJ1dHRvbicsCi0gICAgICAgICAgICAgICAgICBhdHRyczogewotICAgICAgICAgICAg ICAgICAgICBuYW1lOiAnZGlhbG9nX2hlbHAnLAotICAgICAgICAgICAgICAgICAgICB0eXBlOiAn YnV0dG9uJywKLSAgICAgICAgICAgICAgICAgICAgbGFiZWw6IGdldHRleHQoJ0hlbHAnKSwKLSAg ICAgICAgICAgICAgICAgICAgJ2FyaWEtbGFiZWwnOiBnZXR0ZXh0KCdIZWxwJyksCi0gICAgICAg ICAgICAgICAgICAgIHVybDogdXJsX2ZvcignaGVscC5zdGF0aWMnLCB7Ci0gICAgICAgICAgICAg ICAgICAgICAgJ2ZpbGVuYW1lJzogJ3F1ZXJ5X3Rvb2wuaHRtbCcsCi0gICAgICAgICAgICAgICAg ICAgIH0pLAotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9LAotICAgICAg ICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0NhbmNlbCcpLAot ICAgICAgICAgICAgICAgICAga2V5OiAyNywKLSAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZTog J2J0biBidG4tc2Vjb25kYXJ5IGZhIGZhLXRpbWVzIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAg ICAgICAgICAgICAgICAnZGF0YS1idG4tbmFtZSc6ICdjYW5jZWwnLAotICAgICAgICAgICAgICAg IH0sIHsKLSAgICAgICAgICAgICAgICAgIHRleHQ6IGdldHRleHQoJ09LJyksCi0gICAgICAgICAg ICAgICAgICBrZXk6IDEzLAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1w cmltYXJ5IGZhIGZhLWNoZWNrIHBnLWFsZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAgICAgICAgICAg ICAnZGF0YS1idG4tbmFtZSc6ICdvaycsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAg ICAgXSwKLSAgICAgICAgICAgICAgZm9jdXM6IHsKLSAgICAgICAgICAgICAgICBlbGVtZW50OiBm dW5jdGlvbigpewotICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgcmV0dXJuaW5n IGZhbHNlIHdpbGwgZm9jdXMgbm90aGluZywgYnV0IGl0IHdpbGwgbWFrZQotICAgICAgICAgICAg ICAgIGNvbnRlbnRzIGJlaGluZCB0aGUgbW9kYWwgYWNjZXNzaWJsZSB2aWEgVGFiIGtleSwKLSAg ICAgICAgICAgICAgICBzbyBmb2N1cyB0aGUgZGlhbG9nIGl0c2VsZiBpbnN0ZWFkLgotICAgICAg ICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICByZXR1cm4gJCh0aGlzLmVsZW1lbnRzLmRp YWxvZykuZmluZCgnLm5ldy1jb25uZWN0aW9uLWRpYWxvZyAubmF2LWxpbmsuYWN0aXZlLnNob3cn KTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZSwKLSAg ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgLy8gU2V0IG9wdGlvbnMgZm9yIGRpYWxvZwot ICAgICAgICAgICAgICBvcHRpb25zOiB7Ci0gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLAot ICAgICAgICAgICAgICAgIC8vZGlzYWJsZSBib3RoIHBhZGRpbmcgYW5kIG92ZXJmbG93IGNvbnRy b2wuCi0gICAgICAgICAgICAgICAgcGFkZGluZzogITEsCi0gICAgICAgICAgICAgICAgb3ZlcmZs b3c6ICExLAotICAgICAgICAgICAgICAgIG1vZGVsOiAwLAotICAgICAgICAgICAgICAgIHJlc2l6 YWJsZTogdHJ1ZSwKLSAgICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2UsCi0gICAgICAg ICAgICAgICAgcGlubmFibGU6IGZhbHNlLAotICAgICAgICAgICAgICAgIGNsb3NhYmxlQnlEaW1t ZXI6IGZhbHNlLAotICAgICAgICAgICAgICAgIG1vZGFsOiBmYWxzZSwKLSAgICAgICAgICAgICAg ICBhdXRvUmVzZXQ6IGZhbHNlLAotICAgICAgICAgICAgICAgIGNsb3NhYmxlOiBmYWxzZSwKLSAg ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgfSwKLSAgICAgICAgICBw cmVwYXJlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIGxldCBzZWxmID0gdGhpczsKLSAgICAg ICAgICAgICRjb250YWluZXIuaHRtbCgnJyk7Ci0gICAgICAgICAgICAvLyBEaXNhYmxlIE9rIGJ1 dHRvbgotICAgICAgICAgICAgdGhpcy5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNh YmxlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgIC8vIFN0YXR1cyBiYXIKLSAgICAgICAgICAgIHRo aXMuc3RhdHVzQmFyID0gJCgKLSAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9XCdwZy1wcm9wLXN0 YXR1cy1iYXIgcGctZWwteHMtMTIgZC1ub25lXCc+JyArCi0gICAgICAgICAgICAnICA8ZGl2IGNs YXNzPSJlcnJvci1pbi1mb290ZXIiPiAnICsKLSAgICAgICAgICAgICcgICAgPGRpdiBjbGFzcz0i ZC1mbGV4IHB4LTIgcHktMSI+ICcgKwotICAgICAgICAgICAgJyAgICAgIDxkaXYgY2xhc3M9InBy LTIiPiAnICsKLSAgICAgICAgICAgICcgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1leGNsYW1hdGlv bi10cmlhbmdsZSB0ZXh0LWRhbmdlciIgYXJpYS1oaWRkZW49InRydWUiPjwvaT4gJyArCi0gICAg ICAgICAgICAnICAgICAgPC9kaXY+ICcgKwotICAgICAgICAgICAgJyAgICAgIDxkaXYgY2xhc3M9 ImFsZXJ0LXRleHQiIHJvbGU9ImFsZXJ0Ij48L2Rpdj4gJyArCi0gICAgICAgICAgICAnICAgIDwv ZGl2PiAnICsKLSAgICAgICAgICAgICcgIDwvZGl2PiAnICsKLSAgICAgICAgICAgICc8L2Rpdj4n KS5hcHBlbmRUbygkY29udGFpbmVyKTsKLQotICAgICAgICAgICAgLy8gVG8gc2hvdyBwcm9ncmVz cyBvbiBmaWx0ZXIgU2F2aW5nL1VwZGF0aW5nIG9uIEFKQVgKLSAgICAgICAgICAgIHRoaXMuc2hv d05ld0Nvbm5lY3Rpb25Qcm9ncmVzcyA9ICQoCi0gICAgICAgICAgICAgIGA8ZGl2IGlkPSJzaG93 X2ZpbHRlcl9wcm9ncmVzcyIgY2xhc3M9InBnLXNwLWNvbnRhaW5lciBzcWwtZWRpdG9yLWJ1c3kt ZmV0Y2hpbmcgZC1ub25lIj4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwZy1zcC1jb250 ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij48ZGl2IGNsYXNzPSJj b2wtMTIgcGctc3AtaWNvbiBzcWwtZWRpdG9yLWJ1c3ktaWNvbiI+PC9kaXY+PC9kaXY+Ci0gICAg ICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+PGRpdiBjbGFzcz0iY29sLTEyIHBnLXNw LXRleHQgc3FsLWVkaXRvci1idXN5LXRleHQiPmAgKyBnZXR0ZXh0KCdMb2FkaW5nIGRhdGEuLi4n KSArIGA8L2Rpdj48L2Rpdj4KLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwv ZGl2PmAKLSAgICAgICAgICAgICkuYXBwZW5kVG8oJGNvbnRhaW5lcik7Ci0gICAgICAgICAgICAk KAotICAgICAgICAgICAgICBzZWxmLnNob3dOZXdDb25uZWN0aW9uUHJvZ3Jlc3NbMF0KLSAgICAg ICAgICAgICkucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpOwotCi0gICAgICAgICAgICBzZWxmLm5ld0Nv bm5Db2xsZWN0aW9uTW9kZWwgPSBuZXdDb25uZWN0aW9uRGlhbG9nTW9kZWwocmVzcG9uc2UsIGhh bmRsZXIudXJsX3BhcmFtcy5zZ2lkLCBoYW5kbGVyLnVybF9wYXJhbXMuc2lkLCBoYW5kbGVyLCBz ZWxmKTsKLSAgICAgICAgICAgIGxldCBmaWVsZHMgPSBCYWNrZm9ybS5nZW5lcmF0ZVZpZXdTY2hl bWEobnVsbCwgc2VsZi5uZXdDb25uQ29sbGVjdGlvbk1vZGVsLCAnY3JlYXRlJywgbnVsbCwgbnVs bCwgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGxldCB2aWV3ID0gdGhpcy52aWV3ID0gbmV3IEJhY2tm b3JtLkRpYWxvZyh7Ci0gICAgICAgICAgICAgIGVsOiAnPGRpdj48L2Rpdj4nLAotICAgICAgICAg ICAgICBtb2RlbDogc2VsZi5uZXdDb25uQ29sbGVjdGlvbk1vZGVsLAotICAgICAgICAgICAgICBz Y2hlbWE6IGZpZWxkcywKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAkKHRoaXMuZWxl bWVudHMuYm9keS5jaGlsZE5vZGVzWzBdKS5hZGRDbGFzcygKLSAgICAgICAgICAgICAgJ2FsZXJ0 aWZ5X3Rvb2xzX2RpYWxvZ19wcm9wZXJ0aWVzIG9ial9wcm9wZXJ0aWVzJwotICAgICAgICAgICAg KTsKLQotICAgICAgICAgICAgJGNvbnRhaW5lci5hcHBlbmQodmlldy5yZW5kZXIoKS4kZWwpOwot Ci0gICAgICAgICAgICAvLyBFbmFibGUvZGlzYWJsZSBzYXZlIGJ1dHRvbiBhbmQgc2hvdy9oaWRl IHN0YXR1c2JhciBiYXNlZCBvbiBzZXNzaW9uCi0gICAgICAgICAgICB2aWV3Lmxpc3RlblRvKHZp ZXcubW9kZWwsICdwZ2FkbWluLXNlc3Npb246c3RhcnQnLCBmdW5jdGlvbigpIHsKLSAgICAgICAg ICAgICAgdmlldy5saXN0ZW5Ubyh2aWV3Lm1vZGVsLCAncGdhZG1pbi1zZXNzaW9uOmludmFsaWQn LCBmdW5jdGlvbihtc2cpIHsKLSAgICAgICAgICAgICAgICBzZWxmLnN0YXR1c0Jhci5yZW1vdmVD bGFzcygnZC1ub25lJyk7Ci0gICAgICAgICAgICAgICAgJChzZWxmLnN0YXR1c0Jhci5maW5kKCcu YWxlcnQtdGV4dCcpKS5odG1sKG1zZyk7Ci0gICAgICAgICAgICAgICAgLy8gRGlzYWJsZSBPa2F5 IGJ1dHRvbgotICAgICAgICAgICAgICAgIGlmKHNlbGYuX19pbnRlcm5hbCl7Ci0gICAgICAgICAg ICAgICAgICBzZWxmLl9faW50ZXJuYWwuYnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gdHJ1 ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAg IHZpZXcubGlzdGVuVG8odmlldy5tb2RlbCwgJ3BnYWRtaW4tc2Vzc2lvbjp2YWxpZCcsIGZ1bmN0 aW9uKCkgewotICAgICAgICAgICAgICAgIHNlbGYuc3RhdHVzQmFyLmFkZENsYXNzKCdkLW5vbmUn KTsKLSAgICAgICAgICAgICAgICAkKHNlbGYuc3RhdHVzQmFyLmZpbmQoJy5hbGVydC10ZXh0Jykp Lmh0bWwoJycpOwotICAgICAgICAgICAgICAgIC8vIEVuYWJsZSBPa2F5IGJ1dHRvbgotICAgICAg ICAgICAgICAgIGlmKHNlbGYuX19pbnRlcm5hbCkgewotICAgICAgICAgICAgICAgICAgc2VsZi5f X2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IGZhbHNlOwotICAgICAgICAg ICAgICAgIH0KLSAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAg ICAgdmlldy5saXN0ZW5Ubyh2aWV3Lm1vZGVsLCAncGdhZG1pbi1zZXNzaW9uOnN0b3AnLCBmdW5j dGlvbigpIHsKLSAgICAgICAgICAgICAgdmlldy5zdG9wTGlzdGVuaW5nKHZpZXcubW9kZWwsICdw Z2FkbWluLXNlc3Npb246aW52YWxpZCcpOwotICAgICAgICAgICAgICB2aWV3LnN0b3BMaXN0ZW5p bmcodmlldy5tb2RlbCwgJ3BnYWRtaW4tc2Vzc2lvbjp2YWxpZCcpOwotICAgICAgICAgICAgfSk7 Ci0KLSAgICAgICAgICAgIC8vIFN0YXJ0cyBtb25pdG9yaW5nIGNoYW5nZXMgdG8gbW9kZWwKLSAg ICAgICAgICAgIHZpZXcubW9kZWwuc3RhcnROZXdTZXNzaW9uKCk7Ci0KLSAgICAgICAgICAgIC8v IEhpZGUgUHJvZ3Jlc3MgLi4uCi0gICAgICAgICAgICAkKAotICAgICAgICAgICAgICBzZWxmLnNo b3dOZXdDb25uZWN0aW9uUHJvZ3Jlc3NbMF0KLSAgICAgICAgICAgICkuYWRkQ2xhc3MoJ2Qtbm9u ZScpOwotICAgICAgICAgIH0sCi0gICAgICAgICAgZ2V0X3RpdGxlOiBmdW5jdGlvbihxdF90aXRs ZV9wbGFjZWhvbGRlciwgc2VsZWN0ZWRfZGF0YWJhc2VfbmFtZSwgbmV3Q29ubkNvbGxlY3Rpb25N b2RlbCwgdG1wUmVzcG9uc2UpIHsKLSAgICAgICAgICAgIHF0X3RpdGxlX3BsYWNlaG9sZGVyID0g cXRfdGl0bGVfcGxhY2Vob2xkZXIucmVwbGFjZShuZXcgUmVnRXhwKCclREFUQUJBU0UlJyksIHNl bGVjdGVkX2RhdGFiYXNlX25hbWUpOwotICAgICAgICAgICAgaWYobmV3Q29ubkNvbGxlY3Rpb25N b2RlbFsncm9sZSddKSB7Ci0gICAgICAgICAgICAgIHF0X3RpdGxlX3BsYWNlaG9sZGVyID0gcXRf dGl0bGVfcGxhY2Vob2xkZXIucmVwbGFjZShuZXcgUmVnRXhwKCclVVNFUk5BTUUlJyksIG5ld0Nv bm5Db2xsZWN0aW9uTW9kZWxbJ3JvbGUnXSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAg ICAgICAgICBxdF90aXRsZV9wbGFjZWhvbGRlciA9IHF0X3RpdGxlX3BsYWNlaG9sZGVyLnJlcGxh Y2UobmV3IFJlZ0V4cCgnJVVTRVJOQU1FJScpLCBuZXdDb25uQ29sbGVjdGlvbk1vZGVsWyd1c2Vy J10pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBxdF90aXRsZV9wbGFjZWhvbGRlciA9 IHF0X3RpdGxlX3BsYWNlaG9sZGVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnJVNFUlZFUiUnKSwgdG1w UmVzcG9uc2Uuc2VydmVyX25hbWUpOwotICAgICAgICAgICAgcmV0dXJuIHF0X3RpdGxlX3BsYWNl aG9sZGVyOwotICAgICAgICAgIH0sCi0gICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGUpIHsK LSAgICAgICAgICAgIGxldCBzZWxmID0gdGhpczsKLSAgICAgICAgICAgIGlmIChlLmJ1dHRvbi5l bGVtZW50Lm5hbWUgPT0gJ2RpYWxvZ19oZWxwJykgewotICAgICAgICAgICAgICBlLmNhbmNlbCA9 IHRydWU7Ci0gICAgICAgICAgICAgIHBnQWRtaW4uQnJvd3Nlci5zaG93SGVscChlLmJ1dHRvbi5l bGVtZW50Lm5hbWUsIGUuYnV0dG9uLmVsZW1lbnQuZ2V0QXR0cmlidXRlKCd1cmwnKSwKLSAgICAg ICAgICAgICAgICBudWxsLCBudWxsKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoZS5idXR0b25b J2RhdGEtYnRuLW5hbWUnXSA9PT0gJ29rJykgewotICAgICAgICAgICAgICBlLmNhbmNlbCA9IHRy dWU7IC8vIERvIG5vdCBjbG9zZSBkaWFsb2cKLSAgICAgICAgICAgICAgbGV0IG5ld0Nvbm5Db2xs ZWN0aW9uTW9kZWwgPSB0aGlzLm5ld0Nvbm5Db2xsZWN0aW9uTW9kZWwudG9KU09OKCk7Ci0KLSAg ICAgICAgICAgICAgbGV0IHNlbGVjdGVkX2RhdGFiYXNlX25hbWUgPSBudWxsOwotICAgICAgICAg ICAgICByZXNwb25zZS5kYXRhYmFzZV9saXN0LmZvckVhY2goZnVuY3Rpb24oZGF0YSl7Ci0gICAg ICAgICAgICAgICAgaWYobmV3Q29ubkNvbGxlY3Rpb25Nb2RlbFsnZGF0YWJhc2UnXSA9PSBkYXRh Wyd2YWx1ZSddKSB7Ci0gICAgICAgICAgICAgICAgICBzZWxlY3RlZF9kYXRhYmFzZV9uYW1lID0g ZGF0YVsnbGFiZWwnXTsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg ICAgICAgICB9Ci0gICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICBsZXQgdGFiX3RpdGxl ID0gJyc7Ci0gICAgICAgICAgICAgIHZhciBxdF90aXRsZV9wbGFjZWhvbGRlciA9IHByZWZlcmVu Y2VzWydxdF90YWJfdGl0bGVfcGxhY2Vob2xkZXInXTsKLQotICAgICAgICAgICAgICB0YWJfdGl0 bGUgPSB0aGlzLmdldF90aXRsZShxdF90aXRsZV9wbGFjZWhvbGRlciwgc2VsZWN0ZWRfZGF0YWJh c2VfbmFtZSwgbmV3Q29ubkNvbGxlY3Rpb25Nb2RlbCwgcmVzcG9uc2UpOwotICAgICAgICAgICAg ICBsZXQgcXRfZGVmYXVsdF9wbGFjZWhvbGRlciA9IHBnQWRtaW5bJ3F0X2RlZmF1bHRfcGxhY2Vo b2xkZXInXTsKLSAgICAgICAgICAgICAgbGV0IGNvbm5fdGl0bGUgPSB0aGlzLmdldF90aXRsZShx dF9kZWZhdWx0X3BsYWNlaG9sZGVyLCBzZWxlY3RlZF9kYXRhYmFzZV9uYW1lLCBuZXdDb25uQ29s bGVjdGlvbk1vZGVsLCByZXNwb25zZSk7Ci0KLSAgICAgICAgICAgICAgaWYoIW5ld0Nvbm5Db2xs ZWN0aW9uTW9kZWxbJ3JvbGUnXSkgewotICAgICAgICAgICAgICAgIG5ld0Nvbm5Db2xsZWN0aW9u TW9kZWxbJ3JvbGUnXSA9IG51bGw7Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICBs ZXQgaXNfY3JlYXRlX2Nvbm5lY3Rpb24gPSB0cnVlOwotCi0gICAgICAgICAgICAgIGhhbmRsZXIu Z3JpZFZpZXcuY29ubmVjdGlvbl9saXN0LmZvckVhY2goZnVuY3Rpb24oY29ubmVjdGlvbl9kYXRh KSB7Ci0gICAgICAgICAgICAgICAgaWYocGFyc2VJbnQoY29ubmVjdGlvbl9kYXRhWydzZXJ2ZXIn XSkgPT0gbmV3Q29ubkNvbGxlY3Rpb25Nb2RlbFsnc2VydmVyJ10KLSAgICAgICAgICAgICAgICAm JiBwYXJzZUludChjb25uZWN0aW9uX2RhdGFbJ2RhdGFiYXNlJ10pID09IG5ld0Nvbm5Db2xsZWN0 aW9uTW9kZWxbJ2RhdGFiYXNlJ10KLSAgICAgICAgICAgICAgICAmJiBjb25uZWN0aW9uX2RhdGFb J3VzZXInXSA9PSBuZXdDb25uQ29sbGVjdGlvbk1vZGVsWyd1c2VyJ10gJiYgY29ubmVjdGlvbl9k YXRhWydyb2xlJ10gPT0gbmV3Q29ubkNvbGxlY3Rpb25Nb2RlbFsncm9sZSddKSB7Ci0gICAgICAg ICAgICAgICAgICBpc19jcmVhdGVfY29ubmVjdGlvbiA9IGZhbHNlOwotICAgICAgICAgICAgICAg ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSk7Ci0g ICAgICAgICAgICAgIGlmKCFpc19jcmVhdGVfY29ubmVjdGlvbikgewotICAgICAgICAgICAgICAg IGxldCBlcnJtc2cgPSAnQ29ubmVjdGlvbiB3aXRoIHRoaXMgY29uZmlndXJhdGlvbiBhbHJlYWR5 IHByZXNlbnQuJzsKLSAgICAgICAgICAgICAgICBOb3RpZnkuaW5mbyhlcnJtc2cpOwotICAgICAg ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGxldCBjb25uZWN0aW9uX2RldGFpbHMg PSB7Ci0gICAgICAgICAgICAgICAgICAnc2VydmVyX2dyb3VwJzogaGFuZGxlci5ncmlkVmlldy5o YW5kbGVyLnVybF9wYXJhbXMuc2dpZCwKLSAgICAgICAgICAgICAgICAgICdzZXJ2ZXInOiBuZXdD b25uQ29sbGVjdGlvbk1vZGVsWydzZXJ2ZXInXSwKLSAgICAgICAgICAgICAgICAgICdkYXRhYmFz ZSc6IG5ld0Nvbm5Db2xsZWN0aW9uTW9kZWxbJ2RhdGFiYXNlJ10sCi0gICAgICAgICAgICAgICAg ICAndGl0bGUnOiBfLmVzY2FwZSh0YWJfdGl0bGUpLAotICAgICAgICAgICAgICAgICAgJ2Nvbm5f dGl0bGUnOiBfLmVzY2FwZShjb25uX3RpdGxlKSwKLSAgICAgICAgICAgICAgICAgICd1c2VyJzog bmV3Q29ubkNvbGxlY3Rpb25Nb2RlbFsndXNlciddLAotICAgICAgICAgICAgICAgICAgJ3JvbGUn OiBuZXdDb25uQ29sbGVjdGlvbk1vZGVsWydyb2xlJ10sCi0gICAgICAgICAgICAgICAgICAnc2Vy dmVyX25hbWUnOiBfLmVzY2FwZShyZXNwb25zZS5zZXJ2ZXJfbmFtZSksCi0gICAgICAgICAgICAg ICAgICAnZGF0YWJhc2VfbmFtZSc6IF8uZXNjYXBlKHNlbGVjdGVkX2RhdGFiYXNlX25hbWUpLAot ICAgICAgICAgICAgICAgICAgJ3Bhc3N3b3JkJzogcmVzcG9uc2UucGFzc3dvcmQsCi0gICAgICAg ICAgICAgICAgICAnaXNfc2VsZWN0ZWQnOiBmYWxzZSwKLSAgICAgICAgICAgICAgICB9OwotICAg ICAgICAgICAgICAgIGhhbmRsZXIuZ3JpZFZpZXcub25fY2hhbmdlX2Nvbm5lY3Rpb24oY29ubmVj dGlvbl9kZXRhaWxzLCBzZWxmKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNl IHsKLSAgICAgICAgICAgICAgQWxlcnRpZnkubmV3Q29ubmVjdGlvbkRpYWxvZygpLmRlc3Ryb3ko KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9LAotICAgICAgICB9OwotICAgICAgfSk7Ci0K LSAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKXsKLSAgICAgICAgQWxlcnRpZnkubmV3Q29ubmVj dGlvbkRpYWxvZygnQ29ubmVjdCB0byBzZXJ2ZXIuJykucmVzaXplVG8ocGdBZG1pbi5Ccm93c2Vy LnN0ZFcubWQscGdBZG1pbi5Ccm93c2VyLnN0ZEgubWQpOwotICAgICAgfSwgNTAwKTsKLSAgICB9 KS5mYWlsKGZ1bmN0aW9uKCkgewotICAgICAgTm90aWZ5LmFsZXJ0KCkuc2V0dGluZyh7Ci0gICAg ICAgICd0aXRsZSc6IGdldHRleHQoJ0Nvbm5lY3Rpb24gbG9zdCcpLAotICAgICAgICAnbGFiZWwn OmdldHRleHQoJ09LJyksCi0gICAgICAgICdtZXNzYWdlJzogZ2V0dGV4dCgnQ29ubmVjdGlvbiB0 byB0aGUgc2VydmVyIGhhcyBiZWVuIGxvc3QuJyksCi0gICAgICAgICdvbm9rJzogZnVuY3Rpb24o KXsKLSAgICAgICAgICAvL0Nsb3NlIHRoZSB3aW5kb3cgYWZ0ZXIgY29ubmVjdGlvbiBpcyBsb3N0 Ci0gICAgICAgICAgd2luZG93LmNsb3NlKCk7Ci0gICAgICAgIH0sCi0gICAgICB9KS5zaG93KCk7 Ci0gICAgfSk7Ci0KLSAgfSwKLQotfTsKLQotbW9kdWxlLmV4cG9ydHMgPSBOZXdDb25uZWN0aW9u RGlhbG9nOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9uZXdf Y29ubmVjdGlvbl9kaWFsb2dfbW9kZWwuanMgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMvc3FsZWRp dG9yL25ld19jb25uZWN0aW9uX2RpYWxvZ19tb2RlbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMmQ4NGJmZTZlLi4wMDAwMDAwMDAKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pz L3NxbGVkaXRvci9uZXdfY29ubmVjdGlvbl9kaWFsb2dfbW9kZWwuanMKKysrIC9kZXYvbnVsbApA QCAtMSw0NzMgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9v bHMKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCi0vLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3Jl U1FMIExpY2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1pbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dl dHRleHQnOwotaW1wb3J0IF8gZnJvbSAndW5kZXJzY29yZSc7Ci1pbXBvcnQgJCBmcm9tICdqcXVl cnknOwotaW1wb3J0IHBnQWRtaW4gZnJvbSAnc291cmNlcy9wZ2FkbWluJzsKLWltcG9ydCBCYWNr Zm9ybSBmcm9tICdwZ2FkbWluLmJhY2tmb3JtJzsKLWltcG9ydCB1cmxfZm9yIGZyb20gJ3NvdXJj ZXMvdXJsX2Zvcic7Ci1pbXBvcnQgYWxlcnRpZnkgZnJvbSAncGdhZG1pbi5hbGVydGlmeWpzJzsK LWltcG9ydCBOb3RpZnkgZnJvbSAnLi4vaGVscGVycy9Ob3RpZmllcic7Ci0KLQotZXhwb3J0IGRl ZmF1bHQgZnVuY3Rpb24gbmV3Q29ubmVjdGlvbkRpYWxvZ01vZGVsKHJlc3BvbnNlLCBzZ2lkLCBz aWQsIGhhbmRsZXIsIGNvbm5fc2VsZikgewotCi0gIGxldCBzZXJ2ZXJfbmFtZSA9ICcnOwotICBs ZXQgZGF0YWJhc2VfbmFtZSA9ICcnOwotCi0gIGxldCBOZXdDb25uZWN0aW9uU2VsZWN0MkNvbnRy b2wgPSBCYWNrZm9ybS5TZWxlY3QyQ29udHJvbC5leHRlbmQoewotICAgIGZldGNoRGF0YTogZnVu Y3Rpb24oKXsKLSAgICAgIGxldCBzZWxmID0gdGhpczsKLSAgICAgIGxldCB1cmwgPSBzZWxmLmZp ZWxkLmdldCgndXJsJyk7Ci0KLSAgICAgIHVybCA9IHVybF9mb3IodXJsLCB7Ci0gICAgICAgICdz aWQnOiBzZWxmLm1vZGVsLmF0dHJpYnV0ZXMuc2VydmVyLAotICAgICAgICAnc2dpZCc6IHNnaWQs Ci0gICAgICB9KTsKLQotICAgICAgJC5hamF4KHsKLSAgICAgICAgdXJsOiB1cmwsCi0gICAgICAg IGhlYWRlcnM6IHsKLSAgICAgICAgICAnQ2FjaGUtQ29udHJvbCcgOiAnbm8tY2FjaGUnLAotICAg ICAgICB9LAotICAgICAgfSkuZG9uZShmdW5jdGlvbiAocmVzKSB7Ci0gICAgICAgIHZhciB0cmFu c2Zvcm0gPSBzZWxmLmZpZWxkLmdldCgndHJhbnNmb3JtJyk7Ci0gICAgICAgIGlmKHJlcy5kYXRh LnN0YXR1cyl7Ci0gICAgICAgICAgbGV0IGRhdGEgPSByZXMuZGF0YS5yZXN1bHQuZGF0YTsKLQot ICAgICAgICAgIGlmICh0cmFuc2Zvcm0gJiYgXy5pc0Z1bmN0aW9uKHRyYW5zZm9ybSkpIHsKLSAg ICAgICAgICAgIHNlbGYuZmllbGQuc2V0KCdvcHRpb25zJywgdHJhbnNmb3JtLmJpbmQoc2VsZiwg ZGF0YSkpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzZWxmLmZpZWxkLnNldCgn b3B0aW9ucycsIGRhdGEpOwotICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg ICBpZiAodHJhbnNmb3JtICYmIF8uaXNGdW5jdGlvbih0cmFuc2Zvcm0pKSB7Ci0gICAgICAgICAg ICBzZWxmLmZpZWxkLnNldCgnb3B0aW9ucycsIHRyYW5zZm9ybS5iaW5kKHNlbGYsIFtdKSk7Ci0g ICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNlbGYuZmllbGQuc2V0KCdvcHRpb25zJywg W10pOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBCYWNrZm9ybS5TZWxlY3QyQ29u dHJvbC5wcm90b3R5cGUucmVuZGVyLmFwcGx5KHNlbGYsIGFyZ3VtZW50cyk7Ci0gICAgICB9KS5m YWlsKGZ1bmN0aW9uKGUpewotICAgICAgICBsZXQgbXNnID0gJyc7Ci0gICAgICAgIGlmKGUuc3Rh dHVzID09IDQwNCkgewotICAgICAgICAgIG1zZyA9ICdVbmFibGUgdG8gZmluZCB1cmwuJzsKLSAg ICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBtc2cgPSBlLnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsK LSAgICAgICAgfQotICAgICAgICBOb3RpZnkuZXJyb3IobXNnKTsKLSAgICAgIH0pOwotICAgIH0s Ci0gICAgcmVuZGVyOiBmdW5jdGlvbigpIHsKLSAgICAgIHRoaXMuZmV0Y2hEYXRhKCk7Ci0gICAg ICByZXR1cm4gQmFja2Zvcm0uU2VsZWN0MkNvbnRyb2wucHJvdG90eXBlLnJlbmRlci5hcHBseSh0 aGlzLCBhcmd1bWVudHMpOwotICAgIH0sCi0gICAgb25DaGFuZ2U6IGZ1bmN0aW9uKCkgewotICAg ICAgQmFja2Zvcm0uU2VsZWN0MkNvbnRyb2wucHJvdG90eXBlLm9uQ2hhbmdlLmFwcGx5KHRoaXMs IGFyZ3VtZW50cyk7Ci0gICAgfSwKLSAgfSk7Ci0KLSAgdmFyIGZvcm1hdE5vZGUgPSBmdW5jdGlv biAob3B0KSB7Ci0gICAgaWYgKCFvcHQuaWQpIHsKLSAgICAgIHJldHVybiBvcHQudGV4dDsKLSAg ICB9Ci0KLSAgICB2YXIgb3B0aW1hZ2UgPSAkKG9wdC5lbGVtZW50KS5kYXRhKCdpbWFnZScpOwot Ci0gICAgaWYgKCFvcHRpbWFnZSkgewotICAgICAgcmV0dXJuIG9wdC50ZXh0OwotICAgIH0gZWxz ZSB7Ci0gICAgICByZXR1cm4gJCgnPHNwYW4+PC9zcGFuPicpLmFwcGVuZCgKLSAgICAgICAgJCgn PHNwYW4+PC9zcGFuPicsIHsKLSAgICAgICAgICBjbGFzczogJ3djVGFiSWNvbiAnICsgb3B0aW1h Z2UsCi0gICAgICAgIH0pCi0gICAgICApLmFwcGVuZCgkKCc8c3Bhbj48L3NwYW4+JykudGV4dChv cHQudGV4dCkpOwotICAgIH0KLSAgfTsKLQotICBsZXQgbmV3Q29ubmVjdGlvbk1vZGVsID0gcGdB ZG1pbi5Ccm93c2VyLkRhdGFNb2RlbC5leHRlbmQoewotICAgIGlkQXR0cmlidXRlOiAnbmFtZScs Ci0gICAgZGVmYXVsdHM6IHsKLSAgICAgIHNlcnZlcjogcGFyc2VJbnQoc2lkKSwKLSAgICAgIGRh dGFiYXNlOiBudWxsLAotICAgICAgdXNlcjogbnVsbCwKLSAgICAgIHNlcnZlcl9uYW1lOiBzZXJ2 ZXJfbmFtZSwKLSAgICAgIGRhdGFiYXNlX25hbWU6IGRhdGFiYXNlX25hbWUsCi0gICAgfSwKLSAg ICBzY2hlbWE6IFsKLSAgICAgIHsKLSAgICAgICAgaWQ6ICdzZXJ2ZXInLAotICAgICAgICBuYW1l OiAnc2VydmVyJywKLSAgICAgICAgbGFiZWw6IGdldHRleHQoJ1NlcnZlcicpLAotICAgICAgICB0 eXBlOiAndGV4dCcsCi0gICAgICAgIGVkaXRhYmxlOiB0cnVlLAotICAgICAgICBkaXNhYmxlZDog ZmFsc2UsCi0gICAgICAgIHNlbGVjdDI6IHsKLSAgICAgICAgICBhbGxvd0NsZWFyOiBmYWxzZSwK LSAgICAgICAgICB3aWR0aDogJ3N0eWxlJywKLSAgICAgICAgICB0ZW1wbGF0ZVJlc3VsdDogZm9y bWF0Tm9kZSwKLSAgICAgICAgICB0ZW1wbGF0ZVNlbGVjdGlvbjogZm9ybWF0Tm9kZSwKLSAgICAg ICAgfSwKLSAgICAgICAgZXZlbnRzOiB7Ci0gICAgICAgICAgJ2ZvY3VzIHNlbGVjdCc6ICdjbGVh ckludmFsaWQnLAotICAgICAgICAgICdrZXlkb3duIDppbnB1dCc6ICdwcm9jZXNzVGFiJywKLSAg ICAgICAgICAnc2VsZWN0MjpzZWxlY3QnOiAnb25TZWxlY3QnLAotICAgICAgICAgICdzZWxlY3Qy OnNlbGVjdGluZyc6ICdiZWZvcmVTZWxlY3QnLAotICAgICAgICAgICdzZWxlY3QyOmNsZWFyJzog J29uQ2hhbmdlJywKLSAgICAgICAgfSwKLSAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihkYXRh KSB7Ci0gICAgICAgICAgbGV0IGdyb3VwX3RlbXBsYXRlX29wdGlvbnMgPSBbXTsKLSAgICAgICAg ICBmb3IgKGxldCBrZXkgaW4gZGF0YSkgewotICAgICAgICAgICAgaWYgKGRhdGEuaGFzT3duUHJv cGVydHkoa2V5KSkgewotICAgICAgICAgICAgICBncm91cF90ZW1wbGF0ZV9vcHRpb25zLnB1c2go eydncm91cCc6IGtleSwgJ29wdHZhbCc6IGRhdGFba2V5XX0pOwotICAgICAgICAgICAgfQotICAg ICAgICAgIH0KLSAgICAgICAgICByZXR1cm4gZ3JvdXBfdGVtcGxhdGVfb3B0aW9uczsKLSAgICAg ICAgfSwKLSAgICAgICAgY29udHJvbDogQmFja2Zvcm0uU2VsZWN0MkNvbnRyb2wuZXh0ZW5kKHsK LSAgICAgICAgICB0ZW1wbGF0ZTogXy50ZW1wbGF0ZShbCi0gICAgICAgICAgICAnPCUgaWYobGFi ZWwgPT0gZmFsc2UpIHt9IGVsc2UgeyU+JywKLSAgICAgICAgICAgICcgIDxsYWJlbCBjbGFzcz0i PCU9QmFja2Zvcm0uY29udHJvbExhYmVsQ2xhc3NOYW1lJT4iPjwlPWxhYmVsJT48L2xhYmVsPics Ci0gICAgICAgICAgICAnPCUgfSU+JywKLSAgICAgICAgICAgICc8ZGl2IGNsYXNzPSI8JT1jb250 cm9sc0NsYXNzTmFtZSU+Ij4nLAotICAgICAgICAgICAgJyA8c2VsZWN0IGNsYXNzPSI8JT1CYWNr Zm9ybS5jb250cm9sQ2xhc3NOYW1lJT4gPCU9ZXh0cmFDbGFzc2VzLmpvaW4oXCcgXCcpJT4iJywK LSAgICAgICAgICAgICcgIG5hbWU9IjwlPW5hbWUlPiIgdmFsdWU9IjwlLXZhbHVlJT4iIDwlPWRp c2FibGVkID8gImRpc2FibGVkIiA6ICIiJT4nLAotICAgICAgICAgICAgJyAgPCU9cmVxdWlyZWQg PyAicmVxdWlyZWQiIDogIiIlPjwlPSBzZWxlY3QyLm11bHRpcGxlID8gIiBtdWx0aXBsZT4iIDog Ij4iICU+JywKLSAgICAgICAgICAgICcgIDwlPXNlbGVjdDIuZmlyc3RfZW1wdHkgPyAiIDxvcHRp b24+PC9vcHRpb24+IiA6ICIiJT4nLAotICAgICAgICAgICAgJyAgPCUgZm9yICh2YXIgaT0wOyBp IDwgb3B0aW9ucy5sZW5ndGg7IGkrKykgeyU+JywKLSAgICAgICAgICAgICcgICA8JSBpZiAob3B0 aW9uc1tpXS5ncm91cCkgeyAlPicsCi0gICAgICAgICAgICAnICAgICA8JSB2YXIgZ3JvdXAgPSBv cHRpb25zW2ldLmdyb3VwOyAlPicsCi0gICAgICAgICAgICAnICAgICA8JSBpZiAob3B0aW9uc1tp XS5vcHR2YWwpIHsgJT4gPCUgdmFyIG9wdGlvbl9sZW5ndGggPSBvcHRpb25zW2ldLm9wdHZhbC5s ZW5ndGg7ICU+JywKLSAgICAgICAgICAgICcgICAgICA8b3B0Z3JvdXAgbGFiZWw9IjwlPWdyb3Vw JT4iPicsCi0gICAgICAgICAgICAnICAgICAgPCUgZm9yICh2YXIgc3ViaW5kZXg9MDsgc3ViaW5k ZXggPCBvcHRpb25fbGVuZ3RoOyBzdWJpbmRleCsrKSB7JT4nLAotICAgICAgICAgICAgJyAgICAg ICAgPCUgdmFyIG9wdGlvbiA9IG9wdGlvbnNbaV0ub3B0dmFsW3N1YmluZGV4XTsgJT4nLAotICAg ICAgICAgICAgJyAgICAgICAgPG9wdGlvbiAnLAotICAgICAgICAgICAgJyAgICAgICAgPCUgaWYg KG9wdGlvbi5pbWFnZSkgeyAlPiBkYXRhLWltYWdlPTwlPW9wdGlvbi5pbWFnZSU+IDwlfSU+JywK LSAgICAgICAgICAgICcgICAgICAgIDwlIGlmIChvcHRpb24uY29ubmVjdGVkKSB7ICU+IGRhdGEt Y29ubmVjdGVkPWNvbm5lY3RlZCA8JX0lPicsCi0gICAgICAgICAgICAnICAgICAgICB2YWx1ZT08 JS0gZm9ybWF0dGVyLmZyb21SYXcob3B0aW9uLnZhbHVlKSAlPicsCi0gICAgICAgICAgICAnICAg ICAgICA8JSBpZiAob3B0aW9uLnNlbGVjdGVkKSB7JT5zZWxlY3RlZD0ic2VsZWN0ZWQiPCV9IGVs c2UgeyU+JywKLSAgICAgICAgICAgICcgICAgICAgIDwlIGlmICghc2VsZWN0Mi5tdWx0aXBsZSAm JiBvcHRpb24udmFsdWUgPT09IHJhd1ZhbHVlKSB7JT5zZWxlY3RlZD0ic2VsZWN0ZWQiPCV9JT4n LAotICAgICAgICAgICAgJyAgICAgICAgPCUgaWYgKHNlbGVjdDIubXVsdGlwbGUgJiYgcmF3VmFs dWUgJiYgcmF3VmFsdWUuaW5kZXhPZihvcHRpb24udmFsdWUpICE9IC0xKXslPnNlbGVjdGVkPSJz ZWxlY3RlZCIgZGF0YS1pbmRleD0icmF3VmFsdWUuaW5kZXhPZihvcHRpb24udmFsdWUpIjwlfSU+ JywKLSAgICAgICAgICAgICcgICAgICAgIDwlfSU+JywKLSAgICAgICAgICAgICcgICAgICAgIDwl PSBkaXNhYmxlZCA/ICJkaXNhYmxlZCIgOiAiIiU+PjwlLW9wdGlvbi5sYWJlbCU+PC9vcHRpb24+ JywKLSAgICAgICAgICAgICcgICAgICA8JX0lPicsCi0gICAgICAgICAgICAnICAgICAgPC9vcHRn cm91cD4nLAotICAgICAgICAgICAgJyAgICAgPCV9JT4nLAotICAgICAgICAgICAgJyAgIDwlfSBl bHNlIHslPicsCi0gICAgICAgICAgICAnICAgICA8JSB2YXIgb3B0aW9uID0gb3B0aW9uc1tpXTsg JT4nLAotICAgICAgICAgICAgJyAgICAgPG9wdGlvbiAnLAotICAgICAgICAgICAgJyAgICAgPCUg aWYgKG9wdGlvbi5pbWFnZSkgeyAlPiBkYXRhLWltYWdlPTwlPW9wdGlvbi5pbWFnZSU+IDwlfSU+ JywKLSAgICAgICAgICAgICcgICAgIDwlIGlmIChvcHRpb24uY29ubmVjdGVkKSB7ICU+IGRhdGEt Y29ubmVjdGVkPWNvbm5lY3RlZCA8JX0lPicsCi0gICAgICAgICAgICAnICAgICB2YWx1ZT08JS0g Zm9ybWF0dGVyLmZyb21SYXcob3B0aW9uLnZhbHVlKSAlPicsCi0gICAgICAgICAgICAnICAgICA8 JSBpZiAob3B0aW9uLnNlbGVjdGVkKSB7JT5zZWxlY3RlZD0ic2VsZWN0ZWQiPCV9IGVsc2UgeyU+ JywKLSAgICAgICAgICAgICcgICAgIDwlIGlmICghc2VsZWN0Mi5tdWx0aXBsZSAmJiBvcHRpb24u dmFsdWUgPT09IHJhd1ZhbHVlKSB7JT5zZWxlY3RlZD0ic2VsZWN0ZWQiPCV9JT4nLAotICAgICAg ICAgICAgJyAgICAgPCUgaWYgKHNlbGVjdDIubXVsdGlwbGUgJiYgcmF3VmFsdWUgJiYgcmF3VmFs dWUuaW5kZXhPZihvcHRpb24udmFsdWUpICE9IC0xKXslPnNlbGVjdGVkPSJzZWxlY3RlZCIgZGF0 YS1pbmRleD0icmF3VmFsdWUuaW5kZXhPZihvcHRpb24udmFsdWUpIjwlfSU+JywKLSAgICAgICAg ICAgICcgICAgIDwlfSU+JywKLSAgICAgICAgICAgICcgICAgIDwlPSBkaXNhYmxlZCA/ICJkaXNh YmxlZCIgOiAiIiU+PjwlLW9wdGlvbi5sYWJlbCU+PC9vcHRpb24+JywKLSAgICAgICAgICAgICcg ICA8JX0lPicsCi0gICAgICAgICAgICAnICA8JX0lPicsCi0gICAgICAgICAgICAnIDwvc2VsZWN0 PicsCi0gICAgICAgICAgICAnIDwlIGlmIChoZWxwTWVzc2FnZSAmJiBoZWxwTWVzc2FnZS5sZW5n dGgpIHsgJT4nLAotICAgICAgICAgICAgJyA8c3BhbiBjbGFzcz0iPCU9QmFja2Zvcm0uaGVscE1l c3NhZ2VDbGFzc05hbWUlPiI+PCU9aGVscE1lc3NhZ2UlPjwvc3Bhbj4nLAotICAgICAgICAgICAg JyA8JSB9ICU+JywKLSAgICAgICAgICAgICc8L2Rpdj4nLAotICAgICAgICAgIF0uam9pbignXG4n KSksCi0gICAgICAgICAgYmVmb3JlU2VsZWN0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHZh ciBzZWxWYWwgPSBhcmd1bWVudHNbMF0ucGFyYW1zLmFyZ3MuZGF0YS5pZDsKLQotICAgICAgICAg ICAgaWYodGhpcy5maWVsZC5nZXQoJ2Nvbm5lY3QnKSAmJiB0aGlzLiRlbC5maW5kKCdvcHRpb25b dmFsdWU9Iicrc2VsVmFsKyciXScpLmF0dHIoJ2RhdGEtY29ubmVjdGVkJykgIT09ICdjb25uZWN0 ZWQnKSB7Ci0gICAgICAgICAgICAgIHRoaXMuZmllbGQuZ2V0KCdjb25uZWN0JykuYXBwbHkodGhp cywgW3NlbFZhbCwgdGhpcy5jaGFuZ2VJY29uLmJpbmQodGhpcyldKTsKLSAgICAgICAgICAgIH0g ZWxzZSB7Ci0gICAgICAgICAgICAgICQodGhpcy4kc2VsKS50cmlnZ2VyKCdjaGFuZ2UnKTsKLSAg ICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpeyB0aGlzLm9uQ2hhbmdlLmFwcGx5KHRo aXMpOyB9LmJpbmQodGhpcyksIDIwMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSwKLSAg ICAgICAgICBjaGFuZ2VJY29uOiBmdW5jdGlvbihkYXRhKSB7Ci0gICAgICAgICAgICBsZXQgc3Bh biA9IHRoaXMuJGVsLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbiAuc2VsZWN0Mi1zZWxlY3Rpb25f X3JlbmRlcmVkIHNwYW4ud2NUYWJJY29uJyksCi0gICAgICAgICAgICAgIHNlbFNwYW4gPSB0aGlz LiRlbC5maW5kKCdvcHRpb246c2VsZWN0ZWQnKTsKLQotICAgICAgICAgICAgaWYgKHNwYW4uaGFz Q2xhc3MoJ2ljb24tc2VydmVyLW5vdC1jb25uZWN0ZWQnKSB8fCBzcGFuLmhhc0NsYXNzKCdpY29u LXNoYXJlZC1zZXJ2ZXItbm90LWNvbm5lY3RlZCcpKSB7Ci0gICAgICAgICAgICAgIGxldCBpY29u ID0gKGRhdGEuaWNvbikgPyBkYXRhLmljb24gOiAnaWNvbi1wZyc7Ci0gICAgICAgICAgICAgIHNw YW4ucmVtb3ZlQ2xhc3MoJ2ljb24tc2VydmVyLW5vdC1jb25uZWN0ZWQnKTsKLSAgICAgICAgICAg ICAgc3Bhbi5hZGRDbGFzcyhpY29uKTsKLSAgICAgICAgICAgICAgc3Bhbi5hdHRyKCdkYXRhLWNv bm5lY3RlZCcsICdjb25uZWN0ZWQnKTsKLQotICAgICAgICAgICAgICBzZWxTcGFuLmRhdGEoKS5p bWFnZSA9IGljb247Ci0gICAgICAgICAgICAgIHNlbFNwYW4uYXR0cignZGF0YS1jb25uZWN0ZWQn LCAnY29ubmVjdGVkJyk7Ci0gICAgICAgICAgICAgIGFsZXJ0aWZ5LmNvbm5lY3RTZXJ2ZXIoKS5k ZXN0cm95KCk7Ci0gICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuYXBwbHkodGhpcyk7Ci0gICAg ICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChzcGFuLmhhc0NsYXNzKCdpY29uLWRhdGFi YXNlLW5vdC1jb25uZWN0ZWQnKSkgewotICAgICAgICAgICAgICBsZXQgaWNvbiA9IChkYXRhLmlj b24pID8gZGF0YS5pY29uIDogJ3BnLWljb24tZGF0YWJhc2UnOwotCi0gICAgICAgICAgICAgIHNw YW4ucmVtb3ZlQ2xhc3MoJ2ljb24tZGF0YWJhc2Utbm90LWNvbm5lY3RlZCcpOwotICAgICAgICAg ICAgICBzcGFuLmFkZENsYXNzKGljb24pOwotICAgICAgICAgICAgICBzcGFuLmF0dHIoJ2RhdGEt Y29ubmVjdGVkJywgJ2Nvbm5lY3RlZCcpOwotCi0gICAgICAgICAgICAgIHNlbFNwYW4ucmVtb3Zl Q2xhc3MoJ2ljb24tZGF0YWJhc2Utbm90LWNvbm5lY3RlZCcpOwotICAgICAgICAgICAgICBzZWxT cGFuLmRhdGEoKS5pbWFnZSA9IGljb247Ci0gICAgICAgICAgICAgIHNlbFNwYW4uYXR0cignZGF0 YS1jb25uZWN0ZWQnLCAnY29ubmVjdGVkJyk7Ci0gICAgICAgICAgICAgIGFsZXJ0aWZ5LmNvbm5l Y3RTZXJ2ZXIoKS5kZXN0cm95KCk7Ci0gICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UuYXBwbHko dGhpcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSwKLSAgICAgICAgICBjb25uZWN0OiBm dW5jdGlvbihzZWxmKSB7Ci0gICAgICAgICAgICBsZXQgbG9jYWxfc2VsZiA9IHNlbGY7Ci0KLSAg ICAgICAgICAgIGlmKGFsZXJ0aWZ5LmNvbm5lY3RTZXJ2ZXIpIHsKLSAgICAgICAgICAgICAgZGVs ZXRlIGFsZXJ0aWZ5LmNvbm5lY3RTZXJ2ZXI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAg IGFsZXJ0aWZ5LmRpYWxvZygnY29ubmVjdFNlcnZlcicsIGZ1bmN0aW9uIGZhY3RvcnkoKSB7Ci0g ICAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgbWFpbjogZnVuY3Rpb24oCi0g ICAgICAgICAgICAgICAgICB0aXRsZSwgbWVzc2FnZSwgc2VydmVyX2lkLCBzdWJtaXRfcGFzc3dv cmQ9dHJ1ZSwgY29ubmVjdF9zZXJ2ZXI9bnVsbCwKLSAgICAgICAgICAgICAgICApIHsKLSAgICAg ICAgICAgICAgICAgIHRoaXMuc2V0KCd0aXRsZScsIHRpdGxlKTsKLSAgICAgICAgICAgICAgICAg IHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7Ci0gICAgICAgICAgICAgICAgICB0aGlzLnNlcnZlcl9p ZCA9IHNlcnZlcl9pZDsKLSAgICAgICAgICAgICAgICAgIHRoaXMuc3VibWl0X3Bhc3N3b3JkID0g c3VibWl0X3Bhc3N3b3JkOwotICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0X3NlcnZlciA9 IGNvbm5lY3Rfc2VydmVyOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgc2V0 dXA6ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAg ICAgICAgICBidXR0b25zOlt7Ci0gICAgICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgn Q2FuY2VsJyksIGNsYXNzTmFtZTogJ2J0biBidG4tc2Vjb25kYXJ5IGZhIGZhLXRpbWVzIHBnLWFs ZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAgICAgICAgICAgICAgICAga2V5OiAyNywKLSAgICAgICAg ICAgICAgICAgICAgfSx7Ci0gICAgICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnT0sn KSwga2V5OiAxMywgY2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLWNoZWNrIHBnLWFs ZXJ0aWZ5LWJ1dHRvbicsCi0gICAgICAgICAgICAgICAgICAgIH1dLAotICAgICAgICAgICAgICAg ICAgICBmb2N1czoge2VsZW1lbnQ6ICcjcGFzc3dvcmQnLCBzZWxlY3Q6IHRydWV9LAotICAgICAg ICAgICAgICAgICAgICBvcHRpb25zOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgbW9kYWw6IDAs IHJlc2l6YWJsZTogZmFsc2UsIG1heGltaXphYmxlOiBmYWxzZSwgcGlubmFibGU6IGZhbHNlLAot ICAgICAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICAgfTsKLSAgICAgICAgICAg ICAgICB9LAotICAgICAgICAgICAgICAgIGJ1aWxkOmZ1bmN0aW9uKCkgeyAvKlRoaXMgaXMgaW50 ZW50aW9uYWwgKFNvbmFyUXViZSkqLwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg ICAgcHJlcGFyZTpmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29udGVu dCh0aGlzLm1lc3NhZ2UpOwotICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgICAgY2Fs bGJhY2s6IGZ1bmN0aW9uKGNsb3NlRXZlbnQpIHsKLSAgICAgICAgICAgICAgICAgIHZhciBsb2Fk aW5nRGl2ID0gJCgnI3Nob3dfZmlsdGVyX3Byb2dyZXNzJyk7Ci0gICAgICAgICAgICAgICAgICBp ZiAoY2xvc2VFdmVudC5idXR0b24udGV4dCA9PSBnZXR0ZXh0KCdPSycpKSB7Ci0gICAgICAgICAg ICAgICAgICAgIGlmKHRoaXMuc3VibWl0X3Bhc3N3b3JkKSB7Ci0gICAgICAgICAgICAgICAgICAg ICAgdmFyIF91cmwgPSB1cmxfZm9yKCdzcWxlZGl0b3IuY29ubmVjdF9zZXJ2ZXInLCB7J3NpZCc6 IHRoaXMuc2VydmVyX2lkfSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nRGl2LnJl bW92ZUNsYXNzKCdkLW5vbmUnKTsKLSAgICAgICAgICAgICAgICAgICAgICAkLmFqYXgoewotICAg ICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ1BPU1QnLAotICAgICAgICAgICAgICAgICAgICAg ICAgdGltZW91dDogMzAwMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IF91cmwsCi0g ICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiAkKCcjZnJtUGFzc3dvcmQnKS5zZXJpYWxpemUo KSwKLSAgICAgICAgICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAgICAgICAgICAgLmRv bmUoZnVuY3Rpb24ocmVzKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfc2Vs Zi5tb2RlbC5hdHRyaWJ1dGVzLmRhdGFiYXNlID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgbG9jYWxfc2VsZi5jaGFuZ2VJY29uKHJlcy5kYXRhKTsKLSAgICAgICAgICAgICAgICAg ICAgICAgICAgbG9jYWxfc2VsZi5tb2RlbC5hdHRyaWJ1dGVzLnVzZXIgPSBudWxsOwotICAgICAg ICAgICAgICAgICAgICAgICAgICBsb2NhbF9zZWxmLm1vZGVsLmF0dHJpYnV0ZXMucm9sZSA9IG51 bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2tmb3JtLlNlbGVjdDJDb250cm9sLnBy b3RvdHlwZS5vbkNoYW5nZS5hcHBseShsb2NhbF9zZWxmLCBhcmd1bWVudHMpOwotICAgICAgICAg ICAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXNwb25zZS5zZXJ2ZXJfbGlzdCkuZm9yRWFj aChrZXkgPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNlcnZlcl9s aXN0W2tleV0uZm9yRWFjaChvcHRpb24gPT4gewotICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaWYgKG9wdGlvbi52YWx1ZSA9PSBsb2NhbF9zZWxmLmdldFZhbHVlRnJvbURPTSgpKSB7Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnNlcnZlcl9uYW1lID0gb3B0 aW9uLmxhYmVsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKLQotICAg ICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nRGl2LmFkZENsYXNzKCdkLW5vbmUnKTsKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgYWxlcnRpZnkuY29ubmVjdFNlcnZlcigpLmRlc3Ryb3ko KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgICAgICAgICAgICAu ZmFpbChmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZ0Rp di5hZGRDbGFzcygnZC1ub25lJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5 LmNvbm5lY3RTZXJ2ZXIoKS5kZXN0cm95KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIGFs ZXJ0aWZ5LmNvbm5lY3RTZXJ2ZXIoJ0Nvbm5lY3QgdG8gc2VydmVyJywgeGhyLnJlc3BvbnNlSlNP Ti5yZXN1bHQsIGxvY2FsX3NlbGYuZ2V0VmFsdWVGcm9tRE9NKCkpOwotICAgICAgICAgICAgICAg ICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAg ICAgICAgICAgaWYoT2JqZWN0LmtleXModGhpcy5jb25uZWN0X3NlcnZlcikubGVuZ3RoID4gMCkg ewotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb25uZWN0X3NlcnZlclsncGFzc3dvcmQn XSA9ICQoJyNwYXNzd29yZCcpLnZhbCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5j b25uZWN0X3NlcnZlclsnaXNfc2VsZWN0ZWQnXSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAg ICAgICAgaGFuZGxlci5ncmlkVmlldy5vbl9jaGFuZ2VfY29ubmVjdGlvbih0aGlzLmNvbm5lY3Rf c2VydmVyLCBjb25uX3NlbGYsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRp bmdEaXYgPSAkKCcjZmV0Y2hpbmdfZGF0YScpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9h ZGluZ0Rpdi5hZGRDbGFzcygnZC1ub25lJyk7Ci0gICAgICAgICAgICAgICAgICAgICAgfSBlbHNl IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLnBhc3N3b3JkID0gJCgnI3Bhc3N3 b3JkJykudmFsKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nRGl2LmFkZENsYXNz KCdkLW5vbmUnKTsKLSAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg IH0KLSAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvY2Fs X3NlbGYubW9kZWwuYXR0cmlidXRlcy5kYXRhYmFzZSA9IG51bGw7Ci0gICAgICAgICAgICAgICAg ICAgIGxvY2FsX3NlbGYubW9kZWwuYXR0cmlidXRlcy51c2VyID0gbnVsbDsKLSAgICAgICAgICAg ICAgICAgICAgbG9jYWxfc2VsZi5tb2RlbC5hdHRyaWJ1dGVzLnJvbGUgPSBudWxsOwotICAgICAg ICAgICAgICAgICAgICBCYWNrZm9ybS5TZWxlY3QyQ29udHJvbC5wcm90b3R5cGUub25DaGFuZ2Uu YXBwbHkobG9jYWxfc2VsZiwgYXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICAgICAgbG9hZGlu Z0Rpdi5hZGRDbGFzcygnZC1ub25lJyk7Ci0gICAgICAgICAgICAgICAgICAgIGFsZXJ0aWZ5LmNv bm5lY3RTZXJ2ZXIoKS5kZXN0cm95KCk7Ci0KLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICAgIGNsb3NlRXZlbnQuY2xvc2UgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0sCi0g ICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICB9LAotICAgICAgICAg IHJlbmRlcjogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7Ci0gICAg ICAgICAgICBzZWxmLmNvbm5lY3Qoc2VsZik7Ci0gICAgICAgICAgICBPYmplY3Qua2V5cyhyZXNw b25zZS5zZXJ2ZXJfbGlzdCkuZm9yRWFjaChrZXkgPT4gewotICAgICAgICAgICAgICByZXNwb25z ZS5zZXJ2ZXJfbGlzdFtrZXldLmZvckVhY2gob3B0aW9uID0+IHsKLSAgICAgICAgICAgICAgICBp ZiAob3B0aW9uLnZhbHVlID09IHBhcnNlSW50KHNpZCkpIHsKLSAgICAgICAgICAgICAgICAgIHJl c3BvbnNlLnNlcnZlcl9uYW1lID0gb3B0aW9uLmxhYmVsOwotICAgICAgICAgICAgICAgIH0KLSAg ICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHZhciB0cmFuc2Zv cm0gPSBzZWxmLmZpZWxkLmdldCgndHJhbnNmb3JtJykgfHwgc2VsZi5kZWZhdWx0cy50cmFuc2Zv cm07Ci0gICAgICAgICAgICBpZiAodHJhbnNmb3JtICYmIF8uaXNGdW5jdGlvbih0cmFuc2Zvcm0p KSB7Ci0gICAgICAgICAgICAgIHNlbGYuZmllbGQuc2V0KCdvcHRpb25zJywgdHJhbnNmb3JtLmJp bmQoc2VsZiwgcmVzcG9uc2Uuc2VydmVyX2xpc3QpKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g ICAgICAgICAgICAgIHNlbGYuZmllbGQuc2V0KCdvcHRpb25zJywgcmVzcG9uc2Uuc2VydmVyX2xp c3QpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIEJhY2tmb3JtLlNlbGVjdDJD b250cm9sLnByb3RvdHlwZS5yZW5kZXIuYXBwbHkoc2VsZiwgYXJndW1lbnRzKTsKLSAgICAgICAg ICB9LAotICAgICAgICAgIG9uQ2hhbmdlOiBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHRoaXMu bW9kZWwuYXR0cmlidXRlcy5kYXRhYmFzZSA9IG51bGw7Ci0gICAgICAgICAgICB0aGlzLm1vZGVs LmF0dHJpYnV0ZXMudXNlciA9IG51bGw7Ci0gICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7Ci0g ICAgICAgICAgICBzZWxmLmNvbm5lY3Qoc2VsZik7Ci0KLSAgICAgICAgICAgIGxldCB1cmwgPSB1 cmxfZm9yKCdzcWxlZGl0b3IuY29ubmVjdF9zZXJ2ZXInLCB7Ci0gICAgICAgICAgICAgICdzaWQn OiBzZWxmLmdldFZhbHVlRnJvbURPTSgpLAotICAgICAgICAgICAgICAndXNyJzogc2VsZi5tb2Rl bC5hdHRyaWJ1dGVzLnVzZXIsCi0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIHZhciBsb2Fk aW5nRGl2ID0gJCgnI3Nob3dfZmlsdGVyX3Byb2dyZXNzJyk7Ci0gICAgICAgICAgICBsb2FkaW5n RGl2LnJlbW92ZUNsYXNzKCdkLW5vbmUnKTsKLSAgICAgICAgICAgICQuYWpheCh7Ci0gICAgICAg ICAgICAgIHVybDogdXJsLAotICAgICAgICAgICAgICB0eXBlOiAnUE9TVCcsCi0gICAgICAgICAg ICAgIGhlYWRlcnM6IHsKLSAgICAgICAgICAgICAgICAnQ2FjaGUtQ29udHJvbCcgOiAnbm8tY2Fj aGUnLAotICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgfSkuZG9uZShmdW5jdGlvbiAoKSB7 Ci0gICAgICAgICAgICAgIEJhY2tmb3JtLlNlbGVjdDJDb250cm9sLnByb3RvdHlwZS5vbkNoYW5n ZS5hcHBseShzZWxmLCBhcmd1bWVudHMpOwotICAgICAgICAgICAgICBPYmplY3Qua2V5cyhyZXNw b25zZS5zZXJ2ZXJfbGlzdCkuZm9yRWFjaChrZXkgPT4gewotICAgICAgICAgICAgICAgIHJlc3Bv bnNlLnNlcnZlcl9saXN0W2tleV0uZm9yRWFjaChvcHRpb24gPT4gewotICAgICAgICAgICAgICAg ICAgaWYgKG9wdGlvbi52YWx1ZSA9PSBzZWxmLmdldFZhbHVlRnJvbURPTSgpKSB7Ci0gICAgICAg ICAgICAgICAgICAgIHJlc3BvbnNlLnNlcnZlcl9uYW1lID0gb3B0aW9uLmxhYmVsOwotICAgICAg ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICB9KTsKLSAg ICAgICAgICAgICAgbG9hZGluZ0Rpdi5hZGRDbGFzcygnZC1ub25lJyk7Ci0gICAgICAgICAgICB9 KS5mYWlsKGZ1bmN0aW9uKHhocil7Ci0gICAgICAgICAgICAgIGxvYWRpbmdEaXYuYWRkQ2xhc3Mo J2Qtbm9uZScpOwotICAgICAgICAgICAgICBhbGVydGlmeS5jb25uZWN0U2VydmVyKCdDb25uZWN0 IHRvIHNlcnZlcicsIHhoci5yZXNwb25zZUpTT04ucmVzdWx0LCBzZWxmLmdldFZhbHVlRnJvbURP TSgpKTsKLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgfSwKLSAgICAgICAgfSksCi0gICAg ICB9LAotICAgICAgewotICAgICAgICBpZDogJ2RhdGFiYXNlJywKLSAgICAgICAgbmFtZTogJ2Rh dGFiYXNlJywKLSAgICAgICAgbGFiZWw6IGdldHRleHQoJ0RhdGFiYXNlJyksCi0gICAgICAgIHR5 cGU6ICd0ZXh0JywKLSAgICAgICAgZWRpdGFibGU6IHRydWUsCi0gICAgICAgIGRpc2FibGVkOiBm dW5jdGlvbihtKSB7Ci0gICAgICAgICAgbGV0IHNlbGZfbG9jYWwgPSB0aGlzOwotICAgICAgICAg IGlmICghXy5pc1VuZGVmaW5lZChtLmdldCgnc2VydmVyJykpICYmICFfLmlzTnVsbChtLmdldCgn c2VydmVyJykpCi0gICAgICAgICAgICAmJiBtLmdldCgnc2VydmVyJykgIT09ICcnKSB7Ci0gICAg ICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICBpZihzZWxmX2xv Y2FsLm9wdGlvbnMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgc2VsZl9sb2NhbC5vcHRpb25z LmZvckVhY2goZGIgPT4gewotICAgICAgICAgICAgICAgICAgaWYgKGRiLnNlbGVjdGVkKSB7Ci0g ICAgICAgICAgICAgICAgICAgIG0uc2V0KCdkYXRhYmFzZScsIGRiLnZhbHVlKTsKLSAgICAgICAg ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgfSwgMTApOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgIH0KLQot ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LAotICAgICAgICBkZXBzOiBbJ3NlcnZl ciddLAotICAgICAgICB1cmw6ICdzcWxlZGl0b3IuZ2V0X25ld19jb25uZWN0aW9uX2RhdGFiYXNl JywKLSAgICAgICAgc2VsZWN0MjogewotICAgICAgICAgIGFsbG93Q2xlYXI6IGZhbHNlLAotICAg ICAgICAgIHdpZHRoOiAnMTAwJScsCi0gICAgICAgICAgZmlyc3RfZW1wdHk6IHRydWUsCi0gICAg ICAgICAgc2VsZWN0X2ZpcnN0OiBmYWxzZSwKLSAgICAgICAgfSwKLSAgICAgICAgZXh0cmFDbGFz c2VzOlsnbmV3LWNvbm5lY3Rpb24tZGlhbG9nLXN0eWxlJ10sCi0gICAgICAgIGNvbnRyb2w6IE5l d0Nvbm5lY3Rpb25TZWxlY3QyQ29udHJvbCwKLSAgICAgICAgdHJhbnNmb3JtOiBmdW5jdGlvbihk YXRhKSB7Ci0gICAgICAgICAgcmVzcG9uc2UuZGF0YWJhc2VfbGlzdCA9IGRhdGE7Ci0gICAgICAg ICAgcmV0dXJuIGRhdGE7Ci0gICAgICAgIH0sCi0gICAgICB9LAotICAgICAgewotICAgICAgICBp ZDogJ3VzZXInLAotICAgICAgICBuYW1lOiAndXNlcicsCi0gICAgICAgIGxhYmVsOiBnZXR0ZXh0 KCdVc2VyJyksCi0gICAgICAgIHR5cGU6ICd0ZXh0JywKLSAgICAgICAgZWRpdGFibGU6IHRydWUs Ci0gICAgICAgIGRlcHM6IFsnc2VydmVyJ10sCi0gICAgICAgIHNlbGVjdDI6IHsKLSAgICAgICAg ICBhbGxvd0NsZWFyOiBmYWxzZSwKLSAgICAgICAgICB3aWR0aDogJzEwMCUnLAotICAgICAgICB9 LAotICAgICAgICBjb250cm9sOiBOZXdDb25uZWN0aW9uU2VsZWN0MkNvbnRyb2wsCi0gICAgICAg IHVybDogJ3NxbGVkaXRvci5nZXRfbmV3X2Nvbm5lY3Rpb25fdXNlcicsCi0gICAgICAgIGRpc2Fi bGVkOiBmdW5jdGlvbihtKSB7Ci0gICAgICAgICAgbGV0IHNlbGZfbG9jYWwgPSB0aGlzOwotICAg ICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChtLmdldCgnc2VydmVyJykpICYmICFfLmlzTnVsbCht LmdldCgnc2VydmVyJykpCi0gICAgICAgICAgICAmJiBtLmdldCgnc2VydmVyJykgIT09ICcnKSB7 Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICBpZihz ZWxmX2xvY2FsLm9wdGlvbnMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgbS5zZXQoJ3VzZXIn LCBzZWxmX2xvY2FsLm9wdGlvbnNbMF0udmFsdWUpOwotICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICB9LCAxMCk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgfQotICAg ICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9LAotICAgICAgfSx7Ci0gICAgICAgIGlkOiAn cm9sZScsCi0gICAgICAgIG5hbWU6ICdyb2xlJywKLSAgICAgICAgbGFiZWw6IGdldHRleHQoJ1Jv bGUnKSwKLSAgICAgICAgdHlwZTogJ3RleHQnLAotICAgICAgICBlZGl0YWJsZTogdHJ1ZSwKLSAg ICAgICAgZGVwczogWydzZXJ2ZXInXSwKLSAgICAgICAgc2VsZWN0MjogewotICAgICAgICAgIGFs bG93Q2xlYXI6IGZhbHNlLAotICAgICAgICAgIHdpZHRoOiAnMTAwJScsCi0gICAgICAgICAgZmly c3RfZW1wdHk6IHRydWUsCi0gICAgICAgIH0sCi0gICAgICAgIGNvbnRyb2w6IE5ld0Nvbm5lY3Rp b25TZWxlY3QyQ29udHJvbCwKLSAgICAgICAgdXJsOiAnc3FsZWRpdG9yLmdldF9uZXdfY29ubmVj dGlvbl9yb2xlJywKLSAgICAgICAgZGlzYWJsZWQ6IGZhbHNlLAotICAgICAgfSwKLSAgICBdLAot ICAgIHZhbGlkYXRlOiBmdW5jdGlvbigpIHsKLSAgICAgIGxldCBtc2cgPSBudWxsOwotICAgICAg dGhpcy5lcnJvck1vZGVsLmNsZWFyKCk7Ci0gICAgICBpZihfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0 KCdkYXRhYmFzZScpKSB8fCBfLmlzTnVsbCh0aGlzLmdldCgnZGF0YWJhc2UnKSkpewotICAgICAg ICBtc2cgPSBnZXR0ZXh0KCdQbGVhc2Ugc2VsZWN0IGRhdGFiYXNlJyk7Ci0gICAgICAgIHRoaXMu ZXJyb3JNb2RlbC5zZXQoJ2RhdGFiYXNlJywgbXNnKTsKLSAgICAgICAgcmV0dXJuIG1zZzsKLSAg ICAgIH0gZWxzZSBpZihfLmlzVW5kZWZpbmVkKHRoaXMuZ2V0KCdkYXRhYmFzZScpKSB8fCBfLmlz VW5kZWZpbmVkKHRoaXMuZ2V0KCd1c2VyJykpfHwgXy5pc051bGwodGhpcy5nZXQoJ3VzZXInKSkp IHsKLSAgICAgICAgbXNnID0gZ2V0dGV4dCgnUGxlYXNlIHNlbGVjdCB1c2VyJyk7Ci0gICAgICAg IHRoaXMuZXJyb3JNb2RlbC5zZXQoJ3VzZXInLCBtc2cpOwotICAgICAgICByZXR1cm4gbXNnOwot ICAgICAgfQotICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfSwKLSAgfSk7Ci0KLSAgcmV0dXJuIG5l dyBuZXdDb25uZWN0aW9uTW9kZWwoKTsKLX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRp Yy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGlj L2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDM3OWM4YzRkMS4uMDAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9q cy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTcy ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KLS8vCi0vLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCi0vLwot Ly8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVh bQotLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNl bmNlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8KLQotaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKLWltcG9ydCBwZ1dpbmRv dyBmcm9tICdzb3VyY2VzL3dpbmRvdyc7Ci0KLWxldCBxdWVyeVRvb2xBY3Rpb25zID0gewotICBf dmVyYm9zZTogZnVuY3Rpb24gKCkgewotICAgIHJldHVybiAhJCgnLmV4cGxhaW4tdmVyYm9zZScp Lmhhc0NsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOwotICB9LAotCi0gIF9jb3N0c0VuYWJsZWQ6 IGZ1bmN0aW9uICgpIHsKLSAgICByZXR1cm4gISQoJy5leHBsYWluLWNvc3RzJykuaGFzQ2xhc3Mo J3Zpc2liaWxpdHktaGlkZGVuJyk7Ci0gIH0sCi0KLSAgX2J1ZmZlcnM6IGZ1bmN0aW9uICgpIHsK LSAgICByZXR1cm4gISQoJy5leHBsYWluLWJ1ZmZlcnMnKS5oYXNDbGFzcygndmlzaWJpbGl0eS1o aWRkZW4nKTsKLSAgfSwKLQotICBfdGltaW5nOiBmdW5jdGlvbiAoKSB7Ci0gICAgcmV0dXJuICEk KCcuZXhwbGFpbi10aW1pbmcnKS5oYXNDbGFzcygndmlzaWJpbGl0eS1oaWRkZW4nKTsKLSAgfSwK LQotICBfc3VtbWFyeTogZnVuY3Rpb24gKCkgewotICAgIHJldHVybiAhJCgnLmV4cGxhaW4tc3Vt bWFyeScpLmhhc0NsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOwotICB9LAotCi0gIF9zZXR0aW5n czogZnVuY3Rpb24gKCkgewotICAgIHJldHVybiAhJCgnLmV4cGxhaW4tc2V0dGluZ3MnKS5oYXND bGFzcygndmlzaWJpbGl0eS1oaWRkZW4nKTsKLSAgfSwKLQotICBfY2xlYXJNZXNzYWdlVGFiOiBm dW5jdGlvbiAoKSB7Ci0gICAgJCgnLnNxbC1lZGl0b3ItbWVzc2FnZScpLmh0bWwoJycpOwotICB9 LAotCi0gIGV4ZWN1dGVNYWNybzogZnVuY3Rpb24gKHNxbEVkaXRvckNvbnRyb2xsZXIsIE1hY3Jv SWQpIHsKLSAgICB0aGlzLl9jbGVhck1lc3NhZ2VUYWIoKTsKLSAgICBzcWxFZGl0b3JDb250cm9s bGVyLmNoZWNrX2RhdGFfY2hhbmdlc190b19leGVjdXRlX3F1ZXJ5KG51bGwsIGZhbHNlLCBNYWNy b0lkKTsKLSAgfSwKLQotICBleGVjdXRlUXVlcnk6IGZ1bmN0aW9uIChzcWxFZGl0b3JDb250cm9s bGVyKSB7Ci0gICAgdGhpcy5fY2xlYXJNZXNzYWdlVGFiKCk7Ci0gICAgc3FsRWRpdG9yQ29udHJv bGxlci5jaGVja19kYXRhX2NoYW5nZXNfdG9fZXhlY3V0ZV9xdWVyeSgpOwotICB9LAotCi0gIGV4 cGxhaW5BbmFseXplOiBmdW5jdGlvbiAoc3FsRWRpdG9yQ29udHJvbGxlcikgewotICAgIGNvbnN0 IGV4cGxhaW5PYmplY3QgPSB7Ci0gICAgICBmb3JtYXQ6ICdqc29uJywKLSAgICAgIGFuYWx5emU6 IHRydWUsCi0gICAgICB2ZXJib3NlOiB0aGlzLl92ZXJib3NlKCksCi0gICAgICBjb3N0czogdGhp cy5fY29zdHNFbmFibGVkKCksCi0gICAgICBidWZmZXJzOiB0aGlzLl9idWZmZXJzKCksCi0gICAg ICB0aW1pbmc6IHRoaXMuX3RpbWluZygpLAotICAgICAgc3VtbWFyeTogdGhpcy5fc3VtbWFyeSgp LAotICAgICAgc2V0dGluZ3M6IHRoaXMuX3NldHRpbmdzKCksCi0gICAgfTsKLSAgICB0aGlzLl9j bGVhck1lc3NhZ2VUYWIoKTsKLSAgICBzcWxFZGl0b3JDb250cm9sbGVyLmNoZWNrX2RhdGFfY2hh bmdlc190b19leGVjdXRlX3F1ZXJ5KGV4cGxhaW5PYmplY3QpOwotICB9LAotCi0gIGV4cGxhaW46 IGZ1bmN0aW9uIChzcWxFZGl0b3JDb250cm9sbGVyKSB7Ci0gICAgY29uc3QgZXhwbGFpbk9iamVj dCA9IHsKLSAgICAgIGZvcm1hdDogJ2pzb24nLAotICAgICAgYW5hbHl6ZTogZmFsc2UsCi0gICAg ICB2ZXJib3NlOiB0aGlzLl92ZXJib3NlKCksCi0gICAgICBjb3N0czogdGhpcy5fY29zdHNFbmFi bGVkKCksCi0gICAgICBidWZmZXJzOiBmYWxzZSwKLSAgICAgIHRpbWluZzogZmFsc2UsCi0gICAg ICBzdW1tYXJ5OiB0aGlzLl9zdW1tYXJ5KCksCi0gICAgICBzZXR0aW5nczogdGhpcy5fc2V0dGlu Z3MoKSwKLSAgICB9OwotICAgIHRoaXMuX2NsZWFyTWVzc2FnZVRhYigpOwotICAgIHNxbEVkaXRv ckNvbnRyb2xsZXIuY2hlY2tfZGF0YV9jaGFuZ2VzX3RvX2V4ZWN1dGVfcXVlcnkoZXhwbGFpbk9i amVjdCk7Ci0gIH0sCi0KLSAgZG93bmxvYWQ6IGZ1bmN0aW9uIChzcWxFZGl0b3JDb250cm9sbGVy KSB7Ci0KLSAgICBsZXQgZXh0ZW5zaW9uID0gc3FsRWRpdG9yQ29udHJvbGxlci5wcmVmZXJlbmNl cy5jc3ZfZmllbGRfc2VwYXJhdG9yID09PSAnLCcgPyAnLmNzdic6ICcudHh0JzsKLSAgICBsZXQg ZmlsZW5hbWUgPSAnZGF0YS0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkgKyBleHRlbnNpb247Ci0K LSAgICBpZiAoIXNxbEVkaXRvckNvbnRyb2xsZXIuaXNfcXVlcnlfdG9vbCkgewotICAgICAgZmls ZW5hbWUgPSBzcWxFZGl0b3JDb250cm9sbGVyLnRhYmxlX25hbWUgKyBleHRlbnNpb247Ci0gICAg fQotCi0gICAgc3FsRWRpdG9yQ29udHJvbGxlci50cmlnZ2VyX2Nzdl9kb3dubG9hZChmaWxlbmFt ZSk7Ci0gIH0sCi0KLSAgY29tbWVudEJsb2NrQ29kZTogZnVuY3Rpb24gKHNxbEVkaXRvckNvbnRy b2xsZXIpIHsKLSAgICBsZXQgY29kZU1pcnJvck9iaiA9IHNxbEVkaXRvckNvbnRyb2xsZXIuZ3Jp ZFZpZXcucXVlcnlfdG9vbF9vYmo7Ci0KLSAgICBpZiAoIWNvZGVNaXJyb3JPYmouZ2V0VmFsdWUo KSkgcmV0dXJuOwotCi0gICAgY29kZU1pcnJvck9iai50b2dnbGVDb21tZW50KGNvZGVNaXJyb3JP YmouZ2V0Q3Vyc29yKHRydWUpLCBjb2RlTWlycm9yT2JqLmdldEN1cnNvcihmYWxzZSkpOwotICB9 LAotCi0gIGNvbW1lbnRMaW5lQ29kZTogZnVuY3Rpb24gKHNxbEVkaXRvckNvbnRyb2xsZXIpIHsK LSAgICBsZXQgY29kZU1pcnJvck9iaiA9IHNxbEVkaXRvckNvbnRyb2xsZXIuZ3JpZFZpZXcucXVl cnlfdG9vbF9vYmo7Ci0KLSAgICBpZiAoIWNvZGVNaXJyb3JPYmouZ2V0VmFsdWUoKSkgcmV0dXJu OwotCi0gICAgY29kZU1pcnJvck9iai5saW5lQ29tbWVudChjb2RlTWlycm9yT2JqLmdldEN1cnNv cih0cnVlKSwKLSAgICAgIGNvZGVNaXJyb3JPYmouZ2V0Q3Vyc29yKGZhbHNlKSwKLSAgICAgIHts aW5lQ29tbWVudDogJy0tJ30KLSAgICApOwotICB9LAotCi0gIHVuY29tbWVudExpbmVDb2RlOiBm dW5jdGlvbiAoc3FsRWRpdG9yQ29udHJvbGxlcikgewotICAgIGxldCBjb2RlTWlycm9yT2JqID0g c3FsRWRpdG9yQ29udHJvbGxlci5ncmlkVmlldy5xdWVyeV90b29sX29iajsKLQotICAgIGlmICgh Y29kZU1pcnJvck9iai5nZXRWYWx1ZSgpKSByZXR1cm47Ci0KLSAgICBjb2RlTWlycm9yT2JqLnVu Y29tbWVudChjb2RlTWlycm9yT2JqLmdldEN1cnNvcih0cnVlKSwKLSAgICAgIGNvZGVNaXJyb3JP YmouZ2V0Q3Vyc29yKGZhbHNlKSwKLSAgICAgIHtsaW5lQ29tbWVudDogJy0tJ30KLSAgICApOwot ICB9LAotCi0gIGZvcm1hdFNxbDogZnVuY3Rpb24gKHNxbEVkaXRvckNvbnRyb2xsZXIpIHsKLSAg ICBzcWxFZGl0b3JDb250cm9sbGVyLmdyaWRWaWV3Lm9uX2Zvcm1hdF9zcWwoKTsKLSAgfSwKLQot ICBmb2N1c091dDogZnVuY3Rpb24gKCkgewotICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1 cigpOwotICAgIHBnV2luZG93LmRvY3VtZW50LmFjdGl2ZUVsZW1lbnQuYmx1cigpOwotICB9LAot Ci0gIHRvZ2dsZUNhc2VPZlNlbGVjdGVkVGV4dDogZnVuY3Rpb24gKHNxbEVkaXRvckNvbnRyb2xs ZXIpIHsKLSAgICBsZXQgY29kZU1pcnJvck9iaiA9IHNxbEVkaXRvckNvbnRyb2xsZXIuZ3JpZFZp ZXcucXVlcnlfdG9vbF9vYmo7Ci0gICAgbGV0IHNlbGVjdGVkVGV4dCA9IGNvZGVNaXJyb3JPYmou Z2V0U2VsZWN0aW9uKCk7Ci0KLSAgICBpZiAoIXNlbGVjdGVkVGV4dCkgcmV0dXJuOwotCi0gICAg aWYgKHNlbGVjdGVkVGV4dCA9PT0gc2VsZWN0ZWRUZXh0LnRvVXBwZXJDYXNlKCkpIHsKLSAgICAg IGNvZGVNaXJyb3JPYmoucmVwbGFjZVNlbGVjdGlvbihzZWxlY3RlZFRleHQudG9Mb3dlckNhc2Uo KSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGNvZGVNaXJyb3JPYmoucmVwbGFjZVNlbGVjdGlvbihz ZWxlY3RlZFRleHQudG9VcHBlckNhc2UoKSk7Ci0gICAgfQotICB9LAotCi0gIGV4ZWN1dGVDb21t aXQ6IGZ1bmN0aW9uIChzcWxFZGl0b3JDb250cm9sbGVyKSB7Ci0gICAgdmFyIHNlbGYgPSB0aGlz OwotICAgIHNxbEVkaXRvckNvbnRyb2xsZXIuc3BlY2lhbF9zcWwgPSAnQ09NTUlUOyc7Ci0gICAg c2VsZi5leGVjdXRlUXVlcnkoc3FsRWRpdG9yQ29udHJvbGxlcik7Ci0gIH0sCi0KLSAgZXhlY3V0 ZVJvbGxiYWNrOiBmdW5jdGlvbiAoc3FsRWRpdG9yQ29udHJvbGxlcikgewotICAgIHZhciBzZWxm ID0gdGhpczsKLSAgICBzcWxFZGl0b3JDb250cm9sbGVyLnNwZWNpYWxfc3FsID0gJ1JPTExCQUNL Oyc7Ci0gICAgc2VsZi5leGVjdXRlUXVlcnkoc3FsRWRpdG9yQ29udHJvbGxlcik7Ci0gIH0sCi0K LSAgc2F2ZURhdGFDaGFuZ2VzOiBmdW5jdGlvbiAoc3FsRWRpdG9yQ29udHJvbGxlcikgewotICAg IHNxbEVkaXRvckNvbnRyb2xsZXIuY2xvc2Vfb25fc2F2ZSA9IGZhbHNlOwotICAgIHNxbEVkaXRv ckNvbnRyb2xsZXIuc2F2ZV9kYXRhKCk7Ci0gIH0sCi0KLSAgb3BlblF1ZXJ5VG9vbDogZnVuY3Rp b24gKHNxbEVkaXRvckNvbnRyb2xsZXIpIHsKLSAgICBzcWxFZGl0b3JDb250cm9sbGVyLmdyaWRW aWV3LmhhbmRsZXIudHJpZ2dlcigKLSAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246c2hv d19xdWVyeV90b29sJywKLSAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXIuZ3JpZFZpZXcsCi0gICAg ICBzcWxFZGl0b3JDb250cm9sbGVyLmdyaWRWaWV3LmhhbmRsZXIKLSAgICApOwotICB9LAotfTsK LQotbW9kdWxlLmV4cG9ydHMgPSBxdWVyeVRvb2xBY3Rpb25zOwpkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2h0dHBfZXJyb3JfaGFuZGxlci5q cyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9odHRwX2Vycm9y X2hhbmRsZXIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MDYwNDM0ZS4uMDAw MDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9o dHRwX2Vycm9yX2hhbmRsZXIuanMKKysrIC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi0vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLS8vCi0v LyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFt Ci0vLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2Vu Y2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9n ZXR0ZXh0JzsKLQotZXhwb3J0IGZ1bmN0aW9uIGh0dHBSZXNwb25zZVJlcXVpcmVzTmV3VHJhbnNh Y3Rpb24oeGhyKSB7Ci0gIC8qIElmIHJlc3BvbnNlSlNPTiBpcyB1bmRlZmluZWQgdGhlbiBpdCBj b3VsZCBiZSBvYmplY3Qgb2YKLSAgICogYXhpb3MoUHJvbWlzZSBIVFRQKSByZXNwb25zZSwgc28g d2Ugc2hvdWxkIGNoZWNrIGFjY29yZGluZ2x5LgotICAgKi8KLSAgaWYgKHhoci5yZXNwb25zZUpT T04gPT09IHVuZGVmaW5lZCAmJiB4aHIuZGF0YSAhPT0gdW5kZWZpbmVkKSB7Ci0gICAgcmV0dXJu IHhoci5zdGF0dXMgPT09IDQwNCAmJiB4aHIuZGF0YSAmJgotICAgICAgICAgICAgICB4aHIuZGF0 YS5pbmZvICYmCi0gICAgICAgICAgICAgIHhoci5kYXRhLmluZm8gPT09ICdEQVRBR1JJRF9UUkFO U0FDVElPTl9SRVFVSVJFRCc7Ci0gIH0KLQotICByZXR1cm4geGhyLnN0YXR1cyA9PT0gNDA0ICYm IHhoci5yZXNwb25zZUpTT04gJiYKLSAgICB4aHIucmVzcG9uc2VKU09OLmluZm8gJiYKLSAgICB4 aHIucmVzcG9uc2VKU09OLmluZm8gPT09ICdEQVRBR1JJRF9UUkFOU0FDVElPTl9SRVFVSVJFRCc7 Ci19Ci0KLS8vIEFsbG93IHVzIHRvIHJlZGlyZWN0IHRvIGxvZ2luIGRpYWxvZyBhbmQgaWYgcmVx dWlyZWQgdGhlbiByZS1pbml0aWF0ZSB0aGUgdHJhbnNhY3Rpb24KLWV4cG9ydCBmdW5jdGlvbiBo YW5kbGVMb2dpblJlcXVpcmVkQW5kVHJhbnNhY3Rpb25SZXF1aXJlZCgKLSAgcGdBZG1pbiwgaGFu ZGxlciwgZXhjZXB0aW9uLCBzdGF0ZVRvU2F2ZSwgc3RhdGVQYXJhbWV0ZXJzLCBjaGVja1RyYW5z YWN0aW9uCi0pIHsKLSAgc3RhdGVQYXJhbWV0ZXJzID0gc3RhdGVQYXJhbWV0ZXJzICYmIHN0YXRl UGFyYW1ldGVycy5sZW5ndGggPiAwID8gc3RhdGVQYXJhbWV0ZXJzIDogW107Ci0gIGlmIChwZ0Fk bWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQuaXNQZ2FMb2dpblJlcXVpcmVkKGV4Y2VwdGlvbikp IHsKLSAgICBpZiAoc3RhdGVUb1NhdmUpIHsKLSAgICAgIGhhbmRsZXIuc2F2ZVN0YXRlKHN0YXRl VG9TYXZlLCBzdGF0ZVBhcmFtZXRlcnMpOwotICAgIH0KLSAgICByZXR1cm4gcGdBZG1pbi5Ccm93 c2VyLlVzZXJNYW5hZ2VtZW50LnBnYUxvZ2luKCk7Ci0gIH0KLQotICBpZihjaGVja1RyYW5zYWN0 aW9uICYmIGh0dHBSZXNwb25zZVJlcXVpcmVzTmV3VHJhbnNhY3Rpb24oZXhjZXB0aW9uKSkgewot ICAgIGlmIChzdGF0ZVRvU2F2ZSkgewotICAgICAgaGFuZGxlci5zYXZlU3RhdGUoc3RhdGVUb1Nh dmUsIHN0YXRlUGFyYW1ldGVycyk7Ci0gICAgfQotICAgIHJldHVybiBoYW5kbGVyLmluaXRUcmFu c2FjdGlvbigpOwotICB9Ci19Ci0KLS8vIEFsbG93IHVzIHRvIGhhbmRsZSB0aGUgQUpBWCBlcnJv ciBmcm9tIFF1ZXJ5IHRvb2wKLWV4cG9ydCBmdW5jdGlvbiBoYW5kbGVRdWVyeVRvb2xBamF4RXJy b3IoCi0gIHBnQWRtaW4sIGhhbmRsZXIsIGV4Y2VwdGlvbiwgc3RhdGVUb1NhdmUsIHN0YXRlUGFy YW1ldGVycywgY2hlY2tUcmFuc2FjdGlvbgotKSB7Ci0gIGlmIChleGNlcHRpb24ucmVhZHlTdGF0 ZSA9PT0gMCkgewotICAgIHJldHVybiBnZXR0ZXh0KCdOb3QgY29ubmVjdGVkIHRvIHRoZSBzZXJ2 ZXIgb3IgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJyk7Ci0g IH0KLQotICBoYW5kbGVMb2dpblJlcXVpcmVkQW5kVHJhbnNhY3Rpb25SZXF1aXJlZCgKLSAgICBw Z0FkbWluLCBoYW5kbGVyLCBleGNlcHRpb24sIHN0YXRlVG9TYXZlLCBzdGF0ZVBhcmFtZXRlcnMs IGNoZWNrVHJhbnNhY3Rpb24KLSAgKTsKLQotICBsZXQgbXNnID0gZXhjZXB0aW9uLnJlc3BvbnNl VGV4dDsKLSAgaWYgKGV4Y2VwdGlvbi5yZXNwb25zZUpTT04gIT09IHVuZGVmaW5lZCkgewotICAg IGlmKGV4Y2VwdGlvbi5yZXNwb25zZUpTT04uZXJyb3Jtc2cgIT09IHVuZGVmaW5lZCkgewotICAg ICAgbXNnID0gZXhjZXB0aW9uLnJlc3BvbnNlSlNPTi5lcnJvcm1zZzsKLSAgICB9Ci0KLSAgICBp ZihleGNlcHRpb24uc3RhdHVzID09PSA1MDMgJiYgZXhjZXB0aW9uLnJlc3BvbnNlSlNPTi5pbmZv ICE9PSB1bmRlZmluZWQgJiYKLSAgICAgICAgZXhjZXB0aW9uLnJlc3BvbnNlSlNPTi5pbmZvID09 ICdDT05ORUNUSU9OX0xPU1QnKSB7Ci0gICAgICAvLyBXZSB3aWxsIGRpc3BsYXkgcmUtY29ubmVj dCBkaWFsb2csIG5vIG5lZWQgdG8gZGlzcGxheSBlcnJvciBtZXNzYWdlIGFnYWluCi0gICAgICBt c2cgPSBudWxsOwotICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgaWYgKHN0 YXRlVG9TYXZlKSB7Ci0gICAgICAgICAgaGFuZGxlci5zYXZlU3RhdGUoc3RhdGVUb1NhdmUsIHN0 YXRlUGFyYW1ldGVycyk7Ci0gICAgICAgIH0KLSAgICAgICAgaGFuZGxlci5oYW5kbGVfY29ubmVj dGlvbl9sb3N0KGZhbHNlLCBleGNlcHRpb24pOwotICAgICAgfSk7Ci0gICAgfQotICB9Ci0KLSAg cmV0dXJuIG1zZzsKLX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0 b3IvcXVlcnlfdG9vbF9ub3RpZmljYXRpb25zLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3Nx bGVkaXRvci9xdWVyeV90b29sX25vdGlmaWNhdGlvbnMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGRkZjNhZDg1Mi4uMDAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9q cy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9ub3RpZmljYXRpb25zLmpzCisrKyAvZGV2L251bGwKQEAg LTEsMTMzICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xz Ci0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1l bnQgVGVhbQotLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLQotaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0 ZXh0JzsKLWltcG9ydCBCYWNrZ3JpZCBmcm9tICdwZ2FkbWluLmJhY2tncmlkJzsKLWltcG9ydCBC YWNrYm9uZSBmcm9tICdiYWNrYm9uZSc7Ci1pbXBvcnQgTm90aWZ5IGZyb20gJy4uL2hlbHBlcnMv Tm90aWZpZXInOwotCi1sZXQgTm90aWZpY2F0aW9uc01vZGVsID0gQmFja2JvbmUuTW9kZWwuZXh0 ZW5kKHsKLSAgZGVmYXVsdHM6IHsKLSAgICByZWNvcmRlZF90aW1lOiB1bmRlZmluZWQsCi0gICAg ZXZlbnQ6IHVuZGVmaW5lZCwKLSAgICBwaWQ6IHVuZGVmaW5lZCwKLSAgICBwYXlsb2FkOiB1bmRl ZmluZWQsCi0gIH0sCi0gIHNjaGVtYTogW3sKLSAgICBpZDogJ3JlY29yZGVkX3RpbWUnLAotICAg IGxhYmVsOiBnZXR0ZXh0KCdSZWNvcmRlZCB0aW1lJyksCi0gICAgY2VsbDogJ3N0cmluZycsCi0g ICAgdHlwZTogJ3RleHQnLAotICAgIGVkaXRhYmxlOiBmYWxzZSwKLSAgICBjZWxsSGVhZGVyQ2xh c3NlczogJ3dpZHRoX3BlcmNlbnRfMjAnLAotICAgIGhlYWRlckNlbGw6IEJhY2tncmlkLkV4dGVu c2lvbi5DdXN0b21IZWFkZXJDZWxsLAotICB9LHsKLSAgICBpZDogJ2NoYW5uZWwnLAotICAgIGxh YmVsOiBnZXR0ZXh0KCdFdmVudCcpLAotICAgIGNlbGw6ICdzdHJpbmcnLAotICAgIHR5cGU6ICd0 ZXh0JywKLSAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAgY2VsbEhlYWRlckNsYXNzZXM6ICd3aWR0 aF9wZXJjZW50XzIwJywKLSAgICBoZWFkZXJDZWxsOiBCYWNrZ3JpZC5FeHRlbnNpb24uQ3VzdG9t SGVhZGVyQ2VsbCwKLSAgfSx7Ci0gICAgaWQ6ICdwaWQnLAotICAgIGxhYmVsOiBnZXR0ZXh0KCdQ cm9jZXNzIElEJyksCi0gICAgY2VsbDogJ3N0cmluZycsCi0gICAgdHlwZTogJ3RleHQnLAotICAg IGVkaXRhYmxlOiBmYWxzZSwKLSAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRf MjAnLAotICAgIGhlYWRlckNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5DdXN0b21IZWFkZXJDZWxs LAotICB9LHsKLSAgICBpZDogJ3BheWxvYWQnLAotICAgIGxhYmVsOiBnZXR0ZXh0KCdQYXlsb2Fk JyksCi0gICAgY2VsbDogJ3N0cmluZycsCi0gICAgdHlwZTogJ3RleHQnLAotICAgIGVkaXRhYmxl OiBmYWxzZSwKLSAgICBjZWxsSGVhZGVyQ2xhc3NlczogJ3dpZHRoX3BlcmNlbnRfNDAnLAotICAg IGhlYWRlckNlbGw6IEJhY2tncmlkLkV4dGVuc2lvbi5DdXN0b21IZWFkZXJDZWxsLAotICB9XSwK LX0pOwotCi1sZXQgTm90aWZpY2F0aW9uQ29sbGVjdGlvbiA9IEJhY2tib25lLkNvbGxlY3Rpb24u ZXh0ZW5kKHsKLSAgbW9kZWw6IE5vdGlmaWNhdGlvbnNNb2RlbCwKLX0pOwotCi1sZXQgcXVlcnlU b29sTm90aWZpY2F0aW9ucyA9IHsKLQotICBjb2xsZWN0aW9uOiBudWxsLAotCi0gIC8qIFRoaXMg ZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgdG8gY3JlYXRlIGFuZCByZW5kZXIgdGhlCi0gICAqIG5l dyBiYWNrZ3JpZCBmb3IgdGhlIG5vdGlmaWNhdGlvbiB0YWIuCi0gICAqLwotICByZW5kZXJOb3Rp ZmljYXRpb25zR3JpZDogZnVuY3Rpb24obm90aWZpY2F0aW9uc19wYW5lbCkgewotICAgIGlmICgh cXVlcnlUb29sTm90aWZpY2F0aW9ucy5jb2xsZWN0aW9uKQotICAgICAgcXVlcnlUb29sTm90aWZp Y2F0aW9ucy5jb2xsZWN0aW9uID0gbmV3IE5vdGlmaWNhdGlvbkNvbGxlY3Rpb24oKTsKLQotICAg IGxldCBncmlkQ29scyA9IFt7Ci0gICAgICBuYW1lOiAncmVjb3JkZWRfdGltZScsCi0gICAgICBs YWJlbDogZ2V0dGV4dCgnUmVjb3JkZWQgdGltZScpLAotICAgICAgdHlwZTogJ3RleHQnLAotICAg ICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgfSwgewotICAg ICAgbmFtZTogJ2NoYW5uZWwnLAotICAgICAgbGFiZWw6IGdldHRleHQoJ0V2ZW50JyksCi0gICAg ICB0eXBlOiAndGV4dCcsCi0gICAgICBlZGl0YWJsZTogZmFsc2UsCi0gICAgICBjZWxsOiAnc3Ry aW5nJywKLSAgICB9LCB7Ci0gICAgICBuYW1lOiAncGlkJywKLSAgICAgIGxhYmVsOiBnZXR0ZXh0 KCdQcm9jZXNzIElEJyksCi0gICAgICB0eXBlOiAndGV4dCcsCi0gICAgICBlZGl0YWJsZTogZmFs c2UsCi0gICAgICBjZWxsOiAnc3RyaW5nJywKLSAgICB9LCB7Ci0gICAgICBuYW1lOiAncGF5bG9h ZCcsCi0gICAgICBsYWJlbDogZ2V0dGV4dCgnUGF5bG9hZCcpLAotICAgICAgdHlwZTogJ3RleHQn LAotICAgICAgZWRpdGFibGU6IGZhbHNlLAotICAgICAgY2VsbDogJ3N0cmluZycsCi0gICAgfV07 Ci0KLSAgICAvLyBTZXQgdXAgdGhlIGdyaWQKLSAgICBsZXQgbm90aWZpY2F0aW9uc19ncmlkID0g bmV3IEJhY2tncmlkLkdyaWQoewotICAgICAgZW1wdHlUZXh0OiBnZXR0ZXh0KCdObyBkYXRhIGZv dW5kJyksCi0gICAgICBjb2x1bW5zOiBncmlkQ29scywKLSAgICAgIGNvbGxlY3Rpb246IHF1ZXJ5 VG9vbE5vdGlmaWNhdGlvbnMuY29sbGVjdGlvbiwKLSAgICAgIGNsYXNzTmFtZTogJ2JhY2tncmlk IHByZXNlbnRhdGlvbiB0YWJsZSB0YWJsZS1ib3JkZXJlZCB0YWJsZS1ob3ZlciB0YWJsZS1ub291 dGVyLWJvcmRlciB0YWJsZS1ib3R0b20tYm9yZGVyJywKLSAgICB9KTsKLQotICAgIC8vIFJlbmRl ciB0aGUgZ3JpZAotICAgIGlmIChub3RpZmljYXRpb25zX3BhbmVsKQotICAgICAgbm90aWZpY2F0 aW9uc19wYW5lbC4kY29udGFpbmVyLmZpbmQoJy5zcWwtZWRpdG9yLW5vdGlmaWNhdGlvbnMnKS5h cHBlbmQobm90aWZpY2F0aW9uc19ncmlkLnJlbmRlcigpLmVsKTsKLSAgfSwKLQotICAvLyBUaGlz IGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmFpc2Ugbm90aWZ5IG1lc3NhZ2VzIGFuZCB1cGRhdGUgdGhl Ci0gIC8vIG5vdGlmaWNhdGlvbiBncmlkLgotICB1cGRhdGVOb3RpZmljYXRpb25zOiBmdW5jdGlv bihub3RpZnlfbWVzc2FnZXMpIHsKLSAgICBpZiAobm90aWZ5X21lc3NhZ2VzICE9IG51bGwgJiYg bm90aWZ5X21lc3NhZ2VzLmxlbmd0aCA+IDApIHsKLSAgICAgIGZvciAobGV0IGkgaW4gbm90aWZ5 X21lc3NhZ2VzKSB7Ci0gICAgICAgIGxldCBub3RpZnlfbXNnID0gJyc7Ci0gICAgICAgIGlmIChu b3RpZnlfbWVzc2FnZXNbaV0ucGF5bG9hZCAhPSAnJykgewotICAgICAgICAgIG5vdGlmeV9tc2cg PSBnZXR0ZXh0KCdBc3luY2hyb25vdXMgbm90aWZpY2F0aW9uICIlcyIgd2l0aCBwYXlsb2FkICIl cyIgcmVjZWl2ZWQgZnJvbSBzZXJ2ZXIgcHJvY2VzcyB3aXRoIFBJRCAlcycsIG5vdGlmeV9tZXNz YWdlc1tpXS5jaGFubmVsLCBub3RpZnlfbWVzc2FnZXNbaV0ucGF5bG9hZCwgbm90aWZ5X21lc3Nh Z2VzW2ldLnBpZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgbm90aWZ5 X21zZyA9IGdldHRleHQoJ0FzeW5jaHJvbm91cyBub3RpZmljYXRpb24gIiVzIiByZWNlaXZlZCBm cm9tIHNlcnZlciBwcm9jZXNzIHdpdGggUElEICVzJywgbm90aWZ5X21lc3NhZ2VzW2ldLmNoYW5u ZWwsIG5vdGlmeV9tZXNzYWdlc1tpXS5waWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgTm90aWZ5 LmluZm8obm90aWZ5X21zZyk7Ci0gICAgICB9Ci0KLSAgICAgIC8vIEFkZCBub3RpZnkgbWVzc2Fn ZXMgdG8gdGhlIGNvbGxlY3Rpb24uCi0gICAgICBxdWVyeVRvb2xOb3RpZmljYXRpb25zLmNvbGxl Y3Rpb24uYWRkKG5vdGlmeV9tZXNzYWdlcyk7Ci0gICAgfQotICB9LAotfTsKLQotbW9kdWxlLmV4 cG9ydHMgPSBxdWVyeVRvb2xOb3RpZmljYXRpb25zOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v c3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX3ByZWZlcmVuY2VzLmpzIGIvd2ViL3BnYWRt aW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX3ByZWZlcmVuY2VzLmpzCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNGNmNWVjNmEuLjAwMDAwMDAwMAotLS0gYS93ZWIvcGdh ZG1pbi9zdGF0aWMvanMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMuanMKKysrIC9k ZXYvbnVsbApAQCAtMSwyNDEgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3Rn cmVTUUwgVG9vbHMKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1p biBEZXZlbG9wbWVudCBUZWFtCi0vLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRo ZSBQb3N0Z3JlU1FMIExpY2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1pbXBvcnQge3Nob3J0Y3V0X2tleSwg c2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlLCBzaG9ydGN1dF90aXRsZX0KLSAgZnJvbSAnc291cmNl cy9rZXlib2FyZF9zaG9ydGN1dHMnOwotaW1wb3J0ICogYXMgU3FsRWRpdG9yVXRpbHMgZnJvbSAn c291cmNlcy9zcWxlZGl0b3JfdXRpbHMnOwotaW1wb3J0ICQgZnJvbSAnanF1ZXJ5JzsKLWltcG9y dCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7Ci0KLWZ1bmN0aW9uIHVwZGF0ZVVJUHJl ZmVyZW5jZXMoc3FsRWRpdG9yKSB7Ci0gIGxldCAkZWwgPSBzcWxFZGl0b3IuJGVsLAotICAgIHBy ZWZlcmVuY2VzID0gc3FsRWRpdG9yLnByZWZlcmVuY2VzOwotCi0gIGlmKHNxbEVkaXRvci5oYW5k bGVyLnNsaWNrZ3JpZCkgewotICAgIHNxbEVkaXRvci5oYW5kbGVyLnNsaWNrZ3JpZC5DU1ZPcHRp b25zID0gewotICAgICAgcXVvdGluZzogc3FsRWRpdG9yLnByZWZlcmVuY2VzLnJlc3VsdHNfZ3Jp ZF9xdW90aW5nLAotICAgICAgcXVvdGVfY2hhcjogc3FsRWRpdG9yLnByZWZlcmVuY2VzLnJlc3Vs dHNfZ3JpZF9xdW90ZV9jaGFyLAotICAgICAgZmllbGRfc2VwYXJhdG9yOiBzcWxFZGl0b3IucHJl ZmVyZW5jZXMucmVzdWx0c19ncmlkX2ZpZWxkX3NlcGFyYXRvciwKLSAgICB9OwotICB9Ci0KLSAg LyogQWNjZXNzZWQgdXNpbmcgYWNjZXNza2V5IGRpcmVjdCB3L28gY3RybCxhdGwsc2hpZnQgKi8K LSAgJGVsLmZpbmQoJyNidG4tbG9hZC1maWxlJykKLSAgICAuYXR0cigndGl0bGUnLCBzaG9ydGN1 dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4dCgnT3BlbiBGaWxlJykscHJlZmVyZW5jZXMuYnRuX29w ZW5fZmlsZSkpCi0gICAgLmF0dHIoJ2FyaWEtbGFiZWwnLCBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0 bGUoZ2V0dGV4dCgnT3BlbiBGaWxlJykscHJlZmVyZW5jZXMuYnRuX29wZW5fZmlsZSkpCi0gICAg LmF0dHIoJ2FjY2Vzc2tleScsIHNob3J0Y3V0X2tleShwcmVmZXJlbmNlcy5idG5fb3Blbl9maWxl KSk7Ci0KLSAgJGVsLmZpbmQoJyNidG4tc2F2ZS1maWxlJykKLSAgICAuYXR0cigndGl0bGUnLCBz aG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4dCgnU2F2ZSBGaWxlJykscHJlZmVyZW5jZXMu YnRuX3NhdmVfZmlsZSkpCi0gICAgLmF0dHIoJ2FyaWEtbGFiZWwnLCBzaG9ydGN1dF9hY2Nlc3Nr ZXlfdGl0bGUoZ2V0dGV4dCgnU2F2ZSBGaWxlJykscHJlZmVyZW5jZXMuYnRuX3NhdmVfZmlsZSkp Ci0gICAgLmF0dHIoJ2FjY2Vzc2tleScsIHNob3J0Y3V0X2tleShwcmVmZXJlbmNlcy5idG5fc2F2 ZV9maWxlKSk7Ci0KLSAgJGVsLmZpbmQoJyNidG4tZmluZC1tZW51LWRyb3Bkb3duJykKLSAgICAu YXR0cigndGl0bGUnLCBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4dCgnRmluZCcpLHBy ZWZlcmVuY2VzLmJ0bl9maW5kX29wdGlvbnMpKQotICAgIC5hdHRyKCdhcmlhLWxhYmVsJyxzaG9y dGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4dCgnRmluZCcpLHByZWZlcmVuY2VzLmJ0bl9maW5k X29wdGlvbnMpKQotICAgIC5hdHRyKCdhY2Nlc3NrZXknLCBzaG9ydGN1dF9rZXkocHJlZmVyZW5j ZXMuYnRuX2ZpbmRfb3B0aW9ucykpOwotCi0gICRlbC5maW5kKCcjYnRuLWNvcHktcm93JykKLSAg ICAuYXR0cigndGl0bGUnLCBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4dCgnQ29weScp LHByZWZlcmVuY2VzLmJ0bl9jb3B5X3JvdykpCi0gICAgLmF0dHIoJ2FyaWEtbGFiZWwnLCBzaG9y dGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4dCgnQ29weScpLHByZWZlcmVuY2VzLmJ0bl9jb3B5 X3JvdykpCi0gICAgLmF0dHIoJ2FjY2Vzc2tleScsIHNob3J0Y3V0X2tleShwcmVmZXJlbmNlcy5i dG5fY29weV9yb3cpKTsKLQotICAkZWwuZmluZCgnI2J0bi1wYXN0ZS1yb3cnKQotICAgIC5hdHRy KCd0aXRsZScsIHNob3J0Y3V0X2FjY2Vzc2tleV90aXRsZShnZXR0ZXh0KCdQYXN0ZScpLHByZWZl cmVuY2VzLmJ0bl9wYXN0ZV9yb3cpKQotICAgIC5hdHRyKCdhcmlhLWxhYmVsJywgc2hvcnRjdXRf YWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ1Bhc3RlJykscHJlZmVyZW5jZXMuYnRuX3Bhc3RlX3Jv dykpCi0gICAgLmF0dHIoJ2FjY2Vzc2tleScsIHNob3J0Y3V0X2tleShwcmVmZXJlbmNlcy5idG5f cGFzdGVfcm93KSk7Ci0KLSAgJGVsLmZpbmQoJyNidG4tZGVsZXRlLXJvdycpCi0gICAgLmF0dHIo J3RpdGxlJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ0RlbGV0ZScpLHByZWZl cmVuY2VzLmJ0bl9kZWxldGVfcm93KSkKLSAgICAuYXR0cignYXJpYS1sYWJlbCcsIHNob3J0Y3V0 X2FjY2Vzc2tleV90aXRsZShnZXR0ZXh0KCdEZWxldGUnKSxwcmVmZXJlbmNlcy5idG5fZGVsZXRl X3JvdykpCi0gICAgLmF0dHIoJ2FjY2Vzc2tleScsIHNob3J0Y3V0X2tleShwcmVmZXJlbmNlcy5i dG5fZGVsZXRlX3JvdykpOwotCi0gICRlbC5maW5kKCcjYnRuLWZpbHRlcicpCi0gICAgLmF0dHIo J3RpdGxlJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ0ZpbHRlcicpLHByZWZl cmVuY2VzLmJ0bl9maWx0ZXJfZGlhbG9nKSkKLSAgICAuYXR0cignYXJpYS1sYWJlbCcsIHNob3J0 Y3V0X2FjY2Vzc2tleV90aXRsZShnZXR0ZXh0KCdGaWx0ZXInKSxwcmVmZXJlbmNlcy5idG5fZmls dGVyX2RpYWxvZykpCi0gICAgLmF0dHIoJ2FjY2Vzc2tleScsIHNob3J0Y3V0X2tleShwcmVmZXJl bmNlcy5idG5fZmlsdGVyX2RpYWxvZykpOwotCi0gICRlbC5maW5kKCcjYnRuLWZpbHRlci1kcm9w ZG93bicpCi0gICAgLmF0dHIoJ3RpdGxlJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRl eHQoJ0ZpbHRlciBvcHRpb25zJykscHJlZmVyZW5jZXMuYnRuX2ZpbHRlcl9vcHRpb25zKSkKLSAg ICAuYXR0cignYXJpYS1sYWJlbCcsIHNob3J0Y3V0X2FjY2Vzc2tleV90aXRsZShnZXR0ZXh0KCdG aWx0ZXIgb3B0aW9ucycpLHByZWZlcmVuY2VzLmJ0bl9maWx0ZXJfb3B0aW9ucykpCi0gICAgLmF0 dHIoJ2FjY2Vzc2tleScsIHNob3J0Y3V0X2tleShwcmVmZXJlbmNlcy5idG5fZmlsdGVyX29wdGlv bnMpKTsKLQotICAkZWwuZmluZCgnI2J0bi1yb3dzLWxpbWl0JykKLSAgICAuYXR0cigndGl0bGUn LCBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4dCgnUm93cyBsaW1pdCcpLHByZWZlcmVu Y2VzLmJ0bl9yb3dzX2xpbWl0KSkKLSAgICAuYXR0cignYXJpYS1sYWJlbCcsIHNob3J0Y3V0X2Fj Y2Vzc2tleV90aXRsZShnZXR0ZXh0KCdSb3dzIGxpbWl0JykscHJlZmVyZW5jZXMuYnRuX3Jvd3Nf bGltaXQpKQotICAgIC5hdHRyKCdhY2Nlc3NrZXknLCBzaG9ydGN1dF9rZXkocHJlZmVyZW5jZXMu YnRuX3Jvd3NfbGltaXQpKTsKLQotICAkZWwuZmluZCgnI2J0bi1xdWVyeS1kcm9wZG93bicpCi0g ICAgLmF0dHIoJ3RpdGxlJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ0V4ZWN1 dGUgb3B0aW9ucycpLHByZWZlcmVuY2VzLmJ0bl9leGVjdXRlX29wdGlvbnMpKQotICAgIC5hdHRy KCdhcmlhLWxhYmVsJywgc2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ0V4ZWN1dGUg b3B0aW9ucycpLHByZWZlcmVuY2VzLmJ0bl9leGVjdXRlX29wdGlvbnMpKQotICAgIC5hdHRyKCdh Y2Nlc3NrZXknLCBzaG9ydGN1dF9rZXkocHJlZmVyZW5jZXMuYnRuX2V4ZWN1dGVfb3B0aW9ucykp OwotCi0gICRlbC5maW5kKCcjYnRuLWNhbmNlbC1xdWVyeScpCi0gICAgLmF0dHIoJ3RpdGxlJywg c2hvcnRjdXRfYWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ0NhbmNlbCBxdWVyeScpLHByZWZlcmVu Y2VzLmJ0bl9jYW5jZWxfcXVlcnkpKQotICAgIC5hdHRyKCdhcmlhLWxhYmVsJywgc2hvcnRjdXRf YWNjZXNza2V5X3RpdGxlKGdldHRleHQoJ0NhbmNlbCBxdWVyeScpLHByZWZlcmVuY2VzLmJ0bl9j YW5jZWxfcXVlcnkpKQotICAgIC5hdHRyKCdhY2Nlc3NrZXknLCBzaG9ydGN1dF9rZXkocHJlZmVy ZW5jZXMuYnRuX2NhbmNlbF9xdWVyeSkpOwotCi0gICRlbC5maW5kKCcjYnRuLWNsZWFyLWRyb3Bk b3duJykKLSAgICAuYXR0cigndGl0bGUnLCBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4 dCgnQ2xlYXInKSxwcmVmZXJlbmNlcy5idG5fY2xlYXJfb3B0aW9ucykpCi0gICAgLmF0dHIoJ2Fy aWEtbGFiZWwnLCBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4dCgnQ2xlYXInKSxwcmVm ZXJlbmNlcy5idG5fY2xlYXJfb3B0aW9ucykpCi0gICAgLmF0dHIoJ2FjY2Vzc2tleScsIHNob3J0 Y3V0X2tleShwcmVmZXJlbmNlcy5idG5fY2xlYXJfb3B0aW9ucykpOwotCi0gICRlbC5maW5kKCcj YnRuLWNvbm4tc3RhdHVzJykKLSAgICAuYXR0cignYWNjZXNza2V5Jywgc2hvcnRjdXRfa2V5KHBy ZWZlcmVuY2VzLmJ0bl9jb25uX3N0YXR1cykpCi0gICAgLmZpbmQoJ2knKQotICAgIC5hdHRyKCd0 aXRsZScsCi0gICAgICBzaG9ydGN1dF9hY2Nlc3NrZXlfdGl0bGUoZ2V0dGV4dCgnQ29ubmVjdGlv biBzdGF0dXMgKGNsaWNrIGZvciBkZXRhaWxzKScpLAotICAgICAgICBwcmVmZXJlbmNlcy5idG5f Y29ubl9zdGF0dXMpKTsKLQotICAvKiBBY2Nlc3NlZCB1c2luZyBjdHJsLGF0bCxzaGlmdCBhbmQg a2V5ICovCi0gICRlbC5maW5kKCcjYnRuLWZsYXNoJykKLSAgICAuYXR0cigndGl0bGUnLAotICAg ICAgc2hvcnRjdXRfdGl0bGUoZ2V0dGV4dCgnRXhlY3V0ZS9SZWZyZXNoJykscHJlZmVyZW5jZXMu ZXhlY3V0ZV9xdWVyeSkpCi0gICAgLmF0dHIoJ2FyaWEtbGFiZWwnLAotICAgICAgc2hvcnRjdXRf dGl0bGUoZ2V0dGV4dCgnRXhlY3V0ZS9SZWZyZXNoJykscHJlZmVyZW5jZXMuZXhlY3V0ZV9xdWVy eSkpOwotCi0gICRlbC5maW5kKCcjYnRuLWV4cGxhaW4nKQotICAgIC5hdHRyKCd0aXRsZScsCi0g ICAgICBzaG9ydGN1dF90aXRsZShnZXR0ZXh0KCdFeHBsYWluJykscHJlZmVyZW5jZXMuZXhwbGFp bl9xdWVyeSkpCi0gICAgLmF0dHIoJ2FyaWEtbGFiZWwnLAotICAgICAgc2hvcnRjdXRfdGl0bGUo Z2V0dGV4dCgnRXhwbGFpbicpLHByZWZlcmVuY2VzLmV4cGxhaW5fcXVlcnkpKTsKLQotICAkZWwu ZmluZCgnI2J0bi1leHBsYWluLWFuYWx5emUnKQotICAgIC5hdHRyKCd0aXRsZScsCi0gICAgICBz aG9ydGN1dF90aXRsZShnZXR0ZXh0KCdFeHBsYWluIEFuYWx5emUnKSxwcmVmZXJlbmNlcy5leHBs YWluX2FuYWx5emVfcXVlcnkpKQotICAgIC5hdHRyKCdhcmlhLWxhYmVsJywKLSAgICAgIHNob3J0 Y3V0X3RpdGxlKGdldHRleHQoJ0V4cGxhaW4gQW5hbHl6ZScpLHByZWZlcmVuY2VzLmV4cGxhaW5f YW5hbHl6ZV9xdWVyeSkpOwotCi0gICRlbC5maW5kKCcjYnRuLXNhdmUtcmVzdWx0cy10by1maWxl JykKLSAgICAuYXR0cigndGl0bGUnLAotICAgICAgc2hvcnRjdXRfdGl0bGUoZ2V0dGV4dCgnU2F2 ZSByZXN1bHRzIHRvIGZpbGUnKSxwcmVmZXJlbmNlcy5kb3dubG9hZF9yZXN1bHRzKSkKLSAgICAu YXR0cignYXJpYS1sYWJlbCcsCi0gICAgICBzaG9ydGN1dF90aXRsZShnZXR0ZXh0KCdTYXZlIHJl c3VsdHMgdG8gZmlsZScpLHByZWZlcmVuY2VzLmRvd25sb2FkX3Jlc3VsdHMpKTsKLQotICAkZWwu ZmluZCgnI2J0bi1zYXZlLWRhdGEnKQotICAgIC5hdHRyKCd0aXRsZScsCi0gICAgICBzaG9ydGN1 dF90aXRsZShnZXR0ZXh0KCdTYXZlIERhdGEgQ2hhbmdlcycpLHByZWZlcmVuY2VzLnNhdmVfZGF0 YSkpCi0gICAgLmF0dHIoJ2FyaWEtbGFiZWwnLAotICAgICAgc2hvcnRjdXRfdGl0bGUoZ2V0dGV4 dCgnU2F2ZSBEYXRhIENoYW5nZXMnKSxwcmVmZXJlbmNlcy5zYXZlX2RhdGEpKTsKLQotICAkZWwu ZmluZCgnI2J0bi1jb21taXQnKQotICAgIC5hdHRyKCd0aXRsZScsCi0gICAgICBzaG9ydGN1dF90 aXRsZShnZXR0ZXh0KCdDb21taXQnKSxwcmVmZXJlbmNlcy5jb21taXRfdHJhbnNhY3Rpb24pKQot ICAgIC5hdHRyKCdhcmlhLWxhYmVsJywKLSAgICAgIHNob3J0Y3V0X3RpdGxlKGdldHRleHQoJ0Nv bW1pdCcpLHByZWZlcmVuY2VzLmNvbW1pdF90cmFuc2FjdGlvbikpOwotCi0gICRlbC5maW5kKCcj YnRuLXJvbGxiYWNrJykKLSAgICAuYXR0cigndGl0bGUnLAotICAgICAgc2hvcnRjdXRfdGl0bGUo Z2V0dGV4dCgnUm9sbGJhY2snKSxwcmVmZXJlbmNlcy5yb2xsYmFja190cmFuc2FjdGlvbikpCi0g ICAgLmF0dHIoJ2FyaWEtbGFiZWwnLAotICAgICAgc2hvcnRjdXRfdGl0bGUoZ2V0dGV4dCgnUm9s bGJhY2snKSxwcmVmZXJlbmNlcy5yb2xsYmFja190cmFuc2FjdGlvbikpOwotCi0gICRlbC5maW5k KCcjYnRuLXNob3ctcXVlcnktdG9vbCcpCi0gICAgLmF0dHIoJ3RpdGxlJywKLSAgICAgIHNob3J0 Y3V0X3RpdGxlKGdldHRleHQoJ1F1ZXJ5IHRvb2wnKSxwcmVmZXJlbmNlcy5zaG93X3F1ZXJ5X3Rv b2wpKQotICAgIC5hdHRyKCdhcmlhLWxhYmVsJywKLSAgICAgIHNob3J0Y3V0X3RpdGxlKGdldHRl eHQoJ1F1ZXJ5IHRvb2wnKSxwcmVmZXJlbmNlcy5zaG93X3F1ZXJ5X3Rvb2wpKTsKLQotICAvKiBT ZXQgZXhwbGFpbiBvcHRpb25zIG9uIHF1ZXJ5IGVkaXRvciAqLwotICBpZiAocHJlZmVyZW5jZXMu ZXhwbGFpbl92ZXJib3NlKXsKLSAgICAkZWwuZmluZCgnLmV4cGxhaW4tdmVyYm9zZScpLnJlbW92 ZUNsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOwotICB9Ci0gIGVsc2UgewotICAgICRlbC5maW5k KCcuZXhwbGFpbi12ZXJib3NlJykuYWRkQ2xhc3MoJ3Zpc2liaWxpdHktaGlkZGVuJyk7Ci0gIH0K LQotICBpZiAocHJlZmVyZW5jZXMuZXhwbGFpbl9jb3N0cyl7Ci0gICAgJGVsLmZpbmQoJy5leHBs YWluLWNvc3RzJykucmVtb3ZlQ2xhc3MoJ3Zpc2liaWxpdHktaGlkZGVuJyk7Ci0gIH0KLSAgZWxz ZSB7Ci0gICAgJGVsLmZpbmQoJy5leHBsYWluLWNvc3RzJykuYWRkQ2xhc3MoJ3Zpc2liaWxpdHkt aGlkZGVuJyk7Ci0gIH0KLQotICBpZiAocHJlZmVyZW5jZXMuZXhwbGFpbl9idWZmZXJzKXsKLSAg ICAkZWwuZmluZCgnLmV4cGxhaW4tYnVmZmVycycpLnJlbW92ZUNsYXNzKCd2aXNpYmlsaXR5LWhp ZGRlbicpOwotICB9Ci0gIGVsc2UgewotICAgICRlbC5maW5kKCcuZXhwbGFpbi1idWZmZXJzJyku YWRkQ2xhc3MoJ3Zpc2liaWxpdHktaGlkZGVuJyk7Ci0gIH0KLQotICBpZiAocHJlZmVyZW5jZXMu ZXhwbGFpbl90aW1pbmcpIHsKLSAgICAkZWwuZmluZCgnLmV4cGxhaW4tdGltaW5nJykucmVtb3Zl Q2xhc3MoJ3Zpc2liaWxpdHktaGlkZGVuJyk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgJGVsLmZpbmQo Jy5leHBsYWluLXRpbWluZycpLmFkZENsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOwotICB9Ci0K LSAgaWYgKHByZWZlcmVuY2VzLmV4cGxhaW5fc3VtbWFyeSkgewotICAgICRlbC5maW5kKCcuZXhw bGFpbi1zdW1tYXJ5JykucmVtb3ZlQ2xhc3MoJ3Zpc2liaWxpdHktaGlkZGVuJyk7Ci0gIH0KLSAg ZWxzZSB7Ci0gICAgJGVsLmZpbmQoJy5leHBsYWluLXN1bW1hcnknKS5hZGRDbGFzcygndmlzaWJp bGl0eS1oaWRkZW4nKTsKLSAgfQotCi0gIGlmIChwcmVmZXJlbmNlcy5leHBsYWluX3NldHRpbmdz KSB7Ci0gICAgJGVsLmZpbmQoJy5leHBsYWluLXNldHRpbmdzJykucmVtb3ZlQ2xhc3MoJ3Zpc2li aWxpdHktaGlkZGVuJyk7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgJGVsLmZpbmQoJy5leHBsYWluLXNl dHRpbmdzJykuYWRkQ2xhc3MoJ3Zpc2liaWxpdHktaGlkZGVuJyk7Ci0gIH0KLQotICAvKiBDb25u ZWN0aW9uIHN0YXR1cyBjaGVjayAqLwotICAvKiByZW1vdmUgdGhlIHN0YXR1cyBjaGVja2VyIGlm IHByZXNlbnQgKi8KLSAgaWYoc3FsRWRpdG9yLmNvbm5JbnRlcnZhbElkICE9IG51bGwpIHsKLSAg ICBjbGVhckludGVydmFsKHNxbEVkaXRvci5jb25uSW50ZXJ2YWxJZCk7Ci0gICAgc3FsRWRpdG9y LmNvbm5JbnRlcnZhbElkID0gbnVsbDsKLSAgfQotICBpZiAocHJlZmVyZW5jZXMuY29ubmVjdGlv bl9zdGF0dXMpIHsKLSAgICBsZXQgJGNvbm5fc3RhdHVzID0gJGVsLmZpbmQoJyNidG4tY29ubi1z dGF0dXMnKSwKLSAgICAgICRzdGF0dXNfZWwgPSAkY29ubl9zdGF0dXMuZmluZCgnaScpOwotICAg ICRjb25uX3N0YXR1cy5wb3BvdmVyKCk7Ci0KLSAgICAkY29ubl9zdGF0dXMucmVtb3ZlQ2xhc3Mo J2Nvbm5lY3Rpb24tc3RhdHVzLWhpZGUnKTsKLQotICAgIC8vIFRvIHNldCBpbml0aWFsIGNvbm5l Y3Rpb24KLSAgICBTcWxFZGl0b3JVdGlscy5mZXRjaENvbm5lY3Rpb25TdGF0dXMoc3FsRWRpdG9y LmhhbmRsZXIsICRjb25uX3N0YXR1cywgJHN0YXR1c19lbCk7Ci0KLSAgICAvLyBDYWxsaW5nIGl0 IGFnYWluIGluIHNwZWNpZmllZCBpbnRlcnZhbAotICAgIHNxbEVkaXRvci5jb25uSW50ZXJ2YWxJ ZCA9ICBzZXRJbnRlcnZhbCgKLSAgICAgIFNxbEVkaXRvclV0aWxzLmZldGNoQ29ubmVjdGlvblN0 YXR1cy5iaW5kKG51bGwsIHNxbEVkaXRvci5oYW5kbGVyLCAkY29ubl9zdGF0dXMsICRzdGF0dXNf ZWwpLAotICAgICAgcHJlZmVyZW5jZXMuY29ubmVjdGlvbl9zdGF0dXNfZmV0Y2hfdGltZSAqIDEw MDAKLSAgICApOwotICB9Ci0gIGVsc2UgewotICAgICRlbC5maW5kKCcjYnRuLWNvbm4tc3RhdHVz JykuYWRkQ2xhc3MoJ2Nvbm5lY3Rpb24tc3RhdHVzLWhpZGUnKTsKLSAgfQotCi0gIC8qIENvZGUg TWlycm9yIFByZWZlcmVuY2VzICovCi0gIGxldCBzcWxfZm9udF9zaXplID0gU3FsRWRpdG9yVXRp bHMuY2FsY0ZvbnRTaXplKHByZWZlcmVuY2VzLnNxbF9mb250X3NpemUpOwotICAkKHNxbEVkaXRv ci5xdWVyeV90b29sX29iai5nZXRXcmFwcGVyRWxlbWVudCgpKS5jc3MoJ2ZvbnQtc2l6ZScsIHNx bF9mb250X3NpemUpOwotCi0gIGlmKHByZWZlcmVuY2VzLnBsYWluX2VkaXRvcl9tb2RlKSB7Ci0g ICAgc3FsRWRpdG9yLnF1ZXJ5X3Rvb2xfb2JqLnNldE9wdGlvbignbW9kZScsICd0ZXh0L3BsYWlu Jyk7Ci0gICAgLyogQWx0aG91Z2ggbm90IHJlcXVpcmVkLCBzZXR0aW5nIGV4cGxpY2l0bHkgYXMg Y29kZW1pcnJvciB3aWxsIHJlbW92ZSBjb2RlIGZvbGRpbmcgb25seSBvbiBuZXh0IGVkaXQgKi8K LSAgICBzcWxFZGl0b3IucXVlcnlfdG9vbF9vYmouc2V0T3B0aW9uKCdmb2xkR3V0dGVyJywgZmFs c2UpOwotICB9IGVsc2UgewotICAgIHNxbEVkaXRvci5xdWVyeV90b29sX29iai5zZXRPcHRpb24o J21vZGUnLCAndGV4dC94LXBnc3FsJyk7Ci0gICAgc3FsRWRpdG9yLnF1ZXJ5X3Rvb2xfb2JqLnNl dE9wdGlvbignZm9sZEd1dHRlcicsIHByZWZlcmVuY2VzLmNvZGVfZm9sZGluZyk7Ci0gIH0KLSAg c3FsRWRpdG9yLnF1ZXJ5X3Rvb2xfb2JqLnNldE9wdGlvbignZm9sZEd1dHRlcicsIHByZWZlcmVu Y2VzLmNvZGVfZm9sZGluZyk7Ci0gIHNxbEVkaXRvci5xdWVyeV90b29sX29iai5zZXRPcHRpb24o J2luZGVudFdpdGhUYWJzJywgIXByZWZlcmVuY2VzLnVzZV9zcGFjZXMpOwotICBzcWxFZGl0b3Iu cXVlcnlfdG9vbF9vYmouc2V0T3B0aW9uKCdpbmRlbnRVbml0JywgcHJlZmVyZW5jZXMudXNlX3Nw YWNlcyA/IHByZWZlcmVuY2VzLnRhYl9zaXplIDogNCk7Ci0gIHNxbEVkaXRvci5xdWVyeV90b29s X29iai5zZXRPcHRpb24oJ3RhYlNpemUnLCBwcmVmZXJlbmNlcy51c2Vfc3BhY2VzID8gcHJlZmVy ZW5jZXMudGFiX3NpemUgOiA0KTsKLSAgc3FsRWRpdG9yLnF1ZXJ5X3Rvb2xfb2JqLnNldE9wdGlv bignbGluZVdyYXBwaW5nJywgcHJlZmVyZW5jZXMud3JhcF9jb2RlKTsKLSAgc3FsRWRpdG9yLnF1 ZXJ5X3Rvb2xfb2JqLnNldE9wdGlvbignYXV0b0Nsb3NlQnJhY2tldHMnLCBwcmVmZXJlbmNlcy5p bnNlcnRfcGFpcl9icmFja2V0cyk7Ci0gIHNxbEVkaXRvci5xdWVyeV90b29sX29iai5zZXRPcHRp b24oJ21hdGNoQnJhY2tldHMnLCBwcmVmZXJlbmNlcy5icmFjZV9tYXRjaGluZyk7Ci0gIHNxbEVk aXRvci5xdWVyeV90b29sX29iai5yZWZyZXNoKCk7Ci0KLSAgLyogUmVuZGVyIGhpc3RvcnkgdG8g cmVmbGVjdCBGb250IHNpemUgY2hhbmdlICovCi0gIHNxbEVkaXRvci5oaXN0b3J5Q29tcG9uZW50 LnNldEVkaXRvclByZWYoewotICAgICdzcWxfZm9udF9zaXplJyA6IHNxbF9mb250X3NpemUsCi0g IH0pOwotfQotCi1leHBvcnQge3VwZGF0ZVVJUHJlZmVyZW5jZXN9OwpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90eG5fc3RhdHVzX2NvbnN0YW50cy5q cyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdHhuX3N0YXR1c19jb25z dGFudHMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NTI2NDI5Ni4uMDAwMDAw MDAwCi0tLSBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvcXVlcnlfdHhuX3N0YXR1 c19jb25zdGFudHMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0vKiBwc3ljb3Bn MiB0cmFuc2FjdGlvbiBzdGF0dXMgY29uc3RhbnRzCi0gKiBodHRwOi8vaW5pdGQub3JnL3BzeWNv cGcvZG9jcy9leHRlbnNpb25zLmh0bWwjdHJhbnNhY3Rpb24tc3RhdHVzLWNvbnN0YW50cwotICov Ci0KLW1vZHVsZS5leHBvcnRzID0gewotICBUUkFOU0FDVElPTl9TVEFUVVNfSURMRTogMCwKLSAg VFJBTlNBQ1RJT05fU1RBVFVTX0FDVElWRTogMSwKLSAgVFJBTlNBQ1RJT05fU1RBVFVTX0lOVFJB TlM6IDIsCi0gIFRSQU5TQUNUSU9OX1NUQVRVU19JTkVSUk9SOiAzLAotICBUUkFOU0FDVElPTl9T VEFUVVNfVU5LTk9XTjogNSwKLX07CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi9zdGF0aWMvanMv c3FsZWRpdG9yX3V0aWxzLmpzIGIvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvcl91dGls cy5qcwppbmRleCA2NjM3NDVjOWYuLmZhNjNhOWFiMiAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v c3RhdGljL2pzL3NxbGVkaXRvcl91dGlscy5qcworKysgYi93ZWIvcGdhZG1pbi9zdGF0aWMvanMv c3FsZWRpdG9yX3V0aWxzLmpzCkBAIC04LDI1MSArOCwxNSBAQAogLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8K IC8vIFRoaXMgZmlsZSBjb250YWlucyBjb21tb24gdXRpbGl0aWVzIGZ1bmN0aW9ucyB1c2VkIGlu IHNxbGVkaXRvciBtb2R1bGVzCiAKLWRlZmluZShbJ2pxdWVyeScsICd1bmRlcnNjb3JlJywgJ3Nv dXJjZXMvZ2V0dGV4dCcsICdzb3VyY2VzL3VybF9mb3InLCAncGdhZG1pbi5hbGVydGlmeWpzJ10s Ci0gIGZ1bmN0aW9uICgkLCBfLCBnZXR0ZXh0LCB1cmxfZm9yLCBhbGVydGlmeSkgewotICAgIHZh ciBzcWxFZGl0b3JVdGlscyA9IHsKLSAgICAgIC8qIFJlZmVyZW5jZSBsaW5rIGh0dHA6Ly9zdGFj a292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTA1MDM0L2NyZWF0ZS1ndWlkLXV1aWQtaW4tamF2YXNj cmlwdAotICAgICAgICogTW9kaWZpZWQgYXMgcGVyIHJlcXVpcmVtZW50LgotICAgICAgICovCi0g ICAgICBlcGljUmFuZG9tU3RyaW5nOiBmdW5jdGlvbihsZW5ndGgpIHsKLSAgICAgICAgdmFyIHMg PSBbXTsKLSAgICAgICAgdmFyIGhleERpZ2l0cyA9ICcwMTIzNDU2Nzg5YWJjZGVmJzsKLSAgICAg ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAzNjsgaSsrKSB7Ci0gICAgICAgICAgc1tpXSA9IGhleERp Z2l0cy5zdWJzdHIoCi0gICAgICAgICAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAweDEw KSwgMQotICAgICAgICAgICk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gYml0cyAxMi0xNSBvZiB0 aGUgdGltZV9oaV9hbmRfdmVyc2lvbiBmaWVsZCB0byAwMDEwCi0gICAgICAgIHNbMTRdID0gJzQn OwotICAgICAgICAvLyBiaXRzIDYtNyBvZiB0aGUgY2xvY2tfc2VxX2hpX2FuZF9yZXNlcnZlZCB0 byAwMQotICAgICAgICBzWzE5XSA9IGhleERpZ2l0cy5zdWJzdHIoKHNbMTldICYgMHgzKSB8IDB4 OCwgMSk7Ci0gICAgICAgIHNbOF0gPSBzWzEzXSA9IHNbMThdID0gc1syM10gPSAnLSc7Ci0KLSAg ICAgICAgdmFyIHV1aWQgPSBzLmpvaW4oJycpOwotICAgICAgICByZXR1cm4gdXVpZC5yZXBsYWNl KC8tL2csICcnKS5zdWJzdHIoMCwgbGVuZ3RoKTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFJldHVy bnMgYSB1bmlxdWUgaGFzaCBmb3IgaW5wdXQgc3RyaW5nCi0gICAgICBnZXRIYXNoOiBmdW5jdGlv bihpbnB1dCkgewotICAgICAgICB2YXIgaGFzaCA9IDAsIGxlbiA9IGlucHV0Lmxlbmd0aDsKLSAg ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgIGhhc2ggID0g KChoYXNoIDw8IDUpIC0gaGFzaCkgKyBpbnB1dC5jaGFyQ29kZUF0KGkpOwotICAgICAgICAgIGhh c2ggfD0gMDsgLy8gdG8gMzJiaXQgaW50ZWdlcgotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBo YXNoOwotICAgICAgfSwKLSAgICAgIGNhbGN1bGF0ZUNvbHVtbldpZHRoOiBmdW5jdGlvbiAodGV4 dCkgewotICAgICAgICAvLyBDYWxjdWxhdGUgY29sdW1uIGhlYWRlciB3aWR0aCBiYXNlZCBvbiBj b2x1bW4gbmFtZSBvciB0eXBlCi0gICAgICAgIC8vIENyZWF0ZSBhIHRlbXBvcmFyeSBlbGVtZW50 IHdpdGggZ2l2ZW4gbGFiZWwsIGFwcGVuZCB0byBib2R5Ci0gICAgICAgIC8vIGNhbGN1bGF0ZSBp dHMgd2lkdGggYW5kIHJlbW92ZSB0aGUgZWxlbWVudC4KLSAgICAgICAgJCgnYm9keScpLmFwcGVu ZCgKLSAgICAgICAgICAnPHNwYW4gaWQ9InBnX3RleHQiIHN0eWxlPSJ2aXNpYmlsaXR5OiBoaWRk ZW47Ij4nKyB0ZXh0ICsgJzwvc3Bhbj4nCi0gICAgICAgICk7Ci0gICAgICAgIHZhciB3aWR0aCA9 ICQoJyNwZ190ZXh0Jykud2lkdGgoKSArIDIzOwotICAgICAgICAkKCcjcGdfdGV4dCcpLnJlbW92 ZSgpOyAvLyByZW1vdmUgZWxlbWVudAotCi0gICAgICAgIHJldHVybiB3aWR0aDsKLSAgICAgIH0s Ci0gICAgICBjYXBpdGFsaXplRmlyc3RMZXR0ZXI6IGZ1bmN0aW9uIChzdHJpbmcpIHsKLSAgICAg ICAgcmV0dXJuIHN0cmluZy5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHN0cmluZy5zbGljZSgx KTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIERpc2FibGVzIGFycm93IHRvIGNoYW5nZSBjb25uZWN0 aW9uCi0gICAgICBkaXNhYmxlX2Nvbm5lY3Rpb25fZHJvcGRvd246IGZ1bmN0aW9uIChzdGF0dXMp IHsKLSAgICAgICAgaWYgKHN0YXR1cyl7Ci0gICAgICAgICAgJCgnLmNvbm4taW5mby1kZCcpLnBy b3AoJ2Rpc2FibGVkJyx0cnVlKTsKLSAgICAgICAgICAkKCcuY29ubmVjdGlvbi1kYXRhJykuY3Nz KHtwb2ludGVyRXZlbnRzOiAnbm9uZScsIGN1cnNvcjogJ2Fycm93J30pOwotICAgICAgICB9ZWxz ZXsKLSAgICAgICAgICAkKCcuY29ubi1pbmZvLWRkJykucHJvcCgnZGlzYWJsZWQnLGZhbHNlKTsK LSAgICAgICAgICAkKCcuY29ubmVjdGlvbi1kYXRhJykuY3NzKHtwb2ludGVyRXZlbnRzOiAnYXV0 bycsIGN1cnNvcjogJ3BvaW50ZXInfSk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIC8v IFN0YXR1cyBmbGFnCi0gICAgICBwcmV2aW91c1N0YXR1czogbnVsbCwKLQotICAgICAgLy8gVGhp cyBmdW5jdGlvbiB3aWxsIGZldGNoIHRoZSBjb25uZWN0aW9uIHN0YXR1cyB2aWEgYWpheAotICAg ICAgZmV0Y2hDb25uZWN0aW9uU3RhdHVzOiBmdW5jdGlvbih0YXJnZXQsICRlbCwgJHN0YXR1c19l bCkgewotICAgICAgICAvLyBJZiB1c2VyIGhhcyBzd2l0Y2ggdGhlIGJyb3dzZXIgVGFiIG9yIE1p bmltaXplZCB3aW5kb3cgb3IKLSAgICAgICAgLy8gaWYgd2NEb2NrZXIgcGFuZWwgaXMgbm90IGlu IGZvY3VzIHRoZW4gZG9uJ3QgZmlyZSBBSkFYCi0gICAgICAgIHZhciB1cmwgPSB1cmxfZm9yKCdz cWxlZGl0b3IuY29ubmVjdGlvbl9zdGF0dXMnLCB7Ci0gICAgICAgICAgJ3RyYW5zX2lkJzogdGFy Z2V0LnRyYW5zSWQsCi0gICAgICAgIH0pOwotCi0gICAgICAgIGlmIChkb2N1bWVudC52aXNpYmls aXR5U3RhdGUgIT09ICd2aXNpYmxlJyB8fAotICAgICAgICAgICAgICAkZWwuZGF0YSgncGFuZWwt dmlzaWJsZScpICE9PSAndmlzaWJsZScgKSB7Ci0gICAgICAgICAgcmV0dXJuOwotICAgICAgICB9 Ci0KLSAgICAgICAgaWYoJHN0YXR1c19lbC5oYXNDbGFzcygnb2J0YWluaW5nLWNvbm4nKSl7Ci0g ICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGxldCBzcWxlZGl0b3Jfb2JqID0g dGFyZ2V0OwotCi0gICAgICAgIC8vIFN0YXJ0IHBvbGxpbmcuLgotICAgICAgICAkLmFqYXgoewot ICAgICAgICAgIHVybDogdXJsLAotICAgICAgICAgIG1ldGhvZDogJ0dFVCcsCi0gICAgICAgIH0p Ci0gICAgICAgICAgLmRvbmUoZnVuY3Rpb24gKHJlcykgewotICAgICAgICAgICAgaWYocmVzICYm IHJlcy5kYXRhKSB7Ci0gICAgICAgICAgICAgIHZhciBzdGF0dXMgPSByZXMuZGF0YS5zdGF0dXMs Ci0gICAgICAgICAgICAgICAgbXNnID0gcmVzLmRhdGEubWVzc2FnZSwKLSAgICAgICAgICAgICAg ICBpc19zdGF0dXNfY2hhbmdlZCA9IGZhbHNlOwotCi0gICAgICAgICAgICAgIC8vIFJhaXNlIG5v dGlmeSBtZXNzYWdlcyBjb21lcyBmcm9tIGRhdGFiYXNlIHNlcnZlci4KLSAgICAgICAgICAgICAg c3FsZWRpdG9yX29iai51cGRhdGVfbm90aWZpY2F0aW9ucyhyZXMuZGF0YS5ub3RpZmllcyk7Ci0K LSAgICAgICAgICAgICAgLy8gSW5qZWN0IENTUyBhcyByZXF1aXJlZAotICAgICAgICAgICAgICBz d2l0Y2goc3RhdHVzKSB7Ci0gICAgICAgICAgICAgIC8vIEJ1c3kKLSAgICAgICAgICAgICAgY2Fz ZSAxOgotICAgICAgICAgICAgICAgIC8vIGlmIHJlY2VpdmVkIGJ1c3kgc3RhdHVzIG1vcmUgdGhh biBvbmNlIHRoZW4gb25seQotICAgICAgICAgICAgICAgIGlmKHN0YXR1cyA9PSBzcWxFZGl0b3JV dGlscy5wcmV2aW91c1N0YXR1cyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgISRzdGF0dXNf ZWwuaGFzQ2xhc3MoJ2ZhLWhvdXJnbGFzcy1oYWxmJykpIHsKLSAgICAgICAgICAgICAgICAgICRz dGF0dXNfZWwucmVtb3ZlQ2xhc3MoKQotICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ2Zh IGZhLWhvdXJnbGFzcy1oYWxmJyk7Ci0gICAgICAgICAgICAgICAgICBpc19zdGF0dXNfY2hhbmdl ZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg ICAgICAgICAgICAgIC8vIElkbGUgaW4gdHJhbnNhY3Rpb24KLSAgICAgICAgICAgICAgY2FzZSAy OgotICAgICAgICAgICAgICAgIGlmKHNxbEVkaXRvclV0aWxzLnByZXZpb3VzU3RhdHVzICE9IHN0 YXR1cyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgISRzdGF0dXNfZWwuaGFzQ2xhc3MoJ2Zh LWNsb2NrJykpIHsKLSAgICAgICAgICAgICAgICAgICRzdGF0dXNfZWwucmVtb3ZlQ2xhc3MoKQot ICAgICAgICAgICAgICAgICAgICAuYWRkQ2xhc3MoJ2ZhIGZhLWNsb2NrJyk7Ci0gICAgICAgICAg ICAgICAgICBpc19zdGF0dXNfY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIC8vIEZhaWxlZCBpbiB0cmFuc2Fj dGlvbgotICAgICAgICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAgICAgICAgaWYoc3FsRWRpdG9y VXRpbHMucHJldmlvdXNTdGF0dXMgIT0gc3RhdHVzICYmCi0gICAgICAgICAgICAgICAgICAgICAg ICAhJHN0YXR1c19lbC5oYXNDbGFzcygnZmEtZXhjbGFtYXRpb24tY2lyY2xlJykpIHsKLSAgICAg ICAgICAgICAgICAgICRzdGF0dXNfZWwucmVtb3ZlQ2xhc3MoKQotICAgICAgICAgICAgICAgICAg ICAuYWRkQ2xhc3MoJ2ZhIGZhLWV4Y2xhbWF0aW9uLWNpcmNsZScpOwotICAgICAgICAgICAgICAg ICAgaXNfc3RhdHVzX2NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAvLyBGYWlsZWQgaW4gdHJhbnNhY3Rpb24g d2l0aCB1bmtub3duIHNlcnZlciBzaWRlIGVycm9yCi0gICAgICAgICAgICAgIGNhc2UgNDoKLSAg ICAgICAgICAgICAgICBpZihzcWxFZGl0b3JVdGlscy5wcmV2aW91c1N0YXR1cyAhPSBzdGF0dXMg JiYKLSAgICAgICAgICAgICAgICAgICAgICAgICEkc3RhdHVzX2VsLmhhc0NsYXNzKCdmYS1leGNs YW1hdGlvbi10cmlhbmdsZScpKSB7Ci0gICAgICAgICAgICAgICAgICAkc3RhdHVzX2VsLnJlbW92 ZUNsYXNzKCkKLSAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdmYSBmYS1leGNsYW1hdGlv bi10cmlhbmdsZScpOwotICAgICAgICAgICAgICAgICAgaXNfc3RhdHVzX2NoYW5nZWQgPSB0cnVl OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg ICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBpZihzcWxFZGl0b3JVdGlscy5wcmV2aW91c1N0 YXR1cyAhPSBzdGF0dXMgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICEkc3RhdHVzX2VsLmhh c0NsYXNzKCdmYS1xdWVyeV90b29sX2Nvbm5lY3RlZCcpKSB7Ci0gICAgICAgICAgICAgICAgICAk c3RhdHVzX2VsLnJlbW92ZUNsYXNzKCkKLSAgICAgICAgICAgICAgICAgICAgLmFkZENsYXNzKCdw Zy1mb250LWljb24gaWNvbi1jb25uZWN0ZWQnKTsKLSAgICAgICAgICAgICAgICAgIGlzX3N0YXR1 c19jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0KLQot ICAgICAgICAgICAgICBzcWxFZGl0b3JVdGlscy5wcmV2aW91c1N0YXR1cyA9IHN0YXR1czsKLSAg ICAgICAgICAgICAgLy8gU2V0IGJvb3RzdHJhcCBwb3BvdmVyIG1lc3NhZ2UKLSAgICAgICAgICAg ICAgaWYoaXNfc3RhdHVzX2NoYW5nZWQpIHsKLSAgICAgICAgICAgICAgICAkZWwucG9wb3Zlcign aGlkZScpOwotICAgICAgICAgICAgICAgICRlbC5hdHRyKCdkYXRhLWNvbnRlbnQnLCBtc2cpOwot ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gV2Ug Y29tZSBoZXJlIG1lYW5zIHdlIGRpZCBub3QgcmVjZWl2ZSBleHBlY3RlZCByZXNwb25zZQotICAg ICAgICAgICAgLy8gZnJvbSBzZXJ2ZXIsIHdlIG5lZWQgdG8gZXJyb3Igb3V0Ci0gICAgICAgICAg ICAgIHNxbEVkaXRvclV0aWxzLnByZXZpb3VzU3RhdHVzID0gLTk5OwotICAgICAgICAgICAgICBt c2cgPSBnZXR0ZXh0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3VycmVkIC0gJyArCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICdlbnN1cmUgeW91IGFyZSBsb2dnZWQgaW50byB0aGUgYXBwbGlj YXRpb24uJyk7Ci0gICAgICAgICAgICAgICRlbC5hdHRyKCdkYXRhLWNvbnRlbnQnLCBtc2cpOwot ICAgICAgICAgICAgICBpZighJHN0YXR1c19lbC5oYXNDbGFzcygnaWNvbi1kaXNjb25uZWN0ZWQn KSkgewotICAgICAgICAgICAgICAgICRlbC5wb3BvdmVyKCdoaWRlJyk7Ci0gICAgICAgICAgICAg ICAgJHN0YXR1c19lbC5yZW1vdmVDbGFzcygpCi0gICAgICAgICAgICAgICAgICAuYWRkQ2xhc3Mo J3BnLWljb24tZm9udCBpY29uLWRpc2Nvbm5lY3RlZCcpOwotICAgICAgICAgICAgICB9Ci0gICAg ICAgICAgICB9Ci0gICAgICAgICAgfSkKLSAgICAgICAgICAuZmFpbChmdW5jdGlvbiAoZSkgewot ICAgICAgICAgICAgc3FsRWRpdG9yVXRpbHMucHJldmlvdXNTdGF0dXMgPSAtMTsKLSAgICAgICAg ICAgIHZhciBtc2cgPSBnZXR0ZXh0KCdUcmFuc2FjdGlvbiBzdGF0dXMgY2hlY2sgZmFpbGVkLicp OwotICAgICAgICAgICAgaWYgKGUucmVhZHlTdGF0ZSA9PSAwKSB7Ci0gICAgICAgICAgICAgIG1z ZyA9IGdldHRleHQoJ05vdCBjb25uZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlv biB0byAnICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzZXJ2ZXIgaGFzIGJlZW4g Y2xvc2VkLicpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChlLnJlc3BvbnNlSlNPTiAmJiBlLnJl c3BvbnNlSlNPTi5lcnJvcm1zZykgewotICAgICAgICAgICAgICBtc2cgPSBlLnJlc3BvbnNlSlNP Ti5lcnJvcm1zZzsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gU2V0IGJvb3RzdHJh cCBwb3BvdmVyCi0gICAgICAgICAgICAkZWwuYXR0cignZGF0YS1jb250ZW50JywgbXNnKTsKLSAg ICAgICAgICAgIC8vIEFkZCBlcnJvciBjbGFzcwotICAgICAgICAgICAgaWYoISRzdGF0dXNfZWwu aGFzQ2xhc3MoJ2ljb24tZGlzY29ubmVjdGVkJykpIHsKLSAgICAgICAgICAgICAgJGVsLnBvcG92 ZXIoJ2hpZGUnKTsKLSAgICAgICAgICAgICAgJHN0YXR1c19lbC5yZW1vdmVDbGFzcygpCi0gICAg ICAgICAgICAgICAgLmFkZENsYXNzKCdwZy1mb250LWljb24gaWNvbi1kaXNjb25uZWN0ZWQnKTsK LSAgICAgICAgICAgIH0KLSAgICAgICAgICB9KTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFVwZGF0 ZXMgdGhlIGZsYWcgZm9yIGNvbm5lY3Rpb24gc3RhdHVzIHBvbGwKLSAgICAgIHVwZGF0ZUNvbm5l Y3Rpb25TdGF0dXNGbGFnOiBmdW5jdGlvbihzdGF0dXMpIHsKLSAgICAgICAgdmFyICRlbCA9ICQo Jy5jb25uZWN0aW9uX3N0YXR1cycpOwotICAgICAgICBpZiAoJGVsLmRhdGEoJ3BhbmVsLXZpc2li bGUnKSAhPSBzdGF0dXMpIHsKLSAgICAgICAgICAkZWwuZGF0YSgncGFuZWwtdmlzaWJsZScsIHN0 YXR1cyk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIGNhbGNGb250U2l6ZTogZnVuY3Rp b24oZm9udFNpemUpIHsKLSAgICAgICAgaWYoZm9udFNpemUpIHsKLSAgICAgICAgICBmb250U2l6 ZSA9IHBhcnNlRmxvYXQoKE1hdGgucm91bmQocGFyc2VGbG9hdChmb250U2l6ZSArICdlKzInKSkg KyAnZS0yJykpOwotICAgICAgICAgIGxldCByb3VuZGVkID0gTnVtYmVyKGZvbnRTaXplKTsKLSAg ICAgICAgICBpZihyb3VuZGVkID4gMCkgewotICAgICAgICAgICAgcmV0dXJuIHJvdW5kZWQgKyAn ZW0nOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gJzFlbSc7Ci0gICAg ICB9LAotCi0gICAgICBhZGRFZGl0YWJsZUljb246IGZ1bmN0aW9uKGNvbHVtbkRlZmluaXRpb24s IGlzX2VkaXRhYmxlKSB7Ci0gICAgICAgIC8qIFRoaXMgdXNlcyBTbGlja2dyaWQuSGVhZGVyQnV0 dG9ucyBwbHVnaW4gdG8gYWRkIGFuIGljb24gdG8gdGhlCi0gICAgICAgIGNvbHVtbnMgaGVhZGVy cy4gSW5zdGVhZCBvZiBhIGJ1dHRvbiwgYW4gaWNvbiBpcyBjcmVhdGVkICovCi0gICAgICAgIGxl dCBjb250ZW50ID0gbnVsbDsKLSAgICAgICAgaWYoaXNfZWRpdGFibGUpIHsKLSAgICAgICAgICBj b250ZW50ID0gJzxpIGNsYXNzPSJmYSBmYS1wZW5jaWwtYWx0Ij48L2k+JzsKLSAgICAgICAgfQot ICAgICAgICBlbHNlIHsKLSAgICAgICAgICBjb250ZW50ID0gJzxpIGNsYXNzPSJmYSBmYS1sb2Nr Ij48L2k+JzsKLSAgICAgICAgfQotICAgICAgICBsZXQgYnV0dG9uID0gewotICAgICAgICAgIGNz c0NsYXNzOiAnZWRpdGFibGUtY29sdW1uLWhlYWRlci1pY29uJywKLSAgICAgICAgICBjb250ZW50 OiBjb250ZW50LAotICAgICAgICB9OwotICAgICAgICAvLyBDaGVjayBmb3IgZXhpc3RpbmcgYnV0 dG9ucwotICAgICAgICBpZighXy5pc1VuZGVmaW5lZChjb2x1bW5EZWZpbml0aW9uLmhlYWRlcikg JiYKLSAgICAgICAgICAgIV8uaXNVbmRlZmluZWQoY29sdW1uRGVmaW5pdGlvbi5oZWFkZXIuYnV0 dG9ucykpIHsKLSAgICAgICAgICBjb2x1bW5EZWZpbml0aW9uLmhlYWRlci5idXR0b25zLnB1c2go YnV0dG9uKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBjb2x1bW5EZWZp bml0aW9uLmhlYWRlciA9IHsKLSAgICAgICAgICAgIGJ1dHRvbnM6IFtidXR0b25dLAotICAgICAg ICAgIH07Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIGlzTW9kYWxPcGVuOiBmdW5jdGlv bihkaWFsb2dfbGlzdCkgewotICAgICAgICAvKiBjaGVjayB0aGUgbW9kYWxzIGluc2lkZSB0aGUg c3FsZWRpdG9yIGFyZSBvcGVuIG9yIG5vdCAqLwotICAgICAgICBpZihBcnJheS5pc0FycmF5KGRp YWxvZ19saXN0KSkgewotICAgICAgICAgIGZvcihsZXQgZCBvZiBkaWFsb2dfbGlzdCkgewotICAg ICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgaWYoYWxlcnRpZnkuZGlhbG9nKGQpICYmIGFs ZXJ0aWZ5LmRpYWxvZyhkKS5pc09wZW4oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhdGNoIChlcnIpIHsKLSAgICAgICAgICAgICAg Ly8gRG8gbm90aGluZwotICAgICAgICAgICAgICBjb25zb2xlLndhcm4oZXJyLnN0YWNrIHx8IGVy cik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVy biBmYWxzZTsKLSAgICAgIH0sCi0gICAgfTsKLSAgICByZXR1cm4gc3FsRWRpdG9yVXRpbHM7Ci0g IH0pOworbW9kdWxlLmV4cG9ydHMgPSB7CisgIGNhbGNGb250U2l6ZTogZnVuY3Rpb24oZm9udFNp emUpIHsKKyAgICBpZihmb250U2l6ZSkgeworICAgICAgZm9udFNpemUgPSBwYXJzZUZsb2F0KChN YXRoLnJvdW5kKHBhcnNlRmxvYXQoZm9udFNpemUgKyAnZSsyJykpICsgJ2UtMicpKTsKKyAgICAg IGxldCByb3VuZGVkID0gTnVtYmVyKGZvbnRTaXplKTsKKyAgICAgIGlmKHJvdW5kZWQgPiAwKSB7 CisgICAgICAgIHJldHVybiByb3VuZGVkICsgJ2VtJzsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0 dXJuICcxZW0nOworICB9LAorfTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy91 dGlscy5qcyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy91dGlscy5qcwppbmRleCA5ZDY3MTY1MzMu LjllMjMwNTdjMyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL2pzL3V0aWxzLmpzCisr KyBiL3dlYi9wZ2FkbWluL3N0YXRpYy9qcy91dGlscy5qcwpAQCAtMzAyLDcgKzMwMiw3IEBAIGV4 cG9ydCBmdW5jdGlvbiBzcHJpbnRmKGlfc3RyKSB7CiAKIC8vIE1vZGlmaWVkIHJlZjogaHR0cDov L3N0YWNrb3ZlcmZsb3cuY29tL2EvMTI5MzE2My8yMzQzIHRvIHN1aXRlIHBnQWRtaW4uCiAvLyBU aGlzIHdpbGwgcGFyc2UgYSBkZWxpbWl0ZWQgc3RyaW5nIGludG8gYW4gYXJyYXkgb2YgYXJyYXlz LgotZXhwb3J0IGZ1bmN0aW9uIENTVlRvQXJyYXkoIHN0ckRhdGEsIHN0ckRlbGltaXRlciwgcXVv dGVDaGFyKXsKK2V4cG9ydCBmdW5jdGlvbiBDU1ZUb0FycmF5KHN0ckRhdGEsIHN0ckRlbGltaXRl ciwgcXVvdGVDaGFyKXsKICAgc3RyRGVsaW1pdGVyID0gc3RyRGVsaW1pdGVyIHx8ICcsJzsKICAg cXVvdGVDaGFyID0gcXVvdGVDaGFyIHx8ICciJzsKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v c3RhdGljL3Njc3MvX2NvZGVtaXJyb3Iub3ZlcnJpZGVzLnNjc3MgYi93ZWIvcGdhZG1pbi9zdGF0 aWMvc2Nzcy9fY29kZW1pcnJvci5vdmVycmlkZXMuc2NzcwppbmRleCBmZDQ0OWNjZjQuLjE0YzA4 YTVmOSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX2NvZGVtaXJyb3Iub3Zl cnJpZGVzLnNjc3MKKysrIGIvd2ViL3BnYWRtaW4vc3RhdGljL3Njc3MvX2NvZGVtaXJyb3Iub3Zl cnJpZGVzLnNjc3MKQEAgLTE2Nyw2ICsxNjcsOSBAQAogICAgICAgYmFja2dyb3VuZDogJHNxbC1o aW50LWFjdGl2ZS1iZzsKICAgICAgIGNvbG9yOiAkc3FsLWhpbnQtYWN0aXZlLWZnOwogICAgIH0K KyAgICAmIC5zcWxlZGl0b3ItaGludCB7CisgICAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7CisgICAg fQogICB9CiB9CiAKQEAgLTIwOCwzICsyMTEsNSBAQAogICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3Fs LWVkaXRvci1kaXNhYmxlLWJnICFpbXBvcnRhbnQ7CiB9CiAKKworCmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9kYXRhZ3JpZC9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2Rh dGFncmlkL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiM2YxMzcx YjQuLjAwMDAwMDAwMAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9fX2luaXRfXy5w eQorKysgL2Rldi9udWxsCkBAIC0xLDYxNyArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwot IyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCi0jCi0jIENvcHlyaWdodCAoQykgMjAxMyAt IDIwMjIsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KLSMgVGhpcyBzb2Z0d2FyZSBpcyBy ZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCi0jCi0jIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IwotCi0iIiJBIGJsdWVwcmludCBtb2R1bGUgaW1wbGVtZW50aW5nIHRoZSBkYXRhZ3JpZCBmcmFt ZS4iIiIKLQotaW1wb3J0IHNpbXBsZWpzb24gYXMganNvbgotaW1wb3J0IHBpY2tsZQotaW1wb3J0 IHJhbmRvbQotCi1mcm9tIHRocmVhZGluZyBpbXBvcnQgTG9jawotZnJvbSBmbGFzayBpbXBvcnQg UmVzcG9uc2UsIHVybF9mb3IsIHNlc3Npb24sIHJlcXVlc3QsIG1ha2VfcmVzcG9uc2UKLWZyb20g d2Vya3pldWcudXNlcmFnZW50cyBpbXBvcnQgVXNlckFnZW50Ci1mcm9tIGZsYXNrIGltcG9ydCBj dXJyZW50X2FwcCBhcyBhcHAsIHJlbmRlcl90ZW1wbGF0ZQotZnJvbSBmbGFza19iYWJlbCBpbXBv cnQgZ2V0dGV4dAotZnJvbSBmbGFza19zZWN1cml0eSBpbXBvcnQgbG9naW5fcmVxdWlyZWQsIGN1 cnJlbnRfdXNlcgotZnJvbSBwZ2FkbWluLnRvb2xzLnNxbGVkaXRvci5jb21tYW5kIGltcG9ydCBP YmplY3RSZWdpc3RyeSwgU1FMRmlsdGVyCi1mcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9yIGlt cG9ydCBjaGVja190cmFuc2FjdGlvbl9zdGF0dXMKLWZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQg UGdBZG1pbk1vZHVsZQotZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXggaW1wb3J0IG1ha2VfanNvbl9y ZXNwb25zZSwgYmFkX3JlcXVlc3QsIFwKLSAgICBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IsIHVuYXV0 aG9yaXplZAotCi1mcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIsIEFMTE9XX1NB VkVfUEFTU1dPUkQKLWZyb20gcGdhZG1pbi5tb2RlbCBpbXBvcnQgU2VydmVyLCBVc2VyCi1mcm9t IHBnYWRtaW4udXRpbHMuZHJpdmVyIGltcG9ydCBnZXRfZHJpdmVyCi1mcm9tIHBnYWRtaW4udXRp bHMuZXhjZXB0aW9uIGltcG9ydCBDb25uZWN0aW9uTG9zdCwgU1NIVHVubmVsQ29ubmVjdGlvbkxv c3QKLWZyb20gcGdhZG1pbi51dGlscy5wcmVmZXJlbmNlcyBpbXBvcnQgUHJlZmVyZW5jZXMKLWZy b20gcGdhZG1pbi5zZXR0aW5ncyBpbXBvcnQgZ2V0X3NldHRpbmcKLWZyb20gcGdhZG1pbi5icm93 c2VyLnV0aWxzIGltcG9ydCB1bmRlcnNjb3JlX3VuZXNjYXBlCi1mcm9tIHBnYWRtaW4udXRpbHMu ZXhjZXB0aW9uIGltcG9ydCBPYmplY3RHb25lCi1mcm9tIHBnYWRtaW4udG9vbHMuc3FsZWRpdG9y LnV0aWxzLm1hY3JvcyBpbXBvcnQgZ2V0X3VzZXJfbWFjcm9zCi1mcm9tIHBnYWRtaW4udXRpbHMu Y29uc3RhbnRzIGltcG9ydCBNSU1FVFlQRV9BUFBfSlMsIFVOQVVUSF9SRVEKLQotTU9EVUxFX05B TUUgPSAnZGF0YWdyaWQnCi0KLXF1ZXJ5X3Rvb2xfY2xvc2Vfc2Vzc2lvbl9sb2NrID0gTG9jaygp Ci0KLQotY2xhc3MgRGF0YUdyaWRNb2R1bGUoUGdBZG1pbk1vZHVsZSk6Ci0gICAgIiIiCi0gICAg Y2xhc3MgRGF0YUdyaWRNb2R1bGUoUGdBZG1pbk1vZHVsZSkKLQotICAgICAgICBBIG1vZHVsZSBj bGFzcyBmb3IgRWRpdCBHcmlkIGRlcml2ZWQgZnJvbSBQZ0FkbWluTW9kdWxlLgotICAgICIiIgot Ci0gICAgTEFCRUwgPSAiRGF0YSBHcmlkIgotCi0gICAgZGVmIGdldF9vd25fbWVudWl0ZW1zKHNl bGYpOgotICAgICAgICByZXR1cm4ge30KLQotICAgIGRlZiBnZXRfb3duX2phdmFzY3JpcHRzKHNl bGYpOgotICAgICAgICByZXR1cm4gW3sKLSAgICAgICAgICAgICduYW1lJzogJ3BnYWRtaW4uZGF0 YWdyaWQnLAotICAgICAgICAgICAgJ3BhdGgnOiB1cmxfZm9yKCdkYXRhZ3JpZC5pbmRleCcpICsg ImRhdGFncmlkIiwKLSAgICAgICAgICAgICd3aGVuJzogTm9uZQotICAgICAgICB9XQotCi0gICAg ZGVmIGdldF9wYW5lbHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbXQotCi0gICAgZGVmIGdldF9l eHBvc2VkX3VybF9lbmRwb2ludHMoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm5z OgotICAgICAgICAgICAgbGlzdDogVVJMIGVuZHBvaW50cyBmb3IgYmFja3VwIG1vZHVsZQotICAg ICAgICAiIiIKLSAgICAgICAgcmV0dXJuIFsKLSAgICAgICAgICAgICdkYXRhZ3JpZC5pbml0aWFs aXplX2RhdGFncmlkJywKLSAgICAgICAgICAgICdkYXRhZ3JpZC5pbml0aWFsaXplX3F1ZXJ5X3Rv b2wnLAotICAgICAgICAgICAgJ2RhdGFncmlkLmluaXRpYWxpemVfcXVlcnlfdG9vbF93aXRoX2Rp ZCcsCi0gICAgICAgICAgICAnZGF0YWdyaWQuZmlsdGVyX3ZhbGlkYXRlJywKLSAgICAgICAgICAg ICdkYXRhZ3JpZC5maWx0ZXInLAotICAgICAgICAgICAgJ2RhdGFncmlkLnBhbmVsJywKLSAgICAg ICAgICAgICdkYXRhZ3JpZC5jbG9zZScsCi0gICAgICAgICAgICAnZGF0YWdyaWQudXBkYXRlX3F1 ZXJ5X3Rvb2xfY29ubmVjdGlvbicKLSAgICAgICAgXQotCi0gICAgZGVmIG9uX2xvZ291dChzZWxm LCB1c2VyKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRoaXMgaXMgYSBjYWxsYmFjayBmdW5jdGlv biB3aGVuIHVzZXIgbG9nb3V0IGZyb20gcGdBZG1pbgotICAgICAgICA6cGFyYW0gdXNlcjoKLSAg ICAgICAgOnJldHVybjoKLSAgICAgICAgIiIiCi0gICAgICAgIHdpdGggcXVlcnlfdG9vbF9jbG9z ZV9zZXNzaW9uX2xvY2s6Ci0gICAgICAgICAgICBpZiAnZ3JpZERhdGEnIGluIHNlc3Npb246Ci0g ICAgICAgICAgICAgICAgZm9yIHRyYW5zX2lkIGluIHNlc3Npb25bJ2dyaWREYXRhJ106Ci0gICAg ICAgICAgICAgICAgICAgIGNsb3NlX3F1ZXJ5X3Rvb2xfc2Vzc2lvbih0cmFuc19pZCkKLQotICAg ICAgICAgICAgICAgICMgRGVsZXRlIGFsbCBncmlkIGRhdGEgZnJvbSBzZXNzaW9uIHZhcmlhYmxl Ci0gICAgICAgICAgICAgICAgZGVsIHNlc3Npb25bJ2dyaWREYXRhJ10KLQotCi1ibHVlcHJpbnQg PSBEYXRhR3JpZE1vZHVsZShNT0RVTEVfTkFNRSwgX19uYW1lX18sIHN0YXRpY191cmxfcGF0aD0n L3N0YXRpYycpCi0KLQotQGJsdWVwcmludC5yb3V0ZSgiLyIpCi1AbG9naW5fcmVxdWlyZWQKLWRl ZiBpbmRleCgpOgotICAgIHJldHVybiBiYWRfcmVxdWVzdCgKLSAgICAgICAgZXJyb3Jtc2c9Z2V0 dGV4dCgnVGhpcyBVUkwgY2Fubm90IGJlIHJlcXVlc3RlZCBkaXJlY3RseS4nKQotICAgICkKLQot Ci1AYmx1ZXByaW50LnJvdXRlKCIvY3NzL2RhdGFncmlkLmNzcyIpCi1kZWYgZGF0YWdyaWRfY3Nz KCk6Ci0gICAgcmV0dXJuIG1ha2VfcmVzcG9uc2UoCi0gICAgICAgIHJlbmRlcl90ZW1wbGF0ZSgn ZGF0YWdyaWQvY3NzL2RhdGFncmlkLmNzcycpLAotICAgICAgICAyMDAsIHsnQ29udGVudC1UeXBl JzogJ3RleHQvY3NzJ30KLSAgICApCi0KLQotQGJsdWVwcmludC5yb3V0ZSgiL2ZpbHRlciIsIGVu ZHBvaW50PSdmaWx0ZXInKQotQGxvZ2luX3JlcXVpcmVkCi1kZWYgc2hvd19maWx0ZXIoKToKLSAg ICByZXR1cm4gcmVuZGVyX3RlbXBsYXRlKE1PRFVMRV9OQU1FICsgJy9maWx0ZXIuaHRtbCcpCi0K LQotQGJsdWVwcmludC5yb3V0ZSgKLSAgICAnL2luaXRpYWxpemUvZGF0YWdyaWQvPGludDp0cmFu c19pZD4vPGludDpjbWRfdHlwZT4vPG9ial90eXBlPi8nCi0gICAgJzxpbnQ6c2dpZD4vPGludDpz aWQ+LzxpbnQ6ZGlkPi88aW50Om9ial9pZD4nLAotICAgIG1ldGhvZHM9WyJQVVQiLCAiUE9TVCJd LAotICAgIGVuZHBvaW50PSJpbml0aWFsaXplX2RhdGFncmlkIgotKQotQGxvZ2luX3JlcXVpcmVk Ci1kZWYgaW5pdGlhbGl6ZV9kYXRhZ3JpZCh0cmFuc19pZCwgY21kX3R5cGUsIG9ial90eXBlLCBz Z2lkLCBzaWQsIGRpZCwgb2JqX2lkKToKLSAgICAiIiIKLSAgICBUaGlzIG1ldGhvZCBpcyByZXNw b25zaWJsZSBmb3IgY3JlYXRpbmcgYW4gYXN5bmNocm9ub3VzIGNvbm5lY3Rpb24uCi0gICAgQWZ0 ZXIgY3JlYXRpbmcgdGhlIGNvbm5lY3Rpb24gaXQgd2lsbCBpbnN0YW50aWF0ZSBhbmQgaW5pdGlh bGl6ZQotICAgIHRoZSBvYmplY3QgYXMgcGVyIHRoZSBvYmplY3QgdHlwZS4gSXQgd2lsbCBhbHNv IGNyZWF0ZSBhIHVuaXF1ZQotICAgIHRyYW5zYWN0aW9uIGlkIGFuZCBzdG9yZSB0aGUgaW5mb3Jt YXRpb24gaW50byBzZXNzaW9uIHZhcmlhYmxlLgotCi0gICAgQXJnczoKLSAgICAgICAgY21kX3R5 cGU6IENvbnRhaW5zIHZhbHVlIGZvciB3aGljaCBtZW51IGl0ZW0gaXMgY2xpY2tlZC4KLSAgICAg ICAgb2JqX3R5cGU6IENvbnRhaW5zIHR5cGUgb2Ygc2VsZWN0ZWQgb2JqZWN0IGZvciB3aGljaCBk YXRhIGdyaWQgdG8KLSAgICAgICAgYmUgcmVuZGVyCi0gICAgICAgIHNnaWQ6IFNlcnZlciBncm91 cCBJZAotICAgICAgICBzaWQ6IFNlcnZlciBJZAotICAgICAgICBkaWQ6IERhdGFiYXNlIElkCi0g ICAgICAgIG9ial9pZDogSWQgb2YgY3VycmVudGx5IHNlbGVjdGVkIG9iamVjdAotICAgICIiIgot Ci0gICAgaWYgcmVxdWVzdC5kYXRhOgotICAgICAgICBmaWx0ZXJfc3FsID0ganNvbi5sb2Fkcyhy ZXF1ZXN0LmRhdGEsIGVuY29kaW5nPSd1dGYtOCcpCi0gICAgZWxzZToKLSAgICAgICAgZmlsdGVy X3NxbCA9IHJlcXVlc3QuYXJncyBvciByZXF1ZXN0LmZvcm0KLQotICAgICMgQ3JlYXRlIGFzeW5j aHJvbm91cyBjb25uZWN0aW9uIHVzaW5nIHJhbmRvbSBjb25uZWN0aW9uIGlkLgotICAgIGNvbm5f aWQgPSBzdHIocmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCi0gICAgdHJ5OgotICAgICAgICBt YW5hZ2VyID0gZ2V0X2RyaXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2Vy KHNpZCkKLSAgICAgICAgIyBkZWZhdWx0X2Nvbm4gaXMgc2FtZSBjb25uZWN0aW9uIHdoaWNoIGlz IGNyZWF0ZWQgd2hlbiB1c2VyIGNvbm5lY3QgdG8KLSAgICAgICAgIyBkYXRhYmFzZSBmcm9tIHRy ZWUKLSAgICAgICAgZGVmYXVsdF9jb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1kaWQpCi0g ICAgICAgIGNvbm4gPSBtYW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWRpZCwgY29ubl9pZD1jb25uX2lk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9fcmVjb25uZWN0PUZhbHNl LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9iaW5hcnlfcGxhY2Vob2xk ZXI9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV90b19zdHJp bmc9VHJ1ZSkKLSAgICBleGNlcHQgKENvbm5lY3Rpb25Mb3N0LCBTU0hUdW5uZWxDb25uZWN0aW9u TG9zdCk6Ci0gICAgICAgIHJhaXNlCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAg ICBhcHAubG9nZ2VyLmVycm9yKGUpCi0gICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJy b3IoZXJyb3Jtc2c9c3RyKGUpKQotCi0gICAgc3RhdHVzLCBtc2cgPSBkZWZhdWx0X2Nvbm4uY29u bmVjdCgpCi0gICAgaWYgbm90IHN0YXR1czoKLSAgICAgICAgYXBwLmxvZ2dlci5lcnJvcihtc2cp Ci0gICAgICAgIHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKG1zZykp Ci0KLSAgICBzdGF0dXMsIG1zZyA9IGNvbm4uY29ubmVjdCgpCi0gICAgaWYgbm90IHN0YXR1czoK LSAgICAgICAgYXBwLmxvZ2dlci5lcnJvcihtc2cpCi0gICAgICAgIHJldHVybiBpbnRlcm5hbF9z ZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKG1zZykpCi0gICAgdHJ5OgotICAgICAgICAjIGlmIG9i amVjdCB0eXBlIGlzIHBhcnRpdGlvbiB0aGVuIGl0IGlzIG5vdGhpbmcgYnV0IGEgdGFibGUuCi0g ICAgICAgIGlmIG9ial90eXBlID09ICdwYXJ0aXRpb24nOgotICAgICAgICAgICAgb2JqX3R5cGUg PSAndGFibGUnCi0KLSAgICAgICAgIyBHZXQgdGhlIG9iamVjdCBhcyBwZXIgdGhlIG9iamVjdCB0 eXBlCi0gICAgICAgIGNvbW1hbmRfb2JqID0gT2JqZWN0UmVnaXN0cnkuZ2V0X29iamVjdCgKLSAg ICAgICAgICAgIG9ial90eXBlLCBjb25uX2lkPWNvbm5faWQsIHNnaWQ9c2dpZCwgc2lkPXNpZCwK LSAgICAgICAgICAgIGRpZD1kaWQsIG9ial9pZD1vYmpfaWQsIGNtZF90eXBlPWNtZF90eXBlLAot ICAgICAgICAgICAgc3FsX2ZpbHRlcj1maWx0ZXJfc3FsCi0gICAgICAgICkKLSAgICBleGNlcHQg T2JqZWN0R29uZToKLSAgICAgICAgcmFpc2UKLSAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0g ICAgICAgIGFwcC5sb2dnZXIuZXJyb3IoZSkKLSAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZl cl9lcnJvcihlcnJvcm1zZz1zdHIoZSkpCi0KLSAgICBpZiAnZ3JpZERhdGEnIG5vdCBpbiBzZXNz aW9uOgotICAgICAgICBzcWxfZ3JpZF9kYXRhID0gZGljdCgpCi0gICAgZWxzZToKLSAgICAgICAg c3FsX2dyaWRfZGF0YSA9IHNlc3Npb25bJ2dyaWREYXRhJ10KLQotICAgICMgVXNlIHBpY2tsZSB0 byBzdG9yZSB0aGUgY29tbWFuZCBvYmplY3Qgd2hpY2ggd2lsbCBiZSB1c2VkIGxhdGVyIGJ5IHRo ZQotICAgICMgc3FsIGdyaWQgbW9kdWxlLgotICAgIHNxbF9ncmlkX2RhdGFbc3RyKHRyYW5zX2lk KV0gPSB7Ci0gICAgICAgICMgLTEgc3BlY2lmeSB0aGUgaGlnaGVzdCBwcm90b2NvbCB2ZXJzaW9u IGF2YWlsYWJsZQotICAgICAgICAnY29tbWFuZF9vYmonOiBwaWNrbGUuZHVtcHMoY29tbWFuZF9v YmosIC0xKQotICAgIH0KLQotICAgICMgU3RvcmUgdGhlIGdyaWQgZGljdGlvbmFyeSBpbnRvIHRo ZSBzZXNzaW9uIHZhcmlhYmxlCi0gICAgc2Vzc2lvblsnZ3JpZERhdGEnXSA9IHNxbF9ncmlkX2Rh dGEKLQotICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoCi0gICAgICAgIGRhdGE9ewotICAg ICAgICAgICAgJ2Nvbm5faWQnOiBjb25uX2lkCi0gICAgICAgIH0KLSAgICApCi0KLQotQGJsdWVw cmludC5yb3V0ZSgKLSAgICAnL3BhbmVsLzxpbnQ6dHJhbnNfaWQ+JywKLSAgICBtZXRob2RzPVsi UE9TVCJdLAotICAgIGVuZHBvaW50PSdwYW5lbCcKLSkKLWRlZiBwYW5lbCh0cmFuc19pZCk6Ci0g ICAgIiIiCi0gICAgVGhpcyBtZXRob2QgY2FsbHMgaW5kZXguaHRtbCB0byByZW5kZXIgdGhlIGRh dGEgZ3JpZC4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHRyYW5zX2lkOiB1bmlxdWUgdHJhbnNhY3Rp b24gaWQKLSAgICAiIiIKLQotICAgIHVybF9wYXJhbXMgPSBOb25lCi0gICAgaWYgcmVxdWVzdC5h cmdzOgotICAgICAgICB1cmxfcGFyYW1zID0ge2s6IHYgZm9yIGssIHYgaW4gcmVxdWVzdC5hcmdz Lml0ZW1zKCl9Ci0KLSAgICBpZiByZXF1ZXN0LmZvcm06Ci0gICAgICAgIHVybF9wYXJhbXNbJ3Rp dGxlJ10gPSByZXF1ZXN0LmZvcm1bJ3RpdGxlJ10KLSAgICAgICAgaWYgJ3NxbF9maWx0ZXInIGlu IHJlcXVlc3QuZm9ybToKLSAgICAgICAgICAgIHVybF9wYXJhbXNbJ3NxbF9maWx0ZXInXSA9IHJl cXVlc3QuZm9ybVsnc3FsX2ZpbHRlciddCi0gICAgICAgIGlmICdxdWVyeV91cmwnIGluIHJlcXVl c3QuZm9ybToKLSAgICAgICAgICAgIHVybF9wYXJhbXNbJ3F1ZXJ5X3VybCddID0gcmVxdWVzdC5m b3JtWydxdWVyeV91cmwnXQotCi0gICAgIyBXZSBuZWVkIGNsaWVudCBPUyBpbmZvcm1hdGlvbiB0 byByZW5kZXIgY29ycmVjdCBLZXlib2FyZCBzaG9ydGN1dHMKLSAgICB1c2VyX2FnZW50ID0gVXNl ckFnZW50KHJlcXVlc3QuaGVhZGVycy5nZXQoJ1VzZXItQWdlbnQnKSkKLQotICAgICIiIgotICAg IEFuaW1hdGlvbnMgYW5kIHRyYW5zaXRpb25zIGFyZSBub3QgYXV0b21hdGljYWxseSBHUFUgYWNj ZWxlcmF0ZWQgYW5kIGJ5Ci0gICAgZGVmYXVsdCB1c2UgYnJvd3NlcidzIHNsb3cgcmVuZGVyaW5n IGVuZ2luZS4gV2UgbmVlZCB0byBzZXQgJ3RyYW5zbGF0ZTNkJwotICAgIHZhbHVlIG9mICctd2Vi a2l0LXRyYW5zZm9ybScgcHJvcGVydHkgaW4gb3JkZXIgdG8gdXNlIEdQVS4gQWZ0ZXIgYXBwbHlp bmcKLSAgICB0aGlzIHByb3BlcnR5IHVuZGVyIGxpbnV4LCBXZWJraXQgY2FsY3VsYXRlcyB3cm9u ZyBwb3NpdGlvbiBvZiB0aGUKLSAgICBlbGVtZW50cyBzbyBwYW5lbCBjb250ZW50cyBhcmUgbm90 IHZpc2libGUuIFRvIG1ha2UgaXQgd29yaywgd2UgbmVlZCB0bwotICAgIGV4cGxpY2l0bHkgc2V0 ICctd2Via2l0LXRyYW5zZm9ybScgcHJvcGVydHkgdG8gJ25vbmUnIGZvciAuYWpzLW5vdGlmaWVy LAotICAgIC5hanMtbWVzc2FnZSwgLmFqcy1tb2RhbCBjbGFzc2VzLgotCi0gICAgVGhpcyBpc3N1 ZSBpcyBvbmx5IHdpdGggbGludXggcnVudGltZSBhcHBsaWNhdGlvbiBhbmQgb2JzZXJ2ZWQgaW4g UXVlcnkKLSAgICB0b29sIGFuZCBkZWJ1Z2dlci4gV2hlbiB3ZSBvcGVuICdPcGVuIEZpbGUnIGRp YWxvZyB0aGVuIHdob2xlIFF1ZXJ5IHRvb2wKLSAgICBwYW5lbCBjb250ZW50IGlzIG5vdCB2aXNp YmxlIHRob3VnaCBpdCBjb250YWlucyBIVE1MIGVsZW1lbnQgaW4gYmFjayBlbmQuCi0KLSAgICBU aGUgcG9ydCBudW1iZXIgc2hvdWxkIGhhdmUgYWxyZWFkeSBiZWVuIHNldCBieSB0aGUgcnVudGlt ZSBpZiB3ZSdyZQotICAgIHJ1bm5pbmcgaW4gZGVza3RvcCBtb2RlLgotICAgICIiIgotICAgIGlz X2xpbnV4X3BsYXRmb3JtID0gRmFsc2UKLQotICAgIGZyb20gc3lzIGltcG9ydCBwbGF0Zm9ybSBh cyBfcGxhdGZvcm0KLSAgICBpZiAibGludXgiIGluIF9wbGF0Zm9ybToKLSAgICAgICAgaXNfbGlu dXhfcGxhdGZvcm0gPSBUcnVlCi0KLSAgICAjIEZldGNoIHRoZSBzZXJ2ZXIgZGV0YWlscwotICAg IGJnY29sb3IgPSBOb25lCi0gICAgZmdjb2xvciA9IE5vbmUKLQotICAgIHMgPSBTZXJ2ZXIucXVl cnkuZmlsdGVyX2J5KGlkPXVybF9wYXJhbXNbJ3NpZCddKS5maXJzdCgpCi0gICAgaWYgcyBhbmQg cy5iZ2NvbG9yOgotICAgICAgICAjIElmIGJhY2tncm91bmQgaXMgc2V0IHRvIHdoaXRlIG1lYW5z IHdlIGRvIG5vdCBoYXZlIHRvIGNoYW5nZQotICAgICAgICAjIHRoZSB0aXRsZSBiYWNrZ3JvdW5k IGVsc2UgY2hhbmdlIGl0IGFzIHBlciB1c2VyIHNwZWNpZmllZAotICAgICAgICAjIGJhY2tncm91 bmQKLSAgICAgICAgaWYgcy5iZ2NvbG9yICE9ICcjZmZmZmZmJzoKLSAgICAgICAgICAgIGJnY29s b3IgPSBzLmJnY29sb3IKLSAgICAgICAgZmdjb2xvciA9IHMuZmdjb2xvciBvciAnYmxhY2snCi0K LSAgICBsYXlvdXQgPSBnZXRfc2V0dGluZygnU1FMRWRpdG9yL0xheW91dCcpCi0KLSAgICBtYWNy b3MgPSBnZXRfdXNlcl9tYWNyb3MoKQotCi0gICAgcmV0dXJuIHJlbmRlcl90ZW1wbGF0ZSgKLSAg ICAgICAgImRhdGFncmlkL2luZGV4Lmh0bWwiLAotICAgICAgICBfPWdldHRleHQsCi0gICAgICAg IHVuaXF1ZUlkPXRyYW5zX2lkLAotICAgICAgICBpc19kZXNrdG9wX21vZGU9YXBwLlBHQURNSU5f UlVOVElNRSwKLSAgICAgICAgaXNfbGludXg9aXNfbGludXhfcGxhdGZvcm0sCi0gICAgICAgIHRp dGxlPXVuZGVyc2NvcmVfdW5lc2NhcGUodXJsX3BhcmFtc1sndGl0bGUnXSksCi0gICAgICAgIHVy bF9wYXJhbXM9anNvbi5kdW1wcyh1cmxfcGFyYW1zKSwKLSAgICAgICAgY2xpZW50X3BsYXRmb3Jt PXVzZXJfYWdlbnQucGxhdGZvcm0sCi0gICAgICAgIGJnY29sb3I9Ymdjb2xvciwKLSAgICAgICAg Zmdjb2xvcj1mZ2NvbG9yLAotICAgICAgICBsYXlvdXQ9bGF5b3V0LAotICAgICAgICByZXF1aXJl anM9VHJ1ZSwKLSAgICAgICAgYmFzZWpzPVRydWUsCi0gICAgICAgIG1hY3Jvcz1tYWNyb3MKLSAg ICApCi0KLQotQGJsdWVwcmludC5yb3V0ZSgKLSAgICAnL2luaXRpYWxpemUvcXVlcnlfdG9vbC88 aW50OnRyYW5zX2lkPi88aW50OnNnaWQ+LzxpbnQ6c2lkPi88aW50OmRpZD4nLAotICAgIG1ldGhv ZHM9WyJQT1NUIl0sIGVuZHBvaW50PSdpbml0aWFsaXplX3F1ZXJ5X3Rvb2xfd2l0aF9kaWQnCi0p Ci1AYmx1ZXByaW50LnJvdXRlKAotICAgICcvaW5pdGlhbGl6ZS9xdWVyeV90b29sLzxpbnQ6dHJh bnNfaWQ+LzxpbnQ6c2dpZD4vPGludDpzaWQ+JywKLSAgICBtZXRob2RzPVsiUE9TVCJdLCBlbmRw b2ludD0naW5pdGlhbGl6ZV9xdWVyeV90b29sJwotKQotQGxvZ2luX3JlcXVpcmVkCi1kZWYgaW5p dGlhbGl6ZV9xdWVyeV90b29sKHRyYW5zX2lkLCBzZ2lkLCBzaWQsIGRpZD1Ob25lKToKLSAgICAi IiIKLSAgICBUaGlzIG1ldGhvZCBpcyByZXNwb25zaWJsZSBmb3IgaW5zdGFudGlhdGluZyBhbmQg aW5pdGlhbGl6aW5nCi0gICAgdGhlIHF1ZXJ5IHRvb2wgb2JqZWN0LiBJdCB3aWxsIGFsc28gY3Jl YXRlIGEgdW5pcXVlCi0gICAgdHJhbnNhY3Rpb24gaWQgYW5kIHN0b3JlIHRoZSBpbmZvcm1hdGlv biBpbnRvIHNlc3Npb24gdmFyaWFibGUuCi0KLSAgICBBcmdzOgotICAgICAgICBzZ2lkOiBTZXJ2 ZXIgZ3JvdXAgSWQKLSAgICAgICAgc2lkOiBTZXJ2ZXIgSWQKLSAgICAgICAgZGlkOiBEYXRhYmFz ZSBJZAotICAgICIiIgotICAgIGNvbm5lY3QgPSBUcnVlCi0gICAgIyBSZWFkIHRoZSBkYXRhIGlm IHByZXNlbnQuIFNraXBwaW5nIHJlYWQgbWF5IGNhdXNlIGNvbm5lY3Rpb24KLSAgICAjIHJlc2V0 IGVycm9yIGlmIGRhdGEgaXMgc2VudCBmcm9tIHRoZSBjbGllbnQKLSAgICBpZiByZXF1ZXN0LmRh dGE6Ci0gICAgICAgIF8gPSByZXF1ZXN0LmRhdGEKLQotICAgIHJlcV9hcmdzID0gcmVxdWVzdC5h cmdzCi0gICAgaWYgKCdyZWNyZWF0ZScgaW4gcmVxX2FyZ3MgYW5kCi0gICAgICAgICAgICByZXFf YXJnc1sncmVjcmVhdGUnXSA9PSAnMScpOgotICAgICAgICBjb25uZWN0ID0gRmFsc2UKLQotICAg IGlzX2Vycm9yLCBlcnJtc2csIGNvbm5faWQsIHZlcnNpb24gPSBfaW5pdF9xdWVyeV90b29sKHRy YW5zX2lkLCBjb25uZWN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNnaWQsIHNpZCwgZGlkKQotICAgIGlmIGlzX2Vycm9yOgotICAg ICAgICByZXR1cm4gZXJybXNnCi0KLSAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAotICAg ICAgICBkYXRhPXsKLSAgICAgICAgICAgICdjb25uSWQnOiBzdHIoY29ubl9pZCksCi0gICAgICAg ICAgICAnc2VydmVyVmVyc2lvbic6IHZlcnNpb24sCi0gICAgICAgIH0KLSAgICApCi0KLQotZGVm IF9jb25uZWN0KGNvbm4sICoqa3dhcmdzKToKLSAgICAiIiIKLSAgICBDb25uZWN0IHRoZSBkYXRh YmFzZS4KLSAgICA6cGFyYW0gY29ubjogQ29ubmVjdGlvbiBpbnN0YW5jZS4KLSAgICA6cGFyYW0g a3dhcmdzOiB1c2VyLCByb2xlIGFuZCBwYXNzd29yZCBkYXRhIGZyb20gdXNlci4KLSAgICA6cmV0 dXJuOgotICAgICIiIgotICAgIHVzZXIgPSBOb25lCi0gICAgcm9sZSA9IE5vbmUKLSAgICBwYXNz d29yZCA9IE5vbmUKLSAgICBpc19hc2tfcGFzc3dvcmQgPSBGYWxzZQotICAgIGlmICd1c2VyJyBp biBrd2FyZ3MgYW5kICdyb2xlJyBpbiBrd2FyZ3M6Ci0gICAgICAgIHVzZXIgPSBrd2FyZ3NbJ3Vz ZXInXQotICAgICAgICByb2xlID0ga3dhcmdzWydyb2xlJ10gaWYga3dhcmdzWydyb2xlJ10gZWxz ZSBOb25lCi0gICAgICAgIHBhc3N3b3JkID0ga3dhcmdzWydwYXNzd29yZCddIGlmIGt3YXJnc1sn cGFzc3dvcmQnXSBlbHNlIE5vbmUKLSAgICAgICAgaXNfYXNrX3Bhc3N3b3JkID0gVHJ1ZQotICAg IGlmIHVzZXI6Ci0gICAgICAgIHN0YXR1cywgbXNnID0gY29ubi5jb25uZWN0KHVzZXI9dXNlciwg cm9sZT1yb2xlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzd29yZD1w YXNzd29yZCkKLSAgICBlbHNlOgotICAgICAgICBzdGF0dXMsIG1zZyA9IGNvbm4uY29ubmVjdCgp Ci0KLSAgICByZXR1cm4gc3RhdHVzLCBtc2csIGlzX2Fza19wYXNzd29yZCwgdXNlciwgcm9sZSwg cGFzc3dvcmQKLQotCi1kZWYgX2luaXRfcXVlcnlfdG9vbCh0cmFuc19pZCwgY29ubmVjdCwgc2dp ZCwgc2lkLCBkaWQsICoqa3dhcmdzKToKLSAgICAjIENyZWF0ZSBhc3luY2hyb25vdXMgY29ubmVj dGlvbiB1c2luZyByYW5kb20gY29ubmVjdGlvbiBpZC4KLSAgICBjb25uX2lkID0gc3RyKHJhbmRv bS5yYW5kaW50KDEsIDk5OTk5OTkpKQotCi0gICAgbWFuYWdlciA9IGdldF9kcml2ZXIoUEdfREVG QVVMVF9EUklWRVIpLmNvbm5lY3Rpb25fbWFuYWdlcihzaWQpCi0KLSAgICBpZiBkaWQgaXMgTm9u ZToKLSAgICAgICAgZGlkID0gbWFuYWdlci5kaWQKLSAgICB0cnk6Ci0gICAgICAgIGNvbW1hbmRf b2JqID0gT2JqZWN0UmVnaXN0cnkuZ2V0X29iamVjdCgKLSAgICAgICAgICAgICdxdWVyeV90b29s JywgY29ubl9pZD1jb25uX2lkLCBzZ2lkPXNnaWQsIHNpZD1zaWQsIGRpZD1kaWQKLSAgICAgICAg KQotICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgYXBwLmxvZ2dlci5lcnJvcihl KQotICAgICAgICByZXR1cm4gVHJ1ZSwgaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0 cihlKSksICcnLCAnJwotCi0gICAgdHJ5OgotICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0 aW9uKGRpZD1kaWQsIGNvbm5faWQ9Y29ubl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBhdXRvX3JlY29ubmVjdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1c2VfYmluYXJ5X3BsYWNlaG9sZGVyPVRydWUsCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYXJyYXlfdG9fc3RyaW5nPVRydWUpCi0KLSAgICAgICAgaWYgY29ubmVj dDoKLSAgICAgICAgICAgIHN0YXR1cywgbXNnLCBpc19hc2tfcGFzc3dvcmQsIHVzZXIsIHJvbGUs IHBhc3N3b3JkID0gX2Nvbm5lY3QoCi0gICAgICAgICAgICAgICAgY29ubiwgKiprd2FyZ3MpCi0g ICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgotICAgICAgICAgICAgICAgIGFwcC5sb2dnZXIuZXJy b3IobXNnKQotICAgICAgICAgICAgICAgIGlmIGlzX2Fza19wYXNzd29yZDoKLSAgICAgICAgICAg ICAgICAgICAgc2VydmVyID0gU2VydmVyLnF1ZXJ5LmZpbHRlcl9ieShpZD1zaWQpLmZpcnN0KCkK LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUsIG1ha2VfanNvbl9yZXNwb25zZSgKLSAg ICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M9MCwKLSAgICAgICAgICAgICAgICAgICAgICAg IHN0YXR1cz00MjgsCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQ9cmVuZGVyX3RlbXBs YXRlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzZXJ2ZXJzL3Bhc3N3b3JkLmh0bWwn LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9sYWJlbD1zZXJ2ZXIubmFtZSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VybmFtZT11c2VyLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVycm1zZz1tc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg Xz1nZXR0ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG93X3NhdmVfcGFzc3dv cmQ9VHJ1ZSBpZgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFMTE9XX1NBVkVfUEFTU1dP UkQgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvblsnYWxsb3dfc2F2ZV9w YXNzd29yZCddIGVsc2UgRmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgICAg ICAgICAgICAgICAgICksICcnLCAnJwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg ICAgICAgICAgIHJldHVybiBUcnVlLCBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoCi0gICAgICAgICAg ICAgICAgICAgICAgICBlcnJvcm1zZz1zdHIobXNnKSksICcnLCAnJwotICAgIGV4Y2VwdCAoQ29u bmVjdGlvbkxvc3QsIFNTSFR1bm5lbENvbm5lY3Rpb25Mb3N0KSBhcyBlOgotICAgICAgICBhcHAu bG9nZ2VyLmVycm9yKGUpCi0gICAgICAgIHJhaXNlCi0gICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBl OgotICAgICAgICBhcHAubG9nZ2VyLmVycm9yKGUpCi0gICAgICAgIHJldHVybiBUcnVlLCBpbnRl cm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKSwgJycsICcnCi0KLSAgICBpZiAnZ3Jp ZERhdGEnIG5vdCBpbiBzZXNzaW9uOgotICAgICAgICBzcWxfZ3JpZF9kYXRhID0gZGljdCgpCi0g ICAgZWxzZToKLSAgICAgICAgc3FsX2dyaWRfZGF0YSA9IHNlc3Npb25bJ2dyaWREYXRhJ10KLQot ICAgICMgU2V0IHRoZSB2YWx1ZSBvZiBhdXRvIGNvbW1pdCBhbmQgYXV0byByb2xsYmFjayBzcGVj aWZpZWQgaW4gUHJlZmVyZW5jZXMKLSAgICBwcmVmID0gUHJlZmVyZW5jZXMubW9kdWxlKCdzcWxl ZGl0b3InKQotICAgIGNvbW1hbmRfb2JqLnNldF9hdXRvX2NvbW1pdChwcmVmLnByZWZlcmVuY2Uo J2F1dG9fY29tbWl0JykuZ2V0KCkpCi0gICAgY29tbWFuZF9vYmouc2V0X2F1dG9fcm9sbGJhY2so cHJlZi5wcmVmZXJlbmNlKCdhdXRvX3JvbGxiYWNrJykuZ2V0KCkpCi0KLSAgICAjIFVzZSBwaWNr bGUgdG8gc3RvcmUgdGhlIGNvbW1hbmQgb2JqZWN0IHdoaWNoIHdpbGwgYmUgdXNlZAotICAgICMg bGF0ZXIgYnkgdGhlIHNxbCBncmlkIG1vZHVsZS4KLSAgICBzcWxfZ3JpZF9kYXRhW3N0cih0cmFu c19pZCldID0gewotICAgICAgICAjIC0xIHNwZWNpZnkgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVy c2lvbiBhdmFpbGFibGUKLSAgICAgICAgJ2NvbW1hbmRfb2JqJzogcGlja2xlLmR1bXBzKGNvbW1h bmRfb2JqLCAtMSkKLSAgICB9Ci0KLSAgICAjIFN0b3JlIHRoZSBncmlkIGRpY3Rpb25hcnkgaW50 byB0aGUgc2Vzc2lvbiB2YXJpYWJsZQotICAgIHNlc3Npb25bJ2dyaWREYXRhJ10gPSBzcWxfZ3Jp ZF9kYXRhCi0KLSAgICByZXR1cm4gRmFsc2UsICcnLCBjb25uX2lkLCBtYW5hZ2VyLnZlcnNpb24K LQotCi1AYmx1ZXByaW50LnJvdXRlKAotICAgICcvaW5pdGlhbGl6ZS9xdWVyeV90b29sL3VwZGF0 ZV9jb25uZWN0aW9uLzxpbnQ6dHJhbnNfaWQ+LycKLSAgICAnPGludDpzZ2lkPi88aW50OnNpZD4v PGludDpkaWQ+JywKLSAgICBtZXRob2RzPVsiUE9TVCJdLCBlbmRwb2ludD0ndXBkYXRlX3F1ZXJ5 X3Rvb2xfY29ubmVjdGlvbicKLSkKLWRlZiB1cGRhdGVfcXVlcnlfdG9vbF9jb25uZWN0aW9uKHRy YW5zX2lkLCBzZ2lkLCBzaWQsIGRpZCk6Ci0gICAgIyBSZW1vdmUgdHJhbnNhY3Rpb24gSWQuCi0g ICAgd2l0aCBxdWVyeV90b29sX2Nsb3NlX3Nlc3Npb25fbG9jazoKLSAgICAgICAgZGF0YSA9IGpz b24ubG9hZHMocmVxdWVzdC5kYXRhLCBlbmNvZGluZz0ndXRmLTgnKQotCi0gICAgICAgIGlmICdn cmlkRGF0YScgbm90IGluIHNlc3Npb246Ci0gICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jl c3BvbnNlKGRhdGE9eydzdGF0dXMnOiBUcnVlfSkKLQotICAgICAgICBncmlkX2RhdGEgPSBzZXNz aW9uWydncmlkRGF0YSddCi0KLSAgICAgICAgIyBSZXR1cm4gZnJvbSB0aGUgZnVuY3Rpb24gaWYg dHJhbnNhY3Rpb24gaWQgbm90IGZvdW5kCi0gICAgICAgIGlmIHN0cih0cmFuc19pZCkgbm90IGlu IGdyaWRfZGF0YToKLSAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoZGF0YT17 J3N0YXR1cyc6IFRydWV9KQotCi0gICAgICAgIGNvbm5lY3QgPSBUcnVlCi0KLSAgICAgICAgcmVx X2FyZ3MgPSByZXF1ZXN0LmFyZ3MKLSAgICAgICAgaWYgKCdyZWNyZWF0ZScgaW4gcmVxX2FyZ3Mg YW5kCi0gICAgICAgICAgICAgICAgcmVxX2FyZ3NbJ3JlY3JlYXRlJ10gPT0gJzEnKToKLSAgICAg ICAgICAgIGNvbm5lY3QgPSBGYWxzZQotCi0gICAgICAgIG5ld190cmFuc19pZCA9IHN0cihyYW5k b20ucmFuZGludCgxLCA5OTk5OTk5KSkKLSAgICAgICAga3dhcmdzID0gewotICAgICAgICAgICAg J3VzZXInOiBkYXRhWyd1c2VyJ10sCi0gICAgICAgICAgICAncm9sZSc6IGRhdGFbJ3JvbGUnXSBp ZiAncm9sZScgaW4gZGF0YSBlbHNlIE5vbmUsCi0gICAgICAgICAgICAncGFzc3dvcmQnOiBkYXRh WydwYXNzd29yZCddIGlmICdwYXNzd29yZCcgaW4gZGF0YSBlbHNlIE5vbmUKLSAgICAgICAgfQot Ci0gICAgICAgIGlzX2Vycm9yLCBlcnJtc2csIGNvbm5faWQsIHZlcnNpb24gPSBfaW5pdF9xdWVy eV90b29sKAotICAgICAgICAgICAgbmV3X3RyYW5zX2lkLCBjb25uZWN0LCBzZ2lkLCBzaWQsIGRp ZCwgKiprd2FyZ3MpCi0KLSAgICAgICAgaWYgaXNfZXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4g ZXJybXNnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg IyBDaGVjayB0aGUgdHJhbnNhY3Rpb24gYW5kIGNvbm5lY3Rpb24gc3RhdHVzCi0gICAgICAgICAg ICAgICAgc3RhdHVzLCBlcnJvcl9tc2csIGNvbm4sIHRyYW5zX29iaiwgc2Vzc2lvbl9vYmogPSBc Ci0gICAgICAgICAgICAgICAgICAgIGNoZWNrX3RyYW5zYWN0aW9uX3N0YXR1cyh0cmFuc19pZCkK LQotICAgICAgICAgICAgICAgIHN0YXR1cywgZXJyb3JfbXNnLCBuZXdfY29ubiwgbmV3X3RyYW5z X29iaiwgbmV3X3Nlc3Npb25fb2JqID0gXAotICAgICAgICAgICAgICAgICAgICBjaGVja190cmFu c2FjdGlvbl9zdGF0dXMobmV3X3RyYW5zX2lkKQotCi0gICAgICAgICAgICAgICAgbmV3X3Nlc3Np b25fb2JqWydwcmltYXJ5X2tleXMnXSA9IHNlc3Npb25fb2JqWwotICAgICAgICAgICAgICAgICAg ICAncHJpbWFyeV9rZXlzJ10gaWYgJ3ByaW1hcnlfa2V5cycgaW4gc2Vzc2lvbl9vYmogZWxzZSBO b25lCi0gICAgICAgICAgICAgICAgbmV3X3Nlc3Npb25fb2JqWydjb2x1bW5zX2luZm8nXSA9IHNl c3Npb25fb2JqWwotICAgICAgICAgICAgICAgICAgICAnY29sdW1uc19pbmZvJ10gaWYgJ2NvbHVt bnNfaW5mbycgaW4gc2Vzc2lvbl9vYmogZWxzZSBOb25lCi0gICAgICAgICAgICAgICAgbmV3X3Nl c3Npb25fb2JqWydjbGllbnRfcHJpbWFyeV9rZXknXSA9IHNlc3Npb25fb2JqWwotICAgICAgICAg ICAgICAgICAgICAnY2xpZW50X3ByaW1hcnlfa2V5J10gaWYgJ2NsaWVudF9wcmltYXJ5X2tleSdc Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBzZXNzaW9u X29iaiBlbHNlIE5vbmUKLQotICAgICAgICAgICAgICAgIGNsb3NlX3F1ZXJ5X3Rvb2xfc2Vzc2lv bih0cmFuc19pZCkKLSAgICAgICAgICAgICAgICAjIFJlbW92ZSB0aGUgaW5mb3JtYXRpb24gb2Yg dW5pcXVlIHRyYW5zYWN0aW9uIGlkIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgIyBzZXNzaW9u IHZhcmlhYmxlLgotICAgICAgICAgICAgICAgIGdyaWRfZGF0YS5wb3Aoc3RyKHRyYW5zX2lkKSwg Tm9uZSkKLSAgICAgICAgICAgICAgICBzZXNzaW9uWydncmlkRGF0YSddID0gZ3JpZF9kYXRhCi0g ICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICAgICAgYXBwLmxv Z2dlci5lcnJvcihlKQotCi0gICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKLSAgICAgICAg ZGF0YT17Ci0gICAgICAgICAgICAnY29ubklkJzogc3RyKGNvbm5faWQpLAotICAgICAgICAgICAg J3NlcnZlclZlcnNpb24nOiB2ZXJzaW9uLAotICAgICAgICAgICAgJ3RyYW5faWQnOiBuZXdfdHJh bnNfaWQKLSAgICAgICAgfQotICAgICkKLQotCi1AYmx1ZXByaW50LnJvdXRlKCcvY2xvc2UvPGlu dDp0cmFuc19pZD4nLCBtZXRob2RzPVsiREVMRVRFIl0sIGVuZHBvaW50PSdjbG9zZScpCi1kZWYg Y2xvc2UodHJhbnNfaWQpOgotICAgICIiIgotICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gY2xv c2UgdGhlIGFzeW5jaHJvbm91cyBjb25uZWN0aW9uCi0gICAgYW5kIHJlbW92ZSB0aGUgaW5mb3Jt YXRpb24gb2YgdW5pcXVlIHRyYW5zYWN0aW9uIGlkIGZyb20KLSAgICB0aGUgc2Vzc2lvbiB2YXJp YWJsZS4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHRyYW5zX2lkOiB1bmlxdWUgdHJhbnNhY3Rpb24g aWQKLSAgICAiIiIKLSAgICB3aXRoIHF1ZXJ5X3Rvb2xfY2xvc2Vfc2Vzc2lvbl9sb2NrOgotICAg ICAgICBpZiAnZ3JpZERhdGEnIG5vdCBpbiBzZXNzaW9uOgotICAgICAgICAgICAgcmV0dXJuIG1h a2VfanNvbl9yZXNwb25zZShkYXRhPXsnc3RhdHVzJzogVHJ1ZX0pCi0KLSAgICAgICAgZ3JpZF9k YXRhID0gc2Vzc2lvblsnZ3JpZERhdGEnXQotICAgICAgICAjIFJldHVybiBmcm9tIHRoZSBmdW5j dGlvbiBpZiB0cmFuc2FjdGlvbiBpZCBub3QgZm91bmQKLSAgICAgICAgaWYgc3RyKHRyYW5zX2lk KSBub3QgaW4gZ3JpZF9kYXRhOgotICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25z ZShkYXRhPXsnc3RhdHVzJzogVHJ1ZX0pCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY2xv c2VfcXVlcnlfdG9vbF9zZXNzaW9uKHRyYW5zX2lkKQotICAgICAgICAgICAgIyBSZW1vdmUgdGhl IGluZm9ybWF0aW9uIG9mIHVuaXF1ZSB0cmFuc2FjdGlvbiBpZCBmcm9tIHRoZQotICAgICAgICAg ICAgIyBzZXNzaW9uIHZhcmlhYmxlLgotICAgICAgICAgICAgZ3JpZF9kYXRhLnBvcChzdHIodHJh bnNfaWQpLCBOb25lKQotICAgICAgICAgICAgc2Vzc2lvblsnZ3JpZERhdGEnXSA9IGdyaWRfZGF0 YQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBhcHAubG9nZ2Vy LmVycm9yKGUpCi0gICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9y bXNnPXN0cihlKSkKLQotICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoZGF0YT17J3N0YXR1 cyc6IFRydWV9KQotCi0KLUBibHVlcHJpbnQucm91dGUoCi0gICAgJy9maWx0ZXIvdmFsaWRhdGUv PGludDpzaWQ+LzxpbnQ6ZGlkPi88aW50Om9ial9pZD4nLAotICAgIG1ldGhvZHM9WyJQVVQiLCAi UE9TVCJdLCBlbmRwb2ludD0nZmlsdGVyX3ZhbGlkYXRlJwotKQotQGxvZ2luX3JlcXVpcmVkCi1k ZWYgdmFsaWRhdGVfZmlsdGVyKHNpZCwgZGlkLCBvYmpfaWQpOgotICAgICIiIgotICAgIFRoaXMg bWV0aG9kIGlzIHVzZWQgdG8gdmFsaWRhdGUgdGhlIHNxbCBmaWx0ZXIuCi0KLSAgICBBcmdzOgot ICAgICAgICBzaWQ6IFNlcnZlciBJZAotICAgICAgICBkaWQ6IERhdGFiYXNlIElkCi0gICAgICAg IG9ial9pZDogSWQgb2YgY3VycmVudGx5IHNlbGVjdGVkIG9iamVjdAotICAgICIiIgotICAgIGlm IHJlcXVlc3QuZGF0YToKLSAgICAgICAgZmlsdGVyX3NxbCA9IGpzb24ubG9hZHMocmVxdWVzdC5k YXRhLCBlbmNvZGluZz0ndXRmLTgnKQotICAgIGVsc2U6Ci0gICAgICAgIGZpbHRlcl9zcWwgPSBy ZXF1ZXN0LmFyZ3Mgb3IgcmVxdWVzdC5mb3JtCi0KLSAgICB0cnk6Ci0gICAgICAgICMgQ3JlYXRl IG9iamVjdCBvZiBTUUxGaWx0ZXIgY2xhc3MKLSAgICAgICAgc3FsX2ZpbHRlcl9vYmogPSBTUUxG aWx0ZXIoc2lkPXNpZCwgZGlkPWRpZCwgb2JqX2lkPW9ial9pZCkKLQotICAgICAgICAjIENhbGwg dmFsaWRhdGVfZmlsdGVyIG1ldGhvZCB0byB2YWxpZGF0ZSB0aGUgU1FMLgotICAgICAgICBzdGF0 dXMsIHJlcyA9IHNxbF9maWx0ZXJfb2JqLnZhbGlkYXRlX2ZpbHRlcihmaWx0ZXJfc3FsKQotICAg IGV4Y2VwdCBPYmplY3RHb25lOgotICAgICAgICByYWlzZQotICAgIGV4Y2VwdCBFeGNlcHRpb24g YXMgZToKLSAgICAgICAgYXBwLmxvZ2dlci5lcnJvcihlKQotICAgICAgICByZXR1cm4gaW50ZXJu YWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKLQotICAgIHJldHVybiBtYWtlX2pzb25f cmVzcG9uc2UoZGF0YT17J3N0YXR1cyc6IHN0YXR1cywgJ3Jlc3VsdCc6IHJlc30pCi0KLQotQGJs dWVwcmludC5yb3V0ZSgiL2RhdGFncmlkLmpzIikKLUBsb2dpbl9yZXF1aXJlZAotZGVmIHNjcmlw dCgpOgotICAgICIiInJlbmRlciB0aGUgcmVxdWlyZWQgamF2YXNjcmlwdCIiIgotICAgIHJldHVy biBSZXNwb25zZSgKLSAgICAgICAgcmVzcG9uc2U9cmVuZGVyX3RlbXBsYXRlKCJkYXRhZ3JpZC9q cy9kYXRhZ3JpZC5qcyIsIF89Z2V0dGV4dCksCi0gICAgICAgIHN0YXR1cz0yMDAsCi0gICAgICAg IG1pbWV0eXBlPU1JTUVUWVBFX0FQUF9KUwotICAgICkKLQotCi1kZWYgY2xvc2VfcXVlcnlfdG9v bF9zZXNzaW9uKHRyYW5zX2lkKToKLSAgICAiIiIKLSAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQg dG8gY2FuY2VsIHRoZSB0cmFuc2FjdGlvbiBhbmQgcmVsZWFzZSB0aGUgY29ubmVjdGlvbi4KLQot ICAgIDpwYXJhbSB0cmFuc19pZDogVHJhbnNhY3Rpb24gaWQKLSAgICA6cmV0dXJuOgotICAgICIi IgotICAgIGlmICdncmlkRGF0YScgaW4gc2Vzc2lvbiBhbmQgc3RyKHRyYW5zX2lkKSBpbiBzZXNz aW9uWydncmlkRGF0YSddOgotICAgICAgICBjbWRfb2JqX3N0ciA9IHNlc3Npb25bJ2dyaWREYXRh J11bc3RyKHRyYW5zX2lkKV1bJ2NvbW1hbmRfb2JqJ10KLSAgICAgICAgIyBVc2UgcGlja2xlLmxv YWRzIGZ1bmN0aW9uIHRvIGdldCB0aGUgY29tbWFuZCBvYmplY3QKLSAgICAgICAgY21kX29iaiA9 IHBpY2tsZS5sb2FkcyhjbWRfb2JqX3N0cikKLQotICAgICAgICAjIGlmIGNvbm5lY3Rpb24gaWQg aXMgTm9uZSB0aGVuIG5vIG5lZWQgdG8gcmVsZWFzZSB0aGUgY29ubmVjdGlvbgotICAgICAgICBp ZiBjbWRfb2JqLmNvbm5faWQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBtYW5hZ2VyID0gZ2V0 X2RyaXZlcigKLSAgICAgICAgICAgICAgICBQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9t YW5hZ2VyKGNtZF9vYmouc2lkKQotICAgICAgICAgICAgaWYgbWFuYWdlciBpcyBub3QgTm9uZToK LSAgICAgICAgICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKAotICAgICAgICAgICAg ICAgICAgICBkaWQ9Y21kX29iai5kaWQsIGNvbm5faWQ9Y21kX29iai5jb25uX2lkKQotCi0gICAg ICAgICAgICAgICAgIyBSZWxlYXNlIHRoZSBjb25uZWN0aW9uCi0gICAgICAgICAgICAgICAgaWYg Y29ubi5jb25uZWN0ZWQoKToKLSAgICAgICAgICAgICAgICAgICAgY29ubi5jYW5jZWxfdHJhbnNh Y3Rpb24oY21kX29iai5jb25uX2lkLCBjbWRfb2JqLmRpZCkKLSAgICAgICAgICAgICAgICAgICAg bWFuYWdlci5yZWxlYXNlKGRpZD1jbWRfb2JqLmRpZCwgY29ubl9pZD1jbWRfb2JqLmNvbm5faWQp CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdy aWQuanMgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWQuanMK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MzhmOGE1Zi4uMDAwMDAwMDAwCi0tLSBh L3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9kYXRhZ3JpZC5qcworKysgL2Rl di9udWxsCkBAIC0xLDM3MCArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gcGdBZG1pbiA0IC0gUG9zdGdy ZVNRTCBUb29scwotLy8KLS8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KLS8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhl IFBvc3RncmVTUUwgTGljZW5jZQotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi1kZWZpbmUoJ3BnYWRtaW4uZGF0YWdyaWQn LCBbCi0gICdzb3VyY2VzL2dldHRleHQnLCAnc291cmNlcy91cmxfZm9yJywgJ2pxdWVyeScsICd1 bmRlcnNjb3JlJywKLSAgJ3BnYWRtaW4uYWxlcnRpZnlqcycsICdzb3VyY2VzL3BnYWRtaW4nLCAn YnVuZGxlZF9jb2RlbWlycm9yJywKLSAgJ3NvdXJjZXMvc3FsZWRpdG9yX3V0aWxzJywgJ2JhY2ti b25lJywKLSAgJ3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X2RhdGEnLAotICAndG9vbHMv ZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbCcsICdwZ2FkbWluLmJyb3dzZXIudG9v bGJhcicsCi0gICd0b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWRfcGFuZWxfdGl0bGUn LCAnc291cmNlcy91dGlscycsICd3Y2RvY2tlcicsCi1dLCBmdW5jdGlvbigKLSAgZ2V0dGV4dCwg dXJsX2ZvciwgJCwgXywgYWxlcnRpZnksIHBnQWRtaW4sIGNvZGVtaXJyb3IsIHNxbEVkaXRvclV0 aWxzLAotICBCYWNrYm9uZSwgc2hvd0RhdGEsIHNob3dRdWVyeVRvb2wsIHRvb2xCYXIsIHBhbmVs VGl0bGVGdW5jLCBjb21tb25VdGlscwotKSB7Ci0gIC8vIFNvbWUgc2NyaXB0cyBkbyBleHBvcnQg dGhlaXIgb2JqZWN0IGluIHRoZSB3aW5kb3cgb25seS4KLSAgLy8gR2VuZXJhbGx5IHRoZSBvbmUs IHdoaWNoIGRvIG5vIGhhdmUgQU1EIHN1cHBvcnQuCi0gIHZhciB3Y0RvY2tlciA9IHdpbmRvdy53 Y0RvY2tlciwKLSAgICBwZ0Jyb3dzZXIgPSBwZ0FkbWluLkJyb3dzZXI7Ci0KLSAgLyogUmV0dXJu IGJhY2ssIHRoaXMgaGFzIGJlZW4gY2FsbGVkIG1vcmUgdGhhbiBvbmNlICovCi0gIGlmIChwZ0Fk bWluLkRhdGFHcmlkKQotICAgIHJldHVybiBwZ0FkbWluLkRhdGFHcmlkOwotCi0gIHBnQWRtaW4u RGF0YUdyaWQgPQotICBfLmV4dGVuZCgKLSAgICB7Ci0gICAgICBpbml0OiBmdW5jdGlvbigpIHsK LSAgICAgICAgaWYgKHRoaXMuaW5pdGlhbGl6ZWQpCi0gICAgICAgICAgcmV0dXJuOwotICAgICAg ICB0aGlzLmluaXRpYWxpemVkID0gdHJ1ZTsKLSAgICAgICAgdGhpcy50aXRsZV9pbmRleCA9IDE7 Ci0KLQotICAgICAgICBsZXQgc2VsZiA9IHRoaXM7Ci0gICAgICAgIC8qIENhY2hlIG1heSB0YWtl IHRpbWUgdG8gbG9hZCBmb3IgdGhlIGZpcnN0IHRpbWUKLSAgICAgICAgICogS2VlcCB0cnlpbmcg dGlsbCBhdmFpbGFibGUKLSAgICAgICAgICovCi0gICAgICAgIGxldCBjYWNoZUludGVydmFsSWQg PSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKLSAgICAgICAgICBpZihwZ0Jyb3dzZXIucHJlZmVy ZW5jZV92ZXJzaW9uKCkgPiAwKSB7Ci0gICAgICAgICAgICBzZWxmLnByZWZlcmVuY2VzID0gcGdC cm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3JfbW9kdWxlKCdzcWxlZGl0b3InKTsKLSAgICAgICAg ICAgIGNsZWFySW50ZXJ2YWwoY2FjaGVJbnRlcnZhbElkKTsKLSAgICAgICAgICB9Ci0gICAgICAg IH0sMCk7Ci0KLSAgICAgICAgcGdCcm93c2VyLm9uUHJlZmVyZW5jZXNDaGFuZ2UoJ3NxbGVkaXRv cicsIGZ1bmN0aW9uKCkgewotICAgICAgICAgIHNlbGYucHJlZmVyZW5jZXMgPSBwZ0Jyb3dzZXIu Z2V0X3ByZWZlcmVuY2VzX2Zvcl9tb2R1bGUoJ3NxbGVkaXRvcicpOwotICAgICAgICB9KTsKLQot ICAgICAgICAvLyBEZWZpbmUgbGlzdCBvZiBub2RlcyBvbiB3aGljaCB2aWV3IGRhdGEgb3B0aW9u IGFwcGVhcnMKLSAgICAgICAgdmFyIHN1cHBvcnRlZF9ub2RlcyA9IFsKLSAgICAgICAgICAgICd0 YWJsZScsICd2aWV3JywgJ212aWV3JywKLSAgICAgICAgICAgICdmb3JlaWduX3RhYmxlJywgJ2Nh dGFsb2dfb2JqZWN0JywgJ3BhcnRpdGlvbicsCi0gICAgICAgICAgXSwKLQotICAgICAgICAgIC8q IEVuYWJsZS9kaXNhYmxlIFZpZXcgZGF0YSBtZW51IGluIHRvb2xzIGJhc2VkCi0gICAgICAgICAq IG9uIG5vZGUgc2VsZWN0ZWQuIGlmIHNlbGVjdGVkIG5vZGUgaXMgcHJlc2VudAotICAgICAgICAg KiBpbiBzdXBwb3J0ZWRfbm9kZXMsIG1lbnUgd2lsbCBiZSBlbmFibGVkCi0gICAgICAgICAqIG90 aGVyd2lzZSBkaXNhYmxlZC4KLSAgICAgICAgICovCi0gICAgICAgICAgdmlld19tZW51X2VuYWJs ZWQgPSBmdW5jdGlvbihvYmopIHsKLSAgICAgICAgICAgIHZhciBpc0VuYWJsZWQgPSAoKCkgPT4g ewotICAgICAgICAgICAgICBpZiAoIV8uaXNVbmRlZmluZWQob2JqKSAmJiAhXy5pc051bGwob2Jq KSkKLSAgICAgICAgICAgICAgICByZXR1cm4gKF8uaW5kZXhPZihzdXBwb3J0ZWRfbm9kZXMsIG9i ai5fdHlwZSkgIT09IC0xID8gdHJ1ZSA6IGZhbHNlKTsKLSAgICAgICAgICAgICAgZWxzZQotICAg ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0pKCk7Ci0KLSAgICAgICAg ICAgIHRvb2xCYXIuZW5hYmxlKGdldHRleHQoJ1ZpZXcgRGF0YScpLCBpc0VuYWJsZWQpOwotICAg ICAgICAgICAgdG9vbEJhci5lbmFibGUoZ2V0dGV4dCgnRmlsdGVyZWQgUm93cycpLCBpc0VuYWJs ZWQpOwotICAgICAgICAgICAgcmV0dXJuIGlzRW5hYmxlZDsKLSAgICAgICAgICB9LAotCi0gICAg ICAgICAgLyogRW5hYmxlL2Rpc2FibGUgUXVlcnkgdG9vbCBtZW51IGluIHRvb2xzIGJhc2VkCi0g ICAgICAgICAqIG9uIG5vZGUgc2VsZWN0ZWQuIGlmIHNlbGVjdGVkIG5vZGUgaXMgcHJlc2VudAot ICAgICAgICAgKiBpbiB1bnN1cHBvcnRlZF9ub2RlcywgbWVudSB3aWxsIGJlIGRpc2FibGVkCi0g ICAgICAgICAqIG90aGVyd2lzZSBlbmFibGVkLgotICAgICAgICAgKi8KLSAgICAgICAgICBxdWVy eV90b29sX21lbnVfZW5hYmxlZCA9IGZ1bmN0aW9uKG9iaikgewotICAgICAgICAgICAgdmFyIGlz RW5hYmxlZCA9ICgoKSA9PiB7Ci0gICAgICAgICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChvYmop ICYmICFfLmlzTnVsbChvYmopKSB7Ci0gICAgICAgICAgICAgICAgaWYgKF8uaW5kZXhPZihwZ0Fk bWluLnVuc3VwcG9ydGVkX25vZGVzLCBvYmouX3R5cGUpID09IC0xKSB7Ci0gICAgICAgICAgICAg ICAgICBpZiAob2JqLl90eXBlID09ICdkYXRhYmFzZScgJiYgb2JqLmFsbG93Q29ubikgewotICAg ICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgIH0gZWxzZSBp ZiAob2JqLl90eXBlICE9ICdkYXRhYmFzZScpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu IHRydWU7Ci0gICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBy ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNl IHsKLSAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9KSgpOwotCi0gICAgICAgICAgICB0b29sQmFyLmVu YWJsZShnZXR0ZXh0KCdRdWVyeSBUb29sJyksIGlzRW5hYmxlZCk7Ci0gICAgICAgICAgICByZXR1 cm4gaXNFbmFibGVkOwotICAgICAgICAgIH07Ci0KLSAgICAgICAgLy8gRGVmaW5lIHRoZSBub2Rl cyBvbiB3aGljaCB0aGUgbWVudXMgdG8gYmUgYXBwZWFyCi0gICAgICAgIHZhciBtZW51cyA9IFt7 Ci0gICAgICAgICAgbmFtZTogJ3F1ZXJ5X3Rvb2wnLAotICAgICAgICAgIG1vZHVsZTogdGhpcywK LSAgICAgICAgICBhcHBsaWVzOiBbJ3Rvb2xzJ10sCi0gICAgICAgICAgY2FsbGJhY2s6ICdzaG93 X3F1ZXJ5X3Rvb2wnLAotICAgICAgICAgIGVuYWJsZTogcXVlcnlfdG9vbF9tZW51X2VuYWJsZWQs Ci0gICAgICAgICAgcHJpb3JpdHk6IDEsCi0gICAgICAgICAgbGFiZWw6IGdldHRleHQoJ1F1ZXJ5 IFRvb2wnKSwKLSAgICAgICAgICBpY29uOiAncGctZm9udC1pY29uIGljb24tcXVlcnlfdG9vbCcs Ci0gICAgICAgICAgZGF0YTp7Ci0gICAgICAgICAgICBhcHBsaWVzOiAndG9vbHMnLAotICAgICAg ICAgICAgZGF0YV9kaXNhYmxlZDogZ2V0dGV4dCgnUGxlYXNlIHNlbGVjdCBhIGRhdGFiYXNlIGZy b20gdGhlIGJyb3dzZXIgdHJlZSB0byBhY2Nlc3MgUXVlcnkgVG9vbC4nKSwKLSAgICAgICAgICB9 LAotICAgICAgICB9XTsKLQotICAgICAgICAvLyBDcmVhdGUgY29udGV4dCBtZW51Ci0gICAgICAg IGZvciAobGV0IG5vZGVfdmFsIG9mIHN1cHBvcnRlZF9ub2RlcykgewotICAgICAgICAgIG1lbnVz LnB1c2goewotICAgICAgICAgICAgbmFtZTogJ3ZpZXdfYWxsX3Jvd3NfY29udGV4dF8nICsgbm9k ZV92YWwsCi0gICAgICAgICAgICBub2RlOiBub2RlX3ZhbCwKLSAgICAgICAgICAgIG1vZHVsZTog dGhpcywKLSAgICAgICAgICAgIGRhdGE6IHsKLSAgICAgICAgICAgICAgbW51aWQ6IDMsCi0gICAg ICAgICAgICB9LAotICAgICAgICAgICAgYXBwbGllczogWydjb250ZXh0JywgJ29iamVjdCddLAot ICAgICAgICAgICAgY2FsbGJhY2s6ICdzaG93X2RhdGFfZ3JpZCcsCi0gICAgICAgICAgICBlbmFi bGU6IHZpZXdfbWVudV9lbmFibGVkLAotICAgICAgICAgICAgY2F0ZWdvcnk6ICd2aWV3X2RhdGEn LAotICAgICAgICAgICAgcHJpb3JpdHk6IDEwMSwKLSAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0 KCdBbGwgUm93cycpLAotICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgIG5hbWU6ICd2aWV3X2Zp cnN0XzEwMF9yb3dzX2NvbnRleHRfJyArIG5vZGVfdmFsLAotICAgICAgICAgICAgbm9kZTogbm9k ZV92YWwsCi0gICAgICAgICAgICBtb2R1bGU6IHRoaXMsCi0gICAgICAgICAgICBkYXRhOiB7Ci0g ICAgICAgICAgICAgIG1udWlkOiAxLAotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGFwcGxp ZXM6IFsnY29udGV4dCcsICdvYmplY3QnXSwKLSAgICAgICAgICAgIGNhbGxiYWNrOiAnc2hvd19k YXRhX2dyaWQnLAotICAgICAgICAgICAgZW5hYmxlOiB2aWV3X21lbnVfZW5hYmxlZCwKLSAgICAg ICAgICAgIGNhdGVnb3J5OiAndmlld19kYXRhJywKLSAgICAgICAgICAgIHByaW9yaXR5OiAxMDIs Ci0gICAgICAgICAgICBsYWJlbDogZ2V0dGV4dCgnRmlyc3QgMTAwIFJvd3MnKSwKLSAgICAgICAg ICB9LCB7Ci0gICAgICAgICAgICBuYW1lOiAndmlld19sYXN0XzEwMF9yb3dzX2NvbnRleHRfJyAr IG5vZGVfdmFsLAotICAgICAgICAgICAgbm9kZTogbm9kZV92YWwsCi0gICAgICAgICAgICBtb2R1 bGU6IHRoaXMsCi0gICAgICAgICAgICBkYXRhOiB7Ci0gICAgICAgICAgICAgIG1udWlkOiAyLAot ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIGFwcGxpZXM6IFsnY29udGV4dCcsICdvYmplY3Qn XSwKLSAgICAgICAgICAgIGNhbGxiYWNrOiAnc2hvd19kYXRhX2dyaWQnLAotICAgICAgICAgICAg ZW5hYmxlOiB2aWV3X21lbnVfZW5hYmxlZCwKLSAgICAgICAgICAgIGNhdGVnb3J5OiAndmlld19k YXRhJywKLSAgICAgICAgICAgIHByaW9yaXR5OiAxMDMsCi0gICAgICAgICAgICBsYWJlbDogZ2V0 dGV4dCgnTGFzdCAxMDAgUm93cycpLAotICAgICAgICAgIH0sIHsKLSAgICAgICAgICAgIG5hbWU6 ICd2aWV3X2ZpbHRlcmVkX3Jvd3NfY29udGV4dF8nICsgbm9kZV92YWwsCi0gICAgICAgICAgICBu b2RlOiBub2RlX3ZhbCwKLSAgICAgICAgICAgIG1vZHVsZTogdGhpcywKLSAgICAgICAgICAgIGRh dGE6IHsKLSAgICAgICAgICAgICAgbW51aWQ6IDQsCi0gICAgICAgICAgICB9LAotICAgICAgICAg ICAgYXBwbGllczogWydjb250ZXh0JywgJ29iamVjdCddLAotICAgICAgICAgICAgY2FsbGJhY2s6 ICdzaG93X2ZpbHRlcmVkX3JvdycsCi0gICAgICAgICAgICBlbmFibGU6IHZpZXdfbWVudV9lbmFi bGVkLAotICAgICAgICAgICAgY2F0ZWdvcnk6ICd2aWV3X2RhdGEnLAotICAgICAgICAgICAgcHJp b3JpdHk6IDEwNCwKLSAgICAgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdGaWx0ZXJlZCBSb3dzLi4u JyksCi0gICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICBwZ0FkbWluLkJyb3dzZXIu YWRkX21lbnVfY2F0ZWdvcnkoJ3ZpZXdfZGF0YScsIGdldHRleHQoJ1ZpZXcvRWRpdCBEYXRhJyks IDEwMCwgJycpOwotICAgICAgICBwZ0FkbWluLkJyb3dzZXIuYWRkX21lbnVzKG1lbnVzKTsKLQot ICAgICAgICAvLyBDcmVhdGluZyBhIG5ldyBwZ0FkbWluLkJyb3dzZXIgZnJhbWUgdG8gc2hvdyB0 aGUgZGF0YS4KLSAgICAgICAgdmFyIGRhdGFHcmlkRnJhbWVUeXBlID0gbmV3IHBnQWRtaW4uQnJv d3Nlci5GcmFtZSh7Ci0gICAgICAgICAgbmFtZTogJ2ZybV9kYXRhZ3JpZCcsCi0gICAgICAgICAg c2hvd1RpdGxlOiB0cnVlLAotICAgICAgICAgIGlzQ2xvc2VhYmxlOiB0cnVlLAotICAgICAgICAg IGlzUmVuYW1hYmxlOiB0cnVlLAotICAgICAgICAgIGlzUHJpdmF0ZTogdHJ1ZSwKLSAgICAgICAg ICB1cmw6ICdhYm91dDpibGFuaycsCi0gICAgICAgIH0pOwotCi0gICAgICAgIC8vIExvYWQgdGhl IG5ld2x5IGNyZWF0ZWQgZnJhbWUKLSAgICAgICAgZGF0YUdyaWRGcmFtZVR5cGUubG9hZChwZ0Jy b3dzZXIuZG9ja2VyKTsKLSAgICAgICAgdGhpcy5vbigncGdhZG1pbi1kYXRhZ3JpZDp0cmFuc2Fj dGlvbjpjcmVhdGVkJywgZnVuY3Rpb24odHJhbnNfb2JqKSB7Ci0gICAgICAgICAgdGhpcy5sYXVu Y2hfZ3JpZCh0cmFuc19vYmopOwotICAgICAgICB9KTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFRo aXMgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBzaG93IGRhdGEgd2hlbiB1c2VyIGNsaWNrIG9u IG1lbnUgaXRlbS4KLSAgICAgIHNob3dfZGF0YV9ncmlkOiBmdW5jdGlvbihkYXRhLCBpKSB7Ci0g ICAgICAgIGNvbnN0IHRyYW5zSWQgPSBjb21tb25VdGlscy5nZXRSYW5kb21JbnQoMSwgOTk5OTk5 OSk7Ci0gICAgICAgIHNob3dEYXRhLnNob3dEYXRhR3JpZCh0aGlzLCBwZ0Jyb3dzZXIsIGFsZXJ0 aWZ5LCBkYXRhLCBpLCB0cmFuc0lkKTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFRoaXMgaXMgYSBj YWxsYmFjayBmdW5jdGlvbiB0byBzaG93IGZpbHRlcmVkIGRhdGEgd2hlbiB1c2VyIGNsaWNrIG9u IG1lbnUgaXRlbS4KLSAgICAgIHNob3dfZmlsdGVyZWRfcm93OiBmdW5jdGlvbihkYXRhLCBpKSB7 Ci0gICAgICAgIGNvbnN0IHRyYW5zSWQgPSBjb21tb25VdGlscy5nZXRSYW5kb21JbnQoMSwgOTk5 OTk5OSk7Ci0gICAgICAgIHNob3dEYXRhLnNob3dEYXRhR3JpZCh0aGlzLCBwZ0Jyb3dzZXIsIGFs ZXJ0aWZ5LCBkYXRhLCBpLCB0cmFuc0lkLCB0cnVlLCB0aGlzLnByZWZlcmVuY2VzKTsKLSAgICAg IH0sCi0KLSAgICAgIC8vIFRoaXMgaXMgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBzaG93IHF1ZXJ5 IHRvb2wgd2hlbiB1c2VyIGNsaWNrIG9uIG1lbnUgaXRlbS4KLSAgICAgIHNob3dfcXVlcnlfdG9v bDogZnVuY3Rpb24odXJsLCBhY2lUcmVlSWRlbnRpZmllcikgewotICAgICAgICBjb25zdCB0cmFu c0lkID0gY29tbW9uVXRpbHMuZ2V0UmFuZG9tSW50KDEsIDk5OTk5OTkpOwotICAgICAgICB2YXIg dCA9IHBnQnJvd3Nlci50cmVlLAotICAgICAgICAgIGkgPSBhY2lUcmVlSWRlbnRpZmllciB8fCB0 LnNlbGVjdGVkKCksCi0gICAgICAgICAgZCA9IGkgPyB0Lml0ZW1EYXRhKGkpIDogdW5kZWZpbmVk OwotCi0gICAgICAgIC8vT3BlbiBxdWVyeSB0b29sIHdpdGggY3JlYXRlIHNjcmlwdCBpZiBjb3B5 X3NxbF90b19xdWVyeV90b29sIGlzIHRydWUgZWxzZSBvcGVuIGJsYW5rIHF1ZXJ5IHRvb2wKLSAg ICAgICAgdmFyIHByZWZlcmVuY2UgPSBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2UoJ3NxbGVkaXRv cicsICdjb3B5X3NxbF90b19xdWVyeV90b29sJyk7Ci0gICAgICAgIGlmKHByZWZlcmVuY2UudmFs dWUgJiYgIWQuX3R5cGUuaW5jbHVkZXMoJ2NvbGwtJykgJiYgKHVybCA9PT0gJycgfHwgdXJsWydh cHBsaWVzJ10gPT09ICd0b29scycpKXsKLSAgICAgICAgICB2YXIgc3R5cGUgPSBkLl90eXBlLnRv TG93ZXJDYXNlKCk7Ci0gICAgICAgICAgdmFyIGRhdGEgPSB7Ci0gICAgICAgICAgICAnc2NyaXB0 Jzogc3R5cGUsCi0gICAgICAgICAgICBkYXRhX2Rpc2FibGVkOiBnZXR0ZXh0KCdUaGUgc2VsZWN0 ZWQgdHJlZSBub2RlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBvcHRpb24uJyksCi0gICAgICAgICAg fTsKLSAgICAgICAgICBwZ0Jyb3dzZXIuTm9kZS5jYWxsYmFja3Muc2hvd19zY3JpcHQoZGF0YSk7 Ci0gICAgICAgIH1lbHNlewotICAgICAgICAgIGlmKGQuX3R5cGUuaW5jbHVkZXMoJ2NvbGwtJykp ewotICAgICAgICAgICAgdXJsID0gJyc7Ci0gICAgICAgICAgfQotICAgICAgICAgIHNob3dRdWVy eVRvb2wuc2hvd1F1ZXJ5VG9vbCh0aGlzLCBwZ0Jyb3dzZXIsIHVybCwgYWNpVHJlZUlkZW50aWZp ZXIsIHRyYW5zSWQpOwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICBsYXVuY2hfZ3JpZDog ZnVuY3Rpb24odHJhbnNfaWQsIHBhbmVsX3VybCwgaXNfcXVlcnlfdG9vbCwgcGFuZWxfdGl0bGUs IHNVUkw9bnVsbCwgc3FsX2ZpbHRlcj1udWxsKSB7Ci0KLSAgICAgICAgbGV0IHF1ZXJ5VG9vbEZv cm0gPSBgCi0gICAgICAgICAgPGZvcm0gaWQ9InF1ZXJ5VG9vbEZvcm0iIGFjdGlvbj0iJHtwYW5l bF91cmx9IiBtZXRob2Q9InBvc3QiPgotICAgICAgICAgICAgPGlucHV0IGlkPSJ0aXRsZSIgbmFt ZT0idGl0bGUiIGhpZGRlbiAvPmA7Ci0KLSAgICAgICAgaWYoc1VSTCl7Ci0gICAgICAgICAgcXVl cnlUb29sRm9ybSArPWA8aW5wdXQgbmFtZT0icXVlcnlfdXJsIiB2YWx1ZT0iJHtzVVJMfSIgaGlk ZGVuIC8+YDsKLSAgICAgICAgfQotICAgICAgICBpZihzcWxfZmlsdGVyKSB7Ci0gICAgICAgICAg cXVlcnlUb29sRm9ybSArPWA8dGV4dGFyZWEgbmFtZT0ic3FsX2ZpbHRlciIgaGlkZGVuPiR7c3Fs X2ZpbHRlcn08L3RleHRhcmVhPmA7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiBFc2NhcGUgYmFj a3NsYXNoZXMgYXMgaXQgaXMgc3RyaXBwZWQgYnkgYmFjayBlbmQgKi8KLSAgICAgICAgcXVlcnlU b29sRm9ybSArPWAKLSAgICAgICAgICA8L2Zvcm0+Ci0gICAgICAgICAgICA8c2NyaXB0PgotICAg ICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGl0bGUiKS52YWx1ZSA9ICIke18u ZXNjYXBlKHBhbmVsX3RpdGxlLnJlcGxhY2UoJ1xcJywgJ1xcXFwnKSl9IjsKLSAgICAgICAgICAg ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInF1ZXJ5VG9vbEZvcm0iKS5zdWJtaXQoKTsKLSAg ICAgICAgICAgIDwvc2NyaXB0PgotICAgICAgICAgIGA7Ci0KLSAgICAgICAgdmFyIGJyb3dzZXJf cHJlZmVyZW5jZXMgPSBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2VzX2Zvcl9tb2R1bGUoJ2Jyb3dz ZXInKTsKLSAgICAgICAgdmFyIG9wZW5fbmV3X3RhYiA9IGJyb3dzZXJfcHJlZmVyZW5jZXMubmV3 X2Jyb3dzZXJfdGFiX29wZW47Ci0gICAgICAgIGlmIChvcGVuX25ld190YWIgJiYgb3Blbl9uZXdf dGFiLmluY2x1ZGVzKCdxdCcpKSB7Ci0gICAgICAgICAgdmFyIG5ld1dpbiA9IHdpbmRvdy5vcGVu KCcnLCAnX2JsYW5rJyk7Ci0gICAgICAgICAgaWYobmV3V2luKSB7Ci0gICAgICAgICAgICBuZXdX aW4uZG9jdW1lbnQud3JpdGUocXVlcnlUb29sRm9ybSk7Ci0gICAgICAgICAgICBuZXdXaW4uZG9j dW1lbnQudGl0bGUgPSBwYW5lbF90aXRsZTsKLSAgICAgICAgICAgIC8vIFNlbmQgdGhlIHNpZ25h bCB0byBydW50aW1lLCBzbyB0aGF0IHByb3BlciB6b29tIGxldmVsIHdpbGwgYmUgc2V0LgotICAg ICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgcGdCcm93c2Vy LnNlbmRfc2lnbmFsX3RvX3J1bnRpbWUoJ1J1bnRpbWUgbmV3IHdpbmRvdyBvcGVuZWQnKTsKLSAg ICAgICAgICAgIH0sIDUwMCk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVy biBmYWxzZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgLyogT24g c3VjY2Vzc2Z1bGx5IGluaXRpYWxpemF0aW9uIGZpbmQgdGhlIGRhc2hib2FyZCBwYW5lbCwKLSAg ICAgICAgICAgKiBjcmVhdGUgbmV3IHBhbmVsIGFuZCBhZGQgaXQgdG8gdGhlIGRhc2hib2FyZCBw YW5lbC4KLSAgICAgICAgICAgKi8KLSAgICAgICAgICB2YXIgcHJvcGVydGllc1BhbmVsID0gcGdC cm93c2VyLmRvY2tlci5maW5kUGFuZWxzKCdwcm9wZXJ0aWVzJyk7Ci0gICAgICAgICAgdmFyIHF1 ZXJ5VG9vbFBhbmVsID0gcGdCcm93c2VyLmRvY2tlci5hZGRQYW5lbCgnZnJtX2RhdGFncmlkJywg d2NEb2NrZXIuRE9DSy5TVEFDS0VELCBwcm9wZXJ0aWVzUGFuZWxbMF0pOwotICAgICAgICAgIHF1 ZXJ5VG9vbFBhbmVsLnRyYW5zX2lkID0gdHJhbnNfaWQ7Ci0gICAgICAgICAgc2hvd1F1ZXJ5VG9v bC5fc2V0X2R5bmFtaWNfdGFiKHBnQnJvd3NlciwgYnJvd3Nlcl9wcmVmZXJlbmNlc1snZHluYW1p Y190YWJzJ10pOwotCi0gICAgICAgICAgLy8gU2V0IHBhbmVsIHRpdGxlIGFuZCBpY29uCi0gICAg ICAgICAgcGFuZWxUaXRsZUZ1bmMuc2V0UXVlcnlUb29sRG9ja2VyVGl0bGUocXVlcnlUb29sUGFu ZWwsIGlzX3F1ZXJ5X3Rvb2wsIF8udW5lc2NhcGUocGFuZWxfdGl0bGUpKTsKLSAgICAgICAgICBx dWVyeVRvb2xQYW5lbC5mb2N1cygpOwotCi0gICAgICAgICAgLy8gTGlzdGVuIG9uIHRoZSBwYW5l bCBjbG9zZWQgZXZlbnQuCi0gICAgICAgICAgaWYgKHF1ZXJ5VG9vbFBhbmVsLmlzVmlzaWJsZSgp KSB7Ci0gICAgICAgICAgICBxdWVyeVRvb2xQYW5lbC5vbih3Y0RvY2tlci5FVkVOVC5DTE9TRUQs IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAkLmFqYXgoewotICAgICAgICAgICAgICAgIHVy bDogdXJsX2ZvcignZGF0YWdyaWQuY2xvc2UnLCB7J3RyYW5zX2lkJzogdHJhbnNfaWR9KSwKLSAg ICAgICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLAotICAgICAgICAgICAgICB9KTsKLSAgICAg ICAgICAgIH0pOwotICAgICAgICAgIH0KLQotICAgICAgICAgIHF1ZXJ5VG9vbFBhbmVsLm9uKHdj RG9ja2VyLkVWRU5ULlZJU0lCSUxJVFlfQ0hBTkdFRCwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg ICBxdWVyeVRvb2xQYW5lbC50cmlnZ2VyKHdjRG9ja2VyLkVWRU5ULlJFU0laRUQpOwotICAgICAg ICAgIH0pOwotCi0gICAgICAgICAgY29tbW9uVXRpbHMucmVnaXN0ZXJEZXRhY2hFdmVudChxdWVy eVRvb2xQYW5lbCk7Ci0KLSAgICAgICAgICAvLyBMaXN0ZW4gb24gdGhlIHBhbmVsUmVuYW1lIGV2 ZW50LgotICAgICAgICAgIHF1ZXJ5VG9vbFBhbmVsLm9uKHdjRG9ja2VyLkVWRU5ULlJFTkFNRSwg ZnVuY3Rpb24ocGFuZWxfZGF0YSkgewotICAgICAgICAgICAgdmFyIHRlbXBfdGl0bGUgPSBwYW5l bF9kYXRhLiR0aXRsZVRleHRbMF0udGV4dENvbnRlbnQ7Ci0gICAgICAgICAgICB2YXIgaXNfZGly dHlfZWRpdG9yID0gcXVlcnlUb29sUGFuZWwuaXNfZGlydHlfZWRpdG9yID8gcXVlcnlUb29sUGFu ZWwuaXNfZGlydHlfZWRpdG9yIDogZmFsc2U7Ci0gICAgICAgICAgICB2YXIgdGl0bGUgPSBxdWVy eVRvb2xQYW5lbC5pc19kaXJ0eV9lZGl0b3IgPyBwYW5lbF9kYXRhLiR0aXRsZVRleHRbMF0udGV4 dENvbnRlbnQucmVwbGFjZSgvLiQvLCAnJykgOiB0ZW1wX3RpdGxlOwotICAgICAgICAgICAgYWxl cnRpZnkucHJvbXB0KCcnLCB0aXRsZSwKLSAgICAgICAgICAgICAgLy8gV2Ugd2lsbCBleGVjdXRl IHRoaXMgZnVuY3Rpb24gd2hlbiB1c2VyIGNsaWNrcyBvbiB0aGUgT0sgYnV0dG9uCi0gICAgICAg ICAgICAgIGZ1bmN0aW9uKGV2dCwgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICAvLyBSZW1vdmUg dGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlIHNwYWNlcy4KLSAgICAgICAgICAgICAgICB2 YWx1ZSA9IHZhbHVlLnRyaW0oKTsKLSAgICAgICAgICAgICAgICBpZih2YWx1ZSkgewotICAgICAg ICAgICAgICAgICAgdmFyIGlzX2ZpbGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgIGlmKHBh bmVsX2RhdGEuJHRpdGxlVGV4dFswXS5pbm5lckhUTUwuaW5jbHVkZXMoJ0ZpbGUgLSAnKSkgewot ICAgICAgICAgICAgICAgICAgICBpc19maWxlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgIH0K LSAgICAgICAgICAgICAgICAgIHZhciBzZWxlY3RlZF9pdGVtID0gcGdCcm93c2VyLnRyZWUuc2Vs ZWN0ZWQoKTsKLSAgICAgICAgICAgICAgICAgIHZhciBwYW5lbF90aXRsZXMgPSAnJzsKLQotICAg ICAgICAgICAgICAgICAgaWYoaXNfcXVlcnlfdG9vbCkgewotICAgICAgICAgICAgICAgICAgICBw YW5lbF90aXRsZXMgPSBwYW5lbFRpdGxlRnVuYy5nZXRQYW5lbFRpdGxlKHBnQnJvd3Nlciwgc2Vs ZWN0ZWRfaXRlbSwgdmFsdWUpOwotICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg ICAgICAgICAgICAgcGFuZWxfdGl0bGVzID0gc2hvd0RhdGEuZ2VuZXJhdGVEYXRhZ3JpZFRpdGxl KHBnQnJvd3Nlciwgc2VsZWN0ZWRfaXRlbSwgdmFsdWUpOwotICAgICAgICAgICAgICAgICAgfQot ICAgICAgICAgICAgICAgICAgLy8gU2V0IHRpdGxlIHRvIHRoZSBzZWxlY3RlZCB0YWIuCi0gICAg ICAgICAgICAgICAgICBpZiAoaXNfZGlydHlfZWRpdG9yKSB7Ci0gICAgICAgICAgICAgICAgICAg IHBhbmVsX3RpdGxlcyA9IHBhbmVsX3RpdGxlcyArICcgKic7Ci0gICAgICAgICAgICAgICAgICB9 Ci0gICAgICAgICAgICAgICAgICBwYW5lbFRpdGxlRnVuYy5zZXRRdWVyeVRvb2xEb2NrZXJUaXRs ZShxdWVyeVRvb2xQYW5lbCwgaXNfcXVlcnlfdG9vbCwgXy51bmVzY2FwZShwYW5lbF90aXRsZXMp LCBpc19maWxlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAg ICAgICAgIC8vIFdlIHdpbGwgZXhlY3V0ZSB0aGlzIGZ1bmN0aW9uIHdoZW4gdXNlciBjbGlja3Mg b24gdGhlIENhbmNlbAotICAgICAgICAgICAgICAvLyBidXR0b24uICBEbyBub3RoaW5nIGp1c3Qg Y2xvc2UgaXQuCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKGV2dCkgeyBldnQuY2FuY2VsID0gZmFs c2U7IH0KLSAgICAgICAgICAgICkuc2V0KHsndGl0bGUnOiBnZXR0ZXh0KCdSZW5hbWUgUGFuZWwn KX0pOwotICAgICAgICAgIH0pOwotCi0gICAgICAgICAgdmFyIG9wZW5RdWVyeVRvb2xVUkwgPSBm dW5jdGlvbihqKSB7Ci0gICAgICAgICAgICAvLyBhZGQgc3Bpbm5lciBlbGVtZW50Ci0gICAgICAg ICAgICBsZXQgJHNwaW5uZXJfZWwgPQotICAgICAgICAgICAgICAkKGA8ZGl2IGNsYXNzPSJwZy1z cC1jb250YWluZXIiPgotICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwZy1zcC1jb250 ZW50Ij4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEyIHBnLXNwLWljb24iPjwvZGl2 PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIDwv ZGl2PgotICAgICAgICAgICAgICAgIDwvZGl2PmApLmFwcGVuZFRvKCQoaikuZGF0YSgnZW1iZWRk ZWRGcmFtZScpLiRjb250YWluZXIpOwotCi0gICAgICAgICAgICBsZXQgaW5pdF9wb2xsZXJfaWQg PSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgdmFyIGZyYW1lSW5pdGlh bGl6ZWQgPSAkKGopLmRhdGEoJ2ZyYW1lSW5pdGlhbGl6ZWQnKTsKLSAgICAgICAgICAgICAgaWYg KGZyYW1lSW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGluaXRf cG9sbGVyX2lkKTsKLSAgICAgICAgICAgICAgICB2YXIgZnJhbWUgPSAkKGopLmRhdGEoJ2VtYmVk ZGVkRnJhbWUnKTsKLSAgICAgICAgICAgICAgICBpZiAoZnJhbWUpIHsKLSAgICAgICAgICAgICAg ICAgIGZyYW1lLm9uTG9hZGVkKCgpPT57Ci0gICAgICAgICAgICAgICAgICAgICRzcGlubmVyX2Vs LnJlbW92ZSgpOwotICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgICBmcmFt ZS5vcGVuSFRNTChxdWVyeVRvb2xGb3JtKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgIH0KLSAgICAgICAgICAgIH0sIDEwMCk7Ci0gICAgICAgICAgfTsKLQotICAgICAgICAgIG9w ZW5RdWVyeVRvb2xVUkwocXVlcnlUb29sUGFuZWwpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVy biB0cnVlOwotICAgICAgfSwKLSAgICB9LAotICAgIEJhY2tib25lLkV2ZW50cyk7Ci0KLSAgcmV0 dXJuIHBnQWRtaW4uRGF0YUdyaWQ7Ci19KTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xz L2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sIGIvd2ViL3BnYWRtaW4vdG9v bHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2luZGV4Lmh0bWwKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDFjYjNiM2NkMi4uMDAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL3Rv b2xzL2RhdGFncmlkL3RlbXBsYXRlcy9kYXRhZ3JpZC9pbmRleC5odG1sCisrKyAvZGV2L251bGwK QEAgLTEsNTA3ICswLDAgQEAKLXslIGV4dGVuZHMgImJhc2UuaHRtbCIgJX0KLXslIGJsb2NrIHRp dGxlICV9e3t0aXRsZX19eyUgZW5kYmxvY2sgJX0KLXslIGJsb2NrIGJvZHkgJX0KLTxzdHlsZT4K LSAgICBib2R5IHtwYWRkaW5nOiAwcHg7fQotICAgIHslIGlmIGlzX2Rlc2t0b3BfbW9kZSBhbmQg aXNfbGludXggJX0KLSAgICAuYWxlcnRpZnkgLmFqcy1kaW1tZXIsLmFsZXJ0aWZ5IC5hanMtbW9k YWx7LXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7fQotICAgIC5hbGVydGlmeS1ub3RpZmllcnstd2Vi a2l0LXRyYW5zZm9ybTogbm9uZTt9Ci0gICAgLmFsZXJ0aWZ5LW5vdGlmaWVyIC5hanMtbWVzc2Fn ZXstd2Via2l0LXRyYW5zZm9ybTogbm9uZTt9Ci0gICAgLmFsZXJ0aWZ5IC5hanMtZGlhbG9nLmFq cy1zaGFrZXstd2Via2l0LWFuaW1hdGlvbi1uYW1lOiBub25lO30KLSAgICAuc3FsLWVkaXRvci1i dXN5LWljb24uZmEtcHVsc2V7LXdlYmtpdC1hbmltYXRpb246IG5vbmU7fQotICAgIHslIGVuZGlm ICV9Ci08L3N0eWxlPgoteyUgYmxvY2sgY3NzX2xpbmsgJX0KLTxsaW5rIHR5cGU9InRleHQvY3Nz IiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Int7IHVybF9mb3IoJ2Jyb3dzZXIuYnJvd3Nlcl9jc3Mn KX19Ii8+Ci17JSBlbmRibG9jayAlfQotPGRpdiBpZD0ibWFpbi1lZGl0b3JfcGFuZWwiPgotICAg IDxkaXYgY2xhc3M9InNxbC1lZGl0b3IiPgotICAgICAgICA8ZGl2IGlkPSJidG4tdG9vbGJhciIg Y2xhc3M9ImVkaXRvci10b29sYmFyIiByb2xlPSJ0b29sYmFyIiBhcmlhLWxhYmVsPSIiPgotICAg ICAgICAgICAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIG1yLTEiIHJvbGU9Imdyb3VwIiBhcmlhLWxh YmVsPSIiPgotICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1zaG93LXF1ZXJ5LXRvb2wi IHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc20gYnRuLXByaW1hcnktaWNvbiBidG4tc2hv dy1xdWVyeS10b29sIgotICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9IiIKLSAgICAgICAg ICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9InNob3cgcXVlcnkgdG9vbCIKLSAgICAgICAgICAg ICAgICAgICAgICAgIHRhYmluZGV4PSIwIj4KLSAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9 InBnLWZvbnQtaWNvbiBpY29uLXF1ZXJ5X3Rvb2wiIGFyaWEtaGlkZGVuPSJ0cnVlIiByb2xlPSJp bWciPjwvaT4KLSAgICAgICAgICAgICAgICA8L2J1dHRvbj4KLSAgICAgICAgICAgIDwvZGl2Pgot ICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIG1yLTEiIHJvbGU9Imdyb3VwIiBhcmlh LWxhYmVsPSIiPgotICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1sb2FkLWZpbGUiIHR5 cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc20gYnRuLXByaW1hcnktaWNvbiBidG4tbG9hZC1m aWxlIgotICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9IiIKLSAgICAgICAgICAgICAgICAg ICAgICAgIGFjY2Vzc2tleT0iIgotICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAi PgotICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtZm9sZGVyLW9wZW4gc3FsLWlj b24tbGciIGFyaWEtaGlkZGVuPSJ0cnVlIiByb2xlPSJpbWciPjwvaT4KLSAgICAgICAgICAgICAg ICA8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tc2F2ZS1maWxlIiB0 eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5LWljb24iCi0gICAgICAg ICAgICAgICAgICAgICAgICB0aXRsZT0iIgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNz a2V5PSIiCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD4KLSAgICAgICAgICAgICAg ICAgICAgPGkgY2xhc3M9ImZhIGZhLXNhdmUgc3FsLWljb24tbGciIGFyaWEtaGlkZGVuPSJ0cnVl IiB0YWJpbmRleD0iMCIgcm9sZT0iaW1nIj48L2k+Ci0gICAgICAgICAgICAgICAgPC9idXR0b24+ Ci0gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWZpbGUtbWVudS1kcm9wZG93biIgdHlw ZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tcHJpbWFyeS1pY29uIGRyb3Bkb3duLXRv Z2dsZSBkcm9wZG93bi10b2dnbGUtc3BsaXQiCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRh LXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZh bHNlIiBkaXNhYmxlZAotICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiIGFyaWEt bGFiZWw9ImZpbGUgbWVudSI+Ci0gICAgICAgICAgICAgICAgPC9idXR0b24+Ci0gICAgICAgICAg ICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KLSAgICAgICAgICAgICAgICAgICAgPGxp PgotICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGlkPSJi dG4tZmlsZS1tZW51LXNhdmUiIGhyZWY9IiMiIHRhYmluZGV4PSIwIj4KLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICA8c3Bhbj57eyBfKCdTYXZlJykgfX08L3NwYW4+Ci0gICAgICAgICAgICAg ICAgICAgICAgICA8L2E+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICAg ICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJkcm9wZG93bi1p dGVtIiBpZD0iYnRuLWZpbGUtbWVudS1zYXZlLWFzIiBocmVmPSIjIiB0YWJpbmRleD0iMCI+Ci0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgXygnU2F2ZSBBcycpIH19PC9zcGFu PgotICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgotICAgICAgICAgICAgICAgICAgICA8L2xp PgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAg IDxkaXYgY2xhc3M9ImJ0bi1ncm91cCBtci0xIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iIj4K LSAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tc2F2ZS1kYXRhIiB0eXBlPSJidXR0b24i IGNsYXNzPSJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5LWljb24iCi0gICAgICAgICAgICAgICAgICAg ICAgICB0aXRsZT0iIgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNza2V5PSIiCi0gICAg ICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD0iMCIgZGlzYWJsZWQ+Ci0gICAgICAgICAgICAg ICAgICAgIDxpIGNsYXNzPSJwZy1mb250LWljb24gaWNvbi1zYXZlX2RhdGFfY2hhbmdlcyBzcWwt aWNvbi1sZyIgYXJpYS1oaWRkZW49InRydWUiIHJvbGU9ImltZyI+PC9pPgotICAgICAgICAgICAg ICAgIDwvYnV0dG9uPgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNz PSJidG4tZ3JvdXAgbXItMSIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiI+Ci0gICAgICAgICAg ICAgICAgPGJ1dHRvbiBpZD0iYnRuLWZpbmQiIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4t c20gYnRuLXByaW1hcnktaWNvbiIgYXJpYS1sYWJlbD0ie3sgXygnRmluZCcpIH19IiB0aXRsZT0i e3sgXygnRmluZCAoQ3RybC9DbWQrRiknKSB9fSI+Ci0gICAgICAgICAgICAgICAgICAgIDxpIGNs YXNzPSJmYSBmYS1zZWFyY2ggc3FsLWljb24tbGciIGFyaWEtaGlkZGVuPSJ0cnVlIiB0YWJpbmRl eD0iMCIgcm9sZT0iaW1nIj48L2k+Ci0gICAgICAgICAgICAgICAgPC9idXR0b24+Ci0gICAgICAg ICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWZpbmQtbWVudS1kcm9wZG93biIgdHlwZT0iYnV0dG9u IiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tcHJpbWFyeS1pY29uIGRyb3Bkb3duLXRvZ2dsZSBkcm9w ZG93bi10b2dnbGUtc3BsaXQiCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT0i ZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIgotICAg ICAgICAgICAgICAgICAgICAgICAgdGl0bGU9IiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGFj Y2Vzc2tleT0iIgotICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiPgotICAgICAg ICAgICAgICAgIDwvYnV0dG9uPgotICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24t bWVudSI+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAgICAg IDxhIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBpZD0iYnRuLWZpbmQtbWVudS1maW5kIiBocmVmPSIj IiB0YWJpbmRleD0iMCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7IF8o J0ZpbmQnKSB9fXslIGlmIGNsaWVudF9wbGF0Zm9ybSA9PSAnbWFjb3MnIC0lfQotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAge3sgXygnIChDbWQrRiknKSB9fQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHslIGVsc2UgJX0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHt7IF8oJyAoQ3RybCtGKScpIH19eyUtIGVuZGlmICV9PC9zcGFuPgotICAgICAgICAgICAg ICAgICAgICAgICAgPC9hPgotICAgICAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAg ICAgICAgICA8bGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZHJvcGRvd24t aXRlbSIgaWQ9ImJ0bi1maW5kLW1lbnUtZmluZC1uZXh0IiBocmVmPSIjIiB0YWJpbmRleD0iMCI+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7IF8oJ0ZpbmQgTmV4dCcpIH19 eyUgaWYgY2xpZW50X3BsYXRmb3JtID09ICdtYWNvcycgLSV9Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB7eyBfKCcgKENtZCtHKScpIH19Ci0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgeyUgZWxzZSAlfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXygn IChDdHJsK0cpJykgfX17JS0gZW5kaWYgJX08L3NwYW4+Ci0gICAgICAgICAgICAgICAgICAgICAg ICA8L2E+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxs aT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBpZD0i YnRuLWZpbmQtbWVudS1maW5kLXByZXZpb3VzIiBocmVmPSIjIiB0YWJpbmRleD0iMCI+Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7IF8oJ0ZpbmQgUHJldmlvdXMnKSB9fXsl IGlmIGNsaWVudF9wbGF0Zm9ybSA9PSAnbWFjb3MnIC0lfQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAge3sgXygnIChDbWQrU2hpZnQrRyknKSB9fQotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHslIGVsc2UgJX0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7 IF8oJyAoQ3RybCtTaGlmdCtHKScpIH19eyUtIGVuZGlmICV9PC9zcGFuPgotICAgICAgICAgICAg ICAgICAgICAgICAgPC9hPgotICAgICAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAg ICAgICAgICA8bGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZHJvcGRvd24t aXRlbSIgaWQ9ImJ0bi1maW5kLW1lbnUtZmluZC1wZXJzaXN0ZW50IiBocmVmPSIjIiB0YWJpbmRl eD0iMCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgXygnUGVyc2lzdGVu dCBGaW5kJykgfX08L3NwYW4+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2E+Ci0gICAgICAg ICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZHJvcGRv d24tZGl2aWRlciI+PC9saT4KLSAgICAgICAgICAgICAgICAgICAgPGxpPgotICAgICAgICAgICAg ICAgICAgICAgICAgPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGlkPSJidG4tZmluZC1tZW51LXJl cGxhY2UiIGhyZWY9IiMiIHRhYmluZGV4PSIwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8c3Bhbj4ge3sgXygnUmVwbGFjZScpIH19eyUgaWYgY2xpZW50X3BsYXRmb3JtID09ICdtYWNv cycgLSV9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBfKCcgKENtZCtPcHRp b24rRiknKSB9fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGVsc2UgJX0KLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IF8oJyAoQ3RybCtTaGlmdCtGKScpIH19eyUt IGVuZGlmICV9PC9zcGFuPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgotICAgICAgICAg ICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAgICAgICA8bGk+Ci0gICAgICAgICAgICAg ICAgICAgICAgICA8YSBjbGFzcz0iZHJvcGRvd24taXRlbSIgaWQ9ImJ0bi1maW5kLW1lbnUtcmVw bGFjZS1hbGwiIGhyZWY9IiMiIHRhYmluZGV4PSIwIj4KLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICA8c3Bhbj57eyBfKCdSZXBsYWNlIEFsbCcpIH19PC9zcGFuPgotICAgICAgICAgICAgICAg ICAgICAgICAgPC9hPgotICAgICAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAg ICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duLWRpdmlkZXIiPjwvbGk+Ci0gICAgICAgICAgICAgICAg ICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJkcm9wZG93bi1pdGVt IiBpZD0iYnRuLWZpbmQtbWVudS1qdW1wIiBocmVmPSIjIiB0YWJpbmRleD0iMCI+Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgXygnSnVtcCAoQWx0K0cpJykgfX08L3NwYW4+ Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2E+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGk+ Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgICAg PGRpdiBjbGFzcz0iYnRuLWdyb3VwIG1yLTEiIHJvbGU9Imdyb3VwIiBhcmlhLWxhYmVsPSIiPgot ICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1jb3B5LXJvdyIgdHlwZT0iYnV0dG9uIiBj bGFzcz0iYnRuIGJ0bi1zbSBidG4tcHJpbWFyeS1pY29uIgotICAgICAgICAgICAgICAgICAgICAg ICAgdGl0bGU9IiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2tleT0iIgotICAgICAg ICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiIGRpc2FibGVkPgotICAgICAgICAgICAgICAg ICAgICA8aSBjbGFzcz0iZmEgZmEtY29weSBzcWwtaWNvbi1sZyIgYXJpYS1oaWRkZW49InRydWUi IHJvbGU9ImltZyI+PC9pPgotICAgICAgICAgICAgICAgIDwvYnV0dG9uPgotICAgICAgICAgICAg ICAgIDxidXR0b24gaWQ9ImJ0bi1jb3B5LXJvdy1kcm9wZG93biIgdHlwZT0iYnV0dG9uIiBjbGFz cz0iYnRuIGJ0bi1zbSBidG4tcHJpbWFyeS1pY29uIGRyb3Bkb3duLXRvZ2dsZSBkcm9wZG93bi10 b2dnbGUtc3BsaXQiCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT0iZHJvcGRv d24iIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIgotICAgICAgICAg ICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiIGFyaWEtbGFiZWw9ImNvcHkgcm93Ij4KLSAgICAg ICAgICAgICAgICA8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3du LW1lbnUiPgotICAgICAgICAgICAgICAgICAgICA8bGk+Ci0gICAgICAgICAgICAgICAgICAgICAg ICA8YSBjbGFzcz0iZHJvcGRvd24taXRlbSIgaWQ9ImJ0bi1jb3B5LXdpdGgtaGVhZGVyIiBocmVm PSIjIiB0YWJpbmRleD0iMCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9 ImNvcHktd2l0aC1oZWFkZXIgZmEgZmEtY2hlY2sgdmlzaWJpbGl0eS1oaWRkZW4iIGFyaWEtaGlk ZGVuPSJ0cnVlIiByb2xlPSJpbWciPjwvaT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8 c3Bhbj4ge3sgXygnQ29weSB3aXRoIGhlYWRlcnMnKSB9fSA8L3NwYW4+Ci0gICAgICAgICAgICAg ICAgICAgICAgICA8L2E+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICAg ICAgPC91bD4KLSAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tcGFzdGUtcm93IiB0eXBl PSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5LWljb24iCi0gICAgICAgICAg ICAgICAgICAgICAgICB0aXRsZT0iIgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjZXNza2V5 PSIiCi0gICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD0iMCIgZGlzYWJsZWQ+Ci0gICAg ICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1wYXN0ZSBzcWwtaWNvbi1sZyIgYXJpYS1o aWRkZW49InRydWUiIHJvbGU9ImltZyI+PC9pPgotICAgICAgICAgICAgICAgIDwvYnV0dG9uPgot ICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAgbXIt MSIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiI+Ci0gICAgICAgICAgICAgICAgPGJ1dHRvbiBp ZD0iYnRuLWRlbGV0ZS1yb3ciIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc20gYnRuLXBy aW1hcnktaWNvbiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPSIiCi0gICAgICAgICAg ICAgICAgICAgICAgICBhY2Nlc3NrZXk9IiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhYmlu ZGV4PSIwIiBkaXNhYmxlZD4KLSAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXRy YXNoLWFsdCBzcWwtaWNvbi1sZyIgYXJpYS1oaWRkZW49InRydWUiIHJvbGU9ImltZyI+PC9pPgot ICAgICAgICAgICAgICAgIDwvYnV0dG9uPgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAg ICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAgbXItMSIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiI+ Ci0gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWVkaXQtZHJvcGRvd24iIHR5cGU9ImJ1 dHRvbiIgY2xhc3M9ImJ0biBidG4tc20gYnRuLXByaW1hcnktaWNvbiBkcm9wZG93bi10b2dnbGUi Ci0gICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFz cG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIgotICAgICAgICAgICAgICAgICAgICAg ICAgYXJpYS1sYWJlbD0ie3sgXygnRWRpdCcpIH19IiB0aXRsZT0ie3sgXygnRWRpdCcpIH19IiB0 YWJpbmRleD0iMCI+Ci0gICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1lZGl0IHNx bC1pY29uLWxnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1nIj48L2k+Ci0gICAgICAgICAg ICAgICAgPC9idXR0b24+Ci0gICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51 Ij4KLSAgICAgICAgICAgICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAgICAgICAgICAgPGEg Y2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGlkPSJidG4taW5kZW50LWNvZGUiIGhyZWY9IiMiIHRhYmlu ZGV4PSIwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ge3sgXygnSW5kZW50 IFNlbGVjdGlvbiAoVGFiKScpIH19IDwvc3Bhbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwv YT4KLSAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICAgICAgPGxpPgot ICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGlkPSJidG4t dW5pbmRlbnQtY29kZSIgaHJlZj0iIyIgdGFiaW5kZXg9IjAiPgotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIDxzcGFuPiB7eyBfKCdVbmluZGVudCBTZWxlY3Rpb24gKFNoaWZ0K1RhYiknKSB9 fSA8L3NwYW4+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2E+Ci0gICAgICAgICAgICAgICAg ICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAg ICAgIDxhIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBpZD0iYnRuLWNvbW1lbnQtbGluZSIgaHJlZj0i IyIgdGFiaW5kZXg9IjAiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiB7eyBf KCdJbmxpbmUgQ29tbWVudCBTZWxlY3Rpb24nKSB9fXslIGlmIGNsaWVudF9wbGF0Zm9ybSA9PSAn bWFjb3MnIC0lfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXygnIChDbWQr LyknKSB9fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGVsc2UgJX0KLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHt7IF8oJyAoQ3RybCsvKScpIH19eyUtIGVuZGlmICV9 PC9zcGFuPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgotICAgICAgICAgICAgICAgICAg ICA8L2xpPgotICAgICAgICAgICAgICAgICAgICA8bGk+Ci0gICAgICAgICAgICAgICAgICAgICAg ICA8YSBjbGFzcz0iZHJvcGRvd24taXRlbSIgaWQ9ImJ0bi11bmNvbW1lbnQtbGluZSIgaHJlZj0i IyIgdGFiaW5kZXg9IjAiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiB7eyBf KCdJbmxpbmUgVW5jb21tZW50IFNlbGVjdGlvbicpIH19eyUgaWYgY2xpZW50X3BsYXRmb3JtID09 ICdtYWNvcycgLSV9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBfKCcgKENt ZCsuKScpIH19Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgeyUgZWxzZSAlfQotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXygnIChDdHJsKy4pJykgfX17JS0gZW5kaWYg JX08L3NwYW4+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2E+Ci0gICAgICAgICAgICAgICAg ICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAg ICAgIDxhIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBpZD0iYnRuLXRvZ2dsZS1jb21tZW50LWJsb2Nr IiBocmVmPSIjIiB0YWJpbmRleD0iMCI+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNw YW4+IHt7IF8oJ0Jsb2NrIENvbW1lbnQvVW5jb21tZW50IFNlbGVjdGlvbicpIH19eyUgaWYgY2xp ZW50X3BsYXRmb3JtID09ICdtYWNvcycgLSV9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB7eyBfKCcgKFNoaWZ0K0NtZCsvKScpIH19Ci0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgeyUgZWxzZSAlfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sgXygnIChT aGlmdCtDdHJsKy8pJykgfX17JS0gZW5kaWYgJX08L3NwYW4+Ci0gICAgICAgICAgICAgICAgICAg ICAgICA8L2E+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgICAg IDxsaSBjbGFzcz0iZHJvcGRvd24tZGl2aWRlciI+PC9saT4KLSAgICAgICAgICAgICAgICAgICAg PGxpPgotICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGlk PSJidG4tZm9ybWF0LXNxbCIgaHJlZj0iIyIgdGFiaW5kZXg9IjAiPgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxzcGFuPnt7IF8oJ0Zvcm1hdCBTUUwnKSB9fXslIGlmIGNsaWVudF9wbGF0 Zm9ybSA9PSAnbWFjb3MnIC0lfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3sg XygnIChTaGlmdCtDbWQrSyknKSB9fQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHslIGVs c2UgJX0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IF8oJyAoU2hpZnQrQ3Ry bCtLKScpIH19eyUtIGVuZGlmICV9PC9zcGFuPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9h PgotICAgICAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAg ICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCBtci0xIiBy b2xlPSJncm91cCIgYXJpYS1sYWJlbD0iIj4KLSAgICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJi dG4tZmlsdGVyIiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNlY29uZGFyeSIKLSAgICAg ICAgICAgICAgICAgICAgICAgIHRpdGxlPSIiCi0gICAgICAgICAgICAgICAgICAgICAgICBhY2Nl c3NrZXk9IiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PSIwIiBkaXNhYmxlZD4K LSAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWZpbHRlciBzcWwtaWNvbi1sZyIg YXJpYS1oaWRkZW49InRydWUiIHJvbGU9ImltZyI+PC9pPgotICAgICAgICAgICAgICAgIDwvYnV0 dG9uPgotICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1maWx0ZXItZHJvcGRvd24iIHR5 cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc20gYnRuLXNlY29uZGFyeSBkcm9wZG93bi10b2dn bGUgZHJvcGRvd24tdG9nZ2xlLXNwbGl0IgotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS10 b2dnbGU9ImRyb3Bkb3duIiBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlhLWV4cGFuZGVkPSJmYWxz ZSIKLSAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPSIiCi0gICAgICAgICAgICAgICAgICAg ICAgICBhY2Nlc3NrZXk9IiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkIHRhYmlu ZGV4PSIwIj4KLSAgICAgICAgICAgICAgICA8L2J1dHRvbj4KLSAgICAgICAgICAgICAgICA8dWwg Y2xhc3M9ImRyb3Bkb3duLW1lbnUgZHJvcGRvd24tbWVudS1yaWdodCI+Ci0gICAgICAgICAgICAg ICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlkPSJidG4tZmlsdGVyLW1l bnUiIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBocmVmPSIjIiB0YWJpbmRleD0iMCI+e3sgXygnU29y dC9GaWx0ZXInKSB9fTwvYT4KLSAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAg ICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAgICAgICAgICAgPGEgaWQ9ImJ0bi1pbmNsdWRl LWZpbHRlciIgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGhyZWY9IiMiIHRhYmluZGV4PSIwIj57eyBf KCdGaWx0ZXIgYnkgU2VsZWN0aW9uJykgfX08L2E+Ci0gICAgICAgICAgICAgICAgICAgIDwvbGk+ Ci0gICAgICAgICAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGlk PSJidG4tZXhjbHVkZS1maWx0ZXIiIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBocmVmPSIjIiB0YWJp bmRleD0iMCI+e3sgXygnRXhjbHVkZSBieSBTZWxlY3Rpb24nKSB9fTwvYT4KLSAgICAgICAgICAg ICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAg ICAgICAgICAgPGEgaWQ9ImJ0bi1yZW1vdmUtZmlsdGVyIiBjbGFzcz0iZHJvcGRvd24taXRlbSIg aHJlZj0iIyIgdGFiaW5kZXg9IjAiPnt7IF8oJ1JlbW92ZSBTb3J0L0ZpbHRlcicpIH19PC9hPgot ICAgICAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAg ICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCBtci0xIiByb2xl PSJncm91cCIgYXJpYS1sYWJlbD0iIj4KLSAgICAgICAgICAgICAgICA8c2VsZWN0IGlkPSJidG4t cm93cy1saW1pdCIgY2xhc3M9ImxpbWl0IGZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtc20iIGRp c2FibGVkCi0gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT0iIgotICAgICAgICAgICAgICAg ICAgICAgICAgYWNjZXNza2V5PSIiCi0gICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD0i MCI+Ci0gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9Ii0xIj57eyBfKCdObyBsaW1p dCcpIH19PC9vcHRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcHRpb24gdmFsdWU9IjEwMDAi Pnt7IF8oJzEwMDAgcm93cycpIH19PC9vcHRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcHRp b24gdmFsdWU9IjUwMCI+e3sgXygnNTAwIHJvd3MnKSB9fTwvb3B0aW9uPgotICAgICAgICAgICAg ICAgICAgICA8b3B0aW9uIHZhbHVlPSIxMDAiPnt7IF8oJzEwMCByb3dzJykgfX08L29wdGlvbj4K LSAgICAgICAgICAgICAgICA8L3NlbGVjdD4KLSAgICAgICAgICAgIDwvZGl2PgotCi0gICAgICAg ICAgICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAgbXItMSIgcm9sZT0iZ3JvdXAiIGFyaWEtbGFiZWw9 IiI+Ci0gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWNhbmNlbC1xdWVyeSIgdHlwZT0i YnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tcHJpbWFyeS1pY29uIgotICAgICAgICAgICAg ICAgICAgICAgICAgdGl0bGU9IiIKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2tleT0i IgotICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiIGRpc2FibGVkID4KLSAgICAg ICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLXN0b3Agc3FsLWljb24tbGciIGFyaWEtaGlk ZGVuPSJ0cnVlIiByb2xlPSJpbWciPjwvaT4KLSAgICAgICAgICAgICAgICA8L2J1dHRvbj4KLSAg ICAgICAgICAgICAgICA8YnV0dG9uIGlkPSJidG4tZmxhc2giIGRhdGEtdGVzdC1zZWxlY3Rvcj0i ZXhlY3V0ZS1yZWZyZXNoLWJ1dHRvbiIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBi dG4tcHJpbWFyeS1pY29uIiBzdHlsZT0id2lkdGg6IDMycHg7IgotICAgICAgICAgICAgICAgICAg ICAgICAgdGl0bGU9IiIKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhYmluZGV4PSIwIiBkYXRh LWNsaWNrLWNvdW50ZXI9IjAiIGRpc2FibGVkPgotICAgICAgICAgICAgICAgICAgICA8aSBjbGFz cz0iZmEgZmEtcGxheSBzcWwtaWNvbi1sZyIgYXJpYS1oaWRkZW49InRydWUiIHJvbGU9ImltZyI+ PC9pPgotICAgICAgICAgICAgICAgIDwvYnV0dG9uPgotICAgICAgICAgICAgICAgIDxidXR0b24g aWQ9ImJ0bi1xdWVyeS1kcm9wZG93biIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBi dG4tcHJpbWFyeS1pY29uIGRyb3Bkb3duLXRvZ2dsZSBkcm9wZG93bi10b2dnbGUtc3BsaXQiCi0g ICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9w dXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIgotICAgICAgICAgICAgICAgICAgICAgICAg YWNjZXNza2V5PSIiCi0gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT0iIgotICAgICAgICAg ICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiPgotICAgICAgICAgICAgICAgIDwvYnV0dG9uPgot ICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSI+Ci0gICAgICAgICAgICAg ICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJkcm9wZG93bi1p dGVtIiBpZD0iYnRuLWF1dG8tY29tbWl0IiBocmVmPSIjIiB0YWJpbmRleD0iMCI+Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImF1dG8tY29tbWl0IGZhIGZhLWNoZWNrIHZp c2liaWxpdHktaGlkZGVuIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1nIj48L2k+Ci0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7IF8oJ0F1dG8gY29tbWl0PycpIH19IDwv c3Bhbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4KLSAgICAgICAgICAgICAgICAgICAg PC9saT4KLSAgICAgICAgICAgICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAgICAgICAgICAg PGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGlkPSJidG4tYXV0by1yb2xsYmFjayIgaHJlZj0iIyIg dGFiaW5kZXg9IjAiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJhdXRv LXJvbGxiYWNrIGZhIGZhLWNoZWNrIHZpc2liaWxpdHktaGlkZGVuIiBhcmlhLWhpZGRlbj0idHJ1 ZSIgcm9sZT0iaW1nIj48L2k+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7 IF8oJ0F1dG8gcm9sbGJhY2sgb24gZXJyb3I/JykgfX0gPC9zcGFuPgotICAgICAgICAgICAgICAg ICAgICAgICAgPC9hPgotICAgICAgICAgICAgICAgICAgICA8L2xpPgotICAgICAgICAgICAgICAg IDwvdWw+Ci0gICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1n cm91cCBtci0xIiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iIj4KLSAgICAgICAgICAgICAgICA8 YnV0dG9uIGlkPSJidG4tZXhwbGFpbiIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBi dG4tcHJpbWFyeS1pY29uIgotICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9IiIKLSAgICAg ICAgICAgICAgICAgICAgICAgIGFjY2Vzc2tleT0iIgotICAgICAgICAgICAgICAgICAgICAgICAg dGFiaW5kZXg9IjAiIGRpc2FibGVkPgotICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZmEg ZmEtaGFuZC1wb2ludGVyIHNxbC1pY29uLWxnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1n Ij48L2k+Ci0gICAgICAgICAgICAgICAgPC9idXR0b24+Ci0gICAgICAgICAgICAgICAgPGJ1dHRv biBpZD0iYnRuLWV4cGxhaW4tYW5hbHl6ZSIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1z bSBidG4tcHJpbWFyeS1pY29uIgotICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9IiIKLSAg ICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2tleT0iIiBkaXNhYmxlZD4KLSAgICAgICAgICAg ICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWxpc3QtYWx0IHNxbC1pY29uLWxnIiBhcmlhLWhpZGRl bj0idHJ1ZSIgcm9sZT0iaW1nIj48L2k+Ci0gICAgICAgICAgICAgICAgPC9idXR0b24+Ci0gICAg ICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRuLWV4cGxhaW4tb3B0aW9ucy1kcm9wZG93biIgdHlw ZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tcHJpbWFyeS1pY29uIGRyb3Bkb3duLXRv Z2dsZSBkcm9wZG93bi10b2dnbGUtc3BsaXQiCi0gICAgICAgICAgICAgICAgICAgICAgICBkYXRh LXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9ImZh bHNlIgotICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiIGFyaWEtbGFiZWw9ImV4 cGxhaW4iPgotICAgICAgICAgICAgICAgIDwvYnV0dG9uPgotICAgICAgICAgICAgICAgIDx1bCBj bGFzcz0iZHJvcGRvd24tbWVudSI+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT4KLSAgICAgICAg ICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBpZD0iYnRuLWV4cGxhaW4t dmVyYm9zZSIgaHJlZj0iIyIgdGFiaW5kZXg9IjAiPgotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDxpIGNsYXNzPSJleHBsYWluLXZlcmJvc2UgZmEgZmEtY2hlY2sgdmlzaWJpbGl0eS1oaWRk ZW4iIGFyaWEtaGlkZGVuPSJ0cnVlIiByb2xlPSJpbWciPjwvaT4KLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICA8c3Bhbj4ge3sgXygnVmVyYm9zZScpIH19IDwvc3Bhbj4KLSAgICAgICAgICAg ICAgICAgICAgICAgIDwvYT4KLSAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAg ICAgICAgICAgPGxpPgotICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImRyb3Bkb3du LWl0ZW0iIGlkPSJidG4tZXhwbGFpbi1jb3N0cyIgaHJlZj0iIyIgdGFiaW5kZXg9IjAiPgotICAg ICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJleHBsYWluLWNvc3RzIGZhIGZhLWNo ZWNrIHZpc2liaWxpdHktaGlkZGVuIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1nIj48L2k+ Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+IHt7IF8oJ0Nvc3RzJykgfX0gPC9z cGFuPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgotICAgICAgICAgICAgICAgICAgICA8 L2xpPgotICAgICAgICAgICAgICAgICAgICA8bGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8 YSBjbGFzcz0iZHJvcGRvd24taXRlbSIgaWQ9ImJ0bi1leHBsYWluLWJ1ZmZlcnMiIGhyZWY9IiMi IHRhYmluZGV4PSIwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZXhw bGFpbi1idWZmZXJzIGZhIGZhLWNoZWNrIHZpc2liaWxpdHktaGlkZGVuIiBhcmlhLWhpZGRlbj0i dHJ1ZSIgcm9sZT0iaW1nIj48L2k+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+ IHt7IF8oJ0J1ZmZlcnMnKSB9fSA8L3NwYW4+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2E+ Ci0gICAgICAgICAgICAgICAgICAgIDwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT4KLSAg ICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBpZD0iYnRuLWV4 cGxhaW4tdGltaW5nIiBocmVmPSIjIiB0YWJpbmRleD0iMCI+Ci0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgPGkgY2xhc3M9ImV4cGxhaW4tdGltaW5nIGZhIGZhLWNoZWNrIHZpc2liaWxpdHkt aGlkZGVuIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1nIj48L2k+Ci0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgPHNwYW4+IHt7IF8oJ1RpbWluZycpIH19IDwvc3Bhbj4KLSAgICAgICAg ICAgICAgICAgICAgICAgIDwvYT4KLSAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAg ICAgICAgICAgICAgPGxpIGRhdGEtbWluLXZlcj0iMTAwMDAwIj4KLSAgICAgICAgICAgICAgICAg ICAgICAgIDxhIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBpZD0iYnRuLWV4cGxhaW4tc3VtbWFyeSIg aHJlZj0iIyIgdGFiaW5kZXg9IjAiPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNs YXNzPSJleHBsYWluLXN1bW1hcnkgZmEgZmEtY2hlY2sgdmlzaWJpbGl0eS1oaWRkZW4iIGFyaWEt aGlkZGVuPSJ0cnVlIiByb2xlPSJpbWciPjwvaT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8c3Bhbj4ge3sgXygnU3VtbWFyeScpIH19IDwvc3Bhbj4KLSAgICAgICAgICAgICAgICAgICAg ICAgIDwvYT4KLSAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICAgICAg PGxpIGRhdGEtbWluLXZlcj0iMTIwMDAwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNs YXNzPSJkcm9wZG93bi1pdGVtIiBpZD0iYnRuLWV4cGxhaW4tc2V0dGluZ3MiIGhyZWY9IiMiIHRh YmluZGV4PSIwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0iZXhwbGFp bi1zZXR0aW5ncyBmYSBmYS1jaGVjayB2aXNpYmlsaXR5LWhpZGRlbiIgYXJpYS1oaWRkZW49InRy dWUiIHJvbGU9ImltZyI+PC9pPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPiB7 eyBfKCdTZXR0aW5ncycpIH19IDwvc3Bhbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4K LSAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAg ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAgbXItMSIgcm9s ZT0iZ3JvdXAiIGFyaWEtbGFiZWw9IiI+Ci0gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRu LWNvbW1pdCIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tcHJpbWFyeS1pY29u IgotICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9IiIKLSAgICAgICAgICAgICAgICAgICAg ICAgIGFjY2Vzc2tleT0iIgotICAgICAgICAgICAgICAgICAgICAgICAgdGFiaW5kZXg9IjAiIGRp c2FibGVkPgotICAgICAgICAgICAgICAgICAgICA8aSBjbGFzcz0icGctZm9udC1pY29uIGljb24t Y29tbWl0IHNxbC1pY29uLWxnIiBhcmlhLWhpZGRlbj0idHJ1ZSIgcm9sZT0iaW1nIj48L2k+Ci0g ICAgICAgICAgICAgICAgPC9idXR0b24+Ci0gICAgICAgICAgICAgICAgPGJ1dHRvbiBpZD0iYnRu LXJvbGxiYWNrIiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLXNtIGJ0bi1wcmltYXJ5LWlj b24iCi0gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT0iIgotICAgICAgICAgICAgICAgICAg ICAgICAgdGFiaW5kZXg9IjAiIGRpc2FibGVkPgotICAgICAgICAgICAgICAgICAgICA8aSBjbGFz cz0icGctZm9udC1pY29uIGljb24tcm9sbGJhY2sgc3FsLWljb24tbGciIGFyaWEtaGlkZGVuPSJ0 cnVlIiByb2xlPSJpbWciPjwvaT4KLSAgICAgICAgICAgICAgICA8L2J1dHRvbj4KLSAgICAgICAg ICAgIDwvZGl2PgotICAgICAgICAgICAgPGRpdiBjbGFzcz0iYnRuLWdyb3VwIG1yLTEiIHJvbGU9 Imdyb3VwIiBhcmlhLWxhYmVsPSIiPgotICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1j bGVhci1kcm9wZG93biIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tcHJpbWFy eS1pY29uIGRyb3Bkb3duLXRvZ2dsZSIKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdG9n Z2xlPSJkcm9wZG93biIgYXJpYS1oYXNwb3B1cD0idHJ1ZSIgYXJpYS1leHBhbmRlZD0iZmFsc2Ui Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZT0iIgotICAgICAgICAgICAgICAgICAgICAg ICAgYWNjZXNza2V5PSIiCi0gICAgICAgICAgICAgICAgICAgICAgICB0YWJpbmRleD0iMCI+Ci0g ICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1lcmFzZXIgc3FsLWljb24tbGciIGFy aWEtaGlkZGVuPSJ0cnVlIiByb2xlPSJpbWciPjwvaT4KLSAgICAgICAgICAgICAgICA8L2J1dHRv bj4KLSAgICAgICAgICAgICAgICA8dWwgY2xhc3M9ImRyb3Bkb3duLW1lbnUiPgotICAgICAgICAg ICAgICAgICAgICA8bGk+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZHJvcGRv d24taXRlbSIgaWQ9ImJ0bi1jbGVhciIgaHJlZj0iIyIgdGFiaW5kZXg9IjAiPgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxzcGFuPiB7eyBfKCdDbGVhciBRdWVyeSBXaW5kb3cnKSB9fSA8 L3NwYW4+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8L2E+Ci0gICAgICAgICAgICAgICAgICAg IDwvbGk+Ci0gICAgICAgICAgICAgICAgICAgIDxsaT4KLSAgICAgICAgICAgICAgICAgICAgICAg IDxhIGNsYXNzPSJkcm9wZG93bi1pdGVtIiBpZD0iYnRuLWNsZWFyLWhpc3RvcnkiIGhyZWY9IiMi IHRhYmluZGV4PSIwIj4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj4ge3sgXygn Q2xlYXIgSGlzdG9yeScpIH19IDwvc3Bhbj4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvYT4K LSAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAgICAgICAgICA8L3VsPgotICAgICAg ICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8ZGl2IGNsYXNzPSJidG4tZ3JvdXAiIHJvbGU9Imdy b3VwIiBhcmlhLWxhYmVsPSIiPgotICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9ImJ0bi1zYXZl LXJlc3VsdHMtdG8tZmlsZSIgdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1zbSBidG4tcHJp bWFyeS1pY29uIgotICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU9IiIKLSAgICAgICAgICAg ICAgICAgICAgICAgIHRhYmluZGV4PSIwIiBkaXNhYmxlZD4KLSAgICAgICAgICAgICAgICAgICAg PGkgY2xhc3M9ImZhIGZhLWRvd25sb2FkIHNxbC1pY29uLWxnIiBhcmlhLWhpZGRlbj0idHJ1ZSIg cm9sZT0iaW1nIj48L2k+Ci0gICAgICAgICAgICAgICAgPC9idXR0b24+Ci0gICAgICAgICAgICA8 L2Rpdj4KLSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImJ0bi1ncm91cCBtci0xIHVzZXJfbWFjcm9z IiByb2xlPSJncm91cCIgYXJpYS1sYWJlbD0iIj4KLSAgICAgICAgICAgICAgICA8YnV0dG9uIGlk PSJidG4tbWFjcm8tZHJvcGRvd24iIHR5cGU9ImJ1dHRvbiIgY2xhc3M9ImJ0biBidG4tc20gYnRu LXByaW1hcnktaWNvbiBkcm9wZG93bi10b2dnbGUiCi0gICAgICAgICAgICAgICAgICAgICAgICBk YXRhLXRvZ2dsZT0iZHJvcGRvd24iIGFyaWEtaGFzcG9wdXA9InRydWUiIGFyaWEtZXhwYW5kZWQ9 ImZhbHNlIgotICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD0ie3sgXygnTWFjcm9z JykgfX0iIHRpdGxlPSJ7eyBfKCdNYWNyb3MnKSB9fSIgdGFiaW5kZXg9IjAiPgotICAgICAgICAg ICAgICAgICAgICA8aSBjbGFzcz0iZmEgZmEtc2Nyb2xsIHNxbC1pY29uLWxnIiBhcmlhLWhpZGRl bj0idHJ1ZSIgcm9sZT0iaW1nIj48L2k+Ci0gICAgICAgICAgICAgICAgPC9idXR0b24+Ci0gICAg ICAgICAgICAgICAgPHVsIGNsYXNzPSJkcm9wZG93bi1tZW51Ij4KLSAgICAgICAgICAgICAgICAg ICAgPGxpPgotICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0i IGlkPSJidG4tbWFuYWdlLW1hY3JvcyIgaHJlZj0iIyIgdGFiaW5kZXg9IjAiPgotICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDxzcGFuPiB7eyBfKCdNYW5hZ2UgTWFjcm9zLi4uJykgfX0gPC9z cGFuPgotICAgICAgICAgICAgICAgICAgICAgICAgPC9hPgotICAgICAgICAgICAgICAgICAgICA8 L2xpPgotICAgICAgICAgICAgICAgICAgICB7JSBpZiBtYWNyb3N8bGVuZ3RoID4gMCAlfQotICAg ICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImRyb3Bkb3duLWRpdmlkZXIiPjwvbGk+Ci0gICAg ICAgICAgICAgICAgICAgIHslIGVuZGlmICV9Ci0gICAgICAgICAgICAgICAgICAgIHslIGZvciBp IGluIG1hY3JvcyAlfQotICAgICAgICAgICAgICAgICAgICA8bGk+Ci0gICAgICAgICAgICAgICAg ICAgICAgICA8YSBjbGFzcz0iZHJvcGRvd24taXRlbSBidG4tbWFjcm8iIGRhdGEtbWFjcm8taWQ9 Int7IGkuaWQgfX0iIGhyZWY9IiMiIHRhYmluZGV4PSIwIj4KLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICA8c3Bhbj4ge3sgXyhpLm5hbWUpfGUgfX0gPC9zcGFuPgotICAgICAgICAgICAgICAg ICAgICAgICAgICAgIDxzcGFuPiAoe3sgaS5rZXlfbGFiZWwgfX0pIDwvc3Bhbj4KLSAgICAgICAg ICAgICAgICAgICAgICAgIDwvYT4KLSAgICAgICAgICAgICAgICAgICAgPC9saT4KLSAgICAgICAg ICAgICAgICAgICAgeyUgZW5kZm9yICV9Ci0gICAgICAgICAgICAgICAgPC91bD4KLSAgICAgICAg ICAgIDwvZGl2PgotICAgICAgICA8L2Rpdj4KLQotICAgICAgICA8ZGl2IGNsYXNzPSJjb25uZWN0 aW9uX3N0YXR1c193cmFwcGVyIGQtZmxleCI+Ci0gICAgICAgICAgICA8ZGl2IGlkPSJidG4tY29u bi1zdGF0dXMiCi0gICAgICAgICAgICAgICAgIHJvbGU9InN0YXR1cyIKLSAgICAgICAgICAgICAg ICAgY2xhc3M9ImNvbm5lY3Rpb25fc3RhdHVzIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVy IGFsaWduLWl0ZW1zLWNlbnRlciIgZGF0YS1jb250YWluZXI9ImJvZHkiCi0gICAgICAgICAgICAg ICAgIGRhdGEtdG9nZ2xlPSJwb3BvdmVyIiBkYXRhLXBsYWNlbWVudD0iYm90dG9tIgotICAgICAg ICAgICAgICAgICBkYXRhLWNvbnRlbnQ9IiIKLSAgICAgICAgICAgICAgICAgZGF0YS1wYW5lbC12 aXNpYmxlPSJ2aXNpYmxlIgotICAgICAgICAgICAgICAgICBhY2Nlc3NrZXk9IiIKLSAgICAgICAg ICAgICAgICAgdGFiaW5kZXg9IjAiPgotICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJwZy1mb250 LWljb24gaWNvbi1kaXNjb25uZWN0ZWQgb2J0YWluaW5nLWNvbm4gZC1mbGV4IG0tYXV0byIgYXJp YS1oaWRkZW49InRydWUiCi0gICAgICAgICAgICAgICAgICAgIHRpdGxlPSIiIHJvbGU9ImltZyI+ Ci0gICAgICAgICAgICAgICAgPC9pPgotICAgICAgICAgICAgPC9kaXY+Ci0gICAgICAgICAgICA8 ZGl2IGNsYXNzPSJjb25uZWN0aW9uLWluZm8gYnRuLWdyb3VwIG1yLTEiIHJvbGU9Imdyb3VwIiBh cmlhLWxhYmVsPSIiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiB7JSBpZiBmZ2NvbG9yICV9e3sg Ymdjb2xvciBvciAnI0ZGRkZGRicgfX17JSBlbmRpZiAlfTsgY29sb3I6IHslIGlmIGZnY29sb3Ig JX17eyBmZ2NvbG9yIH19eyUgZW5kaWYgJX07Ij4KLSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNz PSJjb25uZWN0aW9uLWRhdGEiIGRhdGEtdG9nZ2xlPSJkcm9wZG93biI+Ci0gICAgICAgICAgICAg ICAgICAgIDxkaXYgY2xhc3M9ImVkaXRvci10aXRsZSIgYXJpYS1oYXNwb3B1cD0idHJ1ZSIgYXJp YS1leHBhbmRlZD0iZmFsc2UiCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9ImJhY2tn cm91bmQtY29sb3I6IHslIGlmIGZnY29sb3IgJX17eyBiZ2NvbG9yIG9yICcjRkZGRkZGJyB9fXsl IGVuZGlmICV9OyBjb2xvcjogeyUgaWYgZmdjb2xvciAlfXt7IGZnY29sb3IgfX17JSBlbmRpZiAl fTsiPiZuYnNwOwotICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgICAgICAg ICAgPHNwYW4gY2xhc3M9ImNvbm4taW5mby1kZCBkcm9wZG93bi10b2dnbGUgZHJvcGRvd24tdG9n Z2xlLXNwbGl0IgotICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPSJ0cnVlIiBhcmlh LWV4cGFuZGVkPSJmYWxzZSI+PC9zcGFuPgotICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg ICAgICAgICAgIDx1bCBjbGFzcz0iZHJvcGRvd24tbWVudSIgaWQ9ImNvbm5lY3Rpb25zLWxpc3Qi PgotICAgICAgICAgICAgICAgIDwvdWw+Ci0gICAgICAgICAgICA8L2Rpdj4KLQotCi0gICAgICAg IDwvZGl2PgotICAgICAgICA8ZGl2IGlkPSJlZGl0b3ItcGFuZWwiIHRhYmluZGV4PSIwIj4KLSAg ICAgICAgICAgIDxkaXYgaWQ9Im1haW5fbG9hZGVyIiBjbGFzcz0icGctc3AtY29udGFpbmVyIHNx bC1lZGl0b3ItYnVzeS1mZXRjaGluZyI+Ci0gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icGct c3AtY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+Ci0gICAg ICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJjb2wtMTIgcGctc3AtaWNvbiBzcWwtZWRp dG9yLWJ1c3ktaWNvbiI+PC9kaXY+Ci0gICAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAgICAg ICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPjxkaXYgY2xhc3M9ImNvbC0xMiBwZy1zcC10 ZXh0IHNxbC1lZGl0b3ItYnVzeS10ZXh0Ij57eyBfKCdMb2FkaW5nLi4uJykgfX08L2Rpdj48L2Rp dj4KLSAgICAgICAgICAgICAgICA8L2Rpdj4KLSAgICAgICAgICAgIDwvZGl2PgotICAgICAgICA8 L2Rpdj4KLSAgICAgICAgPGRpdiBjbGFzcz0ic3FsLWVkaXRvci1idXN5LXRleHQtc3RhdHVzIGQt bm9uZSI+PC9kaXY+Ci0gICAgPC9kaXY+Ci08L2Rpdj4KLXslIGVuZGJsb2NrICV9Ci0KLXslIGJs b2NrIGluaXRfc2NyaXB0ICV9Ci1yZXF1aXJlKFsnc291cmNlcy9nZW5lcmF0ZWQvYnJvd3Nlcl9u b2RlcycsICdzb3VyY2VzL2dlbmVyYXRlZC9jb2RlbWlycm9yJywgJ3NvdXJjZXMvZ2VuZXJhdGVk L3NsaWNrZ3JpZCddLCBmdW5jdGlvbigpIHsKLSAgICByZXF1aXJlKFsnc291cmNlcy9nZW5lcmF0 ZWQvc3FsZWRpdG9yJ10sIGZ1bmN0aW9uKGN0eCkgewotICAgICAgICB2YXIgJCA9IHBnQWRtaW4u U3FsRWRpdG9yLmpxdWVyeSwKLSAgICAgICAgICAgIFMgPSBwZ0FkbWluLlNxbEVkaXRvci5TLAot ICAgICAgICAgICAgZWRpdG9yUGFuZWwgPSAkKCcuc3FsLWVkaXRvcicpOwotCi0gICAgICAgIC8v IFJlZ2lzdGVyIHVubG9hZCBldmVudCBvbiB3aW5kb3cgY2xvc2UuCi0gICAgICAgIC8qIElmIG9w ZW5lZCBpbiBuZXcgdGFiLCBjbG9zZSB0aGUgY29ubmVjdGlvbiBvbmx5IG9uIHRhYi93aW5kb3cg Y2xvc2UgYW5kCi0gICAgICAgICAqIG5vdCBvbiByZWZyZXNoIGF0dGVtcHQgYmVjYXVzZSB0aGUg dXNlciBtYXkgY2FuY2VsIHRoZSByZWxvYWQKLSAgICAgICAgICovCi0gICAgICAgIGlmKHdpbmRv dy5vcGVuZXIpIHsKLSAgICAgICAgICAkKHdpbmRvdykub24oJ3VubG9hZCcsIGZ1bmN0aW9uKGV2 KSB7Ci0gICAgICAgICAgICAkLmFqYXgoewotICAgICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUn LAotICAgICAgICAgICAgICB1cmw6ICJ7eyB1cmxfZm9yKCdkYXRhZ3JpZC5pbmRleCcpIH19IiAr ICJjbG9zZS8iICsge3sgdW5pcXVlSWQgfX0KLSAgICAgICAgICAgIH0pOwotICAgICAgICAgIH0p OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICQod2luZG93KS5vbignYmVmb3JldW5sb2Fk JywgZnVuY3Rpb24oZXYpIHsKLSAgICAgICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICAgIG1l dGhvZDogJ0RFTEVURScsCi0gICAgICAgICAgICAgIHVybDogInt7IHVybF9mb3IoJ2RhdGFncmlk LmluZGV4JykgfX0iICsgImNsb3NlLyIgKyB7eyB1bmlxdWVJZCB9fQotICAgICAgICAgICAgfSk7 Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBHZXQgdGhlIGNvbnRyb2xs ZXIgb2JqZWN0IGZyb20gcGdBZG1pbi5TcWxFZGl0b3IKLSAgICAgICAgdmFyIHNxbEVkaXRvckNv bnRyb2xsZXIgPSBwZ0FkbWluLlNxbEVkaXRvci5jcmVhdGUoZWRpdG9yUGFuZWwpOwotCi0gICAg ICAgIC8vIExpc3RlbiBvbiBldmVudHMgdG8gc2hvdy9oaWRlIGxvYWRpbmctaWNvbiBhbmQgY2hh bmdlIG1lc3NhZ2VzLgotICAgICAgICB7JSBpZiBzY3JpcHRfdHlwZV91cmwgJX0KLSAgICAgICAg ICAgIHZhciBzY3JpcHRfdHlwZV91cmwgPSAne3sgc2NyaXB0X3R5cGVfdXJsIH19JzsKLSAgICAg ICAgeyUgZWxzZSAlfQotICAgICAgICAgICAgdmFyIHNjcmlwdF90eXBlX3VybCA9ICcnOwotICAg ICAgICB7JSBlbmRpZiAlfQotICAgICAgICAvLyBTdGFydCB0aGUgcXVlcnkgdG9vbC4KLQotICAg ICAgICBzcWxFZGl0b3JDb250cm9sbGVyLnN0YXJ0KAotICAgICAgICAgICAge3sgdW5pcXVlSWQg fX0sCi0gICAgICAgICAgICB7eyB1cmxfcGFyYW1zfHNhZmV9fSwKLSAgICAgICAgICAgICd7eyBs YXlvdXR8c2FmZSB9fScsCi0gICAgICAgICAgICB7eyBtYWNyb3N8c2FmZSB9fQotICAgICAgICAp OwotCi0gICAgICAgIC8vIElmIG9wZW5pbmcgZnJvbSBzY2hlbWEgZGlmZiwgc2V0IHRoZSBnZW5l cmF0ZWQgc2NyaXB0IHRvIHRoZSBTUUwgRWRpdG9yCi0KLSAgICAgICAgdmFyIHNjaGVtYV9kZGxf ZGlmZiA9ICh3aW5kb3cub3BlbmVyICE9PSBudWxsKSA/IHdpbmRvdy5vcGVuZXIucGdBZG1pbi5k ZGxfZGlmZiA6ICh3aW5kb3cucGFyZW50ICE9PSBudWxsKSA/IHdpbmRvdy5wYXJlbnQucGdBZG1p bi5kZGxfZGlmZiA6IHdpbmRvdy50b3AucGdBZG1pbi5kZGxfZGlmZjsKLSAgICAgICAgc3FsRWRp dG9yQ29udHJvbGxlci5zZXRfdmFsdWVfdG9fZWRpdG9yKHNjaGVtYV9kZGxfZGlmZik7Ci0gICAg ICAgIGlmICh3aW5kb3cub3BlbmVyICE9PSBudWxsKSB3aW5kb3cub3BlbmVyLnBnQWRtaW4uZGRs X2RpZmYgPSAnJzsKLSAgICAgICAgZWxzZSBpZiAod2luZG93LnBhcmVudCAhPT0gbnVsbCkgd2lu ZG93LnBhcmVudC5wZ0FkbWluLmRkbF9kaWZmID0gJyc7Ci0gICAgICAgIGVsc2UgaWYgKHdpbmRv dy50b3AgIT09IG51bGwpIHdpbmRvdy50b3AucGdBZG1pbi5kZGxfZGlmZiA9ICcnOwotCi0gICAg fSk7Ci19KTsKLXslIGVuZGJsb2NrICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9k YXRhZ3JpZC90ZXN0cy9fX2luaXRfXy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3Rl c3RzL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5YmIu LjAwMDAwMDAwMApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVzdHMv ZGF0YWdyaWRfdGVzdF9kYXRhLmpzb24gYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZXN0 cy9kYXRhZ3JpZF90ZXN0X2RhdGEuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDA3NWYzNWUzLi4wMDAwMDAwMDAKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVz dHMvZGF0YWdyaWRfdGVzdF9kYXRhLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBA QAotewotICAiZGF0YV9ncmlkX2luaXRfcXVlcnlfdG9vbCI6IFsKLSAgICB7Ci0gICAgICAibmFt ZSI6ICJEYXRhZ3JpZCBpbml0IHF1ZXJ5IHRvb2wiLAotICAgICAgInVybCI6ICIvZGF0YWdyaWQv aW5pdGlhbGl6ZS9xdWVyeV90b29sLyIsCi0gICAgICAiaXNfcG9zaXRpdmVfdGVzdCI6IHRydWUs Ci0gICAgICAibW9ja2luZ19yZXF1aXJlZCI6IGZhbHNlLAotICAgICAgInRlc3RfZGF0YSI6IHt9 LAotICAgICAgIm1vY2tfZGF0YSI6IHt9LAotICAgICAgImV4cGVjdGVkX2RhdGEiOiB7Ci0gICAg ICAgICJzdGF0dXNfY29kZSI6IDIwMAotICAgICAgfQotICAgIH0KLSAgXSwKLSAgImRhdGFfZ3Jp ZF9xdWVyeV90b29sX2Nsb3NlIjogWwotICAgIHsKLSAgICAgICJuYW1lIjogIkRhdGFncmlkIHF1 ZXJ5IHRvb2wgY2xvc2UiLAotICAgICAgInVybCI6ICIvZGF0YWdyaWQvY2xvc2UvIiwKLSAgICAg ICJpc19wb3NpdGl2ZV90ZXN0IjogdHJ1ZSwKLSAgICAgICJtb2NraW5nX3JlcXVpcmVkIjogZmFs c2UsCi0gICAgICAidGVzdF9kYXRhIjoge30sCi0gICAgICAibW9ja19kYXRhIjoge30sCi0gICAg ICAiZXhwZWN0ZWRfZGF0YSI6IHsKLSAgICAgICAgInN0YXR1c19jb2RlIjogMjAwCi0gICAgICB9 Ci0gICAgfQotICBdLAotICAiZGF0YV9ncmlkX3ZhbGlkYXRlX2ZpbHRlciI6IFsKLSAgICB7Ci0g ICAgICAibmFtZSI6ICJEYXRhZ3JpZCB2YWxpZGF0ZSBmaWx0ZXIiLAotICAgICAgInVybCI6ICIv ZGF0YWdyaWQvZmlsdGVyL3ZhbGlkYXRlLyIsCi0gICAgICAiaXNfcG9zaXRpdmVfdGVzdCI6IHRy dWUsCi0gICAgICAibW9ja2luZ19yZXF1aXJlZCI6IGZhbHNlLAotICAgICAgInRlc3RfZGF0YSI6 ICJpZCA9IDEiLAotICAgICAgIm1vY2tfZGF0YSI6IHt9LAotICAgICAgImV4cGVjdGVkX2RhdGEi OiB7Ci0gICAgICAgICJzdGF0dXNfY29kZSI6IDIwMAotICAgICAgfQotICAgIH0sCi0gICAgewot ICAgICAgIm5hbWUiOiAiRGF0YWdyaWQgdmFsaWRhdGUgZmlsdGVyIiwKLSAgICAgICJ1cmwiOiAi L2RhdGFncmlkL2ZpbHRlci92YWxpZGF0ZS8iLAotICAgICAgImlzX3Bvc2l0aXZlX3Rlc3QiOiBm YWxzZSwKLSAgICAgICJtb2NraW5nX3JlcXVpcmVkIjogdHJ1ZSwKLSAgICAgICJ0ZXN0X2RhdGEi OiAiaWQgPSAxIiwKLSAgICAgICJtb2NrX2RhdGEiOiB7Ci0gICAgICAgICJmdW5jdGlvbl9uYW1l IjogInBnYWRtaW4udXRpbHMuZHJpdmVyLnBzeWNvcGcyLmNvbm5lY3Rpb24uQ29ubmVjdGlvbi5l eGVjdXRlX3NjYWxhciIsCi0gICAgICAgICJyZXR1cm5fdmFsdWUiOiAiKEZhbHNlLCAnTW9ja2Vk IEludGVybmFsIFNlcnZlciBFcnJvciB3aGlsZSB2YWxpZGF0ZSBmaWx0ZXInKSIKLSAgICAgIH0s Ci0gICAgICAiZXhwZWN0ZWRfZGF0YSI6IHsKLSAgICAgICAgInN0YXR1c19jb2RlIjogMjAwCi0g ICAgICB9Ci0gICAgfQotICBdLAotICAiZGF0YV9ncmlkX3VwZGF0ZV9jb25uZWN0aW9uIjogWwot ICAgIHsKLSAgICAgICJuYW1lIjogIkRhdGFncmlkIHVwZGF0ZSBjb25uZWN0aW9uIHBvc2l0aXZl IiwKLSAgICAgICJ1cmwiOiAiL2RhdGFncmlkL2luaXRpYWxpemUvcXVlcnlfdG9vbC91cGRhdGVf Y29ubmVjdGlvbi8iLAotICAgICAgImlzX3Bvc2l0aXZlX3Rlc3QiOiB0cnVlLAotICAgICAgIm1v Y2tpbmdfcmVxdWlyZWQiOiBmYWxzZSwKLSAgICAgICJpc19jcmVhdGVfcm9sZSI6IGZhbHNlLAot ICAgICAgInRlc3RfZGF0YSI6IHt9LAotICAgICAgIm1vY2tfZGF0YSI6IHt9LAotICAgICAgImV4 cGVjdGVkX2RhdGEiOiB7Ci0gICAgICAgICJzdGF0dXNfY29kZSI6IDIwMAotICAgICAgfQotICAg IH0sCi0gICAgewotICAgICAgIm5hbWUiOiAiRGF0YWdyaWQgdXBkYXRlIGNvbm5lY3Rpb24gd2l0 aCBuZXcgdXNlciIsCi0gICAgICAidXJsIjogIi9kYXRhZ3JpZC9pbml0aWFsaXplL3F1ZXJ5X3Rv b2wvdXBkYXRlX2Nvbm5lY3Rpb24vIiwKLSAgICAgICJpc19wb3NpdGl2ZV90ZXN0IjogdHJ1ZSwK LSAgICAgICJtb2NraW5nX3JlcXVpcmVkIjogZmFsc2UsCi0gICAgICAiaXNfY3JlYXRlX3JvbGUi OiB0cnVlLAotICAgICAgInRlc3RfZGF0YSI6IHt9LAotICAgICAgIm1vY2tfZGF0YSI6IHt9LAot ICAgICAgImV4cGVjdGVkX2RhdGEiOiB7Ci0gICAgICAgICJzdGF0dXNfY29kZSI6IDIwMAotICAg ICAgfQotICAgIH0KLSAgXSwKLSAgImRhdGFfZ3JpZF9wYW5lbCI6IFsKLSAgICB7Ci0gICAgICAi bmFtZSI6ICJEYXRhZ3JpZCBQYW5lbCIsCi0gICAgICAidXJsIjogIi9kYXRhZ3JpZC9wYW5lbC8i LAotICAgICAgImlzX3Bvc2l0aXZlX3Rlc3QiOiB0cnVlLAotICAgICAgIm1vY2tpbmdfcmVxdWly ZWQiOiBmYWxzZSwKLSAgICAgICJ0ZXN0X2RhdGEiOiB7fSwKLSAgICAgICJtb2NrX2RhdGEiOiB7 Ci0gICAgICB9LAotICAgICAgImV4cGVjdGVkX2RhdGEiOiB7Ci0gICAgICAgICJzdGF0dXNfY29k ZSI6IDIwMAotICAgICAgfQotICAgIH0KLSAgXSwKLSAgImRhdGFfZ3JpZF9pbml0aWFsaXplIjog WwotICAgIHsKLSAgICAgICJuYW1lIjogIkRhdGFncmlkIEluaXRpYWxpemUiLAotICAgICAgInVy bCI6ICIvZGF0YWdyaWQvaW5pdGlhbGl6ZS9kYXRhZ3JpZC8iLAotICAgICAgImlzX3Bvc2l0aXZl X3Rlc3QiOiB0cnVlLAotICAgICAgIm1vY2tpbmdfcmVxdWlyZWQiOiBmYWxzZSwKLSAgICAgICJ0 ZXN0X2RhdGEiOiAiaWQ9MSIsCi0gICAgICAibW9ja19kYXRhIjogewotCi0gICAgICB9LAotICAg ICAgImV4cGVjdGVkX2RhdGEiOiB7Ci0gICAgICAgICJzdGF0dXNfY29kZSI6IDIwMAotICAgICAg fQotICAgIH0sewotICAgICAgIm5hbWUiOiAiRGF0YWdyaWQgSW5pdGlhbGl6ZSIsCi0gICAgICAi dXJsIjogIi9kYXRhZ3JpZC9pbml0aWFsaXplL2RhdGFncmlkLyIsCi0gICAgICAiaXNfcG9zaXRp dmVfdGVzdCI6IHRydWUsCi0gICAgICAibW9ja2luZ19yZXF1aXJlZCI6IGZhbHNlLAotICAgICAg InRlc3RfZGF0YSI6IG51bGwsCi0gICAgICAibW9ja19kYXRhIjoge30sCi0gICAgICAiZXhwZWN0 ZWRfZGF0YSI6IHsKLSAgICAgICAgInN0YXR1c19jb2RlIjogMjAwCi0gICAgICB9Ci0gICAgfSwK LSAgICB7Ci0gICAgICAibmFtZSI6ICJEYXRhZ3JpZCBJbml0aWFsaXplIiwKLSAgICAgICJ1cmwi OiAiL2RhdGFncmlkL2luaXRpYWxpemUvZGF0YWdyaWQvIiwKLSAgICAgICJpc19wb3NpdGl2ZV90 ZXN0IjogZmFsc2UsCi0gICAgICAibW9ja2luZ19yZXF1aXJlZCI6IHRydWUsCi0gICAgICAidGVz dF9kYXRhIjogImlkPTEiLAotICAgICAgIm1vY2tfZGF0YSI6IHsKLSAgICAgICAgImZ1bmN0aW9u X25hbWUiOiAicGdhZG1pbi51dGlscy5kcml2ZXIucHN5Y29wZzIuY29ubmVjdGlvbi5Db25uZWN0 aW9uLmV4ZWN1dGVfZGljdCIsCi0gICAgICAgICJyZXR1cm5fdmFsdWUiOiAiKEZhbHNlLCAnTW9j a2VkIEludGVybmFsIFNlcnZlciBFcnJvciB3aGlsZSBpbml0aWFsaXplIGRhdGFncmlkLicpIgot ICAgICAgfSwKLSAgICAgICJleHBlY3RlZF9kYXRhIjogewotICAgICAgICAic3RhdHVzX2NvZGUi OiA1MDAKLSAgICAgIH0KLSAgICB9Ci0gIF0KLX0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL2RhdGFncmlkL3Rlc3RzL3Rlc3RfZGF0YV9ncmlkX2luaXRfcXVlcnlfdG9vbC5weSBiL3dl Yi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3Rlc3RzL3Rlc3RfZGF0YV9ncmlkX2luaXRfcXVlcnlf dG9vbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM3OTQ2YmU1Li4wMDAwMDAw MDAKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVzdHMvdGVzdF9kYXRhX2dyaWRf aW5pdF9xdWVyeV90b29sLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKLSMKLSMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwotIwotIyBDb3B5 cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0jIFRo aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQotIwot IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMKLQotCi1pbXBvcnQganNvbgotaW1wb3J0IHV1aWQKLWltcG9ydCBy YW5kb20KLQotZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAotZnJvbSBwZ2FkbWluLmJy b3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMg YXMgXAotICAgIGRhdGFiYXNlX3V0aWxzCi0KLWZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBv cnQgQmFzZVRlc3RHZW5lcmF0b3IKLWZyb20gcGdhZG1pbi51dGlscy5leGNlcHRpb24gaW1wb3J0 IEV4ZWN1dGVFcnJvcgotZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Ci1m cm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRp bHMKLWZyb20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9ydCBjb25maWdfZGF0YQotZnJvbSAu IGltcG9ydCB1dGlscyBhcyBkYXRhX2dyaWRfdXRpbHMKLQotCi1jbGFzcyBEYXRhZ3JpZEluaXRR dWVyeVRvb2xUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6Ci0gICAgIiIiCi0gICAgVGhpcyB3 aWxsIGluaXQgcXVlcnktdG9vbCBjb25uZWN0aW9uLgotICAgICIiIgotCi0gICAgc2NlbmFyaW9z ID0gdXRpbHMuZ2VuZXJhdGVfc2NlbmFyaW9zKAotICAgICAgICAnZGF0YV9ncmlkX2luaXRfcXVl cnlfdG9vbCcsCi0gICAgICAgIGRhdGFfZ3JpZF91dGlscy50ZXN0X2Nhc2VzCi0gICAgKQotCi0g ICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmRhdGFiYXNlX2luZm8gPSBwYXJlbnRf bm9kZV9kaWN0WyJkYXRhYmFzZSJdWy0xXQotICAgICAgICBzZWxmLmRiX25hbWUgPSBzZWxmLmRh dGFiYXNlX2luZm9bImRiX25hbWUiXQotICAgICAgICBzZWxmLmRpZCA9IHNlbGYuZGF0YWJhc2Vf aW5mb1siZGJfaWQiXQotICAgICAgICBzZWxmLnNpZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZl ciJdWy0xXVsic2VydmVyX2lkIl0KLSAgICAgICAgc2VsZi5zZ2lkID0gY29uZmlnX2RhdGFbJ3Nl cnZlcl9ncm91cCddCi0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9k YXRhYmFzZShzZWxmLCB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaWQsIHNlbGYuZGlkKQotCi0gICAgICAg IHNlbGYudHJhbnNfaWQgPSBzdHIocmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCi0KLSAgICAg ICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToKLSAgICAgICAgICAgIHJhaXNl IEV4ZWN1dGVFcnJvcigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0YWJhc2UgdG8gYWRkIGEgdGFi bGUuIikKLQotICAgIGRlZiBpbml0X3F1ZXJ5X3Rvb2woc2VsZik6Ci0gICAgICAgIHJlc3BvbnNl ID0gc2VsZi50ZXN0ZXIucG9zdCgKLSAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHNlbGYudHJh bnNfaWQpICsgJy8nICsgc3RyKHNlbGYuc2dpZCkgKyAnLycgKyBzdHIoCi0gICAgICAgICAgICAg ICAgc2VsZi5zaWQpICsgJy8nICsgc3RyKHNlbGYuZGlkKSwKLSAgICAgICAgICAgIGNvbnRlbnRf dHlwZT0naHRtbC9qc29uJwotICAgICAgICApCi0gICAgICAgIHJldHVybiByZXNwb25zZQotCi0g ICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdpbGwgaW5p dCBxdWVyeSB0b29sIGNvbm5lY3Rpb24uIiIiCi0KLSAgICAgICAgaWYgc2VsZi5pc19wb3NpdGl2 ZV90ZXN0OgotICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLmluaXRfcXVlcnlfdG9vbCgpCi0g ICAgICAgICAgICBhY3R1YWxfcmVzcG9uc2VfY29kZSA9IHJlc3BvbnNlLnN0YXR1c19jb2RlCi0g ICAgICAgICAgICBleHBlY3RlZF9yZXNwb25zZV9jb2RlID0gc2VsZi5leHBlY3RlZF9kYXRhWydz dGF0dXNfY29kZSddCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3Jlc3Bv bnNlX2NvZGUsIGV4cGVjdGVkX3Jlc3BvbnNlX2NvZGUpCi0KLSAgICBkZWYgdGVhckRvd24oc2Vs Zik6Ci0gICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGlzY29ubmVjdCBkYXRhYmFzZS4iIiIKLSAg ICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNpZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpZCkKZGlm ZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3Rlc3RzL3Rlc3RfZGF0YV9ncmlk X3BhbmVsLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVzdHMvdGVzdF9kYXRhX2dy aWRfcGFuZWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1MTFhMDIxYy4uMDAw MDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3Rlc3RzL3Rlc3RfZGF0YV9n cmlkX3BhbmVsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMKLSMKLSMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwotIwotIyBDb3B5cmlnaHQg KEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0jIFRoaXMgc29m dHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQotIwotIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMKLQotCi1pbXBvcnQganNvbgotaW1wb3J0IHV1aWQKLWltcG9ydCByYW5kb20K LQotZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAotZnJvbSBwZ2FkbWluLmJyb3dzZXIu c2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAot ICAgIGRhdGFiYXNlX3V0aWxzCi0KLWZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFz ZVRlc3RHZW5lcmF0b3IKLWZyb20gcGdhZG1pbi51dGlscy5leGNlcHRpb24gaW1wb3J0IEV4ZWN1 dGVFcnJvcgotZnJvbSByZWdyZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Ci1mcm9tIHJl Z3Jlc3Npb24ucHl0aG9uX3Rlc3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZy b20gcmVncmVzc2lvbi50ZXN0X3NldHVwIGltcG9ydCBjb25maWdfZGF0YQotZnJvbSAuIGltcG9y dCB1dGlscyBhcyBkYXRhX2dyaWRfdXRpbHMKLQotCi1jbGFzcyBEYXRhZ3JpZFBhbmVsVGVzdENh c2UoQmFzZVRlc3RHZW5lcmF0b3IpOgotICAgICIiIgotICAgIFRoaXMgd2lsbCBkYXRhIGdyaWQg cGFuZWwuCi0gICAgIiIiCi0KLSAgICBzY2VuYXJpb3MgPSB1dGlscy5nZW5lcmF0ZV9zY2VuYXJp b3MoCi0gICAgICAgICdkYXRhX2dyaWRfcGFuZWwnLAotICAgICAgICBkYXRhX2dyaWRfdXRpbHMu dGVzdF9jYXNlcwotICAgICkKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5k YXRhYmFzZV9pbmZvID0gcGFyZW50X25vZGVfZGljdFsiZGF0YWJhc2UiXVstMV0KLSAgICAgICAg c2VsZi5kYl9uYW1lID0gc2VsZi5kYXRhYmFzZV9pbmZvWyJkYl9uYW1lIl0KLSAgICAgICAgc2Vs Zi5kaWQgPSBzZWxmLmRhdGFiYXNlX2luZm9bImRiX2lkIl0KLSAgICAgICAgc2VsZi5zaWQgPSBw YXJlbnRfbm9kZV9kaWN0WyJzZXJ2ZXIiXVstMV1bInNlcnZlcl9pZCJdCi0gICAgICAgIHNlbGYu c2dpZCA9IGNvbmZpZ19kYXRhWydzZXJ2ZXJfZ3JvdXAnXQotCi0gICAgICAgIGRiX2NvbiA9IGRh dGFiYXNlX3V0aWxzLmNvbm5lY3RfZGF0YWJhc2Uoc2VsZiwgdXRpbHMuU0VSVkVSX0dST1VQLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2lk LCBzZWxmLmRpZCkKLSAgICAgICAgaWYgbm90IGRiX2NvblsnZGF0YSddWyJjb25uZWN0ZWQiXToK LSAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGVFcnJvcigiQ291bGQgbm90IGNvbm5lY3QgdG8gZGF0 YWJhc2UgdG8gYWRkIGEgdGFibGUuIikKLQotICAgICAgICBzZWxmLnRyYW5zX2lkID0gc3RyKHJh bmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQotICAgICAgICBxdF9pbml0ID0gZGF0YV9ncmlkX3V0 aWxzLl9pbml0X3F1ZXJ5X3Rvb2woc2VsZiwgc2VsZi50cmFuc19pZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2dpZCwgc2VsZi5zaWQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LmRpZCkKLQotICAgICAgICBpZiBub3QgcXRfaW5pdFsnc3VjY2VzcyddOgotICAgICAgICAgICAg cmFpc2UgRXhlY3V0ZUVycm9yKCJDb3VsZCBub3QgaW5pdGlhbGl6ZSBxdWVydHkgdG9vbC4iKQot Ci0gICAgZGVmIHBhbmVsKHNlbGYpOgotICAgICAgICBxdWVyeV9wYXJhbSA9IFwKLSAgICAgICAg ICAgICc/aXNfcXVlcnlfdG9vbD17MH0mc2dpZD17MX0mc2lkPXsyfSZzZXJ2ZXJfdHlwZT17M30n IFwKLSAgICAgICAgICAgICcmZGlkPXs0fSZ0aXRsZT17NX0nLmZvcm1hdChUcnVlLCBzZWxmLnNn aWQsIHNlbGYuc2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl bGYuc2VydmVyX2luZm9ybWF0aW9uWyd0eXBlJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5kaWQsICdRdWVyeSBwYW5lbCcpCi0KLSAgICAgICAgcmVzcG9u c2UgPSBzZWxmLnRlc3Rlci5wb3N0KAotICAgICAgICAgICAgc2VsZi51cmwgKyBzdHIoc2VsZi50 cmFuc19pZCkgKyBxdWVyeV9wYXJhbSwKLSAgICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhzZWxm LnRlc3RfZGF0YSksCi0gICAgICAgICAgICBjb250ZW50X3R5cGU9J2h0bWwvanNvbicKLSAgICAg ICAgKQotICAgICAgICByZXR1cm4gcmVzcG9uc2UKLQotICAgIGRlZiBydW5UZXN0KHNlbGYpOgot ICAgICAgICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSBxdWVyeSB0b29sIGNvbm5lY3Rp b24uIiIiCi0KLSAgICAgICAgaWYgc2VsZi5pc19wb3NpdGl2ZV90ZXN0OgotICAgICAgICAgICAg cmVzcG9uc2UgPSBzZWxmLnBhbmVsKCkKLSAgICAgICAgICAgIGFjdHVhbF9yZXNwb25zZV9jb2Rl ID0gcmVzcG9uc2Uuc3RhdHVzX2NvZGUKLSAgICAgICAgICAgIGV4cGVjdGVkX3Jlc3BvbnNlX2Nv ZGUgPSBzZWxmLmV4cGVjdGVkX2RhdGFbJ3N0YXR1c19jb2RlJ10KLSAgICAgICAgZWxzZToKLSAg ICAgICAgICAgIHdpdGggcGF0Y2goc2VsZi5tb2NrX2RhdGFbImZ1bmN0aW9uX25hbWUiXSwKLSAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPWV2YWwoc2VsZi5tb2NrX2RhdGFbInJl dHVybl92YWx1ZSJdKSk6Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnBhbmVsKCkK LSAgICAgICAgICAgICAgICBhY3R1YWxfcmVzcG9uc2VfY29kZSA9IHJlc3BvbnNlLnN0YXR1c19j b2RlCi0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfcmVzcG9uc2VfY29kZSA9IHNlbGYuZXhwZWN0 ZWRfZGF0YVsnc3RhdHVzX2NvZGUnXQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFs X3Jlc3BvbnNlX2NvZGUsIGV4cGVjdGVkX3Jlc3BvbnNlX2NvZGUpCi0KLSAgICBkZWYgdGVhckRv d24oc2VsZik6Ci0gICAgICAgICIiIlRoaXMgZnVuY3Rpb24gZGlzY29ubmVjdCBkYXRhYmFzZS4i IiIKLSAgICAgICAgZGF0YWJhc2VfdXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxm LnNpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRp ZCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3Rlc3RzL3Rlc3RfZGF0 YV9ncmlkX3F1ZXJ5X3Rvb2xfY2xvc2UucHkgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90 ZXN0cy90ZXN0X2RhdGFfZ3JpZF9xdWVyeV90b29sX2Nsb3NlLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA0NDBlYTdjNTEuLjAwMDAwMDAwMAotLS0gYS93ZWIvcGdhZG1pbi90b29s cy9kYXRhZ3JpZC90ZXN0cy90ZXN0X2RhdGFfZ3JpZF9xdWVyeV90b29sX2Nsb3NlLnB5CisrKyAv ZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgcGdBZG1p biA0IC0gUG9zdGdyZVNRTCBUb29scwotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBU aGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0jIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQg dW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotCi1p bXBvcnQganNvbgotaW1wb3J0IHV1aWQKLWltcG9ydCByYW5kb20KLQotZnJvbSB1bml0dGVzdC5t b2NrIGltcG9ydCBwYXRjaAotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2 ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAotICAgIGRhdGFiYXNlX3V0aWxz Ci0KLWZyb20gcGdhZG1pbi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKLWZy b20gcmVncmVzc2lvbiBpbXBvcnQgcGFyZW50X25vZGVfZGljdAotZnJvbSByZWdyZXNzaW9uLnB5 dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHJlZ3Jlc3Np b24udGVzdF9zZXR1cCBpbXBvcnQgY29uZmlnX2RhdGEKLWZyb20gLiBpbXBvcnQgdXRpbHMgYXMg ZGF0YV9ncmlkX3V0aWxzCi1mcm9tIHBnYWRtaW4udXRpbHMuZXhjZXB0aW9uIGltcG9ydCBFeGVj dXRlRXJyb3IKLQotCi1jbGFzcyBEYXRhZ3JpZFF1ZXJ5VG9vbENsb3NlVGVzdENhc2UoQmFzZVRl c3RHZW5lcmF0b3IpOgotICAgICIiIgotICAgIFRoaXMgd2lsbCBjbG9zZSBxdWVyeS10b29sIGNv bm5lY3Rpb24uCi0gICAgIiIiCi0KLSAgICBzY2VuYXJpb3MgPSB1dGlscy5nZW5lcmF0ZV9zY2Vu YXJpb3MoCi0gICAgICAgICdkYXRhX2dyaWRfcXVlcnlfdG9vbF9jbG9zZScsCi0gICAgICAgIGRh dGFfZ3JpZF91dGlscy50ZXN0X2Nhc2VzCi0gICAgKQotCi0gICAgZGVmIHNldFVwKHNlbGYpOgot ICAgICAgICBzZWxmLmRhdGFiYXNlX2luZm8gPSBwYXJlbnRfbm9kZV9kaWN0WyJkYXRhYmFzZSJd Wy0xXQotICAgICAgICBzZWxmLmRiX25hbWUgPSBzZWxmLmRhdGFiYXNlX2luZm9bImRiX25hbWUi XQotICAgICAgICBzZWxmLmRpZCA9IHNlbGYuZGF0YWJhc2VfaW5mb1siZGJfaWQiXQotICAgICAg ICBzZWxmLnNpZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJdWy0xXVsic2VydmVyX2lkIl0K LSAgICAgICAgc2VsZi5zZ2lkID0gY29uZmlnX2RhdGFbJ3NlcnZlcl9ncm91cCddCi0KLSAgICAg ICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRhYmFzZShzZWxmLCB1dGlscy5T RVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VsZi5zaWQsIHNlbGYuZGlkKQotCi0gICAgICAgIGlmIG5vdCBkYl9jb25bJ2RhdGEn XVsiY29ubmVjdGVkIl06Ci0gICAgICAgICAgICByYWlzZSBFeGVjdXRlRXJyb3IoIkNvdWxkIG5v dCBjb25uZWN0IHRvIGRhdGFiYXNlIHRvIGFkZCBhIHRhYmxlLiIpCi0KLSAgICAgICAgc2VsZi50 cmFuc19pZCA9IHN0cihyYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKLSAgICAgICAgcXRfaW5p dCA9IGRhdGFfZ3JpZF91dGlscy5faW5pdF9xdWVyeV90b29sKHNlbGYsIHNlbGYudHJhbnNfaWQs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxm LnNnaWQsIHNlbGYuc2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VsZi5kaWQpCi0KLSAgICAgICAgaWYgbm90IHF0X2luaXRbJ3N1Y2Nlc3Mn XToKLSAgICAgICAgICAgIHJhaXNlIEV4ZWN1dGVFcnJvcigiQ291bGQgbm90IGluaXRpYWxpemUg cXVlcnR5IHRvb2wuIikKLQotICAgIGRlZiBjbG9zZV9jb25uZWN0aW9uKHNlbGYpOgotICAgICAg ICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmRlbGV0ZSgKLSAgICAgICAgICAgIHNlbGYudXJsICsg c3RyKHNlbGYudHJhbnNfaWQpLAotICAgICAgICAgICAgY29udGVudF90eXBlPSdodG1sL2pzb24n Ci0gICAgICAgICkKLSAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgcnVuVGVzdChz ZWxmKToKLSAgICAgICAgIiIiIFRoaXMgZnVuY3Rpb24gd2lsbCB1cGRhdGUgcXVlcnkgdG9vbCBj b25uZWN0aW9uLiIiIgotCi0gICAgICAgIGlmIHNlbGYuaXNfcG9zaXRpdmVfdGVzdDoKLSAgICAg ICAgICAgIHJlc3BvbnNlID0gc2VsZi5jbG9zZV9jb25uZWN0aW9uKCkKLSAgICAgICAgICAgIGFj dHVhbF9yZXNwb25zZV9jb2RlID0gcmVzcG9uc2Uuc3RhdHVzX2NvZGUKLSAgICAgICAgICAgIGV4 cGVjdGVkX3Jlc3BvbnNlX2NvZGUgPSBzZWxmLmV4cGVjdGVkX2RhdGFbJ3N0YXR1c19jb2RlJ10K LQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWxfcmVzcG9uc2VfY29kZSwgZXhw ZWN0ZWRfcmVzcG9uc2VfY29kZSkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAg IiIiVGhpcyBmdW5jdGlvbiBkaXNjb25uZWN0IGRhdGFiYXNlLiIiIgotICAgICAgICBkYXRhYmFz ZV91dGlscy5kaXNjb25uZWN0X2RhdGFiYXNlKHNlbGYsIHNlbGYuc2lkLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGlkKQpkaWZmIC0tZ2l0IGEvd2Vi L3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVzdHMvdGVzdF9kYXRhX2dyaWRfdXBkYXRlX2Nvbm5l Y3Rpb24ucHkgYi93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZXN0cy90ZXN0X2RhdGFfZ3Jp ZF91cGRhdGVfY29ubmVjdGlvbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWRk N2ZmZjM4Li4wMDAwMDAwMDAKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVzdHMv dGVzdF9kYXRhX2dyaWRfdXBkYXRlX2Nvbm5lY3Rpb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwx MjEgKzAsMCBAQAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scwotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZl bG9wbWVudCBUZWFtCi0jIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotCi1pbXBvcnQganNvbgotaW1w b3J0IHV1aWQKLWltcG9ydCByYW5kb20KLQotZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRj aAotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50 ZXN0cyBpbXBvcnQgdXRpbHMgYXMgXAotICAgIGRhdGFiYXNlX3V0aWxzCi0KLWZyb20gcGdhZG1p bi51dGlscy5yb3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKLWZyb20gcmVncmVzc2lvbiBp bXBvcnQgcGFyZW50X25vZGVfZGljdAotZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxz IGltcG9ydCB0ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1cCBp bXBvcnQgY29uZmlnX2RhdGEKLWZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2Vy dmVycy5yb2xlcy50ZXN0cyBpbXBvcnQgXAotICAgIHV0aWxzIGFzIHJvbGVzX3V0aWxzCi1mcm9t IC4gaW1wb3J0IHV0aWxzIGFzIGRhdGFfZ3JpZF91dGlscwotZnJvbSBwZ2FkbWluLnV0aWxzLmV4 Y2VwdGlvbiBpbXBvcnQgRXhlY3V0ZUVycm9yCi0KLQotY2xhc3MgRGF0YWdyaWRVcGRhdGVDb25u ZWN0aW9uVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgotICAgICIiIgotICAgIFRoaXMgd2ls bCB1cGRhdGUgcXVlcnktdG9vbCBjb25uZWN0aW9uLgotICAgICIiIgotCi0gICAgc2NlbmFyaW9z ID0gdXRpbHMuZ2VuZXJhdGVfc2NlbmFyaW9zKAotICAgICAgICAnZGF0YV9ncmlkX3VwZGF0ZV9j b25uZWN0aW9uJywKLSAgICAgICAgZGF0YV9ncmlkX3V0aWxzLnRlc3RfY2FzZXMKLSAgICApCi0K LSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZGF0YWJhc2VfaW5mbyA9IHBhcmVu dF9ub2RlX2RpY3RbImRhdGFiYXNlIl1bLTFdCi0gICAgICAgIHNlbGYuZGJfbmFtZSA9IHNlbGYu ZGF0YWJhc2VfaW5mb1siZGJfbmFtZSJdCi0gICAgICAgIHNlbGYuZGlkID0gc2VsZi5kYXRhYmFz ZV9pbmZvWyJkYl9pZCJdCi0gICAgICAgIHNlbGYuc2lkID0gcGFyZW50X25vZGVfZGljdFsic2Vy dmVyIl1bLTFdWyJzZXJ2ZXJfaWQiXQotICAgICAgICBzZWxmLnNnaWQgPSBjb25maWdfZGF0YVsn c2VydmVyX2dyb3VwJ10KLQotICAgICAgICBkYl9jb24gPSBkYXRhYmFzZV91dGlscy5jb25uZWN0 X2RhdGFiYXNlKHNlbGYsIHV0aWxzLlNFUlZFUl9HUk9VUCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNpZCwgc2VsZi5kaWQpCi0KLSAgICAg ICAgc2VsZi50cmFuc19pZCA9IHN0cihyYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKLSAgICAg ICAgc2VsZi5yb2xlcyA9IE5vbmUKLQotICAgICAgICBpZiBzZWxmLmlzX2NyZWF0ZV9yb2xlOgot ICAgICAgICAgICAgZGF0YSA9IHJvbGVzX3V0aWxzLmdldF9yb2xlX2RhdGEoc2VsZi5zZXJ2ZXJb J2RiX3Bhc3N3b3JkJ10pCi0gICAgICAgICAgICBzZWxmLnJvbGVfbmFtZSA9IGRhdGFbJ3JvbG5h bWUnXQotICAgICAgICAgICAgc2VsZi5yb2xlX3Bhc3N3b3JkID0gZGF0YVsncm9scGFzc3dvcmQn XQotICAgICAgICAgICAgcm9sZXNfdXRpbHMuY3JlYXRlX3JvbGVfd2l0aF9wYXNzd29yZCgKLSAg ICAgICAgICAgICAgICBzZWxmLnNlcnZlciwgc2VsZi5yb2xlX25hbWUsIHNlbGYucm9sZV9wYXNz d29yZCkKLQotICAgICAgICBpZiBub3Qgc2VsZi5pc19wb3NpdGl2ZV90ZXN0IG9yIHNlbGYuaXNf Y3JlYXRlX3JvbGU6Ci0gICAgICAgICAgICBxdF9pbml0ID0gZGF0YV9ncmlkX3V0aWxzLl9pbml0 X3F1ZXJ5X3Rvb2woc2VsZiwgc2VsZi50cmFuc19pZCwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNnaWQsIHNlbGYuc2lkLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu ZGlkKQotCi0gICAgICAgICAgICBpZiBub3QgcXRfaW5pdFsnc3VjY2VzcyddOgotICAgICAgICAg ICAgICAgIHJhaXNlIEV4ZWN1dGVFcnJvcigiQ291bGQgbm90IGluaXRpYWxpemUgcXVlcnR5IHRv b2wuIikKLQotICAgICAgICBzZWxmLnRlc3RfZGF0YSA9IHsKLSAgICAgICAgICAgICJkYXRhYmFz ZSI6IHNlbGYuZGlkLAotICAgICAgICAgICAgInNlcnZlciI6IHNlbGYuc2lkLAotICAgICAgICB9 Ci0KLSAgICAgICAgaWYgc2VsZi5zZXJ2ZXJfaW5mb3JtYXRpb25bJ3R5cGUnXSA9PSAncHBhcyc6 Ci0gICAgICAgICAgICBzZWxmLnRlc3RfZGF0YVsncGFzc3dvcmQnXSA9ICdlbnRlcnByaXNlZGIn Ci0gICAgICAgICAgICBzZWxmLnRlc3RfZGF0YVsndXNlciddID0gJ2VudGVycHJpc2VkYicKLSAg ICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYudGVzdF9kYXRhWydwYXNzd29yZCddID0gJ3Bv c3RncmVzJwotICAgICAgICAgICAgc2VsZi50ZXN0X2RhdGFbJ3VzZXInXSA9ICdwb3N0Z3JlcycK LQotICAgICAgICBpZiBub3QgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgotICAgICAgICAg ICAgcmFpc2UgRXhlY3V0ZUVycm9yKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSB0byBh ZGQgYSB0YWJsZS4iKQotCi0gICAgZGVmIHVwZGF0ZV9jb25uZWN0aW9uKHNlbGYsIHVzZXJfZGF0 YT1Ob25lKToKLSAgICAgICAgaWYgdXNlcl9kYXRhOgotICAgICAgICAgICAgcmVzcG9uc2UgPSBz ZWxmLnRlc3Rlci5wb3N0KAotICAgICAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHNlbGYudHJh bnNfaWQpICsgJy8nICsgc3RyKHNlbGYuc2dpZCkgKwotICAgICAgICAgICAgICAgICcvJyArIHN0 cihzZWxmLnNpZCkgKyAnLycgKyBzdHIoc2VsZi5kaWQpLAotICAgICAgICAgICAgICAgIGRhdGE9 anNvbi5kdW1wcyh1c2VyX2RhdGEpLAotICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRt bC9qc29uJwotICAgICAgICAgICAgKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzcG9u c2UgPSBzZWxmLnRlc3Rlci5wb3N0KAotICAgICAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHNl bGYudHJhbnNfaWQpICsgJy8nICsgc3RyKHNlbGYuc2dpZCkgKyAnLycgKwotICAgICAgICAgICAg ICAgIHN0cihzZWxmLnNpZCkgKyAnLycgKyBzdHIoc2VsZi5kaWQpLAotICAgICAgICAgICAgICAg IGRhdGE9anNvbi5kdW1wcyhzZWxmLnRlc3RfZGF0YSksCi0gICAgICAgICAgICAgICAgY29udGVu dF90eXBlPSdodG1sL2pzb24nCi0gICAgICAgICAgICApCi0gICAgICAgIHJldHVybiByZXNwb25z ZQotCi0gICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgICIiIiBUaGlzIGZ1bmN0aW9uIHdp bGwgdXBkYXRlIHF1ZXJ5IHRvb2wgY29ubmVjdGlvbi4iIiIKLQotICAgICAgICBpZiBzZWxmLmlz X3Bvc2l0aXZlX3Rlc3Q6Ci0gICAgICAgICAgICB1c2VyX2RhdGEgPSBkaWN0KCkKLSAgICAgICAg ICAgIGlmIHNlbGYuaXNfY3JlYXRlX3JvbGU6Ci0gICAgICAgICAgICAgICAgdXNlcl9kYXRhWyd1 c2VyJ10gPSBzZWxmLnJvbGVfbmFtZQotICAgICAgICAgICAgICAgIHVzZXJfZGF0YVsncGFzc3dv cmQnXSA9IHNlbGYucm9sZV9wYXNzd29yZAotICAgICAgICAgICAgICAgIHVzZXJfZGF0YVsncm9s ZSddID0gTm9uZQotICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnVwZGF0ZV9jb25uZWN0aW9u KHVzZXJfZGF0YT11c2VyX2RhdGEpCi0gICAgICAgICAgICBhY3R1YWxfcmVzcG9uc2VfY29kZSA9 IHJlc3BvbnNlLnN0YXR1c19jb2RlCi0gICAgICAgICAgICBleHBlY3RlZF9yZXNwb25zZV9jb2Rl ID0gc2VsZi5leHBlY3RlZF9kYXRhWydzdGF0dXNfY29kZSddCi0gICAgICAgIGVsc2U6Ci0gICAg ICAgICAgICByZXNwb25zZSA9IHNlbGYudXBkYXRlX2Nvbm5lY3Rpb24oKQotICAgICAgICAgICAg YWN0dWFsX3Jlc3BvbnNlX2NvZGUgPSByZXNwb25zZS5zdGF0dXNfY29kZQotICAgICAgICAgICAg ZXhwZWN0ZWRfcmVzcG9uc2VfY29kZSA9IHNlbGYuZXhwZWN0ZWRfZGF0YVsnc3RhdHVzX2NvZGUn XQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX3Jlc3BvbnNlX2NvZGUsIGV4cGVj dGVkX3Jlc3BvbnNlX2NvZGUpCi0KLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgICIi IlRoaXMgZnVuY3Rpb24gZGlzY29ubmVjdCBkYXRhYmFzZS4iIiIKLSAgICAgICAgZGF0YWJhc2Vf dXRpbHMuZGlzY29ubmVjdF9kYXRhYmFzZShzZWxmLCBzZWxmLnNpZCwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpZCkKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL2RhdGFncmlkL3Rlc3RzL3Rlc3RfZGF0YV9ncmlkX3ZhbGlkYXRlX2ZpbHRl ci5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3Rlc3RzL3Rlc3RfZGF0YV9ncmlkX3Zh bGlkYXRlX2ZpbHRlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYzMWYwNzE2 Li4wMDAwMDAwMDAKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVzdHMvdGVzdF9k YXRhX2dyaWRfdmFsaWRhdGVfZmlsdGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBA QAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwot IwotIyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBU ZWFtCi0jIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQotIwotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLQotCi1pbXBvcnQganNvbgotaW1wb3J0IHV1aWQK LWltcG9ydCByYW5kb20KLQotZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAotZnJvbSBw Z2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy50ZXN0cyBpbXBv cnQgdXRpbHMgYXMgXAotICAgIGRhdGFiYXNlX3V0aWxzCi0KLWZyb20gcGdhZG1pbi51dGlscy5y b3V0ZSBpbXBvcnQgQmFzZVRlc3RHZW5lcmF0b3IKLWZyb20gcmVncmVzc2lvbiBpbXBvcnQgcGFy ZW50X25vZGVfZGljdAotZnJvbSByZWdyZXNzaW9uLnB5dGhvbl90ZXN0X3V0aWxzIGltcG9ydCB0 ZXN0X3V0aWxzIGFzIHV0aWxzCi1mcm9tIHJlZ3Jlc3Npb24udGVzdF9zZXR1cCBpbXBvcnQgY29u ZmlnX2RhdGEKLWZyb20gcGdhZG1pbi5icm93c2VyLnNlcnZlcl9ncm91cHMuc2VydmVycy5kYXRh YmFzZXMuc2NoZW1hcy50ZXN0cyBpbXBvcnQgXAotICAgIHV0aWxzIGFzIHNjaGVtYV91dGlscwot ZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dyb3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hl bWFzLnRhYmxlcy50ZXN0cyBcCi0gICAgaW1wb3J0IHV0aWxzIGFzIHRhYmxlc191dGlscwotZnJv bSAuIGltcG9ydCB1dGlscyBhcyBkYXRhX2dyaWRfdXRpbHMKLWZyb20gcGdhZG1pbi51dGlscy5l eGNlcHRpb24gaW1wb3J0IEV4ZWN1dGVFcnJvcgotCi0KLWNsYXNzIERhdGFncmlkVmFsaWRhdGVG aWx0ZXJUZXN0Q2FzZShCYXNlVGVzdEdlbmVyYXRvcik6Ci0gICAgIiIiCi0gICAgVGhpcyB3aWxs IHZhbGlkYXRlIGZpbHRlciBjb25uZWN0aW9uLgotICAgICIiIgotCi0gICAgc2NlbmFyaW9zID0g dXRpbHMuZ2VuZXJhdGVfc2NlbmFyaW9zKAotICAgICAgICAnZGF0YV9ncmlkX3ZhbGlkYXRlX2Zp bHRlcicsCi0gICAgICAgIGRhdGFfZ3JpZF91dGlscy50ZXN0X2Nhc2VzCi0gICAgKQotCi0gICAg ZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmRhdGFiYXNlX2luZm8gPSBwYXJlbnRfbm9k ZV9kaWN0WyJkYXRhYmFzZSJdWy0xXQotICAgICAgICBzZWxmLmRiX25hbWUgPSBzZWxmLmRhdGFi YXNlX2luZm9bImRiX25hbWUiXQotICAgICAgICBzZWxmLmRpZCA9IHNlbGYuZGF0YWJhc2VfaW5m b1siZGJfaWQiXQotICAgICAgICBzZWxmLnNpZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJd Wy0xXVsic2VydmVyX2lkIl0KLSAgICAgICAgc2VsZi5zZ2lkID0gY29uZmlnX2RhdGFbJ3NlcnZl cl9ncm91cCddCi0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRh YmFzZShzZWxmLCB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaWQsIHNlbGYuZGlkKQotICAgICAgICBpZiBu b3QgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgotICAgICAgICAgICAgcmFpc2UgRXhlY3V0 ZUVycm9yKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSB0byBhZGQgYSB0YWJsZS4iKQot ICAgICAgICBzZWxmLnNjaGVtYV9pZCA9IHBhcmVudF9ub2RlX2RpY3RbJ3NjaGVtYSddWy0xXVsi c2NoZW1hX2lkIl0KLSAgICAgICAgc2VsZi5zY2hlbWFfbmFtZSA9IHBhcmVudF9ub2RlX2RpY3Rb J3NjaGVtYSddWy0xXVsic2NoZW1hX25hbWUiXQotICAgICAgICBzY2hlbWFfcmVzcG9uc2UgPSBz Y2hlbWFfdXRpbHMudmVyaWZ5X3NjaGVtYXMoc2VsZi5zZXJ2ZXIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRiX25hbWUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNj aGVtYV9uYW1lKQotICAgICAgICBpZiBub3Qgc2NoZW1hX3Jlc3BvbnNlOgotICAgICAgICAgICAg cmFpc2UgRXhlY3V0ZUVycm9yKCJDb3VsZCBub3QgZmluZCB0aGUgc2NoZW1hIHRvIGFkZCBhIHRh YmxlLiIpCi0gICAgICAgIHNlbGYudGFibGVfbmFtZSA9ICJ0YWJsZV9mb3Jfd2l6YXJkJXMiICUg KHN0cih1dWlkLnV1aWQ0KCkpWzE6OF0pCi0gICAgICAgIHNlbGYudGFibGVfaWQgPSB0YWJsZXNf dXRpbHMuY3JlYXRlX3RhYmxlKHNlbGYuc2VydmVyLCBzZWxmLmRiX25hbWUsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2NoZW1hX25hbWUs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu dGFibGVfbmFtZSkKLQotICAgIGRlZiB2YWxpZGF0ZV9maWx0ZXIoc2VsZik6Ci0gICAgICAgIHJl c3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCgKLSAgICAgICAgICAgIHNlbGYudXJsICsgc3RyKHNl bGYuc2lkKSArICcvJyArIHN0cihzZWxmLmRpZCkgKyAnLycgKwotICAgICAgICAgICAgc3RyKHNl bGYudGFibGVfaWQpLAotICAgICAgICAgICAgZGF0YT1qc29uLmR1bXBzKHNlbGYudGVzdF9kYXRh KSwKLSAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJwotICAgICAgICApCi0gICAg ICAgIHJldHVybiByZXNwb25zZQotCi0gICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgICIi IiBUaGlzIGZ1bmN0aW9uIHdpbGwgdXBkYXRlIHF1ZXJ5IHRvb2wgY29ubmVjdGlvbi4iIiIKLQot ICAgICAgICBpZiBzZWxmLmlzX3Bvc2l0aXZlX3Rlc3Q6Ci0gICAgICAgICAgICByZXNwb25zZSA9 IHNlbGYudmFsaWRhdGVfZmlsdGVyKCkKLSAgICAgICAgICAgIGFjdHVhbF9yZXNwb25zZV9jb2Rl ID0gcmVzcG9uc2Uuc3RhdHVzX2NvZGUKLSAgICAgICAgICAgIGV4cGVjdGVkX3Jlc3BvbnNlX2Nv ZGUgPSBzZWxmLmV4cGVjdGVkX2RhdGFbJ3N0YXR1c19jb2RlJ10KLSAgICAgICAgZWxzZToKLSAg ICAgICAgICAgIHdpdGggcGF0Y2goc2VsZi5tb2NrX2RhdGFbImZ1bmN0aW9uX25hbWUiXSwKLSAg ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPWV2YWwoc2VsZi5tb2NrX2RhdGFbInJl dHVybl92YWx1ZSJdKSk6Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnZhbGlkYXRl X2ZpbHRlcigpCi0gICAgICAgICAgICAgICAgYWN0dWFsX3Jlc3BvbnNlX2NvZGUgPSByZXNwb25z ZS5zdGF0dXNfY29kZQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Jlc3BvbnNlX2NvZGUgPSBz ZWxmLmV4cGVjdGVkX2RhdGFbJ3N0YXR1c19jb2RlJ10KLQotICAgICAgICBzZWxmLmFzc2VydEVx dWFsKGFjdHVhbF9yZXNwb25zZV9jb2RlLCBleHBlY3RlZF9yZXNwb25zZV9jb2RlKQotCi0gICAg ZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAiIiJUaGlzIGZ1bmN0aW9uIGRpc2Nvbm5lY3Qg ZGF0YWJhc2UuIiIiCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5lY3RfZGF0YWJhc2Uo c2VsZiwgc2VsZi5zaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2VsZi5kaWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZXN0 cy90ZXN0X2luaXRpYWxpemVfZGF0YV9ncmlkLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdy aWQvdGVzdHMvdGVzdF9pbml0aWFsaXplX2RhdGFfZ3JpZC5weQpkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDhjMjUzYmUxLi4wMDAwMDAwMDAKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMv ZGF0YWdyaWQvdGVzdHMvdGVzdF9pbml0aWFsaXplX2RhdGFfZ3JpZC5weQorKysgL2Rldi9udWxs CkBAIC0xLDEwOSArMCwwIEBACi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIwotIyBwZ0FkbWluIDQgLSBQ b3N0Z3JlU1FMIFRvb2xzCi0jCi0jIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0Fk bWluIERldmVsb3BtZW50IFRlYW0KLSMgVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgUG9zdGdyZVNRTCBMaWNlbmNlCi0jCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0KLWltcG9ydCBq c29uCi1pbXBvcnQgdXVpZAotaW1wb3J0IHJhbmRvbQotCi1mcm9tIHVuaXR0ZXN0Lm1vY2sgaW1w b3J0IHBhdGNoCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZlcnMuZGF0 YWJhc2VzLnRlc3RzIGltcG9ydCB1dGlscyBhcyBcCi0gICAgZGF0YWJhc2VfdXRpbHMKLQotZnJv bSBwZ2FkbWluLnV0aWxzLnJvdXRlIGltcG9ydCBCYXNlVGVzdEdlbmVyYXRvcgotZnJvbSByZWdy ZXNzaW9uIGltcG9ydCBwYXJlbnRfbm9kZV9kaWN0Ci1mcm9tIHJlZ3Jlc3Npb24ucHl0aG9uX3Rl c3RfdXRpbHMgaW1wb3J0IHRlc3RfdXRpbHMgYXMgdXRpbHMKLWZyb20gcmVncmVzc2lvbi50ZXN0 X3NldHVwIGltcG9ydCBjb25maWdfZGF0YQotZnJvbSBwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dy b3Vwcy5zZXJ2ZXJzLmRhdGFiYXNlcy5zY2hlbWFzLnRlc3RzIGltcG9ydCBcCi0gICAgdXRpbHMg YXMgc2NoZW1hX3V0aWxzCi1mcm9tIHBnYWRtaW4uYnJvd3Nlci5zZXJ2ZXJfZ3JvdXBzLnNlcnZl cnMuZGF0YWJhc2VzLnNjaGVtYXMudGFibGVzLnRlc3RzIFwKLSAgICBpbXBvcnQgdXRpbHMgYXMg dGFibGVzX3V0aWxzCi1mcm9tIC4gaW1wb3J0IHV0aWxzIGFzIGRhdGFfZ3JpZF91dGlscwotZnJv bSBwZ2FkbWluLnV0aWxzLmV4Y2VwdGlvbiBpbXBvcnQgRXhlY3V0ZUVycm9yCi0KLQotY2xhc3Mg RGF0YWdyaWRJbml0aWFsaXplVGVzdENhc2UoQmFzZVRlc3RHZW5lcmF0b3IpOgotICAgICIiIgot ICAgIFRoaXMgd2lsbCBJbml0aWFsaXplIGRhdGFncmlkCi0gICAgIiIiCi0KLSAgICBzY2VuYXJp b3MgPSB1dGlscy5nZW5lcmF0ZV9zY2VuYXJpb3MoCi0gICAgICAgICdkYXRhX2dyaWRfaW5pdGlh bGl6ZScsCi0gICAgICAgIGRhdGFfZ3JpZF91dGlscy50ZXN0X2Nhc2VzCi0gICAgKQotCi0gICAg ZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmRhdGFiYXNlX2luZm8gPSBwYXJlbnRfbm9k ZV9kaWN0WyJkYXRhYmFzZSJdWy0xXQotICAgICAgICBzZWxmLmRiX25hbWUgPSBzZWxmLmRhdGFi YXNlX2luZm9bImRiX25hbWUiXQotICAgICAgICBzZWxmLmRpZCA9IHNlbGYuZGF0YWJhc2VfaW5m b1siZGJfaWQiXQotICAgICAgICBzZWxmLnNpZCA9IHBhcmVudF9ub2RlX2RpY3RbInNlcnZlciJd Wy0xXVsic2VydmVyX2lkIl0KLSAgICAgICAgc2VsZi5zZ2lkID0gY29uZmlnX2RhdGFbJ3NlcnZl cl9ncm91cCddCi0KLSAgICAgICAgZGJfY29uID0gZGF0YWJhc2VfdXRpbHMuY29ubmVjdF9kYXRh YmFzZShzZWxmLCB1dGlscy5TRVJWRVJfR1JPVVAsCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zaWQsIHNlbGYuZGlkKQotICAgICAgICBpZiBu b3QgZGJfY29uWydkYXRhJ11bImNvbm5lY3RlZCJdOgotICAgICAgICAgICAgcmFpc2UgRXhlY3V0 ZUVycm9yKCJDb3VsZCBub3QgY29ubmVjdCB0byBkYXRhYmFzZSB0byBhZGQgYSB0YWJsZS4iKQot Ci0gICAgICAgIHNlbGYuc2NoZW1hX2lkID0gcGFyZW50X25vZGVfZGljdFsnc2NoZW1hJ11bLTFd WyJzY2hlbWFfaWQiXQotICAgICAgICBzZWxmLnNjaGVtYV9uYW1lID0gcGFyZW50X25vZGVfZGlj dFsnc2NoZW1hJ11bLTFdWyJzY2hlbWFfbmFtZSJdCi0gICAgICAgIHNjaGVtYV9yZXNwb25zZSA9 IHNjaGVtYV91dGlscy52ZXJpZnlfc2NoZW1hcyhzZWxmLnNlcnZlciwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGJfbmFtZSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu c2NoZW1hX25hbWUpCi0gICAgICAgIGlmIG5vdCBzY2hlbWFfcmVzcG9uc2U6Ci0gICAgICAgICAg ICByYWlzZSBFeGVjdXRlRXJyb3IoIkNvdWxkIG5vdCBmaW5kIHRoZSBzY2hlbWEgdG8gYWRkIGEg dGFibGUuIikKLSAgICAgICAgc2VsZi50YWJsZV9uYW1lID0gInRhYmxlX2Zvcl93aXphcmQlcyIg JSAoc3RyKHV1aWQudXVpZDQoKSlbMTo4XSkKLSAgICAgICAgc2VsZi50YWJsZV9pZCA9IHRhYmxl c191dGlscy5jcmVhdGVfdGFibGUoc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zY2hlbWFfbmFt ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs Zi50YWJsZV9uYW1lKQotICAgICAgICBzZWxmLnRyYW5zX2lkID0gc3RyKHJhbmRvbS5yYW5kaW50 KDEsIDk5OTk5OTkpKQotICAgICAgICBxdF9pbml0ID0gZGF0YV9ncmlkX3V0aWxzLl9pbml0X3F1 ZXJ5X3Rvb2woc2VsZiwgc2VsZi50cmFuc19pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc2dpZCwgc2VsZi5zaWQsCi0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRpZCkKLQotICAg ICAgICBpZiBub3QgcXRfaW5pdFsnc3VjY2VzcyddOgotICAgICAgICAgICAgcmFpc2UgRXhlY3V0 ZUVycm9yKCJDb3VsZCBub3QgaW5pdGlhbGl6ZSBxdWVyeSB0b29sLiIpCi0KLSAgICBkZWYgaW5p dGlhbGl6ZV9kYXRhZ3JpZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi50ZXN0X2RhdGE6Ci0gICAg ICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QoCi0gICAgICAgICAgICAgICAgc2Vs Zi51cmwgKyBzdHIoc2VsZi50cmFuc19pZCkgKyAnLzQvdGFibGUvJyArCi0gICAgICAgICAgICAg ICAgc3RyKHNlbGYuc2dpZCkgKyAnLycgKyBzdHIoc2VsZi5zaWQpICsgJy8nICsKLSAgICAgICAg ICAgICAgICBzdHIoc2VsZi5kaWQpICsgJy8nICsgc3RyKHNlbGYudGFibGVfaWQpLAotICAgICAg ICAgICAgICAgIGRhdGE9anNvbi5kdW1wcyhzZWxmLnRlc3RfZGF0YSksCi0gICAgICAgICAgICAg ICAgY29udGVudF90eXBlPSdodG1sL2pzb24nCi0gICAgICAgICAgICApCi0gICAgICAgIGVsc2U6 Ci0gICAgICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLnBvc3QoCi0gICAgICAgICAgICAg ICAgc2VsZi51cmwgKyBzdHIoc2VsZi50cmFuc19pZCkgKyAnLzQvdGFibGUvJyArCi0gICAgICAg ICAgICAgICAgc3RyKHNlbGYuc2dpZCkgKyAnLycgKyBzdHIoc2VsZi5zaWQpICsgJy8nICsKLSAg ICAgICAgICAgICAgICBzdHIoc2VsZi5kaWQpICsgJy8nICsgc3RyKHNlbGYudGFibGVfaWQpLAot ICAgICAgICAgICAgICAgIGNvbnRlbnRfdHlwZT0naHRtbC9qc29uJwotICAgICAgICAgICAgKQot ICAgICAgICByZXR1cm4gcmVzcG9uc2UKLQotICAgIGRlZiBydW5UZXN0KHNlbGYpOgotICAgICAg ICAiIiIgVGhpcyBmdW5jdGlvbiB3aWxsIHVwZGF0ZSBxdWVyeSB0b29sIGNvbm5lY3Rpb24uIiIi Ci0KLSAgICAgICAgaWYgc2VsZi5pc19wb3NpdGl2ZV90ZXN0OgotICAgICAgICAgICAgcmVzcG9u c2UgPSBzZWxmLmluaXRpYWxpemVfZGF0YWdyaWQoKQotICAgICAgICAgICAgYWN0dWFsX3Jlc3Bv bnNlX2NvZGUgPSByZXNwb25zZS5zdGF0dXNfY29kZQotICAgICAgICAgICAgZXhwZWN0ZWRfcmVz cG9uc2VfY29kZSA9IHNlbGYuZXhwZWN0ZWRfZGF0YVsnc3RhdHVzX2NvZGUnXQotICAgICAgICBl bHNlOgotICAgICAgICAgICAgd2l0aCBwYXRjaChzZWxmLm1vY2tfZGF0YVsiZnVuY3Rpb25fbmFt ZSJdLAotICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWU9ZXZhbChzZWxmLm1vY2tf ZGF0YVsicmV0dXJuX3ZhbHVlIl0pKToKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHNlbGYu aW5pdGlhbGl6ZV9kYXRhZ3JpZCgpCi0gICAgICAgICAgICAgICAgYWN0dWFsX3Jlc3BvbnNlX2Nv ZGUgPSByZXNwb25zZS5zdGF0dXNfY29kZQotICAgICAgICAgICAgICAgIGV4cGVjdGVkX3Jlc3Bv bnNlX2NvZGUgPSBzZWxmLmV4cGVjdGVkX2RhdGFbJ3N0YXR1c19jb2RlJ10KLQotICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKGFjdHVhbF9yZXNwb25zZV9jb2RlLCBleHBlY3RlZF9yZXNwb25zZV9j b2RlKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAiIiJUaGlzIGZ1bmN0aW9u IGRpc2Nvbm5lY3QgZGF0YWJhc2UuIiIiCi0gICAgICAgIGRhdGFiYXNlX3V0aWxzLmRpc2Nvbm5l Y3RfZGF0YWJhc2Uoc2VsZiwgc2VsZi5zaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2VsZi5kaWQpCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9k YXRhZ3JpZC90ZXN0cy91dGlscy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3Rlc3Rz L3V0aWxzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODgzMWFiY2UuLjAwMDAw MDAwMAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZXN0cy91dGlscy5weQorKysg L2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jCi0jIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwg VGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQotIyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2Vk IHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKLSMKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1pbXBv cnQgb3MKLWltcG9ydCBqc29uCi0KLWZpbGVfbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoX19maWxl X18pCi1DVVJSRU5UX1BBVEggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2Zp bGVfXykpCi13aXRoIG9wZW4oQ1VSUkVOVF9QQVRIICsgIi9kYXRhZ3JpZF90ZXN0X2RhdGEuanNv biIpIGFzIGRhdGFfZmlsZToKLSAgICB0ZXN0X2Nhc2VzID0ganNvbi5sb2FkKGRhdGFfZmlsZSkK LQotCi1kZWYgX2luaXRfcXVlcnlfdG9vbChzZWxmLCB0cmFuc19pZCwgc2VydmVyX2dyb3VwLCBz ZXJ2ZXJfaWQsIGRiX2lkKToKLSAgICBRVUVSWV9UT09MX0lOSVRfVVJMID0gJy9kYXRhZ3JpZC9p bml0aWFsaXplL3F1ZXJ5X3Rvb2wnCi0KLSAgICBxdF9pbml0ID0gc2VsZi50ZXN0ZXIucG9zdCgK LSAgICAgICAgJ3swfS97MX0vezJ9L3szfS97NH0nLmZvcm1hdCgKLSAgICAgICAgICAgIFFVRVJZ X1RPT0xfSU5JVF9VUkwsCi0gICAgICAgICAgICB0cmFuc19pZCwKLSAgICAgICAgICAgIHNlcnZl cl9ncm91cCwKLSAgICAgICAgICAgIHNlcnZlcl9pZCwKLSAgICAgICAgICAgIGRiX2lkCi0gICAg ICAgICksCi0gICAgICAgIGZvbGxvd19yZWRpcmVjdHM9VHJ1ZQotICAgICkKLSAgICBhc3NlcnQg cXRfaW5pdC5zdGF0dXNfY29kZSA9PSAyMDAKLSAgICBxdF9pbml0ID0ganNvbi5sb2FkcyhxdF9p bml0LmRhdGEuZGVjb2RlKCd1dGYtOCcpKQotICAgIHJldHVybiBxdF9pbml0CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVidWdnZXIuanMgYi93ZWIv cGdhZG1pbi90b29scy9kZWJ1Z2dlci9zdGF0aWMvanMvZGVidWdnZXIuanMKaW5kZXggNDRjZDUz YzQ3Li4wYWM4MjkzYzMgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0 YXRpYy9qcy9kZWJ1Z2dlci5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9kZWJ1Z2dlci9zdGF0 aWMvanMvZGVidWdnZXIuanMKQEAgLTE0LDggKzE0LDggQEAgZGVmaW5lKFsKICAgJ2FsZXJ0aWZ5 JywgJ3NvdXJjZXMvcGdhZG1pbicsICdwZ2FkbWluLmJyb3dzZXInLAogICAnYmFja2JvbmUnLCAn cGdhZG1pbi5iYWNrZ3JpZCcsICdjb2RlbWlycm9yJywgJ3BnYWRtaW4uYmFja2Zvcm0nLAogICAn cGdhZG1pbi50b29scy5kZWJ1Z2dlci51aScsICdwZ2FkbWluLnRvb2xzLmRlYnVnZ2VyLnV0aWxz JywKLSAgJ3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wnLCAnc291cmNl cy91dGlscycsCi0gICdwZ2FkbWluLmF1dGhlbnRpY2F0ZS5rZXJiZXJvcycsICd0b29scy9kYXRh Z3JpZC9zdGF0aWMvanMvZGF0YWdyaWRfcGFuZWxfdGl0bGUnLAorICAndG9vbHMvc3FsZWRpdG9y L3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wnLCAnc291cmNlcy91dGlscycsCisgICdwZ2FkbWlu LmF1dGhlbnRpY2F0ZS5rZXJiZXJvcycsICd0b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVk aXRvcl90aXRsZScsCiAgICd3Y2RvY2tlcicsICdwZ2FkbWluLmJyb3dzZXIuZnJhbWUnLAogXSwg ZnVuY3Rpb24oCiAgIGdldHRleHQsIHVybF9mb3IsICQsIF8sIEFsZXJ0aWZ5LCBwZ0FkbWluLCBw Z0Jyb3dzZXIsIEJhY2tib25lLCBCYWNrZ3JpZCwKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcl91dGlscy5qcyBiL3dlYi9wZ2FkbWluL3Rv b2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcl91dGlscy5qcwppbmRleCA4MzUyYWU4OTUu LmZiYzJmNGI3YyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZGVidWdnZXIvc3RhdGlj L2pzL2RlYnVnZ2VyX3V0aWxzLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0 YXRpYy9qcy9kZWJ1Z2dlcl91dGlscy5qcwpAQCAtNiw4ICs2LDggQEAKIC8vIFRoaXMgc29mdHdh cmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQogLy8KIC8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCi1pbXBvcnQge2dlbmVyYXRlVGl0bGV9IGZyb20gJy4uLy4uLy4uL2RhdGFncmlk L3N0YXRpYy9qcy9kYXRhZ3JpZF9wYW5lbF90aXRsZSc7Ci1pbXBvcnQge19zZXRfZHluYW1pY190 YWJ9IGZyb20gJy4uLy4uLy4uL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wnOwor aW1wb3J0IHtnZW5lcmF0ZVRpdGxlfSBmcm9tICcuLi8uLi8uLi9zcWxlZGl0b3Ivc3RhdGljL2pz L3NxbGVkaXRvcl90aXRsZSc7CitpbXBvcnQge19zZXRfZHluYW1pY190YWJ9IGZyb20gJy4uLy4u Ly4uL3NxbGVkaXRvci9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sJzsKIAogZnVuY3Rpb24gc2V0 Rm9jdXNUb0RlYnVnZ2VyRWRpdG9yKGVkaXRvciwgY29tbWFuZCkgewogICBjb25zdCBUQUIgPSA5 OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfbW9kdWxl LmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfbW9kdWxlLmpzCmluZGV4 IGI0MTg4ODVlMy4uOWEwZTczMDliIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9lcmQv c3RhdGljL2pzL2VyZF9tb2R1bGUuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRp Yy9qcy9lcmRfbW9kdWxlLmpzCkBAIC03LDcgKzcsNyBAQAogLy8KIC8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKLWltcG9ydCB7 Z2V0UGFuZWxUaXRsZX0gZnJvbSAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2RhdGFncmlkX3Bh bmVsX3RpdGxlJzsKK2ltcG9ydCB7Z2V0UGFuZWxUaXRsZX0gZnJvbSAndG9vbHMvc3FsZWRpdG9y L3N0YXRpYy9qcy9zcWxlZGl0b3JfdGl0bGUnOwogaW1wb3J0IHtnZXRSYW5kb21JbnQsIHJlZ2lz dGVyRGV0YWNoRXZlbnR9IGZyb20gJ3NvdXJjZXMvdXRpbHMnOwogaW1wb3J0IE5vdGlmeSBmcm9t ICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvaGVscGVycy9Ob3RpZmllcic7CiAKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9C b2R5V2lkZ2V0LmpzeCBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMvZXJkX3Rvb2wv dWlfY29tcG9uZW50cy9Cb2R5V2lkZ2V0LmpzeAppbmRleCBhZmQzNjg5YjQuLjhkMjA3MDcwOSAx MDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvZXJkL3N0YXRpYy9qcy9lcmRfdG9vbC91aV9j b21wb25lbnRzL0JvZHlXaWRnZXQuanN4CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0 aWMvanMvZXJkX3Rvb2wvdWlfY29tcG9uZW50cy9Cb2R5V2lkZ2V0LmpzeApAQCAtMjIsNyArMjIs NyBAQCBpbXBvcnQgRmxvYXRpbmdOb3RlIGZyb20gJy4vRmxvYXRpbmdOb3RlJzsKIGltcG9ydCB7 c2V0UGFuZWxUaXRsZX0gZnJvbSAnLi4vLi4vZXJkX21vZHVsZSc7CiBpbXBvcnQgZ2V0dGV4dCBm cm9tICdzb3VyY2VzL2dldHRleHQnOwogaW1wb3J0IHVybF9mb3IgZnJvbSAnc291cmNlcy91cmxf Zm9yJzsKLWltcG9ydCB7c2hvd0VSRFNxbFRvb2x9IGZyb20gJ3Rvb2xzL2RhdGFncmlkL3N0YXRp Yy9qcy9zaG93X3F1ZXJ5X3Rvb2wnOworaW1wb3J0IHtzaG93RVJEU3FsVG9vbH0gZnJvbSAndG9v bHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wnOwogaW1wb3J0ICd3Y2RvY2tl cic7CiBpbXBvcnQgVGhlbWUgZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc3RhdGljL2pzL1RoZW1l JzsKIGltcG9ydCBUYWJsZVNjaGVtYSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9icm93c2VyL3Nl cnZlcl9ncm91cHMvc2VydmVycy9kYXRhYmFzZXMvc2NoZW1hcy90YWJsZXMvc3RhdGljL2pzL3Rh YmxlLnVpJzsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3BzcWwvc3RhdGljL2pzL3Bz cWxfbW9kdWxlLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvcHNxbC9zdGF0aWMvanMvcHNxbF9tb2R1 bGUuanMKaW5kZXggZTMzODAxNTJjLi5mNzBmMTkwMWEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3Rvb2xzL3BzcWwvc3RhdGljL2pzL3BzcWxfbW9kdWxlLmpzCisrKyBiL3dlYi9wZ2FkbWluL3Rv b2xzL3BzcWwvc3RhdGljL2pzL3BzcWxfbW9kdWxlLmpzCkBAIC0xOCw3ICsxOCw3IEBAIGltcG9y dCB7cmV0cmlldmVBbmNlc3Rvck9mVHlwZVNlcnZlcn0gZnJvbSAnc291cmNlcy90cmVlL3RyZWVf dXRpbHMnOwogaW1wb3J0IHBnV2luZG93IGZyb20gJ3NvdXJjZXMvd2luZG93JzsKIGltcG9ydCBO b3RpZnkgZnJvbSAnLi4vLi4vLi4vLi4vc3RhdGljL2pzL2hlbHBlcnMvTm90aWZpZXInOwogCi1p bXBvcnQge2dlbmVyYXRlVGl0bGUsIHJlZnJlc2hfZGJfbm9kZX0gZnJvbSAndG9vbHMvZGF0YWdy aWQvc3RhdGljL2pzL2RhdGFncmlkX3BhbmVsX3RpdGxlJzsKK2ltcG9ydCB7Z2VuZXJhdGVUaXRs ZSwgcmVmcmVzaF9kYl9ub2RlfSBmcm9tICd0b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVk aXRvcl90aXRsZSc7CiAKIAogZXhwb3J0IGZ1bmN0aW9uIHNldFBhbmVsVGl0bGUocHNxbFRvb2xQ YW5lbCwgcGFuZWxUaXRsZSkgewpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1h X2RpZmYvc3RhdGljL2pzL3NjaGVtYV9kaWZmX3VpLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvc2No ZW1hX2RpZmYvc3RhdGljL2pzL3NjaGVtYV9kaWZmX3VpLmpzCmluZGV4IGQ0N2MyNjZhNC4uNzIz NTYwZTJkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zY2hlbWFfZGlmZi9zdGF0aWMv anMvc2NoZW1hX2RpZmZfdWkuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc2NoZW1hX2RpZmYv c3RhdGljL2pzL3NjaGVtYV9kaWZmX3VpLmpzCkBAIC0xNSw4ICsxNSw4IEBAIGltcG9ydCBCYWNr Ym9uZSBmcm9tICdiYWNrYm9uZSc7CiBpbXBvcnQgU2xpY2sgZnJvbSAnc291cmNlcy8uLi9idW5k bGUvc2xpY2tncmlkJzsKIGltcG9ydCBwZ0FkbWluIGZyb20gJ3NvdXJjZXMvcGdhZG1pbic7CiBp bXBvcnQge3NldFBHQ1NSRlRva2VufSBmcm9tICdzb3VyY2VzL2NzcmYnOwotaW1wb3J0IHtnZW5l cmF0ZVNjcmlwdH0gZnJvbSAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL3Nob3dfcXVlcnlfdG9v bCc7Ci1pbXBvcnQgJ3BnYWRtaW4uc3FsZWRpdG9yJzsKK2ltcG9ydCB7Z2VuZXJhdGVTY3JpcHR9 IGZyb20gJ3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sJzsKK2ltcG9y dCAncGdhZG1pbi50b29scy5zcWxlZGl0b3InOwogaW1wb3J0IHBnV2luZG93IGZyb20gJ3NvdXJj ZXMvd2luZG93JzsKIGltcG9ydCBfIGZyb20gJ3VuZGVyc2NvcmUnOwogaW1wb3J0IE5vdGlmeSBm cm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvaGVscGVycy9Ob3RpZmllcic7CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi90b29scy9zZWFyY2hfb2JqZWN0cy9zdGF0aWMvanMvc2VhcmNoX29iamVj dHNfZGlhbG9nLmpzIGIvd2ViL3BnYWRtaW4vdG9vbHMvc2VhcmNoX29iamVjdHMvc3RhdGljL2pz L3NlYXJjaF9vYmplY3RzX2RpYWxvZy5qcwppbmRleCBhZjhkMGNmYjMuLjQ0ZDBlMGMzYyAxMDA2 NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc2VhcmNoX29iamVjdHMvc3RhdGljL2pzL3NlYXJj aF9vYmplY3RzX2RpYWxvZy5qcworKysgYi93ZWIvcGdhZG1pbi90b29scy9zZWFyY2hfb2JqZWN0 cy9zdGF0aWMvanMvc2VhcmNoX29iamVjdHNfZGlhbG9nLmpzCkBAIC05LDcgKzksNyBAQAogCiBp bXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQnOwogaW1wb3J0IHtEaWFsb2d9IGZy b20gJ3NvdXJjZXMvYWxlcnRpZnkvZGlhbG9nJzsKLWltcG9ydCB7Z2V0UGFuZWxUaXRsZX0gZnJv bSAndG9vbHMvZGF0YWdyaWQvc3RhdGljL2pzL2RhdGFncmlkX3BhbmVsX3RpdGxlJzsKK2ltcG9y dCB7Z2V0UGFuZWxUaXRsZX0gZnJvbSAndG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0 b3JfdGl0bGUnOwogaW1wb3J0IHtyZXRyaWV2ZUFuY2VzdG9yT2ZUeXBlRGF0YWJhc2V9IGZyb20g J3NvdXJjZXMvdHJlZS90cmVlX3V0aWxzJzsKIAogZXhwb3J0IGRlZmF1bHQgY2xhc3MgU2VhcmNo T2JqZWN0c0RpYWxvZyBleHRlbmRzIERpYWxvZyB7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3IvX19pbml0X18ucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Iv X19pbml0X18ucHkKaW5kZXggNGNlNTkyYWE4Li41ZjU3NTVmMjEgMTAwNjQ0Ci0tLSBhL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci9fX2luaXRfXy5weQorKysgYi93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvX19pbml0X18ucHkKQEAgLTExLDE2ICsxMSwyMSBAQAogaW1wb3J0IG9zCiBp bXBvcnQgcGlja2xlCiBpbXBvcnQgcmUKK2ltcG9ydCByYW5kb20KIGZyb20gdXJsbGliLnBhcnNl IGltcG9ydCB1bnF1b3RlCitmcm9tIHRocmVhZGluZyBpbXBvcnQgTG9jawogCiBpbXBvcnQgc2lt cGxlanNvbiBhcyBqc29uCi1mcm9tIGNvbmZpZyBpbXBvcnQgUEdfREVGQVVMVF9EUklWRVIsIE9O X0RFTUFORF9SRUNPUkRfQ09VTlQKK2Zyb20gY29uZmlnIGltcG9ydCBQR19ERUZBVUxUX0RSSVZF UiwgT05fREVNQU5EX1JFQ09SRF9DT1VOVCxcCisgICAgQUxMT1dfU0FWRV9QQVNTV09SRAorZnJv bSB3ZXJremV1Zy51c2VyX2FnZW50IGltcG9ydCBVc2VyQWdlbnQKIGZyb20gZmxhc2sgaW1wb3J0 IFJlc3BvbnNlLCB1cmxfZm9yLCByZW5kZXJfdGVtcGxhdGUsIHNlc3Npb24sIGN1cnJlbnRfYXBw Ci1mcm9tIGZsYXNrIGltcG9ydCByZXF1ZXN0LCBqc29uaWZ5Citmcm9tIGZsYXNrIGltcG9ydCBy ZXF1ZXN0CiBmcm9tIGZsYXNrX2JhYmVsIGltcG9ydCBnZXR0ZXh0CiBmcm9tIGZsYXNrX3NlY3Vy aXR5IGltcG9ydCBsb2dpbl9yZXF1aXJlZCwgY3VycmVudF91c2VyCiBmcm9tIHBnYWRtaW4ubWlz Yy5maWxlX21hbmFnZXIgaW1wb3J0IEZpbGVtYW5hZ2VyCi1mcm9tIHBnYWRtaW4udG9vbHMuc3Fs ZWRpdG9yLmNvbW1hbmQgaW1wb3J0IFF1ZXJ5VG9vbENvbW1hbmQKK2Zyb20gcGdhZG1pbi50b29s cy5zcWxlZGl0b3IuY29tbWFuZCBpbXBvcnQgUXVlcnlUb29sQ29tbWFuZCwgT2JqZWN0UmVnaXN0 cnksIFwKKyAgICBTUUxGaWx0ZXIKIGZyb20gcGdhZG1pbi50b29scy5zcWxlZGl0b3IudXRpbHMu Y29uc3RhbnRfZGVmaW5pdGlvbiBpbXBvcnQgQVNZTkNfT0ssIFwKICAgICBBU1lOQ19FWEVDVVRJ T05fQUJPUlRFRCwgXAogICAgIENPTk5FQ1RJT05fU1RBVFVTX01FU1NBR0VfTUFQUElORywgVFhf U1RBVFVTX0lORVJST1IKQEAgLTMzLDcgKzM4LDggQEAgZnJvbSBwZ2FkbWluLnV0aWxzLmFqYXgg aW1wb3J0IG1ha2VfanNvbl9yZXNwb25zZSwgYmFkX3JlcXVlc3QsIFwKICAgICBzdWNjZXNzX3Jl dHVybiwgaW50ZXJuYWxfc2VydmVyX2Vycm9yCiBmcm9tIHBnYWRtaW4udXRpbHMuZHJpdmVyIGlt cG9ydCBnZXRfZHJpdmVyCiBmcm9tIHBnYWRtaW4udXRpbHMuZXhjZXB0aW9uIGltcG9ydCBDb25u ZWN0aW9uTG9zdCwgU1NIVHVubmVsQ29ubmVjdGlvbkxvc3QsIFwKLSAgICBDcnlwdEtleU1pc3Np bmcKKyAgICBDcnlwdEtleU1pc3NpbmcsIE9iamVjdEdvbmUKK2Zyb20gcGdhZG1pbi5icm93c2Vy LnV0aWxzIGltcG9ydCB1bmRlcnNjb3JlX3VuZXNjYXBlCiBmcm9tIHBnYWRtaW4udXRpbHMubWVu dSBpbXBvcnQgTWVudUl0ZW0KIGZyb20gcGdhZG1pbi51dGlscy5zcWxhdXRvY29tcGxldGUuYXV0 b2NvbXBsZXRlIGltcG9ydCBTUUxBdXRvQ29tcGxldGUKIGZyb20gcGdhZG1pbi50b29scy5zcWxl ZGl0b3IudXRpbHMucXVlcnlfdG9vbF9wcmVmZXJlbmNlcyBpbXBvcnQgXApAQCAtNDgsMTEgKzU0 LDEzIEBAIGZyb20gcGdhZG1pbi51dGlscy5jb25zdGFudHMgaW1wb3J0IE1JTUVUWVBFX0FQUF9K UywgXAogICAgIFNFUlZFUl9DT05ORUNUSU9OX0NMT1NFRCwgRVJST1JfTVNHX1RSQU5TX0lEX05P VF9GT1VORCwgRVJST1JfRkVUQ0hJTkdfREFUQQogZnJvbSBwZ2FkbWluLm1vZGVsIGltcG9ydCBT ZXJ2ZXIsIFNlcnZlckdyb3VwCiBmcm9tIHBnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYubm9kZV9y ZWdpc3RyeSBpbXBvcnQgU2NoZW1hRGlmZlJlZ2lzdHJ5Citmcm9tIHBnYWRtaW4uc2V0dGluZ3Mg aW1wb3J0IGdldF9zZXR0aW5nCitmcm9tIHBnYWRtaW4udXRpbHMucHJlZmVyZW5jZXMgaW1wb3J0 IFByZWZlcmVuY2VzCiAKIE1PRFVMRV9OQU1FID0gJ3NxbGVkaXRvcicKIFRSQU5TQUNUSU9OX1NU QVRVU19DSEVDS19GQUlMRUQgPSBnZXR0ZXh0KCJUcmFuc2FjdGlvbiBzdGF0dXMgY2hlY2sgZmFp bGVkLiIpCiBfTk9ERVNfU1FMID0gJ25vZGVzLnNxbCcKLQorc3FsZWRpdG9yX2Nsb3NlX3Nlc3Np b25fbG9jayA9IExvY2soKQogCiBjbGFzcyBTcWxFZGl0b3JNb2R1bGUoUGdBZG1pbk1vZHVsZSk6 CiAgICAgIiIiCkBAIC03MywxMyArODEsNiBAQCBjbGFzcyBTcWxFZGl0b3JNb2R1bGUoUGdBZG1p bk1vZHVsZSk6CiAgICAgICAgICAgICAgICAgICAgICB1cmw9dXJsX2ZvcignaGVscC5zdGF0aWMn LCBmaWxlbmFtZT0naW5kZXguaHRtbCcpKQogICAgICAgICBdfQogCi0gICAgZGVmIGdldF9vd25f amF2YXNjcmlwdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBbewotICAgICAgICAgICAgJ25hbWUn OiAncGdhZG1pbi5zcWxlZGl0b3InLAotICAgICAgICAgICAgJ3BhdGgnOiB1cmxfZm9yKCdzcWxl ZGl0b3IuaW5kZXgnKSArICJzcWxlZGl0b3IiLAotICAgICAgICAgICAgJ3doZW4nOiBOb25lCi0g ICAgICAgIH1dCi0KICAgICBkZWYgZ2V0X3BhbmVscyhzZWxmKToKICAgICAgICAgcmV0dXJuIFtd CiAKQEAgLTg5LDYgKzkwLDE1IEBAIGNsYXNzIFNxbEVkaXRvck1vZHVsZShQZ0FkbWluTW9kdWxl KToKICAgICAgICAgICAgIGxpc3Q6IFVSTCBlbmRwb2ludHMgZm9yIHNxbGVkaXRvciBtb2R1bGUK ICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBbCisgICAgICAgICAgICAnc3FsZWRpdG9yLmlu aXRpYWxpemVfdmlld2RhdGEnLAorICAgICAgICAgICAgJ3NxbGVkaXRvci5pbml0aWFsaXplX3Nx bGVkaXRvcicsCisgICAgICAgICAgICAnc3FsZWRpdG9yLmluaXRpYWxpemVfc3FsZWRpdG9yX3dp dGhfZGlkJywKKyAgICAgICAgICAgICdzcWxlZGl0b3IuZmlsdGVyX3ZhbGlkYXRlJywKKyAgICAg ICAgICAgICdzcWxlZGl0b3IuZmlsdGVyJywKKyAgICAgICAgICAgICdzcWxlZGl0b3IucGFuZWwn LAorICAgICAgICAgICAgJ3NxbGVkaXRvci5jbG9zZScsCisgICAgICAgICAgICAnc3FsZWRpdG9y LnVwZGF0ZV9zcWxlZGl0b3JfY29ubmVjdGlvbicsCisKICAgICAgICAgICAgICdzcWxlZGl0b3Iu dmlld19kYXRhX3N0YXJ0JywKICAgICAgICAgICAgICdzcWxlZGl0b3IucXVlcnlfdG9vbF9zdGFy dCcsCiAgICAgICAgICAgICAnc3FsZWRpdG9yLnBvbGwnLApAQCAtMTE3LDYgKzEyNyw3IEBAIGNs YXNzIFNxbEVkaXRvck1vZHVsZShQZ0FkbWluTW9kdWxlKToKICAgICAgICAgICAgICdzcWxlZGl0 b3IuZ2V0X21hY3JvcycsCiAgICAgICAgICAgICAnc3FsZWRpdG9yLnNldF9tYWNyb3MnLAogICAg ICAgICAgICAgJ3NxbGVkaXRvci5nZXRfbmV3X2Nvbm5lY3Rpb25fZGF0YScsCisgICAgICAgICAg ICAnc3FsZWRpdG9yLmdldF9uZXdfY29ubmVjdGlvbl9zZXJ2ZXJzJywKICAgICAgICAgICAgICdz cWxlZGl0b3IuZ2V0X25ld19jb25uZWN0aW9uX2RhdGFiYXNlJywKICAgICAgICAgICAgICdzcWxl ZGl0b3IuZ2V0X25ld19jb25uZWN0aW9uX3VzZXInLAogICAgICAgICAgICAgJ3NxbGVkaXRvci5f Y2hlY2tfc2VydmVyX2Nvbm5lY3Rpb25fc3RhdHVzJywKQEAgLTEyNSw2ICsxMzYsMjAgQEAgY2xh c3MgU3FsRWRpdG9yTW9kdWxlKFBnQWRtaW5Nb2R1bGUpOgogICAgICAgICAgICAgJ3NxbGVkaXRv ci5jb25uZWN0X3NlcnZlcl93aXRoX3VzZXInLAogICAgICAgICBdCiAKKyAgICBkZWYgb25fbG9n b3V0KHNlbGYsIHVzZXIpOgorICAgICAgICAiIiIKKyAgICAgICAgVGhpcyBpcyBhIGNhbGxiYWNr IGZ1bmN0aW9uIHdoZW4gdXNlciBsb2dvdXQgZnJvbSBwZ0FkbWluCisgICAgICAgIDpwYXJhbSB1 c2VyOgorICAgICAgICA6cmV0dXJuOgorICAgICAgICAiIiIKKyAgICAgICAgd2l0aCBzcWxlZGl0 b3JfY2xvc2Vfc2Vzc2lvbl9sb2NrOgorICAgICAgICAgICAgaWYgJ2dyaWREYXRhJyBpbiBzZXNz aW9uOgorICAgICAgICAgICAgICAgIGZvciB0cmFuc19pZCBpbiBzZXNzaW9uWydncmlkRGF0YSdd OgorICAgICAgICAgICAgICAgICAgICBjbG9zZV9zcWxlZGl0b3Jfc2Vzc2lvbih0cmFuc19pZCkK KworICAgICAgICAgICAgICAgICMgRGVsZXRlIGFsbCBncmlkIGRhdGEgZnJvbSBzZXNzaW9uIHZh cmlhYmxlCisgICAgICAgICAgICAgICAgZGVsIHNlc3Npb25bJ2dyaWREYXRhJ10KKwogICAgIGRl ZiByZWdpc3Rlcl9wcmVmZXJlbmNlcyhzZWxmKToKICAgICAgICAgcmVnaXN0ZXJfcXVlcnlfdG9v bF9wcmVmZXJlbmNlcyhzZWxmKQogCkBAIC0xNDAsNiArMTY1LDQ4MCBAQCBkZWYgaW5kZXgoKToK ICAgICApCiAKIAorQGJsdWVwcmludC5yb3V0ZSgiL2ZpbHRlciIsIGVuZHBvaW50PSdmaWx0ZXIn KQorQGxvZ2luX3JlcXVpcmVkCitkZWYgc2hvd19maWx0ZXIoKToKKyAgICByZXR1cm4gcmVuZGVy X3RlbXBsYXRlKE1PRFVMRV9OQU1FICsgJy9maWx0ZXIuaHRtbCcpCisKKworQGJsdWVwcmludC5y b3V0ZSgKKyAgICAnL2luaXRpYWxpemUvdmlld2RhdGEvPGludDp0cmFuc19pZD4vPGludDpjbWRf dHlwZT4vPG9ial90eXBlPi8nCisgICAgJzxpbnQ6c2dpZD4vPGludDpzaWQ+LzxpbnQ6ZGlkPi88 aW50Om9ial9pZD4nLAorICAgIG1ldGhvZHM9WyJQVVQiLCAiUE9TVCJdLAorICAgIGVuZHBvaW50 PSJpbml0aWFsaXplX3ZpZXdkYXRhIgorKQorQGxvZ2luX3JlcXVpcmVkCitkZWYgaW5pdGlhbGl6 ZV92aWV3ZGF0YSh0cmFuc19pZCwgY21kX3R5cGUsIG9ial90eXBlLCBzZ2lkLCBzaWQsIGRpZCwg b2JqX2lkKToKKyAgICAiIiIKKyAgICBUaGlzIG1ldGhvZCBpcyByZXNwb25zaWJsZSBmb3IgY3Jl YXRpbmcgYW4gYXN5bmNocm9ub3VzIGNvbm5lY3Rpb24uCisgICAgQWZ0ZXIgY3JlYXRpbmcgdGhl IGNvbm5lY3Rpb24gaXQgd2lsbCBpbnN0YW50aWF0ZSBhbmQgaW5pdGlhbGl6ZQorICAgIHRoZSBv YmplY3QgYXMgcGVyIHRoZSBvYmplY3QgdHlwZS4gSXQgd2lsbCBhbHNvIGNyZWF0ZSBhIHVuaXF1 ZQorICAgIHRyYW5zYWN0aW9uIGlkIGFuZCBzdG9yZSB0aGUgaW5mb3JtYXRpb24gaW50byBzZXNz aW9uIHZhcmlhYmxlLgorCisgICAgQXJnczoKKyAgICAgICAgY21kX3R5cGU6IENvbnRhaW5zIHZh bHVlIGZvciB3aGljaCBtZW51IGl0ZW0gaXMgY2xpY2tlZC4KKyAgICAgICAgb2JqX3R5cGU6IENv bnRhaW5zIHR5cGUgb2Ygc2VsZWN0ZWQgb2JqZWN0IGZvciB3aGljaCBkYXRhIGdyaWQgdG8KKyAg ICAgICAgYmUgcmVuZGVyCisgICAgICAgIHNnaWQ6IFNlcnZlciBncm91cCBJZAorICAgICAgICBz aWQ6IFNlcnZlciBJZAorICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisgICAgICAgIG9ial9pZDog SWQgb2YgY3VycmVudGx5IHNlbGVjdGVkIG9iamVjdAorICAgICIiIgorCisgICAgaWYgcmVxdWVz dC5kYXRhOgorICAgICAgICBmaWx0ZXJfc3FsID0ganNvbi5sb2FkcyhyZXF1ZXN0LmRhdGEsIGVu Y29kaW5nPSd1dGYtOCcpCisgICAgZWxzZToKKyAgICAgICAgZmlsdGVyX3NxbCA9IHJlcXVlc3Qu YXJncyBvciByZXF1ZXN0LmZvcm0KKworICAgICMgQ3JlYXRlIGFzeW5jaHJvbm91cyBjb25uZWN0 aW9uIHVzaW5nIHJhbmRvbSBjb25uZWN0aW9uIGlkLgorICAgIGNvbm5faWQgPSBzdHIocmFuZG9t LnJhbmRpbnQoMSwgOTk5OTk5OSkpCisgICAgdHJ5OgorICAgICAgICBtYW5hZ2VyID0gZ2V0X2Ry aXZlcihQR19ERUZBVUxUX0RSSVZFUikuY29ubmVjdGlvbl9tYW5hZ2VyKHNpZCkKKyAgICAgICAg IyBkZWZhdWx0X2Nvbm4gaXMgc2FtZSBjb25uZWN0aW9uIHdoaWNoIGlzIGNyZWF0ZWQgd2hlbiB1 c2VyIGNvbm5lY3QgdG8KKyAgICAgICAgIyBkYXRhYmFzZSBmcm9tIHRyZWUKKyAgICAgICAgZGVm YXVsdF9jb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1kaWQpCisgICAgICAgIGNvbm4gPSBt YW5hZ2VyLmNvbm5lY3Rpb24oZGlkPWRpZCwgY29ubl9pZD1jb25uX2lkLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGF1dG9fcmVjb25uZWN0PUZhbHNlLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVzZV9iaW5hcnlfcGxhY2Vob2xkZXI9VHJ1ZSwKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcnJheV90b19zdHJpbmc9VHJ1ZSkKKyAgICBl eGNlcHQgKENvbm5lY3Rpb25Mb3N0LCBTU0hUdW5uZWxDb25uZWN0aW9uTG9zdCk6CisgICAgICAg IHJhaXNlCisgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICBjdXJyZW50X2FwcC5s b2dnZXIuZXJyb3IoZSkKKyAgICAgICAgcmV0dXJuIGludGVybmFsX3NlcnZlcl9lcnJvcihlcnJv cm1zZz1zdHIoZSkpCisKKyAgICBzdGF0dXMsIG1zZyA9IGRlZmF1bHRfY29ubi5jb25uZWN0KCkK KyAgICBpZiBub3Qgc3RhdHVzOgorICAgICAgICBjdXJyZW50X2FwcC5sb2dnZXIuZXJyb3IobXNn KQorICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihtc2cp KQorCisgICAgc3RhdHVzLCBtc2cgPSBjb25uLmNvbm5lY3QoKQorICAgIGlmIG5vdCBzdGF0dXM6 CisgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcihtc2cpCisgICAgICAgIHJldHVybiBp bnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKG1zZykpCisgICAgdHJ5OgorICAgICAg ICAjIGlmIG9iamVjdCB0eXBlIGlzIHBhcnRpdGlvbiB0aGVuIGl0IGlzIG5vdGhpbmcgYnV0IGEg dGFibGUuCisgICAgICAgIGlmIG9ial90eXBlID09ICdwYXJ0aXRpb24nOgorICAgICAgICAgICAg b2JqX3R5cGUgPSAndGFibGUnCisKKyAgICAgICAgIyBHZXQgdGhlIG9iamVjdCBhcyBwZXIgdGhl IG9iamVjdCB0eXBlCisgICAgICAgIGNvbW1hbmRfb2JqID0gT2JqZWN0UmVnaXN0cnkuZ2V0X29i amVjdCgKKyAgICAgICAgICAgIG9ial90eXBlLCBjb25uX2lkPWNvbm5faWQsIHNnaWQ9c2dpZCwg c2lkPXNpZCwKKyAgICAgICAgICAgIGRpZD1kaWQsIG9ial9pZD1vYmpfaWQsIGNtZF90eXBlPWNt ZF90eXBlLAorICAgICAgICAgICAgc3FsX2ZpbHRlcj1maWx0ZXJfc3FsCisgICAgICAgICkKKyAg ICBleGNlcHQgT2JqZWN0R29uZToKKyAgICAgICAgcmFpc2UKKyAgICBleGNlcHQgRXhjZXB0aW9u IGFzIGU6CisgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcihlKQorICAgICAgICByZXR1 cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSkKKworICAgIGlmICdncmlk RGF0YScgbm90IGluIHNlc3Npb246CisgICAgICAgIHNxbF9ncmlkX2RhdGEgPSBkaWN0KCkKKyAg ICBlbHNlOgorICAgICAgICBzcWxfZ3JpZF9kYXRhID0gc2Vzc2lvblsnZ3JpZERhdGEnXQorCisg ICAgIyBVc2UgcGlja2xlIHRvIHN0b3JlIHRoZSBjb21tYW5kIG9iamVjdCB3aGljaCB3aWxsIGJl IHVzZWQgbGF0ZXIgYnkgdGhlCisgICAgIyBzcWwgZ3JpZCBtb2R1bGUuCisgICAgc3FsX2dyaWRf ZGF0YVtzdHIodHJhbnNfaWQpXSA9IHsKKyAgICAgICAgIyAtMSBzcGVjaWZ5IHRoZSBoaWdoZXN0 IHByb3RvY29sIHZlcnNpb24gYXZhaWxhYmxlCisgICAgICAgICdjb21tYW5kX29iaic6IHBpY2ts ZS5kdW1wcyhjb21tYW5kX29iaiwgLTEpCisgICAgfQorCisgICAgIyBTdG9yZSB0aGUgZ3JpZCBk aWN0aW9uYXJ5IGludG8gdGhlIHNlc3Npb24gdmFyaWFibGUKKyAgICBzZXNzaW9uWydncmlkRGF0 YSddID0gc3FsX2dyaWRfZGF0YQorCisgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKKyAg ICAgICAgZGF0YT17CisgICAgICAgICAgICAnY29ubl9pZCc6IGNvbm5faWQKKyAgICAgICAgfQor ICAgICkKKworCitAYmx1ZXByaW50LnJvdXRlKAorICAgICcvcGFuZWwvPGludDp0cmFuc19pZD4n LAorICAgIG1ldGhvZHM9WyJQT1NUIl0sCisgICAgZW5kcG9pbnQ9J3BhbmVsJworKQorZGVmIHBh bmVsKHRyYW5zX2lkKToKKyAgICAiIiIKKyAgICBUaGlzIG1ldGhvZCBjYWxscyBpbmRleC5odG1s IHRvIHJlbmRlciB0aGUgZGF0YSBncmlkLgorCisgICAgQXJnczoKKyAgICAgICAgdHJhbnNfaWQ6 IHVuaXF1ZSB0cmFuc2FjdGlvbiBpZAorICAgICIiIgorCisgICAgcGFyYW1zID0gTm9uZQorICAg IGlmIHJlcXVlc3QuYXJnczoKKyAgICAgICAgcGFyYW1zID0ge2s6IHYgZm9yIGssIHYgaW4gcmVx dWVzdC5hcmdzLml0ZW1zKCl9CisKKyAgICBjbG9zZV91cmwgPSAnJworICAgIGlmIHJlcXVlc3Qu Zm9ybToKKyAgICAgICAgcGFyYW1zWyd0aXRsZSddID0gdW5kZXJzY29yZV91bmVzY2FwZShyZXF1 ZXN0LmZvcm1bJ3RpdGxlJ10pCisgICAgICAgIGNsb3NlX3VybCA9IHJlcXVlc3QuZm9ybVsnY2xv c2VfdXJsJ10KKyAgICAgICAgaWYgJ3NxbF9maWx0ZXInIGluIHJlcXVlc3QuZm9ybToKKyAgICAg ICAgICAgIHBhcmFtc1snc3FsX2ZpbHRlciddID0gcmVxdWVzdC5mb3JtWydzcWxfZmlsdGVyJ10K KyAgICAgICAgaWYgJ3F1ZXJ5X3VybCcgaW4gcmVxdWVzdC5mb3JtOgorICAgICAgICAgICAgcGFy YW1zWydxdWVyeV91cmwnXSA9IHJlcXVlc3QuZm9ybVsncXVlcnlfdXJsJ10KKworICAgIHBhcmFt c1sndHJhbnNfaWQnXSA9IHRyYW5zX2lkCisKKyAgICAjIFdlIG5lZWQgY2xpZW50IE9TIGluZm9y bWF0aW9uIHRvIHJlbmRlciBjb3JyZWN0IEtleWJvYXJkIHNob3J0Y3V0cworICAgIHBhcmFtc1sn Y2xpZW50X3BsYXRmb3JtJ10gPSBVc2VyQWdlbnQocmVxdWVzdC5oZWFkZXJzLmdldCgnVXNlci1B Z2VudCcpKVwKKyAgICAgICAgLnBsYXRmb3JtCisKKyAgICBwYXJhbXNbJ2lzX2xpbnV4J10gPSBG YWxzZQorICAgIGZyb20gc3lzIGltcG9ydCBwbGF0Zm9ybSBhcyBfcGxhdGZvcm0KKyAgICBpZiAi bGludXgiIGluIF9wbGF0Zm9ybToKKyAgICAgICAgcGFyYW1zWydpc19saW51eCddID0gVHJ1ZQor CisgICAgIyBGZXRjaCB0aGUgc2VydmVyIGRldGFpbHMKKyAgICBwYXJhbXNbJ2JnY29sb3InXSA9 IE5vbmUKKyAgICBwYXJhbXNbJ2ZnY29sb3InXSA9IE5vbmUKKworICAgIHMgPSBTZXJ2ZXIucXVl cnkuZmlsdGVyX2J5KGlkPXBhcmFtc1snc2lkJ10pLmZpcnN0KCkKKyAgICBpZiBzIGFuZCBzLmJn Y29sb3I6CisgICAgICAgICMgSWYgYmFja2dyb3VuZCBpcyBzZXQgdG8gd2hpdGUgbWVhbnMgd2Ug ZG8gbm90IGhhdmUgdG8gY2hhbmdlCisgICAgICAgICMgdGhlIHRpdGxlIGJhY2tncm91bmQgZWxz ZSBjaGFuZ2UgaXQgYXMgcGVyIHVzZXIgc3BlY2lmaWVkCisgICAgICAgICMgYmFja2dyb3VuZAor ICAgICAgICBpZiBzLmJnY29sb3IgIT0gJyNmZmZmZmYnOgorICAgICAgICAgICAgcGFyYW1zWydi Z2NvbG9yJ10gPSBzLmJnY29sb3IKKyAgICAgICAgcGFyYW1zWydmZ2NvbG9yJ10gPSBzLmZnY29s b3Igb3IgJ2JsYWNrJworCisgICAgcGFyYW1zWydzZXJ2ZXJfbmFtZSddID0gcy5uYW1lCisgICAg cGFyYW1zWyd1c2VybmFtZSddID0gcy51c2VybmFtZQorICAgIHBhcmFtc1snbGF5b3V0J10gPSBn ZXRfc2V0dGluZygnU1FMRWRpdG9yL0xheW91dCcpCisgICAgcGFyYW1zWydtYWNyb3MnXSA9IGdl dF91c2VyX21hY3JvcygpCisgICAgcGFyYW1zWydpc19kZXNrdG9wX21vZGUnXSA9IGN1cnJlbnRf YXBwLlBHQURNSU5fUlVOVElNRQorCisgICAgcmV0dXJuIHJlbmRlcl90ZW1wbGF0ZSgKKyAgICAg ICAgInNxbGVkaXRvci9pbmRleC5odG1sIiwKKyAgICAgICAgY2xvc2VfdXJsPWNsb3NlX3VybCwK KyAgICAgICAgcGFyYW1zPWpzb24uZHVtcHMocGFyYW1zKSwKKyAgICAgICAgcmVxdWlyZWpzPVRy dWUsCisgICAgICAgIGJhc2Vqcz1UcnVlLAorICAgICkKKworCitAYmx1ZXByaW50LnJvdXRlKAor ICAgICcvaW5pdGlhbGl6ZS9zcWxlZGl0b3IvPGludDp0cmFuc19pZD4vPGludDpzZ2lkPi88aW50 OnNpZD4vPGludDpkaWQ+JywKKyAgICBtZXRob2RzPVsiUE9TVCJdLCBlbmRwb2ludD0naW5pdGlh bGl6ZV9zcWxlZGl0b3Jfd2l0aF9kaWQnCispCitAYmx1ZXByaW50LnJvdXRlKAorICAgICcvaW5p dGlhbGl6ZS9zcWxlZGl0b3IvPGludDp0cmFuc19pZD4vPGludDpzZ2lkPi88aW50OnNpZD4nLAor ICAgIG1ldGhvZHM9WyJQT1NUIl0sIGVuZHBvaW50PSdpbml0aWFsaXplX3NxbGVkaXRvcicKKykK K0Bsb2dpbl9yZXF1aXJlZAorZGVmIGluaXRpYWxpemVfc3FsZWRpdG9yKHRyYW5zX2lkLCBzZ2lk LCBzaWQsIGRpZD1Ob25lKToKKyAgICAiIiIKKyAgICBUaGlzIG1ldGhvZCBpcyByZXNwb25zaWJs ZSBmb3IgaW5zdGFudGlhdGluZyBhbmQgaW5pdGlhbGl6aW5nCisgICAgdGhlIHF1ZXJ5IHRvb2wg b2JqZWN0LiBJdCB3aWxsIGFsc28gY3JlYXRlIGEgdW5pcXVlCisgICAgdHJhbnNhY3Rpb24gaWQg YW5kIHN0b3JlIHRoZSBpbmZvcm1hdGlvbiBpbnRvIHNlc3Npb24gdmFyaWFibGUuCisKKyAgICBB cmdzOgorICAgICAgICBzZ2lkOiBTZXJ2ZXIgZ3JvdXAgSWQKKyAgICAgICAgc2lkOiBTZXJ2ZXIg SWQKKyAgICAgICAgZGlkOiBEYXRhYmFzZSBJZAorICAgICIiIgorICAgIGNvbm5lY3QgPSBUcnVl CisgICAgIyBSZWFkIHRoZSBkYXRhIGlmIHByZXNlbnQuIFNraXBwaW5nIHJlYWQgbWF5IGNhdXNl IGNvbm5lY3Rpb24KKyAgICAjIHJlc2V0IGVycm9yIGlmIGRhdGEgaXMgc2VudCBmcm9tIHRoZSBj bGllbnQKKyAgICBpZiByZXF1ZXN0LmRhdGE6CisgICAgICAgIF8gPSByZXF1ZXN0LmRhdGEKKwor ICAgIHJlcV9hcmdzID0gcmVxdWVzdC5hcmdzCisgICAgaWYgKCdyZWNyZWF0ZScgaW4gcmVxX2Fy Z3MgYW5kCisgICAgICAgICAgICByZXFfYXJnc1sncmVjcmVhdGUnXSA9PSAnMScpOgorICAgICAg ICBjb25uZWN0ID0gRmFsc2UKKworICAgIGlzX2Vycm9yLCBlcnJtc2csIGNvbm5faWQsIHZlcnNp b24gPSBfaW5pdF9zcWxlZGl0b3IodHJhbnNfaWQsIGNvbm5lY3QsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2dpZCwgc2lkLCBkaWQp CisgICAgaWYgaXNfZXJyb3I6CisgICAgICAgIHJldHVybiBlcnJtc2cKKworICAgIHJldHVybiBt YWtlX2pzb25fcmVzcG9uc2UoCisgICAgICAgIGRhdGE9eworICAgICAgICAgICAgJ2Nvbm5JZCc6 IHN0cihjb25uX2lkKSwKKyAgICAgICAgICAgICdzZXJ2ZXJWZXJzaW9uJzogdmVyc2lvbiwKKyAg ICAgICAgfQorICAgICkKKworCitkZWYgX2Nvbm5lY3QoY29ubiwgKiprd2FyZ3MpOgorICAgICIi IgorICAgIENvbm5lY3QgdGhlIGRhdGFiYXNlLgorICAgIDpwYXJhbSBjb25uOiBDb25uZWN0aW9u IGluc3RhbmNlLgorICAgIDpwYXJhbSBrd2FyZ3M6IHVzZXIsIHJvbGUgYW5kIHBhc3N3b3JkIGRh dGEgZnJvbSB1c2VyLgorICAgIDpyZXR1cm46CisgICAgIiIiCisgICAgdXNlciA9IE5vbmUKKyAg ICByb2xlID0gTm9uZQorICAgIHBhc3N3b3JkID0gTm9uZQorICAgIGlzX2Fza19wYXNzd29yZCA9 IEZhbHNlCisgICAgaWYgJ3VzZXInIGluIGt3YXJncyBhbmQgJ3JvbGUnIGluIGt3YXJnczoKKyAg ICAgICAgdXNlciA9IGt3YXJnc1sndXNlciddCisgICAgICAgIHJvbGUgPSBrd2FyZ3NbJ3JvbGUn XSBpZiBrd2FyZ3NbJ3JvbGUnXSBlbHNlIE5vbmUKKyAgICAgICAgcGFzc3dvcmQgPSBrd2FyZ3Nb J3Bhc3N3b3JkJ10gaWYga3dhcmdzWydwYXNzd29yZCddIGVsc2UgTm9uZQorICAgICAgICBpc19h c2tfcGFzc3dvcmQgPSBUcnVlCisgICAgaWYgdXNlcjoKKyAgICAgICAgc3RhdHVzLCBtc2cgPSBj b25uLmNvbm5lY3QodXNlcj11c2VyLCByb2xlPXJvbGUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHBhc3N3b3JkPXBhc3N3b3JkKQorICAgIGVsc2U6CisgICAgICAgIHN0YXR1 cywgbXNnID0gY29ubi5jb25uZWN0KCkKKworICAgIHJldHVybiBzdGF0dXMsIG1zZywgaXNfYXNr X3Bhc3N3b3JkLCB1c2VyLCByb2xlLCBwYXNzd29yZAorCisKK2RlZiBfaW5pdF9zcWxlZGl0b3Io dHJhbnNfaWQsIGNvbm5lY3QsIHNnaWQsIHNpZCwgZGlkLCAqKmt3YXJncyk6CisgICAgIyBDcmVh dGUgYXN5bmNocm9ub3VzIGNvbm5lY3Rpb24gdXNpbmcgcmFuZG9tIGNvbm5lY3Rpb24gaWQuCisg ICAgY29ubl9pZCA9IHN0cihyYW5kb20ucmFuZGludCgxLCA5OTk5OTk5KSkKKworICAgIG1hbmFn ZXIgPSBnZXRfZHJpdmVyKFBHX0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoc2lk KQorCisgICAgaWYgZGlkIGlzIE5vbmU6CisgICAgICAgIGRpZCA9IG1hbmFnZXIuZGlkCisgICAg dHJ5OgorICAgICAgICBjb21tYW5kX29iaiA9IE9iamVjdFJlZ2lzdHJ5LmdldF9vYmplY3QoCisg ICAgICAgICAgICAncXVlcnlfdG9vbCcsIGNvbm5faWQ9Y29ubl9pZCwgc2dpZD1zZ2lkLCBzaWQ9 c2lkLCBkaWQ9ZGlkCisgICAgICAgICkKKyAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAg ICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcihlKQorICAgICAgICByZXR1cm4gVHJ1ZSwgaW50 ZXJuYWxfc2VydmVyX2Vycm9yKGVycm9ybXNnPXN0cihlKSksICcnLCAnJworCisgICAgdHJ5Ogor ICAgICAgICBjb25uID0gbWFuYWdlci5jb25uZWN0aW9uKGRpZD1kaWQsIGNvbm5faWQ9Y29ubl9p ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvX3JlY29ubmVjdD1GYWxz ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfYmluYXJ5X3BsYWNlaG9s ZGVyPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJyYXlfdG9fc3Ry aW5nPVRydWUpCisKKyAgICAgICAgaWYgY29ubmVjdDoKKyAgICAgICAgICAgIHN0YXR1cywgbXNn LCBpc19hc2tfcGFzc3dvcmQsIHVzZXIsIHJvbGUsIHBhc3N3b3JkID0gX2Nvbm5lY3QoCisgICAg ICAgICAgICAgICAgY29ubiwgKiprd2FyZ3MpCisgICAgICAgICAgICBpZiBub3Qgc3RhdHVzOgor ICAgICAgICAgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJvcihtc2cpCisgICAgICAgICAg ICAgICAgaWYgaXNfYXNrX3Bhc3N3b3JkOgorICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIgPSBT ZXJ2ZXIucXVlcnkuZmlsdGVyX2J5KGlkPXNpZCkuZmlyc3QoKQorICAgICAgICAgICAgICAgICAg ICByZXR1cm4gVHJ1ZSwgbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICAgICAgICAgICAgICAg ICAgc3VjY2Vzcz0wLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPTQyOCwKKyAgICAg ICAgICAgICAgICAgICAgICAgIHJlc3VsdD1yZW5kZXJfdGVtcGxhdGUoCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJ3NlcnZlcnMvcGFzc3dvcmQuaHRtbCcsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2VydmVyX2xhYmVsPXNlcnZlci5uYW1lLAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHVzZXJuYW1lPXVzZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJy bXNnPW1zZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfPWdldHRleHQsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYWxsb3dfc2F2ZV9wYXNzd29yZD1UcnVlIGlmCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQUxMT1dfU0FWRV9QQVNTV09SRCBhbmQKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZXNzaW9uWydhbGxvd19zYXZlX3Bhc3N3b3JkJ10gZWxzZSBGYWxz ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgKSwgJycs ICcnCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRy dWUsIGludGVybmFsX3NlcnZlcl9lcnJvcigKKyAgICAgICAgICAgICAgICAgICAgICAgIGVycm9y bXNnPXN0cihtc2cpKSwgJycsICcnCisgICAgZXhjZXB0IChDb25uZWN0aW9uTG9zdCwgU1NIVHVu bmVsQ29ubmVjdGlvbkxvc3QpIGFzIGU6CisgICAgICAgIGN1cnJlbnRfYXBwLmxvZ2dlci5lcnJv cihlKQorICAgICAgICByYWlzZQorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAg Y3VycmVudF9hcHAubG9nZ2VyLmVycm9yKGUpCisgICAgICAgIHJldHVybiBUcnVlLCBpbnRlcm5h bF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKSwgJycsICcnCisKKyAgICBpZiAnZ3JpZERh dGEnIG5vdCBpbiBzZXNzaW9uOgorICAgICAgICBzcWxfZ3JpZF9kYXRhID0gZGljdCgpCisgICAg ZWxzZToKKyAgICAgICAgc3FsX2dyaWRfZGF0YSA9IHNlc3Npb25bJ2dyaWREYXRhJ10KKworICAg ICMgU2V0IHRoZSB2YWx1ZSBvZiBhdXRvIGNvbW1pdCBhbmQgYXV0byByb2xsYmFjayBzcGVjaWZp ZWQgaW4gUHJlZmVyZW5jZXMKKyAgICBwcmVmID0gUHJlZmVyZW5jZXMubW9kdWxlKCdzcWxlZGl0 b3InKQorICAgIGNvbW1hbmRfb2JqLnNldF9hdXRvX2NvbW1pdChwcmVmLnByZWZlcmVuY2UoJ2F1 dG9fY29tbWl0JykuZ2V0KCkpCisgICAgY29tbWFuZF9vYmouc2V0X2F1dG9fcm9sbGJhY2socHJl Zi5wcmVmZXJlbmNlKCdhdXRvX3JvbGxiYWNrJykuZ2V0KCkpCisKKyAgICAjIFVzZSBwaWNrbGUg dG8gc3RvcmUgdGhlIGNvbW1hbmQgb2JqZWN0IHdoaWNoIHdpbGwgYmUgdXNlZAorICAgICMgbGF0 ZXIgYnkgdGhlIHNxbCBncmlkIG1vZHVsZS4KKyAgICBzcWxfZ3JpZF9kYXRhW3N0cih0cmFuc19p ZCldID0geworICAgICAgICAjIC0xIHNwZWNpZnkgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVyc2lv biBhdmFpbGFibGUKKyAgICAgICAgJ2NvbW1hbmRfb2JqJzogcGlja2xlLmR1bXBzKGNvbW1hbmRf b2JqLCAtMSkKKyAgICB9CisKKyAgICAjIFN0b3JlIHRoZSBncmlkIGRpY3Rpb25hcnkgaW50byB0 aGUgc2Vzc2lvbiB2YXJpYWJsZQorICAgIHNlc3Npb25bJ2dyaWREYXRhJ10gPSBzcWxfZ3JpZF9k YXRhCisKKyAgICByZXR1cm4gRmFsc2UsICcnLCBjb25uX2lkLCBtYW5hZ2VyLnZlcnNpb24KKwor CitAYmx1ZXByaW50LnJvdXRlKAorICAgICcvaW5pdGlhbGl6ZS9zcWxlZGl0b3IvdXBkYXRlX2Nv bm5lY3Rpb24vPGludDp0cmFuc19pZD4vJworICAgICc8aW50OnNnaWQ+LzxpbnQ6c2lkPi88aW50 OmRpZD4nLAorICAgIG1ldGhvZHM9WyJQT1NUIl0sIGVuZHBvaW50PSd1cGRhdGVfc3FsZWRpdG9y X2Nvbm5lY3Rpb24nCispCitkZWYgdXBkYXRlX3NxbGVkaXRvcl9jb25uZWN0aW9uKHRyYW5zX2lk LCBzZ2lkLCBzaWQsIGRpZCk6CisgICAgIyBSZW1vdmUgdHJhbnNhY3Rpb24gSWQuCisgICAgd2l0 aCBzcWxlZGl0b3JfY2xvc2Vfc2Vzc2lvbl9sb2NrOgorICAgICAgICBkYXRhID0ganNvbi5sb2Fk cyhyZXF1ZXN0LmRhdGEsIGVuY29kaW5nPSd1dGYtOCcpCisKKyAgICAgICAgaWYgJ2dyaWREYXRh JyBub3QgaW4gc2Vzc2lvbjoKKyAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo ZGF0YT17J3N0YXR1cyc6IFRydWV9KQorCisgICAgICAgIGdyaWRfZGF0YSA9IHNlc3Npb25bJ2dy aWREYXRhJ10KKworICAgICAgICAjIFJldHVybiBmcm9tIHRoZSBmdW5jdGlvbiBpZiB0cmFuc2Fj dGlvbiBpZCBub3QgZm91bmQKKyAgICAgICAgaWYgc3RyKHRyYW5zX2lkKSBub3QgaW4gZ3JpZF9k YXRhOgorICAgICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZShkYXRhPXsnc3RhdHVz JzogVHJ1ZX0pCisKKyAgICAgICAgY29ubmVjdCA9IFRydWUKKworICAgICAgICByZXFfYXJncyA9 IHJlcXVlc3QuYXJncworICAgICAgICBpZiAoJ3JlY3JlYXRlJyBpbiByZXFfYXJncyBhbmQKKyAg ICAgICAgICAgICAgICByZXFfYXJnc1sncmVjcmVhdGUnXSA9PSAnMScpOgorICAgICAgICAgICAg Y29ubmVjdCA9IEZhbHNlCisKKyAgICAgICAgbmV3X3RyYW5zX2lkID0gc3RyKHJhbmRvbS5yYW5k aW50KDEsIDk5OTk5OTkpKQorICAgICAgICBrd2FyZ3MgPSB7CisgICAgICAgICAgICAndXNlcic6 IGRhdGFbJ3VzZXInXSwKKyAgICAgICAgICAgICdyb2xlJzogZGF0YVsncm9sZSddIGlmICdyb2xl JyBpbiBkYXRhIGVsc2UgTm9uZSwKKyAgICAgICAgICAgICdwYXNzd29yZCc6IGRhdGFbJ3Bhc3N3 b3JkJ10gaWYgJ3Bhc3N3b3JkJyBpbiBkYXRhIGVsc2UgTm9uZQorICAgICAgICB9CisKKyAgICAg ICAgaXNfZXJyb3IsIGVycm1zZywgY29ubl9pZCwgdmVyc2lvbiA9IF9pbml0X3NxbGVkaXRvcigK KyAgICAgICAgICAgIG5ld190cmFuc19pZCwgY29ubmVjdCwgc2dpZCwgc2lkLCBkaWQsICoqa3dh cmdzKQorCisgICAgICAgIGlmIGlzX2Vycm9yOgorICAgICAgICAgICAgcmV0dXJuIGVycm1zZwor ICAgICAgICBlbHNlOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICMgQ2hlY2sg dGhlIHRyYW5zYWN0aW9uIGFuZCBjb25uZWN0aW9uIHN0YXR1cworICAgICAgICAgICAgICAgIHN0 YXR1cywgZXJyb3JfbXNnLCBjb25uLCB0cmFuc19vYmosIHNlc3Npb25fb2JqID0gXAorICAgICAg ICAgICAgICAgICAgICBjaGVja190cmFuc2FjdGlvbl9zdGF0dXModHJhbnNfaWQpCisKKyAgICAg ICAgICAgICAgICBzdGF0dXMsIGVycm9yX21zZywgbmV3X2Nvbm4sIG5ld190cmFuc19vYmosIG5l d19zZXNzaW9uX29iaiA9IFwKKyAgICAgICAgICAgICAgICAgICAgY2hlY2tfdHJhbnNhY3Rpb25f c3RhdHVzKG5ld190cmFuc19pZCkKKworICAgICAgICAgICAgICAgIG5ld19zZXNzaW9uX29ialsn cHJpbWFyeV9rZXlzJ10gPSBzZXNzaW9uX29ialsKKyAgICAgICAgICAgICAgICAgICAgJ3ByaW1h cnlfa2V5cyddIGlmICdwcmltYXJ5X2tleXMnIGluIHNlc3Npb25fb2JqIGVsc2UgTm9uZQorICAg ICAgICAgICAgICAgIG5ld19zZXNzaW9uX29ialsnY29sdW1uc19pbmZvJ10gPSBzZXNzaW9uX29i alsKKyAgICAgICAgICAgICAgICAgICAgJ2NvbHVtbnNfaW5mbyddIGlmICdjb2x1bW5zX2luZm8n IGluIHNlc3Npb25fb2JqIGVsc2UgTm9uZQorICAgICAgICAgICAgICAgIG5ld19zZXNzaW9uX29i alsnY2xpZW50X3ByaW1hcnlfa2V5J10gPSBzZXNzaW9uX29ialsKKyAgICAgICAgICAgICAgICAg ICAgJ2NsaWVudF9wcmltYXJ5X2tleSddIGlmICdjbGllbnRfcHJpbWFyeV9rZXknXAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gc2Vzc2lvbl9vYmogZWxz ZSBOb25lCisKKyAgICAgICAgICAgICAgICBjbG9zZV9zcWxlZGl0b3Jfc2Vzc2lvbih0cmFuc19p ZCkKKyAgICAgICAgICAgICAgICAjIFJlbW92ZSB0aGUgaW5mb3JtYXRpb24gb2YgdW5pcXVlIHRy YW5zYWN0aW9uIGlkIGZyb20gdGhlCisgICAgICAgICAgICAgICAgIyBzZXNzaW9uIHZhcmlhYmxl LgorICAgICAgICAgICAgICAgIGdyaWRfZGF0YS5wb3Aoc3RyKHRyYW5zX2lkKSwgTm9uZSkKKyAg ICAgICAgICAgICAgICBzZXNzaW9uWydncmlkRGF0YSddID0gZ3JpZF9kYXRhCisgICAgICAgICAg ICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgY3VycmVudF9hcHAubG9n Z2VyLmVycm9yKGUpCisKKyAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNlKAorICAgICAgICBk YXRhPXsKKyAgICAgICAgICAgICdjb25uSWQnOiBzdHIoY29ubl9pZCksCisgICAgICAgICAgICAn c2VydmVyVmVyc2lvbic6IHZlcnNpb24sCisgICAgICAgICAgICAndHJhbnNfaWQnOiBuZXdfdHJh bnNfaWQKKyAgICAgICAgfQorICAgICkKKworCitAYmx1ZXByaW50LnJvdXRlKCcvY2xvc2UvPGlu dDp0cmFuc19pZD4nLCBtZXRob2RzPVsiREVMRVRFIl0sIGVuZHBvaW50PSdjbG9zZScpCitkZWYg Y2xvc2UodHJhbnNfaWQpOgorICAgICIiIgorICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gY2xv c2UgdGhlIGFzeW5jaHJvbm91cyBjb25uZWN0aW9uCisgICAgYW5kIHJlbW92ZSB0aGUgaW5mb3Jt YXRpb24gb2YgdW5pcXVlIHRyYW5zYWN0aW9uIGlkIGZyb20KKyAgICB0aGUgc2Vzc2lvbiB2YXJp YWJsZS4KKworICAgIEFyZ3M6CisgICAgICAgIHRyYW5zX2lkOiB1bmlxdWUgdHJhbnNhY3Rpb24g aWQKKyAgICAiIiIKKyAgICB3aXRoIHNxbGVkaXRvcl9jbG9zZV9zZXNzaW9uX2xvY2s6CisgICAg ICAgIGlmICdncmlkRGF0YScgbm90IGluIHNlc3Npb246CisgICAgICAgICAgICByZXR1cm4gbWFr ZV9qc29uX3Jlc3BvbnNlKGRhdGE9eydzdGF0dXMnOiBUcnVlfSkKKworICAgICAgICBncmlkX2Rh dGEgPSBzZXNzaW9uWydncmlkRGF0YSddCisgICAgICAgICMgUmV0dXJuIGZyb20gdGhlIGZ1bmN0 aW9uIGlmIHRyYW5zYWN0aW9uIGlkIG5vdCBmb3VuZAorICAgICAgICBpZiBzdHIodHJhbnNfaWQp IG5vdCBpbiBncmlkX2RhdGE6CisgICAgICAgICAgICByZXR1cm4gbWFrZV9qc29uX3Jlc3BvbnNl KGRhdGE9eydzdGF0dXMnOiBUcnVlfSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBjbG9z ZV9zcWxlZGl0b3Jfc2Vzc2lvbih0cmFuc19pZCkKKyAgICAgICAgICAgICMgUmVtb3ZlIHRoZSBp bmZvcm1hdGlvbiBvZiB1bmlxdWUgdHJhbnNhY3Rpb24gaWQgZnJvbSB0aGUKKyAgICAgICAgICAg ICMgc2Vzc2lvbiB2YXJpYWJsZS4KKyAgICAgICAgICAgIGdyaWRfZGF0YS5wb3Aoc3RyKHRyYW5z X2lkKSwgTm9uZSkKKyAgICAgICAgICAgIHNlc3Npb25bJ2dyaWREYXRhJ10gPSBncmlkX2RhdGEK KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgY3VycmVudF9hcHAu bG9nZ2VyLmVycm9yKGUpCisgICAgICAgICAgICByZXR1cm4gaW50ZXJuYWxfc2VydmVyX2Vycm9y KGVycm9ybXNnPXN0cihlKSkKKworICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2UoZGF0YT17 J3N0YXR1cyc6IFRydWV9KQorCisKK0BibHVlcHJpbnQucm91dGUoCisgICAgJy9maWx0ZXIvdmFs aWRhdGUvPGludDpzaWQ+LzxpbnQ6ZGlkPi88aW50Om9ial9pZD4nLAorICAgIG1ldGhvZHM9WyJQ VVQiLCAiUE9TVCJdLCBlbmRwb2ludD0nZmlsdGVyX3ZhbGlkYXRlJworKQorQGxvZ2luX3JlcXVp cmVkCitkZWYgdmFsaWRhdGVfZmlsdGVyKHNpZCwgZGlkLCBvYmpfaWQpOgorICAgICIiIgorICAg IFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gdmFsaWRhdGUgdGhlIHNxbCBmaWx0ZXIuCisKKyAgICBB cmdzOgorICAgICAgICBzaWQ6IFNlcnZlciBJZAorICAgICAgICBkaWQ6IERhdGFiYXNlIElkCisg ICAgICAgIG9ial9pZDogSWQgb2YgY3VycmVudGx5IHNlbGVjdGVkIG9iamVjdAorICAgICIiIgor ICAgIGlmIHJlcXVlc3QuZGF0YToKKyAgICAgICAgZmlsdGVyX3NxbCA9IGpzb24ubG9hZHMocmVx dWVzdC5kYXRhLCBlbmNvZGluZz0ndXRmLTgnKQorICAgIGVsc2U6CisgICAgICAgIGZpbHRlcl9z cWwgPSByZXF1ZXN0LmFyZ3Mgb3IgcmVxdWVzdC5mb3JtCisKKyAgICB0cnk6CisgICAgICAgICMg Q3JlYXRlIG9iamVjdCBvZiBTUUxGaWx0ZXIgY2xhc3MKKyAgICAgICAgc3FsX2ZpbHRlcl9vYmog PSBTUUxGaWx0ZXIoc2lkPXNpZCwgZGlkPWRpZCwgb2JqX2lkPW9ial9pZCkKKworICAgICAgICAj IENhbGwgdmFsaWRhdGVfZmlsdGVyIG1ldGhvZCB0byB2YWxpZGF0ZSB0aGUgU1FMLgorICAgICAg ICBzdGF0dXMsIHJlcyA9IHNxbF9maWx0ZXJfb2JqLnZhbGlkYXRlX2ZpbHRlcihmaWx0ZXJfc3Fs KQorICAgIGV4Y2VwdCBPYmplY3RHb25lOgorICAgICAgICByYWlzZQorICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToKKyAgICAgICAgY3VycmVudF9hcHAubG9nZ2VyLmVycm9yKGUpCisgICAgICAg IHJldHVybiBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3IoZXJyb3Jtc2c9c3RyKGUpKQorCisgICAgcmV0 dXJuIG1ha2VfanNvbl9yZXNwb25zZShkYXRhPXsnc3RhdHVzJzogc3RhdHVzLCAncmVzdWx0Jzog cmVzfSkKKworCitkZWYgY2xvc2Vfc3FsZWRpdG9yX3Nlc3Npb24odHJhbnNfaWQpOgorICAgICIi IgorICAgIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjYW5jZWwgdGhlIHRyYW5zYWN0aW9uIGFu ZCByZWxlYXNlIHRoZSBjb25uZWN0aW9uLgorCisgICAgOnBhcmFtIHRyYW5zX2lkOiBUcmFuc2Fj dGlvbiBpZAorICAgIDpyZXR1cm46CisgICAgIiIiCisgICAgaWYgJ2dyaWREYXRhJyBpbiBzZXNz aW9uIGFuZCBzdHIodHJhbnNfaWQpIGluIHNlc3Npb25bJ2dyaWREYXRhJ106CisgICAgICAgIGNt ZF9vYmpfc3RyID0gc2Vzc2lvblsnZ3JpZERhdGEnXVtzdHIodHJhbnNfaWQpXVsnY29tbWFuZF9v YmonXQorICAgICAgICAjIFVzZSBwaWNrbGUubG9hZHMgZnVuY3Rpb24gdG8gZ2V0IHRoZSBjb21t YW5kIG9iamVjdAorICAgICAgICBjbWRfb2JqID0gcGlja2xlLmxvYWRzKGNtZF9vYmpfc3RyKQor CisgICAgICAgICMgaWYgY29ubmVjdGlvbiBpZCBpcyBOb25lIHRoZW4gbm8gbmVlZCB0byByZWxl YXNlIHRoZSBjb25uZWN0aW9uCisgICAgICAgIGlmIGNtZF9vYmouY29ubl9pZCBpcyBub3QgTm9u ZToKKyAgICAgICAgICAgIG1hbmFnZXIgPSBnZXRfZHJpdmVyKAorICAgICAgICAgICAgICAgIFBH X0RFRkFVTFRfRFJJVkVSKS5jb25uZWN0aW9uX21hbmFnZXIoY21kX29iai5zaWQpCisgICAgICAg ICAgICBpZiBtYW5hZ2VyIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGNvbm4gPSBtYW5h Z2VyLmNvbm5lY3Rpb24oCisgICAgICAgICAgICAgICAgICAgIGRpZD1jbWRfb2JqLmRpZCwgY29u bl9pZD1jbWRfb2JqLmNvbm5faWQpCisKKyAgICAgICAgICAgICAgICAjIFJlbGVhc2UgdGhlIGNv bm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiBjb25uLmNvbm5lY3RlZCgpOgorICAgICAgICAg ICAgICAgICAgICBjb25uLmNhbmNlbF90cmFuc2FjdGlvbihjbWRfb2JqLmNvbm5faWQsIGNtZF9v YmouZGlkKQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VyLnJlbGVhc2UoZGlkPWNtZF9vYmou ZGlkLCBjb25uX2lkPWNtZF9vYmouY29ubl9pZCkKKworCiBkZWYgY2hlY2tfdHJhbnNhY3Rpb25f c3RhdHVzKHRyYW5zX2lkKToKICAgICAiIiIKICAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8g Y2hlY2sgdGhlIHRyYW5zYWN0aW9uIGlkCkBAIC0yODYsOCArNzg1LDYgQEAgZGVmIHN0YXJ0X3Zp ZXdfZGF0YSh0cmFuc19pZCk6CiAgICAgICAgICAgICAnZmlsdGVyX2FwcGxpZWQnOiBmaWx0ZXJf YXBwbGllZCwKICAgICAgICAgICAgICdsaW1pdCc6IGxpbWl0LCAnY2FuX2VkaXQnOiBjYW5fZWRp dCwKICAgICAgICAgICAgICdjYW5fZmlsdGVyJzogY2FuX2ZpbHRlciwgJ3NxbCc6IHNxbCwKLSAg ICAgICAgICAgICdpbmZvX25vdGlmaWVyX3RpbWVvdXQnOgotICAgICAgICAgICAgICAgIGJsdWVw cmludC5pbmZvX25vdGlmaWVyX3RpbWVvdXQuZ2V0KCkgKiAxMDAwCiAgICAgICAgIH0KICAgICAp CiAKQEAgLTEzNDUsNyArMTg0Miw3IEBAIGRlZiBzdGFydF9xdWVyeV9kb3dubG9hZF90b29sKHRy YW5zX2lkKToKICAgICAgICAgICAgIGVycm9ybXNnPVRSQU5TQUNUSU9OX1NUQVRVU19DSEVDS19G QUlMRUQKICAgICAgICAgKQogCi0gICAgZGF0YSA9IHJlcXVlc3QudmFsdWVzIGlmIHJlcXVlc3Qu dmFsdWVzIGVsc2UgTm9uZQorICAgIGRhdGEgPSByZXF1ZXN0LnZhbHVlcyBpZiByZXF1ZXN0LnZh bHVlcyBlbHNlIHJlcXVlc3QuanNvbgogICAgIGlmIGRhdGEgaXMgTm9uZToKICAgICAgICAgcmV0 dXJuIG1ha2VfanNvbl9yZXNwb25zZSgKICAgICAgICAgICAgIHN0YXR1cz00MTAsCkBAIC0xNTM0 LDggKzIwMzEsMTIgQEAgZGVmIF9jaGVja19zZXJ2ZXJfY29ubmVjdGlvbl9zdGF0dXMoc2dpZCwg c2lkPU5vbmUpOgogICAgICcvbmV3X2Nvbm5lY3Rpb25fZGlhbG9nLzxpbnQ6c2dpZD4vPGludDpz aWQ+JywKICAgICBtZXRob2RzPVsiR0VUIl0sIGVuZHBvaW50PSdnZXRfbmV3X2Nvbm5lY3Rpb25f ZGF0YScKICkKK0BibHVlcHJpbnQucm91dGUoCisgICAgJy9uZXdfY29ubmVjdGlvbl9kaWFsb2cn LAorICAgIG1ldGhvZHM9WyJHRVQiXSwgZW5kcG9pbnQ9J2dldF9uZXdfY29ubmVjdGlvbl9zZXJ2 ZXJzJworKQogQGxvZ2luX3JlcXVpcmVkCi1kZWYgZ2V0X25ld19jb25uZWN0aW9uX2RhdGEoc2dp ZCwgc2lkPU5vbmUpOgorZGVmIGdldF9uZXdfY29ubmVjdGlvbl9kYXRhKHNnaWQ9Tm9uZSwgc2lk PU5vbmUpOgogICAgICIiIgogICAgIFRoaXMgbWV0aG9kIGlzIHVzZWQgdG8gZ2V0IHJlcXVpcmVk IGRhdGEgZm9yIGdldCBuZXcgY29ubmVjdGlvbi4KICAgICA6ZXh0cmFjdF9zcWxfZnJvbV9uZXR3 b3JrX3BhcmFtZXRlcnMsCkBAIC0xODg0LDcgKzIzODUsOCBAQCBkZWYgY2xlYXJfcXVlcnlfaGlz dG9yeSh0cmFuc19pZCk6CiAgICAgc3RhdHVzLCBlcnJvcl9tc2csIGNvbm4sIHRyYW5zX29iaiwg c2Vzc2lvbl9vYiA9IFwKICAgICAgICAgY2hlY2tfdHJhbnNhY3Rpb25fc3RhdHVzKHRyYW5zX2lk KQogCi0gICAgcmV0dXJuIFF1ZXJ5SGlzdG9yeS5jbGVhcihjdXJyZW50X3VzZXIuaWQsIHRyYW5z X29iai5zaWQsIGNvbm4uZGIpCisgICAgZmlsdGVyID0gcmVxdWVzdC5qc29uCisgICAgcmV0dXJu IFF1ZXJ5SGlzdG9yeS5jbGVhcihjdXJyZW50X3VzZXIuaWQsIHRyYW5zX29iai5zaWQsIGNvbm4u ZGIsIGZpbHRlcikKIAogCiBAYmx1ZXByaW50LnJvdXRlKApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRt aW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9jc3Mvc3FsZWRpdG9yLmNzcyBiL3dlYi9wZ2FkbWlu L3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvY3NzL3NxbGVkaXRvci5jc3MKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDBjNTY4ODk3Ni4uMDAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci9zdGF0aWMvY3NzL3NxbGVkaXRvci5jc3MKKysrIC9kZXYvbnVsbApAQCAt MSw0MDEgKzAsMCBAQAotI21haW4tZWRpdG9yX3BhbmVsIHsKLSAgcG9zaXRpb246IGFic29sdXRl OwotICBsZWZ0OiAwOwotICByaWdodDogMDsKLSAgdG9wIDogMDsKLSAgYm90dG9tOiAwOwotfQot Ci0uc3FsLWVkaXRvciB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgbGVmdDogMDsKLSAgcmln aHQ6IDA7Ci0gIHRvcCA6IDA7Ci0gIGJvdHRvbTogMDsKLX0KLQotLmZpbHRlci1jb250YWluZXIg LkNvZGVNaXJyb3Itc2Nyb2xsIHsKLSAgbWluLWhlaWdodDogMTIwcHg7Ci19Ci0KLS5maWx0ZXIt Y29udGFpbmVyIC5zcWwtdGV4dGFyZWF7Ci0gIGJveC1zaGFkb3c6IDAuMXB4IDAuMXB4IDNweCAj MDAwOwotICBtYXJnaW4tYm90dG9tOiA1cHg7Ci19Ci0KLSNmaWx0ZXIgLmJ0bi1ncm91cCB7Ci0g IG1hcmdpbi1yaWdodDogMnB4OwotICBmbG9hdDogcmlnaHQ7Ci19Ci0KLSNmaWx0ZXIgLmJ0bi1n cm91cCA+IGJ1dHRvbiB7Ci0gIHBhZGRpbmc6IDNweDsKLX0KLQotI2ZpbHRlciAuYnRuLWdyb3Vw IC5idG4tcHJpbWFyeSB7Ci0gIG1hcmdpbjogYXV0byAhaW1wb3J0YW50OwotfQotCi0uaGFzLXNl bGVjdC1hbGwgdGFibGUgdGhlYWQgdHIgdGg6bnRoLWNoaWxkKDEpLAotLmhhcy1zZWxlY3QtYWxs IHRhYmxlIHRib2R5IHRyIHRkOm50aC1jaGlsZCgxKSB7Ci0gIHdpZHRoOiAzNXB4ICFpbXBvcnRh bnQ7Ci0gIG1heC13aWR0aDogMzVweCAhaW1wb3J0YW50OwotICBtaW4td2lkdGg6IDM1cHggIWlt cG9ydGFudDsKLX0KLS5zcWwtc3RhdHVzLWNlbGwgewotICBtYXgtd2lkdGg6IDMwcHg7Ci19Ci0K LS5idG4tY2lyY2xlIHsKLSAgd2lkdGg6IDE2cHg7Ci0gIGhlaWdodDogMTZweDsKLSAgdGV4dC1h bGlnbjogY2VudGVyOwotICBwYWRkaW5nOiAwOwotICBmb250LXNpemU6IDEwcHg7Ci0gIGxpbmUt aGVpZ2h0OiAxLjQyODU3MTQyOTsKLSAgYm9yZGVyLXJhZGl1czogMTBweDsKLSAgY3Vyc29yOiBh dXRvOwotfQotCi0udmlzaWJpbGl0eS1oaWRkZW4gewotICB2aXNpYmlsaXR5OiBoaWRkZW47Ci19 Ci0KLS5zcWwtZWRpdG9yLW1hcmsgewotICBib3JkZXItYm90dG9tOiAycHggZG90dGVkIHJlZDsK LX0KLQotLkNvZGVNaXJyb3IgewotICBtaW4taGVpZ2h0OiAxMDAlOwotICBoZWlnaHQ6IDEwMCU7 Ci19Ci0KLSNvdXRwdXQtcGFuZWwgewotICBoZWlnaHQ6IDEwMCUgIWltcG9ydGFudDsKLX0KLQot LnNxbC1lZGl0b3ItZXhwbGFpbiB7Ci0gIGhlaWdodDogMTAwJTsKLSAgd2lkdGg6IDEwMCU7Ci0g IG92ZXJmbG93OiBhdXRvOwotfQotCi0KLS5zcWxlZGl0b3ItaGludCB7Ci0gIHBhZGRpbmctbGVm dDogMjBweDsKLX0KLQotLkNvZGVNaXJyb3ItaGludCAuZmE6OmJlZm9yZSB7Ci0gIHBhZGRpbmct cmlnaHQ6IDdweDsKLX0KLQotaDIgewotICBmb250LXNpemU6IDEwcHQ7Ci0gIGJvcmRlci1ib3R0 b206IDFweCBkb3R0ZWQgZ3JheTsKLX0KLQotdWwgewotICBtYXJnaW4tbGVmdDogMDsKLSAgcGFk ZGluZzogMDsKLSAgY3Vyc29yOiBkZWZhdWx0OwotfQotCi1saSB7Ci0gIHBhZGRpbmc6IDAgMCAw IDBweDsKLSAgbGlzdC1zdHlsZTogbm9uZTsKLSAgbWFyZ2luOiAwOwotfQotCi0jZGF0YWdyaWQg ewotICBiYWNrZ3JvdW5kOiB3aGl0ZTsKLSAgb3V0bGluZTogMDsKLSAgZm9udC1zaXplOiA5cHQ7 Ci19Ci0KLSNkYXRhZ3JpZCAuc2xpY2staGVhZGVyLWNvbHVtbi51aS1zdGF0ZS1kZWZhdWx0IHsK LSAgICBoZWlnaHQ6IDMycHggIWltcG9ydGFudDsKLX0KLQotI2RhdGFncmlkIC5ncmlkLWhlYWRl ciBsYWJlbCB7Ci0gIGRpc3BsYXk6IGlubGluZS1ibG9jazsKLSAgZm9udC13ZWlnaHQ6IGJvbGQ7 Ci0gIG1hcmdpbjogYXV0byBhdXRvIGF1dG8gNnB4OwotfQotCi0uZ3JpZC1oZWFkZXIgLnVpLWlj b24gewotICBtYXJnaW46IDRweCA0cHggYXV0byA2cHg7Ci0gIGJhY2tncm91bmQtY29sb3I6IHRy YW5zcGFyZW50OwotICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50OwotfQotCi0uc2xpY2stcm93 IC5jZWxsLWFjdGlvbnMgewotICB0ZXh0LWFsaWduOiBsZWZ0OwotfQotCi0vKiBTbGljay5FZGl0 b3JzLlRleHQsIFNsaWNrLkVkaXRvcnMuRGF0ZSAqLwotI2RhdGFncmlkIC5zbGljay1oZWFkZXIg PiBpbnB1dC5lZGl0b3ItdGV4dCB7Ci0gIHdpZHRoOiAxMDAlOwotICBoZWlnaHQ6IDEwMCU7Ci0g IGJvcmRlcjogMDsKLSAgbWFyZ2luOiAwOwotICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDsKLSAg b3V0bGluZTogMDsKLSAgcGFkZGluZzogMDsKLX0KLQotLyogU2xpY2suRWRpdG9ycy5DaGVja2Jv eCAqLwotI2RhdGFncmlkIC5zbGljay1oZWFkZXIgPiBpbnB1dC5lZGl0b3ItY2hlY2tib3ggewot ICBtYXJnaW46IDA7Ci0gIGhlaWdodDogMTAwJTsKLSAgcGFkZGluZzogMDsKLSAgYm9yZGVyOiAw OwotfQotCi0uc2xpY2stcm93LnNlbGVjdGVkIC5jZWxsLXNlbGVjdGlvbiB7Ci0gIGJhY2tncm91 bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvKiBzaG93IGRlZmF1bHQgc2VsZWN0ZWQgcm93IGJhY2tn cm91bmQgKi8KLX0KLQotI2RhdGFncmlkIC5zbGljay1oZWFkZXIgLnVpLXN0YXRlLWRlZmF1bHQs Ci0jZGF0YWdyaWQgLnNsaWNrLWhlYWRlciAudWktd2lkZ2V0LWNvbnRlbnQudWktc3RhdGUtZGVm YXVsdCwKLSNkYXRhZ3JpZCAuc2xpY2staGVhZGVyIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0 ZS1kZWZhdWx0IHsKLSAgYmFja2dyb3VuZDogbm9uZTsKLX0KLQotI2RhdGFncmlkIC5zbGljay1o ZWFkZXIgLnNsaWNrLWhlYWRlci1jb2x1bW4gLmNvbHVtbi1uYW1lIHsKLSAgZm9udC13ZWlnaHQ6 IGJvbGQ7Ci0gIGRpc3BsYXk6IGJsb2NrOwotfQotCi0uY29sdW1uLWRlc2NyaXB0aW9uIHsKLSAg ZGlzcGxheTogdGFibGUtY2VsbDsKLX0KLQotLmxvbmdfdGV4dF9lZGl0b3IgewotICBtYXJnaW4t bGVmdDogNXB4OwotICBmb250LXNpemU6IDEycHggIWltcG9ydGFudDsKLSAgcGFkZGluZzogMXB4 IDdweDsKLX0KLQotLyogU2xpY2suRWRpdG9ycy5UZXh0LCBTbGljay5FZGl0b3JzLkRhdGUgKi8K LWlucHV0LmVkaXRvci10ZXh0IHsKLSAgd2lkdGg6IDEwMCU7Ci0gIGhlaWdodDogMTAwJTsKLSAg Ym9yZGVyOiAwOwotICBtYXJnaW46IDA7Ci0gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OwotICBv dXRsaW5lOiAwOwotICBwYWRkaW5nOiAwOwotfQotCi0vKiBTbGljay5FZGl0b3JzLlRleHQsIFNs aWNrLkVkaXRvcnMuRGF0ZSAqLwotdGV4dGFyZWEuZWRpdG9yLXRleHQgewotICB3aWR0aDogMTAw JTsKLSAgaGVpZ2h0OiAxMDAlOwotICBib3JkZXI6IDA7Ci0gIG1hcmdpbjogMDsKLSAgYmFja2dy b3VuZDogdHJhbnNwYXJlbnQ7Ci0gIG91dGxpbmU6IDA7Ci0gIHBhZGRpbmc6IDA7Ci19Ci0KLS8q IFNsaWNrLkVkaXRvcnMuQ2hlY2tib3ggKi8KLWlucHV0LmVkaXRvci1jaGVja2JveCB7Ci0gIG1h cmdpbjogMDsKLSAgaGVpZ2h0OiAxMDAlOwotICBwYWRkaW5nOiAwOwotICBib3JkZXI6IDA7Ci19 Ci0KLS8qIHJlbW92ZSBvdXRsaW5lZCBib3JkZXIgb24gZm9jdXMgKi8KLWlucHV0LmVkaXRvci1j aGVja2JveDpmb2N1cyB7Ci0gIG91dGxpbmU6IG5vbmU7Ci19Ci0KLS5zbGljay1jZWxsIHNwYW5b ZGF0YS1jZWxsLXR5cGU9InJvdy1oZWFkZXItc2VsZWN0b3IiXSB7Ci0gIGRpc3BsYXk6IGJsb2Nr OwotICB0ZXh0LWFsaWduOiBjZW50ZXI7Ci19Ci0KLS8qCi0gIFNsaWNrR3JpZCwgVG8gZml4IHRo ZSBpc3N1ZSBvZiB3aWR0aCBtaXNhbGlnbm1lbnQgYmV0d2VlbiBDb2x1bW4gSGVhZGVyICYKLSAg YWN0dWFsIENvbHVtbiBpbiBNb3ppbGxhIEZpcmVmb3ggYnJvd3NlcgotICBSZWY6IGh0dHBzOi8v Z2l0aHViLmNvbS9tbGVpYm1hbi9TbGlja0dyaWQvaXNzdWVzLzc0MgotKi8KLS5zbGlja2dyaWQs IC5zbGlja2dyaWQgKiwgLnNsaWNrLWhlYWRlci1jb2x1bW4gewotICBib3gtc2l6aW5nOiBjb250 ZW50LWJveDsKLSAgLW1vei1ib3gtc2l6aW5nOiBjb250ZW50LWJveDsKLSAgLXdlYmtpdC1ib3gt c2l6aW5nOiBjb250ZW50LWJveDsKLSAgLW1zLWJveC1zaXppbmc6IGNvbnRlbnQtYm94OwotfQot Ci0uc2VsZWN0LWFsbC1pY29uIHsKLSAgbWFyZ2luLWxlZnQ6IDlweDsKLSAgbWFyZ2luLXJpZ2h0 OiA0cHg7Ci0gIHZlcnRpY2FsLWFsaWduOiBib3R0b207Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsK LSAgYm90dG9tOiA0cHg7Ci0gIHJpZ2h0OiAwOwotfQotCi0vKiBTdHlsZSBmb3IgdGV4dCBlZGl0 b3IgKi8KLS5wZ19idXR0b25zIHsKLSAgdGV4dC1hbGlnbjpyaWdodDsKLX0KLQotI2RhdGFncmlk IC5zbGljay1yb3cgLnNsaWNrLWNlbGwgewotICB3aGl0ZS1zcGFjZTogcHJlOwotfQotCi0uY29u bmVjdGlvbl9zdGF0dXMgewotICBmb250LXNpemU6IDFyZW07Ci0gIHdpZHRoOiA0MHB4OwotfQot Ci0uYWpzLWJvZHkgLndhcm4taGVhZGVyIHsKLSAgZm9udC1zaXplOiAxM3B4OwotICBmb250LXdl aWdodDogYm9sZDsKLSAgbGluZS1oZWlnaHQ6IDNlbTsKLX0KLQotLmFqcy1ib2R5IC53YXJuLWJv ZHkgewotICBmb250LXNpemU6IDEzcHg7Ci19Ci0KLS5hanMtYm9keSAud2Fybi1mb290ZXIgewot ICBmb250LXNpemU6IDEzcHg7Ci0gIGxpbmUtaGVpZ2h0OiAzZW07Ci19Ci0KLS8qIEZvciBGaWx0 ZXIgc3RhdHVzIGJhciAqLwotLmRhdGFfc29ydGluZ19kaWFsb2cgLnBnLXByb3Atc3RhdHVzLWJh ciB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgbGVmdDogMDsKLSAgcmlnaHQ6IDA7Ci0gIGJv dHRvbTogMDsKLSAgei1pbmRleDogNTsKLX0KLQotLmRhdGFfc29ydGluZ19kaWFsb2cgLkNvZGVN aXJyb3ItZ3V0dGVyLXdyYXBwZXIgewotICBsZWZ0OiAtMzBweCAhaW1wb3J0YW50OwotfQotCi0u ZGF0YV9zb3J0aW5nX2RpYWxvZyAuQ29kZU1pcnJvci1ndXR0ZXJzIHsKLSAgbGVmdDogMHB4ICFp bXBvcnRhbnQ7Ci19Ci0KLS5kYXRhX3NvcnRpbmdfZGlhbG9nIC5jdXN0b21faGVpZ2h0X2Nzc19j bGFzcyB7Ci0gIGhlaWdodDogMTAwcHg7Ci19Ci0KLS5kYXRhX3NvcnRpbmdfZGlhbG9nIC5kYXRh X3NvcnRpbmcgewotICBwYWRkaW5nOiAxMHB4IDBweDsKLX0KLQotLmNvbm5lY3Rpb24tc3RhdHVz LWhpZGUgewotICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Ci19Ci0KLS8qIEZvciBnZW9tZXRy eSBkYXRhIHZpZXdlciBwYW5lbCAqLwotLnNxbC1lZGl0b3ItZ2VvbWV0cnktdmlld2VyewotICB3 aWR0aDogMTAwJTsKLSAgaGVpZ2h0OiAxMDAlOwotfQotCi0uZ2VvbWV0cnktdmlld2VyLWNvbnRh aW5lciB7Ci0gIHdpZHRoOiAxMDAlOwotICBoZWlnaHQ6IDEwMCU7Ci0gIGJhY2tncm91bmQ6IHVy bChkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUFnQUFBQUlD QVlBQUFERUQ3NkxBQUFBTkVsRVFWUW9VMk84ZS9mdWYyVmxaVVlHTEFBa0I1YkFwZ2dtQnRlSnJB aVpqV0kwU0FKa0lyS1Z4Q3ZBYXdWZVJ4THlKZ0IrQWpjMWN3dXg5d0FBQUFCSlJVNUVya0pnZ2c9 PSk7Ci0gIC8qIExldCdzIGtlZXAgdGhlIGJhY2tncm91bmQgYXMgZmZmIGlycmVzcGVjdGl2ZSBv ZiB0aGVtZQotICAgKiBtYWtlIGdlb21ldHJ5IHZpZXdlciBsb29rIGNsZWFuCi0gICAqLwotICBi YWNrZ3JvdW5kLWNvbG9yOiAjZmZmOwotIH0KLQotCi0vKiBGb3IgZ2VvbWV0cnkgY29sdW1uIGJ1 dHRvbiAqLwotLmRpdi12aWV3LWdlb21ldHJ5LWNvbHVtbiwgLmVkaXRhYmxlLWNvbHVtbi1oZWFk ZXItaWNvbiB7Ci0gIGZsb2F0OiByaWdodDsKLSAgaGVpZ2h0OiAxMDAlOwotICBkaXNwbGF5OiBm bGV4OwotICBkaXNwbGF5OiAtd2Via2l0LWZsZXg7Ci0gIGFsaWduLWl0ZW1zOiBjZW50ZXI7Ci0g IHBhZGRpbmctcmlnaHQ6IDZweDsKLX0KLQotLyogRm9yIGxlYWZsZXQgcG9wdXAgKi8KLS5sZWFm bGV0LXBvcHVwLWNvbnRlbnQtd3JhcHBlciB7Ci0gIGJvcmRlci1yYWRpdXM6IDJweDsKLX0KLQot LmxlYWZsZXQtcG9wdXAtY29udGVudCB7Ci0gIG1hcmdpbjogNXB4OwotICBwYWRkaW5nOiAxMHB4 IDEwcHggMDsKLSAgb3ZlcmZsb3cteTogc2Nyb2xsOwotICBvdmVyZmxvdy14OiBoaWRkZW47Ci19 Ci0KLS8qIEZvciBnZW9tZXRyeSB2aWV3ZXIgcHJvcGVydHkgdGFibGUgKi8KLS52aWV3LWdlb21l dHJ5LXByb3BlcnR5LXRhYmxlIHsKLSAgdGFibGUtbGF5b3V0OiBmaXhlZDsKLSAgd2hpdGUtc3Bh Y2U6IG5vd3JhcDsKLSAgcGFkZGluZzogMDsKLX0KLQotLnZpZXctZ2VvbWV0cnktcHJvcGVydHkt dGFibGUgdGggewotICBvdmVyZmxvdzogaGlkZGVuOwotICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNp czsKLX0KLQotLnZpZXctZ2VvbWV0cnktcHJvcGVydHktdGFibGUgdGQgewotICBvdmVyZmxvdzog aGlkZGVuOwotICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKLX0KLQotLyogRm9yIGdlb21ldHJ5 IHZpZXdlciBpbmZvIGNvbnRyb2wgKi8KLS5nZW9tZXRyeS12aWV3ZXItaW5mby1jb250cm9sIHsK LSAgcGFkZGluZzogNXB4OwotICBiYWNrZ3JvdW5kOiB3aGl0ZTsKLSAgYm9yZGVyOiAycHggc29s aWQgcmdiYSgwLCAwLCAwLCAwLjIpOwotICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94Owot ICBib3JkZXItcmFkaXVzOiAycHg7Ci19Ci0KLS5nZW9tZXRyeS12aWV3ZXItaW5mby1jb250cm9s IGl7Ci0gIG1hcmdpbjogMCAwIDAgNHB4OwotfQotCi0uaGlkZS12ZXJ0aWNhbC1zY3JvbGxiYXIg ewotICBvdmVyZmxvdy15OiBoaWRkZW47Ci19Ci0KLS8qICBNYWNyb3MgKi8KLQotLm1hY3JvLXRh YiB7Ci0gIHRvcDogMHB4ICFpbXBvcnRhbnQ7Ci19Ci0KLS5tYWNyby10YWIgLnRhYi1wYW5lIHsK LSAgcGFkZGluZzogMHB4ICFpbXBvcnRhbnQ7Ci19Ci0KLS5tYWNyb19kaWFsb2cgLkNvZGVNaXJy b3IgewotICBvdmVyZmxvdy15OiBhdXRvOwotICByZXNpemU6IHZlcnRpY2FsOwotfQotLm1hY3Jv X2RpYWxvZyAuc3FsLWNlbGwgPiBkaXYgewotICBvdmVyZmxvdy15OiBhdXRvOwotICByZXNpemU6 IHZlcnRpY2FsOwotfQotCi0ubWFjcm9fZGlhbG9nIC5Db2RlTWlycm9yLWN1cnNvciB7Ci0gICAg d2lkdGg6IDFweCAhaW1wb3J0YW50OwotICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50OwotfQot Ci0ubWFjcm9fZGlhbG9nICAucGctcHJvcC1zdGF0dXMtYmFyIHsKLSAgei1pbmRleDogMTsKLX0K LQotLm5ldy1jb25uZWN0aW9uLWRpYWxvZy1zdHlsZSB7Ci0gIHdpZHRoOiAxMDAlICFpbXBvcnRh bnQ7Ci19CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2lt Zy9sb2FkaW5nLmdpZiBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvaW1nL2xv YWRpbmcuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MDBmYTA4NjBlMmViOTg4 M2Y4NmMzMGRhNTc5MDA4NDc1ZjU5NmM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFs IDE3MjgKemNtYUxVWWZNdlY4bz0/XzA9LWI2dCgtJUo0IXV5aG1lUnQzLWZ4SEFwcF5vMDBKJjNZ S313K3VpajM8VG8laSZkCnpJMVZjKCNgU3xeM31jS2o0I050Iyk7TnE4KS1jOTNqJldTJHh+XzRJ Rl4pMERGfiZIP2pPJTJhV0l2RjdLRH1SXwp6PG83OypaPmA1KjM8YGt8eWFNM2V5TFNNOW4+VE9u LUBpVz80QnxOTWNEck0tKnBWWWc/JXV0N155dHoye1FUbkwKejtffnV4eTxUcygrbFBqUiZZbkcr bzE0M05eWDh7ZHBGVnJgWS13cH0mej9QdmpnMzckSj9HQXl5TUZ6Oyo9IWJ6CnojZ21oaENyK0hg Pmd3OURXNTxJQjRgYFllMm4yKEpnTkZfczhXPFFqZWZxVDU+KmUkTENyX1J7YU50MDhifmNCQAp6 ZEhuZUMlYTw+PVpRQi0pJDZ2akExdEMwc3tQPiRVWntFSXJkKlEtYERfNT8oZSpPQl50eXtDUnYo S01Eemo1UW4KeiEtbyY9LU1lP34rT181Nzw7Qkl0YH1nblB6SjI/fWl4K3E5K31YWjtgPjlpPj1J N19APmd0LUJubVJmPExaT2g7Cno+OWtze21vOG5KbjMldlk/OCVjU0R3UyZRLW8wJllaRUNlekNY LUUxUHVKSmlYSiUmWi1ufX48NHAmdUdVQX16egp6PmVaYHs5ejhtOT1GSEJXSk5OQ3xjbGh3KCo0 OT5yVmY9bzdaRWRZbXNYVFY8bWBFZl9QZndxam5NcH1XSWU3NDMKelZQUFNQcURHQH1lMCpHXihl UVlAKGF9K2JMZWJwWkpVbCRTWXVCIyNIfighRUtQVTUyLSMtPDw8VCVIfCE3YnM5CnpAYD1HTW84 LVlyQFopR0t4VXA8LXEoMjR9QEF2XlgoZDVKJSshYlpvcSpkPTFOYEt3fEg2cX5yY144MFdvVDRQ awp6VmxfPjFLVSFOLTI2Wk1xbUNEYn1TODFTTFl0QGt+X0cmNHVMeSFYP2lKdihNdGFkOSpQN30+ eDRtKFVxTjlLVXAKejRjUXMhb0YyRDlqdiM5ZXNXdzl7VFJkbFR4KiQpdU1uOz1lU3NxZjlFaWFJ MEZgantJYEE8QVlRT0dIO2wkS2d9CnpsWChwJW5JRkZKP0NvN3omMVFrJHp3fCVDJHF6enZRdE83 YWp4R3JlRU5oemlaUiphb0pxNDduek50b3A1V2VuYAp6JmJUK1o7ZDgyak5AWGg8czMmWHVqU0lr fWdVUmN4WEZWUVJTYSlkd0w3X04rRlBRck4wY3dUWjE7VEw9KnYwRX0Kelhic0V0NEshOSUqNzhn eWpre08hSiY2fnpsKHglISZMRmBNI0BmaD9hMzcjJk54KWpRNjdiVXhLd2ZJKkFpS01pCnpNRlNf dCZsWTUpciR3VGFwP2hGY0JaQGxMNTJiTyp5b35gMXktRDM1Zmd4YygxQkFtfXVyJCtfQFFwLVpN VTZIPQp6bCZQViM1PSY1M1YoO35NWmBoZzhuTWcjfGYxV1p+emF6YT5HTXYhc3dUSzRRUTRWTDN2 bD0lJEc8UnRhUGNyc2UKenpXVDUyZXsteSlvQkUpJDdmRlF5TWJ0fEpxbkp+ZUo8dCZlXyRYWGk2 UDArWiltPyZtM3JRNEk4MGh8PGIhS1I2CnpEUGxsUFNgemU/QClEdzxSdjdJIUM2THc0RmMkcm1B IyVySG1aZE1AOH0+dFFrdTREQFE5QDZ6QSY+YihJITxiTwp6amRAekFlK2ZuQCNMZVI2NW1ybiRe NWVBSmxhe2goUmpsfFVndTlhUV9yeXByN00yIT4+QD91MU0jSkxEbiNfdFUKeiU0SkUtYSRwIU1I RDghUmRKR21iP1VRRlpwZCV6PEspNTNjWjNaR3k5VHx0Z1lKQ0N+XyFzZVM4OG1+dnp8dG4xCnpU ZX42M0pJez1kQnwlLUV7aHlTeXQoWmsoMWNIJk8hcDswdE82U3A8VkE7cVBaZXFsTVhfc3omTVoq N3xTbkR0cgp6c1lFekowfEdhTWRAfUI2cypPUz15PFMzUiVGQWhLIUFZSU5ybEc0ViErcEBvYC0r TEo3ZVRePkZ+Ryp6XiE1Q0MKelBkNWptUV9GUlFRMHZqM3VVQHdpPmFnI2J1MUoqQnxDPWZoMWlX O3ppWGNNZVA0enh7PiU+VD54QH5OWWd+NjRCCnp7SXFOUHxNazxDX29yNyh5ISU2OXoxNDJFbmUo KFhGY0JedTMkSGRiPTIxRlNnSk05Qm51fV4zYWpuJXZkdTJXcAp6PmFpSzd1XipxO0cwO19OUyk/ IyZfK2xLWmx0T21kMSVfMiMwNHF3bTd1emBeRDlQdikpMFYpV0s4Tmk/PldAUFIKem4kX35oWlVl PXctIWBeMkxsRHtTezRTZz1VfXdse2RhckpmdWhqT2wtKkJ8djxVdnU3andXQE8ya0NSVXRXKkpR CnpMZm1HQSNNOF5CMjs3RTJXbDNOUEBVbVJjemc5SmlJRXwzc056Q2VlQSgqQjxIKVdFWTFfTnpI diN4ZCM0RC1pbAp6TVdyfW9gOFNOeFN6XylvaCY2MWZYdGE5cHM2czVFUlB5QEJ5MUgoVEcmdHF1 bVMrYiM5WTZqM0ZCa0RvMDVKYS0KRG0hQmA9CgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9TUUxFZGl0b3JNb2R1bGUuanMgYi93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL1NRTEVkaXRvck1vZHVsZS5qcwpuZXcgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjdhMjUwMWY2MwotLS0gL2Rldi9udWxsCisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvU1FMRWRpdG9yTW9kdWxlLmpzCkBA IC0wLDAgKzEsNDI0IEBACisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRv b2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4gRGV2ZWxv cG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdy ZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCAqIGFzIHNob3dWaWV3RGF0YSBmcm9tICcu L3Nob3dfdmlld19kYXRhJzsKK2ltcG9ydCAqIGFzIHNob3dRdWVyeVRvb2wgZnJvbSAnLi9zaG93 X3F1ZXJ5X3Rvb2wnOworaW1wb3J0ICogYXMgdG9vbEJhciBmcm9tICdwZ2FkbWluLmJyb3dzZXIu dG9vbGJhcic7CitpbXBvcnQgKiBhcyBwYW5lbFRpdGxlRnVuYyBmcm9tICcuL3NxbGVkaXRvcl90 aXRsZSc7CitpbXBvcnQgKiBhcyBjb21tb25VdGlscyBmcm9tICdzb3VyY2VzL3V0aWxzJzsKK2lt cG9ydCAkIGZyb20gJ2pxdWVyeSc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICdzb3VyY2VzL3VybF9m b3InOworaW1wb3J0IF8gZnJvbSAnbG9kYXNoJzsKK2ltcG9ydCBhbGVydGlmeSBmcm9tICdwZ2Fk bWluLmFsZXJ0aWZ5anMnOwordmFyIHdjRG9ja2VyID0gd2luZG93LndjRG9ja2VyOworaW1wb3J0 IHBnV2luZG93IGZyb20gJ3NvdXJjZXMvd2luZG93JzsKK2ltcG9ydCBwZ0FkbWluIGZyb20gJ3Nv dXJjZXMvcGdhZG1pbic7CitpbXBvcnQgcGdCcm93c2VyIGZyb20gJ3BnYWRtaW4uYnJvd3Nlcic7 CitpbXBvcnQgJ3BnYWRtaW4uZmlsZV9tYW5hZ2VyJzsKK2ltcG9ydCAncGdhZG1pbi50b29scy51 c2VyX21hbmFnZW1lbnQnOworaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsK K2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7CitpbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3Qt ZG9tJzsKK2ltcG9ydCBRdWVyeVRvb2xDb21wb25lbnQgZnJvbSAnLi9jb21wb25lbnRzL1F1ZXJ5 VG9vbENvbXBvbmVudCc7CitpbXBvcnQgTW9kYWxQcm92aWRlciBmcm9tICcuLi8uLi8uLi8uLi9z dGF0aWMvanMvaGVscGVycy9Nb2RhbFByb3ZpZGVyJzsKKworCitleHBvcnQgZnVuY3Rpb24gc2V0 UGFuZWxUaXRsZShxdWVyeVRvb2xQYW5lbCwgcGFuZWxUaXRsZSkgeworICBxdWVyeVRvb2xQYW5l bC50aXRsZSgnPHNwYW4gdGl0bGU9IicrcGFuZWxUaXRsZSsnIj4nK3BhbmVsVGl0bGUrJzwvc3Bh bj4nKTsKK30KKworZXhwb3J0IGRlZmF1bHQgY2xhc3MgU1FMRWRpdG9yIHsKKyAgc3RhdGljIGlu c3RhbmNlOworCisgIHN0YXRpYyBnZXRJbnN0YW5jZSguLi5hcmdzKSB7CisgICAgaWYoIVNRTEVk aXRvci5pbnN0YW5jZSkgeworICAgICAgU1FMRWRpdG9yLmluc3RhbmNlID0gbmV3IFNRTEVkaXRv ciguLi5hcmdzKTsKKyAgICB9CisgICAgcmV0dXJuIFNRTEVkaXRvci5pbnN0YW5jZTsKKyAgfQor CisgIFNVUFBPUlRFRF9OT0RFUyA9IFsKKyAgICAndGFibGUnLCAndmlldycsICdtdmlldycsCisg ICAgJ2ZvcmVpZ25fdGFibGUnLCAnY2F0YWxvZ19vYmplY3QnLCAncGFydGl0aW9uJywKKyAgXTsK KworICAvKiBFbmFibGUvZGlzYWJsZSBWaWV3IGRhdGEgbWVudSBpbiB0b29scyBiYXNlZAorICAq IG9uIG5vZGUgc2VsZWN0ZWQuIGlmIHNlbGVjdGVkIG5vZGUgaXMgcHJlc2VudAorICAqIGluIHN1 cHBvcnRlZE5vZGVzLCBtZW51IHdpbGwgYmUgZW5hYmxlZAorICAqIG90aGVyd2lzZSBkaXNhYmxl ZC4KKyAgKi8KKyAgdmlld01lbnVFbmFibGVkKG9iaikgeworICAgIHZhciBpc0VuYWJsZWQgPSAo KCkgPT4geworICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKG9iaikgJiYgIV8uaXNOdWxsKG9iaikp CisgICAgICAgIHJldHVybiAoXy5pbmRleE9mKHRoaXMuU1VQUE9SVEVEX05PREVTLCBvYmouX3R5 cGUpICE9PSAtMSA/IHRydWUgOiBmYWxzZSk7CisgICAgICBlbHNlCisgICAgICAgIHJldHVybiBm YWxzZTsKKyAgICB9KSgpOworCisgICAgdG9vbEJhci5lbmFibGUoZ2V0dGV4dCgnVmlldyBEYXRh JyksIGlzRW5hYmxlZCk7CisgICAgdG9vbEJhci5lbmFibGUoZ2V0dGV4dCgnRmlsdGVyZWQgUm93 cycpLCBpc0VuYWJsZWQpOworICAgIHJldHVybiBpc0VuYWJsZWQ7CisgIH0KKworICAvKiBFbmFi bGUvZGlzYWJsZSBRdWVyeSB0b29sIG1lbnUgaW4gdG9vbHMgYmFzZWQKKyAgKiBvbiBub2RlIHNl bGVjdGVkLiBpZiBzZWxlY3RlZCBub2RlIGlzIHByZXNlbnQKKyAgKiBpbiB1bnN1cHBvcnRlZF9u b2RlcywgbWVudSB3aWxsIGJlIGRpc2FibGVkCisgICogb3RoZXJ3aXNlIGVuYWJsZWQuCisgICov CisgIHF1ZXJ5VG9vbE1lbnVFbmFibGVkKG9iaikgeworICAgIHZhciBpc0VuYWJsZWQgPSAoKCkg PT4geworICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKG9iaikgJiYgIV8uaXNOdWxsKG9iaikpIHsK KyAgICAgICAgaWYgKF8uaW5kZXhPZihwZ0FkbWluLnVuc3VwcG9ydGVkX25vZGVzLCBvYmouX3R5 cGUpID09IC0xKSB7CisgICAgICAgICAgaWYgKG9iai5fdHlwZSA9PSAnZGF0YWJhc2UnICYmIG9i ai5hbGxvd0Nvbm4pIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgIH0gZWxz ZSBpZiAob2JqLl90eXBlICE9ICdkYXRhYmFzZScpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVl OworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg ICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg fQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgfQorICAgIH0p KCk7CisKKyAgICB0b29sQmFyLmVuYWJsZShnZXR0ZXh0KCdRdWVyeSBUb29sJyksIGlzRW5hYmxl ZCk7CisgICAgcmV0dXJuIGlzRW5hYmxlZDsKKyAgfQorCisgIGluaXQoKSB7CisgICAgaWYodGhp cy5pbml0aWFsaXplZCkKKyAgICAgIHJldHVybjsKKyAgICB0aGlzLmluaXRpYWxpemVkID0gdHJ1 ZTsKKworICAgIGxldCBzZWxmID0gdGhpczsKKyAgICAvKiBDYWNoZSBtYXkgdGFrZSB0aW1lIHRv IGxvYWQgZm9yIHRoZSBmaXJzdCB0aW1lCisgICAgICogS2VlcCB0cnlpbmcgdGlsbCBhdmFpbGFi bGUKKyAgICAgKi8KKyAgICBsZXQgY2FjaGVJbnRlcnZhbElkID0gc2V0SW50ZXJ2YWwoZnVuY3Rp b24oKSB7CisgICAgICBpZihwZ0Jyb3dzZXIucHJlZmVyZW5jZV92ZXJzaW9uKCkgPiAwKSB7Cisg ICAgICAgIHNlbGYucHJlZmVyZW5jZXMgPSBwZ0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2VzX2Zvcl9t b2R1bGUoJ3NxbGVkaXRvcicpOworICAgICAgICBjbGVhckludGVydmFsKGNhY2hlSW50ZXJ2YWxJ ZCk7CisgICAgICB9CisgICAgfSwwKTsKKworICAgIHBnQnJvd3Nlci5vblByZWZlcmVuY2VzQ2hh bmdlKCdzcWxlZGl0b3InLCBmdW5jdGlvbigpIHsKKyAgICAgIHNlbGYucHJlZmVyZW5jZXMgPSBw Z0Jyb3dzZXIuZ2V0X3ByZWZlcmVuY2VzX2Zvcl9tb2R1bGUoJ3NxbGVkaXRvcicpOworICAgIH0p OworCisgICAgLy8gRGVmaW5lIHRoZSBub2RlcyBvbiB3aGljaCB0aGUgbWVudXMgdG8gYmUgYXBw ZWFyCisgICAgdmFyIG1lbnVzID0gW3sKKyAgICAgIG5hbWU6ICdxdWVyeV90b29sJywKKyAgICAg IG1vZHVsZTogdGhpcywKKyAgICAgIGFwcGxpZXM6IFsndG9vbHMnXSwKKyAgICAgIGNhbGxiYWNr OiAnc2hvd1F1ZXJ5VG9vbCcsCisgICAgICBlbmFibGU6IHNlbGYucXVlcnlUb29sTWVudUVuYWJs ZWQsCisgICAgICBwcmlvcml0eTogMSwKKyAgICAgIGxhYmVsOiBnZXR0ZXh0KCdRdWVyeSBUb29s JyksCisgICAgICBpY29uOiAncGctZm9udC1pY29uIGljb24tcXVlcnlfdG9vbCcsCisgICAgICBk YXRhOnsKKyAgICAgICAgYXBwbGllczogJ3Rvb2xzJywKKyAgICAgICAgZGF0YV9kaXNhYmxlZDog Z2V0dGV4dCgnUGxlYXNlIHNlbGVjdCBhIGRhdGFiYXNlIGZyb20gdGhlIGJyb3dzZXIgdHJlZSB0 byBhY2Nlc3MgUXVlcnkgVG9vbC4nKSwKKyAgICAgIH0sCisgICAgfV07CisKKyAgICAvLyBDcmVh dGUgY29udGV4dCBtZW51CisgICAgZm9yIChjb25zdCBzdXBwb3J0ZWROb2RlIG9mIHNlbGYuU1VQ UE9SVEVEX05PREVTKSB7CisgICAgICBtZW51cy5wdXNoKHsKKyAgICAgICAgbmFtZTogJ3ZpZXdf YWxsX3Jvd3NfY29udGV4dF8nICsgc3VwcG9ydGVkTm9kZSwKKyAgICAgICAgbm9kZTogc3VwcG9y dGVkTm9kZSwKKyAgICAgICAgbW9kdWxlOiB0aGlzLAorICAgICAgICBkYXRhOiB7CisgICAgICAg ICAgbW51aWQ6IDMsCisgICAgICAgIH0sCisgICAgICAgIGFwcGxpZXM6IFsnY29udGV4dCcsICdv YmplY3QnXSwKKyAgICAgICAgY2FsbGJhY2s6ICdzaG93Vmlld0RhdGEnLAorICAgICAgICBlbmFi bGU6IHNlbGYudmlld01lbnVFbmFibGVkLAorICAgICAgICBjYXRlZ29yeTogJ3ZpZXdfZGF0YScs CisgICAgICAgIHByaW9yaXR5OiAxMDEsCisgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdBbGwgUm93 cycpLAorICAgICAgfSwgeworICAgICAgICBuYW1lOiAndmlld19maXJzdF8xMDBfcm93c19jb250 ZXh0XycgKyBzdXBwb3J0ZWROb2RlLAorICAgICAgICBub2RlOiBzdXBwb3J0ZWROb2RlLAorICAg ICAgICBtb2R1bGU6IHRoaXMsCisgICAgICAgIGRhdGE6IHsKKyAgICAgICAgICBtbnVpZDogMSwK KyAgICAgICAgfSwKKyAgICAgICAgYXBwbGllczogWydjb250ZXh0JywgJ29iamVjdCddLAorICAg ICAgICBjYWxsYmFjazogJ3Nob3dWaWV3RGF0YScsCisgICAgICAgIGVuYWJsZTogc2VsZi52aWV3 TWVudUVuYWJsZWQsCisgICAgICAgIGNhdGVnb3J5OiAndmlld19kYXRhJywKKyAgICAgICAgcHJp b3JpdHk6IDEwMiwKKyAgICAgICAgbGFiZWw6IGdldHRleHQoJ0ZpcnN0IDEwMCBSb3dzJyksCisg ICAgICB9LCB7CisgICAgICAgIG5hbWU6ICd2aWV3X2xhc3RfMTAwX3Jvd3NfY29udGV4dF8nICsg c3VwcG9ydGVkTm9kZSwKKyAgICAgICAgbm9kZTogc3VwcG9ydGVkTm9kZSwKKyAgICAgICAgbW9k dWxlOiB0aGlzLAorICAgICAgICBkYXRhOiB7CisgICAgICAgICAgbW51aWQ6IDIsCisgICAgICAg IH0sCisgICAgICAgIGFwcGxpZXM6IFsnY29udGV4dCcsICdvYmplY3QnXSwKKyAgICAgICAgY2Fs bGJhY2s6ICdzaG93Vmlld0RhdGEnLAorICAgICAgICBlbmFibGU6IHNlbGYudmlld01lbnVFbmFi bGVkLAorICAgICAgICBjYXRlZ29yeTogJ3ZpZXdfZGF0YScsCisgICAgICAgIHByaW9yaXR5OiAx MDMsCisgICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdMYXN0IDEwMCBSb3dzJyksCisgICAgICB9LCB7 CisgICAgICAgIG5hbWU6ICd2aWV3X2ZpbHRlcmVkX3Jvd3NfY29udGV4dF8nICsgc3VwcG9ydGVk Tm9kZSwKKyAgICAgICAgbm9kZTogc3VwcG9ydGVkTm9kZSwKKyAgICAgICAgbW9kdWxlOiB0aGlz LAorICAgICAgICBkYXRhOiB7CisgICAgICAgICAgbW51aWQ6IDQsCisgICAgICAgIH0sCisgICAg ICAgIGFwcGxpZXM6IFsnY29udGV4dCcsICdvYmplY3QnXSwKKyAgICAgICAgY2FsbGJhY2s6ICdz aG93RmlsdGVyZWRSb3cnLAorICAgICAgICBlbmFibGU6IHNlbGYudmlld01lbnVFbmFibGVkLAor ICAgICAgICBjYXRlZ29yeTogJ3ZpZXdfZGF0YScsCisgICAgICAgIHByaW9yaXR5OiAxMDQsCisg ICAgICAgIGxhYmVsOiBnZXR0ZXh0KCdGaWx0ZXJlZCBSb3dzLi4uJyksCisgICAgICB9KTsKKyAg ICB9CisKKyAgICBwZ0Jyb3dzZXIuYWRkX21lbnVfY2F0ZWdvcnkoJ3ZpZXdfZGF0YScsIGdldHRl eHQoJ1ZpZXcvRWRpdCBEYXRhJyksIDEwMCwgJycpOworICAgIHBnQnJvd3Nlci5hZGRfbWVudXMo bWVudXMpOworCisgICAgLy8gQ3JlYXRpbmcgYSBuZXcgcGdBZG1pbi5Ccm93c2VyIGZyYW1lIHRv IHNob3cgdGhlIGRhdGEuCisgICAgdmFyIGZyYW1lID0gbmV3IHBnQWRtaW4uQnJvd3Nlci5GcmFt ZSh7CisgICAgICBuYW1lOiAnZnJtX3NxbGVkaXRvcicsCisgICAgICBzaG93VGl0bGU6IHRydWUs CisgICAgICBpc0Nsb3NlYWJsZTogdHJ1ZSwKKyAgICAgIGlzUmVuYW1hYmxlOiB0cnVlLAorICAg ICAgaXNQcml2YXRlOiB0cnVlLAorICAgICAgdXJsOiAnYWJvdXQ6YmxhbmsnLAorICAgIH0pOwor CisgICAgLy8gTG9hZCB0aGUgbmV3bHkgY3JlYXRlZCBmcmFtZQorICAgIGZyYW1lLmxvYWQocGdC cm93c2VyLmRvY2tlcik7CisgIH0KKworICAvLyBUaGlzIGlzIGEgY2FsbGJhY2sgZnVuY3Rpb24g dG8gc2hvdyBkYXRhIHdoZW4gdXNlciBjbGljayBvbiBtZW51IGl0ZW0uCisgIHNob3dWaWV3RGF0 YShkYXRhLCBpKSB7CisgICAgY29uc3QgdHJhbnNJZCA9IGNvbW1vblV0aWxzLmdldFJhbmRvbUlu dCgxLCA5OTk5OTk5KTsKKyAgICBzaG93Vmlld0RhdGEuc2hvd1ZpZXdEYXRhKHRoaXMsIHBnQnJv d3NlciwgYWxlcnRpZnksIGRhdGEsIGksIHRyYW5zSWQpOworICB9CisKKyAgLy8gVGhpcyBpcyBh IGNhbGxiYWNrIGZ1bmN0aW9uIHRvIHNob3cgZmlsdGVyZWQgZGF0YSB3aGVuIHVzZXIgY2xpY2sg b24gbWVudSBpdGVtLgorICBzaG93RmlsdGVyZWRSb3coZGF0YSwgaSkgeworICAgIGNvbnN0IHRy YW5zSWQgPSBjb21tb25VdGlscy5nZXRSYW5kb21JbnQoMSwgOTk5OTk5OSk7CisgICAgc2hvd1Zp ZXdEYXRhLnNob3dWaWV3RGF0YSh0aGlzLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCBkYXRhLCBpLCB0 cmFuc0lkLCB0cnVlLCB0aGlzLnByZWZlcmVuY2VzKTsKKyAgfQorCisgIC8vIFRoaXMgaXMgYSBj YWxsYmFjayBmdW5jdGlvbiB0byBzaG93IHF1ZXJ5IHRvb2wgd2hlbiB1c2VyIGNsaWNrIG9uIG1l bnUgaXRlbS4KKyAgc2hvd1F1ZXJ5VG9vbCh1cmwsIHRyZWVJZGVudGlmaWVyKSB7CisgICAgY29u c3QgdHJhbnNJZCA9IGNvbW1vblV0aWxzLmdldFJhbmRvbUludCgxLCA5OTk5OTk5KTsKKyAgICB2 YXIgdCA9IHBnQnJvd3Nlci50cmVlLAorICAgICAgaSA9IHRyZWVJZGVudGlmaWVyIHx8IHQuc2Vs ZWN0ZWQoKSwKKyAgICAgIGQgPSBpID8gdC5pdGVtRGF0YShpKSA6IHVuZGVmaW5lZDsKKworICAg IC8vT3BlbiBxdWVyeSB0b29sIHdpdGggY3JlYXRlIHNjcmlwdCBpZiBjb3B5X3NxbF90b19xdWVy eV90b29sIGlzIHRydWUgZWxzZSBvcGVuIGJsYW5rIHF1ZXJ5IHRvb2wKKyAgICB2YXIgcHJlZmVy ZW5jZSA9IHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZSgnc3FsZWRpdG9yJywgJ2NvcHlfc3FsX3Rv X3F1ZXJ5X3Rvb2wnKTsKKyAgICBpZihwcmVmZXJlbmNlLnZhbHVlICYmICFkLl90eXBlLmluY2x1 ZGVzKCdjb2xsLScpICYmICh1cmwgPT09ICcnIHx8IHVybFsnYXBwbGllcyddID09PSAndG9vbHMn KSl7CisgICAgICB2YXIgc3R5cGUgPSBkLl90eXBlLnRvTG93ZXJDYXNlKCk7CisgICAgICB2YXIg ZGF0YSA9IHsKKyAgICAgICAgJ3NjcmlwdCc6IHN0eXBlLAorICAgICAgICBkYXRhX2Rpc2FibGVk OiBnZXR0ZXh0KCdUaGUgc2VsZWN0ZWQgdHJlZSBub2RlIGRvZXMgbm90IHN1cHBvcnQgdGhpcyBv cHRpb24uJyksCisgICAgICB9OworICAgICAgcGdCcm93c2VyLk5vZGUuY2FsbGJhY2tzLnNob3df c2NyaXB0KGRhdGEpOworICAgIH0gZWxzZSB7CisgICAgICBpZihkLl90eXBlLmluY2x1ZGVzKCdj b2xsLScpKXsKKyAgICAgICAgdXJsID0gJyc7CisgICAgICB9CisgICAgICBzaG93UXVlcnlUb29s LnNob3dRdWVyeVRvb2wodGhpcywgcGdCcm93c2VyLCB1cmwsIHRyZWVJZGVudGlmaWVyLCB0cmFu c0lkKTsKKyAgICB9CisgIH0KKworICBvblBhbmVsUmVuYW1lKHF1ZXJ5VG9vbFBhbmVsLCBwYW5l bERhdGEsIGlzX3F1ZXJ5X3Rvb2wpIHsKKyAgICB2YXIgdGVtcF90aXRsZSA9IHBhbmVsRGF0YS4k dGl0bGVUZXh0WzBdLnRleHRDb250ZW50OworICAgIHZhciBpc19kaXJ0eV9lZGl0b3IgPSBxdWVy eVRvb2xQYW5lbC5pc19kaXJ0eV9lZGl0b3IgPyBxdWVyeVRvb2xQYW5lbC5pc19kaXJ0eV9lZGl0 b3IgOiBmYWxzZTsKKyAgICB2YXIgdGl0bGUgPSBxdWVyeVRvb2xQYW5lbC5pc19kaXJ0eV9lZGl0 b3IgPyBwYW5lbERhdGEuJHRpdGxlVGV4dFswXS50ZXh0Q29udGVudC5yZXBsYWNlKC8uJC8sICcn KSA6IHRlbXBfdGl0bGU7CisgICAgYWxlcnRpZnkucHJvbXB0KCcnLCB0aXRsZSwKKyAgICAgIC8v IFdlIHdpbGwgZXhlY3V0ZSB0aGlzIGZ1bmN0aW9uIHdoZW4gdXNlciBjbGlja3Mgb24gdGhlIE9L IGJ1dHRvbgorICAgICAgZnVuY3Rpb24oZXZ0LCB2YWx1ZSkgeworICAgICAgICAvLyBSZW1vdmUg dGhlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHdoaXRlIHNwYWNlcy4KKyAgICAgICAgdmFsdWUgPSB2 YWx1ZS50cmltKCk7CisgICAgICAgIGlmKHZhbHVlKSB7CisgICAgICAgICAgdmFyIGlzX2ZpbGUg PSBmYWxzZTsKKyAgICAgICAgICBpZihwYW5lbERhdGEuJHRpdGxlVGV4dFswXS5pbm5lckhUTUwu aW5jbHVkZXMoJ0ZpbGUgLSAnKSkgeworICAgICAgICAgICAgaXNfZmlsZSA9IHRydWU7CisgICAg ICAgICAgfQorICAgICAgICAgIHZhciBzZWxlY3RlZF9pdGVtID0gcGdCcm93c2VyLnRyZWUuc2Vs ZWN0ZWQoKTsKKyAgICAgICAgICB2YXIgcGFuZWxfdGl0bGVzID0gJyc7CisKKyAgICAgICAgICBp Zihpc19xdWVyeV90b29sKSB7CisgICAgICAgICAgICBwYW5lbF90aXRsZXMgPSBwYW5lbFRpdGxl RnVuYy5nZXRQYW5lbFRpdGxlKHBnQnJvd3Nlciwgc2VsZWN0ZWRfaXRlbSwgdmFsdWUpOworICAg ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBwYW5lbF90aXRsZXMgPSBzaG93Vmlld0RhdGEu Z2VuZXJhdGVEYXRhZ3JpZFRpdGxlKHBnQnJvd3Nlciwgc2VsZWN0ZWRfaXRlbSwgdmFsdWUpOwor ICAgICAgICAgIH0KKyAgICAgICAgICAvLyBTZXQgdGl0bGUgdG8gdGhlIHNlbGVjdGVkIHRhYi4K KyAgICAgICAgICBpZiAoaXNfZGlydHlfZWRpdG9yKSB7CisgICAgICAgICAgICBwYW5lbF90aXRs ZXMgPSBwYW5lbF90aXRsZXMgKyAnIConOworICAgICAgICAgIH0KKyAgICAgICAgICBwYW5lbFRp dGxlRnVuYy5zZXRRdWVyeVRvb2xEb2NrZXJUaXRsZShxdWVyeVRvb2xQYW5lbCwgaXNfcXVlcnlf dG9vbCwgXy51bmVzY2FwZShwYW5lbF90aXRsZXMpLCBpc19maWxlKTsKKyAgICAgICAgfQorICAg ICAgfSwKKyAgICAgIC8vIFdlIHdpbGwgZXhlY3V0ZSB0aGlzIGZ1bmN0aW9uIHdoZW4gdXNlciBj bGlja3Mgb24gdGhlIENhbmNlbAorICAgICAgLy8gYnV0dG9uLiAgRG8gbm90aGluZyBqdXN0IGNs b3NlIGl0LgorICAgICAgZnVuY3Rpb24oZXZ0KSB7IGV2dC5jYW5jZWwgPSBmYWxzZTsgfQorICAg ICkuc2V0KHsndGl0bGUnOiBnZXR0ZXh0KCdSZW5hbWUgUGFuZWwnKX0pOworICB9CisKKworICBv cGVuUXVlcnlUb29sUGFuZWwodHJhbnNfaWQsIGlzX3F1ZXJ5X3Rvb2wsIHBhbmVsX3RpdGxlLCBj bG9zZVVybCwgcXVlcnlUb29sRm9ybSkgeworICAgIGxldCBzZWxmID0gdGhpczsKKyAgICB2YXIg YnJvd3Nlcl9wcmVmZXJlbmNlcyA9IHBnQnJvd3Nlci5nZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVs ZSgnYnJvd3NlcicpOworICAgIHZhciBwcm9wZXJ0aWVzUGFuZWwgPSBwZ0Jyb3dzZXIuZG9ja2Vy LmZpbmRQYW5lbHMoJ3Byb3BlcnRpZXMnKTsKKyAgICB2YXIgcXVlcnlUb29sUGFuZWwgPSBwZ0Jy b3dzZXIuZG9ja2VyLmFkZFBhbmVsKCdmcm1fc3FsZWRpdG9yJywgd2NEb2NrZXIuRE9DSy5TVEFD S0VELCBwcm9wZXJ0aWVzUGFuZWxbMF0pOworICAgIHF1ZXJ5VG9vbFBhbmVsLnRyYW5zX2lkID0g dHJhbnNfaWQ7CisgICAgc2hvd1F1ZXJ5VG9vbC5fc2V0X2R5bmFtaWNfdGFiKHBnQnJvd3Nlciwg YnJvd3Nlcl9wcmVmZXJlbmNlc1snZHluYW1pY190YWJzJ10pOworCisgICAgLy8gU2V0IHBhbmVs IHRpdGxlIGFuZCBpY29uCisgICAgcGFuZWxUaXRsZUZ1bmMuc2V0UXVlcnlUb29sRG9ja2VyVGl0 bGUocXVlcnlUb29sUGFuZWwsIGlzX3F1ZXJ5X3Rvb2wsIF8udW5lc2NhcGUocGFuZWxfdGl0bGUp KTsKKyAgICBxdWVyeVRvb2xQYW5lbC5mb2N1cygpOworCisgICAgLy8gTGlzdGVuIG9uIHRoZSBw YW5lbCBjbG9zZWQgZXZlbnQuCisgICAgaWYgKHF1ZXJ5VG9vbFBhbmVsLmlzVmlzaWJsZSgpKSB7 CisgICAgICBxdWVyeVRvb2xQYW5lbC5vbih3Y0RvY2tlci5FVkVOVC5DTE9TRUQsIGZ1bmN0aW9u KCkgeworICAgICAgICAkLmFqYXgoeworICAgICAgICAgIHVybDogY2xvc2VVcmwsCisgICAgICAg ICAgbWV0aG9kOiAnREVMRVRFJywKKyAgICAgICAgfSk7CisgICAgICB9KTsKKyAgICB9CisKKyAg ICBxdWVyeVRvb2xQYW5lbC5vbih3Y0RvY2tlci5FVkVOVC5WSVNJQklMSVRZX0NIQU5HRUQsIGZ1 bmN0aW9uKCkgeworICAgICAgcXVlcnlUb29sUGFuZWwudHJpZ2dlcih3Y0RvY2tlci5FVkVOVC5S RVNJWkVEKTsKKyAgICB9KTsKKworICAgIGNvbW1vblV0aWxzLnJlZ2lzdGVyRGV0YWNoRXZlbnQo cXVlcnlUb29sUGFuZWwpOworCisgICAgLy8gTGlzdGVuIG9uIHRoZSBwYW5lbFJlbmFtZSBldmVu dC4KKyAgICBxdWVyeVRvb2xQYW5lbC5vbih3Y0RvY2tlci5FVkVOVC5SRU5BTUUsIGZ1bmN0aW9u KHBhbmVsRGF0YSkgeworICAgICAgc2VsZi5vblBhbmVsUmVuYW1lKHF1ZXJ5VG9vbFBhbmVsLCBw YW5lbERhdGEsIGlzX3F1ZXJ5X3Rvb2wpOworICAgIH0pOworCisgICAgdmFyIG9wZW5RdWVyeVRv b2xVUkwgPSBmdW5jdGlvbihqKSB7CisgICAgICAvLyBhZGQgc3Bpbm5lciBlbGVtZW50CisgICAg ICBsZXQgJHNwaW5uZXJfZWwgPQorICAgICAgICAkKGA8ZGl2IGNsYXNzPSJwZy1zcC1jb250YWlu ZXIiPgorICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJwZy1zcC1jb250ZW50Ij4KKyAgICAgICAg ICAgICAgICAgIDxkaXYgY2xhc3M9InJvdyI+CisgICAgICAgICAgICAgICAgICAgICAgPGRpdiBj bGFzcz0iY29sLTEyIHBnLXNwLWljb24iPjwvZGl2PgorICAgICAgICAgICAgICAgICAgPC9kaXY+ CisgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDwvZGl2PmApLmFwcGVuZFRvKCQoaiku ZGF0YSgnZW1iZWRkZWRGcmFtZScpLiRjb250YWluZXIpOworCisgICAgICBsZXQgaW5pdF9wb2xs ZXJfaWQgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKKyAgICAgICAgdmFyIGZyYW1lSW5pdGlh bGl6ZWQgPSAkKGopLmRhdGEoJ2ZyYW1lSW5pdGlhbGl6ZWQnKTsKKyAgICAgICAgaWYgKGZyYW1l SW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICBjbGVhckludGVydmFsKGluaXRfcG9sbGVyX2lkKTsK KyAgICAgICAgICB2YXIgZnJhbWUgPSAkKGopLmRhdGEoJ2VtYmVkZGVkRnJhbWUnKTsKKyAgICAg ICAgICBpZiAoZnJhbWUpIHsKKyAgICAgICAgICAgIGZyYW1lLm9uTG9hZGVkKCgpPT57CisgICAg ICAgICAgICAgICRzcGlubmVyX2VsLnJlbW92ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg ICAgICBmcmFtZS5vcGVuSFRNTChxdWVyeVRvb2xGb3JtKTsKKyAgICAgICAgICB9CisgICAgICAg IH0KKyAgICAgIH0sIDEwMCk7CisgICAgfTsKKworICAgIG9wZW5RdWVyeVRvb2xVUkwocXVlcnlU b29sUGFuZWwpOworICB9CisKKyAgbGF1bmNoKHRyYW5zX2lkLCBwYW5lbF91cmwsIGlzX3F1ZXJ5 X3Rvb2wsIHBhbmVsX3RpdGxlLCBzVVJMPW51bGwsIHNxbF9maWx0ZXI9bnVsbCkgeworICAgIGNv bnN0IHNlbGYgPSB0aGlzOworICAgIGxldCBjbG9zZVVybCA9IHVybF9mb3IoJ3NxbGVkaXRvci5j bG9zZScsIHsndHJhbnNfaWQnOiB0cmFuc19pZH0pOworICAgIGxldCBxdWVyeVRvb2xGb3JtID0g YAorICAgICAgPGZvcm0gaWQ9InF1ZXJ5VG9vbEZvcm0iIGFjdGlvbj0iJHtwYW5lbF91cmx9IiBt ZXRob2Q9InBvc3QiPgorICAgICAgICA8aW5wdXQgaWQ9InRpdGxlIiBuYW1lPSJ0aXRsZSIgaGlk ZGVuIC8+CisgICAgICAgIDxpbnB1dCBpZD0iY29ubl90aXRsZSIgbmFtZT0iY29ubl90aXRsZSIg aGlkZGVuIC8+CisgICAgICAgIDxpbnB1dCBuYW1lPSJjbG9zZV91cmwiIHZhbHVlPSIke2Nsb3Nl VXJsfSIgaGlkZGVuIC8+YDsKKworCisgICAgaWYoc1VSTCl7CisgICAgICBxdWVyeVRvb2xGb3Jt ICs9YDxpbnB1dCBuYW1lPSJxdWVyeV91cmwiIHZhbHVlPSIke3NVUkx9IiBoaWRkZW4gLz5gOwor ICAgIH0KKyAgICBpZihzcWxfZmlsdGVyKSB7CisgICAgICBxdWVyeVRvb2xGb3JtICs9YDx0ZXh0 YXJlYSBuYW1lPSJzcWxfZmlsdGVyIiBoaWRkZW4+JHtzcWxfZmlsdGVyfTwvdGV4dGFyZWE+YDsK KyAgICB9CisKKyAgICAvKiBFc2NhcGUgYmFja3NsYXNoZXMgYXMgaXQgaXMgc3RyaXBwZWQgYnkg YmFjayBlbmQgKi8KKyAgICBxdWVyeVRvb2xGb3JtICs9YAorICAgICAgPC9mb3JtPgorICAgICAg ICA8c2NyaXB0PgorICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0aXRsZSIpLnZh bHVlID0gIiR7Xy5lc2NhcGUocGFuZWxfdGl0bGUucmVwbGFjZSgnXFwnLCAnXFxcXCcpKX0iOwor ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJxdWVyeVRvb2xGb3JtIikuc3VibWl0 KCk7CisgICAgICAgIDwvc2NyaXB0PgorICAgICAgYDsKKworICAgIHZhciBicm93c2VyX3ByZWZl cmVuY2VzID0gcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3JfbW9kdWxlKCdicm93c2VyJyk7 CisgICAgdmFyIG9wZW5fbmV3X3RhYiA9IGJyb3dzZXJfcHJlZmVyZW5jZXMubmV3X2Jyb3dzZXJf dGFiX29wZW47CisgICAgaWYgKG9wZW5fbmV3X3RhYiAmJiBvcGVuX25ld190YWIuaW5jbHVkZXMo J3F0JykpIHsKKyAgICAgIHZhciBuZXdXaW4gPSB3aW5kb3cub3BlbignJywgJ19ibGFuaycpOwor ICAgICAgaWYobmV3V2luKSB7CisgICAgICAgIG5ld1dpbi5kb2N1bWVudC53cml0ZShxdWVyeVRv b2xGb3JtKTsKKyAgICAgICAgbmV3V2luLmRvY3VtZW50LnRpdGxlID0gcGFuZWxfdGl0bGU7Cisg ICAgICAgIC8vIFNlbmQgdGhlIHNpZ25hbCB0byBydW50aW1lLCBzbyB0aGF0IHByb3BlciB6b29t IGxldmVsIHdpbGwgYmUgc2V0LgorICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworICAg ICAgICAgIHBnQnJvd3Nlci5zZW5kX3NpZ25hbF90b19ydW50aW1lKCdSdW50aW1lIG5ldyB3aW5k b3cgb3BlbmVkJyk7CisgICAgICAgIH0sIDUwMCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBy ZXR1cm4gZmFsc2U7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIC8qIE9uIHN1Y2Nlc3Nm dWxseSBpbml0aWFsaXphdGlvbiBmaW5kIHRoZSBkYXNoYm9hcmQgcGFuZWwsCisgICAgICAgKiBj cmVhdGUgbmV3IHBhbmVsIGFuZCBhZGQgaXQgdG8gdGhlIGRhc2hib2FyZCBwYW5lbC4KKyAgICAg ICAqLworICAgICAgc2VsZi5vcGVuUXVlcnlUb29sUGFuZWwodHJhbnNfaWQsIGlzX3F1ZXJ5X3Rv b2wsIHBhbmVsX3RpdGxlLCBjbG9zZVVybCwgcXVlcnlUb29sRm9ybSk7CisgICAgfQorICAgIHJl dHVybiB0cnVlOworICB9CisKKyAgc2V0dXBQcmVmZXJlbmNlc1dvcmtlcigpIHsKKyAgICBpZiAo d2luZG93LmxvY2F0aW9uID09IHdpbmRvdy5wYXJlbnQ/LmxvY2F0aW9uKSB7CisgICAgICAvKiBT eW5jIHRoZSBsb2NhbCBwcmVmZXJlbmNlcyB3aXRoIHRoZSBtYWluIHdpbmRvdyBpZiBpbiBuZXcg dGFiICovCisgICAgICBzZXRJbnRlcnZhbCgoKT0+eworICAgICAgICBpZihwZ1dpbmRvdz8ucGdB ZG1pbikgeworICAgICAgICAgIGlmKHBnQWRtaW4uQnJvd3Nlci5wcmVmZXJlbmNlX3ZlcnNpb24o KSA8IHBnV2luZG93LnBnQWRtaW4uQnJvd3Nlci5wcmVmZXJlbmNlX3ZlcnNpb24oKSl7CisgICAg ICAgICAgICBwZ0FkbWluLkJyb3dzZXIucHJlZmVyZW5jZXNfY2FjaGUgPSBwZ1dpbmRvdy5wZ0Fk bWluLkJyb3dzZXIucHJlZmVyZW5jZXNfY2FjaGU7CisgICAgICAgICAgICBwZ0FkbWluLkJyb3dz ZXIucHJlZmVyZW5jZV92ZXJzaW9uKHBnV2luZG93LnBnQWRtaW4uQnJvd3Nlci5wcmVmZXJlbmNl X3ZlcnNpb24oKSk7CisgICAgICAgICAgICBwZ0FkbWluLkJyb3dzZXIudHJpZ2dlclByZWZlcmVu Y2VzQ2hhbmdlKCdicm93c2VyJyk7CisgICAgICAgICAgICBwZ0FkbWluLkJyb3dzZXIudHJpZ2dl clByZWZlcmVuY2VzQ2hhbmdlKCdzcWxlZGl0b3InKTsKKyAgICAgICAgICB9CisgICAgICAgIH0K KyAgICAgIH0sIDEwMDApOworICAgIH0KKyAgfQorCisgIGxvYWRDb21wb25lbnQoY29udGFpbmVy LCBwYXJhbXMpIHsKKyAgICBsZXQgcGFuZWwgPSBudWxsOworICAgIGxldCBzZWxlY3RlZE5vZGVJ bmZvID0gcGdXaW5kb3cucGdBZG1pbi5Ccm93c2VyLnRyZWUuZ2V0VHJlZU5vZGVIaWVyYXJjaHko CisgICAgICBwZ1dpbmRvdy5wZ0FkbWluLkJyb3dzZXIudHJlZS5zZWxlY3RlZCgpCisgICAgKTsK KyAgICBfLmVhY2gocGdXaW5kb3cucGdBZG1pbi5Ccm93c2VyLmRvY2tlci5maW5kUGFuZWxzKCdm cm1fc3FsZWRpdG9yJyksIGZ1bmN0aW9uKHApIHsKKyAgICAgIGlmIChwLnRyYW5zX2lkID09IHBh cmFtcy50cmFuc19pZCkgeworICAgICAgICBwYW5lbCA9IHA7CisgICAgICB9CisgICAgfSk7Cisg ICAgdGhpcy5zZXR1cFByZWZlcmVuY2VzV29ya2VyKCk7CisgICAgUmVhY3RET00ucmVuZGVyKAor ICAgICAgPE1vZGFsUHJvdmlkZXI+CisgICAgICAgIDxRdWVyeVRvb2xDb21wb25lbnQgcGFyYW1z PXtwYXJhbXN9IHBnV2luZG93PXtwZ1dpbmRvd30gcGdBZG1pbj17cGdBZG1pbn0gcGFuZWw9e3Bh bmVsfSBzZWxlY3RlZE5vZGVJbmZvPXtzZWxlY3RlZE5vZGVJbmZvfS8+CisgICAgICA8L01vZGFs UHJvdmlkZXI+LAorICAgICAgY29udGFpbmVyCisgICAgKTsKKyAgfQorfQpkaWZmIC0tZ2l0IGEv d2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9jb21wb25lbnRzL1F1ZXJ5VG9v bENvbXBvbmVudC5qc3ggYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2Nv bXBvbmVudHMvUXVlcnlUb29sQ29tcG9uZW50LmpzeApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAuLjQ2NGU1MWM1YQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9RdWVyeVRvb2xDb21wb25lbnQuanN4 CkBAIC0wLDAgKzEsNjIyIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBU b29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWluIERldmVs b3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3Rn cmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbXBvcnQgUmVhY3QsIHt1c2VDYWxsYmFjaywgdXNl UmVmLCB1c2VNZW1vLCB1c2VTdGF0ZSwgdXNlRWZmZWN0fSBmcm9tICdyZWFjdCc7CitpbXBvcnQg XyBmcm9tICdsb2Rhc2gnOworaW1wb3J0IExheW91dCwgeyBMYXlvdXRIZWxwZXIgfSBmcm9tICcu Li8uLi8uLi8uLi8uLi9zdGF0aWMvanMvaGVscGVycy9MYXlvdXQnOworaW1wb3J0IEV2ZW50QnVz IGZyb20gJy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9oZWxwZXJzL0V2ZW50QnVzJzsKK2ltcG9y dCBRdWVyeSBmcm9tICcuL3NlY3Rpb25zL1F1ZXJ5JzsKK2ltcG9ydCB7IENvbm5lY3Rpb25CYXIg fSBmcm9tICcuL3NlY3Rpb25zL0Nvbm5lY3Rpb25CYXInOworaW1wb3J0IHsgUmVzdWx0U2V0IH0g ZnJvbSAnLi9zZWN0aW9ucy9SZXN1bHRTZXQnOworaW1wb3J0IHsgU3RhdHVzQmFyIH0gZnJvbSAn Li9zZWN0aW9ucy9TdGF0dXNCYXInOworaW1wb3J0IHsgTWFpblRvb2xCYXIgfSBmcm9tICcuL3Nl Y3Rpb25zL01haW5Ub29sQmFyJzsKK2ltcG9ydCB7IE1lc3NhZ2VzIH0gZnJvbSAnLi9zZWN0aW9u cy9NZXNzYWdlcyc7CitpbXBvcnQgVGhlbWUgZnJvbSAnc291cmNlcy9UaGVtZSc7CitpbXBvcnQg Z2V0QXBpSW5zdGFuY2UsIHtwYXJzZUFwaUVycm9yfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zdGF0 aWMvanMvYXBpX2luc3RhbmNlJzsKK2ltcG9ydCB1cmxfZm9yIGZyb20gJ3NvdXJjZXMvdXJsX2Zv cic7CitpbXBvcnQgeyBQQU5FTFMsIFFVRVJZX1RPT0xfRVZFTlRTLCBDT05ORUNUSU9OX1NUQVRV UyB9IGZyb20gJy4vUXVlcnlUb29sQ29uc3RhbnRzJzsKK2ltcG9ydCB7IHVzZUludGVydmFsIH0g ZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3RhdGljL2pzL2N1c3RvbV9ob29rcyc7CitpbXBvcnQgeyBC b3ggfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZSc7CitpbXBvcnQgeyBnZXREYXRhYmFzZUxhYmVs LCBnZXRUaXRsZSwgc2V0UXVlcnlUb29sRG9ja2VyVGl0bGUgfSBmcm9tICcuLi9zcWxlZGl0b3Jf dGl0bGUnOworaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKK2ltcG9ydCBO ZXdDb25uZWN0aW9uRGlhbG9nIGZyb20gJy4vZGlhbG9ncy9OZXdDb25uZWN0aW9uRGlhbG9nJzsK K2ltcG9ydCB7IGV2YWxGdW5jIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc3RhdGljL2pzL3V0aWxz JzsKK2ltcG9ydCB7IE5vdGlmaWNhdGlvbnMgfSBmcm9tICcuL3NlY3Rpb25zL05vdGlmaWNhdGlv bnMnOworaW1wb3J0IE1hY3Jvc0RpYWxvZyBmcm9tICcuL2RpYWxvZ3MvTWFjcm9zRGlhbG9nJzsK K2ltcG9ydCBOb3RpZmllciBmcm9tICcuLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvaGVscGVycy9O b3RpZmllcic7CitpbXBvcnQgRmlsdGVyRGlhbG9nIGZyb20gJy4vZGlhbG9ncy9GaWx0ZXJEaWFs b2cnOworaW1wb3J0IHsgUXVlcnlIaXN0b3J5IH0gZnJvbSAnLi9zZWN0aW9ucy9RdWVyeUhpc3Rv cnknOworaW1wb3J0ICogYXMgc2hvd1F1ZXJ5VG9vbCBmcm9tICcuLi9zaG93X3F1ZXJ5X3Rvb2wn OworaW1wb3J0ICogYXMgY29tbW9uVXRpbHMgZnJvbSAnc291cmNlcy91dGlscyc7CitpbXBvcnQg KiBhcyBLZXJiZXJvcyBmcm9tICdwZ2FkbWluLmF1dGhlbnRpY2F0ZS5rZXJiZXJvcyc7CitpbXBv cnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnOworaW1wb3J0IHsgcmV0cmlldmVOb2RlTmFt ZSB9IGZyb20gJy4uL3Nob3dfdmlld19kYXRhJzsKK2ltcG9ydCAnd2Nkb2NrZXInOworaW1wb3J0 IHsgdXNlTW9kYWwgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvaGVscGVycy9Nb2Rh bFByb3ZpZGVyJzsKKworZXhwb3J0IGNvbnN0IFF1ZXJ5VG9vbENvbnRleHQgPSBSZWFjdC5jcmVh dGVDb250ZXh0KCk7CitleHBvcnQgY29uc3QgUXVlcnlUb29sQ29ubmVjdGlvbkNvbnRleHQgPSBS ZWFjdC5jcmVhdGVDb250ZXh0KCk7CitleHBvcnQgY29uc3QgUXVlcnlUb29sRXZlbnRzQ29udGV4 dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoKTsKKworZnVuY3Rpb24gZmV0Y2hDb25uZWN0aW9uU3Rh dHVzKGFwaSwgdHJhbnNJZCkgeworICByZXR1cm4gYXBpLmdldCh1cmxfZm9yKCdzcWxlZGl0b3Iu Y29ubmVjdGlvbl9zdGF0dXMnLCB7dHJhbnNfaWQ6IHRyYW5zSWR9KSk7Cit9CisKK2Z1bmN0aW9u IGluaXRDb25uZWN0aW9uKGFwaSwgcGFyYW1zLCBwYXNzZGF0YSkgeworICByZXR1cm4gYXBpLnBv c3QodXJsX2ZvcignTk9ERS1zZXJ2ZXIuY29ubmVjdF9pZCcsIHBhcmFtcyksIHBhc3NkYXRhKTsK K30KKworZnVuY3Rpb24gc2V0UGFuZWxUaXRsZShwYW5lbCwgdGl0bGUsIHF0U3RhdGUsIGRpcnR5 PWZhbHNlKSB7CisgIGlmKHRpdGxlKSB7CisgICAgdGl0bGUgPXRpdGxlLnNwbGl0KCdcXCcpLnBv cCgpLnNwbGl0KCcvJykucG9wKCk7CisgIH0gZWxzZSBpZihxdFN0YXRlLmN1cnJlbnRfZmlsZSkg eworICAgIHRpdGxlID0gcXRTdGF0ZS5jdXJyZW50X2ZpbGUuc3BsaXQoJ1xcJykucG9wKCkuc3Bs aXQoJy8nKS5wb3AoKTsKKyAgfSBlbHNlIHsKKyAgICB0aXRsZSA9IHF0U3RhdGUucGFyYW1zLnRp dGxlIHx8ICdVbnRpdGxlZCc7CisgIH0KKworICB0aXRsZSA9IHRpdGxlICsgKGRpcnR5ID8gJyon OiAnJyk7CisgIGlmIChxdFN0YXRlLmlzX25ld190YWIpIHsKKyAgICB3aW5kb3cuZG9jdW1lbnQu dGl0bGUgPSB0aXRsZTsKKyAgfSBlbHNlIHsKKyAgICBzZXRRdWVyeVRvb2xEb2NrZXJUaXRsZShw YW5lbCwgdHJ1ZSwgdGl0bGUsIHF0U3RhdGUuY3VycmVudF9maWxlID8gdHJ1ZSA6IGZhbHNlKTsK KyAgfQorfQorZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUXVlcnlUb29sQ29tcG9uZW50KHtwYXJh bXMsIHBnV2luZG93LCBwZ0FkbWluLCBzZWxlY3RlZE5vZGVJbmZvLCBwYW5lbCwgZXZlbnRCdXNP Ymp9KSB7CisgIGNvbnN0IGNvbnRhaW5lclJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTsKKyAgY29u c3QgZm9yY2VDbG9zZSA9IFJlYWN0LnVzZVJlZihmYWxzZSk7CisgIGNvbnN0IFtxdFN0YXRlLCBf c2V0UXRTdGF0ZV0gPSB1c2VTdGF0ZSh7CisgICAgcHJlZmVyZW5jZXM6IHsKKyAgICAgIGJyb3dz ZXI6IHt9LCBzcWxlZGl0b3I6IHt9LAorICAgIH0sCisgICAgaXNfbmV3X3RhYjogd2luZG93Lmxv Y2F0aW9uID09IHdpbmRvdy5wYXJlbnQ/LmxvY2F0aW9uLAorICAgIGN1cnJlbnRfZmlsZTogbnVs bCwKKyAgICBvYnRhaW5pbmdfY29ubjogdHJ1ZSwKKyAgICBjb25uZWN0ZWQ6IGZhbHNlLAorICAg IGNvbm5lY3Rpb25fc3RhdHVzOiBudWxsLAorICAgIGNvbm5lY3Rpb25fc3RhdHVzX21zZzogJycs CisgICAgcGFyYW1zOiB7CisgICAgICAuLi5wYXJhbXMsCisgICAgICBpc19xdWVyeV90b29sOiBw YXJhbXMuaXNfcXVlcnlfdG9vbCA9PSAndHJ1ZScgPyB0cnVlIDogZmFsc2UsCisgICAgICBub2Rl X25hbWU6IHJldHJpZXZlTm9kZU5hbWUoc2VsZWN0ZWROb2RlSW5mbyksCisgICAgfSwKKyAgICBj b25uZWN0aW9uX2xpc3Q6IFt7CisgICAgICBzZ2lkOiBwYXJhbXMuc2dpZCwKKyAgICAgIHNpZDog cGFyYW1zLnNpZCwKKyAgICAgIGRpZDogcGFyYW1zLmRpZCwKKyAgICAgIHVzZXI6IHBhcmFtcy51 c2VybmFtZSwKKyAgICAgIHJvbGU6IG51bGwsCisgICAgICB0aXRsZTogXy51bmVzY2FwZShwYXJh bXMudGl0bGUpLAorICAgICAgY29ubl90aXRsZTogZ2V0VGl0bGUoCisgICAgICAgIHBnQWRtaW4s IG51bGwsIHNlbGVjdGVkTm9kZUluZm8sIHRydWUsIHBhcmFtcy5zZXJ2ZXJfbmFtZSwgcGFyYW1z LmRhdGFiYXNlX25hbWUgfHwgZ2V0RGF0YWJhc2VMYWJlbChzZWxlY3RlZE5vZGVJbmZvKSwKKyAg ICAgICAgcGFyYW1zLnVzZXJuYW1lLCBwYXJhbXMuaXNfcXVlcnlfdG9vbCA9PSAndHJ1ZScgPyB0 cnVlIDogZmFsc2UpLAorICAgICAgc2VydmVyX25hbWU6IHBhcmFtcy5zZXJ2ZXJfbmFtZSwKKyAg ICAgIGRhdGFiYXNlX25hbWU6IHBhcmFtcy5kYXRhYmFzZV9uYW1lIHx8IGdldERhdGFiYXNlTGFi ZWwoc2VsZWN0ZWROb2RlSW5mbyksCisgICAgICBpc19zZWxlY3RlZDogdHJ1ZSwKKyAgICB9XSwK KyAgfSk7CisKKyAgY29uc3Qgc2V0UXRTdGF0ZSA9IChzdGF0ZSk9PnsKKyAgICBfc2V0UXRTdGF0 ZSgocHJldik9Pih7Li4ucHJldiwuLi5ldmFsRnVuYyhudWxsLCBzdGF0ZSwgcHJldil9KSk7Cisg IH07CisgIGNvbnN0IGV2ZW50QnVzID0gdXNlUmVmKGV2ZW50QnVzT2JqIHx8IChuZXcgRXZlbnRC dXMoKSkpOworICBjb25zdCBkb2NrZXIgPSB1c2VSZWYobnVsbCk7CisgIGNvbnN0IGFwaSA9IHVz ZU1lbW8oKCk9PmdldEFwaUluc3RhbmNlKCksIFtdKTsKKyAgY29uc3QgbW9kYWwgPSB1c2VNb2Rh bCgpOworCisgIC8qIENvbm5lY3Rpb24gc3RhdHVzIHBvbGxlciAqLworICBsZXQgcG9sbFRpbWUg PSBxdFN0YXRlLnByZWZlcmVuY2VzLnNxbGVkaXRvci5jb25uZWN0aW9uX3N0YXR1c19mZXRjaF90 aW1lID4gMCA/CisgICAgcXRTdGF0ZS5wcmVmZXJlbmNlcy5zcWxlZGl0b3IuY29ubmVjdGlvbl9z dGF0dXNfZmV0Y2hfdGltZSoxMDAwIDogLTE7CisgIC8qIE5vIG5lZWQgdG8gcG9sbCB3aGVuIHRo ZSBxdWVyeSBpcyBleGVjdXRpbmcuIFF1ZXJ5IHBvbGxlciB3aWxsIHRoZSB0eG4gc3RhdHVzICov CisgIGlmKHF0U3RhdGUuY29ubmVjdGlvbl9zdGF0dXMgPT09IENPTk5FQ1RJT05fU1RBVFVTLlRS QU5TQUNUSU9OX1NUQVRVU19BQ1RJVkUgJiYgcXRTdGF0ZS5jb25uZWN0ZWQpIHsKKyAgICBwb2xs VGltZSA9IC0xOworICB9CisgIHVzZUludGVydmFsKGFzeW5jICgpPT57CisgICAgdHJ5IHsKKyAg ICAgIGxldCB7ZGF0YTogcmVzcERhdGF9ID0gYXdhaXQgZmV0Y2hDb25uZWN0aW9uU3RhdHVzKGFw aSwgcXRTdGF0ZS5wYXJhbXMudHJhbnNfaWQpOworICAgICAgaWYocmVzcERhdGEuZGF0YSkgewor ICAgICAgICBzZXRRdFN0YXRlKHsKKyAgICAgICAgICBjb25uZWN0ZWQ6IHRydWUsCisgICAgICAg ICAgY29ubmVjdGlvbl9zdGF0dXM6IHJlc3BEYXRhLmRhdGEuc3RhdHVzLAorICAgICAgICB9KTsK KyAgICAgIH0gZWxzZSB7CisgICAgICAgIHNldFF0U3RhdGUoeworICAgICAgICAgIGNvbm5lY3Rl ZDogZmFsc2UsCisgICAgICAgICAgY29ubmVjdGlvbl9zdGF0dXM6IG51bGwsCisgICAgICAgICAg Y29ubmVjdGlvbl9zdGF0dXNfbXNnOiBnZXR0ZXh0KCdBbiB1bmV4cGVjdGVkIGVycm9yIG9jY3Vy cmVkIC0gZW5zdXJlIHlvdSBhcmUgbG9nZ2VkIGludG8gdGhlIGFwcGxpY2F0aW9uLicpCisgICAg ICAgIH0pOworICAgICAgfQorICAgICAgaWYocmVzcERhdGEuZGF0YS5ub3RpZmllcykgeworICAg ICAgICBldmVudEJ1cy5jdXJyZW50LmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5QVVNIX05P VElDRSwgcmVzcERhdGEuZGF0YS5ub3RpZmllcyk7CisgICAgICB9CisgICAgfSBjYXRjaCAoZXJy b3IpIHsKKyAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpOworICAgICAgc2V0UXRTdGF0ZSh7Cisg ICAgICAgIGNvbm5lY3RlZDogZmFsc2UsCisgICAgICAgIGNvbm5lY3Rpb25fc3RhdHVzOiBudWxs LAorICAgICAgICBjb25uZWN0aW9uX3N0YXR1c19tc2c6IHBhcnNlQXBpRXJyb3IoZXJyb3IpLAor ICAgICAgfSk7CisgICAgfQorICB9LCBwb2xsVGltZSk7CisKKyAgbGV0IGRlZmF1bHRMYXlvdXQg PSB7CisgICAgZG9ja2JveDogeworICAgICAgbW9kZTogJ3ZlcnRpY2FsJywKKyAgICAgIGNoaWxk cmVuOiBbCisgICAgICAgIHsKKyAgICAgICAgICB0YWJzOiBbCisgICAgICAgICAgICBMYXlvdXRI ZWxwZXIuZ2V0UGFuZWwoe2lkOiBQQU5FTFMuUVVFUlksIHRpdGxlOiAnUXVlcnknLCBjb250ZW50 OiA8UXVlcnkgLz59KSwKKyAgICAgICAgICAgIExheW91dEhlbHBlci5nZXRQYW5lbCh7aWQ6IFBB TkVMUy5ISVNUT1JZLCB0aXRsZTogJ1F1ZXJ5IEhpc3RvcnknLCBjb250ZW50OiA8UXVlcnlIaXN0 b3J5IC8+LAorICAgICAgICAgICAgICBjYWNoZWQ6IHVuZGVmaW5lZH0pLAorICAgICAgICAgIF0s CisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICBtb2RlOiAnaG9yaXpvbnRhbCcsCisg ICAgICAgICAgY2hpbGRyZW46IFsKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgdGFiczog WworICAgICAgICAgICAgICAgIExheW91dEhlbHBlci5nZXRQYW5lbCh7CisgICAgICAgICAgICAg ICAgICBpZDogUEFORUxTLkRBVEFfT1VUUFVULCB0aXRsZTogJ0RhdGEgb3V0cHV0JywgY29udGVu dDogPFJlc3VsdFNldCAvPiwKKyAgICAgICAgICAgICAgICB9KSwKKyAgICAgICAgICAgICAgICBM YXlvdXRIZWxwZXIuZ2V0UGFuZWwoeworICAgICAgICAgICAgICAgICAgaWQ6IFBBTkVMUy5NRVNT QUdFUywgdGl0bGU6J01lc3NhZ2VzJywgY29udGVudDogPE1lc3NhZ2VzIC8+LAorICAgICAgICAg ICAgICAgIH0pLAorICAgICAgICAgICAgICAgIExheW91dEhlbHBlci5nZXRQYW5lbCh7CisgICAg ICAgICAgICAgICAgICBpZDogUEFORUxTLk5PVElGSUNBVElPTlMsIHRpdGxlOidOb3RpZmljYXRp b25zJywgY29udGVudDogPE5vdGlmaWNhdGlvbnMgLz4sCisgICAgICAgICAgICAgICAgfSksCisg ICAgICAgICAgICAgIF0sCisgICAgICAgICAgICB9CisgICAgICAgICAgXQorICAgICAgICB9LAor ICAgICAgXQorICAgIH0sCisgIH07CisKKyAgY29uc3QgcmVmbGVjdFByZWZlcmVuY2VzID0gdXNl Q2FsbGJhY2soKCk9PnsKKyAgICBzZXRRdFN0YXRlKHtwcmVmZXJlbmNlczogeworICAgICAgYnJv d3NlcjogcGdXaW5kb3cucGdBZG1pbi5Ccm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3JfbW9kdWxl KCdicm93c2VyJyksCisgICAgICBzcWxlZGl0b3I6IHBnV2luZG93LnBnQWRtaW4uQnJvd3Nlci5n ZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnc3FsZWRpdG9yJyksCisgICAgfX0pOworICB9LCBb XSk7CisKKyAgY29uc3QgZ2V0U1FMU2NyaXB0ID0gKCk9PnsKKyAgICAvLyBGZXRjaCB0aGUgU1FM IGZvciBTY3JpcHRzIChlZzogQ1JFQVRFL1VQREFURS9ERUxFVEUvU0VMRUNUKQorICAgIC8vIENh bGwgQUpBWCBvbmx5IGlmIHNjcmlwdCB0eXBlIHVybCBpcyBwcmVzZW50CisgICAgaWYocXRTdGF0 ZS5wYXJhbXMuaXNfcXVlcnlfdG9vbCAmJiBxdFN0YXRlLnBhcmFtcy5xdWVyeV91cmwpIHsKKyAg ICAgIGFwaS5nZXQocXRTdGF0ZS5wYXJhbXMucXVlcnlfdXJsKQorICAgICAgICAudGhlbigocmVz KT0+eworICAgICAgICAgIGV2ZW50QnVzLmN1cnJlbnQuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZF TlRTLkVESVRPUl9TRVRfU1FMLCByZXMuZGF0YSk7CisgICAgICAgIH0pCisgICAgICAgIC5jYXRj aCgoZXJyKT0+eworICAgICAgICAgIGV2ZW50QnVzLmN1cnJlbnQuZmlyZUV2ZW50KFFVRVJZX1RP T0xfRVZFTlRTLkhBTkRMRV9BUElfRVJST1IsIGVycik7CisgICAgICAgIH0pOworICAgIH0KKyAg fTsKKworICBjb25zdCBpbml0aWFsaXplUXVlcnlUb29sID0gKCk9PnsKKyAgICBsZXQgc2VsZWN0 ZWRDb25uID0gXy5maW5kKHF0U3RhdGUuY29ubmVjdGlvbl9saXN0LCAoYyk9PmMuaXNfc2VsZWN0 ZWQpOworICAgIGxldCBiYXNlVXJsID0gJyc7CisgICAgaWYocXRTdGF0ZS5wYXJhbXMuaXNfcXVl cnlfdG9vbCkgeworICAgICAgbGV0IGVuZHBvaW50ID0gJ3NxbGVkaXRvci5pbml0aWFsaXplX3Nx bGVkaXRvcic7CisKKyAgICAgIGlmKHF0U3RhdGUucGFyYW1zLmRpZCkgeworICAgICAgICBlbmRw b2ludCA9ICdzcWxlZGl0b3IuaW5pdGlhbGl6ZV9zcWxlZGl0b3Jfd2l0aF9kaWQnOworICAgICAg fQorICAgICAgYmFzZVVybCA9IHVybF9mb3IoZW5kcG9pbnQsIHsKKyAgICAgICAgLi4uc2VsZWN0 ZWRDb25uLAorICAgICAgICB0cmFuc19pZDogcXRTdGF0ZS5wYXJhbXMudHJhbnNfaWQsCisgICAg ICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgYmFzZVVybCA9IHVybF9mb3IoJ3NxbGVkaXRvci5p bml0aWFsaXplX3ZpZXdkYXRhJywgeworICAgICAgICAuLi5xdFN0YXRlLnBhcmFtcywKKyAgICAg IH0pOworICAgIH0KKyAgICBhcGkucG9zdChiYXNlVXJsLCBxdFN0YXRlLnBhcmFtcy5pc19xdWVy eV90b29sID8gbnVsbCA6IEpTT04uc3RyaW5naWZ5KHF0U3RhdGUucGFyYW1zLnNxbF9maWx0ZXIp KQorICAgICAgLnRoZW4oKCk9PnsKKyAgICAgICAgc2V0UXRTdGF0ZSh7CisgICAgICAgICAgY29u bmVjdGVkOiB0cnVlLAorICAgICAgICAgIG9idGFpbmluZ19jb25uOiBmYWxzZSwKKyAgICAgICAg fSk7CisKKyAgICAgICAgaWYoIXF0U3RhdGUucGFyYW1zLmlzX3F1ZXJ5X3Rvb2wpIHsKKyAgICAg ICAgICBldmVudEJ1cy5jdXJyZW50LmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5UUklHR0VS X0VYRUNVVElPTik7CisgICAgICAgIH0KKyAgICAgIH0pLmNhdGNoKChlcnIpPT57CisgICAgICAg IGlmKGVyci5yZXNwb25zZT8ucmVxdWVzdD8ucmVzcG9uc2VUZXh0Py5zZWFyY2goJ1RpY2tldCBl eHBpcmVkJykgIT09IC0xKSB7CisgICAgICAgICAgS2VyYmVyb3MuZmV0Y2hfdGlja2V0KCkKKyAg ICAgICAgICAgIC50aGVuKCgpPT57CisgICAgICAgICAgICAgIGluaXRpYWxpemVRdWVyeVRvb2wo KTsKKyAgICAgICAgICAgIH0pCisgICAgICAgICAgICAuY2F0Y2goKGtiZXJyKT0+eworICAgICAg ICAgICAgICBzZXRRdFN0YXRlKHsKKyAgICAgICAgICAgICAgICBjb25uZWN0ZWQ6IGZhbHNlLAor ICAgICAgICAgICAgICAgIG9idGFpbmluZ19jb25uOiBmYWxzZSwKKyAgICAgICAgICAgICAgfSk7 CisgICAgICAgICAgICAgIGV2ZW50QnVzLmN1cnJlbnQuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZF TlRTLkhBTkRMRV9BUElfRVJST1IsIGtiZXJyKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9 CisgICAgICAgIHNldFF0U3RhdGUoeworICAgICAgICAgIGNvbm5lY3RlZDogZmFsc2UsCisgICAg ICAgICAgb2J0YWluaW5nX2Nvbm46IGZhbHNlLAorICAgICAgICB9KTsKKyAgICAgICAgZXZlbnRC dXMuY3VycmVudC5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuSEFORExFX0FQSV9FUlJPUiwg ZXJyKTsKKyAgICAgIH0pOworICB9OworCisgIHVzZUVmZmVjdCgoKT0+eworICAgIGdldFNRTFNj cmlwdCgpOworICAgIGluaXRpYWxpemVRdWVyeVRvb2woKTsKKworICAgIGV2ZW50QnVzLmN1cnJl bnQucmVnaXN0ZXJMaXN0ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5GT0NVU19QQU5FTCwgKHBhbmVs SWQpPT57CisgICAgICBMYXlvdXRIZWxwZXIuZm9jdXMoZG9ja2VyLmN1cnJlbnQsIHBhbmVsSWQp OworICAgIH0pOworCisgICAgZXZlbnRCdXMuY3VycmVudC5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZ X1RPT0xfRVZFTlRTLlNFVF9DT05ORUNUSU9OX1NUQVRVUywgKHN0YXR1cyk9PnsKKyAgICAgIHNl dFF0U3RhdGUoe2Nvbm5lY3Rpb25fc3RhdHVzOiBzdGF0dXN9KTsKKyAgICB9KTsKKworICAgIGV2 ZW50QnVzLmN1cnJlbnQucmVnaXN0ZXJMaXN0ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5GT1JDRV9D TE9TRV9QQU5FTCwgKCk9PnsKKyAgICAgIHBhbmVsLm9mZih3aW5kb3cud2NEb2NrZXIuRVZFTlQu Q0xPU0lORyk7CisgICAgICBwYW5lbC5jbG9zZSgpOworICAgIH0pOworCisgICAgcmVmbGVjdFBy ZWZlcmVuY2VzKCk7CisgICAgcGdXaW5kb3cucGdBZG1pbi5Ccm93c2VyLm9uUHJlZmVyZW5jZXND aGFuZ2UoJ3NxbGVkaXRvcicsIGZ1bmN0aW9uKCkgeworICAgICAgcmVmbGVjdFByZWZlcmVuY2Vz KCk7CisgICAgfSk7CisKKyAgICAvKiBXQyBkb2NrZXIgZXZlbnRzICovCisgICAgcGFuZWw/Lm9u KHdpbmRvdy53Y0RvY2tlci5FVkVOVC5DTE9TSU5HLCBmdW5jdGlvbigpIHsKKyAgICAgIGlmKCFm b3JjZUNsb3NlLmN1cnJlbnQpIHsKKyAgICAgICAgZXZlbnRCdXMuY3VycmVudC5maXJlRXZlbnQo UVVFUllfVE9PTF9FVkVOVFMuV0FSTl9TQVZFX0RBVEFfQ0xPU0UpOworICAgICAgfSBlbHNlIHsK KyAgICAgICAgcGFuZWwuY2xvc2UoKTsKKyAgICAgIH0KKyAgICB9KTsKKworICAgIHBnQWRtaW4u QnJvd3Nlci5FdmVudHMub24oJ3BnYWRtaW4tc3RvcmFnZTpmaW5pc2hfYnRuOnNlbGVjdF9maWxl JywgKGZpbGVOYW1lKT0+eworICAgICAgZXZlbnRCdXMuY3VycmVudC5maXJlRXZlbnQoUVVFUllf VE9PTF9FVkVOVFMuTE9BRF9GSUxFLCBmaWxlTmFtZSk7CisgICAgfSwgcGdBZG1pbik7CisKKyAg ICBwZ0FkbWluLkJyb3dzZXIuRXZlbnRzLm9uKCdwZ2FkbWluLXN0b3JhZ2U6ZmluaXNoX2J0bjpj cmVhdGVfZmlsZScsIChmaWxlTmFtZSk9PnsKKyAgICAgIGV2ZW50QnVzLmN1cnJlbnQuZmlyZUV2 ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlNBVkVfRklMRSwgZmlsZU5hbWUpOworICAgIH0sIHBnQWRt aW4pOworICB9LCBbXSk7CisKKyAgdXNlRWZmZWN0KCgpPT57CisgICAgY29uc3QgcHVzaEhpc3Rv cnkgPSAoaCk9PnsKKyAgICAgIGFwaS5wb3N0KAorICAgICAgICB1cmxfZm9yKCdzcWxlZGl0b3Iu YWRkX3F1ZXJ5X2hpc3RvcnknLCB7CisgICAgICAgICAgJ3RyYW5zX2lkJzogcXRTdGF0ZS5wYXJh bXMudHJhbnNfaWQsCisgICAgICAgIH0pLAorICAgICAgICBKU09OLnN0cmluZ2lmeShoKSwKKyAg ICAgICkuY2F0Y2goKGVycm9yKT0+e2NvbnNvbGUuZXJyb3IoZXJyb3IpO30pOworICAgIH07Cisg ICAgZXZlbnRCdXMuY3VycmVudC5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlBV U0hfSElTVE9SWSwgKGgpPT57CisgICAgICBwdXNoSGlzdG9yeShoKTsKKyAgICB9KTsKKyAgICBy ZXR1cm4gKCk9PntldmVudEJ1cy5jdXJyZW50LmRlcmVnaXN0ZXJMaXN0ZW5lcihRVUVSWV9UT09M X0VWRU5UUy5QVVNIX0hJU1RPUlksIHB1c2hIaXN0b3J5KTt9OworICB9LCBbcXRTdGF0ZS5wYXJh bXMudHJhbnNfaWRdKTsKKworCisgIGNvbnN0IGhhbmRsZUFwaUVycm9yID0gKGVycm9yLCBoYW5k bGVQYXJhbXMpPT57CisgICAgaWYoZXJyb3IucmVzcG9uc2UgJiYgcGdBZG1pbi5Ccm93c2VyPy5V c2VyTWFuYWdlbWVudD8uaXNQZ2FMb2dpblJlcXVpcmVkKGVycm9yLnJlc3BvbnNlKSkgeworICAg ICAgcmV0dXJuIHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5wZ2FMb2dpbigpOworICAg IH0KKworICAgIGlmKGVycm9yLnJlc3BvbnNlPy5zdGF0dXMgPT0gNTAzICYmIGVycm9yLnJlc3Bv bnNlLmRhdGE/LmluZm8gPT0gJ0NPTk5FQ1RJT05fTE9TVCcpIHsKKyAgICAgIC8vIFdlIHdpbGwg ZGlzcGxheSByZS1jb25uZWN0IGRpYWxvZywgbm8gbmVlZCB0byBkaXNwbGF5IGVycm9yIG1lc3Nh Z2UgYWdhaW4KKyAgICAgIG1vZGFsLmNvbmZpcm0oCisgICAgICAgIGdldHRleHQoJ0Nvbm5lY3Rp b24gV2FybmluZycpLAorICAgICAgICA8cD4KKyAgICAgICAgICA8c3Bhbj57Z2V0dGV4dCgnVGhl IGFwcGxpY2F0aW9uIGhhcyBsb3N0IHRoZSBkYXRhYmFzZSBjb25uZWN0aW9uOicpfTwvc3Bhbj4K KyAgICAgICAgICA8YnIvPjxzcGFuPntnZXR0ZXh0KCfigYMgSWYgdGhlIGNvbm5lY3Rpb24gd2Fz IGlkbGUgaXQgbWF5IGhhdmUgYmVlbiBmb3JjaWJseSBkaXNjb25uZWN0ZWQuJyl9PC9zcGFuPgor ICAgICAgICAgIDxici8+PHNwYW4+e2dldHRleHQoJ+KBgyBUaGUgYXBwbGljYXRpb24gc2VydmVy IG9yIGRhdGFiYXNlIHNlcnZlciBtYXkgaGF2ZSBiZWVuIHJlc3RhcnRlZC4nKX08L3NwYW4+Cisg ICAgICAgICAgPGJyLz48c3Bhbj57Z2V0dGV4dCgn4oGDIFRoZSB1c2VyIHNlc3Npb24gbWF5IGhh dmUgdGltZWQgb3V0LicpfTwvc3Bhbj4KKyAgICAgICAgICA8YnIgLz4KKyAgICAgICAgICA8c3Bh bj57Z2V0dGV4dCgnRG8geW91IHdhbnQgdG8gY29udGludWUgYW5kIGVzdGFibGlzaCBhIG5ldyBz ZXNzaW9uJyl9PC9zcGFuPgorICAgICAgICA8L3A+LAorICAgICAgICBmdW5jdGlvbigpIHsKKyAg ICAgICAgICBoYW5kbGVQYXJhbXM/LmNvbm5lY3Rpb25Mb3N0Q2FsbGJhY2s/LigpOworICAgICAg ICB9LCBudWxsLAorICAgICAgICBnZXR0ZXh0KCdDb250aW51ZScpLAorICAgICAgICBnZXR0ZXh0 KCdDYW5jZWwnKQorICAgICAgKTsKKyAgICB9IGVsc2UgaWYoaGFuZGxlUGFyYW1zPy5jaGVja1Ry YW5zYWN0aW9uICYmIGVycm9yLnJlc3BvbnNlPy5kYXRhLmluZm8gPT0gJ0RBVEFHUklEX1RSQU5T QUNUSU9OX1JFUVVJUkVEJykgeworICAgICAgbGV0IHNlbGVjdGVkQ29ubiA9IF8uZmluZChxdFN0 YXRlLmNvbm5lY3Rpb25fbGlzdCwgKGMpPT5jLmlzX3NlbGVjdGVkKTsKKyAgICAgIGluaXRDb25u ZWN0aW9uKGFwaSwgeworICAgICAgICAnZ2lkJzogc2VsZWN0ZWRDb25uLnNnaWQsCisgICAgICAg ICdzaWQnOiBzZWxlY3RlZENvbm4uc2lkLAorICAgICAgICAnZGlkJzogc2VsZWN0ZWRDb25uLmRp ZCwKKyAgICAgICAgJ3JvbGUnOiBzZWxlY3RlZENvbm4ucm9sZSwKKyAgICAgIH0pLnRoZW4oKCk9 PnsKKyAgICAgICAgaW5pdGlhbGl6ZVF1ZXJ5VG9vbCgpOworICAgICAgfSkuY2F0Y2goKGVycik9 PnsKKyAgICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLkhBTkRMRV9B UElfRVJST1IsIGVycik7CisgICAgICB9KTsKKyAgICB9IGVsc2UgeworICAgICAgbGV0IG1zZyA9 IHBhcnNlQXBpRXJyb3IoZXJyb3IpOworICAgICAgZXZlbnRCdXMuY3VycmVudC5maXJlRXZlbnQo UVVFUllfVE9PTF9FVkVOVFMuU0VUX01FU1NBR0UsIG1zZywgdHJ1ZSk7CisgICAgICBldmVudEJ1 cy5jdXJyZW50LmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5GT0NVU19QQU5FTCwgUEFORUxT Lk1FU1NBR0VTKTsKKyAgICAgIE5vdGlmaWVyLmVycm9yKG1zZyk7CisgICAgfQorICB9OworCisg IHVzZUVmZmVjdCgoKT0+eworICAgIGNvbnN0IGZpbGVEb25lID0gKGZpbGVOYW1lLCBzdWNjZXNz PXRydWUpPT57CisgICAgICBpZihzdWNjZXNzKSB7CisgICAgICAgIHNldFF0U3RhdGUoeworICAg ICAgICAgIGN1cnJlbnRfZmlsZTogZmlsZU5hbWUsCisgICAgICAgIH0pOworICAgICAgICBzZXRQ YW5lbFRpdGxlKHBhbmVsLCBmaWxlTmFtZSwgey4uLnF0U3RhdGUsIGN1cnJlbnRfZmlsZTogZmls ZU5hbWV9KTsKKyAgICAgIH0KKyAgICB9OworICAgIGNvbnN0IGV2ZW50cyA9IFsKKyAgICAgIFtR VUVSWV9UT09MX0VWRU5UUy5UUklHR0VSX0xPQURfRklMRSwgKCk9PnsKKyAgICAgICAgbGV0IGZp bGVQYXJhbXMgPSB7CisgICAgICAgICAgJ3N1cHBvcnRlZF90eXBlcyc6IFsnKicsICdzcWwnXSwg Ly8gZmlsZSB0eXBlcyBhbGxvd2VkCisgICAgICAgICAgJ2RpYWxvZ190eXBlJzogJ3NlbGVjdF9m aWxlJywgLy8gb3BlbiBzZWxlY3QgZmlsZSBkaWFsb2cKKyAgICAgICAgfTsKKyAgICAgICAgcGdB ZG1pbi5GaWxlTWFuYWdlci5pbml0KCk7CisgICAgICAgIHBnQWRtaW4uRmlsZU1hbmFnZXIuc2hv d19kaWFsb2coZmlsZVBhcmFtcyk7CisgICAgICB9XSwKKyAgICAgIFtRVUVSWV9UT09MX0VWRU5U Uy5UUklHR0VSX1NBVkVfRklMRSwgKGlzU2F2ZUFzPWZhbHNlKT0+eworICAgICAgICBpZighaXNT YXZlQXMgJiYgcXRTdGF0ZS5jdXJyZW50X2ZpbGUpIHsKKyAgICAgICAgICBldmVudEJ1cy5jdXJy ZW50LmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5TQVZFX0ZJTEUsIHF0U3RhdGUuY3VycmVu dF9maWxlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBsZXQgZmlsZVBhcmFtcyA9IHsK KyAgICAgICAgICAgICdzdXBwb3J0ZWRfdHlwZXMnOiBbJyonLCAnc3FsJ10sCisgICAgICAgICAg ICAnZGlhbG9nX3R5cGUnOiAnY3JlYXRlX2ZpbGUnLAorICAgICAgICAgICAgJ2RpYWxvZ190aXRs ZSc6ICdTYXZlIEZpbGUnLAorICAgICAgICAgICAgJ2J0bl9wcmltYXJ5JzogJ1NhdmUnLAorICAg ICAgICAgIH07CisgICAgICAgICAgcGdBZG1pbi5GaWxlTWFuYWdlci5pbml0KCk7CisgICAgICAg ICAgcGdBZG1pbi5GaWxlTWFuYWdlci5zaG93X2RpYWxvZyhmaWxlUGFyYW1zKTsKKyAgICAgICAg fQorICAgICAgfV0sCisgICAgICBbUVVFUllfVE9PTF9FVkVOVFMuTE9BRF9GSUxFX0RPTkUsIGZp bGVEb25lXSwKKyAgICAgIFtRVUVSWV9UT09MX0VWRU5UUy5TQVZFX0ZJTEVfRE9ORSwgZmlsZURv bmVdLAorICAgICAgW1FVRVJZX1RPT0xfRVZFTlRTLlFVRVJZX0NIQU5HRUQsIChpc0RpcnR5KT0+ eworICAgICAgICBpZihxdFN0YXRlLnBhcmFtcy5pc19xdWVyeV90b29sKSB7CisgICAgICAgICAg c2V0UGFuZWxUaXRsZShwYW5lbCwgbnVsbCwgcXRTdGF0ZSwgaXNEaXJ0eSk7CisgICAgICAgIH0K KyAgICAgIH1dLAorICAgICAgW1FVRVJZX1RPT0xfRVZFTlRTLkhBTkRMRV9BUElfRVJST1IsIGhh bmRsZUFwaUVycm9yXSwKKyAgICBdOworCisgICAgZXZlbnRzLmZvckVhY2goKGUpPT57CisgICAg ICBldmVudEJ1cy5jdXJyZW50LnJlZ2lzdGVyTGlzdGVuZXIoZVswXSwgZVsxXSk7CisgICAgfSk7 CisKKyAgICByZXR1cm4gKCk9PnsKKyAgICAgIGV2ZW50cy5mb3JFYWNoKChlKT0+eworICAgICAg ICBldmVudEJ1cy5jdXJyZW50LmRlcmVnaXN0ZXJMaXN0ZW5lcihlWzBdLCBlWzFdKTsKKyAgICAg IH0pOworICAgIH07CisgIH0sIFtxdFN0YXRlXSk7CisKKyAgdXNlRWZmZWN0KCgpPT57CisgICAg LyogRmlyZSBxdWVyeSBjaGFuZ2Ugc28gdGhhdCB0aXRsZSBjaGFuZ2VzIHRvIGxhdGVzdCAqLwor ICAgIGV2ZW50QnVzLmN1cnJlbnQuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlRSSUdHRVJf UVVFUllfQ0hBTkdFKTsKKyAgfSwgW3F0U3RhdGUucGFyYW1zLnRpdGxlXSk7CisKKyAgY29uc3Qg dXBkYXRlUXVlcnlUb29sQ29ubmVjdGlvbiA9IHVzZUNhbGxiYWNrKChjb25uZWN0aW9uRGF0YSwg aXNOZXc9ZmFsc2UpPT57CisgICAgc2V0UXRTdGF0ZSgocHJldik9PnsKKyAgICAgIGxldCBuZXdD b25uTGlzdCA9IFsuLi5wcmV2LmNvbm5lY3Rpb25fbGlzdF07CisgICAgICBpZihpc05ldykgewor ICAgICAgICBuZXdDb25uTGlzdC5wdXNoKGNvbm5lY3Rpb25EYXRhKTsKKyAgICAgIH0KKyAgICAg IGZvciAoY29uc3QgY29ubkl0ZW0gb2YgbmV3Q29ubkxpc3QpIHsKKyAgICAgICAgaWYoY29ubmVj dGlvbkRhdGEuc2lkID09IGNvbm5JdGVtLnNpZAorICAgICAgICAgICYmIGNvbm5lY3Rpb25EYXRh LmRpZCA9PSBjb25uSXRlbS5kaWQKKyAgICAgICAgICAmJiBjb25uZWN0aW9uRGF0YS51c2VyID09 IGNvbm5JdGVtLnVzZXIKKyAgICAgICAgICAmJiBjb25uZWN0aW9uRGF0YS5yb2xlID09IGNvbm5J dGVtLnJvbGUpIHsKKyAgICAgICAgICBjb25uSXRlbS5pc19zZWxlY3RlZCA9IHRydWU7CisgICAg ICAgIH0gZWxzZSB7CisgICAgICAgICAgY29ubkl0ZW0uaXNfc2VsZWN0ZWQgPSBmYWxzZTsKKyAg ICAgICAgfQorICAgICAgfQorICAgICAgcmV0dXJuIHsKKyAgICAgICAgY29ubmVjdGlvbl9saXN0 OiBuZXdDb25uTGlzdCwKKyAgICAgIH07CisgICAgfSk7CisgICAgc2V0UXRTdGF0ZSgocHJldik9 PnsKKyAgICAgIHJldHVybiB7CisgICAgICAgIHBhcmFtczogeworICAgICAgICAgIC4uLnByZXYu cGFyYW1zLAorICAgICAgICAgIHNpZDogY29ubmVjdGlvbkRhdGEuc2lkLAorICAgICAgICAgIGRp ZDogY29ubmVjdGlvbkRhdGEuZGlkLAorICAgICAgICAgIHRpdGxlOiBjb25uZWN0aW9uRGF0YS50 aXRsZSwKKyAgICAgICAgfSwKKyAgICAgICAgb2J0YWluaW5nX2Nvbm46IHRydWUsCisgICAgICAg IGNvbm5lY3RlZDogZmFsc2UsCisgICAgICB9OworICAgIH0pOworICAgIHJldHVybiBhcGkucG9z dCh1cmxfZm9yKCdzcWxlZGl0b3IudXBkYXRlX3F1ZXJ5X3Rvb2xfY29ubmVjdGlvbicsIHsKKyAg ICAgIHRyYW5zX2lkOiBxdFN0YXRlLnBhcmFtcy50cmFuc19pZCwKKyAgICAgIHNnaWQ6IGNvbm5l Y3Rpb25EYXRhLnNnaWQsCisgICAgICBzaWQ6IGNvbm5lY3Rpb25EYXRhLnNpZCwKKyAgICAgIGRp ZDogY29ubmVjdGlvbkRhdGEuZGlkCisgICAgfSksIGNvbm5lY3Rpb25EYXRhKQorICAgICAgLnRo ZW4oKHtkYXRhOiByZXNwRGF0YX0pPT57CisgICAgICAgIHNldFF0U3RhdGUoKHByZXYpPT57Cisg ICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHBhcmFtczogeworICAgICAgICAgICAgICAu Li5wcmV2LnBhcmFtcywKKyAgICAgICAgICAgICAgdHJhbnNfaWQ6IHJlc3BEYXRhLmRhdGEudHJh bnNfaWQsCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgY29ubmVjdGVkOiByZXNwRGF0YS5k YXRhLnRyYW5zX2lkID8gdHJ1ZSA6IGZhbHNlLAorICAgICAgICAgICAgb2J0YWluaW5nX2Nvbm46 IGZhbHNlLAorICAgICAgICAgIH07CisgICAgICAgIH0pOworICAgICAgICBsZXQgbXNnID0gYCR7 Y29ubmVjdGlvbkRhdGFbJ3NlcnZlcl9uYW1lJ119LyR7Y29ubmVjdGlvbkRhdGFbJ2RhdGFiYXNl X25hbWUnXX0gLSBEYXRhYmFzZSBjb25uZWN0ZWRgOworICAgICAgICBOb3RpZmllci5zdWNjZXNz KG1zZyk7CisgICAgICB9KTsKKyAgfSwgW3F0U3RhdGUucGFyYW1zLnRyYW5zX2lkXSk7CisKKyAg Y29uc3Qgb25OZXdDb25uQ2xpY2sgPSB1c2VDYWxsYmFjaygoKT0+eworICAgIGNvbnN0IG9uQ2xv c2UgPSAoKT0+TGF5b3V0SGVscGVyLmNsb3NlKGRvY2tlci5jdXJyZW50LCAnbmV3LWNvbm4nKTsK KyAgICBMYXlvdXRIZWxwZXIub3BlbkRpYWxvZyhkb2NrZXIuY3VycmVudCwgeworICAgICAgaWQ6 ICduZXctY29ubicsCisgICAgICB0aXRsZTogZ2V0dGV4dCgnQWRkIG5ldyBjb25uZWN0aW9uJyks CisgICAgICBjb250ZW50OiA8TmV3Q29ubmVjdGlvbkRpYWxvZyBvblNhdmU9eyhfaXNOZXcsIGRh dGEpPT57CisgICAgICAgIGxldCBjb25uZWN0aW9uRGF0YSA9IHsKKyAgICAgICAgICBzZ2lkOiAw LAorICAgICAgICAgIHNpZDogZGF0YS5zaWQsCisgICAgICAgICAgZGlkOiBkYXRhLmRpZCwKKyAg ICAgICAgICB1c2VyOiBkYXRhLnVzZXIsCisgICAgICAgICAgcm9sZTogZGF0YS5yb2xlICYmIG51 bGwsCisgICAgICAgICAgdGl0bGU6IGdldFRpdGxlKHBnQWRtaW4sIHF0U3RhdGUucHJlZmVyZW5j ZXMuYnJvd3NlciwgbnVsbCwgZmFsc2UsIGRhdGEuc2VydmVyX25hbWUsIGRhdGEuZGF0YWJhc2Vf bmFtZSwgZGF0YS51c2VyKSwKKyAgICAgICAgICBjb25uX3RpdGxlOiBnZXRUaXRsZShwZ0FkbWlu LCBudWxsLCBudWxsLCB0cnVlLCBkYXRhLnNlcnZlcl9uYW1lLCBkYXRhLmRhdGFiYXNlX25hbWUs IGRhdGEudXNlciksCisgICAgICAgICAgc2VydmVyX25hbWU6IGRhdGEuc2VydmVyX25hbWUsCisg ICAgICAgICAgZGF0YWJhc2VfbmFtZTogZGF0YS5kYXRhYmFzZV9uYW1lLAorICAgICAgICAgIGlz X3NlbGVjdGVkOiB0cnVlLAorICAgICAgICB9OworICAgICAgICB1cGRhdGVRdWVyeVRvb2xDb25u ZWN0aW9uKGNvbm5lY3Rpb25EYXRhLCB0cnVlKTsKKyAgICAgICAgb25DbG9zZSgpOworICAgICAg ICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCk7CisgICAgICB9fQorICAgICAgb25DbG9zZT17b25D bG9zZX0vPgorICAgIH0pOworICB9LCBbcXRTdGF0ZS5wcmVmZXJlbmNlcy5icm93c2VyXSk7CisK KworICBjb25zdCBvbk5ld1F1ZXJ5VG9vbENsaWNrID0gKCk9PnsKKyAgICBjb25zdCB0cmFuc0lk ID0gY29tbW9uVXRpbHMuZ2V0UmFuZG9tSW50KDEsIDk5OTk5OTkpOworICAgIGxldCBzZWxlY3Rl ZENvbm4gPSBfLmZpbmQocXRTdGF0ZS5jb25uZWN0aW9uX2xpc3QsIChjKT0+Yy5pc19zZWxlY3Rl ZCk7CisgICAgbGV0IHBhcmVudERhdGEgPSB7CisgICAgICBzZXJ2ZXJfZ3JvdXA6IHsKKyAgICAg ICAgX2lkOiBzZWxlY3RlZENvbm4uc2dpZCB8fCAwLAorICAgICAgfSwKKyAgICAgIHNlcnZlcjog eworICAgICAgICBfaWQ6IHNlbGVjdGVkQ29ubi5zaWQsCisgICAgICAgIHNlcnZlcl90eXBlOiBx dFN0YXRlLnBhcmFtcy5zZXJ2ZXJfdHlwZSwKKyAgICAgIH0sCisgICAgICBkYXRhYmFzZTogewor ICAgICAgICBfaWQ6IHNlbGVjdGVkQ29ubi5kaWQsCisgICAgICAgIGxhYmVsOiBzZWxlY3RlZENv bm4uZGF0YWJhc2VfbmFtZSwKKyAgICAgIH0sCisgICAgfTsKKworICAgIGNvbnN0IGdyaWRVcmwg PSBzaG93UXVlcnlUb29sLmdlbmVyYXRlVXJsKHRyYW5zSWQsIHBhcmVudERhdGEsIG51bGwpOwor ICAgIGNvbnN0IHRpdGxlID0gZ2V0VGl0bGUocGdBZG1pbiwgcXRTdGF0ZS5wcmVmZXJlbmNlcy5i cm93c2VyLCBudWxsLCBmYWxzZSwgc2VsZWN0ZWRDb25uLnNlcnZlcl9uYW1lLCBzZWxlY3RlZENv bm4uZGF0YWJhc2VfbmFtZSwgc2VsZWN0ZWRDb25uLnVzZXIpOworICAgIHNob3dRdWVyeVRvb2wu bGF1bmNoUXVlcnlUb29sKHBnV2luZG93LnBnQWRtaW4uVG9vbHMuUXVlcnlUb29sLCB0cmFuc0lk LCBncmlkVXJsLCB0aXRsZSwgJycpOworICB9OworCisgIGNvbnN0IG9uTWFuYWdlTWFjcm9zID0g dXNlQ2FsbGJhY2soKCk9PnsKKyAgICBjb25zdCBvbkNsb3NlID0gKCk9PkxheW91dEhlbHBlci5j bG9zZShkb2NrZXIuY3VycmVudCwgJ21hbmFnZS1tYWNyb3MnKTsKKyAgICBMYXlvdXRIZWxwZXIu b3BlbkRpYWxvZyhkb2NrZXIuY3VycmVudCwgeworICAgICAgaWQ6ICdtYW5hZ2UtbWFjcm9zJywK KyAgICAgIHRpdGxlOiBnZXR0ZXh0KCdNYW5hZ2UgTWFjcm9zJyksCisgICAgICBjb250ZW50OiA8 TWFjcm9zRGlhbG9nIG9uU2F2ZT17KG5ld01hY3Jvcyk9PnsKKyAgICAgICAgc2V0UXRTdGF0ZSgo cHJldik9PnsKKyAgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgcGFyYW1zOiB7CisgICAg ICAgICAgICAgIC4uLnByZXYucGFyYW1zLAorICAgICAgICAgICAgICBtYWNyb3M6IG5ld01hY3Jv cywKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgfTsKKyAgICAgICAgfSk7CisgICAgICB9fQor ICAgICAgb25DbG9zZT17b25DbG9zZX0vPgorICAgIH0sIDg1MCwgNTAwKTsKKyAgfSwgW3F0U3Rh dGUucHJlZmVyZW5jZXMuYnJvd3Nlcl0pOworCisgIGNvbnN0IG9uRmlsdGVyQ2xpY2sgPSB1c2VD YWxsYmFjaygoKT0+eworICAgIGNvbnN0IG9uQ2xvc2UgPSAoKT0+TGF5b3V0SGVscGVyLmNsb3Nl KGRvY2tlci5jdXJyZW50LCAnZmlsdGVyLWRpYWxvZycpOworICAgIExheW91dEhlbHBlci5vcGVu RGlhbG9nKGRvY2tlci5jdXJyZW50LCB7CisgICAgICBpZDogJ2ZpbHRlci1kaWFsb2cnLAorICAg ICAgdGl0bGU6IGdldHRleHQoJ1NvcnQvRmlsdGVyIG9wdGlvbnMnKSwKKyAgICAgIGNvbnRlbnQ6 IDxGaWx0ZXJEaWFsb2cgb25TYXZlPXsoKT0+eworICAgICAgICBvbkNsb3NlKCk7CisgICAgICAg IGV2ZW50QnVzLmN1cnJlbnQuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlRSSUdHRVJfRVhF Q1VUSU9OKTsKKyAgICAgIH19CisgICAgICBvbkNsb3NlPXtvbkNsb3NlfS8+CisgICAgfSwgNzAw LCA0MDApOworICB9LCBbcXRTdGF0ZS5wcmVmZXJlbmNlcy5icm93c2VyXSk7CisKKyAgY29uc3Qg b25SZXNldExheW91dCA9IHVzZUNhbGxiYWNrKCgpPT57CisgICAgZG9ja2VyLmN1cnJlbnQ/LnJl c2V0TGF5b3V0KCk7CisgICAgZXZlbnRCdXMuY3VycmVudC5maXJlRXZlbnQoUVVFUllfVE9PTF9F VkVOVFMuRk9DVVNfUEFORUwsIFBBTkVMUy5RVUVSWSk7CisgIH0sIFtdKTsKKworICBjb25zdCBx dWVyeVRvb2xDb250ZXh0VmFsdWUgPSBSZWFjdC51c2VNZW1vKCgpPT4oeworICAgIGRvY2tlcjog ZG9ja2VyLmN1cnJlbnQsCisgICAgYXBpOiBhcGksCisgICAgbW9kYWw6IG1vZGFsLAorICAgIHBh cmFtczogcXRTdGF0ZS5wYXJhbXMsCisgICAgcHJlZmVyZW5jZXM6IHF0U3RhdGUucHJlZmVyZW5j ZXMsCisgIH0pLCBbcXRTdGF0ZS5wYXJhbXMsIHF0U3RhdGUucHJlZmVyZW5jZXNdKTsKKworICBj b25zdCBxdWVyeVRvb2xDb25uQ29udGV4dFZhbHVlID0gUmVhY3QudXNlTWVtbygoKT0+KHsKKyAg ICBjb25uZWN0ZWQ6IHF0U3RhdGUuY29ubmVjdGVkLAorICAgIG9idGFpbmluZ0Nvbm46IHF0U3Rh dGUub2J0YWluaW5nX2Nvbm4sCisgICAgY29ubmVjdGlvblN0YXR1czogcXRTdGF0ZS5jb25uZWN0 aW9uX3N0YXR1cywKKyAgfSksIFtxdFN0YXRlXSk7CisKKyAgLyogUHVzaCBvbmx5IHRob3NlIHRo aW5ncyBpbiBjb250ZXh0IHdoaWNoIGRvIG5vdCBjaGFuZ2UgZnJlcXVlbnRseSAqLworICByZXR1 cm4gKAorICAgIDxRdWVyeVRvb2xDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtxdWVyeVRvb2xDb250 ZXh0VmFsdWV9PgorICAgICAgPFF1ZXJ5VG9vbENvbm5lY3Rpb25Db250ZXh0LlByb3ZpZGVyIHZh bHVlPXtxdWVyeVRvb2xDb25uQ29udGV4dFZhbHVlfT4KKyAgICAgICAgPFF1ZXJ5VG9vbEV2ZW50 c0NvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2V2ZW50QnVzLmN1cnJlbnR9PgorICAgICAgICAgIDxU aGVtZT4KKyAgICAgICAgICAgIDxCb3ggd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZGlzcGxh eT0iZmxleCIgZmxleERpcmVjdGlvbj0iY29sdW1uIiBmbGV4R3Jvdz0iMSIgdGFiSW5kZXg9IjAi IHJlZj17Y29udGFpbmVyUmVmfT4KKyAgICAgICAgICAgICAgPENvbm5lY3Rpb25CYXIKKyAgICAg ICAgICAgICAgICBjb25uZWN0ZWQ9e3F0U3RhdGUuY29ubmVjdGVkfQorICAgICAgICAgICAgICAg IGNvbm5lY3Rpbmc9e3F0U3RhdGUub2J0YWluaW5nX2Nvbm59CisgICAgICAgICAgICAgICAgY29u bmVjdGlvblN0YXR1cz17cXRTdGF0ZS5jb25uZWN0aW9uX3N0YXR1c30KKyAgICAgICAgICAgICAg ICBjb25uZWN0aW9uU3RhdHVzTXNnPXtxdFN0YXRlLmNvbm5lY3Rpb25fc3RhdHVzX21zZ30KKyAg ICAgICAgICAgICAgICBjb25uZWN0aW9uTGlzdD17cXRTdGF0ZS5jb25uZWN0aW9uX2xpc3R9Cisg ICAgICAgICAgICAgICAgb25Db25uZWN0aW9uQ2hhbmdlPXsoY29ubmVjdGlvbkRhdGEpPT51cGRh dGVRdWVyeVRvb2xDb25uZWN0aW9uKGNvbm5lY3Rpb25EYXRhKX0KKyAgICAgICAgICAgICAgICBv bk5ld0Nvbm5DbGljaz17b25OZXdDb25uQ2xpY2t9CisgICAgICAgICAgICAgICAgb25OZXdRdWVy eVRvb2xDbGljaz17b25OZXdRdWVyeVRvb2xDbGlja30KKyAgICAgICAgICAgICAgICBvblJlc2V0 TGF5b3V0PXtvblJlc2V0TGF5b3V0fQorICAgICAgICAgICAgICAgIGRvY2tlcj17ZG9ja2VyLmN1 cnJlbnR9CisgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgIDxNYWluVG9vbEJhcgorICAg ICAgICAgICAgICAgIGNvbnRhaW5lclJlZj17Y29udGFpbmVyUmVmfQorICAgICAgICAgICAgICAg IG9uTWFuYWdlTWFjcm9zPXtvbk1hbmFnZU1hY3Jvc30KKyAgICAgICAgICAgICAgICBvbkZpbHRl ckNsaWNrPXtvbkZpbHRlckNsaWNrfQorICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICA8 TGF5b3V0CisgICAgICAgICAgICAgICAgZ2V0TGF5b3V0SW5zdGFuY2U9eyhvYmopPT5kb2NrZXIu Y3VycmVudD1vYmp9CisgICAgICAgICAgICAgICAgZGVmYXVsdExheW91dD17ZGVmYXVsdExheW91 dH0KKyAgICAgICAgICAgICAgICBsYXlvdXRJZD0iU1FMRWRpdG9yL0xheW91dCIKKyAgICAgICAg ICAgICAgICBzYXZlZExheW91dD17cGFyYW1zLmxheW91dH0KKyAgICAgICAgICAgICAgLz4KKyAg ICAgICAgICAgICAgPFN0YXR1c0JhciAvPgorICAgICAgICAgICAgPC9Cb3g+CisgICAgICAgICAg PC9UaGVtZT4KKyAgICAgICAgPC9RdWVyeVRvb2xFdmVudHNDb250ZXh0LlByb3ZpZGVyPgorICAg ICAgPC9RdWVyeVRvb2xDb25uZWN0aW9uQ29udGV4dC5Qcm92aWRlcj4KKyAgICA8L1F1ZXJ5VG9v bENvbnRleHQuUHJvdmlkZXI+CisgICk7Cit9CisKK1F1ZXJ5VG9vbENvbXBvbmVudC5wcm9wVHlw ZXMgPSB7CisgIHBhcmFtczpQcm9wVHlwZXMuc2hhcGUoeworICAgIHRyYW5zX2lkOiBQcm9wVHlw ZXMubnVtYmVyLmlzUmVxdWlyZWQsCisgICAgc2dpZDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJv cFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsCisgICAgc2lkOiBQ cm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSku aXNSZXF1aXJlZCwKKyAgICBkaWQ6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1i ZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLAorICAgIHNlcnZlcl90eXBlOiBQcm9w VHlwZXMuc3RyaW5nLAorICAgIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsCisg ICAgYmdjb2xvcjogUHJvcFR5cGVzLnN0cmluZywKKyAgICBmZ2NvbG9yOiBQcm9wVHlwZXMuc3Ry aW5nLAorICAgIGlzX3F1ZXJ5X3Rvb2w6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5i b29sLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCwKKyAgICB1c2VybmFtZTogUHJvcFR5 cGVzLnN0cmluZywKKyAgICBzZXJ2ZXJfbmFtZTogUHJvcFR5cGVzLnN0cmluZywKKyAgICBkYXRh YmFzZV9uYW1lOiBQcm9wVHlwZXMuc3RyaW5nLAorICAgIGxheW91dDogUHJvcFR5cGVzLnN0cmlu ZywKKyAgfSksCisgIHBnV2luZG93OiBQcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsCisgIHBn QWRtaW46IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCwKKyAgc2VsZWN0ZWROb2RlSW5mbzog UHJvcFR5cGVzLm9iamVjdCwKKyAgcGFuZWw6IFByb3BUeXBlcy5vYmplY3QsCisgIGV2ZW50QnVz T2JqOiBQcm9wVHlwZXMub2JqZWN0T2YoRXZlbnRCdXMpLAorfTsKZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9RdWVyeVRvb2xDb25z dGFudHMuanMgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVu dHMvUXVlcnlUb29sQ29uc3RhbnRzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMC4uZDAwYTg4ZGNjCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3Fs ZWRpdG9yL3N0YXRpYy9qcy9jb21wb25lbnRzL1F1ZXJ5VG9vbENvbnN0YW50cy5qcwpAQCAtMCww ICsxLDk1IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scworLy8K Ky8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRl YW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGlj ZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vCitpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQnOwor CitleHBvcnQgY29uc3QgUVVFUllfVE9PTF9FVkVOVFMgPSB7CisgIFRSSUdHRVJfU1RPUF9FWEVD VVRJT046ICdUUklHR0VSX1NUT1BfRVhFQ1VUSU9OJywKKyAgVFJJR0dFUl9FWEVDVVRJT046ICdU UklHR0VSX0VYRUNVVElPTicsCisgIFRSSUdHRVJfTE9BRF9GSUxFOiAnVFJJR0dFUl9MT0FEX0ZJ TEUnLAorICBUUklHR0VSX1NBVkVfRklMRTogJ1RSSUdHRVJfU0FWRV9GSUxFJywKKyAgVFJJR0dF Ul9TQVZFX0RBVEE6ICdUUklHR0VSX1NBVkVfREFUQScsCisgIFRSSUdHRVJfREVMRVRFX1JPV1M6 ICdUUklHR0VSX0RFTEVURV9ST1dTJywKKyAgVFJJR0dFUl9DT1BZX0RBVEE6ICdUUklHR0VSX0NP UFlfREFUQScsCisgIFRSSUdHRVJfQUREX1JPV1M6ICdUUklHR0VSX0FERF9ST1dTJywKKyAgVFJJ R0dFUl9SRU5ERVJfR0VPTUVUUklFUzogJ1RSSUdHRVJfUkVOREVSX0dFT01FVFJJRVMnLAorICBU UklHR0VSX1NBVkVfUkVTVUxUUzogJ1RSSUdHRVJfU0FWRV9SRVNVTFRTJywKKyAgVFJJR0dFUl9T QVZFX1JFU1VMVFNfRU5EOiAnVFJJR0dFUl9TQVZFX1JFU1VMVFNfRU5EJywKKyAgVFJJR0dFUl9Q QVNURV9ST1dTOiAnVFJJR0dFUl9QQVNURV9ST1dTJywKKyAgVFJJR0dFUl9RVUVSWV9DSEFOR0U6 ICdUUklHR0VSX1FVRVJZX0NIQU5HRScsCisgIFRSSUdHRVJfSU5DTFVERV9FWENMVURFX0ZJTFRF UjogJ1RSSUdHRVJfSU5DTFVERV9FWENMVURFX0ZJTFRFUicsCisgIFRSSUdHRVJfUkVNT1ZFX0ZJ TFRFUjogJ1RSSUdHRVJfUkVNT1ZFX0ZJTFRFUicsCisgIFRSSUdHRVJfU0VUX0xJTUlUOiAnVFJJ R0dFUl9TRVRfTElNSVQnLAorICBUUklHR0VSX0ZPUk1BVF9TUUw6ICdUUklHR0VSX0ZPUk1BVF9T UUwnLAorCisgIENPUFlfREFUQTogJ0NPUFlfREFUQScsCisgIFNFVF9MSU1JVF9WQUxVRTogJ1NF VF9MSU1JVF9WQUxVRScsCisgIFNFVF9DT05ORUNUSU9OX1NUQVRVUzogJ1NFVF9DT05ORUNUSU9O X1NUQVRVUycsCisgIEVYRUNVVElPTl9TVEFSVDogJ0VYRUNVVElPTl9TVEFSVCcsCisgIEVYRUNV VElPTl9FTkQ6ICdFWEVDVVRJT05fRU5EJywKKyAgU1RPUF9RVUVSWTogJ1NUT1BfUVVFUlknLAor ICBDVVJTT1JfQUNUSVZJVFk6ICdDVVJTT1JfQUNUSVZJVFknLAorICBTRVRfTUVTU0FHRTogJ1NF VF9NRVNTQUdFJywKKyAgUk9XU19GRVRDSEVEOiAnUk9XU19GRVRDSEVEJywKKyAgU0VMRUNURURf Uk9XU19DSEFOR0VEOiAnU0VMRUNURURfUk9XU19DSEFOR0VEJywKKyAgREFUQUdSSURfQ0hBTkdF RDogJ0RBVEFHUklEX0NIQU5HRUQnLAorICBISUdITElHSFRfRVJST1I6ICdISUdITElHSFRfRVJS T1InLAorICBGT0NVU19QQU5FTDogJ0ZPQ1VTX1BBTkVMJywKKyAgTE9BRF9GSUxFOiAnTE9BRF9G SUxFJywKKyAgTE9BRF9GSUxFX0RPTkU6ICdMT0FEX0ZJTEVfRE9ORScsCisgIFNBVkVfRklMRTog J1NBVkVfRklMRScsCisgIFNBVkVfRklMRV9ET05FOiAnU0FWRV9GSUxFX0RPTkUnLAorICBRVUVS WV9DSEFOR0VEOiAnUVVFUllfQ0hBTkdFRCcsCisgIEFQSV9FUlJPUjogJ0FQSV9FUlJPUicsCisg IFNBVkVfREFUQV9ET05FOiAnU0FWRV9EQVRBX0RPTkUnLAorICBUQVNLX1NUQVJUOiAnVEFTS19T VEFSVCcsCisgIFRBU0tfRU5EOiAnVEFTS19FTkQnLAorICBSRU5ERVJfR0VPTUVUUklFUzogJ1JF TkRFUl9HRU9NRVRSSUVTJywKKyAgUFVTSF9OT1RJQ0U6ICdQVVNIX05PVElDRScsCisgIFBVU0hf SElTVE9SWTogJ1BVU0hfSElTVE9SWScsCisgIEhBTkRMRV9BUElfRVJST1I6ICdIQU5ETEVfQVBJ X0VSUk9SJywKKyAgU0VUX0ZJTFRFUl9JTkZPOiAnU0VUX0ZJTFRFUl9JTkZPJywKKworICBFRElU T1JfRklORF9SRVBMQUNFOiAnRURJVE9SX0ZJTkRfUkVQTEFDRScsCisgIEVESVRPUl9FWEVDX0NN RDogJ0VESVRPUl9FWEVDX0NNRCcsCisgIEVESVRPUl9TRVRfU1FMOiAnRURJVE9SX1NFVF9TUUwn LAorICBDT1BZX1RPX0VESVRPUjogJ0NPUFlfVE9fRURJVE9SJywKKworICBXQVJOX1NBVkVfREFU QV9DTE9TRTogJ1dBUk5fU0FWRV9EQVRBX0NMT1NFJywKKyAgV0FSTl9TQVZFX1RFWFRfQ0xPU0U6 ICdXQVJOX1NBVkVfVEVYVF9DTE9TRScsCisgIFdBUk5fVFhOX0NMT1NFOiAnV0FSTl9UWE5fQ0xP U0UnLAorCisgIFJFU0VUX0xBWU9VVDogJ1JFU0VUX0xBWU9VVCcsCisgIEZPUkNFX0NMT1NFX1BB TkVMOiAnRk9SQ0VfQ0xPU0VfUEFORUwnLAorfTsKKworZXhwb3J0IGNvbnN0IENPTk5FQ1RJT05f U1RBVFVTID0geworICBUUkFOU0FDVElPTl9TVEFUVVNfSURMRTogMCwKKyAgVFJBTlNBQ1RJT05f U1RBVFVTX0FDVElWRTogMSwKKyAgVFJBTlNBQ1RJT05fU1RBVFVTX0lOVFJBTlM6IDIsCisgIFRS QU5TQUNUSU9OX1NUQVRVU19JTkVSUk9SOiAzLAorICBUUkFOU0FDVElPTl9TVEFUVVNfVU5LTk9X TjogNCwKK307CisKK2V4cG9ydCBjb25zdCBDT05ORUNUSU9OX1NUQVRVU19NRVNTQUdFID0gewor ICBbQ09OTkVDVElPTl9TVEFUVVMuVFJBTlNBQ1RJT05fU1RBVFVTX0lETEVdOiBnZXR0ZXh0KCdU aGUgc2Vzc2lvbiBpcyBpZGxlIGFuZCB0aGVyZSBpcyBubyBjdXJyZW50IHRyYW5zYWN0aW9uLicp LAorICBbQ09OTkVDVElPTl9TVEFUVVMuVFJBTlNBQ1RJT05fU1RBVFVTX0FDVElWRV06IGdldHRl eHQoJ0EgY29tbWFuZCBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MuJyksCisgIFtDT05ORUNUSU9O X1NUQVRVUy5UUkFOU0FDVElPTl9TVEFUVVNfSU5UUkFOU106IGdldHRleHQoJ1RoZSBzZXNzaW9u IGlzIGlkbGUgaW4gYSB2YWxpZCB0cmFuc2FjdGlvbiBibG9jay4nKSwKKyAgW0NPTk5FQ1RJT05f U1RBVFVTLlRSQU5TQUNUSU9OX1NUQVRVU19JTkVSUk9SXTogZ2V0dGV4dCgnVGhlIHNlc3Npb24g aXMgaWRsZSBpbiBhIGZhaWxlZCB0cmFuc2FjdGlvbiBibG9jay4nKSwKKyAgW0NPTk5FQ1RJT05f U1RBVFVTLlRSQU5TQUNUSU9OX1NUQVRVU19VTktOT1dOXTogZ2V0dGV4dCgnVGhlIGNvbm5lY3Rp b24gd2l0aCB0aGUgc2VydmVyIGlzIGJhZC4nKQorfTsKKworZXhwb3J0IGNvbnN0IFBBTkVMUyA9 IHsKKyAgUVVFUlk6ICdpZC1xdWVyeScsCisgIE1FU1NBR0VTOiAnaWQtbWVzc2FnZXMnLAorICBE QVRBX09VVFBVVDogJ2lkLWRhdGFvdXRwdXQnLAorICBFWFBMQUlOOiAnaWQtZXhwbGFpbicsCisg IEdFT01FVFJZOiAnaWQtZ2VvbWV0cnknLAorICBOT1RJRklDQVRJT05TOiAnaWQtbm90aWZpY2F0 aW9ucycsCisgIEhJU1RPUlk6ICdpZC1oaXN0b3J5JywKK307CmRpZmYgLS1naXQgYS93ZWIvcGdh ZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvUXVlcnlUb29sRGF0YUdy aWQvQ29weURhdGEuanMgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2Nv bXBvbmVudHMvUXVlcnlUb29sRGF0YUdyaWQvQ29weURhdGEuanMKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwLi43MDBmNWUwOWUKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvUXVlcnlUb29sRGF0YUdy aWQvQ29weURhdGEuanMKQEAgLTAsMCArMSw5OSBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUg cGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVu ZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0IEpTT05CaWdOdW1i ZXIgZnJvbSAnanNvbi1iaWdudW1iZXInOworaW1wb3J0IF8gZnJvbSAnbG9kYXNoJzsKK2ltcG9y dCB7IENTVlRvQXJyYXkgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvdXRpbHMn OworCitleHBvcnQgZGVmYXVsdCBjbGFzcyBDb3B5RGF0YSB7CisgIGNvbnN0cnVjdG9yKG9wdGlv bnMpIHsKKyAgICB0aGlzLkNTVk9wdGlvbnMgPSB7CisgICAgICBmaWVsZF9zZXBhcmF0b3I6ICdc dCcsCisgICAgICBxdW90ZV9jaGFyOiAnIicsCisgICAgICBxdW90aW5nOiAnc3RyaW5ncycsCisg ICAgICAuLi5vcHRpb25zLAorICAgIH07CisgIH0KKworICBzZXRDU1ZPcHRpb25zKG9wdGlvbnMp IHsKKyAgICB0aGlzLkNTVk9wdGlvbnMgPSB7CisgICAgICAuLi50aGlzLkNTVk9wdGlvbnMsCisg ICAgICAuLi5vcHRpb25zLAorICAgIH07CisgIH0KKworICBjb3B5Um93c1RvQ3N2KHJvd3M9W10s IGNvbHVtbnM9W10sIHdpdGhIZWFkZXJzPWZhbHNlKSB7CisgICAgbGV0IGNzdlJvd3MgPSByb3dz LnJlZHVjZSgocHJldkNzdlJvd3MsIGN1cnJSb3cpPT57CisgICAgICBsZXQgY3N2Um93ID0gY29s dW1ucy5yZWR1Y2UoKHByZXZDc3ZDb2xzLCBjb2x1bW4pPT57CisgICAgICAgIHByZXZDc3ZDb2xz LnB1c2godGhpcy5jc3ZDZWxsKGN1cnJSb3dbY29sdW1uLmtleV0sIGNvbHVtbikpOworICAgICAg ICByZXR1cm4gcHJldkNzdkNvbHM7CisgICAgICB9LCBbXSkuam9pbih0aGlzLkNTVk9wdGlvbnMu ZmllbGRfc2VwYXJhdG9yKTsKKyAgICAgIHByZXZDc3ZSb3dzLnB1c2goY3N2Um93KTsKKyAgICAg IHJldHVybiBwcmV2Q3N2Um93czsKKyAgICB9LCBbXSk7CisKKyAgICBpZih3aXRoSGVhZGVycykg eworICAgICAgbGV0IGNzdlJvdyA9IGNvbHVtbnMucmVkdWNlKChwcmV2Q3N2Q29scywgY29sdW1u KT0+eworICAgICAgICBwcmV2Q3N2Q29scy5wdXNoKHRoaXMuY3N2Q2VsbChjb2x1bW4ubmFtZSwg Y29sdW1uLCB0cnVlKSk7CisgICAgICAgIHJldHVybiBwcmV2Q3N2Q29sczsKKyAgICAgIH0sIFtd KS5qb2luKHRoaXMuQ1NWT3B0aW9ucy5maWVsZF9zZXBhcmF0b3IpOworICAgICAgY3N2Um93cy51 bnNoaWZ0KGNzdlJvdyk7CisgICAgfQorICAgIG5hdmlnYXRvci5jbGlwYm9hcmQud3JpdGVUZXh0 KGNzdlJvd3Muam9pbignXG4nKSk7CisgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NsaXBib2Fy ZCcsIGNzdlJvd3Muam9pbignXG4nKSk7CisgICAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ2NvcGll ZC13aXRoLWhlYWRlcnMnLCB3aXRoSGVhZGVycyk7CisgIH0KKworICBlc2NhcGUoaVN0cikgewor ICAgIHJldHVybiAodGhpcy5DU1ZPcHRpb25zLnF1b3RlX2NoYXIgPT0gJyInKSA/CisgICAgICBp U3RyLnJlcGxhY2UoL1wiL2csICciIicpIDogaVN0ci5yZXBsYWNlKC9cJy9nLCAnXCdcJycpOwor ICB9CisKKyAgYWxsUXVvdGVDZWxsKHZhbHVlKSB7CisgICAgaWYgKHZhbHVlICYmIF8uaXNPYmpl Y3QodmFsdWUpKSB7CisgICAgICB2YWx1ZSA9IHRoaXMuQ1NWT3B0aW9ucy5xdW90ZV9jaGFyICsg SlNPTkJpZ051bWJlci5zdHJpbmdpZnkodmFsdWUpICsgdGhpcy5DU1ZPcHRpb25zLnF1b3RlX2No YXI7CisgICAgfSBlbHNlIGlmICh2YWx1ZSkgeworICAgICAgdmFsdWUgPSB0aGlzLkNTVk9wdGlv bnMucXVvdGVfY2hhciArIHRoaXMuZXNjYXBlKHZhbHVlLnRvU3RyaW5nKCkpICsgdGhpcy5DU1ZP cHRpb25zLnF1b3RlX2NoYXI7CisgICAgfSBlbHNlIGlmIChfLmlzTnVsbCh2YWx1ZSkgfHwgXy5p c1VuZGVmaW5lZCh2YWx1ZSkpIHsKKyAgICAgIHZhbHVlID0gJyc7CisgICAgfQorICAgIHJldHVy biB2YWx1ZTsKKyAgfQorCisgIHN0cmluZ1F1b3RlQ2VsbCh2YWx1ZSwgY29sdW1uKSB7CisgICAg aWYgKHZhbHVlICYmIF8uaXNPYmplY3QodmFsdWUpKSB7CisgICAgICB2YWx1ZSA9IHRoaXMuQ1NW T3B0aW9ucy5xdW90ZV9jaGFyICsgSlNPTkJpZ051bWJlci5zdHJpbmdpZnkodmFsdWUpICsgdGhp cy5DU1ZPcHRpb25zLnF1b3RlX2NoYXI7CisgICAgfSBlbHNlIGlmICh2YWx1ZSAmJiBjb2x1bW4u Y2VsbCAhPSAnbnVtYmVyJyAmJiBjb2x1bW4uY2VsbCAhPSAnYm9vbGVhbicpIHsKKyAgICAgIHZh bHVlID0gdGhpcy5DU1ZPcHRpb25zLnF1b3RlX2NoYXIgKyB0aGlzLmVzY2FwZSh2YWx1ZS50b1N0 cmluZygpKSArIHRoaXMuQ1NWT3B0aW9ucy5xdW90ZV9jaGFyOworICAgIH0gZWxzZSBpZiAoY29s dW1uLmNlbGwgPT0gJ3N0cmluZycgJiYgXy5pc051bGwodmFsdWUpKXsKKyAgICAgIHZhbHVlID0g bnVsbDsKKyAgICB9IGVsc2UgaWYgKF8uaXNOdWxsKHZhbHVlKSB8fCBfLmlzVW5kZWZpbmVkKHZh bHVlKSkgeworICAgICAgdmFsdWUgPSAnJzsKKyAgICB9CisgICAgcmV0dXJuIHZhbHVlOworICB9 CisKKyAgY3N2Q2VsbCh2YWx1ZSwgY29sdW1uLCBoZWFkZXI9ZmFsc2UpIHsKKyAgICBpZiAodGhp cy5DU1ZPcHRpb25zLnF1b3RpbmcgPT0gJ2FsbCcgfHwgaGVhZGVyKSB7CisgICAgICB2YWx1ZSA9 IHRoaXMuYWxsUXVvdGVDZWxsKHZhbHVlKTsKKyAgICB9IGVsc2UgaWYodGhpcy5DU1ZPcHRpb25z LnF1b3RpbmcgPT0gJ3N0cmluZ3MnKSB7CisgICAgICB2YWx1ZSA9IHRoaXMuc3RyaW5nUXVvdGVD ZWxsKHZhbHVlLCBjb2x1bW4pOworICAgIH0KKyAgICByZXR1cm4gdmFsdWU7CisgIH0KKworICBh c3luYyBnZXRDb3BpZWRSb3dzKCkgeworICAgIGxldCBjb3BpZWRUZXh0ID0gYXdhaXQgbmF2aWdh dG9yLmNsaXBib2FyZC5yZWFkVGV4dCgpOworICAgIGxldCBjb3BpZWRSb3dzID0gQ1NWVG9BcnJh eShjb3BpZWRUZXh0LCB0aGlzLkNTVk9wdGlvbnMuZmllbGRfc2VwYXJhdG9yLCB0aGlzLkNTVk9w dGlvbnMucXVvdGVfY2hhcik7CisKKyAgICBpZihsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnY29waWVk LXdpdGgtaGVhZGVycycpID09ICd0cnVlJykgeworICAgICAgY29waWVkUm93cyA9IGNvcGllZFJv d3Muc2xpY2UoMSk7CisgICAgfQorICAgIHJldHVybiBjb3BpZWRSb3dzOworICB9Cit9CmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMv UXVlcnlUb29sRGF0YUdyaWQvRWRpdG9ycy5qc3ggYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0 b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvUXVlcnlUb29sRGF0YUdyaWQvRWRpdG9ycy5qc3gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi45YjgyMmQzYTcKLS0tIC9kZXYvbnVs bAorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMv UXVlcnlUb29sRGF0YUdyaWQvRWRpdG9ycy5qc3gKQEAgLTAsMCArMSwzMjggQEAKKy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8v CisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAy MDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2Fy ZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2lt cG9ydCB7IG1ha2VTdHlsZXMsIEJveCwgUG9ydGFsIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUn OworaW1wb3J0IFJlYWN0LCB7dXNlQ29udGV4dH0gZnJvbSAncmVhY3QnOworaW1wb3J0IHsgRGVm YXVsdEJ1dHRvbiwgUHJpbWFyeUJ1dHRvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRp Yy9qcy9jb21wb25lbnRzL0J1dHRvbnMnOworaW1wb3J0IENoZWNrUm91bmRlZEljb24gZnJvbSAn QG1hdGVyaWFsLXVpL2ljb25zL0NoZWNrUm91bmRlZCc7CitpbXBvcnQgQ2xvc2VJY29uIGZyb20g J0BtYXRlcmlhbC11aS9pY29ucy9DbG9zZSc7CitpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2Vz L2dldHRleHQnOworaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7CitpbXBvcnQgSlNPTkJpZ051bWJl ciBmcm9tICdqc29uLWJpZ251bWJlcic7CitpbXBvcnQgSnNvbkVkaXRvciBmcm9tICcuLi8uLi8u Li8uLi8uLi8uLi9zdGF0aWMvanMvY29tcG9uZW50cy9Kc29uRWRpdG9yJzsKK2ltcG9ydCBQcm9w VHlwZXMgZnJvbSAncHJvcC10eXBlcyc7CitpbXBvcnQgeyBSb3dJbmZvQ29udGV4dCB9IGZyb20g Jy4nOworCitjb25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSk9Pih7CisgIHRleHRF ZGl0b3I6IHsKKyAgICBwb3NpdGlvbjogJ2Fic29sdXRlJywKKworICAgIHpJbmRleDogMTA1MCwK KyAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZC5kZWZhdWx0LAor ICAgIHBhZGRpbmc6ICcwLjI1cmVtJywKKyAgICBmb250U2l6ZTogJzEycHgnLAorICAgIC4uLnRo ZW1lLm1peGlucy5wYW5lbEJvcmRlci5hbGwsCisgICAgbGVmdDogMCwKKyAgICAvLyBib3R0b206 IDAsCisgICAgdG9wOiAwLAorICAgICcmIHRleHRhcmVhJzogeworICAgICAgd2lkdGg6ICcyNTBw eCcsCisgICAgICBoZWlnaHQ6ICc4MHB4JywKKyAgICAgIGJvcmRlcjogMCwKKyAgICAgIG91dGxp bmU6IDAsCisgICAgICByZXNpemU6ICdib3RoJywKKyAgICB9CisgIH0sCisgIGpzb25FZGl0b3I6 IHsKKyAgICBwb3NpdGlvbjogJ2Fic29sdXRlJywKKyAgICB6SW5kZXg6IDEwNTAsCisgICAgYmFj a2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQuZGVmYXVsdCwKKyAgICAuLi50 aGVtZS5taXhpbnMucGFuZWxCb3JkZXIsCisgICAgcGFkZGluZzogJzAuMjVyZW0nLAorICAgICcm IC5qc29uZWRpdG9yLWRpdic6IHsKKyAgICAgIGZvbnRTaXplOiAnMTJweCcsCisgICAgICBtaW5X aWR0aDogJzUyNXB4JywKKyAgICAgIG1pbkhlaWdodDogJzMwMHB4JywKKyAgICAgIC4uLnRoZW1l Lm1peGlucy5wYW5lbEJvcmRlci5hbGwsCisgICAgICBvdXRsaW5lOiAwLAorICAgICAgcmVzaXpl OiAnYm90aCcsCisgICAgICBvdmVyZmxvdzogJ2F1dG8nLAorICAgIH0sCisgICAgJyYgLmpzb25l ZGl0b3InOiB7CisgICAgICBoZWlnaHQ6ICdhYmMnLAorICAgICAgYm9yZGVyOiAnbm9uZScsCisg ICAgICAnJiAuYWNlLWpzb25lZGl0b3IgLmFjZV9tYXJrZXItbGF5ZXIgLmFjZV9hY3RpdmUtbGlu ZSc6IHsKKyAgICAgICAgYmFja2dyb3VuZDogdGhlbWUucGFsZXR0ZS5wcmltYXJ5LmxpZ2h0Cisg ICAgICB9CisgICAgfQorICB9LAorICBidXR0b25NYXJnaW46IHsKKyAgICBtYXJnaW5MZWZ0OiAn MC41cmVtJywKKyAgfSwKKyAgdGV4dGFyZWE6IHsKKyAgICByZXNpemU6ICdib3RoJworICB9LAor ICBpbnB1dDogeworICAgIGFwcGVhcmFuY2U6ICdub25lJywKKyAgICB3aWR0aDogJzEwMCUnLAor ICAgIGhlaWdodDogJzEwMCUnLAorICAgIHZlcnRpY2FsQWxpZ246ICd0b3AnLAorICAgIG91dGxp bmU6ICdub25lJywKKyAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuYmFja2dyb3Vu ZC5kZWZhdWx0LAorICAgIGNvbG9yOiB0aGVtZS5wYWxldHRlLnRleHQucHJpbWFyeSwKKyAgICBi b3JkZXI6IDAsCisgICAgYm94U2hhZG93OiAnaW5zZXQgMCAwIDAgMS41cHggJyt0aGVtZS5wYWxl dHRlLnByaW1hcnkubWFpbiwKKyAgICBwYWRkaW5nOiAnMCAycHgnLAorICAgICc6OnNlbGVjdGlv bic6IHsKKyAgICAgIGJhY2tncm91bmQ6IHRoZW1lLnBhbGV0dGUucHJpbWFyeS5saWdodCwKKyAg ICB9CisgIH0sCisgIGNoZWNrOiB7CisgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsCisgICAg dmVydGljYWxBbGlnbjogJ3RvcCcsCisgICAgd2lkdGg6ICcxNnB4JywKKyAgICBoZWlnaHQ6ICcx NnB4JywKKyAgICBib3JkZXI6ICcxcHggc29saWQgJyt0aGVtZS5wYWxldHRlLmdyZXlbODAwXSwK KyAgICBtYXJnaW46ICczcHgnLAorICAgIHRleHRBbGlnbjogJ2NlbnRlcicsCisgICAgbGluZUhl aWdodDogJzE2cHgnLAorCisgICAgJyYuY2hlY2tlZCwgJi51bmNoZWNrZWQnOiB7CisgICAgICBi YWNrZ3JvdW5kOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQuZGVmYXVsdCwKKyAgICB9LAorICAg ICcmLmNoZWNrZWQ6YWZ0ZXInOiB7CisgICAgICBjb250ZW50OiAnXCdcXDI3MTNcJycsCisgICAg ICBmb250V2VpZ2h0OiAnYm9sZCcsCisgICAgfSwKKyAgICAnJi5pbnRlcm1lZGlhdGUnOiB7Cisg ICAgICBiYWNrZ3JvdW5kOiB0aGVtZS5wYWxldHRlLmdyZXlbMjAwXSwKKyAgICAgICcmOmFmdGVy JzogeworICAgICAgICBjb250ZW50OiAnXCdcXDAwM0ZcJycsCisgICAgICAgIGZvbnRXZWlnaHQ6 ICdib2xkJywKKyAgICAgIH0sCisgICAgfSwKKyAgfQorfSkpOworCitmdW5jdGlvbiBhdXRvRm9j dXNBbmRTZWxlY3QoaW5wdXQpIHsKKyAgaW5wdXQ/LmZvY3VzKCk7CisgIGlucHV0Py5zZWxlY3Qo KTsKK30KKworZnVuY3Rpb24gaXNWYWxpZEFycmF5KHZhbCkgeworICB2YWwgPSB2YWw/LnRyaW0o KTsKKyAgcmV0dXJuICEodmFsICE9ICcnICYmICh2YWwuY2hhckF0KDApICE9ICd7JyB8fCB2YWwu Y2hhckF0KHZhbC5sZW5ndGggLSAxKSAhPSAnfScpKTsKK30KKworZnVuY3Rpb24gc2V0RWRpdG9y UG9zaXRpb24oY2VsbEVsZSwgZWRpdG9yRWxlKSB7CisgIGlmKCFlZGl0b3JFbGUgfHwgIWNlbGxF bGUpIHsKKyAgICByZXR1cm47CisgIH0KKyAgbGV0IGdyaWRFbGUgPSBjZWxsRWxlLmNsb3Nlc3Qo Jy5yZGcnKTsKKyAgbGV0IGNlbGxSZWN0ID0gY2VsbEVsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qo KTsKKyAgbGV0IHBvc2l0aW9uID0geworICAgIGxlZnQ6IGNlbGxSZWN0LmxlZnQsCisgICAgdG9w OiBjZWxsUmVjdC50b3AgLSBlZGl0b3JFbGUub2Zmc2V0SGVpZ2h0ICsgMTIsCisgIH07CisKKyAg aWYgKChwb3NpdGlvbi5sZWZ0ICsgZWRpdG9yRWxlLm9mZnNldFdpZHRoICsgMTApID4gZ3JpZEVs ZS5vZmZzZXRXaWR0aCkgeworICAgIHBvc2l0aW9uLmxlZnQgLT0gIHBvc2l0aW9uLmxlZnQgKyBl ZGl0b3JFbGUub2Zmc2V0V2lkdGggLSBncmlkRWxlLm9mZnNldFdpZHRoICsgMTA7CisgIH0KKyAg ZWRpdG9yRWxlLnN0eWxlLmxlZnQgPSBwb3NpdGlvbi5sZWZ0ICsgJ3B4JzsKKyAgZWRpdG9yRWxl LnN0eWxlLnRvcCA9IHBvc2l0aW9uLnRvcCArICdweCc7Cit9CisKK2NvbnN0IEVkaXRvclByb3BU eXBlcyA9IHsKKyAgcm93OiBQcm9wVHlwZXMub2JqZWN0LAorICBjb2x1bW46IFByb3BUeXBlcy5v YmplY3QsCisgIG9uUm93Q2hhbmdlOiBQcm9wVHlwZXMuZnVuYywKKyAgb25DbG9zZTogUHJvcFR5 cGVzLmZ1bmMKK307CisKK2Z1bmN0aW9uIHRleHRDb2x1bW5GaW5hbFZhbChjb2x1bW5WYWwsIGNv bHVtbikgeworICBpZihjb2x1bW5WYWwgPT09ICcnKSB7CisgICAgY29sdW1uVmFsID0gbnVsbDsK KyAgfSBlbHNlIGlmICghY29sdW1uLmlzX2FycmF5KSB7CisgICAgaWYgKGNvbHVtblZhbCA9PT0g J1wnXCcnIHx8IGNvbHVtblZhbCA9PT0gJyIiJykgeworICAgICAgY29sdW1uVmFsID0gJyc7Cisg ICAgfSBlbHNlIGlmIChjb2x1bW5WYWwgPT09ICdcXFwnXFxcJycpIHsKKyAgICAgIGNvbHVtblZh bCA9ICdcJ1wnJzsKKyAgICB9IGVsc2UgaWYgKGNvbHVtblZhbCA9PT0gJ1xcIlxcIicpIHsKKyAg ICAgIGNvbHVtblZhbCA9ICciIic7CisgICAgfQorICB9CisgIHJldHVybiBjb2x1bW5WYWw7Cit9 CitleHBvcnQgZnVuY3Rpb24gVGV4dEVkaXRvcih7cm93LCBjb2x1bW4sIG9uUm93Q2hhbmdlLCBv bkNsb3NlfSkgeworICBjb25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7CisgIGNvbnN0IHZhbHVl ID0gcm93W2NvbHVtbi5rZXldID8/ICcnOworICBjb25zdCBbbG9jYWxWYWwsIHNldExvY2FsVmFs XSA9IFJlYWN0LnVzZVN0YXRlKHZhbHVlKTsKKyAgY29uc3Qge2dldENlbGxFbGVtZW50fSA9IHVz ZUNvbnRleHQoUm93SW5mb0NvbnRleHQpOworCisgIGNvbnN0IG9uQ2hhbmdlID0gUmVhY3QudXNl Q2FsbGJhY2soKGUpPT57CisgICAgc2V0TG9jYWxWYWwoZS50YXJnZXQudmFsdWUpOworICB9LCBb XSk7CisKKyAgY29uc3Qgb25PSyA9ICgpPT57CisgICAgaWYoY29sdW1uLmlzX2FycmF5ICYmICFp c1ZhbGlkQXJyYXkodmFsdWUpKSB7CisgICAgICBjb25zb2xlLmVycm9yKGdldHRleHQoJ0FycmF5 cyBtdXN0IHN0YXJ0IHdpdGggInsiIGFuZCBlbmQgd2l0aCAifSInKSk7CisgICAgfSBlbHNlIHsK KyAgICAgIGxldCBjb2x1bW5WYWwgPSB0ZXh0Q29sdW1uRmluYWxWYWwobG9jYWxWYWwsIGNvbHVt bik7CisgICAgICBvblJvd0NoYW5nZSh7IC4uLnJvdywgW2NvbHVtbi5rZXldOiBjb2x1bW5WYWx9 LCB0cnVlKTsKKyAgICAgIG9uQ2xvc2UoKTsKKyAgICB9CisgIH07CisKKyAgcmV0dXJuKAorICAg IDxQb3J0YWwgY29udGFpbmVyPXtkb2N1bWVudC5ib2R5fT4KKyAgICAgIDxCb3ggcmVmPXsoZWxl KT0+eworICAgICAgICBzZXRFZGl0b3JQb3NpdGlvbihnZXRDZWxsRWxlbWVudChjb2x1bW4uaWR4 KSwgZWxlKTsKKyAgICAgIH19IGNsYXNzTmFtZT17Y2xhc3Nlcy50ZXh0RWRpdG9yfT4KKyAgICAg ICAgPHRleHRhcmVhIHJlZj17YXV0b0ZvY3VzQW5kU2VsZWN0fSBjbGFzc05hbWU9e2NsYXNzZXMu dGV4dGFyZWF9IHZhbHVlPXtsb2NhbFZhbH0gb25DaGFuZ2U9e29uQ2hhbmdlfSAvPgorICAgICAg ICA8Qm94IGRpc3BsYXk9ImZsZXgiIGp1c3RpZnlDb250ZW50PSJmbGV4LWVuZCI+CisgICAgICAg ICAgPERlZmF1bHRCdXR0b24gc3RhcnRJY29uPXs8Q2xvc2VJY29uIC8+fSBvbkNsaWNrPXsoKT0+ b25DbG9zZShmYWxzZSl9IHNpemU9InNtYWxsIj4KKyAgICAgICAgICAgIHtnZXR0ZXh0KCdDYW5j ZWwnKX0KKyAgICAgICAgICA8L0RlZmF1bHRCdXR0b24+CisgICAgICAgICAge2NvbHVtbi5jYW5f ZWRpdCAmJgorICAgICAgICAgIDw+CisgICAgICAgICAgICA8UHJpbWFyeUJ1dHRvbiBzdGFydElj b249ezxDaGVja1JvdW5kZWRJY29uIC8+fSBvbkNsaWNrPXtvbk9LfSBzaXplPSJzbWFsbCIgY2xh c3NOYW1lPXtjbGFzc2VzLmJ1dHRvbk1hcmdpbn0+CisgICAgICAgICAgICAgIHtnZXR0ZXh0KCdP SycpfQorICAgICAgICAgICAgPC9QcmltYXJ5QnV0dG9uPgorICAgICAgICAgIDwvPn0KKyAgICAg ICAgPC9Cb3g+CisgICAgICA8L0JveD4KKyAgICA8L1BvcnRhbD4KKyAgKTsKK30KK1RleHRFZGl0 b3IucHJvcFR5cGVzID0gRWRpdG9yUHJvcFR5cGVzOworCitleHBvcnQgZnVuY3Rpb24gTnVtYmVy RWRpdG9yKHtyb3csIGNvbHVtbiwgb25Sb3dDaGFuZ2UsIG9uQ2xvc2V9KSB7CisgIGNvbnN0IGNs YXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAgY29uc3QgdmFsdWUgPSByb3dbY29sdW1uLmtleV0gPz8g Jyc7CisgIGNvbnN0IG9uQmx1ciA9ICgpPT57CisgICAgaWYoY29sdW1uLmNhbl9lZGl0ICYmIGNv bHVtbi5pc19hcnJheSAmJiAhaXNWYWxpZEFycmF5KHZhbHVlKSkgeworICAgICAgY29uc29sZS5l cnJvcihnZXR0ZXh0KCdBcnJheXMgbXVzdCBzdGFydCB3aXRoICJ7IiBhbmQgZW5kIHdpdGggIn0i JykpOworICAgIH0gZWxzZSB7CisgICAgICBvbkNsb3NlKGNvbHVtbi5jYW5fZWRpdCA/IHRydWUg OiBmYWxzZSk7CisgICAgfQorICB9OworICBjb25zdCBvbktleURvd24gPSAoZSk9PnsKKyAgICBp ZihlLmNvZGUgPT0gJ1RhYicpIHsKKyAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAgIG9u Qmx1cigpOworICAgIH0KKyAgfTsKKyAgcmV0dXJuICgKKyAgICA8aW5wdXQKKyAgICAgIGNsYXNz TmFtZT17Y2xhc3Nlcy5pbnB1dH0KKyAgICAgIHJlZj17YXV0b0ZvY3VzQW5kU2VsZWN0fQorICAg ICAgdmFsdWU9e3ZhbHVlfQorICAgICAgb25DaGFuZ2U9eyhlKT0+eworICAgICAgICBpZihjb2x1 bW4uY2FuX2VkaXQpIHsKKyAgICAgICAgICBvblJvd0NoYW5nZSh7IC4uLnJvdywgW2NvbHVtbi5r ZXldOiBlLnRhcmdldC52YWx1ZSB9KTsKKyAgICAgICAgfQorICAgICAgfX0KKyAgICAgIG9uQmx1 cj17b25CbHVyfQorICAgICAgb25LZXlEb3duPXtvbktleURvd259CisgICAgLz4KKyAgKTsKK30K K051bWJlckVkaXRvci5wcm9wVHlwZXMgPSBFZGl0b3JQcm9wVHlwZXM7CisKK2V4cG9ydCBmdW5j dGlvbiBDaGVja2JveEVkaXRvcih7cm93LCBjb2x1bW4sIG9uUm93Q2hhbmdlLCBvbkNsb3NlfSkg eworICBjb25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7CisgIGNvbnN0IHZhbHVlID0gcm93W2Nv bHVtbi5rZXldID8/IG51bGw7CisgIGNvbnN0IGNoYW5nZVZhbHVlID0gKCk9PnsKKyAgICBpZigh Y29sdW1uLmNhbl9lZGl0KSB7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGxldCBuZXdWYWwg PSB0cnVlOworICAgIGlmKHZhbHVlKSB7CisgICAgICBuZXdWYWwgPSBmYWxzZTsKKyAgICB9IGVs c2UgaWYodmFsdWUgIT0gbnVsbCAmJiAhdmFsdWUpIHsKKyAgICAgIG5ld1ZhbCA9IG51bGw7Cisg ICAgfQorICAgIG9uUm93Q2hhbmdlKHsgLi4ucm93LCBbY29sdW1uLmtleV06IG5ld1ZhbH0pOwor ICB9OworICBjb25zdCBvbkJsdXIgPSAoKT0+e29uQ2xvc2UodHJ1ZSk7fTsKKyAgbGV0IGNsYXNz TmFtZSA9ICdjaGVja2VkJzsKKyAgaWYoIXZhbHVlKSB7CisgICAgY2xhc3NOYW1lID0gJ3VuY2hl Y2tlZCc7CisgIH0gZWxzZSBpZih2YWx1ZSA9PSBudWxsKXsKKyAgICBjbGFzc05hbWUgPSAnaW50 ZXJtZWRpYXRlJzsKKyAgfQorICByZXR1cm4gKAorICAgIDxkaXYgb25DbGljaz17Y2hhbmdlVmFs dWV9IHRhYkluZGV4PSIwIiBvbkJsdXI9e29uQmx1cn0+CisgICAgICA8c3BhbiBjbGFzc05hbWU9 e2Nsc3goY2xhc3Nlcy5jaGVjaywgY2xhc3NOYW1lKX0+PC9zcGFuPgorICAgIDwvZGl2PgorICAp OworfQorQ2hlY2tib3hFZGl0b3IucHJvcFR5cGVzID0gRWRpdG9yUHJvcFR5cGVzOworCitleHBv cnQgZnVuY3Rpb24gSnNvblRleHRFZGl0b3Ioe3JvdywgY29sdW1uLCBvblJvd0NoYW5nZSwgb25D bG9zZX0pIHsKKyAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpOworICBjb25zdCB7Z2V0Q2Vs bEVsZW1lbnR9ID0gdXNlQ29udGV4dChSb3dJbmZvQ29udGV4dCk7CisgIGNvbnN0IHZhbHVlID0g UmVhY3QudXNlTWVtbygoKT0+eworICAgIGxldCBuZXdWYWwgPSByb3dbY29sdW1uLmtleV0gPz8g bnVsbDsKKyAgICAvKiBJZiBqc29uYiBvciBhcnJheSAqLworICAgIGlmKGNvbHVtbi5jb2x1bW5f dHlwZV9pbnRlcm5hbCA9PT0gJ2pzb25iJyAmJiAhQXJyYXkuaXNBcnJheShuZXdWYWwpICYmIG5l d1ZhbCAhPSBudWxsKSB7CisgICAgICBuZXdWYWwgPSBKU09OQmlnTnVtYmVyLnN0cmluZ2lmeShK U09OQmlnTnVtYmVyLnBhcnNlKG5ld1ZhbCksIG51bGwsIDIpOworICAgIH0gZWxzZSBpZiAoQXJy YXkuaXNBcnJheShuZXdWYWwpKSB7CisgICAgICB2YXIgdGVtcCA9IG5ld1ZhbC5tYXAoKGVsZSk9 PnsKKyAgICAgICAgaWYgKHR5cGVvZiBlbGUgPT09ICdvYmplY3QnKSB7CisgICAgICAgICAgcmV0 dXJuIEpTT05CaWdOdW1iZXIuc3RyaW5naWZ5KGVsZSwgbnVsbCwgMik7CisgICAgICAgIH0KKyAg ICAgICAgcmV0dXJuIGVsZTsKKyAgICAgIH0pOworICAgICAgbmV3VmFsID0gJ1snICsgdGVtcC5q b2luKCkgKyAnXSc7CisgICAgfQorICAgIC8qIHNldCBlZGl0b3IgY29udGVudCB0byBlbXB0eSBp ZiB2YWx1ZSBpcyBudWxsKi8KKyAgICBpZiAoXy5pc051bGwobmV3VmFsKSl7CisgICAgICBuZXdW YWwgPSAnJzsKKyAgICB9CisgICAgcmV0dXJuIG5ld1ZhbDsKKyAgfSk7CisgIGNvbnN0IFtsb2Nh bFZhbCwgc2V0TG9jYWxWYWxdID0gUmVhY3QudXNlU3RhdGUodmFsdWUpOworCisgIGNvbnN0IG9u Q2hhbmdlID0gUmVhY3QudXNlQ2FsbGJhY2soKG5ld1ZhbCk9PnsKKyAgICBzZXRMb2NhbFZhbChu ZXdWYWwpOworICB9LCBbXSk7CisgIGNvbnN0IG9uT0sgPSAoKT0+eworICAgIG9uUm93Q2hhbmdl KHsgLi4ucm93LCBbY29sdW1uLmtleV06IGxvY2FsVmFsfSwgdHJ1ZSk7CisgICAgb25DbG9zZSgp OworICB9OworICByZXR1cm4gKAorICAgIDxQb3J0YWwgY29udGFpbmVyPXtkb2N1bWVudC5ib2R5 fT4KKyAgICAgIDxCb3ggcmVmPXsoZWxlKT0+eworICAgICAgICBzZXRFZGl0b3JQb3NpdGlvbihn ZXRDZWxsRWxlbWVudChjb2x1bW4uaWR4KSwgZWxlKTsKKyAgICAgIH19IGNsYXNzTmFtZT17Y2xh c3Nlcy5qc29uRWRpdG9yfT4KKyAgICAgICAgPEpzb25FZGl0b3IKKyAgICAgICAgICB2YWx1ZT17 bG9jYWxWYWx9CisgICAgICAgICAgb3B0aW9ucz17eworICAgICAgICAgICAgb25DaGFuZ2U6IG9u Q2hhbmdlLAorICAgICAgICAgICAgb25FcnJvcjogKGVycm9yKT0+Y29uc29sZS5lcnJvcignSW52 YWxpZCBKc29uOiAnICsgZXJyb3IubWVzc2FnZS5zcGxpdCgnOicpWzBdKSwKKyAgICAgICAgICB9 fQorICAgICAgICAgIC8vIG1vZGU9J2NvZGUnCisgICAgICAgICAgY2xhc3NOYW1lPXsnanNvbmVk aXRvci1kaXYnfQorICAgICAgICAvPgorICAgICAgICA8Qm94IGRpc3BsYXk9ImZsZXgiIGp1c3Rp ZnlDb250ZW50PSJmbGV4LWVuZCIgbWFyZ2luVG9wPSIwLjI1cmVtIj4KKyAgICAgICAgICA8RGVm YXVsdEJ1dHRvbiBzdGFydEljb249ezxDbG9zZUljb24gLz59IG9uQ2xpY2s9eygpPT5vbkNsb3Nl KGZhbHNlKX0gc2l6ZT0ic21hbGwiPgorICAgICAgICAgICAge2dldHRleHQoJ0NhbmNlbCcpfQor ICAgICAgICAgIDwvRGVmYXVsdEJ1dHRvbj4KKyAgICAgICAgICB7Y29sdW1uLmNhbl9lZGl0ICYm CisgICAgICAgICAgPD4KKyAgICAgICAgICAgIDxQcmltYXJ5QnV0dG9uIHN0YXJ0SWNvbj17PENo ZWNrUm91bmRlZEljb24gLz59IG9uQ2xpY2s9e29uT0t9IHNpemU9InNtYWxsIiBjbGFzc05hbWU9 e2NsYXNzZXMuYnV0dG9uTWFyZ2lufT4KKyAgICAgICAgICAgICAge2dldHRleHQoJ09LJyl9Cisg ICAgICAgICAgICA8L1ByaW1hcnlCdXR0b24+CisgICAgICAgICAgPC8+fQorICAgICAgICA8L0Jv eD4KKyAgICAgIDwvQm94PgorICAgIDwvUG9ydGFsPgorICApOworfQorSnNvblRleHRFZGl0b3Iu cHJvcFR5cGVzID0gRWRpdG9yUHJvcFR5cGVzOwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9jb21wb25lbnRzL1F1ZXJ5VG9vbERhdGFHcmlkL0Zvcm1h dHRlcnMuanN4IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9jb21wb25l bnRzL1F1ZXJ5VG9vbERhdGFHcmlkL0Zvcm1hdHRlcnMuanN4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAwMDAwMDAwMC4uNjgyYTJlMGY4Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRt aW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9jb21wb25lbnRzL1F1ZXJ5VG9vbERhdGFHcmlk L0Zvcm1hdHRlcnMuanN4CkBAIC0wLDAgKzEsNzMgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQg LSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhl IHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1 bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCBSZWFjdCBmcm9t ICdyZWFjdCc7CitpbXBvcnQgXyBmcm9tICdsb2Rhc2gnOworaW1wb3J0IHsgbWFrZVN0eWxlcyB9 IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJzsKK2ltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10 eXBlcyc7CitpbXBvcnQgQ3VzdG9tUHJvcFR5cGVzIGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0 YXRpYy9qcy9jdXN0b21fcHJvcF90eXBlcyc7CisKK2NvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHls ZXMoKHRoZW1lKT0+KHsKKyAgZGlzYWJsZWRDZWxsOiB7CisgICAgb3BhY2l0eTogdGhlbWUucGFs ZXR0ZS5hY3Rpb24uZGlzYWJsZWRPcGFjaXR5LAorICB9Cit9KSk7CisKK2Z1bmN0aW9uIE51bGxB bmREZWZhdWx0Rm9ybWF0dGVyKHt2YWx1ZSwgY29sdW1uLCBjaGlsZHJlbn0pIHsKKyAgY29uc3Qg Y2xhc3NlcyA9IHVzZVN0eWxlcygpOworICBpZiAoXy5pc1VuZGVmaW5lZCh2YWx1ZSkgJiYgY29s dW1uLmhhc19kZWZhdWx0X3ZhbCkgeworICAgIHJldHVybiA8c3BhbiBjbGFzc05hbWU9e2NsYXNz ZXMuZGlzYWJsZWRDZWxsfT5bZGVmYXVsdF08L3NwYW4+OworICB9IGVsc2UgaWYgKChfLmlzVW5k ZWZpbmVkKHZhbHVlKSAmJiBjb2x1bW4ubm90X251bGwpIHx8CisgICAgICAoXy5pc1VuZGVmaW5l ZCh2YWx1ZSkgfHwgXy5pc051bGwodmFsdWUpKSkgeworICAgIHJldHVybiA8c3BhbiBjbGFzc05h bWU9e2NsYXNzZXMuZGlzYWJsZWRDZWxsfT5bbnVsbF08L3NwYW4+OworICB9CisgIHJldHVybiBj aGlsZHJlbjsKK30KK051bGxBbmREZWZhdWx0Rm9ybWF0dGVyLnByb3BUeXBlcyA9IHsKKyAgdmFs dWU6IFByb3BUeXBlcy5hbnksCisgIGNvbHVtbjogUHJvcFR5cGVzLm9iamVjdCwKKyAgY2hpbGRy ZW46IEN1c3RvbVByb3BUeXBlcy5jaGlsZHJlbiwKK307CisKK2NvbnN0IEZvcm1hdHRlclByb3BU eXBlcyA9IHsKKyAgcm93OiBQcm9wVHlwZXMub2JqZWN0LAorICBjb2x1bW46IFByb3BUeXBlcy5v YmplY3QsCit9OworZXhwb3J0IGZ1bmN0aW9uIFRleHRGb3JtYXR0ZXIoe3JvdywgY29sdW1ufSkg eworICBsZXQgdmFsdWUgPSByb3dbY29sdW1uLmtleV07CisgIGlmKCFfLmlzTnVsbCh2YWx1ZSkg JiYgIV8uaXNVbmRlZmluZWQodmFsdWUpKSB7CisgICAgdmFsdWUgPSB2YWx1ZS50b1N0cmluZygp OworICB9CisgIHJldHVybiAoCisgICAgPE51bGxBbmREZWZhdWx0Rm9ybWF0dGVyIHZhbHVlPXt2 YWx1ZX0gY29sdW1uPXtjb2x1bW59PgorICAgICAgPD57dmFsdWV9PC8+CisgICAgPC9OdWxsQW5k RGVmYXVsdEZvcm1hdHRlcj4KKyAgKTsKK30KK1RleHRGb3JtYXR0ZXIucHJvcFR5cGVzID0gRm9y bWF0dGVyUHJvcFR5cGVzOworCitleHBvcnQgZnVuY3Rpb24gTnVtYmVyRm9ybWF0dGVyKHtyb3cs IGNvbHVtbn0pIHsKKyAgbGV0IHZhbHVlID0gcm93W2NvbHVtbi5rZXldOworICByZXR1cm4gKAor ICAgIDxOdWxsQW5kRGVmYXVsdEZvcm1hdHRlciB2YWx1ZT17dmFsdWV9IGNvbHVtbj17Y29sdW1u fT4KKyAgICAgIDxkaXYgc3R5bGU9e3t0ZXh0QWxpZ246ICdyaWdodCd9fT57dmFsdWV9PC9kaXY+ CisgICAgPC9OdWxsQW5kRGVmYXVsdEZvcm1hdHRlcj4KKyAgKTsKK30KK051bWJlckZvcm1hdHRl ci5wcm9wVHlwZXMgPSBGb3JtYXR0ZXJQcm9wVHlwZXM7CisKK2V4cG9ydCBmdW5jdGlvbiBCaW5h cnlGb3JtYXR0ZXIoe3JvdywgY29sdW1ufSkgeworICBsZXQgdmFsdWUgPSByb3dbY29sdW1uLmtl eV07CisgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAgcmV0dXJuICgKKyAgICA8TnVs bEFuZERlZmF1bHRGb3JtYXR0ZXIgdmFsdWU9e3ZhbHVlfSBjb2x1bW49e2NvbHVtbn0+CisgICAg ICA8c3BhbiBjbGFzc05hbWU9e2NsYXNzZXMuZGlzYWJsZWRDZWxsfT5be3ZhbHVlfV08L3NwYW4+ CisgICAgPC9OdWxsQW5kRGVmYXVsdEZvcm1hdHRlcj4KKyAgKTsKK30KK0JpbmFyeUZvcm1hdHRl ci5wcm9wVHlwZXMgPSBGb3JtYXR0ZXJQcm9wVHlwZXM7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1p bi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvUXVlcnlUb29sRGF0YUdyaWQv aW5kZXguanN4IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9jb21wb25l bnRzL1F1ZXJ5VG9vbERhdGFHcmlkL2luZGV4LmpzeApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAuLjcwYzkzYTZiYwotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9RdWVyeVRvb2xEYXRhR3JpZC9pbmRl eC5qc3gKQEAgLTAsMCArMSwzNzcgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3Jl U1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4g RGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUg UG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCB7IEJveCwgbWFrZVN0eWxlcyB9 IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJzsKK2ltcG9ydCBfIGZyb20gJ2xvZGFzaCc7CitpbXBv cnQgUmVhY3QsIHt1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwg dXNlUmVmfSBmcm9tICdyZWFjdCc7CitpbXBvcnQgUmVhY3REYXRhR3JpZCwge1JvdywgdXNlUm93 U2VsZWN0aW9ufSBmcm9tICdyZWFjdC1kYXRhLWdyaWQnOworaW1wb3J0IExvY2tJY29uIGZyb20g J0BtYXRlcmlhbC11aS9pY29ucy9Mb2NrJzsKK2ltcG9ydCBFZGl0SWNvbiBmcm9tICdAbWF0ZXJp YWwtdWkvaWNvbnMvRWRpdCc7CitpbXBvcnQgeyBRVUVSWV9UT09MX0VWRU5UUyB9IGZyb20gJy4u L1F1ZXJ5VG9vbENvbnN0YW50cyc7CitpbXBvcnQgKiBhcyBFZGl0b3JzIGZyb20gJy4vRWRpdG9y cyc7CitpbXBvcnQgKiBhcyBGb3JtYXR0ZXJzIGZyb20gJy4vRm9ybWF0dGVycyc7CitpbXBvcnQg Y2xzeCBmcm9tICdjbHN4JzsKK2ltcG9ydCB7IFBnSWNvbkJ1dHRvbiB9IGZyb20gJy4uLy4uLy4u Ly4uLy4uLy4uL3N0YXRpYy9qcy9jb21wb25lbnRzL0J1dHRvbnMnOworaW1wb3J0IE1hcEljb24g ZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL01hcCc7CitpbXBvcnQgeyBRdWVyeVRvb2xFdmVudHND b250ZXh0IH0gZnJvbSAnLi4vUXVlcnlUb29sQ29tcG9uZW50JzsKK2ltcG9ydCBQcm9wVHlwZXMs IHsgbnVtYmVyIH0gZnJvbSAncHJvcC10eXBlcyc7CisKK2V4cG9ydCBjb25zdCBST1dOVU1fS0VZ ID0gJyRfcGdhZG1pbl9yb3dudW1fa2V5XyQnOworZXhwb3J0IGNvbnN0IEdSSURfUk9XX1NFTEVD VF9LRVkgPSAnJF9wZ2FkbWluX2dyaWRyb3dzZWxlY3Rfa2V5XyQnOworCitjb25zdCB1c2VTdHls ZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSk9Pih7CisgIHJvb3Q6IHsKKyAgICBoZWlnaHQ6ICcxMDAl JywKKyAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS50ZXh0LnByaW1hcnksCisgICAgYmFja2dyb3Vu ZENvbG9yOiB0aGVtZS5vdGhlclZhcnMucXREYXRhZ3JpZEJnLAorICAgIGZvbnRTaXplOiAnMTJw eCcsCisgICAgYm9yZGVyOiAnbm9uZScsCisgICAgJy0tcmRnLXNlbGVjdGlvbi1jb2xvcic6IHRo ZW1lLnBhbGV0dGUucHJpbWFyeS5tYWluLAorICAgICcmIC5yZGctY2VsbCc6IHsKKyAgICAgIC4u LnRoZW1lLm1peGlucy5wYW5lbEJvcmRlci5yaWdodCwKKyAgICAgIC4uLnRoZW1lLm1peGlucy5w YW5lbEJvcmRlci5ib3R0b20sCisgICAgICBmb250V2VpZ2h0OiAnYWJjJywKKyAgICAgICcmW2Fy aWEtY29saW5kZXg9IjEiXSc6IHsKKyAgICAgICAgcGFkZGluZzogMCwKKyAgICAgIH0KKyAgICB9 LAorICAgICcmIC5yZGctaGVhZGVyLXJvdyAucmRnLWNlbGwnOiB7CisgICAgICBwYWRkaW5nOiAw LAorICAgIH0sCisgICAgJyYgLnJkZy1oZWFkZXItcm93JzogeworICAgICAgYmFja2dyb3VuZENv bG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQuZGVmYXVsdCwKKyAgICAgIGZvbnRXZWlnaHQ6 ICdub3JtYWwnLAorICAgIH0sCisgICAgJyYgLnJkZy1yb3cnOiB7CisgICAgICBiYWNrZ3JvdW5k Q29sb3I6IHRoZW1lLnBhbGV0dGUuYmFja2dyb3VuZC5kZWZhdWx0LAorICAgICAgJyZbYXJpYS1z ZWxlY3RlZD10cnVlXSc6IHsKKyAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRl LnByaW1hcnkubGlnaHQsCisgICAgICAgICcmIC5yZGctY2VsbDpudGgtY2hpbGQoMSknOiB7Cisg ICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbiwKKyAg ICAgICAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5wcmltYXJ5LmNvbnRyYXN0VGV4dCwKKyAgICAg ICAgfQorICAgICAgfSwKKyAgICB9CisgIH0sCisgIGNvbHVtbkhlYWRlcjogeworICAgIHBhZGRp bmc6ICczcHggNnB4JywKKyAgICBoZWlnaHQ6ICcxMDAlJywKKyAgICBkaXNwbGF5OiAnZmxleCcs CisgICAgbGluZUhlaWdodDogJzE2cHgnLAorICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLAorICB9 LAorICBjb2x1bW5OYW1lOiB7CisgICAgZm9udFdlaWdodDogJ2JvbGQnLAorICB9LAorICBlZGl0 ZWRDZWxsOiB7CisgICAgZm9udFdlaWdodDogJ2JvbGQnLAorICB9LAorICBkZWxldGVkUm93OiB7 CisgICAgJyY6YmVmb3JlJzogeworICAgICAgY29udGVudDogJyIgIicsCisgICAgICBwb3NpdGlv bjogJ2Fic29sdXRlJywKKyAgICAgIHRvcDogJzUwJScsCisgICAgICBsZWZ0OiAwLAorICAgICAg Ym9yZGVyVG9wOiAnMXB4IHNvbGlkICcgKyB0aGVtZS5wYWxldHRlLmVycm9yLm1haW4sCisgICAg ICB3aWR0aDogJzEwMCUnLAorICAgIH0KKyAgfSwKKyAgcm93TnVtQ2VsbDogeworICAgIHBhZGRp bmc6ICcwcHggOHB4JywKKyAgfSwKKyAgY29sSGVhZGVyU2VsZWN0ZWQ6IHsKKyAgICBvdXRsaW5l Q29sb3I6IHRoZW1lLnBhbGV0dGUucHJpbWFyeS5tYWluLAorICAgIGJhY2tncm91bmRDb2xvcjog dGhlbWUucGFsZXR0ZS5wcmltYXJ5Lm1haW4sCisgICAgY29sb3I6IHRoZW1lLnBhbGV0dGUucHJp bWFyeS5jb250cmFzdFRleHQsCisgIH0sCisgIGNvbFNlbGVjdGVkOiB7CisgICAgb3V0bGluZUNv bG9yOiB0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbiwKKyAgICBiYWNrZ3JvdW5kQ29sb3I6IHRo ZW1lLnBhbGV0dGUucHJpbWFyeS5saWdodCwKKyAgfQorfSkpOworCitleHBvcnQgY29uc3QgUm93 SW5mb0NvbnRleHQgPSBSZWFjdC5jcmVhdGVDb250ZXh0KCk7CisKK2Z1bmN0aW9uIEN1c3RvbVJv dyhwcm9wcykgeworICBjb25zdCByb3dSZWYgPSB1c2VSZWYoKTsKKyAgY29uc3Qgcm93SW5mb1Zh bHVlID0geworICAgIHJvd0lkeDogcHJvcHMucm93SWR4LAorICAgIGdldENlbGxFbGVtZW50OiAo Y29sSWR4KT0+eworICAgICAgcmV0dXJuIHJvd1JlZi5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoYC5y ZGctY2VsbFthcmlhLWNvbGluZGV4PSIke2NvbElkeCsxfSJdYCk7CisgICAgfQorICB9OworICBy ZXR1cm4gKAorICAgIDxSb3dJbmZvQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17cm93SW5mb1ZhbHVl fT4KKyAgICAgIDxSb3cgcmVmPXtyb3dSZWZ9IHsuLi5wcm9wc30gLz4KKyAgICA8L1Jvd0luZm9D b250ZXh0LlByb3ZpZGVyPgorICApOworfQorCitDdXN0b21Sb3cucHJvcFR5cGVzID0geworICBy b3dJZHg6IG51bWJlciwKK307CisKK2Z1bmN0aW9uIFNlbGVjdGFibGVIZWFkZXJSZW5kZXJlcih7 Y29sdW1uLCBzZWxlY3RlZENvbHVtbnMsIG9uU2VsZWN0ZWRDb2x1bW5zQ2hhbmdlfSkgeworICBj b25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7CisgIGNvbnN0IGV2ZW50QnVzID0gdXNlQ29udGV4 dChRdWVyeVRvb2xFdmVudHNDb250ZXh0KTsKKworICBjb25zdCBvbkNsaWNrID0gKGUpPT57Cisg ICAgZS5wcmV2ZW50RGVmYXVsdCgpOworCisgICAgY29uc3QgbmV3U2VsZWN0ZWRDb2xzID0gbmV3 IFNldChzZWxlY3RlZENvbHVtbnMpOworICAgIGlmIChuZXdTZWxlY3RlZENvbHMuaGFzKGNvbHVt bi5pZHgpKSB7CisgICAgICBuZXdTZWxlY3RlZENvbHMuZGVsZXRlKGNvbHVtbi5pZHgpOworICAg IH0gZWxzZSB7CisgICAgICBuZXdTZWxlY3RlZENvbHMuYWRkKGNvbHVtbi5pZHgpOworICAgIH0K KyAgICBvblNlbGVjdGVkQ29sdW1uc0NoYW5nZShuZXdTZWxlY3RlZENvbHMpOworICB9OworCisg IGNvbnN0IGlzU2VsZWN0ZWQgPSBzZWxlY3RlZENvbHVtbnMuaGFzKGNvbHVtbi5pZHgpOworCisg IHJldHVybiAoCisgICAgPEJveCBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcy5jb2x1bW5IZWFkZXIs IGlzU2VsZWN0ZWQgPyBjbGFzc2VzLmNvbEhlYWRlclNlbGVjdGVkIDogbnVsbCl9IG9uQ2xpY2s9 e29uQ2xpY2t9PgorICAgICAgeyhjb2x1bW4uY29sdW1uX3R5cGVfaW50ZXJuYWwgPT0gJ2dlb21l dHJ5JyB8fCBjb2x1bW4uY29sdW1uX3R5cGVfaW50ZXJuYWwgPT0gJ2dlb2dyYXBoeScpICYmCisg ICAgICA8Qm94PgorICAgICAgICA8UGdJY29uQnV0dG9uIGljb249ezxNYXBJY29uIC8+fSBzaXpl PSJzbWFsbCIgc3R5bGU9e3ttYXJnaW5SaWdodDogJzAuMjVyZW0nfX0gb25DbGljaz17KCk9PnsK KyAgICAgICAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuVFJJR0dFUl9S RU5ERVJfR0VPTUVUUklFUywgY29sdW1uKTsKKyAgICAgICAgfX0vPgorICAgICAgPC9Cb3g+fQor ICAgICAgPEJveCBtYXJnaW5SaWdodD0iYXV0byI+CisgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17 Y2xhc3Nlcy5jb2x1bW5OYW1lfT57Y29sdW1uLmRpc3BsYXlfbmFtZX08L3NwYW4+PGJyLz4KKyAg ICAgICAgPHNwYW4+e2NvbHVtbi5kaXNwbGF5X3R5cGV9PC9zcGFuPgorICAgICAgPC9Cb3g+Cisg ICAgICA8Qm94IG1hcmdpbkxlZnQ9IjRweCI+e2NvbHVtbi5jYW5fZWRpdCA/CisgICAgICAgIDxF ZGl0SWNvbiBmb250U2l6ZT0ic21hbGwiIHN0eWxlPXt7Zm9udFNpemU6ICcwLjg3NXJlbSd9fSAv PjoKKyAgICAgICAgPExvY2tJY29uIGZvbnRTaXplPSJzbWFsbCIgc3R5bGU9e3tmb250U2l6ZTog JzAuODc1cmVtJ319IC8+CisgICAgICB9PC9Cb3g+CisgICAgPC9Cb3g+CisgICk7Cit9CitTZWxl Y3RhYmxlSGVhZGVyUmVuZGVyZXIucHJvcFR5cGVzID0geworICBjb2x1bW46IFByb3BUeXBlcy5v YmplY3QsCisgIHNlbGVjdGVkQ29sdW1uczogUHJvcFR5cGVzLm9iamVjdE9mKFNldCksCisgIG9u U2VsZWN0ZWRDb2x1bW5zQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYywKK307CisKK2Z1bmN0aW9uIHNl dEVkaXRvckZvcm1hdHRlcihjb2wpIHsKKyAgLy8gSWYgZ3JpZCBpcyBlZGl0YWJsZSB0aGVuIGFk ZCBlZGl0b3IgZWxzZSBtYWtlIGl0IHJlYWRvbmx5CisgIGlmIChjb2wuY2VsbCA9PSAnb2lkJyAm JiBjb2wubmFtZSA9PSAnb2lkJykgeworICAgIGNvbC5lZGl0b3IgPSBudWxsOworICAgIGNvbC5m b3JtYXR0ZXIgPSBGb3JtYXR0ZXJzLlRleHRGb3JtYXR0ZXI7CisgIH0gZWxzZSBpZiAoY29sLmNl bGwgPT0gJ0pzb24nKSB7CisgICAgY29sLmVkaXRvciA9IEVkaXRvcnMuSnNvblRleHRFZGl0b3I7 CisgICAgY29sLmZvcm1hdHRlciA9IEZvcm1hdHRlcnMuVGV4dEZvcm1hdHRlcjsKKyAgfSBlbHNl IGlmIChbJ251bWJlcicsICdvaWQnXS5pbmRleE9mKGNvbC5jZWxsKSAhPSAtMSB8fCBbJ3hpZCcs ICdyZWFsJ10uaW5kZXhPZihjb2wudHlwZSkgIT0gLTEpIHsKKyAgICBjb2wuZm9ybWF0dGVyID0g Rm9ybWF0dGVycy5OdW1iZXJGb3JtYXR0ZXI7CisgICAgY29sLmVkaXRvciA9IEVkaXRvcnMuTnVt YmVyRWRpdG9yOworICB9IGVsc2UgaWYgKGNvbC5jZWxsID09ICdib29sZWFuJykgeworICAgIGNv bC5lZGl0b3IgPSBFZGl0b3JzLkNoZWNrYm94RWRpdG9yOworICAgIGNvbC5mb3JtYXR0ZXIgPSBG b3JtYXR0ZXJzLlRleHRGb3JtYXR0ZXI7CisgIH0gZWxzZSBpZiAoY29sLmNlbGwgPT0gJ2JpbmFy eScpIHsKKyAgICAvLyBXZSBkbyBub3Qgc3VwcG9ydCBlZGl0aW5nIGJpbmFyeSBkYXRhIGluIFNR TCBlZGl0b3IgYW5kIGRhdGEgZ3JpZC4KKyAgICBjb2wuZWRpdG9yID0gbnVsbDsKKyAgICBjb2wu Zm9ybWF0dGVyID0gRm9ybWF0dGVycy5CaW5hcnlGb3JtYXR0ZXI7CisgIH0gZWxzZSB7CisgICAg Y29sLmVkaXRvciA9IEVkaXRvcnMuVGV4dEVkaXRvcjsKKyAgICBjb2wuZm9ybWF0dGVyID0gRm9y bWF0dGVycy5UZXh0Rm9ybWF0dGVyOworICB9Cit9CisKK2Z1bmN0aW9uIGNlbGxDbGFzc0dldHRl cihjb2wsIGNsYXNzZXMsIGlzU2VsZWN0ZWQsIGRhdGFDaGFuZ2VTdG9yZSwgcm93S2V5R2V0dGVy KXsKKyAgcmV0dXJuIChyb3cpPT57CisgICAgbGV0IGNlbGxDbGFzc2VzID0gW107CisgICAgaWYo ZGF0YUNoYW5nZVN0b3JlICYmIHJvd0tleUdldHRlcikgeworICAgICAgaWYocm93S2V5R2V0dGVy KHJvdykgaW4gKGRhdGFDaGFuZ2VTdG9yZT8udXBkYXRlZCB8fCB7fSkKKyAgICAgICAgJiYgIV8u aXNVbmRlZmluZWQoZGF0YUNoYW5nZVN0b3JlPy51cGRhdGVkW3Jvd0tleUdldHRlcihyb3cpXT8u ZGF0YVtjb2wua2V5XSkKKyAgICAgICAgfHwgcm93S2V5R2V0dGVyKHJvdykgaW4gKGRhdGFDaGFu Z2VTdG9yZT8uYWRkZWQgfHwge30pCisgICAgICApIHsKKyAgICAgICAgY2VsbENsYXNzZXMucHVz aChjbGFzc2VzLmVkaXRlZENlbGwpOworICAgICAgfQorICAgICAgaWYocm93S2V5R2V0dGVyKHJv dykgaW4gKGRhdGFDaGFuZ2VTdG9yZT8uZGVsZXRlZCB8fCB7fSkpIHsKKyAgICAgICAgY2VsbENs YXNzZXMucHVzaChjbGFzc2VzLmRlbGV0ZWRSb3cpOworICAgICAgfQorICAgIH0KKyAgICBpZihp c1NlbGVjdGVkKSB7CisgICAgICBjZWxsQ2xhc3Nlcy5wdXNoKGNsYXNzZXMuY29sU2VsZWN0ZWQp OworICAgIH0KKyAgICByZXR1cm4gY2xzeChjZWxsQ2xhc3Nlcyk7CisgIH07Cit9CisKK2Z1bmN0 aW9uIGluaXRpYWxpc2VDb2x1bW5zKGNvbHVtbnMsIHJvd3MsIHRvdGFsUm93Q291bnQsIGNvbHVt bldpZHRoQnkpIHsKKyAgbGV0IHJldENvbHVtbnMgPSBbCisgICAgLi4uY29sdW1ucywKKyAgXTsK KyAgY29uc3QgY2FudmFzID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY2FudmFzJyk7CisgIGNv bnN0IGNhbnZhc0NvbnRleHQgPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTsKKyAgY2FudmFzQ29u dGV4dC5mb250ID0gJzEycHggUm9ib3RvJzsKKworICBmb3IoY29uc3QgY29sIG9mIHJldENvbHVt bnMpIHsKKyAgICBjb2wud2lkdGggPSBnZXRUZXh0V2lkdGgoY29sLCByb3dzLCBjYW52YXNDb250 ZXh0LCBjb2x1bW5XaWR0aEJ5KTsKKyAgICBjb2wucmVzaXphYmxlID0gdHJ1ZTsKKyAgICBjb2wu ZWRpdG9yT3B0aW9ucyA9IHsKKyAgICAgIGNvbW1pdE9uT3V0c2lkZUNsaWNrOiBmYWxzZSwKKyAg ICAgIG9uQ2VsbEtleURvd246IChlKT0+eworICAgICAgICAvKiBEbyBub3Qgb3BlbiB0aGUgZWRp dG9yICovCisgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAgIH0KKyAgICB9OworICAg IHNldEVkaXRvckZvcm1hdHRlcihjb2wpOworICB9CisKKyAgbGV0IHJvd051bUNvbCA9IHsKKyAg ICBrZXk6IFJPV05VTV9LRVksIG5hbWU6ICcnLCBmcm96ZW46IHRydWUsIHJlc2l6YWJsZTogZmFs c2UsCisgICAgbWluV2lkdGg6IDQ1LCB3aWR0aDogY2FudmFzQ29udGV4dC5tZWFzdXJlVGV4dCgo dG90YWxSb3dDb3VudHx8JycpLnRvU3RyaW5nKCkpLndpZHRoLAorICB9OworICByb3dOdW1Db2wu Y2VsbENsYXNzID0gY2VsbENsYXNzR2V0dGVyKHJvd051bUNvbCk7CisgIHJldENvbHVtbnMudW5z aGlmdChyb3dOdW1Db2wpOworICBjYW52YXMucmVtb3ZlKCk7CisgIHJldHVybiByZXRDb2x1bW5z OworfQorCitmdW5jdGlvbiBmb3JtYXRDb2x1bW5zKGNvbHVtbnMsIGRhdGFDaGFuZ2VTdG9yZSwg c2VsZWN0ZWRDb2x1bW5zLCBvblNlbGVjdGVkQ29sdW1uc0NoYW5nZSwgcm93S2V5R2V0dGVyLCBj bGFzc2VzKSB7CisgIGxldCByZXRDb2x1bW5zID0gWworICAgIC4uLmNvbHVtbnMsCisgIF07CisK KyAgY29uc3QgSGVhZGVyUmVuZGVyZXIgPSAocHJvcHMpPT57CisgICAgcmV0dXJuIDxTZWxlY3Rh YmxlSGVhZGVyUmVuZGVyZXIgey4uLnByb3BzfSBzZWxlY3RlZENvbHVtbnM9e3NlbGVjdGVkQ29s dW1uc30gb25TZWxlY3RlZENvbHVtbnNDaGFuZ2U9e29uU2VsZWN0ZWRDb2x1bW5zQ2hhbmdlfS8+ OworICB9OworCisgIGZvcihjb25zdCBbaWR4LCBjb2xdIG9mIHJldENvbHVtbnMuZW50cmllcygp KSB7CisgICAgY29sLmhlYWRlclJlbmRlcmVyID0gSGVhZGVyUmVuZGVyZXI7CisgICAgY29sLmNl bGxDbGFzcyA9IGNlbGxDbGFzc0dldHRlcihjb2wsIGNsYXNzZXMsIHNlbGVjdGVkQ29sdW1ucy5o YXMoaWR4KSwgZGF0YUNoYW5nZVN0b3JlLCByb3dLZXlHZXR0ZXIpOworICB9CisKKyAgbGV0IHJv d051bUNvbCA9IHJldENvbHVtbnNbMF07CisgIHJvd051bUNvbC5oZWFkZXJSZW5kZXJlciA9IHVu ZGVmaW5lZDsKKyAgcm93TnVtQ29sLmZvcm1hdHRlciA9ICh7cm93fSk9PnsKKyAgICBjb25zdCB7 cm93SWR4fSA9IHVzZUNvbnRleHQoUm93SW5mb0NvbnRleHQpOworICAgIGNvbnN0IFtpc1Jvd1Nl bGVjdGVkLCBvblJvd1NlbGVjdGlvbkNoYW5nZV0gPSB1c2VSb3dTZWxlY3Rpb24oKTsKKyAgICBs ZXQgcm93S2V5ID0gcm93S2V5R2V0dGVyKHJvdyk7CisgICAgbGV0IHJvd251bSA9IHJvd0lkeCsx OworICAgIGlmKHJvd0tleSBpbiAoZGF0YUNoYW5nZVN0b3JlPy5hZGRlZCB8fCB7fSkpIHsKKyAg ICAgIHJvd251bSA9IHJvd251bSsnKyc7CisgICAgfSBlbHNlIGlmKHJvd0tleSBpbiAoZGF0YUNo YW5nZVN0b3JlPy5kZWxldGVkIHx8IHt9KSkgeworICAgICAgcm93bnVtID0gcm93bnVtKyctJzsK KyAgICB9CisgICAgcmV0dXJuICg8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5yb3dOdW1DZWxsfSBv bkNsaWNrPXsoKT0+eworICAgICAgb25TZWxlY3RlZENvbHVtbnNDaGFuZ2UobmV3IFNldCgpKTsK KyAgICAgIG9uUm93U2VsZWN0aW9uQ2hhbmdlKHsgcm93OiByb3csIGNoZWNrZWQ6ICFpc1Jvd1Nl bGVjdGVkLCBpc1NoaWZ0Q2xpY2s6IGZhbHNlfSk7CisgICAgfX0+CisgICAgICB7cm93bnVtfQor ICAgIDwvZGl2Pik7CisgIH07CisKKyAgcmV0dXJuIHJldENvbHVtbnM7Cit9CisKK2Z1bmN0aW9u IGdldFRleHRXaWR0aChjb2x1bW4sIHJvd3MsIGNhbnZhcywgY29sdW1uV2lkdGhCeSkgeworICBj b25zdCBkYXRhV2lkdGhSZWR1Y2VyID0gKGxvbmdlc3QsIG5leHRSb3cpID0+IHsKKyAgICBsZXQg dmFsdWUgPSBuZXh0Um93W2NvbHVtbi5rZXldOworICAgIGlmKF8uaXNOdWxsKHZhbHVlKSB8fCBf LmlzVW5kZWZpbmVkKHZhbHVlKSkgeworICAgICAgdmFsdWUgPSAnJzsKKyAgICB9CisgICAgdmFs dWUgPSB2YWx1ZS50b1N0cmluZygpOworICAgIHJldHVybiBsb25nZXN0Lmxlbmd0aCA+IHZhbHVl Lmxlbmd0aCA/IGxvbmdlc3QgOiB2YWx1ZTsKKyAgfTsKKworICBsZXQgY29sdW1uSGVhZGVyTGVu ID0gY29sdW1uLmRpc3BsYXlfbmFtZS5sZW5ndGggPiBjb2x1bW4uZGlzcGxheV90eXBlLmxlbmd0 aCA/CisgICAgY2FudmFzLm1lYXN1cmVUZXh0KGNvbHVtbi5kaXNwbGF5X25hbWUpLndpZHRoIDog Y2FudmFzLm1lYXN1cmVUZXh0KGNvbHVtbi5kaXNwbGF5X3R5cGUpLndpZHRoOworICAvKiBwYWRk aW5nIDEyLCBpY29uLXdpZHRoIDE1ICovCisgIGNvbHVtbkhlYWRlckxlbiArPSAxNSArIDEyOwor ICBpZihjb2x1bW4uY29sdW1uX3R5cGVfaW50ZXJuYWwgPT0gJ2dlb21ldHJ5JyB8fCBjb2x1bW4u Y29sdW1uX3R5cGVfaW50ZXJuYWwgPT0gJ2dlb2dyYXBoeScpIHsKKyAgICBjb2x1bW5IZWFkZXJM ZW4gKz0gMjU7CisgIH0KKyAgbGV0IHdpZHRoID0gY29sdW1uSGVhZGVyTGVuOworICBpZih0eXBl b2YoY29sdW1uV2lkdGhCeSkgPT0gJ251bWJlcicpIHsKKyAgICAvKiBwYWRkaW5nIDE2ICovCisg ICAgd2lkdGggPSAxNiArIE1hdGguY2VpbChjYW52YXMubWVhc3VyZVRleHQocm93cy5yZWR1Y2Uo ZGF0YVdpZHRoUmVkdWNlciwgJycpKS53aWR0aCk7CisgICAgaWYod2lkdGggPiBjb2x1bW5XaWR0 aEJ5ICYmIGNvbHVtbldpZHRoQnkgPiAwKSB7CisgICAgICB3aWR0aCA9IGNvbHVtbldpZHRoQnk7 CisgICAgfQorICAgIGlmKHdpZHRoIDwgY29sdW1uSGVhZGVyTGVuKSB7CisgICAgICB3aWR0aCA9 IGNvbHVtbkhlYWRlckxlbjsKKyAgICB9CisgIH0KKyAgLyogR3JhY2VmdWxsICovCisgIHdpZHRo ICs9IDI7CisgIHJldHVybiB3aWR0aDsKK30KKworZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUXVl cnlUb29sRGF0YUdyaWQoe2NvbHVtbnMsIHJvd3MsIHRvdGFsUm93Q291bnQsIGRhdGFDaGFuZ2VT dG9yZSwKKyAgb25TZWxlY3RlZENlbGxDaGFuZ2UsIHJvd3NSZXNldEtleSwgc2VsZWN0ZWRDb2x1 bW5zLCBvblNlbGVjdGVkQ29sdW1uc0NoYW5nZSwgY29sdW1uV2lkdGhCeSwgLi4ucHJvcHN9KSB7 CisgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAgY29uc3QgW3JlYWR5Q29sdW1ucywg c2V0Q29sdW1uc10gPSB1c2VTdGF0ZShbXSk7CisgIGNvbnN0IGV2ZW50QnVzID0gdXNlQ29udGV4 dChRdWVyeVRvb2xFdmVudHNDb250ZXh0KTsKKyAgY29uc3Qgb25TZWxlY3RlZENvbHVtbnNDaGFu Z2VXcmFwcGVkID0gKGFyZyk9PnsKKyAgICBwcm9wcy5vblNlbGVjdGVkUm93c0NoYW5nZShuZXcg U2V0KCkpOworICAgIG9uU2VsZWN0ZWRDb2x1bW5zQ2hhbmdlKGFyZyk7CisgIH07CisKKyAgdXNl RWZmZWN0KCgpPT57CisgICAgaWYoY29sdW1ucy5sZW5ndGggPiAwIHx8IHJvd3MubGVuZ3RoID4g MCkgeworICAgICAgbGV0IGluaXRDb2xzID0gaW5pdGlhbGlzZUNvbHVtbnMoY29sdW1ucywgcm93 cywgdG90YWxSb3dDb3VudCwgY29sdW1uV2lkdGhCeSk7CisgICAgICBzZXRDb2x1bW5zKGZvcm1h dENvbHVtbnMoaW5pdENvbHMsIGRhdGFDaGFuZ2VTdG9yZSwgc2VsZWN0ZWRDb2x1bW5zLCBvblNl bGVjdGVkQ29sdW1uc0NoYW5nZVdyYXBwZWQsIHByb3BzLnJvd0tleUdldHRlciwgY2xhc3Nlcykp OworICAgIH0gZWxzZSB7CisgICAgICBzZXRDb2x1bW5zKFtdLCBbXSwgMCk7CisgICAgfQorICB9 LCBbY29sdW1ucywgcm93c1Jlc2V0S2V5XSk7CisKKyAgdXNlRWZmZWN0KCgpPT57CisgICAgc2V0 Q29sdW1ucygocHJldkNvbHMpPT57CisgICAgICByZXR1cm4gZm9ybWF0Q29sdW1ucyhwcmV2Q29s cywgZGF0YUNoYW5nZVN0b3JlLCBzZWxlY3RlZENvbHVtbnMsIG9uU2VsZWN0ZWRDb2x1bW5zQ2hh bmdlV3JhcHBlZCwgcHJvcHMucm93S2V5R2V0dGVyLCBjbGFzc2VzKTsKKyAgICB9KTsKKyAgfSwg W2RhdGFDaGFuZ2VTdG9yZSwgc2VsZWN0ZWRDb2x1bW5zXSk7CisKKyAgY29uc3Qgb25Sb3dDbGlj ayA9IHVzZUNhbGxiYWNrKChyb3csIGNvbHVtbik9PnsKKyAgICBpZihjb2x1bW4ua2V5ID09PSBS T1dOVU1fS0VZKSB7CisgICAgICBvblNlbGVjdGVkQ2VsbENoYW5nZSAmJiBvblNlbGVjdGVkQ2Vs bENoYW5nZShudWxsKTsKKyAgICB9IGVsc2UgeworICAgICAgb25TZWxlY3RlZENlbGxDaGFuZ2Ug JiYgb25TZWxlY3RlZENlbGxDaGFuZ2UoW3JvdywgY29sdW1uXSk7CisgICAgfQorICB9LCBbXSk7 CisKKyAgZnVuY3Rpb24gaGFuZGxlQ29weSgpIHsKKyAgICBpZiAod2luZG93LmlzU2VjdXJlQ29u dGV4dCkgeworICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlRSSUdH RVJfQ09QWV9EQVRBKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gPFJlYWN0RGF0YUdyaWQKKyAg ICBpZD0iZGF0YWdyaWQiCisgICAgY29sdW1ucz17cmVhZHlDb2x1bW5zfQorICAgIHJvd3M9e3Jv d3N9CisgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnJvb3R9CisgICAgaGVhZGVyUm93SGVpZ2h0PXs0 MH0KKyAgICByb3dIZWlnaHQ9ezI1fQorICAgIG1pbmNvbHVtbldpZHRoQnk9ezUwfQorICAgIGVu YWJsZUNlbGxTZWxlY3Q9e3RydWV9CisgICAgb25Sb3dDbGljaz17b25Sb3dDbGlja30KKyAgICBv bkNvcHk9e2hhbmRsZUNvcHl9CisgICAgY29tcG9uZW50cz17eworICAgICAgcm93UmVuZGVyZXI6 IEN1c3RvbVJvdywKKyAgICB9fQorICAgIHsuLi5wcm9wc30KKyAgLz47Cit9CisKK1F1ZXJ5VG9v bERhdGFHcmlkLnByb3BUeXBlcyA9IHsKKyAgY29sdW1uczogUHJvcFR5cGVzLmFycmF5LAorICBy b3dzOiBQcm9wVHlwZXMuYXJyYXksCisgIHRvdGFsUm93Q291bnQ6IFByb3BUeXBlcy5udW1iZXIs CisgIGRhdGFDaGFuZ2VTdG9yZTogUHJvcFR5cGVzLm9iamVjdCwKKyAgb25TZWxlY3RlZENlbGxD aGFuZ2U6IFByb3BUeXBlcy5mdW5jLAorICBvblNlbGVjdGVkUm93c0NoYW5nZTogUHJvcFR5cGVz LmZ1bmMsCisgIHNlbGVjdGVkQ29sdW1uczogUHJvcFR5cGVzLm9iamVjdE9mKFNldCksCisgIG9u U2VsZWN0ZWRDb2x1bW5zQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYywKKyAgcm93S2V5R2V0dGVyOiBQ cm9wVHlwZXMuZnVuYywKKyAgcm93c1Jlc2V0S2V5OiBQcm9wVHlwZXMuYW55LAorICBjb2x1bW5X aWR0aEJ5OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMu bnVtYmVyXSksCit9OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0 YXRpYy9qcy9jb21wb25lbnRzL2RpYWxvZ3MvQ29uZmlybVNhdmVDb250ZW50LmpzeCBiL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9kaWFsb2dzL0NvbmZp cm1TYXZlQ29udGVudC5qc3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5l ZjQ4YjhjMzAKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Iv c3RhdGljL2pzL2NvbXBvbmVudHMvZGlhbG9ncy9Db25maXJtU2F2ZUNvbnRlbnQuanN4CkBAIC0w LDAgKzEsMzkgQEAKK2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7CitpbXBvcnQgeyB1c2VNb2Rh bFN0eWxlcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9oZWxwZXJzL01vZGFs UHJvdmlkZXInOworaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKK2ltcG9y dCB7IEJveCB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJzsKK2ltcG9ydCB7IERlZmF1bHRCdXR0 b24sIFByaW1hcnlCdXR0b24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvY29t cG9uZW50cy9CdXR0b25zJzsKK2ltcG9ydCBDbG9zZUljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2lj b25zL0Nsb3NlUm91bmRlZCc7CitpbXBvcnQgQ2hlY2tSb3VuZGVkSWNvbiBmcm9tICdAbWF0ZXJp YWwtdWkvaWNvbnMvQ2hlY2tSb3VuZGVkJzsKK2ltcG9ydCBEZWxldGVSb3VuZGVkSWNvbiBmcm9t ICdAbWF0ZXJpYWwtdWkvaWNvbnMvRGVsZXRlUm91bmRlZCc7CitpbXBvcnQgSFRNTFJlYWN0UGFy c2VyIGZyb20gJ2h0bWwtcmVhY3QtcGFyc2VyJzsKK2ltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJv cC10eXBlcyc7CisKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIENvbmZpcm1TYXZlQ29udGVudCh7 Y2xvc2VNb2RhbCwgdGV4dCwgb25Eb250U2F2ZSwgb25TYXZlfSkgeworICBjb25zdCBjbGFzc2Vz ID0gdXNlTW9kYWxTdHlsZXMoKTsKKyAgcmV0dXJuICgKKyAgICA8Qm94IGRpc3BsYXk9ImZsZXgi IGZsZXhEaXJlY3Rpb249ImNvbHVtbiIgaGVpZ2h0PSIxMDAlIj4KKyAgICAgIDxCb3ggZmxleEdy b3c9IjEiIHA9ezJ9Pnt0eXBlb2YodGV4dCkgPT0gJ3N0cmluZycgPyBIVE1MUmVhY3RQYXJzZXIo dGV4dCkgOiB0ZXh0fTwvQm94PgorICAgICAgPEJveCBjbGFzc05hbWU9e2NsYXNzZXMuZm9vdGVy fT4KKyAgICAgICAgPERlZmF1bHRCdXR0b24gZGF0YS10ZXN0PSJjbG9zZSIgc3RhcnRJY29uPXs8 Q2xvc2VJY29uIC8+fSBvbkNsaWNrPXsoKT0+eworICAgICAgICAgIGNsb3NlTW9kYWwoKTsKKyAg ICAgICAgfX0gPntnZXR0ZXh0KCdDYW5jZWwnKX08L0RlZmF1bHRCdXR0b24+CisgICAgICAgIDxE ZWZhdWx0QnV0dG9uIGRhdGEtdGVzdD0iZG9udC1zYXZlIiBjbGFzc05hbWU9e2NsYXNzZXMubWFy Z2lufSBzdGFydEljb249ezxEZWxldGVSb3VuZGVkSWNvbiAvPn0gb25DbGljaz17KCk9PnsKKyAg ICAgICAgICBvbkRvbnRTYXZlPy4oKTsKKyAgICAgICAgICBjbG9zZU1vZGFsKCk7CisgICAgICAg IH19ID57Z2V0dGV4dCgnRG9uXCd0IHNhdmUnKX08L0RlZmF1bHRCdXR0b24+CisgICAgICAgIDxQ cmltYXJ5QnV0dG9uIGRhdGEtdGVzdD0ic2F2ZSIgY2xhc3NOYW1lPXtjbGFzc2VzLm1hcmdpbn0g c3RhcnRJY29uPXs8Q2hlY2tSb3VuZGVkSWNvbiAvPn0gb25DbGljaz17KCk9PnsKKyAgICAgICAg ICBvblNhdmU/LigpOworICAgICAgICAgIGNsb3NlTW9kYWwoKTsKKyAgICAgICAgfX0gYXV0b0Zv Y3VzPXt0cnVlfSA+e2dldHRleHQoJ1NhdmUnKX08L1ByaW1hcnlCdXR0b24+CisgICAgICA8L0Jv eD4KKyAgICA8L0JveD4KKyAgKTsKK30KKworQ29uZmlybVNhdmVDb250ZW50LnByb3BUeXBlcyA9 IHsKKyAgY2xvc2VNb2RhbDogUHJvcFR5cGVzLmZ1bmMsCisgIHRleHQ6IFByb3BUeXBlcy5zdHJp bmcsCisgIG9uRG9udFNhdmU6IFByb3BUeXBlcy5mdW5jLAorICBvblNhdmU6IFByb3BUeXBlcy5m dW5jCit9OwpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9q cy9jb21wb25lbnRzL2RpYWxvZ3MvQ29uZmlybVRyYW5zYWN0aW9uQ29udGVudC5qc3ggYi93ZWIv cGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvZGlhbG9ncy9Db25m aXJtVHJhbnNhY3Rpb25Db250ZW50LmpzeApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAuLmJmZTg4ZDk3ZgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9kaWFsb2dzL0NvbmZpcm1UcmFuc2FjdGlvbkNv bnRlbnQuanN4CkBAIC0wLDAgKzEsMzggQEAKK2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7Citp bXBvcnQgeyB1c2VNb2RhbFN0eWxlcyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9q cy9oZWxwZXJzL01vZGFsUHJvdmlkZXInOworaW1wb3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9n ZXR0ZXh0JzsKK2ltcG9ydCB7IEJveCB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJzsKK2ltcG9y dCB7IERlZmF1bHRCdXR0b24sIFByaW1hcnlCdXR0b24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8u Li9zdGF0aWMvanMvY29tcG9uZW50cy9CdXR0b25zJzsKK2ltcG9ydCBDbG9zZUljb24gZnJvbSAn QG1hdGVyaWFsLXVpL2ljb25zL0Nsb3NlUm91bmRlZCc7CitpbXBvcnQgSFRNTFJlYWN0UGFyc2Vy IGZyb20gJ2h0bWwtcmVhY3QtcGFyc2VyJzsKK2ltcG9ydCB7IENvbW1pdEljb24sIFJvbGxiYWNr SWNvbiB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9jb21wb25lbnRzL0V4dGVy bmFsSWNvbic7CitpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnOworCitleHBvcnQg ZGVmYXVsdCBmdW5jdGlvbiBDb25maXJtVHJhbnNhY3Rpb25Db250ZW50KHtjbG9zZU1vZGFsLCB0 ZXh0LCBvblJvbGxiYWNrLCBvbkNvbW1pdH0pIHsKKyAgY29uc3QgY2xhc3NlcyA9IHVzZU1vZGFs U3R5bGVzKCk7CisgIHJldHVybiAoCisgICAgPEJveCBkaXNwbGF5PSJmbGV4IiBmbGV4RGlyZWN0 aW9uPSJjb2x1bW4iIGhlaWdodD0iMTAwJSI+CisgICAgICA8Qm94IGZsZXhHcm93PSIxIiBwPXsy fT57dHlwZW9mKHRleHQpID09ICdzdHJpbmcnID8gSFRNTFJlYWN0UGFyc2VyKHRleHQpIDogdGV4 dH08L0JveD4KKyAgICAgIDxCb3ggY2xhc3NOYW1lPXtjbGFzc2VzLmZvb3Rlcn0+CisgICAgICAg IDxEZWZhdWx0QnV0dG9uIGRhdGEtdGVzdD0iY2FuY2VsIiBzdGFydEljb249ezxDbG9zZUljb24g Lz59IG9uQ2xpY2s9eygpPT57CisgICAgICAgICAgY2xvc2VNb2RhbCgpOworICAgICAgICB9fSA+ e2dldHRleHQoJ0NhbmNlbCcpfTwvRGVmYXVsdEJ1dHRvbj4KKyAgICAgICAgPFByaW1hcnlCdXR0 b24gZGF0YS10ZXN0PSJyb2xsYmFjayIgY2xhc3NOYW1lPXtjbGFzc2VzLm1hcmdpbn0gc3RhcnRJ Y29uPXs8Um9sbGJhY2tJY29uIC8+fSBvbkNsaWNrPXsoKT0+eworICAgICAgICAgIG9uUm9sbGJh Y2s/LigpOworICAgICAgICAgIGNsb3NlTW9kYWwoKTsKKyAgICAgICAgfX0gPntnZXR0ZXh0KCdS b2xsYmFjaycpfTwvUHJpbWFyeUJ1dHRvbj4KKyAgICAgICAgPFByaW1hcnlCdXR0b24gZGF0YS10 ZXN0PSJjb21taXQiIGNsYXNzTmFtZT17Y2xhc3Nlcy5tYXJnaW59IHN0YXJ0SWNvbj17PENvbW1p dEljb24gLz59IG9uQ2xpY2s9eygpPT57CisgICAgICAgICAgb25Db21taXQ/LigpOworICAgICAg ICAgIGNsb3NlTW9kYWwoKTsKKyAgICAgICAgfX0gYXV0b0ZvY3VzPXt0cnVlfSA+e2dldHRleHQo J0NvbW1pdCcpfTwvUHJpbWFyeUJ1dHRvbj4KKyAgICAgIDwvQm94PgorICAgIDwvQm94PgorICAp OworfQorCitDb25maXJtVHJhbnNhY3Rpb25Db250ZW50LnByb3BUeXBlcyA9IHsKKyAgY2xvc2VN b2RhbDogUHJvcFR5cGVzLmZ1bmMsCisgIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcsCisgIG9uUm9s bGJhY2s6IFByb3BUeXBlcy5mdW5jLAorICBvbkNvbW1pdDogUHJvcFR5cGVzLmZ1bmMKK307CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVu dHMvZGlhbG9ncy9GaWx0ZXJEaWFsb2cuanN4IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9y L3N0YXRpYy9qcy9jb21wb25lbnRzL2RpYWxvZ3MvRmlsdGVyRGlhbG9nLmpzeApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAuLjMzNmI0N2QzMQotLS0gL2Rldi9udWxsCisrKyBi L3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9kaWFsb2dz L0ZpbHRlckRpYWxvZy5qc3gKQEAgLTAsMCArMSwxNTUgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWlu IDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwg VGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNl ZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCB7IG1ha2VT dHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvY29yZSc7CitpbXBvcnQgUmVhY3QgZnJvbSAncmVh Y3QnOworaW1wb3J0IFNjaGVtYVZpZXcgZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc3RhdGljL2pz L1NjaGVtYVZpZXcnOworaW1wb3J0IEJhc2VVSVNjaGVtYSBmcm9tICcuLi8uLi8uLi8uLi8uLi8u Li9zdGF0aWMvanMvU2NoZW1hVmlldy9iYXNlX3NjaGVtYS51aSc7CitpbXBvcnQgZ2V0dGV4dCBm cm9tICdzb3VyY2VzL2dldHRleHQnOworaW1wb3J0IHsgUXVlcnlUb29sQ29udGV4dCB9IGZyb20g Jy4uL1F1ZXJ5VG9vbENvbXBvbmVudCc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICdzb3VyY2VzL3Vy bF9mb3InOworaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJzsKKworY2xhc3MgU29y dGluZ0NvbGxlY3Rpb24gZXh0ZW5kcyBCYXNlVUlTY2hlbWEgeworICBjb25zdHJ1Y3Rvcihjb2x1 bW5PcHRpb25zKSB7CisgICAgc3VwZXIoeworICAgICAgbmFtZTogdW5kZWZpbmVkLAorICAgICAg b3JkZXI6ICdhc2MnLAorICAgIH0pOworICAgIHRoaXMuY29sdW1uT3B0aW9ucyA9IGNvbHVtbk9w dGlvbnM7CisgICAgdGhpcy5yZWxvYWRDb2xPcHRpb25zID0gMDsKKyAgfQorCisgIHNldENvbHVt bk9wdGlvbnMoY29sdW1uT3B0aW9ucykgeworICAgIHRoaXMuY29sdW1uT3B0aW9ucyA9IGNvbHVt bk9wdGlvbnM7CisgICAgdGhpcy5yZWxvYWRDb2xPcHRpb25zID0gdGhpcy5yZWxvYWRDb2xPcHRp b25zICsgMTsKKyAgfQorCisgIGdldCBiYXNlRmllbGRzKCkgeworICAgIHJldHVybiBbCisgICAg ICB7CisgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdDb2x1bW4nKSwgY2VsbDog J3NlbGVjdCcsIGNvbnRyb2xQcm9wczogeworICAgICAgICAgIGFsbG93Q2xlYXI6IGZhbHNlLAor ICAgICAgICB9LCBub0VtcHR5OiB0cnVlLCBvcHRpb25zOiB0aGlzLmNvbHVtbk9wdGlvbnMsIG9w dGlvbnNSZWxvYWRCYXNpczogdGhpcy5yZWxvYWRDb2xPcHRpb25zCisgICAgICB9LAorICAgICAg eworICAgICAgICBpZDogJ29yZGVyJywgbGFiZWw6IGdldHRleHQoJ09yZGVyJyksIGNlbGw6ICdz ZWxlY3QnLCBjb250cm9sUHJvcHM6IHsKKyAgICAgICAgICBhbGxvd0NsZWFyOiBmYWxzZSwKKyAg ICAgICAgfSwgb3B0aW9uczogWworICAgICAgICAgIHtsYWJlbDogZ2V0dGV4dCgnQVNDJyksIHZh bHVlOiAnYXNjJ30sCisgICAgICAgICAge2xhYmVsOiBnZXR0ZXh0KCdERVNDJyksIHZhbHVlOiAn ZGVzYyd9LAorICAgICAgICBdCisgICAgICB9LAorICAgIF07CisgIH0KK30KKworY2xhc3MgRmls dGVyU2NoZW1hIGV4dGVuZHMgQmFzZVVJU2NoZW1hIHsKKyAgY29uc3RydWN0b3IoY29sdW1uT3B0 aW9ucykgeworICAgIHN1cGVyKHsKKyAgICAgIHNxbDogbnVsbCwKKyAgICAgIGRhdGFfc29ydGlu ZzogW10sCisgICAgfSk7CisgICAgdGhpcy5zb3J0aW5nQ29sbE9iaiA9IG5ldyBTb3J0aW5nQ29s bGVjdGlvbihjb2x1bW5PcHRpb25zKTsKKyAgfQorCisgIHNldENvbHVtbk9wdGlvbnMoY29sdW1u T3B0aW9ucykgeworICAgIHRoaXMuc29ydGluZ0NvbGxPYmouc2V0Q29sdW1uT3B0aW9ucyhjb2x1 bW5PcHRpb25zKTsKKyAgfQorCisgIGdldCBiYXNlRmllbGRzKCkgeworICAgIGxldCBvYmogPSB0 aGlzOworICAgIHJldHVybiBbCisgICAgICB7CisgICAgICAgIGlkOiAnc3FsJywgbGFiZWw6IGdl dHRleHQoJ1NRTCBGaWx0ZXInKSwgdHlwZTogJ3NxbCcsIGNvbnRyb2xQcm9wczogeworICAgICAg ICAgIG9wdGlvbnM6IHsKKyAgICAgICAgICAgIGxpbmVXcmFwcGluZzogdHJ1ZSwKKyAgICAgICAg ICB9LAorICAgICAgICB9CisgICAgICB9LAorICAgICAgeworICAgICAgICBpZDogJ2RhdGFfc29y dGluZycsIGxhYmVsOiBnZXR0ZXh0KCdEYXRhIFNvcnRpbmcnKSwgdHlwZTogJ2NvbGxlY3Rpb24n LCBzY2hlbWE6IG9iai5zb3J0aW5nQ29sbE9iaiwKKyAgICAgICAgZ3JvdXA6ICd0ZW1wJywgdW5p cXVlQ29sOiBbJ25hbWUnXSwgY2FuQWRkOiB0cnVlLCBjYW5FZGl0OiBmYWxzZSwgY2FuRGVsZXRl OiB0cnVlLAorICAgICAgfSwKKyAgICBdOworICB9Cit9CisKK2NvbnN0IHVzZVN0eWxlcyA9IG1h a2VTdHlsZXMoKHRoZW1lKT0+KHsKKyAgcm9vdDogeworICAgIC4uLnRoZW1lLm1peGlucy50YWJQ YW5lbCwKKyAgfSwKK30pKTsKKworZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRmlsdGVyRGlhbG9n KHtvbkNsb3NlLCBvblNhdmV9KSB7CisgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAg Y29uc3QgcXVlcnlUb29sQ3R4ID0gUmVhY3QudXNlQ29udGV4dChRdWVyeVRvb2xDb250ZXh0KTsK KyAgY29uc3QgZmlsdGVyU2NoZW1hT2JqID0gUmVhY3QudXNlTWVtbygoKT0+bmV3IEZpbHRlclNj aGVtYShbXSkpOworCisgIGNvbnN0IGdldEluaXREYXRhID0gKCk9PnsKKyAgICByZXR1cm4gbmV3 IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PnsKKyAgICAgIGNvbnN0IGdldEZpbHRlckRhdGEg PSBhc3luYyAoKT0+eworICAgICAgICB0cnkgeworICAgICAgICAgIGxldCB7ZGF0YTogcmVzcERh dGF9ID0gYXdhaXQgcXVlcnlUb29sQ3R4LmFwaS5nZXQodXJsX2Zvcignc3FsZWRpdG9yLmdldF9m aWx0ZXJfZGF0YScsIHsKKyAgICAgICAgICAgICd0cmFuc19pZCc6IHF1ZXJ5VG9vbEN0eC5wYXJh bXMudHJhbnNfaWQsCisgICAgICAgICAgfSkpOworICAgICAgICAgIGxldCB7Y29sdW1uX2xpc3Q6 IGNvbHVtbnMsIC4uLmZpbHRlckRhdGF9ID0gcmVzcERhdGEuZGF0YS5yZXN1bHQ7CisgICAgICAg ICAgZmlsdGVyU2NoZW1hT2JqLnNldENvbHVtbk9wdGlvbnMoKGNvbHVtbnN8fFtdKS5tYXAoKGMp PT4oe2xhYmVsOiBjLCB2YWx1ZTogY30pKSk7CisgICAgICAgICAgcmVzb2x2ZShmaWx0ZXJEYXRh KTsKKyAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsKKyAgICAgICAgICByZWplY3QoZXJyb3IpOwor ICAgICAgICB9CisgICAgICB9OworICAgICAgZ2V0RmlsdGVyRGF0YSgpOworICAgIH0pOworICB9 OworCisgIGNvbnN0IG9uU2F2ZUNsaWNrID0gKF9pc05ldywgY2hhbmdlRGF0YSk9PnsKKyAgICBy ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk9PnsKKyAgICAgIGNvbnN0IHNldEZp bHRlckRhdGEgPSBhc3luYyAoKT0+eworICAgICAgICB0cnkgeworICAgICAgICAgIGxldCB7ZGF0 YTogcmVzcERhdGF9ID0gYXdhaXQgcXVlcnlUb29sQ3R4LmFwaS5wdXQodXJsX2Zvcignc3FsZWRp dG9yLnNldF9maWx0ZXJfZGF0YScsIHsKKyAgICAgICAgICAgICd0cmFuc19pZCc6IHF1ZXJ5VG9v bEN0eC5wYXJhbXMudHJhbnNfaWQsCisgICAgICAgICAgfSksIGNoYW5nZURhdGEpOworICAgICAg ICAgIGlmKHJlc3BEYXRhLmRhdGEuc3RhdHVzKSB7CisgICAgICAgICAgICByZXNvbHZlKCk7Cisg ICAgICAgICAgICBvblNhdmUoKTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVq ZWN0KHJlc3BEYXRhLmRhdGEucmVzdWx0KTsKKyAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2gg KGVycm9yKSB7CisgICAgICAgICAgcmVqZWN0KGVycm9yKTsKKyAgICAgICAgfQorICAgICAgfTsK KyAgICAgIHNldEZpbHRlckRhdGEoKTsKKyAgICB9KTsKKyAgfTsKKworICByZXR1cm4gKDw+Cisg ICAgPFNjaGVtYVZpZXcKKyAgICAgIGZvcm1UeXBlPXsnZGlhbG9nJ30KKyAgICAgIGdldEluaXRE YXRhPXtnZXRJbml0RGF0YX0KKyAgICAgIHNjaGVtYT17ZmlsdGVyU2NoZW1hT2JqfQorICAgICAg dmlld0hlbHBlclByb3BzPXt7CisgICAgICAgIG1vZGU6ICdjcmVhdGUnLAorICAgICAgfX0KKyAg ICAgIG9uU2F2ZT17b25TYXZlQ2xpY2t9CisgICAgICBvbkNsb3NlPXtvbkNsb3NlfQorICAgICAg aGFzU1FMPXtmYWxzZX0KKyAgICAgIGRpc2FibGVTcWxIZWxwPXt0cnVlfQorICAgICAgZGlzYWJs ZURpYWxvZ0hlbHA9e3RydWV9CisgICAgICBpc1RhYlZpZXc9e2ZhbHNlfQorICAgICAgZm9ybUNs YXNzTmFtZT17Y2xhc3Nlcy5yb290fQorICAgIC8+CisgIDwvPik7Cit9CisKK0ZpbHRlckRpYWxv Zy5wcm9wVHlwZXMgPSB7CisgIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLAorICBvblNhdmU6IFBy b3BUeXBlcy5mdW5jLAorfTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci9zdGF0aWMvanMvY29tcG9uZW50cy9kaWFsb2dzL01hY3Jvc0RpYWxvZy5qc3ggYi93ZWIvcGdh ZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvZGlhbG9ncy9NYWNyb3NE aWFsb2cuanN4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uZjY3ZTE4ODk5 Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9q cy9jb21wb25lbnRzL2RpYWxvZ3MvTWFjcm9zRGlhbG9nLmpzeApAQCAtMCwwICsxLDE4OSBAQAor Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmln aHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlz IHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisv Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLworaW1wb3J0IHsgbWFrZVN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJzsKK2lt cG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7CitpbXBvcnQgU2NoZW1hVmlldyBmcm9tICcuLi8uLi8u Li8uLi8uLi8uLi9zdGF0aWMvanMvU2NoZW1hVmlldyc7CitpbXBvcnQgQmFzZVVJU2NoZW1hIGZy b20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9TY2hlbWFWaWV3L2Jhc2Vfc2NoZW1hLnVp JzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7CitpbXBvcnQgeyBRdWVy eVRvb2xDb250ZXh0IH0gZnJvbSAnLi4vUXVlcnlUb29sQ29tcG9uZW50JzsKK2ltcG9ydCB1cmxf Zm9yIGZyb20gJ3NvdXJjZXMvdXJsX2Zvcic7CitpbXBvcnQgXyBmcm9tICdsb2Rhc2gnOworaW1w b3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJzsKKworY2xhc3MgTWFjcm9zQ29sbGVjdGlv biBleHRlbmRzIEJhc2VVSVNjaGVtYSB7CisgIGNvbnN0cnVjdG9yKGtleU9wdGlvbnMpIHsKKyAg ICBzdXBlcigpOworICAgIHRoaXMua2V5T3B0aW9ucyA9IGtleU9wdGlvbnM7CisgIH0KKworICBn ZXQgaWRBdHRyaWJ1dGUoKSB7CisgICAgcmV0dXJuICdtaWQnOworICB9CisKKyAgZ2V0IGJhc2VG aWVsZHMoKSB7CisgICAgbGV0IG9iaiA9IHRoaXM7CisgICAgcmV0dXJuIFsKKyAgICAgIHsKKyAg ICAgICAgaWQ6ICdpZCcsIGxhYmVsOiBnZXR0ZXh0KCdLZXknKSwgY2VsbDogJ3NlbGVjdCcsIG5v RW1wdHk6IHRydWUsCisgICAgICAgIHdpZHRoOiAxMDAsIG9wdGlvbnM6IG9iai5rZXlPcHRpb25z LCBvcHRpb25zUmVsb2FkQmFzaXM6IG9iai5rZXlPcHRpb25zLmxlbmd0aCwKKyAgICAgICAgY29u dHJvbFByb3BzOiB7CisgICAgICAgICAgYWxsb3dDbGVhcjogZmFsc2UsCisgICAgICAgIH0KKyAg ICAgIH0sCisgICAgICB7CisgICAgICAgIGlkOiAnbmFtZScsIGxhYmVsOiBnZXR0ZXh0KCdOYW1l JyksIGNlbGw6ICd0ZXh0Jywgbm9FbXB0eTogdHJ1ZSwKKyAgICAgICAgd2lkdGg6IDEwMCwKKyAg ICAgIH0sCisgICAgICB7CisgICAgICAgIGlkOiAnc3FsJywgbGFiZWw6IGdldHRleHQoJ1NRTCcp LCBjZWxsOiAnc3FsJywgbm9FbXB0eTogdHJ1ZSwKKyAgICAgICAgd2lkdGg6IDMwMCwgY29udHJv bFByb3BzOiB7CisgICAgICAgICAgb3B0aW9uczogeworICAgICAgICAgICAgZm9sZEd1dHRlcjog ZmFsc2UsCisgICAgICAgICAgICBsaW5lTnVtYmVyczogZmFsc2UsCisgICAgICAgICAgICBndXR0 ZXJzOiBbXSwKKyAgICAgICAgICAgIHJlYWRPbmx5OiB0cnVlLAorICAgICAgICAgICAgbGluZVdy YXBwaW5nOiB0cnVlLAorICAgICAgICAgIH0sCisgICAgICAgIH0KKyAgICAgIH0sCisgICAgXTsK KyAgfQorfQorCitjbGFzcyBNYWNyb3NTY2hlbWEgZXh0ZW5kcyBCYXNlVUlTY2hlbWEgeworICBj b25zdHJ1Y3RvcihrZXlPcHRpb25zKSB7CisgICAgc3VwZXIoKTsKKyAgICB0aGlzLm1hY3Jvc0Nv bGxPYmogPSBuZXcgTWFjcm9zQ29sbGVjdGlvbihrZXlPcHRpb25zKTsKKyAgfQorCisgIGdldCBi YXNlRmllbGRzKCkgeworICAgIGxldCBvYmogPSB0aGlzOworICAgIHJldHVybiBbCisgICAgICB7 CisgICAgICAgIGlkOiAnbWFjcm8nLCBsYWJlbDogJycsIHR5cGU6ICdjb2xsZWN0aW9uJywgc2No ZW1hOiBvYmoubWFjcm9zQ29sbE9iaiwKKyAgICAgICAgY2FuQWRkOiB0cnVlLCBjYW5EZWxldGU6 IHRydWUsIGlzRnVsbFRhYjogdHJ1ZSwgZ3JvdXA6ICd0ZW1wJywKKyAgICAgIH0sCisgICAgXTsK KyAgfQorCisgIHZhbGlkYXRlKHN0YXRlLCBzZXRFcnJvcikgeworICAgIGxldCBhbGxLZXlzID0g c3RhdGUubWFjcm8ubWFwKChtKT0+bS5pZC50b1N0cmluZygpKTsKKyAgICBpZihhbGxLZXlzLmxl bmd0aCAhPSAgbmV3IFNldChhbGxLZXlzKS5zaXplKSB7CisgICAgICBzZXRFcnJvcignbWFjcm8n LCBnZXR0ZXh0KCdLZXkgbXVzdCBiZSB1bmlxdWUuJykpOworICAgICAgcmV0dXJuIHRydWU7Cisg ICAgfQorICAgIHJldHVybiBmYWxzZTsKKyAgfQorfQorCitjb25zdCB1c2VTdHlsZXMgPSBtYWtl U3R5bGVzKCh0aGVtZSk9Pih7CisgIHJvb3Q6IHsKKyAgICAuLi50aGVtZS5taXhpbnMudGFiUGFu ZWwsCisgICAgcGFkZGluZzogMCwKKyAgfSwKK30pKTsKKworZnVuY3Rpb24gZ2V0Q2hhbmdlZE1h Y3JvcyhtYWNyb3NEYXRhLCBjaGFuZ2VEYXRhKSB7CisgIC8qIEZvciBiYWNrZW5kLCBhZGRlZCwg cmVtb3ZlZCBpcyBjaGFuZ2VkLiBDb252ZXJ0IGFsbCBhZGRlZCwgcmVtb3ZlZCB0byBjaGFuZ2Vk LiAqLworICBsZXQgY2hhbmdlZCA9IFtdOworICBmb3IgKGNvbnN0IG0gb2YgKGNoYW5nZURhdGEu bWFjcm8uY2hhbmdlZCB8fCBbXSkpIHsKKyAgICBsZXQgbmV3TSA9IHsuLi5tfTsKKyAgICBpZign aWQnIGluIG0pIHsKKyAgICAgIC8qIGlmIGtleSBjaGFuZ2VkLCBjbGVhciBwcmV2IGFuZCBhZGQg bmV3ICovCisgICAgICBjaGFuZ2VkLnB1c2goe2lkOiBtLm1pZCwgbmFtZTogbnVsbCwgc3FsOiBu dWxsfSk7CisgICAgICBsZXQgZW0gPSBfLmZpbmQobWFjcm9zRGF0YSwgKGQpPT5kLm1pZD09bS5t aWQpOworICAgICAgbmV3TSA9IHtuYW1lOiBlbS5uYW1lLCBzcWw6IGVtLnNxbCwgLi4ubX07Cisg ICAgfSBlbHNlIHsKKyAgICAgIG5ld00uaWQgPSBtLm1pZDsKKyAgICB9CisgICAgZGVsZXRlIG5l d00ubWlkOworICAgIGNoYW5nZWQucHVzaChuZXdNKTsKKyAgfQorICBmb3IgKGNvbnN0IG0gb2Yg KGNoYW5nZURhdGEubWFjcm8uZGVsZXRlZCB8fCBbXSkpIHsKKyAgICBjaGFuZ2VkLnB1c2goe2lk OiBtLmlkLCBuYW1lOiBudWxsLCBzcWw6IG51bGx9KTsKKyAgfQorICBmb3IgKGNvbnN0IG0gb2Yg KGNoYW5nZURhdGEubWFjcm8uYWRkZWQgfHwgW10pKSB7CisgICAgY2hhbmdlZC5wdXNoKG0pOwor ICB9CisgIHJldHVybiBjaGFuZ2VkOworfQorCitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBNYWNy b3NEaWFsb2coe29uQ2xvc2UsIG9uU2F2ZX0pIHsKKyAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxl cygpOworICBjb25zdCBxdWVyeVRvb2xDdHggPSBSZWFjdC51c2VDb250ZXh0KFF1ZXJ5VG9vbENv bnRleHQpOworICBjb25zdCBbbWFjcm9zRGF0YSwgc2V0TWFjcm9zRGF0YV0gPSBSZWFjdC51c2VT dGF0ZShbXSk7CisgIGNvbnN0IFttYWNyb3NFcnIsIHNldE1hY3Jvc0Vycl0gPSBSZWFjdC51c2VT dGF0ZShudWxsKTsKKworICBSZWFjdC51c2VFZmZlY3QoYXN5bmMgKCk9PnsKKyAgICB0cnkgewor ICAgICAgbGV0IHtkYXRhOiByZXNwRGF0YX0gPSBhd2FpdCBxdWVyeVRvb2xDdHguYXBpLmdldCh1 cmxfZm9yKCdzcWxlZGl0b3IuZ2V0X21hY3JvcycsIHsKKyAgICAgICAgJ3RyYW5zX2lkJzogcXVl cnlUb29sQ3R4LnBhcmFtcy50cmFuc19pZCwKKyAgICAgIH0pKTsKKyAgICAgIC8qIENvcHlpbmcg aWQgdG8gbWlkIHRvIHRyYWNrIGtleSBpZCBjaGFuZ2VzICovCisgICAgICBzZXRNYWNyb3NEYXRh KHJlc3BEYXRhLm1hY3JvLm1hcCgobSk9Pih7Li4ubSwgbWlkOiBtLmlkfSkpKTsKKyAgICB9IGNh dGNoIChlcnJvcikgeworICAgICAgc2V0TWFjcm9zRXJyKGVycm9yKTsKKyAgICB9CisgIH0sIFtd KTsKKworICBjb25zdCBvblNhdmVDbGljayA9IChfaXNOZXcsIGNoYW5nZURhdGEpPT57CisgICAg cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpPT57CisgICAgICBjb25zdCBzZXRN YWNyb3MgPSBhc3luYyAoKT0+eworICAgICAgICB0cnkgeworICAgICAgICAgIGxldCBjaGFuZ2Vk ID0gZ2V0Q2hhbmdlZE1hY3JvcyhtYWNyb3NEYXRhLCBjaGFuZ2VEYXRhKTsKKyAgICAgICAgICBs ZXQge2RhdGE6IHJlc3BEYXRhfSA9IGF3YWl0IHF1ZXJ5VG9vbEN0eC5hcGkucHV0KHVybF9mb3Io J3NxbGVkaXRvci5zZXRfbWFjcm9zJywgeworICAgICAgICAgICAgJ3RyYW5zX2lkJzogcXVlcnlU b29sQ3R4LnBhcmFtcy50cmFuc19pZCwKKyAgICAgICAgICB9KSwge2NoYW5nZWQ6IGNoYW5nZWR9 KTsKKyAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgb25TYXZlKHJlc3BEYXRhLm1hY3Jv Py5maWx0ZXIoKG0pPT5Cb29sZWFuKG0ubmFtZSkpKTsKKyAgICAgICAgICBvbkNsb3NlKCk7Cisg ICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7CisgICAgICAgICAgcmVqZWN0KGVycm9yKTsKKyAgICAg ICAgfQorICAgICAgfTsKKyAgICAgIHNldE1hY3JvcygpOworICAgIH0pOworICB9OworCisgIGNv bnN0IGtleU9wdGlvbnMgPSBtYWNyb3NEYXRhLm1hcCgobSk9Pih7CisgICAgbGFiZWw6IG0ua2V5 X2xhYmVsLAorICAgIHZhbHVlOiBtLmlkLAorICB9KSk7CisKKyAgaWYoa2V5T3B0aW9ucy5sZW5n dGggPD0gMCkgeworICAgIHJldHVybiA8PjwvPjsKKyAgfQorICByZXR1cm4gKDw+CisgICAgPFNj aGVtYVZpZXcKKyAgICAgIGZvcm1UeXBlPXsnZGlhbG9nJ30KKyAgICAgIGdldEluaXREYXRhPXso KT0+eworICAgICAgICBpZihtYWNyb3NFcnIpIHsKKyAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y ZWplY3QobWFjcm9zRXJyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNv bHZlKHttYWNybzogbWFjcm9zRGF0YS5maWx0ZXIoKG0pPT5Cb29sZWFuKG0ubmFtZSkpfSk7Cisg ICAgICB9fQorICAgICAgc2NoZW1hPXtuZXcgTWFjcm9zU2NoZW1hKGtleU9wdGlvbnMpfQorICAg ICAgdmlld0hlbHBlclByb3BzPXt7CisgICAgICAgIG1vZGU6ICdlZGl0JywKKyAgICAgIH19Cisg ICAgICBvblNhdmU9e29uU2F2ZUNsaWNrfQorICAgICAgb25DbG9zZT17b25DbG9zZX0KKyAgICAg IGhhc1NRTD17ZmFsc2V9CisgICAgICBkaXNhYmxlU3FsSGVscD17dHJ1ZX0KKyAgICAgIGRpc2Fi bGVEaWFsb2dIZWxwPXt0cnVlfQorICAgICAgaXNUYWJWaWV3PXtmYWxzZX0KKyAgICAgIGZvcm1D bGFzc05hbWU9e2NsYXNzZXMucm9vdH0KKyAgICAvPgorICA8Lz4pOworfQorCitNYWNyb3NEaWFs b2cucHJvcFR5cGVzID0geworICBvbkNsb3NlOiBQcm9wVHlwZXMuZnVuYywKKyAgb25TYXZlOiBQ cm9wVHlwZXMuZnVuYywKK307CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0 b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvZGlhbG9ncy9OZXdDb25uZWN0aW9uRGlhbG9nLmpzeCBi L3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9kaWFsb2dz L05ld0Nvbm5lY3Rpb25EaWFsb2cuanN4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAwMC4uZTcwNzdlZTA5Ci0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3Fs ZWRpdG9yL3N0YXRpYy9qcy9jb21wb25lbnRzL2RpYWxvZ3MvTmV3Q29ubmVjdGlvbkRpYWxvZy5q c3gKQEAgLTAsMCArMSwxNjcgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FM IFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4gRGV2 ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9z dGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCB7IG1ha2VTdHlsZXMgfSBmcm9tICdA bWF0ZXJpYWwtdWkvY29yZSc7CitpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnOworaW1wb3J0IFNj aGVtYVZpZXcgZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc3RhdGljL2pzL1NjaGVtYVZpZXcnOwor aW1wb3J0IEJhc2VVSVNjaGVtYSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvU2No ZW1hVmlldy9iYXNlX3NjaGVtYS51aSc7CitpbXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dl dHRleHQnOworaW1wb3J0IHsgUXVlcnlUb29sQ29udGV4dCB9IGZyb20gJy4uL1F1ZXJ5VG9vbENv bXBvbmVudCc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICdzb3VyY2VzL3VybF9mb3InOworaW1wb3J0 IF8gZnJvbSAnbG9kYXNoJzsKK2ltcG9ydCB7IGZsYXR0ZW5TZWxlY3RPcHRpb25zIH0gZnJvbSAn Li4vLi4vLi4vLi4vLi4vLi4vc3RhdGljL2pzL2NvbXBvbmVudHMvRm9ybUNvbXBvbmVudHMnOwor aW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJzsKKworY2xhc3MgTmV3Q29ubmVjdGlv blNjaGVtYSBleHRlbmRzIEJhc2VVSVNjaGVtYSB7CisgIGNvbnN0cnVjdG9yKGFwaSwgcGFyYW1z KSB7CisgICAgc3VwZXIoeworICAgICAgc2lkOiBudWxsLAorICAgICAgZGlkOiBudWxsLAorICAg ICAgdXNlcjogbnVsbCwKKyAgICAgIHJvbGU6IG51bGwsCisgICAgICBzZXJ2ZXJfbmFtZTogbnVs bCwKKyAgICAgIGRhdGFiYXNlX25hbWU6IG51bGwsCisgICAgfSk7CisgICAgdGhpcy5zZXJ2ZXJz ID0gW107CisgICAgdGhpcy5kYnMgPSBbXTsKKyAgICB0aGlzLnBhcmFtcyA9IHBhcmFtczsKKyAg ICB0aGlzLmFwaSA9IGFwaTsKKyAgICB0aGlzLndhcm5pbmdUZXh0ID0gZ2V0dGV4dCgnQnkgY2hh bmdpbmcgdGhlIGNvbm5lY3Rpb24geW91IHdpbGwgbG9zZSBhbGwgeW91ciB1bnNhdmVkIGRhdGEg Zm9yIHRoZSBjdXJyZW50IGNvbm5lY3Rpb24uIDxicj4gRG8geW91IHdhbnQgdG8gY29udGludWU/ Jyk7CisgIH0KKworICBnZXRTZXJ2ZXJMaXN0KCkgeworICAgIGxldCBvYmogPSB0aGlzOworICAg IHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+eworICAgICAgdGhpcy5hcGku Z2V0KHVybF9mb3IoJ3NxbGVkaXRvci5nZXRfbmV3X2Nvbm5lY3Rpb25fc2VydmVycycpKQorICAg ICAgICAudGhlbigoe2RhdGE6IHJlc3BEYXRhfSk9PnsKKyAgICAgICAgICBsZXQgZ3JvdXBlZE9w dGlvbnMgPSBbXTsKKyAgICAgICAgICBfLmZvckluKHJlc3BEYXRhLmRhdGEucmVzdWx0LnNlcnZl cl9saXN0LCAodiwgayk9PnsKKyAgICAgICAgICAgIF8uZmluZCh2LCAobyk9Pm8udmFsdWU9PW9i ai5wYXJhbXMuc2lkKS5zZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAgICBncm91cGVkT3B0aW9u cy5wdXNoKHsKKyAgICAgICAgICAgICAgbGFiZWw6IGssCisgICAgICAgICAgICAgIG9wdGlvbnM6 IHYsCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9KTsKKyAgICAgICAgICByZXNvbHZlKGdy b3VwZWRPcHRpb25zKTsKKyAgICAgICAgfSkKKyAgICAgICAgLmNhdGNoKChlcnJvcik9PnsKKyAg ICAgICAgICByZWplY3QoZXJyb3IpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgfQorCisgIGdl dE90aGVyT3B0aW9ucyhzaWQsIHR5cGUpIHsKKyAgICBpZighc2lkKSB7CisgICAgICByZXR1cm4g W107CisgICAgfQorICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+ewor ICAgICAgdGhpcy5hcGkuZ2V0KHVybF9mb3IoYHNxbGVkaXRvci4ke3R5cGV9YCwgeworICAgICAg ICAnc2lkJzogc2lkLAorICAgICAgICAnc2dpZCc6IDAsCisgICAgICB9KSkKKyAgICAgICAgLnRo ZW4oKHtkYXRhOiByZXNwRGF0YX0pPT57CisgICAgICAgICAgcmVzb2x2ZShyZXNwRGF0YS5kYXRh LnJlc3VsdC5kYXRhKTsKKyAgICAgICAgfSkKKyAgICAgICAgLmNhdGNoKChlcnJvcik9PnsKKyAg ICAgICAgICByZWplY3QoZXJyb3IpOworICAgICAgICB9KTsKKyAgICB9KTsKKyAgfQorCisgIGdl dCBiYXNlRmllbGRzKCkgeworICAgIHJldHVybiBbCisgICAgICB7CisgICAgICAgIGlkOiAnc2lk JywgbGFiZWw6IGdldHRleHQoJ1NlcnZlcicpLCB0eXBlOiAnc2VsZWN0Jywgbm9FbXB0eTogdHJ1 ZSwKKyAgICAgICAgY29udHJvbFByb3BzOiB7CisgICAgICAgICAgYWxsb3dDbGVhcjogZmFsc2Us CisgICAgICAgIH0sIG9wdGlvbnM6ICgpPT50aGlzLmdldFNlcnZlckxpc3QoKSwKKyAgICAgICAg b3B0aW9uc0xvYWRlZDogKHJlcyk9PnRoaXMuc2VydmVycz1mbGF0dGVuU2VsZWN0T3B0aW9ucyhy ZXMpLAorICAgICAgICBkZXBDaGFuZ2U6IChzdGF0ZSk9PnsKKyAgICAgICAgICAvKiBPbmNlIHRo ZSBvcHRpb24gaXMgc2VsZWN0ZWQgZ2V0IHRoZSBuYW1lICovCisgICAgICAgICAgcmV0dXJuIHsK KyAgICAgICAgICAgIHNlcnZlcl9uYW1lOiBfLmZpbmQodGhpcy5zZXJ2ZXJzLCAocyk9PnMudmFs dWU9PXN0YXRlLnNpZCk/LmxhYmVsLAorICAgICAgICAgICAgZGlkOiBudWxsLAorICAgICAgICAg ICAgdXNlcjogbnVsbCwKKyAgICAgICAgICAgIHJvbGU6IG51bGwsCisgICAgICAgICAgfTsKKyAg ICAgICAgfQorICAgICAgfSwgeworICAgICAgICBpZDogJ2RpZCcsIGxhYmVsOiBnZXR0ZXh0KCdE YXRhYmFzZScpLCBkZXBzOiBbJ3NpZCddLCBub0VtcHR5OiB0cnVlLAorICAgICAgICBjb250cm9s UHJvcHM6IHsKKyAgICAgICAgICBhbGxvd0NsZWFyOiBmYWxzZSwKKyAgICAgICAgfSwKKyAgICAg ICAgdHlwZTogKHN0YXRlKT0+KHsKKyAgICAgICAgICB0eXBlOiAnc2VsZWN0JywKKyAgICAgICAg ICBvcHRpb25zOiAoKT0+dGhpcy5nZXRPdGhlck9wdGlvbnMoc3RhdGUuc2lkLCAnZ2V0X25ld19j b25uZWN0aW9uX2RhdGFiYXNlJyksCisgICAgICAgICAgb3B0aW9uc1JlbG9hZEJhc2lzOiBzdGF0 ZS5zaWQsCisgICAgICAgIH0pLAorICAgICAgICBvcHRpb25zTG9hZGVkOiAocmVzKT0+dGhpcy5k YnM9cmVzLAorICAgICAgICBkZXBDaGFuZ2U6IChzdGF0ZSk9PnsKKyAgICAgICAgICAvKiBPbmNl IHRoZSBvcHRpb24gaXMgc2VsZWN0ZWQgZ2V0IHRoZSBuYW1lICovCisgICAgICAgICAgcmV0dXJu IHtkYXRhYmFzZV9uYW1lOiBfLmZpbmQodGhpcy5kYnMsIChzKT0+cy52YWx1ZT09c3RhdGUuZGlk KT8ubGFiZWx9OworICAgICAgICB9CisgICAgICB9LHsKKyAgICAgICAgaWQ6ICd1c2VyJywgbGFi ZWw6IGdldHRleHQoJ1VzZXInKSwgZGVwczogWydzaWQnXSwgbm9FbXB0eTogdHJ1ZSwKKyAgICAg ICAgY29udHJvbFByb3BzOiB7CisgICAgICAgICAgYWxsb3dDbGVhcjogZmFsc2UsCisgICAgICAg IH0sCisgICAgICAgIHR5cGU6IChzdGF0ZSk9Pih7CisgICAgICAgICAgdHlwZTogJ3NlbGVjdCcs CisgICAgICAgICAgb3B0aW9uczogKCk9PnRoaXMuZ2V0T3RoZXJPcHRpb25zKHN0YXRlLnNpZCwg J2dldF9uZXdfY29ubmVjdGlvbl91c2VyJyksCisgICAgICAgICAgb3B0aW9uc1JlbG9hZEJhc2lz OiBzdGF0ZS5zaWQsCisgICAgICAgIH0pLAorICAgICAgfSx7CisgICAgICAgIGlkOiAncm9sZScs IGxhYmVsOiBnZXR0ZXh0KCdSb2xlJyksIGRlcHM6IFsnc2lkJ10sCisgICAgICAgIHR5cGU6IChz dGF0ZSk9Pih7CisgICAgICAgICAgdHlwZTogJ3NlbGVjdCcsCisgICAgICAgICAgb3B0aW9uczog KCk9PnRoaXMuZ2V0T3RoZXJPcHRpb25zKHN0YXRlLnNpZCwgJ2dldF9uZXdfY29ubmVjdGlvbl9y b2xlJyksCisgICAgICAgICAgb3B0aW9uc1JlbG9hZEJhc2lzOiBzdGF0ZS5zaWQsCisgICAgICAg IH0pLAorICAgICAgfSx7CisgICAgICAgIGlkOiAnc2VydmVyX25hbWUnLCBsYWJlbDogJycsIHR5 cGU6ICd0ZXh0JywgdmlzaWJsZTogZmFsc2UsCisgICAgICB9LHsKKyAgICAgICAgaWQ6ICdkYXRh YmFzZV9uYW1lJywgbGFiZWw6ICcnLCB0eXBlOiAndGV4dCcsIHZpc2libGU6IGZhbHNlLAorICAg ICAgfSwKKyAgICBdOworICB9Cit9CisKKworY29uc3QgdXNlU3R5bGVzID0gbWFrZVN0eWxlcygo dGhlbWUpPT4oeworICByb290OiB7CisgICAgLi4udGhlbWUubWl4aW5zLnRhYlBhbmVsLAorICB9 LAorfSkpOworCitleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBOZXdDb25uZWN0aW9uRGlhbG9nKHtv bkNsb3NlLCBvblNhdmV9KSB7CisgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAgY29u c3QgcXVlcnlUb29sQ3R4ID0gUmVhY3QudXNlQ29udGV4dChRdWVyeVRvb2xDb250ZXh0KTsKKwor ICByZXR1cm4gPFNjaGVtYVZpZXcKKyAgICBmb3JtVHlwZT17J2RpYWxvZyd9CisgICAgZ2V0SW5p dERhdGE9eygpPT5Qcm9taXNlLnJlc29sdmUoe30pfQorICAgIHNjaGVtYT17bmV3IE5ld0Nvbm5l Y3Rpb25TY2hlbWEocXVlcnlUb29sQ3R4LmFwaSwgeworICAgICAgc2lkOiBxdWVyeVRvb2xDdHgu cGFyYW1zLnNpZCwgc2dpZDogMCwKKyAgICB9KX0KKyAgICB2aWV3SGVscGVyUHJvcHM9e3sKKyAg ICAgIG1vZGU6ICdjcmVhdGUnLAorICAgIH19CisgICAgb25TYXZlPXtvblNhdmV9CisgICAgb25D bG9zZT17b25DbG9zZX0KKyAgICBoYXNTUUw9e2ZhbHNlfQorICAgIGRpc2FibGVTcWxIZWxwPXt0 cnVlfQorICAgIGRpc2FibGVEaWFsb2dIZWxwPXt0cnVlfQorICAgIGlzVGFiVmlldz17ZmFsc2V9 CisgICAgZm9ybUNsYXNzTmFtZT17Y2xhc3Nlcy5yb290fQorICAvPjsKK30KKworTmV3Q29ubmVj dGlvbkRpYWxvZy5wcm9wVHlwZXMgPSB7CisgIG9uQ2xvc2U6IFByb3BUeXBlcy5mdW5jLAorICBv blNhdmU6IFByb3BUeXBlcy5mdW5jLAorfTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xz L3NxbGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Db25uZWN0aW9uQmFyLmpz eCBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9zZWN0 aW9ucy9Db25uZWN0aW9uQmFyLmpzeApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAuLmRhMTQ5M2U2OQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVk aXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9Db25uZWN0aW9uQmFyLmpzeApAQCAt MCwwICsxLDE0OCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK Ky8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVu dCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsKK2ltcG9ydCB7 IG1ha2VTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvc3R5bGVzJzsKK2ltcG9ydCB7IEJveCwg Q2lyY3VsYXJQcm9ncmVzcywgVG9vbHRpcCB9IGZyb20gJ0BtYXRlcmlhbC11aS9jb3JlJzsKK2lt cG9ydCB7IERlZmF1bHRCdXR0b24sIFBnQnV0dG9uR3JvdXAsIFBnSWNvbkJ1dHRvbiB9IGZyb20g Jy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9jb21wb25lbnRzL0J1dHRvbnMnOworaW1wb3J0 IEtleWJvYXJkQXJyb3dEb3duSWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvS2V5Ym9hcmRB cnJvd0Rvd24nOworaW1wb3J0IHsgQ29ubmVjdGVkSWNvbiwgRGlzb25uZWN0ZWRJY29uLCBRdWVy eVRvb2xJY29uIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc3RhdGljL2pzL2NvbXBvbmVudHMv RXh0ZXJuYWxJY29uJzsKK2ltcG9ydCB7IFF1ZXJ5VG9vbENvbnRleHQgfSBmcm9tICcuLi9RdWVy eVRvb2xDb21wb25lbnQnOworaW1wb3J0IHsgQ09OTkVDVElPTl9TVEFUVVMsIENPTk5FQ1RJT05f U1RBVFVTX01FU1NBR0UgfSBmcm9tICcuLi9RdWVyeVRvb2xDb25zdGFudHMnOworaW1wb3J0IEhv dXJnbGFzc0VtcHR5Um91bmRlZEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0hvdXJnbGFz c0VtcHR5Um91bmRlZCc7CitpbXBvcnQgUXVlcnlCdWlsZGVyUm91bmRlZEljb24gZnJvbSAnQG1h dGVyaWFsLXVpL2ljb25zL1F1ZXJ5QnVpbGRlclJvdW5kZWQnOworaW1wb3J0IEVycm9yT3V0bGlu ZVJvdW5kZWRJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9FcnJvck91dGxpbmVSb3VuZGVk JzsKK2ltcG9ydCBSZXBvcnRQcm9ibGVtUm91bmRlZEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2lj b25zL1JlcG9ydFByb2JsZW1Sb3VuZGVkJzsKK2ltcG9ydCB7IFBnTWVudSwgUGdNZW51SXRlbSB9 IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9jb21wb25lbnRzL01lbnUnOworaW1w b3J0IGdldHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKK2ltcG9ydCBSb3RhdGVMZWZ0Um91 bmRlZEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1JvdGF0ZUxlZnRSb3VuZGVkJzsKK2lt cG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7CisKK2NvbnN0IHVzZVN0eWxlcyA9IG1h a2VTdHlsZXMoKHRoZW1lKT0+KHsKKyAgcm9vdDogeworICAgIHBhZGRpbmc6ICcycHggNHB4JywK KyAgICBkaXNwbGF5OiAnZmxleCcsCisgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsCisgICAgZ2Fw OiAnNHB4JywKKyAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLm90aGVyVmFycy5lZGl0b3JUb29s YmFyQmcsCisgIH0sCisgIGNvbm5lY3Rpb25CdXR0b246IHsKKyAgICBkaXNwbGF5OiAnZmxleCcs CisgICAgd2lkdGg6ICc0NTBweCcsCisgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRl LmRlZmF1bHQubWFpbiwKKyAgICBjb2xvcjogdGhlbWUucGFsZXR0ZS5kZWZhdWx0LmNvbnRyYXN0 VGV4dCwKKyAgICBib3JkZXI6ICcxcHggc29saWQgJyArIHRoZW1lLnBhbGV0dGUuZGVmYXVsdC5i b3JkZXJDb2xvciwKKyAgICBqdXN0aWZ5Q29udGVudDogJ2ZsZXgtc3RhcnQnLAorICB9LAorICB2 aWV3RGF0YUNvbm5UaXRsZTogeworICAgIG1hcmdpblRvcDogJ2F1dG8nLAorICAgIG1hcmdpbkJv dHRvbTogJ2F1dG8nLAorICAgIHBhZGRpbmc6ICcwcHggNHB4JywKKyAgfSwKKyAgbWVudTogewor ICAgICcmIC5zemgtbWVudSc6IHsKKyAgICAgIG1pbldpZHRoOiAnNDUwcHgnLAorICAgIH0KKyAg fQorfSkpOworCitmdW5jdGlvbiBDb25uZWN0aW9uU3RhdHVzSWNvbih7Y29ubmVjdGVkLCBjb25u ZWN0aW5nLCBzdGF0dXN9KSB7CisgIGlmKGNvbm5lY3RpbmcpIHsKKyAgICByZXR1cm4gPENpcmN1 bGFyUHJvZ3Jlc3Mgc3R5bGU9e3toZWlnaHQ6ICcxOHB4Jywgd2lkdGg6ICcxOHB4J319IC8+Owor ICB9IGVsc2UgaWYoY29ubmVjdGVkKSB7CisgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICBjYXNl IENPTk5FQ1RJT05fU1RBVFVTLlRSQU5TQUNUSU9OX1NUQVRVU19BQ1RJVkU6CisgICAgICByZXR1 cm4gPEhvdXJnbGFzc0VtcHR5Um91bmRlZEljb24gLz47CisgICAgY2FzZSBDT05ORUNUSU9OX1NU QVRVUy5UUkFOU0FDVElPTl9TVEFUVVNfSU5UUkFOUzoKKyAgICAgIHJldHVybiA8UXVlcnlCdWls ZGVyUm91bmRlZEljb24gLz47CisgICAgY2FzZSBDT05ORUNUSU9OX1NUQVRVUy5UUkFOU0FDVElP Tl9TVEFUVVNfSU5FUlJPUjoKKyAgICAgIHJldHVybiA8RXJyb3JPdXRsaW5lUm91bmRlZEljb24g Lz47CisgICAgY2FzZSBDT05ORUNUSU9OX1NUQVRVUy5UUkFOU0FDVElPTl9TVEFUVVNfVU5LTk9X TjoKKyAgICAgIHJldHVybiA8UmVwb3J0UHJvYmxlbVJvdW5kZWRJY29uIC8+OworICAgIGRlZmF1 bHQ6CisgICAgICByZXR1cm4gPENvbm5lY3RlZEljb24gLz47CisgICAgfQorICB9IGVsc2Ugewor ICAgIHJldHVybiA8RGlzb25uZWN0ZWRJY29uIC8+OworICB9Cit9CisKK0Nvbm5lY3Rpb25TdGF0 dXNJY29uLnByb3BUeXBlcyA9IHsKKyAgY29ubmVjdGVkOiBQcm9wVHlwZXMuYm9vbCwKKyAgY29u bmVjdGluZzogUHJvcFR5cGVzLmJvb2wsCisgIHN0YXR1czogUHJvcFR5cGVzLm9uZU9mKE9iamVj dC52YWx1ZXMoQ09OTkVDVElPTl9TVEFUVVMpKSwKK307CisKK2V4cG9ydCBmdW5jdGlvbiBDb25u ZWN0aW9uQmFyKHtjb25uZWN0ZWQsIGNvbm5lY3RpbmcsIGNvbm5lY3Rpb25TdGF0dXMsIGNvbm5l Y3Rpb25TdGF0dXNNc2csCisgIGNvbm5lY3Rpb25MaXN0LCBvbkNvbm5lY3Rpb25DaGFuZ2UsIG9u TmV3Q29ubkNsaWNrLCBvbk5ld1F1ZXJ5VG9vbENsaWNrLCBvblJlc2V0TGF5b3V0fSkgeworICBj b25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7CisgIGNvbnN0IGNvbm5NZW51UmVmID0gUmVhY3Qu dXNlUmVmKCk7CisgIGNvbnN0IFtjb25uRHJvcGRvd25PcGVuLCBzZXRDb25uRHJvcGRvd25PcGVu XSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTsKKyAgY29uc3QgcXVlcnlUb29sQ3R4ID0gUmVhY3Qu dXNlQ29udGV4dChRdWVyeVRvb2xDb250ZXh0KTsKKyAgY29uc3Qgb25Db25uSXRlbUNsaWNrID0g KGUpPT57CisgICAgaWYoIWUudmFsdWUuaXNfc2VsZWN0ZWQpIHsKKyAgICAgIG9uQ29ubmVjdGlv bkNoYW5nZShlLnZhbHVlKTsKKyAgICB9CisgICAgZS5rZWVwT3BlbiA9IGZhbHNlOworICB9Owor CisgIGNvbnN0IGNvbm5UaXRsZSA9IFJlYWN0LnVzZU1lbW8oKCk9Pl8uZmluZChjb25uZWN0aW9u TGlzdCwgKGMpPT5jLmlzX3NlbGVjdGVkKT8uY29ubl90aXRsZSwgW2Nvbm5lY3Rpb25MaXN0XSk7 CisgIHJldHVybiAoCisgICAgPD4KKyAgICAgIDxCb3ggY2xhc3NOYW1lPXtjbGFzc2VzLnJvb3R9 PgorICAgICAgICA8UGdCdXR0b25Hcm91cCBzaXplPSJzbWFsbCI+CisgICAgICAgICAge3F1ZXJ5 VG9vbEN0eC5wcmVmZXJlbmNlcz8uc3FsZWRpdG9yPy5jb25uZWN0aW9uX3N0YXR1cyAmJgorICAg ICAgICAgIDxQZ0ljb25CdXR0b24gdGl0bGU9e0NPTk5FQ1RJT05fU1RBVFVTX01FU1NBR0VbY29u bmVjdGVkID8gY29ubmVjdGlvblN0YXR1cyA6IC0xXSA/PyBjb25uZWN0aW9uU3RhdHVzTXNnfQor ICAgICAgICAgICAgaWNvbj17PENvbm5lY3Rpb25TdGF0dXNJY29uIGNvbm5lY3Rpbmc9e2Nvbm5l Y3Rpbmd9IHN0YXR1cz17Y29ubmVjdGlvblN0YXR1c30gY29ubmVjdGVkPXtjb25uZWN0ZWR9Lz59 CisgICAgICAgICAgLz59CisgICAgICAgICAgPERlZmF1bHRCdXR0b24gY2xhc3NOYW1lPXtjbGFz c2VzLmNvbm5lY3Rpb25CdXR0b259IHJlZj17Y29ubk1lbnVSZWZ9CisgICAgICAgICAgICBvbkNs aWNrPXtxdWVyeVRvb2xDdHgucGFyYW1zLmlzX3F1ZXJ5X3Rvb2wgPyAoKT0+c2V0Q29ubkRyb3Bk b3duT3Blbih0cnVlKSA6IHVuZGVmaW5lZH0KKyAgICAgICAgICAgIHN0eWxlPXt7YmFja2dyb3Vu ZENvbG9yOiBxdWVyeVRvb2xDdHgucGFyYW1zLmJnY29sb3IsIGNvbG9yOiBxdWVyeVRvb2xDdHgu cGFyYW1zLmZnY29sb3J9fQorICAgICAgICAgID4KKyAgICAgICAgICAgIDxUb29sdGlwIHRpdGxl PXtxdWVyeVRvb2xDdHgucGFyYW1zLmlzX3F1ZXJ5X3Rvb2wgPyAnJyA6IGNvbm5UaXRsZX0+Cisg ICAgICAgICAgICAgIDxCb3ggZGlzcGxheT0iZmxleCIgd2lkdGg9IjEwMCUiPgorICAgICAgICAg ICAgICAgIDxCb3ggdGV4dE92ZXJmbG93PSJlbGxpcHNpcyIgb3ZlcmZsb3c9ImhpZGRlbiIgbWFy Z2luUmlnaHQ9ImF1dG8iPntjb25uZWN0aW5nICYmICcoT2J0YWluaW5nIGNvbm5lY3Rpb24pJ317 Y29ublRpdGxlfTwvQm94PgorICAgICAgICAgICAgICAgIHtxdWVyeVRvb2xDdHgucGFyYW1zLmlz X3F1ZXJ5X3Rvb2wgJiYgPEJveD48S2V5Ym9hcmRBcnJvd0Rvd25JY29uIC8+PC9Cb3g+fQorICAg ICAgICAgICAgICA8L0JveD4KKyAgICAgICAgICAgIDwvVG9vbHRpcD4KKyAgICAgICAgICA8L0Rl ZmF1bHRCdXR0b24+CisgICAgICAgICAgPFBnSWNvbkJ1dHRvbiB0aXRsZT0iTmV3IHF1ZXJ5IHRv b2wiIGljb249ezxRdWVyeVRvb2xJY29uIC8+fSBvbkNsaWNrPXtvbk5ld1F1ZXJ5VG9vbENsaWNr fS8+CisgICAgICAgIDwvUGdCdXR0b25Hcm91cD4KKyAgICAgICAgPFBnQnV0dG9uR3JvdXAgc2l6 ZT0ic21hbGwiIHZhcmlhbnQ9InRleHQiIHN0eWxlPXt7bWFyZ2luTGVmdDogJ2F1dG8nfX0+Cisg ICAgICAgICAgPFBnSWNvbkJ1dHRvbiB0aXRsZT0iUmVzZXQgbGF5b3V0IiBpY29uPXs8Um90YXRl TGVmdFJvdW5kZWRJY29uIC8+fSBvbkNsaWNrPXtvblJlc2V0TGF5b3V0fS8+CisgICAgICAgIDwv UGdCdXR0b25Hcm91cD4KKyAgICAgIDwvQm94PgorICAgICAgPFBnTWVudQorICAgICAgICBhbmNo b3JSZWY9e2Nvbm5NZW51UmVmfQorICAgICAgICBvcGVuPXtjb25uRHJvcGRvd25PcGVufQorICAg ICAgICBvbkNsb3NlPXsoKT0+e3NldENvbm5Ecm9wZG93bk9wZW4oZmFsc2UpO319CisgICAgICAg IGNsYXNzTmFtZT17Y2xhc3Nlcy5tZW51fQorICAgICAgPgorICAgICAgICB7KGNvbm5lY3Rpb25M aXN0fHxbXSkubWFwKChjb25uKT0+eworICAgICAgICAgIHJldHVybiAoCisgICAgICAgICAgICA8 UGdNZW51SXRlbSBrZXk9e2Nvbm4uY29ubl90aXRsZX0gaGFzQ2hlY2sgY2hlY2tlZD17Y29ubi5p c19zZWxlY3RlZH0gdmFsdWU9e2Nvbm59CisgICAgICAgICAgICAgIG9uQ2xpY2s9e29uQ29ubkl0 ZW1DbGlja30+e2Nvbm4uY29ubl90aXRsZX08L1BnTWVudUl0ZW0+CisgICAgICAgICAgKTsKKyAg ICAgICAgfSl9CisgICAgICAgIDxQZ01lbnVJdGVtIG9uQ2xpY2s9e29uTmV3Q29ubkNsaWNrfT57 YDwgJHtnZXR0ZXh0KCdOZXcgY29ubmVjdGlvbi4uLicpfSA+YH08L1BnTWVudUl0ZW0+CisgICAg ICA8L1BnTWVudT4KKyAgICA8Lz4KKyAgKTsKK30KKworQ29ubmVjdGlvbkJhci5wcm9wVHlwZXMg PSB7CisgIGNvbm5lY3RlZDogUHJvcFR5cGVzLmJvb2wsCisgIGNvbm5lY3Rpbmc6IFByb3BUeXBl cy5ib29sLAorICBjb25uZWN0aW9uU3RhdHVzOiBQcm9wVHlwZXMub25lT2YoT2JqZWN0LnZhbHVl cyhDT05ORUNUSU9OX1NUQVRVUykpLAorICBjb25uZWN0aW9uU3RhdHVzTXNnOiBQcm9wVHlwZXMu c3RyaW5nLAorICBjb25uZWN0aW9uTGlzdDogUHJvcFR5cGVzLmFycmF5LAorICBvbkNvbm5lY3Rp b25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLAorICBvbk5ld0Nvbm5DbGljazogUHJvcFR5cGVzLmZ1 bmMsCisgIG9uTmV3UXVlcnlUb29sQ2xpY2s6IFByb3BUeXBlcy5mdW5jLAorICBvblJlc2V0TGF5 b3V0OiBQcm9wVHlwZXMuZnVuYywKK307CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9z cWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvR2VvbWV0cnlWaWV3ZXIuanN4 IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9jb21wb25lbnRzL3NlY3Rp b25zL0dlb21ldHJ5Vmlld2VyLmpzeApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAuLmRlOTVhYzJlNgotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVk aXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9HZW9tZXRyeVZpZXdlci5qc3gKQEAg LTAsMCArMSwzODcgQEAKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9v bHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3Jl U1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlUmVm IH0gIGZyb20gJ3JlYWN0JzsKK2ltcG9ydCBSZWFjdERPTVNlcnZlciBmcm9tICdyZWFjdC1kb20v c2VydmVyJzsKK2ltcG9ydCB7IG1ha2VTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvc3R5bGVz JzsKK2ltcG9ydCBfIGZyb20gJ2xvZGFzaCc7CitpbXBvcnQgeyBNYXBDb250YWluZXIsIFRpbGVM YXllciwgTGF5ZXJzQ29udHJvbCwgR2VvSlNPTiwgdXNlTWFwIH0gZnJvbSAncmVhY3QtbGVhZmxl dCc7CitpbXBvcnQgTGVhZmxldCwgeyBDUlMgfSBmcm9tICdsZWFmbGV0JzsKK2ltcG9ydCB7R2Vv bWV0cnkgYXMgV2t4R2VvbWV0cnl9IGZyb20gJ3dreCc7CitpbXBvcnQge0J1ZmZlcn0gZnJvbSAn YnVmZmVyJzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7CitpbXBvcnQg VGhlbWUgZnJvbSAnc291cmNlcy9UaGVtZSc7CitpbXBvcnQgY2xzeCBmcm9tICdjbHN4JzsKK2lt cG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7CisKK2NvbnN0IHVzZVN0eWxlcyA9IG1h a2VTdHlsZXMoKHRoZW1lKT0+KHsKKyAgbWFwQ29udGFpbmVyOiB7CisgICAgYmFja2dyb3VuZENv bG9yOiB0aGVtZS5wYWxldHRlLmJhY2tncm91bmQuZGVmYXVsdCwKKyAgICBoZWlnaHQ6ICcxMDAl JywKKyAgICB3aWR0aDogJzEwMCUnCisgIH0sCisgIHRhYmxlOiB7CisgICAgYm9yZGVyU3BhY2lu ZzogMCwKKyAgICB3aWR0aDogJzEwMCUnLAorICAgIC4uLnRoZW1lLm1peGlucy5wYW5lbEJvcmRl ciwKKyAgfSwKKyAgdGFibGVDZWxsOiB7CisgICAgbWFyZ2luOiAwLAorICAgIHBhZGRpbmc6IHRo ZW1lLnNwYWNpbmcoMC41KSwKKyAgICAuLi50aGVtZS5taXhpbnMucGFuZWxCb3JkZXIuYm90dG9t LAorICAgIC4uLnRoZW1lLm1peGlucy5wYW5lbEJvcmRlci5yaWdodCwKKyAgICBvdmVyZmxvdzog J2hpZGRlbicsCisgICAgdGV4dE92ZXJmbG93OiAnZWxsaXBzaXMnLAorICAgIHdoaXRlU3BhY2U6 ICdub3dyYXAnLAorICB9LAorICB0YWJsZUNlbGxIZWFkOiB7CisgICAgZm9udFdlaWdodDogJ2Jv bGQnLAorICB9Cit9KSk7CisKK2Z1bmN0aW9uIHBhcnNlRXdrYkRhdGEocm93cywgY29sdW1uKSB7 CisgIGxldCBrZXkgPSBjb2x1bW4ua2V5OworICBjb25zdCBtYXhSZW5kZXJCeXRlTGVuZ3RoID0g MjAgKiAxMDI0ICogMTAyNDsgLy9yZW5kZXIgZ2VvbWV0cnkgZGF0YSB1cCB0byAyME1CCisgIGNv bnN0IG1heFJlbmRlckdlb21ldHJpZXMgPSAxMDAwMDA7IC8vIHJlbmRlciBnZW9tZXRyaWVzIHVw IHRvIDEwMDAwMAorCisgIGxldCBnZW9tZXRyaWVzM0QgPSBbXSwKKyAgICBzdXBwb3J0ZWRHZW9t ZXRyaWVzID0gW10sCisgICAgdW5zdXBwb3J0ZWRSb3dzID0gW10sCisgICAgZ2VvbWV0cnlJdGVt TWFwID0gbmV3IE1hcCgpLAorICAgIGdlb21ldHJ5VG90YWxCeXRlTGVuZ3RoID0gMCwKKyAgICB0 b29MYXJnZURhdGFTaXplID0gZmFsc2UsCisgICAgdG9vTWFueUdlb21ldHJpZXMgPSBmYWxzZSwK KyAgICBpbmZvTGlzdCA9IFtdOworCisgIF8uZXZlcnkocm93cywgZnVuY3Rpb24gKGl0ZW0pIHsK KyAgICB0cnkgeworICAgICAgbGV0IHZhbHVlID0gaXRlbVtrZXldOworICAgICAgbGV0IGJ1ZmZl ciA9IEJ1ZmZlci5mcm9tKHZhbHVlLCAnaGV4Jyk7CisgICAgICBsZXQgZ2VvbWV0cnkgPSBXa3hH ZW9tZXRyeS5wYXJzZShidWZmZXIpOworICAgICAgaWYgKGdlb21ldHJ5Lmhhc1opIHsKKyAgICAg ICAgZ2VvbWV0cmllczNELnB1c2goZ2VvbWV0cnkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg ICAgIH0KKyAgICAgIGdlb21ldHJ5VG90YWxCeXRlTGVuZ3RoICs9IGJ1ZmZlci5ieXRlTGVuZ3Ro OworICAgICAgaWYgKGdlb21ldHJ5VG90YWxCeXRlTGVuZ3RoID4gbWF4UmVuZGVyQnl0ZUxlbmd0 aCkgeworICAgICAgICB0b29MYXJnZURhdGFTaXplID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIGZh bHNlOworICAgICAgfQorICAgICAgaWYgKHN1cHBvcnRlZEdlb21ldHJpZXMubGVuZ3RoID49IG1h eFJlbmRlckdlb21ldHJpZXMpIHsKKyAgICAgICAgdG9vTWFueUdlb21ldHJpZXMgPSB0cnVlOwor ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICB9CisKKyAgICAgIGlmICghZ2VvbWV0cnkuc3Jp ZCkgeworICAgICAgICBnZW9tZXRyeS5zcmlkID0gMDsKKyAgICAgIH0KKyAgICAgIHN1cHBvcnRl ZEdlb21ldHJpZXMucHVzaChnZW9tZXRyeSk7CisgICAgICBnZW9tZXRyeUl0ZW1NYXAuc2V0KGdl b21ldHJ5LCBpdGVtKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICB1bnN1cHBvcnRlZFJvd3Mu cHVzaChpdGVtKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7CisgIH0pOworCisgIC8vIGdlbmVy YXRlIG1hcCBpbmZvIGNvbnRlbnQKKyAgaWYgKHRvb0xhcmdlRGF0YVNpemUgfHwgdG9vTWFueUdl b21ldHJpZXMpIHsKKyAgICBpbmZvTGlzdC5wdXNoKHN1cHBvcnRlZEdlb21ldHJpZXMubGVuZ3Ro ICsgJyBvZiAnICsgcm93cy5sZW5ndGggKyAnIGdlb21ldHJpZXMgcmVuZGVyZWQuJyk7CisgIH0K KyAgaWYgKGdlb21ldHJpZXMzRC5sZW5ndGggPiAwKSB7CisgICAgaW5mb0xpc3QucHVzaChnZXR0 ZXh0KCczRCBnZW9tZXRyaWVzIG5vdCByZW5kZXJlZC4nKSk7CisgIH0KKyAgaWYgKHVuc3VwcG9y dGVkUm93cy5sZW5ndGggPiAwKSB7CisgICAgaW5mb0xpc3QucHVzaChnZXR0ZXh0KCdVbnN1cHBv cnRlZCBnZW9tZXRyaWVzIG5vdCByZW5kZXJlZC4nKSk7CisgIH0KKworICByZXR1cm4gWworICAg IHN1cHBvcnRlZEdlb21ldHJpZXMsCisgICAgZ2VvbWV0cnlJdGVtTWFwLAorICAgIGluZm9MaXN0 CisgIF07Cit9CisKK2Z1bmN0aW9uIHBhcnNlRGF0YShyb3dzLCBjb2x1bW5zLCBjb2x1bW4pIHsK KyAgaWYgKHJvd3MubGVuZ3RoID09PSAwKSB7CisgICAgaW5mb0xpc3QucHVzaCgnRW1wdHkgcm93 LicpOworICAgIHJldHVybiB7CisgICAgICAnZ2VvSlNPTnMnOiBbXSwKKyAgICAgICdzZWxlY3Rl ZFNSSUQnOiAwLAorICAgICAgJ2dldFBvcHVwQ29udGVudCc6IHVuZGVmaW5lZCwKKyAgICAgICdp bmZvTGlzdCc6IFsnRW1wdHkgcm93LiddLAorICAgIH07CisgIH0KKworICBsZXQgbWl4ZWRTUklE ID0gZmFsc2U7CisgIC8vIHBhcnNlIGV3a2IgZGF0YQorICBsZXQgWworICAgIHN1cHBvcnRlZEdl b21ldHJpZXMsCisgICAgZ2VvbWV0cnlJdGVtTWFwLAorICAgIGluZm9MaXN0CisgIF0gPSBwYXJz ZUV3a2JEYXRhKHJvd3MsIGNvbHVtbik7CisKKyAgaWYgKHN1cHBvcnRlZEdlb21ldHJpZXMubGVu Z3RoID09PSAwKSB7CisgICAgcmV0dXJuIHsKKyAgICAgICdnZW9KU09Ocyc6IFtdLAorICAgICAg J3NlbGVjdGVkU1JJRCc6IDAsCisgICAgICAnZ2V0UG9wdXBDb250ZW50JzogdW5kZWZpbmVkLAor ICAgICAgJ2luZm9MaXN0JzogaW5mb0xpc3QsCisgICAgfTsKKyAgfQorCisgIC8vIGdyb3VwIGdl b21ldHJpZXMgYnkgU1JJRAorICBsZXQgZ2VvbWV0cmllc0dyb3VwQnlTUklEID0gXy5ncm91cEJ5 KHN1cHBvcnRlZEdlb21ldHJpZXMsICdzcmlkJyk7CisgIGxldCBTUklER2VvbWV0cmllc1BhaXJz ID0gXy50b1BhaXJzKGdlb21ldHJpZXNHcm91cEJ5U1JJRCk7CisgIGlmIChTUklER2VvbWV0cmll c1BhaXJzLmxlbmd0aCA+IDEpIHsKKyAgICBtaXhlZFNSSUQgPSB0cnVlOworICB9CisgIC8vIHNl bGVjdCB0aGUgbGFyZ2VzdCBncm91cAorICBsZXQgc2VsZWN0ZWRQYWlyID0gXy5tYXgoU1JJREdl b21ldHJpZXNQYWlycywgZnVuY3Rpb24gKHBhaXIpIHsKKyAgICByZXR1cm4gcGFpclsxXS5sZW5n dGg7CisgIH0pOworICBsZXQgc2VsZWN0ZWRTUklEID0gcGFyc2VJbnQoc2VsZWN0ZWRQYWlyWzBd KTsKKyAgbGV0IHNlbGVjdGVkR2VvbWV0cmllcyA9IHNlbGVjdGVkUGFpclsxXTsKKworICBsZXQg Z2VvSlNPTnMgPSBfLm1hcChzZWxlY3RlZEdlb21ldHJpZXMsIGZ1bmN0aW9uIChnZW9tZXRyeSkg eworICAgIHJldHVybiBnZW9tZXRyeS50b0dlb0pTT04oKTsKKyAgfSk7CisKKyAgbGV0IGdldFBv cHVwQ29udGVudDsKKyAgaWYgKGNvbHVtbnMubGVuZ3RoID49IDMpIHsKKyAgICAvLyBhZGQgcG9w dXAgd2hlbiBnZW9tZXRyeSBoYXMgcHJvcGVydGllcworICAgIGdldFBvcHVwQ29udGVudCA9IGZ1 bmN0aW9uIChnZW9qc29uKSB7CisgICAgICBsZXQgZ2VvbWV0cnkgPSBzZWxlY3RlZEdlb21ldHJp ZXNbZ2VvSlNPTnMuaW5kZXhPZihnZW9qc29uKV07CisgICAgICBsZXQgcm93ID0gZ2VvbWV0cnlJ dGVtTWFwLmdldChnZW9tZXRyeSk7CisgICAgICBsZXQgcmV0VmFsID0gW107CisgICAgICBmb3Ig KGNvbnN0IGNvbCBvZiBjb2x1bW5zKSB7CisgICAgICAgIGlmKGNvbC5rZXkgPT09IGNvbHVtbi5r ZXkpIHsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICByZXRWYWwucHVz aCh7CisgICAgICAgICAgJ2NvbHVtbic6IGNvbC5kaXNwbGF5X25hbWUsCisgICAgICAgICAgJ3Zh bHVlJzogcm93W2NvbC5rZXldLAorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiBy ZXRWYWw7CisgICAgfTsKKyAgfQorCisgIGlmIChtaXhlZFNSSUQpIHsKKyAgICBpbmZvTGlzdC5w dXNoKGdldHRleHQoJ0dlb21ldHJpZXMgd2l0aCBub24tU1JJRCAlcyBub3QgcmVuZGVyZWQuJywg c2VsZWN0ZWRTUklEKSk7CisgIH0KKworICByZXR1cm4geworICAgICdnZW9KU09Ocyc6IGdlb0pT T05zLAorICAgICdzZWxlY3RlZFNSSUQnOiBzZWxlY3RlZFNSSUQsCisgICAgJ2dldFBvcHVwQ29u dGVudCc6IGdldFBvcHVwQ29udGVudCwKKyAgICAnaW5mb0xpc3QnOiBpbmZvTGlzdCwKKyAgfTsK K30KKworZnVuY3Rpb24gUG9wdXBUYWJsZSh7ZGF0YX0pIHsKKyAgY29uc3QgY2xhc3NlcyA9IHVz ZVN0eWxlcygpOworICByZXR1cm4gKAorICAgIDx0YWJsZSBjbGFzc05hbWU9e2NsYXNzZXMudGFi bGV9PgorICAgICAgPHRib2R5PgorICAgICAgICB7ZGF0YS5tYXAoKHJvdyk9PnsKKyAgICAgICAg ICByZXR1cm4gKAorICAgICAgICAgICAgPHRyIGtleT17cm93LmNvbHVtbn0+CisgICAgICAgICAg ICAgIDx0ZCBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcy50YWJsZUNlbGwsIGNsYXNzZXMudGFibGVD ZWxsSGVhZCl9Pntyb3cuY29sdW1ufTwvdGQ+CisgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9 e2NsYXNzZXMudGFibGVDZWxsfT57cm93LnZhbHVlfTwvdGQ+CisgICAgICAgICAgICA8L3RyPgor ICAgICAgICAgICk7CisgICAgICAgIH0pfQorICAgICAgPC90Ym9keT4KKyAgICA8L3RhYmxlPgor ICApOworfQorCitQb3B1cFRhYmxlLnByb3BUeXBlcyA9IHsKKyAgZGF0YTogUHJvcFR5cGVzLmFy cmF5T2YoeworICAgIGNvbHVtbjogUHJvcFR5cGVzLnN0cmluZywKKyAgICB2YWx1ZTogUHJvcFR5 cGVzLnN0cmluZywKKyAgfSksCit9OworCitmdW5jdGlvbiBHZW9Kc29uTGF5ZXIoe2RhdGF9KSB7 CisgIGNvbnN0IHZlY3RvckxheWVyUmVmID0gdXNlUmVmKG51bGwpOworICBjb25zdCBtYXBPYmog PSB1c2VNYXAoKTsKKyAgdXNlRWZmZWN0KCgpID0+IHsKKyAgICBpZighdmVjdG9yTGF5ZXJSZWYu Y3VycmVudCkgcmV0dXJuOworICAgIGlmKGRhdGEuZ2VvSlNPTnMubGVuZ3RoIDw9IDApIHJldHVy bjsKKyAgICBsZXQgYm91bmRzID0gdmVjdG9yTGF5ZXJSZWYuY3VycmVudC5nZXRCb3VuZHMoKS5w YWQoMC4xKTsKKyAgICBsZXQgbWF4TGVuZ3RoID0gTWF0aC5tYXgoYm91bmRzLmdldE5vcnRoKCkg LSBib3VuZHMuZ2V0U291dGgoKSwKKyAgICAgIGJvdW5kcy5nZXRFYXN0KCkgLSBib3VuZHMuZ2V0 V2VzdCgpKTsKKyAgICBsZXQgbWluWm9vbSA9IDA7CisgICAgaWYoZGF0YS5zZWxlY3RlZFNSSUQg IT09IDQzMjYpIHsKKyAgICAgIGlmIChtYXhMZW5ndGggPj0gMTgwKSB7CisgICAgICAgIC8vIGNh bGN1bGF0ZSB0aGUgbWluIHpvb20gbGV2ZWwgdG8gZW5hYmxlIHRoZSBtYXAgdG8gZml0IHRoZSB3 aG9sZSBnZW9tZXRyeS4KKyAgICAgICAgbWluWm9vbSA9IE1hdGguZmxvb3IoTWF0aC5sb2cyKDM2 MCAvIG1heExlbmd0aCkpIC0gMjsKKyAgICAgIH0KKyAgICB9CisgICAgbWFwT2JqLnNldE1pblpv b20obWluWm9vbSk7CisgICAgaWYgKG1heExlbmd0aCA+IDApIHsKKyAgICAgIG1hcE9iai5maXRC b3VuZHMoYm91bmRzKTsKKyAgICB9IGVsc2UgeworICAgICAgbWFwT2JqLnNldFZpZXcoYm91bmRz LmdldENlbnRlcigpLCBtYXBPYmouZ2V0Wm9vbSgpKTsKKyAgICB9CisgIH0pOworCisgIHJldHVy biAoCisgICAgPEdlb0pTT04KKyAgICAgIHJlZj17dmVjdG9yTGF5ZXJSZWZ9CisgICAgICBwb2lu dFRvTGF5ZXI9eyhfZmVhdHVyZSwgbGF0bG5nKT0+eworICAgICAgICByZXR1cm4gTGVhZmxldC5j aXJjbGVNYXJrZXIobGF0bG5nLCB7CisgICAgICAgICAgcmFkaXVzOiA0LAorICAgICAgICAgIHdl aWdodDogMywKKyAgICAgICAgfSk7CisgICAgICB9fQorICAgICAgc3R5bGU9e3t3ZWlnaHQ6IDJ9 fQorICAgICAgb25FYWNoRmVhdHVyZT17KGZlYXR1cmUsIGxheWVyKT0+eworICAgICAgICBpZihf LmlzRnVuY3Rpb24oZGF0YS5nZXRQb3B1cENvbnRlbnQpKSB7CisgICAgICAgICAgY29uc3QgcG9w dXBDb250ZW50Tm9kZSA9ICgKKyAgICAgICAgICAgIDxUaGVtZT4KKyAgICAgICAgICAgICAgPFBv cHVwVGFibGUgZGF0YT17ZGF0YS5nZXRQb3B1cENvbnRlbnQobGF5ZXIuZmVhdHVyZS5nZW9tZXRy eSl9Lz4KKyAgICAgICAgICAgIDwvVGhlbWU+CisgICAgICAgICAgKTsKKyAgICAgICAgICBjb25z dCBwb3B1cENvbnRlbnRIdG1sID0gUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcocG9wdXBD b250ZW50Tm9kZSk7CisgICAgICAgICAgbGF5ZXIuYmluZFBvcHVwKHBvcHVwQ29udGVudEh0bWws IHsKKyAgICAgICAgICAgIGNsb3NlQnV0dG9uOiBmYWxzZSwKKyAgICAgICAgICAgIG1pbldpZHRo OiAyNjAsCisgICAgICAgICAgICBtYXhXaWR0aDogMzAwLAorICAgICAgICAgICAgbWF4SGVpZ2h0 OiAzMDAsCisgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICAgIH19CisgICAgICBkYXRhPXtk YXRhLmdlb0pTT05zfQorICAgIC8+CisgICk7Cit9CisKK0dlb0pzb25MYXllci5wcm9wVHlwZXMg PSB7CisgIGRhdGE6IFByb3BUeXBlcy5zaGFwZSh7CisgICAgZ2VvSlNPTnM6IFByb3BUeXBlcy5h cnJheSwKKyAgICBzZWxlY3RlZFNSSUQ6IFByb3BUeXBlcy5zdHJpbmcsCisgICAgZ2V0UG9wdXBD b250ZW50OiBQcm9wVHlwZXMuZnVuYywKKyAgICBpbmZvTGlzdDogUHJvcFR5cGVzLmFycmF5LAor ICB9KSwKK307CisKK2Z1bmN0aW9uIFRoZU1hcCh7ZGF0YX0pIHsKKyAgY29uc3QgbWFwT2JqID0g dXNlTWFwKCk7CisgIGNvbnN0IGluZm9Db250cm9sID0gdXNlUmVmKG51bGwpOworICB1c2VFZmZl Y3QoKCk9PnsKKyAgICBpbmZvQ29udHJvbC5jdXJyZW50ID0gTGVhZmxldC5jb250cm9sKHtwb3Np dGlvbjogJ3RvcHJpZ2h0J30pOworICAgIGluZm9Db250cm9sLmN1cnJlbnQub25BZGQgPSBmdW5j dGlvbiAoKSB7CisgICAgICBsZXQgZWxlID0gTGVhZmxldC5Eb21VdGlsLmNyZWF0ZSgnZGl2Jywg J2dlb21ldHJ5LXZpZXdlci1pbmZvLWNvbnRyb2wnKTsKKyAgICAgIGVsZS5pbm5lckhUTUwgPSBk YXRhLmluZm9MaXN0LmpvaW4oJzxiciAvPicpOworICAgICAgcmV0dXJuIGVsZTsKKyAgICB9Owor ICAgIGlmKGRhdGEuaW5mb0xpc3QubGVuZ3RoID4gMCkgeworICAgICAgaW5mb0NvbnRyb2wuY3Vy cmVudC5hZGRUbyhtYXBPYmopOworICAgIH0KKyAgICByZXR1cm4gKCk9PntpbmZvQ29udHJvbC5j dXJyZW50ICYmIGluZm9Db250cm9sLmN1cnJlbnQucmVtb3ZlKCk7fTsKKyAgfSwgW2RhdGFdKTsK KyAgcmV0dXJuICgKKyAgICA8PgorICAgICAge2RhdGEuc2VsZWN0ZWRTUklEID09PSA0MzI2ICYm CisgICAgPExheWVyc0NvbnRyb2wgcG9zaXRpb249InRvcHJpZ2h0Ij4KKyAgICAgIDxMYXllcnND b250cm9sLkJhc2VMYXllciBjaGVja2VkIG5hbWU9IkVtcHR5Ij4KKyAgICAgICAgPFRpbGVMYXll cgorICAgICAgICAgIHVybD0iIgorICAgICAgICAvPgorICAgICAgPC9MYXllcnNDb250cm9sLkJh c2VMYXllcj4KKyAgICAgIDxMYXllcnNDb250cm9sLkJhc2VMYXllciBjaGVja2VkIG5hbWU9IlN0 cmVldCI+CisgICAgICAgIDxUaWxlTGF5ZXIKKyAgICAgICAgICB1cmw9Imh0dHBzOi8ve3N9LnRp bGUub3BlbnN0cmVldG1hcC5vcmcve3p9L3t4fS97eX0ucG5nIgorICAgICAgICAgIG1heFpvb209 ezE5fQorICAgICAgICAgIGF0dHJpYnV0aW9uPScmY29weTsgPGEgaHJlZj0iaHR0cDovL3d3dy5v cGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHQiIHRhcmdldD0iX2JsYW5rIj5PcGVuU3RyZWV0TWFw PC9hPicKKyAgICAgICAgLz4KKyAgICAgIDwvTGF5ZXJzQ29udHJvbC5CYXNlTGF5ZXI+CisgICAg ICA8TGF5ZXJzQ29udHJvbC5CYXNlTGF5ZXIgbmFtZT0iVG9wb2dyYXBoeSI+CisgICAgICAgIDxU aWxlTGF5ZXIKKyAgICAgICAgICB1cmw9Imh0dHBzOi8ve3N9LnRpbGUub3BlbnRvcG9tYXAub3Jn L3t6fS97eH0ve3l9LnBuZyIKKyAgICAgICAgICBtYXhab29tPXsxN30KKyAgICAgICAgICBhdHRy aWJ1dGlvbj17CisgICAgICAgICAgICAnJmNvcHk7IDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnN0 cmVldG1hcC5vcmcvY29weXJpZ2h0IiB0YXJnZXQ9Il9ibGFuayI+T3BlblN0cmVldE1hcDwvYT4s JworICAgICAgICAgICAgKyAnICZjb3B5OyA8YSBocmVmPSJodHRwOi8vdmlld2ZpbmRlcnBhbm9y YW1hcy5vcmciIHRhcmdldD0iX2JsYW5rIj5TUlRNPC9hPiwnCisgICAgICAgICAgICArICcgJmNv cHk7IDxhIGhyZWY9Imh0dHBzOi8vb3BlbnRvcG9tYXAub3JnIiB0YXJnZXQ9Il9ibGFuayI+T3Bl blRvcG9NYXA8L2E+JworICAgICAgICAgIH0KKyAgICAgICAgLz4KKyAgICAgIDwvTGF5ZXJzQ29u dHJvbC5CYXNlTGF5ZXI+CisgICAgICA8TGF5ZXJzQ29udHJvbC5CYXNlTGF5ZXIgbmFtZT0iR3Jh eSBTdHlsZSI+CisgICAgICAgIDxUaWxlTGF5ZXIKKyAgICAgICAgICB1cmw9Imh0dHBzOi8vY2Fy dG9kYi1iYXNlbWFwcy17c30uZ2xvYmFsLnNzbC5mYXN0bHkubmV0L2xpZ2h0X2FsbC97en0ve3h9 L3t5fXtyfS5wbmciCisgICAgICAgICAgbWF4Wm9vbT17MTl9CisgICAgICAgICAgYXR0cmlidXRp b249eworICAgICAgICAgICAgJyZjb3B5OyA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJlZXRt YXAub3JnL2NvcHlyaWdodCIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5TdHJlZXRNYXA8L2E+LCcKKyAg ICAgICAgICAgICsgJyAmY29weTsgPGEgaHJlZj0iaHR0cDovL2NhcnRvZGIuY29tL2F0dHJpYnV0 aW9ucyIgdGFyZ2V0PSJfYmxhbmsiPkNhcnRvREI8L2E+JworICAgICAgICAgIH0KKyAgICAgICAg ICBzdWJkb21haW5zPSdhYmNkJworICAgICAgICAvPgorICAgICAgPC9MYXllcnNDb250cm9sLkJh c2VMYXllcj4KKyAgICAgIDxMYXllcnNDb250cm9sLkJhc2VMYXllciBuYW1lPSJMaWdodCBDb2xv ciI+CisgICAgICAgIDxUaWxlTGF5ZXIKKyAgICAgICAgICB1cmw9Imh0dHBzOi8vY2FydG9kYi1i YXNlbWFwcy17c30uZ2xvYmFsLnNzbC5mYXN0bHkubmV0L3Jhc3RlcnRpbGVzL3ZveWFnZXIve3p9 L3t4fS97eX17cn0ucG4iCisgICAgICAgICAgbWF4Wm9vbT17MTl9CisgICAgICAgICAgYXR0cmli dXRpb249eworICAgICAgICAgICAgJyZjb3B5OyA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zdHJl ZXRtYXAub3JnL2NvcHlyaWdodCIgdGFyZ2V0PSJfYmxhbmsiPk9wZW5TdHJlZXRNYXA8L2E+LCcK KyAgICAgICAgICAgICsgJyAmY29weTsgPGEgaHJlZj0iaHR0cDovL2NhcnRvZGIuY29tL2F0dHJp YnV0aW9ucyIgdGFyZ2V0PSJfYmxhbmsiPkNhcnRvREI8L2E+JworICAgICAgICAgIH0KKyAgICAg ICAgICBzdWJkb21haW5zPSdhYmNkJworICAgICAgICAvPgorICAgICAgPC9MYXllcnNDb250cm9s LkJhc2VMYXllcj4KKyAgICAgIDxMYXllcnNDb250cm9sLkJhc2VMYXllciBuYW1lPSJEYXJrIE1h dHRlciI+CisgICAgICAgIDxUaWxlTGF5ZXIKKyAgICAgICAgICB1cmw9Imh0dHBzOi8vY2FydG9k Yi1iYXNlbWFwcy17c30uZ2xvYmFsLnNzbC5mYXN0bHkubmV0L2RhcmtfYWxsL3t6fS97eH0ve3l9 e3J9LnBuZyIKKyAgICAgICAgICBtYXhab29tPXsxOX0KKyAgICAgICAgICBhdHRyaWJ1dGlvbj17 CisgICAgICAgICAgICAnJmNvcHk7IDxhIGhyZWY9Imh0dHA6Ly93d3cub3BlbnN0cmVldG1hcC5v cmcvY29weXJpZ2h0IiB0YXJnZXQ9Il9ibGFuayI+T3BlblN0cmVldE1hcDwvYT4sJworICAgICAg ICAgICAgKyAnICZjb3B5OyA8YSBocmVmPSJodHRwOi8vY2FydG9kYi5jb20vYXR0cmlidXRpb25z IiB0YXJnZXQ9Il9ibGFuayI+Q2FydG9EQjwvYT4nCisgICAgICAgICAgfQorICAgICAgICAgIHN1 YmRvbWFpbnM9J2FiY2QnCisgICAgICAgIC8+CisgICAgICA8L0xheWVyc0NvbnRyb2wuQmFzZUxh eWVyPgorICAgIDwvTGF5ZXJzQ29udHJvbD59CisgICAgICA8R2VvSnNvbkxheWVyIGtleT17ZGF0 YS5nZW9KU09Ocy5sZW5ndGh9IGRhdGE9e2RhdGF9Lz4KKyAgICA8Lz4KKyAgKTsKK30KK1RoZU1h cC5wcm9wVHlwZXMgPSB7CisgIGRhdGE6IFByb3BUeXBlcy5zaGFwZSh7CisgICAgZ2VvSlNPTnM6 IFByb3BUeXBlcy5hcnJheSwKKyAgICBzZWxlY3RlZFNSSUQ6IFByb3BUeXBlcy5zdHJpbmcsCisg ICAgZ2V0UG9wdXBDb250ZW50OiBQcm9wVHlwZXMuZnVuYywKKyAgICBpbmZvTGlzdDogUHJvcFR5 cGVzLmFycmF5LAorICB9KSwKK307CisKKworZXhwb3J0IGZ1bmN0aW9uIEdlb21ldHJ5Vmlld2Vy KHtyb3dzLCBjb2x1bW5zLCBjb2x1bW59KSB7CisgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMo KTsKKyAgY29uc3QgZGF0YSA9IHBhcnNlRGF0YShyb3dzLCBjb2x1bW5zLCBjb2x1bW4pOworICBj b25zdCBjcnMgPSBkYXRhLnNlbGVjdGVkU1JJRCA9PT0gNDMyNiA/IENSUy5FUFNHMzg1NyA6IENS Uy5TaW1wbGU7CisgIHJldHVybiAoCisgICAgPE1hcENvbnRhaW5lcgorICAgICAgY3JzPXtjcnN9 CisgICAgICB6b29tPXsyfSBjZW50ZXI9e1syMCwgMTAwXX0KKyAgICAgIHByZWZlckNhbnZhcz17 dHJ1ZX0KKyAgICAgIHNjcm9sbFdoZWVsWm9vbT17ZmFsc2V9CisgICAgICBjbGFzc05hbWU9e2Ns YXNzZXMubWFwQ29udGFpbmVyfQorICAgID4KKyAgICAgIDxUaGVNYXAgZGF0YT17ZGF0YX0gLz4K KyAgICA8L01hcENvbnRhaW5lcj4KKyAgKTsKK30KKworR2VvbWV0cnlWaWV3ZXIucHJvcFR5cGVz ID0geworICByb3dzOiBQcm9wVHlwZXMuYXJyYXksCisgIGNvbHVtbnM6IFByb3BUeXBlcy5hcnJh eSwKKyAgY29sdW1uOiBQcm9wVHlwZXMub2JqZWN0LAorfTsKZGlmZiAtLWdpdCBhL3dlYi9wZ2Fk bWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9NYWluVG9v bEJhci5qc3ggYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVu dHMvc2VjdGlvbnMvTWFpblRvb2xCYXIuanN4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMC4uZWIwYWE2ODVlCi0tLSAvZGV2L251bGwKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3N0YXRpYy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL01haW5Ub29sQmFyLmpzeApA QCAtMCwwICsxLDU3MyBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9v bHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9w bWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3Jl U1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0IFJlYWN0LCB7dXNlQ29udGV4dCwgdXNlQ2Fs bGJhY2ssIHVzZUVmZmVjdCwgdXNlU3RhdGV9IGZyb20gJ3JlYWN0JzsKK2ltcG9ydCB7IG1ha2VT dHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvc3R5bGVzJzsKK2ltcG9ydCB7IEJveCB9IGZyb20g J0BtYXRlcmlhbC11aS9jb3JlJzsKK2ltcG9ydCB7IFBnQnV0dG9uR3JvdXAsIFBnSWNvbkJ1dHRv biB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9jb21wb25lbnRzL0J1dHRvbnMn OworaW1wb3J0IEZvbGRlclJvdW5kZWRJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Gb2xk ZXJSb3VuZGVkJzsKK2ltcG9ydCBLZXlib2FyZEFycm93RG93bkljb24gZnJvbSAnQG1hdGVyaWFs LXVpL2ljb25zL0tleWJvYXJkQXJyb3dEb3duJzsKK2ltcG9ydCBTYXZlUm91bmRlZEljb24gZnJv bSAnQG1hdGVyaWFsLXVpL2ljb25zL1NhdmVSb3VuZGVkJzsKK2ltcG9ydCBTdG9wUm91bmRlZElj b24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1N0b3BSb3VuZGVkJzsKK2ltcG9ydCBQbGF5QXJy b3dSb3VuZGVkSWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvUGxheUFycm93Um91bmRlZCc7 CitpbXBvcnQgeyBGaWx0ZXJJY29uLCBDb21taXRJY29uLCBSb2xsYmFja0ljb24gfSBmcm9tICcu Li8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvY29tcG9uZW50cy9FeHRlcm5hbEljb24nOworaW1w b3J0IEVkaXRSb3VuZGVkSWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRWRpdFJvdW5kZWQn OworaW1wb3J0IEFzc2Vzc21lbnRSb3VuZGVkSWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMv QXNzZXNzbWVudFJvdW5kZWQnOworaW1wb3J0IEV4cGxpY2l0Um91bmRlZEljb24gZnJvbSAnQG1h dGVyaWFsLXVpL2ljb25zL0V4cGxpY2l0Um91bmRlZCc7CitpbXBvcnQgRm9ybWF0TGlzdE51bWJl cmVkUm91bmRlZEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdExpc3ROdW1iZXJl ZFJvdW5kZWQnOworaW1wb3J0IHtRVUVSWV9UT09MX0VWRU5UUywgQ09OTkVDVElPTl9TVEFUVVN9 IGZyb20gJy4uL1F1ZXJ5VG9vbENvbnN0YW50cyc7CitpbXBvcnQgeyBRdWVyeVRvb2xDb25uZWN0 aW9uQ29udGV4dCwgUXVlcnlUb29sQ29udGV4dCwgUXVlcnlUb29sRXZlbnRzQ29udGV4dCB9IGZy b20gJy4uL1F1ZXJ5VG9vbENvbXBvbmVudCc7CitpbXBvcnQgeyBQZ01lbnUsIFBnTWVudURpdmlk ZXIsIFBnTWVudUl0ZW0gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvY29tcG9u ZW50cy9NZW51JzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7CitpbXBv cnQgeyB1c2VLZXlib2FyZFNob3J0Y3V0cyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRp Yy9qcy9jdXN0b21faG9va3MnOworaW1wb3J0IHtzaG9ydGN1dF9rZXl9IGZyb20gJ3NvdXJjZXMv a2V5Ym9hcmRfc2hvcnRjdXRzJzsKK2ltcG9ydCB1cmxfZm9yIGZyb20gJ3NvdXJjZXMvdXJsX2Zv cic7CitpbXBvcnQgXyBmcm9tICdsb2Rhc2gnOworaW1wb3J0IHsgSW5wdXRTZWxlY3ROb25TZWFy Y2ggfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvY29tcG9uZW50cy9Gb3JtQ29t cG9uZW50cyc7CitpbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnOworaW1wb3J0IEN1 c3RvbVByb3BUeXBlcyBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvY3VzdG9tX3By b3BfdHlwZXMnOworaW1wb3J0IENvbmZpcm1UcmFuc2FjdGlvbkNvbnRlbnQgZnJvbSAnLi4vZGlh bG9ncy9Db25maXJtVHJhbnNhY3Rpb25Db250ZW50JzsKKworY29uc3QgdXNlU3R5bGVzID0gbWFr ZVN0eWxlcygodGhlbWUpPT4oeworICByb290OiB7CisgICAgcGFkZGluZzogJzJweCA0cHgnLAor ICAgIGRpc3BsYXk6ICdmbGV4JywKKyAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJywKKyAgICBnYXA6 ICc0cHgnLAorICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUub3RoZXJWYXJzLmVkaXRvclRvb2xi YXJCZywKKyAgICAuLi50aGVtZS5taXhpbnMucGFuZWxCb3JkZXIuYm90dG9tLAorICB9LAorfSkp OworCitjb25zdCBGSVhFRF9QUkVGID0geworICBmaW5kOiB7CisgICAgJ2NvbnRyb2wnOiB0cnVl LAorICAgIGN0cmxfaXNfbWV0YTogdHJ1ZSwKKyAgICAnc2hpZnQnOiBmYWxzZSwKKyAgICAnYWx0 JzogZmFsc2UsCisgICAgJ2tleSc6IHsKKyAgICAgICdrZXlfY29kZSc6IDcwLAorICAgICAgJ2No YXInOiAnRicsCisgICAgfSwKKyAgfSwKKyAgcmVwbGFjZTogeworICAgICdjb250cm9sJzogdHJ1 ZSwKKyAgICBjdHJsX2lzX21ldGE6IHRydWUsCisgICAgJ3NoaWZ0JzogZmFsc2UsCisgICAgJ2Fs dCc6IHRydWUsCisgICAgJ2tleSc6IHsKKyAgICAgICdrZXlfY29kZSc6IDcwLAorICAgICAgJ2No YXInOiAnRicsCisgICAgfSwKKyAgfSwKKyAganVtcDogeworICAgICdjb250cm9sJzogZmFsc2Us CisgICAgJ3NoaWZ0JzogZmFsc2UsCisgICAgJ2FsdCc6IHRydWUsCisgICAgJ2tleSc6IHsKKyAg ICAgICdrZXlfY29kZSc6IDcxLAorICAgICAgJ2NoYXInOiAnRycsCisgICAgfSwKKyAgfSwKKyAg aW5kZW50OiB7CisgICAgJ2NvbnRyb2wnOiBmYWxzZSwKKyAgICAnc2hpZnQnOiBmYWxzZSwKKyAg ICAnYWx0JzogZmFsc2UsCisgICAgJ2tleSc6IHsKKyAgICAgICdrZXlfY29kZSc6IDksCisgICAg ICAnY2hhcic6ICdUYWInLAorICAgIH0sCisgIH0sCisgIHVuaW5kZW50OiB7CisgICAgJ2NvbnRy b2wnOiBmYWxzZSwKKyAgICAnc2hpZnQnOiB0cnVlLAorICAgICdhbHQnOiBmYWxzZSwKKyAgICAn a2V5JzogeworICAgICAgJ2tleV9jb2RlJzogOSwKKyAgICAgICdjaGFyJzogJ1RhYicsCisgICAg fSwKKyAgfSwKKyAgY29tbWVudDogeworICAgICdjb250cm9sJzogdHJ1ZSwKKyAgICBjdHJsX2lz X21ldGE6IHRydWUsCisgICAgJ3NoaWZ0JzogZmFsc2UsCisgICAgJ2FsdCc6IGZhbHNlLAorICAg ICdrZXknOiB7CisgICAgICAna2V5X2NvZGUnOiAxOTEsCisgICAgICAnY2hhcic6ICcvJywKKyAg ICB9LAorICB9LAorICB1bmNvbW1lbnQ6IHsKKyAgICAnY29udHJvbCc6IHRydWUsCisgICAgY3Ry bF9pc19tZXRhOiB0cnVlLAorICAgICdzaGlmdCc6IGZhbHNlLAorICAgICdhbHQnOiBmYWxzZSwK KyAgICAna2V5JzogeworICAgICAgJ2tleV9jb2RlJzogMTkwLAorICAgICAgJ2NoYXInOiAnLics CisgICAgfSwKKyAgfSwKKyAgZm9ybWF0X3NxbDogeworICAgICdjb250cm9sJzogdHJ1ZSwKKyAg ICAnc2hpZnQnOiB0cnVlLAorICAgICdhbHQnOiBmYWxzZSwKKyAgICAna2V5JzogeworICAgICAg J2tleV9jb2RlJzogNzUsCisgICAgICAnY2hhcic6ICdrJywKKyAgICB9LAorICB9LAorfTsKKwor ZnVuY3Rpb24gYXV0b0NvbW1pdFJvbGxiYWNrKHR5cGUsIGFwaSwgdHJhbnNJZCwgdmFsdWUpIHsK KyAgbGV0IHVybCA9IHVybF9mb3IoYHNxbGVkaXRvci4ke3R5cGV9YCwgeworICAgICd0cmFuc19p ZCc6IHRyYW5zSWQsCisgIH0pOworICByZXR1cm4gYXBpLnBvc3QodXJsLCBKU09OLnN0cmluZ2lm eSh2YWx1ZSkpOworfQorCitleHBvcnQgZnVuY3Rpb24gTWFpblRvb2xCYXIoe2NvbnRhaW5lclJl Ziwgb25GaWx0ZXJDbGljaywgb25NYW5hZ2VNYWNyb3N9KSB7CisgIGNvbnN0IGNsYXNzZXMgPSB1 c2VTdHlsZXMoKTsKKyAgY29uc3QgZXZlbnRCdXMgPSB1c2VDb250ZXh0KFF1ZXJ5VG9vbEV2ZW50 c0NvbnRleHQpOworICBjb25zdCBxdWVyeVRvb2xDdHggPSB1c2VDb250ZXh0KFF1ZXJ5VG9vbENv bnRleHQpOworICBjb25zdCBxdWVyeVRvb2xDb25uQ3R4ID0gdXNlQ29udGV4dChRdWVyeVRvb2xD b25uZWN0aW9uQ29udGV4dCk7CisKKyAgY29uc3QgW2hpZ2hsaWdodEZpbHRlciwgc2V0SGlnaGxp Z2h0RmlsdGVyXSA9IHVzZVN0YXRlKGZhbHNlKTsKKyAgY29uc3QgW2xpbWl0LCBzZXRMaW1pdF0g PSB1c2VTdGF0ZSgnLTEnKTsKKyAgY29uc3QgW2J1dHRvbnNEaXNhYmxlZCwgc2V0QnV0dG9uc0Rp c2FibGVkXSA9IHVzZVN0YXRlKHsKKyAgICAnc2F2ZSc6IHRydWUsCisgICAgJ2NhbmNlbCc6IHRy dWUsCisgICAgJ3NhdmUtZGF0YSc6IHRydWUsCisgICAgJ2RlbGV0ZS1yb3dzJzogdHJ1ZSwKKyAg ICAnY29tbWl0JzogdHJ1ZSwKKyAgICAncm9sbGJhY2snOiB0cnVlLAorICAgICdmaWx0ZXInOiB0 cnVlLAorICAgICdsaW1pdCc6IGZhbHNlLAorICB9KTsKKyAgY29uc3QgW21lbnVPcGVuSWQsIHNl dE1lbnVPcGVuSWRdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7CisgIGNvbnN0IFtjaGVja2VkTWVu dUl0ZW1zLCBzZXRDaGVja2VkTWVudUl0ZW1zXSA9IFJlYWN0LnVzZVN0YXRlKHt9KTsKKyAgLyog TWVudSBidXR0b24gcmVmcyAqLworICBjb25zdCBzYXZlQXNNZW51UmVmID0gUmVhY3QudXNlUmVm KG51bGwpOworICBjb25zdCBlZGl0TWVudVJlZiA9IFJlYWN0LnVzZVJlZihudWxsKTsKKyAgY29u c3QgYXV0b0NvbW1pdE1lbnVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7CisgIGNvbnN0IGV4cGxh aW5NZW51UmVmID0gUmVhY3QudXNlUmVmKG51bGwpOworICBjb25zdCBtYWNyb3NNZW51UmVmID0g UmVhY3QudXNlUmVmKG51bGwpOworICBjb25zdCBmaWx0ZXJNZW51UmVmID0gUmVhY3QudXNlUmVm KG51bGwpOworCisgIGNvbnN0IHF1ZXJ5VG9vbFByZWYgPSBxdWVyeVRvb2xDdHgucHJlZmVyZW5j ZXMuc3FsZWRpdG9yOworICBjb25zdCBzZXREaXNhYmxlQnV0dG9uID0gdXNlQ2FsbGJhY2soKG5h bWUsIGRpc2FibGU9dHJ1ZSk9PnsKKyAgICBzZXRCdXR0b25zRGlzYWJsZWQoKHByZXYpPT4oey4u LnByZXYsIFtuYW1lXTogZGlzYWJsZX0pKTsKKyAgfSwgW10pOworCisgIGNvbnN0IGV4ZWN1dGVR dWVyeSA9IHVzZUNhbGxiYWNrKCgpPT57CisgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RP T0xfRVZFTlRTLlRSSUdHRVJfRVhFQ1VUSU9OKTsKKyAgfSwgW10pOworICBjb25zdCBjYW5jZWxR dWVyeSA9IHVzZUNhbGxiYWNrKCgpPT57CisgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RP T0xfRVZFTlRTLlRSSUdHRVJfU1RPUF9FWEVDVVRJT04pOworICB9LCBbXSk7CisKKyAgY29uc3Qg ZXhwbGFpbiA9IHVzZUNhbGxiYWNrKChhbmFseXplPWZhbHNlKT0+eworICAgIGV2ZW50QnVzLmZp cmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5UUklHR0VSX0VYRUNVVElPTiwgeworICAgICAgZm9y bWF0OiAnanNvbicsCisgICAgICBhbmFseXplOiBhbmFseXplLAorICAgICAgdmVyYm9zZTogQm9v bGVhbihjaGVja2VkTWVudUl0ZW1zWydleHBsYWluX3ZlcmJvc2UnXSksCisgICAgICBjb3N0czog Qm9vbGVhbihjaGVja2VkTWVudUl0ZW1zWydleHBsYWluX2Nvc3RzJ10pLAorICAgICAgYnVmZmVy czogQm9vbGVhbihjaGVja2VkTWVudUl0ZW1zWydleHBsYWluX2J1ZmZlcnMnXSksCisgICAgICB0 aW1pbmc6IEJvb2xlYW4oY2hlY2tlZE1lbnVJdGVtc1snZXhwbGFpbl90aW1pbmcnXSksCisgICAg ICBzdW1tYXJ5OiBCb29sZWFuKGNoZWNrZWRNZW51SXRlbXNbJ2V4cGxhaW5fc3VtbWFyeSddKSwK KyAgICAgIHNldHRpbmdzOiBCb29sZWFuKGNoZWNrZWRNZW51SXRlbXNbJ2V4cGxhaW5fc2V0dGlu Z3MnXSksCisgICAgfSk7CisgIH0sIFtjaGVja2VkTWVudUl0ZW1zXSk7CisKKyAgY29uc3QgZXhw bGFpbkFuYWx5c2UgPSB1c2VDYWxsYmFjaygoKT0+eworICAgIGV4cGxhaW4odHJ1ZSk7CisgIH0s IFtleHBsYWluXSk7CisKKyAgY29uc3Qgb3Blbk1lbnUgPSB1c2VDYWxsYmFjaygoZSk9PnsKKyAg ICBzZXRNZW51T3BlbklkKGUuY3VycmVudFRhcmdldC5uYW1lKTsKKyAgfSwgW10pOworCisgIGNv bnN0IGhhbmRsZU1lbnVDbG9zZSA9IHVzZUNhbGxiYWNrKCgpPT57CisgICAgc2V0TWVudU9wZW5J ZChudWxsKTsKKyAgfSwgW10pOworCisgIGNvbnN0IGNoZWNrTWVudUNsaWNrID0gdXNlQ2FsbGJh Y2soKGUpPT57CisgICAgc2V0Q2hlY2tlZE1lbnVJdGVtcygocHJldik9PnsKKyAgICAgIGxldCBu ZXdWYWwgPSAhcHJldltlLnZhbHVlXTsKKyAgICAgIGlmKGUudmFsdWUgPT09ICdhdXRvX2NvbW1p dCcgfHwgZS52YWx1ZSA9PT0gJ2F1dG9fcm9sbGJhY2snKSB7CisgICAgICAgIGF1dG9Db21taXRS b2xsYmFjayhlLnZhbHVlLCBxdWVyeVRvb2xDdHguYXBpLCBxdWVyeVRvb2xDdHgucGFyYW1zLnRy YW5zX2lkLCBuZXdWYWwpCisgICAgICAgICAgLmNhdGNoICgoZXJyb3IpPT57CisgICAgICAgICAg ICBuZXdWYWwgPSBwcmV2W2UudmFsdWVdOworICAgICAgICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50 KFFVRVJZX1RPT0xfRVZFTlRTLkhBTkRMRV9BUElfRVJST1IsIGVycm9yLCB7CisgICAgICAgICAg ICAgIGNoZWNrVHJhbnNhY3Rpb246IHRydWUsCisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9 KTsKKyAgICAgIH0KKyAgICAgIHJldHVybiB7CisgICAgICAgIC4uLnByZXYsCisgICAgICAgIFtl LnZhbHVlXTogbmV3VmFsLAorICAgICAgfTsKKyAgICB9KTsKKyAgfSwgW10pOworCisgIGNvbnN0 IG9wZW5GaWxlID0gdXNlQ2FsbGJhY2soKCk9PnsKKyAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVF UllfVE9PTF9FVkVOVFMuVFJJR0dFUl9MT0FEX0ZJTEUpOworICB9LCBbXSk7CisKKyAgY29uc3Qg c2F2ZUZpbGUgPSB1c2VDYWxsYmFjaygoc2F2ZUFzPWZhbHNlKT0+eworICAgIGV2ZW50QnVzLmZp cmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5UUklHR0VSX1NBVkVfRklMRSwgc2F2ZUFzKTsKKyAg fSwgW10pOworCisgIHVzZUVmZmVjdCgoKT0+eworICAgIGV2ZW50QnVzLnJlZ2lzdGVyTGlzdGVu ZXIoUVVFUllfVE9PTF9FVkVOVFMuRVhFQ1VUSU9OX1NUQVJULCAoKT0+eworICAgICAgc2V0RGlz YWJsZUJ1dHRvbignZXhlY3V0ZScsIHRydWUpOworICAgICAgc2V0RGlzYWJsZUJ1dHRvbignY2Fu Y2VsJywgZmFsc2UpOworICAgICAgc2V0RGlzYWJsZUJ1dHRvbignZXhwbGFpbicsIHRydWUpOwor ICAgICAgc2V0RGlzYWJsZUJ1dHRvbignZXhwbGFpbl9hbmFseXNlJywgdHJ1ZSk7CisgICAgICBz ZXREaXNhYmxlQnV0dG9uKCdsaW1pdCcsIHRydWUpOworICAgIH0pOworICAgIGV2ZW50QnVzLnJl Z2lzdGVyTGlzdGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuRVhFQ1VUSU9OX0VORCwgKCk9PnsKKyAg ICAgIHNldERpc2FibGVCdXR0b24oJ2V4ZWN1dGUnLCBmYWxzZSk7CisgICAgICBzZXREaXNhYmxl QnV0dG9uKCdjYW5jZWwnLCB0cnVlKTsKKyAgICAgIHNldERpc2FibGVCdXR0b24oJ2V4cGxhaW4n LCBmYWxzZSk7CisgICAgICBzZXREaXNhYmxlQnV0dG9uKCdleHBsYWluX2FuYWx5c2UnLCBmYWxz ZSk7CisgICAgICBzZXREaXNhYmxlQnV0dG9uKCdsaW1pdCcsIGZhbHNlKTsKKyAgICB9KTsKKyAg ICBldmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlRSSUdHRVJfU0FW RV9SRVNVTFRTLCAoKT0+eworICAgICAgc2V0RGlzYWJsZUJ1dHRvbignZXhlY3V0ZScsIHRydWUp OworICAgICAgc2V0RGlzYWJsZUJ1dHRvbignZXhwbGFpbicsIHRydWUpOworICAgICAgc2V0RGlz YWJsZUJ1dHRvbignZXhwbGFpbl9hbmFseXNlJywgdHJ1ZSk7CisgICAgICBzZXREaXNhYmxlQnV0 dG9uKCdsaW1pdCcsIHRydWUpOworICAgIH0pOworICAgIGV2ZW50QnVzLnJlZ2lzdGVyTGlzdGVu ZXIoUVVFUllfVE9PTF9FVkVOVFMuVFJJR0dFUl9TQVZFX1JFU1VMVFNfRU5ELCAoKT0+eworICAg ICAgc2V0RGlzYWJsZUJ1dHRvbignZXhlY3V0ZScsIGZhbHNlKTsKKyAgICAgIHNldERpc2FibGVC dXR0b24oJ2V4cGxhaW4nLCBmYWxzZSk7CisgICAgICBzZXREaXNhYmxlQnV0dG9uKCdleHBsYWlu X2FuYWx5c2UnLCBmYWxzZSk7CisgICAgICBzZXREaXNhYmxlQnV0dG9uKCdsaW1pdCcsIGZhbHNl KTsKKyAgICB9KTsKKyAgICBldmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZF TlRTLlFVRVJZX0NIQU5HRUQsIChpc0RpcnR5KT0+eworICAgICAgc2V0RGlzYWJsZUJ1dHRvbign c2F2ZScsICFpc0RpcnR5KTsKKyAgICB9KTsKKyAgICBldmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVy KFFVRVJZX1RPT0xfRVZFTlRTLkRBVEFHUklEX0NIQU5HRUQsIChpc0RpcnR5KT0+eworICAgICAg c2V0RGlzYWJsZUJ1dHRvbignc2F2ZS1kYXRhJywgIWlzRGlydHkpOworICAgIH0pOworICAgIGV2 ZW50QnVzLnJlZ2lzdGVyTGlzdGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuU0VMRUNURURfUk9XU19D SEFOR0VELCAoY291bnQpPT57CisgICAgICBzZXREaXNhYmxlQnV0dG9uKCdkZWxldGUtcm93cycs ICFjb3VudCk7CisgICAgfSk7CisgICAgZXZlbnRCdXMucmVnaXN0ZXJMaXN0ZW5lcihRVUVSWV9U T09MX0VWRU5UUy5TRVRfRklMVEVSX0lORk8sIChjYW5GaWx0ZXIsIGZpbHRlckFwcGxpZWQpPT57 CisgICAgICBzZXREaXNhYmxlQnV0dG9uKCdmaWx0ZXInLCAhY2FuRmlsdGVyKTsKKyAgICAgIHNl dEhpZ2hsaWdodEZpbHRlcihmaWx0ZXJBcHBsaWVkKTsKKyAgICB9KTsKKyAgICBldmVudEJ1cy5y ZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlNFVF9MSU1JVF9WQUxVRSwgKGwpPT57 CisgICAgICBzZXRMaW1pdChsKTsKKyAgICB9KTsKKyAgfSwgW10pOworCisgIHVzZUVmZmVjdCgo KT0+eworICAgIHNldERpc2FibGVCdXR0b24oJ2V4ZWN1dGUnLCBxdWVyeVRvb2xDb25uQ3R4Lm9i dGFpbmluZ0Nvbm4pOworICAgIHNldERpc2FibGVCdXR0b24oJ2V4cGxhaW4nLCBxdWVyeVRvb2xD b25uQ3R4Lm9idGFpbmluZ0Nvbm4pOworICAgIHNldERpc2FibGVCdXR0b24oJ2V4cGxhaW5fYW5h bHlzZScsIHF1ZXJ5VG9vbENvbm5DdHgub2J0YWluaW5nQ29ubik7CisgIH0sIFtxdWVyeVRvb2xD b25uQ3R4Lm9idGFpbmluZ0Nvbm5dKTsKKworICBjb25zdCBpc0luVHhuID0gKCk9PihxdWVyeVRv b2xDb25uQ3R4LmNvbm5lY3Rpb25TdGF0dXMgPT0gQ09OTkVDVElPTl9TVEFUVVMuVFJBTlNBQ1RJ T05fU1RBVFVTX0lOVFJBTlMKKyAgICB8fCBxdWVyeVRvb2xDb25uQ3R4LmNvbm5lY3Rpb25TdGF0 dXMgPT0gQ09OTkVDVElPTl9TVEFUVVMuVFJBTlNBQ1RJT05fU1RBVFVTX0lORVJST1IpOworCisg IGNvbnN0IG9uRXhlY3V0aW9uRG9uZSA9ICgpPT57CisgICAgZXZlbnRCdXMucmVnaXN0ZXJMaXN0 ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5FWEVDVVRJT05fRU5ELCAoc3VjY2Vzcyk9PnsKKyAgICAg IGlmKHN1Y2Nlc3MpIHsKKyAgICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZF TlRTLkZPUkNFX0NMT1NFX1BBTkVMKTsKKyAgICAgIH0KKyAgICB9LCB0cnVlKTsKKyAgfTsKKyAg Y29uc3Qgd2FyblR4bkNsb3NlID0gKCk9PnsKKyAgICBpZighaXNJblR4bigpIHx8ICFxdWVyeVRv b2xDdHgucHJlZmVyZW5jZXM/LnNxbGVkaXRvci5wcm9tcHRfY29tbWl0X3RyYW5zYWN0aW9uKSB7 CisgICAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuRk9SQ0VfQ0xPU0Vf UEFORUwpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBxdWVyeVRvb2xDdHgubW9kYWwuc2hv d01vZGFsKGdldHRleHQoJ0NvbW1pdCB0cmFuc2FjdGlvbj8nKSwgKGNsb3NlTW9kYWwpPT4oCisg ICAgICA8Q29uZmlybVRyYW5zYWN0aW9uQ29udGVudAorICAgICAgICBjbG9zZU1vZGFsPXtjbG9z ZU1vZGFsfQorICAgICAgICB0ZXh0PXtnZXR0ZXh0KCdUaGUgY3VycmVudCB0cmFuc2FjdGlvbiBp cyBub3QgY29tbWl0ZWQgdG8gdGhlIGRhdGFiYXNlLiAnCisgICAgICAgICAgKydEbyB5b3Ugd2Fu dCB0byBjb21taXQgb3Igcm9sbGJhY2sgdGhlIHRyYW5zYWN0aW9uPycpfQorICAgICAgICBvblJv bGxiYWNrPXsoKT0+eworICAgICAgICAgIG9uRXhlY3V0aW9uRG9uZSgpOworICAgICAgICAgIG9u Um9sbGJhY2tDbGljaygpOworICAgICAgICB9fQorICAgICAgICBvbkNvbW1pdD17KCk9PnsKKyAg ICAgICAgICBvbkV4ZWN1dGlvbkRvbmUoKTsKKyAgICAgICAgICBvbkNvbW1pdENsaWNrKCk7Cisg ICAgICAgIH19CisgICAgICAvPgorICAgICkpOworICB9OworICB1c2VFZmZlY3QoKCk9PnsKKyAg ICBpZihpc0luVHhuKCkpIHsKKyAgICAgIHNldERpc2FibGVCdXR0b24oJ2NvbW1pdCcsIGZhbHNl KTsKKyAgICAgIHNldERpc2FibGVCdXR0b24oJ3JvbGxiYWNrJywgZmFsc2UpOworICAgIH0gZWxz ZSB7CisgICAgICBzZXREaXNhYmxlQnV0dG9uKCdjb21taXQnLCB0cnVlKTsKKyAgICAgIHNldERp c2FibGVCdXR0b24oJ3JvbGxiYWNrJywgdHJ1ZSk7CisgICAgfQorICAgIGV2ZW50QnVzLnJlZ2lz dGVyTGlzdGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuV0FSTl9UWE5fQ0xPU0UsIHdhcm5UeG5DbG9z ZSk7CisgICAgcmV0dXJuICgpPT57CisgICAgICBldmVudEJ1cy5kZXJlZ2lzdGVyTGlzdGVuZXIo UVVFUllfVE9PTF9FVkVOVFMuV0FSTl9UWE5fQ0xPU0UsIHdhcm5UeG5DbG9zZSk7CisgICAgfTsK KyAgfSwgW3F1ZXJ5VG9vbENvbm5DdHguY29ubmVjdGlvblN0YXR1c10pOworCisgIGNvbnN0IG9u Q29tbWl0Q2xpY2s9KCk9PnsKKyAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVO VFMuRVhFQ1VUSU9OX1NUQVJULCAnQ09NTUlUOycsIG51bGwsIHRydWUpOworICB9OworICBjb25z dCBvblJvbGxiYWNrQ2xpY2s9KCk9PnsKKyAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9P TF9FVkVOVFMuRVhFQ1VUSU9OX1NUQVJULCAnUk9MTEJBQ0s7JywgbnVsbCwgdHJ1ZSk7CisgIH07 CisgIGNvbnN0IGV4ZWN1dGVNYWNybyA9IChtKT0+eworICAgIGV2ZW50QnVzLmZpcmVFdmVudChR VUVSWV9UT09MX0VWRU5UUy5FWEVDVVRJT05fU1RBUlQsIG0uc3FsLCBudWxsLCB0cnVlKTsKKyAg fTsKKyAgY29uc3Qgb25MaW1pdENoYW5nZT0oZSk9PnsKKyAgICBzZXRMaW1pdChlLnRhcmdldC52 YWx1ZSk7CisgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlRSSUdHRVJf U0VUX0xJTUlULGUudGFyZ2V0LnZhbHVlKTsKKyAgfTsKKyAgY29uc3QgZm9ybWF0U1FMPSgpPT57 CisgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlRSSUdHRVJfRk9STUFU X1NRTCk7CisgIH07CisKKyAgdXNlRWZmZWN0KCgpPT57CisgICAgaWYocXVlcnlUb29sUHJlZikg eworICAgICAgLyogR2V0IHRoZSBwcmVmcyBmaXJzdCB0aW1lICovCisgICAgICBpZihfLmlzVW5k ZWZpbmVkKGNoZWNrZWRNZW51SXRlbXMuYXV0b19jb21taXQpKSB7CisgICAgICAgIHNldENoZWNr ZWRNZW51SXRlbXMoeworICAgICAgICAgIGF1dG9fY29tbWl0OiBxdWVyeVRvb2xQcmVmLmF1dG9f Y29tbWl0LAorICAgICAgICAgIGF1dG9fcm9sbGJhY2s6IHF1ZXJ5VG9vbFByZWYuYXV0b19yb2xs YmFjaywKKyAgICAgICAgICBleHBsYWluX3ZlcmJvc2U6IHF1ZXJ5VG9vbFByZWYuZXhwbGFpbl92 ZXJib3NlLAorICAgICAgICAgIGV4cGxhaW5fY29zdHM6IHF1ZXJ5VG9vbFByZWYuZXhwbGFpbl9j b3N0cywKKyAgICAgICAgICBleHBsYWluX2J1ZmZlcnM6IHF1ZXJ5VG9vbFByZWYuZXhwbGFpbl9i dWZmZXJzLAorICAgICAgICAgIGV4cGxhaW5fdGltaW5nOiBxdWVyeVRvb2xQcmVmLmV4cGxhaW5f dGltaW5nLAorICAgICAgICAgIGV4cGxhaW5fc3VtbWFyeTogcXVlcnlUb29sUHJlZi5leHBsYWlu X3N1bW1hcnksCisgICAgICAgICAgZXhwbGFpbl9zZXR0aW5nczogcXVlcnlUb29sUHJlZi5leHBs YWluX3NldHRpbmdzLAorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9CisgIH0sIFtxdWVyeVRv b2xQcmVmXSk7CisKKyAgLyogQnV0dG9uIHNob3J0Y3V0cyAqLworICB1c2VLZXlib2FyZFNob3J0 Y3V0cyhbCisgICAgeworICAgICAgc2hvcnRjdXQ6IHF1ZXJ5VG9vbFByZWYuZXhlY3V0ZV9xdWVy eSwKKyAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAgY2FsbGJhY2s6ICgpPT57ZXhlY3V0ZVF1ZXJ5 KCk7fQorICAgICAgfQorICAgIH0sCisgICAgeworICAgICAgc2hvcnRjdXQ6IHF1ZXJ5VG9vbFBy ZWYuZXhwbGFpbl9xdWVyeSwKKyAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAgY2FsbGJhY2s6IChl KT0+e2UucHJldmVudERlZmF1bHQoKTtleHBsYWluKCk7fQorICAgICAgfQorICAgIH0sCisgICAg eworICAgICAgc2hvcnRjdXQ6IHF1ZXJ5VG9vbFByZWYuZXhwbGFpbl9hbmFseXplX3F1ZXJ5LAor ICAgICAgb3B0aW9uczogeworICAgICAgICBjYWxsYmFjazogKCk9PntleHBsYWluQW5hbHlzZSgp O30KKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgIHNob3J0Y3V0OiBxdWVyeVRvb2xQcmVm LmNvbW1pdF90cmFuc2FjdGlvbiwKKyAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAgY2FsbGJhY2s6 ICgpPT57b25Db21taXRDbGljaygpO30KKyAgICAgIH0KKyAgICB9LAorICAgIHsKKyAgICAgIHNo b3J0Y3V0OiBxdWVyeVRvb2xQcmVmLnJvbGxiYWNrX3RyYW5zYWN0aW9uLAorICAgICAgb3B0aW9u czogeworICAgICAgICBjYWxsYmFjazogKCk9PntvblJvbGxiYWNrQ2xpY2soKTt9CisgICAgICB9 CisgICAgfSwKKyAgICB7CisgICAgICBzaG9ydGN1dDogRklYRURfUFJFRi5mb3JtYXRfc3FsLAor ICAgICAgb3B0aW9uczogeworICAgICAgICBjYWxsYmFjazogKCk9Pntmb3JtYXRTUUwoKTt9Cisg ICAgICB9CisgICAgfSwKKyAgXSwgY29udGFpbmVyUmVmKTsKKworICAvKiBNYWNybyBzaG9ydGN1 dHMgKi8KKyAgdXNlS2V5Ym9hcmRTaG9ydGN1dHMoCisgICAgcXVlcnlUb29sQ3R4LnBhcmFtcz8u bWFjcm9zPy5tYXAoKG0pPT57CisgICAgICByZXR1cm4geworICAgICAgICBzaG9ydGN1dDogewor ICAgICAgICAgIC4uLm0sCisgICAgICAgICAgJ2tleSc6IHsKKyAgICAgICAgICAgICdrZXlfY29k ZSc6IG0ua2V5X2NvZGUsCisgICAgICAgICAgICAnY2hhcic6IG0ua2V5LAorICAgICAgICAgIH0s CisgICAgICAgIH0sCisgICAgICAgIG9wdGlvbnM6IHsKKyAgICAgICAgICBjYWxsYmFjazogKCk9 PntleGVjdXRlTWFjcm8obSk7fQorICAgICAgICB9CisgICAgICB9OworICAgIH0pIHx8IFtdLAor ICAgIGNvbnRhaW5lclJlZgorICApOworCisgIHJldHVybiAoCisgICAgPD4KKyAgICAgIDxCb3gg Y2xhc3NOYW1lPXtjbGFzc2VzLnJvb3R9PgorICAgICAgICA8UGdCdXR0b25Hcm91cCBzaXplPSJz bWFsbCI+CisgICAgICAgICAgPFBnSWNvbkJ1dHRvbiB0aXRsZT17Z2V0dGV4dCgnT3BlbiBGaWxl Jyl9IGljb249ezxGb2xkZXJSb3VuZGVkSWNvbiAvPn0gZGlzYWJsZWQ9eyFxdWVyeVRvb2xDdHgu cGFyYW1zLmlzX3F1ZXJ5X3Rvb2x9CisgICAgICAgICAgICBhY2Nlc3NrZXk9e3Nob3J0Y3V0X2tl eShxdWVyeVRvb2xQcmVmLmJ0bl9vcGVuX2ZpbGUpfSBvbkNsaWNrPXtvcGVuRmlsZX0gLz4KKyAg ICAgICAgICA8UGdJY29uQnV0dG9uIHRpdGxlPXtnZXR0ZXh0KCdTYXZlIEZpbGUnKX0gaWNvbj17 PFNhdmVSb3VuZGVkSWNvbiAvPn0KKyAgICAgICAgICAgIGFjY2Vzc2tleT17c2hvcnRjdXRfa2V5 KHF1ZXJ5VG9vbFByZWYuYnRuX3NhdmVfZmlsZSl9IGRpc2FibGVkPXtidXR0b25zRGlzYWJsZWRb J3NhdmUnXSB8fCAhcXVlcnlUb29sQ3R4LnBhcmFtcy5pc19xdWVyeV90b29sfQorICAgICAgICAg ICAgb25DbGljaz17KCk9PntzYXZlRmlsZShmYWxzZSk7fX0gLz4KKyAgICAgICAgICA8UGdJY29u QnV0dG9uIHRpdGxlPXtnZXR0ZXh0KCdGaWxlJyl9IGljb249ezxLZXlib2FyZEFycm93RG93bklj b24gLz59IHNwbGl0QnV0dG9uIGRpc2FibGVkPXshcXVlcnlUb29sQ3R4LnBhcmFtcy5pc19xdWVy eV90b29sfQorICAgICAgICAgICAgbmFtZT0ibWVudS1zYXZlYXMiIHJlZj17c2F2ZUFzTWVudVJl Zn0gb25DbGljaz17b3Blbk1lbnV9CisgICAgICAgICAgLz4KKyAgICAgICAgPC9QZ0J1dHRvbkdy b3VwPgorICAgICAgICA8UGdCdXR0b25Hcm91cCBzaXplPSJzbWFsbCI+CisgICAgICAgICAgPFBn SWNvbkJ1dHRvbiB0aXRsZT17Z2V0dGV4dCgnRWRpdCcpfSBpY29uPXsKKyAgICAgICAgICAgIDw+ PEVkaXRSb3VuZGVkSWNvbiAvPjxLZXlib2FyZEFycm93RG93bkljb24gc3R5bGU9e3ttYXJnaW5M ZWZ0OiAnLTEwcHgnfX0gLz48Lz59CisgICAgICAgICAgZGlzYWJsZWQ9eyFxdWVyeVRvb2xDdHgu cGFyYW1zLmlzX3F1ZXJ5X3Rvb2x9CisgICAgICAgICAgbmFtZT0ibWVudS1lZGl0IiByZWY9e2Vk aXRNZW51UmVmfSBvbkNsaWNrPXtvcGVuTWVudX0gLz4KKyAgICAgICAgPC9QZ0J1dHRvbkdyb3Vw PgorICAgICAgICA8UGdCdXR0b25Hcm91cCBzaXplPSJzbWFsbCIgY29sb3I9e2hpZ2hsaWdodEZp bHRlciA/ICdwcmltYXJ5JyA6ICdkZWZhdWx0J30+CisgICAgICAgICAgPFBnSWNvbkJ1dHRvbiB0 aXRsZT17Z2V0dGV4dCgnRmlsdGVyJyl9IGljb249ezxGaWx0ZXJJY29uIC8+fQorICAgICAgICAg ICAgb25DbGljaz17b25GaWx0ZXJDbGlja30gZGlzYWJsZWQ9e2J1dHRvbnNEaXNhYmxlZFsnZmls dGVyJ119IGFjY2Vzc2tleT17c2hvcnRjdXRfa2V5KHF1ZXJ5VG9vbFByZWYuYnRuX2ZpbHRlcl9k aWFsb2cpfS8+CisgICAgICAgICAgPFBnSWNvbkJ1dHRvbiB0aXRsZT17Z2V0dGV4dCgnRmlsdGVy IG9wdGlvbnMnKX0gaWNvbj17PEtleWJvYXJkQXJyb3dEb3duSWNvbiAvPn0gc3BsaXRCdXR0b24K KyAgICAgICAgICAgIGRpc2FibGVkPXtidXR0b25zRGlzYWJsZWRbJ2ZpbHRlciddfSBuYW1lPSJt ZW51LWZpbHRlciIgcmVmPXtmaWx0ZXJNZW51UmVmfSBhY2Nlc3NrZXk9e3Nob3J0Y3V0X2tleShx dWVyeVRvb2xQcmVmLmJ0bl9maWx0ZXJfb3B0aW9ucyl9CisgICAgICAgICAgICBvbkNsaWNrPXtv cGVuTWVudX0gLz4KKyAgICAgICAgPC9QZ0J1dHRvbkdyb3VwPgorICAgICAgICA8SW5wdXRTZWxl Y3ROb25TZWFyY2ggb3B0aW9ucz17WworICAgICAgICAgIHtsYWJlbDogZ2V0dGV4dCgnTm8gbGlt aXQnKSwgdmFsdWU6ICctMSd9LAorICAgICAgICAgIHtsYWJlbDogZ2V0dGV4dCgnMTAwMCByb3dz JyksIHZhbHVlOiAnMTAwMCd9LAorICAgICAgICAgIHtsYWJlbDogZ2V0dGV4dCgnNTAwIHJvd3Mn KSwgdmFsdWU6ICc1MDAnfSwKKyAgICAgICAgICB7bGFiZWw6IGdldHRleHQoJzEwMCByb3dzJyks IHZhbHVlOiAnMTAwJ30sCisgICAgICAgIF19IHZhbHVlPXtsaW1pdH0gb25DaGFuZ2U9e29uTGlt aXRDaGFuZ2V9IGRpc2FibGVkPXtidXR0b25zRGlzYWJsZWRbJ2xpbWl0J10gfHwgcXVlcnlUb29s Q3R4LnBhcmFtcy5pc19xdWVyeV90b29sfSAvPgorICAgICAgICA8UGdCdXR0b25Hcm91cCBzaXpl PSJzbWFsbCI+CisgICAgICAgICAgPFBnSWNvbkJ1dHRvbiB0aXRsZT17Z2V0dGV4dCgnQ2FuY2Vs IHF1ZXJ5Jyl9IGljb249ezxTdG9wUm91bmRlZEljb24gc3R5bGU9e3toZWlnaHQ6ICd1bnNldCd9 fSAvPn0KKyAgICAgICAgICAgIG9uQ2xpY2s9e2NhbmNlbFF1ZXJ5fSBkaXNhYmxlZD17YnV0dG9u c0Rpc2FibGVkWydjYW5jZWwnXX0gYWNjZXNza2V5PXtzaG9ydGN1dF9rZXkocXVlcnlUb29sUHJl Zi5idG5fY2FuY2VsX3F1ZXJ5KX0gLz4KKyAgICAgICAgICA8UGdJY29uQnV0dG9uIHRpdGxlPXtn ZXR0ZXh0KCdFeGVjdXRlL1JlZnJlc2gnKX0gaWNvbj17PFBsYXlBcnJvd1JvdW5kZWRJY29uIHN0 eWxlPXt7aGVpZ2h0OiAndW5zZXQnfX0gLz59CisgICAgICAgICAgICBvbkNsaWNrPXtleGVjdXRl UXVlcnl9IGRpc2FibGVkPXtidXR0b25zRGlzYWJsZWRbJ2V4ZWN1dGUnXX0gc2hvcnRjdXQ9e3F1 ZXJ5VG9vbFByZWYuZXhlY3V0ZV9xdWVyeX0vPgorICAgICAgICAgIDxQZ0ljb25CdXR0b24gdGl0 bGU9e2dldHRleHQoJ0V4ZWN1dGUgb3B0aW9ucycpfSBpY29uPXs8S2V5Ym9hcmRBcnJvd0Rvd25J Y29uIC8+fSBzcGxpdEJ1dHRvbgorICAgICAgICAgICAgbmFtZT0ibWVudS1hdXRvY29tbWl0IiBy ZWY9e2F1dG9Db21taXRNZW51UmVmfSBhY2Nlc3NrZXk9e3Nob3J0Y3V0X2tleShxdWVyeVRvb2xQ cmVmLmJ0bl9kZWxldGVfcm93KX0KKyAgICAgICAgICAgIG9uQ2xpY2s9e29wZW5NZW51fSAvPgor ICAgICAgICA8L1BnQnV0dG9uR3JvdXA+CisgICAgICAgIDxQZ0J1dHRvbkdyb3VwIHNpemU9InNt YWxsIj4KKyAgICAgICAgICA8UGdJY29uQnV0dG9uIHRpdGxlPXtnZXR0ZXh0KCdFeHBsYWluJyl9 IGljb249ezxFeHBsaWNpdFJvdW5kZWRJY29uIC8+fQorICAgICAgICAgICAgb25DbGljaz17KCk9 PntleHBsYWluKCk7fX0gZGlzYWJsZWQ9e2J1dHRvbnNEaXNhYmxlZFsnZXhwbGFpbiddIHx8ICFx dWVyeVRvb2xDdHgucGFyYW1zLmlzX3F1ZXJ5X3Rvb2x9IHNob3J0Y3V0PXtxdWVyeVRvb2xQcmVm LmV4cGxhaW5fcXVlcnl9Lz4KKyAgICAgICAgICA8UGdJY29uQnV0dG9uIHRpdGxlPXtnZXR0ZXh0 KCdFeHBsYWluIEFuYWx5emUnKX0gaWNvbj17PEFzc2Vzc21lbnRSb3VuZGVkSWNvbiAvPn0KKyAg ICAgICAgICAgIG9uQ2xpY2s9eygpPT57ZXhwbGFpbkFuYWx5c2UoKTt9fSBkaXNhYmxlZD17YnV0 dG9uc0Rpc2FibGVkWydleHBsYWluX2FuYWx5c2UnXSB8fCAhcXVlcnlUb29sQ3R4LnBhcmFtcy5p c19xdWVyeV90b29sfSBzaG9ydGN1dD17cXVlcnlUb29sUHJlZi5leHBsYWluX2FuYWx5emVfcXVl cnl9Lz4KKyAgICAgICAgICA8UGdJY29uQnV0dG9uIHRpdGxlPXtnZXR0ZXh0KCdFeHBsYWluIFNl dHRpbmdzJyl9IGljb249ezxLZXlib2FyZEFycm93RG93bkljb24gLz59IHNwbGl0QnV0dG9uCisg ICAgICAgICAgICBkaXNhYmxlZD17IXF1ZXJ5VG9vbEN0eC5wYXJhbXMuaXNfcXVlcnlfdG9vbH0K KyAgICAgICAgICAgIG5hbWU9Im1lbnUtZXhwbGFpbiIgcmVmPXtleHBsYWluTWVudVJlZn0gb25D bGljaz17b3Blbk1lbnV9IC8+CisgICAgICAgIDwvUGdCdXR0b25Hcm91cD4KKyAgICAgICAgPFBn QnV0dG9uR3JvdXAgc2l6ZT0ic21hbGwiPgorICAgICAgICAgIDxQZ0ljb25CdXR0b24gdGl0bGU9 e2dldHRleHQoJ0NvbW1pdCcpfSBpY29uPXs8Q29tbWl0SWNvbiAvPn0KKyAgICAgICAgICAgIG9u Q2xpY2s9e29uQ29tbWl0Q2xpY2t9IGRpc2FibGVkPXtidXR0b25zRGlzYWJsZWRbJ2NvbW1pdCdd fSBzaG9ydGN1dD17cXVlcnlUb29sUHJlZi5jb21taXRfdHJhbnNhY3Rpb259Lz4KKyAgICAgICAg ICA8UGdJY29uQnV0dG9uIHRpdGxlPXtnZXR0ZXh0KCdSb2xsYmFjaycpfSBpY29uPXs8Um9sbGJh Y2tJY29uIC8+fQorICAgICAgICAgICAgb25DbGljaz17b25Sb2xsYmFja0NsaWNrfSBkaXNhYmxl ZD17YnV0dG9uc0Rpc2FibGVkWydyb2xsYmFjayddfSBzaG9ydGN1dD17cXVlcnlUb29sUHJlZi5y b2xsYmFja190cmFuc2FjdGlvbn0vPgorICAgICAgICA8L1BnQnV0dG9uR3JvdXA+CisgICAgICAg IDxQZ0J1dHRvbkdyb3VwIHNpemU9InNtYWxsIj4KKyAgICAgICAgICA8UGdJY29uQnV0dG9uIHRp dGxlPXtnZXR0ZXh0KCdNYWNyb3MnKX0gaWNvbj17CisgICAgICAgICAgICA8PjxGb3JtYXRMaXN0 TnVtYmVyZWRSb3VuZGVkSWNvbiAvPjxLZXlib2FyZEFycm93RG93bkljb24gc3R5bGU9e3ttYXJn aW5MZWZ0OiAnLTEwcHgnfX0gLz48Lz59CisgICAgICAgICAgZGlzYWJsZWQ9eyFxdWVyeVRvb2xD dHgucGFyYW1zLmlzX3F1ZXJ5X3Rvb2x9IG5hbWU9Im1lbnUtbWFjcm9zIiByZWY9e21hY3Jvc01l bnVSZWZ9IG9uQ2xpY2s9e29wZW5NZW51fSAvPgorICAgICAgICA8L1BnQnV0dG9uR3JvdXA+Cisg ICAgICA8L0JveD4KKyAgICAgIDxQZ01lbnUKKyAgICAgICAgYW5jaG9yUmVmPXtzYXZlQXNNZW51 UmVmfQorICAgICAgICBvcGVuPXttZW51T3BlbklkPT0nbWVudS1zYXZlYXMnfQorICAgICAgICBv bkNsb3NlPXtoYW5kbGVNZW51Q2xvc2V9CisgICAgICA+CisgICAgICAgIDxQZ01lbnVJdGVtIG9u Q2xpY2s9eygpPT57c2F2ZUZpbGUodHJ1ZSk7fX0+e2dldHRleHQoJ1NhdmUgYXMnKX08L1BnTWVu dUl0ZW0+CisgICAgICA8L1BnTWVudT4KKyAgICAgIDxQZ01lbnUKKyAgICAgICAgYW5jaG9yUmVm PXtlZGl0TWVudVJlZn0KKyAgICAgICAgb3Blbj17bWVudU9wZW5JZD09J21lbnUtZWRpdCd9Cisg ICAgICAgIG9uQ2xvc2U9e2hhbmRsZU1lbnVDbG9zZX0KKyAgICAgID4KKyAgICAgICAgPFBnTWVu dUl0ZW0gc2hvcnRjdXQ9e0ZJWEVEX1BSRUYuZmluZH0KKyAgICAgICAgICBvbkNsaWNrPXsoKT0+ e2V2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5FRElUT1JfRklORF9SRVBMQUNF LCBmYWxzZSk7fX0+e2dldHRleHQoJ0ZpbmQnKX08L1BnTWVudUl0ZW0+CisgICAgICAgIDxQZ01l bnVJdGVtIHNob3J0Y3V0PXtGSVhFRF9QUkVGLnJlcGxhY2V9CisgICAgICAgICAgb25DbGljaz17 KCk9PntldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuRURJVE9SX0ZJTkRfUkVQ TEFDRSwgdHJ1ZSk7fX0+e2dldHRleHQoJ1JlcGxhY2UnKX08L1BnTWVudUl0ZW0+CisgICAgICAg IDxQZ01lbnVJdGVtIHNob3J0Y3V0PXtGSVhFRF9QUkVGLmp1bXB9CisgICAgICAgICAgb25DbGlj az17KCk9PntldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuRURJVE9SX0VYRUNf Q01ELCAnanVtcFRvTGluZScpO319PntnZXR0ZXh0KCdKdW1wJyl9PC9QZ01lbnVJdGVtPgorICAg ICAgICA8UGdNZW51RGl2aWRlciAvPgorICAgICAgICA8UGdNZW51SXRlbSBzaG9ydGN1dD17RklY RURfUFJFRi5pbmRlbnR9CisgICAgICAgICAgb25DbGljaz17KCk9PntldmVudEJ1cy5maXJlRXZl bnQoUVVFUllfVE9PTF9FVkVOVFMuRURJVE9SX0VYRUNfQ01ELCAnaW5kZW50TW9yZScpO319Pntn ZXR0ZXh0KCdJbmRlbnQnKX08L1BnTWVudUl0ZW0+CisgICAgICAgIDxQZ01lbnVJdGVtIHNob3J0 Y3V0PXtGSVhFRF9QUkVGLnVuaW5kZW50fQorICAgICAgICAgIG9uQ2xpY2s9eygpPT57ZXZlbnRC dXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLkVESVRPUl9FWEVDX0NNRCwgJ2luZGVudExl c3MnKTt9fT57Z2V0dGV4dCgnVW5pbmRlbnQnKX08L1BnTWVudUl0ZW0+CisgICAgICAgIDxQZ01l bnVJdGVtIHNob3J0Y3V0PXtGSVhFRF9QUkVGLmNvbW1lbnR9CisgICAgICAgICAgb25DbGljaz17 KCk9PntldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuRURJVE9SX0VYRUNfQ01E LCAndG9nZ2xlQ29tbWVudCcpO319PntnZXR0ZXh0KCdUb2dnbGUgY29tbWVudCcpfTwvUGdNZW51 SXRlbT4KKyAgICAgICAgPFBnTWVudUl0ZW0gYWNjZXNza2V5PXtzaG9ydGN1dF9rZXkocXVlcnlU b29sUHJlZi5idG5fY2xlYXJfb3B0aW9ucyl9CisgICAgICAgICAgb25DbGljaz17KCk9PntldmVu dEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuRURJVE9SX1NFVF9TUUwsICcnKTt9fT57 Z2V0dGV4dCgnQ2xlYXIgcXVlcnknKX08L1BnTWVudUl0ZW0+CisgICAgICAgIDxQZ01lbnVEaXZp ZGVyIC8+CisgICAgICAgIDxQZ01lbnVJdGVtIHNob3J0Y3V0PXtGSVhFRF9QUkVGLmZvcm1hdF9z cWx9b25DbGljaz17Zm9ybWF0U1FMfT57Z2V0dGV4dCgnRm9ybWF0IFNRTCcpfTwvUGdNZW51SXRl bT4KKyAgICAgIDwvUGdNZW51PgorICAgICAgPFBnTWVudQorICAgICAgICBhbmNob3JSZWY9e2Zp bHRlck1lbnVSZWZ9CisgICAgICAgIG9wZW49e21lbnVPcGVuSWQ9PSdtZW51LWZpbHRlcid9Cisg ICAgICAgIG9uQ2xvc2U9e2hhbmRsZU1lbnVDbG9zZX0KKyAgICAgID4KKyAgICAgICAgPFBnTWVu dUl0ZW0gb25DbGljaz17KCk9PntldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMu VFJJR0dFUl9JTkNMVURFX0VYQ0xVREVfRklMVEVSLCB0cnVlKTt9fT57Z2V0dGV4dCgnRmlsdGVy IGJ5IFNlbGVjdGlvbicpfTwvUGdNZW51SXRlbT4KKyAgICAgICAgPFBnTWVudUl0ZW0gb25DbGlj az17KCk9PntldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuVFJJR0dFUl9JTkNM VURFX0VYQ0xVREVfRklMVEVSLCBmYWxzZSk7fX0+e2dldHRleHQoJ0V4Y2x1ZGUgYnkgU2VsZWN0 aW9uJyl9PC9QZ01lbnVJdGVtPgorICAgICAgICA8UGdNZW51SXRlbSBvbkNsaWNrPXsoKT0+e2V2 ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5UUklHR0VSX1JFTU9WRV9GSUxURVIp O319PntnZXR0ZXh0KCdSZW1vdmUgU29ydC9GaWx0ZXInKX08L1BnTWVudUl0ZW0+CisgICAgICA8 L1BnTWVudT4KKyAgICAgIDxQZ01lbnUKKyAgICAgICAgYW5jaG9yUmVmPXthdXRvQ29tbWl0TWVu dVJlZn0KKyAgICAgICAgb3Blbj17bWVudU9wZW5JZD09J21lbnUtYXV0b2NvbW1pdCd9CisgICAg ICAgIG9uQ2xvc2U9e2hhbmRsZU1lbnVDbG9zZX0KKyAgICAgID4KKyAgICAgICAgPFBnTWVudUl0 ZW0gaGFzQ2hlY2sgdmFsdWU9ImF1dG9fY29tbWl0IiBjaGVja2VkPXtjaGVja2VkTWVudUl0ZW1z WydhdXRvX2NvbW1pdCddfQorICAgICAgICAgIG9uQ2xpY2s9e2NoZWNrTWVudUNsaWNrfT57Z2V0 dGV4dCgnQXV0byBjb21taXQ/Jyl9PC9QZ01lbnVJdGVtPgorICAgICAgICA8UGdNZW51SXRlbSBo YXNDaGVjayB2YWx1ZT0iYXV0b19yb2xsYmFjayIgY2hlY2tlZD17Y2hlY2tlZE1lbnVJdGVtc1sn YXV0b19yb2xsYmFjayddfQorICAgICAgICAgIG9uQ2xpY2s9e2NoZWNrTWVudUNsaWNrfT57Z2V0 dGV4dCgnQXV0byByb2xsYmFjayBvbiBlcnJvcj8nKX08L1BnTWVudUl0ZW0+CisgICAgICA8L1Bn TWVudT4KKyAgICAgIDxQZ01lbnUKKyAgICAgICAgYW5jaG9yUmVmPXtleHBsYWluTWVudVJlZn0K KyAgICAgICAgb3Blbj17bWVudU9wZW5JZD09J21lbnUtZXhwbGFpbid9CisgICAgICAgIG9uQ2xv c2U9e2hhbmRsZU1lbnVDbG9zZX0KKyAgICAgID4KKyAgICAgICAgPFBnTWVudUl0ZW0gaGFzQ2hl Y2sgdmFsdWU9ImV4cGxhaW5fdmVyYm9zZSIgY2hlY2tlZD17Y2hlY2tlZE1lbnVJdGVtc1snZXhw bGFpbl92ZXJib3NlJ119CisgICAgICAgICAgb25DbGljaz17Y2hlY2tNZW51Q2xpY2t9PntnZXR0 ZXh0KCdWZXJib3NlJyl9PC9QZ01lbnVJdGVtPgorICAgICAgICA8UGdNZW51SXRlbSBoYXNDaGVj ayB2YWx1ZT0iZXhwbGFpbl9jb3N0cyIgY2hlY2tlZD17Y2hlY2tlZE1lbnVJdGVtc1snZXhwbGFp bl9jb3N0cyddfQorICAgICAgICAgIG9uQ2xpY2s9e2NoZWNrTWVudUNsaWNrfT57Z2V0dGV4dCgn Q29zdHMnKX08L1BnTWVudUl0ZW0+CisgICAgICAgIDxQZ01lbnVJdGVtIGhhc0NoZWNrIHZhbHVl PSJleHBsYWluX2J1ZmZlcnMiIGNoZWNrZWQ9e2NoZWNrZWRNZW51SXRlbXNbJ2V4cGxhaW5fYnVm ZmVycyddfQorICAgICAgICAgIG9uQ2xpY2s9e2NoZWNrTWVudUNsaWNrfT57Z2V0dGV4dCgnQnVm ZmVycycpfTwvUGdNZW51SXRlbT4KKyAgICAgICAgPFBnTWVudUl0ZW0gaGFzQ2hlY2sgdmFsdWU9 ImV4cGxhaW5fdGltaW5nIiBjaGVja2VkPXtjaGVja2VkTWVudUl0ZW1zWydleHBsYWluX3RpbWlu ZyddfQorICAgICAgICAgIG9uQ2xpY2s9e2NoZWNrTWVudUNsaWNrfT57Z2V0dGV4dCgnVGltaW5n Jyl9PC9QZ01lbnVJdGVtPgorICAgICAgICA8UGdNZW51SXRlbSBoYXNDaGVjayB2YWx1ZT0iZXhw bGFpbl9zdW1tYXJ5IiBjaGVja2VkPXtjaGVja2VkTWVudUl0ZW1zWydleHBsYWluX3N1bW1hcnkn XX0KKyAgICAgICAgICBvbkNsaWNrPXtjaGVja01lbnVDbGlja30+e2dldHRleHQoJ1N1bW1hcnkn KX08L1BnTWVudUl0ZW0+CisgICAgICAgIDxQZ01lbnVJdGVtIGhhc0NoZWNrIHZhbHVlPSJleHBs YWluX3NldHRpbmdzIiBjaGVja2VkPXtjaGVja2VkTWVudUl0ZW1zWydleHBsYWluX3NldHRpbmdz J119CisgICAgICAgICAgb25DbGljaz17Y2hlY2tNZW51Q2xpY2t9PntnZXR0ZXh0KCdTZXR0aW5n cycpfTwvUGdNZW51SXRlbT4KKyAgICAgIDwvUGdNZW51PgorICAgICAgPFBnTWVudQorICAgICAg ICBhbmNob3JSZWY9e21hY3Jvc01lbnVSZWZ9CisgICAgICAgIG9wZW49e21lbnVPcGVuSWQ9PSdt ZW51LW1hY3Jvcyd9CisgICAgICAgIG9uQ2xvc2U9e2hhbmRsZU1lbnVDbG9zZX0KKyAgICAgID4K KyAgICAgICAgPFBnTWVudUl0ZW0gb25DbGljaz17b25NYW5hZ2VNYWNyb3N9PntnZXR0ZXh0KCdN YW5hZ2UgbWFjcm9zJyl9PC9QZ01lbnVJdGVtPgorICAgICAgICA8UGdNZW51RGl2aWRlciAvPgor ICAgICAgICB7cXVlcnlUb29sQ3R4LnBhcmFtcz8ubWFjcm9zPy5tYXAoKG0sIGkpPT57CisgICAg ICAgICAgcmV0dXJuICgKKyAgICAgICAgICAgIDxQZ01lbnVJdGVtIHNob3J0Y3V0PXt7CisgICAg ICAgICAgICAgIC4uLm0sCisgICAgICAgICAgICAgICdrZXknOiB7CisgICAgICAgICAgICAgICAg J2tleV9jb2RlJzogbS5rZXlfY29kZSwKKyAgICAgICAgICAgICAgICAnY2hhcic6IG0ua2V5LAor ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgfX0gb25DbGljaz17KCk9PmV4ZWN1dGVNYWNy byhtKX0ga2V5PXtpfT4KKyAgICAgICAgICAgICAge20ubmFtZX0KKyAgICAgICAgICAgIDwvUGdN ZW51SXRlbT4KKyAgICAgICAgICApOworICAgICAgICB9KX0KKyAgICAgIDwvUGdNZW51PgorICAg IDwvPgorICApOworfQorCitNYWluVG9vbEJhci5wcm9wVHlwZXMgPSB7CisgIGNvbnRhaW5lclJl ZjogQ3VzdG9tUHJvcFR5cGVzLnJlZiwKKyAgb25GaWx0ZXJDbGljazogUHJvcFR5cGVzLmZ1bmMs CisgIG9uTWFuYWdlTWFjcm9zOiBQcm9wVHlwZXMuZnVuYywKK307CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvTWVz c2FnZXMuanN4IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9jb21wb25l bnRzL3NlY3Rpb25zL01lc3NhZ2VzLmpzeApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwMDAuLmI3N2QzYzk3MQotLS0gL2Rldi9udWxsCisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9NZXNzYWdlcy5qc3gKQEAgLTAs MCArMSw0NCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKKy8v CisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBU ZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExp Y2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLworaW1wb3J0IHsgbWFrZVN0eWxlcyB9IGZyb20gJ0BtYXRlcmlhbC11 aS9zdHlsZXMnOworaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JzsKK2ltcG9ydCB7IFF1ZXJ5VG9v bEV2ZW50c0NvbnRleHQgfSBmcm9tICcuLi9RdWVyeVRvb2xDb21wb25lbnQnOworaW1wb3J0IHsg UVVFUllfVE9PTF9FVkVOVFMgfSBmcm9tICcuLi9RdWVyeVRvb2xDb25zdGFudHMnOworCitjb25z dCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSk9Pih7CisgIHJvb3Q6IHsKKyAgICB3aGl0 ZVNwYWNlOiAncHJlLXdyYXAnLAorICAgIGZvbnRGYW1pbHk6ICciU291cmNlIENvZGUgUHJvIiwg U0ZNb25vLVJlZ3VsYXIsIE1lbmxvLCBNb25hY28sIENvbnNvbGFzLCAiTGliZXJhdGlvbiBNb25v IiwgIkNvdXJpZXIgTmV3IiwgbW9ub3NwYWNlJywKKyAgICBwYWRkaW5nOiAnNXB4IDEwcHgnLAor ICAgIG92ZXJmbG93OiAnYXV0bycsCisgICAgaGVpZ2h0OiAnMTAwJScsCisgICAgZm9udFNpemU6 ICcxMnB4JywKKyAgICB1c2VyU2VsZWN0OiAndGV4dCcsCisgICAgLi4udGhlbWUubWl4aW5zLmZv bnRTb3VyY2VDb2RlLAorICB9Cit9KSk7CisKK2V4cG9ydCBmdW5jdGlvbiBNZXNzYWdlcygpIHsK KyAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpOworICBjb25zdCBbbWVzc2FnZVRleHQsIHNl dE1lc3NhZ2VUZXh0XSA9IFJlYWN0LnVzZVN0YXRlKCcnKTsKKyAgY29uc3QgZXZlbnRCdXMgPSBS ZWFjdC51c2VDb250ZXh0KFF1ZXJ5VG9vbEV2ZW50c0NvbnRleHQpOworICBSZWFjdC51c2VFZmZl Y3QoKCk9PnsKKyAgICBldmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRT LlNFVF9NRVNTQUdFLCAodGV4dCwgYXBwZW5kPWZhbHNlKT0+eworICAgICAgc2V0TWVzc2FnZVRl eHQoKHByZXYpPT57CisgICAgICAgIGlmKGFwcGVuZCkgeworICAgICAgICAgIHJldHVybiBwcmV2 K3RleHQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRleHQ7CisgICAgICB9KTsKKyAgICB9 KTsKKyAgfSwgW10pOworICByZXR1cm4gKAorICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLnJv b3R9IHRhYkluZGV4PSIwIj57bWVzc2FnZVRleHR9PC9kaXY+CisgICk7Cit9CmRpZmYgLS1naXQg YS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvc2VjdGlv bnMvTm90aWZpY2F0aW9ucy5qc3ggYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGlj L2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvTm90aWZpY2F0aW9ucy5qc3gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwLi5lYTZhMTYwN2QKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIv cGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvTm90 aWZpY2F0aW9ucy5qc3gKQEAgLTAsMCArMSw1OCBAQAorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIHBnQWRtaW4gNCAt IFBvc3RncmVTUUwgVG9vbHMKKy8vCisvLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUg cGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCisvLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVu ZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW1wb3J0IFJlYWN0IGZyb20g J3JlYWN0JzsKK2ltcG9ydCB7IGNvbW1vblRhYmxlU3R5bGVzIH0gZnJvbSAnLi4vLi4vLi4vLi4v Li4vLi4vc3RhdGljL2pzL1RoZW1lJzsKK2ltcG9ydCB7IFFVRVJZX1RPT0xfRVZFTlRTIH0gZnJv bSAnLi4vUXVlcnlUb29sQ29uc3RhbnRzJzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMv Z2V0dGV4dCc7CitpbXBvcnQgXyBmcm9tICdsb2Rhc2gnOworaW1wb3J0IGNsc3ggZnJvbSAnY2xz eCc7CitpbXBvcnQgeyBRdWVyeVRvb2xFdmVudHNDb250ZXh0IH0gZnJvbSAnLi4vUXVlcnlUb29s Q29tcG9uZW50JzsKKworZXhwb3J0IGZ1bmN0aW9uIE5vdGlmaWNhdGlvbnMoKSB7CisgIGNvbnN0 IFtub3RpY2VzLCBzZXROb3RpY2VzXSA9IFJlYWN0LnVzZVN0YXRlKFtdKTsKKyAgY29uc3QgdGFi bGVDbGFzc2VzID0gY29tbW9uVGFibGVTdHlsZXMoKTsKKyAgY29uc3QgZXZlbnRCdXMgPSBSZWFj dC51c2VDb250ZXh0KFF1ZXJ5VG9vbEV2ZW50c0NvbnRleHQpOworICBSZWFjdC51c2VFZmZlY3Qo KCk9PnsKKyAgICBldmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlBV U0hfTk9USUNFLCAobm90aWNlKT0+eworICAgICAgaWYoXy5pc0FycmF5KG5vdGljZSkpIHsKKyAg ICAgICAgc2V0Tm90aWNlcygocHJldik9PlsKKyAgICAgICAgICAuLi5wcmV2LAorICAgICAgICAg IC4uLm5vdGljZSwKKyAgICAgICAgXSk7CisgICAgICB9IGVsc2UgeworICAgICAgICBzZXROb3Rp Y2VzKChwcmV2KT0+WworICAgICAgICAgIC4uLnByZXYsCisgICAgICAgICAgbm90aWNlLAorICAg ICAgICBdKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSwgW10pOworCisKKyAgcmV0dXJuIDx0YWJs ZSBjbGFzc05hbWU9e2Nsc3godGFibGVDbGFzc2VzLnRhYmxlLCB0YWJsZUNsYXNzZXMuYm9yZGVy Qm90dG9tKX0+CisgICAgPHRoZWFkPgorICAgICAgPHRyPgorICAgICAgICA8dGg+e2dldHRleHQo J1JlY29yZGVkIHRpbWUnKX08L3RoPgorICAgICAgICA8dGg+e2dldHRleHQoJ0V2ZW50Jyl9PC90 aD4KKyAgICAgICAgPHRoPntnZXR0ZXh0KCdQcm9jZXNzIElEJyl9PC90aD4KKyAgICAgICAgPHRo PntnZXR0ZXh0KCdQYXlsb2FkJyl9PC90aD4KKyAgICAgIDwvdHI+CisgICAgPC90aGVhZD4KKyAg ICA8dGJvZHk+CisgICAgICB7bm90aWNlcy5tYXAoKG5vdGljZSwgaSk9PnsKKyAgICAgICAgcmV0 dXJuIDx0ciBrZXk9e2l9PgorICAgICAgICAgIDx0ZD57bm90aWNlLnJlY29yZGVkX3RpbWV9PC90 ZD4KKyAgICAgICAgICA8dGQ+e25vdGljZS5jaGFubmVsfTwvdGQ+CisgICAgICAgICAgPHRkPntu b3RpY2UucGlkfTwvdGQ+CisgICAgICAgICAgPHRkPntub3RpY2UucGF5bG9hZH08L3RkPgorICAg ICAgICA8L3RyPjsKKyAgICAgIH0pfQorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+OworfQpkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9jb21wb25lbnRz L3NlY3Rpb25zL1F1ZXJ5LmpzeCBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMv anMvY29tcG9uZW50cy9zZWN0aW9ucy9RdWVyeS5qc3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMDAwLi5hNWIwOGEzYmYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90 b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUXVlcnkuanN4CkBA IC0wLDAgKzEsMzc4IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29s cworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWluIERldmVsb3Bt ZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVT UUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbXBvcnQgeyBtYWtlU3R5bGVzIH0gZnJvbSAnQG1hdGVy aWFsLXVpL3N0eWxlcyc7CitpbXBvcnQgUmVhY3QsIHt1c2VDb250ZXh0LCB1c2VDYWxsYmFjaywg dXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JzsKK2ltcG9ydCB7IFF1ZXJ5VG9vbENv bnRleHQsIFF1ZXJ5VG9vbEV2ZW50c0NvbnRleHQgfSBmcm9tICcuLi9RdWVyeVRvb2xDb21wb25l bnQnOworaW1wb3J0IENvZGVNaXJyb3IgZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc3RhdGljL2pz L2NvbXBvbmVudHMvQ29kZU1pcnJvcic7CitpbXBvcnQge1BBTkVMUywgUVVFUllfVE9PTF9FVkVO VFN9IGZyb20gJy4uL1F1ZXJ5VG9vbENvbnN0YW50cyc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICdz b3VyY2VzL3VybF9mb3InOworaW1wb3J0IHsgTGF5b3V0RXZlbnRzQ29udGV4dCwgTEFZT1VUX0VW RU5UUyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9oZWxwZXJzL0xheW91dCc7 CitpbXBvcnQgQ29uZmlybVNhdmVDb250ZW50IGZyb20gJy4uL2RpYWxvZ3MvQ29uZmlybVNhdmVD b250ZW50JzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7CitpbXBvcnQg T3JpZ0NvZGVNaXJyb3IgZnJvbSAnYnVuZGxlZF9jb2RlbWlycm9yJzsKKworY29uc3QgdXNlU3R5 bGVzID0gbWFrZVN0eWxlcygoKT0+KHsKKyAgc3FsOiB7CisgICAgaGVpZ2h0OiAnMTAwJScsCisg IH0KK30pKTsKKworZnVuY3Rpb24gcmVnaXN0ZXJBdXRvY29tcGxldGUoYXBpLCB0cmFuc0lkLCBv bkZhaWx1cmUpIHsKKyAgT3JpZ0NvZGVNaXJyb3IucmVnaXN0ZXJIZWxwZXIoJ2hpbnQnLCAnc3Fs JywgZnVuY3Rpb24gKGVkaXRvcikgeworICAgIHZhciBkYXRhID0gW10sCisgICAgICBkb2MgPSBl ZGl0b3IuZ2V0RG9jKCksCisgICAgICBjdXIgPSBkb2MuZ2V0Q3Vyc29yKCksCisgICAgICAvLyBH ZXQgdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uCisgICAgICBjdXJyZW50X2N1ciA9IGN1ci5j aCwKKyAgICAgIC8vIGZ1bmN0aW9uIGNvbnRleHQKKyAgICAgIGN0eCA9IHsKKyAgICAgICAgZWRp dG9yOiBlZGl0b3IsCisgICAgICAgIC8vIFVSTCBmb3IgYXV0by1jb21wbGV0ZQorICAgICAgICB1 cmw6IHVybF9mb3IoJ3NxbGVkaXRvci5hdXRvY29tcGxldGUnLCB7CisgICAgICAgICAgJ3RyYW5z X2lkJzogdHJhbnNJZCwKKyAgICAgICAgfSksCisgICAgICAgIGRhdGE6IGRhdGEsCisgICAgICAg IC8vIEdldCB0aGUgbGluZSBudW1iZXIgaW4gdGhlIGN1cnNvciBwb3NpdGlvbgorICAgICAgICBj dXJyZW50X2xpbmU6IGN1ci5saW5lLAorICAgICAgICAvKgorICAgICAgICAgKiBSZW5kZXIgZnVu Y3Rpb24gZm9yIGhpbnQgdG8gYWRkIG91ciBvd24gY2xhc3MKKyAgICAgICAgICogYW5kIGljb24g YXMgcGVyIHRoZSBvYmplY3QgdHlwZS4KKyAgICAgICAgICovCisgICAgICAgIGhpbnRfcmVuZGVy OiBmdW5jdGlvbiAoZWx0LCBkYXRhX2FyZywgY3VyX2FyZykgeworICAgICAgICAgIHZhciBlbCA9 IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKTsKKworICAgICAgICAgIHN3aXRjaCAoY3Vy X2FyZy50eXBlKSB7CisgICAgICAgICAgY2FzZSAnZGF0YWJhc2UnOgorICAgICAgICAgICAgZWwu Y2xhc3NOYW1lID0gJ3NxbGVkaXRvci1oaW50IHBnLWljb24tJyArIGN1cl9hcmcudHlwZTsKKyAg ICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgJ2RhdGF0eXBlJzoKKyAgICAgICAgICAg IGVsLmNsYXNzTmFtZSA9ICdzcWxlZGl0b3ItaGludCBpY29uLXR5cGUnOworICAgICAgICAgICAg YnJlYWs7CisgICAgICAgICAgY2FzZSAna2V5d29yZCc6CisgICAgICAgICAgICBlbC5jbGFzc05h bWUgPSAnZmEgZmEta2V5JzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgIGNhc2UgJ3Rh YmxlIGFsaWFzJzoKKyAgICAgICAgICAgIGVsLmNsYXNzTmFtZSA9ICdmYSBmYS1hdCc7CisgICAg ICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgZWwuY2xhc3NO YW1lID0gJ3NxbGVkaXRvci1oaW50IGljb24tJyArIGN1cl9hcmcudHlwZTsKKyAgICAgICAgICB9 CisKKyAgICAgICAgICBlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjdXJf YXJnLnRleHQpKTsKKyAgICAgICAgICBlbHQuYXBwZW5kQ2hpbGQoZWwpOworICAgICAgICB9LAor ICAgICAgfTsKKworICAgIGRhdGEucHVzaChkb2MuZ2V0VmFsdWUoKSk7CisgICAgLy8gR2V0IHRo ZSB0ZXh0IGZyb20gc3RhcnQgdG8gdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLgorICAgIGRh dGEucHVzaCgKKyAgICAgIGRvYy5nZXRSYW5nZSh7CisgICAgICAgIGxpbmU6IDAsCisgICAgICAg IGNoOiAwLAorICAgICAgfSwgeworICAgICAgICBsaW5lOiBjdHguY3VycmVudF9saW5lLAorICAg ICAgICBjaDogY3VycmVudF9jdXIsCisgICAgICB9KQorICAgICk7CisKKyAgICByZXR1cm4gewor ICAgICAgdGhlbjogZnVuY3Rpb24gKGNiKSB7CisgICAgICAgIHZhciBzZWxmX2xvY2FsID0gdGhp czsKKyAgICAgICAgLy8gTWFrZSBhamF4IGNhbGwgdG8gZmluZCB0aGUgYXV0b2NvbXBsZXRlIGRh dGEKKyAgICAgICAgYXBpLnBvc3Qoc2VsZl9sb2NhbC51cmwsIEpTT04uc3RyaW5naWZ5KHNlbGZf bG9jYWwuZGF0YSkpCisgICAgICAgICAgLnRoZW4oKHJlcykgPT4geworICAgICAgICAgICAgdmFy IHJlc3VsdCA9IFtdOworCisgICAgICAgICAgICBfLmVhY2gocmVzLmRhdGEuZGF0YS5yZXN1bHQs IGZ1bmN0aW9uIChvYmosIGtleSkgeworICAgICAgICAgICAgICByZXN1bHQucHVzaCh7CisgICAg ICAgICAgICAgICAgdGV4dDoga2V5LAorICAgICAgICAgICAgICAgIHR5cGU6IG9iai5vYmplY3Rf dHlwZSwKKyAgICAgICAgICAgICAgICByZW5kZXI6IHNlbGZfbG9jYWwuaGludF9yZW5kZXIsCisg ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIC8vIFNvcnQg ZnVuY3Rpb24gdG8gc29ydCB0aGUgc3VnZ2VzdGlvbidzIGFscGhhYmV0aWNhbGx5LgorICAgICAg ICAgICAgcmVzdWx0LnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsKKyAgICAgICAgICAgICAgdmFyIHRl eHRBID0gYS50ZXh0LnRvTG93ZXJDYXNlKCksCisgICAgICAgICAgICAgICAgdGV4dEIgPSBiLnRl eHQudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgICAgICAgaWYgKHRleHRBIDwgdGV4dEIpIC8vc29y dCBzdHJpbmcgYXNjZW5kaW5nCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAg ICAgICBpZiAodGV4dEEgPiB0ZXh0QikKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAg ICAgICAgICAgcmV0dXJuIDA7IC8vZGVmYXVsdCByZXR1cm4gdmFsdWUgKG5vIHNvcnRpbmcpCisg ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgKiBCZWxvdyBsb2dp YyBmaW5kIHRoZSBzdGFydCBhbmQgZW5kIHBvaW50CisgICAgICAgICAgICogdG8gcmVwbGFjZSB0 aGUgc2VsZWN0ZWQgYXV0byBjb21wbGV0ZSBzdWdnZXN0aW9uLgorICAgICAgICAgICAqLworICAg ICAgICAgICAgdmFyIHRva2VuID0gc2VsZl9sb2NhbC5lZGl0b3IuZ2V0VG9rZW5BdChjdXIpLAor ICAgICAgICAgICAgICBzdGFydCwgZW5kLCBzZWFyY2g7CisgICAgICAgICAgICBpZiAodG9rZW4u ZW5kID4gY3VyLmNoKSB7CisgICAgICAgICAgICAgIHRva2VuLmVuZCA9IGN1ci5jaDsKKyAgICAg ICAgICAgICAgdG9rZW4uc3RyaW5nID0gdG9rZW4uc3RyaW5nLnNsaWNlKDAsIGN1ci5jaCAtIHRv a2VuLnN0YXJ0KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHRva2VuLnN0cmlu Zy5tYXRjaCgvXlsuYFx3QF1cdyokLykpIHsKKyAgICAgICAgICAgICAgc2VhcmNoID0gdG9rZW4u c3RyaW5nOworICAgICAgICAgICAgICBzdGFydCA9IHRva2VuLnN0YXJ0OworICAgICAgICAgICAg ICBlbmQgPSB0b2tlbi5lbmQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBz dGFydCA9IGVuZCA9IGN1ci5jaDsKKyAgICAgICAgICAgICAgc2VhcmNoID0gJyc7CisgICAgICAg ICAgICB9CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICogQWRkZWQgMSBpbiB0aGUgc3Rh cnQgcG9zaXRpb24gaWYgc2VhcmNoIHN0cmluZworICAgICAgICAgICAqIHN0YXJ0ZWQgd2l0aCAi LiIgb3IgImAiIGVsc2UgYXV0byBjb21wbGV0ZSBvZiBjb2RlIG1pcnJvcgorICAgICAgICAgICAq IHdpbGwgcmVtb3ZlIHRoZSAiLiIgd2hlbiB1c2VyIHNlbGVjdCBhbnkgc3VnZ2VzdGlvbi4KKyAg ICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChzZWFyY2guY2hhckF0KDApID09ICcuJyB8fCBz ZWFyY2guY2hhckF0KDApID09ICdgYCcpCisgICAgICAgICAgICAgIHN0YXJ0ICs9IDE7CisKKyAg ICAgICAgICAgIGNiKHsKKyAgICAgICAgICAgICAgbGlzdDogcmVzdWx0LAorICAgICAgICAgICAg ICBmcm9tOiB7CisgICAgICAgICAgICAgICAgbGluZTogc2VsZl9sb2NhbC5jdXJyZW50X2xpbmUs CisgICAgICAgICAgICAgICAgY2g6IHN0YXJ0LAorICAgICAgICAgICAgICB9LAorICAgICAgICAg ICAgICB0bzogeworICAgICAgICAgICAgICAgIGxpbmU6IHNlbGZfbG9jYWwuY3VycmVudF9saW5l LAorICAgICAgICAgICAgICAgIGNoOiBlbmQsCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAg ICB9KTsKKyAgICAgICAgICB9KQorICAgICAgICAgIC5jYXRjaCgoZXJyKSA9PiB7CisgICAgICAg ICAgICBvbkZhaWx1cmU/LihlcnIpOworICAgICAgICAgIH0pOworICAgICAgfS5iaW5kKGN0eCks CisgICAgfTsKKyAgfSk7Cit9CisKK2V4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFF1ZXJ5KCkgewor ICBjb25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7CisgIGNvbnN0IGVkaXRvciA9IFJlYWN0LnVz ZVJlZigpOworICBjb25zdCBldmVudEJ1cyA9IHVzZUNvbnRleHQoUXVlcnlUb29sRXZlbnRzQ29u dGV4dCk7CisgIGNvbnN0IHF1ZXJ5VG9vbEN0eCA9IHVzZUNvbnRleHQoUXVlcnlUb29sQ29udGV4 dCk7CisgIGNvbnN0IGxheW91dEV2ZW5CdXMgPSB1c2VDb250ZXh0KExheW91dEV2ZW50c0NvbnRl eHQpOworICBjb25zdCBsYXN0U2F2ZWRUZXh0ID0gUmVhY3QudXNlUmVmKCcnKTsKKyAgY29uc3Qg W21hcmtlZExpbmUsIHNldE1hcmtlZExpbmVdID0gdXNlU3RhdGUoMCk7CisKKyAgY29uc3QgaGln aGxpZ2h0RXJyb3IgPSAoY21PYmosIHJlc3VsdCk9PnsKKyAgICBsZXQgZXJyb3JMaW5lTm8gPSAw LAorICAgICAgc3RhcnRNYXJrZXIgPSAwLAorICAgICAgZW5kTWFya2VyID0gMCwKKyAgICAgIHNl bGVjdGVkTGluZU5vID0gMDsKKworICAgIC8vIFJlbW92ZSBhbHJlYWR5IGV4aXN0aW5nIG1hcmtl cgorICAgIGNtT2JqLnJlbW92ZUxpbmVDbGFzcyhtYXJrZWRMaW5lLCAnd3JhcCcsICdDb2RlTWly cm9yLWFjdGl2ZWxpbmUtYmFja2dyb3VuZCcpOworCisgICAgLy8gSW4gY2FzZSBvZiBzZWxlY3Rp b24gd2UgbmVlZCB0byBmaW5kIHRoZSBhY3R1YWwgbGluZSBubworICAgIGlmIChjbU9iai5nZXRT ZWxlY3Rpb24oKS5sZW5ndGggPiAwKQorICAgICAgc2VsZWN0ZWRMaW5lTm8gPSBjbU9iai5nZXRD dXJzb3IodHJ1ZSkubGluZTsKKworICAgIC8vIEZldGNoIHRoZSBMSU5FIHN0cmluZyB1c2luZyBy ZWdleCBmcm9tIHRoZSByZXN1bHQKKyAgICB2YXIgbGluZSA9IC9MSU5FIChcZCspLy5leGVjKHJl c3VsdCksCisgICAgICAvLyBGZXRjaCB0aGUgQ2hhcmFjdGVyIHN0cmluZyB1c2luZyByZWdleCBm cm9tIHRoZSByZXN1bHQKKyAgICAgIGNoYXIgPSAvQ2hhcmFjdGVyOiAoXGQrKS8uZXhlYyhyZXN1 bHQpOworCisgICAgLy8gSWYgbGluZSBhbmQgY2hhcmFjdGVyIGlzIG51bGwgdGhlbiBubyBuZWVk IHRvIG1hcmsKKyAgICBpZiAobGluZSAhPSBudWxsICYmIGNoYXIgIT0gbnVsbCkgeworICAgICAg ZXJyb3JMaW5lTm8gPSAocGFyc2VJbnQobGluZVsxXSkgLSAxKSArIHNlbGVjdGVkTGluZU5vOwor ICAgICAgdmFyIGVycm9yQ2hhck5vID0gKHBhcnNlSW50KGNoYXJbMV0pIC0gMSk7CisKKyAgICAg IC8qIFdlIG5lZWQgdG8gbG9vcCB0aHJvdWdoIGVhY2ggbGluZSB0aWxsIHRoZSBlcnJvciBsaW5l IGFuZAorICAgICAgICAqIGNvdW50IHRoZSB0b3RhbCBubyBvZiBjaGFyYWN0ZXIgdG8gZmlndXJl IG91dCB0aGUgYWN0dWFsCisgICAgICAgICogc3RhcnRpbmcvZW5kaW5nIG1hcmtlciBwb2ludCBm b3IgdGhlIGluZGl2aWR1YWwgbGluZS4gV2UKKyAgICAgICAgKiBoYXZlIGFsc28gYWRkZWQgMSBw ZXIgbGluZSBmb3IgdGhlICJcbiIgY2hhcmFjdGVyLgorICAgICAgICAqLworICAgICAgdmFyIHBy ZXZMaW5lQ2hhcnMgPSAwOworICAgICAgZm9yIChsZXQgaSA9IHNlbGVjdGVkTGluZU5vID4gMCA/ IHNlbGVjdGVkTGluZU5vIDogMDsgaSA8IGVycm9yTGluZU5vOyBpKyspCisgICAgICAgIHByZXZM aW5lQ2hhcnMgKz0gY21PYmouZ2V0TGluZShpKS5sZW5ndGggKyAxOworCisgICAgICAvKiBNYXJr ZXIgc3RhcnRpbmcgcG9pbnQgZm9yIHRoZSBpbmRpdmlkdWFsIGxpbmUgaXMKKyAgICAgICAgKiBl cXVhbCB0byBlcnJvciBjaGFyYWN0ZXIgaW5kZXggbWludXMgdG90YWwgbm8gb2YKKyAgICAgICAg KiBjaGFyYWN0ZXIgdGlsbCB0aGUgZXJyb3IgbGluZSBzdGFydHMuCisgICAgICAgICovCisgICAg ICBzdGFydE1hcmtlciA9IGVycm9yQ2hhck5vIC0gcHJldkxpbmVDaGFyczsKKworICAgICAgLy8g RmluZCB0aGUgbmV4dCBzcGFjZSBmcm9tIHRoZSBjaGFyYWN0ZXIgb3IgZW5kIG9mIGxpbmUKKyAg ICAgIHZhciBlcnJvckxpbmUgPSBjbU9iai5nZXRMaW5lKGVycm9yTGluZU5vKTsKKworICAgICAg aWYgKF8uaXNVbmRlZmluZWQoZXJyb3JMaW5lKSkgcmV0dXJuOworICAgICAgZW5kTWFya2VyID0g ZXJyb3JMaW5lLmluZGV4T2YoJyAnLCBzdGFydE1hcmtlcik7CisgICAgICBpZiAoZW5kTWFya2Vy IDwgMCkKKyAgICAgICAgZW5kTWFya2VyID0gZXJyb3JMaW5lLmxlbmd0aDsKKworICAgICAgLy8g TWFyayB0aGUgZXJyb3IgdGV4dAorICAgICAgY21PYmoubWFya1RleHQoeworICAgICAgICBsaW5l OiBlcnJvckxpbmVObywKKyAgICAgICAgY2g6IHN0YXJ0TWFya2VyLAorICAgICAgfSwgeworICAg ICAgICBsaW5lOiBlcnJvckxpbmVObywKKyAgICAgICAgY2g6IGVuZE1hcmtlciwKKyAgICAgIH0s IHsKKyAgICAgICAgY2xhc3NOYW1lOiAnc3FsLWVkaXRvci1tYXJrJywKKyAgICAgIH0pOworCisg ICAgICBzZXRNYXJrZWRMaW5lKGVycm9yTGluZU5vKTsKKyAgICAgIGNtT2JqLmFkZExpbmVDbGFz cyhlcnJvckxpbmVObywgJ3dyYXAnLCAnQ29kZU1pcnJvci1hY3RpdmVsaW5lLWJhY2tncm91bmQn KTsKKyAgICB9CisgIH07CisKKyAgY29uc3QgdHJpZ2dlckV4ZWN1dGlvbiA9IChleHBsYWluT2Jq ZWN0KT0+eworICAgIGlmKHF1ZXJ5VG9vbEN0eC5wYXJhbXMuaXNfcXVlcnlfdG9vbCkgeworICAg ICAgbGV0IHF1ZXJ5ID0gZWRpdG9yLmN1cnJlbnQ/LmdldFNlbGVjdGlvbigpIHx8IGVkaXRvci5j dXJyZW50Py5nZXRWYWx1ZSgpIHx8ICcnOworICAgICAgaWYocXVlcnkpIHsKKyAgICAgICAgZXZl bnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLkVYRUNVVElPTl9TVEFSVCwgcXVlcnks IGV4cGxhaW5PYmplY3QpOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBldmVudEJ1cy5m aXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuRVhFQ1VUSU9OX1NUQVJULCBudWxsLCBudWxsKTsK KyAgICB9CisgIH07CisKKyAgdXNlRWZmZWN0KCgpPT57CisgICAgbGF5b3V0RXZlbkJ1cy5yZWdp c3Rlckxpc3RlbmVyKExBWU9VVF9FVkVOVFMuQUNUSVZFLCAoY3VycmVudFRhYklkKT0+eworICAg ICAgY3VycmVudFRhYklkID09IFBBTkVMUy5RVUVSWSAmJiBlZGl0b3IuY3VycmVudC5mb2N1cygp OworICAgIH0pOworCisgICAgcmVnaXN0ZXJBdXRvY29tcGxldGUocXVlcnlUb29sQ3R4LmFwaSwg cXVlcnlUb29sQ3R4LnBhcmFtcy50cmFuc19pZCwgKGVycik9PnsKKyAgICAgIGV2ZW50QnVzLmZp cmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5IQU5ETEVfQVBJX0VSUk9SLCBlcnIpOworICAgIH0p OworCisgICAgZXZlbnRCdXMucmVnaXN0ZXJMaXN0ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5UUklH R0VSX0VYRUNVVElPTiwgdHJpZ2dlckV4ZWN1dGlvbik7CisKKyAgICBldmVudEJ1cy5yZWdpc3Rl ckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLkhJR0hMSUdIVF9FUlJPUiwgKHJlc3VsdCk9PnsK KyAgICAgIGhpZ2hsaWdodEVycm9yKGVkaXRvci5jdXJyZW50LCByZXN1bHQpOworICAgIH0pOwor CisgICAgZXZlbnRCdXMucmVnaXN0ZXJMaXN0ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5MT0FEX0ZJ TEUsIChmaWxlTmFtZSk9PnsKKyAgICAgIHF1ZXJ5VG9vbEN0eC5hcGkucG9zdCh1cmxfZm9yKCdz cWxlZGl0b3IubG9hZF9maWxlJyksIHsKKyAgICAgICAgJ2ZpbGVfbmFtZSc6IGRlY29kZVVSSShm aWxlTmFtZSksCisgICAgICB9KS50aGVuKChyZXMpPT57CisgICAgICAgIGVkaXRvci5jdXJyZW50 LnNldFZhbHVlKHJlcy5kYXRhKTsKKyAgICAgICAgbGFzdFNhdmVkVGV4dC5jdXJyZW50ID0gcmVz LmRhdGE7CisgICAgICAgIGV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5MT0FE X0ZJTEVfRE9ORSwgZmlsZU5hbWUsIHRydWUpOworICAgICAgfSkuY2F0Y2goKGVycik9PnsKKyAg ICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLkxPQURfRklMRV9ET05F LCBudWxsLCBmYWxzZSk7CisgICAgICAgIGV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VW RU5UUy5IQU5ETEVfQVBJX0VSUk9SLCBlcnIpOworICAgICAgfSk7CisgICAgfSk7CisKKyAgICBl dmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlNBVkVfRklMRSwgKGZp bGVOYW1lKT0+eworICAgICAgbGV0IGVkaXRvclZhbHVlID0gZWRpdG9yLmN1cnJlbnQuZ2V0VmFs dWUoKTsKKyAgICAgIHF1ZXJ5VG9vbEN0eC5hcGkucG9zdCh1cmxfZm9yKCdzcWxlZGl0b3Iuc2F2 ZV9maWxlJyksIHsKKyAgICAgICAgJ2ZpbGVfbmFtZSc6IGRlY29kZVVSSShmaWxlTmFtZSksCisg ICAgICAgICdmaWxlX2NvbnRlbnQnOiBlZGl0b3IuY3VycmVudC5nZXRWYWx1ZSgpLAorICAgICAg fSkudGhlbigoKT0+eworICAgICAgICBsYXN0U2F2ZWRUZXh0LmN1cnJlbnQgPSBlZGl0b3JWYWx1 ZTsKKyAgICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlNBVkVfRklM RV9ET05FLCBmaWxlTmFtZSwgdHJ1ZSk7CisgICAgICB9KS5jYXRjaCgoZXJyKT0+eworICAgICAg ICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuU0FWRV9GSUxFX0RPTkUsIG51 bGwsIGZhbHNlKTsKKyAgICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRT LkhBTkRMRV9BUElfRVJST1IsIGVycik7CisgICAgICB9KTsKKyAgICB9KTsKKworICAgIGV2ZW50 QnVzLnJlZ2lzdGVyTGlzdGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuRURJVE9SX0VYRUNfQ01ELCAo Y21kPScnKT0+eworICAgICAgZWRpdG9yLmN1cnJlbnQ/LmV4ZWNDb21tYW5kKGNtZCk7CisgICAg fSk7CisgICAgZXZlbnRCdXMucmVnaXN0ZXJMaXN0ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5DT1BZ X1RPX0VESVRPUiwgKHRleHQpPT57CisgICAgICBlZGl0b3IuY3VycmVudD8uc2V0VmFsdWUodGV4 dCk7CisgICAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuRk9DVVNfUEFO RUwsIFBBTkVMUy5RVUVSWSk7CisgICAgICBzZXRUaW1lb3V0KCgpPT57CisgICAgICAgIGVkaXRv ci5jdXJyZW50Py5mb2N1cygpOworICAgICAgICBlZGl0b3IuY3VycmVudD8uc2V0Q3Vyc29yKGVk aXRvci5jdXJyZW50LmxpbmVDb3VudCgpLCAwKTsKKyAgICAgIH0sIDI1MCk7CisgICAgfSk7Cisg ICAgZXZlbnRCdXMucmVnaXN0ZXJMaXN0ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5FRElUT1JfRklO RF9SRVBMQUNFLCAocmVwbGFjZT1mYWxzZSk9PnsKKyAgICAgIGVkaXRvci5jdXJyZW50Py5mb2N1 cygpOworICAgICAgZWRpdG9yLmN1cnJlbnQ/LnRyaWdnZXJPbktleURvd24oCisgICAgICAgIG5l dyBLZXlib2FyZEV2ZW50KCdrZXlkb3duJywgeworICAgICAgICAgIGtleUNvZGU6IDcwLCBtZXRh S2V5OiB0cnVlLCBjdHJsS2V5OiBmYWxzZSwgc2hpZnRLZXk6IGZhbHNlLCBhbHRLZXk6IHJlcGxh Y2UKKyAgICAgICAgfSkKKyAgICAgICk7CisgICAgfSk7CisgICAgZXZlbnRCdXMucmVnaXN0ZXJM aXN0ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5FRElUT1JfU0VUX1NRTCwgKHZhbHVlLCBmb2N1cz10 cnVlKT0+eworICAgICAgZm9jdXMgJiYgZWRpdG9yLmN1cnJlbnQ/LmZvY3VzKCk7CisgICAgICBl ZGl0b3IuY3VycmVudD8uc2V0VmFsdWUodmFsdWUpOworICAgIH0pOworICAgIGV2ZW50QnVzLnJl Z2lzdGVyTGlzdGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuVFJJR0dFUl9RVUVSWV9DSEFOR0UsICgp PT57CisgICAgICBjaGFuZ2UoKTsKKyAgICB9KTsKKyAgICBldmVudEJ1cy5yZWdpc3Rlckxpc3Rl bmVyKFFVRVJZX1RPT0xfRVZFTlRTLldBUk5fU0FWRV9URVhUX0NMT1NFLCAoKT0+eworICAgICAg aWYoIWlzRGlydHkoKSB8fCAhcXVlcnlUb29sQ3R4LnByZWZlcmVuY2VzPy5zcWxlZGl0b3IucHJv bXB0X3NhdmVfcXVlcnlfY2hhbmdlcykgeworICAgICAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVF UllfVE9PTF9FVkVOVFMuV0FSTl9UWE5fQ0xPU0UpOworICAgICAgICByZXR1cm47CisgICAgICB9 CisgICAgICBxdWVyeVRvb2xDdHgubW9kYWwuc2hvd01vZGFsKGdldHRleHQoJ1NhdmUgcXVlcnkg Y2hhbmdlcz8nKSwgKGNsb3NlTW9kYWwpPT4oCisgICAgICAgIDxDb25maXJtU2F2ZUNvbnRlbnQK KyAgICAgICAgICBjbG9zZU1vZGFsPXtjbG9zZU1vZGFsfQorICAgICAgICAgIHRleHQ9e2dldHRl eHQoJ1RoZSBxdWVyeSB0ZXh0IGhhcyBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIGNoYW5n ZXM/Jyl9CisgICAgICAgICAgb25Eb250U2F2ZT17KCk9PnsKKyAgICAgICAgICAgIGV2ZW50QnVz LmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5XQVJOX1RYTl9DTE9TRSk7CisgICAgICAgICAg fX0KKyAgICAgICAgICBvblNhdmU9eygpPT57CisgICAgICAgICAgICBldmVudEJ1cy5yZWdpc3Rl ckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlNBVkVfRklMRV9ET05FLCAoX2YsIHN1Y2Nlc3Mp PT57CisgICAgICAgICAgICAgIGlmKHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBldmVudEJ1 cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuV0FSTl9UWE5fQ0xPU0UpOworICAgICAgICAg ICAgICB9CisgICAgICAgICAgICB9LCB0cnVlKTsKKyAgICAgICAgICAgIGV2ZW50QnVzLmZpcmVF dmVudChRVUVSWV9UT09MX0VWRU5UUy5UUklHR0VSX1NBVkVfRklMRSk7CisgICAgICAgICAgfX0K KyAgICAgICAgLz4KKyAgICAgICkpOworICAgIH0pOworICAgIGV2ZW50QnVzLnJlZ2lzdGVyTGlz dGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuVFJJR0dFUl9GT1JNQVRfU1FMLCAoKT0+eworICAgICAg bGV0IHNlbGVjdGlvbiA9IHRydWUsIHNxbCA9IGVkaXRvci5jdXJyZW50Py5nZXRTZWxlY3Rpb24o KTsKKyAgICAgIGlmKHNxbCA9PSAnJykgeworICAgICAgICBzcWwgPSBlZGl0b3IuY3VycmVudC5n ZXRWYWx1ZSgpOworICAgICAgICBzZWxlY3Rpb24gPSBmYWxzZTsKKyAgICAgIH0KKyAgICAgIHF1 ZXJ5VG9vbEN0eC5hcGkucG9zdCh1cmxfZm9yKCdzcWwuZm9ybWF0JyksIHsKKyAgICAgICAgJ3Nx bCc6IHNxbCwKKyAgICAgIH0pLnRoZW4oKHJlcyk9PnsKKyAgICAgICAgaWYoc2VsZWN0aW9uKSB7 CisgICAgICAgICAgZWRpdG9yLmN1cnJlbnQucmVwbGFjZVNlbGVjdGlvbihyZXMuZGF0YS5zcWws ICdhcm91bmQnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBlZGl0b3IuY3VycmVudC5z ZXRWYWx1ZShyZXMuZGF0YS5zcWwpOworICAgICAgICB9CisgICAgICAgIGxhc3RTYXZlZFRleHQu Y3VycmVudCA9IGVkaXRvci5jdXJyZW50LmdldFZhbHVlKCk7CisgICAgICB9KS5jYXRjaCgoKT0+ ey8qIGZhaWx1cmUgc2hvdWxkIGJlIGlnbm9yZWQgKi99KTsKKyAgICB9KTsKKworICAgIGVkaXRv ci5jdXJyZW50LmZvY3VzKCk7CisgIH0sIFtdKTsKKworICBjb25zdCBpc0RpcnR5ID0gKCk9Pmxh c3RTYXZlZFRleHQuY3VycmVudCAhPT0gZWRpdG9yLmN1cnJlbnQuZ2V0VmFsdWUoKTsKKworICBj b25zdCBjdXJzb3JBY3Rpdml0eSA9IHVzZUNhbGxiYWNrKChjbU9iaik9PnsKKyAgICBjb25zdCBj ID0gY21PYmouZ2V0Q3Vyc29yKCk7CisgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xf RVZFTlRTLkNVUlNPUl9BQ1RJVklUWSwgW2MubGluZSsxLCBjLmNoKzFdKTsKKyAgfSwgW10pOwor CisgIGNvbnN0IGNoYW5nZSA9IHVzZUNhbGxiYWNrKCgpPT57CisgICAgZXZlbnRCdXMuZmlyZUV2 ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlFVRVJZX0NIQU5HRUQsIGlzRGlydHkoKSk7CisgIH0sIFtd KTsKKworICByZXR1cm4gPENvZGVNaXJyb3IKKyAgICBjdXJyRWRpdG9yPXsob2JqKT0+eworICAg ICAgZWRpdG9yLmN1cnJlbnQ9b2JqOworICAgIH19CisgICAgdmFsdWU9eycnfQorICAgIGNsYXNz TmFtZT17Y2xhc3Nlcy5zcWx9CisgICAgZXZlbnRzPXt7CisgICAgICAnZm9jdXMnOiBjdXJzb3JB Y3Rpdml0eSwKKyAgICAgICdjdXJzb3JBY3Rpdml0eSc6IGN1cnNvckFjdGl2aXR5LAorICAgICAg J2NoYW5nZSc6IGNoYW5nZSwKKyAgICB9fQorICAgIGRpc2FibGVkPXshcXVlcnlUb29sQ3R4LnBh cmFtcy5pc19xdWVyeV90b29sfQorICAgIGF1dG9jb21wbGV0ZT17dHJ1ZX0KKyAgLz47Cit9CmRp ZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVu dHMvc2VjdGlvbnMvUXVlcnlIaXN0b3J5LmpzeCBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci9zdGF0aWMvanMvY29tcG9uZW50cy9zZWN0aW9ucy9RdWVyeUhpc3RvcnkuanN4Cm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMC4uMGQxNWVmYWU0Ci0tLSAvZGV2L251bGwKKysr IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9jb21wb25lbnRzL3NlY3Rp b25zL1F1ZXJ5SGlzdG9yeS5qc3gKQEAgLTAsMCArMSw0ODkgQEAKKy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0Fk bWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAy MiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxl YXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCB7IG1h a2VTdHlsZXMgfSBmcm9tICdAbWF0ZXJpYWwtdWkvc3R5bGVzJzsKK2ltcG9ydCBSZWFjdCBmcm9t ICdyZWFjdCc7CitpbXBvcnQgeyBQQU5FTFMsIFFVRVJZX1RPT0xfRVZFTlRTIH0gZnJvbSAnLi4v UXVlcnlUb29sQ29uc3RhbnRzJzsKK2ltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4 dCc7CitpbXBvcnQgXyBmcm9tICdsb2Rhc2gnOworaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7Citp bXBvcnQgeyBCb3gsIEdyaWQsIExpc3QsIExpc3RJdGVtLCBMaXN0U3ViaGVhZGVyIH0gZnJvbSAn QG1hdGVyaWFsLXVpL2NvcmUnOworaW1wb3J0IHVybF9mb3IgZnJvbSAnc291cmNlcy91cmxfZm9y JzsKK2ltcG9ydCB7IFF1ZXJ5VG9vbENvbnRleHQsIFF1ZXJ5VG9vbEV2ZW50c0NvbnRleHQgfSBm cm9tICcuLi9RdWVyeVRvb2xDb21wb25lbnQnOworaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQn OworaW1wb3J0IFBsYXlBcnJvd1JvdW5kZWRJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Q bGF5QXJyb3dSb3VuZGVkJzsKK2ltcG9ydCBBc3Nlc3NtZW50Um91bmRlZEljb24gZnJvbSAnQG1h dGVyaWFsLXVpL2ljb25zL0Fzc2Vzc21lbnRSb3VuZGVkJzsKK2ltcG9ydCBFeHBsaWNpdFJvdW5k ZWRJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9FeHBsaWNpdFJvdW5kZWQnOworaW1wb3J0 IHsgU2F2ZURhdGFJY29uLCBDb21taXRJY29uLCBSb2xsYmFja0ljb24gfSBmcm9tICcuLi8uLi8u Li8uLi8uLi8uLi9zdGF0aWMvanMvY29tcG9uZW50cy9FeHRlcm5hbEljb24nOworaW1wb3J0IHsg SW5wdXRTd2l0Y2ggfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvY29tcG9uZW50 cy9Gb3JtQ29tcG9uZW50cyc7CitpbXBvcnQgQ29kZU1pcnJvciBmcm9tICcuLi8uLi8uLi8uLi8u Li8uLi9zdGF0aWMvanMvY29tcG9uZW50cy9Db2RlTWlycm9yJzsKK2ltcG9ydCB7IERlZmF1bHRC dXR0b24gfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvY29tcG9uZW50cy9CdXR0 b25zJzsKK2ltcG9ydCBjb3B5IGZyb20gJ2NvcHktdG8tY2xpcGJvYXJkJzsKK2ltcG9ydCB7IHVz ZURlbGF5ZWRDYWxsZXIgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvY3VzdG9t X2hvb2tzJzsKK2ltcG9ydCBOb3RpZmllciBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMv anMvaGVscGVycy9Ob3RpZmllcic7CitpbXBvcnQgTG9hZGVyIGZyb20gJ3NvdXJjZXMvY29tcG9u ZW50cy9Mb2FkZXInOworaW1wb3J0IHsgTGF5b3V0RXZlbnRzQ29udGV4dCwgTEFZT1VUX0VWRU5U UyB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9oZWxwZXJzL0xheW91dCc7Citp bXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnOworaW1wb3J0IHsgcGFyc2VBcGlFcnJv ciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9hcGlfaW5zdGFuY2UnOworCitj b25zdCB1c2VTdHlsZXMgPSBtYWtlU3R5bGVzKCh0aGVtZSk9Pih7CisgIGxlZnRSb290OiB7Cisg ICAgZGlzcGxheTogJ2ZsZXgnLAorICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLAorICAgIGJh Y2tncm91bmRDb2xvcjogdGhlbWUub3RoZXJWYXJzLmVkaXRvclRvb2xiYXJCZywKKyAgICAuLi50 aGVtZS5taXhpbnMucGFuZWxCb3JkZXIucmlnaHQsCisgIH0sCisgIGxpc3RSb290OiB7CisgICAg Li4udGhlbWUubWl4aW5zLnBhbmVsQm9yZGVyLnRvcCwKKyAgfSwKKyAgbGlzdFN1YmhlYWRlcjog eworICAgIHBhZGRpbmc6ICcwLjI1cmVtJywKKyAgICBsaW5lSGVpZ2h0OiAndW5zZXQnLAorICAg IGNvbG9yOiB0aGVtZS5wYWxldHRlLnRleHQubXV0ZWQsCisgICAgYmFja2dyb3VuZENvbG9yOiB0 aGVtZS5wYWxldHRlLmJhY2tncm91bmQuZGVmYXVsdCwKKyAgICAuLi50aGVtZS5taXhpbnMucGFu ZWxCb3JkZXIuYm90dG9tLAorICAgIC4uLnRoZW1lLm1peGlucy5mb250U291cmNlQ29kZSwKKyAg fSwKKyAgcmVtb3ZlUGFkZGluZzogeworICAgIHBhZGRpbmc6IDAsCisgIH0sCisgIGZvbnRTb3Vy Y2VDb2RlOnsKKyAgICAuLi50aGVtZS5taXhpbnMuZm9udFNvdXJjZUNvZGUsCisgICAgdXNlclNl bGVjdDogJ3RleHQnLAorICB9LAorICBpdGVtRXJyb3I6IHsKKyAgICBiYWNrZ3JvdW5kQ29sb3I6 IHRoZW1lLnBhbGV0dGUuZXJyb3IubGlnaHQsCisgICAgJyYuTXVpLXNlbGVjdGVkJzogeworICAg ICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS5wYWxldHRlLmVycm9yLmxpZ2h0LAorICAgICAgJyY6 aG92ZXInOiB7CisgICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5lcnJvci5s aWdodCwKKyAgICAgIH0KKyAgICB9CisgIH0sCisgIGRldGFpbHNRdWVyeTogeworICAgIG1hcmdp blRvcDogJzAuNXJlbScsCisgICAgLi4udGhlbWUubWl4aW5zLnBhbmVsQm9yZGVyLmFsbCwKKyAg fSwKKyAgY29weUJ0bjogeworICAgIGJvcmRlclJhZGl1czogMCwKKyAgICBwYWRkaW5nTGVmdDog JzhweCcsCisgICAgcGFkZGluZ1JpZ2h0OiAnOHB4JywKKyAgICBib3JkZXJUb3A6ICdub25lJywK KyAgICBib3JkZXJMZWZ0OiAnbm9uZScsCisgICAgYm9yZGVyQ29sb3I6IHRoZW1lLm90aGVyVmFy cy5ib3JkZXJDb2xvciwKKyAgICBmb250U2l6ZTogJzEzcHgnLAorICB9LAorICBpbmZvSGVhZGVy OiB7CisgICAgZm9udFNpemU6ICcxM3B4JywKKyAgICBwYWRkaW5nOiAnMC41cmVtJywKKyAgICBi YWNrZ3JvdW5kQ29sb3I6IHRoZW1lLm90aGVyVmFycy5lZGl0b3JUb29sYmFyQmcsCisgIH0sCisg IHJlbW92ZUJ0bk1hcmdpbjogeworICAgIG1hcmdpbkxlZnQ6ICcwLjI1cmVtJywKKyAgfQorfSkp OworCitleHBvcnQgY29uc3QgUXVlcnlTb3VyY2VzID0geworICBFWEVDVVRFOiB7CisgICAgSUNP Tl9DU1NfQ0xBU1M6ICdmYSBmYS1wbGF5JywKKyAgfSwKKyAgRVhQTEFJTjogeworICAgIElDT05f Q1NTX0NMQVNTOiAnZmEgZmEtaGFuZC1wb2ludGVyJywKKyAgfSwKKyAgRVhQTEFJTl9BTkFMWVpF OiB7CisgICAgSUNPTl9DU1NfQ0xBU1M6ICdmYSBmYS1saXN0LWFsdCcsCisgIH0sCisgIENPTU1J VDogeworICAgIElDT05fQ1NTX0NMQVNTOiAncGctZm9udC1pY29uIGljb24tY29tbWl0JywKKyAg fSwKKyAgUk9MTEJBQ0s6IHsKKyAgICBJQ09OX0NTU19DTEFTUzogJ3BnLWZvbnQtaWNvbiBpY29u LXJvbGxiYWNrJywKKyAgfSwKKyAgU0FWRV9EQVRBOiB7CisgICAgSUNPTl9DU1NfQ0xBU1M6ICdw Zy1mb250LWljb24gaWNvbi1zYXZlX2RhdGFfY2hhbmdlcycsCisgIH0sCisgIFZJRVdfREFUQTog eworICAgIElDT05fQ1NTX0NMQVNTOiAncGctZm9udC1pY29uIGljb24tdmlld19kYXRhJywKKyAg fSwKK307CisKKworY2xhc3MgUXVlcnlIaXN0b3J5VXRpbHMgeworICBjb25zdHJ1Y3RvcigpIHsK KyAgICB0aGlzLl9lbnRyaWVzID0gW107CisgICAgdGhpcy5zaG93SW50ZXJuYWwgPSB0cnVlOwor ICB9CisKKyAgZGF0ZUFzR3JvdXBLZXkoZGF0ZSkgeworICAgIHJldHVybiBtb21lbnQoZGF0ZSku Zm9ybWF0KCdZWVlZIE1NIEREJyk7CisgIH0KKworICBnZXRJdGVtS2V5KGVudHJ5KSB7CisgICAg cmV0dXJuIHRoaXMuZGF0ZUFzR3JvdXBLZXkoZW50cnkuc3RhcnRfdGltZSkgKyB0aGlzLmZvcm1h dEVudHJ5RGF0ZShlbnRyeS5zdGFydF90aW1lKSArIChlbnRyeS5zdWJLZXkgPz8gJycpOworICB9 CisKKyAgZ2V0RGF0ZUZvcm1hdHRlZChkYXRlKSB7CisgICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVE YXRlU3RyaW5nKCk7CisgIH0KKworICBmb3JtYXRFbnRyeURhdGUoZGF0ZSkgeworICAgIHJldHVy biBtb21lbnQoZGF0ZSkuZm9ybWF0KCdISDptbTpzcycpOworICB9CisKKyAgaXNEYXlzQmVmb3Jl KGRhdGUsIGJlZm9yZSkgeworICAgIHJldHVybiAoCisgICAgICB0aGlzLmdldERhdGVGb3JtYXR0 ZWQoZGF0ZSkgPT09CisgICAgICB0aGlzLmdldERhdGVGb3JtYXR0ZWQobW9tZW50KCkuc3VidHJh Y3QoYmVmb3JlLCAnZGF5cycpLnRvRGF0ZSgpKQorICAgICk7CisgIH0KKworICBnZXREYXRlUHJl Zml4KGRhdGUpIHsKKyAgICBsZXQgcHJlZml4ID0gJyc7CisgICAgaWYgKHRoaXMuaXNEYXlzQmVm b3JlKGRhdGUsIDApKSB7CisgICAgICBwcmVmaXggPSAnVG9kYXkgLSAnOworICAgIH0gZWxzZSBp ZiAodGhpcy5pc0RheXNCZWZvcmUoZGF0ZSwgMSkpIHsKKyAgICAgIHByZWZpeCA9ICdZZXN0ZXJk YXkgLSAnOworICAgIH0KKyAgICByZXR1cm4gcHJlZml4OworICB9CisKKyAgYWRkRW50cnkoZW50 cnkpIHsKKyAgICBlbnRyeS5ncm91cEtleSA9IHRoaXMuZGF0ZUFzR3JvdXBLZXkoZW50cnkuc3Rh cnRfdGltZSk7CisgICAgZW50cnkuaXRlbUtleSA9IHRoaXMuZ2V0SXRlbUtleShlbnRyeSk7Cisg ICAgbGV0IGV4aXN0RW50cnkgPSBfLmZpbmQodGhpcy5fZW50cmllcywgKGUpPT5lLml0ZW1LZXk9 PWVudHJ5Lml0ZW1LZXkpOworICAgIGlmKGV4aXN0RW50cnkpIHsKKyAgICAgIGVudHJ5Lml0ZW1L ZXkgPSB0aGlzLmdldEl0ZW1LZXkoZW50cnkpICsgXy51bmlxdWVJZCgpOworICAgIH0KKyAgICBs ZXQgaW5zZXJ0SW5kZXggPSBfLnNvcnRlZEluZGV4QnkodGhpcy5fZW50cmllcywgZW50cnksIChl KT0+ZS5pdGVtS2V5KTsKKyAgICB0aGlzLl9lbnRyaWVzID0gWworICAgICAgLi4udGhpcy5fZW50 cmllcy5zbGljZSgwLCBpbnNlcnRJbmRleCksCisgICAgICBlbnRyeSwKKyAgICAgIC4uLnRoaXMu X2VudHJpZXMuc2xpY2UoaW5zZXJ0SW5kZXgpLAorICAgIF07CisgIH0KKworICBnZXRFbnRyaWVz KCkgeworICAgIGlmKCF0aGlzLnNob3dJbnRlcm5hbCkgeworICAgICAgcmV0dXJuIHRoaXMuX2Vu dHJpZXMuZmlsdGVyKChlKT0+IWUuaXNfcGdhZG1pbl9xdWVyeSk7CisgICAgfQorICAgIHJldHVy biB0aGlzLl9lbnRyaWVzOworICB9CisKKyAgZ2V0RW50cnkoaXRlbUtleSkgeworICAgIHJldHVy biBfLmZpbmQodGhpcy5nZXRFbnRyaWVzKCksIChlKT0+ZS5pdGVtS2V5PT1pdGVtS2V5KTsKKyAg fQorCisgIGdldEdyb3VwSGVhZGVyKGVudHJ5KSB7CisgICAgcmV0dXJuIHRoaXMuZ2V0RGF0ZVBy ZWZpeChlbnRyeS5zdGFydF90aW1lKSt0aGlzLmdldERhdGVGb3JtYXR0ZWQoZW50cnkuc3RhcnRf dGltZSk7CisgIH0KKworICBnZXRHcm91cHMoKSB7CisgICAgcmV0dXJuIF8uc29ydGVkVW5pcUJ5 KHRoaXMuZ2V0RW50cmllcygpLm1hcCgoZSk9PltlLmdyb3VwS2V5LCB0aGlzLmdldEdyb3VwSGVh ZGVyKGUpXSksIChnKT0+Z1swXSkucmV2ZXJzZSgpOworICB9CisKKyAgZ2V0R3JvdXBFbnRyaWVz KGdyb3VwS2V5KSB7CisgICAgcmV0dXJuIHRoaXMuZ2V0RW50cmllcygpLmZpbHRlcigoZSk9PmUu Z3JvdXBLZXk9PWdyb3VwS2V5KS5yZXZlcnNlKCk7CisgIH0KKworICBnZXROZXh0SXRlbUtleShj dXJyS2V5KSB7CisgICAgbGV0IG5leHRJbmRleCA9IHRoaXMuZ2V0RW50cmllcygpLmxlbmd0aC0x OworICAgIGlmKGN1cnJLZXkpIHsKKyAgICAgIGxldCBjdXJySW5kZXggPSBfLmZpbmRJbmRleCh0 aGlzLmdldEVudHJpZXMoKSwgKGUpPT5lLml0ZW1LZXk9PWN1cnJLZXkpOworICAgICAgaWYoY3Vy ckluZGV4ID09IDApIHsKKyAgICAgICAgbmV4dEluZGV4ID0gY3VyckluZGV4OworICAgICAgfSBl bHNlIHsKKyAgICAgICAgbmV4dEluZGV4ID0gY3VyckluZGV4IC0gMTsKKyAgICAgIH0KKyAgICB9 CisgICAgcmV0dXJuIHRoaXMuZ2V0RW50cmllcygpW25leHRJbmRleF0/Lml0ZW1LZXk7CisgIH0K KworICBnZXRQcmV2SXRlbUtleShjdXJyS2V5KSB7CisgICAgbGV0IG5leHRJbmRleCA9IHRoaXMu Z2V0RW50cmllcygpLmxlbmd0aC0xOworICAgIGlmKGN1cnJLZXkpIHsKKyAgICAgIGxldCBjdXJy SW5kZXggPSBfLmZpbmRJbmRleCh0aGlzLmdldEVudHJpZXMoKSwgKGUpPT5lLml0ZW1LZXk9PWN1 cnJLZXkpOworICAgICAgaWYoY3VyckluZGV4ID09IHRoaXMuZ2V0RW50cmllcygpLmxlbmd0aC0x KSB7CisgICAgICAgIG5leHRJbmRleCA9IGN1cnJJbmRleDsKKyAgICAgIH0gZWxzZSB7CisgICAg ICAgIG5leHRJbmRleCA9IGN1cnJJbmRleCArIDE7CisgICAgICB9CisgICAgfQorICAgIHJldHVy biB0aGlzLmdldEVudHJpZXMoKVtuZXh0SW5kZXhdPy5pdGVtS2V5OworICB9CisKKyAgY2xlYXIo aXRlbUtleSkgeworICAgIGlmKGl0ZW1LZXkpIHsKKyAgICAgIGxldCBuZXh0S2V5ID0gdGhpcy5n ZXROZXh0SXRlbUtleShpdGVtS2V5KTsKKyAgICAgIGxldCByZW1vdmVJZHggPSBfLmZpbmRJbmRl eCh0aGlzLl9lbnRyaWVzLCAoZSk9PmUuaXRlbUtleT09aXRlbUtleSk7CisgICAgICB0aGlzLl9l bnRyaWVzLnNwbGljZShyZW1vdmVJZHgsIDEpOworICAgICAgcmV0dXJuIG5leHRLZXk7CisgICAg fSBlbHNlIHsKKyAgICAgIHRoaXMuX2VudHJpZXMgPSBbXTsKKyAgICB9CisgIH0KKworICBzaXpl KCkgeworICAgIHJldHVybiB0aGlzLl9lbnRyaWVzLmxlbmd0aDsKKyAgfQorfQorCitmdW5jdGlv biBRdWVyeVNvdXJjZUljb24oe3NvdXJjZX0pIHsKKyAgc3dpdGNoKEpTT04uc3RyaW5naWZ5KHNv dXJjZSkpIHsKKyAgY2FzZSBKU09OLnN0cmluZ2lmeShRdWVyeVNvdXJjZXMuRVhFQ1VURSk6Cisg ICAgcmV0dXJuIDxQbGF5QXJyb3dSb3VuZGVkSWNvbiBzdHlsZT17e21hcmdpbkxlZnQ6ICctNHB4 J319Lz47CisgIGNhc2UgSlNPTi5zdHJpbmdpZnkoUXVlcnlTb3VyY2VzLkVYUExBSU4pOgorICAg IHJldHVybiA8RXhwbGljaXRSb3VuZGVkSWNvbi8+OworICBjYXNlIEpTT04uc3RyaW5naWZ5KFF1 ZXJ5U291cmNlcy5FWFBMQUlOX0FOQUxZWkUpOgorICAgIHJldHVybiA8QXNzZXNzbWVudFJvdW5k ZWRJY29uLz47CisgIGNhc2UgSlNPTi5zdHJpbmdpZnkoUXVlcnlTb3VyY2VzLkNPTU1JVCk6Cisg ICAgcmV0dXJuIDxDb21taXRJY29uIHN0eWxlPXt7bWFyZ2luTGVmdDogJy00cHgnfX0vPjsKKyAg Y2FzZSBKU09OLnN0cmluZ2lmeShRdWVyeVNvdXJjZXMuUk9MTEJBQ0spOgorICAgIHJldHVybiA8 Um9sbGJhY2tJY29uIHN0eWxlPXt7bWFyZ2luTGVmdDogJy00cHgnfX0vPjsKKyAgY2FzZSBKU09O LnN0cmluZ2lmeShRdWVyeVNvdXJjZXMuU0FWRV9EQVRBKToKKyAgICByZXR1cm4gPFNhdmVEYXRh SWNvbiBzdHlsZT17e21hcmdpbkxlZnQ6ICctNHB4J319Lz47CisgIGNhc2UgSlNPTi5zdHJpbmdp ZnkoUXVlcnlTb3VyY2VzLlZJRVdfREFUQSk6CisgICAgcmV0dXJuIDxTYXZlRGF0YUljb24gc3R5 bGU9e3ttYXJnaW5MZWZ0OiAnLTRweCd9fS8+OworICBkZWZhdWx0OgorICAgIHJldHVybiA8Pjwv PjsKKyAgfQorfQorUXVlcnlTb3VyY2VJY29uLnByb3BUeXBlcyA9IHsKKyAgc291cmNlOiBQcm9w VHlwZXMub2JqZWN0LAorfTsKKworZnVuY3Rpb24gSGlzdG9yeUVudHJ5KHtlbnRyeSwgZm9ybWF0 RW50cnlEYXRlLCBpdGVtS2V5LCBzZWxlY3RlZEl0ZW1LZXksIG9uQ2xpY2t9KSB7CisgIGNvbnN0 IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAgcmV0dXJuIDxMaXN0SXRlbSB0YWJJbmRleD0iMCIg cmVmPXsoZWxlKT0+eworICAgIHNlbGVjdGVkSXRlbUtleT09aXRlbUtleSAmJiBlbGUgJiYgZWxl LnNjcm9sbEludG9WaWV3KHsKKyAgICAgIGJsb2NrOiAnY2VudGVyJywKKyAgICAgIGJlaGF2aW9y OiAnc21vb3RoJywKKyAgICB9KTsKKyAgfX0gY2xhc3NOYW1lPXtjbHN4KGNsYXNzZXMuZm9udFNv dXJjZUNvZGUsIGVudHJ5LnN0YXR1cyA/ICcnIDogY2xhc3Nlcy5pdGVtRXJyb3IpfSBzZWxlY3Rl ZD17c2VsZWN0ZWRJdGVtS2V5PT1pdGVtS2V5fSBvbkNsaWNrPXtvbkNsaWNrfT4KKyAgICA8Qm94 IHdoaXRlU3BhY2U9Im5vd3JhcCIgdGV4dE92ZXJmbG93PSJlbGxpcHNpcyIgb3ZlcmZsb3c9Imhp ZGRlbiIgPgorICAgICAgPFF1ZXJ5U291cmNlSWNvbiBzb3VyY2U9e2VudHJ5LnF1ZXJ5X3NvdXJj ZX0vPgorICAgICAge2VudHJ5LnF1ZXJ5fQorICAgIDwvQm94PgorICAgIDxCb3ggZm9udFNpemU9 IjEycHgiPgorICAgICAge2Zvcm1hdEVudHJ5RGF0ZShlbnRyeS5zdGFydF90aW1lKX0KKyAgICA8 L0JveD4KKyAgPC9MaXN0SXRlbT47Cit9CisKK2NvbnN0IEVudHJ5UHJvcFR5cGUgPSBQcm9wVHlw ZXMuc2hhcGUoeworICBpbmZvOiBQcm9wVHlwZXMuc3RyaW5nLAorICBzdGF0dXM6IFByb3BUeXBl cy5ib29sLAorICBzdGFydF90aW1lOiBQcm9wVHlwZXMub2JqZWN0T2YoRGF0ZSksCisgIHF1ZXJ5 OiBQcm9wVHlwZXMuc3RyaW5nLAorICByb3dfYWZmZWN0ZWQ6IFByb3BUeXBlcy5udW1iZXIsCisg IHRvdGFsX3RpbWU6IFByb3BUeXBlcy5zdHJpbmcsCisgIG1lc3NhZ2U6IFByb3BUeXBlcy5zdHJp bmcsCisgIHF1ZXJ5X3NvdXJjZTogUHJvcFR5cGVzLm9iamVjdCwKKyAgaXNfcGdhZG1pbl9xdWVy eTogUHJvcFR5cGVzLmJvb2wsCit9KTsKK0hpc3RvcnlFbnRyeS5wcm9wVHlwZXMgPSB7CisgIGVu dHJ5OiBFbnRyeVByb3BUeXBlLAorICBmb3JtYXRFbnRyeURhdGU6IFByb3BUeXBlcy5mdW5jLAor ICBpdGVtS2V5OiBQcm9wVHlwZXMuc3RyaW5nLAorICBzZWxlY3RlZEl0ZW1LZXk6IFByb3BUeXBl cy5zdHJpbmcsCisgIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLAorfTsKKworZnVuY3Rpb24gUXVl cnlIaXN0b3J5RGV0YWlscyh7ZW50cnl9KSB7CisgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMo KTsKKyAgY29uc3QgW2NvcHlUZXh0LCBzZXRDb3B5VGV4dF0gPSBSZWFjdC51c2VTdGF0ZShnZXR0 ZXh0KCdDb3B5JykpOworICBjb25zdCBldmVudEJ1cyA9IFJlYWN0LnVzZUNvbnRleHQoUXVlcnlU b29sRXZlbnRzQ29udGV4dCk7CisgIGNvbnN0IHJldmVydENvcGllZFRleHQgPSB1c2VEZWxheWVk Q2FsbGVyKCgpPT57CisgICAgc2V0Q29weVRleHQoZ2V0dGV4dCgnQ29weScpKTsKKyAgfSk7CisK KyAgY29uc3Qgb25Db3B5Q2xpY2sgPSBSZWFjdC51c2VDYWxsYmFjaygoKT0+eworICAgIGNvcHko ZW50cnkucXVlcnksIHsKKyAgICAgIGZvcm1hdDogJ3RleHQvcGxhaW4nLAorICAgIH0pOworICAg IHNldENvcHlUZXh0KGdldHRleHQoJ0NvcGllZCEnKSk7CisgICAgcmV2ZXJ0Q29waWVkVGV4dCgx NTAwKTsKKyAgfSwgW2VudHJ5XSk7CisKKyAgY29uc3Qgb25Db3B5VG9FZGl0b3IgPSBSZWFjdC51 c2VDYWxsYmFjaygoKT0+eworICAgIGV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5U Uy5DT1BZX1RPX0VESVRPUiwgZW50cnkucXVlcnkpOworICB9LCBbZW50cnldKTsKKworICBpZigh ZW50cnkpIHsKKyAgICByZXR1cm4gPD48Lz47CisgIH0KKworICByZXR1cm4gKAorICAgIDw+Cisg ICAgICB7ZW50cnkuaW5mbyAmJiA8Qm94IGNsYXNzTmFtZT17Y2xhc3Nlcy5pbmZvSGVhZGVyfT57 ZW50cnkuaW5mb308L0JveD59CisgICAgICA8Qm94IHBhZGRpbmc9IjAuNXJlbSI+CisgICAgICAg IDxHcmlkIGNvbnRhaW5lcj4KKyAgICAgICAgICA8R3JpZCBpdGVtIHNtPXs2fT57ZW50cnkuc3Rh cnRfdGltZS50b0xvY2FsZURhdGVTdHJpbmcoKSArICcgJyArIGVudHJ5LnN0YXJ0X3RpbWUudG9M b2NhbGVUaW1lU3RyaW5nKCl9PC9HcmlkPgorICAgICAgICAgIDxHcmlkIGl0ZW0gc209ezZ9Pntl bnRyeS5yb3dfYWZmZWN0ZWR9PC9HcmlkPgorICAgICAgICA8L0dyaWQ+CisgICAgICAgIDxHcmlk IGNvbnRhaW5lcj4KKyAgICAgICAgICA8R3JpZCBpdGVtIHNtPXs2fT57Z2V0dGV4dCgnRGF0ZScp fTwvR3JpZD4KKyAgICAgICAgICA8R3JpZCBpdGVtIHNtPXs2fT57Z2V0dGV4dCgnUm93cyBhZmZl Y3RlZCcpfTwvR3JpZD4KKyAgICAgICAgPC9HcmlkPgorICAgICAgICA8Qm94IGNsYXNzTmFtZT17 Y2xhc3Nlcy5kZXRhaWxzUXVlcnl9PgorICAgICAgICAgIDxEZWZhdWx0QnV0dG9uIHNpemU9Inhz IiBjbGFzc05hbWU9e2NsYXNzZXMuY29weUJ0bn0gb25DbGljaz17b25Db3B5Q2xpY2t9Pntjb3B5 VGV4dH08L0RlZmF1bHRCdXR0b24+CisgICAgICAgICAgPERlZmF1bHRCdXR0b24gc2l6ZT0ieHMi IGNsYXNzTmFtZT17Y2xhc3Nlcy5jb3B5QnRufSBvbkNsaWNrPXtvbkNvcHlUb0VkaXRvcn0+e2dl dHRleHQoJ0NvcHkgdG8gUXVlcnkgRWRpdG9yJyl9PC9EZWZhdWx0QnV0dG9uPgorICAgICAgICAg IDxDb2RlTWlycm9yCisgICAgICAgICAgICB2YWx1ZT17ZW50cnkucXVlcnl9CisgICAgICAgICAg ICBvcHRpb25zPXt7CisgICAgICAgICAgICAgIGZvbGRHdXR0ZXI6IGZhbHNlLAorICAgICAgICAg ICAgICBsaW5lTnVtYmVyczogZmFsc2UsCisgICAgICAgICAgICAgIGd1dHRlcnM6IFtdLAorICAg ICAgICAgICAgICByZWFkT25seTogdHJ1ZSwKKyAgICAgICAgICAgIH19CisgICAgICAgICAgLz4K KyAgICAgICAgPC9Cb3g+CisgICAgICAgIDxCb3ggbWFyZ2luVG9wPSIwLjVyZW0iPgorICAgICAg ICAgIDxCb3g+e2dldHRleHQoJ01lc3NhZ2VzJyl9PC9Cb3g+CisgICAgICAgICAgPEJveCBjbGFz c05hbWU9e2NsYXNzZXMuZm9udFNvdXJjZUNvZGV9IGZvbnRTaXplPSIxM3B4IiB3aGl0ZVNwYWNl PSJwcmUtd3JhcCI+e2VudHJ5Lm1lc3NhZ2V9PC9Cb3g+CisgICAgICAgIDwvQm94PgorICAgICAg PC9Cb3g+CisgICAgPC8+CisgICk7Cit9CisKK1F1ZXJ5SGlzdG9yeURldGFpbHMucHJvcFR5cGVz ID0geworICBlbnRyeTogRW50cnlQcm9wVHlwZSwKK307CisKK2V4cG9ydCBmdW5jdGlvbiBRdWVy eUhpc3RvcnkoKSB7CisgIGNvbnN0IHFodSA9IFJlYWN0LnVzZVJlZihuZXcgUXVlcnlIaXN0b3J5 VXRpbHMoKSk7CisgIGNvbnN0IHF1ZXJ5VG9vbEN0eCA9IFJlYWN0LnVzZUNvbnRleHQoUXVlcnlU b29sQ29udGV4dCk7CisgIGNvbnN0IGNsYXNzZXMgPSB1c2VTdHlsZXMoKTsKKyAgY29uc3QgZXZl bnRCdXMgPSBSZWFjdC51c2VDb250ZXh0KFF1ZXJ5VG9vbEV2ZW50c0NvbnRleHQpOworICBjb25z dCBbc2VsZWN0ZWRJdGVtS2V5LCBzZXRTZWxlY3RlZEl0ZW1LZXldID0gUmVhY3QudXNlU3RhdGUo MSk7CisgIGNvbnN0IFtzaG93SW50ZXJuYWwsIHNldFNob3dJbnRlcm5hbF0gPSBSZWFjdC51c2VT dGF0ZSh0cnVlKTsKKyAgY29uc3QgW2xvYWRlclRleHQsIHNldExvYWRlclRleHRdID0gUmVhY3Qu dXNlU3RhdGUoJycpOworICBjb25zdCBbLHJlZnJlc2hdID0gUmVhY3QudXNlU3RhdGUoe30pOwor ICBjb25zdCBzZWxlY3RlZEVudHJ5ID0gcWh1LmN1cnJlbnQuZ2V0RW50cnkoc2VsZWN0ZWRJdGVt S2V5KTsKKyAgY29uc3QgbGF5b3V0RXZlbkJ1cyA9IFJlYWN0LnVzZUNvbnRleHQoTGF5b3V0RXZl bnRzQ29udGV4dCk7CisgIGNvbnN0IGxpc3RSZWYgPSBSZWFjdC51c2VSZWYoKTsKKworICBSZWFj dC51c2VFZmZlY3QoYXN5bmMgKCk9PnsKKyAgICBsYXlvdXRFdmVuQnVzLnJlZ2lzdGVyTGlzdGVu ZXIoTEFZT1VUX0VWRU5UUy5BQ1RJVkUsIChjdXJyZW50VGFiSWQpPT57CisgICAgICBjdXJyZW50 VGFiSWQgPT0gUEFORUxTLkhJU1RPUlkgJiYgbGlzdFJlZi5jdXJyZW50LmZvY3VzKCk7CisgICAg fSk7CisKKyAgICBzZXRMb2FkZXJUZXh0KGdldHRleHQoJ0ZldGNoaW5nIGhpc3RvcnkuLi4nKSk7 CisgICAgdHJ5IHsKKyAgICAgIGxldCB7ZGF0YTogcmVzcERhdGF9ID0gYXdhaXQgcXVlcnlUb29s Q3R4LmFwaS5nZXQodXJsX2Zvcignc3FsZWRpdG9yLmdldF9xdWVyeV9oaXN0b3J5JywgeworICAg ICAgICAndHJhbnNfaWQnOiBxdWVyeVRvb2xDdHgucGFyYW1zLnRyYW5zX2lkLAorICAgICAgfSkp OworICAgICAgcmVzcERhdGEuZGF0YS5yZXN1bHQuZm9yRWFjaCgoaCk9PnsKKyAgICAgICAgaCA9 IEpTT04ucGFyc2UoaCk7CisgICAgICAgIGguc3RhcnRfdGltZV9vcmlnID0gaC5zdGFydF90aW1l OworICAgICAgICBoLnN0YXJ0X3RpbWUgPSBuZXcgRGF0ZShoLnN0YXJ0X3RpbWUpOworICAgICAg ICBxaHUuY3VycmVudC5hZGRFbnRyeShoKTsKKyAgICAgIH0pOworICAgICAgc2V0U2VsZWN0ZWRJ dGVtS2V5KHFodS5jdXJyZW50LmdldE5leHRJdGVtS2V5KCkpOworICAgIH0gY2F0Y2ggKGVycm9y KSB7CisgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTsKKyAgICAgIE5vdGlmaWVyLmVycm9yKGdl dHRleHQoJ0ZhaWxlZCB0byBmZXRjaCBxdWVyeSBoaXN0b3J5LicpICsgcGFyc2VBcGlFcnJvcihl cnJvcikpOworICAgIH0KKyAgICBzZXRMb2FkZXJUZXh0KCcnKTsKKworICAgIGNvbnN0IHB1c2hI aXN0b3J5ID0gKGgpPT57CisgICAgICBxaHUuY3VycmVudC5hZGRFbnRyeShoKTsKKyAgICAgIHJl ZnJlc2goe30pOworICAgIH07CisKKyAgICBsaXN0UmVmLmN1cnJlbnQuZm9jdXMoKTsKKyAgICBl dmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlBVU0hfSElTVE9SWSwg cHVzaEhpc3RvcnkpOworICAgIHJldHVybiAoKT0+ZXZlbnRCdXMuZGVyZWdpc3Rlckxpc3RlbmVy KFFVRVJZX1RPT0xfRVZFTlRTLlBVU0hfSElTVE9SWSwgcHVzaEhpc3RvcnkpOworICB9LCBbXSk7 CisKKyAgY29uc3Qgb25SZW1vdmUgPSBhc3luYyAoKT0+eworICAgIHNldExvYWRlclRleHQoZ2V0 dGV4dCgnUmVtb3ZpbmcgaGlzdG9yeSBlbnRyeS4uLicpKTsKKyAgICB0cnkgeworICAgICAgYXdh aXQgcXVlcnlUb29sQ3R4LmFwaS5kZWxldGUodXJsX2Zvcignc3FsZWRpdG9yLmNsZWFyX3F1ZXJ5 X2hpc3RvcnknLCB7CisgICAgICAgICd0cmFuc19pZCc6IHF1ZXJ5VG9vbEN0eC5wYXJhbXMudHJh bnNfaWQsCisgICAgICB9KSwgeworICAgICAgICBkYXRhOiB7CisgICAgICAgICAgcXVlcnk6IHNl bGVjdGVkRW50cnkucXVlcnksCisgICAgICAgICAgc3RhcnRfdGltZTogc2VsZWN0ZWRFbnRyeS5z dGFydF90aW1lLAorICAgICAgICB9CisgICAgICB9KTsKKyAgICAgIHNldFNlbGVjdGVkSXRlbUtl eShxaHUuY3VycmVudC5jbGVhcihzZWxlY3RlZEl0ZW1LZXkpKTsKKyAgICB9IGNhdGNoIChlcnJv cikgeworICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7CisgICAgICBOb3RpZmllci5lcnJvcihn ZXR0ZXh0KCdGYWlsZWQgdG8gcmVtb3ZlIHF1ZXJ5IGhpc3RvcnkuJykgKyBwYXJzZUFwaUVycm9y KGVycm9yKSk7CisgICAgfQorICAgIHNldExvYWRlclRleHQoJycpOworICB9OworCisgIGNvbnN0 IG9uUmVtb3ZlQWxsID0gUmVhY3QudXNlQ2FsbGJhY2soYXN5bmMgKCk9PnsKKyAgICBzZXRMb2Fk ZXJUZXh0KGdldHRleHQoJ1JlbW92aW5nIGhpc3RvcnkuLi4nKSk7CisgICAgdHJ5IHsKKyAgICAg IGF3YWl0IHF1ZXJ5VG9vbEN0eC5hcGkuZGVsZXRlKHVybF9mb3IoJ3NxbGVkaXRvci5jbGVhcl9x dWVyeV9oaXN0b3J5JywgeworICAgICAgICAndHJhbnNfaWQnOiBxdWVyeVRvb2xDdHgucGFyYW1z LnRyYW5zX2lkLAorICAgICAgfSkpOworICAgICAgcWh1LmN1cnJlbnQuY2xlYXIoKTsKKyAgICAg IHNldFNlbGVjdGVkSXRlbUtleShudWxsKTsKKyAgICB9IGNhdGNoIChlcnJvcikgeworICAgICAg Y29uc29sZS5lcnJvcihlcnJvcik7CisgICAgICBOb3RpZmllci5lcnJvcihnZXR0ZXh0KCdGYWls ZWQgdG8gcmVtb3ZlIHF1ZXJ5IGhpc3RvcnkuJykgKyBwYXJzZUFwaUVycm9yKGVycm9yKSk7Cisg ICAgfQorICAgIHNldExvYWRlclRleHQoJycpOworICB9LCBbXSk7CisKKyAgY29uc3Qgb25LZXlQ cmVzc2VkID0gKGUpID0+IHsKKyAgICBpZiAoZS5rZXlDb2RlID09ICczOCcpIHsKKyAgICAgIGUu cHJldmVudERlZmF1bHQoKTsKKyAgICAgIHNldFNlbGVjdGVkSXRlbUtleShxaHUuY3VycmVudC5n ZXRQcmV2SXRlbUtleShzZWxlY3RlZEl0ZW1LZXkpKTsKKyAgICB9IGVsc2UgaWYgKGUua2V5Q29k ZSA9PSAnNDAnKSB7CisgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgICBzZXRTZWxlY3Rl ZEl0ZW1LZXkocWh1LmN1cnJlbnQuZ2V0TmV4dEl0ZW1LZXkoc2VsZWN0ZWRJdGVtS2V5KSk7Cisg ICAgfQorICB9OworCisgIHJldHVybiAoCisgICAgPD4KKyAgICAgIDxMb2FkZXIgbWVzc2FnZT17 bG9hZGVyVGV4dH0gLz4KKyAgICAgIHtSZWFjdC51c2VNZW1vKCgpPT4oCisgICAgICAgIDxCb3gg ZGlzcGxheT0iZmxleCIgaGVpZ2h0PSIxMDAlIj4KKyAgICAgICAgICA8Qm94IGZsZXhCYXNpcz0i NTAlIiBtYXhXaWR0aD0iNTAlIiBjbGFzc05hbWU9e2NsYXNzZXMubGVmdFJvb3R9PgorICAgICAg ICAgICAgPEJveCBwYWRkaW5nPSIwLjI1cmVtIiBkaXNwbGF5PSJmbGV4Ij4KKyAgICAgICAgICAg ICAge2dldHRleHQoJ1Nob3cgcXVlcmllcyBnZW5lcmF0ZWQgaW50ZXJuYWxseSBieSBwZ0FkbWlu PycpfQorICAgICAgICAgICAgICA8SW5wdXRTd2l0Y2ggdmFsdWU9e3Nob3dJbnRlcm5hbH0gb25D aGFuZ2U9eyhlKT0+eworICAgICAgICAgICAgICAgIHNldFNob3dJbnRlcm5hbChlLnRhcmdldC5j aGVja2VkKTsKKyAgICAgICAgICAgICAgICBxaHUuY3VycmVudC5zaG93SW50ZXJuYWwgPSBlLnRh cmdldC5jaGVja2VkOworICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkSXRlbUtleShxaHUuY3Vy cmVudC5nZXROZXh0SXRlbUtleSgpKTsKKyAgICAgICAgICAgICAgfX0gLz4KKyAgICAgICAgICAg ICAgPEJveCBtYXJnaW5MZWZ0PSJhdXRvIj4KKyAgICAgICAgICAgICAgICA8RGVmYXVsdEJ1dHRv biBzaXplPSJzbWFsbCIgZGlzYWJsZWQ9eyFzZWxlY3RlZEl0ZW1LZXl9IG9uQ2xpY2s9e29uUmVt b3ZlfT5SZW1vdmU8L0RlZmF1bHRCdXR0b24+CisgICAgICAgICAgICAgICAgPERlZmF1bHRCdXR0 b24gc2l6ZT0ic21hbGwiIGNsYXNzTmFtZT17Y2xhc3Nlcy5yZW1vdmVCdG5NYXJnaW59IG9uQ2xp Y2s9e29uUmVtb3ZlQWxsfT5SZW1vdmUgQWxsPC9EZWZhdWx0QnV0dG9uPgorICAgICAgICAgICAg ICA8L0JveD4KKyAgICAgICAgICAgIDwvQm94PgorICAgICAgICAgICAgPEJveCBmbGV4R3Jvdz0i MSIgb3ZlcmZsb3c9ImF1dG8iIGNsYXNzTmFtZT17Y2xhc3Nlcy5saXN0Um9vdH0+CisgICAgICAg ICAgICAgIDxMaXN0IGlubmVyUmVmPXtsaXN0UmVmfSBjbGFzc05hbWU9e2NsYXNzZXMucm9vdH0g c3ViaGVhZGVyPXs8bGkgLz59IHRhYkluZGV4PSIwIiBvbktleURvd249e29uS2V5UHJlc3NlZH0+ CisgICAgICAgICAgICAgICAge3FodS5jdXJyZW50LmdldEdyb3VwcygpLm1hcCgoW2dyb3VwS2V5 LCBncm91cEhlYWRlcl0pID0+ICgKKyAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbSBrZXk9e2Bz ZWN0aW9uLSR7Z3JvdXBLZXl9YH0gY2xhc3NOYW1lPXtjbGFzc2VzLnJlbW92ZVBhZGRpbmd9Pgor ICAgICAgICAgICAgICAgICAgICA8TGlzdCBjbGFzc05hbWU9e2NsYXNzZXMucmVtb3ZlUGFkZGlu Z30+CisgICAgICAgICAgICAgICAgICAgICAgPExpc3RTdWJoZWFkZXIgY2xhc3NOYW1lPXtjbGFz c2VzLmxpc3RTdWJoZWFkZXJ9Pntncm91cEhlYWRlcn08L0xpc3RTdWJoZWFkZXI+CisgICAgICAg ICAgICAgICAgICAgICAge3FodS5jdXJyZW50LmdldEdyb3VwRW50cmllcyhncm91cEtleSkubWFw KChlbnRyeSkgPT4gKAorICAgICAgICAgICAgICAgICAgICAgICAgPEhpc3RvcnlFbnRyeSBrZXk9 e2VudHJ5Lml0ZW1LZXl9IGVudHJ5PXtlbnRyeX0gZm9ybWF0RW50cnlEYXRlPXtxaHUuY3VycmVu dC5mb3JtYXRFbnRyeURhdGV9CisgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1LZXk9e2Vu dHJ5Lml0ZW1LZXl9IHNlbGVjdGVkSXRlbUtleT17c2VsZWN0ZWRJdGVtS2V5fSBvbkNsaWNrPXso KT0+e3NldFNlbGVjdGVkSXRlbUtleShlbnRyeS5pdGVtS2V5KTt9fS8+CisgICAgICAgICAgICAg ICAgICAgICAgKSl9CisgICAgICAgICAgICAgICAgICAgIDwvTGlzdD4KKyAgICAgICAgICAgICAg ICAgIDwvTGlzdEl0ZW0+CisgICAgICAgICAgICAgICAgKSl9CisgICAgICAgICAgICAgIDwvTGlz dD4KKyAgICAgICAgICAgIDwvQm94PgorICAgICAgICAgIDwvQm94PgorICAgICAgICAgIDxCb3gg ZmxleEJhc2lzPSI1MCUiIG1heFdpZHRoPSI1MCUiIG92ZXJmbG93PSJhdXRvIj4KKyAgICAgICAg ICAgIDxRdWVyeUhpc3RvcnlEZXRhaWxzIGVudHJ5PXtzZWxlY3RlZEVudHJ5fS8+CisgICAgICAg ICAgPC9Cb3g+CisgICAgICAgIDwvQm94PgorICAgICAgKSwgW3NlbGVjdGVkSXRlbUtleSwgc2hv d0ludGVybmFsLCBxaHUuY3VycmVudC5zaXplKCldKX0KKyAgICA8Lz4KKyAgKTsKK30KZGlmZiAt LWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9z ZWN0aW9ucy9SZXN1bHRTZXQuanN4IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRp Yy9qcy9jb21wb25lbnRzL3NlY3Rpb25zL1Jlc3VsdFNldC5qc3gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMDAwLi4wNTUzZWRkMTEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdh ZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUmVzdWx0 U2V0LmpzeApAQCAtMCwwICsxLDEyMDggQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0 Z3JlU1FMIFRvb2xzCisvLworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhlIHBnQWRt aW4gRGV2ZWxvcG1lbnQgVGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0 aGUgUG9zdGdyZVNRTCBMaWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCBfIGZyb20gJ2xvZGFzaCc7 CitpbXBvcnQgUmVhY3QsIHsgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9ICBmcm9t ICdyZWFjdCc7CitpbXBvcnQgUXVlcnlUb29sRGF0YUdyaWQsIHsgR1JJRF9ST1dfU0VMRUNUX0tF WSB9IGZyb20gJy4uL1F1ZXJ5VG9vbERhdGFHcmlkJzsKK2ltcG9ydCB7Q09OTkVDVElPTl9TVEFU VVMsIFBBTkVMUywgUVVFUllfVE9PTF9FVkVOVFN9IGZyb20gJy4uL1F1ZXJ5VG9vbENvbnN0YW50 cyc7CitpbXBvcnQgdXJsX2ZvciBmcm9tICdzb3VyY2VzL3VybF9mb3InOworaW1wb3J0IGdldEFw aUluc3RhbmNlLCB7IHBhcnNlQXBpRXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0 aWMvanMvYXBpX2luc3RhbmNlJzsKK2ltcG9ydCB7IFF1ZXJ5VG9vbENvbnRleHQsIFF1ZXJ5VG9v bEV2ZW50c0NvbnRleHQgfSBmcm9tICcuLi9RdWVyeVRvb2xDb21wb25lbnQnOworaW1wb3J0IGdl dHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKK2ltcG9ydCBMb2FkZXIgZnJvbSAnc291cmNl cy9jb21wb25lbnRzL0xvYWRlcic7CitpbXBvcnQgeyBCb3ggfSBmcm9tICdAbWF0ZXJpYWwtdWkv Y29yZSc7CitpbXBvcnQgeyBSZXN1bHRTZXRUb29sYmFyIH0gZnJvbSAnLi9SZXN1bHRTZXRUb29s YmFyJzsKK2ltcG9ydCB7IExheW91dEhlbHBlciB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0 YXRpYy9qcy9oZWxwZXJzL0xheW91dCc7CitpbXBvcnQgeyBHZW9tZXRyeVZpZXdlciB9IGZyb20g Jy4vR2VvbWV0cnlWaWV3ZXInOworaW1wb3J0IEV4cGxhaW4gZnJvbSAnLi4vLi4vLi4vLi4vLi4v Li4vc3RhdGljL2pzL0V4cGxhaW4nOworaW1wb3J0IE5vdGlmaWVyIGZyb20gJy4uLy4uLy4uLy4u Ly4uLy4uL3N0YXRpYy9qcy9oZWxwZXJzL05vdGlmaWVyJzsKK2ltcG9ydCB7IFF1ZXJ5U291cmNl cyB9IGZyb20gJy4vUXVlcnlIaXN0b3J5JzsKK2ltcG9ydCB7IGdldEJyb3dzZXIgfSBmcm9tICcu Li8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvdXRpbHMnOworaW1wb3J0IENvcHlEYXRhIGZyb20g Jy4uL1F1ZXJ5VG9vbERhdGFHcmlkL0NvcHlEYXRhJzsKK2ltcG9ydCBtb21lbnQgZnJvbSAnbW9t ZW50JzsKK2ltcG9ydCBDb25maXJtU2F2ZUNvbnRlbnQgZnJvbSAnLi4vZGlhbG9ncy9Db25maXJt U2F2ZUNvbnRlbnQnOworCitleHBvcnQgY2xhc3MgUmVzdWx0U2V0VXRpbHMgeworICBjb25zdHJ1 Y3RvcihhcGksIHRyYW5zSWQsIGlzUXVlcnlUb29sPXRydWUpIHsKKyAgICB0aGlzLmFwaSA9IGFw aTsKKyAgICB0aGlzLnRyYW5zSWQgPSB0cmFuc0lkOworICAgIHRoaXMuc3RhcnRUaW1lID0gbmV3 IERhdGUoKTsKKyAgICB0aGlzLmNsaWVudFBLID0gbnVsbDsKKyAgICB0aGlzLmlzUXVlcnlUb29s ID0gaXNRdWVyeVRvb2w7CisgICAgdGhpcy5jbGllbnRQS0xhc3RJbmRleCA9IDA7CisgICAgdGhp cy5oaXN0b3J5UXVlcnlTb3VyY2UgPSBudWxsOworICB9CisKKyAgc3RhdGljIGdlbmVyYXRlVVJM UmVjb25uZWN0aW9uRmxhZyhiYXNlVXJsLCB0cmFuc0lkLCBzaG91bGRSZWNvbm5lY3QpIHsKKyAg ICBsZXQgdXJsID0gdXJsX2ZvcihiYXNlVXJsLCB7CisgICAgICAndHJhbnNfaWQnOiB0cmFuc0lk LAorICAgIH0pOworCisgICAgaWYgKHNob3VsZFJlY29ubmVjdCkgeworICAgICAgdXJsICs9ICc/ Y29ubmVjdD0xJzsKKyAgICB9CisgICAgcmV0dXJuIHVybDsKKyAgfQorCisgIHN0YXRpYyBwcmVw YXJlQW5hbHl6ZVNxbChzcWxTdGF0ZW1lbnQsIGFuYWx5emVTcWwpIHsKKyAgICByZXR1cm4gewor ICAgICAgc3FsOiBzcWxTdGF0ZW1lbnQsCisgICAgICBleHBsYWluX3BsYW46IGFuYWx5emVTcWws CisgICAgfTsKKyAgfQorCisgIHN0YXRpYyB3YXNDb25uZWN0aW9uTG9zdFRvUHl0aG9uU2VydmVy KGh0dHBSZXNwb25zZSkgeworICAgIHJldHVybiBfLmlzVW5kZWZpbmVkKGh0dHBSZXNwb25zZSkg fHwgXy5pc1VuZGVmaW5lZChodHRwUmVzcG9uc2UuZGF0YSk7CisgIH0KKworICBzdGF0aWMgd2Fz RGF0YWJhc2VDb25uZWN0aW9uTG9zdChodHRwTWVzc2FnZSkgeworICAgIHJldHVybiBodHRwTWVz c2FnZS5yZXNwb25zZS5zdGF0dXMgPT09IDUwMyAmJgorICAgICAgaHR0cE1lc3NhZ2UucmVzcG9u c2UuZGF0YS5pbmZvICE9PSB1bmRlZmluZWQgJiYKKyAgICAgIGh0dHBNZXNzYWdlLnJlc3BvbnNl LmRhdGEuaW5mbyA9PT0gJ0NPTk5FQ1RJT05fTE9TVCc7CisgIH0KKworICBzdGF0aWMgaXNDcnlw dEtleU1pc3NpbmcoaHR0cE1lc3NhZ2UpIHsKKyAgICByZXR1cm4gaHR0cE1lc3NhZ2UucmVzcG9u c2Uuc3RhdHVzID09PSA1MDMgJiYKKyAgICAgIGh0dHBNZXNzYWdlLnJlc3BvbnNlLmRhdGEuaW5m byAhPT0gdW5kZWZpbmVkICYmCisgICAgICBodHRwTWVzc2FnZS5yZXNwb25zZS5kYXRhLmluZm8g PT09ICdDUllQVEtFWV9NSVNTSU5HJzsKKyAgfQorCisgIHN0YXRpYyBpc1NxbENvcnJlY3QoaHR0 cE1lc3NhZ2VEYXRhKSB7CisgICAgcmV0dXJuIGh0dHBNZXNzYWdlRGF0YS5kYXRhLnN0YXR1czsK KyAgfQorCisgIHN0YXRpYyBleHRyYWN0RXJyb3JNZXNzYWdlKGh0dHBNZXNzYWdlKSB7CisgICAg bGV0IG1zZyA9IGh0dHBNZXNzYWdlLmVycm9ybXNnOworICAgIGlmIChodHRwTWVzc2FnZS5yZXNw b25zZUpTT04gIT09IHVuZGVmaW5lZCAmJgorICAgICAgaHR0cE1lc3NhZ2UucmVzcG9uc2VKU09O LmVycm9ybXNnICE9PSB1bmRlZmluZWQpCisgICAgICBtc2cgPSBodHRwTWVzc2FnZS5yZXNwb25z ZUpTT04uZXJyb3Jtc2c7CisKKyAgICByZXR1cm4gbXNnOworICB9CisKKyAgc3RhdGljIGlzUXVl cnlGaW5pc2hlZChodHRwTWVzc2FnZSkgeworICAgIHJldHVybiBodHRwTWVzc2FnZS5kYXRhLmRh dGEuc3RhdHVzID09PSAnU3VjY2Vzcyc7CisgIH0KKworICBzdGF0aWMgaXNRdWVyeVN0aWxsUnVu bmluZyhodHRwTWVzc2FnZSkgeworICAgIHJldHVybiBodHRwTWVzc2FnZS5kYXRhLmRhdGEuc3Rh dHVzID09PSAnQnVzeSc7CisgIH0KKworICBzdGF0aWMgaXNRdWVyeUNhbmNlbGxlZChodHRwTWVz c2FnZSkgeworICAgIHJldHVybiBodHRwTWVzc2FnZS5kYXRhLmRhdGEuc3RhdHVzID09PSAnQ2Fu Y2VsJzsKKyAgfQorCisgIHN0YXRpYyBpc0Nvbm5lY3Rpb25Ub1NlcnZlckxvc3RXaGlsZVBvbGxp bmcoaHR0cE1lc3NhZ2UpIHsKKyAgICByZXR1cm4gaHR0cE1lc3NhZ2UuZGF0YS5kYXRhLnN0YXR1 cyA9PT0gJ05vdENvbm5lY3RlZCc7CisgIH0KKworICBzZXRTdGFydFRpbWUoc3RhcnQpIHsKKyAg ICB0aGlzLnN0YXJ0VGltZSA9IHN0YXJ0OworICB9CisKKyAgc2V0RW5kVGltZShlbmQpIHsKKyAg ICB0aGlzLmVuZFRpbWUgPSBlbmQ7CisgIH0KKworICBxdWVyeVJ1blRpbWUoKSB7CisgICAgbGV0 IHRvdGFsX21zID0gbW9tZW50KHRoaXMuZW5kVGltZSkuZGlmZih0aGlzLnN0YXJ0VGltZSk7Cisg ICAgbGV0IHJlc3VsdCA9ICcnOworICAgIGxldCBzZWNzLCBtaW5zLCBocnM7CisKKyAgICAvKiBF eHRyYWN0IHNlY29uZHMgZnJvbSBtaWxsaXNlY3MgKi8KKyAgICBzZWNzID0gcGFyc2VJbnQodG90 YWxfbXMvMTAwMCk7CisgICAgdG90YWxfbXMgPSB0b3RhbF9tcyUxMDAwOworCisgICAgLyogRXh0 cmFjdCBtaW5zIGZyb20gc2Vjb25kcyAqLworICAgIG1pbnMgPSBwYXJzZUludChzZWNzLzYwKTsK KyAgICBzZWNzID0gc2VjcyU2MDsKKworICAgIC8qIEV4dHJhY3QgaHJzIGZyb20gbWlucyAqLwor ICAgIGhycyA9IHBhcnNlSW50KG1pbnMvNjApOworICAgIG1pbnMgPSBtaW5zJTYwOworCisgICAg cmVzdWx0ID0gKGhycz4wID8gaHJzICsgJyAnICsgZ2V0dGV4dCgnaHInKSArICcgJzogJycpCisg ICAgICAgICAgICArIChtaW5zPjAgPyBtaW5zICsgJyAnICsgZ2V0dGV4dCgnbWluJykgKyAnICc6 ICcnKQorICAgICAgICAgICAgKyAoaHJzPD0wICYmIHNlY3M+MCA/IHNlY3MgKyAnICcgKyBnZXR0 ZXh0KCdzZWNzJykgKyAnICc6ICcnKQorICAgICAgICAgICAgKyAoaHJzPD0wICYmIG1pbnM8PTAg PyB0b3RhbF9tcyArICcgJyArIGdldHRleHQoJ21zZWMnKSArICcgJzonJyk7CisgICAgcmV0dXJu IHJlc3VsdC50cmltKCk7CisgIH0KKworICBzZXRFdmVudEJ1cyhldmVudEJ1cykgeworICAgIHRo aXMuZXZlbnRCdXMgPSBldmVudEJ1czsKKyAgfQorCisgIHNldFN0YXJ0RGF0YShkYXRhKSB7Cisg ICAgdGhpcy5zdGFydERhdGEgPSBkYXRhOworICB9CisKKyAgcmVzZXRDbGllbnRQS0luZGV4KCkg eworICAgIHRoaXMuY2xpZW50UEtMYXN0SW5kZXggPSAwOworICB9CisKKyAgc2V0Q2xpZW50UEso Y2xpZW50UEspIHsKKyAgICB0aGlzLmNsaWVudFBLID0gY2xpZW50UEsgfHwgR1JJRF9ST1dfU0VM RUNUX0tFWTsKKyAgfQorCisgIGhhc1Jlc3VsdHNUb0Rpc3BsYXkocmVzKSB7CisgICAgcmV0dXJu IHJlcy5jb2xpbmZvICE9IG51bGw7CisgIH0KKworICBpc0F0Qm90dG9tKHsgY3VycmVudFRhcmdl dCB9KSB7CisgICAgcmV0dXJuIGN1cnJlbnRUYXJnZXQuc2Nyb2xsVG9wICsgMTAgPj0gY3VycmVu dFRhcmdldC5zY3JvbGxIZWlnaHQgLSBjdXJyZW50VGFyZ2V0LmNsaWVudEhlaWdodDsKKyAgfQor CisgIHBvc3RFeGVjdXRpb25BcGkocXVlcnksIGV4cGxhaW5PYmplY3QsIGlzUXVlcnlUb29sPXRy dWUsIHJlY29ubmVjdD1mYWxzZSkgeworICAgIGlmKGlzUXVlcnlUb29sKSB7CisgICAgICByZXR1 cm4gdGhpcy5hcGkucG9zdCgKKyAgICAgICAgUmVzdWx0U2V0VXRpbHMuZ2VuZXJhdGVVUkxSZWNv bm5lY3Rpb25GbGFnKCdzcWxlZGl0b3IucXVlcnlfdG9vbF9zdGFydCcsIHRoaXMudHJhbnNJZCwg cmVjb25uZWN0KSwKKyAgICAgICAgSlNPTi5zdHJpbmdpZnkoeworICAgICAgICAgIHNxbDogcXVl cnksCisgICAgICAgICAgZXhwbGFpbl9wbGFuOiBleHBsYWluT2JqZWN0LAorICAgICAgICB9KQor ICAgICAgKTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0dXJuIHRoaXMuYXBpLmdldCgKKyAgICAg ICAgUmVzdWx0U2V0VXRpbHMuZ2VuZXJhdGVVUkxSZWNvbm5lY3Rpb25GbGFnKCdzcWxlZGl0b3Iu dmlld19kYXRhX3N0YXJ0JywgdGhpcy50cmFuc0lkLCByZWNvbm5lY3QpCisgICAgICApOworICAg IH0KKyAgfQorCisgIGFzeW5jIHN0YXJ0RXhlY3V0aW9uKHF1ZXJ5LCBleHBsYWluT2JqZWN0LCBv bkluY29ycmVjdFNRTCwgZmxhZ3M9eworICAgIGlzUXVlcnlUb29sOiB0cnVlLCBleHRlcm5hbDog ZmFsc2UsIHJlY29ubmVjdDogZmFsc2UsCisgIH0pIHsKKyAgICB0aGlzLmV2ZW50QnVzLmZpcmVF dmVudChRVUVSWV9UT09MX0VWRU5UUy5TRVRfTUVTU0FHRSwgJycpOworICAgIHRoaXMuc2V0U3Rh cnRUaW1lKG5ldyBEYXRlKCkpOworICAgIHRoaXMucXVlcnkgPSBxdWVyeTsKKyAgICB0aGlzLmhp c3RvcnlRdWVyeVNvdXJjZSA9IGZsYWdzLmlzUXVlcnlUb29sID8gUXVlcnlTb3VyY2VzLkVYRUNV VEUgOiBRdWVyeVNvdXJjZXMuVklFV19EQVRBOworICAgIGlmKGV4cGxhaW5PYmplY3QpIHsKKyAg ICAgIGlmKGV4cGxhaW5PYmplY3QuYW5hbHl6ZSkgeworICAgICAgICB0aGlzLmhpc3RvcnlRdWVy eVNvdXJjZSA9IFF1ZXJ5U291cmNlcy5FWFBMQUlOX0FOQUxZWkU7CisgICAgICB9IGVsc2Ugewor ICAgICAgICB0aGlzLmhpc3RvcnlRdWVyeVNvdXJjZSA9IFF1ZXJ5U291cmNlcy5FWFBMQUlOOwor ICAgICAgfQorICAgIH0gZWxzZSBpZihxdWVyeSA9PSAnQ09NTUlUOycpIHsKKyAgICAgIHRoaXMu aGlzdG9yeVF1ZXJ5U291cmNlID0gUXVlcnlTb3VyY2VzLkNPTU1JVDsKKyAgICB9IGVsc2UgaWYo cXVlcnkgPT0gJ1JPTExCQUNLOycpIHsKKyAgICAgIHRoaXMuaGlzdG9yeVF1ZXJ5U291cmNlID0g UXVlcnlTb3VyY2VzLlJPTExCQUNLOworICAgIH0KKyAgICB0cnkgeworICAgICAgbGV0IHtkYXRh OiBodHRwTWVzc2FnZURhdGF9ID0gYXdhaXQgdGhpcy5wb3N0RXhlY3V0aW9uQXBpKHF1ZXJ5LCBl eHBsYWluT2JqZWN0LCBmbGFncy5pc1F1ZXJ5VG9vbCwgZmxhZ3MucmVjb25uZWN0KTsKKyAgICAg IHRoaXMuZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlNFVF9DT05ORUNUSU9O X1NUQVRVUywgaHR0cE1lc3NhZ2VEYXRhLmRhdGEudHJhbnNhY3Rpb25fc3RhdHVzKTsKKworICAg ICAgaWYgKFJlc3VsdFNldFV0aWxzLmlzU3FsQ29ycmVjdChodHRwTWVzc2FnZURhdGEpKSB7Cisg ICAgICAgIHRoaXMuc2V0U3RhcnREYXRhKGh0dHBNZXNzYWdlRGF0YS5kYXRhKTsKKyAgICAgICAg aWYoIWZsYWdzLmlzUXVlcnlUb29sKSB7CisgICAgICAgICAgdGhpcy5xdWVyeSA9IGh0dHBNZXNz YWdlRGF0YS5kYXRhLnNxbDsKKyAgICAgICAgICB0aGlzLmV2ZW50QnVzLmZpcmVFdmVudChRVUVS WV9UT09MX0VWRU5UUy5TRVRfRklMVEVSX0lORk8sIGh0dHBNZXNzYWdlRGF0YS5kYXRhLmNhbl9m aWx0ZXIsIGh0dHBNZXNzYWdlRGF0YS5kYXRhLmZpbHRlcl9hcHBsaWVkKTsKKyAgICAgICAgICB0 aGlzLmV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5TRVRfTElNSVRfVkFMVUUs IGh0dHBNZXNzYWdlRGF0YS5kYXRhLmxpbWl0KTsKKyAgICAgICAgICB0aGlzLmV2ZW50QnVzLmZp cmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5FRElUT1JfU0VUX1NRTCwgaHR0cE1lc3NhZ2VEYXRh LmRhdGEuc3FsLCBmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg ICB9IGVsc2UgeworICAgICAgICB0aGlzLmV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VW RU5UUy5FWEVDVVRJT05fRU5EKTsKKyAgICAgICAgdGhpcy5ldmVudEJ1cy5maXJlRXZlbnQoUVVF UllfVE9PTF9FVkVOVFMuU0VUX01FU1NBR0UsIGh0dHBNZXNzYWdlRGF0YS5kYXRhLnJlc3VsdCk7 CisgICAgICAgIHRoaXMuZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLkZPQ1VT X1BBTkVMLCBQQU5FTFMuTUVTU0FHRVMpOworICAgICAgICBvbkluY29ycmVjdFNRTCgpOworICAg ICAgICB0aGlzLnJlc2V0Q2xpZW50UEtJbmRleCgpOworICAgICAgICB0aGlzLmV2ZW50QnVzLmZp cmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5QVVNIX0hJU1RPUlksIHsKKyAgICAgICAgICBzdGF0 dXM6IGZhbHNlLAorICAgICAgICAgIHN0YXJ0X3RpbWU6IHRoaXMuc3RhcnRUaW1lLAorICAgICAg ICAgIHF1ZXJ5OiB0aGlzLnF1ZXJ5LAorICAgICAgICAgIHJvd19hZmZlY3RlZDogbnVsbCwKKyAg ICAgICAgICB0b3RhbF90aW1lOiB0aGlzLnF1ZXJ5UnVuVGltZSgpLAorICAgICAgICAgIG1lc3Nh Z2U6IGh0dHBNZXNzYWdlRGF0YS5kYXRhLnJlc3VsdCwKKyAgICAgICAgICBxdWVyeV9zb3VyY2U6 IHRoaXMuaGlzdG9yeVF1ZXJ5U291cmNlLAorICAgICAgICAgIGlzX3BnYWRtaW5fcXVlcnk6IGZh bHNlLAorICAgICAgICB9KTsKKyAgICAgICAgaWYoIWZsYWdzLmV4dGVybmFsKSB7CisgICAgICAg ICAgdGhpcy5ldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuSElHSExJR0hUX0VS Uk9SLCBodHRwTWVzc2FnZURhdGEuZGF0YS5yZXN1bHQpOworICAgICAgICB9CisgICAgICB9Cisg ICAgICBpZihodHRwTWVzc2FnZURhdGEuZGF0YS5ub3RpZmllcykgeworICAgICAgICB0aGlzLmV2 ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5QVVNIX05PVElDRSwgaHR0cE1lc3Nh Z2VEYXRhLmRhdGEubm90aWZpZXMpOworICAgICAgfQorICAgIH0gY2F0Y2goZSkgeworICAgICAg dGhpcy5ldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuRVhFQ1VUSU9OX0VORCk7 CisgICAgICB0aGlzLmV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5IQU5ETEVf QVBJX0VSUk9SLAorICAgICAgICBlLAorICAgICAgICB7CisgICAgICAgICAgY29ubmVjdGlvbkxv c3RDYWxsYmFjazogKCk9PnsKKyAgICAgICAgICAgIHRoaXMuZXZlbnRCdXMuZmlyZUV2ZW50KFFV RVJZX1RPT0xfRVZFTlRTLkVYRUNVVElPTl9TVEFSVCwgcXVlcnksIGV4cGxhaW5PYmplY3QsIGZs YWdzLmV4dGVybmFsLCB0cnVlKTsKKyAgICAgICAgICB9LAorICAgICAgICAgIGNoZWNrVHJhbnNh Y3Rpb246IHRydWUsCisgICAgICAgIH0KKyAgICAgICk7CisgICAgfQorICAgIHJldHVybiBmYWxz ZTsKKyAgfQorCisgIHBvbGwoKSB7CisgICAgbGV0IGRlbGF5ID0gMTsKKyAgICB2YXIgc2Vjb25k cyA9IHBhcnNlSW50KChEYXRlLm5vdygpIC0gdGhpcy5zdGFydFRpbWUuZ2V0VGltZSgpKSAvIDEw MDApOworICAgIC8vIGNhbGN1bGF0ZSAmIHJldHVybiBmYWxsIGJhY2sgcG9sbGluZyB0aW1lb3V0 CisgICAgaWYgKHNlY29uZHMgPj0gMTAgJiYgc2Vjb25kcyA8IDMwKSB7CisgICAgICBkZWxheSA9 IDUwMDsKKyAgICB9IGVsc2UgaWYgKHNlY29uZHMgPj0gMzAgJiYgc2Vjb25kcyA8IDYwKSB7Cisg ICAgICBkZWxheSA9IDEwMDA7CisgICAgfSBlbHNlIGlmIChzZWNvbmRzID49IDYwICYmIHNlY29u ZHMgPCA5MCkgeworICAgICAgZGVsYXkgPSAyMDAwOworICAgIH0gZWxzZSBpZiAoc2Vjb25kcyA+ PSA5MCkgeworICAgICAgZGVsYXkgPSA1MDAwOworICAgIH0gZWxzZSB7CisgICAgICBkZWxheSA9 IDE7CisgICAgfQorCisgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKT0+eworICAgICAg c2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIHJlc29sdmUodGhpcy5hcGkuZ2V0KAorICAgICAg ICAgIHVybF9mb3IoJ3NxbGVkaXRvci5wb2xsJywgeworICAgICAgICAgICAgJ3RyYW5zX2lkJzog dGhpcy50cmFuc0lkLAorICAgICAgICAgIH0pCisgICAgICAgICkpOworICAgICAgfSwgZGVsYXkp OworICAgIH0pOworICB9CisKKyAgaGFuZGxlUG9sbEVycm9yKGVycm9yKSB7CisgICAgdGhpcy5l dmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuRVhFQ1VUSU9OX0VORCk7CisgICAg dGhpcy5ldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuRk9DVVNfUEFORUwsIFBB TkVMUy5NRVNTQUdFUyk7CisgICAgdGhpcy5ldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9F VkVOVFMuU0VUX0NPTk5FQ1RJT05fU1RBVFVTLCBDT05ORUNUSU9OX1NUQVRVUy5UUkFOU0FDVElP Tl9TVEFUVVNfSU5FUlJPUik7CisgICAgdGhpcy5ldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9P TF9FVkVOVFMuUFVTSF9ISVNUT1JZLCB7CisgICAgICBzdGF0dXM6IGZhbHNlLAorICAgICAgc3Rh cnRfdGltZTogdGhpcy5zdGFydFRpbWUsCisgICAgICBxdWVyeTogdGhpcy5xdWVyeSwKKyAgICAg IHJvd19hZmZlY3RlZDogbnVsbCwKKyAgICAgIHRvdGFsX3RpbWU6IHRoaXMucXVlcnlSdW5UaW1l KCksCisgICAgICBtZXNzYWdlOiBwYXJzZUFwaUVycm9yKGVycm9yLCBmYWxzZSksCisgICAgICBx dWVyeV9zb3VyY2U6IHRoaXMuaGlzdG9yeVF1ZXJ5U291cmNlLAorICAgICAgaXNfcGdhZG1pbl9x dWVyeTogZmFsc2UsCisgICAgfSk7CisgICAgdGhpcy5ldmVudEJ1cy5maXJlRXZlbnQoUVVFUllf VE9PTF9FVkVOVFMuSEFORExFX0FQSV9FUlJPUiwgZXJyb3IpOworICB9CisKKyAgYXN5bmMgcG9s bEZvclJlc3VsdChvblJlc3VsdHNBdmFpbGFibGUsIG9uRXhwbGFpbiwgb25Qb2xsRXJyb3IpIHsK KyAgICB0cnkgeworICAgICAgbGV0IGh0dHBNZXNzYWdlID0gYXdhaXQgdGhpcy5wb2xsKCk7Cisg ICAgICBsZXQgbXNnID0gJyc7CisgICAgICBpZihodHRwTWVzc2FnZS5kYXRhLmRhdGEubm90aWZp ZXMpIHsKKyAgICAgICAgdGhpcy5ldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMu UFVTSF9OT1RJQ0UsIGh0dHBNZXNzYWdlLmRhdGEuZGF0YS5ub3RpZmllcyk7CisgICAgICB9Cisg ICAgICBpZiAoUmVzdWx0U2V0VXRpbHMuaXNRdWVyeUZpbmlzaGVkKGh0dHBNZXNzYWdlKSkgewor ICAgICAgICBtc2cgPSB0aGlzLnF1ZXJ5RmluaXNoZWQoaHR0cE1lc3NhZ2UsIG9uUmVzdWx0c0F2 YWlsYWJsZSwgb25FeHBsYWluKTsKKyAgICAgIH0gZWxzZSBpZiAoUmVzdWx0U2V0VXRpbHMuaXNR dWVyeVN0aWxsUnVubmluZyhodHRwTWVzc2FnZSkpIHsKKyAgICAgICAgdGhpcy5ldmVudEJ1cy5m aXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuU0VUX0NPTk5FQ1RJT05fU1RBVFVTLCBodHRwTWVz c2FnZS5kYXRhLmRhdGEudHJhbnNhY3Rpb25fc3RhdHVzKTsKKyAgICAgICAgaWYoaHR0cE1lc3Nh Z2UuZGF0YS5kYXRhLnJlc3VsdCkgeworICAgICAgICAgIHRoaXMuZXZlbnRCdXMuZmlyZUV2ZW50 KFFVRVJZX1RPT0xfRVZFTlRTLlNFVF9NRVNTQUdFLCBodHRwTWVzc2FnZS5kYXRhLmRhdGEucmVz dWx0LCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRo aXMucG9sbEZvclJlc3VsdChvblJlc3VsdHNBdmFpbGFibGUsIG9uRXhwbGFpbiwgb25Qb2xsRXJy b3IpKTsKKyAgICAgIH0gZWxzZSBpZiAoUmVzdWx0U2V0VXRpbHMuaXNDb25uZWN0aW9uVG9TZXJ2 ZXJMb3N0V2hpbGVQb2xsaW5nKGh0dHBNZXNzYWdlKSkgeworICAgICAgICBtc2cgPSBodHRwTWVz c2FnZS5kYXRhLmRhdGEucmVzdWx0OworICAgICAgICB0aGlzLmV2ZW50QnVzLmZpcmVFdmVudChR VUVSWV9UT09MX0VWRU5UUy5TRVRfTUVTU0FHRSwgbXNnLCB0cnVlKTsKKyAgICAgICAgdGhpcy5l dmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuRVhFQ1VUSU9OX0VORCk7CisgICAg ICB9IGVsc2UgaWYgKFJlc3VsdFNldFV0aWxzLmlzUXVlcnlDYW5jZWxsZWQoaHR0cE1lc3NhZ2Up KSB7CisgICAgICAgIG1zZyA9IGh0dHBNZXNzYWdlLmRhdGEuZGF0YS5yZXN1bHQgfHwgJ0V4ZWN1 dGlvbiBDYW5jZWxsZWQhJzsKKyAgICAgICAgdGhpcy5ldmVudEJ1cy5maXJlRXZlbnQoUVVFUllf VE9PTF9FVkVOVFMuU0VUX01FU1NBR0UsIGh0dHBNZXNzYWdlLmRhdGEuZGF0YS5yZXN1bHQgfHwg J0V4ZWN1dGlvbiBDYW5jZWxsZWQhJywgdHJ1ZSk7CisgICAgICAgIHRoaXMuZXZlbnRCdXMuZmly ZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLkVYRUNVVElPTl9FTkQpOworICAgICAgfQorICAgICAg Tm90aWZpZXIuc3VjY2Vzcyhtc2cpOworICAgICAgaWYoIVJlc3VsdFNldFV0aWxzLmlzUXVlcnlT dGlsbFJ1bm5pbmcoaHR0cE1lc3NhZ2UpKSB7CisgICAgICAgIHRoaXMuZXZlbnRCdXMuZmlyZUV2 ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlBVU0hfSElTVE9SWSwgeworICAgICAgICAgIHN0YXR1czog dHJ1ZSwKKyAgICAgICAgICBzdGFydF90aW1lOiB0aGlzLnN0YXJ0VGltZSwKKyAgICAgICAgICBx dWVyeTogdGhpcy5xdWVyeSwKKyAgICAgICAgICByb3dfYWZmZWN0ZWQ6IGh0dHBNZXNzYWdlLmRh dGEuZGF0YT8ucm93c19hZmZlY3RlZCwKKyAgICAgICAgICB0b3RhbF90aW1lOiB0aGlzLnF1ZXJ5 UnVuVGltZSgpLAorICAgICAgICAgIG1lc3NhZ2U6IG1zZywKKyAgICAgICAgICBxdWVyeV9zb3Vy Y2U6IHRoaXMuaGlzdG9yeVF1ZXJ5U291cmNlLAorICAgICAgICAgIGlzX3BnYWRtaW5fcXVlcnk6 IGZhbHNlLAorICAgICAgICB9KTsKKyAgICAgIH0KKyAgICB9IGNhdGNoIChlcnJvcikgeworICAg ICAgb25Qb2xsRXJyb3IoKTsKKyAgICAgIHRoaXMuaGFuZGxlUG9sbEVycm9yKGVycm9yKTsKKyAg ICB9CisgIH0KKworICBnZXRNb3JlUm93cyhhbGw9ZmFsc2UpIHsKKyAgICBsZXQgdXJsID0gdXJs X2Zvcignc3FsZWRpdG9yLmZldGNoJywgeworICAgICAgJ3RyYW5zX2lkJzogdGhpcy50cmFuc0lk LAorICAgIH0pOworICAgIGlmKGFsbCkgeworICAgICAgdXJsID0gdXJsX2Zvcignc3FsZWRpdG9y LmZldGNoX2FsbCcsIHsKKyAgICAgICAgJ3RyYW5zX2lkJzogdGhpcy50cmFuc0lkLAorICAgICAg ICAnZmV0Y2hfYWxsJzogMSwKKyAgICAgIH0pOworICAgIH0KKyAgICByZXR1cm4gdGhpcy5hcGku Z2V0KHVybCk7CisgIH0KKworICBzdG9wRXhlY3V0aW9uKCkgeworICAgIHJldHVybiB0aGlzLmFw aS5wb3N0KAorICAgICAgdXJsX2Zvcignc3FsZWRpdG9yLmNhbmNlbF90cmFuc2FjdGlvbicsIHsn dHJhbnNfaWQnOiB0aGlzLnRyYW5zSWR9KQorICAgICk7CisgIH0KKworICBzYXZlRGF0YShyZXFE YXRhKSB7CisgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoCisgICAgICB1cmxfZm9yKCdzcWxlZGl0 b3Iuc2F2ZScsIHsKKyAgICAgICAgJ3RyYW5zX2lkJzogdGhpcy50cmFuc0lkCisgICAgICB9KSwK KyAgICAgIEpTT04uc3RyaW5naWZ5KHJlcURhdGEpCisgICAgKTsKKyAgfQorCisgIGFzeW5jIHNh dmVSZXN1bHRzVG9GaWxlKGZpbGVOYW1lKSB7CisgICAgdHJ5IHsKKyAgICAgIGxldCB7ZGF0YTog cmVzcERhdGF9ID0gYXdhaXQgdGhpcy5hcGkucG9zdCgKKyAgICAgICAgdXJsX2Zvcignc3FsZWRp dG9yLnF1ZXJ5X3Rvb2xfZG93bmxvYWQnLCB7CisgICAgICAgICAgJ3RyYW5zX2lkJzogdGhpcy50 cmFuc0lkLAorICAgICAgICB9KSwKKyAgICAgICAge2ZpbGVuYW1lOiBmaWxlTmFtZX0KKyAgICAg ICk7CisKKyAgICAgIGlmKCFfLmlzVW5kZWZpbmVkKHJlc3BEYXRhLmRhdGEpKSB7CisgICAgICAg IGlmKCFyZXNwRGF0YS5zdGF0dXMpIHsKKyAgICAgICAgICB0aGlzLmV2ZW50QnVzLmZpcmVFdmVu dChRVUVSWV9UT09MX0VWRU5UUy5TRVRfTUVTU0FHRSwgcmVzcERhdGEuZGF0YS5yZXN1bHQpOwor ICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBsZXQgcmVzcEJsb2IgPSBuZXcgQmxv YihbcmVzcERhdGFdLCB7dHlwZSA6ICd0ZXh0L2Nzdid9KSwKKyAgICAgICAgICB1cmxDcmVhdG9y ID0gd2luZG93LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMLAorICAgICAgICAgIGRvd25sb2FkX3Vy bCA9IHVybENyZWF0b3IuY3JlYXRlT2JqZWN0VVJMKHJlc3BCbG9iKSwKKyAgICAgICAgICBsaW5r ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOworCisgICAgICAgIGRvY3VtZW50LmJvZHku YXBwZW5kQ2hpbGQobGluayk7CisKKyAgICAgICAgaWYgKGdldEJyb3dzZXIoKSA9PT0gJ0lFJyAm JiB3aW5kb3cubmF2aWdhdG9yLm1zU2F2ZUJsb2IpIHsKKyAgICAgICAgLy8gSUUxMCsgOiAoaGFz IEJsb2IsIGJ1dCBub3QgYVtkb3dubG9hZF0gb3IgVVJMKQorICAgICAgICAgIHdpbmRvdy5uYXZp Z2F0b3IubXNTYXZlQmxvYihyZXNwQmxvYiwgZmlsZU5hbWUpOworICAgICAgICB9IGVsc2Ugewor ICAgICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKCdocmVmJywgZG93bmxvYWRfdXJsKTsKKyAgICAg ICAgICBsaW5rLnNldEF0dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlTmFtZSk7CisgICAgICAgICAg bGluay5jbGljaygpOworICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hp bGQobGluayk7CisgICAgICB9CisgICAgICB0aGlzLmV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9U T09MX0VWRU5UUy5UUklHR0VSX1NBVkVfUkVTVUxUU19FTkQpOworICAgIH0gY2F0Y2ggKGVycm9y KSB7CisgICAgICB0aGlzLmV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5UUklH R0VSX1NBVkVfUkVTVUxUU19FTkQpOworICAgICAgdGhpcy5ldmVudEJ1cy5maXJlRXZlbnQoUVVF UllfVE9PTF9FVkVOVFMuSEFORExFX0FQSV9FUlJPUiwgZXJyb3IpOworICAgIH0KKyAgfQorCisg IGluY2x1ZGVGaWx0ZXIocmVxRGF0YSkgeworICAgIHJldHVybiB0aGlzLmFwaS5wb3N0KAorICAg ICAgdXJsX2Zvcignc3FsZWRpdG9yLmluY2x1c2l2ZV9maWx0ZXInLCB7CisgICAgICAgICd0cmFu c19pZCc6IHRoaXMudHJhbnNJZCwKKyAgICAgIH0pLAorICAgICAgSlNPTi5zdHJpbmdpZnkocmVx RGF0YSkKKyAgICApOworICB9CisKKyAgZXhjbHVkZUZpbHRlcihyZXFEYXRhKSB7CisgICAgcmV0 dXJuIHRoaXMuYXBpLnBvc3QoCisgICAgICB1cmxfZm9yKCdzcWxlZGl0b3IuZXhjbHVzaXZlX2Zp bHRlcicsIHsKKyAgICAgICAgJ3RyYW5zX2lkJzogdGhpcy50cmFuc0lkLAorICAgICAgfSksCisg ICAgICBKU09OLnN0cmluZ2lmeShyZXFEYXRhKQorICAgICk7CisgIH0KKworICByZW1vdmVGaWx0 ZXIoKSB7CisgICAgcmV0dXJuIHRoaXMuYXBpLnBvc3QoCisgICAgICB1cmxfZm9yKCdzcWxlZGl0 b3IucmVtb3ZlX2ZpbHRlcicsIHsKKyAgICAgICAgJ3RyYW5zX2lkJzogdGhpcy50cmFuc0lkLAor ICAgICAgfSkKKyAgICApOworICB9CisKKyAgc2V0TGltaXQobGltaXQpIHsKKyAgICByZXR1cm4g dGhpcy5hcGkucG9zdCgKKyAgICAgIHVybF9mb3IoJ3NxbGVkaXRvci5zZXRfbGltaXQnLCB7Cisg ICAgICAgICd0cmFuc19pZCc6IHRoaXMudHJhbnNJZCwKKyAgICAgIH0pLCBKU09OLnN0cmluZ2lm eShwYXJzZUludChsaW1pdCkpCisgICAgKTsKKyAgfQorCisgIGdldEZpbmFsQ29sdW1uKGMsIGlz RWRpdGFibGUsIGlzUEssIHBnVHlwZXNPaWRNYXApIHsKKyAgICBsZXQgY29sdW1uVHlwZUludGVy bmFsID0gcGdUeXBlc09pZE1hcFtjLnR5cGVfY29kZV0gfHwgJ3Vua25vd24nOworICAgIGxldCBj b2x1bW5UeXBlID0gKGlzUEsgPyAnW1BLXSAnIDogJycpICsgY29sdW1uVHlwZUludGVybmFsOwor ICAgIGxldCBjZWxsVHlwZTsKKworICAgIGlmIChjLnByZWNpc2lvbiAmJiBjLnByZWNpc2lvbiA+ PSAwICYmIGMucHJlY2lzaW9uICE9IDY1NTM1KSB7CisgICAgICBjb2x1bW5UeXBlICs9ICcgKCcg KyBjLnByZWNpc2lvbjsKKyAgICAgIGNvbHVtblR5cGUgKz0gYy5zY2FsZSAmJiBjLnNjYWxlICE9 IDY1NTM1ID8KKyAgICAgICAgJywnICsgYy5zY2FsZSArICcpJyA6CisgICAgICAgICcpJzsKKyAg ICB9CisgICAgLy8gSWRlbnRpZnkgY2VsbCB0eXBlIG9mIGNvbHVtbi4KKyAgICBzd2l0Y2ggKGNv bHVtblR5cGVJbnRlcm5hbCkgeworICAgIGNhc2UgJ29pZCc6CisgICAgICBjZWxsVHlwZSA9ICdv aWQnOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnanNvbic6CisgICAgY2FzZSAnanNvbltdJzoK KyAgICBjYXNlICdqc29uYic6CisgICAgY2FzZSAnanNvbmJbXSc6CisgICAgICBjZWxsVHlwZSA9 ICdKc29uJzsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgJ3NtYWxsaW50JzoKKyAgICBjYXNlICdz bWFsbGludFtdJzoKKyAgICBjYXNlICdpbnRlZ2VyJzoKKyAgICBjYXNlICdpbnRlZ2VyW10nOgor ICAgIGNhc2UgJ2JpZ2ludCc6CisgICAgY2FzZSAnYmlnaW50W10nOgorICAgIGNhc2UgJ2RlY2lt YWwnOgorICAgIGNhc2UgJ2RlY2ltYWxbXSc6CisgICAgY2FzZSAnbnVtZXJpYyc6CisgICAgY2Fz ZSAnbnVtZXJpY1tdJzoKKyAgICBjYXNlICdyZWFsJzoKKyAgICBjYXNlICdyZWFsW10nOgorICAg IGNhc2UgJ2RvdWJsZSBwcmVjaXNpb24nOgorICAgIGNhc2UgJ2RvdWJsZSBwcmVjaXNpb25bXSc6 CisgICAgICBjZWxsVHlwZSA9ICdudW1iZXInOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnYm9v bGVhbic6CisgICAgICBjZWxsVHlwZSA9ICdib29sZWFuJzsKKyAgICAgIGJyZWFrOworICAgIGNh c2UgJ2NoYXJhY3Rlcic6CisgICAgY2FzZSAnY2hhcmFjdGVyW10nOgorICAgIGNhc2UgJyJjaGFy Iic6CisgICAgY2FzZSAnImNoYXIiW10nOgorICAgIGNhc2UgJ2NoYXJhY3RlciB2YXJ5aW5nJzoK KyAgICBjYXNlICdjaGFyYWN0ZXIgdmFyeWluZ1tdJzoKKyAgICAgIGlmIChjLmludGVybmFsX3Np emUgJiYgYy5pbnRlcm5hbF9zaXplID49IDAgJiYgYy5pbnRlcm5hbF9zaXplICE9IDY1NTM1KSB7 CisgICAgICAgIC8vIFVwZGF0ZSBjb2x1bW4gdHlwZSB0byBkaXNwbGF5IGxlbmd0aCBvbiBjb2x1 bW4gaGVhZGVyCisgICAgICAgIGNvbHVtblR5cGUgKz0gJyAoJyArIGMuaW50ZXJuYWxfc2l6ZSAr ICcpJzsKKyAgICAgIH0KKyAgICAgIGNlbGxUeXBlID0gJ3N0cmluZyc7CisgICAgICBicmVhazsK KyAgICBjYXNlICdieXRlYSc6CisgICAgY2FzZSAnYnl0ZWFbXSc6CisgICAgICBjZWxsVHlwZSA9 ICdiaW5hcnknOworICAgICAgYnJlYWs7CisgICAgY2FzZSAnZ2VvbWV0cnknOgorICAgICAgLy8g UG9zdEdJUyBnZW9tZXRyeSB0eXBlCisgICAgICBjZWxsVHlwZSA9ICdnZW9tZXRyeSc7CisgICAg ICBpc0VkaXRhYmxlID0gZmFsc2U7CisgICAgICBicmVhazsKKyAgICBjYXNlICdnZW9ncmFwaHkn OgorICAgICAgLy8gUG9zdEdJUyBnZW9ncmFwaHkgdHlwZQorICAgICAgY2VsbFR5cGUgPSAnZ2Vv Z3JhcGh5JzsKKyAgICAgIGlzRWRpdGFibGUgPSBmYWxzZTsKKyAgICAgIGJyZWFrOworICAgIGRl ZmF1bHQ6CisgICAgICBjZWxsVHlwZSA9ICdzdHJpbmcnOworICAgIH0KKworICAgIGxldCBhcnJh eUJyYWNrZXRJZHggPSBjb2x1bW5UeXBlSW50ZXJuYWwubGFzdEluZGV4T2YoJ1tdJyk7CisgICAg cmV0dXJuIHsKKyAgICAgICdrZXknOiBjLm5hbWUsCisgICAgICAnbmFtZSc6IGMubmFtZSwKKyAg ICAgICdkaXNwbGF5X25hbWUnOiBjLmRpc3BsYXlfbmFtZSwKKyAgICAgICd0eXBlJzogY29sdW1u VHlwZUludGVybmFsLAorICAgICAgJ2Rpc3BsYXlfdHlwZSc6IGNvbHVtblR5cGUsCisgICAgICAn Y29sdW1uX3R5cGVfaW50ZXJuYWwnOiBjb2x1bW5UeXBlSW50ZXJuYWwsCisgICAgICAncG9zJzog Yy5wb3MsCisgICAgICAnY2VsbCc6IGNlbGxUeXBlLAorICAgICAgJ2Nhbl9lZGl0JzogKGMubmFt ZSA9PSAnb2lkJykgPyBmYWxzZSA6IGlzRWRpdGFibGUsCisgICAgICAnbm90X251bGwnOiBjLm5v dF9udWxsLAorICAgICAgJ2hhc19kZWZhdWx0X3ZhbCc6IGMuaGFzX2RlZmF1bHRfdmFsLAorICAg ICAgJ2lzX2FycmF5JzogYXJyYXlCcmFja2V0SWR4ID4gLTEgJiYgYXJyYXlCcmFja2V0SWR4ICsg MiA9PSBjb2x1bW5UeXBlSW50ZXJuYWwubGVuZ3RoLAorICAgIH07CisgIH0KKworICBwcm9jZXNz Q29sdW1ucyhkYXRhKSB7CisgICAgbGV0IGNvbHVtbnMgPSBbXTsKKyAgICBsZXQgc2VsZiA9IHRo aXM7CisKKyAgICBsZXQgcGdUeXBlc09pZE1hcCA9IHt9OworICAgIF8uaXNBcnJheShkYXRhLnR5 cGVzKSAmJiBkYXRhLnR5cGVzPy5mb3JFYWNoKCh0KT0+eworICAgICAgcGdUeXBlc09pZE1hcFt0 Lm9pZF0gPSB0LnR5cG5hbWU7CisgICAgfSk7CisKKyAgICAvLyBDcmVhdGUgY29sdW1ucworICAg IGRhdGEuY29saW5mby5mb3JFYWNoKGZ1bmN0aW9uKGMpIHsKKyAgICAgIHZhciBpc1BLID0gZmFs c2UsCisgICAgICAgIGlzRWRpdGFibGUgPSBkYXRhLmNhbl9lZGl0ICYmICghc2VsZi5pc1F1ZXJ5 VG9vbCB8fCBjLmlzX2VkaXRhYmxlKTsKKworICAgICAgLy8gQ2hlY2sgd2hldGhlciB0aGlzIGNv bHVtbiBpcyBhIHByaW1hcnkga2V5CisgICAgICBpZiAoaXNFZGl0YWJsZSkgeworICAgICAgICBp c1BLID0gXy5zb21lKGRhdGEucHJpbWFyeV9rZXlzfHxbXSwgKF92LCBrZXkpPT5rZXkgPT09IGMu bmFtZSk7CisgICAgICB9CisKKyAgICAgIC8vIENyZWF0ZSBjb2x1bW4gbGFiZWwgYW5kIHR5cGUu CisgICAgICBjb2x1bW5zLnB1c2goc2VsZi5nZXRGaW5hbENvbHVtbihjLCBpc0VkaXRhYmxlLCBp c1BLLCBwZ1R5cGVzT2lkTWFwKSk7CisgICAgfSk7CisKKyAgICByZXR1cm4gY29sdW1uczsKKyAg fQorCisgIHByb2Nlc3NDbGlwYm9hcmRWYWwoY29sdW1uVmFsLCBjb2wpIHsKKyAgICBpZihjb2x1 bW5WYWwgPT09ICcnKSB7CisgICAgICBpZihjb2wuaGFzX2RlZmF1bHRfdmFsKSB7CisgICAgICAg IGNvbHVtblZhbCA9IHVuZGVmaW5lZDsKKyAgICAgIH0KKyAgICB9CisgICAgaWYoY29sLmNlbGwg PT09ICdib29sZWFuJykgeworICAgICAgaWYoY29sdW1uVmFsID09ICd0cnVlJykgeworICAgICAg ICBjb2x1bW5WYWwgPSB0cnVlOworICAgICAgfSBlbHNlIGlmKGNvbHVtblZhbCA9PSAnZmFsc2Un KSB7CisgICAgICAgIGNvbHVtblZhbCA9IGZhbHNlOworICAgICAgfSBlbHNlIHsKKyAgICAgICAg Y29sdW1uVmFsID0gbnVsbDsKKyAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGNvbHVtblZhbDsK KyAgfQorCisgIHByb2Nlc3NSb3dzKHJlc3VsdCwgY29sdW1ucywgZnJvbUNsaXBib2FyZD1mYWxz ZSkgeworICAgIGxldCByZXRWYWwgPSBbXTsKKyAgICBpZighXy5pc0FycmF5KHJlc3VsdCkgfHwg IV8uc2l6ZShyZXN1bHQpKSB7CisgICAgICByZXR1cm4gcmV0VmFsOworICAgIH0KKyAgICBmb3Io Y29uc3QgcmVjIG9mIHJlc3VsdCkgeworICAgICAgLy8gQ29udmVydCAyZGFycmF5IHRvIGRpY3Qu CisgICAgICBsZXQgcm93T2JqID0ge307CisgICAgICBmb3IoY29uc3QgY29sIG9mIGNvbHVtbnMp IHsKKyAgICAgICAgbGV0IGNvbHVtblZhbCA9IHJlY1tjb2wucG9zXTsKKyAgICAgICAgLyogSWYg dGhlIHNvdXJjZSBpcyBjbGlwYm9hcmQsIHRoZW4gaXQgbmVlZHMgc29tZSBleHRyYSBoYW5kbGlu ZyAqLworICAgICAgICBpZihmcm9tQ2xpcGJvYXJkKSB7CisgICAgICAgICAgY29sdW1uVmFsID0g dGhpcy5wcm9jZXNzQ2xpcGJvYXJkVmFsKGNvbHVtblZhbCwgY29sKTsKKyAgICAgICAgfQorICAg ICAgICByb3dPYmpbY29sLmtleV0gPSBjb2x1bW5WYWw7CisgICAgICB9CisgICAgICAvKiBUaGlz IHdpbGwgdXNlZCBmb3IgdW5pcXVlbHkgaWRlbnRpZnlpbmcgc2VsZWN0ZWQgcm93cyAqLworICAg ICAgcm93T2JqW3RoaXMuY2xpZW50UEtdID0gdGhpcy5jbGllbnRQS0xhc3RJbmRleC50b1N0cmlu ZygpOworICAgICAgcmV0VmFsLnB1c2gocm93T2JqKTsKKyAgICAgIHRoaXMuY2xpZW50UEtMYXN0 SW5kZXgrKzsKKyAgICB9CisgICAgcmV0dXJuIHJldFZhbDsKKyAgfQorCisgIGdldFBsYW5Kc29u KHJlc3VsdCwgZGF0YSkgeworICAgIGlmKHJlc3VsdCAmJiAhXy5pc0VtcHR5KGRhdGEuY29saW5m bykKKyAgICAgICYmIGRhdGEuY29saW5mb1swXS5uYW1lID09ICdRVUVSWSBQTEFOJyAmJiAhXy5p c0VtcHR5KGRhdGEudHlwZXMpCisgICAgICAmJiBkYXRhLnR5cGVzWzBdICYmIGRhdGEudHlwZXNb MF0udHlwbmFtZSA9PT0gJ2pzb24nKSB7CisgICAgICAvKiBqc29uIGlzIHNlbnQgYXMgdGV4dCwg cGFyc2UgaXQgKi8KKyAgICAgIGxldCBwbGFuSnNvbiA9IEpTT04ucGFyc2UoZGF0YS5yZXN1bHRb MF1bMF0pOworICAgICAgaWYgKHBsYW5Kc29uICYmIHBsYW5Kc29uWzBdICYmIHBsYW5Kc29uWzBd Lmhhc093blByb3BlcnR5KCdQbGFuJykgJiYKKyAgICAgICAgICAgIF8uaXNPYmplY3QocGxhbkpz b25bMF1bJ1BsYW4nXSkKKyAgICAgICkgeworICAgICAgICByZXR1cm4gcGxhbkpzb247CisgICAg ICB9CisgICAgfQorICAgIHJldHVybiBudWxsOworICB9CisKKyAgcXVlcnlGaW5pc2hlZChodHRw TWVzc2FnZSwgb25SZXN1bHRzQXZhaWxhYmxlLCBvbkV4cGxhaW4pIHsKKyAgICBsZXQgbXNnOwor ICAgIHRoaXMuZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLkVYRUNVVElPTl9F TkQsIHRydWUpOworICAgIHRoaXMuZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRT LlNFVF9DT05ORUNUSU9OX1NUQVRVUywgaHR0cE1lc3NhZ2UuZGF0YS5kYXRhLnRyYW5zYWN0aW9u X3N0YXR1cyk7CisgICAgdGhpcy5zZXRFbmRUaW1lKG5ldyBEYXRlKCkpOworCisgICAgbXNnID0g Z2V0dGV4dCgnUXVlcnkgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5IGluICVzLicsIHRoaXMucXVlcnlS dW5UaW1lKCkpOworICAgIGlmKHRoaXMuaGFzUmVzdWx0c1RvRGlzcGxheShodHRwTWVzc2FnZS5k YXRhLmRhdGEpKSB7CisgICAgICBpZighXy5pc051bGwoaHR0cE1lc3NhZ2UuZGF0YS5kYXRhLmFk ZGl0aW9uYWxfbWVzc2FnZXMpKXsKKyAgICAgICAgbXNnID0gaHR0cE1lc3NhZ2UuZGF0YS5kYXRh LmFkZGl0aW9uYWxfbWVzc2FnZXMgKyAnXG4nICsgbXNnOworICAgICAgfQorICAgICAgdGhpcy5l dmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuU0VUX01FU1NBR0UsIG1zZyk7Cisg ICAgICB0aGlzLnNldENsaWVudFBLKGh0dHBNZXNzYWdlLmRhdGEuZGF0YS5jbGllbnRfcHJpbWFy eV9rZXkpOworICAgICAgbGV0IHtyZXN1bHR9ID0gaHR0cE1lc3NhZ2UuZGF0YS5kYXRhOworICAg ICAgbGV0IGRhdGEgPSB7CisgICAgICAgIC4uLnRoaXMuc3RhcnREYXRhLAorICAgICAgICAuLi5o dHRwTWVzc2FnZS5kYXRhLmRhdGEsCisgICAgICB9OworICAgICAgZGF0YS5wcmltYXJ5X2tleXMg PSAoXy5pc0VtcHR5KGRhdGEucHJpbWFyeV9rZXlzKSAmJiBkYXRhLmhhc19vaWRzKSA/IGRhdGEu b2lkcyA6IGRhdGEucHJpbWFyeV9rZXlzOworICAgICAgZGF0YS5jYW5fZWRpdCA9ICFfLmlzRW1w dHkoZGF0YS5wcmltYXJ5X2tleXMpOworICAgICAgbGV0IHByb2NDb2x1bW5zID0gdGhpcy5wcm9j ZXNzQ29sdW1ucyhkYXRhKTsKKyAgICAgIG9uUmVzdWx0c0F2YWlsYWJsZShkYXRhLCBwcm9jQ29s dW1ucywgdGhpcy5wcm9jZXNzUm93cyhyZXN1bHQsIHByb2NDb2x1bW5zLCB0aGlzLnByb2Nlc3NS b3dzKHJlc3VsdCwgcHJvY0NvbHVtbnMpKSk7CisgICAgICB0aGlzLnNldFN0YXJ0RGF0YShudWxs KTsKKyAgICAgIGxldCBwbGFuSnNvbiA9IHRoaXMuZ2V0UGxhbkpzb24ocmVzdWx0LCBkYXRhKTsK KyAgICAgIGlmKHBsYW5Kc29uKSB7CisgICAgICAgIG9uRXhwbGFpbihwbGFuSnNvbik7CisgICAg ICB9IGVsc2UgeworICAgICAgICB0aGlzLmV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VW RU5UUy5GT0NVU19QQU5FTCwgUEFORUxTLkRBVEFfT1VUUFVUKTsKKyAgICAgIH0KKyAgICB9IGVs c2UgeworICAgICAgaWYgKGh0dHBNZXNzYWdlLmRhdGEuZGF0YS5yZXN1bHQpIHsKKyAgICAgICAg bXNnID0gaHR0cE1lc3NhZ2UuZGF0YS5kYXRhLnJlc3VsdCArICdcblxuJyArIG1zZzsKKyAgICAg IH0KKyAgICAgIHRoaXMuZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlNFVF9N RVNTQUdFLCBtc2csIHRydWUpOworICAgICAgdGhpcy5ldmVudEJ1cy5maXJlRXZlbnQoUVVFUllf VE9PTF9FVkVOVFMuRk9DVVNfUEFORUwsIFBBTkVMUy5NRVNTQUdFUyk7CisgICAgfQorICAgIHJl dHVybiBtc2c7CisgIH0KK30KKworZnVuY3Rpb24gZGF0YUNoYW5nZVJlZHVjZXIoc3RhdGUsIGFj dGlvbikgeworICBsZXQgZGF0YUNoYW5nZSA9IF8uY2xvbmUoc3RhdGUpOworICBsZXQgY291bnQ7 CisgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHsKKyAgY2FzZSAndXBkYXRlZCc6CisgICAgZGF0YUNo YW5nZS51cGRhdGVkW2FjdGlvbi5jbGllbnRQS10gPSB7CisgICAgICAuLi5kYXRhQ2hhbmdlLnVw ZGF0ZWRbYWN0aW9uLmNsaWVudFBLXSwKKyAgICAgIC4uLmFjdGlvbi5wYXlsb2FkLAorICAgICAg ZGF0YTogeworICAgICAgICAuLi5kYXRhQ2hhbmdlLnVwZGF0ZWRbYWN0aW9uLmNsaWVudFBLXT8u ZGF0YSwKKyAgICAgICAgLi4uYWN0aW9uLnBheWxvYWQuZGF0YSwKKyAgICAgIH0KKyAgICB9Owor ICAgIGJyZWFrOworICBjYXNlICdhZGRlZCc6CisgICAgYWN0aW9uLmFkZCA9IGFjdGlvbi5hZGQg fHwge307CisgICAgYWN0aW9uLnJlbW92ZSA9IGFjdGlvbi5yZW1vdmUgfHwgW107CisgICAgZGF0 YUNoYW5nZS5hZGRlZCA9IF8ucGlja0J5KGRhdGFDaGFuZ2UuYWRkZWQsIChfdiwgayk9PihhY3Rp b24ucmVtb3ZlLmluZGV4T2YoaykgPT0gLTEpKTsKKyAgICBkYXRhQ2hhbmdlLmFkZGVkX2luZGV4 ID0gXy5waWNrQnkoZGF0YUNoYW5nZS5hZGRlZF9pbmRleCwgKHYpPT4oYWN0aW9uLnJlbW92ZS5p bmRleE9mKHYpID09IC0xKSk7CisgICAgY291bnQgPSBfLm1heChPYmplY3Qua2V5cyhkYXRhQ2hh bmdlLmFkZGVkX2luZGV4KSl8fDA7CisgICAgT2JqZWN0LmtleXMoYWN0aW9uLmFkZCkuZm9yRWFj aCgoayk9PnsKKyAgICAgIGRhdGFDaGFuZ2UuYWRkZWRfaW5kZXhbKytjb3VudF0gPSBrOworICAg IH0pOworICAgIGRhdGFDaGFuZ2UuYWRkZWQgPSB7CisgICAgICAuLi5kYXRhQ2hhbmdlLmFkZGVk LAorICAgICAgLi4uYWN0aW9uLmFkZCwKKyAgICB9OworICAgIGJyZWFrOworICBjYXNlICdkZWxl dGVkJzoKKyAgICBkYXRhQ2hhbmdlLmRlbGV0ZWQgPSBfLnBpY2tCeShkYXRhQ2hhbmdlLmRlbGV0 ZWQsIChfdiwgayk9PihhY3Rpb24ucmVtb3ZlLmluZGV4T2YoaykgPT0gLTEpKTsKKyAgICBkYXRh Q2hhbmdlLmRlbGV0ZWQgPSB7CisgICAgICAuLi5kYXRhQ2hhbmdlLmRlbGV0ZWQsCisgICAgICAu Li5hY3Rpb24uYWRkLAorICAgIH07CisgICAgYnJlYWs7CisgIGNhc2UgJ3Jlc2V0JzoKKyAgICBk YXRhQ2hhbmdlID0geworICAgICAgdXBkYXRlZDoge30sCisgICAgICBhZGRlZDoge30sCisgICAg ICBhZGRlZF9pbmRleDoge30sCisgICAgICBkZWxldGVkOiB7fSwKKyAgICB9OworICAgIGJyZWFr OworICBkZWZhdWx0OgorICAgIGJyZWFrOworICB9CisKKyAgcmV0dXJuIGRhdGFDaGFuZ2U7Cit9 CisKK2V4cG9ydCBmdW5jdGlvbiBSZXN1bHRTZXQoKSB7CisgIGNvbnN0IGNvbnRhaW5lclJlZiA9 IFJlYWN0LnVzZVJlZihudWxsKTsKKyAgY29uc3QgZXZlbnRCdXMgPSB1c2VDb250ZXh0KFF1ZXJ5 VG9vbEV2ZW50c0NvbnRleHQpOworICBjb25zdCBxdWVyeVRvb2xDdHggPSB1c2VDb250ZXh0KFF1 ZXJ5VG9vbENvbnRleHQpOworICBjb25zdCBbbG9hZGVyVGV4dCwgc2V0TG9hZGVyVGV4dF0gPSB1 c2VTdGF0ZSgnJyk7CisgIGNvbnN0IFtxdWVyeURhdGEsIHNldFF1ZXJ5RGF0YV0gPSB1c2VTdGF0 ZShudWxsKTsKKyAgY29uc3QgW3Jvd3MsIHNldFJvd3NdID0gdXNlU3RhdGUoW10pOworICBjb25z dCBbY29sdW1ucywgc2V0Q29sdW1uc10gPSB1c2VTdGF0ZShbXSk7CisgIGNvbnN0IFtpc0xvYWRp bmdNb3JlLCBzZXRJc0xvYWRpbmdNb3JlXSA9IHVzZVN0YXRlKGZhbHNlKTsKKyAgY29uc3QgYXBp ID0gZ2V0QXBpSW5zdGFuY2UoKTsKKyAgY29uc3QgcnN1ID0gUmVhY3QudXNlUmVmKG5ldyBSZXN1 bHRTZXRVdGlscyhhcGksIHF1ZXJ5VG9vbEN0eC5wYXJhbXMudHJhbnNfaWQpKTsKKyAgY29uc3Qg W2RhdGFDaGFuZ2VTdG9yZSwgZGlzcGF0Y2hEYXRhQ2hhbmdlXSA9IFJlYWN0LnVzZVJlZHVjZXIo ZGF0YUNoYW5nZVJlZHVjZXIsIHt9KTsKKyAgY29uc3QgW3NlbGVjdGVkUm93cywgc2V0U2VsZWN0 ZWRSb3dzXSA9IHVzZVN0YXRlKG5ldyBTZXQoKSk7CisgIGNvbnN0IFtzZWxlY3RlZENvbHVtbnMs IHNldFNlbGVjdGVkQ29sdW1uc10gPSB1c2VTdGF0ZShuZXcgU2V0KCkpOworICBjb25zdCBbc2Vs ZWN0ZWRDZWxsLCBzZXRTZWxlY3RlZENlbGxdID0gdXNlU3RhdGUoW10pOworICBjb25zdCBbcm93 c1Jlc2V0S2V5LCBzZXRSb3dzUmVzZXRLZXldID0gdXNlU3RhdGUodHJ1ZSk7CisKKyAgcnN1LmN1 cnJlbnQuc2V0RXZlbnRCdXMoZXZlbnRCdXMpOworCisgIGNvbnN0IGV4ZWN1dGlvblN0YXJ0Q2Fs bGJhY2sgPSBhc3luYyAocXVlcnksIGV4cGxhaW5PYmplY3QsIGV4dGVybmFsPWZhbHNlLCByZWNv bm5lY3Q9ZmFsc2UpPT57CisgICAgLyogUmVzZXQgKi8KKyAgICBkaXNwYXRjaERhdGFDaGFuZ2Uo e3R5cGU6ICdyZXNldCd9KTsKKyAgICBzZXRTZWxlY3RlZFJvd3MobmV3IFNldCgpKTsKKyAgICBz ZXRTZWxlY3RlZENvbHVtbnMobmV3IFNldCgpKTsKKyAgICBzZXRMb2FkZXJUZXh0KGdldHRleHQo J1dhaXRpbmcgZm9yIHRoZSBxdWVyeSB0byBjb21wbGV0ZS4uLicpKTsKKyAgICBsZXQgZ29Gb3JQ b2xsID0gYXdhaXQgcnN1LmN1cnJlbnQuc3RhcnRFeGVjdXRpb24oCisgICAgICBxdWVyeSwgZXhw bGFpbk9iamVjdCwKKyAgICAgICgpPT57CisgICAgICAgIHNldENvbHVtbnMoW10pOworICAgICAg ICBzZXRSb3dzKFtdKTsKKyAgICAgIH0sCisgICAgICB7aXNRdWVyeVRvb2w6IHF1ZXJ5VG9vbEN0 eC5wYXJhbXMuaXNfcXVlcnlfdG9vbCwgZXh0ZXJuYWw6IGV4dGVybmFsLCByZWNvbm5lY3Q6IHJl Y29ubmVjdH0KKyAgICApOworICAgIGlmKGdvRm9yUG9sbCkgeworICAgICAgcnN1LmN1cnJlbnQu cG9sbEZvclJlc3VsdCgKKyAgICAgICAgKHByb2NRdWVyeURhdGEsIHByb2NDb2x1bW5zLCBwcm9j Um93cyk9PnsKKyAgICAgICAgICBzZXRRdWVyeURhdGEocHJvY1F1ZXJ5RGF0YSk7CisgICAgICAg ICAgc2V0Q29sdW1ucyhwcm9jQ29sdW1ucyk7CisgICAgICAgICAgc2V0Um93cyhwcm9jUm93cyk7 CisgICAgICAgICAgc2V0Um93c1Jlc2V0S2V5KCFyb3dzUmVzZXRLZXkpOworICAgICAgICB9LAor ICAgICAgICAocGxhbkpzb24pPT57CisgICAgICAgICAgTGF5b3V0SGVscGVyLm9wZW5UYWIocXVl cnlUb29sQ3R4LmRvY2tlciwgeworICAgICAgICAgICAgaWQ6IFBBTkVMUy5FWFBMQUlOLAorICAg ICAgICAgICAgdGl0bGU6J0V4cGxhaW4nLAorICAgICAgICAgICAgY29udGVudDogPEV4cGxhaW4g cGxhbnM9e3BsYW5Kc29ufSAvPiwKKyAgICAgICAgICAgIGNsb3NhYmxlOiB0cnVlLAorICAgICAg ICAgIH0sIFBBTkVMUy5NRVNTQUdFUywgJ2FmdGVyLXRhYicsIHRydWUpOworICAgICAgICB9LAor ICAgICAgICAoKT0+eworICAgICAgICAgIHNldENvbHVtbnMoW10pOworICAgICAgICAgIHNldFJv d3MoW10pOworICAgICAgICB9CisgICAgICApOworICAgIH0KKyAgfTsKKworICB1c2VFZmZlY3Qo KCk9PnsKKyAgICBldmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlRS SUdHRVJfU1RPUF9FWEVDVVRJT04sIGFzeW5jICgpPT57CisgICAgICB0cnkgeworICAgICAgICBh d2FpdCByc3UuY3VycmVudC5zdG9wRXhlY3V0aW9uKCk7CisgICAgICB9IGNhdGNoKGUpIHsKKyAg ICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLkhBTkRMRV9BUElfRVJS T1IsIGUpOworICAgICAgfQorICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZF TlRTLlNFVF9DT05ORUNUSU9OX1NUQVRVUywgQ09OTkVDVElPTl9TVEFUVVMuVFJBTlNBQ1RJT05f U1RBVFVTX0lETEUpOworICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRT LkVYRUNVVElPTl9FTkQpOworICAgIH0pOworCisgICAgZXZlbnRCdXMucmVnaXN0ZXJMaXN0ZW5l cihRVUVSWV9UT09MX0VWRU5UUy5FWEVDVVRJT05fRU5ELCAoKT0+eworICAgICAgc2V0TG9hZGVy VGV4dChudWxsKTsKKyAgICB9KTsKKworICAgIGV2ZW50QnVzLnJlZ2lzdGVyTGlzdGVuZXIoUVVF UllfVE9PTF9FVkVOVFMuVFJJR0dFUl9TQVZFX1JFU1VMVFMsICgpPT57CisgICAgICBsZXQgZXh0 ZW5zaW9uID0gcXVlcnlUb29sQ3R4LnByZWZlcmVuY2VzPy5zcWxlZGl0b3I/LmNzdl9maWVsZF9z ZXBhcmF0b3IgPT09ICcsJyA/ICcuY3N2JzogJy50eHQnOworICAgICAgbGV0IGZpbGVOYW1lID0g J2RhdGEtJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgZXh0ZW5zaW9uOworICAgICAgaWYoIXF1 ZXJ5VG9vbEN0eC5wYXJhbXMuaXNfcXVlcnlfdG9vbCkgeworICAgICAgICBmaWxlTmFtZSA9IHF1 ZXJ5VG9vbEN0eC5wYXJhbXMubm9kZV9uYW1lICsgZXh0ZW5zaW9uOworICAgICAgfQorICAgICAg c2V0TG9hZGVyVGV4dChnZXR0ZXh0KCdEb3dubG9hZGluZyByZXN1bHRzLi4uJykpOworICAgICAg cnN1LmN1cnJlbnQuc2F2ZVJlc3VsdHNUb0ZpbGUoZmlsZU5hbWUpOworICAgICAgc2V0TG9hZGVy VGV4dCgnJyk7CisgICAgfSk7CisKKyAgICBldmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZ X1RPT0xfRVZFTlRTLlRSSUdHRVJfU0VUX0xJTUlULCBhc3luYyAobGltaXQpPT57CisgICAgICBz ZXRMb2FkZXJUZXh0KGdldHRleHQoJ1NldHRpbmcgdGhlIGxpbWl0IG9uIHRoZSByZXN1bHQuLi4n KSk7CisgICAgICB0cnkgeworICAgICAgICBhd2FpdCByc3UuY3VycmVudC5zZXRMaW1pdChsaW1p dCk7CisgICAgICAgIHNldExvYWRlclRleHQoJycpOworICAgICAgICBldmVudEJ1cy5maXJlRXZl bnQoUVVFUllfVE9PTF9FVkVOVFMuVFJJR0dFUl9FWEVDVVRJT04pOworICAgICAgfSBjYXRjaChl cnIpIHsKKyAgICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLkhBTkRM RV9BUElfRVJST1IsIGVyciwgeworICAgICAgICAgIGNoZWNrVHJhbnNhY3Rpb246IHRydWUsCisg ICAgICAgIH0pOworICAgICAgICBzZXRMb2FkZXJUZXh0KCcnKTsKKyAgICAgIH0KKyAgICB9KTsK KworICAgIGV2ZW50QnVzLnJlZ2lzdGVyTGlzdGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuVFJJR0dF Ul9SRU1PVkVfRklMVEVSLCBhc3luYyAoKT0+eworICAgICAgc2V0TG9hZGVyVGV4dChnZXR0ZXh0 KCdSZW1vdmluZyB0aGUgZmlsdGVyLi4uJykpOworICAgICAgdHJ5IHsKKyAgICAgICAgYXdhaXQg cnN1LmN1cnJlbnQucmVtb3ZlRmlsdGVyKCk7CisgICAgICAgIHNldExvYWRlclRleHQoJycpOwor ICAgICAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuVFJJR0dFUl9FWEVD VVRJT04pOworICAgICAgfSBjYXRjaChlcnIpIHsKKyAgICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50 KFFVRVJZX1RPT0xfRVZFTlRTLkhBTkRMRV9BUElfRVJST1IsIGVyciwgeworICAgICAgICAgIGNo ZWNrVHJhbnNhY3Rpb246IHRydWUsCisgICAgICAgIH0pOworICAgICAgICBzZXRMb2FkZXJUZXh0 KCcnKTsKKyAgICAgIH0KKyAgICB9KTsKKyAgfSwgW10pOworCisgIHVzZUVmZmVjdCgoKT0+ewor ICAgIGV2ZW50QnVzLnJlZ2lzdGVyTGlzdGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuRVhFQ1VUSU9O X1NUQVJULCBleGVjdXRpb25TdGFydENhbGxiYWNrKTsKKyAgICByZXR1cm4gKCk9PnsKKyAgICAg IGV2ZW50QnVzLmRlcmVnaXN0ZXJMaXN0ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5FWEVDVVRJT05f U1RBUlQsIGV4ZWN1dGlvblN0YXJ0Q2FsbGJhY2spOworICAgIH07CisgIH0sIFtxdWVyeVRvb2xD dHguZG9ja2VyXSk7CisKKyAgdXNlRWZmZWN0KCgpPT57CisgICAgY29uc3QgdHJpZ2dlckZpbHRl ciA9IGFzeW5jIChpbmNsdWRlKT0+eworICAgICAgc2V0TG9hZGVyVGV4dChnZXR0ZXh0KCdBcHBs eWluZyB0aGUgbmV3IGZpbHRlci4uLicpKTsKKyAgICAgIGlmKCFzZWxlY3RlZENlbGwpIHsKKyAg ICAgICAgcmV0dXJuOworICAgICAgfQorICAgICAgdHJ5IHsKKyAgICAgICAgbGV0IGRhdGEgPSB7 CisgICAgICAgICAgW3NlbGVjdGVkQ2VsbFsxXS5rZXldOiBzZWxlY3RlZENlbGxbMF1bc2VsZWN0 ZWRDZWxsWzFdLmtleV0sCisgICAgICAgIH07CisgICAgICAgIGlmKGluY2x1ZGUpIHsKKyAgICAg ICAgICBhd2FpdCByc3UuY3VycmVudC5pbmNsdWRlRmlsdGVyKGRhdGEpOworICAgICAgICB9IGVs c2UgeworICAgICAgICAgIGF3YWl0IHJzdS5jdXJyZW50LmV4Y2x1ZGVGaWx0ZXIoZGF0YSk7Cisg ICAgICAgIH0KKyAgICAgICAgc2V0TG9hZGVyVGV4dCgnJyk7CisgICAgICAgIGV2ZW50QnVzLmZp cmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5UUklHR0VSX0VYRUNVVElPTik7CisgICAgICB9IGNh dGNoKGVycikgeworICAgICAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMu SEFORExFX0FQSV9FUlJPUiwgZXJyLCB7CisgICAgICAgICAgY2hlY2tUcmFuc2FjdGlvbjogdHJ1 ZSwKKyAgICAgICAgfSk7CisgICAgICAgIHNldExvYWRlclRleHQoJycpOworICAgICAgfQorICAg IH07CisgICAgZXZlbnRCdXMucmVnaXN0ZXJMaXN0ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5UUklH R0VSX0lOQ0xVREVfRVhDTFVERV9GSUxURVIsIHRyaWdnZXJGaWx0ZXIpOworICAgIHJldHVybiAo KT0+ZXZlbnRCdXMuZGVyZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlRSSUdHRVJf SU5DTFVERV9FWENMVURFX0ZJTFRFUiwgdHJpZ2dlckZpbHRlcik7CisgIH0sIFtzZWxlY3RlZENl bGxdKTsKKworICB1c2VFZmZlY3QoKCk9PnsKKyAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllf VE9PTF9FVkVOVFMuU0VMRUNURURfUk9XU19DSEFOR0VELCBzZWxlY3RlZFJvd3Muc2l6ZSk7Cisg IH0sIFtzZWxlY3RlZFJvd3Muc2l6ZV0pOworCisgIHVzZUVmZmVjdCgoKT0+eworICAgIHJzdS5j dXJyZW50LnRyYW5zSWQgPSBxdWVyeVRvb2xDdHgucGFyYW1zLnRyYW5zX2lkOworICB9LCBbcXVl cnlUb29sQ3R4LnBhcmFtcy50cmFuc19pZF0pOworCisgIHVzZUVmZmVjdCgoKT0+eworICAgIGV2 ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5ST1dTX0ZFVENIRUQsIHF1ZXJ5RGF0 YT8ucm93c19mZXRjaGVkX3RvLCBxdWVyeURhdGE/LnJvd3NfYWZmZWN0ZWQpOworICB9LCBbcXVl cnlEYXRhXSk7CisKKyAgY29uc3Qgd2FyblNhdmVEYXRhQ2xvc2UgPSAoKT0+eworICAgIC8vIE5v IGNoYW5nZXMuCisgICAgaWYoIV8uc2l6ZShkYXRhQ2hhbmdlU3RvcmUudXBkYXRlZCkgJiYgIV8u c2l6ZShkYXRhQ2hhbmdlU3RvcmUuYWRkZWQpICYmICFfLnNpemUoZGF0YUNoYW5nZVN0b3JlLmRl bGV0ZWQpCisgICAgICAgIHx8ICFxdWVyeVRvb2xDdHgucHJlZmVyZW5jZXM/LnNxbGVkaXRvci5w cm9tcHRfc2F2ZV9kYXRhX2NoYW5nZXMpIHsKKyAgICAgIGV2ZW50QnVzLmZpcmVFdmVudChRVUVS WV9UT09MX0VWRU5UUy5XQVJOX1NBVkVfVEVYVF9DTE9TRSk7CisgICAgICByZXR1cm47CisgICAg fQorICAgIHF1ZXJ5VG9vbEN0eC5tb2RhbC5zaG93TW9kYWwoZ2V0dGV4dCgnU2F2ZSBkYXRhIGNo YW5nZXM/JyksIChjbG9zZU1vZGFsKT0+KAorICAgICAgPENvbmZpcm1TYXZlQ29udGVudAorICAg ICAgICBjbG9zZU1vZGFsPXtjbG9zZU1vZGFsfQorICAgICAgICB0ZXh0PXtnZXR0ZXh0KCdUaGUg ZGF0YSBoYXMgY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSBjaGFuZ2VzPycpfQorICAgICAg ICBvbkRvbnRTYXZlPXsoKT0+eworICAgICAgICAgIGV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9U T09MX0VWRU5UUy5XQVJOX1NBVkVfVEVYVF9DTE9TRSk7CisgICAgICAgIH19CisgICAgICAgIG9u U2F2ZT17YXN5bmMgKCk9PnsKKyAgICAgICAgICBhd2FpdCB0cmlnZ2VyU2F2ZURhdGEoKTsKKyAg ICAgICAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuV0FSTl9TQVZFX1RF WFRfQ0xPU0UpOworICAgICAgICB9fQorICAgICAgLz4KKyAgICApKTsKKyAgfTsKKyAgdXNlRWZm ZWN0KCgpPT57CisgICAgbGV0IGlzRGlydHkgPSBfLnNpemUoZGF0YUNoYW5nZVN0b3JlLnVwZGF0 ZWQpIHx8IF8uc2l6ZShkYXRhQ2hhbmdlU3RvcmUuYWRkZWQpIHx8IF8uc2l6ZShkYXRhQ2hhbmdl U3RvcmUuZGVsZXRlZCk7CisgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRT LkRBVEFHUklEX0NIQU5HRUQsIGlzRGlydHksIGRhdGFDaGFuZ2VTdG9yZSk7CisKKyAgICBldmVu dEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLldBUk5fU0FWRV9EQVRBX0NM T1NFLCB3YXJuU2F2ZURhdGFDbG9zZSk7CisgICAgcmV0dXJuICgpPT57CisgICAgICBldmVudEJ1 cy5kZXJlZ2lzdGVyTGlzdGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuV0FSTl9TQVZFX0RBVEFfQ0xP U0UsIHdhcm5TYXZlRGF0YUNsb3NlKTsKKyAgICB9OworICB9LCBbZGF0YUNoYW5nZVN0b3JlXSk7 CisKKyAgY29uc3QgdHJpZ2dlclNhdmVEYXRhID0gYXN5bmMgKCk9PnsKKyAgICByc3UuY3VycmVu dC5oaXN0b3J5UXVlcnlTb3VyY2UgPSBRdWVyeVNvdXJjZXMuU0FWRV9EQVRBOworICAgIHNldExv YWRlclRleHQoZ2V0dGV4dCgnU2F2aW5nIGRhdGEuLi4nKSk7CisgICAgaWYoIV8uc2l6ZShkYXRh Q2hhbmdlU3RvcmUudXBkYXRlZCkgJiYgIV8uc2l6ZShkYXRhQ2hhbmdlU3RvcmUuYWRkZWQpICYm ICFfLnNpemUoZGF0YUNoYW5nZVN0b3JlLmRlbGV0ZWQpKSB7CisgICAgICBzZXRMb2FkZXJUZXh0 KG51bGwpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICB0cnkgeworICAgICAgLyogQ29udmVy dCB0aGUgYWRkZWQgaW5mbyB0byBhY3R1YWwgcm93cyAqLworICAgICAgbGV0IGFkZGVkID0gey4u LmRhdGFDaGFuZ2VTdG9yZS5hZGRlZH07CisgICAgICBPYmplY3Qua2V5cyhhZGRlZCkubWFwKChj bGllbnRQSyk9PnsKKyAgICAgICAgYWRkZWRbY2xpZW50UEtdLmRhdGEgPSBfLmZpbmQocm93cywg KHIpPT5yb3dLZXlHZXR0ZXIocik9PWNsaWVudFBLKTsKKyAgICAgIH0pOworICAgICAgbGV0IHtk YXRhOiByZXNwRGF0YX0gPSBhd2FpdCByc3UuY3VycmVudC5zYXZlRGF0YSh7CisgICAgICAgIHVw ZGF0ZWQ6IGRhdGFDaGFuZ2VTdG9yZS51cGRhdGVkLAorICAgICAgICBkZWxldGVkOiBkYXRhQ2hh bmdlU3RvcmUuZGVsZXRlZCwKKyAgICAgICAgYWRkZWRfaW5kZXg6IGRhdGFDaGFuZ2VTdG9yZS5h ZGRlZF9pbmRleCwKKyAgICAgICAgYWRkZWQ6IGFkZGVkLAorICAgICAgICBjb2x1bW5zOiBjb2x1 bW5zLAorICAgICAgfSk7CisKKyAgICAgIHRyeSB7CisgICAgICAgIHJlc3BEYXRhLmRhdGEucXVl cnlfcmVzdWx0cy5mb3JFYWNoKChyKT0+eworICAgICAgICAgIGV2ZW50QnVzLmZpcmVFdmVudChR VUVSWV9UT09MX0VWRU5UUy5QVVNIX0hJU1RPUlksIHsKKyAgICAgICAgICAgICdzdGF0dXMnOiBy LnN0YXR1cywKKyAgICAgICAgICAgICdzdGFydF90aW1lJzogcnN1LmN1cnJlbnQuc3RhcnRUaW1l LAorICAgICAgICAgICAgJ3F1ZXJ5Jzogci5zcWwsCisgICAgICAgICAgICAncm93X2FmZmVjdGVk Jzogci5yb3dzX2FmZmVjdGVkLAorICAgICAgICAgICAgJ3RvdGFsX3RpbWUnOiBudWxsLAorICAg ICAgICAgICAgJ21lc3NhZ2UnOiByLnJlc3VsdCwKKyAgICAgICAgICAgICdxdWVyeV9zb3VyY2Un OiBRdWVyeVNvdXJjZXMuU0FWRV9EQVRBLAorICAgICAgICAgICAgJ2lzX3BnYWRtaW5fcXVlcnkn OiB0cnVlLAorICAgICAgICAgICAgJ2luZm8nOiBnZXR0ZXh0KCdUaGlzIHF1ZXJ5IHdhcyBnZW5l cmF0ZWQgYnkgcGdBZG1pbiBhcyBwYXJ0IG9mIGEgIlNhdmUgRGF0YSIgb3BlcmF0aW9uJyksCisg ICAgICAgICAgfSk7CisgICAgICAgIH0pOworICAgICAgfSBjYXRjaCAoX2UpIHsvKiBIaXN0b3J5 IGVycm9ycyBzaG91bGQgbm90IGJvdGhlciBvdGhlcnMgKi99CisKKyAgICAgIGlmKCFyZXNwRGF0 YS5kYXRhLnN0YXR1cykgeworICAgICAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9F VkVOVFMuU0FWRV9EQVRBX0RPTkUsIGZhbHNlKTsKKyAgICAgICAgZXZlbnRCdXMuZmlyZUV2ZW50 KFFVRVJZX1RPT0xfRVZFTlRTLlNFVF9NRVNTQUdFLCByZXNwRGF0YS5kYXRhLnJlc3VsdCk7Cisg ICAgICAgIE5vdGlmaWVyLmVycm9yKHJlc3BEYXRhLmRhdGEucmVzdWx0LCAyMDAwMCk7CisgICAg ICAgIC8vIElmIHRoZSB0cmFuc2FjdGlvbiBpcyBub3QgaWRsZSwgbm90aWZ5IHRoZSB1c2VyIHRo YXQgcHJldmlvdXMgcXVlcmllcyBhcmUgbm90IHJvbGxlZCBiYWNrLAorICAgICAgICAvLyBvbmx5 IHRoZSBmYWlsZWQgc2F2ZSBxdWVyaWVzLgorICAgICAgICBpZiAocmVzcERhdGEuZGF0YS50cmFu c2FjdGlvbl9zdGF0dXMgIT0gQ09OTkVDVElPTl9TVEFUVVMuVFJBTlNBQ1RJT05fU1RBVFVTX0lE TEUpIHsKKyAgICAgICAgICBOb3RpZmllci5pbmZvKGdldHRleHQoJ1NhdmluZyBkYXRhIGNoYW5n ZXMgd2FzIHJvbGxlZCBiYWNrIGJ1dCB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBpcyAnICsKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0aWxsIGFjdGl2ZTsgcHJldmlvdXMgcXVl cmllcyBhcmUgdW5hZmZlY3RlZC4nKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBoaWdobGln aHQgZXJyb3Igcm93cworICAgICAgICAvLyBUbyBoaWdobGlnaHQgdGhlIHJvdyBhdCBmYXVsdAor ICAgICAgICAvLyBpZiAoXy5oYXMocmVzLmRhdGEsICdfcm93aWQnKSAmJgorICAgICAgICAvLyAo IV8uaXNVbmRlZmluZWQocmVzLmRhdGEuX3Jvd2lkKSB8fCAhXy5pc051bGwocmVzLmRhdGEuX3Jv d2lkKSkpIHsKKyAgICAgICAgLy8gICB2YXIgX3Jvd19pbmRleCA9IHNlbGYuX2ZpbmRfcm93aW5k ZXgocmVzLmRhdGEuX3Jvd2lkKTsKKyAgICAgICAgLy8gICBpZiAoX3Jvd19pbmRleCBpbiBzZWxm LmRhdGFfc3RvcmUuYWRkZWRfaW5kZXgpIHsKKyAgICAgICAgLy8gICAvLyBSZW1vdmUgbmV3IHJv dyBpbmRleCBmcm9tIHRlbXBfbGlzdCBpZiBzYXZlIG9wZXJhdGlvbgorICAgICAgICAvLyAgIC8v IGZhaWxzCisgICAgICAgIC8vICAgICB2YXIgaW5kZXggPSBzZWxmLmhhbmRsZXIudGVtcF9uZXdf cm93cy5pbmRleE9mKHJlcy5kYXRhLl9yb3dpZCk7CisgICAgICAgIC8vICAgICBpZiAoaW5kZXgg PiAtMSkgeworICAgICAgICAvLyAgICAgICBzZWxmLmhhbmRsZXIudGVtcF9uZXdfcm93cy5zcGxp Y2UoaW5kZXgsIDEpOworICAgICAgICAvLyAgICAgfQorICAgICAgICAvLyAgICAgc2VsZi5kYXRh X3N0b3JlLmFkZGVkW3NlbGYuZGF0YV9zdG9yZS5hZGRlZF9pbmRleFtfcm93X2luZGV4XV0uZXJy ID0gdHJ1ZTsKKyAgICAgICAgLy8gICB9IGVsc2UgaWYgKF9yb3dfaW5kZXggaW4gc2VsZi5kYXRh X3N0b3JlLnVwZGF0ZWRfaW5kZXgpIHsKKyAgICAgICAgLy8gICAgIHNlbGYuZGF0YV9zdG9yZS51 cGRhdGVkW3NlbGYuZGF0YV9zdG9yZS51cGRhdGVkX2luZGV4W19yb3dfaW5kZXhdXS5lcnIgPSB0 cnVlOworICAgICAgICAvLyAgIH0KKyAgICAgICAgLy8gfQorICAgICAgICByZXR1cm47CisgICAg ICB9CisKKyAgICAgIGV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5TQVZFX0RB VEFfRE9ORSwgdHJ1ZSk7CisgICAgICBpZighXy5zaXplKGRhdGFDaGFuZ2VTdG9yZS5hZGRlZCkp IHsKKyAgICAgICAgLy8gVXBkYXRlIHRoZSByb3dzIGluIGEgZ3JpZCBhZnRlciBhZGRpdGlvbgor ICAgICAgICByZXNwRGF0YS5kYXRhLnF1ZXJ5X3Jlc3VsdHMuZm9yRWFjaCgocXIpPT57CisgICAg ICAgICAgaWYoIV8uaXNOdWxsKHFyLnJvd19hZGRlZCkpIHsKKyAgICAgICAgICAgIGxldCByb3dD bGllbnRQSyA9IE9iamVjdC5rZXlzKHFyLnJvd19hZGRlZClbMF07CisgICAgICAgICAgICBzZXRS b3dzKChwcmV2Um93cyk9PnsKKyAgICAgICAgICAgICAgbGV0IHJvd0lkeCA9IHByZXZSb3dzLmZp bmRJbmRleCgocik9PnJvd0tleUdldHRlcihyKT09cm93Q2xpZW50UEspOworICAgICAgICAgICAg ICByZXR1cm4gWworICAgICAgICAgICAgICAgIC4uLnByZXZSb3dzLnNsaWNlKDAsIHJvd0lkeCks CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgLi4ucHJldlJvd3Nbcm93SWR4 XSwKKyAgICAgICAgICAgICAgICAgIC4uLnFyLnJvd19hZGRlZFtyb3dDbGllbnRQS10sCisgICAg ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAuLi5wcmV2Um93cy5zbGljZShyb3dJZHgr MSksCisgICAgICAgICAgICAgIF07CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICB9CisgICAg ICAgIH0pOworICAgICAgfQorICAgICAgbGV0IGRlbGV0ZWRLZXlzID0gT2JqZWN0LmtleXMoZGF0 YUNoYW5nZVN0b3JlLmRlbGV0ZWQpOworICAgICAgaWYoZGVsZXRlZEtleXMubGVuZ3RoID09IHJv d3MubGVuZ3RoKSB7CisgICAgICAgIHNldFJvd3MoW10pOworICAgICAgfQorICAgICAgZWxzZSBp ZihkZWxldGVkS2V5cy5sZW5ndGggPiAwKSB7CisgICAgICAgIHNldFJvd3MoKHByZXZSb3dzKT0+ eworICAgICAgICAgIHJldHVybiBwcmV2Um93cy5maWx0ZXIoKHJvdyk9PnsKKyAgICAgICAgICAg IHJldHVybiBkZWxldGVkS2V5cy5pbmRleE9mKHJvd1tyc3UuY3VycmVudC5jbGllbnRQS10pID09 IC0xOworICAgICAgICAgIH0pOworICAgICAgICB9KTsKKyAgICAgICAgc2V0Q29sdW1ucyhjb2x1 bW5zKTsKKyAgICAgIH0KKyAgICAgIGRpc3BhdGNoRGF0YUNoYW5nZSh7dHlwZTogJ3Jlc2V0J30p OworICAgICAgc2V0U2VsZWN0ZWRSb3dzKG5ldyBTZXQoKSk7CisgICAgICBzZXRTZWxlY3RlZENv bHVtbnMobmV3IFNldCgpKTsKKyAgICAgIGV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VW RU5UUy5TRVRfQ09OTkVDVElPTl9TVEFUVVMsIHJlc3BEYXRhLmRhdGEudHJhbnNhY3Rpb25fc3Rh dHVzKTsKKyAgICAgIGV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5TRVRfTUVT U0FHRSwgJycpOworICAgICAgTm90aWZpZXIuc3VjY2VzcyhnZXR0ZXh0KCdEYXRhIHNhdmVkIHN1 Y2Nlc3NmdWxseS4nKSk7CisgICAgICBpZihyZXNwRGF0YS5kYXRhLnRyYW5zYWN0aW9uX3N0YXR1 cyA+IENPTk5FQ1RJT05fU1RBVFVTLlRSQU5TQUNUSU9OX1NUQVRVU19JRExFKSB7CisgICAgICAg IE5vdGlmaWVyLmluZm8oZ2V0dGV4dCgnQXV0by1jb21taXQgaXMgb2ZmLiBZb3Ugc3RpbGwgbmVl ZCB0byBjb21taXQgY2hhbmdlcyB0byB0aGUgZGF0YWJhc2UuJykpOworICAgICAgfQorICAgIH0g Y2F0Y2ggKGVycm9yKSB7CisgICAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVO VFMuU0FWRV9EQVRBX0RPTkUsIGZhbHNlKTsKKyAgICAgIGV2ZW50QnVzLmZpcmVFdmVudChRVUVS WV9UT09MX0VWRU5UUy5IQU5ETEVfQVBJX0VSUk9SLCBlcnJvciwgeworICAgICAgICBjaGVja1Ry YW5zYWN0aW9uOiB0cnVlLAorICAgICAgfSk7CisgICAgfQorICAgIHNldExvYWRlclRleHQobnVs bCk7CisgIH07CisKKyAgdXNlRWZmZWN0KCgpPT57CisgICAgZXZlbnRCdXMucmVnaXN0ZXJMaXN0 ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5UUklHR0VSX1NBVkVfREFUQSwgdHJpZ2dlclNhdmVEYXRh KTsKKyAgICByZXR1cm4gKCk9PmV2ZW50QnVzLmRlcmVnaXN0ZXJMaXN0ZW5lcihRVUVSWV9UT09M X0VWRU5UUy5UUklHR0VSX1NBVkVfREFUQSwgdHJpZ2dlclNhdmVEYXRhKTsKKyAgfSwgW2RhdGFD aGFuZ2VTdG9yZSwgcm93cywgY29sdW1uc10pOworCisgIGNvbnN0IGNvcHlEYXRhRnVuYyA9ICh3 aXRoSGVhZGVycz1mYWxzZSk9PnsKKyAgICBjb25zdCBxdWVyeVRvb2xQcmVmID0gcXVlcnlUb29s Q3R4LnByZWZlcmVuY2VzLnNxbGVkaXRvcjsKKyAgICBsZXQgY29weURhdGEgPSBuZXcgQ29weURh dGEoeworICAgICAgcXVvdGluZzogcXVlcnlUb29sUHJlZi5yZXN1bHRzX2dyaWRfcXVvdGluZywK KyAgICAgIHF1b3RlX2NoYXI6IHF1ZXJ5VG9vbFByZWYucmVzdWx0c19ncmlkX3F1b3RlX2NoYXIs CisgICAgICBmaWVsZF9zZXBhcmF0b3I6IHF1ZXJ5VG9vbFByZWYucmVzdWx0c19ncmlkX2ZpZWxk X3NlcGFyYXRvciwKKyAgICB9KTsKKyAgICBsZXQgY29weVJvd3M9W10sIGNvcHlDb2xzPVtdOwor ICAgIGlmKHNlbGVjdGVkUm93cy5zaXplID4gMCkgeworICAgICAgY29weUNvbHMgPSBjb2x1bW5z OworICAgICAgY29weVJvd3MgPSByb3dzLmZpbHRlcigocik9PnNlbGVjdGVkUm93cy5oYXMoclty c3UuY3VycmVudC5jbGllbnRQS10pKTsKKyAgICB9IGVsc2UgaWYoc2VsZWN0ZWRDb2x1bW5zLnNp emUgPiAwKSB7CisgICAgICAvKiBSb3cgbnVtIGNvbCBpcyBhZGRlZCBieSBRdWVyeURhdGFHcmlk LCBpbmRleCB3aWxsIGJlICsxICovCisgICAgICBjb3B5Q29scyA9IF8uZmlsdGVyKGNvbHVtbnMs IChfYywgaSk9PnNlbGVjdGVkQ29sdW1ucy5oYXMoaSsxKSk7CisgICAgICBjb3B5Um93cyA9IF8u bWFwKHJvd3MsIChyKT0+Xy5waWNrKHIsIF8ubWFwKGNvcHlDb2xzLCAoYyk9PmMua2V5KSkpOwor ICAgIH0gZWxzZSBpZihzZWxlY3RlZENlbGxbMF0gJiYgc2VsZWN0ZWRDZWxsWzFdKSB7CisgICAg ICBjb3B5Q29scyA9IFtzZWxlY3RlZENlbGxbMV1dOworICAgICAgY29weVJvd3MgPSBbe1tzZWxl Y3RlZENlbGxbMV0ua2V5XTogc2VsZWN0ZWRDZWxsWzBdW3NlbGVjdGVkQ2VsbFsxXS5rZXldfV07 CisgICAgfQorICAgIGlmKGNvcHlSb3dzLmxlbmd0aCA+IDAgJiYgY29weUNvbHMubGVuZ3RoID4w KSB7CisgICAgICBjb3B5RGF0YS5jb3B5Um93c1RvQ3N2KGNvcHlSb3dzLCBjb3B5Q29scywgd2l0 aEhlYWRlcnMpOworICAgIH0KKyAgfTsKKworICBjb25zdCB0cmlnZ2VyRGVsZXRlUm93cyA9ICgp PT57CisgICAgaWYoIXF1ZXJ5RGF0YS5jYW5fZWRpdCkgeworICAgICAgcmV0dXJuOworICAgIH0K KyAgICBsZXQgYWRkID0ge307CisgICAgbGV0IHJlbW92ZSA9IFtdOworICAgIGxldCBzZWxSb3dz RGF0YSA9IHJvd3MuZmlsdGVyKChyKT0+c2VsZWN0ZWRSb3dzLmhhcyhyW3JzdS5jdXJyZW50LmNs aWVudFBLXSkpOworICAgIGxldCByZW1vdmVOZXdseUFkZGVkID0gW107CisgICAgZm9yKGxldCBy b3cgb2Ygc2VsUm93c0RhdGEpIHsKKyAgICAgIGxldCBjbGllbnRQSyA9IHJvd1tyc3UuY3VycmVu dC5jbGllbnRQS107CisgICAgICBpZihjbGllbnRQSyBpbiBkYXRhQ2hhbmdlU3RvcmUuZGVsZXRl ZCkgeworICAgICAgICByZW1vdmUucHVzaChjbGllbnRQSyk7CisgICAgICB9IGVsc2UgeworICAg ICAgICAvKiBJZiBkZWxldGVkIGZyb20gbmV3bHkgYWRkZWQgKi8KKyAgICAgICAgaWYoY2xpZW50 UEsgaW4gZGF0YUNoYW5nZVN0b3JlLmFkZGVkKSB7CisgICAgICAgICAgcmVtb3ZlTmV3bHlBZGRl ZC5wdXNoKGNsaWVudFBLKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBsZXQgcHJpbWFy eUtleXMgPSB7fTsKKyAgICAgICAgICBPYmplY3Qua2V5cyhxdWVyeURhdGEucHJpbWFyeV9rZXlz KS5mb3JFYWNoKChrKT0+eworICAgICAgICAgICAgcHJpbWFyeUtleXNba10gPSByb3dba107Cisg ICAgICAgICAgfSk7CisgICAgICAgICAgYWRkW2NsaWVudFBLXSA9IHByaW1hcnlLZXlzOworICAg ICAgICB9CisgICAgICB9CisgICAgfQorICAgIGlmKHJlbW92ZU5ld2x5QWRkZWQubGVuZ3RoID4g MCkgeworICAgICAgZGlzcGF0Y2hEYXRhQ2hhbmdlKHsKKyAgICAgICAgdHlwZTogJ2FkZGVkJywK KyAgICAgICAgcmVtb3ZlOiByZW1vdmVOZXdseUFkZGVkLAorICAgICAgfSk7CisgICAgICBzZXRS b3dzKChwcmV2KT0+eworICAgICAgICByZXR1cm4gcHJldi5maWx0ZXIoKHIpPT5yZW1vdmVOZXds eUFkZGVkLmluZGV4T2Yocm93S2V5R2V0dGVyKHIpKT09LTEpOworICAgICAgfSk7CisgICAgICBz ZXRTZWxlY3RlZFJvd3MoKHByZXYpPT57CisgICAgICAgIGxldCBuZXdSb3dzID0gbmV3IFNldChw cmV2KTsKKyAgICAgICAgcmVtb3ZlTmV3bHlBZGRlZC5mb3JFYWNoKChyb3dJZCk9PnsKKyAgICAg ICAgICBpZihuZXdSb3dzLmhhcyhyb3dJZCkpIHsKKyAgICAgICAgICAgIG5ld1Jvd3MuZGVsZXRl KHJvd0lkKTsKKyAgICAgICAgICB9CisgICAgICAgIH0pOworICAgICAgICByZXR1cm4gbmV3Um93 czsKKyAgICAgIH0pOworICAgIH0KKworICAgIGRpc3BhdGNoRGF0YUNoYW5nZSh7CisgICAgICB0 eXBlOiAnZGVsZXRlZCcsCisgICAgICBhZGQ6IGFkZCwKKyAgICAgIHJlbW92ZTogcmVtb3ZlLAor ICAgIH0pOworICB9OworCisgIHVzZUVmZmVjdCgoKT0+eworICAgIGV2ZW50QnVzLnJlZ2lzdGVy TGlzdGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuVFJJR0dFUl9ERUxFVEVfUk9XUywgdHJpZ2dlckRl bGV0ZVJvd3MpOworICAgIGV2ZW50QnVzLnJlZ2lzdGVyTGlzdGVuZXIoUVVFUllfVE9PTF9FVkVO VFMuQ09QWV9EQVRBLCBjb3B5RGF0YUZ1bmMpOworICAgIHJldHVybiAoKT0+eworICAgICAgZXZl bnRCdXMuZGVyZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlRSSUdHRVJfREVMRVRF X1JPV1MsIHRyaWdnZXJEZWxldGVSb3dzKTsKKyAgICAgIGV2ZW50QnVzLmRlcmVnaXN0ZXJMaXN0 ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5DT1BZX0RBVEEsIGNvcHlEYXRhRnVuYyk7CisgICAgfTsK KyAgfSwgW3NlbGVjdGVkUm93cywgcXVlcnlEYXRhLCBkYXRhQ2hhbmdlU3RvcmVdKTsKKworICB1 c2VFZmZlY3QoKCk9PnsKKyAgICBjb25zdCB0cmlnZ2VyQWRkUm93cyA9IChfcm93cyk9PnsKKyAg ICAgIGxldCBuZXdSb3dzID0gcnN1LmN1cnJlbnQucHJvY2Vzc1Jvd3MoX3Jvd3MsIGNvbHVtbnMs IHRydWUpOworICAgICAgc2V0Um93cygocHJldik9PlsuLi5uZXdSb3dzLCAuLi5wcmV2XSk7Cisg ICAgICBsZXQgYWRkID0ge307CisgICAgICBuZXdSb3dzLmZvckVhY2goKHJvdyk9PnsKKyAgICAg ICAgYWRkW3Jvd0tleUdldHRlcihyb3cpXSA9IHsKKyAgICAgICAgICBlcnI6IGZhbHNlLAorICAg ICAgICB9OworICAgICAgfSk7CisgICAgICBkaXNwYXRjaERhdGFDaGFuZ2UoeworICAgICAgICB0 eXBlOiAnYWRkZWQnLAorICAgICAgICBhZGQ6IGFkZCwKKyAgICAgIH0pOworICAgIH07CisgICAg ZXZlbnRCdXMucmVnaXN0ZXJMaXN0ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5UUklHR0VSX0FERF9S T1dTLCB0cmlnZ2VyQWRkUm93cyk7CisgICAgcmV0dXJuICgpPT5ldmVudEJ1cy5kZXJlZ2lzdGVy TGlzdGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuVFJJR0dFUl9BRERfUk9XUywgdHJpZ2dlckFkZFJv d3MpOworICB9LCBbY29sdW1uc10pOworCisgIHVzZUVmZmVjdCgoKT0+eworICAgIGNvbnN0IHJl bmRlckdlb21ldHJpZXMgPSAoY29sdW1uKT0+eworICAgICAgbGV0IHNlbFJvd3NEYXRhID0gcm93 cy5maWx0ZXIoKHIpPT5zZWxlY3RlZFJvd3MuaGFzKHJvd0tleUdldHRlcihyKSkpOworICAgICAg TGF5b3V0SGVscGVyLm9wZW5UYWIocXVlcnlUb29sQ3R4LmRvY2tlciwgeworICAgICAgICBpZDog UEFORUxTLkdFT01FVFJZLAorICAgICAgICB0aXRsZTonR2VvbWV0cnkgVmlld2VyJywKKyAgICAg ICAgY29udGVudDogPEdlb21ldHJ5Vmlld2VyIHJvd3M9e3NlbFJvd3NEYXRhfSBjb2x1bW5zPXtj b2x1bW5zfSBjb2x1bW49e2NvbHVtbn0gLz4sCisgICAgICAgIGNsb3NhYmxlOiB0cnVlLAorICAg ICAgfSwgUEFORUxTLk1FU1NBR0VTLCAnYWZ0ZXItdGFiJywgdHJ1ZSk7CisgICAgfTsKKyAgICBl dmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlRSSUdHRVJfUkVOREVS X0dFT01FVFJJRVMsIHJlbmRlckdlb21ldHJpZXMpOworICAgIHJldHVybiAoKT0+ZXZlbnRCdXMu ZGVyZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlRSSUdHRVJfUkVOREVSX0dFT01F VFJJRVMsIHJlbmRlckdlb21ldHJpZXMpOworICB9LCBbcm93cywgY29sdW1ucywgc2VsZWN0ZWRS b3dzLnNpemVdKTsKKworICBjb25zdCBoYW5kbGVTY3JvbGwgPSBhc3luYyAoZSk9PnsKKyAgICBp ZiAoaXNMb2FkaW5nTW9yZSB8fCAhcnN1LmN1cnJlbnQuaXNBdEJvdHRvbShlKSkgcmV0dXJuOwor CisgICAgaWYocXVlcnlEYXRhLmhhc19tb3JlX3Jvd3MpIHsKKyAgICAgIHNldElzTG9hZGluZ01v cmUodHJ1ZSk7CisgICAgICBjb25zdCByZXMgPSBhd2FpdCByc3UuY3VycmVudC5nZXRNb3JlUm93 cygpOworICAgICAgY29uc3QgbmV3Um93cyA9IHJzdS5jdXJyZW50LnByb2Nlc3NSb3dzKHJlcy5k YXRhLmRhdGEucmVzdWx0LCBjb2x1bW5zKTsKKyAgICAgIHNldFJvd3MoWy4uLnJvd3MsIC4uLm5l d1Jvd3NdKTsKKyAgICAgIHNldFF1ZXJ5RGF0YSgocHJldik9Pih7CisgICAgICAgIC4uLnByZXYs CisgICAgICAgIGhhc19tb3JlX3Jvd3M6IHJlcy5kYXRhLmRhdGEuaGFzX21vcmVfcm93cywKKyAg ICAgICAgcm93c19mZXRjaGVkX3RvOiByZXMuZGF0YS5kYXRhLnJvd3NfZmV0Y2hlZF90bywKKyAg ICAgIH0pKTsKKyAgICAgIHNldElzTG9hZGluZ01vcmUoZmFsc2UpOworICAgIH0KKyAgfTsKKwor ICBjb25zdCBvblJvd3NDaGFuZ2UgPSAobmV3Um93cywgb3RoZXJJbmZvKT0+eworICAgIGxldCBy b3cgPSBuZXdSb3dzW290aGVySW5mby5pbmRleGVzWzBdXTsKKyAgICBsZXQgY2xpZW50UEsgPSBy b3dLZXlHZXR0ZXIocm93KTsKKworICAgIGlmKGNsaWVudFBLIGluIChkYXRhQ2hhbmdlU3RvcmUu YWRkZWQgfHwge30pKSB7CisgICAgICAvKiBObyBuZWVkIHRvIHRyYWNrIHRoaXMgKi8KKyAgICB9 IGVsc2UgaWYoY2xpZW50UEsgaW4gKGRhdGFDaGFuZ2VTdG9yZS51cGRhdGVkIHx8IHt9KSkgewor ICAgICAgZGlzcGF0Y2hEYXRhQ2hhbmdlKHsKKyAgICAgICAgdHlwZTogJ3VwZGF0ZWQnLAorICAg ICAgICBjbGllbnRQSzogY2xpZW50UEssCisgICAgICAgIHBheWxvYWQ6IHsKKyAgICAgICAgICBk YXRhOiB7W290aGVySW5mby5jb2x1bW4ua2V5XTogcm93W290aGVySW5mby5jb2x1bW4ua2V5XX0s CisgICAgICAgIH0KKyAgICAgIH0pOworICAgIH0gZWxzZSB7CisgICAgICBsZXQgb2xkUm93ID0g cm93c1tvdGhlckluZm8uaW5kZXhlc1swXV07CisgICAgICAvKiBJZiB0aGVyZSBhcmUgbm8gcHJp bWFyeSBrZXlzLCB0aGVuIGRpc2NhcmQgKi8KKyAgICAgIGlmKHF1ZXJ5RGF0YS5jYW5fZWRpdCkg eworICAgICAgICBsZXQgcHJpbWFyeUtleXMgPSB7fTsKKyAgICAgICAgT2JqZWN0LmtleXMocXVl cnlEYXRhLnByaW1hcnlfa2V5cykuZm9yRWFjaCgoayk9PnsKKyAgICAgICAgICBwcmltYXJ5S2V5 c1trXSA9IG9sZFJvd1trXTsKKyAgICAgICAgfSk7CisgICAgICAgIGRpc3BhdGNoRGF0YUNoYW5n ZSh7CisgICAgICAgICAgdHlwZTogJ3VwZGF0ZWQnLAorICAgICAgICAgIGNsaWVudFBLOiBjbGll bnRQSywKKyAgICAgICAgICBwYXlsb2FkOiB7CisgICAgICAgICAgICBlcnI6IGZhbHNlLAorICAg ICAgICAgICAgZGF0YToge1tvdGhlckluZm8uY29sdW1uLmtleV06IHJvd1tvdGhlckluZm8uY29s dW1uLmtleV19LAorICAgICAgICAgICAgcHJpbWFyeV9rZXlzOiBwcmltYXJ5S2V5cywKKyAgICAg ICAgICB9CisgICAgICAgIH0pOworICAgICAgfQorICAgIH0KKyAgICBzZXRSb3dzKG5ld1Jvd3Mp OworICB9OworCisgIGNvbnN0IHJvd0tleUdldHRlciA9IFJlYWN0LnVzZUNhbGxiYWNrKChyb3cp PT5yb3dbcnN1LmN1cnJlbnQuY2xpZW50UEtdKTsKKyAgcmV0dXJuICgKKyAgICA8Qm94IGRpc3Bs YXk9ImZsZXgiIGhlaWdodD0iMTAwJSIgZmxleERpcmVjdGlvbj0iY29sdW1uIiByZWY9e2NvbnRh aW5lclJlZn0+CisgICAgICA8TG9hZGVyIG1lc3NhZ2U9e2xvYWRlclRleHR9IC8+CisgICAgICA8 TG9hZGVyIG1lc3NhZ2U9e2lzTG9hZGluZ01vcmUgPyBnZXR0ZXh0KCdMb2FkaW5nIG1vcmUgcm93 cy4uLicpIDogbnVsbH0gc3R5bGU9e3t0b3A6ICd1bnNldCcsIHJpZ2h0OiAndW5zZXQnLCBwYWRk aW5nOiAnMC41cmVtIDFyZW0nfX0vPgorICAgICAgeyhjb2x1bW5zLmxlbmd0aCAhPSAwIHx8IHJv d3MubGVuZ3RoICE9IDApICYmIDw+CisgICAgICAgIDxSZXN1bHRTZXRUb29sYmFyIGNvbnRhaW5l clJlZj17Y29udGFpbmVyUmVmfSBjYW5FZGl0PXtxdWVyeURhdGEuY2FuX2VkaXR9Lz4KKyAgICAg ICAgPEJveCBmbGV4R3Jvdz0iMSIgbWluSGVpZ2h0PSIwIj4KKyAgICAgICAgICA8UXVlcnlUb29s RGF0YUdyaWQKKyAgICAgICAgICAgIGNvbHVtbnM9e2NvbHVtbnN9CisgICAgICAgICAgICByb3dz PXtyb3dzfQorICAgICAgICAgICAgdG90YWxSb3dDb3VudD17cXVlcnlEYXRhPy5yb3dzX2FmZmVj dGVkfQorICAgICAgICAgICAgY29sdW1uV2lkdGhCeT17CisgICAgICAgICAgICAgIHF1ZXJ5VG9v bEN0eC5wcmVmZXJlbmNlcz8uc3FsZWRpdG9yPy5jb2x1bW5fZGF0YV9hdXRvX3Jlc2l6ZSA9PSAn YnlfZGF0YScgPworICAgICAgICAgICAgICAgIHF1ZXJ5VG9vbEN0eC5wcmVmZXJlbmNlcy5zcWxl ZGl0b3IuY29sdW1uX2RhdGFfbWF4X3dpZHRoIDoKKyAgICAgICAgICAgICAgICBxdWVyeVRvb2xD dHgucHJlZmVyZW5jZXM/LnNxbGVkaXRvcj8uY29sdW1uX2RhdGFfYXV0b19yZXNpemUKKyAgICAg ICAgICAgIH0KKyAgICAgICAgICAgIHJvd3NSZXNldEtleT17cm93c1Jlc2V0S2V5fQorICAgICAg ICAgICAgcm93S2V5R2V0dGVyPXtyb3dLZXlHZXR0ZXJ9CisgICAgICAgICAgICBvblNjcm9sbD17 aGFuZGxlU2Nyb2xsfQorICAgICAgICAgICAgb25Sb3dzQ2hhbmdlPXtvblJvd3NDaGFuZ2V9Cisg ICAgICAgICAgICBkYXRhQ2hhbmdlU3RvcmU9e2RhdGFDaGFuZ2VTdG9yZX0KKyAgICAgICAgICAg IHNlbGVjdGVkUm93cz17c2VsZWN0ZWRSb3dzfQorICAgICAgICAgICAgb25TZWxlY3RlZFJvd3ND aGFuZ2U9e3NldFNlbGVjdGVkUm93c30KKyAgICAgICAgICAgIHNlbGVjdGVkQ29sdW1ucz17c2Vs ZWN0ZWRDb2x1bW5zfQorICAgICAgICAgICAgb25TZWxlY3RlZENvbHVtbnNDaGFuZ2U9e3NldFNl bGVjdGVkQ29sdW1uc30KKyAgICAgICAgICAgIG9uU2VsZWN0ZWRDZWxsQ2hhbmdlPXtzZXRTZWxl Y3RlZENlbGx9CisgICAgICAgICAgLz4KKyAgICAgICAgPC9Cb3g+CisgICAgICA8Lz59CisgICAg PC9Cb3g+CisgICk7Cit9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Iv c3RhdGljL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUmVzdWx0U2V0VG9vbGJhci5qc3ggYi93ZWIv cGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUmVz dWx0U2V0VG9vbGJhci5qc3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi5j MWU4NmMxMWQKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Iv c3RhdGljL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvUmVzdWx0U2V0VG9vbGJhci5qc3gKQEAgLTAs MCArMSwxNzAgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisv LworLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQg VGVhbQorLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBM aWNlbmNlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8KK2ltcG9ydCBSZWFjdCwge3VzZUNvbnRleHQsIHVzZUNhbGxiYWNr LCB1c2VFZmZlY3QsIHVzZVN0YXRlfSBmcm9tICdyZWFjdCc7CitpbXBvcnQgeyBtYWtlU3R5bGVz IH0gZnJvbSAnQG1hdGVyaWFsLXVpL3N0eWxlcyc7CitpbXBvcnQgeyBCb3ggfSBmcm9tICdAbWF0 ZXJpYWwtdWkvY29yZSc7CitpbXBvcnQgeyBQZ0J1dHRvbkdyb3VwLCBQZ0ljb25CdXR0b24gfSBm cm9tICcuLi8uLi8uLi8uLi8uLi8uLi9zdGF0aWMvanMvY29tcG9uZW50cy9CdXR0b25zJzsKK2lt cG9ydCBLZXlib2FyZEFycm93RG93bkljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0tleWJv YXJkQXJyb3dEb3duJzsKK2ltcG9ydCBQbGF5bGlzdEFkZFJvdW5kZWRJY29uIGZyb20gJ0BtYXRl cmlhbC11aS9pY29ucy9QbGF5bGlzdEFkZFJvdW5kZWQnOworaW1wb3J0IEZpbGVDb3B5Um91bmRl ZEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0ZpbGVDb3B5Um91bmRlZCc7CitpbXBvcnQg RGVsZXRlUm91bmRlZEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0RlbGV0ZVJvdW5kZWQn OworaW1wb3J0IHsgUGFzdGVJY29uLCBTYXZlRGF0YUljb24gfSBmcm9tICcuLi8uLi8uLi8uLi8u Li8uLi9zdGF0aWMvanMvY29tcG9uZW50cy9FeHRlcm5hbEljb24nOworaW1wb3J0IEdldEFwcFJv dW5kZWRJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9HZXRBcHBSb3VuZGVkJzsKK2ltcG9y dCB7UVVFUllfVE9PTF9FVkVOVFN9IGZyb20gJy4uL1F1ZXJ5VG9vbENvbnN0YW50cyc7CitpbXBv cnQgeyBRdWVyeVRvb2xDb250ZXh0LCBRdWVyeVRvb2xFdmVudHNDb250ZXh0IH0gZnJvbSAnLi4v UXVlcnlUb29sQ29tcG9uZW50JzsKK2ltcG9ydCB7IFBnTWVudSwgUGdNZW51SXRlbSB9IGZyb20g Jy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9jb21wb25lbnRzL01lbnUnOworaW1wb3J0IGdl dHRleHQgZnJvbSAnc291cmNlcy9nZXR0ZXh0JzsKK2ltcG9ydCB7IHVzZUtleWJvYXJkU2hvcnRj dXRzIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vc3RhdGljL2pzL2N1c3RvbV9ob29rcyc7Citp bXBvcnQge3Nob3J0Y3V0X2tleX0gZnJvbSAnc291cmNlcy9rZXlib2FyZF9zaG9ydGN1dHMnOwor aW1wb3J0IENvcHlEYXRhIGZyb20gJy4uL1F1ZXJ5VG9vbERhdGFHcmlkL0NvcHlEYXRhJzsKK2lt cG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7CitpbXBvcnQgQ3VzdG9tUHJvcFR5cGVz IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9jdXN0b21fcHJvcF90eXBlcyc7CisK K2NvbnN0IHVzZVN0eWxlcyA9IG1ha2VTdHlsZXMoKHRoZW1lKT0+KHsKKyAgcm9vdDogeworICAg IHBhZGRpbmc6ICcycHgnLAorICAgIGRpc3BsYXk6ICdmbGV4JywKKyAgICBhbGlnbkl0ZW1zOiAn Y2VudGVyJywKKyAgICBnYXA6ICc0cHgnLAorICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUub3Ro ZXJWYXJzLmVkaXRvclRvb2xiYXJCZywKKyAgICAuLi50aGVtZS5taXhpbnMucGFuZWxCb3JkZXIu Ym90dG9tLAorICB9LAorfSkpOworCitleHBvcnQgZnVuY3Rpb24gUmVzdWx0U2V0VG9vbGJhcih7 Y29udGFpbmVyUmVmLCBjYW5FZGl0fSkgeworICBjb25zdCBjbGFzc2VzID0gdXNlU3R5bGVzKCk7 CisgIGNvbnN0IGV2ZW50QnVzID0gdXNlQ29udGV4dChRdWVyeVRvb2xFdmVudHNDb250ZXh0KTsK KyAgY29uc3QgcXVlcnlUb29sQ3R4ID0gdXNlQ29udGV4dChRdWVyeVRvb2xDb250ZXh0KTsKKwor ICBjb25zdCBbYnV0dG9uc0Rpc2FibGVkLCBzZXRCdXR0b25zRGlzYWJsZWRdID0gdXNlU3RhdGUo eworICAgICdzYXZlLWRhdGEnOiB0cnVlLAorICAgICdkZWxldGUtcm93cyc6IHRydWUsCisgICAg J2NvcHktcm93cyc6IHRydWUsCisgIH0pOworICBjb25zdCBbbWVudU9wZW5JZCwgc2V0TWVudU9w ZW5JZF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKTsKKyAgY29uc3QgW2NoZWNrZWRNZW51SXRlbXMs IHNldENoZWNrZWRNZW51SXRlbXNdID0gUmVhY3QudXNlU3RhdGUoe30pOworICAvKiBNZW51IGJ1 dHRvbiByZWZzICovCisgIGNvbnN0IGNvcHlNZW51UmVmID0gUmVhY3QudXNlUmVmKG51bGwpOwor CisgIGNvbnN0IHF1ZXJ5VG9vbFByZWYgPSBxdWVyeVRvb2xDdHgucHJlZmVyZW5jZXMuc3FsZWRp dG9yOworCisgIGNvbnN0IHNldERpc2FibGVCdXR0b24gPSB1c2VDYWxsYmFjaygobmFtZSwgZGlz YWJsZT10cnVlKT0+eworICAgIHNldEJ1dHRvbnNEaXNhYmxlZCgocHJldik9Pih7Li4ucHJldiwg W25hbWVdOiBkaXNhYmxlfSkpOworICB9LCBbXSk7CisgIGNvbnN0IHNhdmVEYXRhID0gdXNlQ2Fs bGJhY2soKCk9PnsKKyAgICBldmVudEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuVFJJ R0dFUl9TQVZFX0RBVEEpOworICB9LCBbXSk7CisgIGNvbnN0IGRlbGV0ZVJvd3MgPSB1c2VDYWxs YmFjaygoKT0+eworICAgIGV2ZW50QnVzLmZpcmVFdmVudChRVUVSWV9UT09MX0VWRU5UUy5UUklH R0VSX0RFTEVURV9ST1dTKTsKKyAgfSwgW10pOworICBjb25zdCBwYXN0ZVJvd3MgPSB1c2VDYWxs YmFjayhhc3luYyAoKT0+eworICAgIGxldCBjb3B5VXRpbHMgPSBuZXcgQ29weURhdGEoeworICAg ICAgcXVvdGluZzogcXVlcnlUb29sUHJlZi5yZXN1bHRzX2dyaWRfcXVvdGluZywKKyAgICAgIHF1 b3RlX2NoYXI6IHF1ZXJ5VG9vbFByZWYucmVzdWx0c19ncmlkX3F1b3RlX2NoYXIsCisgICAgICBm aWVsZF9zZXBhcmF0b3I6IHF1ZXJ5VG9vbFByZWYucmVzdWx0c19ncmlkX2ZpZWxkX3NlcGFyYXRv ciwKKyAgICB9KTsKKyAgICBsZXQgY29waWVkUm93cyA9IGF3YWl0IGNvcHlVdGlscy5nZXRDb3Bp ZWRSb3dzKCk7CisgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlRSSUdH RVJfQUREX1JPV1MsIGNvcGllZFJvd3MpOworICB9LCBbcXVlcnlUb29sUHJlZl0pOworICBjb25z dCBjb3B5RGF0YSA9ICgpPT57CisgICAgZXZlbnRCdXMuZmlyZUV2ZW50KFFVRVJZX1RPT0xfRVZF TlRTLkNPUFlfREFUQSwgY2hlY2tlZE1lbnVJdGVtc1snY29weV93aXRoX2hlYWRlcnMnXSk7Cisg IH07CisgIGNvbnN0IGFkZFJvdyA9IHVzZUNhbGxiYWNrKCgpPT57CisgICAgZXZlbnRCdXMuZmly ZUV2ZW50KFFVRVJZX1RPT0xfRVZFTlRTLlRSSUdHRVJfQUREX1JPV1MsIFtbXV0pOworICB9LCBb XSk7CisgIGNvbnN0IGRvd25sb2FkUmVzdWx0ID0gdXNlQ2FsbGJhY2soKCk9PnsKKyAgICBldmVu dEJ1cy5maXJlRXZlbnQoUVVFUllfVE9PTF9FVkVOVFMuVFJJR0dFUl9TQVZFX1JFU1VMVFMpOwor ICB9LCBbXSk7CisKKyAgY29uc3Qgb3Blbk1lbnUgPSB1c2VDYWxsYmFjaygoZSk9PnsKKyAgICBz ZXRNZW51T3BlbklkKGUuY3VycmVudFRhcmdldC5uYW1lKTsKKyAgfSwgW10pOworICBjb25zdCBo YW5kbGVNZW51Q2xvc2UgPSB1c2VDYWxsYmFjaygoKT0+eworICAgIHNldE1lbnVPcGVuSWQobnVs bCk7CisgIH0sIFtdKTsKKworICBjb25zdCBjaGVja01lbnVDbGljayA9IHVzZUNhbGxiYWNrKChl KT0+eworICAgIHNldENoZWNrZWRNZW51SXRlbXMoKHByZXYpPT57CisgICAgICBsZXQgbmV3VmFs ID0gIXByZXZbZS52YWx1ZV07CisgICAgICByZXR1cm4geworICAgICAgICAuLi5wcmV2LAorICAg ICAgICBbZS52YWx1ZV06IG5ld1ZhbCwKKyAgICAgIH07CisgICAgfSk7CisgIH0sIFtdKTsKKwor ICB1c2VFZmZlY3QoKCk9PnsKKyAgICBldmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RP T0xfRVZFTlRTLkRBVEFHUklEX0NIQU5HRUQsIChpc0RpcnR5KT0+eworICAgICAgc2V0RGlzYWJs ZUJ1dHRvbignc2F2ZS1kYXRhJywgIWlzRGlydHkpOworICAgIH0pOworICAgIGV2ZW50QnVzLnJl Z2lzdGVyTGlzdGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuU0VMRUNURURfUk9XU19DSEFOR0VELCAo Y291bnQpPT57CisgICAgICBzZXREaXNhYmxlQnV0dG9uKCdkZWxldGUtcm93cycsICFjb3VudCk7 CisgICAgICBzZXREaXNhYmxlQnV0dG9uKCdjb3B5LXJvd3MnLCAhY291bnQpOworICAgIH0pOwor ICB9LCBbXSk7CisKKyAgdXNlRWZmZWN0KCgpPT57CisgICAgZXZlbnRCdXMucmVnaXN0ZXJMaXN0 ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5UUklHR0VSX0NPUFlfREFUQSwgY29weURhdGEpOworICAg IHJldHVybiAoKT0+ZXZlbnRCdXMuZGVyZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRT LlRSSUdHRVJfQ09QWV9EQVRBLCBjb3B5RGF0YSk7CisgIH0sIFtjaGVja2VkTWVudUl0ZW1zWydj b3B5X3dpdGhfaGVhZGVycyddXSk7CisKKyAgdXNlS2V5Ym9hcmRTaG9ydGN1dHMoWworICAgIHsK KyAgICAgIHNob3J0Y3V0OiBxdWVyeVRvb2xQcmVmLnNhdmVfZGF0YSwKKyAgICAgIG9wdGlvbnM6 IHsKKyAgICAgICAgY2FsbGJhY2s6ICgpPT57c2F2ZURhdGEoKTt9CisgICAgICB9CisgICAgfSwK KyAgICB7CisgICAgICBzaG9ydGN1dDogcXVlcnlUb29sUHJlZi5kb3dubG9hZF9yZXN1bHRzLAor ICAgICAgb3B0aW9uczogeworICAgICAgICBjYWxsYmFjazogKGUpPT57ZS5wcmV2ZW50RGVmYXVs dCgpOyBkb3dubG9hZFJlc3VsdCgpO30KKyAgICAgIH0KKyAgICB9LAorICBdLCBjb250YWluZXJS ZWYpOworCisgIHJldHVybiAoCisgICAgPD4KKyAgICAgIDxCb3ggY2xhc3NOYW1lPXtjbGFzc2Vz LnJvb3R9PgorICAgICAgICA8UGdCdXR0b25Hcm91cCBzaXplPSJzbWFsbCI+CisgICAgICAgICAg PFBnSWNvbkJ1dHRvbiB0aXRsZT17Z2V0dGV4dCgnQWRkIHJvdycpfSBpY29uPXs8UGxheWxpc3RB ZGRSb3VuZGVkSWNvbiBzdHlsZT17e2hlaWdodDogJ3Vuc2V0J319Lz59CisgICAgICAgICAgICBh Y2Nlc3NrZXk9e3Nob3J0Y3V0X2tleShxdWVyeVRvb2xQcmVmLmJ0bl9hZGRfcm93KX0gZGlzYWJs ZWQ9eyFjYW5FZGl0fSBvbkNsaWNrPXthZGRSb3d9IC8+CisgICAgICAgICAgPFBnSWNvbkJ1dHRv biB0aXRsZT17Z2V0dGV4dCgnQ29weScpfSBpY29uPXs8RmlsZUNvcHlSb3VuZGVkSWNvbiAvPn0K KyAgICAgICAgICAgIGFjY2Vzc2tleT17c2hvcnRjdXRfa2V5KHF1ZXJ5VG9vbFByZWYuYnRuX2Nv cHlfcm93KX0gZGlzYWJsZWQ9e2J1dHRvbnNEaXNhYmxlZFsnY29weS1yb3dzJ119IG9uQ2xpY2s9 e2NvcHlEYXRhfSAvPgorICAgICAgICAgIDxQZ0ljb25CdXR0b24gdGl0bGU9e2dldHRleHQoJ0Nv cHkgb3B0aW9ucycpfSBpY29uPXs8S2V5Ym9hcmRBcnJvd0Rvd25JY29uIC8+fSBzcGxpdEJ1dHRv bgorICAgICAgICAgICAgbmFtZT0ibWVudS1jb3B5aGVhZGVyIiByZWY9e2NvcHlNZW51UmVmfSBv bkNsaWNrPXtvcGVuTWVudX0gLz4KKyAgICAgICAgICA8UGdJY29uQnV0dG9uIHRpdGxlPXtnZXR0 ZXh0KCdQYXN0ZScpfSBpY29uPXs8UGFzdGVJY29uIC8+fQorICAgICAgICAgICAgYWNjZXNza2V5 PXtzaG9ydGN1dF9rZXkocXVlcnlUb29sUHJlZi5idG5fcGFzdGVfcm93KX0gZGlzYWJsZWQ9eyFj YW5FZGl0fSBvbkNsaWNrPXtwYXN0ZVJvd3N9IC8+CisgICAgICAgICAgPFBnSWNvbkJ1dHRvbiB0 aXRsZT17Z2V0dGV4dCgnRGVsZXRlJyl9IGljb249ezxEZWxldGVSb3VuZGVkSWNvbiAvPn0KKyAg ICAgICAgICAgIGFjY2Vzc2tleT17c2hvcnRjdXRfa2V5KHF1ZXJ5VG9vbFByZWYuYnRuX2RlbGV0 ZV9yb3cpfSBkaXNhYmxlZD17YnV0dG9uc0Rpc2FibGVkWydkZWxldGUtcm93cyddIHx8ICFjYW5F ZGl0fSBvbkNsaWNrPXtkZWxldGVSb3dzfSAvPgorICAgICAgICA8L1BnQnV0dG9uR3JvdXA+Cisg ICAgICAgIDxQZ0J1dHRvbkdyb3VwIHNpemU9InNtYWxsIj4KKyAgICAgICAgICA8UGdJY29uQnV0 dG9uIHRpdGxlPXtnZXR0ZXh0KCdTYXZlIERhdGEgQ2hhbmdlcycpfSBpY29uPXs8U2F2ZURhdGFJ Y29uIC8+fQorICAgICAgICAgICAgc2hvcnRjdXQ9e3F1ZXJ5VG9vbFByZWYuc2F2ZV9kYXRhfSBk aXNhYmxlZD17YnV0dG9uc0Rpc2FibGVkWydzYXZlLWRhdGEnXSB8fCAhY2FuRWRpdH0gb25DbGlj az17c2F2ZURhdGF9Lz4KKyAgICAgICAgPC9QZ0J1dHRvbkdyb3VwPgorICAgICAgICA8UGdCdXR0 b25Hcm91cCBzaXplPSJzbWFsbCI+CisgICAgICAgICAgPFBnSWNvbkJ1dHRvbiB0aXRsZT17Z2V0 dGV4dCgnU2F2ZSByZXN1bHRzIHRvIGZpbGUnKX0gaWNvbj17PEdldEFwcFJvdW5kZWRJY29uIC8+ fQorICAgICAgICAgICAgb25DbGljaz17ZG93bmxvYWRSZXN1bHR9IHNob3J0Y3V0PXtxdWVyeVRv b2xQcmVmLmRvd25sb2FkX3Jlc3VsdHN9Lz4KKyAgICAgICAgPC9QZ0J1dHRvbkdyb3VwPgorICAg ICAgPC9Cb3g+CisgICAgICA8UGdNZW51CisgICAgICAgIGFuY2hvclJlZj17Y29weU1lbnVSZWZ9 CisgICAgICAgIG9wZW49e21lbnVPcGVuSWQ9PSdtZW51LWNvcHloZWFkZXInfQorICAgICAgICBv bkNsb3NlPXtoYW5kbGVNZW51Q2xvc2V9CisgICAgICA+CisgICAgICAgIDxQZ01lbnVJdGVtIGhh c0NoZWNrIHZhbHVlPSJjb3B5X3dpdGhfaGVhZGVycyIgY2hlY2tlZD17Y2hlY2tlZE1lbnVJdGVt c1snY29weV93aXRoX2hlYWRlcnMnXX0gb25DbGljaz17Y2hlY2tNZW51Q2xpY2t9PkNvcHkgd2l0 aCBoZWFkZXJzPC9QZ01lbnVJdGVtPgorICAgICAgPC9QZ01lbnU+CisgICAgPC8+CisgICk7Cit9 CisKK1Jlc3VsdFNldFRvb2xiYXIucHJvcFR5cGVzID0geworICBjb250YWluZXJSZWY6IEN1c3Rv bVByb3BUeXBlcy5yZWYsCisgIGNhbkVkaXQ6IFByb3BUeXBlcy5ib29sLAorfTsKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvY29tcG9uZW50cy9zZWN0 aW9ucy9TdGF0dXNCYXIuanN4IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9q cy9jb21wb25lbnRzL3NlY3Rpb25zL1N0YXR1c0Jhci5qc3gKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMDAwLi5hMjJjYWI1NjYKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1p bi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2NvbXBvbmVudHMvc2VjdGlvbnMvU3RhdHVzQmFy LmpzeApAQCAtMCwwICsxLDEyMSBAQAorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gcGdBZG1pbiA0IC0gUG9zdGdy ZVNRTCBUb29scworLy8KKy8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWlu IERldmVsb3BtZW50IFRlYW0KKy8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhl IFBvc3RncmVTUUwgTGljZW5jZQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0 LCB1c2VTdGF0ZSwgdXNlQ29udGV4dCB9ICBmcm9tICdyZWFjdCc7CitpbXBvcnQgeyBtYWtlU3R5 bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL3N0eWxlcyc7CitpbXBvcnQgeyBCb3ggfSBmcm9tICdA bWF0ZXJpYWwtdWkvY29yZSc7CitpbXBvcnQgY2xzeCBmcm9tICdjbHN4JzsKK2ltcG9ydCBfIGZy b20gJ2xvZGFzaCc7CitpbXBvcnQgeyBRVUVSWV9UT09MX0VWRU5UUyB9IGZyb20gJy4uL1F1ZXJ5 VG9vbENvbnN0YW50cyc7CitpbXBvcnQgeyB1c2VTdG9wd2F0Y2ggfSBmcm9tICcuLi8uLi8uLi8u Li8uLi8uLi9zdGF0aWMvanMvY3VzdG9tX2hvb2tzJzsKK2ltcG9ydCB7IFF1ZXJ5VG9vbEV2ZW50 c0NvbnRleHQgfSBmcm9tICcuLi9RdWVyeVRvb2xDb21wb25lbnQnOworCisKK2NvbnN0IHVzZVN0 eWxlcyA9IG1ha2VTdHlsZXMoKHRoZW1lKT0+KHsKKyAgcm9vdDogeworICAgIGRpc3BsYXk6ICdm bGV4JywKKyAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJywKKyAgICAuLi50aGVtZS5taXhpbnMucGFu ZWxCb3JkZXIudG9wLAorICAgIGZsZXhXcmFwOiAnd3JhcCcsCisgIH0sCisgIHBhZGRpbmc6IHsK KyAgICBwYWRkaW5nOiAnMnB4IDEycHgnLAorICB9LAorICBkaXZpZGVyOiB7CisgICAgLi4udGhl bWUubWl4aW5zLnBhbmVsQm9yZGVyLnJpZ2h0LAorICB9LAorICBtbEF1dG86IHsKKyAgICBtYXJn aW5MZWZ0OiAnYXV0bycsCisgIH0KK30pKTsKKworZXhwb3J0IGZ1bmN0aW9uIFN0YXR1c0Jhcigp IHsKKyAgY29uc3QgY2xhc3NlcyA9IHVzZVN0eWxlcygpOworICBjb25zdCBldmVudEJ1cyA9IHVz ZUNvbnRleHQoUXVlcnlUb29sRXZlbnRzQ29udGV4dCk7CisgIGNvbnN0IFtwb3NpdGlvbiwgc2V0 UG9zaXRpb25dID0gdXNlU3RhdGUoWzEsIDFdKTsKKyAgY29uc3QgW2xhc3RUYXNrVGV4dCwgc2V0 TGFzdFRhc2tUZXh0XSA9IHVzZVN0YXRlKG51bGwpOworICBjb25zdCBbcm93c0NvdW50LCBzZXRS b3dzQ291bnRdID0gdXNlU3RhdGUoWzAsIDBdKTsKKyAgY29uc3QgW3NlbGVjdGVkUm93c0NvdW50 LCBzZXRTZWxlY3RlZFJvd3NDb3VudF0gPSB1c2VTdGF0ZSgwKTsKKyAgY29uc3QgW2RhdGFSb3dD aGFuZ2VDb3VudHMsIHNldERhdGFSb3dDaGFuZ2VDb3VudHNdID0gdXNlU3RhdGUoeworICAgIGlz RGlydHk6IGZhbHNlLAorICAgIGFkZGVkOiAwLAorICAgIHVwZGF0ZWQ6IDAsCisgICAgZGVsZXRl ZDogMCwKKyAgfSk7CisgIGNvbnN0IHtzZWNvbmRzLCBtaW51dGVzLCBob3Vycywgc3RhcnQ6c3Rh cnRUaW1lciwgcGF1c2U6cGF1c2VUaW1lciwgcmVzZXQ6cmVzZXRUaW1lcn0gPSB1c2VTdG9wd2F0 Y2goe30pOworCisgIHVzZUVmZmVjdCgoKT0+eworICAgIGV2ZW50QnVzLnJlZ2lzdGVyTGlzdGVu ZXIoUVVFUllfVE9PTF9FVkVOVFMuQ1VSU09SX0FDVElWSVRZLCAobmV3UG9zKT0+eworICAgICAg c2V0UG9zaXRpb24obmV3UG9zfHxbMSwgMV0pOworICAgIH0pOworICAgIGV2ZW50QnVzLnJlZ2lz dGVyTGlzdGVuZXIoUVVFUllfVE9PTF9FVkVOVFMuRVhFQ1VUSU9OX1NUQVJULCAoKT0+eworICAg ICAgcmVzZXRUaW1lcigpOworICAgICAgc3RhcnRUaW1lcigpOworICAgICAgc2V0TGFzdFRhc2tU ZXh0KCdXYWl0aW5nIGZvciB0aGUgcXVlcnkgdG8gY29tcGxldGUuLi4nKTsKKyAgICB9KTsKKyAg ICBldmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLkVYRUNVVElPTl9F TkQsICgpPT57CisgICAgICBwYXVzZVRpbWVyKCk7CisgICAgICBzZXRMYXN0VGFza1RleHQoJ1F1 ZXJ5IGNvbXBsZXRlJyk7CisgICAgfSk7CisgICAgZXZlbnRCdXMucmVnaXN0ZXJMaXN0ZW5lcihR VUVSWV9UT09MX0VWRU5UUy5UQVNLX1NUQVJULCAodGFza1RleHQpPT57CisgICAgICByZXNldFRp bWVyKCk7CisgICAgICBzdGFydFRpbWVyKCk7CisgICAgICBzZXRMYXN0VGFza1RleHQodGFza1Rl eHQpOworICAgIH0pOworICAgIGV2ZW50QnVzLnJlZ2lzdGVyTGlzdGVuZXIoUVVFUllfVE9PTF9F VkVOVFMuVEFTS19FTkQsICh0YXNrVGV4dCk9PnsKKyAgICAgIHBhdXNlVGltZXIoKTsKKyAgICAg IHNldExhc3RUYXNrVGV4dCh0YXNrVGV4dCk7CisgICAgfSk7CisgICAgZXZlbnRCdXMucmVnaXN0 ZXJMaXN0ZW5lcihRVUVSWV9UT09MX0VWRU5UUy5ST1dTX0ZFVENIRUQsIChmZXRjaGVkLCB0b3Rh bCk9PnsKKyAgICAgIHNldFJvd3NDb3VudChbZmV0Y2hlZHx8MCwgdG90YWx8fDBdKTsKKyAgICB9 KTsKKyAgICBldmVudEJ1cy5yZWdpc3Rlckxpc3RlbmVyKFFVRVJZX1RPT0xfRVZFTlRTLlNFTEVD VEVEX1JPV1NfQ0hBTkdFRCwgKGNvdW50KT0+eworICAgICAgc2V0U2VsZWN0ZWRSb3dzQ291bnQo Y291bnQpOworICAgIH0pOworICAgIGV2ZW50QnVzLnJlZ2lzdGVyTGlzdGVuZXIoUVVFUllfVE9P TF9FVkVOVFMuREFUQUdSSURfQ0hBTkdFRCwgKF9pc0RpcnR5LCBkYXRhQ2hhbmdlU3RvcmUpPT57 CisgICAgICBzZXREYXRhUm93Q2hhbmdlQ291bnRzKHsKKyAgICAgICAgYWRkZWQ6IE9iamVjdC5r ZXlzKGRhdGFDaGFuZ2VTdG9yZS5hZGRlZHx8e30pLmxlbmd0aCwKKyAgICAgICAgdXBkYXRlZDog T2JqZWN0LmtleXMoZGF0YUNoYW5nZVN0b3JlLnVwZGF0ZWR8fHt9KS5sZW5ndGgsCisgICAgICAg IGRlbGV0ZWQ6IE9iamVjdC5rZXlzKGRhdGFDaGFuZ2VTdG9yZS5kZWxldGVkfHx7fSkubGVuZ3Ro LAorICAgICAgfSk7CisgICAgfSk7CisgIH0sIFtdKTsKKworCisgIGxldCBzdGFnZWRUZXh0ID0g Jyc7CisgIGlmKGRhdGFSb3dDaGFuZ2VDb3VudHMuYWRkZWQgPiAwKSB7CisgICAgc3RhZ2VkVGV4 dCArPSBgIEFkZGVkOiAke2RhdGFSb3dDaGFuZ2VDb3VudHMuYWRkZWR9O2A7CisgIH0KKyAgaWYo ZGF0YVJvd0NoYW5nZUNvdW50cy51cGRhdGVkID4gMCkgeworICAgIHN0YWdlZFRleHQgKz0gYCBV cGRhdGVkOiAke2RhdGFSb3dDaGFuZ2VDb3VudHMudXBkYXRlZH07YDsKKyAgfQorICBpZihkYXRh Um93Q2hhbmdlQ291bnRzLmRlbGV0ZWQgPiAwKSB7CisgICAgc3RhZ2VkVGV4dCArPSBgIERlbGV0 ZWQ6ICR7ZGF0YVJvd0NoYW5nZUNvdW50cy5kZWxldGVkfTtgOworICB9CisKKyAgcmV0dXJuICgK KyAgICA8Qm94IGNsYXNzTmFtZT17Y2xhc3Nlcy5yb290fT4KKyAgICAgIDxCb3ggY2xhc3NOYW1l PXtjbHN4KGNsYXNzZXMucGFkZGluZywgY2xhc3Nlcy5kaXZpZGVyKX0+VG90YWwgcm93czoge3Jv d3NDb3VudFswXX0gb2Yge3Jvd3NDb3VudFsxXX08L0JveD4KKyAgICAgIHtsYXN0VGFza1RleHQg JiYKKyAgICAgICAgPEJveCBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcy5wYWRkaW5nLCBjbGFzc2Vz LmRpdmlkZXIpfT57bGFzdFRhc2tUZXh0fSB7aG91cnMudG9TdHJpbmcoKS5wYWRTdGFydCgyLCAn MCcpfTp7bWludXRlcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9OntzZWNvbmRzLnRvU3Ry aW5nKCkucGFkU3RhcnQoMiwgJzAnKX08L0JveD4KKyAgICAgIH0KKyAgICAgIHshbGFzdFRhc2tU ZXh0ICYmICFfLmlzTnVsbChsYXN0VGFza1RleHQpICYmCisgICAgICAgIDxCb3ggY2xhc3NOYW1l PXtjbHN4KGNsYXNzZXMucGFkZGluZywgY2xhc3Nlcy5kaXZpZGVyKX0+e2xhc3RUYXNrVGV4dH0g e2hvdXJzLnRvU3RyaW5nKCkucGFkU3RhcnQoMiwgJzAnKX06e21pbnV0ZXMudG9TdHJpbmcoKS5w YWRTdGFydCgyLCAnMCcpfTp7c2Vjb25kcy50b1N0cmluZygpLnBhZFN0YXJ0KDIsICcwJyl9PC9C b3g+CisgICAgICB9CisgICAgICB7Qm9vbGVhbihzZWxlY3RlZFJvd3NDb3VudCkgJiYKKyAgICAg ICAgPEJveCBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcy5wYWRkaW5nLCBjbGFzc2VzLmRpdmlkZXIp fT5Sb3dzIHNlbGVjdGVkOiB7c2VsZWN0ZWRSb3dzQ291bnR9PC9Cb3g+fQorICAgICAge3N0YWdl ZFRleHQgJiYKKyAgICAgICAgPEJveCBjbGFzc05hbWU9e2Nsc3goY2xhc3Nlcy5wYWRkaW5nLCBj bGFzc2VzLmRpdmlkZXIpfT4KKyAgICAgICAgICA8c3Bhbj5DaGFuZ2VzIHN0YWdlZDoge3N0YWdl ZFRleHR9PC9zcGFuPgorICAgICAgICA8L0JveD4KKyAgICAgIH0KKyAgICAgIDxCb3ggY2xhc3NO YW1lPXtjbHN4KGNsYXNzZXMucGFkZGluZywgY2xhc3Nlcy5tbEF1dG8pfT5MbiB7cG9zaXRpb25b MF19LCBDb2wge3Bvc2l0aW9uWzFdfTwvQm94PgorICAgIDwvQm94PgorICApOworfQpkaWZmIC0t Z2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9pbmRleC5qcyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvaW5kZXguanMKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwLi42YWQzNWZiMzQKLS0tIC9kZXYvbnVsbAorKysgYi93 ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL2luZGV4LmpzCkBAIC0wLDAgKzEs MjYgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KKy8vCisvLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCisvLworLy8g Q29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQor Ly8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl CisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KK2ltcG9ydCBwZ0FkbWluIGZyb20gJ3NvdXJjZXMvcGdhZG1pbic7CitpbXBv cnQgcGdCcm93c2VyIGZyb20gJ3RvcC9icm93c2VyL3N0YXRpYy9qcy9icm93c2VyJzsKK2ltcG9y dCBTUUxFZGl0b3IgZnJvbSAnLi9TUUxFZGl0b3JNb2R1bGUnOworCisvKiBlc2xpbnQtZGlzYWJs ZSAqLworLyogVGhpcyBpcyB1c2VkIHRvIGNoYW5nZSBwdWJsaWNQYXRoIG9mIHdlYnBhY2sgYXQg cnVudGltZSBmb3IgbG9hZGluZyBjaHVua3MgKi8KKy8qIERvIG5vdCBhZGQgbGV0LCB2YXIsIGNv bnN0IHRvIHRoaXMgdmFyaWFibGUgKi8KK19fd2VicGFja19wdWJsaWNfcGF0aF9fID0gd2luZG93 LnJlc291cmNlQmFzZVBhdGg7CisvKiBlc2xpbnQtZW5hYmxlICovCisKK2lmKCFwZ0FkbWluLlRv b2xzKSB7CisgIHBnQWRtaW4uVG9vbHMgPSB7fTsKK30KK3BnQWRtaW4uVG9vbHMuU1FMRWRpdG9y ID0gU1FMRWRpdG9yLmdldEluc3RhbmNlKHBnQWRtaW4sIHBnQnJvd3Nlcik7CisKK21vZHVsZS5l eHBvcnRzID0geworICBTUUxFZGl0b3I6IFNRTEVkaXRvciwKK307CmRpZmYgLS1naXQgYS93ZWIv cGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sLmpzIGIvd2Vi L3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wuanMKc2lt aWxhcml0eSBpbmRleCA2NSUKcmVuYW1lIGZyb20gd2ViL3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQv c3RhdGljL2pzL3Nob3dfcXVlcnlfdG9vbC5qcwpyZW5hbWUgdG8gd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wuanMKaW5kZXggMTU3ZGIzMzM1Li43 ZjY1ODViMGYgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9q cy9zaG93X3F1ZXJ5X3Rvb2wuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0 YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wuanMKQEAgLTksNyArOSw3IEBACiAKIGltcG9ydCBnZXR0 ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0JzsKIGltcG9ydCB1cmxfZm9y IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy91cmxfZm9yJzsKLWltcG9ydCB7Z2V0UGFuZWxU aXRsZX0gZnJvbSAnLi9kYXRhZ3JpZF9wYW5lbF90aXRsZSc7CitpbXBvcnQge2dldFBhbmVsVGl0 bGV9IGZyb20gJy4vc3FsZWRpdG9yX3RpdGxlJzsKIGltcG9ydCB7Z2V0UmFuZG9tSW50fSBmcm9t ICdzb3VyY2VzL3V0aWxzJzsKIGltcG9ydCAkIGZyb20gJ2pxdWVyeSc7CiBpbXBvcnQgTm90aWZ5 IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9oZWxwZXJzL05vdGlmaWVyJzsKQEAgLTE4LDE4 ICsxOCwyMCBAQCBmdW5jdGlvbiBoYXNEYXRhYmFzZUluZm9ybWF0aW9uKHBhcmVudERhdGEpIHsK ICAgcmV0dXJuIHBhcmVudERhdGEuZGF0YWJhc2U7CiB9CiAKLWZ1bmN0aW9uIGdlbmVyYXRlVXJs KHRyYW5zX2lkLCB0aXRsZSwgcGFyZW50RGF0YSwgc3FsSWQpIHsKLSAgbGV0IHVybF9lbmRwb2lu dCA9IHVybF9mb3IoJ2RhdGFncmlkLnBhbmVsJywgeworZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRl VXJsKHRyYW5zX2lkLCBwYXJlbnREYXRhLCBzcWxJZCkgeworICBsZXQgdXJsX2VuZHBvaW50ID0g dXJsX2Zvcignc3FsZWRpdG9yLnBhbmVsJywgewogICAgICd0cmFuc19pZCc6IHRyYW5zX2lkLAog ICB9KTsKIAogICB1cmxfZW5kcG9pbnQgKz0gYD9pc19xdWVyeV90b29sPSR7dHJ1ZX1gCiAgICAg K2Amc2dpZD0ke3BhcmVudERhdGEuc2VydmVyX2dyb3VwLl9pZH1gCi0gICAgK2Amc2lkPSR7cGFy ZW50RGF0YS5zZXJ2ZXIuX2lkfWAKLSAgICArYCZzZXJ2ZXJfdHlwZT0ke3BhcmVudERhdGEuc2Vy dmVyLnNlcnZlcl90eXBlfWA7CisgICAgK2Amc2lkPSR7cGFyZW50RGF0YS5zZXJ2ZXIuX2lkfWA7 CiAKICAgaWYgKGhhc0RhdGFiYXNlSW5mb3JtYXRpb24ocGFyZW50RGF0YSkpIHsKICAgICB1cmxf ZW5kcG9pbnQgKz0gYCZkaWQ9JHtwYXJlbnREYXRhLmRhdGFiYXNlLl9pZH1gOworICAgIGlmKHBh cmVudERhdGEuZGF0YWJhc2UubGFiZWwpIHsKKyAgICAgIHVybF9lbmRwb2ludCArPSBgJmRhdGFi YXNlX25hbWU9JHtwYXJlbnREYXRhLmRhdGFiYXNlLmxhYmVsfWA7CisgICAgfQogICB9CiAKICAg aWYoc3FsSWQpIHsKQEAgLTQ3LDcgKzQ5LDcgQEAgZnVuY3Rpb24gZ2VuZXJhdGVUaXRsZShwZ0Jy b3dzZXIsIGFjaVRyZWVJZGVudGlmaWVyKSB7CiAgIHJldHVybiBnZXRQYW5lbFRpdGxlKHBnQnJv d3NlciwgYWNpVHJlZUlkZW50aWZpZXIpOwogfQogCi1leHBvcnQgZnVuY3Rpb24gc2hvd1F1ZXJ5 VG9vbChkYXRhZ3JpZCwgcGdCcm93c2VyLCB1cmwsIGFjaVRyZWVJZGVudGlmaWVyLCB0cmFuc0lk KSB7CitleHBvcnQgZnVuY3Rpb24gc2hvd1F1ZXJ5VG9vbChxdWVyeVRvb2xNb2QsIHBnQnJvd3Nl ciwgdXJsLCBhY2lUcmVlSWRlbnRpZmllciwgdHJhbnNJZCkgewogICBjb25zdCBzVVJMID0gdXJs IHx8ICcnOwogICBjb25zdCBxdWVyeVRvb2xUaXRsZSA9IGdlbmVyYXRlVGl0bGUocGdCcm93c2Vy LCBhY2lUcmVlSWRlbnRpZmllcik7CiAKQEAgLTY2LDE1ICs2OCwxNSBAQCBleHBvcnQgZnVuY3Rp b24gc2hvd1F1ZXJ5VG9vbChkYXRhZ3JpZCwgcGdCcm93c2VyLCB1cmwsIGFjaVRyZWVJZGVudGlm aWVyLCB0cmFucwogICAgIHJldHVybjsKICAgfQogCi0gIGNvbnN0IGdyaWRVcmwgPSBnZW5lcmF0 ZVVybCh0cmFuc0lkLCBxdWVyeVRvb2xUaXRsZSwgcGFyZW50RGF0YSk7Ci0gIGxhdW5jaERhdGFH cmlkKGRhdGFncmlkLCB0cmFuc0lkLCBncmlkVXJsLCBxdWVyeVRvb2xUaXRsZSwgc1VSTCk7Cisg IGNvbnN0IGdyaWRVcmwgPSBnZW5lcmF0ZVVybCh0cmFuc0lkLCBwYXJlbnREYXRhKTsKKyAgbGF1 bmNoUXVlcnlUb29sKHF1ZXJ5VG9vbE1vZCwgdHJhbnNJZCwgZ3JpZFVybCwgcXVlcnlUb29sVGl0 bGUsIHNVUkwpOwogfQogCi1leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVTY3JpcHQocGFyZW50RGF0 YSwgZGF0YWdyaWQpIHsKK2V4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVNjcmlwdChwYXJlbnREYXRh LCBxdWVyeVRvb2xNb2QpIHsKICAgY29uc3QgcXVlcnlUb29sVGl0bGUgPSBgJHtwYXJlbnREYXRh LmRhdGFiYXNlfS8ke3BhcmVudERhdGEudXNlcn1AJHtwYXJlbnREYXRhLnNlcnZlcn1gOwogICBj b25zdCB0cmFuc0lkID0gZ2V0UmFuZG9tSW50KDEsIDk5OTk5OTkpOwogCi0gIGxldCB1cmxfZW5k cG9pbnQgPSB1cmxfZm9yKCdkYXRhZ3JpZC5wYW5lbCcsIHsKKyAgbGV0IHVybF9lbmRwb2ludCA9 IHVybF9mb3IoJ3NxbGVkaXRvci5wYW5lbCcsIHsKICAgICAndHJhbnNfaWQnOiB0cmFuc0lkLAog ICB9KTsKIApAQCAtODQsMTAgKzg2LDEwIEBAIGV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVNjcmlw dChwYXJlbnREYXRhLCBkYXRhZ3JpZCkgewogICAgICtgJnNlcnZlcl90eXBlPSR7cGFyZW50RGF0 YS5zdHlwZX1gCiAgICAgK2AmZGlkPSR7cGFyZW50RGF0YS5kaWR9YDsKIAotICBsYXVuY2hEYXRh R3JpZChkYXRhZ3JpZCwgdHJhbnNJZCwgdXJsX2VuZHBvaW50LCBxdWVyeVRvb2xUaXRsZSwgJycp OworICBsYXVuY2hRdWVyeVRvb2wocXVlcnlUb29sTW9kLCB0cmFuc0lkLCB1cmxfZW5kcG9pbnQs IHF1ZXJ5VG9vbFRpdGxlLCAnJyk7CiB9CiAKLWV4cG9ydCBmdW5jdGlvbiBzaG93RVJEU3FsVG9v bChwYXJlbnREYXRhLCBlcmRTcWxJZCwgcXVlcnlUb29sVGl0bGUsIGRhdGFncmlkKSB7CitleHBv cnQgZnVuY3Rpb24gc2hvd0VSRFNxbFRvb2wocGFyZW50RGF0YSwgZXJkU3FsSWQsIHF1ZXJ5VG9v bFRpdGxlLCBxdWVyeVRvb2xNb2QpIHsKICAgY29uc3QgdHJhbnNJZCA9IGdldFJhbmRvbUludCgx LCA5OTk5OTk5KTsKICAgcGFyZW50RGF0YSA9IHsKICAgICBzZXJ2ZXJfZ3JvdXA6IHsKQEAgLTEw MiwxMiArMTA0LDEyIEBAIGV4cG9ydCBmdW5jdGlvbiBzaG93RVJEU3FsVG9vbChwYXJlbnREYXRh LCBlcmRTcWxJZCwgcXVlcnlUb29sVGl0bGUsIGRhdGFncmlkKSB7CiAgICAgfSwKICAgfTsKIAot ICBjb25zdCBncmlkVXJsID0gZ2VuZXJhdGVVcmwodHJhbnNJZCwgcXVlcnlUb29sVGl0bGUsIHBh cmVudERhdGEsIGVyZFNxbElkKTsKLSAgbGF1bmNoRGF0YUdyaWQoZGF0YWdyaWQsIHRyYW5zSWQs IGdyaWRVcmwsIHF1ZXJ5VG9vbFRpdGxlLCAnJyk7CisgIGNvbnN0IGdyaWRVcmwgPSBnZW5lcmF0 ZVVybCh0cmFuc0lkLCBwYXJlbnREYXRhLCBlcmRTcWxJZCk7CisgIGxhdW5jaFF1ZXJ5VG9vbChx dWVyeVRvb2xNb2QsIHRyYW5zSWQsIGdyaWRVcmwsIHF1ZXJ5VG9vbFRpdGxlLCAnJyk7CiB9CiAK LWV4cG9ydCBmdW5jdGlvbiBsYXVuY2hEYXRhR3JpZChkYXRhZ3JpZCwgdHJhbnNJZCwgZ3JpZFVy bCwgcXVlcnlUb29sVGl0bGUsIHNVUkwpIHsKLSAgbGV0IHJldFZhbCA9IGRhdGFncmlkLmxhdW5j aF9ncmlkKHRyYW5zSWQsIGdyaWRVcmwsIHRydWUsIHF1ZXJ5VG9vbFRpdGxlLCBzVVJMKTsKK2V4 cG9ydCBmdW5jdGlvbiBsYXVuY2hRdWVyeVRvb2wocXVlcnlUb29sTW9kLCB0cmFuc0lkLCBncmlk VXJsLCBxdWVyeVRvb2xUaXRsZSwgc1VSTCkgeworICBsZXQgcmV0VmFsID0gcXVlcnlUb29sTW9k LmxhdW5jaCh0cmFuc0lkLCBncmlkVXJsLCB0cnVlLCBxdWVyeVRvb2xUaXRsZSwgc1VSTCk7CiAK ICAgaWYoIXJldFZhbCkgewogICAgIE5vdGlmeS5hbGVydCgKQEAgLTExOSwyMyArMTIxLDE3IEBA IGV4cG9ydCBmdW5jdGlvbiBsYXVuY2hEYXRhR3JpZChkYXRhZ3JpZCwgdHJhbnNJZCwgZ3JpZFVy bCwgcXVlcnlUb29sVGl0bGUsIHNVUkwpCiAgIH0KIH0KIAotZnVuY3Rpb24gc2V0UGFuZWxUaXRs ZShwYW5lbCwgdmFsdWUpIHsKLSAgaWYodmFsdWUpIHsKLSAgICAkKCcjJyArIHBhbmVsLiR0aXRs ZS5pbmRleCgpICsgJyBkaXY6Zmlyc3QnKS5hZGRDbGFzcygnd2NQYW5lbFRhYi1keW5hbWljJyk7 Ci0gIH0gZWxzZSB7Ci0gICAgJCgnIycgKyBwYW5lbC4kdGl0bGUuaW5kZXgoKSArICcgZGl2OmZp cnN0JykucmVtb3ZlQ2xhc3MoJ3djUGFuZWxUYWItZHluYW1pYycpOwotICB9Ci19Ci0KIGV4cG9y dCBmdW5jdGlvbiBfc2V0X2R5bmFtaWNfdGFiKHBnQnJvd3NlciwgdmFsdWUpewotICB2YXIgZGF0 YWdyaWRfcGFuZWxzID0gcGdCcm93c2VyLmRvY2tlci5maW5kUGFuZWxzKCdmcm1fZGF0YWdyaWQn KTsKLSAgZGF0YWdyaWRfcGFuZWxzLmZvckVhY2gocGFuZWwgPT4gewotICAgIHNldFBhbmVsVGl0 bGUocGFuZWwsIHZhbHVlKTsKLSAgfSk7CisgIHZhciBzcWxlZGl0b3JfcGFuZWxzID0gcGdCcm93 c2VyLmRvY2tlci5maW5kUGFuZWxzKCdmcm1fc3FsZWRpdG9yJyk7CisgIGNvbnN0IHByb2Nlc3Mg PSBwYW5lbCA9PiB7CisgICAgaWYodmFsdWUpIHsKKyAgICAgICQoJyMnICsgcGFuZWwuJHRpdGxl LmluZGV4KCkgKyAnIGRpdjpmaXJzdCcpLmFkZENsYXNzKCd3Y1BhbmVsVGFiLWR5bmFtaWMnKTsK KyAgICB9IGVsc2UgeworICAgICAgJCgnIycgKyBwYW5lbC4kdGl0bGUuaW5kZXgoKSArICcgZGl2 OmZpcnN0JykucmVtb3ZlQ2xhc3MoJ3djUGFuZWxUYWItZHluYW1pYycpOworICAgIH0KKyAgfTsK KyAgc3FsZWRpdG9yX3BhbmVscy5mb3JFYWNoKHByb2Nlc3MpOwogCiAgIHZhciBkZWJ1Z2dlcl9w YW5lbHMgPSBwZ0Jyb3dzZXIuZG9ja2VyLmZpbmRQYW5lbHMoJ2ZybV9kZWJ1Z2dlcicpOwotICBk ZWJ1Z2dlcl9wYW5lbHMuZm9yRWFjaChwYW5lbCA9PiB7Ci0gICAgc2V0UGFuZWxUaXRsZShwYW5l bCwgdmFsdWUpOwotICB9KTsKLQorICBkZWJ1Z2dlcl9wYW5lbHMuZm9yRWFjaChwcm9jZXNzKTsK IH0KZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93 X2RhdGEuanMgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3Nob3dfdmll d19kYXRhLmpzCnNpbWlsYXJpdHkgaW5kZXggODglCnJlbmFtZSBmcm9tIHdlYi9wZ2FkbWluL3Rv b2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X2RhdGEuanMKcmVuYW1lIHRvIHdlYi9wZ2FkbWlu L3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc2hvd192aWV3X2RhdGEuanMKaW5kZXggZjQxOGU3 ZGE3Li44NTE2NGIwOGEgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0 YXRpYy9qcy9zaG93X2RhdGEuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0 YXRpYy9qcy9zaG93X3ZpZXdfZGF0YS5qcwpAQCAtOCwyNCArOCwyNCBAQAogLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIGltcG9y dCBnZXR0ZXh0IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9nZXR0ZXh0JzsKIGltcG9ydCB1 cmxfZm9yIGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy91cmxfZm9yJzsKLWltcG9ydCB7Z2V0 RGF0YWJhc2VMYWJlbCwgZ2VuZXJhdGVUaXRsZX0gZnJvbSAnLi9kYXRhZ3JpZF9wYW5lbF90aXRs ZSc7CitpbXBvcnQge2dldERhdGFiYXNlTGFiZWwsIGdlbmVyYXRlVGl0bGV9IGZyb20gJy4vc3Fs ZWRpdG9yX3RpdGxlJzsKIGltcG9ydCBDb2RlTWlycm9yIGZyb20gJ2J1bmRsZWRfY29kZW1pcnJv cic7CiBpbXBvcnQgKiBhcyBTcWxFZGl0b3JVdGlscyBmcm9tICdzb3VyY2VzL3NxbGVkaXRvcl91 dGlscyc7CiBpbXBvcnQgJCBmcm9tICdqcXVlcnknOwogaW1wb3J0IF8gZnJvbSAndW5kZXJzY29y ZSc7CiBpbXBvcnQgTm90aWZ5IGZyb20gJy4uLy4uLy4uLy4uL3N0YXRpYy9qcy9oZWxwZXJzL05v dGlmaWVyJzsKIAotZXhwb3J0IGZ1bmN0aW9uIHNob3dEYXRhR3JpZCgKLSAgZGF0YWdyaWQsCitl eHBvcnQgZnVuY3Rpb24gc2hvd1ZpZXdEYXRhKAorICBxdWVyeVRvb2xNb2QsCiAgIHBnQnJvd3Nl ciwKICAgYWxlcnRpZnksCiAgIGNvbm5lY3Rpb25EYXRhLAotICBhY2lUcmVlSWRlbnRpZmllciwK KyAgdHJlZUlkZW50aWZpZXIsCiAgIHRyYW5zSWQsCiAgIGZpbHRlcj1mYWxzZSwKICAgcHJlZmVy ZW5jZXM9bnVsbAogKSB7Ci0gIGNvbnN0IG5vZGUgPSBwZ0Jyb3dzZXIudHJlZS5maW5kTm9kZUJ5 RG9tRWxlbWVudChhY2lUcmVlSWRlbnRpZmllcik7CisgIGNvbnN0IG5vZGUgPSBwZ0Jyb3dzZXIu dHJlZS5maW5kTm9kZUJ5RG9tRWxlbWVudCh0cmVlSWRlbnRpZmllcik7CiAgIGlmIChub2RlID09 PSB1bmRlZmluZWQgfHwgIW5vZGUuZ2V0RGF0YSgpKSB7CiAgICAgTm90aWZ5LmFsZXJ0KAogICAg ICAgZ2V0dGV4dCgnRGF0YSBHcmlkIEVycm9yJyksCkBAIC0zNCw3ICszNCw3IEBAIGV4cG9ydCBm dW5jdGlvbiBzaG93RGF0YUdyaWQoCiAgICAgcmV0dXJuOwogICB9CiAKLSAgY29uc3QgcGFyZW50 RGF0YSA9IHBnQnJvd3Nlci50cmVlLmdldFRyZWVOb2RlSGllcmFyY2h5KCAgYWNpVHJlZUlkZW50 aWZpZXIKKyAgY29uc3QgcGFyZW50RGF0YSA9IHBnQnJvd3Nlci50cmVlLmdldFRyZWVOb2RlSGll cmFyY2h5KCAgdHJlZUlkZW50aWZpZXIKICAgKTsKIAogICBpZiAoaGFzU2VydmVyT3JEYXRhYmFz ZUNvbmZpZ3VyYXRpb24ocGFyZW50RGF0YSkKQEAgLTQ4LDI0ICs0OCwyNCBAQCBleHBvcnQgZnVu Y3Rpb24gc2hvd0RhdGFHcmlkKAogICB9CiAKICAgY29uc3QgZ3JpZFVybCA9IGdlbmVyYXRlVXJs KHRyYW5zSWQsIGNvbm5lY3Rpb25EYXRhLCBub2RlLmdldERhdGEoKSwgcGFyZW50RGF0YSk7Ci0g IGNvbnN0IHF1ZXJ5VG9vbFRpdGxlID0gZ2VuZXJhdGVEYXRhZ3JpZFRpdGxlKHBnQnJvd3Nlciwg YWNpVHJlZUlkZW50aWZpZXIpOworICBjb25zdCBxdWVyeVRvb2xUaXRsZSA9IGdlbmVyYXRlVmll d0RhdGFUaXRsZShwZ0Jyb3dzZXIsIHRyZWVJZGVudGlmaWVyKTsKICAgaWYoZmlsdGVyKSB7CiAg ICAgaW5pdEZpbHRlckRpYWxvZyhhbGVydGlmeSwgcGdCcm93c2VyKTsKIAogICAgIGNvbnN0IHZh bGlkYXRlVXJsID0gZ2VuZXJhdGVGaWx0ZXJWYWxpZGF0ZVVybChub2RlLmdldERhdGEoKSwgcGFy ZW50RGF0YSk7CiAKICAgICBsZXQgb2tDYWxsYmFjayA9IGZ1bmN0aW9uKHNxbCkgewotICAgICAg ZGF0YWdyaWQubGF1bmNoX2dyaWQodHJhbnNJZCwgZ3JpZFVybCwgZmFsc2UsIHF1ZXJ5VG9vbFRp dGxlLCBudWxsLCBzcWwpOworICAgICAgcXVlcnlUb29sTW9kLmxhdW5jaCh0cmFuc0lkLCBncmlk VXJsLCBmYWxzZSwgcXVlcnlUb29sVGl0bGUsIG51bGwsIHNxbCk7CiAgICAgfTsKIAotICAgICQu Z2V0KHVybF9mb3IoJ2RhdGFncmlkLmZpbHRlcicpLAorICAgICQuZ2V0KHVybF9mb3IoJ3F1ZXJ5 VG9vbE1vZC5maWx0ZXInKSwKICAgICAgIGZ1bmN0aW9uKGRhdGEpIHsKICAgICAgICAgYWxlcnRp ZnkuZmlsdGVyRGlhbG9nKGdldHRleHQoJ0RhdGEgRmlsdGVyIC0gJXMnLCBxdWVyeVRvb2xUaXRs ZSksIGRhdGEsIHZhbGlkYXRlVXJsLCBwcmVmZXJlbmNlcywgb2tDYWxsYmFjaykKICAgICAgICAg ICAucmVzaXplVG8ocGdCcm93c2VyLnN0ZFcuc20scGdCcm93c2VyLnN0ZEguc20pOwogICAgICAg fQogICAgICk7CiAgIH0gZWxzZSB7Ci0gICAgZGF0YWdyaWQubGF1bmNoX2dyaWQodHJhbnNJZCwg Z3JpZFVybCwgZmFsc2UsIHF1ZXJ5VG9vbFRpdGxlKTsKKyAgICBxdWVyeVRvb2xNb2QubGF1bmNo KHRyYW5zSWQsIGdyaWRVcmwsIGZhbHNlLCBxdWVyeVRvb2xUaXRsZSk7CiAgIH0KIH0KIApAQCAt ODMsOCArODMsMjEgQEAgZXhwb3J0IGZ1bmN0aW9uIHJldHJpZXZlTmFtZVNwYWNlTmFtZShwYXJl bnREYXRhKSB7CiAgIHJldHVybiAnJzsKIH0KIAorZXhwb3J0IGZ1bmN0aW9uIHJldHJpZXZlTm9k ZU5hbWUocGFyZW50RGF0YSkgeworICBpZiAocGFyZW50RGF0YS50YWJsZSAhPT0gdW5kZWZpbmVk KSB7CisgICAgcmV0dXJuIHBhcmVudERhdGEudGFibGUubGFiZWw7CisgIH0KKyAgZWxzZSBpZiAo cGFyZW50RGF0YS52aWV3ICE9PSB1bmRlZmluZWQpIHsKKyAgICByZXR1cm4gcGFyZW50RGF0YS52 aWV3LmxhYmVsOworICB9CisgIGVsc2UgaWYgKHBhcmVudERhdGEuY2F0YWxvZyAhPT0gdW5kZWZp bmVkKSB7CisgICAgcmV0dXJuIHBhcmVudERhdGEuY2F0YWxvZy5sYWJlbDsKKyAgfQorICByZXR1 cm4gJyc7Cit9CisKIGZ1bmN0aW9uIGdlbmVyYXRlVXJsKHRyYW5zX2lkLCBjb25uZWN0aW9uRGF0 YSwgbm9kZURhdGEsIHBhcmVudERhdGEpIHsKLSAgbGV0IHVybF9lbmRwb2ludCA9IHVybF9mb3Io J2RhdGFncmlkLnBhbmVsJywgeworICBsZXQgdXJsX2VuZHBvaW50ID0gdXJsX2Zvcignc3FsZWRp dG9yLnBhbmVsJywgewogICAgICd0cmFuc19pZCc6IHRyYW5zX2lkLAogICB9KTsKIApAQCAtMTA4 LDcgKzEyMSw3IEBAIGZ1bmN0aW9uIGdlbmVyYXRlRmlsdGVyVmFsaWRhdGVVcmwobm9kZURhdGEs IHBhcmVudERhdGEpIHsKICAgICAnb2JqX2lkJzogbm9kZURhdGEuX2lkLAogICB9OwogCi0gIHJl dHVybiB1cmxfZm9yKCdkYXRhZ3JpZC5maWx0ZXJfdmFsaWRhdGUnLCB1cmxfcGFyYW1zKTsKKyAg cmV0dXJuIHVybF9mb3IoJ3F1ZXJ5VG9vbE1vZC5maWx0ZXJfdmFsaWRhdGUnLCB1cmxfcGFyYW1z KTsKIH0KIAogZnVuY3Rpb24gaW5pdEZpbHRlckRpYWxvZyhhbGVydGlmeSwgcGdCcm93c2VyKSB7 CkBAIC0yODYsMTUgKzI5OSwxNSBAQCBmdW5jdGlvbiBoYXNTY2hlbWFPckNhdGFsb2dPclZpZXdJ bmZvcm1hdGlvbihwYXJlbnREYXRhKSB7CiAgICAgcGFyZW50RGF0YS5jYXRhbG9nICE9PSB1bmRl ZmluZWQ7CiB9CiAKLWV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZURhdGFncmlkVGl0bGUocGdCcm93 c2VyLCBhY2lUcmVlSWRlbnRpZmllciwgY3VzdG9tX3RpdGxlPW51bGwsIGJhY2tlbmRfZW50aXR5 PW51bGwpIHsKK2V4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVZpZXdEYXRhVGl0bGUocGdCcm93c2Vy LCB0cmVlSWRlbnRpZmllciwgY3VzdG9tX3RpdGxlPW51bGwsIGJhY2tlbmRfZW50aXR5PW51bGwp IHsKICAgdmFyIHByZWZlcmVuY2VzID0gcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3JfbW9k dWxlKCdicm93c2VyJyk7CiAgIGNvbnN0IHBhcmVudERhdGEgPSBwZ0Jyb3dzZXIudHJlZS5nZXRU cmVlTm9kZUhpZXJhcmNoeSgKLSAgICBhY2lUcmVlSWRlbnRpZmllcgorICAgIHRyZWVJZGVudGlm aWVyCiAgICk7CiAKICAgY29uc3QgbmFtZXNwYWNlTmFtZSA9IHJldHJpZXZlTmFtZVNwYWNlTmFt ZShwYXJlbnREYXRhKTsKICAgY29uc3QgZGJfbGFiZWwgPSAhXy5pc1VuZGVmaW5lZChiYWNrZW5k X2VudGl0eSkgJiYgYmFja2VuZF9lbnRpdHkgIT0gbnVsbCAmJiBiYWNrZW5kX2VudGl0eS5oYXNP d25Qcm9wZXJ0eSgnZGJfbmFtZScpID8gYmFja2VuZF9lbnRpdHlbJ2RiX25hbWUnXSA6IGdldERh dGFiYXNlTGFiZWwocGFyZW50RGF0YSk7Ci0gIGNvbnN0IG5vZGUgPSBwZ0Jyb3dzZXIudHJlZS5m aW5kTm9kZUJ5RG9tRWxlbWVudChhY2lUcmVlSWRlbnRpZmllcik7CisgIGNvbnN0IG5vZGUgPSBw Z0Jyb3dzZXIudHJlZS5maW5kTm9kZUJ5RG9tRWxlbWVudCh0cmVlSWRlbnRpZmllcik7CiAKICAg dmFyIGR0Z190aXRsZV9wbGFjZWhvbGRlciA9ICcnOwogICBpZihjdXN0b21fdGl0bGUpIHsKQEAg LTMxMCw3ICszMjMsNyBAQCBleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVEYXRhZ3JpZFRpdGxlKHBn QnJvd3NlciwgYWNpVHJlZUlkZW50aWZpZXIsIGN1c3RvbV90aXRsZQogICAgICdzZXJ2ZXInOiBw YXJlbnREYXRhLnNlcnZlci5sYWJlbCwKICAgICAnc2NoZW1hJzogbmFtZXNwYWNlTmFtZSwKICAg ICAndGFibGUnOiBub2RlLmdldERhdGEoKS5sYWJlbCwKLSAgICAndHlwZSc6ICdkYXRhZ3JpZCcs CisgICAgJ3R5cGUnOiAndmlld19kYXRhJywKICAgfTsKICAgcmV0dXJuIGdlbmVyYXRlVGl0bGUo ZHRnX3RpdGxlX3BsYWNlaG9sZGVyLCB0aXRsZV9kYXRhKTsKIH0KZGlmZiAtLWdpdCBhL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzIGIvd2ViL3BnYWRt aW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3IuanMKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDM1YzZhYWQ5YS4uMDAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzCisrKyAvZGV2L251bGwKQEAgLTEs NTE4OSArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwot Ly8KLS8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50 IFRlYW0KLS8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwg TGljZW5jZQotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCi0vKiBlc2xpbnQtZGlzYWJsZSAqLwotLyogVGhpcyBpcyB1c2Vk IHRvIGNoYW5nZSBwdWJsaWNQYXRoIG9mIHdlYnBhY2sgYXQgcnVudGltZSBmb3IgbG9hZGluZyBj aHVua3MgKi8KLS8qIERvIG5vdCBhZGQgbGV0LCB2YXIsIGNvbnN0IHRvIHRoaXMgdmFyaWFibGUg Ki8KLV9fd2VicGFja19wdWJsaWNfcGF0aF9fID0gd2luZG93LnJlc291cmNlQmFzZVBhdGg7Ci0v KiBlc2xpbnQtZW5hYmxlICovCi0KLWltcG9ydCB7bGF1bmNoRGF0YUdyaWR9IGZyb20gJ3Rvb2xz L2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wnOwotaW1wb3J0IHtnZW5lcmF0ZURh dGFncmlkVGl0bGV9IGZyb20gJ3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X2RhdGEnOwot aW1wb3J0IE5vdGlmeSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvaGVscGVycy9Ob3RpZmll cic7Ci0KLWRlZmluZSgndG9vbHMucXVlcnl0b29sJywgWwotICAnc291cmNlcy9nZXR0ZXh0Jywg J3NvdXJjZXMvdXJsX2ZvcicsICdqcXVlcnknLCAnanF1ZXJ5LnVpJywKLSAgJ2pxdWVyeXVpLnBv c2l0aW9uJywgJ3VuZGVyc2NvcmUnLCAncGdhZG1pbi5hbGVydGlmeWpzJywKLSAgJ3NvdXJjZXMv cGdhZG1pbicsICdiYWNrYm9uZScsICdidW5kbGVkX2NvZGVtaXJyb3InLCAnc291cmNlcy91dGls cycsCi0gICdwZ2FkbWluLm1pc2MuZXhwbGFpbicsCi0gICdwZ2FkbWluLnVzZXJfbWFuYWdlbWVu dC5jdXJyZW50X3VzZXInLAotICAnc291cmNlcy9zZWxlY3Rpb24vZ3JpZF9zZWxlY3RvcicsCi0g ICdzb3VyY2VzL3NlbGVjdGlvbi9hY3RpdmVfY2VsbF9jYXB0dXJlJywKLSAgJ3NvdXJjZXMvc2Vs ZWN0aW9uL2NsaXBib2FyZCcsCi0gICdzb3VyY2VzL3NlbGVjdGlvbi9jb3B5X2RhdGEnLAotICAn c291cmNlcy9zZWxlY3Rpb24vcmFuZ2Vfc2VsZWN0aW9uX2hlbHBlcicsCi0gICdzb3VyY2VzL3Ns aWNrZ3JpZC9ldmVudF9oYW5kbGVycy9oYW5kbGVfcXVlcnlfb3V0cHV0X2tleWJvYXJkX2V2ZW50 JywKLSAgJ3NvdXJjZXMvc2VsZWN0aW9uL3hjZWxsX3NlbGVjdGlvbl9tb2RlbCcsCi0gICdzb3Vy Y2VzL3NlbGVjdGlvbi9zZXRfc3RhZ2VkX3Jvd3MnLAotICAnc291cmNlcy9zcWxlZGl0b3JfdXRp bHMnLAotICAnc291cmNlcy9zcWxlZGl0b3IvZXhlY3V0ZV9xdWVyeScsCi0gICdzb3VyY2VzL3Nx bGVkaXRvci9xdWVyeV90b29sX2h0dHBfZXJyb3JfaGFuZGxlcicsCi0gICdzb3VyY2VzL3NxbGVk aXRvci9maWx0ZXJfZGlhbG9nJywKLSAgJ3NvdXJjZXMvc3FsZWRpdG9yL25ld19jb25uZWN0aW9u X2RpYWxvZycsCi0gICdzb3VyY2VzL3NxbGVkaXRvci9nZW9tZXRyeV92aWV3ZXInLAotICAnc291 cmNlcy9zcWxlZGl0b3IvaGlzdG9yeS9oaXN0b3J5X2NvbGxlY3Rpb24uanMnLAotICAnc291cmNl cy9zcWxlZGl0b3IvaGlzdG9yeS9xdWVyeV9oaXN0b3J5JywKLSAgJ3NvdXJjZXMvc3FsZWRpdG9y L2hpc3RvcnkvcXVlcnlfc291cmNlcycsCi0gICdzb3VyY2VzL2tleWJvYXJkX3Nob3J0Y3V0cycs Ci0gICdzb3VyY2VzL3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnMnLAotICAnc291cmNlcy9z cWxlZGl0b3IvcXVlcnlfdG9vbF9ub3RpZmljYXRpb25zJywKLSAgJ3BnYWRtaW4uZGF0YWdyaWQn LAotICAnc291cmNlcy9tb2RpZnlfYW5pbWF0aW9uJywKLSAgJ3NvdXJjZXMvc3FsZWRpdG9yL2Nh bGN1bGF0ZV9xdWVyeV9ydW5fdGltZScsCi0gICdzb3VyY2VzL3NxbGVkaXRvci9jYWxsX3JlbmRl cl9hZnRlcl9wb2xsJywKLSAgJ3NvdXJjZXMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5j ZXMnLAotICAnc291cmNlcy9zcWxlZGl0b3IvcXVlcnlfdHhuX3N0YXR1c19jb25zdGFudHMnLAot ICAnc291cmNlcy9jc3JmJywKLSAgJ3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9kYXRhZ3JpZF9w YW5lbF90aXRsZScsCi0gICdzb3VyY2VzL3dpbmRvdycsCi0gICdzb3VyY2VzL2lzX25hdGl2ZScs Ci0gICdzb3VyY2VzL3NxbGVkaXRvci9tYWNybycsCi0gICdwZ2FkbWluLmF1dGhlbnRpY2F0ZS5r ZXJiZXJvcycsCi0gICdzb3VyY2VzLy4uL2J1bmRsZS9zbGlja2dyaWQnLAotICAncGdhZG1pbi5m aWxlX21hbmFnZXInLAotICAnc2xpY2sucGdhZG1pbi5mb3JtYXR0ZXJzJywKLSAgJ3NsaWNrLnBn YWRtaW4uZWRpdG9ycycsCi0gICdzbGljay5wZ2FkbWluLnBsdWdpbnMvc2xpY2suYXV0b2NvbHVt bnNpemUnLAotICAncGdhZG1pbi5icm93c2VyJywKLSAgJ3BnYWRtaW4udG9vbHMudXNlcl9tYW5h Z2VtZW50JywKLV0sIGZ1bmN0aW9uKAotICBnZXR0ZXh0LCB1cmxfZm9yLCAkLCBqcXVlcnl1aSwg anF1ZXJ5dWlfcG9zaXRpb24sIF8sIGFsZXJ0aWZ5LCBwZ0FkbWluLCBCYWNrYm9uZSwgY29kZW1p cnJvciwgcGdhZG1pblV0aWxzLAotICBwZ0V4cGxhaW4sIGN1cnJlbnRfdXNlciwgR3JpZFNlbGVj dG9yLCBBY3RpdmVDZWxsQ2FwdHVyZSwgY2xpcGJvYXJkLCBjb3B5RGF0YSwgUmFuZ2VTZWxlY3Rp b25IZWxwZXIsIGhhbmRsZVF1ZXJ5T3V0cHV0S2V5Ym9hcmRFdmVudCwKLSAgWENlbGxTZWxlY3Rp b25Nb2RlbCwgc2V0U3RhZ2VkUm93cywgU3FsRWRpdG9yVXRpbHMsIEV4ZWN1dGVRdWVyeSwgaHR0 cEVycm9ySGFuZGxlciwgRmlsdGVySGFuZGxlciwgbmV3Q29ubmVjdGlvbkhhbmRsZXIsCi0gIEdl b21ldHJ5Vmlld2VyLCBoaXN0b3J5Q29sbCwgcXVlcnlIaXN0LCBxdWVyeVNvdXJjZXMsCi0gIGtl eWJvYXJkU2hvcnRjdXRzLCBxdWVyeVRvb2xBY3Rpb25zLCBxdWVyeVRvb2xOb3RpZmljYXRpb25z LCBEYXRhZ3JpZCwKLSAgbW9kaWZ5QW5pbWF0aW9uLCBjYWxjdWxhdGVRdWVyeVJ1blRpbWUsIGNh bGxSZW5kZXJBZnRlclBvbGwsIHF1ZXJ5VG9vbFByZWYsIHF1ZXJ5VHhuU3RhdHVzLCBjc3JmVG9r ZW4sIHBhbmVsVGl0bGVGdW5jLAotICBwZ1dpbmRvdywgaXNOYXRpdmUsIE1hY3JvSGFuZGxlciwg S2VyYmVyb3MpIHsKLSAgLyogUmV0dXJuIGJhY2ssIHRoaXMgaGFzIGJlZW4gY2FsbGVkIG1vcmUg dGhhbiBvbmNlICovCi0gIGlmIChwZ0FkbWluLlNxbEVkaXRvcikKLSAgICByZXR1cm4gcGdBZG1p bi5TcWxFZGl0b3I7Ci0KLSAgLy8gU29tZSBzY3JpcHRzIGRvIGV4cG9ydCB0aGVpciBvYmplY3Qg aW4gdGhlIHdpbmRvdyBvbmx5LgotICAvLyBHZW5lcmFsbHkgdGhlIG9uZSwgd2hpY2ggZG8gbm8g aGF2ZSBBTUQgc3VwcG9ydC4KLSAgdmFyIHdjRG9ja2VyID0gd2luZG93LndjRG9ja2VyLAotICAg IHBnQnJvd3NlciA9IHBnQWRtaW4uQnJvd3NlciwKLSAgICBDb2RlTWlycm9yID0gY29kZW1pcnJv ci5kZWZhdWx0LAotICAgIFNsaWNrID0gd2luZG93LlNsaWNrLAotICAgIEhpc3RvcnlDb2xsZWN0 aW9uID0gaGlzdG9yeUNvbGwuZGVmYXVsdCwKLSAgICBRdWVyeUhpc3RvcnkgPSBxdWVyeUhpc3Qu ZGVmYXVsdCwKLSAgICBRdWVyeVNvdXJjZXMgPSBxdWVyeVNvdXJjZXMuUXVlcnlTb3VyY2VzOwot Ci0gIGNzcmZUb2tlbi5zZXRQR0NTUkZUb2tlbihwZ0FkbWluLmNzcmZfdG9rZW5faGVhZGVyLCBw Z0FkbWluLmNzcmZfdG9rZW4pOwotCi0gIHZhciBpc19xdWVyeV9ydW5uaW5nID0gZmFsc2U7Ci0K LSAgY29uc3QgRU1QVFlfREFUQV9PVVRQVVRfQ09OVEVOVCA9ICc8ZGl2IHJvbGU9InN0YXR1cyIg Y2xhc3M9InBnLXBhbmVsLW1lc3NhZ2UiPicgKwotICAgIGdldHRleHQoJ05vIGRhdGEgb3V0cHV0 LiBFeGVjdXRlIGEgcXVlcnkgdG8gZ2V0IG91dHB1dC4nKSArCi0gICc8L2Rpdj4nOwotCi0gIGNv bnN0IEVNUFRZX0VYUExBSU5fQ09OVEVOVCA9ICc8ZGl2IHJvbGU9InN0YXR1cyIgY2xhc3M9InBn LXBhbmVsLW1lc3NhZ2UiPicgKwotICAgIGdldHRleHQoJ1VzZSBFeHBsYWluL0V4cGxhaW4gYW5h bHl6ZSBidXR0b24gdG8gZ2VuZXJhdGUgdGhlIHBsYW4gZm9yIGEgcXVlcnkuIEFsdGVybmF0aXZl bHksIHlvdSBjYW4gYWxzbyBleGVjdXRlICJFWFBMQUlOIChGT1JNQVQgSlNPTikgW1FVRVJZXSIu JykgKwotICAnPC9kaXY+JzsKLQotICAvLyBEZWZpbmluZyBCYWNrYm9uZSB2aWV3IGZvciB0aGUg c3FsIGdyaWQuCi0gIHZhciBTUUxFZGl0b3JWaWV3ID0gQmFja2JvbmUuVmlldy5leHRlbmQoewot ICAgIGluaXRpYWxpemU6IGZ1bmN0aW9uKG9wdHMpIHsKLSAgICAgIHRoaXMuJGVsID0gb3B0cy5l bDsKLSAgICAgIHRoaXMuaGFuZGxlciA9IG9wdHMuaGFuZGxlcjsKLSAgICAgIHRoaXMuaGFuZGxl clsnY29sX3NpemUnXSA9IHt9OwotICAgICAgbGV0IGJyb3dzZXIgPSBwZ1dpbmRvdy5kZWZhdWx0 LnBnQWRtaW4uQnJvd3NlcjsKLSAgICAgIHRoaXMucHJlZmVyZW5jZXMgPSBicm93c2VyLmdldF9w cmVmZXJlbmNlc19mb3JfbW9kdWxlKCdzcWxlZGl0b3InKTsKLSAgICAgIHRoaXMuYnJvd3Nlcl9w cmVmZXJlbmNlcyA9IGJyb3dzZXIuZ2V0X3ByZWZlcmVuY2VzX2Zvcl9tb2R1bGUoJ2Jyb3dzZXIn KTsKLSAgICAgIHRoaXMuaGFuZGxlci5wcmVmZXJlbmNlcyA9IHRoaXMucHJlZmVyZW5jZXM7Ci0g ICAgICB0aGlzLmhhbmRsZXIuYnJvd3Nlcl9wcmVmZXJlbmNlcyA9IHRoaXMuYnJvd3Nlcl9wcmVm ZXJlbmNlczsKLSAgICAgIHRoaXMuY29ubkludGVydmFsSWQgPSBudWxsOwotICAgICAgdGhpcy5s YXlvdXQgPSBvcHRzLmxheW91dDsKLSAgICAgIHRoaXMuc2V0X3NlcnZlcl92ZXJzaW9uKG9wdHMu c2VydmVyX3Zlcik7Ci0gICAgICB0aGlzLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOnZpZXc6 aW5pdGlhbGlzZWQnKTsKLSAgICAgIHRoaXMuY29ubmVjdGlvbl9saXN0ID0gWwotICAgICAgICB7 J3NlcnZlcl9ncm91cCc6IG51bGwsJ3NlcnZlcic6IG51bGwsICdkYXRhYmFzZSc6IG51bGwsICd1 c2VyJzogbnVsbCwgJ3JvbGUnOiBudWxsLCAnY29ubl90aXRsZSc6ICc8JyArIGdldHRleHQoJ05l dyBDb25uZWN0aW9uJykgKyAnPid9LAotICAgICAgXTsKLSAgICB9LAotCi0gICAgLy8gQmluZCBh bGwgdGhlIGV2ZW50cwotICAgIGV2ZW50czogewotICAgICAgJ2NsaWNrICNidG4tc2hvdy1xdWVy eS10b29sJzogJ29uX3Nob3dfcXVlcnlfdG9vbCcsCi0gICAgICAnY2xpY2sgLmJ0bi1sb2FkLWZp bGUnOiAnb25fZmlsZV9sb2FkJywKLSAgICAgICdjbGljayAjYnRuLXNhdmUtZmlsZSc6ICdvbl9z YXZlX2ZpbGUnLAotICAgICAgJ2NsaWNrICNidG4tZmlsZS1tZW51LXNhdmUnOiAnb25fc2F2ZV9m aWxlJywKLSAgICAgICdjbGljayAjYnRuLWZpbGUtbWVudS1zYXZlLWFzJzogJ29uX3NhdmVfYXMn LAotICAgICAgJ2NsaWNrICNidG4tZmluZCc6ICdvbl9maW5kJywKLSAgICAgICdjbGljayAjYnRu LWZpbmQtbWVudS1maW5kJzogJ29uX2ZpbmQnLAotICAgICAgJ2NsaWNrICNidG4tZmluZC1tZW51 LWZpbmQtbmV4dCc6ICdvbl9maW5kX25leHQnLAotICAgICAgJ2NsaWNrICNidG4tZmluZC1tZW51 LWZpbmQtcHJldmlvdXMnOiAnb25fZmluZF9wcmV2aW91cycsCi0gICAgICAnY2xpY2sgI2J0bi1m aW5kLW1lbnUtcmVwbGFjZSc6ICdvbl9yZXBsYWNlJywKLSAgICAgICdjbGljayAjYnRuLWZpbmQt bWVudS1yZXBsYWNlLWFsbCc6ICdvbl9yZXBsYWNlX2FsbCcsCi0gICAgICAnY2xpY2sgI2J0bi1m aW5kLW1lbnUtZmluZC1wZXJzaXN0ZW50JzogJ29uX2ZpbmRfcGVyc2lzdGVudCcsCi0gICAgICAn Y2xpY2sgI2J0bi1maW5kLW1lbnUtanVtcCc6ICdvbl9qdW1wJywKLSAgICAgICdjbGljayAjYnRu LWRlbGV0ZS1yb3cnOiAnb25fZGVsZXRlJywKLSAgICAgICdjbGljayAjYnRuLXNhdmUtZGF0YSc6 ICdvbl9zYXZlX2RhdGEnLAotICAgICAgJ2NsaWNrICNidG4tZmlsdGVyJzogJ29uX3Nob3dfZmls dGVyJywKLSAgICAgICdjbGljayAjYnRuLWZpbHRlci1tZW51JzogJ29uX3Nob3dfZmlsdGVyJywK LSAgICAgICdjbGljayAjYnRuLWluY2x1ZGUtZmlsdGVyJzogJ29uX2luY2x1ZGVfZmlsdGVyJywK LSAgICAgICdjbGljayAjYnRuLWV4Y2x1ZGUtZmlsdGVyJzogJ29uX2V4Y2x1ZGVfZmlsdGVyJywK LSAgICAgICdjbGljayAjYnRuLXJlbW92ZS1maWx0ZXInOiAnb25fcmVtb3ZlX2ZpbHRlcicsCi0g ICAgICAnY2xpY2sgI2J0bi1jYW5jZWwnOiAnb25fY2FuY2VsJywKLSAgICAgICdjbGljayAjYnRu LWNvcHktcm93JzogJ29uX2NvcHlfcm93JywKLSAgICAgICdjbGljayAjYnRuLWNvcHktd2l0aC1o ZWFkZXInOiAnb25fY29weV9yb3dfd2l0aF9oZWFkZXInLAotICAgICAgJ2NsaWNrICNidG4tcGFz dGUtcm93JzogJ29uX3Bhc3RlX3JvdycsCi0gICAgICAnY2xpY2sgI2J0bi1mbGFzaCc6ICdvbl9m bGFzaCcsCi0gICAgICAnY2xpY2sgI2J0bi1mbGFzaC1tZW51JzogJ29uX2ZsYXNoJywKLSAgICAg ICdjbGljayAjYnRuLWNhbmNlbC1xdWVyeSc6ICdvbl9jYW5jZWxfcXVlcnknLAotICAgICAgJ2Ns aWNrICNidG4tc2F2ZS1yZXN1bHRzLXRvLWZpbGUnOiAnb25fZG93bmxvYWQnLAotICAgICAgJ2Ns aWNrICNidG4tY2xlYXInOiAnb25fY2xlYXInLAotICAgICAgJ2NsaWNrICNidG4tYXV0by1jb21t aXQnOiAnb25fYXV0b19jb21taXQnLAotICAgICAgJ2NsaWNrICNidG4tYXV0by1yb2xsYmFjayc6 ICdvbl9hdXRvX3JvbGxiYWNrJywKLSAgICAgICdjbGljayAjYnRuLWNsZWFyLWhpc3RvcnknOiAn b25fY2xlYXJfaGlzdG9yeScsCi0gICAgICAnY2xpY2sgLm5vY2xvc2UnOiAnZG9fbm90X2Nsb3Nl X21lbnUnLAotICAgICAgJ2NsaWNrICNidG4tZXhwbGFpbic6ICdvbl9leHBsYWluJywKLSAgICAg ICdjbGljayAjYnRuLWV4cGxhaW4tYW5hbHl6ZSc6ICdvbl9leHBsYWluX2FuYWx5emUnLAotICAg ICAgJ2NsaWNrICNidG4tZXhwbGFpbi12ZXJib3NlJzogJ29uX2V4cGxhaW5fdmVyYm9zZScsCi0g ICAgICAnY2xpY2sgI2J0bi1leHBsYWluLWNvc3RzJzogJ29uX2V4cGxhaW5fY29zdHMnLAotICAg ICAgJ2NsaWNrICNidG4tZXhwbGFpbi1idWZmZXJzJzogJ29uX2V4cGxhaW5fYnVmZmVycycsCi0g ICAgICAnY2xpY2sgI2J0bi1leHBsYWluLXRpbWluZyc6ICdvbl9leHBsYWluX3RpbWluZycsCi0g ICAgICAnY2xpY2sgI2J0bi1leHBsYWluLXN1bW1hcnknOiAnb25fZXhwbGFpbl9zdW1tYXJ5JywK LSAgICAgICdjbGljayAjYnRuLWV4cGxhaW4tc2V0dGluZ3MnOiAnb25fZXhwbGFpbl9zZXR0aW5n cycsCi0gICAgICAnY2hhbmdlIC5saW1pdCc6ICdvbl9saW1pdF9jaGFuZ2UnLAotICAgICAgJ2tl eWRvd24nOiAna2V5QWN0aW9uJywKLSAgICAgIC8vIENvbW1lbnQgb3B0aW9ucwotICAgICAgJ2Ns aWNrICNidG4tY29tbWVudC1jb2RlJzogJ29uX3RvZ2dsZV9jb21tZW50X2Jsb2NrX2NvZGUnLAot ICAgICAgJ2NsaWNrICNidG4tdG9nZ2xlLWNvbW1lbnQtYmxvY2snOiAnb25fdG9nZ2xlX2NvbW1l bnRfYmxvY2tfY29kZScsCi0gICAgICAnY2xpY2sgI2J0bi1jb21tZW50LWxpbmUnOiAnb25fY29t bWVudF9saW5lX2NvZGUnLAotICAgICAgJ2NsaWNrICNidG4tdW5jb21tZW50LWxpbmUnOiAnb25f dW5jb21tZW50X2xpbmVfY29kZScsCi0gICAgICAvLyBJbmRlbnRhdGlvbiBvcHRpb25zCi0gICAg ICAnY2xpY2sgI2J0bi1pbmRlbnQtY29kZSc6ICdvbl9pbmRlbnRfY29kZScsCi0gICAgICAnY2xp Y2sgI2J0bi11bmluZGVudC1jb2RlJzogJ29uX3VuaW5kZW50X2NvZGUnLAotICAgICAgLy8gRm9y bWF0Ci0gICAgICAnY2xpY2sgI2J0bi1mb3JtYXQtc3FsJzogJ29uX2Zvcm1hdF9zcWwnLAotICAg ICAgLy8gVHJhbnNhY3Rpb24gY29udHJvbAotICAgICAgJ2NsaWNrICNidG4tY29tbWl0JzogJ29u X2NvbW1pdF90cmFuc2FjdGlvbicsCi0gICAgICAnY2xpY2sgI2J0bi1yb2xsYmFjayc6ICdvbl9y b2xsYmFja190cmFuc2FjdGlvbicsCi0gICAgICAvLyBNYW5hZ2UgTWFjcm9zCi0gICAgICAnY2xp Y2sgI2J0bi1tYW5hZ2UtbWFjcm9zJzogJ29uX21hbmFnZV9tYWNyb3MnLAotICAgICAgJ2NsaWNr IC5idG4tbWFjcm8nOiAnb25fZXhlY3V0ZV9tYWNybycsCi0gICAgfSwKLQotICAgIHJlbmRlcl9j b25uZWN0aW9uOiBmdW5jdGlvbihkYXRhX2xpc3QpIHsKLSAgICAgIGlmKHRoaXMuaGFuZGxlci5p c19xdWVyeV90b29sKSB7Ci0gICAgICAgIHZhciBkcm9wZG93bkVsZW1lbnQgPSBkb2N1bWVudC5n ZXRFbGVtZW50QnlJZCgnY29ubmVjdGlvbnMtbGlzdCcpOwotICAgICAgICBkcm9wZG93bkVsZW1l bnQuaW5uZXJIVE1MID0gJyc7Ci0gICAgICAgIGRhdGFfbGlzdC5mb3JFYWNoKChvcHRpb24sIGlu ZGV4KSA9PiB7Ci0gICAgICAgICAgdmFyIG9wdCA9ICcnOwotICAgICAgICAgIGlmICgnaXNfc2Vs ZWN0ZWQnIGluIG9wdGlvbiAmJiBvcHRpb25bJ2lzX3NlbGVjdGVkJ10pIHsKLSAgICAgICAgICAg IG9wdCA9ICc8bGkgY2xhc3M9ImNvbm5lY3Rpb24tbGlzdC1pdGVtIHNlbGVjdGVkLWNvbm5lY3Rp b24iIGRhdGEtaW5kZXg9JysgaW5kZXggKyc+PGEgY2xhc3M9ImRyb3Bkb3duLWl0ZW0iIGhyZWY9 IiMiIHRhYmluZGV4PSIwIj4nKyBfLmVzY2FwZShvcHRpb24uY29ubl90aXRsZSkgKyc8L2E+PC9s aT4nOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBvcHQgPSAnPGxpIGNsYXNzPSJj b25uZWN0aW9uLWxpc3QtaXRlbSIgZGF0YS1pbmRleD0nKyBpbmRleCArJz48YSBjbGFzcz0iZHJv cGRvd24taXRlbSIgaHJlZj0iIyIgdGFiaW5kZXg9IjAiPicrIF8uZXNjYXBlKG9wdGlvbi5jb25u X3RpdGxlKSArJzwvYT48L2xpPic7Ci0gICAgICAgICAgfQotICAgICAgICAgICQoJyNjb25uZWN0 aW9ucy1saXN0JykuYXBwZW5kKG9wdCk7Ci0gICAgICAgIH0pOwotICAgICAgICB2YXIgc2VsZiA9 IHRoaXM7Ci0gICAgICAgICQoJy5jb25uZWN0aW9uLWxpc3QtaXRlbScpLmNsaWNrKGZ1bmN0aW9u KCkgewotICAgICAgICAgIHNlbGYuZ2V0X2Nvbm5lY3Rpb25fZGF0YSh0aGlzKTsKLSAgICAgICAg fSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICAkKCcuY29ubi1pbmZvLWRkJykuaGlkZSgpOwot ICAgICAgICAkKCcuY29ubmVjdGlvbi1kYXRhJykuY3NzKHtwb2ludGVyRXZlbnRzOiAnbm9uZScs IGN1cnNvcjogJ2Fycm93J30pOwotICAgICAgfQotICAgIH0sCi0KLSAgICBnZXRfY29ubmVjdGlv bl9kYXRhOiBmdW5jdGlvbihldmVudCl7Ci0gICAgICB2YXIgaW5kZXggPSAkKGV2ZW50KS5hdHRy KCdkYXRhLWluZGV4Jyk7Ci0gICAgICB2YXIgY29ubmVjdGlvbl9kZXRhaWxzID0gdGhpcy5jb25u ZWN0aW9uX2xpc3RbaW5kZXhdOwotICAgICAgaWYoY29ubmVjdGlvbl9kZXRhaWxzLnNlcnZlcl9n cm91cCkgewotICAgICAgICB0aGlzLm9uX2NoYW5nZV9jb25uZWN0aW9uKGNvbm5lY3Rpb25fZGV0 YWlscyk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0aGlzLm9uX25ld19jb25uZWN0aW9uKCk7 Ci0gICAgICB9Ci0KLSAgICB9LAotCi0gICAgcmVmbGVjdFByZWZlcmVuY2VzOiBmdW5jdGlvbigp IHsKLSAgICAgIGxldCBzZWxmID0gdGhpcywKLSAgICAgICAgYnJvd3NlciA9IHBnV2luZG93LmRl ZmF1bHQucGdBZG1pbi5Ccm93c2VyLAotICAgICAgICBicm93c2VyX3ByZWZlcmVuY2VzID0gYnJv d3Nlci5nZXRfcHJlZmVyZW5jZXNfZm9yX21vZHVsZSgnYnJvd3NlcicpOwotCi0gICAgICAvKiBw Z0Jyb3dzZXIgaXMgZGlmZmVyZW50IG9iaiBmcm9tIHBnV2luZG93LmRlZmF1bHQucGdBZG1pbi5C cm93c2VyCi0gICAgICAgKiBNYWtlIHN1cmUgdG8gZ2V0IG9ubHkgdGhlIGxhdGVzdCB1cGRhdGUu IE9sZGVyIHZlcnNpb25zIHdpbGwgYmUgZGlzY2FyZGVkCi0gICAgICAgKiBpZiBmdW5jdGlvbiBp cyBjYWxsZWQgYnkgb2xkZXIgZXZlbnRzLgotICAgICAgICogVGhpcyB3b3JrcyBmb3IgbmV3IHRh YiBzcWwgZWRpdG9yIGFsc28gYXMgaXQgcG9sbHMgaWYgbGF0ZXN0IHZlcnNpb24gYXZhaWxhYmxl Ci0gICAgICAgKiBUaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2Ugc3FsIGVkaXRvciBjYW4gdXBkYXRl IHByZWZlcmVuY2VzIGRpcmVjdGx5Ci0gICAgICAgKi8KLSAgICAgIGlmKHBnQnJvd3Nlci5wcmVm ZXJlbmNlX3ZlcnNpb24oKSA8IGJyb3dzZXIucHJlZmVyZW5jZV92ZXJzaW9uKCkpewotICAgICAg ICBwZ0Jyb3dzZXIucHJlZmVyZW5jZV92ZXJzaW9uKGJyb3dzZXIucHJlZmVyZW5jZV92ZXJzaW9u KCkpOwotICAgICAgICBzZWxmLnByZWZlcmVuY2VzID0gYnJvd3Nlci5nZXRfcHJlZmVyZW5jZXNf Zm9yX21vZHVsZSgnc3FsZWRpdG9yJyk7Ci0gICAgICAgIHNlbGYucHJlZmVyZW5jZXMuc2hvd19x dWVyeV90b29sID0gYnJvd3Nlcl9wcmVmZXJlbmNlcy5zdWJfbWVudV9xdWVyeV90b29sOwotICAg ICAgICBzZWxmLmhhbmRsZXIucHJlZmVyZW5jZXMgPSBzZWxmLnByZWZlcmVuY2VzOwotICAgICAg ICBxdWVyeVRvb2xQcmVmLnVwZGF0ZVVJUHJlZmVyZW5jZXMoc2VsZik7Ci0gICAgICB9Ci0gICAg fSwKLQotICAgIGJ1aWxkRGVmYXVsdExheW91dDogZnVuY3Rpb24oZG9ja2VyKSB7Ci0gICAgICBs ZXQgc3FsX3BhbmVsX29iaiA9IGRvY2tlci5hZGRQYW5lbCgnc3FsX3BhbmVsJywgd2NEb2NrZXIu RE9DSy5UT1ApOwotCi0gICAgICBkb2NrZXIuYWRkUGFuZWwoJ3NjcmF0Y2gnLCB3Y0RvY2tlci5E T0NLLlJJR0hULCBzcWxfcGFuZWxfb2JqKTsKLSAgICAgIGRvY2tlci5hZGRQYW5lbCgnaGlzdG9y eScsIHdjRG9ja2VyLkRPQ0suU1RBQ0tFRCwgc3FsX3BhbmVsX29iaik7Ci0KLSAgICAgIGxldCBk YXRhX291dHB1dF9wYW5lbCA9IGRvY2tlci5hZGRQYW5lbCgnZGF0YV9vdXRwdXQnLCB3Y0RvY2tl ci5ET0NLLkJPVFRPTSk7Ci0gICAgICBkb2NrZXIuYWRkUGFuZWwoJ2V4cGxhaW4nLCB3Y0RvY2tl ci5ET0NLLlNUQUNLRUQsIGRhdGFfb3V0cHV0X3BhbmVsKTsKLSAgICAgIGRvY2tlci5hZGRQYW5l bCgnbWVzc2FnZXMnLCB3Y0RvY2tlci5ET0NLLlNUQUNLRUQsIGRhdGFfb3V0cHV0X3BhbmVsKTsK LSAgICAgIGRvY2tlci5hZGRQYW5lbCgnbm90aWZpY2F0aW9ucycsIHdjRG9ja2VyLkRPQ0suU1RB Q0tFRCwgZGF0YV9vdXRwdXRfcGFuZWwpOwotICAgIH0sCi0KLSAgICBzZXRfc2VydmVyX3ZlcnNp b246IGZ1bmN0aW9uKHNlcnZlcl92ZXIpIHsKLSAgICAgIGxldCBzZWxmID0gdGhpczsKLSAgICAg IHNlbGYuc2VydmVyX3ZlciA9IHNlcnZlcl92ZXI7Ci0KLSAgICAgIHRoaXMuJGVsLmZpbmQoJypb ZGF0YS1taW4tdmVyXScpLm1hcChmdW5jdGlvbigpIHsKLSAgICAgICAgbGV0IG1pblZlciA9IDAs Ci0gICAgICAgICAgZWxlID0gJCh0aGlzKTsKLSAgICAgICAgbWluVmVyID0gcGFyc2VJbnQoZWxl LmF0dHIoJ2RhdGEtbWluLXZlcicpKTsKLSAgICAgICAgaWYobWluVmVyID4gc2VsZi5zZXJ2ZXJf dmVyKSB7Ci0gICAgICAgICAgZWxlLmFkZENsYXNzKCdkLW5vbmUnKTsKLSAgICAgICAgfSBlbHNl IHsKLSAgICAgICAgICBlbGUucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpOwotICAgICAgICB9Ci0gICAg ICB9KTsKLSAgICB9LAotCi0gICAgc2V0X2VkaXRvcl90aXRsZTogZnVuY3Rpb24odGl0bGUpIHsK LSAgICAgIHRoaXMuJGVsLmZpbmQoJy5lZGl0b3ItdGl0bGUnKS50ZXh0KF8udW5lc2NhcGUodGl0 bGUpKTsKLSAgICAgIHRoaXMucmVuZGVyX2Nvbm5lY3Rpb24odGhpcy5jb25uZWN0aW9uX2xpc3Qp OwotICAgIH0sCi0KLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gcmVuZGVyIHRoZSB0 ZW1wbGF0ZS4KLSAgICByZW5kZXI6IGZ1bmN0aW9uKCkgewotICAgICAgdmFyIHNlbGYgPSB0aGlz OwotCi0gICAgICAvLyBVcGRhdGVzIGNvbm5lY3Rpb24gc3RhdHVzIGZsYWcKLSAgICAgIHNlbGYu Z2Fpbl9mb2N1cyA9IGZ1bmN0aW9uKCkgewotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkg ewotICAgICAgICAgIFNxbEVkaXRvclV0aWxzLnVwZGF0ZUNvbm5lY3Rpb25TdGF0dXNGbGFnKCd2 aXNpYmxlJyk7Ci0gICAgICAgIH0sIDEwMCk7Ci0gICAgICB9OwotICAgICAgLy8gVXBkYXRlcyBj b25uZWN0aW9uIHN0YXR1cyBmbGFnCi0gICAgICBzZWxmLmxvc3RfZm9jdXMgPSBmdW5jdGlvbigp IHsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICBTcWxFZGl0b3JV dGlscy51cGRhdGVDb25uZWN0aW9uU3RhdHVzRmxhZygnaGlkZGVuJyk7Ci0gICAgICAgIH0sIDEw MCk7Ci0gICAgICB9OwotCi0gICAgICAvLyBDcmVhdGUgbWFpbiB3Y0RvY2tlciBpbnN0YW5jZQot ICAgICAgc2VsZi5kb2NrZXIgPSBuZXcgd2NEb2NrZXIoCi0gICAgICAgICcjZWRpdG9yLXBhbmVs JywgewotICAgICAgICAgIGFsbG93Q29udGV4dE1lbnU6IHRydWUsCi0gICAgICAgICAgYWxsb3dD b2xsYXBzZTogZmFsc2UsCi0gICAgICAgICAgbG9hZGluZ0NsYXNzOiAncGctc3AtaWNvbicsCi0g ICAgICAgICAgdGhlbWVQYXRoOiB1cmxfZm9yKCdzdGF0aWMnLCB7Ci0gICAgICAgICAgICAnZmls ZW5hbWUnOiAnY3NzJywKLSAgICAgICAgICB9KSwKLSAgICAgICAgICB0aGVtZTogJ3dlYmNhYmlu Lm92ZXJyaWRlcy5jc3MnLAotICAgICAgICB9Ci0gICAgICApOwotCi0gICAgICAvLyBDcmVhdGUg dGhlIHBhbmVscwotICAgICAgdmFyIHNxbF9wYW5lbCA9IG5ldyBwZ0FkbWluLkJyb3dzZXIuUGFu ZWwoewotICAgICAgICBuYW1lOiAnc3FsX3BhbmVsJywKLSAgICAgICAgdGl0bGU6IGdldHRleHQo J1F1ZXJ5IEVkaXRvcicpLAotICAgICAgICB3aWR0aDogJzc1JScsCi0gICAgICAgIGhlaWdodDog JzMzJScsCi0gICAgICAgIGlzQ2xvc2VhYmxlOiBmYWxzZSwKLSAgICAgICAgaXNQcml2YXRlOiB0 cnVlLAotICAgICAgfSk7Ci0KLSAgICAgIHZhciBkYXRhX291dHB1dCA9IG5ldyBwZ0FkbWluLkJy b3dzZXIuUGFuZWwoewotICAgICAgICBuYW1lOiAnZGF0YV9vdXRwdXQnLAotICAgICAgICB0aXRs ZTogZ2V0dGV4dCgnRGF0YSBPdXRwdXQnKSwKLSAgICAgICAgd2lkdGg6ICcxMDAlJywKLSAgICAg ICAgaGVpZ2h0OiAnMTAwJScsCi0gICAgICAgIGlzQ2xvc2VhYmxlOiBmYWxzZSwKLSAgICAgICAg aXNQcml2YXRlOiB0cnVlLAotICAgICAgICBleHRyYUNsYXNzZXM6ICdoaWRlLXZlcnRpY2FsLXNj cm9sbGJhcicsCi0gICAgICAgIGNvbnRlbnQ6IGA8ZGl2IGNsYXNzPSJkYXRhLW91dHB1dC1jb250 YWluZXIiPgotICAgICAgICAgIDxkaXYgaWQ9ImZldGNoaW5nX2RhdGEiIGNsYXNzPSJwZy1zcC1j b250YWluZXIgc3FsLWVkaXRvci1idXN5LWZldGNoaW5nIj4KLSAgICAgICAgICAgICAgPGRpdiBj bGFzcz0icGctc3AtY29udGVudCI+Ci0gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJyb3ci PgotICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImNvbC0xMiBwZy1zcC1pY29uIHNx bC1lZGl0b3ItYnVzeS1pY29uIj48L2Rpdj4KLSAgICAgICAgICAgICAgICAgIDwvZGl2PgotICAg ICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0icm93Ij48ZGl2IGNsYXNzPSJjb2wtMTIgcGctc3At dGV4dCBzcWwtZWRpdG9yLWJ1c3ktdGV4dCI+JHtnZXR0ZXh0KCdMb2FkaW5nLi4uJyl9PC9kaXY+ PC9kaXY+Ci0gICAgICAgICAgICAgIDwvZGl2PgotICAgICAgICAgIDwvZGl2PgotICAgICAgICAg IDxkaXYgaWQgPSJkYXRhZ3JpZCIgY2xhc3M9InNxbC1lZGl0b3ItZ3JpZC1jb250YWluZXIgdGV4 dC0xMiIgdGFiaW5kZXg9IjAiPiR7RU1QVFlfREFUQV9PVVRQVVRfQ09OVEVOVH08L2Rpdj4KLSAg ICAgICAgPC9kaXY+YCwKLSAgICAgIH0pOwotCi0gICAgICB2YXIgZXhwbGFpbiA9IG5ldyBwZ0Fk bWluLkJyb3dzZXIuUGFuZWwoewotICAgICAgICBuYW1lOiAnZXhwbGFpbicsCi0gICAgICAgIHRp dGxlOiBnZXR0ZXh0KCdFeHBsYWluJyksCi0gICAgICAgIHdpZHRoOiAnMTAwJScsCi0gICAgICAg IGhlaWdodDogJzEwMCUnLAotICAgICAgICBpc0Nsb3NlYWJsZTogZmFsc2UsCi0gICAgICAgIGlz UHJpdmF0ZTogdHJ1ZSwKLSAgICAgICAgY29udGVudDogYDxkaXYgY2xhc3M9InNxbC1lZGl0b3It ZXhwbGFpbiBwZy1lbC1jb250YWluZXIiIHRhYmluZGV4PSIwIj4ke0VNUFRZX0VYUExBSU5fQ09O VEVOVH08L2Rpdj5gLAotICAgICAgfSk7Ci0KLSAgICAgIHZhciBtZXNzYWdlcyA9IG5ldyBwZ0Fk bWluLkJyb3dzZXIuUGFuZWwoewotICAgICAgICBuYW1lOiAnbWVzc2FnZXMnLAotICAgICAgICB0 aXRsZTogZ2V0dGV4dCgnTWVzc2FnZXMnKSwKLSAgICAgICAgd2lkdGg6ICcxMDAlJywKLSAgICAg ICAgaGVpZ2h0OiAnMTAwJScsCi0gICAgICAgIGlzQ2xvc2VhYmxlOiBmYWxzZSwKLSAgICAgICAg aXNQcml2YXRlOiB0cnVlLAotICAgICAgICBjb250ZW50OiAnPGRpdiByb2xlPSJzdGF0dXMiIGNs YXNzPSJzcWwtZWRpdG9yLW1lc3NhZ2UiIHRhYmluZGV4PSIwIj48L2Rpdj4nLAotICAgICAgfSk7 Ci0KLSAgICAgIHZhciBoaXN0b3J5ID0gbmV3IHBnQWRtaW4uQnJvd3Nlci5QYW5lbCh7Ci0gICAg ICAgIG5hbWU6ICdoaXN0b3J5JywKLSAgICAgICAgdGl0bGU6IGdldHRleHQoJ1F1ZXJ5IEhpc3Rv cnknKSwKLSAgICAgICAgd2lkdGg6ICcxMDAlJywKLSAgICAgICAgaGVpZ2h0OiAnMzMlJywKLSAg ICAgICAgaXNDbG9zZWFibGU6IGZhbHNlLAotICAgICAgICBpc1ByaXZhdGU6IHRydWUsCi0gICAg ICAgIGNvbnRlbnQ6ICc8ZGl2IGlkID0iaGlzdG9yeV9ncmlkIiBjbGFzcz0ic3FsLWVkaXRvci1o aXN0b3J5LWNvbnRhaW5lciIgdGFiaW5kZXg9IjAiPjwvZGl2PicsCi0gICAgICB9KTsKLQotICAg ICAgdmFyIHNjcmF0Y2ggPSBuZXcgcGdBZG1pbi5Ccm93c2VyLlBhbmVsKHsKLSAgICAgICAgbmFt ZTogJ3NjcmF0Y2gnLAotICAgICAgICB0aXRsZTogZ2V0dGV4dCgnU2NyYXRjaCBQYWQnKSwKLSAg ICAgICAgd2lkdGg6ICcyNSUnLAotICAgICAgICBoZWlnaHQ6ICczMyUnLAotICAgICAgICBpc0Ns b3NlYWJsZTogdHJ1ZSwKLSAgICAgICAgaXNQcml2YXRlOiBmYWxzZSwKLSAgICAgICAgY29udGVu dDogJzxkaXYgY2xhc3M9InNxbC1zY3JhdGNoIj48dGV4dGFyZWEgd3JhcD0ib2ZmIiB0YWJpbmRl eD0iMCI+PC90ZXh0YXJlYT48L2Rpdj4nLAotICAgICAgfSk7Ci0KLSAgICAgIHZhciBub3RpZmlj YXRpb25zID0gbmV3IHBnQWRtaW4uQnJvd3Nlci5QYW5lbCh7Ci0gICAgICAgIG5hbWU6ICdub3Rp ZmljYXRpb25zJywKLSAgICAgICAgdGl0bGU6IGdldHRleHQoJ05vdGlmaWNhdGlvbnMnKSwKLSAg ICAgICAgd2lkdGg6ICcxMDAlJywKLSAgICAgICAgaGVpZ2h0OiAnMTAwJScsCi0gICAgICAgIGlz Q2xvc2VhYmxlOiBmYWxzZSwKLSAgICAgICAgaXNQcml2YXRlOiB0cnVlLAotICAgICAgICBjb250 ZW50OiAnPGRpdiBpZCA9Im5vdGlmaWNhdGlvbl9ncmlkIiBjbGFzcz0ic3FsLWVkaXRvci1ub3Rp ZmljYXRpb25zIiB0YWJpbmRleD0iMCI+PC9kaXY+JywKLSAgICAgIH0pOwotCi0gICAgICB2YXIg Z2VvbWV0cnlfdmlld2VyID0gbmV3IHBnQWRtaW4uQnJvd3Nlci5QYW5lbCh7Ci0gICAgICAgIG5h bWU6ICdnZW9tZXRyeV92aWV3ZXInLAotICAgICAgICB0aXRsZTogZ2V0dGV4dCgnR2VvbWV0cnkg Vmlld2VyJyksCi0gICAgICAgIHdpZHRoOiAnMTAwJScsCi0gICAgICAgIGhlaWdodDogJzEwMCUn LAotICAgICAgICBpc0Nsb3NlYWJsZTogdHJ1ZSwKLSAgICAgICAgaXNQcml2YXRlOiB0cnVlLAot ICAgICAgICBpc0xheW91dE1lbWJlcjogZmFsc2UsCi0gICAgICAgIGNvbnRlbnQ6ICc8ZGl2IGlk ID0iZ2VvbWV0cnlfdmlld2VyX3BhbmVsIiBjbGFzcz0ic3FsLWVkaXRvci1nZW9tZXRyeS12aWV3 ZXIiIHRhYmluZGV4PSIwIj48L2Rpdj4nLAotICAgICAgfSk7Ci0KLSAgICAgIC8vIExvYWQgYWxs IHRoZSBjcmVhdGVkIHBhbmVscwotICAgICAgc3FsX3BhbmVsLmxvYWQoc2VsZi5kb2NrZXIpOwot ICAgICAgZGF0YV9vdXRwdXQubG9hZChzZWxmLmRvY2tlcik7Ci0gICAgICBleHBsYWluLmxvYWQo c2VsZi5kb2NrZXIpOwotICAgICAgbWVzc2FnZXMubG9hZChzZWxmLmRvY2tlcik7Ci0gICAgICBo aXN0b3J5LmxvYWQoc2VsZi5kb2NrZXIpOwotICAgICAgc2NyYXRjaC5sb2FkKHNlbGYuZG9ja2Vy KTsKLSAgICAgIG5vdGlmaWNhdGlvbnMubG9hZChzZWxmLmRvY2tlcik7Ci0gICAgICBnZW9tZXRy eV92aWV3ZXIubG9hZChzZWxmLmRvY2tlcik7Ci0KLSAgICAgIC8vIHJlc3RvcmUgdGhlIGxheW91 dCBpZiBwcmVzZW50IGVsc2UgZmFsbGJhY2sgdG8gYnVpbGREZWZhdWx0TGF5b3V0Ci0gICAgICBw Z0Jyb3dzZXIucmVzdG9yZV9sYXlvdXQoc2VsZi5kb2NrZXIsIHRoaXMubGF5b3V0LCB0aGlzLmJ1 aWxkRGVmYXVsdExheW91dC5iaW5kKHRoaXMpKTsKLQotICAgICAgc2VsZi5kb2NrZXIub24od2NE b2NrZXIuRVZFTlQuTEFZT1VUX0NIQU5HRUQsIGZ1bmN0aW9uKCkgewotICAgICAgICBwZ0Jyb3dz ZXIuc2F2ZV9jdXJyZW50X2xheW91dCgnU1FMRWRpdG9yL0xheW91dCcsIHNlbGYuZG9ja2VyKTsK LSAgICAgIH0pOwotCi0gICAgICBzZWxmLnNxbF9wYW5lbF9vYmogPSBzZWxmLmRvY2tlci5maW5k UGFuZWxzKCdzcWxfcGFuZWwnKVswXTsKLSAgICAgIHNlbGYuaGlzdG9yeV9wYW5lbCA9IHNlbGYu ZG9ja2VyLmZpbmRQYW5lbHMoJ2hpc3RvcnknKVswXTsKLSAgICAgIHNlbGYuZGF0YV9vdXRwdXRf cGFuZWwgPSBzZWxmLmRvY2tlci5maW5kUGFuZWxzKCdkYXRhX291dHB1dCcpWzBdOwotICAgICAg c2VsZi5leHBsYWluX3BhbmVsID0gc2VsZi5kb2NrZXIuZmluZFBhbmVscygnZXhwbGFpbicpWzBd OwotICAgICAgc2VsZi5tZXNzYWdlc19wYW5lbCA9IHNlbGYuZG9ja2VyLmZpbmRQYW5lbHMoJ21l c3NhZ2VzJylbMF07Ci0gICAgICBzZWxmLm5vdGlmaWNhdGlvbnNfcGFuZWwgPSBzZWxmLmRvY2tl ci5maW5kUGFuZWxzKCdub3RpZmljYXRpb25zJylbMF07Ci0KLSAgICAgIGlmIChfLmlzVW5kZWZp bmVkKHNlbGYuc3FsX3BhbmVsX29iaikgfHwgXy5pc1VuZGVmaW5lZChzZWxmLmhpc3RvcnlfcGFu ZWwpIHx8Ci0gICAgICAgXy5pc1VuZGVmaW5lZChzZWxmLmRhdGFfb3V0cHV0X3BhbmVsKSB8fCBf LmlzVW5kZWZpbmVkKHNlbGYuZXhwbGFpbl9wYW5lbCkgfHwKLSAgICAgICBfLmlzVW5kZWZpbmVk KHNlbGYubWVzc2FnZXNfcGFuZWwpIHx8IF8uaXNVbmRlZmluZWQoc2VsZi5ub3RpZmljYXRpb25z X3BhbmVsKSkgewotICAgICAgICBOb3RpZnkuYWxlcnQoCi0gICAgICAgICAgZ2V0dGV4dCgnUGFu ZWwgTG9hZGluZyBFcnJvcicpLAotICAgICAgICAgIGdldHRleHQoJ1NvbWV0aGluZyB3ZW50IHdy b25nIHdoaWxlIGxvYWRpbmcgdGhlIHBhbmVscy4nCi0gICAgICAgICAgKyAnIFBsZWFzZSBtYWtl IHN1cmUgdG8gcmVzZXQgdGhlIGxheW91dCAoRmlsZSA+IFJlc2V0IExheW91dCkgZm9yIHRoZSBi ZXR0ZXIgdXNlciBleHBlcmllbmNlLicpCi0gICAgICAgICk7Ci0gICAgICB9Ci0KLSAgICAgIC8v IFJlZnJlc2ggQ29kZSBtaXJyb3Igb24gU1FMIHBhbmVsIHJlc2l6ZSB0bwotICAgICAgLy8gZGlz cGxheSBpdHMgdmFsdWUgcHJvcGVybHkKLSAgICAgIHNlbGYuc3FsX3BhbmVsX29iai5vbih3Y0Rv Y2tlci5FVkVOVC5SRVNJWkVfRU5ERUQsIGZ1bmN0aW9uKCkgewotICAgICAgICBzZXRUaW1lb3V0 KGZ1bmN0aW9uKCkgewotICAgICAgICAgIGlmIChzZWxmICYmIHNlbGYucXVlcnlfdG9vbF9vYmop IHsKLSAgICAgICAgICAgIHNlbGYucXVlcnlfdG9vbF9vYmoucmVmcmVzaCgpOwotICAgICAgICAg IH0KLSAgICAgICAgfSwgMjAwKTsKLSAgICAgIH0pOwotCi0gICAgICBzZWxmLnJlbmRlcl9oaXN0 b3J5X2dyaWQoKTsKLSAgICAgIHBnQnJvd3Nlci5FdmVudHMub24oJ3BnYWRtaW46cXVlcnlfdG9v bDpjb25uZWN0ZWQ6JytzZWxmLmhhbmRsZXIudHJhbnNJZCwgKCk9PnsKLSAgICAgICAgc2VsZi5m ZXRjaF9xdWVyeV9oaXN0b3J5KCk7Ci0gICAgICB9KTsKLQotICAgICAgc2VsZi5oYW5kbGVyLm9u KCdwZ2FkbWluLXNxbGVkaXRvcjpjaGVja19zeW5jaHJvbm91c19kYl9uYW1lX2NoYW5nZScsIChy ZXN1bHQpPT57Ci0gICAgICAgIHNlbGYuaGFuZGxlci5jaGVja19kYl9uYW1lX2NoYW5nZShyZXN1 bHQpOwotICAgICAgfSk7Ci0KLSAgICAgIHF1ZXJ5VG9vbE5vdGlmaWNhdGlvbnMucmVuZGVyTm90 aWZpY2F0aW9uc0dyaWQoc2VsZi5ub3RpZmljYXRpb25zX3BhbmVsKTsKLQotICAgICAgdmFyIHRl eHRfY29udGFpbmVyID0gJCgnPHRleHRhcmVhIGlkPSJzcWxfcXVlcnlfdG9vbCIgdGFiaW5kZXg9 Ii0xIj48L3RleHRhcmVhPicpOwotICAgICAgdmFyIG91dHB1dF9jb250YWluZXIgPSAkKCc8bGFi ZWwgZm9yPSJzcWxfcXVlcnlfdG9vbCIgY2xhc3M9InNyLW9ubHkiPlNRTCBFZGl0b3I8L2xhYmVs PjxkaXYgaWQ9Im91dHB1dC1wYW5lbCIgdGFiaW5kZXg9IjAiPjwvZGl2PicpLmFwcGVuZCh0ZXh0 X2NvbnRhaW5lcik7Ci0gICAgICBzZWxmLnNxbF9wYW5lbF9vYmouJGNvbnRhaW5lci5maW5kKCcu cGctcGFuZWwtY29udGVudCcpLmFwcGVuZChvdXRwdXRfY29udGFpbmVyKTsKLQotICAgICAgc2Vs Zi5xdWVyeV90b29sX29iaiA9IENvZGVNaXJyb3IuZnJvbVRleHRBcmVhKHRleHRfY29udGFpbmVy LmdldCgwKSwgewotICAgICAgICB0YWJpbmRleDogJzAnLAotICAgICAgICBsaW5lTnVtYmVyczog dHJ1ZSwKLSAgICAgICAgc3R5bGVTZWxlY3RlZFRleHQ6IHRydWUsCi0gICAgICAgIG1vZGU6ICd0 ZXh0L3gtcGdzcWwnLAotICAgICAgICBmb2xkT3B0aW9uczogewotICAgICAgICAgIHdpZGdldDog J1x1MjAyNicsCi0gICAgICAgIH0sCi0gICAgICAgIGZvbGRHdXR0ZXI6IHRydWUsCi0gICAgICAg IGd1dHRlcnM6IFsnQ29kZU1pcnJvci1saW5lbnVtYmVycycsICdDb2RlTWlycm9yLWZvbGRndXR0 ZXInXSwKLSAgICAgICAgZXh0cmFLZXlzOiBwZ0Jyb3dzZXIuZWRpdG9yX3Nob3J0Y3V0X2tleXMs Ci0gICAgICAgIHNjcm9sbGJhclN0eWxlOiAnc2ltcGxlJywKLSAgICAgICAgZHJhZ0Ryb3A6IGZh bHNlLAotICAgICAgICBzY3JlZW5SZWFkZXJMYWJlbDogZ2V0dGV4dCgnU1FMIGVkaXRvcicpLAot ICAgICAgfSk7Ci0KLSAgICAgIGlmKHNlbGYuaGFuZGxlci5pc19xdWVyeV90b29sKSB7Ci0gICAg ICAgIHNlbGYucXVlcnlfdG9vbF9vYmouc2V0T3B0aW9uKCdkcmFnRHJvcCcsIHRydWUpOwotICAg ICAgICBzZWxmLnF1ZXJ5X3Rvb2xfb2JqLm9uKCdkcm9wJywgKGVkaXRvciwgZSkgPT4gewotICAg ICAgICAgIHZhciBkcm9wRGV0YWlscyA9IG51bGw7Ci0gICAgICAgICAgdHJ5IHsKLSAgICAgICAg ICAgIGRyb3BEZXRhaWxzID0gSlNPTi5wYXJzZShlLmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0 JykpOwotCi0gICAgICAgICAgICAvKiBTdG9wIGZpcmVmb3ggZnJvbSByZWRpcmVjdGluZyAqLwot Ci0gICAgICAgICAgICBpZihlLnByZXZlbnREZWZhdWx0KSB7Ci0gICAgICAgICAgICAgIGUucHJl dmVudERlZmF1bHQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlLnN0b3BQcm9w YWdhdGlvbikgewotICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOwotICAgICAgICAg ICAgfQotICAgICAgICAgIH0gY2F0Y2goZXJyb3IpIHsKLSAgICAgICAgICAgIC8qIGlmIHBhcnNp bmcgZmFpbHMsIGl0IG11c3QgYmUgdGhlIGRyYWcgaW50ZXJuYWwgb2YgY29kZW1pcnJvciB0ZXh0 ICovCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgdmFyIGN1 cnNvciA9IGVkaXRvci5jb29yZHNDaGFyKHsKLSAgICAgICAgICAgIGxlZnQ6IGUueCwKLSAgICAg ICAgICAgIHRvcDogZS55LAotICAgICAgICAgIH0pOwotICAgICAgICAgIGVkaXRvci5yZXBsYWNl UmFuZ2UoZHJvcERldGFpbHMudGV4dCwgY3Vyc29yKTsKLSAgICAgICAgICBlZGl0b3IuZm9jdXMo KTsKLSAgICAgICAgICBlZGl0b3Iuc2V0U2VsZWN0aW9uKHsKLSAgICAgICAgICAgIC4uLmN1cnNv ciwKLSAgICAgICAgICAgIGNoOiBjdXJzb3IuY2ggKyBkcm9wRGV0YWlscy5jdXIuZnJvbSwKLSAg ICAgICAgICB9LHsKLSAgICAgICAgICAgIC4uLmN1cnNvciwKLSAgICAgICAgICAgIGNoOiBjdXJz b3IuY2ggK2Ryb3BEZXRhaWxzLmN1ci50bywKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0g ICAgICB9Ci0KLSAgICAgIHBnQnJvd3Nlci5FdmVudHMub24oJ3BnYWRtaW46cXVlcnlfdG9vbDpz cWxfcGFuZWw6Zm9jdXMnLCAoKT0+ewotICAgICAgICBzZWxmLnF1ZXJ5X3Rvb2xfb2JqLmZvY3Vz KCk7Ci0gICAgICB9KTsKLQotICAgICAgcGdCcm93c2VyLkV2ZW50cy5vbigncGdhZG1pbjpxdWVy eV90b29sOmV4cGxhaW46Zm9jdXMnLCAoKT0+ewotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9u ICgpIHsKLSAgICAgICAgICAkKCcuc3FsLWVkaXRvci1leHBsYWluIC5iYWNrZm9ybS10YWIgLm5h di1saW5rLmFjdGl2ZScpLmZvY3VzKCk7Ci0gICAgICAgIH0sIDIwMCk7Ci0gICAgICB9KTsKLQot ICAgICAgLy8gUHJldmVudCBicm93c2VyIGZyb20gb3BlbmluZyB0aGUgZHJhZyBmaWxlLgotICAg ICAgJCgnI2RhdGFncmlkJykuYmluZCgnZHJhZ292ZXIgZHJvcCcsIGZ1bmN0aW9uIChldmVudCkg ewotICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICAgICAgZXZlbnQucHJldmVu dERlZmF1bHQoKTsKLSAgICAgIH0pOwotCi0gICAgICB2YXIgb3Blbl9uZXdfdGFiID0gc2VsZi5i cm93c2VyX3ByZWZlcmVuY2VzLm5ld19icm93c2VyX3RhYl9vcGVuOwotICAgICAgaWYgKF8uaXNO dWxsKG9wZW5fbmV3X3RhYikgfHwgXy5pc1VuZGVmaW5lZChvcGVuX25ld190YWIpIHx8ICFvcGVu X25ld190YWIuaW5jbHVkZXMoJ3F0JykpIHsKLSAgICAgICAgLy8gTGlzdGVuIG9uIHRoZSBwYW5l bCBjbG9zZWQgZXZlbnQgYW5kIG5vdGlmeSB1c2VyIHRvIHNhdmUgbW9kaWZpY2F0aW9ucy4KLSAg ICAgICAgXy5lYWNoKHBnV2luZG93LmRlZmF1bHQucGdBZG1pbi5Ccm93c2VyLmRvY2tlci5maW5k UGFuZWxzKCdmcm1fZGF0YWdyaWQnKSwgZnVuY3Rpb24ocCkgewotICAgICAgICAgIGlmIChwLnRy YW5zX2lkID09IHNlbGYudHJhbnNJZCkgewotICAgICAgICAgICAgc2VsZi5jdXJyZW50UGFuZWwg PSBwOwotICAgICAgICAgICAgcC5vbih3Y0RvY2tlci5FVkVOVC5DTE9TSU5HLCBmdW5jdGlvbigp IHsKLSAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuaGFuZGxlci5jaGVja19uZWVkZWRfY29uZmly bWF0aW9uc19iZWZvcmVfY2xvc2luZ19wYW5lbCh0cnVlKTsKLSAgICAgICAgICAgIH0pOwotCi0g ICAgICAgICAgICAvLyBTZXQgZm9jdXMgb24gcXVlcnkgdG9vbCBvZiBhY3RpdmUgcGFuZWwKLSAg ICAgICAgICAgIHAub24od2NEb2NrZXIuRVZFTlQuR0FJTl9GT0NVUywgZnVuY3Rpb24oKSB7Ci0g ICAgICAgICAgICAgIHZhciAkY29udGFpbmVyID0gJCh0aGlzLiRjb250YWluZXIpLAotICAgICAg ICAgICAgICAgIHRyYW5zSWQgPSBzZWxmLmhhbmRsZXIudHJhbnNJZDsKLQotICAgICAgICAgICAg ICBpZiAoISRjb250YWluZXIuaGFzQ2xhc3MoJ3djUGFuZWxUYWJDb250ZW50SGlkZGVuJykpIHsK LQotICAgICAgICAgICAgICAgIGxldCBtb2RhbF9saXN0ID0gWydmaWxlU2VsZWN0aW9uRGxnJywg J2NyZWF0ZU1vZGVEbGcnLAotICAgICAgICAgICAgICAgICAgJ2NvbmZpcm0nLCAnYWxlcnQnLCAn Y29uZmlybVNhdmUnLCAnbmV3Q29ubmVjdGlvbkRpYWxvZycsCi0gICAgICAgICAgICAgICAgICAn bWFjcm9EaWFsb2cnXTsKLQotICAgICAgICAgICAgICAgIC8qIGNoZWNrIHRoZSBtb2RhbHMgaW5z aWRlIHRoZSBzcWxlZGl0b3IgYXJlIG9wZW4sIGlmIG5vdCwKLSAgICAgICAgICAgICAgICBmb2N1 cyBvbiB0aGUgZWRpdG9yIGluc3RlYWQuICovCi0gICAgICAgICAgICAgICAgaWYoIVNxbEVkaXRv clV0aWxzLmlzTW9kYWxPcGVuKG1vZGFsX2xpc3QpKSB7Ci0gICAgICAgICAgICAgICAgICBzZXRU aW1lb3V0KGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVyLmdy aWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqLmZvY3VzKCk7Ci0gICAgICAgICAgICAgICAgICB9LCAyMDAp OwotCi0gICAgICAgICAgICAgICAgICAvLyBUcmlnZ2VyIGFuIGV2ZW50IHRvIHVwZGF0ZSBjb25u ZWN0aW9uIHN0YXR1cyBmbGFnCi0gICAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLnRy aWdnZXIoCi0gICAgICAgICAgICAgICAgICAgICdwZ2FkbWluOnF1ZXJ5X3Rvb2w6cGFuZWw6Z2Fp bl9mb2N1czonICsgdHJhbnNJZAotICAgICAgICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAvLyBX aGVuIGFueSBxdWVyeSB0b29sIHBhbmVsIGxvc3QgaXQgZm9jdXMgdGhlbgotICAgICAgICAgICAg cC5vbih3Y0RvY2tlci5FVkVOVC5MT1NUX0ZPQ1VTLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAg ICAgIHZhciAkY29udGFpbmVyID0gJCh0aGlzLiRjb250YWluZXIpLAotICAgICAgICAgICAgICAg IHRyYW5zSWQgPSBzZWxmLmhhbmRsZXIudHJhbnNJZDsKLSAgICAgICAgICAgICAgLy8gVHJpZ2dl ciBhbiBldmVudCB0byB1cGRhdGUgY29ubmVjdGlvbiBzdGF0dXMgZmxhZwotICAgICAgICAgICAg ICBpZiAoJGNvbnRhaW5lci5oYXNDbGFzcygnd2NQYW5lbFRhYkNvbnRlbnRIaWRkZW4nKSkgewot ICAgICAgICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigKLSAgICAgICAgICAgICAg ICAgICdwZ2FkbWluOnF1ZXJ5X3Rvb2w6cGFuZWw6bG9zdF9mb2N1czonICsgdHJhbnNJZAotICAg ICAgICAgICAgICAgICk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAg ICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgLy8gQ29kZSB0byB1cGRhdGUgY29ubmVjdGlv biBzdGF0dXMgcG9sbGluZyBmbGFnCi0gICAgICAgIHBnQnJvd3Nlci5FdmVudHMub24oCi0gICAg ICAgICAgJ3BnYWRtaW46cXVlcnlfdG9vbDpwYW5lbDpnYWluX2ZvY3VzOicgKyBzZWxmLmhhbmRs ZXIudHJhbnNJZCwKLSAgICAgICAgICBzZWxmLmdhaW5fZm9jdXMsIHNlbGYKLSAgICAgICAgKTsK LSAgICAgICAgcGdCcm93c2VyLkV2ZW50cy5vbigKLSAgICAgICAgICAncGdhZG1pbjpxdWVyeV90 b29sOnBhbmVsOmxvc3RfZm9jdXM6JyArIHNlbGYuaGFuZGxlci50cmFuc0lkLAotICAgICAgICAg IHNlbGYubG9zdF9mb2N1cywgc2VsZgotICAgICAgICApOwotICAgICAgfQotCi0gICAgICAvLyBz ZXQgZm9jdXMgb24gcXVlcnkgdG9vbCBvbmNlIGxvYWRlZAotICAgICAgc2V0VGltZW91dChmdW5j dGlvbigpIHsKLSAgICAgICAgc2VsZi5xdWVyeV90b29sX29iai5mb2N1cygpOwotICAgICAgfSwg NTAwKTsKLQotICAgICAgLyogV2UgaGF2ZSBvdmVycmlkZS9yZWdpc3RlciB0aGUgaGludCBmdW5j dGlvbiBvZiBDb2RlTWlycm9yCi0gICAgICAgKiB0byBwcm92aWRlIG91ciBvd24gaGludCBsb2dp Yy4KLSAgICAgICAqLwotICAgICAgQ29kZU1pcnJvci5yZWdpc3RlckhlbHBlcignaGludCcsICdz cWwnLCBmdW5jdGlvbihlZGl0b3IpIHsKLSAgICAgICAgdmFyIGRhdGEgPSBbXSwKLSAgICAgICAg ICBkb2MgPSBlZGl0b3IuZ2V0RG9jKCksCi0gICAgICAgICAgY3VyID0gZG9jLmdldEN1cnNvcigp LAotICAgICAgICAgIC8vIEdldCB0aGUgY3VycmVudCBjdXJzb3IgcG9zaXRpb24KLSAgICAgICAg ICBjdXJyZW50X2N1ciA9IGN1ci5jaCwKLSAgICAgICAgICAvLyBmdW5jdGlvbiBjb250ZXh0Ci0g ICAgICAgICAgY3R4ID0gewotICAgICAgICAgICAgZWRpdG9yOiBlZGl0b3IsCi0gICAgICAgICAg ICAvLyBVUkwgZm9yIGF1dG8tY29tcGxldGUKLSAgICAgICAgICAgIHVybDogdXJsX2Zvcignc3Fs ZWRpdG9yLmF1dG9jb21wbGV0ZScsIHsKLSAgICAgICAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi50 cmFuc0lkLAotICAgICAgICAgICAgfSksCi0gICAgICAgICAgICBkYXRhOiBkYXRhLAotICAgICAg ICAgICAgLy8gR2V0IHRoZSBsaW5lIG51bWJlciBpbiB0aGUgY3Vyc29yIHBvc2l0aW9uCi0gICAg ICAgICAgICBjdXJyZW50X2xpbmU6IGN1ci5saW5lLAotICAgICAgICAgICAgLyoKLSAgICAgICAg ICAgICAqIFJlbmRlciBmdW5jdGlvbiBmb3IgaGludCB0byBhZGQgb3VyIG93biBjbGFzcwotICAg ICAgICAgICAgICogYW5kIGljb24gYXMgcGVyIHRoZSBvYmplY3QgdHlwZS4KLSAgICAgICAgICAg ICAqLwotICAgICAgICAgICAgaGludF9yZW5kZXI6IGZ1bmN0aW9uKGVsdCwgZGF0YV9hcmcsIGN1 cl9hcmcpIHsKLSAgICAgICAgICAgICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn c3BhbicpOwotCi0gICAgICAgICAgICAgIHN3aXRjaCAoY3VyX2FyZy50eXBlKSB7Ci0gICAgICAg ICAgICAgIGNhc2UgJ2RhdGFiYXNlJzoKLSAgICAgICAgICAgICAgICBlbC5jbGFzc05hbWUgPSAn c3FsZWRpdG9yLWhpbnQgcGctaWNvbi0nICsgY3VyX2FyZy50eXBlOwotICAgICAgICAgICAgICAg IGJyZWFrOwotICAgICAgICAgICAgICBjYXNlICdkYXRhdHlwZSc6Ci0gICAgICAgICAgICAgICAg ZWwuY2xhc3NOYW1lID0gJ3NxbGVkaXRvci1oaW50IGljb24tdHlwZSc7Ci0gICAgICAgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgJ2tleXdvcmQnOgotICAgICAgICAgICAgICAg IGVsLmNsYXNzTmFtZSA9ICdmYSBmYS1rZXknOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg ICAgICAgICAgICBjYXNlICd0YWJsZSBhbGlhcyc6Ci0gICAgICAgICAgICAgICAgZWwuY2xhc3NO YW1lID0gJ2ZhIGZhLWF0JzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAg ZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBlbC5jbGFzc05hbWUgPSAnc3FsZWRpdG9yLWhpbnQg aWNvbi0nICsgY3VyX2FyZy50eXBlOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg ZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoY3VyX2FyZy50ZXh0KSk7Ci0g ICAgICAgICAgICAgIGVsdC5hcHBlbmRDaGlsZChlbCk7Ci0gICAgICAgICAgICB9LAotICAgICAg ICAgIH07Ci0KLSAgICAgICAgZGF0YS5wdXNoKGRvYy5nZXRWYWx1ZSgpKTsKLSAgICAgICAgLy8g R2V0IHRoZSB0ZXh0IGZyb20gc3RhcnQgdG8gdGhlIGN1cnJlbnQgY3Vyc29yIHBvc2l0aW9uLgot ICAgICAgICBkYXRhLnB1c2goCi0gICAgICAgICAgZG9jLmdldFJhbmdlKHsKLSAgICAgICAgICAg IGxpbmU6IDAsCi0gICAgICAgICAgICBjaDogMCwKLSAgICAgICAgICB9LCB7Ci0gICAgICAgICAg ICBsaW5lOiBjdHguY3VycmVudF9saW5lLAotICAgICAgICAgICAgY2g6IGN1cnJlbnRfY3VyLAot ICAgICAgICAgIH0pCi0gICAgICAgICk7Ci0KLSAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICB0 aGVuOiBmdW5jdGlvbihjYikgewotICAgICAgICAgICAgdmFyIHNlbGZfbG9jYWwgPSB0aGlzOwot ICAgICAgICAgICAgLy8gTWFrZSBhamF4IGNhbGwgdG8gZmluZCB0aGUgYXV0b2NvbXBsZXRlIGRh dGEKLSAgICAgICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgICAgIHVybDogc2VsZl9sb2NhbC51 cmwsCi0gICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgICAgICBjb250ZW50 VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLAotICAgICAgICAgICAgICBkYXRhOiBKU09OLnN0cmlu Z2lmeShzZWxmX2xvY2FsLmRhdGEpLAotICAgICAgICAgICAgfSkKLSAgICAgICAgICAgICAgLmRv bmUoZnVuY3Rpb24ocmVzKSB7Ci0gICAgICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtdOwotCi0g ICAgICAgICAgICAgICAgXy5lYWNoKHJlcy5kYXRhLnJlc3VsdCwgZnVuY3Rpb24ob2JqLCBrZXkp IHsKLSAgICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKHsKLSAgICAgICAgICAgICAgICAgICAg dGV4dDoga2V5LAotICAgICAgICAgICAgICAgICAgICB0eXBlOiBvYmoub2JqZWN0X3R5cGUsCi0g ICAgICAgICAgICAgICAgICAgIHJlbmRlcjogc2VsZl9sb2NhbC5oaW50X3JlbmRlciwKLSAgICAg ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgICAg Ly8gU29ydCBmdW5jdGlvbiB0byBzb3J0IHRoZSBzdWdnZXN0aW9uJ3MgYWxwaGFiZXRpY2FsbHku Ci0gICAgICAgICAgICAgICAgcmVzdWx0LnNvcnQoZnVuY3Rpb24oYSwgYikgewotICAgICAgICAg ICAgICAgICAgdmFyIHRleHRBID0gYS50ZXh0LnRvTG93ZXJDYXNlKCksCi0gICAgICAgICAgICAg ICAgICAgIHRleHRCID0gYi50ZXh0LnRvTG93ZXJDYXNlKCk7Ci0gICAgICAgICAgICAgICAgICBp ZiAodGV4dEEgPCB0ZXh0QikgLy9zb3J0IHN0cmluZyBhc2NlbmRpbmcKLSAgICAgICAgICAgICAg ICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgICAgICAgaWYgKHRleHRBID4gdGV4dEIpCi0g ICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7 IC8vZGVmYXVsdCByZXR1cm4gdmFsdWUgKG5vIHNvcnRpbmcpCi0gICAgICAgICAgICAgICAgfSk7 Ci0KLSAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgKiBCZWxvdyBsb2dpYyBmaW5k IHRoZSBzdGFydCBhbmQgZW5kIHBvaW50Ci0gICAgICAgICAgICAgICAqIHRvIHJlcGxhY2UgdGhl IHNlbGVjdGVkIGF1dG8gY29tcGxldGUgc3VnZ2VzdGlvbi4KLSAgICAgICAgICAgICAgICovCi0g ICAgICAgICAgICAgICAgdmFyIHRva2VuID0gc2VsZl9sb2NhbC5lZGl0b3IuZ2V0VG9rZW5BdChj dXIpLAotICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCwgc2VhcmNoOwotICAgICAgICAgICAg ICAgIGlmICh0b2tlbi5lbmQgPiBjdXIuY2gpIHsKLSAgICAgICAgICAgICAgICAgIHRva2VuLmVu ZCA9IGN1ci5jaDsKLSAgICAgICAgICAgICAgICAgIHRva2VuLnN0cmluZyA9IHRva2VuLnN0cmlu Zy5zbGljZSgwLCBjdXIuY2ggLSB0b2tlbi5zdGFydCk7Ci0gICAgICAgICAgICAgICAgfQotCi0g ICAgICAgICAgICAgICAgaWYgKHRva2VuLnN0cmluZy5tYXRjaCgvXlsuYFx3QF1cdyokLykpIHsK LSAgICAgICAgICAgICAgICAgIHNlYXJjaCA9IHRva2VuLnN0cmluZzsKLSAgICAgICAgICAgICAg ICAgIHN0YXJ0ID0gdG9rZW4uc3RhcnQ7Ci0gICAgICAgICAgICAgICAgICBlbmQgPSB0b2tlbi5l bmQ7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgIHN0YXJ0ID0g ZW5kID0gY3VyLmNoOwotICAgICAgICAgICAgICAgICAgc2VhcmNoID0gJyc7Ci0gICAgICAgICAg ICAgICAgfQotCi0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICogQWRkZWQgMSBp biB0aGUgc3RhcnQgcG9zaXRpb24gaWYgc2VhcmNoIHN0cmluZwotICAgICAgICAgICAgICAgKiBz dGFydGVkIHdpdGggIi4iIG9yICJgIiBlbHNlIGF1dG8gY29tcGxldGUgb2YgY29kZSBtaXJyb3IK LSAgICAgICAgICAgICAgICogd2lsbCByZW1vdmUgdGhlICIuIiB3aGVuIHVzZXIgc2VsZWN0IGFu eSBzdWdnZXN0aW9uLgotICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBpZiAoc2Vh cmNoLmNoYXJBdCgwKSA9PSAnLicgfHwgc2VhcmNoLmNoYXJBdCgwKSA9PSAnYGAnKQotICAgICAg ICAgICAgICAgICAgc3RhcnQgKz0gMTsKLQotICAgICAgICAgICAgICAgIGNiKHsKLSAgICAgICAg ICAgICAgICAgIGxpc3Q6IHJlc3VsdCwKLSAgICAgICAgICAgICAgICAgIGZyb206IHsKLSAgICAg ICAgICAgICAgICAgICAgbGluZTogc2VsZl9sb2NhbC5jdXJyZW50X2xpbmUsCi0gICAgICAgICAg ICAgICAgICAgIGNoOiBzdGFydCwKLSAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg ICAgICB0bzogewotICAgICAgICAgICAgICAgICAgICBsaW5lOiBzZWxmX2xvY2FsLmN1cnJlbnRf bGluZSwKLSAgICAgICAgICAgICAgICAgICAgY2g6IGVuZCwKLSAgICAgICAgICAgICAgICAgIH0s Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgIH0pCi0gICAgICAgICAgICAgIC5m YWlsKGZ1bmN0aW9uKGUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gaHR0cEVycm9ySGFuZGxl ci5oYW5kbGVMb2dpblJlcXVpcmVkQW5kVHJhbnNhY3Rpb25SZXF1aXJlZCgKLSAgICAgICAgICAg ICAgICAgIHBnQWRtaW4sIHNlbGZfbG9jYWwsIGUsIG51bGwsIFtdLCBmYWxzZQotICAgICAgICAg ICAgICAgICk7Ci0gICAgICAgICAgICAgIH0pOwotICAgICAgICAgIH0uYmluZChjdHgpLAotICAg ICAgICB9OwotICAgICAgfSk7Ci0KLSAgICAgIC8qIElmIHRoZSBzY3JlZW4gd2lkdGggaXMgc21h bGwgYW5kIHdlIGhvdmVyIG92ZXIgdGhlIEV4cGxhaW4gT3B0aW9ucywKLSAgICAgICAgKiB0aGUg c3VibWVudSBnb2VzIGJlaGluZCB0aGUgc2NyZWVuIG9uIHRoZSByaWdodCBzaWRlLgotICAgICAg ICAqIEJlbG93IGxvZ2ljIHdpbGwgbWFrZSBpdCBhcHBlYXIgb24gdGhlIGxlZnQuCi0gICAgICAg ICovCi0gICAgICAkKCcuZHJvcGRvd24tc3VibWVudScpLm9uKCdtb3VzZWVudGVyJyxmdW5jdGlv bigpIHsKLSAgICAgICAgdmFyIG1lbnUgPSAkKHRoaXMpLmZpbmQoJ3VsLmRyb3Bkb3duLW1lbnUn KTsKLSAgICAgICAgdmFyIG1lbnVwb3MgPSAkKG1lbnUpLm9mZnNldCgpOwotCi0gICAgICAgIGlm IChtZW51cG9zLmxlZnQgKyBtZW51LndpZHRoKCkgPiAkKHdpbmRvdykud2lkdGgoKSkgewotICAg ICAgICAgIHZhciBuZXdwb3MgPSAtJChtZW51KS53aWR0aCgpOwotICAgICAgICAgIG1lbnUuY3Nz KCdsZWZ0JyxuZXdwb3MpOwotICAgICAgICB9Ci0gICAgICB9KS5vbignbW91c2VsZWF2ZScsIGZ1 bmN0aW9uKCkgewotICAgICAgICB2YXIgbWVudSA9ICQodGhpcykuZmluZCgndWwuZHJvcGRvd24t bWVudScpOwotICAgICAgICBtZW51LmNzcygnbGVmdCcsJycpOwotICAgICAgfSk7Ci0KLSAgICAg IHNlbGYucmVmbGVjdFByZWZlcmVuY2VzKCk7Ci0KLSAgICAgIC8qIFNldCBBdXRvLWNvbW1pdCBh bmQgYXV0by1yb2xsYmFjayBvbiBxdWVyeSBlZGl0b3IgKi8KLSAgICAgIGlmIChzZWxmLnByZWZl cmVuY2VzLmF1dG9fY29tbWl0KSB7Ci0gICAgICAgICQoJy5hdXRvLWNvbW1pdCcpLnJlbW92ZUNs YXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOwotICAgICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAg ICQoJy5hdXRvLWNvbW1pdCcpLmFkZENsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOwotICAgICAg fQotICAgICAgaWYgKHNlbGYucHJlZmVyZW5jZXMuYXV0b19yb2xsYmFjaykgewotICAgICAgICAk KCcuYXV0by1yb2xsYmFjaycpLnJlbW92ZUNsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOwotICAg ICAgfQotICAgICAgZWxzZSB7Ci0gICAgICAgICQoJy5hdXRvLXJvbGxiYWNrJykuYWRkQ2xhc3Mo J3Zpc2liaWxpdHktaGlkZGVuJyk7Ci0gICAgICB9Ci0KLSAgICAgIC8qIFJlZ2lzdGVyIGZvciBw cmVmZXJlbmNlIGNoYW5nZWQgZXZlbnQgYnJvYWRjYXN0ZWQgaW4gcGFyZW50Ci0gICAgICAgKiB0 byByZWxvYWQgdGhlIHNob3JjdXRzLiBBcyBzcWxlZGl0b3IgaXMgaW4gaUZyYW1lIG9mIHdjRG9j a2VyCi0gICAgICAgKiB3aW5kb3cgcGFyZW50IGlzIHJlZmVycmVkCi0gICAgICAgKi8KLSAgICAg IHBnV2luZG93LmRlZmF1bHQucGdBZG1pbi5Ccm93c2VyLm9uUHJlZmVyZW5jZXNDaGFuZ2UoJ3Nx bGVkaXRvcicsIGZ1bmN0aW9uKCkgewotICAgICAgICBzZWxmLnJlZmxlY3RQcmVmZXJlbmNlcygp OwotICAgICAgfSk7Ci0KLSAgICAgIC8qIElmIHNxbCBlZGl0b3IgaXMgaW4gYSBuZXcgdGFiLCBl dmVudCBmaXJlZCBpcyBub3QgYXZhaWxhYmxlCi0gICAgICAgKiBpbnN0ZWFkLCBhIHBvbGxlciBp cyBzZXQgdXAgd2hvIHdpbGwgY2hlY2sKLSAgICAgICAqLwotICAgICAgdmFyIG9wZW5fbmV3X3Rh Yl9xdCA9IHNlbGYuYnJvd3Nlcl9wcmVmZXJlbmNlcy5uZXdfYnJvd3Nlcl90YWJfb3BlbjsKLSAg ICAgIGlmKG9wZW5fbmV3X3RhYl9xdCAmJiBvcGVuX25ld190YWJfcXQuaW5jbHVkZXMoJ3F0Jykp IHsKLSAgICAgICAgcGdCcm93c2VyLmJpbmRfYmVmb3JldW5sb2FkKCk7Ci0gICAgICAgIHNldElu dGVydmFsKCgpPT57Ci0gICAgICAgICAgaWYocGdXaW5kb3cuZGVmYXVsdC5wZ0FkbWluKSB7Ci0g ICAgICAgICAgICBzZWxmLnJlZmxlY3RQcmVmZXJlbmNlcygpOwotICAgICAgICAgIH0KLSAgICAg ICAgfSwgMTAwMCk7Ci0gICAgICB9Ci0KLSAgICAgIC8qIFJlZ2lzdGVyIHRvIGxvZyB0aGUgYWN0 aXZpdHkgKi8KLSAgICAgIHBnQnJvd3Nlci5yZWdpc3Rlcl90b19hY3Rpdml0eV9saXN0ZW5lcihk b2N1bWVudCwgKCk9PnsKLSAgICAgICAgTm90aWZ5LmFsZXJ0KGdldHRleHQoJ1RpbWVvdXQnKSwg Z2V0dGV4dCgnWW91ciBzZXNzaW9uIGhhcyB0aW1lZCBvdXQgZHVlIHRvIGluYWN0aXZpdHkuIFBs ZWFzZSBjbG9zZSB0aGUgd2luZG93IGFuZCBsb2dpbiBhZ2Fpbi4nKSk7Ci0gICAgICB9KTsKLQot ICAgICAgc2VsZi5yZW5kZXJfY29ubmVjdGlvbihzZWxmLmNvbm5lY3Rpb25fbGlzdCk7Ci0gICAg fSwKLQotICAgIC8qIFJlZ2FyZGluZyBTbGlja0dyaWQgdXNhZ2UgaW4gcmVuZGVyX2dyaWQgZnVu Y3Rpb24uCi0KLSAgICAgU2xpY2tHcmlkIFBsdWdpbnM6Ci0gICAgIC0tLS0tLS0tLS0tLS0tLS0t LQotICAgICAxKSBTbGljay5BdXRvVG9vbHRpcHMKLSAgICAgLSBUaGlzIHBsdWdpbiBpcyB1c2Vm dWwgZm9yIGRpc3BsYXlpbmcgY2VsbCBkYXRhIGFzIHRvb2x0aXAgd2hlbgotICAgICB1c2VyIGhv dmVyIG1vdXNlIG9uIGNlbGwgaWYgZGF0YSBpcyBsYXJnZQotICAgICAyKSBTbGljay5DaGVja2Jv eFNlbGVjdENvbHVtbgotICAgICAtIFRoaXMgcGx1Z2luIGlzIHVzZWZ1bCBmb3Igc2VsZWN0aW5n IHJvd3MgdXNpbmcgY2hlY2tib3gKLSAgICAgMykgUm93U2VsZWN0aW9uTW9kZWwKLSAgICAgLSBU aGlzIHBsdWdpbiBpcyBuZWVkZWQgYnkgQ2hlY2tib3hTZWxlY3RDb2x1bW4gcGx1Z2luIHRvIHNl bGVjdCByb3dzCi0gICAgIDQpIFNsaWNrLkhlYWRlckJ1dHRvbnMKLSAgICAgLSBUaGlzIHBsdWdp biBpcyB1c2VmdWwgZm9yIGFkZCBidXR0b25zIGluIGNvbHVtbiBoZWFkZXIKLQotICAgICBHcmlk IE9wdGlvbnM6Ci0gICAgIC0tLS0tLS0tLS0tLS0KLSAgICAgMSkgZWRpdGFibGUKLSAgICAgLSBU aGlzIG9wdGlvbiBhbGxvdyB1cyB0byBtYWtlIGdyaWQgZWRpdGFibGUKLSAgICAgMikgZW5hYmxl QWRkUm93Ci0gICAgIC0gVGhpcyBvcHRpb24gYWxsb3cgdXMgdG8gYWRkIG5ldyByb3dzIGF0IHRo ZSBlbmQgb2YgZ3JpZAotICAgICAzKSBlbmFibGVDZWxsTmF2aWdhdGlvbgotICAgICAtIFRoaXMg b3B0aW9uIGFsbG93IHVzIHRvIG5hdmlnYXRlIGNlbGxzIHVzaW5nIGtleWJvYXJkCi0gICAgIDQp IGVuYWJsZUNvbHVtblJlb3JkZXIKLSAgICAgLSBUaGlzIG9wdGlvbiBhbGxvdyB1cyB0byByZWNv cmQgY29sdW1uCi0gICAgIDUpIGFzeW5jRWRpdG9yTG9hZGluZwotICAgICAtIFRoaXMgb3B0aW9u IGFsbG93IHVzIHRvIG9wZW4gZWRpdG9yIGFzeW5jCi0gICAgIDYpIGF1dG9FZGl0Ci0gICAgIC0g VGhpcyBvcHRpb24gYWxsb3cgdXMgdG8gZW50ZXIgaW4gZWRpdCBtb2RlIGRpcmVjdGx5IHdoZW4g dXNlciBjbGlja3Mgb24gaXQKLSAgICAgb3RoZXJ3aXNlIHVzZXIgaGF2ZSB0byBkb3VibGUgY2xp Y2sgb3IgbWFudWFsbHkgcHJlc3MgZW50ZXIgb24gY2VsbCB0byBnbwotICAgICBpbiBjZWxsIGVk aXQgbW9kZQotCi0gICAgIEhhbmRsaW5nIG9mIGRhdGE6Ci0gICAgIC0tLS0tLS0tLS0tLS0tLS0t Ci0gICAgIFdlIGFyZSBkb2luZyBkYXRhIGhhbmRsaW5nIG1hbnVhbGx5LHdoYXQgdXNlciBhZGRz L3VwZGF0ZXMvZGVsZXRlcyBldGMKLSAgICAgd2Ugd2lsbCB1c2UgYGRhdGFfc3RvcmVgIG9iamVj dCB0byBzdG9yZSBldmVyeXRoaW5nIHVzZXIgZG9lcyB3aXRoaW4gZ3JpZCBkYXRhCi0KLSAgICAg LSB1cGRhdGVkOgotICAgICBUaGlzIHdpbGwgaG9sZCBhbGwgdGhlIGRhdGEgd2hpY2ggdXNlciB1 cGRhdGVzIGluIGdyaWQKLSAgICAgLSBhZGRlZDoKLSAgICAgVGhpcyB3aWxsIGhvbGQgYWxsIHRo ZSBuZXcgcm93KHMpIGRhdGEgd2hpY2ggdXNlciBhZGRzIGluIGdyaWQKLSAgICAgLSBzdGFnZWRf cm93czoKLSAgICAgVGhpcyB3aWxsIGhvbGQgYWxsIHRoZSBkYXRhIHdoaWNoIHVzZXIgY29waWVz L3Bhc3Rlcy9kZWxldGVzIGluIGdyaWQKLSAgICAgLSBkZWxldGVkOgotICAgICBUaGlzIHdpbGwg aG9sZCBhbGwgdGhlIGRhdGEgd2hpY2ggdXNlciBkZWxldGVzIGluIGdyaWQKLQotICAgICBFdmVu dHMgaGFuZGxpbmc6Ci0gICAgIC0tLS0tLS0tLS0tLS0tLS0KLSAgICAgMSkgb25DZWxsQ2hhbmdl Ci0gICAgIC0gV2UgYXJlIHVzaW5nIHRoaXMgZXZlbnQgdG8gbGlzdGVuIHRvIGNoYW5nZXMgb24g aW5kaXZpZHVhbCBjZWxsLgotICAgICAyKSBvbkFkZE5ld1JvdwotICAgICAtIFdlIGFyZSB1c2lu ZyB0aGlzIGV2ZW50IHRvIGxpc3RlbiB0byBuZXcgcm93IGFkZGluZyBmdW5jdGlvbmFsaXR5Lgot ICAgICAzKSBvblNlbGVjdGVkUmFuZ2VzQ2hhbmdlZAotICAgICAtIFdlIGFyZSB1c2luZyB0aGlz IGV2ZW50IHRvIGxpc3RlbiB3aGVuIHVzZXIgc2VsZWN0cyByb3dzIGZvciBjb3B5L2RlbGV0ZSBv cGVyYXRpb24uCi0gICAgIDQpIG9uQmVmb3JlRWRpdENlbGwKLSAgICAgLSBXZSBhcmUgdXNpbmcg dGhpcyBldmVudCB0byBzYXZlIHRoZSBkYXRhIGJlZm9yZSB1c2VycyBtb2RpZmllZCB0aGVtCi0g ICAgIDUpIG9uS2V5RG93bgotICAgICAtIFdlIGFyZSB1c2luZyB0aGlzIGV2ZW50IGZvciBDb3B5 IG9wZXJhdGlvbiBvbiBncmlkCi0gICAgICovCi0KLSAgICAvLyBUaGlzIGZ1bmN0aW9uIGlzIHJl c3BvbnNpYmxlIHRvIGNyZWF0ZSBhbmQgcmVuZGVyIHRoZSBTbGlja0dyaWQuCi0gICAgcmVuZGVy X2dyaWQ6IGZ1bmN0aW9uKGNvbGxlY3Rpb24sIGNvbHVtbnMsIGlzX2VkaXRhYmxlLCBjbGllbnRf cHJpbWFyeV9rZXksIHJvd3NfYWZmZWN0ZWQpIHsKLSAgICAgIHZhciBzZWxmID0gdGhpczsKLQot ICAgICAgc2VsZi5oYW5kbGVyLm51bWJlck9mTW9kaWZpZWRDZWxscyA9IDA7Ci0KLSAgICAgIHNl bGYuaGFuZGxlci5yZXNldF9kYXRhX3N0b3JlKCk7Ci0KLSAgICAgIC8vIGtlZXAgdHJhY2sgb2Yg bmV3bHkgYWRkZWQgcm93cwotICAgICAgc2VsZi5oYW5kbGVyLnJvd3NfdG9fZGlzYWJsZSA9IG5l dyBBcnJheSgpOwotICAgICAgLy8gVGVtcG9yYXJpbHkgaG9sZCBuZXcgcm93cyBhZGRlZAotICAg ICAgc2VsZi5oYW5kbGVyLnRlbXBfbmV3X3Jvd3MgPSBuZXcgQXJyYXkoKTsKLQotICAgICAgLy8g VG8gc3RvcmUgcHJpbWFyeSBrZXlzIGJlZm9yZSB0aGV5IGdldHMgY2hhbmdlZAotICAgICAgc2Vs Zi5oYW5kbGVyLnByaW1hcnlfa2V5c19kYXRhID0ge307Ci0KLSAgICAgIHNlbGYuY2xpZW50X3By aW1hcnlfa2V5ID0gY2xpZW50X3ByaW1hcnlfa2V5OwotCi0gICAgICBzZWxmLmNsaWVudF9wcmlt YXJ5X2tleV9jb3VudGVyID0gMDsKLQotICAgICAgLy8gUmVtb3ZlIGFueSBleGlzdGluZyBncmlk IGZpcnN0Ci0gICAgICBpZiAoc2VsZi5oYW5kbGVyLnNsaWNrZ3JpZCkgewotICAgICAgICBzZWxm LmhhbmRsZXIuc2xpY2tncmlkLmRlc3Ryb3koKTsKLSAgICAgIH0KLQotICAgICAgaWYgKCFfLmlz QXJyYXkoY29sbGVjdGlvbikgfHwgIV8uc2l6ZShjb2xsZWN0aW9uKSkgewotICAgICAgICBjb2xs ZWN0aW9uID0gW107Ci0gICAgICB9Ci0KLSAgICAgIHZhciBncmlkX2NvbHVtbnMgPSBbXSwKLSAg ICAgICAgdGFibGVfbmFtZTsKLSAgICAgIHZhciBjb2x1bW5fc2l6ZSA9IHNlbGYuaGFuZGxlclsn Y29sX3NpemUnXSwKLSAgICAgICAgcXVlcnkgPSBzZWxmLmhhbmRsZXIucXVlcnksCi0gICAgICAg IC8vIEV4dHJhY3QgdGFibGUgbmFtZSBmcm9tIHF1ZXJ5Ci0gICAgICAgIHRhYmxlX2xpc3QgPSBx dWVyeS5tYXRjaCgvc2VsZWN0Lipmcm9tXHMrXHcrXC4qKFx3KykvaSk7Ci0KLSAgICAgIGlmICgh dGFibGVfbGlzdCkgewotICAgICAgICB0YWJsZV9uYW1lID0gU3FsRWRpdG9yVXRpbHMuZ2V0SGFz aChxdWVyeSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB0YWJsZV9uYW1lID0gdGFibGVfbGlz dFsxXTsKLSAgICAgIH0KLQotICAgICAgc2VsZi5oYW5kbGVyWyd0YWJsZV9uYW1lJ10gPSB0YWJs ZV9uYW1lOwotICAgICAgY29sdW1uX3NpemVbdGFibGVfbmFtZV0gPSBjb2x1bW5fc2l6ZVt0YWJs ZV9uYW1lXSB8fCB7fTsKLQotICAgICAgLy8gS2VlcCB0cmFjayBvZiBjb2x1bW5fZGF0YV9hdXRv X3Jlc2l6ZSBwcmVmZXJlbmNlcyB2YWx1ZQotICAgICAgaWYgKF8uaXNVbmRlZmluZWQoc2VsZi5h dXRvX3Jlc2l6ZV9jb2x1bW5fYmFzZWRfb25fZGF0YSkgfHwgc2VsZi5hdXRvX3Jlc2l6ZV9jb2x1 bW5fYmFzZWRfb25fZGF0YSAhPT0gc2VsZi5wcmVmZXJlbmNlcy5jb2x1bW5fZGF0YV9hdXRvX3Jl c2l6ZSkgewotICAgICAgICBzZWxmLmF1dG9fcmVzaXplX2NvbHVtbl9iYXNlZF9vbl9kYXRhID0g c2VsZi5wcmVmZXJlbmNlcy5jb2x1bW5fZGF0YV9hdXRvX3Jlc2l6ZTsKLSAgICAgICAgY29sdW1u X3NpemVbdGFibGVfbmFtZV0gPSB7fTsKLSAgICAgIH0KLQotICAgICAgLy8gS2VlcCB0cmFjayBv ZiBjb2x1bW5fZGF0YV9tYXhfd2lkdGgKLSAgICAgIHNlbGYubWF4X3dpZHRoX2NoYW5nZWQgPSBm YWxzZTsKLSAgICAgIGlmIChfLmlzVW5kZWZpbmVkKHNlbGYub2xkX2NvbHVtbl9kYXRhX21heF93 aWR0aCkgfHwgc2VsZi5vbGRfY29sdW1uX2RhdGFfbWF4X3dpZHRoICE9IHNlbGYucHJlZmVyZW5j ZXMuY29sdW1uX2RhdGFfbWF4X3dpZHRoKSB7Ci0gICAgICAgIHNlbGYub2xkX2NvbHVtbl9kYXRh X21heF93aWR0aCA9IHNlbGYucHJlZmVyZW5jZXMuY29sdW1uX2RhdGFfbWF4X3dpZHRoOwotICAg ICAgICBzZWxmLm1heF93aWR0aF9jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgIH0KLQotCi0gICAgICBf LmVhY2goY29sdW1ucywgZnVuY3Rpb24oYykgewotICAgICAgICBjLmRpc3BsYXlfbmFtZSA9IF8u ZXNjYXBlKGMuZGlzcGxheV9uYW1lKTsKLSAgICAgICAgYy5jb2x1bW5fdHlwZSA9IF8uZXNjYXBl KGMuY29sdW1uX3R5cGUpOwotCi0gICAgICAgIC8vIElmIHRoZSBrZXlzIGhhdmUgbmFtZSBmcm9t IGV4aXN0aW5nIEpTIGtleXdvcmRzIHRoZW4gaXQgbWF5Ci0gICAgICAgIC8vIGNyZWF0ZSBwcm9i bGVtLiBlZyAtIGNvbnRydWN0b3IsIGhhc093blByb3BlcnR5LgotICAgICAgICAvLyBub25hdGl2 ZV9maWVsZCBpcyBmaWVsZCB3aXRoIGV4dHJhIGRvdWJsZSBxdW90ZXMKLSAgICAgICAgdmFyIG9w dGlvbnMgPSB7Ci0gICAgICAgICAgaWQ6ICBfLmVzY2FwZShjLm5hbWUpLAotICAgICAgICAgIHBv czogYy5wb3MsCi0gICAgICAgICAgZmllbGQ6IGMubmFtZSwKLSAgICAgICAgICBub25hdGl2ZV9m aWVsZDogYCIke2MubmFtZX0iYCwKLSAgICAgICAgICBuYW1lOiBjLmxhYmVsLAotICAgICAgICAg IGRpc3BsYXlfbmFtZTogYy5kaXNwbGF5X25hbWUsCi0gICAgICAgICAgY29sdW1uX3R5cGU6IGMu Y29sdW1uX3R5cGUsCi0gICAgICAgICAgY29sdW1uX3R5cGVfaW50ZXJuYWw6IGMuY29sdW1uX3R5 cGVfaW50ZXJuYWwsCi0gICAgICAgICAgY2VsbDogYy5jZWxsLAotICAgICAgICAgIG5vdF9udWxs OiBjLm5vdF9udWxsLAotICAgICAgICAgIGhhc19kZWZhdWx0X3ZhbDogYy5oYXNfZGVmYXVsdF92 YWwsCi0gICAgICAgICAgaXNfYXJyYXk6IGMuaXNfYXJyYXksCi0gICAgICAgICAgY2FuX2VkaXQ6 IGMuY2FuX2VkaXQsCi0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gR2V0IHRoZSBjb2x1bW5zIHdp ZHRoIGJhc2VkIG9uIGxvbmdlciBzdHJpbmcgYW1vbmcgZGF0YSB0eXBlIG9yCi0gICAgICAgIC8v IGNvbHVtbiBuYW1lLgotICAgICAgICB2YXIgY29sdW1uX3R5cGUgPSBjLmNvbHVtbl90eXBlLnRy aW0oKTsKLSAgICAgICAgdmFyIGxhYmVsID0gYy5uYW1lLmxlbmd0aCA+IGNvbHVtbl90eXBlLmxl bmd0aCA/IF8uZXNjYXBlKGMuZGlzcGxheV9uYW1lKSA6IGNvbHVtbl90eXBlOwotICAgICAgICB2 YXIgaWNvbldpZHRoID0gMDsKLSAgICAgICAgLy8gaW5jcmVhc2Ugd2lkdGggdG8gYWRkICd2aWV3 JyBidXR0b24KLSAgICAgICAgaWYgKGMuY2VsbCA9PSAnZ2VvbWV0cnknIHx8IGMuY2VsbCA9PSAn Z2VvZ3JhcGh5JykgewotICAgICAgICAgIGljb25XaWR0aCArPSAyODsKLSAgICAgICAgfQotICAg ICAgICAvLyBJbmNyZWFzZSB3aWR0aCBmb3IgZWRpdGFibGUvcmVhZC1vbmx5IGljb24KLSAgICAg ICAgaWYoIV8uaXNVbmRlZmluZWQoYy5jYW5fZWRpdCkpIHsKLSAgICAgICAgICBpY29uV2lkdGgg Kz0gMTI7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoXy5pc1VuZGVmaW5lZChjb2x1bW5fc2l6 ZVt0YWJsZV9uYW1lXVtvcHRpb25zLm5vbmF0aXZlX2ZpZWxkXSkpIHsKLSAgICAgICAgICAvKiBJ ZiBjb2x1bW5fZGF0YV9hdXRvX3Jlc2l6ZSBpcyAnYnlfZGF0YScgdGhlbiBmb3IgdGhlIGZpcnN0 IHRpbWUgc2V0Ci0gICAgICAgICAgICogdGhlIGFkZFdpZHRoIHBhcmFtZXRlciB0byBpY29uV2lk dGggYW5kIGlmIGl0IGlzICdieV9uYW1lJyB0aGVuCi0gICAgICAgICAgICogY2FsY3VsYXRlIHdp ZHRoIGJhc2VkIG9uIGxvbmdlciBzdHJpbmcgYW1vbmcgZGF0YSB0eXBlIG9yCi0gICAgICAgICAg ICogY29sdW1uIG5hbWUuCi0gICAgICAgICAgICovCi0gICAgICAgICAgaWYgKHNlbGYucHJlZmVy ZW5jZXMuY29sdW1uX2RhdGFfYXV0b19yZXNpemUgPT09ICdieV9kYXRhJykgewotICAgICAgICAg ICAgb3B0aW9uc1snYWRkV2lkdGgnXSA9IGljb25XaWR0aDsKLSAgICAgICAgICAgIG9wdGlvbnNb J3dpZHRoJ10gPSBOYU47Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG9wdGlvbnNb J3dpZHRoJ10gPSBTcWxFZGl0b3JVdGlscy5jYWxjdWxhdGVDb2x1bW5XaWR0aChsYWJlbCk7Ci0g ICAgICAgICAgICBvcHRpb25zWyd3aWR0aCddICs9IGljb25XaWR0aDsKLSAgICAgICAgICAgIGNv bHVtbl9zaXplW3RhYmxlX25hbWVdW2Mubm9uYXRpdmVfZmllbGRdID0gb3B0aW9uc1snd2lkdGgn XTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgb3B0aW9uc1snd2lk dGgnXSA9IGNvbHVtbl9zaXplW3RhYmxlX25hbWVdW29wdGlvbnMubm9uYXRpdmVfZmllbGRdOwot ICAgICAgICB9Ci0KLSAgICAgICAgLy8gSWYgZ3JpZCBpcyBlZGl0YWJsZSB0aGVuIGFkZCBlZGl0 b3IgZWxzZSBtYWtlIGl0IHJlYWRvbmx5Ci0gICAgICAgIGlmIChjLmNlbGwgPT0gJ29pZCcgJiYg Yy5uYW1lID09ICdvaWQnKSB7Ci0gICAgICAgICAgb3B0aW9uc1snZWRpdG9yJ10gPSBudWxsOwot ICAgICAgICB9IGVsc2UgaWYgKGMuY2VsbCA9PSAnSnNvbicpIHsKLSAgICAgICAgICBvcHRpb25z WydlZGl0b3InXSA9IGMuY2FuX2VkaXQgPyBTbGljay5FZGl0b3JzLkpzb25UZXh0IDoKLSAgICAg ICAgICAgIFNsaWNrLkVkaXRvcnMuUmVhZE9ubHlKc29uVGV4dDsKLSAgICAgICAgICBvcHRpb25z Wydmb3JtYXR0ZXInXSA9IFNsaWNrLkZvcm1hdHRlcnMuSnNvblN0cmluZzsKLSAgICAgICAgfSBl bHNlIGlmIChjLmNlbGwgPT0gJ251bWJlcicgfHwgYy5jZWxsID09ICdvaWQnIHx8Ci0gICAgICAg ICAgJC5pbkFycmF5KGMudHlwZSwgWyd4aWQnLCAncmVhbCddKSAhPT0gLTEKLSAgICAgICAgKSB7 Ci0gICAgICAgICAgb3B0aW9uc1snZWRpdG9yJ10gPSBjLmNhbl9lZGl0ID8gU2xpY2suRWRpdG9y cy5DdXN0b21OdW1iZXIgOgotICAgICAgICAgICAgU2xpY2suRWRpdG9ycy5SZWFkT25seVRleHQ7 Ci0gICAgICAgICAgb3B0aW9uc1snZm9ybWF0dGVyJ10gPSBTbGljay5Gb3JtYXR0ZXJzLk51bWJl cnM7Ci0gICAgICAgIH0gZWxzZSBpZiAoYy5jZWxsID09ICdib29sZWFuJykgewotICAgICAgICAg IG9wdGlvbnNbJ2VkaXRvciddID0gYy5jYW5fZWRpdCA/IFNsaWNrLkVkaXRvcnMuQ2hlY2tib3gg OgotICAgICAgICAgICAgU2xpY2suRWRpdG9ycy5SZWFkT25seUNoZWNrYm94OwotICAgICAgICAg IG9wdGlvbnNbJ2Zvcm1hdHRlciddID0gU2xpY2suRm9ybWF0dGVycy5DaGVja21hcms7Ci0gICAg ICAgIH0gZWxzZSBpZiAoYy5jZWxsID09ICdiaW5hcnknKSB7Ci0gICAgICAgICAgLy8gV2UgZG8g bm90IHN1cHBvcnQgZWRpdGluZyBiaW5hcnkgZGF0YSBpbiBTUUwgZWRpdG9yIGFuZCBkYXRhIGdy aWQuCi0gICAgICAgICAgb3B0aW9uc1snZm9ybWF0dGVyJ10gPSBTbGljay5Gb3JtYXR0ZXJzLkJp bmFyeTsKLSAgICAgICAgfSBlbHNlIGlmIChjLmNlbGwgPT0gJ2dlb21ldHJ5JyB8fCBjLmNlbGwg PT0gJ2dlb2dyYXBoeScpIHsKLSAgICAgICAgICAvLyBpbmNyZWFzZSB3aWR0aCB0byBhZGQgJ3Zp ZXcnIGJ1dHRvbgotICAgICAgICAgIG9wdGlvbnNbJ2Nhbl9lZGl0J10gPSBmYWxzZTsKLSAgICAg ICAgfSBlbHNlIHsKLSAgICAgICAgICBvcHRpb25zWydlZGl0b3InXSA9IGMuY2FuX2VkaXQgPyBT bGljay5FZGl0b3JzLnBnVGV4dCA6Ci0gICAgICAgICAgICBTbGljay5FZGl0b3JzLlJlYWRPbmx5 cGdUZXh0OwotICAgICAgICAgIG9wdGlvbnNbJ2Zvcm1hdHRlciddID0gU2xpY2suRm9ybWF0dGVy cy5UZXh0OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYoIV8uaXNVbmRlZmluZWQoYy5jYW5fZWRp dCkpIHsKLSAgICAgICAgICBsZXQgdG9vbHRpcCA9ICcnOwotICAgICAgICAgIGlmKGMuY2FuX2Vk aXQpCi0gICAgICAgICAgICB0b29sdGlwID0gZ2V0dGV4dCgnRWRpdGFibGUgY29sdW1uJyk7Ci0g ICAgICAgICAgZWxzZQotICAgICAgICAgICAgdG9vbHRpcCA9IGdldHRleHQoJ1JlYWQtb25seSBj b2x1bW4nKTsKLQotICAgICAgICAgIG9wdGlvbnNbJ3Rvb2xUaXAnXSA9IHRvb2x0aXA7Ci0gICAg ICAgIH0KLQotICAgICAgICBncmlkX2NvbHVtbnMucHVzaChvcHRpb25zKTsKLSAgICAgIH0pOwot Ci0gICAgICB2YXIgZ3JpZFNlbGVjdG9yID0gbmV3IEdyaWRTZWxlY3RvcigpOwotICAgICAgZ3Jp ZF9jb2x1bW5zID0gc2VsZi5ncmlkX2NvbHVtbnMgPSBncmlkU2VsZWN0b3IuZ2V0Q29sdW1uRGVm aW5pdGlvbnMoZ3JpZF9jb2x1bW5zKTsKLQotICAgICAgXy5lYWNoKGdyaWRfY29sdW1ucywgZnVu Y3Rpb24gKGMpIHsKLSAgICAgICAgLy8gQWRkICd2aWV3JyBidXR0b24gaW4gZ2VvbWV0cnkgYW5k IGdlb2dyYXBoeSB0eXBlIGNvbHVtbiBoZWFkZXJzCi0gICAgICAgIGlmIChjLmNvbHVtbl90eXBl X2ludGVybmFsID09ICdnZW9tZXRyeScgfHwgYy5jb2x1bW5fdHlwZV9pbnRlcm5hbCA9PSAnZ2Vv Z3JhcGh5JykgewotICAgICAgICAgIEdlb21ldHJ5Vmlld2VyLmFkZF9oZWFkZXJfYnV0dG9uKGMp OwotICAgICAgICB9Ci0gICAgICAgIC8vIEFkZCBlZGl0YWJsZS9yZWFkLW9ubHkgaWNvbiB0byBj b2x1bW5zCi0gICAgICAgIGlmICghXy5pc1VuZGVmaW5lZChjLmNhbl9lZGl0KSkgewotICAgICAg ICAgIFNxbEVkaXRvclV0aWxzLmFkZEVkaXRhYmxlSWNvbihjLCBjLmNhbl9lZGl0KTsKLSAgICAg ICAgfQotICAgICAgfSk7Ci0KLSAgICAgIGlmIChyb3dzX2FmZmVjdGVkKSB7Ci0gICAgICAgIC8v IGNhbGN1bGF0ZSB3aXRoIGZvciBoZWFkZXIgcm93IGNvbHVtbi4KLSAgICAgICAgZ3JpZF9jb2x1 bW5zWzBdWyd3aWR0aCddID0gU3FsRWRpdG9yVXRpbHMuY2FsY3VsYXRlQ29sdW1uV2lkdGgocm93 c19hZmZlY3RlZCk7Ci0gICAgICB9Ci0KLSAgICAgIHZhciBncmlkX29wdGlvbnMgPSB7Ci0gICAg ICAgIGVkaXRhYmxlOiB0cnVlLAotICAgICAgICBlbmFibGVBZGRSb3c6IGlzX2VkaXRhYmxlLAot ICAgICAgICBlbmFibGVDZWxsTmF2aWdhdGlvbjogdHJ1ZSwKLSAgICAgICAgZW5hYmxlQ29sdW1u UmVvcmRlcjogZmFsc2UsCi0gICAgICAgIGFzeW5jRWRpdG9yTG9hZGluZzogZmFsc2UsCi0gICAg ICAgIGF1dG9FZGl0OiBmYWxzZSwKLSAgICAgIH07Ci0KLSAgICAgIHZhciAkZGF0YV9ncmlkID0g JCgnI2RhdGFncmlkJyk7Ci0gICAgICAvLyBDYWxjdWxhdGUgaGVpZ2h0IGJhc2VkIG9uIHBhbmVs IHNpemUgYXQgcnVudGltZSAmIHNldCBpdAotICAgICAgdmFyIGdyaWRfaGVpZ2h0ID0gJCh0aGlz LmRhdGFfb3V0cHV0X3BhbmVsLiRjb250YWluZXIucGFyZW50KCkucGFyZW50KCkpLmhlaWdodCgp IC0gMzU7Ci0gICAgICAkZGF0YV9ncmlkLmhlaWdodChncmlkX2hlaWdodCk7Ci0KLSAgICAgIHZh ciBkYXRhVmlldyA9IHNlbGYuZGF0YVZpZXcgPSBuZXcgU2xpY2suRGF0YS5EYXRhVmlldygpLAot ICAgICAgICBncmlkID0gc2VsZi5ncmlkID0gbmV3IFNsaWNrLkdyaWQoJGRhdGFfZ3JpZCwgZGF0 YVZpZXcsIGdyaWRfY29sdW1ucywgZ3JpZF9vcHRpb25zKTsKLQotICAgICAgLy8gQWRkLW9uIGZ1 bmN0aW9uIHdoaWNoIGFsbG93IHVzIHRvIGlkZW50aWZ5IHRoZSBmYXVsdHkgcm93IGFmdGVyIGlu c2VydC91cGRhdGUKLSAgICAgIC8vIGFuZCBhcHBseSBjc3MgYWNjb3JkaW5nbHkKLQotICAgICAg ZGF0YVZpZXcuZ2V0SXRlbU1ldGFkYXRhID0gZnVuY3Rpb24ocm93cykgewotICAgICAgICB2YXIg Y3NzQ2xhc3MgPSAnJywKLSAgICAgICAgICBkYXRhX3N0b3JlID0gc2VsZi5oYW5kbGVyLmRhdGFf c3RvcmU7Ci0KLSAgICAgICAgaWYgKF8uaGFzKHNlbGYuaGFuZGxlciwgJ2RhdGFfc3RvcmUnKSkg ewotICAgICAgICAgIGlmIChyb3dzIGluIGRhdGFfc3RvcmUuYWRkZWRfaW5kZXggJiYKLSAgICAg ICAgICAgIGRhdGFfc3RvcmUuYWRkZWRfaW5kZXhbcm93c10gaW4gZGF0YV9zdG9yZS5hZGRlZCkg ewotICAgICAgICAgICAgY3NzQ2xhc3MgPSAnbmV3X3Jvdyc7Ci0gICAgICAgICAgICBpZiAoZGF0 YV9zdG9yZS5hZGRlZFtkYXRhX3N0b3JlLmFkZGVkX2luZGV4W3Jvd3NdXS5lcnIpIHsKLSAgICAg ICAgICAgICAgY3NzQ2xhc3MgKz0gJyBlcnJvcic7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg fSBlbHNlIGlmIChyb3dzIGluIGRhdGFfc3RvcmUudXBkYXRlZF9pbmRleCAmJiByb3dzIGluIGRh dGFfc3RvcmUudXBkYXRlZCkgewotICAgICAgICAgICAgY3NzQ2xhc3MgPSAndXBkYXRlZF9yb3cn OwotICAgICAgICAgICAgaWYgKGRhdGFfc3RvcmUudXBkYXRlZFtkYXRhX3N0b3JlLnVwZGF0ZWRf aW5kZXhbcm93c11dLmVycikgewotICAgICAgICAgICAgICBjc3NDbGFzcyArPSAnIGVycm9yJzsK LSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBEaXNh YmxlIHJvd3MgaGF2aW5nIGRlZmF1bHQgdmFsdWVzCi0gICAgICAgIGlmICghXy5pc1VuZGVmaW5l ZChzZWxmLmhhbmRsZXIucm93c190b19kaXNhYmxlKSAmJgotICAgICAgICAgIHNlbGYuaGFuZGxl ci5yb3dzX3RvX2Rpc2FibGUubGVuZ3RoID4gMCAmJgotICAgICAgICAgIF8uaW5kZXhPZihzZWxm LmhhbmRsZXIucm93c190b19kaXNhYmxlLCByb3dzKSAhPT0gLTEpIHsKLSAgICAgICAgICBjc3ND bGFzcyArPSAnIGRpc2FibGVkX3Jvdyc7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gewot ICAgICAgICAgICdjc3NDbGFzc2VzJzogY3NzQ2xhc3MsCi0gICAgICAgIH07Ci0gICAgICB9Owot Ci0gICAgICBncmlkLnJlZ2lzdGVyUGx1Z2luKG5ldyBTbGljay5BdXRvVG9vbHRpcHMoewotICAg ICAgICBlbmFibGVGb3JIZWFkZXJDZWxsczogZmFsc2UsCi0gICAgICB9KSk7Ci0gICAgICBncmlk LnJlZ2lzdGVyUGx1Z2luKG5ldyBBY3RpdmVDZWxsQ2FwdHVyZSgpKTsKLSAgICAgIGdyaWQuc2V0 U2VsZWN0aW9uTW9kZWwobmV3IFhDZWxsU2VsZWN0aW9uTW9kZWwoKSk7Ci0gICAgICBncmlkLnJl Z2lzdGVyUGx1Z2luKGdyaWRTZWxlY3Rvcik7Ci0gICAgICBncmlkLnJlZ2lzdGVyUGx1Z2luKG5l dyBTbGljay5BdXRvQ29sdW1uU2l6ZSgpKTsKLSAgICAgIHZhciBoZWFkZXJCdXR0b25zUGx1Z2lu ID0gbmV3IFNsaWNrLlBsdWdpbnMuSGVhZGVyQnV0dG9ucygpOwotICAgICAgaGVhZGVyQnV0dG9u c1BsdWdpbi5vbkNvbW1hbmQuc3Vic2NyaWJlKGZ1bmN0aW9uIChlLCBhcmdzKSB7Ci0gICAgICAg IGxldCBjb21tYW5kID0gYXJncy5jb21tYW5kOwotICAgICAgICBpZiAoY29tbWFuZCA9PT0gJ3Zp ZXctZ2VvbWV0cmllcycpIHsKLSAgICAgICAgICBsZXQgY29scyA9IGFyZ3MuZ3JpZC5nZXRDb2x1 bW5zKCk7Ci0gICAgICAgICAgbGV0IGNvbHVtbkluZGV4ID0gY29scy5pbmRleE9mKGFyZ3MuY29s dW1uKTsKLSAgICAgICAgICBsZXQgc2VsZWN0ZWRSb3dzID0gYXJncy5ncmlkLmdldFNlbGVjdGVk Um93cygpOwotICAgICAgICAgIGlmIChzZWxlY3RlZFJvd3MubGVuZ3RoID09PSAwKSB7Ci0gICAg ICAgICAgICAvLyBpZiBubyByb3dzIGFyZSBzZWxlY3RlZCwgbG9hZCBhbmQgcmVuZGVyIGFsbCB0 aGUgcm93cwotICAgICAgICAgICAgaWYgKHNlbGYuaGFuZGxlci5oYXNfbW9yZV9yb3dzKSB7Ci0g ICAgICAgICAgICAgIHNlbGYuZmV0Y2hfbmV4dF9hbGwoZnVuY3Rpb24gKCkgewotICAgICAgICAg ICAgICAgIC8vIHRyaWdnZXIgb25HcmlkU2VsZWN0QWxsIG1hbnVhbGx5IHdpdGggbmV3IGV2ZW50 IGRhdGEuCi0gICAgICAgICAgICAgICAgZ3JpZFNlbGVjdG9yLm9uR3JpZFNlbGVjdEFsbC5ub3Rp ZnkoYXJncywgbmV3IFNsaWNrLkV2ZW50RGF0YSgpKTsKLSAgICAgICAgICAgICAgICBsZXQgaXRl bXMgPSBhcmdzLmdyaWQuZ2V0RGF0YSgpLmdldEl0ZW1zKCk7Ci0gICAgICAgICAgICAgICAgR2Vv bWV0cnlWaWV3ZXIucmVuZGVyX2dlb21ldHJpZXMoc2VsZi5oYW5kbGVyLCBpdGVtcywgY29scywg Y29sdW1uSW5kZXgpOwotICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0g ICAgICAgICAgICAgIGdyaWRTZWxlY3Rvci5vbkdyaWRTZWxlY3RBbGwubm90aWZ5KGFyZ3MsIG5l dyBTbGljay5FdmVudERhdGEoKSk7Ci0gICAgICAgICAgICAgIGxldCBpdGVtcyA9IGFyZ3MuZ3Jp ZC5nZXREYXRhKCkuZ2V0SXRlbXMoKTsKLSAgICAgICAgICAgICAgR2VvbWV0cnlWaWV3ZXIucmVu ZGVyX2dlb21ldHJpZXMoc2VsZi5oYW5kbGVyLCBpdGVtcywgY29scywgY29sdW1uSW5kZXgpOwot ICAgICAgICAgICAgfQotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyByZW5kZXIg c2VsZWN0ZWQgcm93cwotICAgICAgICAgICAgbGV0IGl0ZW1zID0gYXJncy5ncmlkLmdldERhdGEo KS5nZXRJdGVtcygpOwotICAgICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbXMgPSBfLm1hcChzZWxl Y3RlZFJvd3MsIGZ1bmN0aW9uIChyb3cpIHsKLSAgICAgICAgICAgICAgcmV0dXJuIGl0ZW1zW3Jv d107Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIEdlb21ldHJ5Vmlld2VyLnJlbmRlcl9n ZW9tZXRyaWVzKHNlbGYuaGFuZGxlciwgc2VsZWN0ZWRJdGVtcywgY29scywgY29sdW1uSW5kZXgp OwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgICBncmlkLnJlZ2lzdGVy UGx1Z2luKGhlYWRlckJ1dHRvbnNQbHVnaW4pOwotCi0gICAgICB2YXIgZWRpdG9yX2RhdGEgPSB7 Ci0gICAgICAgIGtleXM6IChfLmlzRW1wdHkoc2VsZi5oYW5kbGVyLnByaW1hcnlfa2V5cykgJiYg c2VsZi5oYW5kbGVyLmhhc19vaWRzKSA/IHNlbGYuaGFuZGxlci5vaWRzIDogc2VsZi5oYW5kbGVy LnByaW1hcnlfa2V5cywKLSAgICAgICAgdmFsczogY29sbGVjdGlvbiwKLSAgICAgICAgY29sdW1u czogY29sdW1ucywKLSAgICAgICAgZ3JpZDogZ3JpZCwKLSAgICAgICAgc2VsZWN0aW9uOiBncmlk LmdldFNlbGVjdGlvbk1vZGVsKCksCi0gICAgICAgIGVkaXRvcjogc2VsZiwKLSAgICAgICAgY2xp ZW50X3ByaW1hcnlfa2V5OiBzZWxmLmNsaWVudF9wcmltYXJ5X2tleSwKLSAgICAgICAgaGFzX29p ZHM6IHNlbGYuaGFuZGxlci5oYXNfb2lkcywKLSAgICAgIH07Ci0KLSAgICAgIHNlbGYuaGFuZGxl ci5zbGlja2dyaWQgPSBncmlkOwotICAgICAgLy8gQWRkIGxpc3RlbmVyIG9uIGRhdGEtZ3JpZCB0 YWJsZSBzY3JvbGwuCi0gICAgICBzZWxmLmhhbmRsZXIuc2xpY2tncmlkLm9uU2Nyb2xsLnN1YnNj cmliZShmdW5jdGlvbigpIHsKLSAgICAgICAgLy8gTWFyayBzZWxlY3RlZCByb3dzIGNlbGxzIGFz IHNlbGVjdGVkLgotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAvLyBDYW4n dCB1c2Ugc2V0U2VsZWN0ZWRSb3dzIGFzIHdlIGFyZSB1c2luZyBjZWxsU2VsZWN0aW9uTW9kZWwu Ci0gICAgICAgICAgdmFyIGNlbGxTZWxlY3Rpb25Nb2RlbCA9IHNlbGYuaGFuZGxlci5ncmlkVmll dy5ncmlkLmdldFNlbGVjdGlvbk1vZGVsKCk7Ci0gICAgICAgICAgdmFyIHJhbmdlcyA9IGNlbGxT ZWxlY3Rpb25Nb2RlbC5nZXRTZWxlY3RlZFJhbmdlcygpOwotCi0gICAgICAgICAgaWYgKHJhbmdl cy5sZW5ndGggPiAxKSB7Ci0gICAgICAgICAgICAvLyBTZXQgc2VsZWN0ZWQgcm93cyBjZWxsIGFz IHNlbGVjdGVkLgotICAgICAgICAgICAgY2VsbFNlbGVjdGlvbk1vZGVsLnNldFNlbGVjdGVkUmFu Z2VzKHJhbmdlcyk7Ci0gICAgICAgICAgfQotICAgICAgICB9LCAxMDApOwotCi0gICAgICAgIGlm KE9iamVjdC5rZXlzKHNlbGYuaGFuZGxlci5kYXRhX3N0b3JlLmRlbGV0ZWQpLmxlbmd0aCA+IDAp IHsKLSAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAgICQoc2VsZi5oYW5k bGVyLmdyaWRWaWV3LmdyaWQuZ2V0Q2FudmFzTm9kZSgpKS5maW5kKCdkaXYuc2VsZWN0ZWQnKS5y ZW1vdmVDbGFzcygnc3RyaWtlb3V0Jyk7Ci0gICAgICAgICAgICAkKHNlbGYuaGFuZGxlci5ncmlk Vmlldy5ncmlkLmdldENhbnZhc05vZGUoKSkuZmluZCgnZGl2LnNlbGVjdGVkJykuYWRkQ2xhc3Mo J3N0cmlrZW91dCcpOwotICAgICAgICAgIH0sIDEwMCk7Ci0gICAgICAgIH0KLSAgICAgIH0pOwot ICAgICAgc2VsZi5oYW5kbGVyLnNsaWNrZ3JpZC5DU1ZPcHRpb25zID0gewotICAgICAgICBxdW90 aW5nOiBzZWxmLnByZWZlcmVuY2VzLnJlc3VsdHNfZ3JpZF9xdW90aW5nLAotICAgICAgICBxdW90 ZV9jaGFyOiBzZWxmLnByZWZlcmVuY2VzLnJlc3VsdHNfZ3JpZF9xdW90ZV9jaGFyLAotICAgICAg ICBmaWVsZF9zZXBhcmF0b3I6IHNlbGYucHJlZmVyZW5jZXMucmVzdWx0c19ncmlkX2ZpZWxkX3Nl cGFyYXRvciwKLSAgICAgIH07Ci0KLSAgICAgIC8vIExpc3RlbmVyIGZ1bmN0aW9uIHRvIHdhdGNo IHNlbGVjdGVkIHJvd3MgZnJvbSBncmlkCi0gICAgICBpZiAoZWRpdG9yX2RhdGEuc2VsZWN0aW9u KSB7Ci0gICAgICAgIGVkaXRvcl9kYXRhLnNlbGVjdGlvbi5vblNlbGVjdGVkUmFuZ2VzQ2hhbmdl ZC5zdWJzY3JpYmUoCi0gICAgICAgICAgc2V0U3RhZ2VkUm93cy5iaW5kKGVkaXRvcl9kYXRhKSk7 Ci0gICAgICB9Ci0KLSAgICAgIGdyaWQub25Db2x1bW5zUmVzaXplZC5zdWJzY3JpYmUoZnVuY3Rp b24oKSB7Ci0gICAgICAgIHZhciBjb2xzID0gdGhpcy5nZXRDb2x1bW5zKCk7Ci0gICAgICAgIF8u ZWFjaChjb2xzLCBmdW5jdGlvbihjb2wpIHsKLSAgICAgICAgICB2YXIgY29sX3NpemUgPSBzZWxm LmhhbmRsZXJbJ2NvbF9zaXplJ107Ci0gICAgICAgICAgY29sX3NpemVbc2VsZi5oYW5kbGVyWyd0 YWJsZV9uYW1lJ11dW2NvbFsnbm9uYXRpdmVfZmllbGQnXV0gPSBjb2xbJ3dpZHRoJ107Ci0gICAg ICAgIH0pOwotICAgICAgfS5iaW5kKGdyaWQpKTsKLQotICAgICAgZ3JpZFNlbGVjdG9yLm9uQmVm b3JlR3JpZFNlbGVjdEFsbC5zdWJzY3JpYmUoZnVuY3Rpb24oZSwgYXJncykgewotICAgICAgICBp ZiAoc2VsZi5oYW5kbGVyLmhhc19tb3JlX3Jvd3MpIHsKLSAgICAgICAgICAvLyB0aGlzIHdpbGwg cHJldmVudCBzZWxlY3Rpb24gdW4tdGlsbCB3ZSBsb2FkIGFsbCBkYXRhCi0gICAgICAgICAgZS5z dG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKLSAgICAgICAgICBzZWxmLmZldGNoX25leHRfYWxs KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgLy8gc2luY2Ugd2UndmUgc3RvcHBlZCBldmVudCBw cm9wYWdhdGlvbiB3ZSBuZWVkIHRvCi0gICAgICAgICAgICAvLyB0cmlnZ2VyIG9uR3JpZFNlbGVj dEFsbCBtYW51YWxseSB3aXRoIG5ldyBldmVudCBkYXRhLgotICAgICAgICAgICAgZ3JpZFNlbGVj dG9yLm9uR3JpZFNlbGVjdEFsbC5ub3RpZnkoYXJncywgbmV3IFNsaWNrLkV2ZW50RGF0YSgpKTsK LSAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICAgIGdyaWRTZWxlY3Rv ci5vbkJlZm9yZUdyaWRDb2x1bW5TZWxlY3RBbGwuc3Vic2NyaWJlKGZ1bmN0aW9uKGUsIGFyZ3Mp IHsKLSAgICAgICAgaWYgKHNlbGYuaGFuZGxlci5oYXNfbW9yZV9yb3dzKSB7Ci0gICAgICAgICAg Ly8gdGhpcyB3aWxsIHByZXZlbnQgc2VsZWN0aW9uIHVuLXRpbGwgd2UgbG9hZCBhbGwgZGF0YQot ICAgICAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7Ci0gICAgICAgICAgc2VsZi5m ZXRjaF9uZXh0X2FsbChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIC8vIHNpbmNlIHdlJ3ZlIHN0 b3BwZWQgZXZlbnQgcHJvcGFnYXRpb24gd2UgbmVlZCB0bwotICAgICAgICAgICAgLy8gdHJpZ2dl ciBvbkdyaWRDb2x1bW5TZWxlY3RBbGwgbWFudWFsbHkgd2l0aCBuZXcgZXZlbnQgZGF0YS4KLSAg ICAgICAgICAgIGdyaWRTZWxlY3Rvci5vbkdyaWRDb2x1bW5TZWxlY3RBbGwubm90aWZ5KGFyZ3Ms IG5ldyBTbGljay5FdmVudERhdGEoKSk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAg IH0pOwotCi0gICAgICAvLyBsaXN0ZW4gZm9yIHJvdyBjb3VudCBjaGFuZ2UuCi0gICAgICBkYXRh Vmlldy5vblJvd0NvdW50Q2hhbmdlZC5zdWJzY3JpYmUoZnVuY3Rpb24oKSB7Ci0gICAgICAgIGdy aWQudXBkYXRlUm93Q291bnQoKTsKLSAgICAgICAgZ3JpZC5yZW5kZXIoKTsKLSAgICAgIH0pOwot Ci0gICAgICAvLyBsaXN0ZW4gZm9yIHJvd3MgY2hhbmdlLgotICAgICAgZGF0YVZpZXcub25Sb3dz Q2hhbmdlZC5zdWJzY3JpYmUoZnVuY3Rpb24oZSwgYXJncykgewotICAgICAgICBncmlkLmludmFs aWRhdGVSb3dzKGFyZ3Mucm93cyk7Ci0gICAgICAgIGdyaWQucmVuZGVyKCk7Ci0gICAgICAgIC8v IFJlc2l6ZSBhbGwgY29sdW1ucyBpZiBjb2x1bW5fZGF0YV9hdXRvX3Jlc2l6ZSBpcyAnYnlfZGF0 YScuCi0gICAgICAgIGlmIChzZWxmLnByZWZlcmVuY2VzLmNvbHVtbl9kYXRhX2F1dG9fcmVzaXpl ID09PSAnYnlfZGF0YScpIHsKLSAgICAgICAgICBncmlkLnJlc2l6ZUFsbENvbHVtbnMgJiYgZ3Jp ZC5yZXNpemVBbGxDb2x1bW5zKHNlbGYucHJlZmVyZW5jZXMuY29sdW1uX2RhdGFfbWF4X3dpZHRo LCBzZWxmLm1heF93aWR0aF9jaGFuZ2VkKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICAg IC8vIExpc3RlbmVyIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB1c2VyIHVw ZGF0ZXMgZXhpc3RpbmcgY2VsbAotICAgICAgLy8gVGhpcyB3aWxsIGJlIHVzZWQgdG8gY29sbGVj dCBwcmltYXJ5IGtleSBmb3IgdGhhdCByb3cKLSAgICAgIGdyaWQub25CZWZvcmVFZGl0Q2VsbC5z dWJzY3JpYmUoZnVuY3Rpb24oZSwgYXJncykgewotICAgICAgICBpZiAoYXJncy5jb2x1bW4uY29s dW1uX3R5cGVfaW50ZXJuYWwgPT0gJ2J5dGVhJyB8fAotICAgICAgICAgIGFyZ3MuY29sdW1uLmNv bHVtbl90eXBlX2ludGVybmFsID09ICdieXRlYVtdJykgewotICAgICAgICAgIHJldHVybiBmYWxz ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBiZWZvcmVfZGF0YSA9IGFyZ3MuaXRlbTsKLQot ICAgICAgICAvLyBJZiBuZXdseSBhZGRlZCByb3cgaXMgc2F2ZWQgYnV0IGdyaWQgaXMgbm90IHJl ZnJlc2hlZCwKLSAgICAgICAgLy8gdGhlbiBkaXNhYmxlIGNlbGwgZWRpdGluZyBmb3IgdGhhdCBy b3cKLSAgICAgICAgaWYgKHNlbGYuaGFuZGxlci5yb3dzX3RvX2Rpc2FibGUgJiYKLSAgICAgICAg ICBfLmNvbnRhaW5zKHNlbGYuaGFuZGxlci5yb3dzX3RvX2Rpc2FibGUsIGFyZ3Mucm93KSkgewot ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzZWxmLmhh bmRsZXIuY2FuX2VkaXQgJiYgYmVmb3JlX2RhdGEgJiYgc2VsZi5jbGllbnRfcHJpbWFyeV9rZXkg aW4gYmVmb3JlX2RhdGEpIHsKLSAgICAgICAgICB2YXIgX3BrID0gYmVmb3JlX2RhdGFbc2VsZi5j bGllbnRfcHJpbWFyeV9rZXldLAotICAgICAgICAgICAgX2tleXMgPSBzZWxmLmhhbmRsZXIucHJp bWFyeV9rZXlzLAotICAgICAgICAgICAgY3VycmVudF9wayA9IHt9OwotCi0gICAgICAgICAgLy8g SWYgYWxyZWFkeSBoYXZlIHByaW1hcnkga2V5IGRhdGEgdGhlbiBubyBuZWVkIHRvIGdvIGFoZWFk Ci0gICAgICAgICAgaWYgKF9wayBpbiBzZWxmLmhhbmRsZXIucHJpbWFyeV9rZXlzX2RhdGEpIHsK LSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBGZXRjaCBw cmltYXJ5IGtleXMgZm9yIHRoZSByb3cgYmVmb3JlIHRoZXkgZ2V0cyBtb2RpZmllZAotICAgICAg ICAgIF8uZWFjaChfa2V5cywgZnVuY3Rpb24odmFsdWUsIGtleSkgewotICAgICAgICAgICAgY3Vy cmVudF9wa1trZXldID0gYmVmb3JlX2RhdGFba2V5XTsKLSAgICAgICAgICB9KTsKLSAgICAgICAg ICAvLyBQbGFjZSBpdCBpbiBtYWluIHZhcmlhYmxlIGZvciBsYXRlciB1c2UKLSAgICAgICAgICBz ZWxmLmhhbmRsZXIucHJpbWFyeV9rZXlzX2RhdGFbX3BrXSA9IGN1cnJlbnRfcGs7Ci0gICAgICAg IH0KLSAgICAgIH0pOwotCi0gICAgICBncmlkLm9uS2V5RG93bi5zdWJzY3JpYmUoZnVuY3Rpb24o ZXZlbnQsIGFyZ3MpIHsKLSAgICAgICAgdmFyIEtFWV9BID0gNjU7Ci0gICAgICAgIHZhciBtb2Rp ZmllZEtleSA9IGV2ZW50LmtleUNvZGU7Ci0gICAgICAgIHZhciBpc01vZGlmaWVyRG93biA9IGV2 ZW50LmN0cmxLZXkgfHwgZXZlbnQubWV0YUtleTsKLSAgICAgICAgLy8gSW50ZXJjZXB0IEN0cmwv Q21kICsgQSBrZXkgYm9hcmQgZXZlbnQuCi0gICAgICAgIC8vIEFzIHdlIG1pZ2h0IHdhbnQgdG8g bG9hZCBhbGwgcm93cyBiZWZvcmUgc2VsZWN0aW5nIGFsbC4KLSAgICAgICAgaWYgKGlzTW9kaWZp ZXJEb3duICYmIG1vZGlmaWVkS2V5ID09IEtFWV9BICYmIHNlbGYuaGFuZGxlci5oYXNfbW9yZV9y b3dzKSB7Ci0gICAgICAgICAgc2VsZi5mZXRjaF9uZXh0X2FsbChmdW5jdGlvbigpIHsKLSAgICAg ICAgICAgIGhhbmRsZVF1ZXJ5T3V0cHV0S2V5Ym9hcmRFdmVudChldmVudCwgYXJncyk7Ci0gICAg ICAgICAgfSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgaGFuZGxlUXVlcnlPdXRwdXRL ZXlib2FyZEV2ZW50KGV2ZW50LCBhcmdzKTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICAg IC8vIEhhbmRsZXMgYmx1ciBldmVudCBmb3Igc2xpY2sgZ3JpZCBjZWxsCi0gICAgICAkKCcuc2xp Y2stdmlld3BvcnQnKS5vbignYmx1cicsICdpbnB1dC5lZGl0b3ItdGV4dCcsIGZ1bmN0aW9uICgp IHsKLSAgICAgICAgd2luZG93LnNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgaWYg KFNsaWNrLkdsb2JhbEVkaXRvckxvY2suaXNBY3RpdmUoKSkKLSAgICAgICAgICAgIFNsaWNrLkds b2JhbEVkaXRvckxvY2suY29tbWl0Q3VycmVudEVkaXQoKTsKLSAgICAgICAgfSk7Ci0gICAgICB9 KTsKLQotICAgICAgLy8gTGlzdGVuZXIgZnVuY3Rpb24gd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2hl biB1c2VyIHVwZGF0ZXMgZXhpc3Rpbmcgcm93cwotICAgICAgZ3JpZC5vbkNlbGxDaGFuZ2Uuc3Vi c2NyaWJlKGZ1bmN0aW9uKGUsIGFyZ3MpIHsKLSAgICAgICAgLy8gc2VsZi5oYW5kbGVyLmRhdGFf c3RvcmUudXBkYXRlZCB3aWxsIGhvbGRzIGFsbCB0aGUgdXBkYXRlZCBkYXRhCi0gICAgICAgIHZh ciBjaGFuZ2VkX2NvbHVtbiA9IGFyZ3MuZ3JpZC5nZXRDb2x1bW5zKClbYXJncy5jZWxsXS5maWVs ZCwKLSAgICAgICAgICB1cGRhdGVkX2RhdGEgPSBhcmdzLml0ZW1bY2hhbmdlZF9jb2x1bW5dLCAv LyBOZXcgdmFsdWUgZm9yIGN1cnJlbnQgZmllbGQKLSAgICAgICAgICBfcGsgPSBhcmdzLml0ZW1b c2VsZi5jbGllbnRfcHJpbWFyeV9rZXldIHx8IG51bGwsIC8vIFVuaXF1ZSBrZXkgdG8gaWRlbnRp Znkgcm93Ci0gICAgICAgICAgY29sdW1uX2RhdGEgPSB7fTsKLQotICAgICAgICAvLyBIaWdobGln aHQgdGhlIGNoYW5nZWQgY2VsbAotICAgICAgICBzZWxmLmhhbmRsZXIubnVtYmVyT2ZNb2RpZmll ZENlbGxzKys7Ci0gICAgICAgIGFyZ3MuZ3JpZC5hZGRDZWxsQ3NzU3R5bGVzKHNlbGYuaGFuZGxl ci5udW1iZXJPZk1vZGlmaWVkQ2VsbHMsIHsKLSAgICAgICAgICBbYXJncy5yb3ddIDogewotICAg ICAgICAgICAgW2NoYW5nZWRfY29sdW1uXTogJ2hpZ2hsaWdodGVkX2dyaWRfY2VsbHMnLAotICAg ICAgICAgIH0sCi0gICAgICAgIH0pOwotCi0gICAgICAgIC8vIEFjY2VzcyB0byByb3cvY2VsbCB2 YWx1ZSBhZnRlciBhIGNlbGwgaXMgY2hhbmdlZC4KLSAgICAgICAgLy8gVGhlIHB1cnBvc2UgaXMg dG8gcmVtb3ZlIHJvd19pZCBmcm9tIHRlbXBfbmV3X3JvdwotICAgICAgICAvLyBpZiBuZXcgcm93 IGhhcyBwcmltYXJ5IGtleSBpbnN0ZWFkIG9mIFtkZWZhdWx0X3ZhbHVlXQotICAgICAgICAvLyBz byB0aGF0IGNlbGwgZWRpdCBpcyBlbmFibGVkIGZvciB0aGF0IHJvdy4KLSAgICAgICAgdmFyIGdy aWRfZWRpdCA9IGFyZ3MuZ3JpZCwKLSAgICAgICAgICByb3dfZGF0YSA9IGdyaWRfZWRpdC5nZXRE YXRhSXRlbShhcmdzLnJvdyksCi0gICAgICAgICAgaXNfcHJpbWFyeV9rZXkgPSBzZWxmLnByaW1h cnlfa2V5cyAmJgotICAgICAgICAgIF8uYWxsKAotICAgICAgICAgICAgXy52YWx1ZXMoCi0gICAg ICAgICAgICAgIF8ucGljaygKLSAgICAgICAgICAgICAgICByb3dfZGF0YSwgc2VsZi5wcmltYXJ5 X2tleXMKLSAgICAgICAgICAgICAgKQotICAgICAgICAgICAgKSwKLSAgICAgICAgICAgIGZ1bmN0 aW9uKHZhbCkgewotICAgICAgICAgICAgICByZXR1cm4gdmFsICE9IHVuZGVmaW5lZDsKLSAgICAg ICAgICAgIH0KLSAgICAgICAgICApOwotCi0gICAgICAgIC8vIHRlbXBfbmV3X3Jvd3MgaXMgYXZh aWxhYmxlIG9ubHkgZm9yIHZpZXcgZGF0YS4KLSAgICAgICAgaWYgKGlzX3ByaW1hcnlfa2V5ICYm IHNlbGYuaGFuZGxlci50ZW1wX25ld19yb3dzKSB7Ci0gICAgICAgICAgdmFyIGluZGV4ID0gc2Vs Zi5oYW5kbGVyLnRlbXBfbmV3X3Jvd3MuaW5kZXhPZihhcmdzLnJvdyk7Ci0gICAgICAgICAgaWYg KGluZGV4ID4gLTEpIHsKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlci50ZW1wX25ld19yb3dzLnNw bGljZShpbmRleCwgMSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgY29sdW1u X2RhdGFbY2hhbmdlZF9jb2x1bW5dID0gdXBkYXRlZF9kYXRhOwotCi0KLSAgICAgICAgaWYgKF9w aykgewotICAgICAgICAgIC8vIENoZWNrIGlmIGl0IGlzIGluIG5ld2x5IGFkZGVkIHJvdyBieSB1 c2VyPwotICAgICAgICAgIGlmIChfcGsgaW4gc2VsZi5oYW5kbGVyLmRhdGFfc3RvcmUuYWRkZWQp IHsKLSAgICAgICAgICAgIF8uZXh0ZW5kKAotICAgICAgICAgICAgICBzZWxmLmhhbmRsZXIuZGF0 YV9zdG9yZS5hZGRlZFtfcGtdWydkYXRhJ10sCi0gICAgICAgICAgICAgIGNvbHVtbl9kYXRhKTsK LSAgICAgICAgICAgIC8vRmluZCB0eXBlIGZvciBjdXJyZW50IGNvbHVtbgotICAgICAgICAgICAg c2VsZi5oYW5kbGVyLmRhdGFfc3RvcmUuYWRkZWRbX3BrXVsnZXJyJ10gPSBmYWxzZTsKLSAgICAg ICAgICAgIC8vIENoZWNrIGlmIGl0IGlzIHVwZGF0ZWQgZGF0YSBmcm9tIGV4aXN0aW5nIHJvd3M/ Ci0gICAgICAgICAgfSBlbHNlIGlmIChfcGsgaW4gc2VsZi5oYW5kbGVyLmRhdGFfc3RvcmUudXBk YXRlZCkgewotICAgICAgICAgICAgXy5leHRlbmQoCi0gICAgICAgICAgICAgIHNlbGYuaGFuZGxl ci5kYXRhX3N0b3JlLnVwZGF0ZWRbX3BrXVsnZGF0YSddLAotICAgICAgICAgICAgICBjb2x1bW5f ZGF0YQotICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlci5kYXRhX3N0b3Jl LnVwZGF0ZWRbX3BrXVsnZXJyJ10gPSBmYWxzZTsKLSAgICAgICAgICB9IGVsc2UgewotICAgICAg ICAgICAgLy8gRmlyc3QgdXBkYXRlZCBkYXRhIGZvciB0aGlzIHByaW1hcnkga2V5Ci0gICAgICAg ICAgICBzZWxmLmhhbmRsZXIuZGF0YV9zdG9yZS51cGRhdGVkW19wa10gPSB7Ci0gICAgICAgICAg ICAgICdlcnInOiBmYWxzZSwKLSAgICAgICAgICAgICAgJ2RhdGEnOiBjb2x1bW5fZGF0YSwKLSAg ICAgICAgICAgICAgJ3ByaW1hcnlfa2V5cyc6IHNlbGYuaGFuZGxlci5wcmltYXJ5X2tleXNfZGF0 YVtfcGtdLAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIHNlbGYuaGFuZGxlci5kYXRhX3N0 b3JlLnVwZGF0ZWRfaW5kZXhbYXJncy5yb3ddID0gX3BrOwotICAgICAgICAgIH0KLSAgICAgICAg fQotICAgICAgICAvLyBFbmFibGUgc2F2ZSBidXR0b24KLSAgICAgICAgJCgnI2J0bi1zYXZlLWRh dGEnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKLSAgICAgIH0uYmluZChlZGl0b3JfZGF0YSkp OwotCi0gICAgICAvLyBMaXN0ZW5lciBmdW5jdGlvbiB3aGljaCB3aWxsIGJlIGNhbGxlZCB3aGVu IHVzZXIgYWRkcyBuZXcgcm93cwotICAgICAgZ3JpZC5vbkFkZE5ld1Jvdy5zdWJzY3JpYmUoZnVu Y3Rpb24oZSwgYXJncykgewotICAgICAgICAvLyBzZWxmLmhhbmRsZXIuZGF0YV9zdG9yZS5hZGRl ZCB3aWxsIGhvbGRzIGFsbCB0aGUgbmV3bHkgYWRkZWQgcm93cy9kYXRhCi0gICAgICAgIHZhciBj b2x1bW4gPSBhcmdzLmNvbHVtbiwKLSAgICAgICAgICBpdGVtX2N1cnJlbnQgPSBhcmdzLml0ZW0s Ci0gICAgICAgICAgZGF0YV9sZW5ndGggPSB0aGlzLmdyaWQuZ2V0RGF0YUxlbmd0aCgpLAotICAg ICAgICAgIF9rZXkgPSAoc2VsZi5jbGllbnRfcHJpbWFyeV9rZXlfY291bnRlcisrKS50b1N0cmlu ZygpLAotICAgICAgICAgIGRhdGFfdmlldyA9IHRoaXMuZ3JpZC5nZXREYXRhKCk7Ci0KLSAgICAg ICAgLy8gQWRkIG5ldyByb3cgaW4gbGlzdCB0byBrZWVwIHRyYWNrIG9mIGl0Ci0gICAgICAgIGlm IChfLmlzVW5kZWZpbmVkKGl0ZW1fY3VycmVudFswXSkpIHsKLSAgICAgICAgICBzZWxmLmhhbmRs ZXIudGVtcF9uZXdfcm93cy5wdXNoKGRhdGFfbGVuZ3RoKTsKLSAgICAgICAgfQotCi0gICAgICAg IC8vIElmIGNvcGllZCBpdGVtIGhhcyBhbHJlYWR5IHByaW1hcnkga2V5LCB1c2UgaXQuCi0gICAg ICAgIGlmIChpdGVtX2N1cnJlbnQpIHsKLSAgICAgICAgICBpdGVtX2N1cnJlbnRbc2VsZi5jbGll bnRfcHJpbWFyeV9rZXldID0gX2tleTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFdoZW4gYWRk aW5nIG5ldyByb3dzLCBtYXJrIGFsbCBuYXRpdmUgSlMga2V5d29yZHMgdW5kZWZpbmVkIGlmIG5v dCBhbHJlYWR5IHNldAotICAgICAgICBfLmVhY2goYXJncy5ncmlkLmdldENvbHVtbnMoKSwgZnVu Y3Rpb24oY29sKXsKLSAgICAgICAgICBpZihpc05hdGl2ZShpdGVtX2N1cnJlbnRbY29sLmZpZWxk XSkpIHsKLSAgICAgICAgICAgIGl0ZW1fY3VycmVudFtjb2wuZmllbGRdID0gdW5kZWZpbmVkOwot ICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGF0YV92aWV3LmFkZEl0ZW0oaXRl bV9jdXJyZW50KTsKLSAgICAgICAgc2VsZi5oYW5kbGVyLmRhdGFfc3RvcmUuYWRkZWRbX2tleV0g PSB7Ci0gICAgICAgICAgJ2Vycic6IGZhbHNlLAotICAgICAgICAgICdkYXRhJzogaXRlbV9jdXJy ZW50LAotICAgICAgICB9OwotICAgICAgICBzZWxmLmhhbmRsZXIuZGF0YV9zdG9yZS5hZGRlZF9p bmRleFtkYXRhX2xlbmd0aF0gPSBfa2V5OwotCi0gICAgICAgIC8vIEZldGNoIGRhdGEgdHlwZSAm IGFkZCBpdCBmb3IgdGhlIGNvbHVtbgotICAgICAgICB2YXIgdGVtcCA9IHt9OwotICAgICAgICB0 ZW1wW2NvbHVtbi5uYW1lXSA9IF8ud2hlcmUodGhpcy5jb2x1bW5zLCB7Ci0gICAgICAgICAgcG9z OiBjb2x1bW4ucG9zLAotICAgICAgICB9KVswXVsndHlwZSddOwotICAgICAgICBncmlkLnVwZGF0 ZVJvd0NvdW50KCk7Ci0gICAgICAgIGdyaWQucmVuZGVyKCk7Ci0KLSAgICAgICAgLy8gSGlnaGxp Z2h0IHRoZSBmaXJzdCBhZGRlZCBjZWxsIG9mIHRoZSBuZXcgcm93Ci0gICAgICAgIHZhciByb3cg PSBkYXRhX3ZpZXcuZ2V0Um93QnlJdGVtKGl0ZW1fY3VycmVudCk7Ci0gICAgICAgIHNlbGYuaGFu ZGxlci5udW1iZXJPZk1vZGlmaWVkQ2VsbHMrKzsKLSAgICAgICAgYXJncy5ncmlkLmFkZENlbGxD c3NTdHlsZXMoc2VsZi5oYW5kbGVyLm51bWJlck9mTW9kaWZpZWRDZWxscywgewotICAgICAgICAg IFtyb3ddIDogewotICAgICAgICAgICAgW2NvbHVtbi5maWVsZF06ICdoaWdobGlnaHRlZF9ncmlk X2NlbGxzJywKLSAgICAgICAgICB9LAotICAgICAgICB9KTsKLQotICAgICAgICAvLyBFbmFibGUg c2F2ZSBidXR0b24KLSAgICAgICAgJCgnI2J0bi1zYXZlLWRhdGEnKS5wcm9wKCdkaXNhYmxlZCcs IGZhbHNlKTsKLSAgICAgIH0uYmluZChlZGl0b3JfZGF0YSkpOwotCi0gICAgICAvLyBMaXN0ZW4g Z3JpZCB2aWV3cG9ydENoYW5nZWQgZXZlbnQgdG8gbG9hZCBuZXh0IGNodW5rIG9mIGRhdGEuCi0g ICAgICBncmlkLm9uVmlld3BvcnRDaGFuZ2VkLnN1YnNjcmliZShmdW5jdGlvbihlLCBhcmdzKSB7 Ci0gICAgICAgIHZhciByZW5kZXJlZF9yYW5nZSA9IGFyZ3MuZ3JpZC5nZXRSZW5kZXJlZFJhbmdl KCksCi0gICAgICAgICAgZGF0YV9sZW4gPSBhcmdzLmdyaWQuZ2V0RGF0YUxlbmd0aCgpOwotICAg ICAgICAvLyBzdGFydCBmZXRjaGluZyBuZXh0IGJhdGNoIG9mIHJlY29yZHMgYmVmb3JlIHJlYWNo aW5nIHRvIGJvdHRvbS4KLSAgICAgICAgaWYgKHNlbGYuaGFuZGxlci5oYXNfbW9yZV9yb3dzICYm ICFzZWxmLmhhbmRsZXIuZmV0Y2hpbmdfcm93cyAmJiByZW5kZXJlZF9yYW5nZS5ib3R0b20gPiBk YXRhX2xlbiAtIDEwMCkgewotICAgICAgICAgIC8vIGZldGNoIGFzeW5jaHJvbm91cwotICAgICAg ICAgIHNldFRpbWVvdXQoc2VsZi5mZXRjaF9uZXh0LmJpbmQoc2VsZikpOwotICAgICAgICB9Ci0g ICAgICB9KTsKLQotICAgICAgZ3JpZC5vblZhbGlkYXRpb25FcnJvci5zdWJzY3JpYmUoZnVuY3Rp b24gKGUsIGFyZ3MpIHsKLSAgICAgICAgTm90aWZ5LmVycm9yKGFyZ3MudmFsaWRhdGlvblJlc3Vs dHMubXNnKTsKLSAgICAgIH0pOwotCi0gICAgICAvLyBSZXNpemUgU2xpY2tHcmlkIHdoZW4gd2lu ZG93IHJlc2l6ZQotICAgICAgJCh3aW5kb3cpLnJlc2l6ZShmdW5jdGlvbigpIHsKLSAgICAgICAg Ly8gUmVzaXplIGdyaWQgb25seSB3aGVuICdEYXRhIE91dHB1dCcgcGFuZWwgaXMgdmlzaWJsZS4K LSAgICAgICAgaWYgKHNlbGYuZGF0YV9vdXRwdXRfcGFuZWwuaXNWaXNpYmxlKCkpIHsKLSAgICAg ICAgICBzZWxmLmdyaWRfcmVzaXplKGdyaWQpOwotICAgICAgICB9Ci0gICAgICB9KTsKLQotICAg ICAgLy8gUmVzaXplIFNsaWNrR3JpZCB3aGVuIG91dHB1dCBQYW5lbCByZXNpemUKLSAgICAgIHNl bGYuZGF0YV9vdXRwdXRfcGFuZWwub24od2NEb2NrZXIuRVZFTlQuUkVTSVpFX0VOREVELCBmdW5j dGlvbigpIHsKLSAgICAgICAgLy8gUmVzaXplIGdyaWQgb25seSB3aGVuICdEYXRhIE91dHB1dCcg cGFuZWwgaXMgdmlzaWJsZS4KLSAgICAgICAgaWYgKHNlbGYuZGF0YV9vdXRwdXRfcGFuZWwuaXNW aXNpYmxlKCkpIHsKLSAgICAgICAgICBzZWxmLmdyaWRfcmVzaXplKGdyaWQpOwotICAgICAgICB9 Ci0gICAgICB9KTsKLQotICAgICAgc2VsZi5kYXRhX291dHB1dF9wYW5lbC5vbih3Y0RvY2tlci5F VkVOVC5SRVNJWkVELCBmdW5jdGlvbigpIHsKLSAgICAgICAgLy8gUmVzaXplIGdyaWQgb25seSB3 aGVuICdEYXRhIE91dHB1dCcgcGFuZWwgaXMgdmlzaWJsZS4KLSAgICAgICAgaWYgKHNlbGYuZGF0 YV9vdXRwdXRfcGFuZWwuaXNWaXNpYmxlKCkpIHsKLSAgICAgICAgICBpZiAoc2VsZi5wcmVmZXJl bmNlcy5jb2x1bW5fZGF0YV9hdXRvX3Jlc2l6ZSA9PT0gJ2J5X2RhdGEnKSB7Ci0gICAgICAgICAg ICBncmlkLnJlc2l6ZUFsbENvbHVtbnMgJiYgZ3JpZC5yZXNpemVBbGxDb2x1bW5zKAotICAgICAg ICAgICAgICBzZWxmLnByZWZlcmVuY2VzLmNvbHVtbl9kYXRhX21heF93aWR0aCwgc2VsZi5tYXhf d2lkdGhfY2hhbmdlZCk7Ci0gICAgICAgICAgfWVsc2V7Ci0gICAgICAgICAgICBzZWxmLmdyaWQu cmVzaXplQWxsQ29sdW1ucyAmJiBzZWxmLmdyaWQucmVzaXplQWxsQ29sdW1ucygpOwotICAgICAg ICAgIH0KLSAgICAgICAgfQotICAgICAgfSk7Ci0KLSAgICAgIC8vIFJlc2l6ZSBTbGlja0dyaWQg d2hlbiBvdXRwdXQgUGFuZWwgZ2V0cyBmb2N1cwotICAgICAgc2VsZi5kYXRhX291dHB1dF9wYW5l bC5vbih3Y0RvY2tlci5FVkVOVC5WSVNJQklMSVRZX0NIQU5HRUQsIGZ1bmN0aW9uKCkgewotICAg ICAgICAvLyBSZXNpemUgZ3JpZCBvbmx5IGlmIG91dHB1dCBwYW5lbCBpcyB2aXNpYmxlCi0gICAg ICAgIGlmIChzZWxmLmRhdGFfb3V0cHV0X3BhbmVsLmlzVmlzaWJsZSgpKQotICAgICAgICAgIHNl bGYuZ3JpZF9yZXNpemUoZ3JpZCk7Ci0gICAgICB9KTsKLQotICAgICAgZm9yICh2YXIgaSA9IDA7 IGkgPCBjb2xsZWN0aW9uLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgIC8vIENvbnZlcnQgdG8gZGlj dCBmcm9tIDJkYXJyYXkKLSAgICAgICAgdmFyIGl0ZW0gPSB7fTsKLSAgICAgICAgZm9yICh2YXIg aiA9IDE7IGogPCBncmlkX2NvbHVtbnMubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICBpdGVtW2dy aWRfY29sdW1uc1tqXVsnZmllbGQnXV0gPSBjb2xsZWN0aW9uW2ldW2dyaWRfY29sdW1uc1tqXVsn cG9zJ11dOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlbVtzZWxmLmNsaWVudF9wcmltYXJ5X2tl eV0gPSAoc2VsZi5jbGllbnRfcHJpbWFyeV9rZXlfY291bnRlcisrKS50b1N0cmluZygpOwotICAg ICAgICBjb2xsZWN0aW9uW2ldID0gaXRlbTsKLSAgICAgIH0KLSAgICAgIGRhdGFWaWV3LnNldEl0 ZW1zKGNvbGxlY3Rpb24sIHNlbGYuY2xpZW50X3ByaW1hcnlfa2V5KTsKLSAgICAgIC8qIFJlc2l6 ZSB0aGUgY29sdW1ucyBvbmNlIGlmIGRhdGEgZW1wdHkgKi8KLSAgICAgIGlmIChjb2xsZWN0aW9u Lmxlbmd0aCA9PT0gMCAmJiBzZWxmLnByZWZlcmVuY2VzLmNvbHVtbl9kYXRhX2F1dG9fcmVzaXpl ID09PSAnYnlfZGF0YScpIHsKLSAgICAgICAgc2VsZi5ncmlkLnJlc2l6ZUFsbENvbHVtbnMgJiYg c2VsZi5ncmlkLnJlc2l6ZUFsbENvbHVtbnMoKTsKLSAgICAgIH0KLSAgICB9LAotCi0gICAgZmV0 Y2hfbmV4dF9hbGw6IGZ1bmN0aW9uKGNiKSB7Ci0gICAgICB0aGlzLmZldGNoX25leHQodHJ1ZSwg Y2IpOwotICAgIH0sCi0KLSAgICBmZXRjaF9uZXh0OiBmdW5jdGlvbihmZXRjaF9hbGwsIGNiKSB7 Ci0gICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgIHVybCA9ICcnOwotCi0gICAgICAvLyBU aGlzIHdpbGwgcHJldmVudCBmZXRjaCBvcGVyYXRpb24gaWYgcHJldmlvdXMgZmV0Y2ggb3BlcmF0 aW9uIGlzCi0gICAgICAvLyBhbHJlYWR5IGluIHByb2dyZXNzLgotICAgICAgc2VsZi5oYW5kbGVy LmZldGNoaW5nX3Jvd3MgPSB0cnVlOwotCi0gICAgICAkKCcjYnRuLWZsYXNoJykucHJvcCgnZGlz YWJsZWQnLCB0cnVlKTsKLSAgICAgICQoJyNidG4tc2F2ZS1yZXN1bHRzLXRvLWZpbGUnKS5wcm9w KCdkaXNhYmxlZCcsIHRydWUpOwotCi0gICAgICBpZiAoZmV0Y2hfYWxsKSB7Ci0gICAgICAgIHNl bGYuaGFuZGxlci50cmlnZ2VyKAotICAgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5n LWljb246c2hvdycsCi0gICAgICAgICAgZ2V0dGV4dCgnRmV0Y2hpbmcgYWxsIHJlY29yZHMuLi4n KQotICAgICAgICApOwotICAgICAgICB1cmwgPSB1cmxfZm9yKCdzcWxlZGl0b3IuZmV0Y2hfYWxs JywgewotICAgICAgICAgICd0cmFuc19pZCc6IHNlbGYudHJhbnNJZCwKLSAgICAgICAgICAnZmV0 Y2hfYWxsJzogMSwKLSAgICAgICAgfSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICB1cmwgPSB1 cmxfZm9yKCdzcWxlZGl0b3IuZmV0Y2gnLCB7Ci0gICAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi50 cmFuc0lkLAotICAgICAgICB9KTsKLSAgICAgIH0KLQotICAgICAgJC5hamF4KHsKLSAgICAgICAg dXJsOiB1cmwsCi0gICAgICAgIG1ldGhvZDogJ0dFVCcsCi0gICAgICB9KQotICAgICAgICAuZG9u ZShmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgICBzZWxmLmhhbmRsZXIuaGFzX21vcmVfcm93cyA9 IHJlcy5kYXRhLmhhc19tb3JlX3Jvd3M7Ci0gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0g ICAgICAgICAgICAkKCcjYnRuLWZsYXNoJykucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7Ci0gICAg ICAgICAgfSwgNzAwKTsKLSAgICAgICAgICAkKCcjYnRuLXNhdmUtcmVzdWx0cy10by1maWxlJyku cHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgc2VsZi5oYW5kbGVyLnRyaWdnZXIo J3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0gICAgICAgICAgc2VsZi51 cGRhdGVfZ3JpZF9kYXRhKHJlcy5kYXRhLnJlc3VsdCk7Ci0gICAgICAgICAgc2VsZi5oYW5kbGVy LmZldGNoaW5nX3Jvd3MgPSBmYWxzZTsKLSAgICAgICAgICBpZiAodHlwZW9mIGNiID09ICdmdW5j dGlvbicpIHsKLSAgICAgICAgICAgIGNiKCk7Ci0gICAgICAgICAgfQotICAgICAgICB9KQotICAg ICAgICAuZmFpbChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgJCgnI2J0bi1mbGFzaCcpLnByb3Ao J2Rpc2FibGVkJywgZmFsc2UpOwotICAgICAgICAgICQoJyNidG4tc2F2ZS1yZXN1bHRzLXRvLWZp bGUnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKLSAgICAgICAgICBzZWxmLmhhbmRsZXIudHJp Z2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKLSAgICAgICAgICBz ZWxmLmhhbmRsZXIuaGFzX21vcmVfcm93cyA9IGZhbHNlOwotICAgICAgICAgIHNlbGYuaGFuZGxl ci5mZXRjaGluZ19yb3dzID0gZmFsc2U7Ci0gICAgICAgICAgaWYgKHR5cGVvZiBjYiA9PSAnZnVu Y3Rpb24nKSB7Ci0gICAgICAgICAgICBjYigpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGxl dCBtc2cgPSBodHRwRXJyb3JIYW5kbGVyLmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKLSAgICAg ICAgICAgIHBnQWRtaW4sIHNlbGYsIGUsIG51bGwsIFtdLCBmYWxzZQotICAgICAgICAgICk7Ci0g ICAgICAgICAgaWYgKG1zZykKLSAgICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5KGZh bHNlLCBtc2cpOwotICAgICAgICB9KTsKLSAgICB9LAotCi0gICAgdXBkYXRlX2dyaWRfZGF0YTog ZnVuY3Rpb24oZGF0YSkgewotICAgICAgdGhpcy5kYXRhVmlldy5iZWdpblVwZGF0ZSgpOwotCi0g ICAgICBmb3IgKGxldCBkYXRhX3ZhbCBvZiBkYXRhKSB7Ci0gICAgICAgIC8vIENvbnZlcnQgMmRh cnJheSB0byBkaWN0LgotICAgICAgICB2YXIgaXRlbSA9IHt9OwotICAgICAgICBmb3IgKHZhciBq ID0gMTsgaiA8IHRoaXMuZ3JpZF9jb2x1bW5zLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgaXRl bVt0aGlzLmdyaWRfY29sdW1uc1tqXVsnZmllbGQnXV0gPSBkYXRhX3ZhbFt0aGlzLmdyaWRfY29s dW1uc1tqXVsncG9zJ11dOwotICAgICAgICB9Ci0KLSAgICAgICAgaXRlbVt0aGlzLmNsaWVudF9w cmltYXJ5X2tleV0gPSAodGhpcy5jbGllbnRfcHJpbWFyeV9rZXlfY291bnRlcisrKS50b1N0cmlu ZygpOwotICAgICAgICB0aGlzLmRhdGFWaWV3LmFkZEl0ZW0oaXRlbSk7Ci0gICAgICB9Ci0KLSAg ICAgIHRoaXMuZGF0YVZpZXcuZW5kVXBkYXRlKCk7Ci0gICAgfSwKLQotICAgIC8qIFRoaXMgZnVu Y3Rpb24gaXMgcmVzcG9uc2libGUgdG8gcmVuZGVyIG91dHB1dCBncmlkICovCi0gICAgZ3JpZF9y ZXNpemU6IGZ1bmN0aW9uKGdyaWQpIHsKLSAgICAgIHZhciBwcmV2X2hlaWdodCA9ICQoJyNkYXRh Z3JpZCcpLmhlaWdodCgpLAotICAgICAgICBoID0gJCh0aGlzLmRhdGFfb3V0cHV0X3BhbmVsLiRj b250YWluZXIucGFyZW50KCkucGFyZW50KCkpLmhlaWdodCgpIC0gMzUsCi0gICAgICAgIHByZXZf dmlld3BvcnQgPSBncmlkLmdldFZpZXdwb3J0KCksCi0gICAgICAgIHByZXZfdmlld3BvcnRfcm93 cyA9IGdyaWQuZ2V0UmVuZGVyZWRSYW5nZSgpLAotICAgICAgICBwcmV2X2NlbGwgPSBncmlkLmdl dEFjdGl2ZUNlbGwoKTsKLQotICAgICAgLy8gQXBwbHkgY3NzIG9ubHkgaWYgbmVjZXNzYXJ5LCBU byBhdm9pZCBET00gb3BlcmF0aW9uCi0gICAgICBpZiAocHJldl9oZWlnaHQgIT0gaCkgewotICAg ICAgICAkKCcjZGF0YWdyaWQnKS5jc3MoewotICAgICAgICAgICdoZWlnaHQnOiBoICsgJ3B4JywK LSAgICAgICAgfSk7Ci0gICAgICB9Ci0KLSAgICAgIGdyaWQucmVzaXplQ2FudmFzKCk7Ci0KLSAg ICAgIC8qCi0gICAgICAgKiBJZiB0aGVyZSBpcyBhbiBhY3RpdmUgY2VsbCBmcm9tIHVzZXIgdGhl biB3ZSBoYXZlIHRvIGdvIHRvIHRoYXQgY2VsbAotICAgICAgICovCi0gICAgICBpZiAocHJldl9j ZWxsKSB7Ci0gICAgICAgIGdyaWQuc2Nyb2xsQ2VsbEludG9WaWV3KHByZXZfY2VsbC5yb3csIHBy ZXZfY2VsbC5jZWxsKTsKLSAgICAgIH0KLQotICAgICAgLy8gSWYgYWxyZWFkeSBkaXNwbGF5aW5n IGZyb20gZmlyc3Qgcm93Ci0gICAgICBpZiAocHJldl92aWV3cG9ydC50b3AgPT0gcHJldl92aWV3 cG9ydF9yb3dzLnRvcCkgewotICAgICAgICByZXR1cm47Ci0gICAgICB9Ci0gICAgICAvLyBpZiB1 c2VyIGhhcyBzY3JvbGwgdG8gdGhlIGVuZC9sYXN0IHJvdwotICAgICAgZWxzZSBpZiAocHJldl92 aWV3cG9ydC5ib3R0b20gLSAyID09IHByZXZfdmlld3BvcnRfcm93cy5ib3R0b20pIHsKLSAgICAg ICAgZ3JpZC5zY3JvbGxSb3dJbnRvVmlldyhwcmV2X3ZpZXdwb3J0LmJvdHRvbSk7Ci0gICAgICB9 IGVsc2UgewotICAgICAgICBncmlkLnNjcm9sbFJvd0ludG9WaWV3KHByZXZfdmlld3BvcnQuYm90 dG9tIC0gMik7Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIGZldGNoX3F1ZXJ5X2hpc3Rvcnk6IGZ1 bmN0aW9uKCkgewotICAgICAgbGV0IHNlbGYgPSB0aGlzOwotICAgICAgJC5hamF4KHsKLSAgICAg ICAgdXJsOiB1cmxfZm9yKCdzcWxlZGl0b3IuZ2V0X3F1ZXJ5X2hpc3RvcnknLCB7Ci0gICAgICAg ICAgJ3RyYW5zX2lkJzogc2VsZi5oYW5kbGVyLnRyYW5zSWQsCi0gICAgICAgIH0pLAotICAgICAg ICBtZXRob2Q6ICdHRVQnLAotICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24n LAotICAgICAgfSkuZG9uZShmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgcmVzLmRhdGEucmVzdWx0 Lm1hcCgoZW50cnkpID0+IHsKLSAgICAgICAgICBsZXQgbmV3RW50cnkgPSBKU09OLnBhcnNlKGVu dHJ5KTsKLSAgICAgICAgICBuZXdFbnRyeS5zdGFydF90aW1lID0gbmV3IERhdGUobmV3RW50cnku c3RhcnRfdGltZSk7Ci0gICAgICAgICAgc2VsZi5oaXN0b3J5X2NvbGxlY3Rpb24uYWRkKG5ld0Vu dHJ5KTsKLSAgICAgICAgfSk7Ci0gICAgICB9KS5mYWlsKGZ1bmN0aW9uKCkgewotICAgICAgLyog aGlzdG9yeSBmZXRjaCBmYWlsIHNob3VsZCBub3QgYWZmZWN0IHF1ZXJ5IHRvb2wgKi8KLSAgICAg IH0pOwotICAgIH0sCi0gICAgLyogVGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSB0byBjcmVh dGUgYW5kIHJlbmRlciB0aGUgaGlzdG9yeSB0YWIuICovCi0gICAgcmVuZGVyX2hpc3RvcnlfZ3Jp ZDogZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgIC8qIFNob3Vs ZCBub3QgcmVzZXQgaWYgZnVuY3Rpb24gY2FsbGVkIGFnYWluICovCi0gICAgICBpZighc2VsZi5o aXN0b3J5X2NvbGxlY3Rpb24pIHsKLSAgICAgICAgc2VsZi5oaXN0b3J5X2NvbGxlY3Rpb24gPSBu ZXcgSGlzdG9yeUNvbGxlY3Rpb24oW10pOwotICAgICAgfQotCi0gICAgICBpZighc2VsZi5oaXN0 b3J5Q29tcG9uZW50KSB7Ci0gICAgICAgIHNlbGYuaGlzdG9yeUNvbXBvbmVudCA9IG5ldyBRdWVy eUhpc3RvcnkoJCgnI2hpc3RvcnlfZ3JpZCcpLCBzZWxmLmhpc3RvcnlfY29sbGVjdGlvbik7Ci0K LSAgICAgICAgLyogQ29weSBxdWVyeSB0byBxdWVyeSBlZGl0b3IsIHNldCB0aGUgZm9jdXMgdG8g ZWRpdG9yIGFuZCBtb3ZlIGN1cnNvciB0byBlbmQgKi8KLSAgICAgICAgc2VsZi5oaXN0b3J5Q29t cG9uZW50Lm9uQ29weVRvRWRpdG9yQ2xpY2soKHF1ZXJ5KT0+ewotICAgICAgICAgIHNlbGYucXVl cnlfdG9vbF9vYmouc2V0VmFsdWUocXVlcnkpOwotICAgICAgICAgIHNlbGYuc3FsX3BhbmVsX29i ai5mb2N1cygpOwotICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAgICAgc2Vs Zi5xdWVyeV90b29sX29iai5mb2N1cygpOwotICAgICAgICAgICAgc2VsZi5xdWVyeV90b29sX29i ai5zZXRDdXJzb3Ioc2VsZi5xdWVyeV90b29sX29iai5saW5lQ291bnQoKSwgMCk7Ci0gICAgICAg ICAgfSwgMTAwKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgc2VsZi5oaXN0b3J5Q29tcG9uZW50 LnJlbmRlcigpOwotCi0gICAgICAgIHNlbGYuaGlzdG9yeV9wYW5lbC5vZmYod2NEb2NrZXIuRVZF TlQuVklTSUJJTElUWV9DSEFOR0VEKTsKLSAgICAgICAgc2VsZi5oaXN0b3J5X3BhbmVsLm9uKHdj RG9ja2VyLkVWRU5ULlZJU0lCSUxJVFlfQ0hBTkdFRCwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg aWYgKHNlbGYuaGlzdG9yeV9wYW5lbC5pc1Zpc2libGUoKSkgewotICAgICAgICAgICAgc2V0VGlt ZW91dCgoKT0+ewotICAgICAgICAgICAgICBzZWxmLmhpc3RvcnlDb21wb25lbnQuZm9jdXMoKTsK LSAgICAgICAgICAgIH0sIDEwMCk7Ci0gICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAgIH0K LQotICAgICAgaWYoIXNlbGYuaGFuZGxlci5pc19xdWVyeV90b29sKSB7Ci0gICAgICAgIHNlbGYu aGlzdG9yeUNvbXBvbmVudC5zZXRFZGl0b3JQcmVmKHsnY29weV90b19lZGl0b3InOmZhbHNlfSk7 Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBkZWxldGUg YnV0dG9uIGNsaWNrLgotICAgIG9uX2RlbGV0ZTogZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgc2Vs ZiA9IHRoaXM7Ci0KLSAgICAgIC8vIFRyaWdnZXIgdGhlIGRlbGV0ZXJvdyBzaWduYWwgdG8gdGhl IFNxbEVkaXRvckNvbnRyb2xsZXIgY2xhc3MKLSAgICAgIHNlbGYuaGFuZGxlci50cmlnZ2VyKAot ICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOmRlbGV0ZXJvdycsCi0gICAgICAgIHNl bGYsCi0gICAgICAgIHNlbGYuaGFuZGxlcgotICAgICAgKTsKLSAgICB9LAotCi0gICAgX3N0b3BF dmVudFByb3BvZ2F0aW9uOiBmdW5jdGlvbihldikgewotICAgICAgZXYgPSBldiB8fCB3aW5kb3cu ZXZlbnQ7Ci0gICAgICBldi5jYW5jZWxCdWJibGUgPSB0cnVlOwotICAgICAgZXYuc3RvcFByb3Bh Z2F0aW9uKCk7Ci0gICAgICBldi5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsKLSAgICAgIGV2 LnByZXZlbnREZWZhdWx0KCk7Ci0gICAgfSwKLQotICAgIF9jbG9zZURyb3BEb3duOiBmdW5jdGlv bihldikgewotICAgICAgdmFyIHRhcmdldCA9IGV2ICYmIChldi5jdXJyZW50VGFyZ2V0IHx8IGV2 LnRhcmdldCk7Ci0gICAgICBpZiAodGFyZ2V0KSB7Ci0gICAgICAgICQodGFyZ2V0KS5jbG9zZXN0 KCcuZWRpdG9yLXRvb2xiYXInKS5maW5kKCcuc2hvdycpLnJlbW92ZUNsYXNzKCdzaG93Jyk7Ci0g ICAgICB9Ci0gICAgfSwKLQotICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBTYXZlIGJ1dHRv biBjbGljay4KLSAgICBvbl9zYXZlX2ZpbGU6IGZ1bmN0aW9uKGV2KSB7Ci0gICAgICB2YXIgc2Vs ZiA9IHRoaXM7Ci0KLSAgICAgIHRoaXMuX3N0b3BFdmVudFByb3BvZ2F0aW9uKGV2KTsKLSAgICAg IHRoaXMuX2Nsb3NlRHJvcERvd24oZXYpOwotCi0gICAgICBzZWxmLmhhbmRsZXIuY2xvc2Vfb25f c2F2ZSA9IGZhbHNlOwotICAgICAgLy8gVHJpZ2dlciB0aGUgc2F2ZSBzaWduYWwgdG8gdGhlIFNx bEVkaXRvckNvbnRyb2xsZXIgY2xhc3MKLSAgICAgIHNlbGYuaGFuZGxlci50cmlnZ2VyKAotICAg ICAgICAncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOnNhdmVfZmlsZScKLSAgICAgICk7Ci0gICAg fSwKLQotICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBTYXZlIGJ1dHRvbiBjbGljay4KLSAg ICBvbl9zYXZlX2FzOiBmdW5jdGlvbihldikgewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0g ICAgICB0aGlzLl9zdG9wRXZlbnRQcm9wb2dhdGlvbihldik7Ci0gICAgICB0aGlzLl9jbG9zZURy b3BEb3duKGV2KTsKLQotICAgICAgc2VsZi5oYW5kbGVyLmNsb3NlX29uX3NhdmUgPSBmYWxzZTsK LSAgICAgIC8vIFRyaWdnZXIgdGhlIHNhdmUgc2lnbmFsIHRvIHRoZSBTcWxFZGl0b3JDb250cm9s bGVyIGNsYXNzCi0gICAgICBzZWxmLmhhbmRsZXIudHJpZ2dlcigKLSAgICAgICAgJ3BnYWRtaW4t c3FsZWRpdG9yOmJ1dHRvbjpzYXZlX2ZpbGUnLAotICAgICAgICBzZWxmLAotICAgICAgICBzZWxm LmhhbmRsZXIsCi0gICAgICAgIHRydWUKLSAgICAgICk7Ci0gICAgfSwKLQotICAgIC8vIENhbGxi YWNrIGZ1bmN0aW9uIGZvciB0aGUgZmluZCBidXR0b24gY2xpY2suCi0gICAgb25fZmluZDogZnVu Y3Rpb24oZXYpIHsKLSAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgIHRoaXMuX3N0b3BFdmVu dFByb3BvZ2F0aW9uKGV2KTsKLSAgICAgIHRoaXMuX2Nsb3NlRHJvcERvd24oZXYpOwotCi0gICAg ICBzZWxmLnF1ZXJ5X3Rvb2xfb2JqLmV4ZWNDb21tYW5kKCdmaW5kJyk7Ci0gICAgfSwKLQotICAg IC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgZmluZCBuZXh0IGJ1dHRvbiBjbGljay4KLSAg ICBvbl9maW5kX25leHQ6IGZ1bmN0aW9uKGV2KSB7Ci0gICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0K LSAgICAgIHRoaXMuX3N0b3BFdmVudFByb3BvZ2F0aW9uKGV2KTsKLSAgICAgIHRoaXMuX2Nsb3Nl RHJvcERvd24oZXYpOwotCi0gICAgICBzZWxmLnF1ZXJ5X3Rvb2xfb2JqLmV4ZWNDb21tYW5kKCdm aW5kTmV4dCcpOwotICAgIH0sCi0KLSAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGZp bmQgcHJldmlvdXMgYnV0dG9uIGNsaWNrLgotICAgIG9uX2ZpbmRfcHJldmlvdXM6IGZ1bmN0aW9u KGV2KSB7Ci0gICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICB0aGlzLl9zdG9wRXZlbnRQcm9w b2dhdGlvbihldik7Ci0gICAgICB0aGlzLl9jbG9zZURyb3BEb3duKGV2KTsKLQotICAgICAgc2Vs Zi5xdWVyeV90b29sX29iai5leGVjQ29tbWFuZCgnZmluZFByZXYnKTsKLSAgICB9LAotCi0gICAg Ly8gQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSByZXBsYWNlIGJ1dHRvbiBjbGljay4KLSAgICBv bl9yZXBsYWNlOiBmdW5jdGlvbihldikgewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAg dGhpcy5fc3RvcEV2ZW50UHJvcG9nYXRpb24oZXYpOwotICAgICAgdGhpcy5fY2xvc2VEcm9wRG93 bihldik7Ci0KLSAgICAgIHNlbGYucXVlcnlfdG9vbF9vYmouZXhlY0NvbW1hbmQoJ3JlcGxhY2Un KTsKLSAgICB9LAotCi0gICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSByZXBsYWNlIGFs bCBidXR0b24gY2xpY2suCi0gICAgb25fcmVwbGFjZV9hbGw6IGZ1bmN0aW9uKGV2KSB7Ci0gICAg ICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICB0aGlzLl9zdG9wRXZlbnRQcm9wb2dhdGlvbihldik7 Ci0gICAgICB0aGlzLl9jbG9zZURyb3BEb3duKGV2KTsKLQotICAgICAgc2VsZi5xdWVyeV90b29s X29iai5leGVjQ29tbWFuZCgncmVwbGFjZUFsbCcpOwotICAgIH0sCi0KLSAgICAvLyBDYWxsYmFj ayBmdW5jdGlvbiBmb3IgdGhlIGZpbmQgcGVyc2lzdGVudCBidXR0b24gY2xpY2suCi0gICAgb25f ZmluZF9wZXJzaXN0ZW50OiBmdW5jdGlvbihldikgewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwot Ci0gICAgICB0aGlzLl9zdG9wRXZlbnRQcm9wb2dhdGlvbihldik7Ci0gICAgICB0aGlzLl9jbG9z ZURyb3BEb3duKGV2KTsKLQotICAgICAgc2VsZi5xdWVyeV90b29sX29iai5leGVjQ29tbWFuZCgn ZmluZFBlcnNpc3RlbnQnKTsKLSAgICB9LAotCi0gICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24gZm9y IHRoZSBqdW1wIGJ1dHRvbiBjbGljay4KLSAgICBvbl9qdW1wOiBmdW5jdGlvbihldikgewotICAg ICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICB0aGlzLl9zdG9wRXZlbnRQcm9wb2dhdGlvbihl dik7Ci0gICAgICB0aGlzLl9jbG9zZURyb3BEb3duKGV2KTsKLQotICAgICAgc2VsZi5xdWVyeV90 b29sX29iai5leGVjQ29tbWFuZCgnanVtcFRvTGluZScpOwotICAgIH0sCi0KLSAgICAvLyBDYWxs YmFjayBmdW5jdGlvbiBmb3IgZmlsdGVyIGJ1dHRvbiBjbGljay4KLSAgICBvbl9zaG93X2ZpbHRl cjogZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgIC8vIFRyaWdn ZXIgdGhlIHNob3dfZmlsdGVyIHNpZ25hbCB0byB0aGUgU3FsRWRpdG9yQ29udHJvbGxlciBjbGFz cwotICAgICAgc2VsZi5oYW5kbGVyLnRyaWdnZXIoCi0gICAgICAgICdwZ2FkbWluLXNxbGVkaXRv cjpidXR0b246c2hvd19maWx0ZXInLAotICAgICAgICBzZWxmLAotICAgICAgICBzZWxmLmhhbmRs ZXIKLSAgICAgICk7Ci0gICAgfSwKLQotICAgIG9uX25ld19jb25uZWN0aW9uOiBmdW5jdGlvbigp IHsKLSAgICAgIHZhciBzZWxmID0gdGhpczsKLQotICAgICAgLy8gVHJpZ2dlciB0aGUgc2hvd19m aWx0ZXIgc2lnbmFsIHRvIHRoZSBTcWxFZGl0b3JDb250cm9sbGVyIGNsYXNzCi0gICAgICBzZWxm LmhhbmRsZXIudHJpZ2dlcigKLSAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjpzaG93 X25ld19jb25uZWN0aW9uJywKLSAgICAgICAgc2VsZiwKLSAgICAgICAgc2VsZi5oYW5kbGVyCi0g ICAgICApOwotICAgIH0sCi0KLSAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgaW5jbHVkZSBm aWx0ZXIgYnV0dG9uIGNsaWNrLgotICAgIG9uX2luY2x1ZGVfZmlsdGVyOiBmdW5jdGlvbihldikg ewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICB0aGlzLl9zdG9wRXZlbnRQcm9wb2dh dGlvbihldik7Ci0gICAgICB0aGlzLl9jbG9zZURyb3BEb3duKGV2KTsKLQotICAgICAgLy8gVHJp Z2dlciB0aGUgaW5jbHVkZV9maWx0ZXIgc2lnbmFsIHRvIHRoZSBTcWxFZGl0b3JDb250cm9sbGVy IGNsYXNzCi0gICAgICBzZWxmLmhhbmRsZXIudHJpZ2dlcigKLSAgICAgICAgJ3BnYWRtaW4tc3Fs ZWRpdG9yOmJ1dHRvbjppbmNsdWRlX2ZpbHRlcicsCi0gICAgICAgIHNlbGYsCi0gICAgICAgIHNl bGYuaGFuZGxlcgotICAgICAgKTsKLSAgICB9LAotCi0gICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24g Zm9yIGV4Y2x1ZGUgZmlsdGVyIGJ1dHRvbiBjbGljay4KLSAgICBvbl9leGNsdWRlX2ZpbHRlcjog ZnVuY3Rpb24oZXYpIHsKLSAgICAgIHZhciBzZWxmID0gdGhpczsKLQotICAgICAgdGhpcy5fc3Rv cEV2ZW50UHJvcG9nYXRpb24oZXYpOwotICAgICAgdGhpcy5fY2xvc2VEcm9wRG93bihldik7Ci0K LSAgICAgIC8vIFRyaWdnZXIgdGhlIGV4Y2x1ZGVfZmlsdGVyIHNpZ25hbCB0byB0aGUgU3FsRWRp dG9yQ29udHJvbGxlciBjbGFzcwotICAgICAgc2VsZi5oYW5kbGVyLnRyaWdnZXIoCi0gICAgICAg ICdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246ZXhjbHVkZV9maWx0ZXInLAotICAgICAgICBzZWxm LAotICAgICAgICBzZWxmLmhhbmRsZXIKLSAgICAgICk7Ci0gICAgfSwKLQotICAgIC8vIENhbGxi YWNrIGZ1bmN0aW9uIGZvciByZW1vdmUgZmlsdGVyIGJ1dHRvbiBjbGljay4KLSAgICBvbl9yZW1v dmVfZmlsdGVyOiBmdW5jdGlvbihldikgewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAg ICB0aGlzLl9zdG9wRXZlbnRQcm9wb2dhdGlvbihldik7Ci0gICAgICB0aGlzLl9jbG9zZURyb3BE b3duKGV2KTsKLQotICAgICAgLy8gVHJpZ2dlciB0aGUgcmVtb3ZlX2ZpbHRlciBzaWduYWwgdG8g dGhlIFNxbEVkaXRvckNvbnRyb2xsZXIgY2xhc3MKLSAgICAgIHNlbGYuaGFuZGxlci50cmlnZ2Vy KAotICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOnJlbW92ZV9maWx0ZXInLAotICAg ICAgICBzZWxmLAotICAgICAgICBzZWxmLmhhbmRsZXIKLSAgICAgICk7Ci0gICAgfSwKLQotICAg IC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciBjYW5jZWwgYnV0dG9uIGNsaWNrLgotICAgIG9uX2Nh bmNlbDogZnVuY3Rpb24oKSB7Ci0gICAgICAkKCcjZmlsdGVyJykuYWRkQ2xhc3MoJ2Qtbm9uZScp OwotICAgICAgJCgnI2VkaXRvci1wYW5lbCcpLnJlbW92ZUNsYXNzKCdzcWwtZWRpdG9yLWJ1c3kt ZmV0Y2hpbmcnKTsKLSAgICB9LAotCi0gICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGNvcHkg YnV0dG9uIGNsaWNrLgotICAgIG9uX2NvcHlfcm93OiBmdW5jdGlvbigpIHsKLSAgICAgIHZhciBz ZWxmID0gdGhpczsKLQotICAgICAgLy8gVHJpZ2dlciB0aGUgY29weSBzaWduYWwgdG8gdGhlIFNx bEVkaXRvckNvbnRyb2xsZXIgY2xhc3MKLSAgICAgIHNlbGYuaGFuZGxlci50cmlnZ2VyKAotICAg ICAgICAncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOmNvcHlfcm93JywKLSAgICAgICAgc2VsZiwK LSAgICAgICAgc2VsZi5oYW5kbGVyCi0gICAgICApOwotCi0gICAgfSwKLQotICAgIC8vIENhbGxi YWNrIGZ1bmN0aW9uIGZvciBjb3B5IHdpdGggaGVhZGVyIGJ1dHRvbiBjbGljay4KLSAgICBvbl9j b3B5X3Jvd193aXRoX2hlYWRlcjogZnVuY3Rpb24oZXYpIHsKLSAgICAgIHZhciBzZWxmID0gdGhp czsKLQotICAgICAgdGhpcy5fc3RvcEV2ZW50UHJvcG9nYXRpb24oZXYpOwotCi0gICAgICAvLyBU b2dnbGUgdGhlIGJ1dHRvbgotICAgICAgc2VsZi5oYW5kbGVyLnRyaWdnZXIoCi0gICAgICAgICdw Z2FkbWluLXNxbGVkaXRvcjpidXR0b246Y29weV9yb3dfd2l0aF9oZWFkZXInLAotICAgICAgICBz ZWxmLAotICAgICAgICBzZWxmLmhhbmRsZXIKLSAgICAgICk7Ci0KLSAgICB9LAotCi0gICAgLy8g Q2FsbGJhY2sgZnVuY3Rpb24gZm9yIHBhc3RlIGJ1dHRvbiBjbGljay4KLSAgICBvbl9wYXN0ZV9y b3c6IGZ1bmN0aW9uKCkgewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICAvLyBUcmln Z2VyIHRoZSBwYXN0ZSBzaWduYWwgdG8gdGhlIFNxbEVkaXRvckNvbnRyb2xsZXIgY2xhc3MKLSAg ICAgIHNlbGYuaGFuZGxlci50cmlnZ2VyKAotICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6YnV0 dG9uOnBhc3RlX3JvdycsCi0gICAgICAgIHNlbGYsCi0gICAgICAgIHNlbGYuaGFuZGxlcgotICAg ICAgKTsKLSAgICB9LAotCi0gICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSBjaGFuZ2Ug ZXZlbnQgb2YgY29tYm8gYm94Ci0gICAgb25fbGltaXRfY2hhbmdlOiBmdW5jdGlvbigpIHsKLSAg ICAgIHZhciBzZWxmID0gdGhpczsKLQotICAgICAgLy8gVHJpZ2dlciB0aGUgbGltaXQgc2lnbmFs IHRvIHRoZSBTcWxFZGl0b3JDb250cm9sbGVyIGNsYXNzCi0gICAgICBzZWxmLmhhbmRsZXIudHJp Z2dlcigKLSAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjpsaW1pdCcsCi0gICAgICAg IHNlbGYsCi0gICAgICAgIHNlbGYuaGFuZGxlcgotICAgICAgKTsKLSAgICB9LAotCi0gICAgLy8g Q2FsbGJhY2sgZnVuY3Rpb24gZm9yIFNhdmUgRGF0YSBDaGFuZ2VzIGJ1dHRvbiBjbGljay4KLSAg ICBvbl9zYXZlX2RhdGE6IGZ1bmN0aW9uKCkgewotICAgICAgdGhpcy5oYW5kbGVyLmhpc3Rvcnlf cXVlcnlfc291cmNlID0gUXVlcnlTb3VyY2VzLlNBVkVfREFUQTsKLQotICAgICAgcXVlcnlUb29s QWN0aW9ucy5zYXZlRGF0YUNoYW5nZXModGhpcy5oYW5kbGVyKTsKLSAgICB9LAotCi0gICAgLy8g Q2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSBmbGFzaCBidXR0b24gY2xpY2suCi0gICAgb25fZmxh c2g6IGZ1bmN0aW9uKCkgewotICAgICAgJCgnI2J0bi1mbGFzaCcpLnByb3AoJ2Rpc2FibGVkJywg dHJ1ZSk7Ci0gICAgICBsZXQgZGF0YV9jbGlja19jb3VudGVyID0gJCgnI2J0bi1mbGFzaCcpLmF0 dHIoJ2RhdGEtY2xpY2stY291bnRlcicpOwotICAgICAgZGF0YV9jbGlja19jb3VudGVyID0gKHBh cnNlSW50KGRhdGFfY2xpY2tfY291bnRlcikgKyAxKSUxMDsKLSAgICAgICQoJyNidG4tZmxhc2gn KS5hdHRyKCdkYXRhLWNsaWNrLWNvdW50ZXInLCBkYXRhX2NsaWNrX2NvdW50ZXIpOwotCi0gICAg ICB0aGlzLmhhbmRsZXIuaGlzdG9yeV9xdWVyeV9zb3VyY2UgPSBRdWVyeVNvdXJjZXMuRVhFQ1VU RTsKLQotICAgICAgcXVlcnlUb29sQWN0aW9ucy5leGVjdXRlUXVlcnkodGhpcy5oYW5kbGVyKTsK LSAgICB9LAotCi0gICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSBjYW5jZWwgcXVlcnkg YnV0dG9uIGNsaWNrLgotICAgIG9uX2NhbmNlbF9xdWVyeTogZnVuY3Rpb24oKSB7Ci0gICAgICB2 YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgIC8vIFRyaWdnZXIgdGhlIGNhbmNlbC1xdWVyeSBzaWdu YWwgdG8gdGhlIFNxbEVkaXRvckNvbnRyb2xsZXIgY2xhc3MKLSAgICAgIHNlbGYuaGFuZGxlci50 cmlnZ2VyKAotICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOmNhbmNlbC1xdWVyeScs Ci0gICAgICAgIHNlbGYsCi0gICAgICAgIHNlbGYuaGFuZGxlcgotICAgICAgKTsKLSAgICB9LAot Ci0gICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIHRoZSBsaW5lIGNvbW1lbnQgY29kZQotICAg IG9uX2NvbW1lbnRfbGluZV9jb2RlOiBmdW5jdGlvbigpIHsKLSAgICAgIHF1ZXJ5VG9vbEFjdGlv bnMuY29tbWVudExpbmVDb2RlKHRoaXMuaGFuZGxlcik7Ci0gICAgfSwKLQotICAgIC8vIENhbGxi YWNrIGZ1bmN0aW9uIGZvciB0aGUgbGluZSB1bmNvbW1lbnQgY29kZQotICAgIG9uX3VuY29tbWVu dF9saW5lX2NvZGU6IGZ1bmN0aW9uKCkgewotICAgICAgcXVlcnlUb29sQWN0aW9ucy51bmNvbW1l bnRMaW5lQ29kZSh0aGlzLmhhbmRsZXIpOwotICAgIH0sCi0KLSAgICAvLyBDYWxsYmFjayBmdW5j dGlvbiBmb3IgdGhlIGJsb2NrIGNvbW1lbnQvdW5jb21tZW50IGNvZGUKLSAgICBvbl90b2dnbGVf Y29tbWVudF9ibG9ja19jb2RlOiBmdW5jdGlvbigpIHsKLSAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMu Y29tbWVudEJsb2NrQ29kZSh0aGlzLmhhbmRsZXIpOwotICAgIH0sCi0KLSAgICBvbl9pbmRlbnRf Y29kZTogZnVuY3Rpb24oKSB7Ci0gICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAvLyBUcmln Z2VyIHRoZSBjb21tZW50IHNpZ25hbCB0byB0aGUgU3FsRWRpdG9yQ29udHJvbGxlciBjbGFzcwot ICAgICAgc2VsZi5oYW5kbGVyLnRyaWdnZXIoCi0gICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpp bmRlbnRfc2VsZWN0ZWRfY29kZScsCi0gICAgICAgIHNlbGYsCi0gICAgICAgIHNlbGYuaGFuZGxl cgotICAgICAgKTsKLSAgICB9LAotCi0gICAgb25fdW5pbmRlbnRfY29kZTogZnVuY3Rpb24oKSB7 Ci0gICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAvLyBUcmlnZ2VyIHRoZSBjb21tZW50IHNp Z25hbCB0byB0aGUgU3FsRWRpdG9yQ29udHJvbGxlciBjbGFzcwotICAgICAgc2VsZi5oYW5kbGVy LnRyaWdnZXIoCi0gICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjp1bmluZGVudF9zZWxlY3RlZF9j b2RlJywKLSAgICAgICAgc2VsZiwKLSAgICAgICAgc2VsZi5oYW5kbGVyCi0gICAgICApOwotICAg IH0sCi0KLSAgICBvbl9mb3JtYXRfc3FsOiBmdW5jdGlvbigpIHsKLSAgICAgIHZhciBzZWxmID0g dGhpczsKLSAgICAgIC8vIFRyaWdnZXIgdGhlIGZvcm1hdCBzaWduYWwgdG8gdGhlIFNxbEVkaXRv ckNvbnRyb2xsZXIgY2xhc3MKLSAgICAgIHNlbGYuaGFuZGxlci50cmlnZ2VyKAotICAgICAgICAn cGdhZG1pbi1zcWxlZGl0b3I6Zm9ybWF0X3NxbCcsCi0gICAgICAgIHNlbGYsCi0gICAgICAgIHNl bGYuaGFuZGxlcgotICAgICAgKTsKLSAgICB9LAotCi0gICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24g Zm9yIHRoZSBjbGVhciBidXR0b24gY2xpY2suCi0gICAgb25fY2xlYXI6IGZ1bmN0aW9uKGV2KSB7 Ci0gICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICB0aGlzLl9zdG9wRXZlbnRQcm9wb2dhdGlv bihldik7Ci0gICAgICB0aGlzLl9jbG9zZURyb3BEb3duKGV2KTsKLQotICAgICAgLyogSWYgaXNf cXVlcnlfY2hhbmdlZCBmbGFnIGlzIHNldCB0byBmYWxzZSB0aGVuIG5vIG5lZWQgdG8KLSAgICAg ICAqIGNvbmZpcm0gd2l0aCB0aGUgdXNlciBmb3IgdW5zYXZlZCBjaGFuZ2VzLgotICAgICAgICov Ci0gICAgICBpZiAoc2VsZi5oYW5kbGVyLmlzX3F1ZXJ5X2NoYW5nZWQpIHsKLSAgICAgICAgTm90 aWZ5LmNvbmZpcm0oCi0gICAgICAgICAgZ2V0dGV4dCgnVW5zYXZlZCBjaGFuZ2VzJyksCi0gICAg ICAgICAgZ2V0dGV4dCgnQXJlIHlvdSBzdXJlIHlvdSB3aXNoIHRvIGRpc2NhcmQgdGhlIGN1cnJl bnQgY2hhbmdlcz8nKSwKLSAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIC8vIERv IG5vdGhpbmcgYXMgdXNlciBkbyBub3Qgd2FudCB0byBzYXZlLCBqdXN0IGNvbnRpbnVlCi0gICAg ICAgICAgICBzZWxmLnF1ZXJ5X3Rvb2xfb2JqLnNldFZhbHVlKCcnKTsKLSAgICAgICAgICAgIHNl dFRpbWVvdXQoKCkgPT4geyBzZWxmLnF1ZXJ5X3Rvb2xfb2JqLmZvY3VzKCk7IH0sIDIwMCk7Ci0g ICAgICAgICAgfSwKLSAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiB0 cnVlOwotICAgICAgICAgIH0KLSAgICAgICAgKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHNl bGYucXVlcnlfdG9vbF9vYmouc2V0VmFsdWUoJycpOwotICAgICAgfQotICAgIH0sCi0KLSAgICAv LyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIGNsZWFyIGhpc3RvcnkgYnV0dG9uIGNsaWNrLgot ICAgIG9uX2NsZWFyX2hpc3Rvcnk6IGZ1bmN0aW9uKGV2KSB7Ci0gICAgICB2YXIgc2VsZiA9IHRo aXM7Ci0gICAgICB0aGlzLl9zdG9wRXZlbnRQcm9wb2dhdGlvbihldik7Ci0gICAgICB0aGlzLl9j bG9zZURyb3BEb3duKGV2KTsKLSAgICAgIC8vIGFzayBmb3IgY29uZmlybWF0aW9uIG9ubHkgaWYg YW55dGhpbmcgdG8gY2xlYXIKLSAgICAgIGlmICghc2VsZi5oaXN0b3J5X2NvbGxlY3Rpb24ubGVu Z3RoKCkpIHsKLSAgICAgICAgcmV0dXJuOwotICAgICAgfQotCi0gICAgICBOb3RpZnkuY29uZmly bShnZXR0ZXh0KCdDbGVhciBoaXN0b3J5JyksCi0gICAgICAgIGdldHRleHQoJ0FyZSB5b3Ugc3Vy ZSB5b3Ugd2lzaCB0byBjbGVhciB0aGUgaGlzdG9yeT8nKSArICc8L2JyPicgKwotICAgICAgICBn ZXR0ZXh0KCdUaGlzIHdpbGwgcmVtb3ZlIGFsbCBvZiB5b3VyIHF1ZXJ5IGhpc3RvcnkgZnJvbSB0 aGlzIGFuZCBvdGhlciBzZXNzaW9ucyBmb3IgdGhpcyBkYXRhYmFzZS4nKSwKLSAgICAgICAgZnVu Y3Rpb24oKSB7Ci0gICAgICAgICAgaWYgKHNlbGYuaGlzdG9yeV9jb2xsZWN0aW9uKSB7Ci0gICAg ICAgICAgICBzZWxmLmhpc3RvcnlfY29sbGVjdGlvbi5yZXNldCgpOwotICAgICAgICAgIH0KLQot ICAgICAgICAgIGlmKHNlbGYuaGFuZGxlci5pc19xdWVyeV90b29sKSB7Ci0gICAgICAgICAgICAk LmFqYXgoewotICAgICAgICAgICAgICB1cmw6IHVybF9mb3IoJ3NxbGVkaXRvci5jbGVhcl9xdWVy eV9oaXN0b3J5JywgewotICAgICAgICAgICAgICAgICd0cmFuc19pZCc6IHNlbGYuaGFuZGxlci50 cmFuc0lkLAotICAgICAgICAgICAgICB9KSwKLSAgICAgICAgICAgICAgbWV0aG9kOiAnREVMRVRF JywKLSAgICAgICAgICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJywKLSAgICAg ICAgICAgIH0pCi0gICAgICAgICAgICAgIC5kb25lKGZ1bmN0aW9uKCkgeyAvKiBUaGlzIGlzIGlu dGVudGlvbmFsICovIH0pCi0gICAgICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uKCkgewotICAgICAg ICAgICAgICAvKiBoaXN0b3J5IGNsZWFyIGZhaWwgc2hvdWxkIG5vdCBhZmZlY3QgcXVlcnkgdG9v bCAqLwotICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgc2V0VGltZW91 dCgoKSA9PiB7IHNlbGYucXVlcnlfdG9vbF9vYmouZm9jdXMoKTsgfSwgMjAwKTsKLSAgICAgICAg fSwKLSAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg IH0KLSAgICAgICk7Ci0gICAgfSwKLQotICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUg YXV0byBjb21taXQgYnV0dG9uIGNsaWNrLgotICAgIG9uX2F1dG9fY29tbWl0OiBmdW5jdGlvbihl dikgewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICB0aGlzLl9zdG9wRXZlbnRQcm9w b2dhdGlvbihldik7Ci0KLSAgICAgIC8vIFRyaWdnZXIgdGhlIGF1dG8tY29tbWl0IHNpZ25hbCB0 byB0aGUgU3FsRWRpdG9yQ29udHJvbGxlciBjbGFzcwotICAgICAgc2VsZi5oYW5kbGVyLnRyaWdn ZXIoCi0gICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246YXV0b19jb21taXQnLAotICAg ICAgICBzZWxmLAotICAgICAgICBzZWxmLmhhbmRsZXIKLSAgICAgICk7Ci0gICAgfSwKLQotICAg IC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgYXV0byByb2xsYmFjayBidXR0b24gY2xpY2su Ci0gICAgb25fYXV0b19yb2xsYmFjazogZnVuY3Rpb24oZXYpIHsKLSAgICAgIHZhciBzZWxmID0g dGhpczsKLQotICAgICAgdGhpcy5fc3RvcEV2ZW50UHJvcG9nYXRpb24oZXYpOwotCi0gICAgICAv LyBUcmlnZ2VyIHRoZSBkb3dubG9hZCBzaWduYWwgdG8gdGhlIFNxbEVkaXRvckNvbnRyb2xsZXIg Y2xhc3MKLSAgICAgIHNlbGYuaGFuZGxlci50cmlnZ2VyKAotICAgICAgICAncGdhZG1pbi1zcWxl ZGl0b3I6YnV0dG9uOmF1dG9fcm9sbGJhY2snLAotICAgICAgICBzZWxmLAotICAgICAgICBzZWxm LmhhbmRsZXIKLSAgICAgICk7Ci0gICAgfSwKLQotICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZv ciBleHBsYWluIGJ1dHRvbiBjbGljay4KLSAgICBvbl9leHBsYWluOiBmdW5jdGlvbihldmVudCkg ewotICAgICAgdGhpcy5fc3RvcEV2ZW50UHJvcG9nYXRpb24oZXZlbnQpOwotICAgICAgdGhpcy5f Y2xvc2VEcm9wRG93bihldmVudCk7Ci0KLSAgICAgIHRoaXMuaGFuZGxlci5oaXN0b3J5X3F1ZXJ5 X3NvdXJjZSA9IFF1ZXJ5U291cmNlcy5FWFBMQUlOOwotICAgICAgcXVlcnlUb29sQWN0aW9ucy5l eHBsYWluKHRoaXMuaGFuZGxlcik7Ci0gICAgfSwKLQotICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9u IGZvciBleHBsYWluIGFuYWx5emUgYnV0dG9uIGNsaWNrLgotICAgIG9uX2V4cGxhaW5fYW5hbHl6 ZTogZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgIHRoaXMuX3N0b3BFdmVudFByb3BvZ2F0aW9uKGV2 ZW50KTsKLSAgICAgIHRoaXMuX2Nsb3NlRHJvcERvd24oZXZlbnQpOwotCi0gICAgICB0aGlzLmhh bmRsZXIuaGlzdG9yeV9xdWVyeV9zb3VyY2UgPSBRdWVyeVNvdXJjZXMuRVhQTEFJTl9BTkFMWVpF OwotICAgICAgcXVlcnlUb29sQWN0aW9ucy5leHBsYWluQW5hbHl6ZSh0aGlzLmhhbmRsZXIpOwot ICAgIH0sCi0KLSAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgZXhwbGFpbiBvcHRpb24gInZl cmJvc2UiIGJ1dHRvbiBjbGljawotICAgIG9uX2V4cGxhaW5fdmVyYm9zZTogZnVuY3Rpb24oZXYp IHsKLSAgICAgIHZhciBzZWxmID0gdGhpczsKLQotICAgICAgdGhpcy5fc3RvcEV2ZW50UHJvcG9n YXRpb24oZXYpOwotCi0gICAgICAvLyBUcmlnZ2VyIHRoZSBleHBsYWluICJ2ZXJib3NlIiBzaWdu YWwgdG8gdGhlIFNxbEVkaXRvckNvbnRyb2xsZXIgY2xhc3MKLSAgICAgIHNlbGYuaGFuZGxlci50 cmlnZ2VyKAotICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOmV4cGxhaW4tdmVyYm9z ZScsCi0gICAgICAgIHNlbGYsCi0gICAgICAgIHNlbGYuaGFuZGxlcgotICAgICAgKTsKLSAgICB9 LAotCi0gICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIGV4cGxhaW4gb3B0aW9uICJjb3N0cyIg YnV0dG9uIGNsaWNrCi0gICAgb25fZXhwbGFpbl9jb3N0czogZnVuY3Rpb24oZXYpIHsKLSAgICAg IHZhciBzZWxmID0gdGhpczsKLQotICAgICAgdGhpcy5fc3RvcEV2ZW50UHJvcG9nYXRpb24oZXYp OwotCi0gICAgICAvLyBUcmlnZ2VyIHRoZSBleHBsYWluICJjb3N0cyIgc2lnbmFsIHRvIHRoZSBT cWxFZGl0b3JDb250cm9sbGVyIGNsYXNzCi0gICAgICBzZWxmLmhhbmRsZXIudHJpZ2dlcigKLSAg ICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjpleHBsYWluLWNvc3RzJywKLSAgICAgICAg c2VsZiwKLSAgICAgICAgc2VsZi5oYW5kbGVyCi0gICAgICApOwotICAgIH0sCi0KLSAgICAvLyBD YWxsYmFjayBmdW5jdGlvbiBmb3IgZXhwbGFpbiBvcHRpb24gImJ1ZmZlcnMiIGJ1dHRvbiBjbGlj awotICAgIG9uX2V4cGxhaW5fYnVmZmVyczogZnVuY3Rpb24oZXYpIHsKLSAgICAgIHZhciBzZWxm ID0gdGhpczsKLQotICAgICAgdGhpcy5fc3RvcEV2ZW50UHJvcG9nYXRpb24oZXYpOwotCi0gICAg ICAvLyBUcmlnZ2VyIHRoZSBleHBsYWluICJidWZmZXJzIiBzaWduYWwgdG8gdGhlIFNxbEVkaXRv ckNvbnRyb2xsZXIgY2xhc3MKLSAgICAgIHNlbGYuaGFuZGxlci50cmlnZ2VyKAotICAgICAgICAn cGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOmV4cGxhaW4tYnVmZmVycycsCi0gICAgICAgIHNlbGYs Ci0gICAgICAgIHNlbGYuaGFuZGxlcgotICAgICAgKTsKLSAgICB9LAotCi0gICAgLy8gQ2FsbGJh Y2sgZnVuY3Rpb24gZm9yIGV4cGxhaW4gb3B0aW9uICJ0aW1pbmciIGJ1dHRvbiBjbGljawotICAg IG9uX2V4cGxhaW5fdGltaW5nOiBmdW5jdGlvbihldikgewotICAgICAgdmFyIHNlbGYgPSB0aGlz OwotCi0gICAgICB0aGlzLl9zdG9wRXZlbnRQcm9wb2dhdGlvbihldik7Ci0KLSAgICAgIC8vIFRy aWdnZXIgdGhlIGV4cGxhaW4gInRpbWluZyIgc2lnbmFsIHRvIHRoZSBTcWxFZGl0b3JDb250cm9s bGVyIGNsYXNzCi0gICAgICBzZWxmLmhhbmRsZXIudHJpZ2dlcigKLSAgICAgICAgJ3BnYWRtaW4t c3FsZWRpdG9yOmJ1dHRvbjpleHBsYWluLXRpbWluZycsCi0gICAgICAgIHNlbGYsCi0gICAgICAg IHNlbGYuaGFuZGxlcgotICAgICAgKTsKLSAgICB9LAotCi0gICAgb25fZXhwbGFpbl9zdW1tYXJ5 OiBmdW5jdGlvbihldikgewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICB0aGlzLl9z dG9wRXZlbnRQcm9wb2dhdGlvbihldik7Ci0KLSAgICAgIHNlbGYuaGFuZGxlci50cmlnZ2VyKAot ICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOmV4cGxhaW4tc3VtbWFyeScsCi0gICAg ICAgIHNlbGYsCi0gICAgICAgIHNlbGYuaGFuZGxlcgotICAgICAgKTsKLSAgICB9LAotCi0gICAg b25fZXhwbGFpbl9zZXR0aW5nczogZnVuY3Rpb24oZXYpIHsKLSAgICAgIHZhciBzZWxmID0gdGhp czsKLQotICAgICAgdGhpcy5fc3RvcEV2ZW50UHJvcG9nYXRpb24oZXYpOwotCi0gICAgICBzZWxm LmhhbmRsZXIudHJpZ2dlcigKLSAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjpleHBs YWluLXNldHRpbmdzJywKLSAgICAgICAgc2VsZiwKLSAgICAgICAgc2VsZi5oYW5kbGVyCi0gICAg ICApOwotICAgIH0sCi0KLQotICAgIGRvX25vdF9jbG9zZV9tZW51OiBmdW5jdGlvbihldikgewot ICAgICAgZXYuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfSwKLQotICAgIC8vIGNhbGxiYWNrIGZ1 bmN0aW9uIGZvciBzaG93IHF1ZXJ5IHRvb2wgY2xpY2suCi0gICAgb25fc2hvd19xdWVyeV90b29s OiBmdW5jdGlvbihldikgewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICB0aGlzLl9z dG9wRXZlbnRQcm9wb2dhdGlvbihldik7Ci0gICAgICB0aGlzLl9jbG9zZURyb3BEb3duKGV2KTsK LQotICAgICAgc2VsZi5oYW5kbGVyLnRyaWdnZXIoCi0gICAgICAgICdwZ2FkbWluLXNxbGVkaXRv cjpidXR0b246c2hvd19xdWVyeV90b29sJywKLSAgICAgICAgc2VsZiwKLSAgICAgICAgc2VsZi5o YW5kbGVyCi0gICAgICApOwotICAgIH0sCi0KLSAgICAvLyBjYWxsYmFjayBmdW5jdGlvbiBmb3Ig bG9hZCBmaWxlIGJ1dHRvbiBjbGljay4KLSAgICBvbl9maWxlX2xvYWQ6IGZ1bmN0aW9uKGV2KSB7 Ci0gICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgIHRoaXMuX3N0b3BFdmVudFByb3BvZ2F0 aW9uKGV2KTsKLSAgICAgIHRoaXMuX2Nsb3NlRHJvcERvd24oZXYpOwotCi0gICAgICAvLyBUcmln Z2VyIHRoZSBzYXZlIHNpZ25hbCB0byB0aGUgU3FsRWRpdG9yQ29udHJvbGxlciBjbGFzcwotICAg ICAgc2VsZi5oYW5kbGVyLnRyaWdnZXIoCi0gICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpidXR0 b246bG9hZF9maWxlJywKLSAgICAgICAgc2VsZiwKLSAgICAgICAgc2VsZi5oYW5kbGVyCi0gICAg ICApOwotICAgIH0sCi0KLSAgICBvbl9kb3dubG9hZDogZnVuY3Rpb24oKSB7Ci0gICAgICBxdWVy eVRvb2xBY3Rpb25zLmRvd25sb2FkKHRoaXMuaGFuZGxlcik7Ci0gICAgfSwKLQotICAgIGtleUFj dGlvbjogZnVuY3Rpb24oZXZlbnQpIHsKLSAgICAgIHZhciBwYW5lbF90eXBlPScnOwotCi0gICAg ICBwYW5lbF90eXBlID0ga2V5Ym9hcmRTaG9ydGN1dHMucHJvY2Vzc0V2ZW50UXVlcnlUb29sKAot ICAgICAgICB0aGlzLmhhbmRsZXIsIHF1ZXJ5VG9vbEFjdGlvbnMsIGV2ZW50LCB0aGlzLmRvY2tl cgotICAgICAgKTsKLQotICAgICAgaWYoIV8uaXNOdWxsKHBhbmVsX3R5cGUpICYmICFfLmlzVW5k ZWZpbmVkKHBhbmVsX3R5cGUpICYmIHBhbmVsX3R5cGUgIT0gJycpIHsKLSAgICAgICAgc2V0VGlt ZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLnRyaWdnZXIoYHBn YWRtaW46cXVlcnlfdG9vbDoke3BhbmVsX3R5cGV9OmZvY3VzYCk7Ci0gICAgICAgIH0sIDEwMCk7 Ci0gICAgICB9Ci0gICAgfSwKLQotICAgIC8vIENhbGxiYWNrIGZ1bmN0aW9uIGZvciB0aGUgY29t bWl0IGJ1dHRvbiBjbGljay4KLSAgICBvbl9jb21taXRfdHJhbnNhY3Rpb246IGZ1bmN0aW9uKCkg ewotICAgICAgdGhpcy5oYW5kbGVyLmNsb3NlX29uX2lkbGVfdHJhbnNhY3Rpb24gPSBmYWxzZTsK LSAgICAgIHRoaXMuaGFuZGxlci5oaXN0b3J5X3F1ZXJ5X3NvdXJjZSA9IFF1ZXJ5U291cmNlcy5D T01NSVQ7Ci0KLSAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMuZXhlY3V0ZUNvbW1pdCh0aGlzLmhhbmRs ZXIpOwotICAgIH0sCi0KLSAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgdGhlIHJvbGxiYWNr IGJ1dHRvbiBjbGljay4KLSAgICBvbl9yb2xsYmFja190cmFuc2FjdGlvbjogZnVuY3Rpb24oKSB7 Ci0gICAgICB0aGlzLmhhbmRsZXIuY2xvc2Vfb25faWRsZV90cmFuc2FjdGlvbiA9IGZhbHNlOwot ICAgICAgdGhpcy5oYW5kbGVyLmhpc3RvcnlfcXVlcnlfc291cmNlID0gUXVlcnlTb3VyY2VzLlJP TExCQUNLOwotCi0gICAgICBxdWVyeVRvb2xBY3Rpb25zLmV4ZWN1dGVSb2xsYmFjayh0aGlzLmhh bmRsZXIpOwotICAgIH0sCi0KLSAgICAvLyBDYWxsYmFjayBmdW5jdGlvbiBmb3IgbWFuYWdlIG1h Y3JvcyBidXR0b24gY2xpY2suCi0gICAgb25fbWFuYWdlX21hY3JvczogZnVuY3Rpb24oKSB7Ci0g ICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgIC8vIFRyaWdnZXIgdGhlIHNob3dfZmlsdGVy IHNpZ25hbCB0byB0aGUgU3FsRWRpdG9yQ29udHJvbGxlciBjbGFzcwotICAgICAgc2VsZi5oYW5k bGVyLnRyaWdnZXIoCi0gICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246bWFuYWdlX21h Y3JvcycsCi0gICAgICAgIHNlbGYsCi0gICAgICAgIHNlbGYuaGFuZGxlcgotICAgICAgKTsKLSAg ICB9LAotCi0gICAgLy8gQ2FsbGJhY2sgZnVuY3Rpb24gZm9yIG1hbmFnZSBtYWNyb3MgYnV0dG9u IGNsaWNrLgotICAgIG9uX2V4ZWN1dGVfbWFjcm86IGZ1bmN0aW9uKGUpIHsKLSAgICAgIGxldCBt YWNyb0lkID0gJChlLmN1cnJlbnRUYXJnZXQpLmRhdGEoJ21hY3JvLWlkJyk7Ci0gICAgICB0aGlz LmhhbmRsZXIuaGlzdG9yeV9xdWVyeV9zb3VyY2UgPSBRdWVyeVNvdXJjZXMuRVhFQ1VURTsKLSAg ICAgIHF1ZXJ5VG9vbEFjdGlvbnMuZXhlY3V0ZU1hY3JvKHRoaXMuaGFuZGxlciwgbWFjcm9JZCk7 Ci0gICAgfSwKLQotICAgIHNldF9zZWxlY3RlZF9vcHRpb246IGZ1bmN0aW9uKHNlbGVjdGVkX2Nv bmZpZykgewotICAgICAgdGhpcy5jb25uZWN0aW9uX2xpc3QuZm9yRWFjaChvcHRpb24gPT57Ci0g ICAgICAgIGlmKG9wdGlvblsnc2VydmVyJ10gPT0gc2VsZWN0ZWRfY29uZmlnWydzZXJ2ZXInXSAm JiBvcHRpb25bJ2RhdGFiYXNlJ10gPT0gc2VsZWN0ZWRfY29uZmlnWydkYXRhYmFzZSddICYmIG9w dGlvblsndXNlciddID09IHNlbGVjdGVkX2NvbmZpZ1sndXNlciddICYmIG9wdGlvblsncm9sZSdd ID09IHNlbGVjdGVkX2NvbmZpZ1sncm9sZSddKSB7Ci0gICAgICAgICAgc2VsZWN0ZWRfY29uZmln Wydpc19zZWxlY3RlZCddID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBvcHRp b25bJ2lzX3NlbGVjdGVkJ10gPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgfSk7Ci0gICAgfSwK LQotICAgIG9uX2NoYW5nZV9jb25uZWN0aW9uOiBmdW5jdGlvbihjb25uZWN0aW9uX2RldGFpbHMs IHJlZiwgYWRkX25ld19jb25uZWN0aW9uPXRydWUpIHsKLSAgICAgIGlmKCFjb25uZWN0aW9uX2Rl dGFpbHNbJ2lzX3NlbGVjdGVkJ10pIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAg ICBpZihhZGRfbmV3X2Nvbm5lY3Rpb24pIHsKLSAgICAgICAgICBOb3RpZnkuY29uZmlybShnZXR0 ZXh0KCdDaGFuZ2UgY29ubmVjdGlvbicpLAotICAgICAgICAgICAgZ2V0dGV4dCgnQnkgY2hhbmdp bmcgdGhlIGNvbm5lY3Rpb24geW91IHdpbGwgbG9zZSBhbGwgeW91ciB1bnNhdmVkIGRhdGEgZm9y IHRoZSBjdXJyZW50IGNvbm5lY3Rpb24uIDxicj4gRG8geW91IHdhbnQgdG8gY29udGludWU/Jyks Ci0gICAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgc2VsZi5jaGFuZ2VfY29u bmVjdGlvbihjb25uZWN0aW9uX2RldGFpbHMsIHJlZiwgdHJ1ZSk7Ci0gICAgICAgICAgICB9LAot ICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIHZhciBsb2FkaW5nRGl2ID0g JCgnI21haW5fbG9hZGVyJyk7Ci0gICAgICAgICAgICAgIGxvYWRpbmdEaXYuYWRkQ2xhc3MoJ2Qt bm9uZScpOwotICAgICAgICAgICAgICBhbGVydGlmeS5uZXdDb25uZWN0aW9uRGlhbG9nKCkuZGVz dHJveSgpOwotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAg ICAgICApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHNlbGYuY2hhbmdlX2Nvbm5lY3Rp b24oY29ubmVjdGlvbl9kZXRhaWxzLCByZWYsIGZhbHNlKTsKLSAgICAgICAgfQotICAgICAgfQot ICAgIH0sCi0KLSAgICBjaGFuZ2VfY29ubmVjdGlvbjogZnVuY3Rpb24oY29ubmVjdGlvbl9kZXRh aWxzLCByZWYsIGFkZF9uZXdfY29ubmVjdGlvbikgewotICAgICAgdmFyIHNlbGYgPSB0aGlzOwot ICAgICAgdmFyIGxvYWRpbmdEaXYgPSBudWxsOwotICAgICAgdmFyIG1zZ0RpdiA9IG51bGw7Ci0g ICAgICBpZihyZWYpewotICAgICAgICBsb2FkaW5nRGl2ID0gJCgnI3Nob3dfZmlsdGVyX3Byb2dy ZXNzJyk7Ci0gICAgICAgIGxvYWRpbmdEaXYucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpOwotICAgICAg ICBtc2dEaXYgPSBsb2FkaW5nRGl2LmZpbmQoJy5zcWwtZWRpdG9yLWJ1c3ktdGV4dCcpOwotICAg ICAgICBtc2dEaXYudGV4dCgnQ29ubmVjdGluZyB0byBkYXRhYmFzZS4uLicpOwotICAgICAgfSBl bHNlewotICAgICAgICBsb2FkaW5nRGl2ID0gJCgnI21haW5fbG9hZGVyJyk7Ci0gICAgICAgIGxv YWRpbmdEaXYucmVtb3ZlQ2xhc3MoJ2Qtbm9uZScpOwotICAgICAgfQotICAgICAgc2VsZi5zZXRf c2VsZWN0ZWRfb3B0aW9uKGNvbm5lY3Rpb25fZGV0YWlscyk7Ci0gICAgICAkLmFqYXgoewotICAg ICAgICB1cmw6IHVybF9mb3IoJ2RhdGFncmlkLnVwZGF0ZV9xdWVyeV90b29sX2Nvbm5lY3Rpb24n LCB7Ci0gICAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi50cmFuc0lkLAotICAgICAgICAgICdzZ2lk JzogY29ubmVjdGlvbl9kZXRhaWxzWydzZXJ2ZXJfZ3JvdXAnXSwKLSAgICAgICAgICAnc2lkJzog Y29ubmVjdGlvbl9kZXRhaWxzWydzZXJ2ZXInXSwKLSAgICAgICAgICAnZGlkJzogY29ubmVjdGlv bl9kZXRhaWxzWydkYXRhYmFzZSddLAotICAgICAgICB9KSwKLSAgICAgICAgbWV0aG9kOiAnUE9T VCcsCi0gICAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsCi0gICAgICAgIGRh dGE6IEpTT04uc3RyaW5naWZ5KGNvbm5lY3Rpb25fZGV0YWlscyksCi0gICAgICB9KQotICAgICAg ICAuZG9uZShmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgICBpZihyZXMuc3VjY2VzcykgewotICAg ICAgICAgICAgZGVsZXRlIGNvbm5lY3Rpb25fZGV0YWlscy5wYXNzd29yZDsKLSAgICAgICAgICAg IHNlbGYudHJhbnNJZCA9IHJlcy5kYXRhLnRyYW5faWQ7Ci0gICAgICAgICAgICBzZWxmLmhhbmRs ZXIudHJhbnNJZCA9IHJlcy5kYXRhLnRyYW5faWQ7Ci0gICAgICAgICAgICBzZWxmLmhhbmRsZXIu dXJsX3BhcmFtcyA9IHsKLSAgICAgICAgICAgICAgJ2RpZCc6IGNvbm5lY3Rpb25fZGV0YWlsc1sn ZGF0YWJhc2UnXSwKLSAgICAgICAgICAgICAgJ2lzX3F1ZXJ5X3Rvb2wnOiBzZWxmLmhhbmRsZXIu dXJsX3BhcmFtcy5pc19xdWVyeV90b29sLAotICAgICAgICAgICAgICAnc2VydmVyX3R5cGUnOiBz ZWxmLmhhbmRsZXIudXJsX3BhcmFtcy5zZXJ2ZXJfdHlwZSwKLSAgICAgICAgICAgICAgJ3NnaWQn OiBjb25uZWN0aW9uX2RldGFpbHNbJ3NlcnZlcl9ncm91cCddLAotICAgICAgICAgICAgICAnc2lk JzogY29ubmVjdGlvbl9kZXRhaWxzWydzZXJ2ZXInXSwKLSAgICAgICAgICAgICAgJ3RpdGxlJzog Y29ubmVjdGlvbl9kZXRhaWxzWyd0aXRsZSddLAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAg IHNlbGYuc2V0X2VkaXRvcl90aXRsZShfLnVuZXNjYXBlKGNvbm5lY3Rpb25fZGV0YWlsc1snY29u bl90aXRsZSddKSk7Ci0gICAgICAgICAgICBzZWxmLmhhbmRsZXIuc2V0VGl0bGUoXy51bmVzY2Fw ZShzZWxmLmhhbmRsZXIudXJsX3BhcmFtcy50aXRsZSkpOwotICAgICAgICAgICAgbGV0IHN1Y2Nl c3NfbXNnID0gY29ubmVjdGlvbl9kZXRhaWxzWydzZXJ2ZXJfbmFtZSddICsgJy8nICsgY29ubmVj dGlvbl9kZXRhaWxzWydkYXRhYmFzZV9uYW1lJ10gKyAnLSBEYXRhYmFzZSBjb25uZWN0ZWQnOwot ICAgICAgICAgICAgTm90aWZ5LnN1Y2Nlc3Moc3VjY2Vzc19tc2cpOwotICAgICAgICAgICAgaWYo cmVmKXsKLSAgICAgICAgICAgICAgbGV0IGNvbm5lY3Rpb25fZGF0YSA9IHsKLSAgICAgICAgICAg ICAgICAnc2VydmVyX2dyb3VwJzogc2VsZi5oYW5kbGVyLnVybF9wYXJhbXMuc2dpZCwKLSAgICAg ICAgICAgICAgICAnc2VydmVyJzogY29ubmVjdGlvbl9kZXRhaWxzWydzZXJ2ZXInXSwKLSAgICAg ICAgICAgICAgICAnZGF0YWJhc2UnOiBjb25uZWN0aW9uX2RldGFpbHNbJ2RhdGFiYXNlJ10sCi0g ICAgICAgICAgICAgICAgJ3VzZXInOiBjb25uZWN0aW9uX2RldGFpbHNbJ3VzZXInXSwKLSAgICAg ICAgICAgICAgICAndGl0bGUnOiBjb25uZWN0aW9uX2RldGFpbHNbJ3RpdGxlJ10sCi0gICAgICAg ICAgICAgICAgJ2Nvbm5fdGl0bGUnOiBjb25uZWN0aW9uX2RldGFpbHNbJ2Nvbm5fdGl0bGUnXSwK LSAgICAgICAgICAgICAgICAncm9sZSc6IGNvbm5lY3Rpb25fZGV0YWlsc1sncm9sZSddLAotICAg ICAgICAgICAgICAgICdpc19hbGxvd19uZXdfY29ubmVjdGlvbic6IHRydWUsCi0gICAgICAgICAg ICAgICAgJ2RhdGFiYXNlX25hbWUnOiBjb25uZWN0aW9uX2RldGFpbHNbJ2RhdGFiYXNlX25hbWUn XSwKLSAgICAgICAgICAgICAgICAnc2VydmVyX25hbWUnOiBjb25uZWN0aW9uX2RldGFpbHNbJ3Nl cnZlcl9uYW1lJ10sCi0gICAgICAgICAgICAgICAgJ2lzX3NlbGVjdGVkJzogdHJ1ZSwKLSAgICAg ICAgICAgICAgfTsKLSAgICAgICAgICAgICAgZGVsZXRlIGNvbm5lY3Rpb25fZGF0YS5wYXNzd29y ZDsKLSAgICAgICAgICAgICAgaWYoYWRkX25ld19jb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICAg ICAgc2VsZi5jb25uZWN0aW9uX2xpc3QudW5zaGlmdChjb25uZWN0aW9uX2RhdGEpOwotICAgICAg ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgc2VsZi5yZW5kZXJfY29ubmVjdGlvbihzZWxmLmNv bm5lY3Rpb25fbGlzdCk7Ci0gICAgICAgICAgICAgIGxvYWRpbmdEaXYuYWRkQ2xhc3MoJ2Qtbm9u ZScpOwotICAgICAgICAgICAgICBhbGVydGlmeS5uZXdDb25uZWN0aW9uRGlhbG9nKCkuZGVzdHJv eSgpOwotICAgICAgICAgICAgICBhbGVydGlmeS5jb25uZWN0U2VydmVyKCkuZGVzdHJveSgpOwot ICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgbG9hZGluZ0Rpdi5hZGRDbGFzcygn ZC1ub25lJyk7Ci0gICAgICAgICAgICAgIGFsZXJ0aWZ5LmNvbm5lY3RTZXJ2ZXIoKS5kZXN0cm95 KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICAgIHJldHVybiB0cnVlOwot ICAgICAgICB9KQotICAgICAgICAuZmFpbChmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgICBpZih4 aHIuc3RhdHVzID09IDQyOCkgewotICAgICAgICAgICAgdmFyIGNvbm5lY3Rpb25faW5mbyA9IGNv bm5lY3Rpb25fZGV0YWlsczsKLSAgICAgICAgICAgIGlmKHJlZikgewotICAgICAgICAgICAgICBj b25uZWN0aW9uX2luZm8gPSB7fTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFsZXJ0aWZ5 LmNvbm5lY3RTZXJ2ZXIoJ0Nvbm5lY3QgdG8gc2VydmVyJywgeGhyLnJlc3BvbnNlSlNPTi5yZXN1 bHQsIGNvbm5lY3Rpb25fZGV0YWlsc1snc2VydmVyJ10sIGZhbHNlLCBjb25uZWN0aW9uX2luZm8p OwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBOb3RpZnkuZXJyb3IoeGhyLnJlc3Bv bnNlSlNPTlsnZXJyb3Jtc2cnXSk7Ci0gICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICB9LAot ICB9KTsKLQotCi0KLSAgLyogRGVmaW5pbmcgY29udHJvbGxlciBjbGFzcyBmb3IgZGF0YSBncmlk LCB3aGljaCBhY3R1YWxseQotICAgKiBwZXJmb3JtIHRoZSBvcGVyYXRpb25zIGxpa2UgZXhlY3V0 aW5nIHRoZSBzcWwgcXVlcnksIHBvbGwgdGhlIHJlc3VsdCwKLSAgICogcmVuZGVyIHRoZSBkYXRh IGluIHRoZSBncmlkLCBTYXZlL1JlZnJlc2ggdGhlIGRhdGEgZXRjLi4uCi0gICAqLwotICB2YXIg U3FsRWRpdG9yQ29udHJvbGxlciA9IGZ1bmN0aW9uKCkgewotICAgIHRoaXMuaW5pdGlhbGl6ZS5h cHBseSh0aGlzLCBhcmd1bWVudHMpOwotICB9OwotCi0gIC8qIFRoaXMgZnVuY3Rpb24gaXMgdXNl ZCB0byBjaGVjayB3aGV0aGVyIHVzZXIgaGF2ZSBjbG9zZWQKLSAgICogdGhlIG1haW4gd2luZG93 IHdoZW4gcXVlcnkgdG9vbCBpcyBvcGVuZWQgb24gbmV3IHRhYgotICAgKi8KLSAgdmFyIGlzX21h aW5fd2luZG93X2FsaXZlID0gZnVuY3Rpb24oKSB7Ci0KLSAgICBpZigocGdXaW5kb3cuZGVmYXVs dCAmJiBwZ1dpbmRvdy5kZWZhdWx0LmNsb3NlZCkgfHwKLSAgICAgICAgcGdXaW5kb3cuZGVmYXVs dC5wZ0FkbWluICYmIHBnV2luZG93LmRlZmF1bHQucGdBZG1pbi5Ccm93c2VyCi0gICAgICAgICAg ICAmJiBwZ1dpbmRvdy5kZWZhdWx0LnBnQWRtaW4uQnJvd3Nlci5wcmVmZXJlbmNlX3ZlcnNpb24o KSA8PSAwKSB7Ci0KLSAgICAgIE5vdGlmeS5hbGVydChnZXR0ZXh0KCdDb25uZWN0aW9uIGxvc3Qn KSwKLSAgICAgICAgZ2V0dGV4dCgnVGhlIHBnQWRtaW4gYnJvd3NlciB3aW5kb3cgaGFzIGJlZW4g Y2xvc2VkIGFuZCB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGlzIGxvc3QuIFBsZWFzZSBj bG9zZSB0aGlzIHdpbmRvdyBhbmQgb3BlbiBhIG5ldyBwZ0FkbWluIHNlc3Npb24uJyksCi0gICAg ICAgIGZ1bmN0aW9uKCl7Ci0gICAgICAgICAgLy9DbG9zZSB0aGUgd2luZG93IGFmdGVyIGNvbm5l Y3Rpb24gaXMgbG9zdAotICAgICAgICAgIHdpbmRvdy5jbG9zZSgpOwotICAgICAgICB9LAotICAg ICAgICBnZXR0ZXh0KCdDbG9zZScpCi0gICAgICApOwotICAgIH0KLSAgfTsKLQotICBfLmV4dGVu ZCgKLSAgICBTcWxFZGl0b3JDb250cm9sbGVyLnByb3RvdHlwZSwKLSAgICBCYWNrYm9uZS5FdmVu dHMsCi0gICAgewotICAgICAgaW5pdGlhbGl6ZTogZnVuY3Rpb24oY29udGFpbmVyKSB7Ci0gICAg ICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgdGhpcy5jb250YWluZXIgPSBjb250YWluZXI7 Ci0gICAgICAgIHRoaXMuc3RhdGUgPSB7fTsKLSAgICAgICAgdGhpcy5jc3JmX3Rva2VuID0gcGdB ZG1pbi5jc3JmX3Rva2VuOwotCi0gICAgICAgIC8vY2FsbCB0byBjaGVjayB3aGV0aGVyIHVzZXIg aGF2ZSBjbG9zZWQgdGhlIHBhcmVudCB3aW5kb3cgYW5kIHRyeWluZyB0byByZWZyZXNoLCBpZiB5 ZXMgcmV0dXJuIGVycm9yLgotICAgICAgICBpc19tYWluX3dpbmRvd19hbGl2ZSgpOwotCi0gICAg ICAgIC8vIERpc2FibGUgYW5pbWF0aW9uIGZpcnN0Ci0gICAgICAgIG1vZGlmeUFuaW1hdGlvbi5t b2RpZnlBbGVydGlmeUFuaW1hdGlvbigpOwotCi0gICAgICAgIGlmICghYWxlcnRpZnkuZGxnR2V0 U2VydmVyUGFzcykgewotICAgICAgICAgIGFsZXJ0aWZ5LmRpYWxvZygnZGxnR2V0U2VydmVyUGFz cycsIGZ1bmN0aW9uIGZhY3RvcnkoKSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAg ICAgICBtYWluOiBmdW5jdGlvbigKLSAgICAgICAgICAgICAgICB0aXRsZSwgbWVzc2FnZQotICAg ICAgICAgICAgICApIHsKLSAgICAgICAgICAgICAgICB0aGlzLnNldCgndGl0bGUnLCB0aXRsZSk7 Ci0gICAgICAgICAgICAgICAgdGhpcy5zZXR0aW5nKCdtZXNzYWdlJyxtZXNzYWdlKTsKLSAgICAg ICAgICAgICAgfSwKLSAgICAgICAgICAgICAgc2V0dXA6ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg ICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICAgIGJ1dHRvbnM6WwotICAgICAgICAgICAg ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgnT0snKSwKLSAg ICAgICAgICAgICAgICAgICAgICBrZXk6IDEzLAotICAgICAgICAgICAgICAgICAgICAgIGNsYXNz TmFtZTogJ2J0biBidG4tcHJpbWFyeScsCi0gICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAg ICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdDYW5j ZWwnKSwKLSAgICAgICAgICAgICAgICAgICAgICBrZXk6IDI3LAotICAgICAgICAgICAgICAgICAg ICAgIGNsYXNzTmFtZTogJ2J0biBidG4tZGFuZ2VyJywKLSAgICAgICAgICAgICAgICAgICAgfSwK LSAgICAgICAgICAgICAgICAgIF0sCi0gICAgICAgICAgICAgICAgICBmb2N1czogewotICAgICAg ICAgICAgICAgICAgICBlbGVtZW50OiAnI3Bhc3N3b3JkJywKLSAgICAgICAgICAgICAgICAgICAg c2VsZWN0OiB0cnVlLAotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAgIG9w dGlvbnM6IHsKLSAgICAgICAgICAgICAgICAgICAgbW9kYWw6IDAsCi0gICAgICAgICAgICAgICAg ICAgIHJlc2l6YWJsZTogZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIG1heGltaXphYmxlOiBm YWxzZSwKLSAgICAgICAgICAgICAgICAgICAgcGlubmFibGU6IGZhbHNlLAotICAgICAgICAgICAg ICAgICAgfSwKLSAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICB9LAotICAgICAgICAg ICAgICBidWlsZDpmdW5jdGlvbigpIHsvKiAqL30sCi0gICAgICAgICAgICAgIHNldHRpbmdzOnsK LSAgICAgICAgICAgICAgICBtZXNzYWdlOiBudWxsLAotICAgICAgICAgICAgICB9LAotICAgICAg ICAgICAgICBwcmVwYXJlOmZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29u dGVudCh0aGlzLnNldHRpbmcoJ21lc3NhZ2UnKSk7Ci0gICAgICAgICAgICAgIH0sCi0gICAgICAg ICAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbihjbG9zZUV2ZW50KSB7Ci0gICAgICAgICAgICAgICAg aWYgKGNsb3NlRXZlbnQuYnV0dG9uLnRleHQgPT0gZ2V0dGV4dCgnT0snKSkgewotICAgICAgICAg ICAgICAgICAgdmFyIHBhc3NkYXRhID0gJCh0aGlzLmVsZW1lbnRzLmNvbnRlbnQpLmZpbmQoJyNm cm1QYXNzd29yZCcpLnNlcmlhbGl6ZSgpOwotICAgICAgICAgICAgICAgICAgc2VsZi5pbml0X2Nv bm5lY3Rpb24oZmFsc2UsIHBhc3NkYXRhKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgIH0sCi0gICAgICAgICAgICB9OwotICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgICAg IHRoaXMub24oJ3BnYWRtaW4tZGF0YWdyaWQ6dHJhbnNhY3Rpb246Y3JlYXRlZCcsIGZ1bmN0aW9u KHRyYW5zX29iaikgewotICAgICAgICAgIHNlbGYudHJhbnNJZCA9IHRyYW5zX29iai5ncmlkVHJh bnNJZDsKLSAgICAgICAgICBzZWxmLndhcm5fYmVmb3JlX2NvbnRpbnVlKCk7Ci0gICAgICAgIH0p OwotICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9uKCdwZ2FkbWluOnVzZXI6bG9nZ2VkLWluJywg ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgc2VsZi5pbml0VHJhbnNhY3Rpb24oKTsKLSAgICAgICAg fSk7Ci0gICAgICB9LAotICAgICAgc2F2ZVN0YXRlOiBmdW5jdGlvbihmbiwgYXJncykgewotICAg ICAgICBpZiAoZm4pIHsKLSAgICAgICAgICB0aGlzLnN0YXRlID0gewotICAgICAgICAgICAgJ2Zu JzogZm4sCi0gICAgICAgICAgICAnYXJncyc6IGFyZ3MsCi0gICAgICAgICAgfTsKLSAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICB0aGlzLnN0YXRlID0ge307Ci0gICAgICAgIH0KLSAgICAgIH0s Ci0KLSAgICAgIGluaXRUcmFuc2FjdGlvbjogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBzZWxm ID0gdGhpcywgdXJsX2VuZHBvaW50OwotICAgICAgICBpZiAoc2VsZi5pc19xdWVyeV90b29sKSB7 Ci0gICAgICAgICAgdXJsX2VuZHBvaW50ID0gJ2RhdGFncmlkLmluaXRpYWxpemVfcXVlcnlfdG9v bCc7Ci0KLSAgICAgICAgICAvLyBJZiBkYXRhYmFzZSBub3QgcHJlc2VudCB0aGVuIHVzZSBNYWlu dGVuYW5jZSBkYXRhYmFzZQotICAgICAgICAgIC8vIFdlIHdpbGwgaGFuZGxlIHRoaXMgYXQgc2Vy dmVyIHNpZGUKLSAgICAgICAgICBpZiAoc2VsZi51cmxfcGFyYW1zLmRpZCkgewotICAgICAgICAg ICAgdXJsX2VuZHBvaW50ID0gJ2RhdGFncmlkLmluaXRpYWxpemVfcXVlcnlfdG9vbF93aXRoX2Rp ZCc7Ci0gICAgICAgICAgfQotCi0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgdXJsX2VuZHBv aW50ID0gJ2RhdGFncmlkLmluaXRpYWxpemVfZGF0YWdyaWQnOwotICAgICAgICB9Ci0KLSAgICAg ICAgdmFyIGJhc2VVcmwgPSB1cmxfZm9yKHVybF9lbmRwb2ludCwgewotICAgICAgICAgIC4uLnNl bGYudXJsX3BhcmFtcywKLSAgICAgICAgICAndHJhbnNfaWQnOiBzZWxmLnRyYW5zSWQsCi0gICAg ICAgIH0pOwotCi0gICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgdXJsOiBiYXNlVXJsLAotICAg ICAgICAgIHR5cGU6ICdQT1NUJywKLSAgICAgICAgICBkYXRhOiBzZWxmLmlzX3F1ZXJ5X3Rvb2w/ bnVsbDpKU09OLnN0cmluZ2lmeShzZWxmLnVybF9wYXJhbXMuc3FsX2ZpbHRlciksCi0gICAgICAg ICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJywKLSAgICAgICAgfSkuZG9uZSgocmVz KT0+ewotICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMudHJpZ2dlcigKLSAgICAgICAgICAgICdw Z2FkbWluOnF1ZXJ5X3Rvb2w6Y29ubmVjdGVkOicgKyBzZWxmLnRyYW5zSWQsIHJlcy5kYXRhCi0g ICAgICAgICAgKTsKLSAgICAgICAgfSkuZmFpbCgoeGhyLCBzdGF0dXMsIGVycm9yKT0+ewotICAg ICAgICAgIGlmICh4aHIuc3RhdHVzID09PSA0MTApIHsKLSAgICAgICAgICAvL2NoZWNraW5nIGZv ciBRdWVyeSB0b29sIGluIG5ldyB3aW5kb3cuCi0gICAgICAgICAgICB2YXIgb3Blbl9uZXdfdGFi ID0gc2VsZi5icm93c2VyX3ByZWZlcmVuY2VzLm5ld19icm93c2VyX3RhYl9vcGVuOwotICAgICAg ICAgICAgaWYob3Blbl9uZXdfdGFiICYmIG9wZW5fbmV3X3RhYi5pbmNsdWRlcygncXQnKSkgewot ICAgICAgICAgICAgICBwZ0Jyb3dzZXIucmVwb3J0X2Vycm9yKGdldHRleHQoJ0Vycm9yIGZldGNo aW5nIHJvd3MgLSAlcy4nLCB4aHIuc3RhdHVzVGV4dCksIHhoci5yZXNwb25zZUpTT04uZXJyb3Jt c2csIHVuZGVmaW5lZCwgd2luZG93LmNsb3NlKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgIHBnQnJvd3Nlci5yZXBvcnRfZXJyb3IoZ2V0dGV4dCgnRXJyb3IgZmV0Y2hpbmcg cm93cyAtICVzLicsIHhoci5zdGF0dXNUZXh0KSwgeGhyLnJlc3BvbnNlSlNPTi5lcnJvcm1zZywg dW5kZWZpbmVkLCBzZWxmLmNsb3NlLmJpbmQoc2VsZikpOwotICAgICAgICAgICAgfQotICAgICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoeGhyLnJlc3BvbnNlVGV4dC5zZWFyY2goJ1Rp Y2tldCBleHBpcmVkJykgIT09IC0xKSB7Ci0gICAgICAgICAgICAgIGxldCBmZXRjaFRpY2tldCA9 IEtlcmJlcm9zLmZldGNoX3RpY2tldCgpOwotICAgICAgICAgICAgICBmZXRjaFRpY2tldC50aGVu KAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgc2VsZi5p bml0VHJhbnNhY3Rpb24oKTsKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgIGZ1 bmN0aW9uKCkgewotICAgICAgICAgICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKAot ICAgICAgICAgICAgICAgICAgICAncGdhZG1pbjpxdWVyeV90b29sOmNvbm5lY3RlZF9mYWlsOicg KyBzZWxmLnRyYW5zSWQsIHhociwgZXJyb3IKLSAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICApOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAg ICAgICAgICAgcGdCcm93c2VyLkV2ZW50cy50cmlnZ2VyKAotICAgICAgICAgICAgICAgICdwZ2Fk bWluOnF1ZXJ5X3Rvb2w6Y29ubmVjdGVkX2ZhaWw6JyArIHNlbGYudHJhbnNJZCwgeGhyLCBlcnJv cgotICAgICAgICAgICAgICApOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAg fSk7Ci0gICAgICB9LAotCi0gICAgICBoYW5kbGVfY29ubmVjdGlvbl9sb3N0OiBmdW5jdGlvbihj cmVhdGVfdHJhbnNhY3Rpb24sIHhocikgewotICAgICAgICAvKiBJZiByZXNwb25zZUpTT04gaXMg dW5kZWZpbmVkIHRoZW4gaXQgY291bGQgYmUgb2JqZWN0IG9mCi0gICAgICAgICAqIGF4aW9zKFBy b21pc2UgSFRUUCkgcmVzcG9uc2UsIHNvIHdlIHNob3VsZCBjaGVjayBhY2NvcmRpbmdseS4KLSAg ICAgICAgICovCi0gICAgICAgIGlmICh4aHIucmVzcG9uc2VKU09OICE9PSB1bmRlZmluZWQgJiYK LSAgICAgICAgICAgIHhoci5yZXNwb25zZUpTT04uZGF0YSAmJiAheGhyLnJlc3BvbnNlSlNPTi5k YXRhLmNvbm5faWQpIHsKLSAgICAgICAgICAvLyBpZiBjb25uX2lkIGlzIG51bGwgdGhlbiB0aGlz IGlzIG1haW50ZW5hbmNlIGRiLgotICAgICAgICAgIC8vIHNvIGF0dGVtcHQgY29ubmVjdGlvbiBj b25uZWN0IHdpdGhvdXQgcHJvbXB0LgotICAgICAgICAgIHRoaXMuaW5pdF9jb25uZWN0aW9uKGNy ZWF0ZV90cmFuc2FjdGlvbik7Ci0gICAgICAgIH0gZWxzZSBpZiAoeGhyLmRhdGEgIT09IHVuZGVm aW5lZCAmJgotICAgICAgICAgIHhoci5kYXRhLmRhdGEgJiYgIXhoci5kYXRhLmRhdGEuY29ubl9p ZCkgewotICAgICAgICAgIC8vIGlmIGNvbm5faWQgaXMgbnVsbCB0aGVuIHRoaXMgaXMgbWFpbnRl bmFuY2UgZGIuCi0gICAgICAgICAgLy8gc28gYXR0ZW1wdCBjb25uZWN0aW9uIGNvbm5lY3Qgd2l0 aG91dCBwcm9tcHQuCi0gICAgICAgICAgdGhpcy5pbml0X2Nvbm5lY3Rpb24oY3JlYXRlX3RyYW5z YWN0aW9uKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICB0aGlzLndhcm5fYmVmb3JlX2Nv bnRpbnVlKCk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0gICAgICBoYW5kbGVfY3J5cHRrZXlfbWlz c2luZzogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHBnQnJvd3Nlci5zZXRfbWFzdGVyX3Bhc3N3b3Jk KCcnLCAoKT0+ewotICAgICAgICAgIHRoaXMud2Fybl9iZWZvcmVfY29udGludWUoKTsKLSAgICAg ICAgfSk7Ci0gICAgICB9LAotICAgICAgd2Fybl9iZWZvcmVfY29udGludWU6IGZ1bmN0aW9uKCkg ewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgICAgTm90aWZ5LmNvbmZpcm0oCi0g ICAgICAgICAgZ2V0dGV4dCgnQ29ubmVjdGlvbiBXYXJuaW5nJyksCi0gICAgICAgICAgJzxwIHN0 eWxlPSJmbG9hdDpsZWZ0IG1hcmdpbi1yaWdodDowLjVlbSI+JysKLSAgICAgICAgICAgICc8c3Bh biBjbGFzcz0iZmEgZmEtZXhjbGFtYXRpb24tdHJpYW5nbGUgd2Fybi1pY29uIiBhcmlhLWhpZGRl bj0idHJ1ZSIgcm9sZT0iaW1nIj4nKwotICAgICAgICAgICAgJzwvc3Bhbj4nKwotICAgICAgICAg ICc8L3A+JysKLSAgICAgICAgICAnPHAgc3R5bGU9ImRpc3BsYXk6IGlubGluZS1ibG9jazsiPicr Ci0gICAgICAgICAgICAnPHNwYW4gY2xhc3M9Indhcm4taGVhZGVyIj4nKwotICAgICAgICAgICAg ICBnZXR0ZXh0KCdUaGUgYXBwbGljYXRpb24gaGFzIGxvc3QgdGhlIGRhdGFiYXNlIGNvbm5lY3Rp b246JykrCi0gICAgICAgICAgICAnPC9zcGFuPicrCi0gICAgICAgICAgICAnPGJyPicrCi0gICAg ICAgICAgICAnPHNwYW4gY2xhc3M9Indhcm4tYm9keSI+JysKLSAgICAgICAgICAgICAgZ2V0dGV4 dCgn4oGDIElmIHRoZSBjb25uZWN0aW9uIHdhcyBpZGxlIGl0IG1heSBoYXZlIGJlZW4gZm9yY2li bHkgZGlzY29ubmVjdGVkLicpKwotICAgICAgICAgICAgJzxicj4nKwotICAgICAgICAgICAgICBn ZXR0ZXh0KCfigYMgVGhlIGFwcGxpY2F0aW9uIHNlcnZlciBvciBkYXRhYmFzZSBzZXJ2ZXIgbWF5 IGhhdmUgYmVlbiByZXN0YXJ0ZWQuJykrCi0gICAgICAgICAgICAnPGJyPicrCi0gICAgICAgICAg ICAgIGdldHRleHQoJ+KBgyBUaGUgdXNlciBzZXNzaW9uIG1heSBoYXZlIHRpbWVkIG91dC4nKSsK LSAgICAgICAgICAgICc8L3NwYW4+JysKLSAgICAgICAgICAgICc8YnI+JysKLSAgICAgICAgICAg ICc8c3BhbiBjbGFzcz0id2Fybi1mb290ZXIiPicrCi0gICAgICAgICAgICBnZXR0ZXh0KCdEbyB5 b3Ugd2FudCB0byBjb250aW51ZSBhbmQgZXN0YWJsaXNoIGEgbmV3IHNlc3Npb24/JykrCi0gICAg ICAgICAgICAnPC9zcGFuPicrCi0gICAgICAgICAgJzwvcD4nLAotICAgICAgICAgIGZ1bmN0aW9u KCkgewotICAgICAgICAgICAgaWYgKCdmbicgaW4gc2VsZi5zdGF0ZSkgewotICAgICAgICAgICAg ICB2YXIgZm4gPSBzZWxmLnN0YXRlWydmbiddLAotICAgICAgICAgICAgICAgIGFyZ3MgPSBzZWxm LnN0YXRlWydhcmdzJ107Ci0gICAgICAgICAgICAgIHNlbGYuc2F2ZVN0YXRlKCk7Ci0gICAgICAg ICAgICAgIGlmIChhcmdzLmluZGV4T2YoJ2Nvbm5lY3QnKSA9PSAtMSkgewotICAgICAgICAgICAg ICAgIGFyZ3MucHVzaCgnY29ubmVjdCcpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg IGlmIChmbiBpbiBzZWxmKSB7Ci0gICAgICAgICAgICAgICAgc2VsZltmbl0uYXBwbHkoc2VsZiwg YXJncyk7Ci0gICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS53 YXJuKCdUaGUgY2FsbGJhY2sgaXMgbm90IHZhbGlkIGZvciB0aGlzIGNvbnRleHQnKTsKLSAgICAg ICAgICAgICAgfQotCi0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSwgZnVuY3Rpb24oKSB7Ci0g ICAgICAgICAgICBzZWxmLnNhdmVTdGF0ZSgpOwotICAgICAgICAgIH0sCi0gICAgICAgICAgZ2V0 dGV4dCgnQ29udGludWUnKSwKLSAgICAgICAgICBnZXR0ZXh0KCdDYW5jZWwnKQotICAgICAgICAp OwotICAgICAgfSwKLSAgICAgIGluaXRfY29ubmVjdGlvbjogZnVuY3Rpb24oY3JlYXRlX3RyYW5z YWN0aW9uLCBwYXNzZGF0YSkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgICQu cG9zdCh1cmxfZm9yKCdOT0RFLXNlcnZlci5jb25uZWN0X2lkJywgewotICAgICAgICAgICdnaWQn OiB0aGlzLnVybF9wYXJhbXMuc2dpZCwKLSAgICAgICAgICAnc2lkJzogdGhpcy51cmxfcGFyYW1z LnNpZCwKLSAgICAgICAgfSkscGFzc2RhdGEpCi0gICAgICAgICAgLmRvbmUoZnVuY3Rpb24ocmVz KSB7Ci0gICAgICAgICAgICBpZiAocmVzLnN1Y2Nlc3MgPT0gMSkgewotICAgICAgICAgICAgICBO b3RpZnkuc3VjY2VzcyhyZXMuaW5mbyk7Ci0gICAgICAgICAgICAgIGlmIChjcmVhdGVfdHJhbnNh Y3Rpb24pIHsKLSAgICAgICAgICAgICAgICBzZWxmLmluaXRUcmFuc2FjdGlvbigpOwotICAgICAg ICAgICAgICB9IGVsc2UgaWYgKCdmbicgaW4gc2VsZi5zdGF0ZSkgewotICAgICAgICAgICAgICAg IHZhciBmbiA9IHNlbGYuc3RhdGVbJ2ZuJ10sCi0gICAgICAgICAgICAgICAgICBhcmdzID0gc2Vs Zi5zdGF0ZVsnYXJncyddOwotICAgICAgICAgICAgICAgIHNlbGYuc2F2ZVN0YXRlKCk7Ci0gICAg ICAgICAgICAgICAgc2VsZltmbl0uYXBwbHkoc2VsZiwgYXJncyk7Ci0gICAgICAgICAgICAgIH0K LSAgICAgICAgICAgIH0KLSAgICAgICAgICB9KQotICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uKHho cikgewotICAgICAgICAgICAgbGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxlUXVlcnlU b29sQWpheEVycm9yKAotICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCB4aHIsIG51bGwsIFtd LCBmYWxzZQotICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIGlmIChtc2cpCi0gICAgICAgICAg ICAgIGFsZXJ0aWZ5LmRsZ0dldFNlcnZlclBhc3MoCi0gICAgICAgICAgICAgICAgZ2V0dGV4dCgn Q29ubmVjdCB0byBTZXJ2ZXInKSwgbXNnCi0gICAgICAgICAgICAgICk7Ci0gICAgICAgICAgfSk7 Ci0gICAgICB9LAotICAgICAgLyogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNyZWF0ZSBpbnN0 YW5jZSBvZiBTUUxFZGl0b3JWaWV3LAotICAgICAgICogY2FsbCB0aGUgcmVuZGVyIG1ldGhvZCBv ZiB0aGUgZ3JpZCB2aWV3IHRvIHJlbmRlciB0aGUgc2xpY2tncmlkCi0gICAgICAgKiBoZWFkZXIg YW5kIGxvYWRpbmcgaWNvbiBhbmQgc3RhcnQgZXhlY3V0aW9uIG9mIHRoZSBzcWwgcXVlcnkuCi0g ICAgICAgKi8KLSAgICAgIHN0YXJ0OiBmdW5jdGlvbih0cmFuc0lkLCB1cmxfcGFyYW1zLCBsYXlv dXQsIG1hY3JvcykgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgICAgc2VsZi5p c19xdWVyeV90b29sID0gdXJsX3BhcmFtcy5pc19xdWVyeV90b29sPT09J3RydWUnP3RydWU6ZmFs c2U7Ci0gICAgICAgIHNlbGYucm93c19hZmZlY3RlZCA9IDA7Ci0gICAgICAgIHNlbGYubWFya2Vk X2xpbmVfbm8gPSAwOwotICAgICAgICBzZWxmLmhhc19tb3JlX3Jvd3MgPSBmYWxzZTsKLSAgICAg ICAgc2VsZi5mZXRjaGluZ19yb3dzID0gZmFsc2U7Ci0gICAgICAgIHNlbGYuY2xvc2Vfb25fc2F2 ZSA9IGZhbHNlOwotICAgICAgICBzZWxmLmNsb3NlX29uX2lkbGVfdHJhbnNhY3Rpb24gPSBmYWxz ZTsKLSAgICAgICAgc2VsZi5sYXN0X3RyYW5zYWN0aW9uX3N0YXR1cyA9IC0xOwotICAgICAgICBz ZWxmLnNlcnZlcl90eXBlID0gdXJsX3BhcmFtcy5zZXJ2ZXJfdHlwZTsKLSAgICAgICAgc2VsZi51 cmxfcGFyYW1zID0gdXJsX3BhcmFtczsKLSAgICAgICAgc2VsZi5pc190cmFuc2FjdGlvbl9idXR0 b25zX2Rpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgc2VsZi5pc19zYXZlX3Jlc3VsdHNfdG9fZmls ZV9kaXNhYmxlZCA9IHRydWU7Ci0KLSAgICAgICAgLy8gV2UgZG8gbm90IGFsbG93IHRvIGNhbGwg dGhlIHN0YXJ0IG11bHRpcGxlIHRpbWVzLgotICAgICAgICBpZiAoc2VsZi5ncmlkVmlldykKLSAg ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgc2VsZi5ncmlkVmlldyA9IG5ldyBTUUxFZGl0b3JW aWV3KHsKLSAgICAgICAgICBlbDogc2VsZi5jb250YWluZXIsCi0gICAgICAgICAgaGFuZGxlcjog c2VsZiwKLSAgICAgICAgICBsYXlvdXQ6IGxheW91dCwKLSAgICAgICAgfSk7Ci0gICAgICAgIHNl bGYudHJhbnNJZCA9IHNlbGYuZ3JpZFZpZXcudHJhbnNJZCA9IHRyYW5zSWQ7Ci0gICAgICAgIHNl bGYubWFjcm9zID0gc2VsZi5ncmlkVmlldy5tYWNyb3MgPSBtYWNyb3M7Ci0KLSAgICAgICAgc2Vs Zi5ncmlkVmlldy5jdXJyZW50X2ZpbGUgPSB1bmRlZmluZWQ7Ci0KLSAgICAgICAgLy8gUmVuZGVy IHRoZSBoZWFkZXIKLSAgICAgICAgc2VsZi5ncmlkVmlldy5yZW5kZXIoKTsKLQotICAgICAgICAv LyBMaXN0ZW4gb24gZXZlbnRzIHRvIHNob3cvaGlkZSBsb2FkaW5nLWljb24gYW5kIGNoYW5nZSBt ZXNzYWdlcy4KLSAgICAgICAgLy8gUGFyYWxsZWxseSwgYWxzbyB1cGRhdGUgdGhlIGJvdHRvbSBt ZXNzYWdlLgotICAgICAgICBsZXQgbG9hZGluZ0RpdiA9IHNlbGYuZ3JpZFZpZXcuZGF0YV9vdXRw dXRfcGFuZWwuJGNvbnRhaW5lci5maW5kKCcjZmV0Y2hpbmdfZGF0YScpLAotICAgICAgICAgIG1z Z0RpdiA9IGxvYWRpbmdEaXYuZmluZCgnLnNxbC1lZGl0b3ItYnVzeS10ZXh0JyksCi0gICAgICAg ICAgc3RhdHVzRGl2ID0gJCgnLnNxbC1lZGl0b3ItYnVzeS10ZXh0LXN0YXR1cycpOwotCi0gICAg ICAgIHNlbGYub24oJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjptZXNzYWdlJywgZnVu Y3Rpb24obXNnKSB7Ci0gICAgICAgICAgbXNnRGl2LnRleHQobXNnKTsKLSAgICAgICAgICBzdGF0 dXNEaXYudGV4dChtc2cpOwotICAgICAgICB9KS5vbigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGlu Zy1pY29uOnNob3cnLCBmdW5jdGlvbihtc2cpIHsKLSAgICAgICAgICBsb2FkaW5nRGl2LnJlbW92 ZUNsYXNzKCdkLW5vbmUnKTsKLSAgICAgICAgICBzdGF0dXNEaXYucmVtb3ZlQ2xhc3MoJ2Qtbm9u ZScpOwotCi0gICAgICAgICAgbXNnRGl2LnRleHQobXNnKTsKLSAgICAgICAgICBzdGF0dXNEaXYu dGV4dChtc2cpOwotICAgICAgICB9KS5vbigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29u OmhpZGUnLCBmdW5jdGlvbigpIHsKLSAgICAgICAgICBsb2FkaW5nRGl2LmFkZENsYXNzKCdkLW5v bmUnKTsKLSAgICAgICAgICBzdGF0dXNEaXYuYWRkQ2xhc3MoJ2Qtbm9uZScpOwotICAgICAgICB9 KTsKLQotICAgICAgICAkKCcjbWFpbl9sb2FkZXInKS5hZGRDbGFzcygnZC1ub25lJyk7Ci0gICAg ICAgIHNlbGYudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsK LQotICAgICAgICBzZWxmLmdyaWRWaWV3LnNldF9lZGl0b3JfdGl0bGUoJygnICsgZ2V0dGV4dCgn T2J0YWluaW5nIGNvbm5lY3Rpb24uLi4nKSArIGAgJHtfLnVuZXNjYXBlKHVybF9wYXJhbXMudGl0 bGUpfWApOwotCi0gICAgICAgIGxldCBhZnRlckNvbm4gPSBmdW5jdGlvbigpIHsKLSAgICAgICAg ICBsZXQgZW5hYmxlQnRucyA9IFtdOwotCi0gICAgICAgICAgaWYoc2VsZi5pc19xdWVyeV90b29s KXsKLSAgICAgICAgICAgIGVuYWJsZUJ0bnMgPSBbJyNidG4tZmxhc2gnLCAnI2J0bi1leHBsYWlu JywgJyNidG4tZXhwbGFpbi1hbmFseXplJ107Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAg ICAgIGVuYWJsZUJ0bnMgPSBbJyNidG4tZmxhc2gnXTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAg ICBlbmFibGVCdG5zLmZvckVhY2goKHNlbGVjdG9yKT0+ewotICAgICAgICAgICAgJChzZWxlY3Rv cikucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAk KCcjYnRuLWNvbm4tc3RhdHVzIGknKS5yZW1vdmVDbGFzcygnb2J0YWluaW5nLWNvbm4nKTsKLQot ICAgICAgICAgIHZhciB0cmVlX2RhdGEgPSBwZ1dpbmRvdy5kZWZhdWx0LnBnQWRtaW4uQnJvd3Nl ci50cmVlLmdldFRyZWVOb2RlSGllcmFyY2h5KHBnV2luZG93LmRlZmF1bHQucGdBZG1pbi5Ccm93 c2VyLnRyZWUuc2VsZWN0ZWQoKSk7Ci0gICAgICAgICAgbGV0IGNvbm5fdGl0bGUgPSBgICR7Xy51 bmVzY2FwZSh1cmxfcGFyYW1zLnRpdGxlKX1gOwotICAgICAgICAgIHNlbGYuZ3JpZFZpZXcuc2V0 X2VkaXRvcl90aXRsZShfLnVuZXNjYXBlKGNvbm5fdGl0bGUpKTsKLSAgICAgICAgICBsZXQgY29u bmVjdGlvbl9kYXRhID0gewotICAgICAgICAgICAgJ3NlcnZlcl9ncm91cCc6IHNlbGYuZ3JpZFZp ZXcuaGFuZGxlci51cmxfcGFyYW1zLnNnaWQsCi0gICAgICAgICAgICAnc2VydmVyJzogc2VsZi5n cmlkVmlldy5oYW5kbGVyLnVybF9wYXJhbXMuc2lkLAotICAgICAgICAgICAgJ2RhdGFiYXNlJzog c2VsZi5ncmlkVmlldy5oYW5kbGVyLnVybF9wYXJhbXMuZGlkLAotICAgICAgICAgICAgJ3VzZXIn OiB0cmVlX2RhdGEuc2VydmVyLnVzZXIubmFtZSwKLSAgICAgICAgICAgICdyb2xlJzogbnVsbCwK LSAgICAgICAgICAgICd0aXRsZSc6IF8udW5lc2NhcGUodXJsX3BhcmFtcy50aXRsZSksCi0gICAg ICAgICAgICAnY29ubl90aXRsZSc6IF8udW5lc2NhcGUoY29ubl90aXRsZSksCi0gICAgICAgICAg ICAnaXNfYWxsb3dfbmV3X2Nvbm5lY3Rpb24nOiBmYWxzZSwKLSAgICAgICAgICAgICdkYXRhYmFz ZV9uYW1lJzogXy51bmVzY2FwZSh0cmVlX2RhdGEuZGF0YWJhc2UubGFiZWwpLAotICAgICAgICAg ICAgJ3NlcnZlcl9uYW1lJzogXy51bmVzY2FwZSh0cmVlX2RhdGEuc2VydmVyLmxhYmVsKSwKLSAg ICAgICAgICAgICdpc19zZWxlY3RlZCc6IHRydWUsCi0gICAgICAgICAgfTsKLSAgICAgICAgICBk ZWxldGUgY29ubmVjdGlvbl9kYXRhLnBhc3N3b3JkOwotICAgICAgICAgIHNlbGYuZ3JpZFZpZXcu Y29ubmVjdGlvbl9saXN0LnVuc2hpZnQoY29ubmVjdGlvbl9kYXRhKTsKLSAgICAgICAgICBzZWxm LmdyaWRWaWV3LnJlbmRlcl9jb25uZWN0aW9uKHNlbGYuZ3JpZFZpZXcuY29ubmVjdGlvbl9saXN0 KTsKLSAgICAgICAgfTsKLQotICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9uKCdwZ2FkbWluOnF1 ZXJ5X3Rvb2w6Y29ubmVjdGVkOicgKyB0cmFuc0lkLCBhZnRlckNvbm4pOwotICAgICAgICBwZ0Jy b3dzZXIuRXZlbnRzLm9uKCdwZ2FkbWluOnF1ZXJ5X3Rvb2w6Y29ubmVjdGVkX2ZhaWw6JyArIHRy YW5zSWQsIGFmdGVyQ29ubik7Ci0KLSAgICAgICAgcGdCcm93c2VyLkV2ZW50cy5vbigncGdhZG1p bjpxdWVyeV90b29sOmNvbm5lY3RlZDonICsgdHJhbnNJZCwgKHJlc19kYXRhKT0+ewotICAgICAg ICAgIHNlbGYuZ3JpZFZpZXcuc2V0X3NlcnZlcl92ZXJzaW9uKHJlc19kYXRhLnNlcnZlclZlcnNp b24pOwotICAgICAgICB9KTsKLQotICAgICAgICBwZ0Jyb3dzZXIuRXZlbnRzLm9uKCdwZ2FkbWlu OnF1ZXJ5X3Rvb2w6Y29ubmVjdGVkX2ZhaWw6JyArIHRyYW5zSWQsICh4aHIsIGVycm9yKT0+ewot ICAgICAgICAgIE5vdGlmeS5wZ1Jlc3BFcnJvck5vdGlmeSh4aHIsIGVycm9yKTsKLSAgICAgICAg fSk7Ci0KLSAgICAgICAgc2VsZi5pbml0VHJhbnNhY3Rpb24oKTsKLQotICAgICAgICAvKiB3Y0Rv Y2tlciBmb2N1c2VzIG9uIHdpbmRvdyBhbHdheXMsIGFuZCBhbGwgb3VyIHNob3J0Y3V0cyBhcmUK LSAgICAgICAgICogYmluZCB0byBlZGl0b3ItcGFuZWwuIFNvIHdoZW4gd2UgdXNlIHdjRG9ja2Vy IGZvY3VzLCBlZGl0b3ItcGFuZWwKLSAgICAgICAgICogbG9zZXMgZm9jdXMgYW5kIGV2ZW50cyBk b24ndCB3b3JrLgotICAgICAgICAgKi8KLSAgICAgICAgJCh3aW5kb3cpLm9uKCdrZXlkb3duJywg KGUpPT57Ci0gICAgICAgICAgaWYoKCQoJy5zcWwtZWRpdG9yJykuZmluZChlLnRhcmdldCkubGVu Z3RoICE9PSAwIHx8IGUudGFyZ2V0ID09ICQoJ2JvZHkud2NEZXNrdG9wJylbMF0pICYmIHNlbGYu Z3JpZFZpZXcua2V5QWN0aW9uKSB7Ci0gICAgICAgICAgICBzZWxmLmdyaWRWaWV3LmtleUFjdGlv bihlKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHNlbGYuaW5pdF9ldmVu dHMoKTsKLSAgICAgICAgaWYgKHNlbGYuaXNfcXVlcnlfdG9vbCkgewotICAgICAgICAgIC8vIEZl dGNoIHRoZSBTUUwgZm9yIFNjcmlwdHMgKGVnOiBDUkVBVEUvVVBEQVRFL0RFTEVURS9TRUxFQ1Qp Ci0gICAgICAgICAgLy8gQ2FsbCBBSkFYIG9ubHkgaWYgc2NyaXB0IHR5cGUgdXJsIGlzIHByZXNl bnQKLSAgICAgICAgICBpZiAodXJsX3BhcmFtcy5xdWVyeV91cmwpIHsKLSAgICAgICAgICAgICQu YWpheCh7Ci0gICAgICAgICAgICAgIHVybDogdXJsX3BhcmFtcy5xdWVyeV91cmwsCi0gICAgICAg ICAgICAgIHR5cGU6J0dFVCcsCi0gICAgICAgICAgICB9KQotICAgICAgICAgICAgICAuZG9uZShm dW5jdGlvbihyZXMpIHsKLSAgICAgICAgICAgICAgICBzZWxmLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xf b2JqLnJlZnJlc2goKTsKLSAgICAgICAgICAgICAgICBpZiAocmVzKSB7Ci0gICAgICAgICAgICAg ICAgICBzZWxmLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqLnNldFZhbHVlKHJlcyk7Ci0gICAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICB9KQotICAgICAgICAgICAgICAuZmFpbChmdW5jdGlv bihqcXgpIHsKLSAgICAgICAgICAgICAgICBsZXQgbXNnID0gJyc7Ci0KLSAgICAgICAgICAgICAg ICBtc2cgPSBodHRwRXJyb3JIYW5kbGVyLmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKLSAgICAg ICAgICAgICAgICAgIHBnQWRtaW4sIHNlbGYsIGpxeCwgbnVsbCwgW10sIGZhbHNlCi0gICAgICAg ICAgICAgICAgKTsKLSAgICAgICAgICAgICAgICBpZiAobXNnKSB7Ci0gICAgICAgICAgICAgICAg ICB2YXIgb3Blbl9uZXdfdGFiID0gc2VsZi5icm93c2VyX3ByZWZlcmVuY2VzLm5ld19icm93c2Vy X3RhYl9vcGVuOwotICAgICAgICAgICAgICAgICAgaWYob3Blbl9uZXdfdGFiICYmIG9wZW5fbmV3 X3RhYi5pbmNsdWRlcygncXQnKSkgewotICAgICAgICAgICAgICAgICAgICBwZ0Jyb3dzZXIucmVw b3J0X2Vycm9yKGdldHRleHQoJ0Vycm9yIGZldGNoaW5nIFNRTCBmb3Igc2NyaXB0IC0gJXMuJywg anF4LnN0YXR1c1RleHQpLCBqcXgucmVzcG9uc2VKU09OLmVycm9ybXNnLCB1bmRlZmluZWQsIHdp bmRvdy5jbG9zZSk7Ci0gICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAg ICAgICBwZ0Jyb3dzZXIucmVwb3J0X2Vycm9yKGdldHRleHQoJ0Vycm9yIGZldGNoaW5nIFNRTCBm b3Igc2NyaXB0IC0gJXMuJywganF4LnN0YXR1c1RleHQpLCBqcXgucmVzcG9uc2VKU09OLmVycm9y bXNnLCB1bmRlZmluZWQsIHNlbGYuY2xvc2UuYmluZChzZWxmKSk7Ci0gICAgICAgICAgICAgICAg ICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgIH0pOwotICAgICAgICAgIH0g ZWxzZSBpZih1cmxfcGFyYW1zLnNxbF9pZCkgewotICAgICAgICAgICAgbGV0IHNxbFZhbHVlID0g bG9jYWxTdG9yYWdlLmdldEl0ZW0odXJsX3BhcmFtcy5zcWxfaWQpOwotICAgICAgICAgICAgbG9j YWxTdG9yYWdlLnJlbW92ZUl0ZW0odXJsX3BhcmFtcy5zcWxfaWQpOwotICAgICAgICAgICAgaWYo c3FsVmFsdWUpIHsKLSAgICAgICAgICAgICAgc2VsZi5ncmlkVmlldy5xdWVyeV90b29sX29iai5z ZXRWYWx1ZShzcWxWYWx1ZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfQotICAgICAgICB9 Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIC8vIERpc2FibGUgY29kZW1pcnJvciBieSBzZXR0 aW5nIHJlYWRPbmx5IG9wdGlvbiB0byB0cnVlLCBiYWNrZ3JvdW5kIHRvIGRhcmssIGFuZCBjdXJz b3IsIGhpZGRlbi4KLSAgICAgICAgICBzZWxmLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqLnNldE9w dGlvbigncmVhZE9ubHknLCB0cnVlKTsKLSAgICAgICAgICB2YXIgY20gPSBzZWxmLmdyaWRWaWV3 LnF1ZXJ5X3Rvb2xfb2JqLmdldFdyYXBwZXJFbGVtZW50KCk7Ci0gICAgICAgICAgaWYgKGNtKSB7 Ci0gICAgICAgICAgICBjbS5jbGFzc05hbWUgKz0gJyBiZy1ncmF5LWxpZ2h0ZXIgb3BhY2l0eS01 IGhpZGUtY3Vyc29yLXdvcmthcm91bmQnOwotICAgICAgICAgIH0KLSAgICAgICAgICBzZWxmLmRp c2FibGVfdG9vbF9idXR0b25zKHRydWUpOwotICAgICAgICAgIHBnQnJvd3Nlci5FdmVudHMub24o J3BnYWRtaW46cXVlcnlfdG9vbDpjb25uZWN0ZWQ6JysgdHJhbnNJZCwoKT0+ewotICAgICAgICAg ICAgc2VsZi5jaGVja19kYXRhX2NoYW5nZXNfdG9fZXhlY3V0ZV9xdWVyeSgpOwotICAgICAgICAg IH0pOwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICBzZXRfdmFsdWVfdG9fZWRpdG9yOiBm dW5jdGlvbihxdWVyeSkgewotICAgICAgICBpZiAodGhpcy5ncmlkVmlldyAmJiB0aGlzLmdyaWRW aWV3LnF1ZXJ5X3Rvb2xfb2JqICYmICFfLmlzVW5kZWZpbmVkKHF1ZXJ5KSAmJiBxdWVyeSAhPSAn JykgewotICAgICAgICAgIHRoaXMuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmouc2V0VmFsdWUocXVl cnkpOwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICBpbml0X2V2ZW50czogZnVuY3Rpb24o KSB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLSAgICAgICAgLy8gTGlzdGVuIHRvIHRoZSBm aWxlIG1hbmFnZXIgYnV0dG9uIGV2ZW50cwotICAgICAgICBwZ0FkbWluLkJyb3dzZXIuRXZlbnRz Lm9uKCdwZ2FkbWluLXN0b3JhZ2U6ZmluaXNoX2J0bjpzZWxlY3RfZmlsZScsIHNlbGYuX3NlbGVj dF9maWxlX2hhbmRsZXIsIHNlbGYpOwotICAgICAgICBwZ0FkbWluLkJyb3dzZXIuRXZlbnRzLm9u KCdwZ2FkbWluLXN0b3JhZ2U6ZmluaXNoX2J0bjpjcmVhdGVfZmlsZScsIHNlbGYuX3NhdmVfZmls ZV9oYW5kbGVyLCBzZWxmKTsKLQotICAgICAgICAvLyBMaXN0ZW4gdG8gdGhlIGNvZGVtaXJyb3Ig b24gdGV4dCBjaGFuZ2UgZXZlbnQKLSAgICAgICAgLy8gb25seSBpbiBxdWVyeSBlZGl0b3IgdG9v bAotICAgICAgICBpZiAoc2VsZi5pc19xdWVyeV90b29sKSB7Ci0gICAgICAgICAgc2VsZi5ncmlk Vmlldy5xdWVyeV90b29sX29iai5vbignY2hhbmdlJywgc2VsZi5fb25fcXVlcnlfY2hhbmdlLmJp bmQoc2VsZikpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTGlzdGVuIG9uIGV2ZW50cyBjb21l IGZyb20gU1FMRWRpdG9yVmlldyBmb3IgdGhlIGJ1dHRvbiBjbGlja2VkLgotICAgICAgICBzZWxm Lm9uKCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246bG9hZF9maWxlJywgc2VsZi5fbG9hZF9maWxl LCBzZWxmKTsKLSAgICAgICAgc2VsZi5vbigncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOnNhdmVf ZmlsZScsIHNlbGYuX3NhdmVfZmlsZSwgc2VsZik7Ci0gICAgICAgIHNlbGYub24oJ3BnYWRtaW4t c3FsZWRpdG9yOmJ1dHRvbjpkZWxldGVyb3cnLCBzZWxmLl9kZWxldGUsIHNlbGYpOwotICAgICAg ICBzZWxmLm9uKCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246c2hvd19maWx0ZXInLCBzZWxmLl9z aG93X2ZpbHRlciwgc2VsZik7Ci0gICAgICAgIHNlbGYub24oJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1 dHRvbjpzaG93X25ld19jb25uZWN0aW9uJywgc2VsZi5fc2hvd19uZXdfY29ubmVjdGlvbiwgc2Vs Zik7Ci0gICAgICAgIHNlbGYub24oJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjppbmNsdWRlX2Zp bHRlcicsIHNlbGYuX2luY2x1ZGVfZmlsdGVyLCBzZWxmKTsKLSAgICAgICAgc2VsZi5vbigncGdh ZG1pbi1zcWxlZGl0b3I6YnV0dG9uOmV4Y2x1ZGVfZmlsdGVyJywgc2VsZi5fZXhjbHVkZV9maWx0 ZXIsIHNlbGYpOwotICAgICAgICBzZWxmLm9uKCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246cmVt b3ZlX2ZpbHRlcicsIHNlbGYuX3JlbW92ZV9maWx0ZXIsIHNlbGYpOwotICAgICAgICBzZWxmLm9u KCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246Y29weV9yb3cnLCBzZWxmLl9jb3B5X3Jvdywgc2Vs Zik7Ci0gICAgICAgIHNlbGYub24oJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjpjb3B5X3Jvd193 aXRoX2hlYWRlcicsIHNlbGYuX2NvcHlfcm93X3dpdGhfaGVhZGVyLCBzZWxmKTsKLSAgICAgICAg c2VsZi5vbigncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOnBhc3RlX3JvdycsIHNlbGYuX3Bhc3Rl X3Jvdywgc2VsZik7Ci0gICAgICAgIHNlbGYub24oJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjps aW1pdCcsIHNlbGYuX3NldF9saW1pdCwgc2VsZik7Ci0gICAgICAgIHNlbGYub24oJ3BnYWRtaW4t c3FsZWRpdG9yOmJ1dHRvbjpjYW5jZWwtcXVlcnknLCBzZWxmLl9jYW5jZWxfcXVlcnksIHNlbGYp OwotICAgICAgICBzZWxmLm9uKCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246YXV0b19yb2xsYmFj aycsIHNlbGYuX2F1dG9fcm9sbGJhY2ssIHNlbGYpOwotICAgICAgICBzZWxmLm9uKCdwZ2FkbWlu LXNxbGVkaXRvcjpidXR0b246YXV0b19jb21taXQnLCBzZWxmLl9hdXRvX2NvbW1pdCwgc2VsZik7 Ci0gICAgICAgIHNlbGYub24oJ3BnYWRtaW4tc3FsZWRpdG9yOmJ1dHRvbjpleHBsYWluLXZlcmJv c2UnLCBzZWxmLl9leHBsYWluX3ZlcmJvc2UsIHNlbGYpOwotICAgICAgICBzZWxmLm9uKCdwZ2Fk bWluLXNxbGVkaXRvcjpidXR0b246ZXhwbGFpbi1jb3N0cycsIHNlbGYuX2V4cGxhaW5fY29zdHMs IHNlbGYpOwotICAgICAgICBzZWxmLm9uKCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0b246ZXhwbGFp bi1idWZmZXJzJywgc2VsZi5fZXhwbGFpbl9idWZmZXJzLCBzZWxmKTsKLSAgICAgICAgc2VsZi5v bigncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOmV4cGxhaW4tdGltaW5nJywgc2VsZi5fZXhwbGFp bl90aW1pbmcsIHNlbGYpOwotICAgICAgICBzZWxmLm9uKCdwZ2FkbWluLXNxbGVkaXRvcjpidXR0 b246ZXhwbGFpbi1zdW1tYXJ5Jywgc2VsZi5fZXhwbGFpbl9zdW1tYXJ5LCBzZWxmKTsKLSAgICAg ICAgc2VsZi5vbigncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOmV4cGxhaW4tc2V0dGluZ3MnLCBz ZWxmLl9leHBsYWluX3NldHRpbmdzLCBzZWxmKTsKLSAgICAgICAgc2VsZi5vbigncGdhZG1pbi1z cWxlZGl0b3I6YnV0dG9uOnNob3dfcXVlcnlfdG9vbCcsIHNlbGYuX3Nob3dfcXVlcnlfdG9vbCwg c2VsZik7Ci0gICAgICAgIC8vIEluZGVudGF0aW9uIHJlbGF0ZWQKLSAgICAgICAgc2VsZi5vbign cGdhZG1pbi1zcWxlZGl0b3I6aW5kZW50X3NlbGVjdGVkX2NvZGUnLCBzZWxmLl9pbmRlbnRfc2Vs ZWN0ZWRfY29kZSwgc2VsZik7Ci0gICAgICAgIHNlbGYub24oJ3BnYWRtaW4tc3FsZWRpdG9yOnVu aW5kZW50X3NlbGVjdGVkX2NvZGUnLCBzZWxmLl91bmluZGVudF9zZWxlY3RlZF9jb2RlLCBzZWxm KTsKLSAgICAgICAgLy8gRm9ybWF0Ci0gICAgICAgIHNlbGYub24oJ3BnYWRtaW4tc3FsZWRpdG9y OmZvcm1hdF9zcWwnLCBzZWxmLl9mb3JtYXRfc3FsLCBzZWxmKTsKLSAgICAgICAgc2VsZi5vbign cGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOm1hbmFnZV9tYWNyb3MnLCBzZWxmLl9tYW5hZ2VfbWFj cm9zLCBzZWxmKTsKLSAgICAgICAgc2VsZi5vbigncGdhZG1pbi1zcWxlZGl0b3I6YnV0dG9uOmV4 ZWN1dGVfbWFjcm8nLCBzZWxmLl9leGVjdXRlX21hY3JvLCBzZWxmKTsKLQotICAgICAgICB3aW5k b3cucGFyZW50LiQod2luZG93LnBhcmVudC5kb2N1bWVudCkub24oJ3BnYWRtaW4tc3FsZWRpdG9y OnJvd3MtY29waWVkJywgc2VsZi5fY29waWVkX2luX290aGVyX3Nlc3Npb24pOwotICAgICAgfSwK LQotICAgICAgLy8gQ2hlY2tzIGlmIHRoZXJlIGlzIGFueSBkaXJ0eSBkYXRhIGluIHRoZSBncmlk IGJlZm9yZSBleGVjdXRpbmcgYSBxdWVyeQotICAgICAgY2hlY2tfZGF0YV9jaGFuZ2VzX3RvX2V4 ZWN1dGVfcXVlcnk6IGZ1bmN0aW9uKGV4cGxhaW5fcHJlZml4PW51bGwsIHNob3VsZFJlY29ubmVj dD1mYWxzZSwgbWFjcm9JZD11bmRlZmluZWQpIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwot Ci0gICAgICAgIC8vIENoZWNrIGlmIHRoZSBkYXRhIGdyaWQgaGFzIGFueSBjaGFuZ2VzIGJlZm9y ZSBydW5uaW5nIHF1ZXJ5Ci0gICAgICAgIGlmIChfLmhhcyhzZWxmLCAnZGF0YV9zdG9yZScpICYm Ci0gICAgICAgICAgKF8uc2l6ZShzZWxmLmRhdGFfc3RvcmUuYWRkZWQpIHx8Ci0gICAgICAgICAg ICBfLnNpemUoc2VsZi5kYXRhX3N0b3JlLnVwZGF0ZWQpIHx8Ci0gICAgICAgICAgICBfLnNpemUo c2VsZi5kYXRhX3N0b3JlLmRlbGV0ZWQpKQotICAgICAgICApIHsKLSAgICAgICAgICBOb3RpZnku Y29uZmlybShnZXR0ZXh0KCdVbnNhdmVkIGNoYW5nZXMnKSwKLSAgICAgICAgICAgIGdldHRleHQo J1RoZSBkYXRhIGhhcyBiZWVuIG1vZGlmaWVkLCBidXQgbm90IHNhdmVkLiBBcmUgeW91IHN1cmUg eW91IHdpc2ggdG8gZGlzY2FyZCB0aGUgY2hhbmdlcz8nKSwKLSAgICAgICAgICAgIGZ1bmN0aW9u KCkgewotICAgICAgICAgICAgICAvLyBUaGUgdXNlciBkb2VzIG5vdCB3YW50IHRvIHNhdmUsIGp1 c3QgY29udGludWUKLSAgICAgICAgICAgICAgaWYgKG1hY3JvSWQgIT09IHVuZGVmaW5lZCkgewot ICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVfbWFjcm9fcXVlcnkoZXhwbGFpbl9wcmVmaXgs IHNob3VsZFJlY29ubmVjdCwgbWFjcm9JZCk7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgZWxzZSBpZihzZWxmLmlzX3F1ZXJ5X3Rvb2wpIHsKLSAgICAgICAgICAgICAgICBzZWxmLl9l eGVjdXRlX3NxbF9xdWVyeShleHBsYWluX3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0KTsKLSAgICAg ICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBzZWxmLl9l eGVjdXRlX3ZpZXdfZGF0YV9xdWVyeSgpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9 LAotICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIC8vIFN0b3AsIFVzZXIg d2FudHMgdG8gc2F2ZQotICAgICAgICAgICAgICAkKCcjYnRuLWZsYXNoJykucHJvcCgnZGlzYWJs ZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQot ICAgICAgICAgICk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgaWYgKG1hY3JvSWQgIT09 IHVuZGVmaW5lZCkgewotICAgICAgICAgICAgc2VsZi5fZXhlY3V0ZV9tYWNyb19xdWVyeShleHBs YWluX3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0LCBtYWNyb0lkKTsKLSAgICAgICAgICB9Ci0gICAg ICAgICAgZWxzZSBpZihzZWxmLmlzX3F1ZXJ5X3Rvb2wpIHsKLSAgICAgICAgICAgIHNlbGYuX2V4 ZWN1dGVfc3FsX3F1ZXJ5KGV4cGxhaW5fcHJlZml4LCBzaG91bGRSZWNvbm5lY3QpOwotICAgICAg ICAgIH0KLSAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGVfdmlld19k YXRhX3F1ZXJ5KCk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICAv LyBNYWtlcyB0aGUgYWpheCBjYWxsIHRvIGV4ZWN1dGUgdGhlIHNxbCBxdWVyeSBpbiBWaWV3IERh dGEgbW9kZQotICAgICAgX2V4ZWN1dGVfdmlld19kYXRhX3F1ZXJ5OiBmdW5jdGlvbigpIHsKLSAg ICAgICAgdmFyIHNlbGYgPSB0aGlzLAotICAgICAgICAgIHVybCA9IHVybF9mb3IoJ3NxbGVkaXRv ci52aWV3X2RhdGFfc3RhcnQnLCB7Ci0gICAgICAgICAgICAndHJhbnNfaWQnOiBzZWxmLnRyYW5z SWQsCi0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgc2VsZi5xdWVyeV9zdGFydF90aW1lID0gbmV3 IERhdGUoKTsKLSAgICAgICAgc2VsZi5yb3dzX2FmZmVjdGVkID0gMDsKLSAgICAgICAgc2VsZi5f aW5pdF9wb2xsaW5nX2ZsYWdzKCk7Ci0KLSAgICAgICAgc2VsZi5oYXNfbW9yZV9yb3dzID0gZmFs c2U7Ci0gICAgICAgIHNlbGYuZmV0Y2hpbmdfcm93cyA9IGZhbHNlOwotCi0gICAgICAgIHNlbGYu dHJpZ2dlcigKLSAgICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOnNob3cn LAotICAgICAgICAgIGdldHRleHQoJ1J1bm5pbmcgcXVlcnkuLi4nKQotICAgICAgICApOwotCi0g ICAgICAgICQoJyNidG4tZmxhc2gnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwotICAgICAgICBz ZWxmLmVuYWJsZV9kaXNhYmxlX2Rvd25sb2FkX2J0bih0cnVlKTsKLQotICAgICAgICBzZWxmLnRy aWdnZXIoCi0gICAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjptZXNzYWdl JywKLSAgICAgICAgICBnZXR0ZXh0KCdXYWl0aW5nIGZvciB0aGUgcXVlcnkgdG8gY29tcGxldGUu Li4nKQotICAgICAgICApOwotCi0gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMCAmJgot ICAgICAgICAgIGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0gPT0gJ2Nvbm5lY3QnKSB7 Ci0gICAgICAgICAgdXJsICs9ICc/Y29ubmVjdD0xJzsKLSAgICAgICAgfQotCi0gICAgICAgICQu YWpheCh7Ci0gICAgICAgICAgdXJsOiB1cmwsCi0gICAgICAgICAgbWV0aG9kOiAnR0VUJywKLSAg ICAgICAgfSkKLSAgICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgICAgIGlm IChyZXMuZGF0YS5zdGF0dXMpIHsKLSAgICAgICAgICAgICAgc2VsZi5jYW5fZWRpdCA9IHJlcy5k YXRhLmNhbl9lZGl0OwotICAgICAgICAgICAgICBzZWxmLmNhbl9maWx0ZXIgPSByZXMuZGF0YS5j YW5fZmlsdGVyOwotICAgICAgICAgICAgICBzZWxmLmluZm9fbm90aWZpZXJfdGltZW91dCA9IHJl cy5kYXRhLmluZm9fbm90aWZpZXJfdGltZW91dDsKLQotICAgICAgICAgICAgICAvLyBTZXQgdGhl IHNxbCBxdWVyeSB0byB0aGUgU1FMIHBhbmVsCi0gICAgICAgICAgICAgIHNlbGYuZ3JpZFZpZXcu cXVlcnlfdG9vbF9vYmouc2V0VmFsdWUocmVzLmRhdGEuc3FsKTsKLSAgICAgICAgICAgICAgc2Vs Zi5xdWVyeSA9IHJlcy5kYXRhLnNxbDsKLQotCi0gICAgICAgICAgICAgIC8qIElmIGZpbHRlciBp cyBhcHBsaWVkIHRoZW4gcmVtb3ZlIGNsYXNzICdidG4tc2Vjb25kYXJ5JwotICAgICAgICAgICAg ICogYW5kIGFkZCAnYnRuLXByaW1hcnknIHRvIGNoYW5nZSB0aGUgY29sb3VyIG9mIHRoZSBidXR0 b24uCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgaWYgKHNlbGYuY2FuX2ZpbHRlciAm JiByZXMuZGF0YS5maWx0ZXJfYXBwbGllZCkgewotICAgICAgICAgICAgICAgICQoJyNidG4tZmls dGVyJykucmVtb3ZlQ2xhc3MoJ2J0bi1zZWNvbmRhcnknKTsKLSAgICAgICAgICAgICAgICAkKCcj YnRuLWZpbHRlci1kcm9wZG93bicpLnJlbW92ZUNsYXNzKCdidG4tc2Vjb25kYXJ5Jyk7Ci0gICAg ICAgICAgICAgICAgJCgnI2J0bi1maWx0ZXInKS5hZGRDbGFzcygnYnRuLXByaW1hcnknKTsKLSAg ICAgICAgICAgICAgICAkKCcjYnRuLWZpbHRlci1kcm9wZG93bicpLmFkZENsYXNzKCdidG4tcHJp bWFyeScpOwotICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICQoJyNidG4t ZmlsdGVyJykucmVtb3ZlQ2xhc3MoJ2J0bi1wcmltYXJ5Jyk7Ci0gICAgICAgICAgICAgICAgJCgn I2J0bi1maWx0ZXItZHJvcGRvd24nKS5yZW1vdmVDbGFzcygnYnRuLXByaW1hcnknKTsKLSAgICAg ICAgICAgICAgICAkKCcjYnRuLWZpbHRlcicpLmFkZENsYXNzKCdidG4tc2Vjb25kYXJ5Jyk7Ci0g ICAgICAgICAgICAgICAgJCgnI2J0bi1maWx0ZXItZHJvcGRvd24nKS5hZGRDbGFzcygnYnRuLXNl Y29uZGFyeScpOwotICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgJCgnI2J0bi1jb3B5 LXJvdycpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAgICAgICAgICAgICQoJyNidG4tcGFz dGUtcm93JykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLQotICAgICAgICAgICAgICAvLyBTZXQg dGhlIGNvbWJvIGJveCB2YWx1ZQotICAgICAgICAgICAgICAkKCcubGltaXQnKS52YWwocmVzLmRh dGEubGltaXQpOwotCi0gICAgICAgICAgICAgIC8vIElmIHN0YXR1cyBpcyBUcnVlIHRoZW4gcG9s bCB0aGUgcmVzdWx0LgotICAgICAgICAgICAgICBzZWxmLl9wb2xsKCk7Ci0gICAgICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxv YWRpbmctaWNvbjpoaWRlJyk7Ci0gICAgICAgICAgICAgIHNlbGYudXBkYXRlX21zZ19oaXN0b3J5 KGZhbHNlLCByZXMuZGF0YS5yZXN1bHQpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0pCi0g ICAgICAgICAgLmZhaWwoZnVuY3Rpb24oZSkgewotICAgICAgICAgICAgc2VsZi50cmlnZ2VyKCdw Z2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwotICAgICAgICAgICAgbGV0IG1z ZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAotICAgICAgICAg ICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX2V4ZWN1dGVfdmlld19kYXRhX3F1ZXJ5JywgW10sIHRy dWUKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBpZiAobXNnKQotICAgICAgICAgICAgICBz ZWxmLnVwZGF0ZV9tc2dfaGlzdG9yeShmYWxzZSwgbXNnKTsKLSAgICAgICAgICB9KTsKLSAgICAg IH0sCi0KLSAgICAgIC8vIEV4ZWN1dGVzIHNxbCBxdWVyeSAgZm9yIG1hY3JvaW4gdGhlIGVkaXRv ciBpbiBRdWVyeSBUb29sIG1vZGUKLSAgICAgIF9leGVjdXRlX21hY3JvX3F1ZXJ5OiBmdW5jdGlv bihleHBsYWluX3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0LCBtYWNyb0lkKSB7Ci0gICAgICAgIHZh ciBzZWxmID0gdGhpczsKLQotICAgICAgICBzZWxmLmhhc19tb3JlX3Jvd3MgPSBmYWxzZTsKLSAg ICAgICAgc2VsZi5mZXRjaGluZ19yb3dzID0gZmFsc2U7Ci0KLSAgICAgICAgJC5hamF4KHsKLSAg ICAgICAgICB1cmw6IHVybF9mb3IoJ3NxbGVkaXRvci5nZXRfbWFjcm8nLCB7J21hY3JvX2lkJzog bWFjcm9JZCwgJ3RyYW5zX2lkJzogc2VsZi50cmFuc0lkfSksCi0gICAgICAgICAgbWV0aG9kOiAn R0VUJywKLSAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLAotICAgICAg ICAgIGRhdGFUeXBlOiAnanNvbicsCi0gICAgICAgIH0pCi0gICAgICAgICAgLmRvbmUoZnVuY3Rp b24ocmVzKSB7Ci0gICAgICAgICAgICBpZiAocmVzKSB7Ci0gICAgICAgICAgICAgIC8vIFJlcGxh Y2UgdGhlIHBsYWNlIGhvbGRlcgotICAgICAgICAgICAgICBjb25zdCByZWdleCA9IC9cJFNFTEVD VElPTlwkL2dpOwotICAgICAgICAgICAgICBsZXQgcXVlcnkgPSAgcmVzLnNxbC5yZXBsYWNlKHJl Z2V4LCBzZWxmLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqLmdldFNlbGVjdGlvbigpKTsKLQotICAg ICAgICAgICAgICBjb25zdCBleGVjdXRlUXVlcnkgPSBuZXcgRXhlY3V0ZVF1ZXJ5LkV4ZWN1dGVR dWVyeShzZWxmLCBwZ0FkbWluLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQpOwotICAgICAgICAgICAg ICBleGVjdXRlUXVlcnkucG9sbCA9IHBnQnJvd3Nlci5vdmVycmlkZV9hY3Rpdml0eV9ldmVudF9k ZWNvcmF0b3IoZXhlY3V0ZVF1ZXJ5LnBvbGwpLmJpbmQoZXhlY3V0ZVF1ZXJ5KTsKLSAgICAgICAg ICAgICAgZXhlY3V0ZVF1ZXJ5LmV4ZWN1dGUocXVlcnksIGV4cGxhaW5fcHJlZml4LCBzaG91bGRS ZWNvbm5lY3QpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgLy8gTGV0IGl0 IGJlIGZvciBub3cKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9KQotICAgICAgICAgIC5mYWls KGZ1bmN0aW9uKCkgewotICAgICAgICAgIC8qIGZhaWx1cmUgc2hvdWxkIG5vdCBiZSBpZ25vcmVk ICovCi0gICAgICAgICAgfSk7Ci0KLSAgICAgIH0sCi0KLSAgICAgIC8vIEV4ZWN1dGVzIHNxbCBx dWVyeSBpbiB0aGUgZWRpdG9yIGluIFF1ZXJ5IFRvb2wgbW9kZQotICAgICAgX2V4ZWN1dGVfc3Fs X3F1ZXJ5OiBmdW5jdGlvbihleHBsYWluX3ByZWZpeCwgc2hvdWxkUmVjb25uZWN0KSB7Ci0gICAg ICAgIHZhciBzZWxmID0gdGhpcywgc3FsID0gJyc7Ci0KLSAgICAgICAgc2VsZi5oYXNfbW9yZV9y b3dzID0gZmFsc2U7Ci0gICAgICAgIHNlbGYuZmV0Y2hpbmdfcm93cyA9IGZhbHNlOwotCi0gICAg ICAgIGlmICghXy5pc1VuZGVmaW5lZChzZWxmLnNwZWNpYWxfc3FsKSkgewotICAgICAgICAgIHNx bCA9IHNlbGYuc3BlY2lhbF9zcWw7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgLyogSWYg Y29kZSBpcyBzZWxlY3RlZCBpbiB0aGUgY29kZSBtaXJyb3IgdGhlbiBleGVjdXRlCi0gICAgICAg ICAgICogdGhlIHNlbGVjdGVkIHBhcnQgZWxzZSBleGVjdXRlIHRoZSBjb21wbGV0ZSBjb2RlLgot ICAgICAgICAgICAqLwotICAgICAgICAgIHZhciBzZWxlY3RlZF9jb2RlID0gc2VsZi5ncmlkVmll dy5xdWVyeV90b29sX29iai5nZXRTZWxlY3Rpb24oKTsKLSAgICAgICAgICBpZiAoc2VsZWN0ZWRf Y29kZS5sZW5ndGggPiAwKQotICAgICAgICAgICAgc3FsID0gc2VsZWN0ZWRfY29kZTsKLSAgICAg ICAgICBlbHNlCi0gICAgICAgICAgICBzcWwgPSBzZWxmLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2Jq LmdldFZhbHVlKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBjb25zdCBleGVjdXRlUXVlcnkgPSBu ZXcgRXhlY3V0ZVF1ZXJ5LkV4ZWN1dGVRdWVyeSh0aGlzLCBwZ0FkbWluLkJyb3dzZXIuVXNlck1h bmFnZW1lbnQpOwotICAgICAgICBleGVjdXRlUXVlcnkucG9sbCA9IHBnQnJvd3Nlci5vdmVycmlk ZV9hY3Rpdml0eV9ldmVudF9kZWNvcmF0b3IoZXhlY3V0ZVF1ZXJ5LnBvbGwpLmJpbmQoZXhlY3V0 ZVF1ZXJ5KTsKLSAgICAgICAgZXhlY3V0ZVF1ZXJ5LmV4ZWN1dGUoc3FsLCBleHBsYWluX3ByZWZp eCwgc2hvdWxkUmVjb25uZWN0KTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIFRoaXMgaXMgYSB3cmFw cGVyIHRvIGNhbGxfcmVuZGVyIGZ1bmN0aW9uCi0gICAgICAvLyBXZSBuZWVkIHRoaXMgYmVjYXVz ZSB3ZSBoYXZlIHNlcGFyYXRlZCBjb2x1bW5zIHJvdXRlICYgcmVzdWx0IHJvdXRlCi0gICAgICAv LyBXZSBuZWVkIHRvIGNvbWJpbmUgYm90aCByZXN1bHQgaGVyZSBpbiB3cmFwcGVyIGJlZm9yZSBy ZW5kZXJpbmcgZ3JpZAotICAgICAgY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbDogZnVuY3Rpb24ocXVl cnlSZXN1bHQpIHsKLSAgICAgICAgY2FsbFJlbmRlckFmdGVyUG9sbC5jYWxsUmVuZGVyQWZ0ZXJQ b2xsKHRoaXMsIE5vdGlmeSwgcXVlcnlSZXN1bHQpOwotICAgICAgfSwKLQotCi0gICAgICAvKiBU aGlzIGZ1bmN0aW9uIG1ha2VzIHRoZSBhamF4IGNhbGwgdG8gcG9sbCB0aGUgcmVzdWx0LAotICAg ICAgICogaWYgc3RhdHVzIGlzIEJ1c3kgdGhlbiByZWN1cnNpdmVseSBjYWxsIHRoZSBwb2xsIGZ1 bmN0aW9uCi0gICAgICAgKiB0aWxsIHRoZSBzdGF0dXMgaXMgJ1N1Y2Nlc3MnIG9yICdOb3RDb25u ZWN0ZWQnLiBJZiBzdGF0dXMgaXMKLSAgICAgICAqICdTdWNjZXNzJyB0aGVuIGNhbGwgdGhlIHJl bmRlciBtZXRob2QgdG8gcmVuZGVyIHRoZSBkYXRhLgotICAgICAgICovCi0gICAgICBfcG9sbDog ZnVuY3Rpb24oKSB7Ci0gICAgICAgIGNvbnN0IGV4ZWN1dGVRdWVyeSA9IG5ldyBFeGVjdXRlUXVl cnkuRXhlY3V0ZVF1ZXJ5KHRoaXMsIHBnQWRtaW4uQnJvd3Nlci5Vc2VyTWFuYWdlbWVudCk7Ci0g ICAgICAgIGV4ZWN1dGVRdWVyeS5kZWxheWVkUG9sbCh0aGlzKTsKLSAgICAgIH0sCi0KLSAgICAg IC8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjcmVhdGUgdGhlIHNsaWNrZ3JpZCBjb2x1bW5z Ci0gICAgICAgKiBhbmQgcmVuZGVyIHRoZSBkYXRhIGluIHRoZSBzbGlja2dyaWQuCi0gICAgICAg Ki8KLSAgICAgIF9yZW5kZXI6IGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0 aGlzOwotICAgICAgICBzZWxmLmNvbGluZm8gPSBkYXRhLmNvbGluZm87Ci0gICAgICAgIHNlbGYu cHJpbWFyeV9rZXlzID0gKF8uaXNFbXB0eShkYXRhLnByaW1hcnlfa2V5cykgJiYgZGF0YS5oYXNf b2lkcykgPyBkYXRhLm9pZHMgOiBkYXRhLnByaW1hcnlfa2V5czsKLSAgICAgICAgc2VsZi5jbGll bnRfcHJpbWFyeV9rZXkgPSBkYXRhLmNsaWVudF9wcmltYXJ5X2tleTsKLSAgICAgICAgc2VsZi5j ZWxsX3NlbGVjdGVkID0gZmFsc2U7Ci0gICAgICAgIHNlbGYuc2VsZWN0ZWRfbW9kZWwgPSBudWxs OwotICAgICAgICBzZWxmLmNoYW5nZWRNb2RlbHMgPSBbXTsKLSAgICAgICAgc2VsZi5oYXNfb2lk cyA9IGRhdGEuaGFzX29pZHM7Ci0gICAgICAgIHNlbGYub2lkcyA9IGRhdGEub2lkczsKLSAgICAg ICAgJCgnLnNxbC1lZGl0b3ItZXhwbGFpbicpLmh0bWwoRU1QVFlfRVhQTEFJTl9DT05URU5UKTsK LSAgICAgICAgc2VsZi5leHBsYWluX3BsYW4gPSBmYWxzZTsKLQotICAgICAgICAvKiBJZiBvYmpl Y3QgZG9uJ3QgaGF2ZSBwcmltYXJ5IGtleXMgdGhlbiBzZXQgdGhlCi0gICAgICAgICAqIGNhbl9l ZGl0IGZsYWcgdG8gZmFsc2UuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoKHNlbGYucHJpbWFy eV9rZXlzID09PSBudWxsIHx8IHNlbGYucHJpbWFyeV9rZXlzID09PSB1bmRlZmluZWQgfHwKLSAg ICAgICAgICAgIF8uc2l6ZShzZWxmLnByaW1hcnlfa2V5cykgPT09IDApICYmIHNlbGYuaGFzX29p ZHMgPT0gZmFsc2UpCi0gICAgICAgICAgc2VsZi5jYW5fZWRpdCA9IGZhbHNlOwotICAgICAgICBl bHNlCi0gICAgICAgICAgc2VsZi5jYW5fZWRpdCA9IHRydWU7Ci0KLSAgICAgICAgLyogSWYgdXNl ciBjYW4gZmlsdGVyIHRoZSBkYXRhIHRoZW4gd2Ugc2hvdWxkIGVuYWJsZWQKLSAgICAgICAgICog RmlsdGVyIGFuZCBMaW1pdCBidXR0b25zLgotICAgICAgICAgKi8KLSAgICAgICAgaWYgKHNlbGYu Y2FuX2ZpbHRlcikgewotICAgICAgICAgICQoJy5saW1pdCcpLnByb3AoJ2Rpc2FibGVkJywgZmFs c2UpOwotICAgICAgICAgICQoJy5saW1pdCcpLmFkZENsYXNzKCdsaW1pdC1lbmFibGVkJyk7Ci0g ICAgICAgICAgJCgnI2J0bi1maWx0ZXInKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKLSAgICAg ICAgICAkKCcjYnRuLWZpbHRlci1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwot ICAgICAgICB9Ci0KLSAgICAgICAgLy8gTm8gZGF0YSB0byBzYXZlIGluaXRpYWxseQotICAgICAg ICAkKCcjYnRuLXNhdmUtZGF0YScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0KLSAgICAgICAg Ly8gSW5pdGlhbCBzZXR0aW5ncyBmb3IgZGVsZXRlIHJvdywgY29weSByb3cgYW5kIHBhc3RlIHJv dyBidXR0b25zLgotICAgICAgICAkKCcjYnRuLWRlbGV0ZS1yb3cnKS5wcm9wKCdkaXNhYmxlZCcs IHRydWUpOwotCi0gICAgICAgIGlmICghc2VsZi5jYW5fZWRpdCkgewotICAgICAgICAgICQoJyNi dG4tZGVsZXRlLXJvdycpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAgICAgICAgJCgnI2J0 bi1jb3B5LXJvdycpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAgICAgICAgJCgnI2J0bi1w YXN0ZS1yb3cnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwotICAgICAgICB9Ci0KLSAgICAgICAg Ly8gRmV0Y2ggdGhlIGNvbHVtbnMgbWV0YWRhdGEKLSAgICAgICAgc2VsZi5fZmV0Y2hfY29sdW1u X21ldGFkYXRhLmNhbGwoCi0gICAgICAgICAgc2VsZiwgZGF0YSwKLSAgICAgICAgICBmdW5jdGlv bigpIHsKLSAgICAgICAgICAgIHZhciBzZWxmX2NvbCA9IHRoaXM7Ci0KLSAgICAgICAgICAgIHNl bGZfY29sLnRyaWdnZXIoCi0gICAgICAgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5n LWljb246bWVzc2FnZScsCi0gICAgICAgICAgICAgIGdldHRleHQoJ0xvYWRpbmcgZGF0YSBmcm9t IHRoZSBkYXRhYmFzZSBzZXJ2ZXIgYW5kIHJlbmRlcmluZy4uLicpLAotICAgICAgICAgICAgICBz ZWxmX2NvbAotICAgICAgICAgICAgKTsKLQotICAgICAgICAgICAgLy8gU2hvdyBtZXNzYWdlIGlu IG1lc3NhZ2UgYW5kIGhpc3RvcnkgdGFiIGluIGNhc2Ugb2YgcXVlcnkgdG9vbAotICAgICAgICAg ICAgc2VsZl9jb2wudG90YWxfdGltZSA9IGNhbGN1bGF0ZVF1ZXJ5UnVuVGltZS5jYWxjdWxhdGVR dWVyeVJ1blRpbWUoCi0gICAgICAgICAgICAgIHNlbGZfY29sLnF1ZXJ5X3N0YXJ0X3RpbWUsCi0g ICAgICAgICAgICAgIHNlbGZfY29sLnF1ZXJ5X2VuZF90aW1lCi0gICAgICAgICAgICApOwotICAg ICAgICAgICAgdmFyIG1zZzEgPSBnZXR0ZXh0KCdTdWNjZXNzZnVsbHkgcnVuLiBUb3RhbCBxdWVy eSBydW50aW1lOiAlcy4nLHNlbGZfY29sLnRvdGFsX3RpbWUpOwotICAgICAgICAgICAgdmFyIG1z ZzIgPSBnZXR0ZXh0KCclcyByb3dzIGFmZmVjdGVkLicsc2VsZl9jb2wucm93c19hZmZlY3RlZCk7 Ci0KLSAgICAgICAgICAgIC8vIERpc3BsYXkgdGhlIG5vdGlmaWVyIGlmIHRoZSB0aW1lb3V0IGlz IHNldCB0byA+PSAwCi0gICAgICAgICAgICBpZiAoc2VsZl9jb2wuaW5mb19ub3RpZmllcl90aW1l b3V0ID49IDApIHsKLSAgICAgICAgICAgICAgTm90aWZ5LnN1Y2Nlc3MobXNnMSArICcgJyArIG1z ZzIsIHNlbGZfY29sLmluZm9fbm90aWZpZXJfdGltZW91dCk7Ci0gICAgICAgICAgICB9Ci0KLSAg ICAgICAgICAgIHZhciBfbXNnID0gbXNnMSArICdcbicgKyBtc2cyOwotCi0KLSAgICAgICAgICAg IC8vIElmIHRoZXJlIGlzIGFkZGl0aW9uYWwgbWVzc2FnZXMgZnJvbSBzZXJ2ZXIgdGhlbiBhZGQg aXQgdG8gbWVzc2FnZQotICAgICAgICAgICAgaWYgKCFfLmlzTnVsbChkYXRhLmFkZGl0aW9uYWxf bWVzc2FnZXMpICYmCi0gICAgICAgICAgICAgICFfLmlzVW5kZWZpbmVkKGRhdGEuYWRkaXRpb25h bF9tZXNzYWdlcykpIHsKLSAgICAgICAgICAgICAgX21zZyA9IGRhdGEuYWRkaXRpb25hbF9tZXNz YWdlcyArICdcbicgKyBfbXNnOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzZWxmX2Nv bC51cGRhdGVfbXNnX2hpc3RvcnkodHJ1ZSwgX21zZywgZmFsc2UpOwotCi0gICAgICAgICAgICAv KiBBZGQgdGhlIGRhdGEgdG8gdGhlIGNvbGxlY3Rpb24gYW5kIHJlbmRlciB0aGUgZ3JpZC4KLSAg ICAgICAgICAgICAqIEluIGNhc2Ugb2YgRXhwbGFpbiBkcmF3IHRoZSBncmFwaCBvbiBleHBsYWlu IHBhbmVsCi0gICAgICAgICAgICAgKiBhbmQgYWRkIGpzb24gZm9ybWF0dGVkIGRhdGEgdG8gY29s bGVjdGlvbiBhbmQgcmVuZGVyLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICB2YXIgZXhw bGFpbl9kYXRhX2FycmF5ID0gW10sCi0gICAgICAgICAgICAgIGV4cGxhaW5fZGF0YV9qc29uID0g bnVsbDsKLQotICAgICAgICAgICAgaWYoZGF0YS5yZXN1bHQgJiYgIV8uaXNFbXB0eShzZWxmX2Nv bC5jb2xpbmZvKQotICAgICAgICAgICAgICYmIHNlbGZfY29sLmNvbGluZm9bMF0ubmFtZSA9PSAn UVVFUlkgUExBTicgJiYgIV8uaXNFbXB0eShkYXRhLnR5cGVzKQotICAgICAgICAgICAgICYmIGRh dGEudHlwZXNbMF0gJiYgZGF0YS50eXBlc1swXS50eXBuYW1lID09PSAnanNvbicpIHsKLSAgICAg ICAgICAgICAgLyoganNvbiBpcyBzZW50IGFzIHRleHQsIHBhcnNlIGl0ICovCi0gICAgICAgICAg ICAgIGV4cGxhaW5fZGF0YV9qc29uID0gSlNPTi5wYXJzZShkYXRhLnJlc3VsdFswXVswXSk7Ci0g ICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChleHBsYWluX2RhdGFfanNvbiAmJiBleHBs YWluX2RhdGFfanNvblswXSAmJgotICAgICAgICAgICAgICBleHBsYWluX2RhdGFfanNvblswXS5o YXNPd25Qcm9wZXJ0eSgnUGxhbicpICYmCi0gICAgICAgICAgICAgIF8uaXNPYmplY3QoZXhwbGFp bl9kYXRhX2pzb25bMF1bJ1BsYW4nXSkKLSAgICAgICAgICAgICkgewotICAgICAgICAgICAgICB2 YXIgZXhwbGFpbl9kYXRhID0gW0pTT04uc3RyaW5naWZ5KGV4cGxhaW5fZGF0YV9qc29uLCBudWxs LCAyKV07Ci0gICAgICAgICAgICAgIGV4cGxhaW5fZGF0YV9hcnJheS5wdXNoKGV4cGxhaW5fZGF0 YSk7Ci0gICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSAtIHRoZSAnRGF0YSBPdXRwdXQnIHBhbmVs IGlzIHZpc2libGUsIGJlZm9yZSAtIHdlCi0gICAgICAgICAgICAgIC8vIHN0YXJ0IHJlbmRlcmlu ZyB0aGUgZ3JpZC4KLSAgICAgICAgICAgICAgc2VsZl9jb2wuZ3JpZFZpZXcuZGF0YV9vdXRwdXRf cGFuZWwuZm9jdXMoKTsKLSAgICAgICAgICAgICAgc2V0VGltZW91dCgKLSAgICAgICAgICAgICAg ICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgIHNlbGZfY29sLmdyaWRWaWV3LnJlbmRl cl9ncmlkKAotICAgICAgICAgICAgICAgICAgICBleHBsYWluX2RhdGFfYXJyYXksIHNlbGZfY29s LmNvbHVtbnMsIHNlbGZfY29sLmNhbl9lZGl0LAotICAgICAgICAgICAgICAgICAgICBzZWxmX2Nv bC5jbGllbnRfcHJpbWFyeV9rZXksIDAKLSAgICAgICAgICAgICAgICAgICk7Ci0gICAgICAgICAg ICAgICAgICAvLyBNYWtlIHN1cmUgLSB0aGUgJ0V4cGxhaW4nIHBhbmVsIGlzIHZpc2libGUsIGJl Zm9yZSAtIHdlCi0gICAgICAgICAgICAgICAgICAvLyBzdGFydCByZW5kZXJpbmcgdGhlIGdyaWQu Ci0gICAgICAgICAgICAgICAgICBzZWxmX2NvbC5ncmlkVmlldy5leHBsYWluX3BhbmVsLmZvY3Vz KCk7Ci0gICAgICAgICAgICAgICAgICBwZ0V4cGxhaW4uRHJhd0pTT05QbGFuKAotICAgICAgICAg ICAgICAgICAgICAkKCcuc3FsLWVkaXRvci1leHBsYWluJyksIGV4cGxhaW5fZGF0YV9qc29uCi0g ICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgIH0sIDEwCi0gICAgICAgICAgICAg ICk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgLSB0 aGUgJ0RhdGEgT3V0cHV0JyBwYW5lbCBpcyB2aXNpYmxlLCBiZWZvcmUgLSB3ZQotICAgICAgICAg ICAgICAvLyBzdGFydCByZW5kZXJpbmcgdGhlIGdyaWQuCi0gICAgICAgICAgICAgIHNlbGZfY29s LmdyaWRWaWV3LmRhdGFfb3V0cHV0X3BhbmVsLmZvY3VzKCk7Ci0gICAgICAgICAgICAgIHNldFRp bWVvdXQoCi0gICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICBz ZWxmX2NvbC5ncmlkVmlldy5yZW5kZXJfZ3JpZChkYXRhLnJlc3VsdCwgc2VsZl9jb2wuY29sdW1u cywKLSAgICAgICAgICAgICAgICAgICAgc2VsZl9jb2wuY2FuX2VkaXQsIHNlbGZfY29sLmNsaWVu dF9wcmltYXJ5X2tleSwgZGF0YS5yb3dzX2FmZmVjdGVkKTsKLSAgICAgICAgICAgICAgICB9LCAx MAotICAgICAgICAgICAgICApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBIaWRl IHRoZSBsb2FkaW5nIGljb24KLSAgICAgICAgICAgIHNlbGZfY29sLnRyaWdnZXIoJ3BnYWRtaW4t c3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0KLSAgICAgICAgICAgIC8vIEVuYWJsZS9E aXNhYmxlIGRvd25sb2FkIGJ1dHRvbiBiYXNlZCBvbiBxdWVyeSByZXN1bHQKLSAgICAgICAgICAg IGlmICghXy5pc1VuZGVmaW5lZChkYXRhKSAmJiBBcnJheS5pc0FycmF5KGRhdGEucmVzdWx0KSAm JiBkYXRhLnJlc3VsdC5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICAgIHNlbGYuZW5hYmxlX2Rp c2FibGVfZG93bmxvYWRfYnRuKGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVs c2UgewotICAgICAgICAgICAgICBzZWxmLmVuYWJsZV9kaXNhYmxlX2Rvd25sb2FkX2J0bih0cnVl KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9LmJpbmQoc2VsZikKLSAgICAgICAgKTsKLSAg ICAgIH0sCi0KLSAgICAgIC8vIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyB0aGUgY29sdW1ucyBhcyBy ZXF1aXJlZCBieSB0aGUgYmFja2dyaWQKLSAgICAgIF9mZXRjaF9jb2x1bW5fbWV0YWRhdGE6IGZ1 bmN0aW9uKGRhdGEsIGNiKSB7Ci0gICAgICAgIHZhciBjb2xpbmZvID0gZGF0YS5jb2xpbmZvLAot ICAgICAgICAgIHByaW1hcnlfa2V5cyA9IGRhdGEucHJpbWFyeV9rZXlzLAotICAgICAgICAgIGNv bHVtbnMgPSBbXSwKLSAgICAgICAgICBzZWxmID0gdGhpczsKLSAgICAgICAgLy8gU3RvcmUgcGdf dHlwZXMgaW4gYW4gYXJyYXkKLSAgICAgICAgdmFyIHBnX3R5cGVzID0gbmV3IEFycmF5KCk7Ci0g ICAgICAgIF8uZWFjaChkYXRhLnR5cGVzLCBmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgcGdfdHlw ZXNbci5vaWRdID0gW3IudHlwbmFtZV07Ci0gICAgICAgIH0pOwotCi0gICAgICAgIC8vIENyZWF0 ZSBjb2x1bW5zIHJlcXVpcmVkIGJ5IHNsaWNrIGdyaWQgdG8gcmVuZGVyCi0gICAgICAgIF8uZWFj aChjb2xpbmZvLCBmdW5jdGlvbihjKSB7Ci0gICAgICAgICAgdmFyIGlzX3ByaW1hcnlfa2V5ID0g ZmFsc2UsCi0gICAgICAgICAgICBpc19lZGl0YWJsZSA9IHNlbGYuY2FuX2VkaXQgJiYgKCFzZWxm LmlzX3F1ZXJ5X3Rvb2wgfHwgYy5pc19lZGl0YWJsZSk7Ci0KLSAgICAgICAgICAvLyBDaGVjayB3 aGV0aGVyIHRoaXMgY29sdW1uIGlzIGEgcHJpbWFyeSBrZXkKLSAgICAgICAgICBpZiAoaXNfZWRp dGFibGUgJiYgXy5zaXplKHByaW1hcnlfa2V5cykgPiAwKSB7Ci0gICAgICAgICAgICBfLmVhY2go cHJpbWFyeV9rZXlzLCBmdW5jdGlvbih2YWx1ZSwga2V5KSB7Ci0gICAgICAgICAgICAgIGlmIChr ZXkgPT09IGMubmFtZSkKLSAgICAgICAgICAgICAgICBpc19wcmltYXJ5X2tleSA9IHRydWU7Ci0g ICAgICAgICAgICB9KTsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvLyBUbyBzaG93IGNvbHVt biBsYWJlbCBhbmQgZGF0YSB0eXBlIGluIG11bHRpbGluZSwKLSAgICAgICAgICAvLyBUaGUgZWxl bWVudHMgc2hvdWxkIGJlIHB1dCBpbnNpZGUgdGhlIGRpdi4KLSAgICAgICAgICAvLyBDcmVhdGUg Y29sdW1uIGxhYmVsIGFuZCB0eXBlLgotICAgICAgICAgIHZhciBjb2xfdHlwZSA9ICcnLAotICAg ICAgICAgICAgY29sdW1uX2xhYmVsID0gJycsCi0gICAgICAgICAgICBjb2xfY2VsbDsKLSAgICAg ICAgICB2YXIgdHlwZSA9ICd1bmtub3duJzsKLSAgICAgICAgICBpZiAocGdfdHlwZXNbYy50eXBl X2NvZGVdKSB7Ci0gICAgICAgICAgICB0eXBlID0gcGdfdHlwZXNbYy50eXBlX2NvZGVdWzBdOwot ICAgICAgICAgIH0gZWxzZSBpZiAocGdfdHlwZXNbcGdfdHlwZXMubGVuZ3RoIC0gMV1bMF0pIHsK LSAgICAgICAgICAgIHR5cGUgPSBwZ190eXBlc1twZ190eXBlcy5sZW5ndGggLSAxXVswXTsKLSAg ICAgICAgICB9Ci0KLSAgICAgICAgICBpZiAoIWlzX3ByaW1hcnlfa2V5KQotICAgICAgICAgICAg Y29sX3R5cGUgKz0gdHlwZTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb2xfdHlwZSAr PSAnW1BLXSAnICsgdHlwZTsKLQotICAgICAgICAgIGlmIChjLnByZWNpc2lvbiAmJiBjLnByZWNp c2lvbiA+PSAwICYmIGMucHJlY2lzaW9uICE9IDY1NTM1KSB7Ci0gICAgICAgICAgICBjb2xfdHlw ZSArPSAnICgnICsgYy5wcmVjaXNpb247Ci0gICAgICAgICAgICBjb2xfdHlwZSArPSBjLnNjYWxl ICYmIGMuc2NhbGUgIT0gNjU1MzUgPwotICAgICAgICAgICAgICAnLCcgKyBjLnNjYWxlICsgJykn IDoKLSAgICAgICAgICAgICAgJyknOwotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBJZGVudGlm eSBjZWxsIHR5cGUgb2YgY29sdW1uLgotICAgICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAg ICAgIGNhc2UgJ29pZCc6Ci0gICAgICAgICAgICBjb2xfY2VsbCA9ICdvaWQnOwotICAgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSAnanNvbic6Ci0gICAgICAgICAgY2FzZSAnanNvbltd JzoKLSAgICAgICAgICBjYXNlICdqc29uYic6Ci0gICAgICAgICAgY2FzZSAnanNvbmJbXSc6Ci0g ICAgICAgICAgICBjb2xfY2VsbCA9ICdKc29uJzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg ICAgIGNhc2UgJ3NtYWxsaW50JzoKLSAgICAgICAgICBjYXNlICdzbWFsbGludFtdJzoKLSAgICAg ICAgICBjYXNlICdpbnRlZ2VyJzoKLSAgICAgICAgICBjYXNlICdpbnRlZ2VyW10nOgotICAgICAg ICAgIGNhc2UgJ2JpZ2ludCc6Ci0gICAgICAgICAgY2FzZSAnYmlnaW50W10nOgotICAgICAgICAg IGNhc2UgJ2RlY2ltYWwnOgotICAgICAgICAgIGNhc2UgJ2RlY2ltYWxbXSc6Ci0gICAgICAgICAg Y2FzZSAnbnVtZXJpYyc6Ci0gICAgICAgICAgY2FzZSAnbnVtZXJpY1tdJzoKLSAgICAgICAgICBj YXNlICdyZWFsJzoKLSAgICAgICAgICBjYXNlICdyZWFsW10nOgotICAgICAgICAgIGNhc2UgJ2Rv dWJsZSBwcmVjaXNpb24nOgotICAgICAgICAgIGNhc2UgJ2RvdWJsZSBwcmVjaXNpb25bXSc6Ci0g ICAgICAgICAgICBjb2xfY2VsbCA9ICdudW1iZXInOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg ICAgICAgY2FzZSAnYm9vbGVhbic6Ci0gICAgICAgICAgICBjb2xfY2VsbCA9ICdib29sZWFuJzsK LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgJ2NoYXJhY3Rlcic6Ci0gICAgICAg ICAgY2FzZSAnY2hhcmFjdGVyW10nOgotICAgICAgICAgIGNhc2UgJyJjaGFyIic6Ci0gICAgICAg ICAgY2FzZSAnImNoYXIiW10nOgotICAgICAgICAgIGNhc2UgJ2NoYXJhY3RlciB2YXJ5aW5nJzoK LSAgICAgICAgICBjYXNlICdjaGFyYWN0ZXIgdmFyeWluZ1tdJzoKLSAgICAgICAgICAgIGlmIChj LmludGVybmFsX3NpemUgJiYgYy5pbnRlcm5hbF9zaXplID49IDAgJiYgYy5pbnRlcm5hbF9zaXpl ICE9IDY1NTM1KSB7Ci0gICAgICAgICAgICAgIC8vIFVwZGF0ZSBjb2x1bW4gdHlwZSB0byBkaXNw bGF5IGxlbmd0aCBvbiBjb2x1bW4gaGVhZGVyCi0gICAgICAgICAgICAgIGNvbF90eXBlICs9ICcg KCcgKyBjLmludGVybmFsX3NpemUgKyAnKSc7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBj b2xfY2VsbCA9ICdzdHJpbmcnOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSAn Ynl0ZWEnOgotICAgICAgICAgIGNhc2UgJ2J5dGVhW10nOgotICAgICAgICAgICAgY29sX2NlbGwg PSAnYmluYXJ5JzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgJ2dlb21ldHJ5 JzoKLSAgICAgICAgICAgIC8vIFBvc3RHSVMgZ2VvbWV0cnkgdHlwZQotICAgICAgICAgICAgY29s X2NlbGwgPSAnZ2VvbWV0cnknOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSAn Z2VvZ3JhcGh5JzoKLSAgICAgICAgICAgIC8vIFBvc3RHSVMgZ2VvZ3JhcGh5IHR5cGUKLSAgICAg ICAgICAgIGNvbF9jZWxsID0gJ2dlb2dyYXBoeSc7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29sX2NlbGwgPSAnc3RyaW5nJzsKLSAgICAgICAg ICB9Ci0KLSAgICAgICAgICBjb2x1bW5fbGFiZWwgPSBjLmRpc3BsYXlfbmFtZSArICc8YnI+JyAr IGNvbF90eXBlOwotCi0gICAgICAgICAgdmFyIGFycmF5X3R5cGVfYnJhY2tldF9pbmRleCA9IHR5 cGUubGFzdEluZGV4T2YoJ1tdJyksCi0gICAgICAgICAgICBjb2wgPSB7Ci0gICAgICAgICAgICAg ICduYW1lJzogYy5uYW1lLAotICAgICAgICAgICAgICAnZGlzcGxheV9uYW1lJzogYy5kaXNwbGF5 X25hbWUsCi0gICAgICAgICAgICAgICdjb2x1bW5fdHlwZSc6IGNvbF90eXBlLAotICAgICAgICAg ICAgICAnY29sdW1uX3R5cGVfaW50ZXJuYWwnOiB0eXBlLAotICAgICAgICAgICAgICAncG9zJzog Yy5wb3MsCi0gICAgICAgICAgICAgICdsYWJlbCc6IGNvbHVtbl9sYWJlbCwKLSAgICAgICAgICAg ICAgJ2NlbGwnOiBjb2xfY2VsbCwKLSAgICAgICAgICAgICAgJ2Nhbl9lZGl0JzogKGMubmFtZSA9 PSAnb2lkJykgPyBmYWxzZSA6IGlzX2VkaXRhYmxlLAotICAgICAgICAgICAgICAndHlwZSc6IHR5 cGUsCi0gICAgICAgICAgICAgICdub3RfbnVsbCc6IGMubm90X251bGwsCi0gICAgICAgICAgICAg ICdoYXNfZGVmYXVsdF92YWwnOiBjLmhhc19kZWZhdWx0X3ZhbCwKLSAgICAgICAgICAgICAgJ2lz X2FycmF5JzogYXJyYXlfdHlwZV9icmFja2V0X2luZGV4ID4gLTEgJiYgYXJyYXlfdHlwZV9icmFj a2V0X2luZGV4ICsgMiA9PSB0eXBlLmxlbmd0aCwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAg Y29sdW1ucy5wdXNoKGNvbCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHNlbGYuY29sdW1ucyA9 IGNvbHVtbnM7Ci0gICAgICAgIGlmIChjYiAmJiB0eXBlb2YoY2IpID09ICdmdW5jdGlvbicpIHsK LSAgICAgICAgICBjYigpOwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICByZXNldFF1ZXJ5 SGlzdG9yeU9iamVjdDogZnVuY3Rpb24oaGlzdG9yeSkgewotICAgICAgICBoaXN0b3J5LnRvdGFs X3RpbWUgPSAnLSc7Ci0gICAgICB9LAotCi0gICAgICBzZXRfc3FsX21lc3NhZ2UobXNnLCBhcHBl bmQ9ZmFsc2UpIHsKLSAgICAgICAgaWYoYXBwZW5kKSB7Ci0gICAgICAgICAgJCgnLnNxbC1lZGl0 b3ItbWVzc2FnZScpLmFwcGVuZChtc2cpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICQo Jy5zcWwtZWRpdG9yLW1lc3NhZ2UnKS50ZXh0KG1zZyk7Ci0gICAgICAgIH0KLQotICAgICAgICAv LyBTY3JvbGwgYXV0b21hdGljYWxseSB3aGVuIG1zZ3MgYXBwZW5kcyB0byBlbGVtZW50Ci0gICAg ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgJCgnLnNxbC1lZGl0b3ItbWVz c2FnZScpLnNjcm9sbFRvcCgkKCcuc3FsLWVkaXRvci1tZXNzYWdlJylbMF0uc2Nyb2xsSGVpZ2h0 KTsKLSAgICAgICAgfSwgMTApOwotICAgICAgfSwKLQotICAgICAgLy8gVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIHJhaXNlIGFwcHJvcHJpYXRlIG1lc3NhZ2UuCi0gICAgICB1cGRhdGVfbXNnX2hp c3Rvcnk6IGZ1bmN0aW9uKHN0YXR1cywgbXNnLCBjbGVhcl9ncmlkKSB7Ci0gICAgICAgIHZhciBz ZWxmID0gdGhpczsKLSAgICAgICAgaWYgKGNsZWFyX2dyaWQgPT09IHVuZGVmaW5lZCkKLSAgICAg ICAgICBjbGVhcl9ncmlkID0gdHJ1ZTsKLQotICAgICAgICBzZWxmLmdyaWRWaWV3Lm1lc3NhZ2Vz X3BhbmVsLmZvY3VzKCk7Ci0KLSAgICAgICAgaWYgKGNsZWFyX2dyaWQpIHsKLSAgICAgICAgICAv LyBEZWxldGUgZ3JpZAotICAgICAgICAgIGlmIChzZWxmLmdyaWRWaWV3LmhhbmRsZXIuc2xpY2tn cmlkKSB7Ci0gICAgICAgICAgICBzZWxmLmdyaWRWaWV3LmhhbmRsZXIuc2xpY2tncmlkLmRlc3Ry b3koKTsKLQotICAgICAgICAgIH0KLSAgICAgICAgICAvLyBNaXNjIGNsZWFuaW5nCi0gICAgICAg ICAgc2VsZi5jb2x1bW5zID0gdW5kZWZpbmVkOwotICAgICAgICAgIHNlbGYuY29sbGVjdGlvbiA9 IHVuZGVmaW5lZDsKLQotICAgICAgICAgIHNlbGYuc2V0X3NxbF9tZXNzYWdlKG1zZyk7Ci0gICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgc2VsZi5zZXRfc3FsX21lc3NhZ2UoXy5lc2NhcGUobXNn KSwgdHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc3RhdHVzICE9ICdCdXN5Jykgewot ICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAgICAgJCgnI2J0bi1mbGFzaCcp LnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwotICAgICAgICAgIH0sIDQwMCk7Ci0KLSAgICAgICAg ICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0K LSAgICAgICAgICBpZighc2VsZi50b3RhbF90aW1lKSB7Ci0gICAgICAgICAgICBzZWxmLnRvdGFs X3RpbWUgPSBjYWxjdWxhdGVRdWVyeVJ1blRpbWUuY2FsY3VsYXRlUXVlcnlSdW5UaW1lKAotICAg ICAgICAgICAgICBzZWxmLnF1ZXJ5X3N0YXJ0X3RpbWUsCi0gICAgICAgICAgICAgIG5ldyBEYXRl KCkpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlmKF8uaXNVbmRlZmluZWQoc2VsZi5oaXN0 b3J5X3F1ZXJ5X3NvdXJjZSkpIHsKLSAgICAgICAgICAgIHNlbGYuaGlzdG9yeV9xdWVyeV9zb3Vy Y2UgPSBRdWVyeVNvdXJjZXMuVklFV19EQVRBOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGxl dCBoaXN0b3J5X2VudHJ5ID0gewotICAgICAgICAgICAgJ3N0YXR1cyc6IHN0YXR1cywKLSAgICAg ICAgICAgICdzdGFydF90aW1lJzogc2VsZi5xdWVyeV9zdGFydF90aW1lLAotICAgICAgICAgICAg J3F1ZXJ5Jzogc2VsZi5xdWVyeSwKLSAgICAgICAgICAgICdyb3dfYWZmZWN0ZWQnOiBzZWxmLnJv d3NfYWZmZWN0ZWQsCi0gICAgICAgICAgICAndG90YWxfdGltZSc6IHNlbGYudG90YWxfdGltZSwK LSAgICAgICAgICAgICdtZXNzYWdlJzogbXNnLAotICAgICAgICAgICAgJ3F1ZXJ5X3NvdXJjZSc6 IHNlbGYuaGlzdG9yeV9xdWVyeV9zb3VyY2UsCi0gICAgICAgICAgICAnaXNfcGdhZG1pbl9xdWVy eSc6ICFzZWxmLmlzX3F1ZXJ5X3Rvb2wsCi0gICAgICAgICAgfTsKLQotICAgICAgICAgIGlmKCFz ZWxmLmlzX3F1ZXJ5X3Rvb2wpIHsKLSAgICAgICAgICAgIHZhciBpbmZvX21zZyA9IGdldHRleHQo J1RoaXMgcXVlcnkgd2FzIGdlbmVyYXRlZCBieSBwZ0FkbWluIGFzIHBhcnQgb2YgYSAiVmlldy9F ZGl0IERhdGEiIG9wZXJhdGlvbicpOwotICAgICAgICAgICAgaGlzdG9yeV9lbnRyeS5pbmZvID0g aW5mb19tc2c7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgc2VsZi5hZGRfdG9faGlzdG9yeSho aXN0b3J5X2VudHJ5KTsKLSAgICAgICAgfQotICAgICAgfSwKLQotICAgICAgLyogTWFrZSBhamF4 IGNhbGwgdG8gc2F2ZSB0aGUgaGlzdG9yeSBkYXRhICovCi0gICAgICBhZGRfdG9faGlzdG9yeTog ZnVuY3Rpb24oaGlzdG9yeV9lbnRyeSkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAg ICAgICAgJC5hamF4KHsKLSAgICAgICAgICB1cmw6IHVybF9mb3IoJ3NxbGVkaXRvci5hZGRfcXVl cnlfaGlzdG9yeScsIHsKLSAgICAgICAgICAgICd0cmFuc19pZCc6IHNlbGYudHJhbnNJZCwKLSAg ICAgICAgICB9KSwKLSAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKLSAgICAgICAgICBjb250ZW50 VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLAotICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5 KGhpc3RvcnlfZW50cnkpLAotICAgICAgICB9KQotICAgICAgICAgIC5kb25lKGZ1bmN0aW9uKCkg eyAvKiBUaGlzIGlzIGludGVudGlvbmFsICovIH0pCi0gICAgICAgICAgLmZhaWwoZnVuY3Rpb24o KSB7IC8qIFRoaXMgaXMgaW50ZW50aW9uYWwgKi8gfSk7Ci0KLSAgICAgICAgc2VsZi5ncmlkVmll dy5oaXN0b3J5X2NvbGxlY3Rpb24uYWRkKGhpc3RvcnlfZW50cnkpOwotICAgICAgfSwKLQotICAg ICAgLyogVGhpcyBmdW5jdGlvbiBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgY2VsbAotICAgICAg ICogaXMgZWRpdGFibGUgb3Igbm90IGRlcGVuZGluZyBvbiBwcmltYXJ5IGtleXMKLSAgICAgICAq IGFuZCBzdGFnZWRfcm93cyBmbGFnCi0gICAgICAgKi8KLSAgICAgIGlzX2VkaXRhYmxlOiBmdW5j dGlvbihvYmopIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBpZiAob2JqIGlu c3RhbmNlb2YgQmFja2JvbmUuQ29sbGVjdGlvbikKLSAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g ICAgICAgIHJldHVybiAoc2VsZi5nZXQoJ2Nhbl9lZGl0JykpOwotICAgICAgfSwKLQotICAgICAg ZW5hYmxlX2Rpc2FibGVfZG93bmxvYWRfYnRuOiBmdW5jdGlvbihpc19zYXZlX3Jlc3VsdHNfdG9f ZmlsZV9kaXNhYmxlZCkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHNlbGYu aXNfc2F2ZV9yZXN1bHRzX3RvX2ZpbGVfZGlzYWJsZWQgPSBpc19zYXZlX3Jlc3VsdHNfdG9fZmls ZV9kaXNhYmxlZDsKLSAgICAgICAgJCgnI2J0bi1zYXZlLXJlc3VsdHMtdG8tZmlsZScpLnByb3Ao J2Rpc2FibGVkJywgaXNfc2F2ZV9yZXN1bHRzX3RvX2ZpbGVfZGlzYWJsZWQpOwotICAgICAgfSwK LQotICAgICAgcm93c190b19kZWxldGU6IGZ1bmN0aW9uKGRhdGEpIHsKLSAgICAgICAgbGV0IHNl bGYgPSB0aGlzOwotICAgICAgICBsZXQgdG1wX2tleXMgPSBzZWxmLnByaW1hcnlfa2V5czsKLQot ICAgICAgICAvLyByZS1jYWxjdWxhdGUgcm93cyB3aXRoIG5vIHByaW1hcnkga2V5cwotICAgICAg ICBzZWxmLnRlbXBfbmV3X3Jvd3MgPSBbXTsKLSAgICAgICAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9u KGQsIGlkeCkgewotICAgICAgICAgIGxldCBwX2tleXNfbGlzdCA9IF8ucGljayhkLCBfLmtleXMo dG1wX2tleXMpKTsKLSAgICAgICAgICBsZXQgaXNfcHJpbWFyeV9rZXkgPSBPYmplY3Qua2V5cyhw X2tleXNfbGlzdCkubGVuZ3RoID4gMDsKLQotICAgICAgICAgIGlmICghaXNfcHJpbWFyeV9rZXkp IHsKLSAgICAgICAgICAgIHNlbGYudGVtcF9uZXdfcm93cy5wdXNoKGlkeCk7Ci0gICAgICAgICAg fQotICAgICAgICB9KTsKLSAgICAgICAgc2VsZi5yb3dzX3RvX2Rpc2FibGUgPSBfLmNsb25lKHNl bGYudGVtcF9uZXdfcm93cyk7Ci0gICAgICB9LAotCi0gICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdp bGwgZGVsZXRlIHNlbGVjdGVkIHJvdy4KLSAgICAgIF9kZWxldGU6IGZ1bmN0aW9uKCkgewotICAg ICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgZGVsZXRlZF9rZXlzID0gW10sCi0gICAg ICAgICAgaXNfYWRkZWQgPSBfLnNpemUoc2VsZi5kYXRhX3N0b3JlLmFkZGVkKSwKLSAgICAgICAg ICBpc191cGRhdGVkID0gXy5zaXplKHNlbGYuZGF0YV9zdG9yZS51cGRhdGVkKTsKLQotICAgICAg ICAvLyBSZW1vdmUgbmV3bHkgYWRkZWQgcm93cyBmcm9tIHN0YWdlZCByb3dzIGFzIHdlIGRvbid0 IHdhbnQgdG8gc2VuZCB0aGVtIG9uIHNlcnZlcgotICAgICAgICBpZiAoaXNfYWRkZWQpIHsKLSAg ICAgICAgICBfLmVhY2goc2VsZi5kYXRhX3N0b3JlLmFkZGVkLCBmdW5jdGlvbih2YWwsIGtleSkg ewotICAgICAgICAgICAgaWYgKGtleSBpbiBzZWxmLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3MpIHsK LSAgICAgICAgICAgICAgLy8gUmVtb3ZlIHRoZSByb3cgZnJvbSBkYXRhIHN0b3JlIHNvIHRoYXQg d2UgZG8gbm90IHNlbmQgaXQgb24gc2VydmVyCi0gICAgICAgICAgICAgIGRlbGV0ZWRfa2V5cy5w dXNoKGtleSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICAg ICAgLy8gSWYgb25seSBuZXdseSByb3dzIHRvIGRlbGV0ZSBhbmQgbm8gZGF0YSBpcyB0aGVyZSB0 byBzZW5kIG9uIHNlcnZlcgotICAgICAgICAvLyB0aGVuIGp1c3QgcmUtcmVuZGVyIHRoZSBncmlk Ci0gICAgICAgIGlmIChfLnNpemUoc2VsZi5kYXRhX3N0b3JlLnN0YWdlZF9yb3dzKSA+IDAgJiYg KF8uc2l6ZShzZWxmLmRhdGFfc3RvcmUuc3RhZ2VkX3Jvd3MpID09PSBfLnNpemUoZGVsZXRlZF9r ZXlzKSkpIHsKLSAgICAgICAgICB2YXIgZ3JpZCA9IHNlbGYuc2xpY2tncmlkLAotICAgICAgICAg ICAgZGF0YVZpZXcgPSBncmlkLmdldERhdGEoKTsKLQotICAgICAgICAgIGdyaWQucmVzZXRBY3Rp dmVDZWxsKCk7Ci0KLSAgICAgICAgICBkYXRhVmlldy5iZWdpblVwZGF0ZSgpOwotICAgICAgICAg IGZvciAobGV0IGRlbF92YWwgb2YgZGVsZXRlZF9rZXlzKSB7Ci0gICAgICAgICAgICBkZWxldGUg c2VsZi5kYXRhX3N0b3JlLnN0YWdlZF9yb3dzW2RlbF92YWxdOwotICAgICAgICAgICAgZGVsZXRl IHNlbGYuZGF0YV9zdG9yZS5hZGRlZFtkZWxfdmFsXTsKLSAgICAgICAgICAgIGRlbGV0ZSBzZWxm LmRhdGFfc3RvcmUuYWRkZWRfaW5kZXhbZGVsX3ZhbF07Ci0gICAgICAgICAgICBkYXRhVmlldy5k ZWxldGVJdGVtKGRlbF92YWwpOwotICAgICAgICAgIH0KLSAgICAgICAgICBkYXRhVmlldy5lbmRV cGRhdGUoKTsKLSAgICAgICAgICBzZWxmLnJvd3NfdG9fZGVsZXRlLmFwcGx5KHNlbGYsIFtkYXRh Vmlldy5nZXRJdGVtcygpXSk7Ci0gICAgICAgICAgZ3JpZC5yZXNldEFjdGl2ZUNlbGwoKTsKLSAg ICAgICAgICBncmlkLnNldFNlbGVjdGVkUm93cyhbXSk7Ci0gICAgICAgICAgZ3JpZC5pbnZhbGlk YXRlKCk7Ci0KLSAgICAgICAgICAvLyBOb3RoaW5nIHRvIGNvcHkgb3IgZGVsZXRlIGhlcmUKLSAg ICAgICAgICAkKCcjYnRuLWRlbGV0ZS1yb3cnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwotICAg ICAgICAgICQoJyNidG4tY29weS1yb3cnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwotICAgICAg ICAgIGlmIChfLnNpemUoc2VsZi5kYXRhX3N0b3JlLmFkZGVkKSB8fCBpc191cGRhdGVkKSB7Ci0g ICAgICAgICAgICAvLyBEbyBub3QgZGlzYWJsZSBzYXZlIGJ1dHRvbiBpZiB0aGVyZSBhcmUKLSAg ICAgICAgICAgIC8vIGFueSBvdGhlciBjaGFuZ2VzIHByZXNlbnQgaW4gZ3JpZCBkYXRhCi0gICAg ICAgICAgICAkKCcjYnRuLXNhdmUtZGF0YScpLnByb3AoJ2Rpc2FibGVkJywgZmFsc2UpOwotICAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkKCcjYnRuLXNhdmUtZGF0YScpLnByb3AoJ2Rp c2FibGVkJywgdHJ1ZSk7Ci0gICAgICAgICAgfQotICAgICAgICAgIE5vdGlmeS5zdWNjZXNzKGdl dHRleHQoJ1JvdyhzKSBkZWxldGVkLicpKTsKLSAgICAgICAgfSBlbHNlIHsKLQotICAgICAgICAg IGxldCBzdHJpa2VvdXQgPSB0cnVlOwotICAgICAgICAgIF8uZWFjaChfLmtleXMoc2VsZi5kYXRh X3N0b3JlLnN0YWdlZF9yb3dzKSwgZnVuY3Rpb24oa2V5KSB7Ci0gICAgICAgICAgICBpZihrZXkg aW4gc2VsZi5kYXRhX3N0b3JlLmRlbGV0ZWQpIHsKLSAgICAgICAgICAgICAgc3RyaWtlb3V0ID0g ZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpZiAoIXN0 cmlrZW91dCkgewotICAgICAgICAgICAgJChzZWxmLmdyaWRWaWV3LmdyaWQuZ2V0Q2FudmFzTm9k ZSgpKS5maW5kKCdkaXYuc2VsZWN0ZWQnKS5yZW1vdmVDbGFzcygnc3RyaWtlb3V0Jyk7Ci0gICAg ICAgICAgICBfLmVhY2goXy5rZXlzKHNlbGYuZGF0YV9zdG9yZS5zdGFnZWRfcm93cyksIGZ1bmN0 aW9uKGtleSkgewotICAgICAgICAgICAgICBpZihrZXkgaW4gc2VsZi5kYXRhX3N0b3JlLmRlbGV0 ZWQpIHsKLSAgICAgICAgICAgICAgICBkZWxldGUgc2VsZi5kYXRhX3N0b3JlLmRlbGV0ZWRba2V5 XTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgfSBlbHNlIHsK LSAgICAgICAgICAgIC8vIFN0cmlrZSBvdXQgdGhlIHJvd3MgdG8gYmUgZGVsZXRlZAotICAgICAg ICAgICAgc2VsZi5kYXRhX3N0b3JlLmRlbGV0ZWQgPSBPYmplY3QuYXNzaWduKHt9LCBzZWxmLmRh dGFfc3RvcmUuZGVsZXRlZCwgc2VsZi5kYXRhX3N0b3JlLnN0YWdlZF9yb3dzKTsKLSAgICAgICAg ICAgICQoc2VsZi5ncmlkVmlldy5ncmlkLmdldENhbnZhc05vZGUoKSkuZmluZCgnZGl2LnNlbGVj dGVkJykuYWRkQ2xhc3MoJ3N0cmlrZW91dCcpOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGlm IChfLnNpemUoc2VsZi5kYXRhX3N0b3JlLmFkZGVkKSB8fCBpc191cGRhdGVkIHx8IF8uc2l6ZShz ZWxmLmRhdGFfc3RvcmUuZGVsZXRlZCkpIHsKLSAgICAgICAgICAgIC8vIERvIG5vdCBkaXNhYmxl IHNhdmUgYnV0dG9uIGlmIHRoZXJlIGFyZQotICAgICAgICAgICAgLy8gYW55IG90aGVyIGNoYW5n ZXMgcHJlc2VudCBpbiBncmlkIGRhdGEKLSAgICAgICAgICAgICQoJyNidG4tc2F2ZS1kYXRhJyku cHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICQoJyNidG4tc2F2ZS1kYXRhJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAgICAgICB9 Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBvcGVu IHNhdmUgZmlsZSBkaWFsb2cgY29uZGl0aW9uYWxseS4KLQotICAgICAgX3NhdmVfZmlsZTogZnVu Y3Rpb24oc2F2ZV9hcz1mYWxzZSkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAg ICAgdmFyIGN1cnJlbnRfZmlsZSA9IHNlbGYuZ3JpZFZpZXcuY3VycmVudF9maWxlOwotICAgICAg ICBpZiAoIV8uaXNVbmRlZmluZWQoY3VycmVudF9maWxlKSAmJiAhc2F2ZV9hcykgewotICAgICAg ICAgIHNlbGYuX3NhdmVfZmlsZV9oYW5kbGVyKGN1cnJlbnRfZmlsZSk7Ci0gICAgICAgIH0gZWxz ZSB7Ci0gICAgICAgICAgLy8gcHJvdmlkZSBjdXN0b20gb3B0aW9uIHRvIHNhdmUgZmlsZSBkaWFs b2cKLSAgICAgICAgICB2YXIgcGFyYW1zID0gewotICAgICAgICAgICAgJ3N1cHBvcnRlZF90eXBl cyc6IFsnKicsICdzcWwnXSwKLSAgICAgICAgICAgICdkaWFsb2dfdHlwZSc6ICdjcmVhdGVfZmls ZScsCi0gICAgICAgICAgICAnZGlhbG9nX3RpdGxlJzogJ1NhdmUgRmlsZScsCi0gICAgICAgICAg ICAnYnRuX3ByaW1hcnknOiAnU2F2ZScsCi0gICAgICAgICAgfTsKLSAgICAgICAgICBwZ0FkbWlu LkZpbGVNYW5hZ2VyLmluaXQoKTsKLSAgICAgICAgICBwZ0FkbWluLkZpbGVNYW5hZ2VyLnNob3df ZGlhbG9nKHBhcmFtcyk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIC8qIFRoaXMgZnVu Y3Rpb24gd2lsbCBmZXRjaCB0aGUgbGlzdCBvZiBjaGFuZ2VkIG1vZGVscyBhbmQgbWFrZQotICAg ICAgICogdGhlIGFqYXggY2FsbCB0byBzYXZlIHRoZSBkYXRhIGludG8gdGhlIGRhdGFiYXNlIHNl cnZlci4KLSAgICAgICAqLwotICAgICAgc2F2ZV9kYXRhOiBmdW5jdGlvbigpIHsKLSAgICAgICAg dmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICAgIGlmKCFzZWxmLmNhbl9lZGl0KQotICAgICAgICAg IHJldHVybjsKLQotICAgICAgICB2YXIgaXNfYWRkZWQgPSBfLnNpemUoc2VsZi5kYXRhX3N0b3Jl LmFkZGVkKSwKLSAgICAgICAgICBpc191cGRhdGVkID0gXy5zaXplKHNlbGYuZGF0YV9zdG9yZS51 cGRhdGVkKSwKLSAgICAgICAgICBpc19kZWxldGVkID0gXy5zaXplKHNlbGYuZGF0YV9zdG9yZS5k ZWxldGVkKTsKLQotICAgICAgICBpZiAoIWlzX2FkZGVkICYmICFpc191cGRhdGVkICYmICFpc19k ZWxldGVkKSB7Ci0gICAgICAgICAgcmV0dXJuOyAvLyBOb3RoaW5nIHRvIHNhdmUgaGVyZQotICAg ICAgICB9Ci0KLSAgICAgICAgc2VsZi50cmlnZ2VyKAotICAgICAgICAgICdwZ2FkbWluLXNxbGVk aXRvcjpsb2FkaW5nLWljb246c2hvdycsCi0gICAgICAgICAgZ2V0dGV4dCgnU2F2aW5nIHRoZSB1 cGRhdGVkIGRhdGEuLi4nKQotICAgICAgICApOwotICAgICAgICAvLyBEaXNhYmxlIHF1ZXJ5IHRv b2wgYnV0dG9ucyBhbmQgY2FuY2VsIGJ1dHRvbiBvbmx5IGlmIHF1ZXJ5IHRvb2wKLSAgICAgICAg aWYoc2VsZi5pc19xdWVyeV90b29sKQotICAgICAgICAgIHNlbGYuZGlzYWJsZV90b29sX2J1dHRv bnModHJ1ZSwgdHJ1ZSk7Ci0KLSAgICAgICAgLy8gQWRkIHRoZSBjb2x1bW5zIHRvIHRoZSBkYXRh IHNvIHRoZSBzZXJ2ZXIgY2FuIHJlbWFwIHRoZSBkYXRhCi0gICAgICAgIHZhciByZXFfZGF0YSA9 IHNlbGYuZGF0YV9zdG9yZSwgdmlldyA9IHNlbGYuZ3JpZFZpZXc7Ci0gICAgICAgIHJlcV9kYXRh LmNvbHVtbnMgPSB2aWV3ID8gdmlldy5oYW5kbGVyLmNvbHVtbnMgOiBzZWxmLmNvbHVtbnM7Ci0K LSAgICAgICAgdmFyIHNhdmVfc3VjY2Vzc2Z1bCA9IGZhbHNlLCBzYXZlX3N0YXJ0X3RpbWUgPSBu ZXcgRGF0ZSgpOwotCi0gICAgICAgIC8vIE1ha2UgYWpheCBjYWxsIHRvIHNhdmUgdGhlIGRhdGEK LSAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICB1cmw6IHVybF9mb3IoJ3NxbGVkaXRvci5zYXZl JywgewotICAgICAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi50cmFuc0lkLAotICAgICAgICAgIH0p LAotICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgIGNvbnRlbnRUeXBlOiAnYXBw bGljYXRpb24vanNvbicsCi0gICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkocmVxX2RhdGEp LAotICAgICAgICB9KQotICAgICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykgewotICAgICAgICAg ICAgdmFyIGdyaWQgPSBzZWxmLnNsaWNrZ3JpZCwKLSAgICAgICAgICAgICAgZGF0YVZpZXcgPSBn cmlkLmdldERhdGEoKSwKLSAgICAgICAgICAgICAgZGF0YV9sZW5ndGggPSBkYXRhVmlldy5nZXRM ZW5ndGgoKSwKLSAgICAgICAgICAgICAgZGF0YSA9IFtdOwotCi0gICAgICAgICAgICB2YXIgdHJh bnNhY3Rpb25fc3RhdHVzID0gcmVzLmRhdGEudHJhbnNhY3Rpb25fc3RhdHVzOwotCi0gICAgICAg ICAgICAvLyBVcGRhdGUgbGFzdCB0cmFuc2FjdGlvbiBzdGF0dXMKLSAgICAgICAgICAgIHNlbGYu bGFzdF90cmFuc2FjdGlvbl9zdGF0dXMgPSB0cmFuc2FjdGlvbl9zdGF0dXM7Ci0KLSAgICAgICAg ICAgIHZhciBpc19jb21taXRfcmVxdWlyZWQgPSB0cmFuc2FjdGlvbl9zdGF0dXMgPiAwOyAvLyAw IGlzIGlkbGUKLQotICAgICAgICAgICAgLy8gRW5hYmxlL0Rpc2FibGUgY29tbWl0IGFuZCByb2xs YmFjayBidXR0b24uCi0gICAgICAgICAgICBpZiAoaXNfY29tbWl0X3JlcXVpcmVkKSB7Ci0gICAg ICAgICAgICAgIHNlbGYuZGlzYWJsZV90cmFuc2FjdGlvbl9idXR0b25zKGZhbHNlKTsKLSAgICAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIHNlbGYuZGlzYWJsZV90cmFuc2FjdGlvbl9i dXR0b25zKHRydWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gRW5hYmxlIHF1ZXJ5 IHRvb2wgYnV0dG9ucyBhbmQgY2FuY2VsIGJ1dHRvbiBvbmx5IGlmIHF1ZXJ5IHRvb2wKLSAgICAg ICAgICAgIGlmKHNlbGYuaXNfcXVlcnlfdG9vbCkKLSAgICAgICAgICAgICAgc2VsZi5kaXNhYmxl X3Rvb2xfYnV0dG9ucyhmYWxzZSk7Ci0KLSAgICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0dXMp IHsKLSAgICAgICAgICAgICAgLy8gRGlzYWJsZSBTYXZlIERhdGEgQ2hhbmdlcyBidXR0b24KLSAg ICAgICAgICAgICAgJCgnI2J0bi1zYXZlLWRhdGEnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpOwot Ci0gICAgICAgICAgICAgIHNhdmVfc3VjY2Vzc2Z1bCA9IHRydWU7Ci0KLSAgICAgICAgICAgICAg Ly8gUmVtb3ZlIGhpZ2hsaWdodGVkIGNlbGxzIHN0eWxpbmcKLSAgICAgICAgICAgICAgZm9yIChs ZXQgaSA9IDE7IGkgPD0gc2VsZi5udW1iZXJPZk1vZGlmaWVkQ2VsbHM7IGkrKykKLSAgICAgICAg ICAgICAgICBncmlkLnJlbW92ZUNlbGxDc3NTdHlsZXMoaSk7Ci0KLSAgICAgICAgICAgICAgc2Vs Zi5udW1iZXJPZk1vZGlmaWVkQ2VsbHMgPSAwOwotCi0gICAgICAgICAgICAgIGlmKGlzX2FkZGVk KSB7Ci0gICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgcm93cyBpbiBhIGdyaWQgYWZ0ZXIgYWRk aXRpb24KLSAgICAgICAgICAgICAgICBkYXRhVmlldy5iZWdpblVwZGF0ZSgpOwotICAgICAgICAg ICAgICAgIF8uZWFjaChyZXMuZGF0YS5xdWVyeV9yZXN1bHRzLCBmdW5jdGlvbihyKSB7Ci0gICAg ICAgICAgICAgICAgICBpZiAoIV8uaXNOdWxsKHIucm93X2FkZGVkKSkgewotICAgICAgICAgICAg ICAgICAgLy8gRmV0Y2ggdGVtcF9pZCByZXR1cm5lZCBieSBzZXJ2ZXIgYWZ0ZXIgYWRkaXRpb24K LSAgICAgICAgICAgICAgICAgICAgdmFyIHJvd19pZCA9IE9iamVjdC5rZXlzKHIucm93X2FkZGVk KVswXTsKLSAgICAgICAgICAgICAgICAgICAgXy5lYWNoKHJlcV9kYXRhLmFkZGVkX2luZGV4LCBm dW5jdGlvbih2LCBrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gcm93X2lkKSB7 Ci0gICAgICAgICAgICAgICAgICAgICAgLy8gRmV0Y2ggaXRlbSBkYXRhIHRocm91Z2ggcm93IGlu ZGV4Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbV9mZXRjaGVkID0gZ3JpZC5nZXRE YXRhSXRlbShrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIF8uZXh0ZW5kKGl0ZW1fZmV0Y2hl ZCwgci5yb3dfYWRkZWRbcm93X2lkXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgfQotICAgICAg ICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9 KTsKLSAgICAgICAgICAgICAgICBkYXRhVmlldy5lbmRVcGRhdGUoKTsKLSAgICAgICAgICAgICAg fQotICAgICAgICAgICAgICAvLyBSZW1vdmUgZmxhZyBpc19yb3dfY29waWVkIGZyb20gY29waWVk IHJvd3MKLSAgICAgICAgICAgICAgXy5lYWNoKGRhdGEsIGZ1bmN0aW9uKHJvdykgewotICAgICAg ICAgICAgICAgIGlmIChyb3cuaXNfcm93X2NvcGllZCkgewotICAgICAgICAgICAgICAgICAgZGVs ZXRlIHJvdy5pc19yb3dfY29waWVkOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg fSk7Ci0KLSAgICAgICAgICAgICAgLy8gUmVtb3ZlIDJkIGNvcGllZF9yb3dzIGFycmF5Ci0gICAg ICAgICAgICAgIGlmIChncmlkLmNvcGllZF9yb3dzKSB7Ci0gICAgICAgICAgICAgICAgZGVsZXRl IGdyaWQuY29waWVkX3Jvd3M7Ci0gICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAvLyBS ZW1vdmUgZGVsZXRlZCByb3dzIGZyb20gY2xpZW50IGFzIHdlbGwKLSAgICAgICAgICAgICAgaWYg KGlzX2RlbGV0ZWQpIHsKLSAgICAgICAgICAgICAgICB2YXIgcm93cyA9IF8ua2V5cyhzZWxmLmRh dGFfc3RvcmUuZGVsZXRlZCk7Ci0gICAgICAgICAgICAgICAgaWYgKGRhdGFfbGVuZ3RoID09IHJv d3MubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyBtZWFucyBhbGwgdGhlIHJvd3Mg YXJlIHNlbGVjdGVkLCBjbGVhciBhbGwgZGF0YQotICAgICAgICAgICAgICAgICAgZGF0YSA9IFtd OwotICAgICAgICAgICAgICAgICAgZGF0YVZpZXcuc2V0SXRlbXMoZGF0YSwgc2VsZi5jbGllbnRf cHJpbWFyeV9rZXkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg ICBkYXRhVmlldy5iZWdpblVwZGF0ZSgpOwotICAgICAgICAgICAgICAgICAgZm9yIChsZXQgcm93 X3ZhbCBvZiByb3dzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gZ3JpZC5nZXRE YXRhKCkuZ2V0SXRlbUJ5SWQocm93X3ZhbCk7Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEucHVz aChpdGVtKTsKLSAgICAgICAgICAgICAgICAgICAgZGF0YVZpZXcuZGVsZXRlSXRlbShpdGVtW3Nl bGYuY2xpZW50X3ByaW1hcnlfa2V5XSk7Ci0gICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICAgICAgICBkYXRhVmlldy5lbmRVcGRhdGUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAg ICAgICAgICAgc2VsZi5yb3dzX3RvX2RlbGV0ZS5hcHBseShzZWxmLCBbZGF0YV0pOwotICAgICAg ICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgZ3JpZC5zZXRTZWxlY3RlZFJvd3MoW10pOwotCi0g ICAgICAgICAgICAgIC8vIFJlc2V0IGRhdGEgc3RvcmUKLSAgICAgICAgICAgICAgc2VsZi5yZXNl dF9kYXRhX3N0b3JlKCk7Ci0KLSAgICAgICAgICAgICAgLy8gUmVzZXQgb2xkIHByaW1hcnkga2V5 IGRhdGEgbm93Ci0gICAgICAgICAgICAgIHNlbGYucHJpbWFyeV9rZXlzX2RhdGEgPSB7fTsKLQot ICAgICAgICAgICAgICAvLyBDbGVhciBtc2dzIGFmdGVyIHN1Y2Nlc3NmdWwgc2F2ZQotICAgICAg ICAgICAgICBzZWxmLnNldF9zcWxfbWVzc2FnZSgnJyk7Ci0KLSAgICAgICAgICAgICAgTm90aWZ5 LnN1Y2Nlc3MoZ2V0dGV4dCgnRGF0YSBzYXZlZCBzdWNjZXNzZnVsbHkuJykpOwotCi0gICAgICAg ICAgICAgIGlmKGlzX2NvbW1pdF9yZXF1aXJlZCkKLSAgICAgICAgICAgICAgICBOb3RpZnkuaW5m byhnZXR0ZXh0KCdBdXRvLWNvbW1pdCBpcyBvZmYuIFlvdSBzdGlsbCBuZWVkIHRvIGNvbW1pdCBj aGFuZ2VzIHRvIHRoZSBkYXRhYmFzZS4nKSk7Ci0KLQotICAgICAgICAgICAgfSBlbHNlIHsKLSAg ICAgICAgICAgIC8vIFNvbWV0aGluZyB3ZW50IHdyb25nIHdoaWxlIHNhdmluZyBkYXRhIG9uIHRo ZSBkYiBzZXJ2ZXIKLSAgICAgICAgICAgICAgc2VsZi5zZXRfc3FsX21lc3NhZ2UocmVzLmRhdGEu cmVzdWx0KTsKLSAgICAgICAgICAgICAgdmFyIGVycl9tc2cgPSBnZXR0ZXh0KCclcy4nLCByZXMu ZGF0YS5yZXN1bHQpOwotICAgICAgICAgICAgICBOb3RpZnkuZXJyb3IoZXJyX21zZywgMjAwMDAp OwotICAgICAgICAgICAgICAvLyBJZiB0aGUgdHJhbnNhY3Rpb24gaXMgbm90IGlkbGUsIG5vdGlm eSB0aGUgdXNlciB0aGF0IHByZXZpb3VzIHF1ZXJpZXMgYXJlIG5vdCByb2xsZWQgYmFjaywKLSAg ICAgICAgICAgICAgLy8gb25seSB0aGUgZmFpbGVkIHNhdmUgcXVlcmllcy4KLSAgICAgICAgICAg ICAgaWYgKHRyYW5zYWN0aW9uX3N0YXR1cyAhPSAwKQotICAgICAgICAgICAgICAgIE5vdGlmeS5p bmZvKGdldHRleHQoJ1NhdmluZyBkYXRhIGNoYW5nZXMgd2FzIHJvbGxlZCBiYWNrIGJ1dCB0aGUg Y3VycmVudCB0cmFuc2FjdGlvbiBpcyAnICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgJ3N0aWxsIGFjdGl2ZTsgcHJldmlvdXMgcXVlcmllcyBhcmUgdW5hZmZlY3RlZC4n KSk7Ci0gICAgICAgICAgICAgIGdyaWQuc2V0U2VsZWN0ZWRSb3dzKFtdKTsKLSAgICAgICAgICAg ICAgLy8gVG8gaGlnaGxpZ2h0IHRoZSByb3cgYXQgZmF1bHQKLSAgICAgICAgICAgICAgaWYgKF8u aGFzKHJlcy5kYXRhLCAnX3Jvd2lkJykgJiYKLSAgICAgICAgICAgICAgKCFfLmlzVW5kZWZpbmVk KHJlcy5kYXRhLl9yb3dpZCkgfHwgIV8uaXNOdWxsKHJlcy5kYXRhLl9yb3dpZCkpKSB7Ci0gICAg ICAgICAgICAgICAgdmFyIF9yb3dfaW5kZXggPSBzZWxmLl9maW5kX3Jvd2luZGV4KHJlcy5kYXRh Ll9yb3dpZCk7Ci0gICAgICAgICAgICAgICAgaWYgKF9yb3dfaW5kZXggaW4gc2VsZi5kYXRhX3N0 b3JlLmFkZGVkX2luZGV4KSB7Ci0gICAgICAgICAgICAgICAgLy8gUmVtb3ZlIG5ldyByb3cgaW5k ZXggZnJvbSB0ZW1wX2xpc3QgaWYgc2F2ZSBvcGVyYXRpb24KLSAgICAgICAgICAgICAgICAvLyBm YWlscwotICAgICAgICAgICAgICAgICAgdmFyIGluZGV4ID0gc2VsZi5oYW5kbGVyLnRlbXBfbmV3 X3Jvd3MuaW5kZXhPZihyZXMuZGF0YS5fcm93aWQpOwotICAgICAgICAgICAgICAgICAgaWYgKGlu ZGV4ID4gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVyLnRlbXBfbmV3X3Jv d3Muc3BsaWNlKGluZGV4LCAxKTsKLSAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg ICAgIHNlbGYuZGF0YV9zdG9yZS5hZGRlZFtzZWxmLmRhdGFfc3RvcmUuYWRkZWRfaW5kZXhbX3Jv d19pbmRleF1dLmVyciA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChfcm93X2lu ZGV4IGluIHNlbGYuZGF0YV9zdG9yZS51cGRhdGVkX2luZGV4KSB7Ci0gICAgICAgICAgICAgICAg ICBzZWxmLmRhdGFfc3RvcmUudXBkYXRlZFtzZWxmLmRhdGFfc3RvcmUudXBkYXRlZF9pbmRleFtf cm93X2luZGV4XV0uZXJyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg IH0KLSAgICAgICAgICAgICAgZ3JpZC5nb3RvQ2VsbChfcm93X2luZGV4LCAxKTsKLSAgICAgICAg ICAgIH0KLQotICAgICAgICAgICAgdmFyIHF1ZXJ5X2hpc3RvcnlfaW5mb19tc2cgPSBnZXR0ZXh0 KCdUaGlzIHF1ZXJ5IHdhcyBnZW5lcmF0ZWQgYnkgcGdBZG1pbiBhcyBwYXJ0IG9mIGEgIlNhdmUg RGF0YSIgb3BlcmF0aW9uJyk7Ci0KLSAgICAgICAgICAgIF8uZWFjaChyZXMuZGF0YS5xdWVyeV9y ZXN1bHRzLCBmdW5jdGlvbihyKSB7Ci0gICAgICAgICAgICAgIHZhciBoaXN0b3J5X2VudHJ5ID0g ewotICAgICAgICAgICAgICAgICdzdGF0dXMnOiByLnN0YXR1cywKLSAgICAgICAgICAgICAgICAn c3RhcnRfdGltZSc6IHNhdmVfc3RhcnRfdGltZSwKLSAgICAgICAgICAgICAgICAncXVlcnknOiBy LnNxbCwKLSAgICAgICAgICAgICAgICAncm93X2FmZmVjdGVkJzogci5yb3dzX2FmZmVjdGVkLAot ICAgICAgICAgICAgICAgICd0b3RhbF90aW1lJzogbnVsbCwKLSAgICAgICAgICAgICAgICAnbWVz c2FnZSc6IHIucmVzdWx0LAotICAgICAgICAgICAgICAgICdxdWVyeV9zb3VyY2UnOiBRdWVyeVNv dXJjZXMuU0FWRV9EQVRBLAotICAgICAgICAgICAgICAgICdpc19wZ2FkbWluX3F1ZXJ5JzogdHJ1 ZSwKLSAgICAgICAgICAgICAgICAnaW5mbyc6IHF1ZXJ5X2hpc3RvcnlfaW5mb19tc2csCi0gICAg ICAgICAgICAgIH07Ci0gICAgICAgICAgICAgIHNlbGYuYWRkX3RvX2hpc3RvcnkoaGlzdG9yeV9l bnRyeSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgc2VsZi50cmlnZ2VyKCdwZ2Fk bWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwotCi0gICAgICAgICAgICBncmlkLmlu dmFsaWRhdGUoKTsKLSAgICAgICAgICAgIGlmIChzZWxmLmNsb3NlX29uX3NhdmUpIHsKLSAgICAg ICAgICAgICAgaWYoc2F2ZV9zdWNjZXNzZnVsKSB7Ci0gICAgICAgICAgICAgICAgLy8gQ2hlY2sg Zm9yIGFueSBvdGhlciBuZWVkZWQgY29uZmlybWF0aW9ucyBiZWZvcmUgY2xvc2luZwotICAgICAg ICAgICAgICAgIHNlbGYuY2hlY2tfbmVlZGVkX2NvbmZpcm1hdGlvbnNfYmVmb3JlX2Nsb3Npbmdf cGFuZWwoKTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg ICAgICAgICBzZWxmLmNsb3NlX29uX3NhdmUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgfQotICAgICAgICAgIH0pCi0gICAgICAgICAgLmZhaWwoZnVuY3Rpb24oZSkgewot ICAgICAgICAgICAgbGV0IHN0YXRlUGFyYW1zID0gW3ZpZXddOwotICAgICAgICAgICAgbGV0IG1z ZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAotICAgICAgICAg ICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnc2F2ZV9kYXRhJywgc3RhdGVQYXJhbXMsIHRydWUKLSAg ICAgICAgICAgICk7Ci0gICAgICAgICAgICAvLyBFbmFibGUgcXVlcnkgdG9vbCBidXR0b25zIGFu ZCBjYW5jZWwgYnV0dG9uIG9ubHkgaWYgcXVlcnkgdG9vbAotICAgICAgICAgICAgaWYoc2VsZi5p c19xdWVyeV90b29sKQotICAgICAgICAgICAgICBzZWxmLmRpc2FibGVfdG9vbF9idXR0b25zKGZh bHNlKTsKLSAgICAgICAgICAgIGlmIChtc2cpCi0gICAgICAgICAgICAgIHNlbGYudXBkYXRlX21z Z19oaXN0b3J5KGZhbHNlLCBtc2cpOwotICAgICAgICAgIH0pOwotICAgICAgfSwKLQotICAgICAg cmVzZXRfZGF0YV9zdG9yZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsK LSAgICAgICAgLy8gVGhpcyBob2xkcyBhbGwgdGhlIGluc2VydGVkL3VwZGF0ZWQvZGVsZXRlZCBk YXRhIGZyb20gZ3JpZAotICAgICAgICBzZWxmLmRhdGFfc3RvcmUgPSB7Ci0gICAgICAgICAgdXBk YXRlZDoge30sCi0gICAgICAgICAgYWRkZWQ6IHt9LAotICAgICAgICAgIHN0YWdlZF9yb3dzOiB7 fSwKLSAgICAgICAgICBkZWxldGVkOiB7fSwKLSAgICAgICAgICB1cGRhdGVkX2luZGV4OiB7fSwK LSAgICAgICAgICBhZGRlZF9pbmRleDoge30sCi0gICAgICAgIH07Ci0gICAgICB9LAotCi0gICAg ICAvLyBGaW5kIGluZGV4IG9mIHJvdyBhdCBmYXVsdCBmcm9tIGdyaWQgZGF0YQotICAgICAgX2Zp bmRfcm93aW5kZXg6IGZ1bmN0aW9uKHJvd2lkKSB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpcywK LSAgICAgICAgICBncmlkID0gc2VsZi5zbGlja2dyaWQsCi0gICAgICAgICAgZGF0YVZpZXcgPSBn cmlkLmdldERhdGEoKSwKLSAgICAgICAgICBkYXRhID0gZGF0YVZpZXcuZ2V0SXRlbXMoKSwKLSAg ICAgICAgICBfcm93aWQsCi0gICAgICAgICAgY291bnQgPSAwLAotICAgICAgICAgIF9pZHggPSAt MTsKLQotICAgICAgICAvLyBJZiBfcm93aWQgaXMgb2JqZWN0IHRoZW4gaXQncyB1cGRhdGUvZGVs ZXRlIG9wZXJhdGlvbgotICAgICAgICBpZiAoXy5pc09iamVjdChyb3dpZCkpIHsKLSAgICAgICAg ICBfcm93aWQgPSByb3dpZDsKLSAgICAgICAgfSBlbHNlIGlmIChfLmlzU3RyaW5nKHJvd2lkKSkg eyAvLyBJbnNlcnQgb3BlcmF0aW9uCi0gICAgICAgICAgcm93aWQgPSB7fTsKLSAgICAgICAgICBy b3dpZFtzZWxmLmNsaWVudF9wcmltYXJ5X2tleV0gPSByb3dpZDsKLSAgICAgICAgICBfcm93aWQg PSByb3dpZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAvLyBTb21ldGhpbmcgaXMgd3Jv bmcgd2l0aCB1bmlxdWUgaWQKLSAgICAgICAgICByZXR1cm4gX2lkeDsKLSAgICAgICAgfQotCi0g ICAgICAgIF8uZmluZChkYXRhLCBmdW5jdGlvbihkKSB7Ci0gICAgICAgICAgLy8gc2VhcmNoIGZv ciB1bmlxdWUgaWQgaW4gcm93IGRhdGEgaWYgZm91bmQgdGhhbiBpdHMgdGhlIHJvdwotICAgICAg ICAgIC8vIHdoaWNoIGVycm9yIG91dCBvbiBzZXJ2ZXIgc2lkZQotICAgICAgICAgIHZhciB0bXAg PSBbXTsgLy9fLmZpbmRXaGVyZSBuZWVkcyBhcnJheSBvZiBvYmplY3QgdG8gd29yawotICAgICAg ICAgIHRtcC5wdXNoKGQpOwotICAgICAgICAgIGlmIChfLmZpbmRXaGVyZSh0bXAsIF9yb3dpZCkp IHsKLSAgICAgICAgICAgIF9pZHggPSBjb3VudDsKLSAgICAgICAgICAgIC8vIE5vdyBleGl0IHRo ZSBsb29wIGJ5IHJldHVybmluZyB0cnVlCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAg ICAgICB9Ci0gICAgICAgICAgY291bnQrKzsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgLy8gTm90 IGFibGUgdG8gZmluZCBpbiBncmlkIERhdGEKLSAgICAgICAgcmV0dXJuIF9pZHg7Ci0gICAgICB9 LAotCi0gICAgICAvLyBTYXZlIGFzCi0gICAgICBfc2F2ZV9hczogZnVuY3Rpb24oKSB7Ci0gICAg ICAgIHJldHVybiB0aGlzLl9zYXZlX2ZpbGUodHJ1ZSk7Ci0gICAgICB9LAotCi0gICAgICAvLyBT ZXQgcGFuZWwgdGl0bGUuCi0gICAgICBzZXRUaXRsZTogZnVuY3Rpb24odGl0bGUsIGlzX2ZpbGUs IGlzX2RpcnR5X2VkaXRvcj1mYWxzZSkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0gICAg ICAgIHZhciBvcGVuX25ld190YWIgPSBzZWxmLmJyb3dzZXJfcHJlZmVyZW5jZXMubmV3X2Jyb3dz ZXJfdGFiX29wZW47Ci0gICAgICAgIGlmKG9wZW5fbmV3X3RhYiAmJiBvcGVuX25ld190YWIuaW5j bHVkZXMoJ3F0JykpIHsKLSAgICAgICAgICB3aW5kb3cuZG9jdW1lbnQudGl0bGUgPSBfLmVzY2Fw ZSh0aXRsZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgXy5lYWNoKHBnV2luZG93LmRl ZmF1bHQucGdBZG1pbi5Ccm93c2VyLmRvY2tlci5maW5kUGFuZWxzKCdmcm1fZGF0YWdyaWQnKSwg ZnVuY3Rpb24ocCkgewotICAgICAgICAgICAgaWYgKHAuaXNWaXNpYmxlKCkpIHsKLSAgICAgICAg ICAgICAgaWYoaXNfZGlydHlfZWRpdG9yKSB7Ci0gICAgICAgICAgICAgICAgcC5pc19kaXJ0eV9l ZGl0b3IgPSB0cnVlOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIHBhbmVsVGl0bGVG dW5jLnNldFF1ZXJ5VG9vbERvY2tlclRpdGxlKHAsIHNlbGYuaXNfcXVlcnlfdG9vbCwgdGl0bGUs IGlzX2ZpbGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAg ICB9LAotCi0gICAgICAvLyBsb2FkIHNlbGVjdCBmaWxlIGRpYWxvZwotICAgICAgX2xvYWRfZmls ZTogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpczsKLQotICAgICAgICAvKiBJ ZiBpc19xdWVyeV9jaGFuZ2VkIGZsYWcgaXMgc2V0IHRvIGZhbHNlIHRoZW4gbm8gbmVlZCB0bwot ICAgICAgICAgKiBjb25maXJtIHdpdGggdGhlIHVzZXIgZm9yIHVuc2F2ZWQgY2hhbmdlcy4KLSAg ICAgICAgICovCi0gICAgICAgIGlmIChzZWxmLmlzX3F1ZXJ5X2NoYW5nZWQpIHsKLSAgICAgICAg ICBOb3RpZnkuY29uZmlybShnZXR0ZXh0KCdVbnNhdmVkIGNoYW5nZXMnKSwKLSAgICAgICAgICAg IGdldHRleHQoJ0FyZSB5b3Ugc3VyZSB5b3Ugd2lzaCB0byBkaXNjYXJkIHRoZSBjdXJyZW50IGNo YW5nZXM/JyksCi0gICAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgLy8gVXNl ciBkbyBub3Qgd2FudCB0byBzYXZlLCBqdXN0IGNvbnRpbnVlCi0gICAgICAgICAgICAgIHNlbGYu X29wZW5fc2VsZWN0X2ZpbGVfbWFuYWdlcigpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg IGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0K LSAgICAgICAgICApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHNlbGYuX29wZW5fc2Vs ZWN0X2ZpbGVfbWFuYWdlcigpOwotICAgICAgICB9Ci0KLSAgICAgIH0sCi0KLSAgICAgIC8vIE9w ZW4gRmlsZU1hbmFnZXIKLSAgICAgIF9vcGVuX3NlbGVjdF9maWxlX21hbmFnZXI6IGZ1bmN0aW9u KCkgewotICAgICAgICB2YXIgcGFyYW1zID0gewotICAgICAgICAgICdzdXBwb3J0ZWRfdHlwZXMn OiBbJyonLCAnc3FsJ10sIC8vIGZpbGUgdHlwZXMgYWxsb3dlZAotICAgICAgICAgICdkaWFsb2df dHlwZSc6ICdzZWxlY3RfZmlsZScsIC8vIG9wZW4gc2VsZWN0IGZpbGUgZGlhbG9nCi0gICAgICAg IH07Ci0gICAgICAgIHBnQWRtaW4uRmlsZU1hbmFnZXIuaW5pdCgpOwotICAgICAgICBwZ0FkbWlu LkZpbGVNYW5hZ2VyLnNob3dfZGlhbG9nKHBhcmFtcyk7Ci0gICAgICB9LAotCi0gICAgICAvLyBy ZWFkIGZpbGUgZGF0YSBhbmQgcmV0dXJuIGFzIHJlc3BvbnNlCi0gICAgICBfc2VsZWN0X2ZpbGVf aGFuZGxlcjogZnVuY3Rpb24oZSkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAg ICAgX2UgPSBlLAotICAgICAgICAgIGRhdGEgPSB7Ci0gICAgICAgICAgICAnZmlsZV9uYW1lJzog ZGVjb2RlVVJJKGUpLAotICAgICAgICAgIH07Ci0KLSAgICAgICAgc2VsZi50cmlnZ2VyKAotICAg ICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246c2hvdycsCi0gICAgICAgICAg Z2V0dGV4dCgnTG9hZGluZyB0aGUgZmlsZS4uLicpCi0gICAgICAgICk7Ci0gICAgICAgIC8vIHNl dCBjdXJzb3IgdG8gcHJvZ3Jlc3MgYmVmb3JlIGZpbGUgbG9hZAotICAgICAgICB2YXIgJGJ1c3lf aWNvbl9kaXYgPSAkKCcuc3FsLWVkaXRvci1idXN5LWZldGNoaW5nJyk7Ci0gICAgICAgICRidXN5 X2ljb25fZGl2LmFkZENsYXNzKCdzaG93X3Byb2dyZXNzJyk7Ci0KLSAgICAgICAgLy8gTWFrZSBh amF4IGNhbGwgdG8gbG9hZCB0aGUgZGF0YSBmcm9tIGZpbGUKLSAgICAgICAgJC5hamF4KHsKLSAg ICAgICAgICB1cmw6IHVybF9mb3IoJ3NxbGVkaXRvci5sb2FkX2ZpbGUnKSwKLSAgICAgICAgICBt ZXRob2Q6ICdQT1NUJywKLSAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24n LAotICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGRhdGEpLAotICAgICAgICB9KQotICAg ICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykgewotICAgICAgICAgICAgc2VsZi5ncmlkVmlldy5x dWVyeV90b29sX29iai5zZXRWYWx1ZShyZXMpOwotICAgICAgICAgICAgc2VsZi5ncmlkVmlldy5j dXJyZW50X2ZpbGUgPSBlOwotICAgICAgICAgICAgc2VsZi5ncmlkVmlldy5xdWVyeV90b29sX29i ai5maWxlX2RhdGEgPSByZXM7Ci0gICAgICAgICAgICBzZWxmLnNldFRpdGxlKHNlbGYuZ3JpZFZp ZXcuY3VycmVudF9maWxlLnNwbGl0KCdcXCcpLnBvcCgpLnNwbGl0KCcvJykucG9wKCksIHRydWUp OwotICAgICAgICAgICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWlj b246aGlkZScpOwotICAgICAgICAgICAgLy8gaGlkZSBjdXJzb3IKLSAgICAgICAgICAgICRidXN5 X2ljb25fZGl2LnJlbW92ZUNsYXNzKCdzaG93X3Byb2dyZXNzJyk7Ci0KLSAgICAgICAgICAgIC8v IGRpc2FibGUgc2F2ZSBidXR0b24gb24gZmlsZSBzYXZlCi0gICAgICAgICAgICAkKCcjYnRuLXNh dmUtZmlsZScpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7Ci0gICAgICAgICAgICAkKCcjYnRuLWZp bGUtbWVudS1zYXZlJykuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTsKLQotICAgICAgICAgICAgLy8g VXBkYXRlIHRoZSBmbGFnIGFzIG5ldyBjb250ZW50IGlzIGp1c3QgbG9hZGVkLgotICAgICAgICAg ICAgc2VsZi5pc19xdWVyeV9jaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0 KCgpID0+IHsgc2VsZi5ncmlkVmlldy5xdWVyeV90b29sX29iai5mb2N1cygpOyB9LCAyMDApOwot ICAgICAgICAgIH0pCi0gICAgICAgICAgLmZhaWwoZnVuY3Rpb24oZXIpIHsKLSAgICAgICAgICAg IHNlbGYudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKLSAg ICAgICAgICAgIGxldCBzdGF0ZVBhcmFtcyA9IFtfZV07Ci0gICAgICAgICAgICBsZXQgbXNnID0g aHR0cEVycm9ySGFuZGxlci5oYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCi0gICAgICAgICAgICAg IHBnQWRtaW4sIHNlbGYsIGVyLCAnX3NlbGVjdF9maWxlX2hhbmRsZXInLCBzdGF0ZVBhcmFtcywg ZmFsc2UKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBpZiAobXNnKQotICAgICAgICAgICAg ICBOb3RpZnkuZXJyb3IobXNnKTsKLSAgICAgICAgICAgIC8vIGhpZGUgY3Vyc29yCi0gICAgICAg ICAgICAkYnVzeV9pY29uX2Rpdi5yZW1vdmVDbGFzcygnc2hvd19wcm9ncmVzcycpOwotICAgICAg ICAgIH0pOwotICAgICAgfSwKLQotICAgICAgLy8gcmVhZCBkYXRhIGZyb20gY29kZW1pcnJvciBh bmQgd3JpdGUgdG8gZmlsZQotICAgICAgX3NhdmVfZmlsZV9oYW5kbGVyOiBmdW5jdGlvbihlKSB7 Ci0gICAgICAgIHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICBfZSA9IGUsCi0gICAgICAgICAg ZGF0YSA9IHsKLSAgICAgICAgICAgICdmaWxlX25hbWUnOiBkZWNvZGVVUkkoZSksCi0gICAgICAg ICAgICAnZmlsZV9jb250ZW50Jzogc2VsZi5ncmlkVmlldy5xdWVyeV90b29sX29iai5nZXRWYWx1 ZSgpLAotICAgICAgICAgIH07Ci0gICAgICAgIHZhciBmaWxlX2RhdGEgPSBzZWxmLmdyaWRWaWV3 LnF1ZXJ5X3Rvb2xfb2JqLmdldFZhbHVlKCk7Ci0gICAgICAgIHNlbGYudHJpZ2dlcigKLSAgICAg ICAgICAncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOnNob3cnLAotICAgICAgICAgIGdl dHRleHQoJ1NhdmluZyB0aGUgcXVlcmllcyBpbiB0aGUgZmlsZS4uLicpCi0gICAgICAgICk7Ci0K LSAgICAgICAgLy8gTWFrZSBhamF4IGNhbGwgdG8gc2F2ZSB0aGUgZGF0YSB0byBmaWxlCi0gICAg ICAgICQuYWpheCh7Ci0gICAgICAgICAgdXJsOiB1cmxfZm9yKCdzcWxlZGl0b3Iuc2F2ZV9maWxl JyksCi0gICAgICAgICAgbWV0aG9kOiAnUE9TVCcsCi0gICAgICAgICAgY29udGVudFR5cGU6ICdh cHBsaWNhdGlvbi9qc29uJywKLSAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeShkYXRhKSwK LSAgICAgICAgfSkKLSAgICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgICAg IGlmIChyZXMuZGF0YS5zdGF0dXMpIHsKLSAgICAgICAgICAgICAgTm90aWZ5LnN1Y2Nlc3MoZ2V0 dGV4dCgnRmlsZSBzYXZlZCBzdWNjZXNzZnVsbHkuJykpOwotICAgICAgICAgICAgICBzZWxmLmdy aWRWaWV3LmN1cnJlbnRfZmlsZSA9IGU7Ci0gICAgICAgICAgICAgIHNlbGYuc2V0VGl0bGUoc2Vs Zi5ncmlkVmlldy5jdXJyZW50X2ZpbGUucmVwbGFjZSgvXi4qW1xcXC9dL2csICcnKSwgdHJ1ZSk7 Ci0gICAgICAgICAgICAgIHNlbGYuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmouZmlsZV9kYXRhID0g ZmlsZV9kYXRhOwotICAgICAgICAgICAgICAvLyBkaXNhYmxlIHNhdmUgYnV0dG9uIG9uIGZpbGUg c2F2ZQotICAgICAgICAgICAgICAkKCcjYnRuLXNhdmUtZmlsZScpLnByb3AoJ2Rpc2FibGVkJywg dHJ1ZSk7Ci0gICAgICAgICAgICAgICQoJyNidG4tZmlsZS1tZW51LXNhdmUnKS5jc3MoJ2Rpc3Bs YXknLCAnbm9uZScpOwotCi0gICAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZmxhZyBhcyBxdWVy eSBpcyBhbHJlYWR5IHNhdmVkLgotICAgICAgICAgICAgICBzZWxmLmlzX3F1ZXJ5X2NoYW5nZWQg PSBmYWxzZTsKLSAgICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7IHNlbGYuZ3JpZFZpZXcu cXVlcnlfdG9vbF9vYmouZm9jdXMoKTsgfSwgMjAwKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg ICAgIHNlbGYudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsK LSAgICAgICAgICAgIGlmIChzZWxmLmNsb3NlX29uX3NhdmUpIHsKLSAgICAgICAgICAgICAgLy8g Q2hlY2sgZm9yIGFueSBvdGhlciBuZWVkZWQgY29uZmlybWF0aW9ucyBiZWZvcmUgY2xvc2luZwot ICAgICAgICAgICAgICBzZWxmLmNoZWNrX25lZWRlZF9jb25maXJtYXRpb25zX2JlZm9yZV9jbG9z aW5nX3BhbmVsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSkKLSAgICAgICAgICAuZmFp bChmdW5jdGlvbihlcikgewotICAgICAgICAgICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVk aXRvcjpsb2FkaW5nLWljb246aGlkZScpOwotICAgICAgICAgICAgbGV0IHN0YXRlUGFyYW1zID0g W19lXTsKLSAgICAgICAgICAgIGxldCBtc2cgPSBodHRwRXJyb3JIYW5kbGVyLmhhbmRsZVF1ZXJ5 VG9vbEFqYXhFcnJvcigKLSAgICAgICAgICAgICAgcGdBZG1pbiwgc2VsZiwgZXIsICdfc2F2ZV9m aWxlX2hhbmRsZXInLCBzdGF0ZVBhcmFtcywgZmFsc2UKLSAgICAgICAgICAgICk7Ci0gICAgICAg ICAgICBpZiAobXNnKQotICAgICAgICAgICAgICBOb3RpZnkuZXJyb3IobXNnKTsKLSAgICAgICAg ICB9KTsKLSAgICAgIH0sCi0KLSAgICAgIC8vIGNvZGVtaXJyb3IgdGV4dCBjaGFuZ2UgZXZlbnQK LSAgICAgIF9vbl9xdWVyeV9jaGFuZ2U6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgc2VsZiA9 IHRoaXM7Ci0KLSAgICAgICAgaWYgKCFzZWxmLmlzX3F1ZXJ5X2NoYW5nZWQpIHsKLSAgICAgICAg ICAvLyBVcGRhdGUgdGhlIGZsYWcgYXMgcXVlcnkgaXMgZ29pbmcgdG8gY2hhbmdlZC4KLSAgICAg ICAgICBzZWxmLmlzX3F1ZXJ5X2NoYW5nZWQgPSB0cnVlOwotCi0gICAgICAgICAgaWYgKHNlbGYu Z3JpZFZpZXcuY3VycmVudF9maWxlKSB7Ci0gICAgICAgICAgICB2YXIgdGl0bGUgPSBzZWxmLmdy aWRWaWV3LmN1cnJlbnRfZmlsZS5yZXBsYWNlKC9eLipbXFxcL10vZywgJycpICsgJyAqJzsKLSAg ICAgICAgICAgIHNlbGYuc2V0VGl0bGUodGl0bGUsIHRydWUpOwotICAgICAgICAgIH0gZWxzZSB7 Ci0gICAgICAgICAgICB2YXIgb3Blbl9uZXdfdGFiID0gc2VsZi5icm93c2VyX3ByZWZlcmVuY2Vz Lm5ld19icm93c2VyX3RhYl9vcGVuOwotICAgICAgICAgICAgdmFyIGlzX2RpcnR5X2VkaXRvciA9 IGZhbHNlOwotICAgICAgICAgICAgaWYob3Blbl9uZXdfdGFiICYmIG9wZW5fbmV3X3RhYi5pbmNs dWRlcygncXQnKSkgewotICAgICAgICAgICAgICB0aXRsZSA9IHdpbmRvdy5kb2N1bWVudC50aXRs ZSArICcgKic7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAvLyBGaW5kIHRo ZSB0aXRsZSBvZiB0aGUgdmlzaWJsZSBwYW5lbAotICAgICAgICAgICAgICBfLmVhY2gocGdXaW5k b3cuZGVmYXVsdC5wZ0FkbWluLkJyb3dzZXIuZG9ja2VyLmZpbmRQYW5lbHMoJ2ZybV9kYXRhZ3Jp ZCcpLCBmdW5jdGlvbihwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHAuaXNWaXNpYmxlKCkpIHsK LSAgICAgICAgICAgICAgICAgIHNlbGYuZ3JpZFZpZXcucGFuZWxfdGl0bGUgPSAkKHAuX3RpdGxl KS50ZXh0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9KTsKLQotICAgICAg ICAgICAgICB0aXRsZSA9IHNlbGYuZ3JpZFZpZXcucGFuZWxfdGl0bGUgKyAnIConOwotICAgICAg ICAgICAgICBpc19kaXJ0eV9lZGl0b3IgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAg ICAgc2VsZi5zZXRUaXRsZSh0aXRsZSwgZmFsc2UsIGlzX2RpcnR5X2VkaXRvcik7Ci0gICAgICAg ICAgfQotCi0gICAgICAgICAgJCgnI2J0bi1zYXZlLWZpbGUnKS5wcm9wKCdkaXNhYmxlZCcsIGZh bHNlKTsKLSAgICAgICAgICAkKCcjYnRuLWZpbGUtbWVudS1zYXZlJykuY3NzKCdkaXNwbGF5Jywg J2Jsb2NrJyk7Ci0gICAgICAgICAgJCgnI2J0bi1maWxlLW1lbnUtZHJvcGRvd24nKS5wcm9wKCdk aXNhYmxlZCcsIGZhbHNlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBpZihzZWxmLmdy aWRWaWV3LmN1cnJlbnRfZmlsZSkgewotICAgICAgICAgICAgaWYgKHNlbGYuZ3JpZFZpZXcucXVl cnlfdG9vbF9vYmouZmlsZV9kYXRhID09IHNlbGYuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmouZ2V0 VmFsdWUoKSkgewotICAgICAgICAgICAgICB0aXRsZSA9IHNlbGYuZ3JpZFZpZXcuY3VycmVudF9m aWxlLnJlcGxhY2UoL14uKltcXFwvXS9nLCAnJyk7Ci0gICAgICAgICAgICAgIGlzX2RpcnR5X2Vk aXRvciA9IGZhbHNlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgdGl0bGUg PSBzZWxmLmdyaWRWaWV3LmN1cnJlbnRfZmlsZS5yZXBsYWNlKC9eLipbXFxcL10vZywgJycpICsg JyAqJzsKLSAgICAgICAgICAgICAgaXNfZGlydHlfZWRpdG9yID0gdHJ1ZTsKLSAgICAgICAgICAg IH0KLQotICAgICAgICAgICAgc2VsZi5zZXRUaXRsZSh0aXRsZSwgdHJ1ZSwgaXNfZGlydHlfZWRp dG9yKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIC8vIFRoaXMg ZnVuY3Rpb24gd2lsbCBzZXQgdGhlIHJlcXVpcmVkIGZsYWcgZm9yIHBvbGxpbmcgcmVzcG9uc2Ug ZGF0YQotICAgICAgX2luaXRfcG9sbGluZ19mbGFnczogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZh ciBzZWxmID0gdGhpczsKLQotICAgICAgICAvLyBUbyBnZXQgYSB0aW1lb3V0IGZvciBwb2xsaW5n IGZhbGxiYWNrIHRpbWVyIGluIHNlY29uZHMgaW4KLSAgICAgICAgLy8gcmVnYXJkcyB0byBlbGFw c2VkIHRpbWUKLSAgICAgICAgc2VsZi5QT0xMX0ZBTExCQUNLX1RJTUUgPSBmdW5jdGlvbigpIHsK LSAgICAgICAgICB2YXIgc2Vjb25kcyA9IHBhcnNlSW50KChEYXRlLm5vdygpIC0gc2VsZi5xdWVy eV9zdGFydF90aW1lLmdldFRpbWUoKSkgLyAxMDAwKTsKLSAgICAgICAgICAvLyBjYWxjdWxhdGUg JiByZXR1cm4gZmFsbCBiYWNrIHBvbGxpbmcgdGltZW91dAotICAgICAgICAgIGlmIChzZWNvbmRz ID49IDEwICYmIHNlY29uZHMgPCAzMCkgewotICAgICAgICAgICAgcmV0dXJuIDUwMDsKLSAgICAg ICAgICB9IGVsc2UgaWYgKHNlY29uZHMgPj0gMzAgJiYgc2Vjb25kcyA8IDYwKSB7Ci0gICAgICAg ICAgICByZXR1cm4gMTAwMDsKLSAgICAgICAgICB9IGVsc2UgaWYgKHNlY29uZHMgPj0gNjAgJiYg c2Vjb25kcyA8IDkwKSB7Ci0gICAgICAgICAgICByZXR1cm4gMjAwMDsKLSAgICAgICAgICB9IGVs c2UgaWYgKHNlY29uZHMgPj0gOTApIHsKLSAgICAgICAgICAgIHJldHVybiA1MDAwOwotICAgICAg ICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICB9Ci0gICAgICAg IH07Ci0gICAgICB9LAotICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIHNob3cgdGhlIGZpbHRl ciBpbiB0aGUgdGV4dCBhcmVhLgotICAgICAgX3Nob3dfZmlsdGVyOiBmdW5jdGlvbigpIHsKLSAg ICAgICAgbGV0IHNlbGYgPSB0aGlzLAotICAgICAgICAgIHJlY29ubmVjdCA9IGZhbHNlOwotCi0g ICAgICAgIC8qIFdoZW4gc2VydmVyIGlzIGRpc2Nvbm5lY3RlZCBhbmQgY29ubmVjdGVkLCBjb25u ZWN0aW9uIGlzIGxvc3QsCi0gICAgICAgICAqIFRvIHJlY29ubmVjdCBwYXNzIHRydWUKLSAgICAg ICAgICovCi0gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMCAmJgotICAgICAgICAgIGFy Z3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV0gPT0gJ2Nvbm5lY3QnKSB7Ci0gICAgICAgICAg cmVjb25uZWN0ID0gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBGaWx0ZXJIYW5kbGVyLmRpYWxv ZyhzZWxmLCByZWNvbm5lY3QpOwotICAgICAgfSwKLSAgICAgIC8vIFRoaXMgZnVuY3Rpb24gd2ls bCBzaG93IHRoZSBuZXcgY29ubmVjdGlvbi4KLSAgICAgIF9zaG93X25ld19jb25uZWN0aW9uOiBm dW5jdGlvbigpIHsKLSAgICAgICAgbGV0IHNlbGYgPSB0aGlzLAotICAgICAgICAgIHJlY29ubmVj dCA9IGZhbHNlOwotCi0gICAgICAgIC8qIFdoZW4gc2VydmVyIGlzIGRpc2Nvbm5lY3RlZCBhbmQg Y29ubmVjdGVkLCBjb25uZWN0aW9uIGlzIGxvc3QsCi0gICAgICAgICAqIFRvIHJlY29ubmVjdCBw YXNzIHRydWUKLSAgICAgICAgICovCi0gICAgICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMCAm JiBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID09ICdjb25uZWN0JykgewotICAgICAg ICAgIHJlY29ubmVjdCA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBuZXdDb25uZWN0aW9u SGFuZGxlci5kaWFsb2coc2VsZiwgcmVjb25uZWN0LCBzZWxmLmJyb3dzZXJfcHJlZmVyZW5jZXMp OwotICAgICAgfSwKLSAgICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBpbmNsdWRlIHRoZSBmaWx0 ZXIgYnkgc2VsZWN0aW9uLgotICAgICAgX2luY2x1ZGVfZmlsdGVyOiBmdW5jdGlvbigpIHsKLSAg ICAgICAgdmFyIHNlbGYgPSB0aGlzLAotICAgICAgICAgIGRhdGEgPSB7fSwKLSAgICAgICAgICBn cmlkLCBhY3RpdmVfY29sdW1uLCBjb2x1bW5faW5mbywgX3ZhbHVlczsKLQotICAgICAgICBncmlk ID0gc2VsZi5zbGlja2dyaWQ7Ci0gICAgICAgIGFjdGl2ZV9jb2x1bW4gPSBncmlkLmdldEFjdGl2 ZUNlbGwoKTsKLQotICAgICAgICAvLyBJZiBubyBjZWxsIGlzIHNlbGVjdGVkIHRoZW4gcmV0dXJu IGZyb20gdGhlIGZ1bmN0aW9uCi0gICAgICAgIGlmIChfLmlzTnVsbChhY3RpdmVfY29sdW1uKSB8 fCBfLmlzVW5kZWZpbmVkKGFjdGl2ZV9jb2x1bW4pKQotICAgICAgICAgIHJldHVybjsKLQotICAg ICAgICBjb2x1bW5faW5mbyA9IGdyaWQuZ2V0Q29sdW1ucygpW2FjdGl2ZV9jb2x1bW4uY2VsbF07 Ci0KLSAgICAgICAgLy8gRmV0Y2ggY3VycmVudCByb3cgZGF0YSBmcm9tIGdyaWQKLSAgICAgICAg X3ZhbHVlcyA9IGdyaWQuZ2V0RGF0YUl0ZW0oYWN0aXZlX2NvbHVtbi5yb3csIGFjdGl2ZV9jb2x1 bW4uY2VsbCk7Ci0gICAgICAgIGlmIChfLmlzTnVsbChfdmFsdWVzKSB8fCBfLmlzVW5kZWZpbmVk KF92YWx1ZXMpKQotICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBBZGQgY29sdW1uIHBv c2l0aW9uIGFuZCBpdCdzIHZhbHVlIHRvIGRhdGEKLSAgICAgICAgZGF0YVtjb2x1bW5faW5mby5m aWVsZF0gPSBfLmlzVW5kZWZpbmVkKF92YWx1ZXNbY29sdW1uX2luZm8uZmllbGRdKSA/ICcnIDog X3ZhbHVlc1tjb2x1bW5faW5mby5maWVsZF07Ci0KLSAgICAgICAgc2VsZi50cmlnZ2VyKAotICAg ICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246c2hvdycsCi0gICAgICAgICAg Z2V0dGV4dCgnQXBwbHlpbmcgdGhlIG5ldyBmaWx0ZXIuLi4nKQotICAgICAgICApOwotCi0gICAg ICAgIC8vIE1ha2UgYWpheCBjYWxsIHRvIGluY2x1ZGUgdGhlIGZpbHRlciBieSBzZWxlY3Rpb24K LSAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICB1cmw6IHVybF9mb3IoJ3NxbGVkaXRvci5pbmNs dXNpdmVfZmlsdGVyJywgewotICAgICAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi50cmFuc0lkLAot ICAgICAgICAgIH0pLAotICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgIGNvbnRl bnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsCi0gICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdp ZnkoZGF0YSksCi0gICAgICAgIH0pCi0gICAgICAgICAgLmRvbmUoZnVuY3Rpb24ocmVzKSB7Ci0g ICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpo aWRlJyk7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KAotICAgICAgICAgICAgICBmdW5jdGlvbigp IHsKLSAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEuc3RhdHVzKSB7Ci0gICAgICAgICAgICAg ICAgLy8gUmVmcmVzaCB0aGUgc3FsIGdyaWQKLSAgICAgICAgICAgICAgICAgIHF1ZXJ5VG9vbEFj dGlvbnMuZXhlY3V0ZVF1ZXJ5KHNlbGYpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgICAgICAgICBOb3RpZnkuYWxlcnQoZ2V0dGV4dCgnRmlsdGVyIEJ5IFNlbGVjdGlvbiBF cnJvcicpLCByZXMuZGF0YS5yZXN1bHQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg ICAgfQotICAgICAgICAgICAgKTsKLSAgICAgICAgICB9KQotICAgICAgICAgIC5mYWlsKGZ1bmN0 aW9uKGUpIHsKLSAgICAgICAgICAgIHNlbGYudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9h ZGluZy1pY29uOmhpZGUnKTsKLSAgICAgICAgICAgIGxldCBtc2cgPSBodHRwRXJyb3JIYW5kbGVy LmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKLSAgICAgICAgICAgICAgcGdBZG1pbiwgc2VsZiwg ZSwgJ19pbmNsdWRlX2ZpbHRlcicsIFtdLCB0cnVlCi0gICAgICAgICAgICApOwotICAgICAgICAg ICAgaWYgKG1zZykKLSAgICAgICAgICAgICAgTm90aWZ5LmFsZXJ0KGdldHRleHQoJ0ZpbHRlciBC eSBTZWxlY3Rpb24gRXJyb3InKSwgbXNnKTsKLSAgICAgICAgICB9KTsKLSAgICAgIH0sCi0KLSAg ICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBleGNsdWRlIHRoZSBmaWx0ZXIgYnkgc2VsZWN0aW9u LgotICAgICAgX2V4Y2x1ZGVfZmlsdGVyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHNlbGYg PSB0aGlzLAotICAgICAgICAgIGRhdGEgPSB7fSwKLSAgICAgICAgICBncmlkLCBhY3RpdmVfY29s dW1uLCBjb2x1bW5faW5mbywgX3ZhbHVlczsKLQotICAgICAgICBncmlkID0gc2VsZi5zbGlja2dy aWQ7Ci0gICAgICAgIGFjdGl2ZV9jb2x1bW4gPSBncmlkLmdldEFjdGl2ZUNlbGwoKTsKLQotICAg ICAgICAvLyBJZiBubyBjZWxsIGlzIHNlbGVjdGVkIHRoZW4gcmV0dXJuIGZyb20gdGhlIGZ1bmN0 aW9uCi0gICAgICAgIGlmIChfLmlzTnVsbChhY3RpdmVfY29sdW1uKSB8fCBfLmlzVW5kZWZpbmVk KGFjdGl2ZV9jb2x1bW4pKQotICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjb2x1bW5faW5m byA9IGdyaWQuZ2V0Q29sdW1ucygpW2FjdGl2ZV9jb2x1bW4uY2VsbF07Ci0KLSAgICAgICAgLy8g RmV0Y2ggY3VycmVudCByb3cgZGF0YSBmcm9tIGdyaWQKLSAgICAgICAgX3ZhbHVlcyA9IGdyaWQu Z2V0RGF0YUl0ZW0oYWN0aXZlX2NvbHVtbi5yb3csIGFjdGl2ZV9jb2x1bW4uY2VsbCk7Ci0gICAg ICAgIGlmIChfLmlzTnVsbChfdmFsdWVzKSB8fCBfLmlzVW5kZWZpbmVkKF92YWx1ZXMpKQotICAg ICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBBZGQgY29sdW1uIHBvc2l0aW9uIGFuZCBpdCdz IHZhbHVlIHRvIGRhdGEKLSAgICAgICAgZGF0YVtjb2x1bW5faW5mby5maWVsZF0gPSBfLmlzVW5k ZWZpbmVkKF92YWx1ZXNbY29sdW1uX2luZm8uZmllbGRdKSA/ICcnIDogX3ZhbHVlc1tjb2x1bW5f aW5mby5maWVsZF07Ci0KLSAgICAgICAgc2VsZi50cmlnZ2VyKAotICAgICAgICAgICdwZ2FkbWlu LXNxbGVkaXRvcjpsb2FkaW5nLWljb246c2hvdycsCi0gICAgICAgICAgZ2V0dGV4dCgnQXBwbHlp bmcgdGhlIG5ldyBmaWx0ZXIuLi4nKQotICAgICAgICApOwotCi0gICAgICAgIC8vIE1ha2UgYWph eCBjYWxsIHRvIGV4Y2x1ZGUgdGhlIGZpbHRlciBieSBzZWxlY3Rpb24uCi0gICAgICAgICQuYWph eCh7Ci0gICAgICAgICAgdXJsOiB1cmxfZm9yKCdzcWxlZGl0b3IuZXhjbHVzaXZlX2ZpbHRlcics IHsKLSAgICAgICAgICAgICd0cmFuc19pZCc6IHNlbGYudHJhbnNJZCwKLSAgICAgICAgICB9KSwK LSAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKLSAgICAgICAgICBjb250ZW50VHlwZTogJ2FwcGxp Y2F0aW9uL2pzb24nLAotICAgICAgICAgIGRhdGE6IEpTT04uc3RyaW5naWZ5KGRhdGEpLAotICAg ICAgICB9KQotICAgICAgICAgIC5kb25lKGZ1bmN0aW9uKHJlcykgewotICAgICAgICAgICAgc2Vs Zi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwotICAgICAg ICAgICAgc2V0VGltZW91dCgKLSAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAg ICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1cykgewotICAgICAgICAgICAgICAgIC8vIFJlZnJlc2gg dGhlIHNxbCBncmlkCi0gICAgICAgICAgICAgICAgICBxdWVyeVRvb2xBY3Rpb25zLmV4ZWN1dGVR dWVyeShzZWxmKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAg Tm90aWZ5LmFsZXJ0KGdldHRleHQoJ0ZpbHRlciBFeGNsdWRlIFNlbGVjdGlvbiBFcnJvcicpLCBy ZXMuZGF0YS5yZXN1bHQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfSwgMTAK LSAgICAgICAgICAgICk7Ci0gICAgICAgICAgfSkKLSAgICAgICAgICAuZmFpbChmdW5jdGlvbihl KSB7Ci0gICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmct aWNvbjpoaWRlJyk7Ci0gICAgICAgICAgICBsZXQgbXNnID0gaHR0cEVycm9ySGFuZGxlci5oYW5k bGVRdWVyeVRvb2xBamF4RXJyb3IoCi0gICAgICAgICAgICAgIHBnQWRtaW4sIHNlbGYsIGUsICdf ZXhjbHVkZV9maWx0ZXInLCBbXSwgdHJ1ZQotICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIGlm IChtc2cpCi0gICAgICAgICAgICAgIE5vdGlmeS5hbGVydChnZXR0ZXh0KCdGaWx0ZXIgRXhjbHVk ZSBTZWxlY3Rpb24gRXJyb3InKSwgbXNnKTsKLSAgICAgICAgICB9KTsKLSAgICAgIH0sCi0KLSAg ICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCByZW1vdmUgdGhlIGZpbHRlci4KLSAgICAgIF9yZW1v dmVfZmlsdGVyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAg ICAgIHNlbGYudHJpZ2dlcigKLSAgICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1p Y29uOnNob3cnLAotICAgICAgICAgIGdldHRleHQoJ1JlbW92aW5nIHRoZSBmaWx0ZXIuLi4nKQot ICAgICAgICApOwotCi0gICAgICAgIC8vIE1ha2UgYWpheCBjYWxsIHRvIGV4Y2x1ZGUgdGhlIGZp bHRlciBieSBzZWxlY3Rpb24uCi0gICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgdXJsOiB1cmxf Zm9yKCdzcWxlZGl0b3IucmVtb3ZlX2ZpbHRlcicsIHsKLSAgICAgICAgICAgICd0cmFuc19pZCc6 IHNlbGYudHJhbnNJZCwKLSAgICAgICAgICB9KSwKLSAgICAgICAgICBtZXRob2Q6ICdQT1NUJywK LSAgICAgICAgfSkKLSAgICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgICAg IHNlbGYudHJpZ2dlcigncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKLSAg ICAgICAgICAgIHNldFRpbWVvdXQoCi0gICAgICAgICAgICAgIGZ1bmN0aW9uKCkgewotICAgICAg ICAgICAgICAgIGlmIChyZXMuZGF0YS5zdGF0dXMpIHsKLSAgICAgICAgICAgICAgICAvLyBSZWZy ZXNoIHRoZSBzcWwgZ3JpZAotICAgICAgICAgICAgICAgICAgcXVlcnlUb29sQWN0aW9ucy5leGVj dXRlUXVlcnkoc2VsZik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAg ICAgIE5vdGlmeS5hbGVydChnZXR0ZXh0KCdSZW1vdmUgRmlsdGVyIEVycm9yJyksIHJlcy5kYXRh LnJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAg ICApOwotICAgICAgICAgIH0pCi0gICAgICAgICAgLmZhaWwoZnVuY3Rpb24oZSkgewotICAgICAg ICAgICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScp OwotICAgICAgICAgICAgbGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxlUXVlcnlUb29s QWpheEVycm9yKAotICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX3JlbW92ZV9maWx0 ZXInLCBbXSwgdHJ1ZQotICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIGlmIChtc2cpCi0gICAg ICAgICAgICAgIE5vdGlmeS5hbGVydChnZXR0ZXh0KCdSZW1vdmUgRmlsdGVyIEVycm9yJyksIG1z Zyk7Ci0gICAgICAgICAgfSk7Ci0gICAgICB9LAotCi0gICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdp bGwgY29weSB0aGUgc2VsZWN0ZWQgcm93LgotICAgICAgX2NvcHlfcm93OiBjb3B5RGF0YSwKLQot ICAgICAgX2NvcHlfcm93X3dpdGhfaGVhZGVyOiBmdW5jdGlvbigpIHsKLSAgICAgICAgJCgnLmNv cHktd2l0aC1oZWFkZXInKS50b2dnbGVDbGFzcygndmlzaWJpbGl0eS1oaWRkZW4nKTsKLSAgICAg IH0sCi0KLSAgICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBlbmFibGUgUGFzdGUgYnV0dG9uIGlm IGRhdGEgaXMgY29waWVkIGluIHNvbWUgb3RoZXIgYWN0aXZlIHNlc3Npb24KLSAgICAgIF9jb3Bp ZWRfaW5fb3RoZXJfc2Vzc2lvbjogZnVuY3Rpb24oZSwgY29waWVkV2l0aEhlYWRlcnMpIHsKLSAg ICAgICAgcGdBZG1pbi5TcWxFZGl0b3IuY29waWVkSW5PdGhlclNlc3Npb25XaXRoSGVhZGVycyA9 IGNvcGllZFdpdGhIZWFkZXJzOwotICAgICAgICAkKCcjYnRuLXBhc3RlLXJvdycpLnByb3AoJ2Rp c2FibGVkJywgZmFsc2UpOwotICAgICAgfSwKLQotICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxs IHBhc3RlIHRoZSBzZWxlY3RlZCByb3cuCi0gICAgICBfcGFzdGVfcm93OiBmdW5jdGlvbigpIHsK LSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotICAgICAgICBsZXQgcm93c1RleHQgPSBjbGlwYm9h cmQuZ2V0VGV4dEZyb21DbGlwYm9hcmQoKTsKLSAgICAgICAgbGV0IGNvcGllZF9yb3dzID0gcGdh ZG1pblV0aWxzLkNTVlRvQXJyYXkocm93c1RleHQsIHNlbGYucHJlZmVyZW5jZXMucmVzdWx0c19n cmlkX2ZpZWxkX3NlcGFyYXRvciwgc2VsZi5wcmVmZXJlbmNlcy5yZXN1bHRzX2dyaWRfcXVvdGVf Y2hhcik7Ci0gICAgICAgIC8vIERvIG5vdCBwYXJzZSByb3cgaWYgcm93cyBhcmUgY29waWVkIHdp dGggaGVhZGVycwotICAgICAgICBpZihwZ0FkbWluLlNxbEVkaXRvci5jb3BpZWRJbk90aGVyU2Vz c2lvbldpdGhIZWFkZXJzKSB7Ci0gICAgICAgICAgY29waWVkX3Jvd3MgPSBjb3BpZWRfcm93cy5z bGljZSgxKTsKLSAgICAgICAgfQotICAgICAgICB2YXIgcm93X2luZGV4ID0gMDsKLSAgICAgICAg Y29waWVkX3Jvd3MgPSBjb3BpZWRfcm93cy5yZWR1Y2UoKHBhcnRpYWwsIHZhbHVlcykgPT4gewot ICAgICAgICAgIC8vIHNwbGl0IGVhY2ggcm93IHdpdGggZmllbGQgc2VwYXJhdG9yIGNoYXJhY3Rl cgotICAgICAgICAgIGxldCByb3cgPSB7fTsKLSAgICAgICAgICBmb3IgKGxldCBjb2wgaW4gc2Vs Zi5jb2x1bW5zKSB7Ci0gICAgICAgICAgICBsZXQgdiA9IHZhbHVlc1tjb2xdOwotCi0gICAgICAg ICAgICAvLyBzZXQgdmFsdWUgdG8gZGVmYXVsdCBvciBudWxsIGRlcGVuZGluZyBvbiBjb2x1bW4g bWV0YWRhdGEKLSAgICAgICAgICAgIGlmKHYgPT09ICcnKSB7Ci0gICAgICAgICAgICAgIGlmKHNl bGYuY29sdW1uc1tjb2xdLmhhc19kZWZhdWx0X3ZhbCkgewotICAgICAgICAgICAgICAgIHYgPSB1 bmRlZmluZWQ7Ci0gICAgICAgICAgICAgIH0gZWxzZSBpZiAoc2VsZi5jb3BpZWRfcm93c1tyb3df aW5kZXhdW3NlbGYuY29sdW1uc1tjb2xdLmRpc3BsYXlfbmFtZV0gPT09IG51bGwpIHsKLSAgICAg ICAgICAgICAgICB2ID0gbnVsbDsKLSAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAg ICAgICB2ID0gJyc7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAg ICAgaWYoc2VsZi5jb2x1bW5zW2NvbF0uY2VsbCA9PT0gJ2Jvb2xlYW4nKSB7Ci0gICAgICAgICAg ICAgIGlmKHYgPT0gJ3RydWUnKSB7Ci0gICAgICAgICAgICAgICAgdiA9IHRydWU7Ci0gICAgICAg ICAgICAgIH0gZWxzZSBpZih2ID09ICdmYWxzZScpIHsKLSAgICAgICAgICAgICAgICB2ID0gZmFs c2U7Ci0gICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdiA9IG51bGw7Ci0g ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcm93W3NlbGYuY29s dW1uc1tjb2xdLm5hbWVdID0gdjsKLSAgICAgICAgICB9Ci0gICAgICAgICAgcGFydGlhbC5wdXNo KHJvdyk7Ci0gICAgICAgICAgcm93X2luZGV4ICsrOwotICAgICAgICAgIHJldHVybiBwYXJ0aWFs OwotICAgICAgICB9LCBbXSk7Ci0KLSAgICAgICAgLy8gSWYgdGhlcmUgYXJlIHJvd3MgdG8gcGFz dGU/Ci0gICAgICAgIGlmIChjb3BpZWRfcm93cy5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgLy8g RW5hYmxlIHNhdmUgYnV0dG9uIHNvIHRoYXQgdXNlciBjYW4KLSAgICAgICAgICAvLyBzYXZlIG5l d2x5IHBhc3RlZCByb3dzIG9uIHNlcnZlcgotICAgICAgICAgICQoJyNidG4tc2F2ZS1kYXRhJyku cHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7Ci0KLSAgICAgICAgICB2YXIgZ3JpZCA9IHNlbGYuc2xp Y2tncmlkLAotICAgICAgICAgICAgZGF0YVZpZXcgPSBncmlkLmdldERhdGEoKSwKLSAgICAgICAg ICAgIGNvdW50ID0gZGF0YVZpZXcuZ2V0TGVuZ3RoKCksCi0gICAgICAgICAgICBhcnJheV90eXBl cyA9IFtdOwotICAgICAgICAgIC8vIGZvciBxdWljayBsb29rIHVwIGNyZWF0ZSBsaXN0IG9mIGFy cmF5IGRhdGEgdHlwZXMKLSAgICAgICAgICBmb3IgKHZhciBrIGluIHNlbGYuY29sdW1ucykgewot ICAgICAgICAgICAgaWYgKHNlbGYuY29sdW1uc1trXS5pc19hcnJheSkgewotICAgICAgICAgICAg ICBhcnJheV90eXBlcy5wdXNoKHNlbGYuY29sdW1uc1trXS5uYW1lKTsKLSAgICAgICAgICAgIH0K LSAgICAgICAgICB9Ci0KLSAgICAgICAgICB2YXIgYXJyX3RvX29iamVjdCA9IGZ1bmN0aW9uIChh cnIpIHsKLSAgICAgICAgICAgIHZhciBvYmogPSB7fTsKLQotICAgICAgICAgICAgXy5lYWNoKGFy ciwgZnVuY3Rpb24gKHZhbCwgaSkgewotICAgICAgICAgICAgICBpZiAoYXJyW2ldICE9PSB1bmRl ZmluZWQpIHsKLSAgICAgICAgICAgICAgICAvLyBEbyBub3Qgc3RyaW5naWZ5IGFycmF5IHR5cGVz LgotICAgICAgICAgICAgICAgIGlmIChfLmlzT2JqZWN0KGFycltpXSkgJiYgYXJyYXlfdHlwZXMu aW5kZXhPZihpKSA9PSAtMSkgewotICAgICAgICAgICAgICAgICAgb2JqW1N0cmluZyhpKV0gPSBK U09OLnN0cmluZ2lmeShhcnJbaV0pOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAg ICAgICAgICAgICBvYmpbU3RyaW5nKGkpXSA9IGFycltpXTsKLSAgICAgICAgICAgICAgICB9Ci0g ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgcmV0dXJuIG9iajsK LSAgICAgICAgICB9OwotCi0gICAgICAgICAgLy8gR2VuZXJhdGUgVW5pcXVlIGtleSBmb3IgZWFj aCBwYXN0ZWQgcm93KHMpCi0gICAgICAgICAgLy8gQ29udmVydCBhcnJheSB2YWx1ZXMgdG8gb2Jq ZWN0IHRvIHNlbmQgdG8gc2VydmVyCi0gICAgICAgICAgLy8gQWRkIGZsYWcgaXNfcm93X2NvcGll ZCB0byBoYW5kbGUgW2RlZmF1bHRdIGFuZCBbbnVsbF0KLSAgICAgICAgICAvLyBmb3IgY29waWVk IHJvd3MuCi0gICAgICAgICAgLy8gQWRkIGluZGV4IG9mIGNvcGllZCByb3cgaW50byB0ZW1wX25l d19yb3dzCi0gICAgICAgICAgLy8gVHJpZ2dlciBncmlkLm9uQWRkTmV3Um93IHdoZW4gYSByb3cg aXMgY29waWVkCi0gICAgICAgICAgLy8gUmVzZXQgc2VsZWN0aW9uCi0KLSAgICAgICAgICBkYXRh Vmlldy5iZWdpblVwZGF0ZSgpOwotICAgICAgICAgIF8uZWFjaChjb3BpZWRfcm93cywgZnVuY3Rp b24gKHJvdykgewotICAgICAgICAgICAgdmFyIG5ld19yb3cgPSBhcnJfdG9fb2JqZWN0KHJvdyks Ci0gICAgICAgICAgICAgIF9rZXkgPSAoc2VsZi5ncmlkVmlldy5jbGllbnRfcHJpbWFyeV9rZXlf Y291bnRlcisrKS50b1N0cmluZygpOwotICAgICAgICAgICAgbmV3X3Jvdy5pc19yb3dfY29waWVk ID0gdHJ1ZTsKLSAgICAgICAgICAgIHNlbGYudGVtcF9uZXdfcm93cy5wdXNoKGNvdW50KTsKLSAg ICAgICAgICAgIG5ld19yb3dbc2VsZi5jbGllbnRfcHJpbWFyeV9rZXldID0gX2tleTsKLSAgICAg ICAgICAgIGlmIChzZWxmLmhhc19vaWRzICYmIG5ld19yb3cub2lkKSB7Ci0gICAgICAgICAgICAg IG5ld19yb3cub2lkID0gbnVsbDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZGF0YVZp ZXcuYWRkSXRlbShuZXdfcm93KTsKLSAgICAgICAgICAgIHNlbGYuZGF0YV9zdG9yZS5hZGRlZFtf a2V5XSA9IHsKLSAgICAgICAgICAgICAgJ2Vycic6IGZhbHNlLAotICAgICAgICAgICAgICAnZGF0 YSc6IG5ld19yb3csCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgc2VsZi5kYXRhX3N0b3Jl LmFkZGVkX2luZGV4W2NvdW50XSA9IF9rZXk7Ci0gICAgICAgICAgICBjb3VudCsrOwotICAgICAg ICAgIH0pOwotICAgICAgICAgIGRhdGFWaWV3LmVuZFVwZGF0ZSgpOwotICAgICAgICAgIGdyaWQu aW52YWxpZGF0ZVJvdyhncmlkLmdldFNlbGVjdGVkUm93cygpKTsKLSAgICAgICAgICBncmlkLnVw ZGF0ZVJvd0NvdW50KCk7Ci0gICAgICAgICAgZ3JpZC5yZW5kZXIoKTsKLSAgICAgICAgICAvLyBQ YXN0ZWQgcm93L3MgYWx3YXlzIGFwcGVuZCBzbyBicmluZyBsYXN0IHJvdyBpbiB2aWV3IHBvcnQu Ci0gICAgICAgICAgZ3JpZC5zY3JvbGxSb3dJbnRvVmlldyhkYXRhVmlldy5nZXRMZW5ndGgoKSk7 Ci0gICAgICAgICAgZ3JpZC5zZXRTZWxlY3RlZFJvd3MoW10pOwotICAgICAgICB9Ci0gICAgICB9 LAotCi0gICAgICAvLyBUaGlzIGZ1bmN0aW9uIHdpbGwgc2V0IHRoZSBsaW1pdCBmb3IgU1FMIHF1 ZXJ5Ci0gICAgICBfc2V0X2xpbWl0OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0 aGlzLAotICAgICAgICAgIGxpbWl0ID0gcGFyc2VJbnQoJCgnLmxpbWl0JykudmFsKCkpOwotCi0g ICAgICAgIHNlbGYudHJpZ2dlcigKLSAgICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGlu Zy1pY29uOnNob3cnLAotICAgICAgICAgIGdldHRleHQoJ1NldHRpbmcgdGhlIGxpbWl0IG9uIHRo ZSByZXN1bHQuLi4nKQotICAgICAgICApOwotICAgICAgICAvLyBNYWtlIGFqYXggY2FsbCB0byBj aGFuZ2UgdGhlIGxpbWl0Ci0gICAgICAgICQuYWpheCh7Ci0gICAgICAgICAgdXJsOiB1cmxfZm9y KCdzcWxlZGl0b3Iuc2V0X2xpbWl0JywgewotICAgICAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi50 cmFuc0lkLAotICAgICAgICAgIH0pLAotICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAg ICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsCi0gICAgICAgICAgZGF0YTogSlNP Ti5zdHJpbmdpZnkobGltaXQpLAotICAgICAgICB9KQotICAgICAgICAgIC5kb25lKGZ1bmN0aW9u KHJlcykgewotICAgICAgICAgICAgc2VsZi50cmlnZ2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2Fk aW5nLWljb246aGlkZScpOwotICAgICAgICAgICAgc2V0VGltZW91dCgKLSAgICAgICAgICAgICAg ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcy5kYXRhLnN0YXR1cykgewotICAg ICAgICAgICAgICAgIC8vIFJlZnJlc2ggdGhlIHNxbCBncmlkCi0gICAgICAgICAgICAgICAgICBx dWVyeVRvb2xBY3Rpb25zLmV4ZWN1dGVRdWVyeShzZWxmKTsKLSAgICAgICAgICAgICAgICB9IGVs c2UgewotICAgICAgICAgICAgICAgICAgTm90aWZ5LmFsZXJ0KGdldHRleHQoJ0NoYW5nZSBsaW1p dCBFcnJvcicpLCByZXMuZGF0YS5yZXN1bHQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICAgfSwgMTAKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgfSkKLSAgICAgICAgICAuZmFp bChmdW5jdGlvbihlKSB7Ci0gICAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRp dG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0gICAgICAgICAgICBsZXQgbXNnID0gaHR0cEVycm9y SGFuZGxlci5oYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCi0gICAgICAgICAgICAgIHBnQWRtaW4s IHNlbGYsIGUsICdfc2V0X2xpbWl0JywgW10sIHRydWUKLSAgICAgICAgICAgICk7Ci0gICAgICAg ICAgICBpZiAobXNnKQotICAgICAgICAgICAgICBOb3RpZnkuYWxlcnQoZ2V0dGV4dCgnQ2hhbmdl IGxpbWl0IEVycm9yJyksIG1zZyk7Ci0gICAgICAgICAgfSk7Ci0gICAgICB9LAotCi0gICAgICAv LyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZW5hYmxlL2Rpc2FibGUgYnV0dG9ucwotICAgICAg ZGlzYWJsZV90b29sX2J1dHRvbnM6IGZ1bmN0aW9uKGRpc2FibGVkLCBkaXNhYmxlX2NhbmNlbD1u dWxsKSB7Ci0gICAgICAgIGxldCBtb2RlX2Rpc2FibGVkID0gZGlzYWJsZWQ7Ci0KLSAgICAgICAg LyogQnV0dG9ucyBiZSBhbHdheXMgZGlzYWJsZWQgaW4gdmlldy9lZGl0IG1vZGUgKi8KLSAgICAg ICAgaWYoIXRoaXMuaXNfcXVlcnlfdG9vbCkgewotICAgICAgICAgIG1vZGVfZGlzYWJsZWQgPSB0 cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgJCgnI2J0bi1leHBsYWluJykucHJvcCgnZGlzYWJs ZWQnLCBtb2RlX2Rpc2FibGVkKTsKLSAgICAgICAgJCgnI2J0bi1leHBsYWluLWFuYWx5emUnKS5w cm9wKCdkaXNhYmxlZCcsIG1vZGVfZGlzYWJsZWQpOwotICAgICAgICAkKCcjYnRuLWV4cGxhaW4t b3B0aW9ucy1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywgbW9kZV9kaXNhYmxlZCk7Ci0gICAg ICAgICQoJyNidG4tZWRpdC1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywgbW9kZV9kaXNhYmxl ZCk7Ci0gICAgICAgICQoJyNidG4tbG9hZC1maWxlJykucHJvcCgnZGlzYWJsZWQnLCBtb2RlX2Rp c2FibGVkKTsKLSAgICAgICAgaWYodGhpcy5ncmlkVmlldy5jdXJyZW50X2ZpbGUpIHsKLSAgICAg ICAgICBpZih0aGlzLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqLmZpbGVfZGF0YSAhPSB0aGlzLmdy aWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqLmdldFZhbHVlKCkpIHsKLSAgICAgICAgICAgICQoJyNidG4t c2F2ZS1maWxlJykucHJvcCgnZGlzYWJsZWQnLCBtb2RlX2Rpc2FibGVkKTsKLSAgICAgICAgICB9 Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgJCgnI2J0bi1zYXZlLWZpbGUnKS5wcm9wKCdk aXNhYmxlZCcsIG1vZGVfZGlzYWJsZWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgJCgnI2J0bi1m aWxlLW1lbnUtZHJvcGRvd24nKS5wcm9wKCdkaXNhYmxlZCcsIG1vZGVfZGlzYWJsZWQpOwotICAg ICAgICAkKCcjYnRuLWZpbmQnKS5wcm9wKCdkaXNhYmxlZCcsIG1vZGVfZGlzYWJsZWQpOwotICAg ICAgICAkKCcjYnRuLWZpbmQtbWVudS1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywgbW9kZV9k aXNhYmxlZCk7Ci0gICAgICAgICQoJyNidG4tbWFjcm8tZHJvcGRvd24nKS5wcm9wKCdkaXNhYmxl ZCcsIG1vZGVfZGlzYWJsZWQpOwotCi0gICAgICAgIGlmICh0aGlzLmlzX3F1ZXJ5X3Rvb2wpIHsK LQotICAgICAgICAgIGlmKGRpc2FibGVfY2FuY2VsICE9PSBudWxsKQotICAgICAgICAgICAgJCgn I2J0bi1jYW5jZWwtcXVlcnknKS5wcm9wKCdkaXNhYmxlZCcsIGRpc2FibGVfY2FuY2VsKTsKLSAg ICAgICAgICAvLyBDYW5jZWwgcXVlcnkgdG9vbCBuZWVkcyBvcHBvc2l0ZSBiZWhhdmlvdXIgaWYg bm90IGV4cGxpY2l0bHkgZ2l2ZW4KLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAkKCcjYnRu LWNhbmNlbC1xdWVyeScpLnByb3AoJ2Rpc2FibGVkJywgIWRpc2FibGVkKTsKLQotICAgICAgICAg IGlmKHRoaXMuaXNfdHJhbnNhY3Rpb25fYnV0dG9uc19kaXNhYmxlZCkgewotICAgICAgICAgICAg JCgnI2J0bi1xdWVyeS1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywgZGlzYWJsZWQpOwotICAg ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAkKCcjYnRuLXF1ZXJ5LWRyb3Bkb3duJykucHJv cCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg ICAgICAgJCgnI2J0bi1xdWVyeS1kcm9wZG93bicpLnByb3AoJ2Rpc2FibGVkJywgbW9kZV9kaXNh YmxlZCk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAgICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMg dXNlZCB0byBlbmFibGUvZGlzYWJsZSBjb21taXQvcm9sbGJhY2sgYnV0dG9ucwotICAgICAgZGlz YWJsZV90cmFuc2FjdGlvbl9idXR0b25zOiBmdW5jdGlvbihkaXNhYmxlZCkgewotICAgICAgICB0 aGlzLmlzX3RyYW5zYWN0aW9uX2J1dHRvbnNfZGlzYWJsZWQgPSBkaXNhYmxlZDsKLSAgICAgICAg aWYgKHRoaXMuaXNfcXVlcnlfdG9vbCkgewotICAgICAgICAgICQoJyNidG4tY29tbWl0JykucHJv cCgnZGlzYWJsZWQnLCBkaXNhYmxlZCk7Ci0gICAgICAgICAgJCgnI2J0bi1yb2xsYmFjaycpLnBy b3AoJ2Rpc2FibGVkJywgZGlzYWJsZWQpOwotICAgICAgICB9Ci0gICAgICB9LAotCi0gICAgICAv KiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gaGlnaGxpZ2h0IHRoZSBlcnJvciBsaW5lIGFuZAot ICAgICAgICogdW5kZXJsaW5pbmcgZm9yIHRoZSBlcnJvciB3b3JkLgotICAgICAgICovCi0gICAg ICBfaGlnaGxpZ2h0X2Vycm9yOiBmdW5jdGlvbihyZXN1bHQpIHsKLSAgICAgICAgdmFyIHNlbGYg PSB0aGlzLAotICAgICAgICAgIGVycm9yX2xpbmVfbm8gPSAwLAotICAgICAgICAgIHN0YXJ0X21h cmtlciA9IDAsCi0gICAgICAgICAgZW5kX21hcmtlciA9IDAsCi0gICAgICAgICAgc2VsZWN0ZWRf bGluZV9ubyA9IDA7Ci0KLSAgICAgICAgLy8gUmVtb3ZlIGFscmVhZHkgZXhpc3RpbmcgbWFya2Vy Ci0gICAgICAgIHNlbGYuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmoucmVtb3ZlTGluZUNsYXNzKHNl bGYubWFya2VkX2xpbmVfbm8sICd3cmFwJywgJ0NvZGVNaXJyb3ItYWN0aXZlbGluZS1iYWNrZ3Jv dW5kJyk7Ci0KLSAgICAgICAgLy8gSW4gY2FzZSBvZiBzZWxlY3Rpb24gd2UgbmVlZCB0byBmaW5k IHRoZSBhY3R1YWwgbGluZSBubwotICAgICAgICBpZiAoc2VsZi5ncmlkVmlldy5xdWVyeV90b29s X29iai5nZXRTZWxlY3Rpb24oKS5sZW5ndGggPiAwKQotICAgICAgICAgIHNlbGVjdGVkX2xpbmVf bm8gPSBzZWxmLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqLmdldEN1cnNvcih0cnVlKS5saW5lOwot Ci0gICAgICAgIC8vIEZldGNoIHRoZSBMSU5FIHN0cmluZyB1c2luZyByZWdleCBmcm9tIHRoZSBy ZXN1bHQKLSAgICAgICAgdmFyIGxpbmUgPSAvTElORSAoXGQrKS8uZXhlYyhyZXN1bHQpLAotICAg ICAgICAgIC8vIEZldGNoIHRoZSBDaGFyYWN0ZXIgc3RyaW5nIHVzaW5nIHJlZ2V4IGZyb20gdGhl IHJlc3VsdAotICAgICAgICAgIGNoYXIgPSAvQ2hhcmFjdGVyOiAoXGQrKS8uZXhlYyhyZXN1bHQp OwotCi0gICAgICAgIC8vIElmIGxpbmUgYW5kIGNoYXJhY3RlciBpcyBudWxsIHRoZW4gbm8gbmVl ZCB0byBtYXJrCi0gICAgICAgIGlmIChsaW5lICE9IG51bGwgJiYgY2hhciAhPSBudWxsKSB7Ci0g ICAgICAgICAgZXJyb3JfbGluZV9ubyA9IHNlbGYubWFya2VkX2xpbmVfbm8gPSAocGFyc2VJbnQo bGluZVsxXSkgLSAxKSArIHNlbGVjdGVkX2xpbmVfbm87Ci0gICAgICAgICAgdmFyIGVycm9yX2No YXJfbm8gPSAocGFyc2VJbnQoY2hhclsxXSkgLSAxKTsKLQotICAgICAgICAgIC8qIFdlIG5lZWQg dG8gbG9vcCB0aHJvdWdoIGVhY2ggbGluZSB0aWxsIHRoZSBlcnJvciBsaW5lIGFuZAotICAgICAg ICAgICAqIGNvdW50IHRoZSB0b3RhbCBubyBvZiBjaGFyYWN0ZXIgdG8gZmlndXJlIG91dCB0aGUg YWN0dWFsCi0gICAgICAgICAgICogc3RhcnRpbmcvZW5kaW5nIG1hcmtlciBwb2ludCBmb3IgdGhl IGluZGl2aWR1YWwgbGluZS4gV2UKLSAgICAgICAgICAgKiBoYXZlIGFsc28gYWRkZWQgMSBwZXIg bGluZSBmb3IgdGhlICJcbiIgY2hhcmFjdGVyLgotICAgICAgICAgICAqLwotICAgICAgICAgIHZh ciBwcmV2X2xpbmVfY2hhcnMgPSAwOwotICAgICAgICAgIHZhciBsb29wX2luZGV4ID0gc2VsZWN0 ZWRfbGluZV9ubyA+IDAgPyBzZWxlY3RlZF9saW5lX25vIDogMDsKLSAgICAgICAgICBmb3IgKHZh ciBpID0gbG9vcF9pbmRleDsgaSA8IGVycm9yX2xpbmVfbm87IGkrKykKLSAgICAgICAgICAgIHBy ZXZfbGluZV9jaGFycyArPSBzZWxmLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqLmdldExpbmUoaSku bGVuZ3RoICsgMTsKLQotICAgICAgICAgIC8qIE1hcmtlciBzdGFydGluZyBwb2ludCBmb3IgdGhl IGluZGl2aWR1YWwgbGluZSBpcwotICAgICAgICAgICAqIGVxdWFsIHRvIGVycm9yIGNoYXJhY3Rl ciBpbmRleCBtaW51cyB0b3RhbCBubyBvZgotICAgICAgICAgICAqIGNoYXJhY3RlciB0aWxsIHRo ZSBlcnJvciBsaW5lIHN0YXJ0cy4KLSAgICAgICAgICAgKi8KLSAgICAgICAgICBzdGFydF9tYXJr ZXIgPSBlcnJvcl9jaGFyX25vIC0gcHJldl9saW5lX2NoYXJzOwotCi0gICAgICAgICAgLy8gRmlu ZCB0aGUgbmV4dCBzcGFjZSBmcm9tIHRoZSBjaGFyYWN0ZXIgb3IgZW5kIG9mIGxpbmUKLSAgICAg ICAgICB2YXIgZXJyb3JfbGluZSA9IHNlbGYuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmouZ2V0TGlu ZShlcnJvcl9saW5lX25vKTsKLQotICAgICAgICAgIGlmIChfLmlzVW5kZWZpbmVkKGVycm9yX2xp bmUpKSByZXR1cm47Ci0gICAgICAgICAgZW5kX21hcmtlciA9IGVycm9yX2xpbmUuaW5kZXhPZign ICcsIHN0YXJ0X21hcmtlcik7Ci0gICAgICAgICAgaWYgKGVuZF9tYXJrZXIgPCAwKQotICAgICAg ICAgICAgZW5kX21hcmtlciA9IGVycm9yX2xpbmUubGVuZ3RoOwotCi0gICAgICAgICAgLy8gTWFy ayB0aGUgZXJyb3IgdGV4dAotICAgICAgICAgIHNlbGYuZ3JpZFZpZXcubWFya2VyID0gc2VsZi5n cmlkVmlldy5xdWVyeV90b29sX29iai5tYXJrVGV4dCh7Ci0gICAgICAgICAgICBsaW5lOiBlcnJv cl9saW5lX25vLAotICAgICAgICAgICAgY2g6IHN0YXJ0X21hcmtlciwKLSAgICAgICAgICB9LCB7 Ci0gICAgICAgICAgICBsaW5lOiBlcnJvcl9saW5lX25vLAotICAgICAgICAgICAgY2g6IGVuZF9t YXJrZXIsCi0gICAgICAgICAgfSwgewotICAgICAgICAgICAgY2xhc3NOYW1lOiAnc3FsLWVkaXRv ci1tYXJrJywKLSAgICAgICAgICB9KTsKLQotICAgICAgICAgIHNlbGYuZ3JpZFZpZXcucXVlcnlf dG9vbF9vYmouYWRkTGluZUNsYXNzKHNlbGYubWFya2VkX2xpbmVfbm8sICd3cmFwJywgJ0NvZGVN aXJyb3ItYWN0aXZlbGluZS1iYWNrZ3JvdW5kJyk7Ci0gICAgICAgIH0KLSAgICAgIH0sCi0KLSAg ICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBjYW5jZWwgdGhlIHJ1bm5pbmcgcXVlcnkuCi0gICAg ICBfY2FuY2VsX3F1ZXJ5OiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwot ICAgICAgICAkLmFqYXgoewotICAgICAgICAgIHVybDogdXJsX2Zvcignc3FsZWRpdG9yLmNhbmNl bF90cmFuc2FjdGlvbicsIHsKLSAgICAgICAgICAgICd0cmFuc19pZCc6IHNlbGYudHJhbnNJZCwK LSAgICAgICAgICB9KSwKLSAgICAgICAgICBtZXRob2Q6ICdQT1NUJywKLSAgICAgICAgICBjb250 ZW50VHlwZTogJ2FwcGxpY2F0aW9uL2pzb24nLAotICAgICAgICB9KQotICAgICAgICAgIC5kb25l KGZ1bmN0aW9uKHJlcykgewotICAgICAgICAgICAgaWYgKCFyZXMuZGF0YS5zdGF0dXMpIHsKLSAg ICAgICAgICAgICAgTm90aWZ5LmFsZXJ0KGdldHRleHQoJ0NhbmNlbCBRdWVyeSBFcnJvcicpLCBy ZXMuZGF0YS5yZXN1bHQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2VsZi5kaXNhYmxl X3Rvb2xfYnV0dG9ucyhmYWxzZSk7Ci0gICAgICAgICAgICBpc19xdWVyeV9ydW5uaW5nID0gZmFs c2U7Ci0gICAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChzZWxmLmRvd25sb2FkX3Jlc3VsdHNf b2JqKSkgewotICAgICAgICAgICAgICBzZWxmLmRvd25sb2FkX3Jlc3VsdHNfb2JqLmFib3J0KCk7 Ci0gICAgICAgICAgICAgICQoJyNidG4tZmxhc2gnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsK LSAgICAgICAgICAgICAgc2VsZi50cmlnZ2VyKAotICAgICAgICAgICAgICAgICdwZ2FkbWluLXNx bGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg c2V0VGltZW91dCgoKSA9PiB7IHNlbGYuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmouZm9jdXMoKTsg fSwgMjAwKTsKLSAgICAgICAgICB9KQotICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uKGUpIHsKLSAg ICAgICAgICAgIHNlbGYuZGlzYWJsZV90b29sX2J1dHRvbnMoZmFsc2UpOwotCi0gICAgICAgICAg ICBsZXQgbXNnID0gaHR0cEVycm9ySGFuZGxlci5oYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCi0g ICAgICAgICAgICAgIHBnQWRtaW4sIHNlbGYsIGUsICdfY2FuY2VsX3F1ZXJ5JywgW10sIGZhbHNl Ci0gICAgICAgICAgICApOwotICAgICAgICAgICAgaWYgKG1zZykKLSAgICAgICAgICAgICAgTm90 aWZ5LmFsZXJ0KGdldHRleHQoJ0NhbmNlbCBRdWVyeSBFcnJvcicpLCBtc2cpOwotICAgICAgICAg IH0pOwotICAgICAgfSwKLQotICAgICAgLy8gVHJpZ2dlciBxdWVyeSByZXN1bHQgZG93bmxvYWQg dG8gY3N2LgotICAgICAgdHJpZ2dlcl9jc3ZfZG93bmxvYWQ6IGZ1bmN0aW9uKGZpbGVuYW1lKSB7 Ci0gICAgICAgIHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICB1cmwgPSB1cmxfZm9yKCdzcWxl ZGl0b3IucXVlcnlfdG9vbF9kb3dubG9hZCcsIHsKLSAgICAgICAgICAgICd0cmFuc19pZCc6IHNl bGYudHJhbnNJZCwKLSAgICAgICAgICB9KSwKLSAgICAgICAgICBkYXRhID0geyBmaWxlbmFtZTog ZmlsZW5hbWUgfTsKLQotICAgICAgICAvLyBEaXNhYmxlIHRoZSBFeGVjdXRlIGJ1dHRvbgotICAg ICAgICAkKCcjYnRuLWZsYXNoJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTsKLSAgICAgICAgc2Vs Zi5lbmFibGVfZGlzYWJsZV9kb3dubG9hZF9idG4odHJ1ZSk7Ci0gICAgICAgIHNlbGYuZGlzYWJs ZV90b29sX2J1dHRvbnModHJ1ZSk7Ci0gICAgICAgIHNlbGYuc2V0X3NxbF9tZXNzYWdlKCcnKTsK LSAgICAgICAgc2VsZi50cmlnZ2VyKAotICAgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2Fk aW5nLWljb246c2hvdycsCi0gICAgICAgICAgZ2V0dGV4dCgnRG93bmxvYWRpbmcgUmVzdWx0cy4u LicpCi0gICAgICAgICk7Ci0KLSAgICAgICAgLy8gR2V0IHRoZSBDU1YgZmlsZQotICAgICAgICBz ZWxmLmRvd25sb2FkX3Jlc3VsdHNfb2JqID0gJC5hamF4KHsKLSAgICAgICAgICB0eXBlOiAnUE9T VCcsCi0gICAgICAgICAgdXJsOiB1cmwsCi0gICAgICAgICAgZGF0YTogZGF0YSwKLSAgICAgICAg ICBjYWNoZTogZmFsc2UsCi0gICAgICAgIH0pLmRvbmUoZnVuY3Rpb24ocmVzcG9uc2UpIHsKLSAg ICAgICAgICAvLyBpZiByZXNwb25zZS5kYXRhIHByZXNlbnQsIGV4dHJhY3QgdGhlIG1lc3NhZ2UK LSAgICAgICAgICBpZighXy5pc1VuZGVmaW5lZChyZXNwb25zZS5kYXRhKSkgewotICAgICAgICAg ICAgaWYoIXJlc3BvbnNlLnN0YXR1cykgewotICAgICAgICAgICAgICBzZWxmLl9oaWdobGlnaHRf ZXJyb3IocmVzcG9uc2UuZGF0YS5yZXN1bHQpOwotICAgICAgICAgICAgICBzZWxmLnNldF9zcWxf bWVzc2FnZShyZXNwb25zZS5kYXRhLnJlc3VsdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAg fSBlbHNlIHsKLSAgICAgICAgICAgIGxldCByZXNwQmxvYiA9IG5ldyBCbG9iKFtyZXNwb25zZV0s IHt0eXBlIDogJ3RleHQvY3N2J30pLAotICAgICAgICAgICAgICB1cmxDcmVhdG9yID0gd2luZG93 LlVSTCB8fCB3aW5kb3cud2Via2l0VVJMLAotICAgICAgICAgICAgICBkb3dubG9hZF91cmwgPSB1 cmxDcmVhdG9yLmNyZWF0ZU9iamVjdFVSTChyZXNwQmxvYiksCi0gICAgICAgICAgICAgIGN1cnJl bnRfYnJvd3NlciA9IHBnQWRtaW4uQnJvd3Nlci5nZXRfYnJvd3NlcigpLAotICAgICAgICAgICAg ICBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwotCi0gICAgICAgICAgICBkb2N1 bWVudC5ib2R5LmFwcGVuZENoaWxkKGxpbmspOwotCi0gICAgICAgICAgICBpZiAoY3VycmVudF9i cm93c2VyLm5hbWUgPT09ICdJRScgJiYgd2luZG93Lm5hdmlnYXRvci5tc1NhdmVCbG9iKSB7Ci0g ICAgICAgICAgICAvLyBJRTEwKyA6IChoYXMgQmxvYiwgYnV0IG5vdCBhW2Rvd25sb2FkXSBvciBV UkwpCi0gICAgICAgICAgICAgIHdpbmRvdy5uYXZpZ2F0b3IubXNTYXZlQmxvYihyZXNwQmxvYiwg ZmlsZW5hbWUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgbGluay5zZXRB dHRyaWJ1dGUoJ2hyZWYnLCBkb3dubG9hZF91cmwpOwotICAgICAgICAgICAgICBsaW5rLnNldEF0 dHJpYnV0ZSgnZG93bmxvYWQnLCBmaWxlbmFtZSk7Ci0gICAgICAgICAgICAgIGxpbmsuY2xpY2so KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGls ZChsaW5rKTsKLSAgICAgICAgICAgIHNlbGYuZG93bmxvYWRfcmVzdWx0c19vYmogPSB1bmRlZmlu ZWQ7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgLy8gRW5hYmxlIHRoZSBleGVjdXRlIGJ1dHRv bgotICAgICAgICAgICQoJyNidG4tZmxhc2gnKS5wcm9wKCdkaXNhYmxlZCcsIGZhbHNlKTsKLSAg ICAgICAgICBzZWxmLmVuYWJsZV9kaXNhYmxlX2Rvd25sb2FkX2J0bihmYWxzZSk7Ci0gICAgICAg ICAgc2VsZi5kaXNhYmxlX3Rvb2xfYnV0dG9ucyhmYWxzZSk7Ci0gICAgICAgICAgc2VsZi50cmln Z2VyKCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwotICAgICAgICB9KS5m YWlsKGZ1bmN0aW9uKGVycikgewotICAgICAgICAgIGxldCBtc2cgPSAnJzsKLSAgICAgICAgICAv LyBFbmFibGUgdGhlIGV4ZWN1dGUgYnV0dG9uCi0gICAgICAgICAgJCgnI2J0bi1mbGFzaCcpLnBy b3AoJ2Rpc2FibGVkJywgZmFsc2UpOwotICAgICAgICAgIHNlbGYuZW5hYmxlX2Rpc2FibGVfZG93 bmxvYWRfYnRuKGZhbHNlKTsKLSAgICAgICAgICBzZWxmLmRpc2FibGVfdG9vbF9idXR0b25zKGZh bHNlKTsKLSAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmct aWNvbjpoaWRlJyk7Ci0KLQotICAgICAgICAgIGlmIChlcnIuc3RhdHVzVGV4dCA9PSAnYWJvcnQn KSB7Ci0gICAgICAgICAgICBtc2cgPSBnZXR0ZXh0KCdDU1YgRG93bmxvYWQgY2FuY2VsbGVkLicp OwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtc2cgPSBodHRwRXJyb3JIYW5kbGVy LmhhbmRsZVF1ZXJ5VG9vbEFqYXhFcnJvcigKLSAgICAgICAgICAgICAgcGdBZG1pbiwgc2VsZiwg ZXJyLCAndHJpZ2dlcl9jc3ZfZG93bmxvYWQnLCBbXSwgdHJ1ZQotICAgICAgICAgICAgKTsKLSAg ICAgICAgICB9Ci0gICAgICAgICAgLy8gQ2hlY2sgaWYgZXJyb3IgbWVzc2FnZSBpcyBwcmVzZW50 Ci0gICAgICAgICAgaWYgKG1zZykKLSAgICAgICAgICAgIE5vdGlmeS5hbGVydChnZXR0ZXh0KCdE b3dubG9hZCBDU1YgZXJyb3InKSwgbXNnKTsKLSAgICAgICAgfSk7Ci0gICAgICB9LAotCi0gICAg ICBjYWxsX2NhY2hlX3ByZWZlcmVuY2VzOiBmdW5jdGlvbigpIHsKLSAgICAgICAgbGV0IGJyb3dz ZXIgPSBwZ1dpbmRvdy5kZWZhdWx0LnBnQWRtaW4uQnJvd3NlcjsKLSAgICAgICAgYnJvd3Nlci5j YWNoZV9wcmVmZXJlbmNlcygnc3FsZWRpdG9yJyk7Ci0KLSAgICAgICAgLyogVGhpcyB3aWxsIG1h a2Ugc3VyZSB0byBnZXQgbGF0ZXN0IHVwZGF0ZXMgb25seSBhbmQgbm90IG9sZGVyIGV2ZW50cyAq LwotICAgICAgICBwZ0Jyb3dzZXIucHJlZmVyZW5jZV92ZXJzaW9uKHBnQnJvd3Nlci5nZW5lcmF0 ZV9wcmVmZXJlbmNlX3ZlcnNpb24oKSk7Ci0gICAgICB9LAotCi0gICAgICBfYXV0b19yb2xsYmFj azogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhpcywKLSAgICAgICAgICBhdXRv X3JvbGxiYWNrID0gdHJ1ZTsKLQotICAgICAgICBpZiAoJCgnLmF1dG8tcm9sbGJhY2snKS5oYXND bGFzcygndmlzaWJpbGl0eS1oaWRkZW4nKSA9PT0gdHJ1ZSkKLSAgICAgICAgICAkKCcuYXV0by1y b2xsYmFjaycpLnJlbW92ZUNsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOwotICAgICAgICBlbHNl IHsKLSAgICAgICAgICAkKCcuYXV0by1yb2xsYmFjaycpLmFkZENsYXNzKCd2aXNpYmlsaXR5LWhp ZGRlbicpOwotICAgICAgICAgIGF1dG9fcm9sbGJhY2sgPSBmYWxzZTsKLSAgICAgICAgfQotCi0g ICAgICAgIC8vIE1ha2UgYWpheCBjYWxsIHRvIGNoYW5nZSB0aGUgbGltaXQKLSAgICAgICAgJC5h amF4KHsKLSAgICAgICAgICB1cmw6IHVybF9mb3IoJ3NxbGVkaXRvci5hdXRvX3JvbGxiYWNrJywg ewotICAgICAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi50cmFuc0lkLAotICAgICAgICAgIH0pLAot ICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGlj YXRpb24vanNvbicsCi0gICAgICAgICAgZGF0YTogSlNPTi5zdHJpbmdpZnkoYXV0b19yb2xsYmFj ayksCi0gICAgICAgIH0pCi0gICAgICAgICAgLmRvbmUoZnVuY3Rpb24ocmVzKSB7Ci0gICAgICAg ICAgICBpZiAoIXJlcy5kYXRhLnN0YXR1cykKLSAgICAgICAgICAgICAgTm90aWZ5LmFsZXJ0KGdl dHRleHQoJ0F1dG8gUm9sbGJhY2sgRXJyb3InKSwgcmVzLmRhdGEucmVzdWx0KTsKLSAgICAgICAg ICB9KQotICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uKGUpIHsKLQotICAgICAgICAgICAgbGV0IG1z ZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAotICAgICAgICAg ICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX2F1dG9fcm9sbGJhY2snLCBbXSwgdHJ1ZQotICAgICAg ICAgICAgKTsKLSAgICAgICAgICAgIGlmIChtc2cpCi0gICAgICAgICAgICAgIE5vdGlmeS5hbGVy dChnZXR0ZXh0KCdBdXRvIFJvbGxiYWNrIEVycm9yJyksIG1zZyk7Ci0gICAgICAgICAgfSk7Ci0g ICAgICB9LAotCi0gICAgICBfYXV0b19jb21taXQ6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIg c2VsZiA9IHRoaXMsCi0gICAgICAgICAgYXV0b19jb21taXQgPSB0cnVlOwotCi0gICAgICAgIGlm ICgkKCcuYXV0by1jb21taXQnKS5oYXNDbGFzcygndmlzaWJpbGl0eS1oaWRkZW4nKSA9PT0gdHJ1 ZSkKLSAgICAgICAgICAkKCcuYXV0by1jb21taXQnKS5yZW1vdmVDbGFzcygndmlzaWJpbGl0eS1o aWRkZW4nKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgJCgnLmF1dG8tY29tbWl0JykuYWRk Q2xhc3MoJ3Zpc2liaWxpdHktaGlkZGVuJyk7Ci0gICAgICAgICAgYXV0b19jb21taXQgPSBmYWxz ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE1ha2UgYWpheCBjYWxsIHRvIHRvZ2dsZSBhdXRv IGNvbW1pdAotICAgICAgICAkLmFqYXgoewotICAgICAgICAgIHVybDogdXJsX2Zvcignc3FsZWRp dG9yLmF1dG9fY29tbWl0JywgewotICAgICAgICAgICAgJ3RyYW5zX2lkJzogc2VsZi50cmFuc0lk LAotICAgICAgICAgIH0pLAotICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgIGNv bnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbicsCi0gICAgICAgICAgZGF0YTogSlNPTi5zdHJp bmdpZnkoYXV0b19jb21taXQpLAotICAgICAgICB9KQotICAgICAgICAgIC5kb25lKGZ1bmN0aW9u KHJlcykgewotICAgICAgICAgICAgaWYgKCFyZXMuZGF0YS5zdGF0dXMpCi0gICAgICAgICAgICAg IE5vdGlmeS5hbGVydChnZXR0ZXh0KCdBdXRvIENvbW1pdCBFcnJvcicpLCByZXMuZGF0YS5yZXN1 bHQpOwotICAgICAgICAgIH0pCi0gICAgICAgICAgLmZhaWwoZnVuY3Rpb24oZSkgewotICAgICAg ICAgICAgbGV0IG1zZyA9IGh0dHBFcnJvckhhbmRsZXIuaGFuZGxlUXVlcnlUb29sQWpheEVycm9y KAotICAgICAgICAgICAgICBwZ0FkbWluLCBzZWxmLCBlLCAnX2F1dG9fY29tbWl0JywgW10sIHRy dWUKLSAgICAgICAgICAgICk7Ci0gICAgICAgICAgICBpZiAobXNnKQotICAgICAgICAgICAgICBO b3RpZnkuYWxlcnQoZ2V0dGV4dCgnQXV0byBDb21taXQgRXJyb3InKSwgbXNnKTsKLSAgICAgICAg ICB9KTsKLQotICAgICAgfSwKLQotICAgICAgX3RvZ2dsZV9leHBsYWluX29wdGlvbjogZnVuY3Rp b24odHlwZSkgewotICAgICAgICBsZXQgc2VsZWN0b3IgPSBgLmV4cGxhaW4tJHt0eXBlfWA7Ci0g ICAgICAgICQoc2VsZWN0b3IpLnRvZ2dsZUNsYXNzKCd2aXNpYmlsaXR5LWhpZGRlbicpOwotICAg ICAgfSwKLQotICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIHRvZ2dsZSAidmVyYm9zZSIgb3B0 aW9uIGluIGV4cGxhaW4KLSAgICAgIF9leHBsYWluX3ZlcmJvc2U6IGZ1bmN0aW9uKCkgewotICAg ICAgICB0aGlzLl90b2dnbGVfZXhwbGFpbl9vcHRpb24oJ3ZlcmJvc2UnKTsKLSAgICAgIH0sCi0K LSAgICAgIC8vIFRoaXMgZnVuY3Rpb24gd2lsbCB0b2dnbGUgImNvc3RzIiBvcHRpb24gaW4gZXhw bGFpbgotICAgICAgX2V4cGxhaW5fY29zdHM6IGZ1bmN0aW9uKCkgewotICAgICAgICB0aGlzLl90 b2dnbGVfZXhwbGFpbl9vcHRpb24oJ2Nvc3RzJyk7Ci0gICAgICB9LAotCi0gICAgICAvLyBUaGlz IGZ1bmN0aW9uIHdpbGwgdG9nZ2xlICJidWZmZXJzIiBvcHRpb24gaW4gZXhwbGFpbgotICAgICAg X2V4cGxhaW5fYnVmZmVyczogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZV9leHBs YWluX29wdGlvbignYnVmZmVycycpOwotICAgICAgfSwKLQotICAgICAgLy8gVGhpcyBmdW5jdGlv biB3aWxsIHRvZ2dsZSAidGltaW5nIiBvcHRpb24gaW4gZXhwbGFpbgotICAgICAgX2V4cGxhaW5f dGltaW5nOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlX2V4cGxhaW5fb3B0aW9u KCd0aW1pbmcnKTsKLSAgICAgIH0sCi0KLSAgICAgIF9leHBsYWluX3N1bW1hcnk6IGZ1bmN0aW9u KCkgewotICAgICAgICB0aGlzLl90b2dnbGVfZXhwbGFpbl9vcHRpb24oJ3N1bW1hcnknKTsKLSAg ICAgIH0sCi0KLSAgICAgIF9leHBsYWluX3NldHRpbmdzOiBmdW5jdGlvbigpIHsKLSAgICAgICAg dGhpcy5fdG9nZ2xlX2V4cGxhaW5fb3B0aW9uKCdzZXR0aW5ncycpOwotICAgICAgfSwKLQotICAg ICAgX3Nob3dfcXVlcnlfdG9vbDogZnVuY3Rpb24oKSB7Ci0gICAgICAgIHZhciBzZWxmID0gdGhp czsKLSAgICAgICAgdmFyIG9wZW5fbmV3X3RhYiA9IHNlbGYuYnJvd3Nlcl9wcmVmZXJlbmNlcy5u ZXdfYnJvd3Nlcl90YWJfb3BlbjsKLSAgICAgICAgaWYgKG9wZW5fbmV3X3RhYiAmJiBvcGVuX25l d190YWIuaW5jbHVkZXMoJ3F0JykpIHsKLSAgICAgICAgICBpc19tYWluX3dpbmRvd19hbGl2ZSgp OwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX29wZW5fcXVlcnlfdG9vbChzZWxmKTsKLSAgICAg IH0sCi0KLSAgICAgIF9vcGVuX3F1ZXJ5X3Rvb2w6IGZ1bmN0aW9uKHRoYXQpIHsKLQotICAgICAg ICBjb25zdCB0cmFuc0lkID0gcGdhZG1pblV0aWxzLmdldFJhbmRvbUludCgxLCA5OTk5OTk5KTsK LQotICAgICAgICBsZXQgdXJsX2VuZHBvaW50ID0gdXJsX2ZvcignZGF0YWdyaWQucGFuZWwnLCB7 Ci0gICAgICAgICAgJ3RyYW5zX2lkJzogdHJhbnNJZCwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAg dXJsX2VuZHBvaW50ICs9IGA/aXNfcXVlcnlfdG9vbD0ke3RydWV9YAotICAgICAgICAgICtgJnNn aWQ9JHt0aGF0LnVybF9wYXJhbXMuc2dpZH1gCi0gICAgICAgICAgK2Amc2lkPSR7dGhhdC51cmxf cGFyYW1zLnNpZH1gCi0gICAgICAgICAgK2Amc2VydmVyX3R5cGU9JHt0aGF0LnVybF9wYXJhbXMu c2VydmVyX3R5cGV9YDsKLQotICAgICAgICBpZih0aGF0LnVybF9wYXJhbXMuZGlkKSB7Ci0gICAg ICAgICAgdXJsX2VuZHBvaW50ICs9IGAmZGlkPSR7dGhhdC51cmxfcGFyYW1zLmRpZH1gOwotICAg ICAgICB9Ci0KLSAgICAgICAgbGV0IHBhbmVsX3RpdGxlID0gdGhhdC51cmxfcGFyYW1zLnRpdGxl OwotICAgICAgICBpZih0aGF0LnVybF9wYXJhbXMuaXNfcXVlcnlfdG9vbCA9PSAnZmFsc2UnKSB7 Ly9jaGVjayB3aGV0aGVyIHF1ZXJ5IHRvb2wgaXMgaGl0IGZyb20gVmlldy9FZGl0Ci0gICAgICAg ICAgdmFyIHNwbGl0X3RpdGxlID0gdGhhdC51cmxfcGFyYW1zLnRpdGxlLnNwbGl0KCcvJyk7Ci0g ICAgICAgICAgaWYoc3BsaXRfdGl0bGUubGVuZ3RoID4gMikgewotICAgICAgICAgICAgcGFuZWxf dGl0bGUgPSBzcGxpdF90aXRsZVtzcGxpdF90aXRsZS5sZW5ndGgtMl0gKyAnLycgKyBzcGxpdF90 aXRsZVtzcGxpdF90aXRsZS5sZW5ndGgtMV07Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAg ICAgICAgbGF1bmNoRGF0YUdyaWQocGdXaW5kb3cuZGVmYXVsdC5wZ0FkbWluLkRhdGFHcmlkLCB0 cmFuc0lkLCB1cmxfZW5kcG9pbnQsIHBhbmVsX3RpdGxlLCAnJywgYWxlcnRpZnkpOwotICAgICAg fSwKLQotICAgICAgLyoKLSAgICAgICAqIFRoaXMgZnVuY3Rpb24gd2lsbCBpbmRlbnQgc2VsZWN0 ZWQgY29kZQotICAgICAgICovCi0gICAgICBfaW5kZW50X3NlbGVjdGVkX2NvZGU6IGZ1bmN0aW9u KCkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAgICAgICAgZWRpdG9yID0gc2VsZi5n cmlkVmlldy5xdWVyeV90b29sX29iajsKLSAgICAgICAgZWRpdG9yLmV4ZWNDb21tYW5kKCdpbmRl bnRNb3JlJyk7Ci0gICAgICB9LAotCi0gICAgICAvKgotICAgICAgICogVGhpcyBmdW5jdGlvbiB3 aWxsIHVuaW5kZW50IHNlbGVjdGVkIGNvZGUKLSAgICAgICAqLwotICAgICAgX3VuaW5kZW50X3Nl bGVjdGVkX2NvZGU6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXMsCi0gICAg ICAgICAgZWRpdG9yID0gc2VsZi5ncmlkVmlldy5xdWVyeV90b29sX29iajsKLSAgICAgICAgZWRp dG9yLmV4ZWNDb21tYW5kKCdpbmRlbnRMZXNzJyk7Ci0gICAgICB9LAotCi0gICAgICAvKgotICAg ICAgICogVGhpcyBmdW5jdGlvbiB3aWxsIGZvcm1hdCB0aGUgU1FMCi0gICAgICAgKi8KLSAgICAg IF9mb3JtYXRfc3FsOiBmdW5jdGlvbigpIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzLAotICAg ICAgICAgIGVkaXRvciA9IHNlbGYuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmosCi0gICAgICAgICAg c2VsZWN0aW9uID0gdHJ1ZSwKLSAgICAgICAgICBzcWwgPSAnJzsKLQotICAgICAgICBzcWwgPSBl ZGl0b3IuZ2V0U2VsZWN0aW9uKCk7Ci0KLSAgICAgICAgaWYgKHNxbCA9PSAnJykgewotICAgICAg ICAgIHNxbCA9IGVkaXRvci5nZXRWYWx1ZSgpOwotICAgICAgICAgIHNlbGVjdGlvbiA9IGZhbHNl OwotICAgICAgICB9Ci0KLSAgICAgICAgJC5hamF4KHsKLSAgICAgICAgICB1cmw6IHVybF9mb3Io J3NxbC5mb3JtYXQnKSwKLSAgICAgICAgICBkYXRhOiBKU09OLnN0cmluZ2lmeSh7J3NxbCc6IHNx bH0pLAotICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLAotICAgICAgICAgIGNvbnRlbnRUeXBlOiAn YXBwbGljYXRpb24vanNvbicsCi0gICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywKLSAgICAgICAg fSkKLSAgICAgICAgICAuZG9uZShmdW5jdGlvbihyZXMpIHsKLSAgICAgICAgICAgIGlmIChzZWxl Y3Rpb24gPT09IHRydWUpIHsKLSAgICAgICAgICAgICAgZWRpdG9yLnJlcGxhY2VTZWxlY3Rpb24o cmVzLmRhdGEuc3FsLCAnYXJvdW5kJyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAg ICAgICBlZGl0b3Iuc2V0VmFsdWUocmVzLmRhdGEuc3FsKTsKLSAgICAgICAgICAgIH0KLSAgICAg ICAgICB9KQotICAgICAgICAgIC5mYWlsKGZ1bmN0aW9uKCkgewotICAgICAgICAgIC8qIGZhaWx1 cmUgc2hvdWxkIGJlIGlnbm9yZWQgKi8KLSAgICAgICAgICB9KTsKLSAgICAgIH0sCi0KLSAgICAg IC8vIFRoaXMgZnVuY3Rpb24gd2lsbCBvcGVuIHRoZSBtYW5hZ2UgbWFjcm8gZGlhbG9nCi0gICAg ICBfbWFuYWdlX21hY3JvczogZnVuY3Rpb24oKSB7Ci0gICAgICAgIGxldCBzZWxmID0gdGhpczsK LQotICAgICAgICAvKiBXaGVuIHNlcnZlciBpcyBkaXNjb25uZWN0ZWQgYW5kIGNvbm5lY3RlZCwg Y29ubmVjdGlvbiBpcyBsb3N0LAotICAgICAgICAgKiBUbyByZWNvbm5lY3QgcGFzcyB0cnVlCi0g ICAgICAgICAqLwotICAgICAgICBNYWNyb0hhbmRsZXIuZGlhbG9nKHNlbGYpOwotICAgICAgfSwK LQotICAgICAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIG9wZW4gdGhlIG1hbmFnZSBtYWNybyBkaWFs b2cKLSAgICAgIF9leGVjdXRlX21hY3JvOiBmdW5jdGlvbigpIHsKLQotICAgICAgICBxdWVyeVRv b2xBY3Rpb25zLmV4ZWN1dGVNYWNybyh0aGlzLmhhbmRsZXIpOwotCi0gICAgICB9LAotCi0KLSAg ICAgIGlzUXVlcnlSdW5uaW5nOiBmdW5jdGlvbigpIHsKLSAgICAgICAgcmV0dXJuIGlzX3F1ZXJ5 X3J1bm5pbmc7Ci0gICAgICB9LAotCi0gICAgICBzZXRJc1F1ZXJ5UnVubmluZzogZnVuY3Rpb24o dmFsdWUpIHsKLSAgICAgICAgaXNfcXVlcnlfcnVubmluZyA9IHZhbHVlOwotICAgICAgfSwKLQot ICAgICAgLyogQ2hlY2tzIGlmIHRoZXJlIGlzIGFueSB1bnNhdmVkIGRhdGEgY2hhbmdlcywgdW5z YXZlZCBjaGFuZ2VzIGluIHRoZSBxdWVyeQotICAgICAgb3IgdW5jb21taXR0ZWQgdHJhbnNhY3Rp b25zIGJlZm9yZSBjbG9zaW5nIGEgcGFuZWwgKi8KLSAgICAgIGNoZWNrX25lZWRlZF9jb25maXJt YXRpb25zX2JlZm9yZV9jbG9zaW5nX3BhbmVsOiBmdW5jdGlvbihpc19jbG9zZV9ldmVudF9jYWxs ID0gZmFsc2UpIHsKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzLCBtc2c7Ci0KLSAgICAgICAgLyoK LSAgICAgICAgIGlzX2Nsb3NlX2V2ZW50X2NhbGwgPSB0cnVlIG9ubHkgd2hlbiB0aGUgZnVuY3Rp b24gaXMgY2FsbGVkIHdoZW4gdGhlCi0gICAgICAgICBjbG9zZSBwYW5lbCBldmVudCBpcyB0cmln Z2VyZWQsIG90aGVyd2lzZSAob24gcmVjdXJzaXZlIGNhbGxzKSBpdCBpcyBmYWxzZQotICAgICAg ICAqLwotICAgICAgICBpZighc2VsZi5pZ25vcmVfb25fY2xvc2UgfHwgaXNfY2xvc2VfZXZlbnRf Y2FsbCkKLSAgICAgICAgICBzZWxmLmlnbm9yZV9vbl9jbG9zZSA9IHsKLSAgICAgICAgICAgIHVu c2F2ZWRfZGF0YTogZmFsc2UsCi0gICAgICAgICAgICB1bnNhdmVkX3F1ZXJ5OiBmYWxzZSwKLSAg ICAgICAgICB9OwotCi0gICAgICAgIHZhciBpZ25vcmVfdW5zYXZlZF9kYXRhID0gc2VsZi5pZ25v cmVfb25fY2xvc2UudW5zYXZlZF9kYXRhLAotICAgICAgICAgIGlnbm9yZV91bnNhdmVkX3F1ZXJ5 ID0gc2VsZi5pZ25vcmVfb25fY2xvc2UudW5zYXZlZF9xdWVyeTsKLQotICAgICAgICAvLyBJZiB0 aGVyZSBpcyB1bnNhdmVkIGRhdGEgY2hhbmdlcyBpbiB0aGUgZ3JpZAotICAgICAgICBpZiAoIWln bm9yZV91bnNhdmVkX2RhdGEgJiYgc2VsZi5jYW5fZWRpdAotICAgICAgICAgICAgJiYgc2VsZi5w cmVmZXJlbmNlcy5wcm9tcHRfc2F2ZV9kYXRhX2NoYW5nZXMgJiYKLSAgICAgICAgICAgIHNlbGYu ZGF0YV9zdG9yZSAmJgotICAgICAgICAgICAgIChfLnNpemUoc2VsZi5kYXRhX3N0b3JlLmFkZGVk KSB8fAotICAgICAgICAgICAgICBfLnNpemUoc2VsZi5kYXRhX3N0b3JlLnVwZGF0ZWQpIHx8Ci0g ICAgICAgICAgICAgIF8uc2l6ZShzZWxmLmRhdGFfc3RvcmUuZGVsZXRlZCkpKSB7Ci0gICAgICAg ICAgbXNnID0gZ2V0dGV4dCgnVGhlIGRhdGEgaGFzIGNoYW5nZWQuIERvIHlvdSB3YW50IHRvIHNh dmUgY2hhbmdlcz8nKTsKLSAgICAgICAgICBzZWxmLnVuc2F2ZWRfY2hhbmdlc191c2VyX2NvbmZp cm1hdGlvbihtc2csIHRydWUpOwotICAgICAgICB9IC8vIElmIHRoZXJlIGlzIHVuc2F2ZWQgcXVl cnkgY2hhbmdlcyBpbiB0aGUgcXVlcnkgZWRpdG9yCi0gICAgICAgIGVsc2UgaWYgKCFpZ25vcmVf dW5zYXZlZF9xdWVyeSAmJiBzZWxmLmlzX3F1ZXJ5X3Rvb2wKLSAgICAgICAgICAgICAgICAgICAm JiBzZWxmLmlzX3F1ZXJ5X2NoYW5nZWQKLSAgICAgICAgICAgICAgICAgICAmJiBzZWxmLnByZWZl cmVuY2VzLnByb21wdF9zYXZlX3F1ZXJ5X2NoYW5nZXMpIHsKLSAgICAgICAgICBtc2cgPSBnZXR0 ZXh0KCdUaGUgcXVlcnkgdGV4dCBoYXMgY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSBjaGFu Z2VzPycpOwotICAgICAgICAgIHNlbGYudW5zYXZlZF9jaGFuZ2VzX3VzZXJfY29uZmlybWF0aW9u KG1zZywgZmFsc2UpOwotICAgICAgICB9IC8vIElmIGEgdHJhbnNhY3Rpb24gaXMgY3VycmVudGx5 IG9uZ29pbmcKLSAgICAgICAgZWxzZSBpZiAoc2VsZi5wcmVmZXJlbmNlcy5wcm9tcHRfY29tbWl0 X3RyYW5zYWN0aW9uCi0gICAgICAgICAgICAgICAgICYmIChzZWxmLmxhc3RfdHJhbnNhY3Rpb25f c3RhdHVzID09PSBxdWVyeVR4blN0YXR1cy5UUkFOU0FDVElPTl9TVEFUVVNfSU5UUkFOUwotICAg ICAgICAgICAgICAgICAgICB8fCBzZWxmLmxhc3RfdHJhbnNhY3Rpb25fc3RhdHVzID09PSBxdWVy eVR4blN0YXR1cy5UUkFOU0FDVElPTl9TVEFUVVNfSU5FUlJPUikpIHsKLSAgICAgICAgICB2YXIg aXNfY29tbWl0X2Rpc2FibGVkID0gc2VsZi5sYXN0X3RyYW5zYWN0aW9uX3N0YXR1cyA9PSBxdWVy eVR4blN0YXR1cy5UUkFOU0FDVElPTl9TVEFUVVNfSU5FUlJPUjsKLSAgICAgICAgICBzZWxmLnVu Y29tbWl0dGVkX3RyYW5zYWN0aW9uX3VzZXJfY29uZmlybWF0aW9uKGlzX2NvbW1pdF9kaXNhYmxl ZCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgLy8gTm8gb3RoZXIgZnVu Y3Rpb24gc2hvdWxkIGNhbGwgY2xvc2UoKSBleGNlcHQgdGhyb3VnaCB0aGlzIGZ1bmN0aW9uCi0g ICAgICAgICAgLy8gaW4gb3JkZXIgdG8gcGVyZm9ybSBuZWNlc3NhcnkgY2hlY2tzCi0gICAgICAg ICAgc2VsZi5pZ25vcmVfb25fY2xvc2UgPSB1bmRlZmluZWQ7Ci0gICAgICAgICAgc2VsZi5jbG9z ZSgpOwotICAgICAgICB9Ci0gICAgICAgIC8vIFJldHVybiBmYWxzZSBzbyB0aGF0IHRoZSBwYW5l bCBkb2VzIG5vdCBjbG9zZSB1bmxlc3MgY2xvc2UoKQotICAgICAgICAvLyBpcyBjYWxsZWQgZXhw bGljaXRseSAod2hlbiBhbGwgbmVlZGVkIHByb21wdHMgYXJlIGlzc3VlZCkuCi0gICAgICAgIHJl dHVybiBmYWxzZTsKLSAgICAgIH0sCi0KLSAgICAgIC8qIFRvIHByb21wdCB0aGUgdXNlciBmb3Ig dW5jb21taXR0ZWQgdHJhbnNhY3Rpb24gKi8KLSAgICAgIHVuY29tbWl0dGVkX3RyYW5zYWN0aW9u X3VzZXJfY29uZmlybWF0aW9uOiBmdW5jdGlvbihpc19jb21taXRfZGlzYWJsZWQgPSBmYWxzZSkg ewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgICAgYWxlcnRpZnkuY29uZmlybUNv bW1pdCB8fCBhbGVydGlmeS5kaWFsb2coJ2NvbmZpcm1Db21taXQnLCBmdW5jdGlvbigpIHsKLSAg ICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgbWFpbjogZnVuY3Rpb24odGl0bGUsIG1lc3Nh Z2UsIGlzX2NvbW1pdF9kaXNhYmxlZF9hcmcpIHsKLSAgICAgICAgICAgICAgdGhpcy5pc19jb21t aXRfZGlzYWJsZWQgPSBpc19jb21taXRfZGlzYWJsZWRfYXJnOwotICAgICAgICAgICAgICB0aGlz LnNldEhlYWRlcih0aXRsZSk7Ci0gICAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudChtZXNzYWdl KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7Ci0gICAg ICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgYnV0dG9uczogW3sKLSAgICAgICAg ICAgICAgICAgIHRleHQ6IGdldHRleHQoJ0NhbmNlbCcpLAotICAgICAgICAgICAgICAgICAga2V5 OiAyNywgLy8gRVNDCi0gICAgICAgICAgICAgICAgICBpbnZva2VPbkNsb3NlOiB0cnVlLAotICAg ICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1zZWNvbmRhcnkgZmEgZmEtbGcgZmEt dGltZXMgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICB9LCB7Ci0gICAgICAg ICAgICAgICAgICB0ZXh0OiBnZXR0ZXh0KCdSb2xsYmFjaycpLAotICAgICAgICAgICAgICAgICAg Y2xhc3NOYW1lOiAnYnRuIGJ0bi1wcmltYXJ5IGZhIGZhLWxnIHBnLWFsZXJ0aWZ5LWJ1dHRvbics Ci0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgdGV4dDogZ2V0dGV4dCgn Q29tbWl0JyksCi0gICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICdidG4gYnRuLXByaW1hcnkg ZmEgZmEtbGcgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICB9XSwKLSAgICAg ICAgICAgICAgICBmb2N1czogewotICAgICAgICAgICAgICAgICAgZWxlbWVudDogMCwKLSAgICAg ICAgICAgICAgICAgIHNlbGVjdDogZmFsc2UsCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAg ICAgICAgICBvcHRpb25zOiB7Ci0gICAgICAgICAgICAgICAgICBtYXhpbWl6YWJsZTogZmFsc2Us Ci0gICAgICAgICAgICAgICAgICByZXNpemFibGU6IGZhbHNlLAotICAgICAgICAgICAgICAgIH0s Ci0gICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgcHJlcGFyZTog ZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgIC8vIERpc2FibGUgY29tbWl0IGJ1dHRvbiBpZiBu ZWVkZWQKLSAgICAgICAgICAgICAgaWYodGhpcy5pc19jb21taXRfZGlzYWJsZWQpCi0gICAgICAg ICAgICAgICAgdGhpcy5fX2ludGVybmFsLmJ1dHRvbnNbMl0uZWxlbWVudC5kaXNhYmxlZCA9IHRy dWU7Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB0aGlzLl9faW50ZXJuYWwu YnV0dG9uc1syXS5lbGVtZW50LmRpc2FibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICB9LAotICAg ICAgICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGNsb3NlRXZlbnQpIHsKLSAgICAgICAgICAgICAg c3dpdGNoIChjbG9zZUV2ZW50LmluZGV4KSB7Ci0gICAgICAgICAgICAgIGNhc2UgMDogLy8gQ2Fu Y2VsCi0gICAgICAgICAgICAgICAgLy9EbyBub3RoaW5nLgotICAgICAgICAgICAgICAgIGJyZWFr OwotICAgICAgICAgICAgICBjYXNlIDE6IC8vIFJvbGxiYWNrCi0gICAgICAgICAgICAgICAgc2Vs Zi5jbG9zZV9vbl9pZGxlX3RyYW5zYWN0aW9uID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBxdWVy eVRvb2xBY3Rpb25zLmV4ZWN1dGVSb2xsYmFjayhzZWxmKTsKLSAgICAgICAgICAgICAgICBicmVh azsKLSAgICAgICAgICAgICAgY2FzZSAyOiAvLyBDb21taXQKLSAgICAgICAgICAgICAgICBzZWxm LmNsb3NlX29uX2lkbGVfdHJhbnNhY3Rpb24gPSB0cnVlOwotICAgICAgICAgICAgICAgIHF1ZXJ5 VG9vbEFjdGlvbnMuZXhlY3V0ZUNvbW1pdChzZWxmKTsKLSAgICAgICAgICAgICAgICBicmVhazsK LSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICB9OwotICAgICAgICB9 KTsKLQotICAgICAgICBsZXQgbXNnID0gZ2V0dGV4dCgnVGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24g aXMgbm90IGNvbW1pdGVkIHRvIHRoZSBkYXRhYmFzZS4gJwotICAgICAgICAgICAgICAgICAgICAg ICAgICAgKyAnRG8geW91IHdhbnQgdG8gY29tbWl0IG9yIHJvbGxiYWNrIHRoZSB0cmFuc2FjdGlv bj8nKTsKLQotICAgICAgICBhbGVydGlmeS5jb25maXJtQ29tbWl0KGdldHRleHQoJ0NvbW1pdCB0 cmFuc2FjdGlvbj8nKSwgbXNnLCBpc19jb21taXRfZGlzYWJsZWQpOwotICAgICAgfSwKLQotICAg ICAgLyogVG8gcHJvbXB0IHVzZXIgZm9yIHVuc2F2ZWQgY2hhbmdlcyAqLwotICAgICAgdW5zYXZl ZF9jaGFuZ2VzX3VzZXJfY29uZmlybWF0aW9uOiBmdW5jdGlvbihtc2csIGlzX3Vuc2F2ZWRfZGF0 YSkgewotICAgICAgICAvLyBJZiB0aGVyZSBpcyBhbnl0aGluZyB0byBzYXZlIHRoZW4gcHJvbXB0 IHVzZXIKLSAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwotCi0gICAgICAgIGFsZXJ0aWZ5LmNvbmZp cm1TYXZlIHx8IGFsZXJ0aWZ5LmRpYWxvZygnY29uZmlybVNhdmUnLCBmdW5jdGlvbigpIHsKLSAg ICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgbWFpbjogZnVuY3Rpb24odGl0bGUsIG1lc3Nh Z2UsIGlzX3Vuc2F2ZWRfZGF0YV9hcmcpIHsKLSAgICAgICAgICAgICAgdGhpcy5pc191bnNhdmVk X2RhdGEgPSBpc191bnNhdmVkX2RhdGFfYXJnOwotICAgICAgICAgICAgICB0aGlzLnNldEhlYWRl cih0aXRsZSk7Ci0gICAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudChtZXNzYWdlKTsKLSAgICAg ICAgICAgIH0sCi0gICAgICAgICAgICBzZXR1cDogZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAg IHJldHVybiB7Ci0gICAgICAgICAgICAgICAgYnV0dG9uczogW3sKLSAgICAgICAgICAgICAgICAg IHRleHQ6IGdldHRleHQoJ0NhbmNlbCcpLAotICAgICAgICAgICAgICAgICAga2V5OiAyNywgLy8g RVNDCi0gICAgICAgICAgICAgICAgICBpbnZva2VPbkNsb3NlOiB0cnVlLAotICAgICAgICAgICAg ICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1zZWNvbmRhcnkgZmEgZmEtbGcgZmEtdGltZXMgcGct YWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAgICAgICB9LCB7Ci0gICAgICAgICAgICAgICAg ICB0ZXh0OiBnZXR0ZXh0KCdEb25cJ3Qgc2F2ZScpLAotICAgICAgICAgICAgICAgICAgY2xhc3NO YW1lOiAnYnRuIGJ0bi1zZWNvbmRhcnkgZmEgZmEtbGcgZmEtdHJhc2gtYWx0IHBnLWFsZXJ0aWZ5 LWJ1dHRvbicsCi0gICAgICAgICAgICAgICAgfSwgewotICAgICAgICAgICAgICAgICAgdGV4dDog Z2V0dGV4dCgnU2F2ZScpLAotICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAnYnRuIGJ0bi1w cmltYXJ5IGZhIGZhLWxnIGZhLXNhdmUgcGctYWxlcnRpZnktYnV0dG9uJywKLSAgICAgICAgICAg ICAgICB9XSwKLSAgICAgICAgICAgICAgICBmb2N1czogewotICAgICAgICAgICAgICAgICAgZWxl bWVudDogMCwKLSAgICAgICAgICAgICAgICAgIHNlbGVjdDogZmFsc2UsCi0gICAgICAgICAgICAg ICAgfSwKLSAgICAgICAgICAgICAgICBvcHRpb25zOiB7Ci0gICAgICAgICAgICAgICAgICBtYXhp bWl6YWJsZTogZmFsc2UsCi0gICAgICAgICAgICAgICAgICByZXNpemFibGU6IGZhbHNlLAotICAg ICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICB9LAotICAgICAg ICAgICAgY2FsbGJhY2s6IGZ1bmN0aW9uKGNsb3NlRXZlbnQpIHsKLSAgICAgICAgICAgICAgc3dp dGNoIChjbG9zZUV2ZW50LmluZGV4KSB7Ci0gICAgICAgICAgICAgIGNhc2UgMDogLy8gQ2FuY2Vs Ci0gICAgICAgICAgICAgICAgLy9EbyBub3RoaW5nLgotICAgICAgICAgICAgICAgIGJyZWFrOwot ICAgICAgICAgICAgICBjYXNlIDE6IC8vIERvbid0IFNhdmUKLSAgICAgICAgICAgICAgICBzZWxm LmNsb3NlX29uX3NhdmUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBzZWxmLmlzX3Vuc2F2ZWRf ZGF0YSA9IHRoaXMuaXNfdW5zYXZlZF9kYXRhOwotICAgICAgICAgICAgICAgICQuYWpheCh7Ci0g ICAgICAgICAgICAgICAgICB1cmw6IHVybF9mb3IoJ3NxbGVkaXRvci5fY2hlY2tfc2VydmVyX2Nv bm5lY3Rpb25fc3RhdHVzJywgewotICAgICAgICAgICAgICAgICAgICAnc2lkJzogc2VsZi51cmxf cGFyYW1zLnNpZCwKLSAgICAgICAgICAgICAgICAgICAgJ3NnaWQnOiBzZWxmLnVybF9wYXJhbXMu c2dpZCwKLSAgICAgICAgICAgICAgICAgIH0pLAotICAgICAgICAgICAgICAgICAgaGVhZGVyczog ewotICAgICAgICAgICAgICAgICAgICAnQ2FjaGUtQ29udHJvbCcgOiAnbm8tY2FjaGUnLAotICAg ICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICB9KS5kb25lKGZ1bmN0aW9uIChyZXMp IHsKLSAgICAgICAgICAgICAgICAgIGxldCByZXNwb25zZSA9IHJlcy5kYXRhLnJlc3VsdC5zZXJ2 ZXI7Ci0gICAgICAgICAgICAgICAgICBpZiAocmVzcG9uc2UpIHsKLSAgICAgICAgICAgICAgICAg ICAgY2xvc2VFdmVudC5jYW5jZWwgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBpZiAoc2Vs Zi5pc191bnNhdmVkX2RhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgc2VsZi5pZ25vcmVfb25f Y2xvc2UudW5zYXZlZF9kYXRhID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZQotICAg ICAgICAgICAgICAgICAgICAgIHNlbGYuaWdub3JlX29uX2Nsb3NlLnVuc2F2ZWRfcXVlcnkgPSB0 cnVlOwotCi0gICAgICAgICAgICAgICAgICAgIC8vIEdvIGJhY2sgdG8gY2hlY2sgZm9yIGFueSBv dGhlciBuZWVkZWQgY29uZmlybWF0aW9ucyBiZWZvcmUgY2xvc2luZwotICAgICAgICAgICAgICAg ICAgICBpZiAoIXNlbGYuY2hlY2tfbmVlZGVkX2NvbmZpcm1hdGlvbnNfYmVmb3JlX2Nsb3Npbmdf cGFuZWwoKSkgewotICAgICAgICAgICAgICAgICAgICAgIGNsb3NlRXZlbnQuY2FuY2VsID0gdHJ1 ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAg ICAgICAgICAgICAgICAgICAgTm90aWZ5LmNvbmZpcm0oCi0gICAgICAgICAgICAgICAgICAgICAg Z2V0dGV4dCgnV2FybmluZycpLAotICAgICAgICAgICAgICAgICAgICAgIGdldHRleHQoJ1RoZSBj dXJyZW50IHRyYW5zYWN0aW9uIGhhcyBiZWVuIHJvbGxlZCBiYWNrIGJlY2F1c2UgdGhlIHNlcnZl ciB3YXMgZGlzY29ubmVjdGVkLicpLAotICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uKCkg ewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvc2UgdGhlIHF1ZXJ5IHRvb2wgaWYgc2Vy dmVyIGlzIGRpc2Nvbm5lY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQo KCkgPT4geyBzZWxmLmNsb3NlKCk7IH0sIDIwMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgfSwK LSAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbigpIHsKLSAgICAgICAgICAgICAgICAgICAg ICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAg ICAgICAgICAgZ2V0dGV4dCgnT0snKSwKLSAgICAgICAgICAgICAgICAgICAgICBnZXR0ZXh0KCdD YW5jZWwnKQotICAgICAgICAgICAgICAgICAgICApOwotICAgICAgICAgICAgICAgICAgfQotICAg ICAgICAgICAgICAgIH0pLmZhaWwoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgICAvKiBm YWlsdXJlIHNob3VsZCBiZSBpZ25vcmVkICovCi0gICAgICAgICAgICAgICAgfSk7Ci0gICAgICAg ICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgMjogLy9TYXZlCi0gICAgICAgICAg ICAgICAgc2VsZi5jbG9zZV9vbl9zYXZlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZih0aGlz LmlzX3Vuc2F2ZWRfZGF0YSkgewotICAgICAgICAgICAgICAgICAgc2VsZi5zYXZlX2RhdGEoKTsK LSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAg ICAgICBzZWxmLl9zYXZlX2ZpbGUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAg ICAgYnJlYWs7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgfTsK LSAgICAgICAgfSk7Ci0gICAgICAgIGFsZXJ0aWZ5LmNvbmZpcm1TYXZlKGdldHRleHQoJ1NhdmUg Y2hhbmdlcz8nKSwgbXNnLCBpc191bnNhdmVkX2RhdGEpOwotICAgICAgfSwKLQotICAgICAgY2xv c2U6IGZ1bmN0aW9uKCkgewotICAgICAgICB2YXIgc2VsZiA9IHRoaXM7Ci0KLSAgICAgICAgcGdC cm93c2VyLkV2ZW50cy5vZmYoJ3BnYWRtaW46dXNlcjpsb2dnZWQtaW4nLCB0aGlzLmluaXRUcmFu c2FjdGlvbik7Ci0gICAgICAgIHdpbmRvdy5vbmJlZm9yZXVubG9hZCA9IG51bGw7Ci0gICAgICAg IHNlbGYuZ3JpZFZpZXcuY3VycmVudFBhbmVsLm9mZih3Y0RvY2tlci5FVkVOVC5DTE9TSU5HKTsK LSAgICAgICAgLy8gcmVtb3ZlIGNvbF9zaXplIG9iamVjdCBvbiBwYW5lbCBjbG9zZQotICAgICAg ICBpZiAoIV8uaXNVbmRlZmluZWQoc2VsZi5jb2xfc2l6ZSkpIHsKLSAgICAgICAgICBkZWxldGUg c2VsZi5jb2xfc2l6ZTsKLSAgICAgICAgfQotICAgICAgICBwZ1dpbmRvdy5kZWZhdWx0LnBnQWRt aW4uQnJvd3Nlci5kb2NrZXIucmVtb3ZlUGFuZWwoc2VsZi5ncmlkVmlldy5jdXJyZW50UGFuZWwp OwotICAgICAgfSwKLSAgICAgIC8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byByYWlzZSBub3Rp ZnkgbWVzc2FnZXMgYW5kIHVwZGF0ZQotICAgICAgICogdGhlIG5vdGlmaWNhdGlvbiBncmlkLgot ICAgICAgICovCi0gICAgICB1cGRhdGVfbm90aWZpY2F0aW9uczogZnVuY3Rpb24gKG5vdGlmaWNh dGlvbnMpIHsKLSAgICAgICAgcXVlcnlUb29sTm90aWZpY2F0aW9ucy51cGRhdGVOb3RpZmljYXRp b25zKG5vdGlmaWNhdGlvbnMpOwotICAgICAgfSwKLQotICAgICAgLyogVGhpcyBmdW5jdGlvbiBp cyB1c2VkIHRvIHNldCBlZGl0b3IgdGl0bGUgYmFzZWQgb24gdGl0bGUKLSAgICAgICAqICYgZGJf bmFtZSBwYXNzZWQgYXMgcGFyYW1ldGVycwotICAgICAgICovCi0gICAgICBzZXRfdGl0bGVfYW5k X3JlbmRlcl9jb25uZWN0aW9uOiBmdW5jdGlvbih0aXRsZSwgZGJfbmFtZSkgewotICAgICAgICB2 YXIgc2VsZiA9IHRoaXM7Ci0gICAgICAgIHNlbGYuZ3JpZFZpZXcuc2V0X2VkaXRvcl90aXRsZShf LnVuZXNjYXBlKHRpdGxlKSk7Ci0gICAgICAgIHNlbGYuZ3JpZFZpZXcuaGFuZGxlci5zZXRUaXRs ZShfLnVuZXNjYXBlKHRpdGxlKSk7Ci0KLSAgICAgICAgc2VsZi5ncmlkVmlldy5jb25uZWN0aW9u X2xpc3QuZm9yRWFjaChvcHRpb24gPT57Ci0gICAgICAgICAgaWYoZGJfbmFtZSA9PSBvcHRpb25b J2RhdGFiYXNlX25hbWUnXSkgewotICAgICAgICAgICAgb3B0aW9uLmRhdGFiYXNlX25hbWUgPSBk Yl9uYW1lOwotICAgICAgICAgICAgb3B0aW9uLnRpdGxlID0gdGl0bGU7Ci0gICAgICAgICAgICBp ZignaXNfc2VsZWN0ZWQnIGluIG9wdGlvbiAmJiBvcHRpb25bJ2lzX3NlbGVjdGVkJ10pIHsKLSAg ICAgICAgICAgICAgc2VsZi5ncmlkVmlldy4kZWwuZmluZCgndWwjY29ubmVjdGlvbnMtbGlzdCBs aS5zZWxlY3RlZC1jb25uZWN0aW9uID4gYScpLnRleHQodGl0bGUpOwotICAgICAgICAgICAgfQot ICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgfQotICAgICAgICB9KTsKLSAgICAg IH0sCi0KLSAgICAgIC8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBjaGVjayB0aGUgc3luY2hy b25vdXMgZGIgbmFtZSBjaGFuZ2UgYnkgdXNlcnMuCi0gICAgICAgKiBpZiBjaGFuZ2VkLCBhbGVy dCB3aWxsIGJlIGdlbmVyYXRlZCB3aXRoIG1lc3NhZ2UgcHJvbXB0aW5nIHVzZXIgdG8KLSAgICAg ICAqIGNsaWNrIE9LIGZvciBhdXRvbWF0aWMgZGIgbm9kZSByZWZyZXNoLgotICAgICAgICovCi0g ICAgICBjaGVja19kYl9uYW1lX2NoYW5nZTogZnVuY3Rpb24oZGF0YSkgewotCi0gICAgICAgIHZh ciBzZWxmID0gdGhpczsKLQotICAgICAgICB2YXIgc2VsZWN0ZWRfaXRlbSA9IHBnV2luZG93LmRl ZmF1bHQucGdBZG1pbi5Ccm93c2VyLnRyZWUuc2VsZWN0ZWQoKSwKLSAgICAgICAgICB0cmVlX2Rh dGEgPSBwZ1dpbmRvdy5kZWZhdWx0LnBnQWRtaW4uQnJvd3Nlci50cmVlLnRyYW5zbGF0ZVRyZWVO b2RlSWRGcm9tUmVhY3RUcmVlKHNlbGVjdGVkX2l0ZW0pLAotICAgICAgICAgIHNlcnZlcl9kYXRh ID0gcGdXaW5kb3cuZGVmYXVsdC5wZ0FkbWluLkJyb3dzZXIudHJlZS5maW5kTm9kZSh0cmVlX2Rh dGFbMV0pLAotICAgICAgICAgIGRhdGFiYXNlX2RhdGEgPSBwZ1dpbmRvdy5kZWZhdWx0LnBnQWRt aW4uQnJvd3Nlci50cmVlLmZpbmROb2RlKHRyZWVfZGF0YVszXSksCi0gICAgICAgICAgZGJfbmFt ZSA9IGRhdGFiYXNlX2RhdGEuZGF0YS5sYWJlbCwKLSAgICAgICAgICBkYl9kaWQgPSBkYXRhYmFz ZV9kYXRhLmRhdGEuX2lkOwotCi0gICAgICAgIGlmKGRhdGEuZGF0YV9vYmouZGJfaWQgPT0gZGJf ZGlkICYmICFfLmlzRXF1YWwoZGJfbmFtZSwgZGF0YS5kYXRhX29iai5kYl9uYW1lKSkgewotCi0g ICAgICAgICAgdmFyIG1lc3NhZ2UgPSBgQ3VycmVudCBkYXRhYmFzZSBoYXMgYmVlbiBtb3ZlZCBv ciByZW5hbWVkIHRvICR7ZGF0YS5kYXRhX29iai5kYl9uYW1lfS4gQ2xpY2sgb24gdGhlIE9LIGJ1 dHRvbiB0byByZWZyZXNoIHRoZSBkYXRhYmFzZSBuYW1lLmAsCi0gICAgICAgICAgICB0aXRsZSA9 ICcnOwotCi0gICAgICAgICAgaWYoc2VsZi5pc19xdWVyeV90b29sKSB7Ly8gZm9yIHF1ZXJ5IHRv b2wKLQotICAgICAgICAgICAgdmFyIHF0X3RpdGxlX3BsYWNlaG9sZGVyID0gc2VsZi5ncmlkVmll dy5icm93c2VyX3ByZWZlcmVuY2VzWydxdF90YWJfdGl0bGVfcGxhY2Vob2xkZXInXTsKLSAgICAg ICAgICAgIHZhciB0aXRsZV9kYXRhID0gewotICAgICAgICAgICAgICAnZGF0YWJhc2UnOiBkYXRh LmRhdGFfb2JqLmRiX25hbWUsCi0gICAgICAgICAgICAgICd1c2VybmFtZSc6IHNlcnZlcl9kYXRh LmRhdGEudXNlci5uYW1lLAotICAgICAgICAgICAgICAnc2VydmVyJzogc2VydmVyX2RhdGEuZGF0 YS5sYWJlbCwKLSAgICAgICAgICAgICAgJ3R5cGUnOiAncXVlcnlfdG9vbCcKLSAgICAgICAgICAg IH07Ci0gICAgICAgICAgICB0aXRsZSA9IHBhbmVsVGl0bGVGdW5jLmdlbmVyYXRlVGl0bGUocXRf dGl0bGVfcGxhY2Vob2xkZXIsIHRpdGxlX2RhdGEpOwotICAgICAgICAgIH0KLSAgICAgICAgICBl bHNlIHsgLy8gZm9yIGRhdGFncmlkCi0gICAgICAgICAgICB0aXRsZSA9IGdlbmVyYXRlRGF0YWdy aWRUaXRsZShwZ1dpbmRvdy5kZWZhdWx0LnBnQWRtaW4uQnJvd3Nlciwgc2VsZWN0ZWRfaXRlbSwg bnVsbCwgZGF0YS5kYXRhX29iaik7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgcGFuZWxUaXRs ZUZ1bmMucmVmcmVzaF9kYl9ub2RlKG1lc3NhZ2UsIGRhdGFiYXNlX2RhdGEuZG9tTm9kZSk7Ci0g ICAgICAgICAgc2VsZi5zZXRfdGl0bGVfYW5kX3JlbmRlcl9jb25uZWN0aW9uKHRpdGxlLCBkYXRh YmFzZV9kYXRhLmRhdGEubGFiZWwpOwotICAgICAgICB9Ci0gICAgICB9LAotICAgIH0pOwotCi0g IHBnQWRtaW4uU3FsRWRpdG9yID0gewotICAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCB0byBj cmVhdGUgYW5kIHJldHVybiB0aGUgb2JqZWN0IG9mIGdyaWQgY29udHJvbGxlci4KLSAgICBjcmVh dGU6IGZ1bmN0aW9uKGNvbnRhaW5lcikgewotICAgICAgcmV0dXJuIG5ldyBTcWxFZGl0b3JDb250 cm9sbGVyKGNvbnRhaW5lcik7Ci0gICAgfSwKLSAgICBqcXVlcnk6ICQsCi0gIH07Ci0KLSAgcmV0 dXJuIHBnQWRtaW4uU3FsRWRpdG9yOwotfSk7CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29s cy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWRfcGFuZWxfdGl0bGUuanMgYi93ZWIvcGdhZG1p bi90b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3NxbGVkaXRvcl90aXRsZS5qcwpzaW1pbGFyaXR5 IGluZGV4IDU4JQpyZW5hbWUgZnJvbSB3ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMv anMvZGF0YWdyaWRfcGFuZWxfdGl0bGUuanMKcmVuYW1lIHRvIHdlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yX3RpdGxlLmpzCmluZGV4IDdmNWQ2ZmJlMi4uYmY2 MzJjZjMwIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMv ZGF0YWdyaWRfcGFuZWxfdGl0bGUuanMKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9y L3N0YXRpYy9qcy9zcWxlZGl0b3JfdGl0bGUuanMKQEAgLTgsOCArOCw5IEBACiAvLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBp bXBvcnQgZ2V0dGV4dCBmcm9tICdzb3VyY2VzL2dldHRleHQnOworaW1wb3J0IEFsZXJ0aWZ5IGZy b20gJ3BnYWRtaW4uYWxlcnRpZnlqcyc7CiBpbXBvcnQgcGdXaW5kb3cgZnJvbSAnc291cmNlcy93 aW5kb3cnOwotaW1wb3J0IE5vdGlmeSBmcm9tICcuLi8uLi8uLi8uLi9zdGF0aWMvanMvaGVscGVy cy9Ob3RpZmllcic7CitpbXBvcnQgeyByZXRyaWV2ZU5hbWVTcGFjZU5hbWUsIHJldHJpZXZlTm9k ZU5hbWUgfSBmcm9tICcuL3Nob3dfdmlld19kYXRhJzsKIAogY29uc3QgcGdBZG1pbiA9IHBnV2lu ZG93LnBnQWRtaW47CiAKQEAgLTIyLDYgKzIzLDI1IEBAIGZ1bmN0aW9uIGlzU2VydmVySW5mb3Jt YXRpb25BdmFpbGFibGUocGFyZW50RGF0YSkgewogICByZXR1cm4gcGFyZW50RGF0YS5zZXJ2ZXIg PT09IHVuZGVmaW5lZDsKIH0KIAorZXhwb3J0IGZ1bmN0aW9uIGdldFRpdGxlKHBnQWRtaW4sIGJy b3dzZXJQcmVmLCBwYXJlbnREYXRhPW51bGwsIGlzQ29ublRpdGxlPWZhbHNlLCBzZXJ2ZXI9bnVs bCwgZGF0YWJhc2U9bnVsbCwgdXNlcm5hbWU9bnVsbCwgaXNRdWVyeVRvb2w9ZmFsc2UpIHsKKyAg bGV0IHRpdGxlVGVtcGxhdGUgPSBpc1F1ZXJ5VG9vbCA/IHBnQWRtaW5bJ3F0X2RlZmF1bHRfcGxh Y2Vob2xkZXInXSA6IHBnQWRtaW5bJ3Z3X2VkdF9kZWZhdWx0X3BsYWNlaG9sZGVyJ107CisgIGlm ICghaXNDb25uVGl0bGUpIHsKKyAgICBpZighaXNRdWVyeVRvb2wpIHsKKyAgICAgIHRpdGxlVGVt cGxhdGUgPSBicm93c2VyUHJlZlsndndfZWR0X3RhYl90aXRsZV9wbGFjZWhvbGRlciddID8/IHBn QWRtaW5bJ3F0X2RlZmF1bHRfcGxhY2Vob2xkZXInXTsKKyAgICB9IGVsc2UgeworICAgICAgdGl0 bGVUZW1wbGF0ZSA9IGJyb3dzZXJQcmVmWydxdF90YWJfdGl0bGVfcGxhY2Vob2xkZXInXSA/PyBw Z0FkbWluWyd2d19lZHRfZGVmYXVsdF9wbGFjZWhvbGRlciddOworICAgIH0KKyAgfQorICByZXR1 cm4gZ2VuZXJhdGVUaXRsZSh0aXRsZVRlbXBsYXRlLCB7CisgICAgJ2RhdGFiYXNlJzogZGF0YWJh c2UsCisgICAgJ3VzZXJuYW1lJzogdXNlcm5hbWUsCisgICAgJ3NlcnZlcic6IHNlcnZlciwKKyAg ICAnc2NoZW1hJzogcmV0cmlldmVOYW1lU3BhY2VOYW1lKHBhcmVudERhdGEpLAorICAgICd0YWJs ZSc6IHJldHJpZXZlTm9kZU5hbWUocGFyZW50RGF0YSksCisgICAgJ3R5cGUnOiBpc1F1ZXJ5VG9v bCA/ICdxdWVyeV90b29sJyA6ICd2aWV3X2RhdGEnLAorICB9KTsKK30KKwogZXhwb3J0IGZ1bmN0 aW9uIGdldFBhbmVsVGl0bGUocGdCcm93c2VyLCBzZWxlY3RlZF9pdGVtPW51bGwsIGN1c3RvbV90 aXRsZT1udWxsLCBwYXJlbnREYXRhPW51bGwsIGNvbm5fdGl0bGU9ZmFsc2UsIGRiX2xhYmVsPW51 bGwpIHsKICAgdmFyIHByZWZlcmVuY2VzID0gcGdCcm93c2VyLmdldF9wcmVmZXJlbmNlc19mb3Jf bW9kdWxlKCdicm93c2VyJyk7CiAgIGlmKHNlbGVjdGVkX2l0ZW0gPT0gbnVsbCAmJiBwYXJlbnRE YXRhID09IG51bGwpIHsKQEAgLTU3LDYgKzc3LDcgQEAgZXhwb3J0IGZ1bmN0aW9uIGdldFBhbmVs VGl0bGUocGdCcm93c2VyLCBzZWxlY3RlZF9pdGVtPW51bGwsIGN1c3RvbV90aXRsZT1udWxsLAog ICAgICdzZXJ2ZXInOiBwYXJlbnREYXRhLnNlcnZlci5sYWJlbCwKICAgICAndHlwZSc6ICdxdWVy eV90b29sJywKICAgfTsKKwogICByZXR1cm4gZ2VuZXJhdGVUaXRsZShxdF90aXRsZV9wbGFjZWhv bGRlciwgdGl0bGVfZGF0YSk7CiB9CiAKQEAgLTY5LDcgKzkwLDcgQEAgZXhwb3J0IGZ1bmN0aW9u IHNldFF1ZXJ5VG9vbERvY2tlclRpdGxlKHBhbmVsLCBpc19xdWVyeV90b29sLCBwYW5lbF90aXRs ZSwgaXNfZmkKICAgICBwYW5lbF90b29sdGlwID0gZ2V0dGV4dCgnRmlsZSAtICcpICsgcGFuZWxf dGl0bGU7CiAgICAgcGFuZWxfaWNvbiA9ICdmYSBmYS1maWxlLWFsdCc7CiAgIH0KLSAgZWxzZSBp ZiAoaXNfcXVlcnlfdG9vbCA9PSAnZmFsc2UnIHx8IGlzX3F1ZXJ5X3Rvb2wgPT0gZmFsc2UpIHsK KyAgZWxzZSBpZiAoaXNfcXVlcnlfdG9vbCA9PSAnZmFsc2UnIHx8ICFpc19xdWVyeV90b29sKSB7 CiAgICAgLy8gRWRpdCBncmlkIHRpdGxlcwogICAgIHBhbmVsX3Rvb2x0aXAgPSBnZXR0ZXh0KCdW aWV3L0VkaXQgRGF0YSAtICcpICsgcGFuZWxfdGl0bGU7CiAgICAgcGFuZWxfaWNvbiA9ICdwZy1m b250LWljb24gaWNvbi12aWV3X2RhdGEnOwpAQCAtODYsMzMgKzEwNywyOSBAQCBleHBvcnQgZnVu Y3Rpb24gc2V0UXVlcnlUb29sRG9ja2VyVGl0bGUocGFuZWwsIGlzX3F1ZXJ5X3Rvb2wsIHBhbmVs X3RpdGxlLCBpc19maQogCiBleHBvcnQgZnVuY3Rpb24gc2V0X3JlbmFtYWJsZV9vcHRpb24ocGFu ZWwsIGlzX2ZpbGUpIHsKICAgaWYoaXNfZmlsZSB8fCBpc19maWxlID09ICd0cnVlJykgewotICAg IHBhbmVsLnJlbmFtYWJsZShmYWxzZSk7CisgICAgcGFuZWw/LnJlbmFtYWJsZShmYWxzZSk7CiAg IH0gZWxzZSB7Ci0gICAgcGFuZWwucmVuYW1hYmxlKHRydWUpOworICAgIHBhbmVsPy5yZW5hbWFi bGUodHJ1ZSk7CiAgIH0KIH0KIAogZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlVGl0bGUodGl0bGVf cGxhY2Vob2xkZXIsIHRpdGxlX2RhdGEpIHsKIAotICBpZih0aXRsZV9kYXRhLnR5cGUgPT0gJ3F1 ZXJ5X3Rvb2wnKSB7Ci0gICAgdGl0bGVfcGxhY2Vob2xkZXIgPSB0aXRsZV9wbGFjZWhvbGRlci5y ZXBsYWNlKG5ldyBSZWdFeHAoJyVEQVRBQkFTRSUnKSwgXy51bmVzY2FwZSh0aXRsZV9kYXRhLmRh dGFiYXNlKSk7Ci0gICAgdGl0bGVfcGxhY2Vob2xkZXIgPSB0aXRsZV9wbGFjZWhvbGRlci5yZXBs YWNlKG5ldyBSZWdFeHAoJyVVU0VSTkFNRSUnKSwgXy51bmVzY2FwZSh0aXRsZV9kYXRhLnVzZXJu YW1lKSk7Ci0gICAgdGl0bGVfcGxhY2Vob2xkZXIgPSB0aXRsZV9wbGFjZWhvbGRlci5yZXBsYWNl KG5ldyBSZWdFeHAoJyVTRVJWRVIlJyksIF8udW5lc2NhcGUodGl0bGVfZGF0YS5zZXJ2ZXIpKTsK LSAgfSBlbHNlIGlmKHRpdGxlX2RhdGEudHlwZSA9PSAnZGF0YWdyaWQnKSB7Ci0gICAgdGl0bGVf cGxhY2Vob2xkZXIgPSB0aXRsZV9wbGFjZWhvbGRlci5yZXBsYWNlKG5ldyBSZWdFeHAoJyVEQVRB QkFTRSUnKSwgXy51bmVzY2FwZSh0aXRsZV9kYXRhLmRhdGFiYXNlKSk7Ci0gICAgdGl0bGVfcGxh Y2Vob2xkZXIgPSB0aXRsZV9wbGFjZWhvbGRlci5yZXBsYWNlKG5ldyBSZWdFeHAoJyVVU0VSTkFN RSUnKSwgXy51bmVzY2FwZSh0aXRsZV9kYXRhLnVzZXJuYW1lKSk7Ci0gICAgdGl0bGVfcGxhY2Vo b2xkZXIgPSB0aXRsZV9wbGFjZWhvbGRlci5yZXBsYWNlKG5ldyBSZWdFeHAoJyVTRVJWRVIlJyks IF8udW5lc2NhcGUodGl0bGVfZGF0YS5zZXJ2ZXIpKTsKLSAgICB0aXRsZV9wbGFjZWhvbGRlciA9 IHRpdGxlX3BsYWNlaG9sZGVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnJVNDSEVNQSUnKSwgXy51bmVz Y2FwZSh0aXRsZV9kYXRhLnNjaGVtYSkpOwotICAgIHRpdGxlX3BsYWNlaG9sZGVyID0gdGl0bGVf cGxhY2Vob2xkZXIucmVwbGFjZShuZXcgUmVnRXhwKCclVEFCTEUlJyksIF8udW5lc2NhcGUodGl0 bGVfZGF0YS50YWJsZSkpOworICBpZih0aXRsZV9kYXRhLnR5cGUgPT0gJ3F1ZXJ5X3Rvb2wnIHx8 IHRpdGxlX2RhdGEudHlwZSA9PSAncHNxbF90b29sJykgeworICAgIHRpdGxlX3BsYWNlaG9sZGVy ID0gdGl0bGVfcGxhY2Vob2xkZXIucmVwbGFjZSgnJURBVEFCQVNFJScsIF8udW5lc2NhcGUodGl0 bGVfZGF0YS5kYXRhYmFzZSkpOworICAgIHRpdGxlX3BsYWNlaG9sZGVyID0gdGl0bGVfcGxhY2Vo b2xkZXIucmVwbGFjZSgnJVVTRVJOQU1FJScsIF8udW5lc2NhcGUodGl0bGVfZGF0YS51c2VybmFt ZSkpOworICAgIHRpdGxlX3BsYWNlaG9sZGVyID0gdGl0bGVfcGxhY2Vob2xkZXIucmVwbGFjZSgn JVNFUlZFUiUnLCBfLnVuZXNjYXBlKHRpdGxlX2RhdGEuc2VydmVyKSk7CisgIH0gZWxzZSBpZih0 aXRsZV9kYXRhLnR5cGUgPT0gJ3ZpZXdfZGF0YScpIHsKKyAgICB0aXRsZV9wbGFjZWhvbGRlciA9 IHRpdGxlX3BsYWNlaG9sZGVyLnJlcGxhY2UoJyVEQVRBQkFTRSUnLCBfLnVuZXNjYXBlKHRpdGxl X2RhdGEuZGF0YWJhc2UpKTsKKyAgICB0aXRsZV9wbGFjZWhvbGRlciA9IHRpdGxlX3BsYWNlaG9s ZGVyLnJlcGxhY2UoJyVVU0VSTkFNRSUnLCBfLnVuZXNjYXBlKHRpdGxlX2RhdGEudXNlcm5hbWUp KTsKKyAgICB0aXRsZV9wbGFjZWhvbGRlciA9IHRpdGxlX3BsYWNlaG9sZGVyLnJlcGxhY2UoJyVT RVJWRVIlJywgXy51bmVzY2FwZSh0aXRsZV9kYXRhLnNlcnZlcikpOworICAgIHRpdGxlX3BsYWNl aG9sZGVyID0gdGl0bGVfcGxhY2Vob2xkZXIucmVwbGFjZSgnJVNDSEVNQSUnLCBfLnVuZXNjYXBl KHRpdGxlX2RhdGEuc2NoZW1hKSk7CisgICAgdGl0bGVfcGxhY2Vob2xkZXIgPSB0aXRsZV9wbGFj ZWhvbGRlci5yZXBsYWNlKCclVEFCTEUlJywgXy51bmVzY2FwZSh0aXRsZV9kYXRhLnRhYmxlKSk7 CiAgIH0gZWxzZSBpZih0aXRsZV9kYXRhLnR5cGUgPT0gJ2RlYnVnZ2VyJykgewotICAgIHRpdGxl X3BsYWNlaG9sZGVyID0gdGl0bGVfcGxhY2Vob2xkZXIucmVwbGFjZShuZXcgUmVnRXhwKCclRlVO Q1RJT04lJyksIF8udW5lc2NhcGUodGl0bGVfZGF0YS5mdW5jdGlvbl9uYW1lKSk7Ci0gICAgdGl0 bGVfcGxhY2Vob2xkZXIgPSB0aXRsZV9wbGFjZWhvbGRlci5yZXBsYWNlKG5ldyBSZWdFeHAoJyVB UkdTJScpLCBfLnVuZXNjYXBlKHRpdGxlX2RhdGEuYXJncykpOwotICAgIHRpdGxlX3BsYWNlaG9s ZGVyID0gdGl0bGVfcGxhY2Vob2xkZXIucmVwbGFjZShuZXcgUmVnRXhwKCclU0NIRU1BJScpLCBf LnVuZXNjYXBlKHRpdGxlX2RhdGEuc2NoZW1hKSk7Ci0gICAgdGl0bGVfcGxhY2Vob2xkZXIgPSB0 aXRsZV9wbGFjZWhvbGRlci5yZXBsYWNlKG5ldyBSZWdFeHAoJyVEQVRBQkFTRSUnKSwgXy51bmVz Y2FwZSh0aXRsZV9kYXRhLmRhdGFiYXNlKSk7Ci0gIH0gZWxzZSBpZih0aXRsZV9kYXRhLnR5cGUg PT0gJ3BzcWxfdG9vbCcpIHsKLSAgICB0aXRsZV9wbGFjZWhvbGRlciA9IHRpdGxlX3BsYWNlaG9s ZGVyLnJlcGxhY2UobmV3IFJlZ0V4cCgnJURBVEFCQVNFJScpLCBfLnVuZXNjYXBlKHRpdGxlX2Rh dGEuZGF0YWJhc2UpKTsKLSAgICB0aXRsZV9wbGFjZWhvbGRlciA9IHRpdGxlX3BsYWNlaG9sZGVy LnJlcGxhY2UobmV3IFJlZ0V4cCgnJVVTRVJOQU1FJScpLCBfLnVuZXNjYXBlKHRpdGxlX2RhdGEu dXNlcm5hbWUpKTsKLSAgICB0aXRsZV9wbGFjZWhvbGRlciA9IHRpdGxlX3BsYWNlaG9sZGVyLnJl cGxhY2UobmV3IFJlZ0V4cCgnJVNFUlZFUiUnKSwgXy51bmVzY2FwZSh0aXRsZV9kYXRhLnNlcnZl cikpOworICAgIHRpdGxlX3BsYWNlaG9sZGVyID0gdGl0bGVfcGxhY2Vob2xkZXIucmVwbGFjZSgn JUZVTkNUSU9OJScsIF8udW5lc2NhcGUodGl0bGVfZGF0YS5mdW5jdGlvbl9uYW1lKSk7CisgICAg dGl0bGVfcGxhY2Vob2xkZXIgPSB0aXRsZV9wbGFjZWhvbGRlci5yZXBsYWNlKCclQVJHUyUnLCBf LnVuZXNjYXBlKHRpdGxlX2RhdGEuYXJncykpOworICAgIHRpdGxlX3BsYWNlaG9sZGVyID0gdGl0 bGVfcGxhY2Vob2xkZXIucmVwbGFjZSgnJVNDSEVNQSUnLCBfLnVuZXNjYXBlKHRpdGxlX2RhdGEu c2NoZW1hKSk7CisgICAgdGl0bGVfcGxhY2Vob2xkZXIgPSB0aXRsZV9wbGFjZWhvbGRlci5yZXBs YWNlKCclREFUQUJBU0UlJywgXy51bmVzY2FwZSh0aXRsZV9kYXRhLmRhdGFiYXNlKSk7CiAgIH0K IAogICByZXR1cm4gXy5lc2NhcGUodGl0bGVfcGxhY2Vob2xkZXIpOwpAQCAtMTIyLDcgKzEzOSw3 IEBAIGV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVRpdGxlKHRpdGxlX3BsYWNlaG9sZGVyLCB0aXRs ZV9kYXRhKSB7CiAgKiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgcmVmcmVzaCB0aGUgZGIgbm9kZSBh ZnRlciBzaG93aW5nIGFsZXJ0IHRvIHRoZSB1c2VyCiAgKi8KIGV4cG9ydCBmdW5jdGlvbiByZWZy ZXNoX2RiX25vZGUobWVzc2FnZSwgZGJOb2RlKSB7Ci0gIE5vdGlmeS5hbGVydCgpCisgIEFsZXJ0 aWZ5LmFsZXJ0KCkKICAgICAuc2V0dGluZyh7CiAgICAgICAndGl0bGUnOiBnZXR0ZXh0KCdEYXRh YmFzZSBtb3ZlZC9yZW5hbWVkJyksCiAgICAgICAnbGFiZWwnOmdldHRleHQoJ09LJyksCmRpZmYg LS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL3Njc3MvX2hpc3Rvcnku c2NzcyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvc2Nzcy9faGlzdG9yeS5z Y3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYmI4MTc4MjQuLjAwMDAwMDAwMAot LS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3RhdGljL3Njc3MvX2hpc3Rvcnkuc2Nz cworKysgL2Rldi9udWxsCkBAIC0xLDI1NCArMCwwIEBACi0ucXVlcnktaGlzdG9yeSB7Ci0gIG92 ZXJmbG93OiBhdXRvOwotCi0gIC5saXN0LWl0ZW0gewotICAgIGJvcmRlci1ib3R0b206ICRwYW5l bC1ib3JkZXI7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJnOwotICB9Ci0KLSAgLmVu dHJ5IHsKLSAgICBmb250LWZhbWlseTogJGZvbnQtZmFtaWx5LWVkaXRvcjsKLSAgICBib3JkZXI6 ICRwYW5lbC1ib3JkZXItd2lkdGggc29saWQgdHJhbnNwYXJlbnQ7Ci0gICAgbWFyZ2luLWxlZnQ6 IDFweDsKLSAgICBwYWRkaW5nOiAwIDVweDsKLQotICAgIC5vdGhlci1pbmZvIHsKLSAgICAgIEBl eHRlbmQgLnRleHQtMTI7Ci0gICAgICBjb2xvcjogJHRleHQtbXV0ZWQ7Ci0gICAgICBmb250LWZh bWlseTogJGZvbnQtZmFtaWx5LWVkaXRvcjsKLSAgICAgIGRpc3BsYXk6IGZsZXg7Ci0gICAgICBm bGV4LWRpcmVjdGlvbjogcm93OwotICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVu OwotCi0gICAgICAudGltZXN0YW1wIHsKLSAgICAgICAgYWxpZ24tc2VsZjogZmxleC1zdGFydDsK LSAgICAgIH0KLSAgICB9Ci0KLSAgICAucXVlcnkgewotICAgICAgdGV4dC1vdmVyZmxvdzogZWxs aXBzaXM7Ci0gICAgICBvdmVyZmxvdzogaGlkZGVuOwotICAgICAgd2hpdGUtc3BhY2U6IG5vd3Jh cDsKLSAgICAgIHVzZXItc2VsZWN0OiBpbml0aWFsOwotCi0gICAgICAucXVlcnktaGlzdG9yeS1p Y29uIHsKLSAgICAgICAgd2lkdGg6IDE4cHg7Ci0gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsK LSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAuZGF0ZS1sYWJlbCB7Ci0gICAgZm9udC1mYW1pbHk6 ICRmb250LWZhbWlseS1lZGl0b3I7Ci0gICAgYmFja2dyb3VuZDogJGNvbG9yLWdyYXktbGlnaHRl cjsKLSAgICBwYWRkaW5nOiAycHggOXB4OwotICAgIGZvbnQtc2l6ZTogMTFweDsKLSAgICBmb250 LXdlaWdodDogYm9sZDsKLSAgICBjb2xvcjogICRjb2xvci1ncmF5OwotICAgIGJvcmRlci1ib3R0 b206ICRwYW5lbC1ib3JkZXI7Ci0gIH0KLQotICAuZW50cnkuZXJyb3IgewotICAgIGJhY2tncm91 bmQ6ICRzcWwtaGlzdG9yeS1lcnJvci1iZzsKLSAgfQotCi0gIC5zZWxlY3RlZCB7Ci0gICAgJiAu ZW50cnkuZXJyb3IgewotICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHNxbC1oaXN0b3J5LWVycm9y LWJnOwotICAgIH0KLQotICAgICYgLmVudHJ5IHsKLSAgICAgIGNvbG9yOiAkc3FsLWhpc3Rvcnkt c3VjY2Vzcy1mZzsKLSAgICAgIGJvcmRlcjogJHRhYmxlLWhvdmVyLWJvcmRlcjsKLSAgICAgIGJh Y2tncm91bmQ6ICRzcWwtaGlzdG9yeS1zdWNjZXNzLWJnOwotICAgICAgZm9udC13ZWlnaHQ6IGJv bGQ7Ci0KLSAgICAgIC5vdGhlci1pbmZvIHsKLSAgICAgICAgY29sb3I6ICRzcWwtaGlzdG9yeS1z dWNjZXNzLWZnOwotICAgICAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICAgIH0KLSAgICB9Ci0g IH0KLX0KLQotI2hpc3RvcnktZGV0YWlsLXF1ZXJ5IC5Db2RlTWlycm9yIHsKLSAgYm9yZGVyOiAk cGFuZWwtYm9yZGVyOwotICBiYWNrZ3JvdW5kLWNvbG9yOiAkc3FsLWhpc3RvcnktZGV0YWlsLWJn OwotICB3aWR0aDogMTAwJTsKLSAgcGFkZGluZy1sZWZ0OiA1cHg7Ci0gIHBvc2l0aW9uOiBhYnNv bHV0ZTsKLX0KLQotLmhlYWRlci1sYWJlbCB7Ci0gIEBleHRlbmQgLnRleHQtMTI7Ci0gIGRpc3Bs YXk6IGJsb2NrOwotICBjb2xvcjogJGNvbG9yLWZnOwotfQotCi0KLS5zcWwtZWRpdG9yLWhpc3Rv cnktY29udGFpbmVyIHsKLSAgaGVpZ2h0OiAxMDAlOwotICBvdmVyZmxvdzogaGlkZGVuOwotICBi YWNrZ3JvdW5kLWNvbG9yOiAkbmVnYXRpdmUtYmc7Ci19Ci0KLQotLnF1ZXJ5LWRldGFpbCB7Ci0g IGhlaWdodDogMTAwJTsKLSAgd2lkdGg6IDEwMCU7Ci0gIG1pbi1oZWlnaHQ6IDE5ZW07Ci0gIG92 ZXJmbG93OiBhdXRvOwotICBkaXNwbGF5OiBmbGV4OwotICBmbGV4LWRpcmVjdGlvbjogY29sdW1u OwotICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3ItYmc7Ci0gIC5lcnJvci1tZXNzYWdlLWJsb2Nr IHsKLSAgICBiYWNrZ3JvdW5kOiAkc3FsLWhpc3RvcnktZXJyb3ItYmc7Ci0gICAgZmxleDogMC4z OwotICAgIHBhZGRpbmctbGVmdDogMjBweDsKLQotICAgIC5oaXN0b3J5LWVycm9yLXRleHQgewot ICAgICAgQGV4dGVuZCAudGV4dC0xMjsKLSAgICAgIHBhZGRpbmc6IDdweCAwOwotCi0gICAgICBz cGFuIHsKLSAgICAgICAgY29sb3I6JHNxbC1oaXN0b3J5LWVycm9yLWZnOwotICAgICAgICBmb250 LXdlaWdodDogNTAwOwotICAgICAgICBtYXJnaW4tcmlnaHQ6IDhweDsKLSAgICAgIH0KLSAgICB9 Ci0gIH0KLQotICAuaW5mby1tZXNzYWdlLWJsb2NrIHsKLSAgICBiYWNrZ3JvdW5kOiAkc3FsLWhp c3RvcnktZGV0YWlsLWJnOwotICAgIGZsZXg6IDAuMzsKLSAgICBwYWRkaW5nLWxlZnQ6IDIwcHg7 Ci0KLSAgICAuaGlzdG9yeS1pbmZvLXRleHQgewotICAgICAgQGV4dGVuZCAudGV4dC0xMjsKLSAg ICAgIHBhZGRpbmc6IDdweCAwOwotICAgIH0KLSAgfQotCi0gIC5tZXRhZGF0YS1ibG9jayB7Ci0g ICAgZmxleDogMC40OwotICAgIHBhZGRpbmc6IDEwcHggMjBweDsKLQotICAgIC5tZXRhZGF0YSB7 Ci0gICAgICBkaXNwbGF5OiBmbGV4OwotICAgICAgZmxleC13cmFwOiB3cmFwOwotCi0gICAgICAu aXRlbSB7Ci0gICAgICAgIGZsZXg6IDE7Ci0gICAgICAgIG1pbi13aWR0aDogMTMwcHg7Ci0KLSAg ICAgICAgLnZhbHVlIHsKLSAgICAgICAgICBAZXh0ZW5kIC50ZXh0LTE0OwotICAgICAgICAgIGRp c3BsYXk6IGJsb2NrOwotICAgICAgICB9Ci0KLSAgICAgICAgLmRlc2NyaXB0aW9uIHsKLSAgICAg ICAgICBAZXh0ZW5kIC5oZWFkZXItbGFiZWw7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgIH0K LSAgfQotCi0gIC5xdWVyeS1zdGF0ZW1lbnQtYmxvY2sgewotICAgIGZsZXg6IDU7Ci0gICAgbWFy Z2luLWxlZnQ6IDEwcHg7Ci0gICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwotICAgIG1pbi1oZWlnaHQ6 IDRlbTsKLSAgICBwb3NpdGlvbjogcmVsYXRpdmU7Ci0KLSAgICAuY29weS1hbGwsIC53YXMtY29w aWVkLCAuY29weS10by1lZGl0b3IgewotICAgICAgZmxvYXQ6IGxlZnQ7Ci0gICAgICBwb3NpdGlv bjogcmVsYXRpdmU7Ci0gICAgICB6LWluZGV4OiAxMDsKLSAgICAgIGJvcmRlcjogMXB4IHNvbGlk ICRib3JkZXItY29sb3I7Ci0gICAgICBjb2xvcjogJGNvbG9yLWZnOwotICAgICAgZm9udC1zaXpl OiAxMnB4OwotICAgICAgYm94LXNoYWRvdzogMXB4IDJweCA0cHggMHB4ICRjb2xvci1ncmF5LWxp Z2h0OwotICAgICAgcGFkZGluZzogM3B4IDEycHggM3B4IDEwcHg7Ci0gICAgICBmb250LXdlaWdo dDogNTAwOwotICAgICAgbWluLXdpZHRoOiA3NXB4OwotICAgIH0KLQotICAgIC5jb3B5LWFsbCwg LmNvcHktdG8tZWRpdG9yIHsKLSAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1iZzsKLSAg ICB9Ci0KLSAgICAud2FzLWNvcGllZCB7Ci0gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3It cHJpbWFyeS1saWdodDsKLSAgICAgIGJvcmRlci1jb2xvcjogJGNvbG9yLXByaW1hcnktbGlnaHQ7 Ci0gICAgICBjb2xvcjogJGJ0bi1jb3BpZWQtY29sb3ItZmc7Ci0gICAgfQotCi0gICAgLkNvZGVN aXJyb3Itc2Nyb2xsIHsKLSAgICAgIHBhZGRpbmctdG9wOiAyNXB4OwotICAgIH0KLSAgfQotCi0g IC5ibG9jay1kaXZpZGVyIHsKLSAgICBtYXJnaW4tdG9wOiAxMXB4OwotICAgIG1hcmdpbi1ib3R0 b206IDhweDsKLSAgfQotCi0gIC5tZXNzYWdlLWJsb2NrIHsKLSAgICBmbGV4OiAyOwotICAgIGRp c3BsYXk6IGZsZXg7Ci0gICAgcGFkZGluZzogMCAyMHB4OwotICAgIG1pbi1oZWlnaHQ6IDZlbTsK LQotICAgIC5tZXNzYWdlIHsKLSAgICAgIGZsZXg6IDIgMiAwJTsKLSAgICAgIGZsZXgtZGlyZWN0 aW9uOiBjb2x1bW47Ci0gICAgICBkaXNwbGF5OiBmbGV4OwotCi0gICAgICAubWVzc2FnZS1oZWFk ZXIgewotICAgICAgICBAZXh0ZW5kIC5oZWFkZXItbGFiZWw7Ci0gICAgICAgIEBleHRlbmQgLm5v dC1zZWxlY3RhYmxlOwotICAgICAgICBmbGV4OiAwIDAgYXV0bzsKLSAgICAgIH0KLQotICAgICAg LmNvbnRlbnQgewotICAgICAgICBmbGV4OiAwIDEgYXV0bzsKLSAgICAgICAgb3ZlcmZsb3c6IGF1 dG87Ci0gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgICAgICAgaGVpZ2h0OiAxMDAlOwot Ci0gICAgICAgIC5jb250ZW50LXZhbHVlIHsKLSAgICAgICAgICBAZXh0ZW5kIC5iZy13aGl0ZTsK LSAgICAgICAgICBAZXh0ZW5kIC50ZXh0LTEzOwotICAgICAgICAgIGZvbnQtZmFtaWx5OiAkZm9u dC1mYW1pbHktZWRpdG9yOwotICAgICAgICAgIGNvbG9yOiAkY29sb3ItZmc7Ci0gICAgICAgICAg Ym9yZGVyOiAwOwotICAgICAgICAgIHBhZGRpbmctbGVmdDogMDsKLSAgICAgICAgICBwb3NpdGlv bjogYWJzb2x1dGU7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLX0KLQotI2hpc3Rv cnlfZ3JpZCB7Ci0gIC5ndXR0ZXIuZ3V0dGVyLWhvcml6b250YWwgewotICAgIHdpZHRoOiAkcGFu ZWwtYm9yZGVyLXdpZHRoOwotICAgIGJhY2tncm91bmQ6ICRwYW5lbC1ib3JkZXItY29sb3I7Ci0K LSAgICAmOmhvdmVyIHsKLSAgICAgIGN1cnNvcjogZXctcmVzaXplOwotICAgIH0KLSAgfQotCi0g IC50b2dnbGUtYW5kLWhpc3RvcnktY29udGFpbmVyIHsKLSAgICBkaXNwbGF5OiBmbGV4OwotICAg IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47Ci0gICAgaGVpZ2h0OiAxMDAlOwotCi0gICAgLnF1ZXJ5 LWhpc3RvcnktdG9nZ2xlIHsKLSAgICAgIHBhZGRpbmctdG9wOiA0cHg7Ci0gICAgICBwYWRkaW5n LWJvdHRvbTogNHB4OwotICAgIH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9v bHMvc3FsZWRpdG9yL3N0YXRpYy9zY3NzL19zcWxlZGl0b3Iuc2NzcyBiL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci9zdGF0aWMvc2Nzcy9fc3FsZWRpdG9yLnNjc3MKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGVlNWFhYmY4ZC4uMDAwMDAwMDAwCi0tLSBhL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci9zdGF0aWMvc2Nzcy9fc3FsZWRpdG9yLnNjc3MKKysrIC9kZXYvbnVsbApA QCAtMSw0MzEgKzAsMCBAQAotLmZpbHRlci10aXRsZSB7Ci0gIGJhY2tncm91bmQtY29sb3I6ICRj b2xvci1wcmltYXJ5OwotICBwYWRkaW5nOiAycHg7Ci0gIGNvbG9yOiAkY29sb3ItcHJpbWFyeS1m ZzsKLSAgZm9udC1zaXplOiAxM3B4OwotfQotCi0uc3FsLWljb24tbGcgewotICBmb250LXNpemU6 IDAuODc1cmVtOwotICBsaW5lLWhlaWdodDogMS4zOwotfQotCi0uc3FsX3RleHRhcmVhIHsKLSAg aGVpZ2h0OiAxMDAlOwotfQotCi0uc3FsX3RleHRhcmVhIC5Db2RlTWlycm9yLXNjcm9sbCB7Ci0g IHotaW5kZXg6IDA7Ci19Ci0KLS5kYXRhLW91dHB1dC1jb250YWluZXIgewotICBwb3NpdGlvbjog YWJzb2x1dGU7Ci0gIHRvcDogMDsKLSAgYm90dG9tOiAwOwotICByaWdodDogMDsKLSAgbGVmdDog MDsKLSAgb3ZlcmZsb3c6IGhpZGRlbjsKLX0KLQotLnNxbC1lZGl0b3ItYnVzeS10ZXh0LXN0YXR1 cyB7Ci0gIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgcGFkZGluZzogMXJlbSAxLjVyZW07Ci0gIGJv dHRvbTogMDsKLSAgcmlnaHQ6IDA7Ci0gIG9wYWNpdHk6IDAuODsKLSAgYmFja2dyb3VuZC1jb2xv cjogJGNvbG9yLXdhcm5pbmctbGlnaHQ7Ci0gIGNvbG9yOiAkY29sb3Itd2FybmluZy1mZzsKLX0K LQotLmNvbm5lY3Rpb25fc3RhdHVzIHsKLSAgYmFja2dyb3VuZC1jb2xvcjogJHNxbC10aXRsZS1i ZzsKLSAgY29sb3I6ICRzcWwtdGl0bGUtZmc7Ci0gIGJvcmRlci1yaWdodDogJGJvcmRlci13aWR0 aCBzb2xpZCAkYm9yZGVyLWNvbG9yOwotfQotCi0uZWRpdG9yLXRpdGxlIHsKLSAgcGFkZGluZzog JHNxbC10aXRsZS1wYWRkaW5nOwotICBiYWNrZ3JvdW5kOiAkc3FsLXRpdGxlLWJnOwotICBjb2xv cjogJHNxbC10aXRsZS1mZzsKLX0KLQotLmNvbm5lY3Rpb24taW5mbyB7Ci0gIGJhY2tncm91bmQ6 ICRzcWwtdGl0bGUtYmc7Ci0gIGNvbG9yOiAkc3FsLXRpdGxlLWZnOwotICB3aWR0aDoxMDAlOwot ICBkaXNwbGF5OiBpbmhlcml0OwotfQotCi0uY29ubi1pbmZvLWRkIHsKLSAgcGFkZGluZy10b3A6 IDAuM2VtOwotICBwYWRkaW5nLWxlZnQ6IDAuMmVtOwotICBjdXJzb3I6IHBvaW50ZXI7Ci19Ci0K LS5jb25uZWN0aW9uLWRhdGEgewotICBkaXNwbGF5OiBpbmhlcml0OwotICBjdXJzb3I6IHBvaW50 ZXI7Ci0gIHdpZHRoOiBhdXRvOwotfQotCi0KLSNlZGl0b3ItcGFuZWwgewotICB6LWluZGV4OiAw OwotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIHRvcDogJHNxbC1lZGl0b3ItcGFuZWwtdG9wOwot ICBib3R0b206IDA7Ci0gIGxlZnQ6IDA7Ci0gIHJpZ2h0OiAwOwotfQotCi0KLS5hanMtYm9keSAu d2Fybi1pY29uIHsKLSAgY29sb3I6ICRjb2xvci13YXJuaW5nOwotICBmb250LXNpemU6IDJlbTsK LSAgbWFyZ2luLXJpZ2h0OiAyMHB4OwotICBwYWRkaW5nLXRvcDogMTBweDsKLX0KLQotLmNvbm5l Y3Rpb25fc3RhdHVzX3dyYXBwZXIgewotICB3aWR0aDogMTAwJTsKLSAgYm9yZGVyLXRvcDogJHBh bmVsLWJvcmRlcjsKLSAgYm9yZGVyLWJvdHRvbTogJHBhbmVsLWJvcmRlcjsKLX0KLQotbGkuQ29k ZU1pcnJvci1oaW50LWFjdGl2ZSB7Ci0gIGJhY2tncm91bmQ6ICRjb2xvci1wcmltYXJ5LWxpZ2h0 OwotICBjb2xvcjogJGNvbG9yLXByaW1hcnktZmc7Ci19Ci0KLS5zcWwtZWRpdG9yIC5Db2RlTWly cm9yLWFjdGl2ZWxpbmUtYmFja2dyb3VuZCB7Ci0gIGJhY2tncm91bmQ6ICRjb2xvci1lZGl0b3It YWN0aXZlbGluZS1saWdodCAhaW1wb3J0YW50OwotICBib3JkZXI6IDFweCBzb2xpZCAkY29sb3It ZWRpdG9yLWFjdGl2ZWxpbmUtYm9yZGVyLWNvbG9yOwotfQotCi0uZmlsdGVyLWNvbnRhaW5lciB7 Ci0gIHBvc2l0aW9uOiByZWxhdGl2ZTsKLSAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9yLWJnOwot ICBib3JkZXI6IDFweCBzb2xpZCAkYm9yZGVyLWNvbG9yOwotICBwYWRkaW5nLWJvdHRvbTogMzBw eDsKLSAgdG9wOiAxMHB4OwotICB6LWluZGV4OiAxOwotICBtYXJnaW46IGF1dG87Ci0gIHdpZHRo OiA2MCU7Ci19Ci0KLS5saW1pdC1lbmFibGVkIHsKLSAgYmFja2dyb3VuZC1jb2xvcjogJGNvbG9y LWJnOwotfQotCi0KLQotLkNvZGVNaXJyb3ItaGludCB7Ci0gIG1hcmdpbjogMDsKLSAgcGFkZGlu ZzogMCA0cHg7Ci0gIGJvcmRlci1yYWRpdXM6IDJweDsKLSAgb3ZlcmZsb3c6IGhpZGRlbjsKLSAg d2hpdGUtc3BhY2U6IHByZTsKLSAgY29sb3I6ICRjb2xvci1mZzsKLSAgY3Vyc29yOiBwb2ludGVy OwotfQotCi0uZ3JpZC1oZWFkZXIgLnVpLWljb24udWktc3RhdGUtaG92ZXIgewotICBiYWNrZ3Jv dW5kLWNvbG9yOiAkY29sb3ItYmc7Ci19Ci0KLS5zbGljay1jZWxsLnNlbGVjdGVkIHNwYW5bZGF0 YS1jZWxsLXR5cGU9InJvdy1oZWFkZXItc2VsZWN0b3IiXSB7Ci0gIGNvbG9yOiAkY29sb3ItcHJp bWFyeS1mZzsKLX0KLQotLnNsaWNrLWNlbGwuY2VsbC1tb3ZlLWhhbmRsZSB7Ci0gIGZvbnQtd2Vp Z2h0OiBib2xkOwotICB0ZXh0LWFsaWduOiByaWdodDsKLSAgYm9yZGVyLXJpZ2h0OiBzb2xpZCAg JGJvcmRlci1jb2xvcjsKLSAgYmFja2dyb3VuZDogJGNvbG9yLWdyYXktbGlnaHRlcjsKLSAgY3Vy c29yOiBtb3ZlOwotfQotCi0uY2VsbC1tb3ZlLWhhbmRsZTpob3ZlciB7Ci0gIGJhY2tncm91bmQ6 ICRjb2xvci1ncmF5LWxpZ2h0OwotfQotCi0uc2xpY2stcm93LnNlbGVjdGVkIC5jZWxsLW1vdmUt aGFuZGxlIHsKLSAgYmFja2dyb3VuZDogJGNvbG9yLXdhcm5pbmctbGlnaHQ7Ci19Ci0KLS5zbGlj ay1yb3cuY29tcGxldGUgewotICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29sb3Itc3VjY2Vzcy1saWdo dDsKLSAgY29sb3I6ICAkY29sb3ItZ3JheS1kYXJrOwotfQotCi0uY2VsbC1zZWxlY3Rpb24gewot ICBib3JkZXItcmlnaHQtY29sb3I6ICRib3JkZXItY29sb3I7Ci0gIGJvcmRlci1yaWdodC1zdHls ZTogc29saWQ7Ci0gIGJhY2tncm91bmQ6ICRjb2xvci1ncmF5LWxpZ2h0ZXI7Ci0gIGNvbG9yOiAg JGNvbG9yLWdyYXk7Ci0gIHRleHQtYWxpZ246IHJpZ2h0OwotICBmb250LXNpemU6IDEwcHg7Ci19 Ci0KLSNkYXRhZ3JpZCAuc2xpY2staGVhZGVyIC5zbGljay1oZWFkZXItY29sdW1ucyB7Ci0gIGJh Y2tncm91bmQ6ICRzcWwtZ3JpZC10aXRsZS1jZWxsLWJnOwotICBjb2xvcjogJHNxbC1ncmlkLXRp dGxlLWNlbGwtZmc7Ci0gIGhlaWdodDogNDBweDsKLSAgYm9yZGVyLWJvdHRvbTogJHBhbmVsLWJv cmRlcjsKLX0KLQotI2RhdGFncmlkIC5zbGljay1oZWFkZXIgLnNsaWNrLWhlYWRlci1jb2x1bW4u dWktc3RhdGUtZGVmYXVsdCB7Ci0gIHBhZGRpbmc6IDRweCAwIDNweCA2cHg7Ci0gIGJvcmRlci1i b3R0b206ICRwYW5lbC1ib3JkZXI7Ci0gIGJvcmRlci1yaWdodDogJHBhbmVsLWJvcmRlcjsKLX0K LQotLnNsaWNrLXJvdzpob3ZlciAuc2xpY2stY2VsbHsKLSAgYm9yZGVyLXRvcDogJHRhYmxlLWhv dmVyLWJvcmRlcjsKLSAgYm9yZGVyLWJvdHRvbTogJHRhYmxlLWhvdmVyLWJvcmRlcjsKLSAgYmFj a2dyb3VuZC1jb2xvcjogJHRhYmxlLWhvdmVyLWJnLWNvbG9yOwotfQotCi0jZGF0YWdyaWQgLnNs aWNrLWhlYWRlciAuc2xpY2staGVhZGVyLWNvbHVtbi5zZWxlY3RlZCB7Ci0gIGJhY2tncm91bmQt Y29sb3I6ICRjb2xvci1wcmltYXJ5OwotfQotLnNsaWNrLXJvdyAuc2xpY2stY2VsbCB7Ci0gIGJv cmRlci1ib3R0b206ICRwYW5lbC1ib3JkZXI7Ci0gIGJvcmRlci1yaWdodDogJHBhbmVsLWJvcmRl cjsKLSAgei1pbmRleDogMDsKLX0KLQotI2RhdGFncmlkIHsKLSAgYmFja2dyb3VuZDogbm9uZTsK LSAgYmFja2dyb3VuZC1jb2xvcjogJGRhdGFncmlkLWJnOwotfQotCi0udWktd2lkZ2V0LWNvbnRl bnQuc2xpY2stcm93IHsKLSAgJi5ldmVuLCAgJi5vZGQgewotICAgIGJhY2tncm91bmQ6IG5vbmU7 Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogJHRhYmxlLWJnOwotICB9Ci19Ci0KLS8qIFJlbW92ZSBh Y3RpdmUgY2VsbCBib3JkZXIgKi8KLS5zbGljay1jZWxsLmFjdGl2ZSB7Ci0gIGJvcmRlcjogMXB4 IHNvbGlkIHRyYW5zcGFyZW50OwotICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAkY29sb3ItZ3Jh eS1saWdodDsKLSAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJGNvbG9yLWdyYXktbGlnaHQ7Ci19Ci0K LS8qIFRvIGhpZ2hsaWdodCBhbGwgbmV3bHkgaW5zZXJ0ZWQgcm93cyAqLwotLmdyaWQtY2FudmFz IC5uZXdfcm93IHsKLSAgYmFja2dyb3VuZDogJGNvbG9yLXN1Y2Nlc3MtbGlnaHQgIWltcG9ydGFu dDsKLX0KLQotLyogVG8gaGlnaGxpZ2h0IGFsbCB0aGUgdXBkYXRlZCByb3dzICovCi0uZ3JpZC1j YW52YXMgLnVwZGF0ZWRfcm93IHsKLSAgYmFja2dyb3VuZDogJGNvbG9yLWdyYXktbGlnaHRlcjsK LX0KLQotLyogVG8gaGlnaGxpZ2h0IHJvdyBhdCBmYXVsdCAqLwotLmdyaWQtY2FudmFzIC5uZXdf cm93LmVycm9yLCAuZ3JpZC1jYW52YXMgLnVwZGF0ZWRfcm93LmVycm9yIHsKLSAgYmFja2dyb3Vu ZDogJGNvbG9yLWRhbmdlci1saWdodCAhaW1wb3J0YW50OwotfQotCi0vKiBEaXNhYmxlZCByb3cg Ki8KLS5ncmlkLWNhbnZhcyAuZGlzYWJsZWRfcm93IHsKLSAgYmFja2dyb3VuZDogJGNvbG9yLWdy YXktbGlnaHRlcjsKLX0KLQotLyogRGlzYWJsZWQgY2VsbCAqLwotLmdyaWQtY2FudmFzIC5kaXNh YmxlZF9jZWxsIHsKLSAgY29sb3I6ICR0ZXh0LW11dGVkOwotfQotCi0vKiBIaWdobGlnaHRlZCAo bW9kaWZpZWQgb3IgbmV3KSBjZWxsICovCi0uZ3JpZC1jYW52YXMgLmhpZ2hsaWdodGVkX2dyaWRf Y2VsbHMgewotICBiYWNrZ3JvdW5kOiAkY29sb3ItZ3JheS1saWdodGVyOwotICBmb250LXdlaWdo dDogYm9sZDsKLX0KLQotCi0vKiBPdmVycmlkZSBzZWxlY3RlZCByb3cgY29sb3IgKi8KLSNkYXRh Z3JpZCAuc2xpY2stcm93IC5zbGljay1jZWxsLnNlbGVjdGVkIHsKLSAgICBiYWNrZ3JvdW5kLWNv bG9yOiAkdGFibGUtYmctc2VsZWN0ZWQ7Ci0gICAgY29sb3I6ICRkYXRhZ3JpZC1zZWxlY3RlZC1j b2xvcjsKLX0KLQotLyogY29sb3IgdGhlIGZpcnN0IGNvbHVtbiAqLwotCi0jZGF0YWdyaWQgLnNs aWNrLXJvdyB7Ci0gICAgLnNsaWNrLWNlbGwgewotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAk c3FsLWdyaWQtZGF0YS1jZWxsLWJnOwotICAgICAgICBjb2xvcjogJHNxbC1ncmlkLWRhdGEtY2Vs bC1mZzsKLSAgICB9Ci0KLSAgICAuc2xpY2stY2VsbC5sMC5yMCB7Ci0gICAgICAgIGJhY2tncm91 bmQtY29sb3I6ICRzcWwtZ3JpZC10aXRsZS1jZWxsLWJnOwotICAgICAgICBjb2xvcjogJHNxbC1n cmlkLXRpdGxlLWNlbGwtZmc7Ci0gICAgfQotfQotCi0jZGF0YWdyaWQgZGl2LnNsaWNrLWhlYWRl ci51aS1zdGF0ZS1kZWZhdWx0IHsKLSAgYmFja2dyb3VuZC1jb2xvcjogJHNxbC1ncmlkLXRpdGxl LWNlbGwtYmc7Ci0gIGNvbG9yOiAkc3FsLWdyaWQtdGl0bGUtY2VsbC1mZzsKLSAgYm9yZGVyLWJv dHRvbTogbm9uZTsKLSAgYm9yZGVyLXJpZ2h0OiBub25lOwotICBib3JkZXItdG9wOiBub25lOwot fQotCi0jZGF0YWdyaWQgLnNsaWNrLXJvdyAuc2xpY2stY2VsbC5sMC5yMC5zZWxlY3RlZCB7Ci0g IGJhY2tncm91bmQtY29sb3I6ICRjb2xvci1wcmltYXJ5OwotICBjb2xvcjogJGNvbG9yLXByaW1h cnktZmc7Ci19Ci0KLSNkYXRhZ3JpZCAuc2xpY2stcm93ID4gLnNsaWNrLWNlbGw6bm90KC5sMCk6 bm90KC5yMCkuc2VsZWN0ZWQgewotICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGFibGUtaG92ZXItYmct Y29sb3I7Ci0gIGJvcmRlci10b3A6ICR0YWJsZS1ob3Zlci1ib3JkZXI7Ci0gIGJvcmRlci1ib3R0 b206ICR0YWJsZS1ob3Zlci1ib3JkZXI7Ci19Ci0KLS5wZy10ZXh0LWVkaXRvciB7Ci0gIHotaW5k ZXg6MTAwMDA7Ci0gIHBvc2l0aW9uOmFic29sdXRlOwotICBiYWNrZ3JvdW5kOiAkY29sb3ItYmc7 Ci0gIHBhZGRpbmc6IDAuMjVyZW07Ci0gIGJvcmRlcjogJHBhbmVsLWJvcmRlcjsKLSAgYm94LXNo YWRvdzogJGRyb3Bkb3duLWJveC1zaGFkb3c7Ci0KLQotICAmIC5wZy10ZXh0YXJlYSB7Ci0gICAg d2lkdGg6MjUwcHg7Ci0gICAgaGVpZ2h0OjgwcHg7Ci0gICAgYm9yZGVyOjA7Ci0gICAgb3V0bGlu ZTowOwotICAgIHJlc2l6ZTogYm90aDsKLSAgfQotCi0gICYgLnBnLXRleHQtaW52YWxpZCB7Ci0g ICAgYmFja2dyb3VuZDogJGNvbG9yLWRhbmdlci1saWdodGVyOwotICB9Ci0KLSAgJiAjcGctanNv bi1lZGl0b3IgewotICAgIG1pbi13aWR0aDo1MjVweDsKLSAgICBtaW4taGVpZ2h0OjMwMHB4Owot ICAgIGhlaWdodDoyOTVweDsKLSAgICB3aWR0aDo1NTBweDsKLSAgICBib3JkZXI6ICRwYW5lbC1i b3JkZXI7Ci0gICAgb3V0bGluZTowOwotICAgIHJlc2l6ZTogYm90aDsKLSAgICBvdmVyZmxvdzph dXRvCi0gIH0KLX0KLQotLnBnX2J1dHRvbnMgewotICBwYWRkaW5nLXRvcDogM3B4OwotfQotLnNx bC1lZGl0b3ItbWVzc2FnZSB7Ci0gIHdoaXRlLXNwYWNlOnByZS13cmFwOwotICBmb250LWZhbWls eTogJGZvbnQtZmFtaWx5LWVkaXRvcjsKLSAgcGFkZGluZy10b3A6IDVweDsKLSAgcGFkZGluZy1s ZWZ0OiAxMHB4OwotICBvdmVyZmxvdzogYXV0bzsKLSAgaGVpZ2h0OiAxMDAlOwotICBmb250LXNp emU6IDAuOTI1ZW07Ci0gIC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7Ci0gIC1tb3otdXNlci1z ZWxlY3Q6IHRleHQ7Ci0gIC1tcy11c2VyLXNlbGVjdDogdGV4dDsKLSAgdXNlci1zZWxlY3Q6IHRl eHQ7Ci19Ci0KLS52aWV3LWdlb21ldHJ5LXByb3BlcnR5LXRhYmxlIC50ZC1kaXNhYmxlZHsKLSAg Y29sb3I6ICRjb2xvci1ncmF5LWxpZ2h0ZXI7Ci19Ci0KLS8qIEZvciBsZWFmbGV0IG1hcCBiYWNr Z3JvdW5kICovCi0uZ2VvbWV0cnktdmlld2VyLWNvbnRhaW5lci1wbGFpbi1iYWNrZ3JvdW5kIHsK LSAgYmFja2dyb3VuZDogJGNvbG9yLWJnOwotfQotCi0KLWRpdi5zdHJpa2VvdXQ6YmVmb3JlIHsK LSAgY29udGVudDogIiAiOwotICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gIHRvcDogNTAlOwotICBs ZWZ0OiAwOwotICBib3JkZXItdG9wOiAxcHggc29saWQgJGNvbG9yLWRhbmdlcjsKLSAgd2lkdGg6 IDEwMCU7Ci0gIGZvbnQtd2VpZ2h0OiA5MDA7Ci19Ci0KLWRpdi5zdHJpa2VvdXQ6YWZ0ZXIgewot ICBjb250ZW50OiAiXDAwQjciOwotICBmb250LXNpemU6IDFweDsKLSAgZm9udC13ZWlnaHQ6IDkw MDsKLX0KLQotLnNxbC1zY3JhdGNoIHsKLSAgd2lkdGg6IDEwMCU7Ci0gIGhlaWdodDogMTAwJTsK LSAgYm94LXNpemluZzogYm9yZGVyLWJveDsKLSAgb3ZlcmZsb3cteTogaGlkZGVuOwotCi0gIHRl eHRhcmVhIHsKLSAgICB3aWR0aDogMTAwJTsKLSAgICBoZWlnaHQ6IDEwMCU7Ci0gICAgYm94LXNp emluZzogYm9yZGVyLWJveDsKLSAgICBib3JkZXI6IG5vbmU7Ci0gICAgcmVzaXplOiBub25lOwot ICB9Ci19Ci0KLS5jb25uZWN0aW9uX3N0YXR1cyAub2J0YWluaW5nLWNvbm4gewotICBiYWNrZ3Jv dW5kLWltYWdlOiAkbG9hZGVyLWljb24tc21hbGwgIWltcG9ydGFudDsKLSAgYmFja2dyb3VuZC1w b3NpdGlvbjogY2VudGVyIGNlbnRlcjsKLSAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsK LSAgJjpiZWZvcmUgewotICAgIGNvbnRlbnQ6Jyc7Ci0gIH0KLSAgbWluLXdpZHRoOiA1MCU7Ci0g IG1pbi1oZWlnaHQ6IDEwMCU7Ci19Ci0KLS5zcWwtZWRpdG9yLWdyaWQtY29udGFpbmVyIHsKLSAg aGVpZ2h0OiAxMDAlOwotICBvdmVyZmxvdzogYXV0bzsKLQotICAudWktd2lkZ2V0LWNvbnRlbnQg ewotICAgIGJhY2tncm91bmQtY29sb3I6ICRpbnB1dC1iZzsKLSAgICBjb2xvcjogJGlucHV0LWNv bG9yOwotICB9Ci0KLSAgLnVpLXN0YXRlLWRlZmF1bHQgewotICAgIGNvbG9yOiAkY29sb3ItZmc7 Ci0gIH0KLX0KLQotLnNxbC1lZGl0b3ItZ3JpZC1jb250YWluZXIuaGFzLW5vLWZvb3RlciB7Ci0g IGhlaWdodDogMTAwJTsKLX0KLQotLnNlbGVjdGVkLWNvbm5lY3Rpb24gewotICBiYWNrZ3JvdW5k LWNvbG9yOiAkY29sb3ItcHJpbWFyeS1saWdodDsKLX0KLQotLyogU2V0dGluZyBpdCB0byBoYXJk Y29kZWQgd2hpdGUgYXMgdGhlIFNWRyBnZW5lcmF0ZWQgaXMgaGF2aW5nIHdoaXRlIGJnCi0gKiBO ZWVkIHRvIGNoZWNrIHdoYXQgY2FuIGJlIGRvbmUuCi0gKi8KLQotLyogQ3NzIGZvciBwc3FsICov Ci0ucHNxbF90ZXJtaW5hbCAudGVybWluYWwgewotICBwYWRkaW5nLXRvcDogMSU7Ci0gIHBhZGRp bmctbGVmdDogMC41JTsKLSAgaGVpZ2h0OiAxMDAlOwotfQotCi0ucHNxbC1pY29uLXN0eWxlIHsK LSAgZm9udC1zaXplOiBpbmhlcml0OwotICBwYWRkaW5nLWxlZnQ6IDBlbTsKLX0KLQotLnBzcWwt dGFiLXN0eWxlIHsKLSAgZm9udC1zaXplOiBzbWFsbDsKLSAgcGFkZGluZy1sZWZ0OiAwZW07Ci19 CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9kYXRhZ3JpZC90ZW1wbGF0ZXMvZGF0YWdy aWQvZmlsdGVyLmh0bWwgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVtcGxhdGVzL3Nx bGVkaXRvci9maWx0ZXIuaHRtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gd2Vi L3BnYWRtaW4vdG9vbHMvZGF0YWdyaWQvdGVtcGxhdGVzL2RhdGFncmlkL2ZpbHRlci5odG1sCnJl bmFtZSB0byB3ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRvci9m aWx0ZXIuaHRtbApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3RlbXBs YXRlcy9zcWxlZGl0b3IvaW5kZXguaHRtbCBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90 ZW1wbGF0ZXMvc3FsZWRpdG9yL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMDAwLi5iY2I2YTA0ZWEKLS0tIC9kZXYvbnVsbAorKysgYi93ZWIvcGdhZG1pbi90b29s cy9zcWxlZGl0b3IvdGVtcGxhdGVzL3NxbGVkaXRvci9pbmRleC5odG1sCkBAIC0wLDAgKzEsNzAg QEAKK3slIGV4dGVuZHMgImJhc2UuaHRtbCIgJX0KK3slIGJsb2NrIHRpdGxlICV9e3t0aXRsZX19 eyUgZW5kYmxvY2sgJX0KKworeyUgYmxvY2sgY3NzX2xpbmsgJX0KKzxsaW5rIHR5cGU9InRleHQv Y3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Int7IHVybF9mb3IoJ2Jyb3dzZXIuYnJvd3Nlcl9j c3MnKX19Ii8+Cit7JSBlbmRibG9jayAlfQoreyUgYmxvY2sgYm9keSAlfQorPHN0eWxlPgorICAg IGJvZHkge3BhZGRpbmc6IDBweDt9CisgICAgI3NxbGVkaXRvci1jb250YWluZXIgeworICAgICAg ICBkaXNwbGF5OiBmbGV4OworICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uOworICAgICAg ICBoZWlnaHQ6IDEwMCU7CisgICAgfQorICAgICNzcWxlZGl0b3ItY29udGFpbmVyOm5vdCg6ZW1w dHkpICsgLnBnLXNwLWNvbnRhaW5lciB7CisgICAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAgfQor ICAgIHslIGlmIGlzX2Rlc2t0b3BfbW9kZSBhbmQgaXNfbGludXggJX0KKyAgICAuYWxlcnRpZnkg LmFqcy1kaW1tZXIsLmFsZXJ0aWZ5IC5hanMtbW9kYWx7LXdlYmtpdC10cmFuc2Zvcm06IG5vbmU7 fQorICAgIC5hbGVydGlmeS1ub3RpZmllcnstd2Via2l0LXRyYW5zZm9ybTogbm9uZTt9CisgICAg LmFsZXJ0aWZ5LW5vdGlmaWVyIC5hanMtbWVzc2FnZXstd2Via2l0LXRyYW5zZm9ybTogbm9uZTt9 CisgICAgLmFsZXJ0aWZ5IC5hanMtZGlhbG9nLmFqcy1zaGFrZXstd2Via2l0LWFuaW1hdGlvbi1u YW1lOiBub25lO30KKyAgICAuc3FsLWVkaXRvci1idXN5LWljb24uZmEtcHVsc2V7LXdlYmtpdC1h bmltYXRpb246IG5vbmU7fQorICAgIHslIGVuZGlmICV9Cis8L3N0eWxlPgorPGRpdiBpZD0ic3Fs ZWRpdG9yLWNvbnRhaW5lciI+Cis8ZGl2IGNsYXNzPSJwZy1zcC1jb250YWluZXIiPgorICAgIDxk aXYgY2xhc3M9InBnLXNwLWNvbnRlbnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJyb3ciPgorICAg ICAgICAgICAgPGRpdiBjbGFzcz0iY29sLTEyIHBnLXNwLWljb24iPjwvZGl2PgorICAgICAgICA8 L2Rpdj4KKyAgICA8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cit7JSBlbmRibG9jayAlfQoreyUgYmxv Y2sgaW5pdF9zY3JpcHQgJX0KKyAgICB0cnkgeworICAgICAgICByZXF1aXJlKAorICAgICAgICAg ICAgWydzb3VyY2VzL2dlbmVyYXRlZC9icm93c2VyX25vZGVzJywgJ3NvdXJjZXMvZ2VuZXJhdGVk L2NvZGVtaXJyb3InXSwKKyAgICAgICAgICAgIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAg IHJlcXVpcmUoWydzb3VyY2VzL2dlbmVyYXRlZC9zcWxlZGl0b3InXSwgZnVuY3Rpb24obW9kdWxl KSB7CisgICAgICAgICAgICAgICAgd2luZG93LnBnQWRtaW4uVG9vbHMuU1FMRWRpdG9yLmxvYWRD b21wb25lbnQoCisgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz cWxlZGl0b3ItY29udGFpbmVyJyksIHt7IHBhcmFtc3xzYWZlIH19KTsKKworICAgICAgICAgICAg ICAgIGlmKHdpbmRvdy5vcGVuZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgJCh3aW5kb3cpLm9u KCd1bmxvYWQnLCBmdW5jdGlvbihldikgeworICAgICAgICAgICAgICAgICAgICAgICAgJC5hamF4 KHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVybDogJ3t7Y2xvc2VfdXJsfX0nCisgICAgICAgICAgICAg ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAg fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgJCh3aW5kb3cpLm9uKCdiZWZvcmV1bmxvYWQn LCBmdW5jdGlvbihldikgeworICAgICAgICAgICAgICAgICAgICAgICAgJC5hamF4KHsKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHVybDogJ3t7Y2xvc2VfdXJsfX0nCisgICAgICAgICAgICAgICAgICAgICAg ICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAg ICAgICAgfSwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5sb2coYXJndW1l bnRzKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9LAorICAgICAgICBmdW5jdGlvbigpIHsK KyAgICAgICAgICAgIGNvbnNvbGUubG9nKGFyZ3VtZW50cyk7CisgICAgICAgIH0pOworICAgIH0g Y2F0Y2ggKGVycikgeworICAgICAgICBjb25zb2xlLmxvZyhlcnIpOworICAgIH0KK3slIGVuZGJs b2NrICV9CmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMvdGVz dF9kb3dubG9hZF9jc3ZfcXVlcnlfdG9vbC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci90ZXN0cy90ZXN0X2Rvd25sb2FkX2Nzdl9xdWVyeV90b29sLnB5CmluZGV4IGY2MDkxOTNjZS4u YmFlOGZiN2UyIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdGVzdHMv dGVzdF9kb3dubG9hZF9jc3ZfcXVlcnlfdG9vbC5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy9z cWxlZGl0b3IvdGVzdHMvdGVzdF9kb3dubG9hZF9jc3ZfcXVlcnlfdG9vbC5weQpAQCAtMjcsNyAr MjcsNyBAQCBjbGFzcyBUZXN0RG93bmxvYWRDU1YoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAg ICAgICAgJ0Rvd25sb2FkIGNzdiBVUkwgd2l0aCB2YWxpZCBxdWVyeScsCiAgICAgICAgICAgICBk aWN0KAogICAgICAgICAgICAgICAgIHNxbD0nU0VMRUNUIDEgYXMgIkEiLDIgYXMgIkIiLDMgYXMg IkMiJywKLSAgICAgICAgICAgICAgICBpbml0X3VybD0nL2RhdGFncmlkL2luaXRpYWxpemUvcXVl cnlfdG9vbC97MH0vezF9L3syfS97M30nLAorICAgICAgICAgICAgICAgIGluaXRfdXJsPScvc3Fs ZWRpdG9yL2luaXRpYWxpemUvc3FsZWRpdG9yL3swfS97MX0vezJ9L3szfScsCiAgICAgICAgICAg ICAgICAgZG9ud2xvYWRfdXJsPSIvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvZG93bmxvYWQvezB9IiwK ICAgICAgICAgICAgICAgICBvdXRwdXRfY29sdW1ucz0nIkEiLCJCIiwiQyInLAogICAgICAgICAg ICAgICAgIG91dHB1dF92YWx1ZXM9JzEsMiwzJywKQEAgLTQxLDcgKzQxLDcgQEAgY2xhc3MgVGVz dERvd25sb2FkQ1NWKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICdEb3dubG9hZCBj c3YgVVJMIHdpdGggd3JvbmcgVFggaWQnLAogICAgICAgICAgICAgZGljdCgKICAgICAgICAgICAg ICAgICBzcWw9J1NFTEVDVCAxIGFzICJBIiwyIGFzICJCIiwzIGFzICJDIicsCi0gICAgICAgICAg ICAgICAgaW5pdF91cmw9Jy9kYXRhZ3JpZC9pbml0aWFsaXplL3F1ZXJ5X3Rvb2wvezB9L3sxfS97 Mn0vezN9JywKKyAgICAgICAgICAgICAgICBpbml0X3VybD0nL3NxbGVkaXRvci9pbml0aWFsaXpl L3NxbGVkaXRvci97MH0vezF9L3syfS97M30nLAogICAgICAgICAgICAgICAgIGRvbndsb2FkX3Vy bD0iL3NxbGVkaXRvci9xdWVyeV90b29sL2Rvd25sb2FkL3swfSIsCiAgICAgICAgICAgICAgICAg b3V0cHV0X2NvbHVtbnM9Tm9uZSwKICAgICAgICAgICAgICAgICBvdXRwdXRfdmFsdWVzPU5vbmUs CkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFRlc3REb3dubG9hZENTVihCYXNlVGVzdEdlbmVyYXRv cik6CiAgICAgICAgICAgICAnRG93bmxvYWQgY3N2IFVSTCB3aXRoIHdyb25nIHF1ZXJ5JywKICAg ICAgICAgICAgIGRpY3QoCiAgICAgICAgICAgICAgICAgc3FsPSdTRUxFQ1QgKiBGUk9NIHRoaXNf dGFibGVfZG9lc19ub3RfZXhpc3QnLAotICAgICAgICAgICAgICAgIGluaXRfdXJsPScvZGF0YWdy aWQvaW5pdGlhbGl6ZS9xdWVyeV90b29sL3swfS97MX0vezJ9L3szfScsCisgICAgICAgICAgICAg ICAgaW5pdF91cmw9Jy9zcWxlZGl0b3IvaW5pdGlhbGl6ZS9zcWxlZGl0b3IvezB9L3sxfS97Mn0v ezN9JywKICAgICAgICAgICAgICAgICBkb253bG9hZF91cmw9Ii9zcWxlZGl0b3IvcXVlcnlfdG9v bC9kb3dubG9hZC97MH0iLAogICAgICAgICAgICAgICAgIG91dHB1dF9jb2x1bW5zPU5vbmUsCiAg ICAgICAgICAgICAgICAgb3V0cHV0X3ZhbHVlcz1Ob25lLApAQCAtNjksNyArNjksNyBAQCBjbGFz cyBUZXN0RG93bmxvYWRDU1YoQmFzZVRlc3RHZW5lcmF0b3IpOgogICAgICAgICAgICAgJ0Rvd25s b2FkIGFzIHR4dCB3aXRob3V0IGZpbGVuYW1lIHBhcmFtZXRlcicsCiAgICAgICAgICAgICBkaWN0 KAogICAgICAgICAgICAgICAgIHNxbD0nU0VMRUNUIDEgYXMgIkEiLDIgYXMgIkIiLDMgYXMgIkMi JywKLSAgICAgICAgICAgICAgICBpbml0X3VybD0nL2RhdGFncmlkL2luaXRpYWxpemUvcXVlcnlf dG9vbC97MH0vezF9L3syfS97M30nLAorICAgICAgICAgICAgICAgIGluaXRfdXJsPScvc3FsZWRp dG9yL2luaXRpYWxpemUvc3FsZWRpdG9yL3swfS97MX0vezJ9L3szfScsCiAgICAgICAgICAgICAg ICAgZG9ud2xvYWRfdXJsPSIvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvZG93bmxvYWQvezB9IiwKICAg ICAgICAgICAgICAgICBvdXRwdXRfY29sdW1ucz0nIkEiOyJCIjsiQyInLAogICAgICAgICAgICAg ICAgIG91dHB1dF92YWx1ZXM9JzE7MjszJywKQEAgLTgzLDcgKzgzLDcgQEAgY2xhc3MgVGVzdERv d25sb2FkQ1NWKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICdEb3dubG9hZCBhcyBj c3Ygd2l0aG91dCBmaWxlbmFtZSBwYXJhbWV0ZXInLAogICAgICAgICAgICAgZGljdCgKICAgICAg ICAgICAgICAgICBzcWw9J1NFTEVDVCAxIGFzICJBIiwyIGFzICJCIiwzIGFzICJDIicsCi0gICAg ICAgICAgICAgICAgaW5pdF91cmw9Jy9kYXRhZ3JpZC9pbml0aWFsaXplL3F1ZXJ5X3Rvb2wvezB9 L3sxfS97Mn0vezN9JywKKyAgICAgICAgICAgICAgICBpbml0X3VybD0nL3NxbGVkaXRvci9pbml0 aWFsaXplL3NxbGVkaXRvci97MH0vezF9L3syfS97M30nLAogICAgICAgICAgICAgICAgIGRvbnds b2FkX3VybD0iL3NxbGVkaXRvci9xdWVyeV90b29sL2Rvd25sb2FkL3swfSIsCiAgICAgICAgICAg ICAgICAgb3V0cHV0X2NvbHVtbnM9JyJBIiwiQiIsIkMiJywKICAgICAgICAgICAgICAgICBvdXRw dXRfdmFsdWVzPScxLDIsMycsCkBAIC0yMTEsNyArMjExLDcgQEAgY2xhc3MgVGVzdERvd25sb2Fk Q1NWKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFs KHJlc3BvbnNlLnN0YXR1c19jb2RlLCA1MDApCiAKICAgICAgICAgIyBDbG9zZSBxdWVyeSB0b29s Ci0gICAgICAgIHVybCA9ICcvZGF0YWdyaWQvY2xvc2UvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19p ZCkKKyAgICAgICAgdXJsID0gJy9zcWxlZGl0b3IvY2xvc2UvezB9Jy5mb3JtYXQoc2VsZi50cmFu c19pZCkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5kZWxldGUodXJsKQogICAgICAg ICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAKZGlmZiAtLWdp dCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X2VkaXRvcl9oaXN0b3J5 LnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3RzL3Rlc3RfZWRpdG9yX2hpc3Rv cnkucHkKaW5kZXggODZiNWQ5MzViLi5jN2RjYmRhZDAgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWlu L3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X2VkaXRvcl9oaXN0b3J5LnB5CisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X2VkaXRvcl9oaXN0b3J5LnB5CkBAIC03 MCw3ICs3MCw3IEBAIGNsYXNzIFRlc3RFZGl0b3JIaXN0b3J5KEJhc2VUZXN0R2VuZXJhdG9yKToK IAogICAgICAgICAjIEluaXRpYWxpemUgcXVlcnkgdG9vbAogICAgICAgICBzZWxmLnRyYW5zX2lk ID0gc3RyKHJhbmRvbS5yYW5kaW50KDEsIDk5OTk5OTkpKQotICAgICAgICB1cmwgPSAnL2RhdGFn cmlkL2luaXRpYWxpemUvcXVlcnlfdG9vbC97MH0vezF9L3syfS97M30nLmZvcm1hdCgKKyAgICAg ICAgdXJsID0gJy9zcWxlZGl0b3IvaW5pdGlhbGl6ZS9zcWxlZGl0b3IvezB9L3sxfS97Mn0vezN9 Jy5mb3JtYXQoCiAgICAgICAgICAgICBzZWxmLnRyYW5zX2lkLCB1dGlscy5TRVJWRVJfR1JPVVAs IHNlbGYuc2VydmVyX2lkLCBzZWxmLmRiX2lkKQogICAgICAgICByZXNwb25zZSA9IHNlbGYudGVz dGVyLnBvc3QodXJsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19j b2RlLCAyMDApCkBAIC0xMDEsNyArMTAxLDcgQEAgY2xhc3MgVGVzdEVkaXRvckhpc3RvcnkoQmFz ZVRlc3RHZW5lcmF0b3IpOgogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICAjIENs b3NlIHF1ZXJ5IHRvb2wKLSAgICAgICAgdXJsID0gJy9kYXRhZ3JpZC9jbG9zZS97MH0nLmZvcm1h dChzZWxmLnRyYW5zX2lkKQorICAgICAgICB1cmwgPSAnL3NxbGVkaXRvci9jbG9zZS97MH0nLmZv cm1hdChzZWxmLnRyYW5zX2lkKQogICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVyLmRlbGV0 ZSh1cmwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIw MCkKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3RzL3Rlc3Rf ZW5jb2RpbmdfY2hhcnNldC5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90 ZXN0X2VuY29kaW5nX2NoYXJzZXQucHkKaW5kZXggOTllYzMyYTQ5Li42NTNkZGFjMTAgMTAwNjQ0 Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X2VuY29kaW5nX2No YXJzZXQucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3RzL3Rlc3RfZW5j b2RpbmdfY2hhcnNldC5weQpAQCAtMjYyLDcgKzI2Miw3IEBAIGNsYXNzIFRlc3RFbmNvZGluZ0No YXJzZXQoQmFzZVRlc3RHZW5lcmF0b3IpOgogCiAgICAgICAgICMgSW5pdGlhbGl6ZSBxdWVyeSB0 b29sCiAgICAgICAgIHNlbGYudHJhbnNfaWQgPSBzdHIocmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5 OSkpCi0gICAgICAgIHVybCA9ICcvZGF0YWdyaWQvaW5pdGlhbGl6ZS9xdWVyeV90b29sL3swfS97 MX0vezJ9L3szfSdcCisgICAgICAgIHVybCA9ICcvc3FsZWRpdG9yL2luaXRpYWxpemUvc3FsZWRp dG9yL3swfS97MX0vezJ9L3szfSdcCiAgICAgICAgICAgICAuZm9ybWF0KHNlbGYudHJhbnNfaWQs IHRlc3RfdXRpbHMuU0VSVkVSX0dST1VQLCBzZWxmLmVuY29kZV9zaWQsCiAgICAgICAgICAgICAg ICAgICAgIHNlbGYuZW5jb2RlX2RpZCkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5w b3N0KHVybCkKQEAgLTI4Myw3ICsyODMsNyBAQCBjbGFzcyBUZXN0RW5jb2RpbmdDaGFyc2V0KEJh c2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIHNlbGYu dGVzdF9zdHIpCiAKICAgICAgICAgIyBDbG9zZSBxdWVyeSB0b29sCi0gICAgICAgIHVybCA9ICcv ZGF0YWdyaWQvY2xvc2UvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkKKyAgICAgICAgdXJsID0g Jy9zcWxlZGl0b3IvY2xvc2UvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkKICAgICAgICAgcmVz cG9uc2UgPSBzZWxmLnRlc3Rlci5kZWxldGUodXJsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFs KHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X2V4cGxhaW5fcGxhbi5weSBiL3dlYi9wZ2FkbWluL3Rv b2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X2V4cGxhaW5fcGxhbi5weQppbmRleCA3MzQxMjUzOTku LmUyYmZjMjU5YSAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3Rz L3Rlc3RfZXhwbGFpbl9wbGFuLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90 ZXN0cy90ZXN0X2V4cGxhaW5fcGxhbi5weQpAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBUZXN0RXhw bGFpblBsYW4oQmFzZVRlc3RHZW5lcmF0b3IpOgogCiAgICAgICAgICMgSW5pdGlhbGl6ZSBxdWVy eSB0b29sCiAgICAgICAgIHNlbGYudHJhbnNfaWQgPSBzdHIocmFuZG9tLnJhbmRpbnQoMSwgOTk5 OTk5OSkpCi0gICAgICAgIHVybCA9ICcvZGF0YWdyaWQvaW5pdGlhbGl6ZS9xdWVyeV90b29sL3sw fS97MX0vezJ9L3szfScuZm9ybWF0KAorICAgICAgICB1cmwgPSAnL3NxbGVkaXRvci9pbml0aWFs aXplL3NxbGVkaXRvci97MH0vezF9L3syfS97M30nLmZvcm1hdCgKICAgICAgICAgICAgIHNlbGYu dHJhbnNfaWQsIHV0aWxzLlNFUlZFUl9HUk9VUCwgc2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQp CiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1cmwpCiAgICAgICAgIHNlbGYu YXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkKQEAgLTY4LDcgKzY4LDcgQEAg Y2xhc3MgVGVzdEV4cGxhaW5QbGFuKEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgc2VsZi5h c3NlcnRFcXVhbChsZW4ocmVzcG9uc2VfZGF0YVsnZGF0YSddWydyZXN1bHQnXVswXSksIDEpCiAK ICAgICAgICAgIyBDbG9zZSBxdWVyeSB0b29sCi0gICAgICAgIHVybCA9ICcvZGF0YWdyaWQvY2xv c2UvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkKKyAgICAgICAgdXJsID0gJy9zcWxlZGl0b3Iv Y2xvc2UvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxm LnRlc3Rlci5kZWxldGUodXJsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0 YXR1c19jb2RlLCAyMDApCiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci90ZXN0cy90ZXN0X21hY3Jvcy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0 cy90ZXN0X21hY3Jvcy5weQppbmRleCBiNjY2Nzg2NjguLjk1ZTQxY2NiOCAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3RzL3Rlc3RfbWFjcm9zLnB5CisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X21hY3Jvcy5weQpAQCAtMTA2LDcg KzEwNiw3IEBAIGNsYXNzIFRlc3RNYWNyb3MoQmFzZVRlc3RHZW5lcmF0b3IpOgogCiAgICAgICAg ICMgSW5pdGlhbGl6ZSBxdWVyeSB0b29sCiAgICAgICAgIHNlbGYudHJhbnNfaWQgPSBzdHIocmFu ZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCi0gICAgICAgIHVybCA9ICcvZGF0YWdyaWQvaW5pdGlh bGl6ZS9xdWVyeV90b29sL3swfS97MX0vezJ9L3szfScuZm9ybWF0KAorICAgICAgICB1cmwgPSAn L3NxbGVkaXRvci9pbml0aWFsaXplL3NxbGVkaXRvci97MH0vezF9L3syfS97M30nLmZvcm1hdCgK ICAgICAgICAgICAgIHNlbGYudHJhbnNfaWQsIHV0aWxzLlNFUlZFUl9HUk9VUCwgc2VsZi5zZXJ2 ZXJfaWQsIHNlbGYuZGJfaWQpCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIucG9zdCh1 cmwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2NvZGUsIDIwMCkK QEAgLTE1MCw3ICsxNTAsNyBAQCBjbGFzcyBUZXN0TWFjcm9zKEJhc2VUZXN0R2VuZXJhdG9yKToK IAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgIyBDbG9zZSBxdWVyeSB0b29sCi0g ICAgICAgIHVybCA9ICcvZGF0YWdyaWQvY2xvc2UvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkK KyAgICAgICAgdXJsID0gJy9zcWxlZGl0b3IvY2xvc2UvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19p ZCkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5kZWxldGUodXJsKQogICAgICAgICBz ZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAKZGlmZiAtLWdpdCBh L3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X3BvbGxfcXVlcnlfdG9vbC5w eSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X3BvbGxfcXVlcnlfdG9v bC5weQppbmRleCA5MjA4MzllNTYuLmQzNWEyYmI3MyAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4v dG9vbHMvc3FsZWRpdG9yL3Rlc3RzL3Rlc3RfcG9sbF9xdWVyeV90b29sLnB5CisrKyBiL3dlYi9w Z2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X3BvbGxfcXVlcnlfdG9vbC5weQpAQCAt NzcsNyArNzcsNyBAQCBOT1RJQ0U6ICBIZWxsbywgd29ybGQhCiAKICAgICAgICAgIyBJbml0aWFs aXplIHF1ZXJ5IHRvb2wKICAgICAgICAgc2VsZi50cmFuc19pZCA9IHN0cihyYW5kb20ucmFuZGlu dCgxLCA5OTk5OTk5KSkKLSAgICAgICAgdXJsID0gJy9kYXRhZ3JpZC9pbml0aWFsaXplL3F1ZXJ5 X3Rvb2wvezB9L3sxfS97Mn0vezN9Jy5mb3JtYXQoCisgICAgICAgIHVybCA9ICcvc3FsZWRpdG9y L2luaXRpYWxpemUvc3FsZWRpdG9yL3swfS97MX0vezJ9L3szfScuZm9ybWF0KAogICAgICAgICAg ICAgc2VsZi50cmFuc19pZCwgdXRpbHMuU0VSVkVSX0dST1VQLCBzZWxmLnNlcnZlcl9pZCwgc2Vs Zi5kYl9pZCkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KHVybCkKICAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQpAQCAtMTEwLDcg KzExMCw3IEBAIE5PVElDRTogIEhlbGxvLCB3b3JsZCEKICAgICAgICAgICAgIGNudCArPSAxCiAK ICAgICAgICAgIyBDbG9zZSBxdWVyeSB0b29sCi0gICAgICAgIHVybCA9ICcvZGF0YWdyaWQvY2xv c2UvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkKKyAgICAgICAgdXJsID0gJy9zcWxlZGl0b3Iv Y2xvc2UvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxm LnRlc3Rlci5kZWxldGUodXJsKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0 YXR1c19jb2RlLCAyMDApCiAKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci90ZXN0cy90ZXN0X3RyYW5zYWN0aW9uX3N0YXR1cy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3Nx bGVkaXRvci90ZXN0cy90ZXN0X3RyYW5zYWN0aW9uX3N0YXR1cy5weQppbmRleCA1ZmJlODM3MzQu LjM1MzgyMGJmMCAxMDA2NDQKLS0tIGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3Rz L3Rlc3RfdHJhbnNhY3Rpb25fc3RhdHVzLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVk aXRvci90ZXN0cy90ZXN0X3RyYW5zYWN0aW9uX3N0YXR1cy5weQpAQCAtMzA0LDcgKzMwNCw3IEBA IGNsYXNzIFRlc3RUcmFuc2FjdGlvbkNvbnRyb2woQmFzZVRlc3RHZW5lcmF0b3IpOgogCiAgICAg ZGVmIF9pbml0aWFsaXplX3F1ZXJ5X3Rvb2woc2VsZik6CiAgICAgICAgIHNlbGYudHJhbnNfaWQg PSBzdHIocmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCi0gICAgICAgIHVybCA9ICcvZGF0YWdy aWQvaW5pdGlhbGl6ZS9xdWVyeV90b29sL3swfS97MX0vezJ9L3szfScuZm9ybWF0KAorICAgICAg ICB1cmwgPSAnL3NxbGVkaXRvci9pbml0aWFsaXplL3NxbGVkaXRvci97MH0vezF9L3syfS97M30n LmZvcm1hdCgKICAgICAgICAgICAgIHNlbGYudHJhbnNfaWQsIHV0aWxzLlNFUlZFUl9HUk9VUCwg c2VsZi5zZXJ2ZXJfaWQsIHNlbGYuZGJfaWQpCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0 ZXIucG9zdCh1cmwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2Nv ZGUsIDIwMCkKQEAgLTMzOSw2ICszMzksNiBAQCBjbGFzcyBUZXN0VHJhbnNhY3Rpb25Db250cm9s KEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgdXRpbHMuY3JlYXRlX3RhYmxlX3dpdGhfcXVl cnkoc2VsZi5zZXJ2ZXIsIHNlbGYuZGJfbmFtZSwgY3JlYXRlX3NxbCkKIAogICAgIGRlZiBfY2xv c2VfcXVlcnlfdG9vbChzZWxmKToKLSAgICAgICAgdXJsID0gJy9kYXRhZ3JpZC9jbG9zZS97MH0n LmZvcm1hdChzZWxmLnRyYW5zX2lkKQorICAgICAgICB1cmwgPSAnL3NxbGVkaXRvci9jbG9zZS97 MH0nLmZvcm1hdChzZWxmLnRyYW5zX2lkKQogICAgICAgICByZXNwb25zZSA9IHNlbGYudGVzdGVy LmRlbGV0ZSh1cmwpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcG9uc2Uuc3RhdHVzX2Nv ZGUsIDIwMCkKZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90 ZXN0X3ZpZXdfZGF0YS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0 X3ZpZXdfZGF0YS5weQppbmRleCBiODdiMzYwNGEuLjVhZDc1ZDI4ZiAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3Rlc3RzL3Rlc3Rfdmlld19kYXRhLnB5CisrKyBiL3dl Yi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci90ZXN0cy90ZXN0X3ZpZXdfZGF0YS5weQpAQCAtOTcs NyArOTcsNyBAQCBjbGFzcyBUZXN0Vmlld0RhdGEoQmFzZVRlc3RHZW5lcmF0b3IpOgogCiAgICAg ICAgICMgSW5pdGlhbGl6ZSBxdWVyeSB0b29sCiAgICAgICAgIHNlbGYudHJhbnNfaWQgPSBzdHIo cmFuZG9tLnJhbmRpbnQoMSwgOTk5OTk5OSkpCi0gICAgICAgIHVybCA9ICcvZGF0YWdyaWQvaW5p dGlhbGl6ZS9kYXRhZ3JpZC97MH0vMy90YWJsZS97MX0vezJ9L3szfS97NH0nIFwKKyAgICAgICAg dXJsID0gJy9zcWxlZGl0b3IvaW5pdGlhbGl6ZS92aWV3ZGF0YS97MH0vMy90YWJsZS97MX0vezJ9 L3szfS97NH0nIFwKICAgICAgICAgICAgIC5mb3JtYXQoc2VsZi50cmFuc19pZCwgdGVzdF91dGls cy5TRVJWRVJfR1JPVVAsIHNlbGYuc2VydmVyX2lkLAogICAgICAgICAgICAgICAgICAgICBzZWxm LmRiX2lkLCB0YWJsZV9pZCkKIApkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRp dG9yL3V0aWxzL21hY3Jvcy5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9t YWNyb3MucHkKaW5kZXggYmRmM2VjOWJkLi43ZTJmODczMWUgMTAwNjQ0Ci0tLSBhL3dlYi9wZ2Fk bWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy9tYWNyb3MucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9v bHMvc3FsZWRpdG9yL3V0aWxzL21hY3Jvcy5weQpAQCAtNzYsNyArNzYsOCBAQCBkZWYgZ2V0X3Vz ZXJfbWFjcm9zKCk6CiAgICAgbWFjcm9zID0gZGIuc2Vzc2lvbi5xdWVyeShVc2VyTWFjcm9zLm5h bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWNyb3MuaWQsCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBNYWNyb3MuYWx0LCBNYWNyb3MuY29udHJvbCwKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIE1hY3Jvcy5rZXksIE1hY3Jvcy5rZXlfY29kZQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgTWFjcm9zLmtleSwgTWFjcm9zLmtleV9jb2RlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlck1hY3Jvcy5zcWwKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICkub3V0ZXJqb2luKAogICAgICAgICBNYWNyb3MsIFVzZXJNYWNyb3Mu bWlkID09IE1hY3Jvcy5pZCkuZmlsdGVyKAogICAgICAgICBVc2VyTWFjcm9zLnVpZCA9PSBjdXJy ZW50X3VzZXIuaWQpLm9yZGVyX2J5KFVzZXJNYWNyb3MubmFtZSkuYWxsKCkKQEAgLTg3LDcgKzg4 LDggQEAgZGVmIGdldF91c2VyX21hY3JvcygpOgogICAgICAgICBrZXlfbGFiZWwgPSAnQ3RybCAr ICcgKyBtWzRdIGlmIG1bM10gaXMgVHJ1ZSBlbHNlICdBbHQgKyAnICsgbVs0XQogICAgICAgICBk YXRhLmFwcGVuZCh7J25hbWUnOiBtWzBdLCAnaWQnOiBtWzFdLCAna2V5JzogbVs0XSwKICAgICAg ICAgICAgICAgICAgICAgICdrZXlfbGFiZWwnOiBrZXlfbGFiZWwsICdhbHQnOiAxIGlmIG1bMl0g ZWxzZSAwLAotICAgICAgICAgICAgICAgICAgICAgJ2NvbnRyb2wnOiAxIGlmIG1bM10gZWxzZSAw LCAna2V5X2NvZGUnOiBtWzVdfSkKKyAgICAgICAgICAgICAgICAgICAgICdjb250cm9sJzogMSBp ZiBtWzNdIGVsc2UgMCwgJ2tleV9jb2RlJzogbVs1XSwKKyAgICAgICAgICAgICAgICAgICAgICdz cWwnOiBtWzZdfSkKIAogICAgIHJldHVybiBkYXRhCiAKQEAgLTEyMSw3ICsxMjMsOCBAQCBkZWYg c2V0X21hY3JvcygpOgogICAgICAgICAgICAgICAgIHJldHVybiBtYWtlX2pzb25fcmVzcG9uc2Uo CiAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz00MTAsIHN1Y2Nlc3M9MCwgZXJyb3Jtc2c9bXNn CiAgICAgICAgICAgICAgICAgKQotICAgIHJldHVybiBhamF4X3Jlc3BvbnNlKHN0YXR1cz0yMDAp CisKKyAgICByZXR1cm4gZ2V0X21hY3JvcyhOb25lLCBUcnVlKQogCiAKIGRlZiBjcmVhdGVfbWFj cm8obWFjcm8pOgpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxz L3F1ZXJ5X2hpc3RvcnkucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvcXVl cnlfaGlzdG9yeS5weQppbmRleCBjZjVlNWYwYjUuLjc0ZDgxNTlkNyAxMDA2NDQKLS0tIGEvd2Vi L3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3F1ZXJ5X2hpc3RvcnkucHkKKysrIGIvd2Vi L3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3F1ZXJ5X2hpc3RvcnkucHkKQEAgLTEsNyAr MSw3IEBACiBmcm9tIHBnYWRtaW4udXRpbHMuYWpheCBpbXBvcnQgbWFrZV9qc29uX3Jlc3BvbnNl CiBmcm9tIHBnYWRtaW4ubW9kZWwgaW1wb3J0IGRiLCBRdWVyeUhpc3RvcnlNb2RlbAogZnJvbSBj b25maWcgaW1wb3J0IE1BWF9RVUVSWV9ISVNUX1NUT1JFRAotCitpbXBvcnQganNvbgogCiBjbGFz cyBRdWVyeUhpc3Rvcnk6CiAgICAgQHN0YXRpY21ldGhvZApAQCAtMTA3LDMwICsxMDcsMzQgQEAg Y2xhc3MgUXVlcnlIaXN0b3J5OgogICAgICAgICApCiAKICAgICBAc3RhdGljbWV0aG9kCi0gICAg ZGVmIGNsZWFyX2hpc3RvcnkodWlkLCBzaWQsIGRibmFtZT1Ob25lKToKKyAgICBkZWYgY2xlYXJf aGlzdG9yeSh1aWQsIHNpZCwgZGJuYW1lPU5vbmUsIGZpbHRlcj1Ob25lKToKICAgICAgICAgdHJ5 OgorICAgICAgICAgICAgZmlsdGVycyA9IFsKKyAgICAgICAgICAgICAgICBRdWVyeUhpc3RvcnlN b2RlbC51aWQgPT0gdWlkLAorICAgICAgICAgICAgICAgIFF1ZXJ5SGlzdG9yeU1vZGVsLnNpZCA9 PSBzaWQKKyAgICAgICAgICAgIF0KICAgICAgICAgICAgIGlmIGRibmFtZSBpcyBub3QgTm9uZToK LSAgICAgICAgICAgICAgICBkYi5zZXNzaW9uLnF1ZXJ5KFF1ZXJ5SGlzdG9yeU1vZGVsKSBcCi0g ICAgICAgICAgICAgICAgICAgIC5maWx0ZXIoUXVlcnlIaXN0b3J5TW9kZWwudWlkID09IHVpZCwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBRdWVyeUhpc3RvcnlNb2RlbC5zaWQgPT0gc2lk LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFF1ZXJ5SGlzdG9yeU1vZGVsLmRibmFtZSA9 PSBkYm5hbWUpIFwKLSAgICAgICAgICAgICAgICAgICAgLmRlbGV0ZSgpCi0KLSAgICAgICAgICAg ICAgICBkYi5zZXNzaW9uLmNvbW1pdCgpCisgICAgICAgICAgICAgICAgZmlsdGVycy5hcHBlbmQo UXVlcnlIaXN0b3J5TW9kZWwuZGJuYW1lID09IGRibmFtZSkKKworICAgICAgICAgICAgaGlzdG9y eSA9IGRiLnNlc3Npb24ucXVlcnkoUXVlcnlIaXN0b3J5TW9kZWwpIFwKKyAgICAgICAgICAgICAg ICAuZmlsdGVyKCpmaWx0ZXJzKQorICAgICAgICAgICAgaWYgZmlsdGVyIGlzIG5vdCBOb25lOgor ICAgICAgICAgICAgICAgIGZvciByb3cgaW4gaGlzdG9yeToKKyAgICAgICAgICAgICAgICAgICAg cXVlcnlfaW5mbyA9IGpzb24ubG9hZHMocm93LnF1ZXJ5X2luZm8uZGVjb2RlKCkpCisgICAgICAg ICAgICAgICAgICAgIGlmIHF1ZXJ5X2luZm9bJ3F1ZXJ5J10gPT0gZmlsdGVyWydxdWVyeSddIGFu ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICBxdWVyeV9pbmZvWydzdGFydF90aW1lJ10gPT0g ZmlsdGVyWydzdGFydF90aW1lJ106CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGIuc2Vz c2lvbi5kZWxldGUocm93KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkYi5z ZXNzaW9uLnF1ZXJ5KFF1ZXJ5SGlzdG9yeU1vZGVsKSBcCi0gICAgICAgICAgICAgICAgICAgIC5m aWx0ZXIoUXVlcnlIaXN0b3J5TW9kZWwudWlkID09IHVpZCwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBRdWVyeUhpc3RvcnlNb2RlbC5zaWQgPT0gc2lkKVwKLSAgICAgICAgICAgICAgICAg ICAgLmRlbGV0ZSgpCisgICAgICAgICAgICAgICAgaGlzdG9yeS5kZWxldGUoKQogCi0gICAgICAg ICAgICAgICAgZGIuc2Vzc2lvbi5jb21taXQoKQorICAgICAgICAgICAgZGIuc2Vzc2lvbi5jb21t aXQoKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgZGIuc2Vzc2lvbi5y b2xsYmFjaygpCiAgICAgICAgICAgICAjIGRvIG5vdCBhZmZlY3QgcXVlcnkgZXhlY3V0aW9uIGlm IGhpc3RvcnkgY2xlYXIgZmFpbHMKIAogICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgY2xlYXIo dWlkLCBzaWQsIGRibmFtZT1Ob25lKToKLSAgICAgICAgUXVlcnlIaXN0b3J5LmNsZWFyX2hpc3Rv cnkodWlkLCBzaWQsIGRibmFtZSkKKyAgICBkZWYgY2xlYXIodWlkLCBzaWQsIGRibmFtZT1Ob25l LCBmaWx0ZXI9Tm9uZSk6CisgICAgICAgIFF1ZXJ5SGlzdG9yeS5jbGVhcl9oaXN0b3J5KHVpZCwg c2lkLCBkYm5hbWUsIGZpbHRlcikKICAgICAgICAgcmV0dXJuIG1ha2VfanNvbl9yZXNwb25zZSgK ICAgICAgICAgICAgIGRhdGE9ewogICAgICAgICAgICAgICAgICdzdGF0dXMnOiBUcnVlLApkaWZm IC0tZ2l0IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3F1ZXJ5X3Rvb2xfcHJl ZmVyZW5jZXMucHkgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvcXVlcnlfdG9v bF9wcmVmZXJlbmNlcy5weQppbmRleCA0NmEzMjZkYTEuLmZjN2FjOWQyYSAxMDA2NDQKLS0tIGEv d2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3F1ZXJ5X3Rvb2xfcHJlZmVyZW5jZXMu cHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3F1ZXJ5X3Rvb2xfcHJl ZmVyZW5jZXMucHkKQEAgLTE4LDIyICsxOCw2IEBAIGZyb20gcGdhZG1pbi51dGlscyBpbXBvcnQg U0hPUlRDVVRfRklFTERTIGFzIHNob3J0Y3V0X2ZpZWxkcywgXAogCiAKIGRlZiByZWdpc3Rlcl9x dWVyeV90b29sX3ByZWZlcmVuY2VzKHNlbGYpOgotCi0gICAgc2VsZi5pbmZvX25vdGlmaWVyX3Rp bWVvdXQgPSBzZWxmLnByZWZlcmVuY2UucmVnaXN0ZXIoCi0gICAgICAgICdkaXNwbGF5JywgJ2lu Zm9fbm90aWZpZXJfdGltZW91dCcsCi0gICAgICAgIGdldHRleHQoIlF1ZXJ5IGluZm8gbm90aWZp ZXIgdGltZW91dCIpLCAnaW50ZWdlcicsIDUsCi0gICAgICAgIGNhdGVnb3J5X2xhYmVsPVBSRUZf TEFCRUxfRElTUExBWSwKLSAgICAgICAgbWluX3ZhbD0tMSwKLSAgICAgICAgbWF4X3ZhbD05OTk5 OTksCi0gICAgICAgIGhlbHBfc3RyPWdldHRleHQoCi0gICAgICAgICAgICAnVGhlIGxlbmd0aCBv ZiB0aW1lIHRvIGRpc3BsYXkgdGhlIHF1ZXJ5IGluZm8gbm90aWZpZXIgYWZ0ZXIgJwotICAgICAg ICAgICAgJ2V4ZWN1dGlvbiBoYXMgY29tcGxldGVkLiBBIHZhbHVlIG9mIC0xIGRpc2FibGVzIHRo ZSBub3RpZmllcicKLSAgICAgICAgICAgICcgYW5kIGEgdmFsdWUgb2YgMCBkaXNwbGF5cyBpdCB1 bnRpbCBjbGlja2VkLiBWYWx1ZXMgZ3JlYXRlcicKLSAgICAgICAgICAgICcgdGhhbiAwIGRpc3Bs YXkgdGhlIG5vdGlmaWVyIGZvciB0aGUgbnVtYmVyIG9mIHNlY29uZHMnCi0gICAgICAgICAgICAn IHNwZWNpZmllZC4nCi0gICAgICAgICkKLSAgICApCi0KICAgICBzZWxmLmV4cGxhaW5fdmVyYm9z ZSA9IHNlbGYucHJlZmVyZW5jZS5yZWdpc3RlcigKICAgICAgICAgJ0V4cGxhaW4nLCAnZXhwbGFp bl92ZXJib3NlJywKICAgICAgICAgZ2V0dGV4dCgiVmVyYm9zZSBvdXRwdXQ/IiksICdib29sZWFu JywgRmFsc2UsCkBAIC0xMjgsNyArMTEyLDcgQEAgZGVmIHJlZ2lzdGVyX3F1ZXJ5X3Rvb2xfcHJl ZmVyZW5jZXMoc2VsZik6CiAgICAgICAgICkKICAgICApCiAKLSAgICBzZWxmLnNob3dfcHJvbXB0 X2NvbW1pdF90cmFuc2FjdGlvbiA9IHNlbGYucHJlZmVyZW5jZS5yZWdpc3RlcigKKyAgICBzZWxm LmNvcHlfc3FsX3RvX3F1ZXJ5X3Rvb2wgPSBzZWxmLnByZWZlcmVuY2UucmVnaXN0ZXIoCiAgICAg ICAgICdPcHRpb25zJywgJ2NvcHlfc3FsX3RvX3F1ZXJ5X3Rvb2wnLAogICAgICAgICBnZXR0ZXh0 KCJDb3B5IFNRTCBmcm9tIG1haW4gd2luZG93IHRvIHF1ZXJ5IHRvb2w/IiksICdib29sZWFuJywK ICAgICAgICAgRmFsc2UsCmRpZmYgLS1naXQgYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3Iv dXRpbHMvc3RhcnRfcnVubmluZ19xdWVyeS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRv ci91dGlscy9zdGFydF9ydW5uaW5nX3F1ZXJ5LnB5CmluZGV4IDg3NmMxZThkNS4uYjJhMDAxMjM2 IDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvc3RhcnRfcnVu bmluZ19xdWVyeS5weQorKysgYi93ZWIvcGdhZG1pbi90b29scy9zcWxlZGl0b3IvdXRpbHMvc3Rh cnRfcnVubmluZ19xdWVyeS5weQpAQCAtMTA3LDggKzEwNyw2IEBAIGNsYXNzIFN0YXJ0UnVubmlu Z1F1ZXJ5OgogICAgICAgICAgICAgZGF0YT17CiAgICAgICAgICAgICAgICAgJ3N0YXR1cyc6IHN0 YXR1cywgJ3Jlc3VsdCc6IHJlc3VsdCwKICAgICAgICAgICAgICAgICAnY2FuX2VkaXQnOiBjYW5f ZWRpdCwgJ2Nhbl9maWx0ZXInOiBjYW5fZmlsdGVyLAotICAgICAgICAgICAgICAgICdpbmZvX25v dGlmaWVyX3RpbWVvdXQnOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmJsdWVwcmludF9vYmpl Y3QuaW5mb19ub3RpZmllcl90aW1lb3V0LmdldCgpICogMTAwMCwKICAgICAgICAgICAgICAgICAn bm90aWZpZXMnOiBub3RpZmllcywKICAgICAgICAgICAgICAgICAndHJhbnNhY3Rpb25fc3RhdHVz JzogdHJhbnNfc3RhdHVzLAogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvd2ViL3BnYWRtaW4v dG9vbHMvc3FsZWRpdG9yL3V0aWxzL3Rlc3RzL3Rlc3RfaXNfcXVlcnlfcmVzdWx0c2V0X3VwZGF0 YWJsZS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy90ZXN0cy90ZXN0X2lz X3F1ZXJ5X3Jlc3VsdHNldF91cGRhdGFibGUucHkKaW5kZXggYzY4NDBkZjYzLi45ODM5NDcyZWMg MTAwNjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy90ZXN0cy90ZXN0 X2lzX3F1ZXJ5X3Jlc3VsdHNldF91cGRhdGFibGUucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMv c3FsZWRpdG9yL3V0aWxzL3Rlc3RzL3Rlc3RfaXNfcXVlcnlfcmVzdWx0c2V0X3VwZGF0YWJsZS5w eQpAQCAtMjAzLDcgKzIwMyw3IEBAIGNsYXNzIFRlc3RRdWVyeVVwZGF0YWJsZVJlc3VsdHNldChC YXNlVGVzdEdlbmVyYXRvcik6CiAKICAgICBkZWYgX2luaXRpYWxpemVfcXVlcnlfdG9vbChzZWxm KToKICAgICAgICAgc2VsZi50cmFuc19pZCA9IHN0cihyYW5kb20ucmFuZGludCgxLCA5OTk5OTk5 KSkKLSAgICAgICAgdXJsID0gJy9kYXRhZ3JpZC9pbml0aWFsaXplL3F1ZXJ5X3Rvb2wvezB9L3sx fS97Mn0vezN9Jy5mb3JtYXQoCisgICAgICAgIHVybCA9ICcvc3FsZWRpdG9yL2luaXRpYWxpemUv c3FsZWRpdG9yL3swfS97MX0vezJ9L3szfScuZm9ybWF0KAogICAgICAgICAgICAgc2VsZi50cmFu c19pZCwgdXRpbHMuU0VSVkVSX0dST1VQLCBzZWxmLnNlcnZlcl9pZCwgc2VsZi5kYl9pZCkKICAg ICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KHVybCkKICAgICAgICAgc2VsZi5hc3Nl cnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQpAQCAtMjM1LDcgKzIzNSw3IEBAIGNs YXNzIFRlc3RRdWVyeVVwZGF0YWJsZVJlc3VsdHNldChCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAg ICAgIHV0aWxzLmNyZWF0ZV90YWJsZV93aXRoX3F1ZXJ5KHNlbGYuc2VydmVyLCBzZWxmLmRiX25h bWUsIGNyZWF0ZV9zcWwpCiAKICAgICBkZWYgX2Nsb3NlX3F1ZXJ5X3Rvb2woc2VsZik6Ci0gICAg ICAgIHVybCA9ICcvZGF0YWdyaWQvY2xvc2UvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkKKyAg ICAgICAgdXJsID0gJy9zcWxlZGl0b3IvY2xvc2UvezB9Jy5mb3JtYXQoc2VsZi50cmFuc19pZCkK ICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5kZWxldGUodXJsKQogICAgICAgICBzZWxm LmFzc2VydEVxdWFsKHJlc3BvbnNlLnN0YXR1c19jb2RlLCAyMDApCiAKZGlmZiAtLWdpdCBhL3dl Yi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy90ZXN0cy90ZXN0X3NhdmVfY2hhbmdlZF9k YXRhLnB5IGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3Rlc3RzL3Rlc3Rfc2F2 ZV9jaGFuZ2VkX2RhdGEucHkKaW5kZXggMGJlZjliOTQ3Li4xYjg4OGQyODUgMTAwNjQ0Ci0tLSBh L3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy90ZXN0cy90ZXN0X3NhdmVfY2hhbmdl ZF9kYXRhLnB5CisrKyBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy90ZXN0cy90 ZXN0X3NhdmVfY2hhbmdlZF9kYXRhLnB5CkBAIC05MjEsNyArOTIxLDcgQEAgY2xhc3MgVGVzdFNh dmVDaGFuZ2VkRGF0YShCYXNlVGVzdEdlbmVyYXRvcik6CiAKICAgICBkZWYgX2luaXRpYWxpemVf cXVlcnlfdG9vbChzZWxmKToKICAgICAgICAgc2VsZi50cmFuc19pZCA9IHN0cihyYW5kb20ucmFu ZGludCgxLCA5OTk5OTk5KSkKLSAgICAgICAgdXJsID0gJy9kYXRhZ3JpZC9pbml0aWFsaXplL3F1 ZXJ5X3Rvb2wvezB9L3sxfS97Mn0vezN9Jy5mb3JtYXQoCisgICAgICAgIHVybCA9ICcvc3FsZWRp dG9yL2luaXRpYWxpemUvc3FsZWRpdG9yL3swfS97MX0vezJ9L3szfScuZm9ybWF0KAogICAgICAg ICAgICAgc2VsZi50cmFuc19pZCwgdXRpbHMuU0VSVkVSX0dST1VQLCBzZWxmLnNlcnZlcl9pZCwg c2VsZi5kYl9pZCkKICAgICAgICAgcmVzcG9uc2UgPSBzZWxmLnRlc3Rlci5wb3N0KHVybCkKICAg ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQpAQCAtOTU1 LDYgKzk1NSw2IEBAIGNsYXNzIFRlc3RTYXZlQ2hhbmdlZERhdGEoQmFzZVRlc3RHZW5lcmF0b3Ip OgogICAgICAgICB1dGlscy5jcmVhdGVfdGFibGVfd2l0aF9xdWVyeShzZWxmLnNlcnZlciwgc2Vs Zi5kYl9uYW1lLCBjcmVhdGVfc3FsKQogCiAgICAgZGVmIF9jbG9zZV9xdWVyeV90b29sKHNlbGYp OgotICAgICAgICB1cmwgPSAnL2RhdGFncmlkL2Nsb3NlL3swfScuZm9ybWF0KHNlbGYudHJhbnNf aWQpCisgICAgICAgIHVybCA9ICcvc3FsZWRpdG9yL2Nsb3NlL3swfScuZm9ybWF0KHNlbGYudHJh bnNfaWQpCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50ZXN0ZXIuZGVsZXRlKHVybCkKICAgICAg ICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZS5zdGF0dXNfY29kZSwgMjAwKQpkaWZmIC0tZ2l0 IGEvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0aWxzL3Rlc3RzL3Rlc3Rfc3RhcnRfcnVu bmluZ19xdWVyeS5weSBiL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy90ZXN0cy90 ZXN0X3N0YXJ0X3J1bm5pbmdfcXVlcnkucHkKaW5kZXggOWM4ZTBlNDcwLi5jODg0ZjNmMTAgMTAw NjQ0Ci0tLSBhL3dlYi9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci91dGlscy90ZXN0cy90ZXN0X3N0 YXJ0X3J1bm5pbmdfcXVlcnkucHkKKysrIGIvd2ViL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3V0 aWxzL3Rlc3RzL3Rlc3Rfc3RhcnRfcnVubmluZ19xdWVyeS5weQpAQCAtMTEyLDcgKzExMiw2IEBA IGNsYXNzIFN0YXJ0UnVubmluZ1F1ZXJ5VGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJ25vdCBmb3VuZC4nLAogICAgICAgICAgICAgICAgICAgICAg Y2FuX2VkaXQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICBjYW5fZmlsdGVyPUZhbHNlLAot ICAgICAgICAgICAgICAgICAgICAgaW5mb19ub3RpZmllcl90aW1lb3V0PTUwMDAsCiAgICAgICAg ICAgICAgICAgICAgICBub3RpZmllcz1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgdHJhbnNh Y3Rpb25fc3RhdHVzPU5vbmUKICAgICAgICAgICAgICAgICAgKQpAQCAtMjczLDcgKzI3Miw2IEBA IGNsYXNzIFN0YXJ0UnVubmluZ1F1ZXJ5VGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAg ICAgICAgICAgICAgICByZXN1bHQ9J2FzeW5jIGZ1bmN0aW9uIHJlc3VsdCBvdXRwdXQnLAogICAg ICAgICAgICAgICAgICAgICAgY2FuX2VkaXQ9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgIGNh bl9maWx0ZXI9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgIGluZm9fbm90aWZpZXJfdGltZW91 dD01MDAwLAogICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXM9Tm9uZSwKICAgICAgICAgICAg ICAgICAgICAgIHRyYW5zYWN0aW9uX3N0YXR1cz1Ob25lCiAgICAgICAgICAgICAgICAgICkKQEAg LTMxOCw3ICszMTYsNiBAQCBjbGFzcyBTdGFydFJ1bm5pbmdRdWVyeVRlc3QoQmFzZVRlc3RHZW5l cmF0b3IpOgogICAgICAgICAgICAgICAgICAgICAgcmVzdWx0PSdhc3luYyBmdW5jdGlvbiByZXN1 bHQgb3V0cHV0JywKICAgICAgICAgICAgICAgICAgICAgIGNhbl9lZGl0PVRydWUsCiAgICAgICAg ICAgICAgICAgICAgICBjYW5fZmlsdGVyPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICBpbmZv X25vdGlmaWVyX3RpbWVvdXQ9NTAwMCwKICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVzPU5v bmUsCiAgICAgICAgICAgICAgICAgICAgICB0cmFuc2FjdGlvbl9zdGF0dXM9Tm9uZQogICAgICAg ICAgICAgICAgICApCkBAIC0zNjMsNyArMzYwLDYgQEAgY2xhc3MgU3RhcnRSdW5uaW5nUXVlcnlU ZXN0KEJhc2VUZXN0R2VuZXJhdG9yKToKICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdD0nYXN5 bmMgZnVuY3Rpb24gcmVzdWx0IG91dHB1dCcsCiAgICAgICAgICAgICAgICAgICAgICBjYW5fZWRp dD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgY2FuX2ZpbHRlcj1UcnVlLAotICAgICAgICAg ICAgICAgICAgICAgaW5mb19ub3RpZmllcl90aW1lb3V0PTUwMDAsCiAgICAgICAgICAgICAgICAg ICAgICBub3RpZmllcz1Ob25lLAogICAgICAgICAgICAgICAgICAgICAgdHJhbnNhY3Rpb25fc3Rh dHVzPU5vbmUKICAgICAgICAgICAgICAgICAgKQpAQCAtNDA5LDcgKzQwNSw2IEBAIGNsYXNzIFN0 YXJ0UnVubmluZ1F1ZXJ5VGVzdChCYXNlVGVzdEdlbmVyYXRvcik6CiAgICAgICAgICAgICAgICAg ICAgICByZXN1bHQ9J2FzeW5jIGZ1bmN0aW9uIHJlc3VsdCBvdXRwdXQnLAogICAgICAgICAgICAg ICAgICAgICAgY2FuX2VkaXQ9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgIGNhbl9maWx0ZXI9 VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgIGluZm9fbm90aWZpZXJfdGltZW91dD01MDAwLAog ICAgICAgICAgICAgICAgICAgICAgbm90aWZpZXM9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAg IHRyYW5zYWN0aW9uX3N0YXR1cz1Ob25lCiAgICAgICAgICAgICAgICAgICkKQEAgLTQ0NCw4ICs0 MzksNyBAQCBjbGFzcyBTdGFydFJ1bm5pbmdRdWVyeVRlc3QoQmFzZVRlc3RHZW5lcmF0b3IpOgog ICAgICAgICBpZiBzZWxmLmV4cGVjdF9pbnRlcm5hbF9zZXJ2ZXJfZXJyb3JfY2FsbGVkX3dpdGgg aXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpbnRlcm5hbF9zZXJ2ZXJfZXJyb3JfbW9jay5yZXR1 cm5fdmFsdWUgPSBleHBlY3RlZF9yZXNwb25zZQogICAgICAgICBwaWNrbGVfbW9jay5sb2Fkcy5y ZXR1cm5fdmFsdWUgPSBzZWxmLnBpY2tsZV9sb2FkX3JldHVybgotICAgICAgICBibHVlcHJpbnRf bW9jayA9IE1hZ2ljTW9jaygKLSAgICAgICAgICAgIGluZm9fbm90aWZpZXJfdGltZW91dD1NYWdp Y01vY2soZ2V0PWxhbWJkYTogNSkpCisgICAgICAgIGJsdWVwcmludF9tb2NrID0gTWFnaWNNb2Nr KCkKIAogICAgICAgICAjIFNhdmUgdmFsdWUgZm9yIHRoZSBsYXRlciB1c2UKICAgICAgICAgc2Vs Zi5pc19iZWdpbl9yZXF1aXJlZF9mb3Jfc3FsX3F1ZXJ5ID0gXApkaWZmIC0tZ2l0IGEvd2ViL3Bn YWRtaW4vdXRpbHMvY29uc3RhbnRzLnB5IGIvd2ViL3BnYWRtaW4vdXRpbHMvY29uc3RhbnRzLnB5 CmluZGV4IDk4NzMzNzFkMi4uMzVhNWVkNTFkIDEwMDY0NAotLS0gYS93ZWIvcGdhZG1pbi91dGls cy9jb25zdGFudHMucHkKKysrIGIvd2ViL3BnYWRtaW4vdXRpbHMvY29uc3RhbnRzLnB5CkBAIC0z NCw2ICszNCw3IEBAIFNFUlZFUl9DT05ORUNUSU9OX0NMT1NFRCA9IGdldHRleHQoCiAKICMgUXVl cnkgdG9vbCBwbGFjZWhvbGRlcgogUVRfREVGQVVMVF9QTEFDRUhPTERFUiA9ICclREFUQUJBU0Ul LyVVU0VSTkFNRSVAJVNFUlZFUiUnCitWV19FRFRfREVGQVVMVF9QTEFDRUhPTERFUiA9ICclU0NI RU1BJS4lVEFCTEUlLyVEQVRBQkFTRSUvJVVTRVJOQU1FJUAlU0VSVkVSJScKIAogIyBEYXRhIFR5 cGVzCiBEQVRBVFlQRV9USU1FX1dJVEhfVElNRVpPTkUgPSAndGltZSB3aXRoIHRpbWUgem9uZScK ZGlmZiAtLWdpdCBhL3dlYi9wZ2FkbWluL3V0aWxzL2NzcmYucHkgYi93ZWIvcGdhZG1pbi91dGls cy9jc3JmLnB5CmluZGV4IGY4OGNiZjU4ZS4uN2FkMTRlZWJlIDEwMDY0NAotLS0gYS93ZWIvcGdh ZG1pbi91dGlscy9jc3JmLnB5CisrKyBiL3dlYi9wZ2FkbWluL3V0aWxzL2NzcmYucHkKQEAgLTMx LDggKzMxLDkgQEAgY2xhc3MgX1BHQ1NSRlByb3RlY3QoQ1NSRlByb3RlY3QpOgogICAgICAgICAg ICAgJ3BnYWRtaW4udG9vbHMudHJhbnNsYXRpb25zJywKICAgICAgICAgICAgIGFwcC5ibHVlcHJp bnRzWydyZWRpcmVjdHMnXSwKICAgICAgICAgICAgICdwZ2FkbWluLmJyb3dzZXIuc2VydmVyX2dy b3Vwcy5zZXJ2ZXJzLnN1cHBvcnRlZF9zZXJ2ZXJzLWpzJywKLSAgICAgICAgICAgICdwZ2FkbWlu LnRvb2xzLmRhdGFncmlkLmluaXRpYWxpemVfcXVlcnlfdG9vbCcsCisgICAgICAgICAgICAncGdh ZG1pbi50b29scy5zcWxlZGl0b3IuaW5pdGlhbGl6ZV9zcWxlZGl0b3InLAogICAgICAgICAgICAg J3BnYWRtaW4udG9vbHMuZGF0YWdyaWQucGFuZWwnLAorICAgICAgICAgICAgJ3BnYWRtaW4udG9v bHMuc3FsZWRpdG9yLnBhbmVsJywKICAgICAgICAgICAgICdwZ2FkbWluLnRvb2xzLmRlYnVnZ2Vy LmluaXRpYWxpemVfdGFyZ2V0JywKICAgICAgICAgICAgICdwZ2FkbWluLnRvb2xzLmRlYnVnZ2Vy LmRpcmVjdF9uZXcnLAogICAgICAgICAgICAgJ3BnYWRtaW4udG9vbHMuc2NoZW1hX2RpZmYucGFu ZWwnLApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9jb21wb25lbnRzL0Nv ZGVNaXJyb3Iuc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvY29tcG9uZW50cy9D b2RlTWlycm9yLnNwZWMuanMKaW5kZXggN2U4ZDhmMjQ4Li42Y2VjNzE1ZDQgMTAwNjQ0Ci0tLSBh L3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvY29tcG9uZW50cy9Db2RlTWlycm9yLnNwZWMuanMK KysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9jb21wb25lbnRzL0NvZGVNaXJyb3Iuc3Bl Yy5qcwpAQCAtNTIsOSArNTIsMzMgQEAgZGVzY3JpYmUoJ0NvZGVNaXJyb3InLCAoKT0+ewogICAg ICAgJ3NldFNlbGVjdGlvbic6ICgpPT57LypUaGlzIGlzIGludGVudGlvbmFsIChTb25hclF1YmUp Ki99LAogICAgICAgJ3Njcm9sbEludG9WaWV3JzogKCk9PnsvKlRoaXMgaXMgaW50ZW50aW9uYWwg KFNvbmFyUXViZSkqL30sCiAgICAgICAnZ2V0V3JhcHBlckVsZW1lbnQnOiBkb2N1bWVudC5jcmVh dGVFbGVtZW50KCdkaXYnKSwKKyAgICAgICdvbic6ICgpPT57LypUaGlzIGlzIGludGVudGlvbmFs IChTb25hclF1YmUpKi99LAogICAgIH0pOwogICBiZWZvcmVFYWNoKCgpPT57CiAgICAgamFzbWlu ZUVuenltZSgpOworICAgIHdpbmRvdy5wZ0FkbWluID0geworICAgICAgQnJvd3NlcjogeworICAg ICAgICBFdmVudHM6IHsKKyAgICAgICAgICBvbjogamFzbWluZS5jcmVhdGVTcHkoJ29uJyksCisg ICAgICAgIH0sCisgICAgICAgIGdldF9wcmVmZXJlbmNlc19mb3JfbW9kdWxlOiAoKT0+KHt9KSwK KyAgICAgICAgZG9ja2VyOiB7CisgICAgICAgICAgZmluZFBhbmVsczogZnVuY3Rpb24oKSB7Cisg ICAgICAgICAgICByZXR1cm4gWworICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaXNW aXNpYmxlOiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAg ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICBdOworICAgICAg ICAgIH0sCisgICAgICAgIH0sCisgICAgICAgIG9uUHJlZmVyZW5jZXNDaGFuZ2U6ICgpPT57LypU aGlzIGlzIGludGVudGlvbmFsIChTb25hclF1YmUpKi99LAorICAgICAgICB1dGlsczogeworICAg ICAgICAgIGFwcF92ZXJzaW9uX2ludDogMTIzNCwKKyAgICAgICAgfSwKKyAgICAgIH0sCisgICAg fTsKICAgICBzcHlPbihPcmlnQ29kZU1pcnJvciwgJ2Zyb21UZXh0QXJlYScpLmFuZC5yZXR1cm5W YWx1ZShjbU9iaik7CiAgICAgY29uc3QgVGhlbWVkQ00gPSB3aXRoVGhlbWUoQ29kZU1pcnJvcik7 CiAgICAgY21JbnN0YW5jZSA9IG1vdW50KApAQCAtNjUsNiArODksMTAgQEAgZGVzY3JpYmUoJ0Nv ZGVNaXJyb3InLCAoKT0+ewogICAgICAgLz4pOwogICB9KTsKIAorICBhZnRlckVhY2goKCk9PnsK KyAgICB3aW5kb3cucGdBZG1pbiA9IHVuZGVmaW5lZDsKKyAgfSk7CisKICAgaXQoJ2luaXQnLCAo KT0+ewogICAgIC8qIHRleHRhcmVhIHJlZiBwYXNzZWQgdG8gZnJvbVRleHRBcmVhICovCiAgICAg ZXhwZWN0KE9yaWdDb2RlTWlycm9yLmZyb21UZXh0QXJlYSkudG9IYXZlQmVlbkNhbGxlZFdpdGgo Y21JbnN0YW5jZS5maW5kKCd0ZXh0YXJlYScpLmdldERPTU5vZGUoKSwgamFzbWluZS5vYmplY3RD b250YWluaW5nKG9wdGlvbnMpKTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvY29tcG9uZW50cy9TaG9ydGN1dFRpdGxlLnNwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZh c2NyaXB0L2NvbXBvbmVudHMvU2hvcnRjdXRUaXRsZS5zcGVjLmpzCmluZGV4IGE4OGY5ZDdhZC4u MTUwOGJiYTA3IDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2NvbXBvbmVu dHMvU2hvcnRjdXRUaXRsZS5zcGVjLmpzCisrKyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv Y29tcG9uZW50cy9TaG9ydGN1dFRpdGxlLnNwZWMuanMKQEAgLTU3LDcgKzU3LDYgQEAgZGVzY3Jp YmUoJ1Nob3J0Y3V0VGl0bGUnLCAoKT0+ewogICB9KTsKIAogICBkZXNjcmliZSgnc2hvcnRjdXRU b1N0cmluZycsICgpPT57Ci0KICAgICBpdCgnc2hvcnRjdXQnLCAoKT0+ewogICAgICAgc3B5T24o a2V5U2hvcnQsICdpc01hYycpLmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7CiAgICAgICBleHBlY3Qo c2hvcnRjdXRUb1N0cmluZyhzaG9ydGN1dCkpLnRvQmUoJ0N0cmwgKyBTaGlmdCArIEsnKTsKQEAg LTY5LDYgKzY4LDcgQEAgZGVzY3JpYmUoJ1Nob3J0Y3V0VGl0bGUnLCAoKT0+ewogICAgIH0pOwog CiAgICAgaXQoJ2FjY2Vzc2tleScsICgpPT57CisgICAgICBzcHlPblByb3BlcnR5KHdpbmRvdy5u YXZpZ2F0b3IsICd1c2VyQWdlbnQnKS5hbmQucmV0dXJuVmFsdWUoJ1Vua25vd24nKTsKICAgICAg IGV4cGVjdChzaG9ydGN1dFRvU3RyaW5nKG51bGwsICdBJykpLnRvRXF1YWwoJ0FjY2Vzc2tleSAr IEEnKTsKICAgICB9KTsKIApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9k YXRhZ3JpZC9nZXRfcGFuZWxfdGl0bGVfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3Jp cHQvZGF0YWdyaWQvZ2V0X3BhbmVsX3RpdGxlX3NwZWMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDEyMzBlYjM5NC4uMDAwMDAwMDAwCi0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFz Y3JpcHQvZGF0YWdyaWQvZ2V0X3BhbmVsX3RpdGxlX3NwZWMuanMKKysrIC9kZXYvbnVsbApAQCAt MSw5NCArMCwwIEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwot Ly8KLS8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50 IFRlYW0KLS8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwg TGljZW5jZQotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCi0KLWltcG9ydCB7Z2V0UGFuZWxUaXRsZX0gZnJvbSAnLi4vLi4v Li4vcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWRfcGFuZWxfdGl0bGUn OwotaW1wb3J0IHtUcmVlRmFrZX0gZnJvbSAnLi4vdHJlZS90cmVlX2Zha2UnOwotaW1wb3J0IHtU cmVlTm9kZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvdHJlZS90cmVlX25vZGVz JzsKLWltcG9ydCB7cGdCcm93c2VyfSBmcm9tICdwZ2FkbWluLmJyb3dzZXIucHJlZmVyZW5jZXMn OwotCi1jb25zdCBjb250ZXh0ID0gZGVzY3JpYmU7Ci0KLXZhciBkdW1teV9jYWNoZSA9IFsKLSAg ewotICAgIGlkOiAxLAotICAgIG1pZDogMSwKLSAgICBtb2R1bGU6J2Jyb3dzZXInLAotICAgIG5h bWU6J3F0X3RhYl90aXRsZV9wbGFjZWhvbGRlcicsCi0gICAgdmFsdWU6ICclREFUQUJBU0UlLyVV U0VSTkFNRSVAJVNFUlZFUiUnLAotICB9LAotXTsKLQotZGVzY3JpYmUoJyNnZXRQYW5lbFRpdGxl JywgKCkgPT4gewotICBsZXQgdHJlZTsKLSAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgcGdCcm93 c2VyLnByZWZlcmVuY2VzX2NhY2hlID0gZHVtbXlfY2FjaGU7Ci0gICAgcGdCcm93c2VyLk5vZGVz ID0gewotICAgICAgc2VydmVyOiB7Ci0gICAgICAgIGhhc0lkOiB0cnVlLAotICAgICAgICBfdHlw ZTogJ3NlcnZlcicsCi0gICAgICB9LAotICAgICAgZGF0YWJhc2U6IHsKLSAgICAgICAgaGFzSWQ6 IHRydWUsCi0gICAgICAgIF90eXBlOiAnZGF0YWJhc2UnLAotICAgICAgfSwKLSAgICB9OwotICAg IHBnQnJvd3Nlci5wcmVmZXJlbmNlcyA9IHsKLSAgICAgICdxdF90YWJfdGl0bGVfcGxhY2Vob2xk ZXInOiAnJywKLSAgICB9OwotICAgIHRyZWUgPSBuZXcgVHJlZUZha2UocGdCcm93c2VyKTsKLSAg ICBwZ0Jyb3dzZXIudHJlZSA9IHRyZWU7Ci0gIH0pOwotCi0gIGNvbnRleHQoJ3NlbGVjdGVkIG5v ZGUgZG9lcyBub3QgYmVsb25nIHRvIGEgc2VydmVyJywgKCkgPT4gewotICAgIGl0KCdyZXR1cm5z IHVuZGVmaW5lZCcsICgpID0+IHsKLSAgICAgIGNvbnN0IHJvb3QgPSB0cmVlLmFkZE5ld05vZGUo J2xldmVsMScsIHtfdHlwZTogJ3NlcnZlcl9ncm91cHMnfSk7Ci0gICAgICB0cmVlLmFkZENoaWxk KHJvb3QsIG5ldyBUcmVlTm9kZSgnbGV2ZWwxLjEnLCB7X3R5cGU6ICdvdGhlcid9KSk7Ci0gICAg ICB0cmVlLnNlbGVjdE5vZGUoW3tpZDogJ2xldmVsMSd9XSk7Ci0gICAgICBleHBlY3QoZ2V0UGFu ZWxUaXRsZShwZ0Jyb3dzZXIpKS50b0JlVW5kZWZpbmVkKCk7Ci0gICAgfSk7Ci0gIH0pOwotCi0g IGNvbnRleHQoJ3NlbGVjdGVkIG5vZGUgYmVsb25nIHRvIGEgc2VydmVyJywgKCkgPT4gewotICAg IGNvbnRleHQoJ3NlbGVjdGVkIG5vZGUgZG9lcyBub3QgYmVsb25nIHRvIGEgZGF0YWJhc2UnLCAo KSA9PiB7Ci0gICAgICBpdCgncmV0dXJucyB0aGUgc2VydmVyIGxhYmVsIGFuZCB0aGUgdXNlcm5h bWUnLCAoKSA9PiB7Ci0gICAgICAgIHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxJywgewotICAgICAg ICAgIF90eXBlOiAnc2VydmVyJywKLSAgICAgICAgICBkYjogJ290aGVyIGRiIGxhYmVsJywKLSAg ICAgICAgICB1c2VyOiB7bmFtZTogJ3NvbWUgdXNlciBuYW1lJ30sCi0gICAgICAgICAgbGFiZWw6 ICdzZXJ2ZXIgbGFiZWwnLAotICAgICAgICB9LCBbXSk7Ci0KLSAgICAgICAgdHJlZS5zZWxlY3RO b2RlKFt7aWQ6ICdsZXZlbDEnfV0pOwotICAgICAgICBleHBlY3QoZ2V0UGFuZWxUaXRsZShwZ0Jy b3dzZXIpKQotICAgICAgICAgIC50b0VxdWFsKCdvdGhlciBkYiBsYWJlbC9zb21lIHVzZXIgbmFt ZUBzZXJ2ZXIgbGFiZWwnKTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gICAgY29udGV4dCgnc2Vs ZWN0ZWQgbm9kZSBiZWxvbmdzIHRvIGEgZGF0YWJhc2UnLCAoKSA9PiB7Ci0gICAgICBpdCgncmV0 dXJucyB0aGUgZGF0YWJhc2UgbGFiZWwgYW5kIHRoZSB1c2VybmFtZScsICgpID0+IHsKLSAgICAg ICAgY29uc3Qgcm9vdCA9IHRyZWUuYWRkTmV3Tm9kZSgnbGV2ZWwxJywgewotICAgICAgICAgIF90 eXBlOiAnc2VydmVyJywKLSAgICAgICAgICBkYjogJ290aGVyIGRiIGxhYmVsJywKLSAgICAgICAg ICB1c2VyOiB7bmFtZTogJ3NvbWUgdXNlciBuYW1lJ30sCi0gICAgICAgICAgbGFiZWw6ICdzZXJ2 ZXIgbGFiZWwnLAotICAgICAgICB9KTsKLSAgICAgICAgY29uc3QgbGV2ZWwxID0gbmV3IFRyZWVO b2RlKCdsZXZlbDEuMScsIHsKLSAgICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKLSAgICAgICAg ICBsYWJlbDogJ2RiIGxhYmVsJywKLSAgICAgICAgfSk7Ci0gICAgICAgIHRyZWUuYWRkQ2hpbGQo cm9vdCwgbGV2ZWwxKTsKLSAgICAgICAgdHJlZS5hZGRDaGlsZChsZXZlbDEsCi0gICAgICAgICAg bmV3IFRyZWVOb2RlKCdsZXZlbDEuMS4xJywge190eXBlOiAndGFibGUnfSkpOwotICAgICAgICB0 cmVlLnNlbGVjdE5vZGUoW3tpZDogJ2xldmVsMS4xLjEnfV0pOwotICAgICAgICBleHBlY3QoZ2V0 UGFuZWxUaXRsZShwZ0Jyb3dzZXIpKQotICAgICAgICAgIC50b0VxdWFsKCdkYiBsYWJlbC9zb21l IHVzZXIgbmFtZUBzZXJ2ZXIgbGFiZWwnKTsKLSAgICAgIH0pOwotICAgIH0pOwotICB9KTsKLX0p OwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3JpZC9zaG93X2Rh dGFfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvc2hvd19kYXRh X3NwZWMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc5ZjU2OTZiMy4uMDAwMDAw MDAwCi0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZGF0YWdyaWQvc2hvd19kYXRhX3Nw ZWMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxNjcgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBnQWRt aW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIy LCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0vLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVh c2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1pbXBvcnQge3No b3dEYXRhR3JpZH0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMv anMvc2hvd19kYXRhJzsKLWltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtl JzsKLWltcG9ydCB7VHJlZU5vZGV9IGZyb20gJy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3Ry ZWUvdHJlZV9ub2Rlcyc7Ci1pbXBvcnQge3BnQnJvd3Nlcn0gZnJvbSAncGdhZG1pbi5icm93c2Vy LnByZWZlcmVuY2VzJzsKLWltcG9ydCBOb3RpZnkgZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0 aWMvanMvaGVscGVycy9Ob3RpZmllcic7Ci0KLWNvbnN0IGNvbnRleHQgPSBkZXNjcmliZTsKLQot dmFyIGR1bW15X2NhY2hlID0gWwotICB7Ci0gICAgaWQ6IDEsCi0gICAgbWlkOiAxLAotICAgIG1v ZHVsZTonYnJvd3NlcicsCi0gICAgbmFtZTondndfZWR0X3RhYl90aXRsZV9wbGFjZWhvbGRlcics Ci0gICAgdmFsdWU6ICclU0NIRU1BJS4lVEFCTEUlLyVEQVRBQkFTRSUvJVVTRVJOQU1FJUAlU0VS VkVSJScsCi0gIH0sCi1dOwotCi1kZXNjcmliZSgnI3Nob3dfZGF0YScsICgpID0+IHsKLSAgbGV0 IGRhdGFncmlkOwotICBsZXQgYWxlcnRpZnk7Ci0gIGxldCB0cmFuc0lkID0gOTg3NjU0MzI7Ci0g IGJlZm9yZUVhY2goKCkgPT4gewotICAgIHBnQnJvd3Nlci5wcmVmZXJlbmNlc19jYWNoZSA9IGR1 bW15X2NhY2hlOwotICAgIGFsZXJ0aWZ5ID0gamFzbWluZS5jcmVhdGVTcHlPYmooJ2FsZXJ0aWZ5 JywgWydhbGVydCcsICdlcnJvciddKTsKLSAgICBzcHlPbihOb3RpZnksICdlcnJvcicpOwotICAg IHNweU9uKE5vdGlmeSwgJ2FsZXJ0Jyk7Ci0gICAgZGF0YWdyaWQgPSB7Ci0gICAgICBsYXVuY2hf Z3JpZDogamFzbWluZS5jcmVhdGVTcHkoJ2xhdW5jaF9ncmlkJyksCi0gICAgfTsKLSAgICBwZ0Jy b3dzZXIuTm9kZXMgPSB7Ci0gICAgICBzZXJ2ZXJfZ3JvdXA6IHsKLSAgICAgICAgX3R5cGU6ICdz ZXJ2ZXJfZ3JvdXAnLAotICAgICAgICBoYXNJZDogdHJ1ZSwKLSAgICAgIH0sCi0gICAgICBzZXJ2 ZXI6IHsKLSAgICAgICAgX3R5cGU6ICdzZXJ2ZXInLAotICAgICAgICBoYXNJZDogdHJ1ZSwKLSAg ICAgIH0sCi0gICAgICBkYXRhYmFzZTogewotICAgICAgICBfdHlwZTogJ2RhdGFiYXNlJywKLSAg ICAgICAgaGFzSWQ6IHRydWUsCi0gICAgICB9LAotICAgICAgc2NoZW1hOiB7Ci0gICAgICAgIF90 eXBlOiAnc2NoZW1hJywKLSAgICAgICAgaGFzSWQ6IHRydWUsCi0gICAgICB9LAotICAgICAgdmll dzogewotICAgICAgICBfdHlwZTogJ3ZpZXcnLAotICAgICAgICBoYXNJZDogdHJ1ZSwKLSAgICAg IH0sCi0gICAgICBjYXRhbG9nOiB7Ci0gICAgICAgIF90eXBlOiAnY2F0YWxvZycsCi0gICAgICAg IGhhc0lkOiB0cnVlLAotICAgICAgfSwKLSAgICB9OwotICAgIHBnQnJvd3Nlci50cmVlID0gbmV3 IFRyZWVGYWtlKHBnQnJvd3Nlcik7Ci0gICAgY29uc3QgcGFyZW50ID0gcGdCcm93c2VyLnRyZWUu YWRkTmV3Tm9kZSgncGFyZW50Jywge190eXBlOiAncGFyZW50J30sIFtdKTsKLSAgICBjb25zdCBz ZXJ2ZXJHcm91cDEgPSBuZXcgVHJlZU5vZGUoJ3NlcnZlcl9ncm91cDEnLCB7Ci0gICAgICBfdHlw ZTogJ3NlcnZlcl9ncm91cCcsCi0gICAgICBfaWQ6IDEsCi0gICAgfSk7Ci0gICAgcGdCcm93c2Vy LnRyZWUuYWRkQ2hpbGQocGFyZW50LCBzZXJ2ZXJHcm91cDEpOwotCi0gICAgY29uc3Qgc2VydmVy MSA9IG5ldyBUcmVlTm9kZSgnc2VydmVyMScsIHsKLSAgICAgIF90eXBlOiAnc2VydmVyJywKLSAg ICAgIGxhYmVsOiAnc2VydmVyMScsCi0gICAgICBzZXJ2ZXJfdHlwZTogJ3BnJywKLSAgICAgIF9p ZDogMiwKLSAgICAgIHVzZXI6IHtuYW1lOiAnc29tZXVzZXInfSwKLSAgICB9LCBbJ3BhcmVudCcs ICdzZXJ2ZXJfZ3JvdXAxJ10pOwotICAgIHBnQnJvd3Nlci50cmVlLmFkZENoaWxkKHNlcnZlckdy b3VwMSwgc2VydmVyMSk7Ci0KLSAgICBjb25zdCBkYXRhYmFzZTEgPSBuZXcgVHJlZU5vZGUoJ2Rh dGFiYXNlMScsIHsKLSAgICAgIF90eXBlOiAnZGF0YWJhc2UnLAotICAgICAgbGFiZWw6ICdkYXRh YmFzZTEnLAotICAgICAgX2lkOiAzLAotICAgIH0sIFsncGFyZW50JywgJ3NlcnZlcl9ncm91cDEn LCAnc2VydmVyMSddKTsKLSAgICBwZ0Jyb3dzZXIudHJlZS5hZGRDaGlsZChzZXJ2ZXIxLCBkYXRh YmFzZTEpOwotCi0gICAgY29uc3Qgc2NoZW1hMSA9IG5ldyBUcmVlTm9kZSgnc2NoZW1hMScsIHsK LSAgICAgIF90eXBlOiAnc2NoZW1hJywKLSAgICAgIGxhYmVsOiAnc2NoZW1hMScsCi0gICAgICBf aWQ6IDQsCi0gICAgfSk7Ci0gICAgcGdCcm93c2VyLnRyZWUuYWRkQ2hpbGQoZGF0YWJhc2UxLCBz Y2hlbWExKTsKLQotICAgIGNvbnN0IHZpZXcxID0gbmV3IFRyZWVOb2RlKCd2aWV3MScsIHsKLSAg ICAgIF90eXBlOiAndmlldycsCi0gICAgICBsYWJlbDogJ3ZpZXcxJywKLSAgICAgIF9pZDogNSwK LSAgICB9LCBbJ3BhcmVudCcsICdzZXJ2ZXJfZ3JvdXAxJywgJ3NlcnZlcjEnLCAnZGF0YWJhc2Ux J10pOwotICAgIHBnQnJvd3Nlci50cmVlLmFkZENoaWxkKGRhdGFiYXNlMSwgdmlldzEpOwotCi0g ICAgY29uc3QgY2F0YWxvZzEgPSBuZXcgVHJlZU5vZGUoJ2NhdGFsb2cxJywgewotICAgICAgX3R5 cGU6ICdjYXRhbG9nJywKLSAgICAgIGxhYmVsOiAnY2F0YWxvZzEnLAotICAgICAgX2lkOiA2LAot ICAgIH0sIFsncGFyZW50JywgJ3NlcnZlcl9ncm91cDEnLCAnc2VydmVyMScsICdkYXRhYmFzZTEn XSk7Ci0gICAgcGdCcm93c2VyLnRyZWUuYWRkQ2hpbGQoZGF0YWJhc2UxLCBjYXRhbG9nMSk7Ci0g IH0pOwotCi0gIGNvbnRleHQoJ2Nhbm5vdCBmaW5kIHRoZSB0cmVlIG5vZGUnLCAoKSA9PiB7Ci0g ICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4gewotICAgICAgc2hv d0RhdGFHcmlkKGRhdGFncmlkLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7fSwgW3tpZDogJzEwJ31d LCB0cmFuc0lkKTsKLSAgICAgIGV4cGVjdChkYXRhZ3JpZC5sYXVuY2hfZ3JpZCkubm90LnRvSGF2 ZUJlZW5DYWxsZWQoKTsKLSAgICB9KTsKLQotICAgIGl0KCdkaXNwbGF5IGFsZXJ0JywgKCkgPT4g ewotICAgICAgc2hvd0RhdGFHcmlkKGRhdGFncmlkLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7fSwg W3tpZDogJzEwJ31dLCB0cmFuc0lkKTsKLSAgICAgIGV4cGVjdChOb3RpZnkuYWxlcnQpLnRvSGF2 ZUJlZW5DYWxsZWRXaXRoKAotICAgICAgICAnRGF0YSBHcmlkIEVycm9yJywKLSAgICAgICAgJ05v IG9iamVjdCBzZWxlY3RlZC4nCi0gICAgICApOwotICAgIH0pOwotICB9KTsKLQotICBjb250ZXh0 KCdjdXJyZW50IG5vZGUgaXMgbm90IHVuZGVybmVhdGggYSBzZXJ2ZXInLCAoKSA9PiB7Ci0gICAg aXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4gewotICAgICAgc2hvd0Rh dGFHcmlkKGRhdGFncmlkLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7fSwgW3tpZDogJ3BhcmVudCd9 XSwgdHJhbnNJZCk7Ci0gICAgICBleHBlY3QoZGF0YWdyaWQubGF1bmNoX2dyaWQpLm5vdC50b0hh dmVCZWVuQ2FsbGVkKCk7Ci0gICAgfSk7Ci0gIH0pOwotCi0gIGNvbnRleHQoJ2N1cnJlbnQgbm9k ZSBpcyBub3QgdW5kZXJuZWF0aCBhIHNjaGVtYSBvciB2aWV3IG9yIGNhdGFsb2cnLCAoKSA9PiB7 Ci0gICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4gewotICAgICAg c2hvd0RhdGFHcmlkKGRhdGFncmlkLCBwZ0Jyb3dzZXIsIGFsZXJ0aWZ5LCB7fSwgW3tpZDogJ2Rh dGFiYXNlMSd9XSwgdHJhbnNJZCk7Ci0gICAgICBleHBlY3QoZGF0YWdyaWQubGF1bmNoX2dyaWQp Lm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgfSk7Ci0gIH0pOwotCi0gIGNvbnRleHQoJ2N1 cnJlbnQgbm9kZSBpcyB1bmRlcm5lYXRoIGEgc2NoZW1hJywgKCkgPT4gewotICAgIGl0KCdkb2Vz IG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKLSAgICAgIHNob3dEYXRhR3JpZChk YXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlmeSwge21udWlkOiAxMX0sIFt7aWQ6ICdzY2hlbWEx J31dLCB0cmFuc0lkKTsKLSAgICAgIGV4cGVjdChkYXRhZ3JpZC5sYXVuY2hfZ3JpZCkubm90LnRv SGF2ZUJlZW5DYWxsZWQoKTsKLSAgICB9KTsKLSAgfSk7Ci0KLSAgY29udGV4dCgnY3VycmVudCBu b2RlIGlzIHVuZGVybmVhdGggYSB2aWV3JywgKCkgPT4gewotICAgIGl0KCdkb2VzIG5vdCBjcmVh dGUgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKLSAgICAgIHNob3dEYXRhR3JpZChkYXRhZ3JpZCwg cGdCcm93c2VyLCBhbGVydGlmeSwge21udWlkOiAxMX0sIFt7aWQ6ICd2aWV3MSd9XSwgdHJhbnNJ ZCk7Ci0KLSAgICAgIGV4cGVjdChkYXRhZ3JpZC5sYXVuY2hfZ3JpZCkudG9IYXZlQmVlbkNhbGxl ZFdpdGgoCi0gICAgICAgIDk4NzY1NDMyLAotICAgICAgICAnL3BhbmVsLzk4NzY1NDMyP2lzX3F1 ZXJ5X3Rvb2w9ZmFsc2UmY21kX3R5cGU9MTEmb2JqX3R5cGU9dmlldyZvYmpfaWQ9NSZzZ2lkPTEm c2lkPTImZGlkPTMmc2VydmVyX3R5cGU9cGcnLAotICAgICAgICBmYWxzZSwKLSAgICAgICAgJ3Zp ZXcxLnZpZXcxL2RhdGFiYXNlMS9zb21ldXNlckBzZXJ2ZXIxJwotICAgICAgKTsKLSAgICB9KTsK LSAgfSk7Ci0KLSAgY29udGV4dCgnY3VycmVudCBub2RlIGlzIHVuZGVybmVhdGggYSBjYXRhbG9n JywgKCkgPT4gewotICAgIGl0KCdkb2VzIG5vdCBjcmVhdGUgYSB0cmFuc2FjdGlvbicsICgpID0+ IHsKLSAgICAgIHNob3dEYXRhR3JpZChkYXRhZ3JpZCwgcGdCcm93c2VyLCBhbGVydGlmeSwge21u dWlkOiAxMX0sIFt7aWQ6ICdjYXRhbG9nMSd9XSwgdHJhbnNJZCk7Ci0gICAgICBleHBlY3QoZGF0 YWdyaWQubGF1bmNoX2dyaWQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgfSk7Ci0gIH0p OwotfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2RhdGFncmlkL3No b3dfcXVlcnlfdG9vbF9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRhZ3Jp ZC9zaG93X3F1ZXJ5X3Rvb2xfc3BlYy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg NWNiNjc3ZDFmLi4wMDAwMDAwMDAKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9kYXRh Z3JpZC9zaG93X3F1ZXJ5X3Rvb2xfc3BlYy5qcworKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCww IEBACi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCi0vLwotLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwotLy8KLS8vIENv cHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KLS8v IFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQot Ly8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vCi0KLWltcG9ydCB7VHJlZUZha2V9IGZyb20gJy4uL3RyZWUvdHJlZV9mYWtlJzsK LWltcG9ydCB7c2hvd1F1ZXJ5VG9vbH0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi90b29scy9kYXRh Z3JpZC9zdGF0aWMvanMvc2hvd19xdWVyeV90b29sJzsKLWltcG9ydCB7VHJlZU5vZGV9IGZyb20g Jy4uLy4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3RyZWUvdHJlZV9ub2Rlcyc7Ci1pbXBvcnQge3Bn QnJvd3Nlcn0gZnJvbSAncGdhZG1pbi5icm93c2VyLnByZWZlcmVuY2VzJzsKLWltcG9ydCBOb3Rp ZnkgZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMvanMvaGVscGVycy9Ob3RpZmllcic7Ci0K LWNvbnN0IGNvbnRleHQgPSBkZXNjcmliZTsKLQotdmFyIGR1bW15X2NhY2hlID0gWwotICB7Ci0g ICAgaWQ6IDEsCi0gICAgbWlkOiAxLAotICAgIG1vZHVsZTonYnJvd3NlcicsCi0gICAgbmFtZTon cXRfdGFiX3RpdGxlX3BsYWNlaG9sZGVyJywKLSAgICB2YWx1ZTogJyVEQVRBQkFTRSUvJVVTRVJO QU1FJUAlU0VSVkVSJScsCi0gIH0sCi1dOwotCi1kZXNjcmliZSgnI3Nob3dRdWVyeVRvb2wnLCAo KSA9PiB7Ci0gIGxldCBxdWVyeVRvb2w7Ci0gIGxldCB0cmFuc0lkID0gOTg3NjU0MzI7Ci0gIGJl Zm9yZUVhY2goKCkgPT4gewotICAgIHBnQnJvd3Nlci5wcmVmZXJlbmNlc19jYWNoZSA9IGR1bW15 X2NhY2hlOwotICAgIHNweU9uKE5vdGlmeSwgJ2FsZXJ0Jyk7Ci0gICAgcXVlcnlUb29sID0gewot ICAgICAgbGF1bmNoX2dyaWQ6IGphc21pbmUuY3JlYXRlU3B5KCdsYXVuY2hfZ3JpZCcpLAotICAg IH07Ci0gICAgcGdCcm93c2VyLk5vZGVzID0gewotICAgICAgc2VydmVyX2dyb3VwOiB7Ci0gICAg ICAgIF90eXBlOiAnc2VydmVyX2dyb3VwJywKLSAgICAgICAgaGFzSWQ6IHRydWUsCi0gICAgICB9 LAotICAgICAgc2VydmVyOiB7Ci0gICAgICAgIF90eXBlOiAnc2VydmVyJywKLSAgICAgICAgaGFz SWQ6IHRydWUsCi0gICAgICB9LAotICAgICAgZGF0YWJhc2U6IHsKLSAgICAgICAgX3R5cGU6ICdk YXRhYmFzZScsCi0gICAgICAgIGhhc0lkOiB0cnVlLAotICAgICAgfSwKLSAgICB9OwotICAgIHBn QnJvd3Nlci50cmVlID0gbmV3IFRyZWVGYWtlKHBnQnJvd3Nlcik7Ci0KLSAgICBjb25zdCBwYXJl bnQgPSBwZ0Jyb3dzZXIudHJlZS5hZGROZXdOb2RlKCdwYXJlbnQnLCB7X3R5cGU6ICdwYXJlbnQn fSk7Ci0gICAgY29uc3Qgc2VydmVyR3JvdXAxID0gIG5ldyBUcmVlTm9kZSgnc2VydmVyX2dyb3Vw MScsIHsKLSAgICAgIF90eXBlOiAnc2VydmVyX2dyb3VwJywKLSAgICAgIF9pZDogMSwKLSAgICB9 LCBbJ3BhcmVudCddKTsKLSAgICBwZ0Jyb3dzZXIudHJlZS5hZGRDaGlsZChwYXJlbnQsIHNlcnZl ckdyb3VwMSk7Ci0KLSAgICBjb25zdCBzZXJ2ZXIxID0gbmV3IFRyZWVOb2RlKCdzZXJ2ZXIxJywg ewotICAgICAgX3R5cGU6ICdzZXJ2ZXInLAotICAgICAgbGFiZWw6ICdzZXJ2ZXIxJywKLSAgICAg IHNlcnZlcl90eXBlOiAncGcnLAotICAgICAgX2lkOiAyLAotICAgICAgdXNlcjoge25hbWU6ICdz b21ldXNlcid9LAotICAgICAgZGI6ICdvdGhlcmRibGFiZWwnLAotICAgIH0pOwotICAgIHBnQnJv d3Nlci50cmVlLmFkZENoaWxkKHNlcnZlckdyb3VwMSwgc2VydmVyMSk7Ci0KLSAgICBjb25zdCBk YXRhYmFzZTEgPSBuZXcgIFRyZWVOb2RlKCdkYXRhYmFzZTEnLCB7Ci0gICAgICBfdHlwZTogJ2Rh dGFiYXNlJywKLSAgICAgIGxhYmVsOiAnZGF0YWJhc2UxJywKLSAgICAgIF9pZDogMywKLSAgICB9 KTsKLSAgICBwZ0Jyb3dzZXIudHJlZS5hZGRDaGlsZChzZXJ2ZXIxLCBkYXRhYmFzZTEpOwotICB9 KTsKLQotICBjb250ZXh0KCdjYW5ub3QgZmluZCB0aGUgdHJlZSBub2RlJywgKCkgPT4gewotICAg IGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgc2hvd1F1ZXJ5VG9vbChxdWVyeVRvb2wsIHBnQnJv d3NlciwgJycsIFt7aWQ6ICcxMCd9XSwgdHJhbnNJZCk7Ci0gICAgfSk7Ci0gICAgaXQoJ2RvZXMg bm90IGNyZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4gewotICAgICAgZXhwZWN0KHF1ZXJ5VG9v bC5sYXVuY2hfZ3JpZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgICB9KTsKLQotICAgIGl0 KCdkaXNwbGF5IGFsZXJ0JywgKCkgPT4gewotICAgICAgZXhwZWN0KE5vdGlmeS5hbGVydCkudG9I YXZlQmVlbkNhbGxlZFdpdGgoCi0gICAgICAgICdRdWVyeSBUb29sIEVycm9yJywKLSAgICAgICAg J05vIG9iamVjdCBzZWxlY3RlZC4nCi0gICAgICApOwotICAgIH0pOwotICB9KTsKLQotICBjb250 ZXh0KCdjdXJyZW50IG5vZGUgaXMgbm90IHVuZGVybmVhdGggYSBzZXJ2ZXInLCAoKSA9PiB7Ci0g ICAgaXQoJ2RvZXMgbm90IGNyZWF0ZSBhIHRyYW5zYWN0aW9uJywgKCkgPT4gewotICAgICAgc2hv d1F1ZXJ5VG9vbChxdWVyeVRvb2wsIHBnQnJvd3NlciwgJycsIFt7aWQ6ICdwYXJlbnQnfV0sIHRy YW5zSWQpOwotICAgICAgZXhwZWN0KHF1ZXJ5VG9vbC5sYXVuY2hfZ3JpZCkubm90LnRvSGF2ZUJl ZW5DYWxsZWQoKTsKLSAgICB9KTsKLQotICAgIGl0KCdubyBhbGVydCBpcyBkaXNwbGF5ZWQnLCAo KSA9PiB7Ci0gICAgICBleHBlY3QoTm90aWZ5LmFsZXJ0KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgp OwotICAgIH0pOwotICB9KTsKLQotICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMgdW5kZXJuZWF0 aCBhIHNlcnZlcicsICgpID0+IHsKLSAgICBjb250ZXh0KCdjdXJyZW50IG5vZGUgaXMgbm90IHVu ZGVybmVhdGggYSBkYXRhYmFzZScsICgpID0+IHsKLSAgICAgIGl0KCdjcmVhdGVzIGEgdHJhbnNh Y3Rpb24nLCAoKSA9PiB7Ci0gICAgICAgIHNob3dRdWVyeVRvb2wocXVlcnlUb29sLCBwZ0Jyb3dz ZXIsICdodHRwOi8vc29tZXVybCcsIFt7aWQ6ICdzZXJ2ZXIxJ31dLCB0cmFuc0lkKTsKLSAgICAg ICAgZXhwZWN0KHF1ZXJ5VG9vbC5sYXVuY2hfZ3JpZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoCi0g ICAgICAgICAgOTg3NjU0MzIsCi0gICAgICAgICAgJy9wYW5lbC85ODc2NTQzMj9pc19xdWVyeV90 b29sPXRydWUmc2dpZD0xJnNpZD0yJnNlcnZlcl90eXBlPXBnJywKLSAgICAgICAgICB0cnVlLAot ICAgICAgICAgICdvdGhlcmRibGFiZWwvc29tZXVzZXJAc2VydmVyMScsCi0gICAgICAgICAgJ2h0 dHA6Ly9zb21ldXJsJwotICAgICAgICApOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBjb250 ZXh0KCdjdXJyZW50IG5vZGUgaXMgdW5kZXJuZWF0aCBhIGRhdGFiYXNlJywgKCkgPT4gewotICAg ICAgaXQoJ2NyZWF0ZXMgYSB0cmFuc2FjdGlvbicsICgpID0+IHsKLSAgICAgICAgc2hvd1F1ZXJ5 VG9vbChxdWVyeVRvb2wsIHBnQnJvd3NlciwgJ2h0dHA6Ly9zb21ldXJsJywgW3tpZDogJ2RhdGFi YXNlMSd9XSwgdHJhbnNJZCk7Ci0gICAgICAgIGV4cGVjdChxdWVyeVRvb2wubGF1bmNoX2dyaWQp LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAotICAgICAgICAgIDk4NzY1NDMyLAotICAgICAgICAgICcv cGFuZWwvOTg3NjU0MzI/aXNfcXVlcnlfdG9vbD10cnVlJnNnaWQ9MSZzaWQ9MiZzZXJ2ZXJfdHlw ZT1wZyZkaWQ9MycsCi0gICAgICAgICAgdHJ1ZSwKLSAgICAgICAgICAnZGF0YWJhc2UxL3NvbWV1 c2VyQHNlcnZlcjEnLAotICAgICAgICAgICdodHRwOi8vc29tZXVybCcKLSAgICAgICAgKTsKLSAg ICAgIH0pOwotICAgIH0pOwotICB9KTsKLX0pOwpkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24v amF2YXNjcmlwdC9lcmQvdWlfY29tcG9uZW50cy9ib2R5X3dpZGdldF9zcGVjLmpzIGIvd2ViL3Jl Z3Jlc3Npb24vamF2YXNjcmlwdC9lcmQvdWlfY29tcG9uZW50cy9ib2R5X3dpZGdldF9zcGVjLmpz CmluZGV4IDA3MzhlN2Y4Mi4uOWIxNWJlMGFiIDEwMDY0NAotLS0gYS93ZWIvcmVncmVzc2lvbi9q YXZhc2NyaXB0L2VyZC91aV9jb21wb25lbnRzL2JvZHlfd2lkZ2V0X3NwZWMuanMKKysrIGIvd2Vi L3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9lcmQvdWlfY29tcG9uZW50cy9ib2R5X3dpZGdldF9zcGVj LmpzCkBAIC05LDcgKzksNyBAQCBpbXBvcnQgRVJEQ29yZSBmcm9tICdwZ2FkbWluLnRvb2xzLmVy ZC9lcmRfdG9vbC9FUkRDb3JlJzsKIGltcG9ydCAqIGFzIGVyZE1vZHVsZSBmcm9tICdwZ2FkbWlu LnRvb2xzLmVyZC9lcmRfbW9kdWxlJzsKIGltcG9ydCBlcmRQcmVmIGZyb20gJy4vZXJkX3ByZWZl cmVuY2VzJzsKIGltcG9ydCBCb2R5V2lkZ2V0IGZyb20gJ3BnYWRtaW4udG9vbHMuZXJkL2VyZF90 b29sL3VpX2NvbXBvbmVudHMvQm9keVdpZGdldCc7Ci1pbXBvcnQgKiBhcyBFUkRTcWxUb29sIGZy b20gJ3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9zaG93X3F1ZXJ5X3Rvb2wnOworaW1wb3J0ICog YXMgRVJEU3FsVG9vbCBmcm9tICd0b29scy9zcWxlZGl0b3Ivc3RhdGljL2pzL3Nob3dfcXVlcnlf dG9vbCc7CiBpbXBvcnQgeyBGYWtlTGluaywgRmFrZU5vZGUgfSBmcm9tICcuLi9mYWtlX2l0ZW0n OwogaW1wb3J0IE5vdGlmeSBmcm9tICcuLi8uLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy9oZWxw ZXJzL05vdGlmaWVyJzsKIApkaWZmIC0tZ2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9m YWtlX2VuZHBvaW50cy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvZmFrZV9lbmRwb2lu dHMuanMKaW5kZXggZGRkNTBmYjhiLi5mZDVlYzE3NWYgMTAwNjQ0Ci0tLSBhL3dlYi9yZWdyZXNz aW9uL2phdmFzY3JpcHQvZmFrZV9lbmRwb2ludHMuanMKKysrIGIvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC9mYWtlX2VuZHBvaW50cy5qcwpAQCAtMTQsMTEgKzE0LDExIEBAIGRlZmluZShmdW5j dGlvbiAoKSB7CiAgICAgJ3NxbGVkaXRvci5xdWVyeV90b29sX3N0YXJ0JzogJy9zcWxlZGl0b3Iv cXVlcnlfdG9vbC9zdGFydC88cGF0aDp0cmFuc19pZD4nLAogICAgICdiYWNrdXAuY3JlYXRlX3Nl cnZlcl9qb2InOiAgJy9iYWNrdXAvam9iLzxpbnQ6c2lkPicsCiAgICAgJ2JhY2t1cC5jcmVhdGVf b2JqZWN0X2pvYic6ICAnL2JhY2t1cC9qb2IvPGludDpzaWQ+L29iamVjdCcsCi0gICAgJ2RhdGFn cmlkLmluaXRpYWxpemVfZGF0YWdyaWQnOiAnL2luaXRpYWxpemUvZGF0YWdyaWQvPGludDpjbWRf dHlwZT4vPG9ial90eXBlPi88aW50OnNnaWQ+LzxpbnQ6c2lkPi88aW50OmRpZD4vPGludDpvYmpf aWQ+JywKLSAgICAnZGF0YWdyaWQuaW5pdGlhbGl6ZV9xdWVyeV90b29sJzogJy9pbml0aWFsaXpl L3F1ZXJ5X3Rvb2wvPGludDpzZ2lkPi88aW50OnNpZD4nLAotICAgICdkYXRhZ3JpZC5pbml0aWFs aXplX3F1ZXJ5X3Rvb2xfd2l0aF9kaWQnOiAnL2luaXRpYWxpemUvcXVlcnlfdG9vbC88aW50OnNn aWQ+LzxpbnQ6c2lkPi88aW50OmRpZD4nLAorICAgICdzcWxlZGl0b3IuaW5pdGlhbGl6ZV92aWV3 ZGF0YSc6ICcvaW5pdGlhbGl6ZS9zcWxlZGl0b3IvPGludDpjbWRfdHlwZT4vPG9ial90eXBlPi88 aW50OnNnaWQ+LzxpbnQ6c2lkPi88aW50OmRpZD4vPGludDpvYmpfaWQ+JywKKyAgICAnc3FsZWRp dG9yLmluaXRpYWxpemVfc3FsZWRpdG9yJzogJy9pbml0aWFsaXplL3NxbGVkaXRvci88aW50OnNn aWQ+LzxpbnQ6c2lkPicsCisgICAgJ3NxbGVkaXRvci5pbml0aWFsaXplX3NxbGVkaXRvcl93aXRo X2RpZCc6ICcvaW5pdGlhbGl6ZS9zcWxlZGl0b3IvPGludDpzZ2lkPi88aW50OnNpZD4vPGludDpk aWQ+JywKICAgICAncmVzdG9yZS5jcmVhdGVfam9iJzogJy9yZXN0b3JlL2pvYi88aW50OnNpZD4n LAotICAgICdkYXRhZ3JpZC5wYW5lbCc6ICcvcGFuZWwvPGludDp0cmFuc19pZD4nLAorICAgICdz cWxlZGl0b3IucGFuZWwnOiAnL3BhbmVsLzxpbnQ6dHJhbnNfaWQ+JywKICAgICAnc2VhcmNoX29i amVjdHMudHlwZXMnOiAnL3NlYXJjaF9vYmplY3RzL3R5cGVzLzxpbnQ6c2lkPi88aW50OmRpZD4n LAogICAgICdzZWFyY2hfb2JqZWN0cy5zZWFyY2gnOiAnL3NlYXJjaF9vYmplY3RzL3NlYXJjaC88 aW50OnNpZD4vPGludDpkaWQ+JywKICAgICAnZGFzaGJvYXJkLmRhc2hib2FyZF9zdGF0cyc6ICcv ZGFzaGJvYXJkL2Rhc2hib2FyZF9zdGF0cycsCmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9q YXZhc2NyaXB0L2dlb21ldHJ5X3ZpZXdlci9nZW9tZXRyeV92aWV3ZXJfc3BlYy5qcyBiL3dlYi9y ZWdyZXNzaW9uL2phdmFzY3JpcHQvZ2VvbWV0cnlfdmlld2VyL2dlb21ldHJ5X3ZpZXdlcl9zcGVj LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzEwZWIxZTAuLjAwMDAwMDAwMAot LS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L2dlb21ldHJ5X3ZpZXdlci9nZW9tZXRyeV92 aWV3ZXJfc3BlYy5qcworKysgL2Rldi9udWxsCkBAIC0xLDIzMiArMCwwIEBACi0vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwot Ly8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwotLy8KLS8vIENvcHlyaWdodCAoQykgMjAx MyAtIDIwMjIsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KLS8vIFRoaXMgc29mdHdhcmUg aXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQotLy8KLS8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLWlt cG9ydCBHZW9tZXRyeVZpZXdlciBmcm9tICdzb3VyY2VzL3NxbGVkaXRvci9nZW9tZXRyeV92aWV3 ZXInOwotaW1wb3J0IHtHZW9tZXRyeX0gZnJvbSAnd2t4JzsKLQotZGVzY3JpYmUoJ2dlb21ldHJ5 IHZpZXdlciB0ZXN0JywgZnVuY3Rpb24gKCkgewotCi0gIGRlc2NyaWJlKCdnZW9tZXRyeSB2aWV3 ZXIgYWRkIGhlYWRlciBidXR0b24gdGVzdCcsIGZ1bmN0aW9uICgpIHsKLSAgICBsZXQgYWRkX2J1 dHRvbiA9IEdlb21ldHJ5Vmlld2VyLmFkZF9oZWFkZXJfYnV0dG9uOwotICAgIGl0KCdzaG91bGQg YWRkIGJ1dHRvbiBmb3IgZ2VvZ3JhcGh5IHR5cGUnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICBsZXQg Y29sdW1uRGVmID0gewotICAgICAgICBjb2x1bW5fdHlwZV9pbnRlcm5hbDogJ2dlb2dyYXBoeScs Ci0gICAgICB9OwotICAgICAgYWRkX2J1dHRvbihjb2x1bW5EZWYpOwotICAgICAgZXhwZWN0KGNv bHVtbkRlZi5oZWFkZXIpLnRvQmVEZWZpbmVkKCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxk IGFkZCBidXR0b24gZm9yIGdlb21ldHJ5IHR5cGUnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICBsZXQg Y29sdW1uRGVmID0gewotICAgICAgICBjb2x1bW5fdHlwZV9pbnRlcm5hbDogJ2dlb21ldHJ5JywK LSAgICAgIH07Ci0gICAgICBhZGRfYnV0dG9uKGNvbHVtbkRlZik7Ci0gICAgICBleHBlY3QoY29s dW1uRGVmLmhlYWRlcikudG9CZURlZmluZWQoKTsKLSAgICB9KTsKLSAgfSk7Ci0KLSAgZGVzY3Jp YmUoJ2dlb21ldHJ5IHZpZXdlciByZW5lciBnZW9tZXRyeSB0ZXN0JywgZnVuY3Rpb24gKCkgewot Ci0gICAgaXQoJ3Nob3VsZCBncm91cCBnZW9tZXRyeSBieSBzcmlkJywgZnVuY3Rpb24gKCkgewot ICAgICAgLy8gUE9JTlQoMCAwKQotICAgICAgbGV0IGV3a2IgPSAnMDEwMTAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJzsKLSAgICAgIC8vIFNSSUQ9MzI2MzI7UE9JTlQoMCAw KQotICAgICAgbGV0IGV3a2IxID0gJzAxMDEwMDAwMjA3ODdGMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwJzsKLSAgICAgIGxldCBpdGVtcyA9IFt7Ci0gICAgICAgIGlkOiAxLAot ICAgICAgICBnZW9tOiBld2tiLAotICAgICAgfSwgewotICAgICAgICBpZDogMSwKLSAgICAgICAg Z2VvbTogZXdrYiwKLSAgICAgIH0sIHsKLSAgICAgICAgaWQ6IDEsCi0gICAgICAgIGdlb206IGV3 a2IxLAotICAgICAgfV07Ci0gICAgICBsZXQgY29sdW1ucyA9IFsKLSAgICAgICAgewotICAgICAg ICAgIGNvbHVtbl90eXBlX2ludGVybmFsOiAnZ2VvbWV0cnknLAotICAgICAgICAgIGZpZWxkOiAn Z2VvbScsCi0gICAgICAgIH0sCi0gICAgICBdOwotICAgICAgbGV0IGNvbHVtbkluZGV4ID0gMDsK LSAgICAgIGxldCByZXN1bHQgPSBHZW9tZXRyeVZpZXdlci5wYXJzZV9kYXRhKGl0ZW1zLCBjb2x1 bW5zLCBjb2x1bW5JbmRleCwgR2VvbWV0cnkpOwotICAgICAgZXhwZWN0KHJlc3VsdC5nZW9KU09O cy5sZW5ndGgpLnRvRXF1YWwoMik7Ci0gICAgfSk7Ci0KLQotICAgIGl0KCdzaG91bGQgc3VwcG9y dCBnZW9tZXRyeSBjb2xsZWN0aW9uJywgZnVuY3Rpb24gKCkgewotICAgICAgLy8gR0VPTUVUUllD T0xMRUNUSU9OKFBPSU5UKDIgMyksTElORVNUUklORygyIDMsMyA0KSkKLSAgICAgIGxldCBld2ti ID0gJzAxMDcwMDAwMDAwMjAwMDAwMDAxMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDQwMDAwMDAwMDAw MDAwMDg0MDAxJyArCi0gICAgICAgICcwMjAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMDAwMDA0MDAw MDAwMDAwMDAwMDA4NDAwMDAwMDAwMDAwMDAwODQwMDAwMDAwMCcgKwotICAgICAgICAnMDAwMDAx MDQwJzsKLSAgICAgIGxldCBpdGVtcyA9IFt7Ci0gICAgICAgIGlkOiAxLAotICAgICAgICBnZW9t OiBld2tiLAotICAgICAgfV07Ci0gICAgICBsZXQgY29sdW1ucyA9IFsKLSAgICAgICAgewotICAg ICAgICAgIGNvbHVtbl90eXBlX2ludGVybmFsOiAnZ2VvbWV0cnknLAotICAgICAgICAgIGZpZWxk OiAnZ2VvbScsCi0gICAgICAgIH0sCi0gICAgICBdOwotICAgICAgbGV0IGNvbHVtbkluZGV4ID0g MDsKLSAgICAgIGxldCByZXN1bHQgPSBHZW9tZXRyeVZpZXdlci5wYXJzZV9kYXRhKGl0ZW1zLCBj b2x1bW5zLCBjb2x1bW5JbmRleCwgR2VvbWV0cnkpOwotICAgICAgZXhwZWN0KHJlc3VsdC5nZW9K U09Ocy5sZW5ndGgpLnRvRXF1YWwoMSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIHN1cHBv cnQgZ2VvbWV0cnkgTScsIGZ1bmN0aW9uICgpIHsKLSAgICAgIC8vIFNSSUQ9NDMyNjtNVUxUSVBP SU5UTSgwIDAgMCwxIDIgMSkKLSAgICAgIGxldCBld2tiID0gJzAxMDQwMDAwNjBFNjEwMDAwMDAy MDAwMDAwMDEwMTAwMDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJyArCi0gICAgICAgICcw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMTAwMDA0MDAwMDAwMDAwMDAwMEYwM0YwMDAwMDAwMDAw MDAwMDQwMDAwMDAwMCcgKwotICAgICAgICAnMDAwMDBGMDNGJzsKLSAgICAgIGxldCBpdGVtcyA9 IFt7Ci0gICAgICAgIGlkOiAxLAotICAgICAgICBnZW9tOiBld2tiLAotICAgICAgfV07Ci0gICAg ICBsZXQgY29sdW1ucyA9IFsKLSAgICAgICAgewotICAgICAgICAgIGNvbHVtbl90eXBlX2ludGVy bmFsOiAnZ2VvbWV0cnknLAotICAgICAgICAgIGZpZWxkOiAnZ2VvbScsCi0gICAgICAgIH0sCi0g ICAgICBdOwotICAgICAgbGV0IGNvbHVtbkluZGV4ID0gMDsKLSAgICAgIGxldCByZXN1bHQgPSBH ZW9tZXRyeVZpZXdlci5wYXJzZV9kYXRhKGl0ZW1zLCBjb2x1bW5zLCBjb2x1bW5JbmRleCwgR2Vv bWV0cnkpOwotICAgICAgZXhwZWN0KHJlc3VsdC5nZW9KU09Ocy5sZW5ndGgpLnRvRXF1YWwoMSk7 Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIHN1cHBvcnQgZW1wdHkgZ2VvbWV0cnknLCBmdW5j dGlvbiAoKSB7Ci0gICAgICAvLyBHRU9NRVRSWUNPTExFQ1RJT04gRU1QVFkKLSAgICAgIGxldCBl d2tiID0gJzAxMDcwMDAwMDAwMDAwMDAwMCc7Ci0gICAgICBsZXQgaXRlbXMgPSBbewotICAgICAg ICBpZDogMSwKLSAgICAgICAgZ2VvbTogZXdrYiwKLSAgICAgIH1dOwotICAgICAgbGV0IGNvbHVt bnMgPSBbCi0gICAgICAgIHsKLSAgICAgICAgICBjb2x1bW5fdHlwZV9pbnRlcm5hbDogJ2dlb21l dHJ5JywKLSAgICAgICAgICBmaWVsZDogJ2dlb20nLAotICAgICAgICB9LAotICAgICAgXTsKLSAg ICAgIGxldCBjb2x1bW5JbmRleCA9IDA7Ci0gICAgICBsZXQgcmVzdWx0ID0gR2VvbWV0cnlWaWV3 ZXIucGFyc2VfZGF0YShpdGVtcywgY29sdW1ucywgY29sdW1uSW5kZXgsIEdlb21ldHJ5KTsKLSAg ICAgIGV4cGVjdChyZXN1bHQuZ2VvSlNPTnMubGVuZ3RoKS50b0VxdWFsKDEpOwotICAgIH0pOwot Ci0KLSAgICBpdCgnc2hvdWxkIHN1cHBvcnQgbWl4ZWQgZ2VvbWV0cnkgdHlwZScsIGZ1bmN0aW9u ICgpIHsKLSAgICAgIC8vIEdFT01FVFJZQ09MTEVDVElPTiBFTVBUWQotICAgICAgbGV0IGV3a2Ig PSAnMDEwNzAwMDAwMDAwMDAwMDAwJzsKLSAgICAgIC8vIFBPSU5UKDAgMCkKLSAgICAgIGxldCBl d2tiMSA9ICcwMTAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnOwotICAg ICAgLy8gU1JJRD00MzI2O01VTFRJUE9JTlRNKDAgMCAwLDEgMiAxKQotICAgICAgbGV0IGV3a2Iy ID0gJzAxMDQwMDAwNjBFNjEwMDAwMDAyMDAwMDAwMDEwMTAwMDA0MDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwJyArCi0gICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMTAwMDA0MDAw MDAwMDAwMDAwMEYwM0YwMDAwMDAwMDAwMDAwMDQwMDAwMDAwMCcgKwotICAgICAgICAnMDAwMDBG MDNGJzsKLSAgICAgIGxldCBpdGVtcyA9IFt7Ci0gICAgICAgIGlkOiAxLAotICAgICAgICBnZW9t OiBld2tiLAotICAgICAgfSwgewotICAgICAgICBpZDogMSwKLSAgICAgICAgZ2VvbTogZXdrYjEs Ci0gICAgICB9LCB7Ci0gICAgICAgIGlkOiAxLAotICAgICAgICBnZW9tOiBld2tiMiwKLSAgICAg IH1dOwotICAgICAgbGV0IGNvbHVtbnMgPSBbCi0gICAgICAgIHsKLSAgICAgICAgICBjb2x1bW5f dHlwZV9pbnRlcm5hbDogJ2dlb21ldHJ5JywKLSAgICAgICAgICBmaWVsZDogJ2dlb20nLAotICAg ICAgICB9LAotICAgICAgXTsKLSAgICAgIGxldCBjb2x1bW5JbmRleCA9IDA7Ci0gICAgICBsZXQg cmVzdWx0ID0gR2VvbWV0cnlWaWV3ZXIucGFyc2VfZGF0YShpdGVtcywgY29sdW1ucywgY29sdW1u SW5kZXgsIEdlb21ldHJ5KTsKLSAgICAgIGV4cGVjdChyZXN1bHQuZ2VvSlNPTnMubGVuZ3RoKS50 b0VxdWFsKDIpOwotICAgIH0pOwotCi0KLSAgICBpdCgnc2hvdWxkIG5vdCBzdXBwb3J0IDNEIGdl b21ldHJ5JywgZnVuY3Rpb24gKCkgewotICAgICAgLy8gUE9JTlQoMCAwIDApCi0gICAgICBsZXQg ZXdrYiA9ICcwMTAxMDAwMDgwMDAwMDAwMDAwMDAwRjAzRjAwMDAwMDAwMDAwMEYwM0YwMDAwMDAw MDAwMDBGMDNGJzsKLSAgICAgIGxldCBpdGVtcyA9IFt7Ci0gICAgICAgIGlkOiAxLAotICAgICAg ICBnZW9tOiBld2tiLAotICAgICAgfV07Ci0gICAgICBsZXQgY29sdW1ucyA9IFsKLSAgICAgICAg ewotICAgICAgICAgIGNvbHVtbl90eXBlX2ludGVybmFsOiAnZ2VvbWV0cnknLAotICAgICAgICAg IGZpZWxkOiAnZ2VvbScsCi0gICAgICAgIH0sCi0gICAgICBdOwotICAgICAgbGV0IGNvbHVtbklu ZGV4ID0gMDsKLSAgICAgIGxldCByZXN1bHQgPSBHZW9tZXRyeVZpZXdlci5wYXJzZV9kYXRhKGl0 ZW1zLCBjb2x1bW5zLCBjb2x1bW5JbmRleCwgR2VvbWV0cnkpOwotICAgICAgZXhwZWN0KHJlc3Vs dC5nZW9KU09Ocy5sZW5ndGgpLnRvRXF1YWwoMCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxk IG5vdCBzdXBwb3J0IDNETSBnZW9tZXRyeScsIGZ1bmN0aW9uICgpIHsKLSAgICAgIC8vIFBPSU5U KDAgMCAwIDApCi0gICAgICBsZXQgZXdrYiA9ICcwMTAxMDAwMEMwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCcgKwotICAgICAgICAnMDAwMDAwMDAw MDAwJzsKLSAgICAgIGxldCBpdGVtcyA9IFt7Ci0gICAgICAgIGlkOiAxLAotICAgICAgICBnZW9t OiBld2tiLAotICAgICAgfV07Ci0gICAgICBsZXQgY29sdW1ucyA9IFsKLSAgICAgICAgewotICAg ICAgICAgIGNvbHVtbl90eXBlX2ludGVybmFsOiAnZ2VvbWV0cnknLAotICAgICAgICAgIGZpZWxk OiAnZ2VvbScsCi0gICAgICAgIH0sCi0gICAgICBdOwotICAgICAgbGV0IGNvbHVtbkluZGV4ID0g MDsKLSAgICAgIGxldCByZXN1bHQgPSBHZW9tZXRyeVZpZXdlci5wYXJzZV9kYXRhKGl0ZW1zLCBj b2x1bW5zLCBjb2x1bW5JbmRleCwgR2VvbWV0cnkpOwotICAgICAgZXhwZWN0KHJlc3VsdC5nZW9K U09Ocy5sZW5ndGgpLnRvRXF1YWwoMCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnc2hvdWxkIG5vdCBz dXBwb3J0IFRSSUFOR0xFIGdlb21ldHJ5JywgZnVuY3Rpb24gKCkgewotICAgICAgLy8gVFJJQU5H TEUgKCgwIDAsIDAgOSwgOSAwLCAwIDApKQotICAgICAgbGV0IGV3a2IgPSAnMDExMTAwMDAwMDAx MDAwMDAwMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAnICsKLSAg ICAgICAgJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDIyNDAwMDAwMDAwMDAwMDAyMjQwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwJyArCi0gICAgICAgICcwMDAwMDAwMDAwMDAwMDAwMDAwMDAn OwotICAgICAgbGV0IGl0ZW1zID0gW3sKLSAgICAgICAgaWQ6IDEsCi0gICAgICAgIGdlb206IGV3 a2IsCi0gICAgICB9XTsKLSAgICAgIGxldCBjb2x1bW5zID0gWwotICAgICAgICB7Ci0gICAgICAg ICAgY29sdW1uX3R5cGVfaW50ZXJuYWw6ICdnZW9tZXRyeScsCi0gICAgICAgICAgZmllbGQ6ICdn ZW9tJywKLSAgICAgICAgfSwKLSAgICAgIF07Ci0gICAgICBsZXQgY29sdW1uSW5kZXggPSAwOwot ICAgICAgbGV0IHJlc3VsdCA9IEdlb21ldHJ5Vmlld2VyLnBhcnNlX2RhdGEoaXRlbXMsIGNvbHVt bnMsIGNvbHVtbkluZGV4LCBHZW9tZXRyeSk7Ci0gICAgICBleHBlY3QocmVzdWx0Lmdlb0pTT05z Lmxlbmd0aCkudG9FcXVhbCgwKTsKLSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgbGltaXQgZGF0 YSBzaXplJywgZnVuY3Rpb24gKCkgewotICAgICAgLy8gUE9JTlQoMCAwKQotICAgICAgbGV0IGV3 a2IgPSAnMDEwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJzsKLSAgICAg IGxldCBpdGVtcyA9IFtdOwotICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2MDAwMDA7IGkrKykg ewotICAgICAgICBpdGVtcy5wdXNoKHsKLSAgICAgICAgICBpZDogaSwKLSAgICAgICAgICBnZW9t OiBld2tiLAotICAgICAgICB9KTsKLSAgICAgIH0KLQotICAgICAgbGV0IGNvbHVtbnMgPSBbCi0g ICAgICAgIHsKLSAgICAgICAgICBjb2x1bW5fdHlwZV9pbnRlcm5hbDogJ2dlb21ldHJ5JywKLSAg ICAgICAgICBmaWVsZDogJ2dlb20nLAotICAgICAgICB9LAotICAgICAgXTsKLSAgICAgIGxldCBj b2x1bW5JbmRleCA9IDA7Ci0gICAgICBsZXQgcmVzdWx0ID0gR2VvbWV0cnlWaWV3ZXIucGFyc2Vf ZGF0YShpdGVtcywgY29sdW1ucywgY29sdW1uSW5kZXgsIEdlb21ldHJ5KTsKLSAgICAgIGV4cGVj dChyZXN1bHQuZ2VvSlNPTnMubGVuZ3RoKS50b0JlTGVzc1RoYW4oNjAwMDAwKTsKLSAgICB9KTsK LSAgfSk7Ci19KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvaGlzdG9y eS9oaXN0b3J5X2NvbGxlY3Rpb25fc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv aGlzdG9yeS9oaXN0b3J5X2NvbGxlY3Rpb25fc3BlYy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggZmVmM2U2NzRiLi4wMDAwMDAwMDAKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNj cmlwdC9oaXN0b3J5L2hpc3RvcnlfY29sbGVjdGlvbl9zcGVjLmpzCisrKyAvZGV2L251bGwKQEAg LTEsODIgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK LS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVu dCBUZWFtCi0vLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLwotCi1pbXBvcnQgSGlzdG9yeUNvbGxlY3Rpb24gZnJvbSAnc291 cmNlcy9zcWxlZGl0b3IvaGlzdG9yeS9oaXN0b3J5X2NvbGxlY3Rpb24nOwotCi1kZXNjcmliZSgn aGlzdG9yeUNvbGxlY3Rpb24nLCBmdW5jdGlvbiAoKSB7Ci0gIGxldCBoaXN0b3J5Q29sbGVjdGlv biwgaGlzdG9yeU1vZGVsLCBvbkFkZFNweSwgb25SZXNldFNweTsKLSAgYmVmb3JlRWFjaCgoKSA9 PiB7Ci0gICAgaGlzdG9yeU1vZGVsID0gW3tzb21lOiAndGhpbmcnLCBzb21lT3RoZXI6IFsnYXJy YXkgZWxlbWVudCddfV07Ci0gICAgaGlzdG9yeUNvbGxlY3Rpb24gPSBuZXcgSGlzdG9yeUNvbGxl Y3Rpb24oaGlzdG9yeU1vZGVsKTsKLSAgICBvbkFkZFNweSA9IGphc21pbmUuY3JlYXRlU3B5KCdv bkFkZEhhbmRsZXInKTsKLSAgICBvblJlc2V0U3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ29uUmVz ZXRIYW5kbGVyJyk7Ci0KLSAgICBoaXN0b3J5Q29sbGVjdGlvbi5vbkFkZChvbkFkZFNweSk7Ci0g ICAgaGlzdG9yeUNvbGxlY3Rpb24ub25SZXNldChvblJlc2V0U3B5KTsKLSAgfSk7Ci0KLSAgZGVz Y3JpYmUoJ2xlbmd0aCcsIGZ1bmN0aW9uICgpIHsKLSAgICBpdCgncmV0dXJucyAwIHdoZW4gdW5k ZXJseWluZyBoaXN0b3J5IG1vZGVsIGhhcyBubyBlbGVtZW50cycsIGZ1bmN0aW9uICgpIHsKLSAg ICAgIGhpc3RvcnlDb2xsZWN0aW9uID0gbmV3IEhpc3RvcnlDb2xsZWN0aW9uKFtdKTsKLQotICAg ICAgZXhwZWN0KGhpc3RvcnlDb2xsZWN0aW9uLmxlbmd0aCgpKS50b0VxdWFsKDApOwotICAgIH0p OwotCi0gICAgaXQoJ3JldHVybnMgdGhlIGxlbmd0aCBvZiB0aGUgdW5kZXJseWluZyBoaXN0b3J5 IG1vZGVsJywgZnVuY3Rpb24gKCkgewotICAgICAgZXhwZWN0KGhpc3RvcnlDb2xsZWN0aW9uLmxl bmd0aCgpKS50b0VxdWFsKDEpOwotICAgIH0pOwotICB9KTsKLQotICBkZXNjcmliZSgnYWRkJywg ZnVuY3Rpb24gKCkgewotICAgIGxldCBleHBlY3RlZEhpc3Rvcnk7Ci0gICAgbGV0IG5ld0VudHJ5 ID0ge3NvbWU6ICduZXcgdGhpbmcnLCBzb21lT3RoZXI6IFsndmFsdWUxJywgJ3ZhbHVlMiddfTsK LSAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgIGhpc3RvcnlDb2xsZWN0aW9uLmFkZChuZXdF bnRyeSk7Ci0KLSAgICAgIGV4cGVjdGVkSGlzdG9yeSA9IFsKLSAgICAgICAge3NvbWU6ICduZXcg dGhpbmcnLCBzb21lT3RoZXI6IFsndmFsdWUxJywgJ3ZhbHVlMiddfSwKLSAgICAgICAge3NvbWU6 ICd0aGluZycsIHNvbWVPdGhlcjogWydhcnJheSBlbGVtZW50J119LAotICAgICAgXTsKLSAgICB9 KTsKLQotICAgIGl0KCdhZGRzIGEgcGFzc2VkIGVudHJ5JywgZnVuY3Rpb24gKCkgewotICAgICAg ZXhwZWN0KGhpc3RvcnlDb2xsZWN0aW9uLmhpc3RvcnlMaXN0KS50b0VxdWFsKGV4cGVjdGVkSGlz dG9yeSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnY2FsbHMgdGhlIG9uQ2hhbmdlIGZ1bmN0aW9uJywg ZnVuY3Rpb24gKCkgewotICAgICAgZXhwZWN0KG9uQWRkU3B5KS50b0hhdmVCZWVuQ2FsbGVkV2l0 aChuZXdFbnRyeSk7Ci0gICAgfSk7Ci0gIH0pOwotCi0gIGRlc2NyaWJlKCdyZXNldCcsIGZ1bmN0 aW9uICgpIHsKLSAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgIGhpc3RvcnlDb2xsZWN0aW9u LnJlc2V0KCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgnZHJvcHMgdGhlIGhpc3RvcnknLCBmdW5jdGlv biAoKSB7Ci0gICAgICBleHBlY3QoaGlzdG9yeUNvbGxlY3Rpb24uaGlzdG9yeUxpc3QpLnRvRXF1 YWwoW10pOwotICAgICAgZXhwZWN0KGhpc3RvcnlDb2xsZWN0aW9uLmxlbmd0aCgpKS50b0VxdWFs KDApOwotICAgIH0pOwotCi0gICAgaXQoJ2NhbGxzIHRoZSBvblJlc2V0IGZ1bmN0aW9uJywgZnVu Y3Rpb24gKCkgewotICAgICAgZXhwZWN0KG9uUmVzZXRTcHkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KFtdKTsKLSAgICB9KTsKLSAgfSk7Ci0KLSAgZGVzY3JpYmUoJ3doZW4gaW5zdGFudGlhdGVkJywg ZnVuY3Rpb24gKCkgewotICAgIGRlc2NyaWJlKCdmcm9tIGEgaGlzdG9yeSBtb2RlbCcsIGZ1bmN0 aW9uICgpIHsKLSAgICAgIGl0KCdoYXMgdGhlIGhpc3RvcnlNb2RlbCcsICgpID0+IHsKLSAgICAg ICAgbGV0IGNvbnRlbnQgPSBoaXN0b3J5Q29sbGVjdGlvbi5oaXN0b3J5TGlzdDsKLQotICAgICAg ICBleHBlY3QoY29udGVudCkudG9FcXVhbChoaXN0b3J5TW9kZWwpOwotICAgICAgfSk7Ci0KLSAg ICB9KTsKLSAgfSk7Ci19KTsKZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQv aGlzdG9yeS9xdWVyeV9oaXN0b3J5X3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2hpc3RvcnkvcXVlcnlfaGlzdG9yeV9zcGVjLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAzNGEwYTEyNDcuLjAwMDAwMDAwMAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0 L2hpc3RvcnkvcXVlcnlfaGlzdG9yeV9zcGVjLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNDA1ICsw LDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KLS8vCi0vLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCi0vLwotLy8g Q29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQot Ly8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl Ci0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KLQotLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tZmluZC1kb20tbm9kZSAq LwotCi1pbXBvcnQgUXVlcnlIaXN0b3J5IGZyb20gJ3NvdXJjZXMvc3FsZWRpdG9yL2hpc3Rvcnkv cXVlcnlfaGlzdG9yeSc7Ci1pbXBvcnQgSGlzdG9yeUNvbGxlY3Rpb24gZnJvbSAnc291cmNlcy9z cWxlZGl0b3IvaGlzdG9yeS9oaXN0b3J5X2NvbGxlY3Rpb24nOwotaW1wb3J0IGNsaXBib2FyZCBm cm9tICdzb3VyY2VzL3NlbGVjdGlvbi9jbGlwYm9hcmQnOwotaW1wb3J0ICQgZnJvbSAnanF1ZXJ5 JzsKLWltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JzsKLQotZGVzY3JpYmUoJ1F1ZXJ5SGlzdG9y eScsICgpID0+IHsKLSAgbGV0IGhpc3RvcnlDb2xsZWN0aW9uOwotICBsZXQgaGlzdG9yeVdyYXBw ZXI7Ci0gIGxldCBoaXN0b3J5Q29tcG9uZW50OwotCi0gIGJlZm9yZUVhY2goKCkgPT4gewotICAg IGhpc3RvcnlXcmFwcGVyID0gJCgnPGRpdiBpZD0iaGlzdG9yeV9ncmlkIj48L2Rpdj4nKS5hcHBl bmRUbygnYm9keScpOwotICB9KTsKLQotICBkZXNjcmliZSgnd2hlbiB0aGVyZSBpcyBubyBoaXN0 b3J5JywgKCkgPT4gewotICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgaGlzdG9yeUNvbGxl Y3Rpb24gPSBuZXcgSGlzdG9yeUNvbGxlY3Rpb24oW10pOwotCi0gICAgICBoaXN0b3J5Q29tcG9u ZW50ID0gbmV3IFF1ZXJ5SGlzdG9yeShoaXN0b3J5V3JhcHBlciwgaGlzdG9yeUNvbGxlY3Rpb24p OwotICAgICAgaGlzdG9yeUNvbXBvbmVudC5yZW5kZXIoKTsKLSAgICB9KTsKLQotICAgIGl0KCdo YXMgbm8gZW50cmllcycsIChkb25lKSA9PiB7Ci0gICAgICBsZXQgZm91bmRDaGlsZHJlbiA9IGhp c3RvcnlXcmFwcGVyLmZpbmQoJyNxdWVyeV9saXN0Jyk7Ci0gICAgICBleHBlY3QoZm91bmRDaGls ZHJlbi5sZW5ndGgpLnRvQmUoMCk7Ci0gICAgICBkb25lKCk7Ci0gICAgfSk7Ci0KLSAgICBpdCgn Tm8gaGlzdG9yeSBmb3VuZCBpcyBkaXNwbGF5ZWQnLCAoZG9uZSkgPT4gewotICAgICAgZXhwZWN0 KGhpc3RvcnlXcmFwcGVyLmZpbmQoJy5wZy1wYW5lbC1tZXNzYWdlJykuaHRtbCgpKS50b0JlKCdO byBoaXN0b3J5IGZvdW5kJyk7Ci0gICAgICBkb25lKCk7Ci0gICAgfSk7Ci0gIH0pOwotCi0gIGRl c2NyaWJlKCd3aGVuIHRoZXJlIGlzIGhpc3RvcnknLCAoKSA9PiB7Ci0gICAgbGV0IHF1ZXJ5RW50 cmllczsKLSAgICBsZXQgcXVlcnlEZXRhaWw7Ci0KLSAgICBkZXNjcmliZSgnd2hlbiB0d28gU1FM IHF1ZXJpZXMgd2VyZSBleGVjdXRlZCcsICgpID0+IHsKLQotICAgICAgYmVmb3JlRWFjaCgoKSA9 PiB7Ci0gICAgICAgIGNvbnN0IGhpc3RvcnlPYmplY3RzID0gW3sKLSAgICAgICAgICBxdWVyeTog J2ZpcnN0IHNxbCBzdGF0ZW1lbnQnLAotICAgICAgICAgIHN0YXJ0X3RpbWU6IG5ldyBEYXRlKDIw MTcsIDUsIDMsIDE0LCAzLCAxNSwgMTUwKSwKLSAgICAgICAgICBzdGF0dXM6IHRydWUsCi0gICAg ICAgICAgcm93X2FmZmVjdGVkOiAxMjM0NSwKLSAgICAgICAgICB0b3RhbF90aW1lOiAnMTQgbXNl YycsCi0gICAgICAgICAgbWVzc2FnZTogJ3NvbWV0aGluZyBpbXBvcnRhbnQgRVJST1I6ICBtZXNz YWdlIGZyb20gZmlyc3Qgc3FsIHF1ZXJ5JywKLSAgICAgICAgfSwgewotICAgICAgICAgIHF1ZXJ5 OiAnc2Vjb25kIHNxbCBzdGF0ZW1lbnQnLAotICAgICAgICAgIHN0YXJ0X3RpbWU6IG5ldyBEYXRl KDIwMTYsIDExLCAxMSwgMSwgMzMsIDUsIDk5KSwKLSAgICAgICAgICBzdGF0dXM6IGZhbHNlLAot ICAgICAgICAgIHJvd19hZmZlY3RlZDogMSwKLSAgICAgICAgICB0b3RhbF90aW1lOiAnMjM0IG1z ZWMnLAotICAgICAgICAgIG1lc3NhZ2U6ICdzb21ldGhpbmcgaW1wb3J0YW50IEVSUk9SOiAgbWVz c2FnZSBmcm9tIHNlY29uZCBzcWwgcXVlcnknLAotICAgICAgICB9XTsKLQotICAgICAgICBoaXN0 b3J5Q29sbGVjdGlvbiA9IG5ldyBIaXN0b3J5Q29sbGVjdGlvbihoaXN0b3J5T2JqZWN0cyk7Ci0g ICAgICAgIGhpc3RvcnlDb21wb25lbnQgPSBuZXcgUXVlcnlIaXN0b3J5KGhpc3RvcnlXcmFwcGVy LCBoaXN0b3J5Q29sbGVjdGlvbik7Ci0gICAgICAgIGhpc3RvcnlDb21wb25lbnQub25Db3B5VG9F ZGl0b3JDbGljaygoKT0+ey8qVGhpcyBpcyBpbnRlbnRpb25hbCAoU29uYXJRdWJlKSovfSk7Ci0g ICAgICAgIGhpc3RvcnlDb21wb25lbnQucmVuZGVyKCk7Ci0KLSAgICAgICAgcXVlcnlFbnRyaWVz ID0gaGlzdG9yeVdyYXBwZXIuZmluZCgnI3F1ZXJ5X2xpc3QgLmxpc3QtaXRlbScpOwotICAgICAg ICBxdWVyeURldGFpbCA9IGhpc3RvcnlXcmFwcGVyLmZpbmQoJyNxdWVyeV9kZXRhaWwnKTsKLSAg ICAgIH0pOwotCi0gICAgICBkZXNjcmliZSgndGhlIGhpc3RvcnkgZW50cmllcyBwYW5lbCcsICgp ID0+IHsKLSAgICAgICAgaXQoJ2hhcyB0d28gcXVlcnkgaGlzdG9yeSBlbnRyaWVzJywgKGRvbmUp ID0+IHsKLSAgICAgICAgICBleHBlY3QocXVlcnlFbnRyaWVzLmxlbmd0aCkudG9CZSgyKTsKLSAg ICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCdkaXNwbGF5cyB0aGUg cXVlcnkgaGlzdG9yeSBlbnRyaWVzIGluIG9yZGVyJywgKCkgPT4gewotICAgICAgICAgIGV4cGVj dCgkKHF1ZXJ5RW50cmllc1swXSkudGV4dCgpKS50b0NvbnRhaW4oJ2ZpcnN0IHNxbCBzdGF0ZW1l bnQnKTsKLSAgICAgICAgICBleHBlY3QoJChxdWVyeUVudHJpZXNbMV0pLnRleHQoKSkudG9Db250 YWluKCdzZWNvbmQgc3FsIHN0YXRlbWVudCcpOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgn ZGlzcGxheXMgdGhlIGZvcm1hdHRlZCB0aW1lc3RhbXAgb2YgdGhlIHF1ZXJpZXMgaW4gY2hyb25v bG9naWNhbCBvcmRlciBieSBtb3N0IHJlY2VudCBmaXJzdCcsICgpID0+IHsKLSAgICAgICAgICBl eHBlY3QoJChxdWVyeUVudHJpZXNbMF0pLmZpbmQoJy50aW1lc3RhbXAnKS50ZXh0KCkpLnRvQmUo JzE0OjAzOjE1Jyk7Ci0gICAgICAgICAgZXhwZWN0KCQocXVlcnlFbnRyaWVzWzFdKS5maW5kKCcu dGltZXN0YW1wJykudGV4dCgpKS50b0JlKCcwMTozMzowNScpOwotICAgICAgICB9KTsKLQotICAg ICAgICBpdCgncmVuZGVycyB0aGUgbW9zdCByZWNlbnQgcXVlcnkgYXMgc2VsZWN0ZWQnLCAoZG9u ZSkgPT4gewotICAgICAgICAgIGV4cGVjdCgkKHF1ZXJ5RW50cmllc1swXSkuaGFzQ2xhc3MoJ3Nl bGVjdGVkJykpLnRvQmVUcnV0aHkoKTsKLSAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0pOwot Ci0gICAgICAgIGl0KCdyZW5kZXJzIHRoZSBvbGRlciBxdWVyeSBhcyBub3Qgc2VsZWN0ZWQnLCAo KSA9PiB7Ci0gICAgICAgICAgZXhwZWN0KCQocXVlcnlFbnRyaWVzWzFdKS5oYXNDbGFzcygnc2Vs ZWN0ZWQnKSkudG9CZUZhbHN5KCk7Ci0gICAgICAgICAgZXhwZWN0KCQocXVlcnlFbnRyaWVzWzFd KS5maW5kKCcuZW50cnknKS5oYXNDbGFzcygnZXJyb3InKSkudG9CZVRydXRoeSgpOwotICAgICAg ICB9KTsKLSAgICAgIH0pOwotCi0gICAgICBkZXNjcmliZSgndGhlIGhpc3RvcnlkZXRhaWxzIHBh bmVsJywgKCkgPT4gewotICAgICAgICBsZXQgY29weUFsbEJ1dHRvbiwgY29weUVkaXRvckJ1dHRv bjsKLQotICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgICBjb3B5QWxsQnV0dG9u ID0gKCkgPT4gcXVlcnlEZXRhaWwuZmluZCgnI2hpc3RvcnktZGV0YWlsLXF1ZXJ5IC5idG4tY29w eScpOwotICAgICAgICAgIGNvcHlFZGl0b3JCdXR0b24gPSAoKSA9PiBxdWVyeURldGFpbC5maW5k KCcjaGlzdG9yeS1kZXRhaWwtcXVlcnkgLmJ0bi1jb3B5LWVkaXRvcicpOwotICAgICAgICB9KTsK LQotICAgICAgICBpdCgnc2hvdWxkIGNoYW5nZSBwcmVmZXJlbmNlIGZvbnQgc2l6ZScsICgpPT57 Ci0gICAgICAgICAgaGlzdG9yeUNvbXBvbmVudC5zZXRFZGl0b3JQcmVmKHtzcWxfZm9udF9zaXpl OiAnMS41ZW0nfSk7Ci0gICAgICAgICAgZXhwZWN0KHF1ZXJ5RGV0YWlsLmZpbmQoJyNoaXN0b3J5 LWRldGFpbC1xdWVyeSAuQ29kZU1pcnJvcicpLmF0dHIoJ3N0eWxlJykpLnRvQmUoJ2ZvbnQtc2l6 ZTogMS41ZW07Jyk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCdzaG91bGQgY2hhbmdlIHBy ZWZlcmVuY2UgY29weSB0byBlZGl0b3IgZmFsc2UnLCAoKT0+ewotICAgICAgICAgIGhpc3RvcnlD b21wb25lbnQuc2V0RWRpdG9yUHJlZih7Y29weV90b19lZGl0b3I6IGZhbHNlfSk7Ci0gICAgICAg ICAgZXhwZWN0KCQocXVlcnlEZXRhaWwuZmluZCgnI2hpc3RvcnktZGV0YWlsLXF1ZXJ5IC5idG4t Y29weS1lZGl0b3InKSkuaGFzQ2xhc3MoJ2Qtbm9uZScpKS50b0JlKHRydWUpOwotICAgICAgICB9 KTsKLQotICAgICAgICBpdCgnZGlzcGxheXMgdGhlIGZvcm1hdHRlZCB0aW1lc3RhbXAnLCAoKSA9 PiB7Ci0gICAgICAgICAgbGV0IGZpcnN0RGF0ZSA9IG5ldyBEYXRlKDIwMTcsIDUsIDMsIDE0LCAz LCAxNSwgMTUwKTsKLSAgICAgICAgICBleHBlY3QocXVlcnlEZXRhaWwudGV4dCgpKS50b0NvbnRh aW4oZmlyc3REYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygpICsgJyAnICsgZmlyc3REYXRlLnRvTG9j YWxlVGltZVN0cmluZygpKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoJ2Rpc3BsYXlzIHRo ZSBudW1iZXIgb2Ygcm93cyBhZmZlY3RlZCcsICgpID0+IHsKLSAgICAgICAgICBpZiAoL1BoYW50 b21KUy8udGVzdCh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCkpIHsKLSAgICAgICAgICAgIGV4 cGVjdChxdWVyeURldGFpbC50ZXh0KCkpLnRvQ29udGFpbignMTIzNDUnKTsKLSAgICAgICAgICB9 IGVsc2UgewotICAgICAgICAgICAgZXhwZWN0KHF1ZXJ5RGV0YWlsLnRleHQoKSkudG9Db250YWlu KCcxMiwzNDUnKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCdkaXNw bGF5cyB0aGUgdG90YWwgdGltZScsICgpID0+IHsKLSAgICAgICAgICBleHBlY3QocXVlcnlEZXRh aWwudGV4dCgpKS50b0NvbnRhaW4oJzE0IG1zZWMnKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAg aXQoJ2Rpc3BsYXlzIHRoZSBmdWxsIG1lc3NhZ2UnLCAoKSA9PiB7Ci0gICAgICAgICAgZXhwZWN0 KHF1ZXJ5RGV0YWlsLnRleHQoKSkudG9Db250YWluKCdtZXNzYWdlIGZyb20gZmlyc3Qgc3FsIHF1 ZXJ5Jyk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCdkaXNwbGF5cyBmaXJzdCBxdWVyeSBT UUwnLCAoZG9uZSkgPT4gewotICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAg ICAgZXhwZWN0KHF1ZXJ5RGV0YWlsLnRleHQoKSkudG9Db250YWluKCdmaXJzdCBzcWwgc3RhdGVt ZW50Jyk7Ci0gICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgfSwgMTAwMCk7Ci0gICAgICAg IH0pOwotCi0gICAgICAgIGRlc2NyaWJlKCd3aGVuIHRoZSAiQ29weSIgYnV0dG9uIGlzIGNsaWNr ZWQnLCAoKSA9PiB7Ci0gICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgICAgICBz cHlPbihjbGlwYm9hcmQsICdjb3B5VGV4dFRvQ2xpcGJvYXJkJyk7Ci0gICAgICAgICAgICBjb3B5 QWxsQnV0dG9uKCkudHJpZ2dlcignY2xpY2snKTsKLSAgICAgICAgICB9KTsKLQotICAgICAgICAg IGl0KCdjb3BpZXMgdGhlIHF1ZXJ5IHRvIHRoZSBjbGlwYm9hcmQnLCAoKSA9PiB7Ci0gICAgICAg ICAgICBleHBlY3QoY2xpcGJvYXJkLmNvcHlUZXh0VG9DbGlwYm9hcmQpLnRvSGF2ZUJlZW5DYWxs ZWRXaXRoKCdmaXJzdCBzcWwgc3RhdGVtZW50Jyk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0p OwotCi0gICAgICAgIGRlc2NyaWJlKCdDb3B5IGJ1dHRvbicsICgpID0+IHsKLSAgICAgICAgICBi ZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgICAgIGphc21pbmUuY2xvY2soKS5pbnN0YWxsKCk7 Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBhZnRlckVhY2goKCkgPT4gewotICAgICAgICAg ICAgamFzbWluZS5jbG9jaygpLnVuaW5zdGFsbCgpOwotICAgICAgICAgIH0pOwotCi0gICAgICAg ICAgaXQoJ3Nob3VsZCBoYXZlIHRleHQgXCdDb3B5XCcnLCAoKSA9PiB7Ci0gICAgICAgICAgICBl eHBlY3QoY29weUFsbEJ1dHRvbigpLnRleHQoKSkudG9CZSgnQ29weScpOwotICAgICAgICAgIH0p OwotCi0gICAgICAgICAgaXQoJ3Nob3VsZCBub3QgaGF2ZSB0aGUgY2xhc3MgXCd3YXMtY29waWVk XCcnLCAoKSA9PiB7Ci0gICAgICAgICAgICBleHBlY3QoY29weUFsbEJ1dHRvbigpLmhhc0NsYXNz KCd3YXMtY29waWVkJykpLnRvQmUoZmFsc2UpOwotICAgICAgICAgIH0pOwotCi0gICAgICAgICAg ZGVzY3JpYmUoJ3doZW4gdGhlIGNvcHkgYnV0dG9uIGlzIGNsaWNrZWQnLCAoKSA9PiB7Ci0gICAg ICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgICAgICAgY29weUFsbEJ1dHRvbigp LnRyaWdnZXIoJ2NsaWNrJyk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgZGVzY3Jp YmUoJ2JlZm9yZSAxLjUgc2Vjb25kcycsICgpID0+IHsKLSAgICAgICAgICAgICAgYmVmb3JlRWFj aCgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgamFzbWluZS5jbG9jaygpLnRpY2soMTQ5OSk7Ci0g ICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgIGl0KCcxLjUgc2Vjb25kcyBzaG91bGQg Y2hhbmdlIHRoZSBidXR0b24gdGV4dCB0byBcJ0NvcGllZCFcJycsICgpID0+IHsKLSAgICAgICAg ICAgICAgICBleHBlY3QoY29weUFsbEJ1dHRvbigpLnRleHQoKSkudG9CZSgnQ29waWVkIScpOwot ICAgICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgICBpdCgnc2hvdWxkIGhhdmUgdGhlIGNs YXNzIFwnd2FzLWNvcGllZFwnJywgKCkgPT4gewotICAgICAgICAgICAgICAgIGV4cGVjdChjb3B5 QWxsQnV0dG9uKCkuaGFzQ2xhc3MoJ3dhcy1jb3BpZWQnKSkudG9CZSh0cnVlKTsKLSAgICAgICAg ICAgICAgfSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgZGVzY3JpYmUoJ2FmdGVy IDEuNSBzZWNvbmRzJywgKCkgPT4gewotICAgICAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsK LSAgICAgICAgICAgICAgICBqYXNtaW5lLmNsb2NrKCkudGljaygxNTAxKTsKLSAgICAgICAgICAg ICAgfSk7Ci0KLSAgICAgICAgICAgICAgaXQoJzEuNSBzZWNvbmRzIHNob3VsZCBjaGFuZ2UgdGhl IGJ1dHRvbiB0ZXh0IGJhY2sgdG8gXCdDb3B5XCcnLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAg ZXhwZWN0KGNvcHlBbGxCdXR0b24oKS50ZXh0KCkpLnRvQmUoJ0NvcHknKTsKLSAgICAgICAgICAg ICAgfSk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgZGVzY3JpYmUoJ3doZW4gaXMg Y2xpY2tlZCBhZ2FpbiBhZnRlciAxcycsICgpID0+IHsKLSAgICAgICAgICAgICAgYmVmb3JlRWFj aCgoKSA9PiB7Ci0gICAgICAgICAgICAgICAgamFzbWluZS5jbG9jaygpLnRpY2soMTAwMCk7Ci0g ICAgICAgICAgICAgICAgY29weUFsbEJ1dHRvbigpLnRyaWdnZXIoJ2NsaWNrJyk7Ci0KLSAgICAg ICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgZGVzY3JpYmUoJ2JlZm9yZSAyLjUgc2Vjb25k cycsICgpID0+IHsKLSAgICAgICAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAg ICAgICAgICAgIGphc21pbmUuY2xvY2soKS50aWNrKDE0OTkpOwotICAgICAgICAgICAgICAgIH0p OwotCi0gICAgICAgICAgICAgICAgaXQoJ3Nob3VsZCBjaGFuZ2UgdGhlIGJ1dHRvbiB0ZXh0IHRv IFwnQ29waWVkIVwnJywgKCkgPT4gewotICAgICAgICAgICAgICAgICAgZXhwZWN0KGNvcHlBbGxC dXR0b24oKS50ZXh0KCkpLnRvQmUoJ0NvcGllZCEnKTsKLSAgICAgICAgICAgICAgICB9KTsKLQot ICAgICAgICAgICAgICAgIGl0KCdzaG91bGQgaGF2ZSB0aGUgY2xhc3MgXCd3YXMtY29waWVkXCcn LCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICBleHBlY3QoY29weUFsbEJ1dHRvbigpLmhhc0Ns YXNzKCd3YXMtY29waWVkJykpLnRvQmUodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgfSk7Ci0gICAg ICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgIGRlc2NyaWJlKCdhZnRlciAyLjUgc2Vjb25k cycsICgpID0+IHsKLSAgICAgICAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAg ICAgICAgICAgIGphc21pbmUuY2xvY2soKS50aWNrKDE1MDEpOwotICAgICAgICAgICAgICAgIH0p OwotCi0gICAgICAgICAgICAgICAgaXQoJ3Nob3VsZCBjaGFuZ2UgdGhlIGJ1dHRvbiB0ZXh0IGJh Y2sgdG8gXCdDb3B5XCcnLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICBleHBlY3QoY29weUFs bEJ1dHRvbigpLnRleHQoKSkudG9CZSgnQ29weScpOwotICAgICAgICAgICAgICAgIH0pOwotICAg ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICAgIH0pOwotICAgICAgICB9 KTsKLQotICAgICAgICBkZXNjcmliZSgnd2hlbiB0aGUgIkNvcHkgdG8gcXVlcnkgZWRpdG9yIiBi dXR0b24gaXMgY2xpY2tlZCcsICgpID0+IHsKLSAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsK LSAgICAgICAgICAgIHNweU9uKGhpc3RvcnlDb21wb25lbnQucXVlcnlIaXN0RGV0YWlscywgJ29u Q29weVRvRWRpdG9ySGFuZGxlcicpLmFuZC5jYWxsVGhyb3VnaCgpOwotICAgICAgICAgICAgY29w eUVkaXRvckJ1dHRvbigpLnRyaWdnZXIoJ2NsaWNrJyk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAg ICAgICBpdCgnc2VuZHMgdGhlIHF1ZXJ5IHRvIHRoZSBvbkNvcHlUb0VkaXRvckhhbmRsZXInLCAo KSA9PiB7Ci0gICAgICAgICAgICBleHBlY3QoaGlzdG9yeUNvbXBvbmVudC5xdWVyeUhpc3REZXRh aWxzLm9uQ29weVRvRWRpdG9ySGFuZGxlcikudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2ZpcnN0IHNx bCBzdGF0ZW1lbnQnKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGVz Y3JpYmUoJ3doZW4gdGhlIHF1ZXJ5IGZhaWxlZCcsICgpID0+IHsKLSAgICAgICAgICBsZXQgZmFp bGVkRW50cnk7Ci0KLSAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgICAgIGZh aWxlZEVudHJ5ID0gJChxdWVyeUVudHJpZXNbMV0pOwotICAgICAgICAgICAgZmFpbGVkRW50cnku dHJpZ2dlcignY2xpY2snKTsKLSAgICAgICAgICB9KTsKLQotICAgICAgICAgIGl0KCdkaXNwbGF5 cyB0aGUgZXJyb3IgbWVzc2FnZSBvbiB0b3Agb2YgdGhlIGRldGFpbHMgcGFuZScsICgpID0+IHsK LSAgICAgICAgICAgIGV4cGVjdChxdWVyeURldGFpbC50ZXh0KCkpLnRvQ29udGFpbignRXJyb3Ig TWVzc2FnZSBtZXNzYWdlIGZyb20gc2Vjb25kIHNxbCBxdWVyeScpOwotICAgICAgICAgIH0pOwot ICAgICAgICB9KTsKLSAgICAgIH0pOwotCi0KLSAgICAgIGRlc2NyaWJlKCd3aGVuIHRoZSBvbGRl ciBxdWVyeSBpcyBjbGlja2VkIG9uJywgKCkgPT4gewotICAgICAgICBsZXQgZmlyc3RFbnRyeSwg c2Vjb25kRW50cnk7Ci0KLSAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgICAgZmly c3RFbnRyeSA9ICQocXVlcnlFbnRyaWVzWzBdKTsKLSAgICAgICAgICBzZWNvbmRFbnRyeSA9ICQo cXVlcnlFbnRyaWVzWzFdKTsKLSAgICAgICAgICBzZWNvbmRFbnRyeS50cmlnZ2VyKCdjbGljaycp OwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgnZGlzcGxheXMgdGhlIHF1ZXJ5IGluIHRoZSBy aWdodCBwYW5lJywgKCkgPT4gewotICAgICAgICAgIGV4cGVjdChxdWVyeURldGFpbC50ZXh0KCkp LnRvQ29udGFpbignc2Vjb25kIHNxbCBzdGF0ZW1lbnQnKTsKLSAgICAgICAgfSk7Ci0KLSAgICAg ICAgaXQoJ2Rlc2VsZWN0cyB0aGUgZmlyc3QgaGlzdG9yeSBlbnRyeScsICgpID0+IHsKLSAgICAg ICAgICBleHBlY3QoZmlyc3RFbnRyeS5oYXNDbGFzcygnc2VsZWN0ZWQnKSkudG9CZUZhbHN5KCk7 Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCdzZWxlY3RzIHRoZSBzZWNvbmQgaGlzdG9yeSBl bnRyeScsICgpID0+IHsKLSAgICAgICAgICBleHBlY3Qoc2Vjb25kRW50cnkuaGFzQ2xhc3MoJ3Nl bGVjdGVkJykpLnRvQmVUcnV0aHkoKTsKLSAgICAgICAgfSk7Ci0gICAgICB9KTsKLQotICAgICAg ZGVzY3JpYmUoJ3doZW4gYSB0aGlyZCBTUUwgcXVlcnkgaXMgZXhlY3V0ZWQnLCAoKSA9PiB7Ci0g ICAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgICAgIGhpc3RvcnlDb2xsZWN0aW9uLmFk ZCh7Ci0gICAgICAgICAgICBxdWVyeTogJ3RoaXJkIHNxbCBzdGF0ZW1lbnQnLAotICAgICAgICAg ICAgc3RhcnRfdGltZTogbmV3IERhdGUoMjAxNywgMTEsIDExLCAxLCAzMywgNSwgOTkpLAotICAg ICAgICAgICAgc3RhdHVzOiBmYWxzZSwKLSAgICAgICAgICAgIHJvd19hZmZlY3RlZDogNSwKLSAg ICAgICAgICAgIHRvdGFsX3RpbWU6ICcyNiBtc2VjJywKLSAgICAgICAgICAgIG1lc3NhZ2U6ICdw cmV0ZXh0IEVSUk9SOiAgdGhpcmQgc3FsIG1lc3NhZ2UnLAotICAgICAgICAgIH0pOwotCi0gICAg ICAgICAgcXVlcnlFbnRyaWVzID0gaGlzdG9yeVdyYXBwZXIuZmluZCgnI3F1ZXJ5X2xpc3QgLmxp c3QtaXRlbScpOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgnZGlzcGxheXMgdGhpcmQgcXVl cnkgU1FMIGluIHRoZSByaWdodCBwYW5lJywgKCkgPT4gewotICAgICAgICAgIGV4cGVjdChxdWVy eURldGFpbC50ZXh0KCkpLnRvQ29udGFpbigndGhpcmQgc3FsIHN0YXRlbWVudCcpOwotICAgICAg ICB9KTsKLSAgICAgIH0pOwotCi0gICAgICBkZXNjcmliZSgnd2hlbiBhIGZvdXJ0aCBTUUwgcXVl cnkgaXMgZXhlY3V0ZWQnLCAoKSA9PiB7Ci0gICAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAg ICAgICAgIGhpc3RvcnlDb2xsZWN0aW9uLmFkZCh7Ci0gICAgICAgICAgICBxdWVyeTogJ2ZvdXJ0 aCBzcWwgc3RhdGVtZW50JywKLSAgICAgICAgICAgIHN0YXJ0X3RpbWU6IG5ldyBEYXRlKDIwMTcs IDEyLCAxMiwgMSwgMzMsIDUsIDk5KSwKLSAgICAgICAgICAgIHN0YXR1czogZmFsc2UsCi0gICAg ICAgICAgICByb3dfYWZmZWN0ZWQ6IDAsCi0gICAgICAgICAgICB0b3RhbF90aW1lOiAnMjYgbXNl YycsCi0gICAgICAgICAgICBtZXNzYWdlOiAnRVJST1I6IHVuZXhwZWN0ZWQgZXJyb3IgZnJvbSBm b3VydGggc3FsIG1lc3NhZ2UnLAotICAgICAgICAgIH0pOwotCi0gICAgICAgICAgcXVlcnlFbnRy aWVzID0gaGlzdG9yeVdyYXBwZXIuZmluZCgnI3F1ZXJ5X2xpc3QgLmxpc3QtaXRlbScpOwotICAg ICAgICB9KTsKLQotICAgICAgICBpdCgnZGlzcGxheXMgZm91cnRoIHF1ZXJ5IFNRTCBpbiB0aGUg cmlnaHQgcGFuZScsICgpID0+IHsKLSAgICAgICAgICBleHBlY3QocXVlcnlEZXRhaWwudGV4dCgp KS50b0NvbnRhaW4oJ0Vycm9yIE1lc3NhZ2UgdW5leHBlY3RlZCBlcnJvciBmcm9tIGZvdXJ0aCBz cWwgbWVzc2FnZScpOwotICAgICAgICB9KTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVz Y3JpYmUoJ3doZW4gc2V2ZXJhbCBkYXlzIG9mIHF1ZXJpZXMgd2VyZSBleGVjdXRlZCcsICgpID0+ IHsKLSAgICAgIGxldCBxdWVyeUVudHJ5RGF0ZUdyb3VwczsKLSAgICAgIGxldCBkYXRlVG9kYXks IGRhdGVZZXN0LCBkYXRlQmVmb3JlWWVzdDsKLQotICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0g ICAgICAgIGphc21pbmUuY2xvY2soKS5pbnN0YWxsKCk7Ci0gICAgICAgIGNvbnN0IG1vY2tlZEN1 cnJlbnREYXRlID0gbW9tZW50KCcyMDE3LTA3LTAxIDEzOjMwOjAwJyk7Ci0gICAgICAgIGphc21p bmUuY2xvY2soKS5tb2NrRGF0ZShtb2NrZWRDdXJyZW50RGF0ZS50b0RhdGUoKSk7Ci0KLSAgICAg ICAgZGF0ZVRvZGF5ID0gbW9ja2VkQ3VycmVudERhdGUudG9EYXRlKCk7Ci0gICAgICAgIGRhdGVZ ZXN0ID0gbW9ja2VkQ3VycmVudERhdGUuY2xvbmUoKS5zdWJ0cmFjdCgxLCAnZGF5cycpLnRvRGF0 ZSgpOwotICAgICAgICBkYXRlQmVmb3JlWWVzdCA9IG1vY2tlZEN1cnJlbnREYXRlLmNsb25lKCku c3VidHJhY3QoMywgJ2RheXMnKS50b0RhdGUoKTsKLQotICAgICAgICBjb25zdCBoaXN0b3J5T2Jq ZWN0cyA9IFt7Ci0gICAgICAgICAgcXVlcnk6ICdmaXJzdCB0b2RheSBzcWwgc3RhdGVtZW50JywK LSAgICAgICAgICBzdGFydF90aW1lOiBtb2NrZWRDdXJyZW50RGF0ZS50b0RhdGUoKSwKLSAgICAg ICAgICBzdGF0dXM6IHRydWUsCi0gICAgICAgICAgcm93X2FmZmVjdGVkOiAxMjM0NSwKLSAgICAg ICAgICB0b3RhbF90aW1lOiAnMTQgbXNlYycsCi0gICAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2Ug ZnJvbSBmaXJzdCB0b2RheSBzcWwgcXVlcnknLAotICAgICAgICB9LCB7Ci0gICAgICAgICAgcXVl cnk6ICdzZWNvbmQgdG9kYXkgc3FsIHN0YXRlbWVudCcsCi0gICAgICAgICAgc3RhcnRfdGltZTog bW9ja2VkQ3VycmVudERhdGUuY2xvbmUoKS5zdWJ0cmFjdCgxLCAnaG91cnMnKS50b0RhdGUoKSwK LSAgICAgICAgICBzdGF0dXM6IGZhbHNlLAotICAgICAgICAgIHJvd19hZmZlY3RlZDogMSwKLSAg ICAgICAgICB0b3RhbF90aW1lOiAnMjM0IG1zZWMnLAotICAgICAgICAgIG1lc3NhZ2U6ICdtZXNz YWdlIGZyb20gc2Vjb25kIHRvZGF5IHNxbCBxdWVyeScsCi0gICAgICAgIH0sIHsKLSAgICAgICAg ICBxdWVyeTogJ2ZpcnN0IHllc3RlcmRheSBzcWwgc3RhdGVtZW50JywKLSAgICAgICAgICBzdGFy dF90aW1lOiBtb2NrZWRDdXJyZW50RGF0ZS5jbG9uZSgpLnN1YnRyYWN0KDEsICdkYXlzJykudG9E YXRlKCksCi0gICAgICAgICAgc3RhdHVzOiB0cnVlLAotICAgICAgICAgIHJvd19hZmZlY3RlZDog MTIzNDUsCi0gICAgICAgICAgdG90YWxfdGltZTogJzE0IG1zZWMnLAotICAgICAgICAgIG1lc3Nh Z2U6ICdtZXNzYWdlIGZyb20gZmlyc3QgeWVzdGVyZGF5IHNxbCBxdWVyeScsCi0gICAgICAgIH0s IHsKLSAgICAgICAgICBxdWVyeTogJ3NlY29uZCB5ZXN0ZXJkYXkgc3FsIHN0YXRlbWVudCcsCi0g ICAgICAgICAgc3RhcnRfdGltZTogbW9ja2VkQ3VycmVudERhdGUuY2xvbmUoKS5zdWJ0cmFjdCgx LCAnZGF5cycpLnN1YnRyYWN0KDEsICdob3VycycpLnRvRGF0ZSgpLAotICAgICAgICAgIHN0YXR1 czogZmFsc2UsCi0gICAgICAgICAgcm93X2FmZmVjdGVkOiAxLAotICAgICAgICAgIHRvdGFsX3Rp bWU6ICcyMzQgbXNlYycsCi0gICAgICAgICAgbWVzc2FnZTogJ21lc3NhZ2UgZnJvbSBzZWNvbmQg eWVzdGVyZGF5IHNxbCBxdWVyeScsCi0gICAgICAgIH0sIHsKLSAgICAgICAgICBxdWVyeTogJ29s ZGVyIHRoYW4geWVzdGVyZGF5IHNxbCBzdGF0ZW1lbnQnLAotICAgICAgICAgIHN0YXJ0X3RpbWU6 IG1vY2tlZEN1cnJlbnREYXRlLmNsb25lKCkuc3VidHJhY3QoMywgJ2RheXMnKS50b0RhdGUoKSwK LSAgICAgICAgICBzdGF0dXM6IHRydWUsCi0gICAgICAgICAgcm93X2FmZmVjdGVkOiAxMjM0NSwK LSAgICAgICAgICB0b3RhbF90aW1lOiAnMTQgbXNlYycsCi0gICAgICAgICAgbWVzc2FnZTogJ21l c3NhZ2UgZnJvbSBvbGRlciB0aGFuIHllc3RlcmRheSBzcWwgcXVlcnknLAotICAgICAgICB9XTsK LSAgICAgICAgaGlzdG9yeUNvbGxlY3Rpb24gPSBuZXcgSGlzdG9yeUNvbGxlY3Rpb24oaGlzdG9y eU9iamVjdHMpOwotCi0gICAgICAgIGhpc3RvcnlDb21wb25lbnQgPSBuZXcgUXVlcnlIaXN0b3J5 KGhpc3RvcnlXcmFwcGVyLCBoaXN0b3J5Q29sbGVjdGlvbik7Ci0gICAgICAgIGhpc3RvcnlDb21w b25lbnQucmVuZGVyKCk7Ci0KLSAgICAgICAgcXVlcnlFbnRyaWVzID0gaGlzdG9yeVdyYXBwZXIu ZmluZCgnI3F1ZXJ5X2xpc3QgLmxpc3QtaXRlbScpOwotICAgICAgICBxdWVyeUVudHJ5RGF0ZUdy b3VwcyA9IGhpc3RvcnlXcmFwcGVyLmZpbmQoJyNxdWVyeV9saXN0IC5xdWVyeS1ncm91cCcpOwot ICAgICAgfSk7Ci0KLSAgICAgIGFmdGVyRWFjaCgoKSA9PiB7Ci0gICAgICAgIGphc21pbmUuY2xv Y2soKS51bmluc3RhbGwoKTsKLSAgICAgIH0pOwotCi0gICAgICBkZXNjcmliZSgndGhlIGhpc3Rv cnkgZW50cmllcyBwYW5lbCcsICgpID0+IHsKLSAgICAgICAgaXQoJ2hhcyB0aHJlZSBxdWVyeSBo aXN0b3J5IGVudHJ5IGRhdGEgZ3JvdXBzJywgKCkgPT4gewotICAgICAgICAgIGV4cGVjdChxdWVy eUVudHJ5RGF0ZUdyb3Vwcy5sZW5ndGgpLnRvQmUoMyk7Ci0gICAgICAgIH0pOwotCi0gICAgICAg IGl0KCdoYXMgdGl0bGUgYWJvdmUnLCAoKSA9PiB7Ci0gICAgICAgICAgZXhwZWN0KCQocXVlcnlF bnRyeURhdGVHcm91cHNbMF0pLmZpbmQoJy5kYXRlLWxhYmVsJykudGV4dCgpKS50b0JlKCdUb2Rh eSAtICcgKyBkYXRlVG9kYXkudG9Mb2NhbGVEYXRlU3RyaW5nKCkpOwotICAgICAgICAgIGV4cGVj dCgkKHF1ZXJ5RW50cnlEYXRlR3JvdXBzWzFdKS5maW5kKCcuZGF0ZS1sYWJlbCcpLnRleHQoKSku dG9CZSgnWWVzdGVyZGF5IC0gJyArIGRhdGVZZXN0LnRvTG9jYWxlRGF0ZVN0cmluZygpKTsKLSAg ICAgICAgICBleHBlY3QoJChxdWVyeUVudHJ5RGF0ZUdyb3Vwc1syXSkuZmluZCgnLmRhdGUtbGFi ZWwnKS50ZXh0KCkpLnRvQmUoZGF0ZUJlZm9yZVllc3QudG9Mb2NhbGVEYXRlU3RyaW5nKCkpOwot ICAgICAgICB9KTsKLSAgICAgIH0pOwotICAgIH0pOwotICB9KTsKLX0pOwpkaWZmIC0tZ2l0IGEv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvY2FsY3VsYXRlX3F1ZXJ5X3J1bl90 aW1lX3NwZWMuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9jYWxjdWxh dGVfcXVlcnlfcnVuX3RpbWVfc3BlYy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg ZTBlODFkMGQyLi4wMDAwMDAwMDAKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxl ZGl0b3IvY2FsY3VsYXRlX3F1ZXJ5X3J1bl90aW1lX3NwZWMuanMKKysrIC9kZXYvbnVsbApAQCAt MSwxMDUgKzAsMCBAQAotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMK LS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVu dCBUZWFtCi0vLyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FM IExpY2VuY2UKLS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLwotCi1pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7Ci1pbXBv cnQge2NhbGN1bGF0ZVF1ZXJ5UnVuVGltZX0gZnJvbSAnLi4vLi4vLi4vcGdhZG1pbi9zdGF0aWMv anMvc3FsZWRpdG9yL2NhbGN1bGF0ZV9xdWVyeV9ydW5fdGltZSc7Ci0KLWRlc2NyaWJlKCcjY2Fs Y3VsYXRlUXVlcnlSdW5UaW1lJywgKCkgPT4gewotICBkZXNjcmliZSgndGltZSBkaWZmZXJlbmNl IGlzIHNtYWxsZXIgdGhlbiAxIHNlY29uZCcsICgpID0+IHsKLSAgICBpdCgnZGlzcGxheXMgbWls bGlzZWNvbmRzJywgKCkgPT4gewotICAgICAgbGV0IHN0YXJ0RGF0ZSA9IG1vbWVudCh7Ci0gICAg ICAgIHllYXJzOjIwMTgsCi0gICAgICAgIG1vbnRoczo0LAotICAgICAgICBkYXRlOjIsCi0gICAg ICAgIGhvdXJzOjEwLAotICAgICAgICBtaW51dGVzOjMwLAotICAgICAgICBzZWNvbmRzOjIwLAot ICAgICAgICBtaWxsaXNlY29uZHM6MTIzfSkudG9EYXRlKCk7Ci0gICAgICBsZXQgZW5kRGF0ZSA9 IG1vbWVudCh7Ci0gICAgICAgIHllYXJzOjIwMTgsCi0gICAgICAgIG1vbnRoczo0LAotICAgICAg ICBkYXRlOjIsCi0gICAgICAgIGhvdXJzOjEwLAotICAgICAgICBtaW51dGVzOjMwLAotICAgICAg ICBzZWNvbmRzOjIxLAotICAgICAgICBtaWxsaXNlY29uZHM6NzB9KS50b0RhdGUoKTsKLSAgICAg IGV4cGVjdChjYWxjdWxhdGVRdWVyeVJ1blRpbWUoc3RhcnREYXRlLCBlbmREYXRlKSkKLSAgICAg ICAgLnRvRXF1YWwoJzk0NyBtc2VjJyk7Ci0gICAgfSk7Ci0gIH0pOwotCi0gIGRlc2NyaWJlKCd0 aW1lIGRpZmZlcmVuY2UgaXMgc21hbGxlciB0aGVuIDEgbWludXRlJywgKCkgPT4gewotICAgIGl0 KCdkaXNwbGF5cyBtaWxsaXNlY29uZHMnLCAoKSA9PiB7Ci0gICAgICBsZXQgc3RhcnREYXRlID0g bW9tZW50KHsKLSAgICAgICAgeWVhcnM6MjAxOCwKLSAgICAgICAgbW9udGhzOjQsCi0gICAgICAg IGRhdGU6MiwKLSAgICAgICAgaG91cnM6MTAsCi0gICAgICAgIG1pbnV0ZXM6MzAsCi0gICAgICAg IHNlY29uZHM6MjAsCi0gICAgICAgIG1pbGxpc2Vjb25kczoxMjN9KS50b0RhdGUoKTsKLSAgICAg IGxldCBlbmREYXRlID0gbW9tZW50KHsKLSAgICAgICAgeWVhcnM6MjAxOCwKLSAgICAgICAgbW9u dGhzOjQsCi0gICAgICAgIGRhdGU6MiwKLSAgICAgICAgaG91cnM6MTAsCi0gICAgICAgIG1pbnV0 ZXM6MzEsCi0gICAgICAgIHNlY29uZHM6MTUsCi0gICAgICAgIG1pbGxpc2Vjb25kczo3MH0pLnRv RGF0ZSgpOwotICAgICAgZXhwZWN0KGNhbGN1bGF0ZVF1ZXJ5UnVuVGltZShzdGFydERhdGUsIGVu ZERhdGUpKQotICAgICAgICAudG9FcXVhbCgnNTQgc2VjcyA5NDcgbXNlYycpOwotICAgIH0pOwot ICB9KTsKLQotICBkZXNjcmliZSgndGltZSBkaWZmZXJlbmNlIGlzIGJpZ2dlciB0aGVuIDEgbWlu dXRlJywgKCkgPT4gewotICAgIGl0KCdkaXNwbGF5cyBtaWxsaXNlY29uZHMnLCAoKSA9PiB7Ci0g ICAgICBsZXQgc3RhcnREYXRlID0gbW9tZW50KHsKLSAgICAgICAgeWVhcnM6MjAxOCwKLSAgICAg ICAgbW9udGhzOjQsCi0gICAgICAgIGRhdGU6MiwKLSAgICAgICAgaG91cnM6MTAsCi0gICAgICAg IG1pbnV0ZXM6MzAsCi0gICAgICAgIHNlY29uZHM6MjAsCi0gICAgICAgIG1pbGxpc2Vjb25kczox MjN9KS50b0RhdGUoKTsKLSAgICAgIGxldCBlbmREYXRlID0gbW9tZW50KHsKLSAgICAgICAgeWVh cnM6MjAxOCwKLSAgICAgICAgbW9udGhzOjQsCi0gICAgICAgIGRhdGU6MiwKLSAgICAgICAgaG91 cnM6MTAsCi0gICAgICAgIG1pbnV0ZXM6NDAsCi0gICAgICAgIHNlY29uZHM6MTUsCi0gICAgICAg IG1pbGxpc2Vjb25kczo3MH0pLnRvRGF0ZSgpOwotICAgICAgZXhwZWN0KGNhbGN1bGF0ZVF1ZXJ5 UnVuVGltZShzdGFydERhdGUsIGVuZERhdGUpKQotICAgICAgICAudG9FcXVhbCgnOSBtaW4gNTQg c2VjcycpOwotICAgIH0pOwotICB9KTsKLQotICBkZXNjcmliZSgndGltZSBkaWZmZXJlbmNlIGlz IGJpZ2dlciB0aGVuIDEgaG91cicsICgpID0+IHsKLSAgICBpdCgnZGlzcGxheXMgc2Vjb25kcywg bWlsbGlzZWNvbmRzJywgKCkgPT4gewotICAgICAgbGV0IHN0YXJ0RGF0ZSA9IG1vbWVudCh7Ci0g ICAgICAgIHllYXJzOjIwMTgsCi0gICAgICAgIG1vbnRoczo0LAotICAgICAgICBkYXRlOjIsCi0g ICAgICAgIGhvdXJzOjEwLAotICAgICAgICBtaW51dGVzOjMwLAotICAgICAgICBzZWNvbmRzOjIw LAotICAgICAgICBtaWxsaXNlY29uZHM6MTIzfSkudG9EYXRlKCk7Ci0gICAgICBsZXQgZW5kRGF0 ZSA9IG1vbWVudCh7Ci0gICAgICAgIHllYXJzOjIwMTgsCi0gICAgICAgIG1vbnRoczo0LAotICAg ICAgICBkYXRlOjIsCi0gICAgICAgIGhvdXJzOjExLAotICAgICAgICBtaW51dGVzOjQwLAotICAg ICAgICBzZWNvbmRzOjE1LAotICAgICAgICBtaWxsaXNlY29uZHM6NzB9KS50b0RhdGUoKTsKLSAg ICAgIGV4cGVjdChjYWxjdWxhdGVRdWVyeVJ1blRpbWUoc3RhcnREYXRlLCBlbmREYXRlKSkKLSAg ICAgICAgLnRvRXF1YWwoJzEgaHIgOSBtaW4nKTsKLSAgICB9KTsKLSAgfSk7Ci19KTsKZGlmZiAt LWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2NhbGxfcmVuZGVyX2Fm dGVyX3BvbGxfc3BlYy5qcyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2Nh bGxfcmVuZGVyX2FmdGVyX3BvbGxfc3BlYy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggOTAzNWYxNjEyLi4wMDAwMDAwMDAKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9z cWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbF9zcGVjLmpzCisrKyAvZGV2L251bGwKQEAg LTEsMjAyICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLS8vCi0vLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xz Ci0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1l bnQgVGVhbQotLy8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNR TCBMaWNlbmNlCi0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8KLQotaW1wb3J0IHtjYWxsUmVuZGVyQWZ0ZXJQb2xsfSBmcm9t ICcuLi8uLi8uLi9wZ2FkbWluL3N0YXRpYy9qcy9zcWxlZGl0b3IvY2FsbF9yZW5kZXJfYWZ0ZXJf cG9sbCc7Ci1pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7Ci0KLWRlc2NyaWJlKCcjY2FsbFJl bmRlckFmdGVyUG9sbCcsICgpID0+IHsKLSAgbGV0IHNxbEVkaXRvclNweSwgcXVlcnlSZXN1bHQs IE5vdGlmeTsKLSAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgbGV0IHRvZGF5ID0gbW9tZW50KCcy MDE4LTAxLTAxIDEwOjEyOjMxJykudG9EYXRlKCk7Ci0gICAgamFzbWluZS5jbG9jaygpLmluc3Rh bGwoKTsKLSAgICBqYXNtaW5lLmNsb2NrKCkubW9ja0RhdGUodG9kYXkpOwotICAgIHNxbEVkaXRv clNweSA9IHsKLSAgICAgIF9yZW5kZXI6IGphc21pbmUuY3JlYXRlU3B5KCdTUUxFZGl0b3IuX3Jl bmRlcicpLAotICAgICAgc2V0SXNRdWVyeVJ1bm5pbmc6IGphc21pbmUuY3JlYXRlU3B5KCdTUUxF ZGl0b3Iuc2V0SXNRdWVyeVJ1bm5pbmcnKSwKLSAgICAgIHRyaWdnZXI6IGphc21pbmUuY3JlYXRl U3B5KCdTUUxFZGl0b3IudHJpZ2dlcicpLAotICAgICAgdXBkYXRlX21zZ19oaXN0b3J5OiBqYXNt aW5lLmNyZWF0ZVNweSgnU1FMRWRpdG9yLnVwZGF0ZV9tc2dfaGlzdG9yeScpLAotICAgICAgZGlz YWJsZV90b29sX2J1dHRvbnM6IGphc21pbmUuY3JlYXRlU3B5KCdTUUxFZGl0b3IuZGlzYWJsZV90 b29sX2J1dHRvbnMnKSwKLSAgICAgIGRpc2FibGVfdHJhbnNhY3Rpb25fYnV0dG9uczogamFzbWlu ZS5jcmVhdGVTcHkoJ1NRTEVkaXRvci5kaXNhYmxlX3RyYW5zYWN0aW9uX2J1dHRvbnMnKSwKLSAg ICAgIHJlc2V0X2RhdGFfc3RvcmU6IGphc21pbmUuY3JlYXRlU3B5KCdTUUxFZGl0b3IucmVzZXRf ZGF0YV9zdG9yZScpLAotICAgICAgZW5hYmxlX2Rpc2FibGVfZG93bmxvYWRfYnRuOiBqYXNtaW5l LmNyZWF0ZVNweSgnU1FMRWRpdG9yLmVuYWJsZV9kaXNhYmxlX2Rvd25sb2FkX2J0bicpLAotICAg ICAgY2hlY2tfZGJfbmFtZV9jaGFuZ2U6IGphc21pbmUuY3JlYXRlU3B5KCdTUUxFZGl0b3IuY2hl Y2tfZGJfbmFtZV9jaGFuZ2UnKSwKLSAgICAgIHF1ZXJ5X3N0YXJ0X3RpbWU6IG5ldyBEYXRlKCks Ci0gICAgfTsKLSAgICBOb3RpZnkgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaignTm90aWZ5JywgWydz dWNjZXNzJ10pOwotICB9KTsKLQotICBhZnRlckVhY2goZnVuY3Rpb24gKCkgewotICAgIGphc21p bmUuY2xvY2soKS51bmluc3RhbGwoKTsKLSAgfSk7Ci0KLSAgbGV0IGV4cGVjdEFjdGlvbiA9IChl eHBlY3RPYmosIGNhbGxXaXRoVmFsdWU9bnVsbCk9PiB7Ci0gICAgY2FsbFJlbmRlckFmdGVyUG9s bChzcWxFZGl0b3JTcHksIE5vdGlmeSwgcXVlcnlSZXN1bHQpOwotICAgIGlmIChjYWxsV2l0aFZh bHVlICE9PSBudWxsKSB7Ci0gICAgICBleHBlY3QoZXhwZWN0T2JqKS50b0hhdmVCZWVuQ2FsbGVk V2l0aChjYWxsV2l0aFZhbHVlKTsKLSAgICB9IGVsc2UgewotICAgICAgZXhwZWN0KGV4cGVjdE9i aikudG9IYXZlQmVlbkNhbGxlZFdpdGgoKTsKLSAgICB9Ci0gIH07Ci0KLSAgbGV0IHF1ZXJ5UmVz dWx0MSA9ICgpPT57Ci0gICAgcXVlcnlSZXN1bHQgPSB7Ci0gICAgICByb3dzX2FmZmVjdGVkOiAx MCwKLSAgICAgIGhhc19tb3JlX3Jvd3M6IGZhbHNlLAotICAgICAgY29saW5mbzoge30sCi0gICAg fTsKLSAgfTsKLQotICBsZXQgcXVlcnlSZXN1bHQyID0gKCk9PnsKLSAgICBxdWVyeVJlc3VsdCA9 IHsKLSAgICAgIHJvd3NfYWZmZWN0ZWQ6IDEwLAotICAgICAgaGFzX21vcmVfcm93czogZmFsc2Us Ci0gICAgICBjb2xpbmZvOiB1bmRlZmluZWQsCi0gICAgICByZXN1bHQ6ICdTb21lIHJlc3VsdCcs Ci0gICAgfTsKLSAgfTsKLQotICBsZXQgZGlzcGxheU5vdGlmaWNhdGlvbkFjdGlvbiA9ICgpPT4g ewotICAgIHNxbEVkaXRvclNweS5pbmZvX25vdGlmaWVyX3RpbWVvdXQgPSAxMDsKLSAgICBjYWxs UmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRvclNweSwgTm90aWZ5LCBxdWVyeVJlc3VsdCk7Ci0KLSAg ICBleHBlY3QoTm90aWZ5LnN1Y2Nlc3MpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAotICAgICAgJ1F1 ZXJ5IHJldHVybmVkIHN1Y2Nlc3NmdWxseSBpbiAwIG1zZWMuJywKLSAgICAgIDEwCi0gICAgKTsK LSAgfTsKLQotICBsZXQgc2F2ZUFjdGlvbiA9ICgpPT4gewotICAgIGNhbGxSZW5kZXJBZnRlclBv bGwoc3FsRWRpdG9yU3B5LCBOb3RpZnksIHF1ZXJ5UmVzdWx0KTsKLQotICAgIGV4cGVjdChzcWxF ZGl0b3JTcHkudXBkYXRlX21zZ19oaXN0b3J5KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgKLSAgICAg IHRydWUsCi0gICAgICAnU29tZSByZXN1bHRcblxuUXVlcnkgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5 IGluIDAgbXNlYy4nLAotICAgICAgZmFsc2UKLSAgICApOwotICB9OwotCi0gIGRlc2NyaWJlKCdp dCBpcyBub3QgYSBxdWVyeSB0b29sJywgKCkgPT4gewotICAgIGJlZm9yZUVhY2goKCkgPT4gewot ICAgICAgc3FsRWRpdG9yU3B5LmlzX3F1ZXJ5X3Rvb2wgPSBmYWxzZTsKLSAgICB9KTsKLQotICAg IGRlc2NyaWJlKCdxdWVyeSB3YXMgc3VjY2Vzc2Z1bCBhbmQgaGF2ZSByZXN1bHRzJywgKCkgPT4g ewotICAgICAgYmVmb3JlRWFjaChxdWVyeVJlc3VsdDEpOwotCi0gICAgICBpdCgncmVuZGVycyB0 aGUgZWRpdG9yJywgKCkgPT4gewotICAgICAgICBleHBlY3RBY3Rpb24oc3FsRWRpdG9yU3B5Ll9y ZW5kZXIsIHF1ZXJ5UmVzdWx0KTsKLSAgICAgIH0pOwotCi0gICAgICBpdCgnaW5mb3JtIHNxbGVk aXRvciB0aGF0IHRoZSBxdWVyeSBzdG9wcGVkIHJ1bm5pbmcnLCAoKSA9PiB7Ci0gICAgICAgIGV4 cGVjdEFjdGlvbihzcWxFZGl0b3JTcHkuc2V0SXNRdWVyeVJ1bm5pbmcsIGZhbHNlKTsKLSAgICAg IH0pOwotCi0gICAgICBpdCgnaGlkZXMgdGhlIGxvYWRpbmcgaWNvbicsICgpID0+IHsKLSAgICAg ICAgZXhwZWN0QWN0aW9uKHNxbEVkaXRvclNweS50cmlnZ2VyLCAncGdhZG1pbi1zcWxlZGl0b3I6 bG9hZGluZy1pY29uOmhpZGUnKTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUo J3F1ZXJ5IHdhcyBzdWNjZXNzZnVsIGJ1dCBoYWQgbm8gcmVzdWx0IHRvIGRpc3BsYXknLCAoKSA9 PiB7Ci0gICAgICBiZWZvcmVFYWNoKHF1ZXJ5UmVzdWx0Mik7Ci0KLSAgICAgIGl0KCdzYXZlcyBl eGVjdXRpb24gaW5mb3JtYXRpb24gaW4gdGhlIGhpc3RvcnknLCAoKSA9PiB7Ci0gICAgICAgIHNh dmVBY3Rpb24oKTsKLSAgICAgIH0pOwotCi0gICAgICBpdCgncmVzZXRzIHRoZSBjaGFuZ2VkIGRh dGEgc3RvcmUnLCAoKSA9PiB7Ci0gICAgICAgIGV4cGVjdEFjdGlvbihzcWxFZGl0b3JTcHkucmVz ZXRfZGF0YV9zdG9yZSk7Ci0gICAgICB9KTsKLQotICAgICAgaXQoJ2luZm9ybSBzcWxlZGl0b3Ig dGhhdCB0aGUgcXVlcnkgc3RvcHBlZCBydW5uaW5nJywgKCkgPT4gewotICAgICAgICBleHBlY3RB Y3Rpb24oc3FsRWRpdG9yU3B5LnNldElzUXVlcnlSdW5uaW5nLCBmYWxzZSk7Ci0gICAgICB9KTsK LQotICAgICAgaXQoJ2hpZGVzIHRoZSBsb2FkaW5nIGljb24nLCAoKSA9PiB7Ci0gICAgICAgIGV4 cGVjdEFjdGlvbihzcWxFZGl0b3JTcHkudHJpZ2dlciwgJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRp bmctaWNvbjpoaWRlJyk7Ci0gICAgICB9KTsKLQotICAgICAgZGVzY3JpYmUoJ25vdGlmaWNhdGlv bnMgYXJlIGVuYWJsZWQnLCAoKSA9PiB7Ci0gICAgICAgIGl0KCdkaXNwbGF5IG5vdGlmaWNhdGlv bicsIGRpc3BsYXlOb3RpZmljYXRpb25BY3Rpb24pOwotICAgICAgfSk7Ci0KLSAgICAgIGl0KCdk aXNhYmxlcyB0aGUgc2F2ZSByZXN1bHRzIGJ1dHRvbicsICgpID0+IHsKLSAgICAgICAgZXhwZWN0 QWN0aW9uKHNxbEVkaXRvclNweS5lbmFibGVfZGlzYWJsZV9kb3dubG9hZF9idG4sIHRydWUpOwot ICAgICAgICBleHBlY3Qoc3FsRWRpdG9yU3B5LnRyaWdnZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KCdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246aGlkZScpOwotICAgICAgfSk7Ci0gICAg fSk7Ci0gIH0pOwotCi0gIGRlc2NyaWJlKCdpdCBpcyBhIHF1ZXJ5IHRvb2wnLCAoKSA9PiB7Ci0g ICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICBzcWxFZGl0b3JTcHkuaXNfcXVlcnlfdG9vbCA9 IHRydWU7Ci0gICAgfSk7Ci0KLSAgICBkZXNjcmliZSgncXVlcnkgd2FzIHN1Y2Nlc3NmdWwgYW5k IGhhdmUgcmVzdWx0cycsICgpID0+IHsKLSAgICAgIGJlZm9yZUVhY2gocXVlcnlSZXN1bHQxKTsK LQotICAgICAgaXQoJ3JlbmRlcnMgdGhlIGVkaXRvcicsICgpID0+IHsKLSAgICAgICAgZXhwZWN0 QWN0aW9uKHNxbEVkaXRvclNweS5fcmVuZGVyLCBxdWVyeVJlc3VsdCk7Ci0gICAgICB9KTsKLQot ICAgICAgaXQoJ2luZm9ybSBzcWxlZGl0b3IgdGhhdCB0aGUgcXVlcnkgc3RvcHBlZCBydW5uaW5n JywgKCkgPT4gewotICAgICAgICBleHBlY3RBY3Rpb24oc3FsRWRpdG9yU3B5LnNldElzUXVlcnlS dW5uaW5nLCBmYWxzZSk7Ci0gICAgICB9KTsKLQotICAgICAgaXQoJ2hpZGVzIHRoZSBsb2FkaW5n IGljb24nLCAoKSA9PiB7Ci0gICAgICAgIGV4cGVjdEFjdGlvbihzcWxFZGl0b3JTcHkudHJpZ2dl ciwgJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0gICAgICB9KTsKLQot ICAgICAgaXQoJ2VuYWJsZXMgc3FsZWRpdG9yIHRvb2xzIGJ1dHRvbnMnLCAoKSA9PiB7Ci0gICAg ICAgIGV4cGVjdEFjdGlvbihzcWxFZGl0b3JTcHkuZGlzYWJsZV90b29sX2J1dHRvbnMsIGZhbHNl KTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJ3F1ZXJ5IHdhcyBzdWNjZXNz ZnVsIGJ1dCBoYWQgbm8gcmVzdWx0IHRvIGRpc3BsYXknLCAoKSA9PiB7Ci0gICAgICBiZWZvcmVF YWNoKHF1ZXJ5UmVzdWx0Mik7Ci0KLSAgICAgIGl0KCdzYXZlcyBleGVjdXRpb24gaW5mb3JtYXRp b24gaW4gdGhlIGhpc3RvcnknLCAoKSA9PiB7Ci0gICAgICAgIHNhdmVBY3Rpb24oKTsKLSAgICAg IH0pOwotCi0gICAgICBpdCgncmVzZXRzIHRoZSBjaGFuZ2VkIGRhdGEgc3RvcmUnLCAoKSA9PiB7 Ci0gICAgICAgIGV4cGVjdEFjdGlvbihzcWxFZGl0b3JTcHkucmVzZXRfZGF0YV9zdG9yZSk7Ci0g ICAgICB9KTsKLQotICAgICAgaXQoJ2luZm9ybSBzcWxlZGl0b3IgdGhhdCB0aGUgcXVlcnkgc3Rv cHBlZCBydW5uaW5nJywgKCkgPT4gewotICAgICAgICBleHBlY3RBY3Rpb24oc3FsRWRpdG9yU3B5 LnNldElzUXVlcnlSdW5uaW5nLCBmYWxzZSk7Ci0gICAgICB9KTsKLQotICAgICAgaXQoJ2hpZGVz IHRoZSBsb2FkaW5nIGljb24nLCAoKSA9PiB7Ci0gICAgICAgIGV4cGVjdEFjdGlvbihzcWxFZGl0 b3JTcHkudHJpZ2dlciwgJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmctaWNvbjpoaWRlJyk7Ci0g ICAgICB9KTsKLQotICAgICAgaXQoJ2VuYWJsZXMgc3FsZWRpdG9yIHRvb2xzIGJ1dHRvbnMnLCAo KSA9PiB7Ci0gICAgICAgIGV4cGVjdEFjdGlvbihzcWxFZGl0b3JTcHkuZGlzYWJsZV90b29sX2J1 dHRvbnMsIGZhbHNlKTsKLSAgICAgIH0pOwotCi0gICAgICBkZXNjcmliZSgnbm90aWZpY2F0aW9u cyBhcmUgZW5hYmxlZCcsICgpID0+IHsKLSAgICAgICAgaXQoJ2Rpc3BsYXkgbm90aWZpY2F0aW9u JywgZGlzcGxheU5vdGlmaWNhdGlvbkFjdGlvbik7Ci0gICAgICB9KTsKLQotICAgICAgaXQoJ2Rp c2FibGVzIHRoZSBzYXZlIHJlc3VsdHMgYnV0dG9uJywgKCkgPT4gewotICAgICAgICBleHBlY3RB Y3Rpb24oc3FsRWRpdG9yU3B5LmVuYWJsZV9kaXNhYmxlX2Rvd25sb2FkX2J0biwgdHJ1ZSk7Ci0K LSAgICAgICAgZXhwZWN0KHNxbEVkaXRvclNweS50cmlnZ2VyKS50b0hhdmVCZWVuQ2FsbGVkV2l0 aCgncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOmhpZGUnKTsKLSAgICAgIH0pOwotCi0g ICAgICBpdCgnY2hlY2sgd2hldGhlciBkYXRhYmFzZSBoYXMgYmVlbiBtb3ZlZC9yZW5hbWVkJywg KCkgPT4gewotICAgICAgICBjYWxsUmVuZGVyQWZ0ZXJQb2xsKHNxbEVkaXRvclNweSwgTm90aWZ5 LCBxdWVyeVJlc3VsdCk7Ci0KLSAgICAgICAgZXhwZWN0KHNxbEVkaXRvclNweS50cmlnZ2VyKS50 b0hhdmVCZWVuQ2FsbGVkV2l0aCgncGdhZG1pbi1zcWxlZGl0b3I6Y2hlY2tfc3luY2hyb25vdXNf ZGJfbmFtZV9jaGFuZ2UnLCBxdWVyeVJlc3VsdCk7Ci0KLSAgICAgICAgZXhwZWN0KHNxbEVkaXRv clNweS50cmlnZ2VyKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgncGdhZG1pbi1zcWxlZGl0b3I6bG9h ZGluZy1pY29uOmhpZGUnKTsKLSAgICAgIH0pOwotICAgIH0pOwotICB9KTsKLX0pOwpkaWZmIC0t Z2l0IGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvZXhlY3V0ZV9xdWVyeV9z cGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvZXhlY3V0ZV9xdWVy eV9zcGVjLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTEzNDAxZTIuLjAwMDAw MDAwMAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9leGVjdXRlX3F1 ZXJ5X3NwZWMuanMKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQ0ICswLDAgQEAKLS8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vCi0vLwotLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNRTCBUb29scwotLy8KLS8vIENvcHly aWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWluIERldmVsb3BtZW50IFRlYW0KLS8vIFRo aXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBvc3RncmVTUUwgTGljZW5jZQotLy8K LS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vCi0KLWltcG9ydCAqIGFzIHN1YmplY3QgZnJvbSAnc291cmNlcy9z cWxlZGl0b3IvZXhlY3V0ZV9xdWVyeSc7Ci1pbXBvcnQgKiBhcyBodHRwRXJyb3JIYW5kbGVyIGZy b20gJ3NvdXJjZXMvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfaHR0cF9lcnJvcl9oYW5kbGVyJzsKLWlt cG9ydCBheGlvcyBmcm9tICdheGlvcyc7Ci1pbXBvcnQgTW9ja0FkYXB0ZXIgZnJvbSAnYXhpb3Mt bW9jay1hZGFwdGVyJzsKLWltcG9ydCAkIGZyb20gJ2pxdWVyeSc7Ci0KLWNvbnN0IGNvbnRleHQg PSBkZXNjcmliZTsKLQotZGVzY3JpYmUoJ0V4ZWN1dGVRdWVyeScsICgpID0+IHsKLSAgbGV0IHNx bEVkaXRvck1vY2s7Ci0gIGxldCBuZXR3b3JrTW9jazsKLSAgbGV0IGV4ZWN1dGVRdWVyeTsKLSAg bGV0IHVzZXJNYW5hZ2VtZW50TW9jazsKLSAgbGV0IGlzTmV3VHJhbnNhY3Rpb25SZXF1aXJlZE1v Y2s7Ci0KLSAgY29uc3Qgc3RhcnRUaW1lID0gbmV3IERhdGUoMjAxOCwgMSwgMjksIDEyLCAxNSwg NTIpOwotICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICBuZXR3b3JrTW9jayA9IG5ldyBNb2NrQWRh cHRlcihheGlvcyk7Ci0gICAgdXNlck1hbmFnZW1lbnRNb2NrID0gamFzbWluZS5jcmVhdGVTcHlP YmooJ1VzZXJNYW5hZ2VtZW50JywgWwotICAgICAgJ2lzUGdhTG9naW5SZXF1aXJlZCcsCi0gICAg ICAncGdhTG9naW4nLAotICAgIF0pOwotCi0gICAgc3FsRWRpdG9yTW9jayA9IGphc21pbmUuY3Jl YXRlU3B5T2JqKCdTcWxFZGl0b3InLCBbCi0gICAgICAnY2FsbF9yZW5kZXJfYWZ0ZXJfcG9sbCcs Ci0gICAgICAnZGlzYWJsZV90b29sX2J1dHRvbnMnLAotICAgICAgJ3Jlc2V0UXVlcnlIaXN0b3J5 T2JqZWN0JywKLSAgICAgICdzZXRJc1F1ZXJ5UnVubmluZycsCi0gICAgICAndHJpZ2dlcicsCi0g ICAgICAndXBkYXRlX21zZ19oaXN0b3J5JywKLSAgICAgICdfaGlnaGxpZ2h0X2Vycm9yJywKLSAg ICAgICdfaW5pdF9wb2xsaW5nX2ZsYWdzJywKLSAgICAgICdzYXZlU3RhdGUnLAotICAgICAgJ2lu aXRUcmFuc2FjdGlvbicsCi0gICAgICAnaGFuZGxlX2Nvbm5lY3Rpb25fbG9zdCcsCi0gICAgICAn dXBkYXRlX25vdGlmaWNhdGlvbnMnLAotICAgICAgJ2Rpc2FibGVfdHJhbnNhY3Rpb25fYnV0dG9u cycsCi0gICAgICAnZW5hYmxlX2Rpc2FibGVfZG93bmxvYWRfYnRuJywKLSAgICBdKTsKLSAgICBz cWxFZGl0b3JNb2NrLnRyYW5zSWQgPSAxMjM7Ci0gICAgc3FsRWRpdG9yTW9jay5yb3dzX2FmZmVj dGVkID0gMTAwMDsKLSAgICBleGVjdXRlUXVlcnkgPSBuZXcgc3ViamVjdC5FeGVjdXRlUXVlcnko c3FsRWRpdG9yTW9jaywgdXNlck1hbmFnZW1lbnRNb2NrKTsKLSAgICBpc05ld1RyYW5zYWN0aW9u UmVxdWlyZWRNb2NrID0gc3B5T24oaHR0cEVycm9ySGFuZGxlciwgJ2h0dHBSZXNwb25zZVJlcXVp cmVzTmV3VHJhbnNhY3Rpb24nKTsKLSAgfSk7Ci0KLSAgYWZ0ZXJFYWNoKCgpID0+IHsKLSAgICBu ZXR3b3JrTW9jay5yZXN0b3JlKCk7Ci0gIH0pOwotCi0gIGxldCB1cGRhdGVIaXN0b3J5Tm90Q2Fs bGVkID0gKGRvbmUpPT4gewotICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgZXhwZWN0KHNx bEVkaXRvck1vY2sudXBkYXRlX21zZ19oaXN0b3J5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOwot ICAgICAgZG9uZSgpOwotICAgIH0sIDApOwotICB9OwotCi0gIGxldCBwZ2FMb2dpbk5vdENhbGxl ZCA9IChkb25lKT0+IHsKLSAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgIGV4cGVjdCh1c2Vy TWFuYWdlbWVudE1vY2sucGdhTG9naW4pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgICBk b25lKCk7Ci0gICAgfSwgMCk7Ci0gIH07Ci0KLSAgbGV0IGRpc2FibGVUb29sQnV0dG9uc05vdENh bGxlZCA9IChkb25lKT0+IHsKLSAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgIGV4cGVjdChz cWxFZGl0b3JNb2NrLmRpc2FibGVfdG9vbF9idXR0b25zKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgp OwotICAgICAgZG9uZSgpOwotICAgIH0sIDApOwotICB9OwotCi0gIGxldCBjYW5jZWxCdXR0b25O b3RDYWxsZWQgPSAoZG9uZSk9PiB7Ci0gICAgbGV0IGNhbmNlbEJ1dHRvblNweSA9IHNweU9uKCQu Zm4sICdwcm9wJyk7Ci0gICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICBleHBlY3QoY2FuY2Vs QnV0dG9uU3B5KS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOwotICAgICAgZG9uZSgpOwotICAgIH0s IDApOwotICB9OwotCi0gIGxldCBiZWZvcmVFYWNoTm90Q29ubmVjdGVkID0gKCk9PiB7Ci0gICAg bGV0IHJlc3BvbnNlID0gewotICAgICAgZGF0YTogewotICAgICAgICBzdGF0dXM6ICdOb3RDb25u ZWN0ZWQnLAotICAgICAgICByZXN1bHQ6ICdTb21lIGludGVyZXN0aW5nIHJlc3VsdCcsCi0gICAg ICB9LAotICAgIH07Ci0gICAgbmV0d29ya01vY2sub25HZXQoJy9zcWxlZGl0b3IvcXVlcnlfdG9v bC9wb2xsLzEyMycpLnJlcGx5KDIwMCwgcmVzcG9uc2UpOwotCi0gICAgZXhlY3V0ZVF1ZXJ5LnBv bGwoKTsKLSAgfTsKLQotICBsZXQgYmVmb3JlRWFjaFB5dGhvblNlcnZlciA9ICgpPT4gewotICAg IG5ldHdvcmtNb2NrLm9uR2V0KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9sbC8xMjMnKS5yZXBs eSg0MDQsIHVuZGVmaW5lZCk7Ci0gICAgZXhlY3V0ZVF1ZXJ5LnBvbGwoKTsKLSAgfTsKLQotICBs ZXQgc2V0RmxhZ1F1ZXJ5SXNSdW5uaW5nVGVzdENhc2UgPSAoKT0+IHsKLSAgICBpdCgnc2hvdWxk IHNldCB0aGUgZmxhZyB0byBpbmZvcm0gU1FMRWRpdG9yIGEgcXVlcnkgaXMgcnVubmluZycsIChk b25lKSA9PiB7Ci0gICAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgZXhwZWN0KHNxbEVk aXRvck1vY2suc2V0SXNRdWVyeVJ1bm5pbmcpCi0gICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRX aXRoKHRydWUpOwotICAgICAgICBkb25lKCk7Ci0gICAgICB9LCAwKTsKLSAgICB9KTsKLSAgfTsK LQotICBsZXQgdXBkYXRlSGlzdG9yeU1lc3NhZ2VUZXN0Q2FzZSA9ICgpPT4gewotICAgIGl0KCdz aG91bGQgdXBkYXRlIGhpc3RvcnkgbWVzc2FnZScsIChkb25lKSA9PiB7Ci0gICAgICBzZXRUaW1l b3V0KCgpID0+IHsKLSAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sudXBkYXRlX21zZ19oaXN0 b3J5KQotICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnQnVzeScsICdTb21lIGltcG9y dGFudCByZXN1bHQnLCBmYWxzZSk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICAgIH0sIDApOwotICAg IH0pOwotICB9OwotCi0gIGxldCBjYWxsUG9vbGluZ1Rlc3RDYXNlID0gKCk9PiB7Ci0gICAgaXQo J3Nob3VsZCByZWN1cnNpdmVseSBjYWxsIHBvbGxpbmcnLCAoZG9uZSkgPT4gewotICAgICAgc2V0 VGltZW91dCgoKSA9PiB7Ci0gICAgICAgIGV4cGVjdChleGVjdXRlUXVlcnkuZGVsYXllZFBvbGwp Ci0gICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgICAgICAgZG9uZSgpOwotICAgICAg fSwgMCk7Ci0gICAgfSk7Ci0gIH07Ci0KLSAgbGV0IHNob3VsZE5vdFVwZGF0ZUhpc3RvcnlNZXNz YWdlVGVzdENhc2UgPSAoKT0+IHsKLSAgICBpdCgnc2hvdWxkIGRvZXMgbm90IHVwZGF0ZSBoaXN0 b3J5JywgKGRvbmUpID0+IHsKLSAgICAgIHVwZGF0ZUhpc3RvcnlOb3RDYWxsZWQoZG9uZSk7Ci0g ICAgfSk7Ci0gIH07Ci0KLSAgbGV0IHNob3VsZEhpZGVMb2FkaW5nSWNvblRlc3RDYXNlID0gKCk9 PiB7Ci0gICAgaXQoJ3Nob3VsZCBoaWRlIHRoZSBsb2FkaW5nIGljb24nLCAoZG9uZSkgPT4gewot ICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnRy aWdnZXIpCi0gICAgICAgICAgLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdwZ2FkbWluLXNxbGVkaXRv cjpsb2FkaW5nLWljb246aGlkZScpOwotICAgICAgICBkb25lKCk7Ci0gICAgICB9LCAwKTsKLSAg ICB9KTsKLSAgfTsKLQotICBsZXQgc2hvdWxkVXBkYXRlTG9hZGluZ0ljb25NZXNzYWdlVGVzdENh c2UgPSAoKT0+ewotICAgIGl0KCdzaG91bGQgdXBkYXRlIHRoZSBsb2FkaW5nIGljb24gbWVzc2Fn ZScsIChkb25lKSA9PiB7Ci0gICAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgZXhwZWN0 KHNxbEVkaXRvck1vY2sudHJpZ2dlcikKLSAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgo Ci0gICAgICAgICAgICAncGdhZG1pbi1zcWxlZGl0b3I6bG9hZGluZy1pY29uOm1lc3NhZ2UnLAot ICAgICAgICAgICAgJ0xvYWRpbmcgZGF0YSBmcm9tIHRoZSBkYXRhYmFzZSBzZXJ2ZXIgYW5kIHJl bmRlcmluZy4uLicKLSAgICAgICAgICApOwotICAgICAgICBkb25lKCk7Ci0gICAgICB9LCAwKTsK LSAgICB9KTsKLSAgfTsKLQotICBsZXQgYWRkTmV3RW50cnlUb0hpc3RvcnlUZXN0Q2FzZSA9ICgp PT57Ci0gICAgaXQoJ3Nob3VsZCBhZGQgbmV3IGVudHJ5IHRvIGhpc3RvcnkgYW5kIHVwZGF0ZSB0 aGUgTWVzc2FnZXMgdGFiIGFuZCBjbGVhciB0aGUgcmVzdWx0IGdyaWQnLCAoZG9uZSkgPT4gewot ICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnVw ZGF0ZV9tc2dfaGlzdG9yeSkKLSAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoCi0gICAg ICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICdTb21lIGludGVyZXN0aW5nIHJlc3VsdCcsCi0g ICAgICAgICAgICB0cnVlCi0gICAgICAgICAgKTsKLSAgICAgICAgZG9uZSgpOwotICAgICAgfSwg MCk7Ci0gICAgfSk7Ci0gIH07Ci0KLSAgbGV0IHNob3VsZEVuYWJsZVRvb2xzQnV0dG9uVGVzdENh c2UgPSAoKT0+ewotICAgIGl0KCdzaG91bGQgZW5hYmxlIHRoZSB0b29sIGJ1dHRvbnMnLCAoZG9u ZSkgPT4gewotICAgICAgc2V0VGltZW91dCgKLSAgICAgICAgKCkgPT4gewotICAgICAgICAgIGV4 cGVjdChzcWxFZGl0b3JNb2NrLmRpc2FibGVfdG9vbF9idXR0b25zKS50b0hhdmVCZWVuQ2FsbGVk V2l0aChmYWxzZSk7Ci0gICAgICAgICAgZG9uZSgpOwotICAgICAgICB9LCAwKTsKLSAgICB9KTsK LSAgfTsKLQotICBsZXQgYWRkTmV3RW50cnlUb0hpc3RvcnlFeGVjdXRpb25DYW5jZWxUZXN0Q2Fz ZSA9ICgpPT4gewotICAgIGl0KCdzaG91bGQgYWRkIG5ldyBlbnRyeSB0byBoaXN0b3J5LCBhZGQg Y2FuY2VsbGF0aW9uIG1lc3NhZ2UgdG8gTWVzc2FnZXMgdGFiIGFuZCBjbGVhciB0aGUgcmVzdWx0 IGdyaWQnLCAoZG9uZSkgPT4gewotICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgIGV4 cGVjdChzcWxFZGl0b3JNb2NrLnVwZGF0ZV9tc2dfaGlzdG9yeSkKLSAgICAgICAgICAudG9IYXZl QmVlbkNhbGxlZFdpdGgoCi0gICAgICAgICAgICBmYWxzZSwKLSAgICAgICAgICAgICdFeGVjdXRp b24gQ2FuY2VsbGVkIScsCi0gICAgICAgICAgICB0cnVlCi0gICAgICAgICAgKTsKLSAgICAgICAg ZG9uZSgpOwotICAgICAgfSwgMCk7Ci0gICAgfSk7Ci0gIH07Ci0KLSAgbGV0IHNob3VsZFJlc2V0 TGFzdFF1ZXJ5SW5mb3JtYXRpb25UZXN0Q2FzZSA9ICgpPT4gewotICAgIGl0KCdzaG91bGQgcmVz ZXQgbGFzdCBxdWVyeSBpbmZvcm1hdGlvbicsIChkb25lKSA9PiB7Ci0gICAgICBzZXRUaW1lb3V0 KAotICAgICAgICAoKSA9PiB7Ci0gICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sucmVzZXRR dWVyeUhpc3RvcnlPYmplY3QpCi0gICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoc3Fs RWRpdG9yTW9jayk7Ci0gICAgICAgICAgZG9uZSgpOwotICAgICAgICB9LCAwKTsKLSAgICB9KTsK LSAgfTsKLQotICBsZXQgc2hvdWxkTm90QWRkTmV3RW50cnlUZXN0Q2FzZSA9ICgpPT4gewotICAg IGl0KCdzaG91bGQgbm90IGFkZCBuZXcgZW50cnkgdG8gaGlzdG9yeSBhbmQgdXBkYXRlIHRoZSBN ZXNzYWdlcyB0YWInLCAoZG9uZSkgPT4gewotICAgICAgdXBkYXRlSGlzdG9yeU5vdENhbGxlZChk b25lKTsKLSAgICB9KTsKLSAgfTsKLQotICBsZXQgc2hvdWxkTm90SGlnaGxpZ2h0RXJyb3JUZXN0 Q2FzZSA9ICgpPT57Ci0gICAgaXQoJ3Nob3VsZCBub3QgaGlnaGxpZ2h0IHRoZSBlcnJvciBpbiB0 aGUgU1FMIHBhbmVsJywgKGRvbmUpID0+IHsKLSAgICAgIHNldFRpbWVvdXQoCi0gICAgICAgICgp ID0+IHsKLSAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay5faGlnaGxpZ2h0X2Vycm9yKS5u b3QKLSAgICAgICAgICAgIC50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgICAgICAgZG9uZSgpOwot ICAgICAgICB9LCAwKTsKLSAgICB9KTsKLSAgfTsKLQotICBsZXQgc2hvdWxkSGlnaGxpZ2h0RXJy b3JUZXN0Q2FzZSA9IChtc2cpPT57Ci0gICAgaXQoJ3Nob3VsZCBoaWdobGlnaHQgdGhlIGVycm9y IGluIHRoZSBTUUwgcGFuZWwnLCAoZG9uZSkgPT4gewotICAgICAgc2V0VGltZW91dCgKLSAgICAg ICAgKCkgPT4gewotICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLl9oaWdobGlnaHRfZXJy b3IpCi0gICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgobXNnKTsKLSAgICAgICAgICBk b25lKCk7Ci0gICAgICAgIH0sIDApOwotICAgIH0pOwotICB9OwotCi0gIGxldCBzaG91bGRMb2dp bk5vdERpc3BsYXllZFRlc3RDYXNlID0gKCk9PnsKLSAgICBpdCgnc2hvdWxkIGxvZ2luIGlzIG5v dCBkaXNwbGF5ZWQnLCAoZG9uZSkgPT4gewotICAgICAgcGdhTG9naW5Ob3RDYWxsZWQoZG9uZSk7 Ci0gICAgfSk7Ci0gIH07Ci0KLSAgbGV0IHNob3VsZE5vdERpc3BsYXlQR0FMb2dpblRlc3RDYXNl ID0gKCk9PnsKLSAgICBpdCgnc2hvdWxkIG5vdCBkaXNwbGF5IHBnYSBsb2dpbicsIChkb25lKSA9 PiB7Ci0gICAgICBwZ2FMb2dpbk5vdENhbGxlZChkb25lKTsKLSAgICB9KTsKLSAgfTsKLQotICBs ZXQgc2hvdWxkTG9naW5EaXNwbGF5ZWRUZXN0Q2FzZSA9ICgpPT57Ci0gICAgaXQoJ3Nob3VsZCBs b2dpbiBpcyBkaXNwbGF5ZWQnLCAoZG9uZSkgPT4gewotICAgICAgc2V0VGltZW91dCgKLSAgICAg ICAgKCkgPT4gewotICAgICAgICAgIGV4cGVjdCh1c2VyTWFuYWdlbWVudE1vY2sucGdhTG9naW4p Ci0gICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZCgpOwotICAgICAgICAgIGRvbmUoKTsKLSAg ICAgICAgfSwgMCk7Ci0gICAgfSk7Ci0gIH07Ci0KLSAgbGV0IGFkZE5ld0VudHJ5VG9IaXN0b3J5 VXBkYXRlTXNnVGVzdENhc2UgPSAobXNnKT0+IHsKLSAgICBpdCgnc2hvdWxkIGFkZCBuZXcgZW50 cnkgdG8gaGlzdG9yeSBhbmQgdXBkYXRlIHRoZSBNZXNzYWdlcyB0YWInLCAoZG9uZSkgPT4gewot ICAgICAgc2V0VGltZW91dCgKLSAgICAgICAgKCkgPT4gewotICAgICAgICAgIGV4cGVjdChzcWxF ZGl0b3JNb2NrLnVwZGF0ZV9tc2dfaGlzdG9yeSkKLSAgICAgICAgICAgIC50b0hhdmVCZWVuQ2Fs bGVkV2l0aChmYWxzZSwgbXNnKTsKLSAgICAgICAgICBkb25lKCk7Ci0gICAgICAgIH0sIDApOwot ICAgIH0pOwotICB9OwotCi0gIGxldCBzaG91bGROb3RTYXZlU3RhdGVUZXN0Q2FzZSA9ICgpPT57 Ci0gICAgaXQoJ3Nob3VsZCBub3Qgc2F2ZSB0aGUgc3RhdGUnLCAoZG9uZSkgPT4gewotICAgICAg c2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLnNhdmVTdGF0 ZSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgICAgICAgZG9uZSgpOwotICAgICAgfSwgMCk7 Ci0gICAgfSk7Ci0gIH07Ci0KLSAgbGV0IHNob3VsZFNhdmVTdGF0ZVRlc3RDYXNlID0gKCk9PiB7 Ci0gICAgaXQoJ3Nob3VsZCBzYXZlIHRoZSBzdGF0ZScsIChkb25lKSA9PiB7Ci0gICAgICBzZXRU aW1lb3V0KCgpID0+IHsKLSAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suc2F2ZVN0YXRlKS50 b0hhdmVCZWVuQ2FsbGVkV2l0aCgKLSAgICAgICAgICAnY2hlY2tfZGF0YV9jaGFuZ2VzX3RvX2V4 ZWN1dGVfcXVlcnknLAotICAgICAgICAgIFsnJ10KLSAgICAgICAgKTsKLSAgICAgICAgZG9uZSgp OwotICAgICAgfSwgMCk7Ci0gICAgfSk7Ci0gIH07Ci0KLSAgbGV0IHNob3VsZERpc2FibGVDYW5j ZWxCdXR0b25UZXN0Q2FzZSA9ICgpPT4gewotICAgIGl0KCdzaG91bGQgZGlzYWJsZSB0aGUgY2Fu Y2VsIGJ1dHRvbicsIChkb25lKSA9PiB7Ci0gICAgICBjYW5jZWxCdXR0b25Ob3RDYWxsZWQoZG9u ZSk7Ci0gICAgfSk7Ci0gIH07Ci0KLSAgbGV0IHdoZW5RdWVyeUlzU3RpbGxSdW5uaW5nVGVzdENh c2VzID0gKCk9PiB7Ci0gICAgZGVzY3JpYmUoJ3doZW4gcXVlcnkgaXMgc3RpbGwgcnVubmluZycs ICgpID0+IHsKLSAgICAgIGNvbnRleHQoJ3doZW4gbm8gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBp cyByZXR1cm5lZCcsICgpID0+IHsKLSAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAg ICAgbGV0IHJlc3BvbnNlID0gewotICAgICAgICAgICAgZGF0YToge3N0YXR1czogJ0J1c3knfSwK LSAgICAgICAgICB9OwotCi0gICAgICAgICAgbmV0d29ya01vY2sub25HZXQoJy9zcWxlZGl0b3Iv cXVlcnlfdG9vbC9wb2xsLzEyMycpLnJlcGx5KDIwMCwgcmVzcG9uc2UpOwotICAgICAgICAgIGV4 ZWN1dGVRdWVyeS5wb2xsKCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHNldEZsYWdRdWVyeUlz UnVubmluZ1Rlc3RDYXNlKCk7Ci0gICAgICAgIHNob3VsZE5vdFVwZGF0ZUhpc3RvcnlNZXNzYWdl VGVzdENhc2UoKTsKLSAgICAgICAgY2FsbFBvb2xpbmdUZXN0Q2FzZSgpOwotICAgICAgfSk7Ci0K LSAgICAgIGNvbnRleHQoJ3doZW4gYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBpcyByZXR1cm5lZCcs ICgpID0+IHsKLSAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgICAgbGV0IHJlc3Bv bnNlID0gewotICAgICAgICAgICAgZGF0YTogewotICAgICAgICAgICAgICBzdGF0dXM6ICdCdXN5 JywKLSAgICAgICAgICAgICAgcmVzdWx0OiAnU29tZSBpbXBvcnRhbnQgcmVzdWx0JywKLSAgICAg ICAgICAgIH0sCi0gICAgICAgICAgfTsKLQotICAgICAgICAgIG5ldHdvcmtNb2NrLm9uR2V0KCcv c3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9sbC8xMjMnKS5yZXBseSgyMDAsIHJlc3BvbnNlKTsKLSAg ICAgICAgICBleGVjdXRlUXVlcnkucG9sbCgpOwotICAgICAgICB9KTsKLQotICAgICAgICBzZXRG bGFnUXVlcnlJc1J1bm5pbmdUZXN0Q2FzZSgpOwotICAgICAgICB1cGRhdGVIaXN0b3J5TWVzc2Fn ZVRlc3RDYXNlKCk7Ci0gICAgICAgIGNhbGxQb29saW5nVGVzdENhc2UoKTsKLSAgICAgIH0pOwot ICAgIH0pOwotICB9OwotCi0gIGxldCB3aGVuUXVlcnlXYXNDYW5jZWxsZWRUZXN0Q2FzZXMgPSAo KT0+IHsKLSAgICBkZXNjcmliZSgnd2hlbiBxdWVyeSB3YXMgY2FuY2VsbGVkJywgKCkgPT4gewot ICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgIGxldCByZXNwb25zZSA9IHsKLSAgICAg ICAgICBkYXRhOiB7c3RhdHVzOiAnQ2FuY2VsJ30sCi0gICAgICAgIH07Ci0gICAgICAgIG5ldHdv cmtNb2NrLm9uR2V0KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9sbC8xMjMnKS5yZXBseSgyMDAs IHJlc3BvbnNlKTsKLQotICAgICAgICBleGVjdXRlUXVlcnkucG9sbCgpOwotICAgICAgfSk7Ci0K LSAgICAgIHNob3VsZEhpZGVMb2FkaW5nSWNvblRlc3RDYXNlKCk7Ci0gICAgICBhZGROZXdFbnRy eVRvSGlzdG9yeUV4ZWN1dGlvbkNhbmNlbFRlc3RDYXNlKCk7Ci0gICAgfSk7Ci0gIH07Ci0KLSAg ZGVzY3JpYmUoJyNwb2xsJywgKCkgPT4gewotICAgIGxldCByZXNwb25zZTsKLQotICAgIGJlZm9y ZUVhY2goKCkgPT4gewotICAgICAgc3FsRWRpdG9yTW9jay5QT0xMX0ZBTExCQUNLX1RJTUUgPSAo KSA9PiB7Ci0gICAgICAgIHJldHVybiAwOwotICAgICAgfTsKLQotICAgICAgZXhlY3V0ZVF1ZXJ5 LmRlbGF5ZWRQb2xsID0gamFzbWluZS5jcmVhdGVTcHkoJ0V4ZWN1dGVRdWVyeS5kZWxheWVkUG9s bCcpOwotICAgIH0pOwotCi0gICAgY29udGV4dCgnd2hlbiBTUUxFZGl0b3IgaXMgdGhlIHF1ZXJ5 IHRvb2wnLCAoKSA9PiB7Ci0gICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgc3FsRWRp dG9yTW9jay5pc19xdWVyeV90b29sID0gdHJ1ZTsKLSAgICAgIH0pOwotCi0gICAgICBkZXNjcmli ZSgnd2hlbiBzZXJ2ZXIgYW5zd2VyIHdpdGggc3VjY2VzcycsICgpID0+IHsKLSAgICAgICAgZGVz Y3JpYmUoJ3doZW4gcXVlcnkgd2FzIHN1Y2Nlc3NmdWwnLCAoKSA9PiB7Ci0gICAgICAgICAgYmVm b3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgICAgICByZXNwb25zZSA9IHsKLSAgICAgICAgICAgICAg ZGF0YToge3N0YXR1czogJ1N1Y2Nlc3MnLCBub3RpZmllczogW3sncGlkJzogMTAwfV19LAotICAg ICAgICAgICAgfTsKLSAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uR2V0KCcvc3FsZWRpdG9yL3F1 ZXJ5X3Rvb2wvcG9sbC8xMjMnKS5yZXBseSgyMDAsIHJlc3BvbnNlKTsKLQotICAgICAgICAgICAg ZXhlY3V0ZVF1ZXJ5LnBvbGwoKTsKLSAgICAgICAgICB9KTsKLQotICAgICAgICAgIHNob3VsZFVw ZGF0ZUxvYWRpbmdJY29uTWVzc2FnZVRlc3RDYXNlKCk7Ci0KLSAgICAgICAgICBpdCgnc2hvdWxk IHJlbmRlciB0aGUgcmVzdWx0cycsIChkb25lKSA9PiB7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0 KCgpID0+IHsKLSAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suY2FsbF9yZW5kZXJf YWZ0ZXJfcG9sbCkKLSAgICAgICAgICAgICAgICAudG9IYXZlQmVlbkNhbGxlZFdpdGgoe3N0YXR1 czogJ1N1Y2Nlc3MnLCBub3RpZmllczogW3sncGlkJzogMTAwfV19KTsKLSAgICAgICAgICAgICAg ZG9uZSgpOwotICAgICAgICAgICAgfSwgMCk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBp dCgnc2hvdWxkIHVwZGF0ZSB0aGUgbm90aWZpY2F0aW9uIHBhbmVsJywgKGRvbmUpID0+IHsKLSAg ICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRp dG9yTW9jay51cGRhdGVfbm90aWZpY2F0aW9ucykKLSAgICAgICAgICAgICAgICAudG9IYXZlQmVl bkNhbGxlZFdpdGgoW3sncGlkJzogMTAwfV0pOwotICAgICAgICAgICAgICBkb25lKCk7Ci0gICAg ICAgICAgICB9LCAwKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGVz Y3JpYmUoJ3doZW4gcXVlcnkgd2FzIHN1Y2Nlc3NmdWwgYnV0IGluIHRyYW5zYWN0aW9uIGJsb2Nr JywgKCkgPT4gewotICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgICAgICAgcmVz cG9uc2UgPSB7Ci0gICAgICAgICAgICAgIGRhdGE6IHtzdGF0dXM6ICdTdWNjZXNzJywgbm90aWZp ZXM6IFt7J3BpZCc6IDEwMH1dLCB0cmFuc2FjdGlvbl9zdGF0dXM6IDJ9LAotICAgICAgICAgICAg fTsKLSAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uR2V0KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wv cG9sbC8xMjMnKS5yZXBseSgyMDAsIHJlc3BvbnNlKTsKLQotICAgICAgICAgICAgZXhlY3V0ZVF1 ZXJ5LnBvbGwoKTsKLSAgICAgICAgICB9KTsKLQotICAgICAgICAgIGl0KCdlbmFibGUgdGhlIHRy YW5zYWN0aW9uIGJ1dHRvbnMnLCAoZG9uZSkgPT4gewotICAgICAgICAgICAgc2V0VGltZW91dCgK LSAgICAgICAgICAgICAgKCkgPT4gewotICAgICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JN b2NrLmRpc2FibGVfdHJhbnNhY3Rpb25fYnV0dG9ucykKLSAgICAgICAgICAgICAgICAgIC50b0hh dmVCZWVuQ2FsbGVkV2l0aChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAg ICAgICAgICB9LCAwKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZGVz Y3JpYmUoJ3doZW4gcXVlcnkgd2FzIHN1Y2Nlc3NmdWwgYnV0IG5vdCBpbiB0cmFuc2FjdGlvbiBi bG9jaycsICgpID0+IHsKLSAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgICAg IHJlc3BvbnNlID0gewotICAgICAgICAgICAgICBkYXRhOiB7c3RhdHVzOiAnU3VjY2VzcycsIG5v dGlmaWVzOiBbeydwaWQnOiAxMDB9XSwgdHJhbnNhY3Rpb25fc3RhdHVzOiAwfSwKLSAgICAgICAg ICAgIH07Ci0gICAgICAgICAgICBuZXR3b3JrTW9jay5vbkdldCgnL3NxbGVkaXRvci9xdWVyeV90 b29sL3BvbGwvMTIzJykucmVwbHkoMjAwLCByZXNwb25zZSk7Ci0KLSAgICAgICAgICAgIGV4ZWN1 dGVRdWVyeS5wb2xsKCk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpdCgnZGlzYWJsZSB0 aGUgdHJhbnNhY3Rpb24gYnV0dG9ucycsIChkb25lKSA9PiB7Ci0gICAgICAgICAgICBzZXRUaW1l b3V0KAotICAgICAgICAgICAgICAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgZXhwZWN0KHNxbEVk aXRvck1vY2suZGlzYWJsZV90cmFuc2FjdGlvbl9idXR0b25zKQotICAgICAgICAgICAgICAgICAg LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHRydWUpOwotICAgICAgICAgICAgICAgIGRvbmUoKTsKLSAg ICAgICAgICAgICAgfSwgMCk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAg IHdoZW5RdWVyeUlzU3RpbGxSdW5uaW5nVGVzdENhc2VzKCk7Ci0KLSAgICAgICAgZGVzY3JpYmUo J3doZW4gdGhlIGFwcGxpY2F0aW9uIGxvc3QgY29ubmVjdGlvbiB3aXRoIHRoZSBkYXRhYmFzZScs ICgpID0+IHsKLSAgICAgICAgICBiZWZvcmVFYWNoKGJlZm9yZUVhY2hOb3RDb25uZWN0ZWQpOwot Ci0gICAgICAgICAgc2hvdWxkSGlkZUxvYWRpbmdJY29uVGVzdENhc2UoKTsKLSAgICAgICAgICBh ZGROZXdFbnRyeVRvSGlzdG9yeVRlc3RDYXNlKCk7Ci0gICAgICAgICAgc2hvdWxkRW5hYmxlVG9v bHNCdXR0b25UZXN0Q2FzZSgpOwotICAgICAgICB9KTsKLQotICAgICAgICB3aGVuUXVlcnlXYXND YW5jZWxsZWRUZXN0Q2FzZXMoKTsKLSAgICAgIH0pOwotCi0gICAgICBkZXNjcmliZSgnd2hlbiBh biBlcnJvciBvY2N1cicsICgpID0+IHsKLSAgICAgICAgbGV0IGVycm9yTWVzc2FnZUpzb24gPSB7 Ci0gICAgICAgICAgZXJyb3Jtc2c6ICdTb21lIGVycm9yIGluIEpTT04nLAotICAgICAgICB9Owot ICAgICAgICBsZXQgZXJyb3JNZXNzYWdlVGV4dCA9ICdTb21lIHBsYWluIHRleHQgZXJyb3InOwot Ci0gICAgICAgIGRlc2NyaWJlKCd3aGVuIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgd2Fz IGxvc3QnLCAoKSA9PiB7Ci0gICAgICAgICAgZGVzY3JpYmUoJ3doZW4gSlNPTiByZXNwb25zZSBp cyBhdmFpbGFibGUnLCAoKSA9PiB7Ci0gICAgICAgICAgICBkZXNjcmliZSgnd2hlbiBsb2dpbiBp cyBub3QgcmVxdWlyZWQnLCAoKSA9PiB7Ci0gICAgICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4g ewotICAgICAgICAgICAgICAgIHVzZXJNYW5hZ2VtZW50TW9jay5pc1BnYUxvZ2luUmVxdWlyZWQu YW5kLnJldHVyblZhbHVlKGZhbHNlKTsKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHtyZXNw b25zZUpTT046IGVycm9yTWVzc2FnZUpzb259OwotICAgICAgICAgICAgICAgIG5ldHdvcmtNb2Nr Lm9uR2V0KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9sbC8xMjMnKS5yZXBseSg0MDEsIHJlc3Bv bnNlKTsKLQotICAgICAgICAgICAgICAgIGV4ZWN1dGVRdWVyeS5wb2xsKCk7Ci0gICAgICAgICAg ICAgIH0pOwotCi0gICAgICAgICAgICAgIHNob3VsZEhpZGVMb2FkaW5nSWNvblRlc3RDYXNlKCk7 Ci0gICAgICAgICAgICAgIHNob3VsZFJlc2V0TGFzdFF1ZXJ5SW5mb3JtYXRpb25UZXN0Q2FzZSgp OwotICAgICAgICAgICAgICBzaG91bGRIaWdobGlnaHRFcnJvclRlc3RDYXNlKCdTb21lIGVycm9y IGluIEpTT04nKTsKLSAgICAgICAgICAgICAgYWRkTmV3RW50cnlUb0hpc3RvcnlVcGRhdGVNc2dU ZXN0Q2FzZSgnU29tZSBlcnJvciBpbiBKU09OJyk7Ci0gICAgICAgICAgICAgIHNob3VsZEVuYWJs ZVRvb2xzQnV0dG9uVGVzdENhc2UoKTsKLSAgICAgICAgICAgICAgc2hvdWxkTG9naW5Ob3REaXNw bGF5ZWRUZXN0Q2FzZSgpOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGRlc2NyaWJl KCd3aGVuIGxvZ2luIGlzIHJlcXVpcmVkJywgKCkgPT4gewotICAgICAgICAgICAgICBiZWZvcmVF YWNoKCgpID0+IHsKLSAgICAgICAgICAgICAgICB1c2VyTWFuYWdlbWVudE1vY2suaXNQZ2FMb2dp blJlcXVpcmVkLmFuZC5yZXR1cm5WYWx1ZSh0cnVlKTsKLSAgICAgICAgICAgICAgICByZXNwb25z ZSA9IHtyZXNwb25zZUpTT046IGVycm9yTWVzc2FnZUpzb259OwotICAgICAgICAgICAgICAgIG5l dHdvcmtNb2NrLm9uR2V0KCcvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2wvcG9sbC8xMjMnKS5yZXBseSg0 MDEsIHJlc3BvbnNlKTsKLQotICAgICAgICAgICAgICAgIGV4ZWN1dGVRdWVyeS5wb2xsKCk7Ci0g ICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAgIHNob3VsZEhpZGVMb2FkaW5nSWNvblRl c3RDYXNlKCk7Ci0gICAgICAgICAgICAgIHNob3VsZFJlc2V0TGFzdFF1ZXJ5SW5mb3JtYXRpb25U ZXN0Q2FzZSgpOwotICAgICAgICAgICAgICBzaG91bGROb3RIaWdobGlnaHRFcnJvclRlc3RDYXNl KCk7Ci0gICAgICAgICAgICAgIHNob3VsZE5vdEFkZE5ld0VudHJ5VGVzdENhc2UoKTsKLSAgICAg ICAgICAgICAgc2hvdWxkRW5hYmxlVG9vbHNCdXR0b25UZXN0Q2FzZSgpOwotICAgICAgICAgICAg ICBzaG91bGRMb2dpbkRpc3BsYXllZFRlc3RDYXNlKCk7Ci0gICAgICAgICAgICB9KTsKLSAgICAg ICAgICB9KTsKLQotICAgICAgICAgIGRlc2NyaWJlKCd3aGVuIG5vIEpTT04gcmVzcG9uc2UgaXMg YXZhaWxhYmxlJywgKCkgPT4gewotICAgICAgICAgICAgZGVzY3JpYmUoJ3doZW4gbG9naW4gaXMg bm90IHJlcXVpcmVkJywgKCkgPT4gewotICAgICAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsK LSAgICAgICAgICAgICAgICB1c2VyTWFuYWdlbWVudE1vY2suaXNQZ2FMb2dpblJlcXVpcmVkLmFu ZC5yZXR1cm5WYWx1ZShmYWxzZSk7Ci0gICAgICAgICAgICAgICAgcmVzcG9uc2UgPSB7Ci0gICAg ICAgICAgICAgICAgICBlcnJvcm1zZzogZXJyb3JNZXNzYWdlVGV4dCwKLSAgICAgICAgICAgICAg ICB9OwotICAgICAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uR2V0KCcvc3FsZWRpdG9yL3F1ZXJ5 X3Rvb2wvcG9sbC8xMjMnKS5yZXBseSg0MDEsIHJlc3BvbnNlKTsKLQotICAgICAgICAgICAgICAg IGV4ZWN1dGVRdWVyeS5wb2xsKCk7Ci0gICAgICAgICAgICAgIH0pOwotCi0gICAgICAgICAgICAg IHNob3VsZEhpZGVMb2FkaW5nSWNvblRlc3RDYXNlKCk7Ci0gICAgICAgICAgICAgIHNob3VsZFJl c2V0TGFzdFF1ZXJ5SW5mb3JtYXRpb25UZXN0Q2FzZSgpOwotICAgICAgICAgICAgICBzaG91bGRI aWdobGlnaHRFcnJvclRlc3RDYXNlKCdTb21lIHBsYWluIHRleHQgZXJyb3InKTsKLSAgICAgICAg ICAgICAgYWRkTmV3RW50cnlUb0hpc3RvcnlVcGRhdGVNc2dUZXN0Q2FzZSgnU29tZSBwbGFpbiB0 ZXh0IGVycm9yJyk7Ci0gICAgICAgICAgICAgIHNob3VsZEVuYWJsZVRvb2xzQnV0dG9uVGVzdENh c2UoKTsKLSAgICAgICAgICAgICAgc2hvdWxkTG9naW5Ob3REaXNwbGF5ZWRUZXN0Q2FzZSgpOwot ICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIGRlc2NyaWJlKCd3aGVuIGxvZ2luIGlzIHJl cXVpcmVkJywgKCkgPT4gewotICAgICAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAg ICAgICAgICAgICB1c2VyTWFuYWdlbWVudE1vY2suaXNQZ2FMb2dpblJlcXVpcmVkLmFuZC5yZXR1 cm5WYWx1ZSh0cnVlKTsKLSAgICAgICAgICAgICAgICByZXNwb25zZSA9IHsKLSAgICAgICAgICAg ICAgICAgIGVycm9ybXNnOiBlcnJvck1lc3NhZ2VUZXh0LAotICAgICAgICAgICAgICAgIH07Ci0g ICAgICAgICAgICAgICAgbmV0d29ya01vY2sub25HZXQoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9w b2xsLzEyMycpLnJlcGx5KDQwMSwgcmVzcG9uc2UpOwotCi0gICAgICAgICAgICAgICAgZXhlY3V0 ZVF1ZXJ5LnBvbGwoKTsKLSAgICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgICAgc2hvdWxk SGlkZUxvYWRpbmdJY29uVGVzdENhc2UoKTsKLSAgICAgICAgICAgICAgc2hvdWxkUmVzZXRMYXN0 UXVlcnlJbmZvcm1hdGlvblRlc3RDYXNlKCk7Ci0gICAgICAgICAgICAgIHNob3VsZE5vdEhpZ2hs aWdodEVycm9yVGVzdENhc2UoKTsKLSAgICAgICAgICAgICAgc2hvdWxkTm90QWRkTmV3RW50cnlU ZXN0Q2FzZSgpOwotICAgICAgICAgICAgICBzaG91bGRFbmFibGVUb29sc0J1dHRvblRlc3RDYXNl KCk7Ci0gICAgICAgICAgICAgIHNob3VsZExvZ2luRGlzcGxheWVkVGVzdENhc2UoKTsKLQotICAg ICAgICAgICAgfSk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBkZXNjcmliZSgnd2hlbiBj YW5ub3QgcmVhY2ggdGhlIFB5dGhvbiBTZXJ2ZXInLCAoKSA9PiB7Ci0gICAgICAgICAgICBiZWZv cmVFYWNoKGJlZm9yZUVhY2hQeXRob25TZXJ2ZXIpOwotCi0gICAgICAgICAgICBzaG91bGRIaWRl TG9hZGluZ0ljb25UZXN0Q2FzZSgpOwotICAgICAgICAgICAgc2hvdWxkUmVzZXRMYXN0UXVlcnlJ bmZvcm1hdGlvblRlc3RDYXNlKCk7Ci0gICAgICAgICAgICBzaG91bGROb3RIaWdobGlnaHRFcnJv clRlc3RDYXNlKCk7Ci0gICAgICAgICAgICBhZGROZXdFbnRyeVRvSGlzdG9yeVVwZGF0ZU1zZ1Rl c3RDYXNlKCdOb3QgY29ubmVjdGVkIHRvIHRoZSBzZXJ2ZXIgb3IgdGhlIGNvbm5lY3Rpb24gdG8g dGhlIHNlcnZlciBoYXMgYmVlbiBjbG9zZWQuJyk7Ci0gICAgICAgICAgICBzaG91bGRFbmFibGVU b29sc0J1dHRvblRlc3RDYXNlKCk7Ci0gICAgICAgICAgICBzaG91bGRMb2dpbk5vdERpc3BsYXll ZFRlc3RDYXNlKCk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotICAgICAgfSk7Ci0gICAg fSk7Ci0KLSAgICBjb250ZXh0KCd3aGVuIFNRTEVkaXRvciBpcyBOT1QgdGhlIHF1ZXJ5IHRvb2wn LCAoKSA9PiB7Ci0gICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgc3FsRWRpdG9yTW9j ay5pc19xdWVyeV90b29sID0gZmFsc2U7Ci0gICAgICB9KTsKLQotICAgICAgZGVzY3JpYmUoJ3do ZW4gc2VydmVyIGFuc3dlciB3aXRoIHN1Y2Nlc3MnLCAoKSA9PiB7Ci0gICAgICAgIGRlc2NyaWJl KCd3aGVuIHF1ZXJ5IHdhcyBzdWNjZXNzZnVsJywgKCkgPT4gewotICAgICAgICAgIGJlZm9yZUVh Y2goKCkgPT4gewotICAgICAgICAgICAgcmVzcG9uc2UgPSB7Ci0gICAgICAgICAgICAgIGRhdGE6 IHtzdGF0dXM6ICdTdWNjZXNzJ30sCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgbmV0d29y a01vY2sub25HZXQoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9wb2xsLzEyMycpLnJlcGx5KDIwMCwg cmVzcG9uc2UpOwotCi0gICAgICAgICAgICBleGVjdXRlUXVlcnkucG9sbCgpOwotICAgICAgICAg IH0pOwotCi0gICAgICAgICAgc2hvdWxkVXBkYXRlTG9hZGluZ0ljb25NZXNzYWdlVGVzdENhc2Uo KTsKLQotICAgICAgICAgIGl0KCdzaG91bGQgcmVuZGVyIHRoZSByZXN1bHRzJywgKGRvbmUpID0+ IHsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAgICAgICBleHBlY3Qo c3FsRWRpdG9yTW9jay5jYWxsX3JlbmRlcl9hZnRlcl9wb2xsKQotICAgICAgICAgICAgICAgIC50 b0hhdmVCZWVuQ2FsbGVkV2l0aCh7c3RhdHVzOiAnU3VjY2Vzcyd9KTsKLSAgICAgICAgICAgICAg ZG9uZSgpOwotICAgICAgICAgICAgfSwgMCk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwot Ci0gICAgICAgIHdoZW5RdWVyeUlzU3RpbGxSdW5uaW5nVGVzdENhc2VzKCk7Ci0KLSAgICAgICAg ZGVzY3JpYmUoJ3doZW4gdGhlIGFwcGxpY2F0aW9uIGxvc3QgY29ubmVjdGlvbiB3aXRoIHRoZSBk YXRhYmFzZScsICgpID0+IHsKLSAgICAgICAgICBiZWZvcmVFYWNoKGJlZm9yZUVhY2hOb3RDb25u ZWN0ZWQpOwotCi0gICAgICAgICAgc2hvdWxkSGlkZUxvYWRpbmdJY29uVGVzdENhc2UoKTsKLSAg ICAgICAgICBhZGROZXdFbnRyeVRvSGlzdG9yeVRlc3RDYXNlKCk7Ci0KLSAgICAgICAgICBpdCgn c2hvdWxkIE5PVCBlbmFibGUgdGhlIHRvb2wgYnV0dG9ucycsIChkb25lKSA9PiB7Ci0gICAgICAg ICAgICBkaXNhYmxlVG9vbEJ1dHRvbnNOb3RDYWxsZWQoZG9uZSk7Ci0gICAgICAgICAgfSk7Ci0K LSAgICAgICAgICBpdCgnc2hvdWxkIE5PVCBkaXNhYmxlIHRoZSBjYW5jZWwgYnV0dG9uJywgKGRv bmUpID0+IHsKLSAgICAgICAgICAgIGNhbmNlbEJ1dHRvbk5vdENhbGxlZChkb25lKTsKLSAgICAg ICAgICB9KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgd2hlblF1ZXJ5V2FzQ2FuY2VsbGVkVGVz dENhc2VzKCk7Ci0gICAgICB9KTsKLQotICAgICAgZGVzY3JpYmUoJ3doZW4gYW4gZXJyb3Igb2Nj dXInLCAoKSA9PiB7Ci0gICAgICAgIGxldCBlcnJvck1lc3NhZ2VKc29uID0gewotICAgICAgICAg IGVycm9ybXNnOiAnU29tZSBlcnJvciBpbiBKU09OJywKLSAgICAgICAgfTsKLSAgICAgICAgbGV0 IGVycm9yTWVzc2FnZVRleHQgPSAnU29tZSBwbGFpbiB0ZXh0IGVycm9yJzsKLSAgICAgICAgbGV0 IHJlczsKLQotICAgICAgICBkZXNjcmliZSgnd2hlbiB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2Vy dmVyIHdhcyBsb3N0JywgKCkgPT4gewotICAgICAgICAgIGRlc2NyaWJlKCd3aGVuIEpTT04gcmVz cG9uc2UgaXMgYXZhaWxhYmxlJywgKCkgPT4gewotICAgICAgICAgICAgYmVmb3JlRWFjaCgoKSA9 PiB7Ci0gICAgICAgICAgICAgIHJlcyA9IHtyZXNwb25zZUpTT046IGVycm9yTWVzc2FnZUpzb259 OwotICAgICAgICAgICAgICBuZXR3b3JrTW9jay5vbkdldCgnL3NxbGVkaXRvci9xdWVyeV90b29s L3BvbGwvMTIzJykucmVwbHkoNDAxLCByZXMpOwotCi0gICAgICAgICAgICAgIGV4ZWN1dGVRdWVy eS5wb2xsKCk7Ci0gICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgc2hvdWxkSGlkZUxvYWRp bmdJY29uVGVzdENhc2UoKTsKLSAgICAgICAgICAgIHNob3VsZFJlc2V0TGFzdFF1ZXJ5SW5mb3Jt YXRpb25UZXN0Q2FzZSgpOwotICAgICAgICAgICAgc2hvdWxkSGlnaGxpZ2h0RXJyb3JUZXN0Q2Fz ZSgnU29tZSBlcnJvciBpbiBKU09OJyk7Ci0gICAgICAgICAgICBhZGROZXdFbnRyeVRvSGlzdG9y eVVwZGF0ZU1zZ1Rlc3RDYXNlKCdTb21lIGVycm9yIGluIEpTT04nKTsKLQotICAgICAgICAgICAg aXQoJ3Nob3VsZCBlbmFibGUgdGhlIHRvb2wgYnV0dG9ucycsIChkb25lKSA9PiB7Ci0gICAgICAg ICAgICAgIGRpc2FibGVUb29sQnV0dG9uc05vdENhbGxlZChkb25lKTsKLSAgICAgICAgICAgIH0p OwotCi0gICAgICAgICAgICBzaG91bGREaXNhYmxlQ2FuY2VsQnV0dG9uVGVzdENhc2UoKTsKLSAg ICAgICAgICB9KTsKLSAgICAgICAgICBkZXNjcmliZSgnd2hlbiBubyBKU09OIHJlc3BvbnNlIGlz IGF2YWlsYWJsZScsICgpID0+IHsKLSAgICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAg ICAgICAgICAgICByZXMgPSB7ZXJyb3Jtc2c6IGVycm9yTWVzc2FnZVRleHR9OwotICAgICAgICAg ICAgICBuZXR3b3JrTW9jay5vbkdldCgnL3NxbGVkaXRvci9xdWVyeV90b29sL3BvbGwvMTIzJyku cmVwbHkoNDAxLCByZXMpOwotCi0gICAgICAgICAgICAgIGV4ZWN1dGVRdWVyeS5wb2xsKCk7Ci0g ICAgICAgICAgICB9KTsKLQotICAgICAgICAgICAgc2hvdWxkSGlkZUxvYWRpbmdJY29uVGVzdENh c2UoKTsKLSAgICAgICAgICAgIHNob3VsZFJlc2V0TGFzdFF1ZXJ5SW5mb3JtYXRpb25UZXN0Q2Fz ZSgpOwotICAgICAgICAgICAgc2hvdWxkSGlnaGxpZ2h0RXJyb3JUZXN0Q2FzZSgnU29tZSBwbGFp biB0ZXh0IGVycm9yJyk7Ci0gICAgICAgICAgICBhZGROZXdFbnRyeVRvSGlzdG9yeVVwZGF0ZU1z Z1Rlc3RDYXNlKCdTb21lIHBsYWluIHRleHQgZXJyb3InKTsKLQotICAgICAgICAgICAgaXQoJ3No b3VsZCBub3QgZW5hYmxlIHRoZSB0b29sIGJ1dHRvbnMnLCAoZG9uZSkgPT4gewotICAgICAgICAg ICAgICBkaXNhYmxlVG9vbEJ1dHRvbnNOb3RDYWxsZWQoZG9uZSk7Ci0gICAgICAgICAgICB9KTsK LQotICAgICAgICAgIH0pOwotCi0gICAgICAgICAgZGVzY3JpYmUoJ3doZW4gY2Fubm90IHJlYWNo IHRoZSBQeXRob24gU2VydmVyJywgKCkgPT4gewotICAgICAgICAgICAgYmVmb3JlRWFjaChiZWZv cmVFYWNoUHl0aG9uU2VydmVyKTsKLQotICAgICAgICAgICAgc2hvdWxkSGlkZUxvYWRpbmdJY29u VGVzdENhc2UoKTsKLSAgICAgICAgICAgIHNob3VsZFJlc2V0TGFzdFF1ZXJ5SW5mb3JtYXRpb25U ZXN0Q2FzZSgpOwotICAgICAgICAgICAgc2hvdWxkTm90SGlnaGxpZ2h0RXJyb3JUZXN0Q2FzZSgp OwotICAgICAgICAgICAgYWRkTmV3RW50cnlUb0hpc3RvcnlVcGRhdGVNc2dUZXN0Q2FzZSgnTm90 IGNvbm5lY3RlZCB0byB0aGUgc2VydmVyIG9yIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIg aGFzIGJlZW4gY2xvc2VkLicpOwotCi0gICAgICAgICAgICBpdCgnc2hvdWxkIGVuYWJsZSB0aGUg dG9vbCBidXR0b25zJywgKGRvbmUpID0+IHsKLSAgICAgICAgICAgICAgZGlzYWJsZVRvb2xCdXR0 b25zTm90Q2FsbGVkKGRvbmUpOwotICAgICAgICAgICAgfSk7Ci0KLSAgICAgICAgICAgIHNob3Vs ZERpc2FibGVDYW5jZWxCdXR0b25UZXN0Q2FzZSgpOwotICAgICAgICAgIH0pOwotICAgICAgICB9 KTsKLSAgICAgIH0pOwotICAgIH0pOwotICB9KTsKLQotICBkZXNjcmliZSgnI2V4ZWN1dGUnLCAo KSA9PiB7Ci0gICAgbGV0IHJlc3BvbnNlOwotCi0gICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAg ICByZXNwb25zZSA9IHsKLSAgICAgICAgJ2luZm8nOiAnJywKLSAgICAgICAgJ2Vycm9ybXNnJzog JycsCi0gICAgICAgICdkYXRhJzogewotICAgICAgICAgICdzdGF0dXMnOiB0cnVlLAotICAgICAg ICAgICdjYW5fZWRpdCc6IGZhbHNlLAotICAgICAgICAgICdpbmZvX25vdGlmaWVyX3RpbWVvdXQn OiA1LAotICAgICAgICAgICdyZXN1bHQnOiAnMicsCi0gICAgICAgICAgJ2Nhbl9maWx0ZXInOiBm YWxzZSwKLSAgICAgICAgfSwKLSAgICAgICAgJ3Jlc3VsdCc6IG51bGwsCi0gICAgICAgICdzdWNj ZXNzJzogMSwKLSAgICAgIH07Ci0gICAgfSk7Ci0KLSAgICBjb250ZXh0KCd3aGVuIHRoZSBTUUwg c3RhdGVtZW50IGlzIGVtcHR5JywgKCkgPT4gewotICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gd2l0 aG91dCBleGVjdXRpbmcnLCAoZG9uZSkgPT4gewotICAgICAgICBsZXQgd2FzTmV0d29ya0NhbGxl ZCA9IGZhbHNlOwotICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgnL3NxbGVkaXRvci9xdWVyeV90 b29sL3N0YXJ0LzEyMycpLnJlcGx5KCgpID0+IHsKLSAgICAgICAgICB3YXNOZXR3b3JrQ2FsbGVk ID0gdHJ1ZTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZXhlY3V0ZVF1ZXJ5LmV4ZWN1dGUoJycs IHt9KTsKLQotICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgICBleHBlY3Qod2Fz TmV0d29ya0NhbGxlZCkudG9FcXVhbChmYWxzZSk7Ci0gICAgICAgICAgZG9uZSgpOwotICAgICAg ICB9LCAwKTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gICAgY29udGV4dCgnd2hlbiB0aGUgU1FM IHN0YXRlbWVudCBpcyBub3QgZW1wdHknLCAoKSA9PiB7Ci0gICAgICBsZXQgcG9sbFNweTsKLQot ICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgIHNxbEVkaXRvck1vY2suZ3JpZFZpZXcg PSB7fTsKLSAgICAgICAgc3FsRWRpdG9yTW9jay5ncmlkVmlldy5xdWVyeV90b29sX29iaiA9IGph c21pbmUuY3JlYXRlU3B5T2JqKAotICAgICAgICAgICdRdWVyeVRvb2xPYmplY3QnLAotICAgICAg ICAgIFsncmVtb3ZlTGluZUNsYXNzJ10KLSAgICAgICAgKTsKLQotICAgICAgICAkKCdib2R5Jyku YXBwZW5kKAotICAgICAgICAgICc8ZGl2IGlkPSJ0ZXN0LWlkIj4nICsKLSAgICAgICAgICAnPGJ1 dHRvbiBpZD0iYnRuLWZsYXNoIiBkaXNhYmxlZD48L2J1dHRvbj4nICsKLSAgICAgICAgICAnPGJ1 dHRvbiBpZD0iYnRuLWNhbmNlbC1xdWVyeSI+PC9idXR0b24+JyArCi0gICAgICAgICAgJzwvZGl2 PicKLSAgICAgICAgKTsKLSAgICAgIH0pOwotCi0gICAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkg ewotICAgICAgICAkKCdib2R5JykucmVtb3ZlKCcjdGVzdC1pZCcpOwotICAgICAgfSk7Ci0KLSAg ICAgIGRlc2NyaWJlKCdiZWZvcmUgdGhlIGJhY2tlbmQgcmVxdWVzdCcsICgpID0+IHsKLSAgICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgICAgamFzbWluZS5jbG9jaygpLmluc3RhbGwo KTsKLSAgICAgICAgICBqYXNtaW5lLmNsb2NrKCkubW9ja0RhdGUoc3RhcnRUaW1lKTsKLSAgICAg ICAgICBqYXNtaW5lLmNsb2NrKCkudGljayg1MCk7Ci0gICAgICAgICAgbmV0d29ya01vY2sub25B bnkoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9zdGFydC8xMjMnKS5yZXBseSgyMDAsIHJlc3BvbnNl KTsKLSAgICAgICAgICBwb2xsU3B5ID0gc3B5T24oZXhlY3V0ZVF1ZXJ5LCAncG9sbCcpOwotICAg ICAgICAgIGV4ZWN1dGVRdWVyeS5leGVjdXRlKCdzb21lIHNxbCBxdWVyeScsICcnKTsKLSAgICAg ICAgfSk7Ci0KLSAgICAgICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICBqYXNt aW5lLmNsb2NrKCkudW5pbnN0YWxsKCk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCdzaG91 bGQgdXBkYXRlIGxvYWRpbmcgdGV4dCB0byAiUnVubmluZyBxdWVyeSInLCAoKSA9PiB7Ci0gICAg ICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sudHJpZ2dlcikKLSAgICAgICAgICAgIC50b0hhdmVC ZWVuQ2FsbGVkV2l0aCgKLSAgICAgICAgICAgICAgJ3BnYWRtaW4tc3FsZWRpdG9yOmxvYWRpbmct aWNvbjpzaG93JywKLSAgICAgICAgICAgICAgJ1J1bm5pbmcgcXVlcnkuLi4nCi0gICAgICAgICAg ICApOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgnZGlzYWJsZXMgdGhlIHJ1biBxdWVyeSBi dXR0b24nLCAoKSA9PiB7Ci0gICAgICAgICAgbGV0IGJ1dHRvbkZsYXNoID0gJCgnI2J0bi1mbGFz aCcpOwotCi0gICAgICAgICAgZXhwZWN0KGJ1dHRvbkZsYXNoLnByb3AoJ2Rpc2FibGVkJykpLnRv RXF1YWwodHJ1ZSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCdlbmFibGUgdGhlIGNhbmNl bCBxdWVyeSBidXR0b24nLCAoKSA9PiB7Ci0gICAgICAgICAgbGV0IGJ1dHRvbkZsYXNoID0gJCgn I2J0bi1jYW5jZWwtcXVlcnknKTsKLQotICAgICAgICAgIGV4cGVjdChidXR0b25GbGFzaC5wcm9w KCdkaXNhYmxlZCcpKS50b0VxdWFsKGZhbHNlKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQo J2Rpc2FibGUgdGhlIHF1ZXJ5IHRvb2wgYnV0dG9ucycsICgpID0+IHsKLSAgICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yTW9jay5kaXNhYmxlX3Rvb2xfYnV0dG9ucykudG9IYXZlQmVlbkNhbGxlZFdp dGgodHJ1ZSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGl0KCdpbml0aWFsaXplcyB0aGUgcG9s bGluZyBmbGFncycsICgpID0+IHsKLSAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay5faW5p dF9wb2xsaW5nX2ZsYWdzKS50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgICAgIH0pOwotCi0gICAg ICAgIGl0KCdzYXZlIHRoZSBxdWVyeScsICgpID0+IHsKLSAgICAgICAgICBleHBlY3Qoc3FsRWRp dG9yTW9jay5xdWVyeSkudG9FcXVhbCgnc29tZSBzcWwgcXVlcnknKTsKLSAgICAgICAgfSk7Ci0K LSAgICAgICAgaXQoJ3Jlc2V0IHRoZSBudW1iZXIgb2Ygcm93cyB0aGF0IHdlcmUgYWZmZWN0ZWQn LCAoKSA9PiB7Ci0gICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sucm93c19hZmZlY3RlZCku dG9FcXVhbCgwKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoJ3Jlc2V0IHF1ZXJ5IHN0YXJ0 IHRpbWUnLCAoKSA9PiB7Ci0gICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2sucXVlcnlfc3Rh cnRfdGltZS5nZXRUaW1lKCkpLnRvRXF1YWwoc3RhcnRUaW1lLmdldFRpbWUoKSArIDUwKTsKLSAg ICAgICAgfSk7Ci0gICAgICB9KTsKLQotICAgICAgZGVzY3JpYmUoJ3doZW4gSFRUUCByZXR1cm4g MjAwJywgKCkgPT4gewotICAgICAgICBkZXNjcmliZSgnd2hlbiBiYWNrZW5kIGluZm9ybXMgdGhh dCBxdWVyeSBzdGFydGVkIHN1Y2Nlc3NmdWxseScsICgpID0+IHsKLSAgICAgICAgICBiZWZvcmVF YWNoKCgpID0+IHsKLSAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uUG9zdCgnL3NxbGVkaXRvci9x dWVyeV90b29sL3N0YXJ0LzEyMz9jb25uZWN0PTEnKS5yZXBseSgyMDAsIHJlc3BvbnNlKTsKLSAg ICAgICAgICAgIHBvbGxTcHkgPSBzcHlPbihleGVjdXRlUXVlcnksICdkZWxheWVkUG9sbCcpOwot ICAgICAgICAgICAgZXhlY3V0ZVF1ZXJ5LmV4ZWN1dGUoJ3NvbWUgc3FsIHF1ZXJ5JywgJycsIHRy dWUpOwotICAgICAgICAgIH0pOwotCi0gICAgICAgICAgaXQoJ3Nob3VsZCBjaGFuZ2VzIHRoZSBs b2FkaW5nIG1lc3NhZ2UgdG8gIldhaXRpbmcgZm9yIHRoZSBxdWVyeSB0byBjb21wbGV0ZSInLCAo ZG9uZSkgPT4gewotICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAgICAg IGV4cGVjdChzcWxFZGl0b3JNb2NrLnRyaWdnZXIpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKAotICAg ICAgICAgICAgICAgICdwZ2FkbWluLXNxbGVkaXRvcjpsb2FkaW5nLWljb246bWVzc2FnZScsCi0g ICAgICAgICAgICAgICAgJ1dhaXRpbmcgZm9yIHRoZSBxdWVyeSB0byBjb21wbGV0ZS4uLicKLSAg ICAgICAgICAgICAgKTsKLSAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSwgMCk7 Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpdCgnc2hvdWxkIHVwZGF0ZSB0aGUgY2FuIGVk aXQgZmxhZycsIChkb25lKSA9PiB7Ci0gICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHsKLSAg ICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suY2FuX2VkaXQpLnRvRXF1YWwoZmFsc2Up OwotICAgICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9LCAwKTsKLSAgICAgICAgICB9 KTsKLQotICAgICAgICAgIGl0KCdzaG91bGQgdXBkYXRlIHRoZSBjYW4gZmlsdGVyIGZsYWcnLCAo ZG9uZSkgPT4gewotICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAgICAg IGV4cGVjdChzcWxFZGl0b3JNb2NrLmNhbl9maWx0ZXIpLnRvRXF1YWwoZmFsc2UpOwotICAgICAg ICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgICB9LCAwKTsKLSAgICAgICAgICB9KTsKLQotICAg ICAgICAgIGl0KCdzaG91bGQgdXBkYXRlIGluZm9ybWF0aW9uIG5vdGlmaWVyIHRpbWVvdXQnLCAo ZG9uZSkgPT4gewotICAgICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAgICAg IGV4cGVjdChzcWxFZGl0b3JNb2NrLmluZm9fbm90aWZpZXJfdGltZW91dCkudG9FcXVhbCg1KTsK LSAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSwgMCk7Ci0gICAgICAgICAgfSk7 Ci0KLSAgICAgICAgICBpdCgnc2hvdWxkIHN0YXJ0IHBvbGxpbmcnLCAoZG9uZSkgPT4gewotICAg ICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7Ci0gICAgICAgICAgICAgIGV4cGVjdChwb2xsU3B5 KS50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAg IH0sIDApOwotICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLQotICAgICAgICBkZXNjcmliZSgn d2hlbiBleHBsYWluIHBsYW4gaXMgbm90IGVtcHR5JywgKCkgPT4gewotICAgICAgICAgIGl0KCdz aG91bGQgc2VuZCB0aGUgZXhwbGFpbiBwbGFuIGluZm9ybWF0aW9vbiB0aHJvdWdoIHRoZSB3aXJl JywgKGRvbmUpID0+IHsKLSAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uQW55KCcvc3FsZWRpdG9y L3F1ZXJ5X3Rvb2wvc3RhcnQvMTIzJykucmVwbHkoKGNvbmZpZykgPT4gewotICAgICAgICAgICAg ICBzZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAgICAgICBleHBlY3QoY29uZmlnLmRhdGEp LnRvRXF1YWwoSlNPTi5zdHJpbmdpZnkoewotICAgICAgICAgICAgICAgICAgc3FsOiAnc29tZSBz cWwgcXVlcnknLAotICAgICAgICAgICAgICAgICAgZXhwbGFpbl9wbGFuOiB7Ci0gICAgICAgICAg ICAgICAgICAgIGJ1ZmZlcnM6IHRydWUsCi0gICAgICAgICAgICAgICAgICAgIGFuYWx5emU6IGZh bHNlLAotICAgICAgICAgICAgICAgICAgICB0aW1pbmc6IHRydWUsCi0gICAgICAgICAgICAgICAg ICAgIHN1bW1hcnk6IGZhbHNlLAotICAgICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAg ICB9KSk7Ci0KLSAgICAgICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAgICAgIH0sIDApOwot ICAgICAgICAgICAgICByZXR1cm4gWzIwMCwgJyddOwotICAgICAgICAgICAgfSk7Ci0gICAgICAg ICAgICBwb2xsU3B5ID0gc3B5T24oZXhlY3V0ZVF1ZXJ5LCAnZGVsYXllZFBvbGwnKTsKLSAgICAg ICAgICAgIGV4ZWN1dGVRdWVyeS5leGVjdXRlKCdzb21lIHNxbCBxdWVyeScsIHsKLSAgICAgICAg ICAgICAgYnVmZmVyczogdHJ1ZSwKLSAgICAgICAgICAgICAgYW5hbHl6ZTogZmFsc2UsCi0gICAg ICAgICAgICAgIHRpbWluZzogdHJ1ZSwKLSAgICAgICAgICAgICAgc3VtbWFyeTogZmFsc2UsCi0g ICAgICAgICAgICB9KTsKLSAgICAgICAgICB9KTsKLQotCi0gICAgICAgIH0pOwotCi0gICAgICAg IGRlc2NyaWJlKCd3aGVuIGJhY2tlbmQgaW5mb3JtcyB0aGF0IHRoZXJlIHdhcyBhIHByb2JsZW0g d2l0aCB0aGUgcXVlcnknLCAoKSA9PiB7Ci0gICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0g ICAgICAgICAgICByZXNwb25zZS5kYXRhLnN0YXR1cyA9IGZhbHNlOwotICAgICAgICAgICAgcmVz cG9uc2UuZGF0YS5yZXN1bHQgPSAnc29tZXRoaW5nIHdlbnQgd3JvbmcnOwotICAgICAgICAgICAg bmV0d29ya01vY2sub25BbnkoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9zdGFydC8xMjMnKS5yZXBs eSgyMDAsIHJlc3BvbnNlKTsKLSAgICAgICAgICAgIHBvbGxTcHkgPSBzcHlPbihleGVjdXRlUXVl cnksICdwb2xsJyk7Ci0gICAgICAgICAgICBleGVjdXRlUXVlcnkuZXhlY3V0ZSgnc29tZSBzcWwg cXVlcnknLCAnJyk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBzaG91bGRIaWRlTG9hZGlu Z0ljb25UZXN0Q2FzZSgpOwotICAgICAgICAgIHNob3VsZEVuYWJsZVRvb2xzQnV0dG9uVGVzdENh c2UoKTsKLQotICAgICAgICAgIGl0KCd1cGRhdGUgdGhlIGhpc3RvcnkgdGFiIHdpdGggdGhlIHJl c3VsdCBtZXNzYWdlJywgKGRvbmUpID0+IHsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4g ewotICAgICAgICAgICAgICBleHBlY3Qoc3FsRWRpdG9yTW9jay51cGRhdGVfbXNnX2hpc3Rvcnkp LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGZhbHNlLCAnc29tZXRoaW5nIHdlbnQgd3JvbmcnKTsKLSAg ICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSwgMCk7Ci0gICAgICAgICAgfSk7Ci0K LSAgICAgICAgICBpdCgnaGlnaGxpZ2h0IHRoZSBlcnJvciBpbiB0aGUgZWRpdG9yJywgKGRvbmUp ID0+IHsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yTW9jay5faGlnaGxpZ2h0X2Vycm9yKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgn c29tZXRoaW5nIHdlbnQgd3JvbmcnKTsKLSAgICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAg ICAgfSwgMCk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpdCgnc2hvdWxkIG5vdCBzdGFy dCBwb2xsaW5nJywgKGRvbmUpID0+IHsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewot ICAgICAgICAgICAgICBleHBlY3QocG9sbFNweSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAg ICAgICAgICAgICAgZG9uZSgpOwotICAgICAgICAgICAgfSwgMCk7Ci0gICAgICAgICAgfSk7Ci0g ICAgICAgIH0pOwotCi0gICAgICAgIGRlc2NyaWJlKCd3aGVuIHRoZXJlIGlzIGEgbWFya2VyIHNl dCBpbiB0aGUgZ3JpZCcsICgpID0+IHsKLSAgICAgICAgICBsZXQgbWFya2VyQ2xlYXJTcHk7Ci0g ICAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgICAgICBzcWxFZGl0b3JNb2NrLmdy aWRWaWV3Lm1hcmtlciA9IGphc21pbmUuY3JlYXRlU3B5T2JqKAotICAgICAgICAgICAgICAnR3Jp ZFZpZXdNYXJrZXInLAotICAgICAgICAgICAgICBbJ2NsZWFyJ10KLSAgICAgICAgICAgICk7Ci0g ICAgICAgICAgICBtYXJrZXJDbGVhclNweSA9IHNxbEVkaXRvck1vY2suZ3JpZFZpZXcubWFya2Vy LmNsZWFyOwotICAgICAgICAgICAgbmV0d29ya01vY2sub25BbnkoJy9zcWxlZGl0b3IvcXVlcnlf dG9vbC9zdGFydC8xMjMnKS5yZXBseSgyMDAsIHJlc3BvbnNlKTsKLSAgICAgICAgICAgIHBvbGxT cHkgPSBzcHlPbihleGVjdXRlUXVlcnksICdwb2xsJyk7Ci0gICAgICAgICAgICBleGVjdXRlUXVl cnkuZXhlY3V0ZSgnc29tZSBzcWwgcXVlcnknLCAnJyk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAg ICAgICBpdCgnc2hvdWxkIGNhbGwgY2xlYXIgZnVuY3Rpb24gb24gbWFya2VyJywgKGRvbmUpID0+ IHsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAgICAgICBleHBlY3Qo bWFya2VyQ2xlYXJTcHkpLnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgICAgICAgICAgICAgZG9uZSgp OwotICAgICAgICAgICAgfSwgMCk7Ci0gICAgICAgICAgfSk7Ci0KLSAgICAgICAgICBpdCgnc2hv dWxkIHJlbW92ZXMgdGhlIG1hcmtlcicsIChkb25lKSA9PiB7Ci0gICAgICAgICAgICBzZXRUaW1l b3V0KCgpID0+IHsKLSAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suZ3JpZFZpZXcu bWFya2VyKS50b0VxdWFsKG51bGwpOwotICAgICAgICAgICAgICBkb25lKCk7Ci0gICAgICAgICAg ICB9LCAwKTsKLSAgICAgICAgICB9KTsKLQotICAgICAgICAgIGl0KCdzaG91bGQgcmVtb3ZlIENT UyBjbGFzc2VzIGZyb20gdGhlIGVkaXRvcicsIChkb25lKSA9PiB7Ci0gICAgICAgICAgICBzZXRU aW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suZ3JpZFZp ZXcucXVlcnlfdG9vbF9vYmoucmVtb3ZlTGluZUNsYXNzKQotICAgICAgICAgICAgICAgIC50b0hh dmVCZWVuQ2FsbGVkV2l0aChzcWxFZGl0b3JNb2NrLm1hcmtlZF9saW5lX25vLCAnd3JhcCcsICdD b2RlTWlycm9yLWFjdGl2ZWxpbmUtYmFja2dyb3VuZCcpOwotICAgICAgICAgICAgICBkb25lKCk7 Ci0gICAgICAgICAgICB9LCAwKTsKLSAgICAgICAgICB9KTsKLSAgICAgICAgfSk7Ci0gICAgICB9 KTsKLQotICAgICAgZGVzY3JpYmUoJ3doZW4gY2Fubm90IHJlYWNoIHRoZSBQeXRob24gU2VydmVy JywgKCkgPT4gewotICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgICBuZXR3b3Jr TW9jay5vbkFueSgnL3NxbGVkaXRvci9xdWVyeV90b29sL3N0YXJ0LzEyMycpLnJlcGx5KDUwMCwg dW5kZWZpbmVkKTsKLQotCi0gICAgICAgICAgZXhlY3V0ZVF1ZXJ5LmV4ZWN1dGUoJ3NvbWUgc3Fs IHF1ZXJ5JywgJycpOwotICAgICAgICB9KTsKLQotICAgICAgICBzaG91bGRIaWRlTG9hZGluZ0lj b25UZXN0Q2FzZSgpOwotICAgICAgICBzaG91bGROb3RIaWdobGlnaHRFcnJvclRlc3RDYXNlKCk7 Ci0gICAgICAgIGFkZE5ld0VudHJ5VG9IaXN0b3J5VXBkYXRlTXNnVGVzdENhc2UoJ05vdCBjb25u ZWN0ZWQgdG8gdGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBi ZWVuIGNsb3NlZC4nKTsKLSAgICAgICAgc2hvdWxkRW5hYmxlVG9vbHNCdXR0b25UZXN0Q2FzZSgp OwotICAgICAgfSk7Ci0KLSAgICAgIGRlc2NyaWJlKCd3aGVuIGVycm9yIGlzIHJldHVybmVkIGJ5 IHRoZSBzZXJ2ZXInLCAoKSA9PiB7Ci0gICAgICAgIGRlc2NyaWJlKCd3aGVuIGxvZ2luIGlzIG5v dCByZXF1aXJlZCcsICgpID0+IHsKLSAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAg ICAgICAgIHVzZXJNYW5hZ2VtZW50TW9jay5pc1BnYUxvZ2luUmVxdWlyZWQuYW5kLnJldHVyblZh bHVlKGZhbHNlKTsKLSAgICAgICAgICAgIHJlc3BvbnNlLmVycm9ybXNnID0gJ3NvbWUgZXJyb3Ig bWVzc2FnZSc7Ci0gICAgICAgICAgICBuZXR3b3JrTW9jay5vbkFueSgnL3NxbGVkaXRvci9xdWVy eV90b29sL3N0YXJ0LzEyMycpLnJlcGx5KDUwMCwgcmVzcG9uc2UpOwotCi0KLSAgICAgICAgICAg IGV4ZWN1dGVRdWVyeS5leGVjdXRlKCdzb21lIHNxbCBxdWVyeScsICcnKTsKLSAgICAgICAgICB9 KTsKLQotICAgICAgICAgIHNob3VsZEhpZGVMb2FkaW5nSWNvblRlc3RDYXNlKCk7Ci0gICAgICAg ICAgc2hvdWxkTm90SGlnaGxpZ2h0RXJyb3JUZXN0Q2FzZSgpOwotICAgICAgICAgIGFkZE5ld0Vu dHJ5VG9IaXN0b3J5VXBkYXRlTXNnVGVzdENhc2UoJ3NvbWUgZXJyb3IgbWVzc2FnZScpOwotICAg ICAgICAgIHNob3VsZEVuYWJsZVRvb2xzQnV0dG9uVGVzdENhc2UoKTsKLSAgICAgICAgICBzaG91 bGROb3RTYXZlU3RhdGVUZXN0Q2FzZSgpOwotICAgICAgICAgIHNob3VsZE5vdERpc3BsYXlQR0FM b2dpblRlc3RDYXNlKCk7Ci0gICAgICAgIH0pOwotICAgICAgICBkZXNjcmliZSgnd2hlbiBsb2dp biBpcyByZXF1aXJlZCcsICgpID0+IHsKLSAgICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAg ICAgICAgICAgIHVzZXJNYW5hZ2VtZW50TW9jay5pc1BnYUxvZ2luUmVxdWlyZWQuYW5kLnJldHVy blZhbHVlKHRydWUpOwotICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3Jtc2cgPSAnc29tZSBlcnJv ciBtZXNzYWdlJzsKLSAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uQW55KCcvc3FsZWRpdG9yL3F1 ZXJ5X3Rvb2wvc3RhcnQvMTIzJykucmVwbHkoNTAwLCByZXNwb25zZSk7Ci0KLQotICAgICAgICAg ICAgZXhlY3V0ZVF1ZXJ5LmV4ZWN1dGUoJ3NvbWUgc3FsIHF1ZXJ5JywgJycpOwotICAgICAgICAg IH0pOwotCi0gICAgICAgICAgc2hvdWxkSGlkZUxvYWRpbmdJY29uVGVzdENhc2UoKTsKLSAgICAg ICAgICBzaG91bGROb3RIaWdobGlnaHRFcnJvclRlc3RDYXNlKCk7Ci0gICAgICAgICAgYWRkTmV3 RW50cnlUb0hpc3RvcnlVcGRhdGVNc2dUZXN0Q2FzZSgnc29tZSBlcnJvciBtZXNzYWdlJyk7Ci0g ICAgICAgICAgc2hvdWxkRW5hYmxlVG9vbHNCdXR0b25UZXN0Q2FzZSgpOwotICAgICAgICAgIHNo b3VsZFNhdmVTdGF0ZVRlc3RDYXNlKCk7Ci0gICAgICAgICAgc2hvdWxkTG9naW5EaXNwbGF5ZWRU ZXN0Q2FzZSgpOwotICAgICAgICB9KTsKLSAgICAgICAgZGVzY3JpYmUoJ3doZW4gYSBuZXcgdHJh bnNhY3Rpb24gaXMgbm90IHJlcXVpcmVkJywgKCkgPT4gewotICAgICAgICAgIGJlZm9yZUVhY2go KCkgPT4gewotICAgICAgICAgICAgaXNOZXdUcmFuc2FjdGlvblJlcXVpcmVkTW9jay5hbmQucmV0 dXJuVmFsdWUoZmFsc2UpOwotICAgICAgICAgICAgcmVzcG9uc2UuZXJyb3Jtc2cgPSAnc29tZSBl cnJvciBtZXNzYWdlJzsKLSAgICAgICAgICAgIG5ldHdvcmtNb2NrLm9uQW55KCcvc3FsZWRpdG9y L3F1ZXJ5X3Rvb2wvc3RhcnQvMTIzJykucmVwbHkoNTAwLCByZXNwb25zZSk7Ci0KLQotICAgICAg ICAgICAgZXhlY3V0ZVF1ZXJ5LmV4ZWN1dGUoJ3NvbWUgc3FsIHF1ZXJ5JywgJycpOwotICAgICAg ICAgIH0pOwotCi0gICAgICAgICAgc2hvdWxkSGlkZUxvYWRpbmdJY29uVGVzdENhc2UoKTsKLSAg ICAgICAgICBzaG91bGROb3RIaWdobGlnaHRFcnJvclRlc3RDYXNlKCk7Ci0gICAgICAgICAgYWRk TmV3RW50cnlUb0hpc3RvcnlVcGRhdGVNc2dUZXN0Q2FzZSgnc29tZSBlcnJvciBtZXNzYWdlJyk7 Ci0gICAgICAgICAgc2hvdWxkRW5hYmxlVG9vbHNCdXR0b25UZXN0Q2FzZSgpOwotICAgICAgICAg IHNob3VsZE5vdFNhdmVTdGF0ZVRlc3RDYXNlKCk7Ci0gICAgICAgICAgc2hvdWxkTm90RGlzcGxh eVBHQUxvZ2luVGVzdENhc2UoKTsKLQotICAgICAgICAgIGl0KCdzaG91bGQgbm90IGluaXRpYWxp emUgYSBuZXcgdHJhbnNhY3Rpb24nLCAoZG9uZSkgPT4gewotICAgICAgICAgICAgc2V0VGltZW91 dCgoKSA9PiB7Ci0gICAgICAgICAgICAgIGV4cGVjdChzcWxFZGl0b3JNb2NrLmluaXRUcmFuc2Fj dGlvbikubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgICAgICAgICAgICAgZG9uZSgpOwotICAg ICAgICAgICAgfSwgMCk7Ci0gICAgICAgICAgfSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGRl c2NyaWJlKCd3aGVuIGEgbmV3IHRyYW5zYWN0aW9uIGlzIHJlcXVpcmVkJywgKCkgPT4gewotICAg ICAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgICAgICAgaXNOZXdUcmFuc2FjdGlvblJl cXVpcmVkTW9jay5hbmQucmV0dXJuVmFsdWUodHJ1ZSk7Ci0gICAgICAgICAgICByZXNwb25zZS5l cnJvcm1zZyA9ICdzb21lIGVycm9yIG1lc3NhZ2UnOwotICAgICAgICAgICAgbmV0d29ya01vY2su b25BbnkoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9zdGFydC8xMjMnKS5yZXBseSg1MDAsIHJlc3Bv bnNlKTsKLQotICAgICAgICAgICAgZXhlY3V0ZVF1ZXJ5LmV4ZWN1dGUoJ3NvbWUgc3FsIHF1ZXJ5 JywgJycpOwotICAgICAgICAgIH0pOwotCi0gICAgICAgICAgc2hvdWxkSGlkZUxvYWRpbmdJY29u VGVzdENhc2UoKTsKLSAgICAgICAgICBzaG91bGROb3RIaWdobGlnaHRFcnJvclRlc3RDYXNlKCk7 Ci0gICAgICAgICAgYWRkTmV3RW50cnlUb0hpc3RvcnlVcGRhdGVNc2dUZXN0Q2FzZSgnc29tZSBl cnJvciBtZXNzYWdlJyk7Ci0gICAgICAgICAgc2hvdWxkRW5hYmxlVG9vbHNCdXR0b25UZXN0Q2Fz ZSgpOwotICAgICAgICAgIHNob3VsZFNhdmVTdGF0ZVRlc3RDYXNlKCk7Ci0gICAgICAgICAgc2hv dWxkTm90RGlzcGxheVBHQUxvZ2luVGVzdENhc2UoKTsKLQotICAgICAgICAgIGl0KCdzaG91bGQg aW5pdGlhbGl6ZSBhIG5ldyB0cmFuc2FjdGlvbicsIChkb25lKSA9PiB7Ci0gICAgICAgICAgICBz ZXRUaW1lb3V0KCgpID0+IHsKLSAgICAgICAgICAgICAgZXhwZWN0KHNxbEVkaXRvck1vY2suaW5p dFRyYW5zYWN0aW9uKS50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgICAgICAgICAgIGRvbmUoKTsK LSAgICAgICAgICAgIH0sIDApOwotICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAgICAg ZGVzY3JpYmUoJ3doZW4gY29ubmVjdGlvbiB0byBkYXRhYmFzZSBpcyBsb3N0JywgKCkgPT4gewot ICAgICAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgICAgICAgaXNOZXdUcmFuc2FjdGlv blJlcXVpcmVkTW9jay5hbmQucmV0dXJuVmFsdWUoZmFsc2UpOwotICAgICAgICAgICAgcmVzcG9u c2UuaW5mbyA9ICdDT05ORUNUSU9OX0xPU1QnOwotICAgICAgICAgICAgbmV0d29ya01vY2sub25B bnkoJy9zcWxlZGl0b3IvcXVlcnlfdG9vbC9zdGFydC8xMjMnKS5yZXBseSg1MDMsIHJlc3BvbnNl KTsKLQotICAgICAgICAgICAgZXhlY3V0ZVF1ZXJ5LmV4ZWN1dGUoJ3NvbWUgc3FsIHF1ZXJ5Jywg JycpOwotICAgICAgICAgIH0pOwotCi0gICAgICAgICAgc2hvdWxkU2F2ZVN0YXRlVGVzdENhc2Uo KTsKLQotICAgICAgICAgIGl0KCdjYWxscyBoYW5kbGVfY29ubmVjdGlvbl9sb3N0JywgKGRvbmUp ID0+IHsKLSAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gewotICAgICAgICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yTW9jay5oYW5kbGVfY29ubmVjdGlvbl9sb3N0KS50b0hhdmVCZWVuQ2FsbGVk KCk7Ci0gICAgICAgICAgICAgIGRvbmUoKTsKLSAgICAgICAgICAgIH0sIDApOwotICAgICAgICAg IH0pOwotICAgICAgICB9KTsKLSAgICAgIH0pOwotCi0gICAgfSk7Ci0gIH0pOwotfSk7Ci0KZGlm ZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2ZpbHRlcl9kaWFs b2dfc3BlY3MuanMgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9maWx0ZXJf ZGlhbG9nX3NwZWNzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NWFiZDg4Mzcu LjAwMDAwMDAwMAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9maWx0 ZXJfZGlhbG9nX3NwZWNzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8KLS8vCi0vLyBwZ0FkbWluIDQgLSBQb3N0Z3JlU1FMIFRvb2xzCi0vLwotLy8g Q29weXJpZ2h0IChDKSAyMDEzIC0gMjAyMiwgVGhlIHBnQWRtaW4gRGV2ZWxvcG1lbnQgVGVhbQot Ly8gVGhpcyBzb2Z0d2FyZSBpcyByZWxlYXNlZCB1bmRlciB0aGUgUG9zdGdyZVNRTCBMaWNlbmNl Ci0vLwotLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLWltcG9ydCBmaWx0ZXJEaWFsb2cgZnJvbSAnc291cmNl cy9zcWxlZGl0b3IvZmlsdGVyX2RpYWxvZyc7Ci0KLWRlc2NyaWJlKCdmaWx0ZXJEaWFsb2cnLCAo KSA9PiB7Ci0gIGRlc2NyaWJlKCdmaWx0ZXJEaWFsb2cnLCAoKSA9PiB7Ci0gICAgZGVzY3JpYmUo J3doZW4gdXNpbmcgZmlsdGVyIGRpYWxvZycsICgpID0+IHsKLSAgICAgIGJlZm9yZUVhY2goKCkg PT4gewotICAgICAgICBzcHlPbihmaWx0ZXJEaWFsb2csICdkaWFsb2cnKTsKLSAgICAgIH0pOwot Ci0gICAgICBpdCgnaXQgc2hvdWxkIGJlIGRlZmluZWQgYXMgZnVuY3Rpb24nLCBmdW5jdGlvbigp IHsKLSAgICAgICAgZXhwZWN0KGZpbHRlckRpYWxvZy5kaWFsb2cpLnRvQmVEZWZpbmVkKCk7Ci0g ICAgICB9KTsKLQotICAgICAgaXQoJ2l0IHNob3VsZCBjYWxsIHdpdGhvdXQgcHJvcGVyIGhhbmRs ZXInLCAoKSA9PiB7Ci0gICAgICAgIGV4cGVjdChmaWx0ZXJEaWFsb2cuZGlhbG9nKS5ub3QudG9I YXZlQmVlbkNhbGxlZFdpdGgoe30pOwotICAgICAgfSk7Ci0KLSAgICB9KTsKLSAgfSk7Ci19KTsK ZGlmZiAtLWdpdCBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL2tleWJvYXJk X3Nob3J0Y3V0c19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3Iv a2V5Ym9hcmRfc2hvcnRjdXRzX3NwZWMuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDY3NTk1ZjIxNS4uMDAwMDAwMDAwCi0tLSBhL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3Fs ZWRpdG9yL2tleWJvYXJkX3Nob3J0Y3V0c19zcGVjLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNzMz ICswLDAgQEAKLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0vLwotLy8gcGdBZG1pbiA0IC0gUG9zdGdyZVNR TCBUb29scwotLy8KLS8vIENvcHlyaWdodCAoQykgMjAxMyAtIDIwMjIsIFRoZSBwZ0FkbWluIERl dmVsb3BtZW50IFRlYW0KLS8vIFRoaXMgc29mdHdhcmUgaXMgcmVsZWFzZWQgdW5kZXIgdGhlIFBv c3RncmVTUUwgTGljZW5jZQotLy8KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLWltcG9ydCAqIGFzIGtl eWJvYXJkU2hvcnRjdXRzIGZyb20gJ3NvdXJjZXMva2V5Ym9hcmRfc2hvcnRjdXRzJzsKLWltcG9y dCB7cXVlcnlUb29sQWN0aW9uc30gZnJvbSAnc291cmNlcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9h Y3Rpb25zJzsKLWltcG9ydCBnZXR0ZXh0IGZyb20gJ3NvdXJjZXMvZ2V0dGV4dCc7Ci0KLWRlc2Ny aWJlKCd0aGUga2V5Ym9hcmQgc2hvcnRjdXRzJywgKCkgPT4gewotICBjb25zdCBGMV9LRVkgPSAx MTIsCi0gICAgRjVfS0VZID0gMTE2LAotICAgIEY2X0tFWSA9IDExNywKLSAgICBGN19LRVkgPSAx MTgsCi0gICAgRjhfS0VZID0gMTE5LAotICAgIFBFUklPRF9LRVkgPSAxOTAsCi0gICAgRldEX1NM QVNIX0tFWSA9IDE5MSwKLSAgICBDMV9LRVkgPSA0OTsKLQotICBsZXQgc3FsRWRpdG9yQ29udHJv bGxlclNweSwgZXZlbnQsIHF1ZXJ5VG9vbEFjdGlvbnNTcHk7Ci0gIGJlZm9yZUVhY2goKCkgPT4g ewotICAgIGV2ZW50ID0gewotICAgICAgc2hpZnQ6IGZhbHNlLAotICAgICAgd2hpY2g6IHVuZGVm aW5lZCwKLSAgICAgIHByZXZlbnREZWZhdWx0OiBqYXNtaW5lLmNyZWF0ZVNweSgncHJldmVudERl ZmF1bHQnKSwKLSAgICAgIGNhbmNlbEJ1YmJsZTogZmFsc2UsCi0gICAgICBzdG9wUHJvcGFnYXRp b246IGphc21pbmUuY3JlYXRlU3B5KCdzdG9wUHJvcGFnYXRpb24nKSwKLSAgICAgIHN0b3BJbW1l ZGlhdGVQcm9wYWdhdGlvbjogamFzbWluZS5jcmVhdGVTcHkoJ3N0b3BJbW1lZGlhdGVQcm9wYWdh dGlvbicpLAotICAgIH07Ci0KLSAgICBsZXQgZ3JpZFZpZXcgPSB7Ci0gICAgICBxdWVyeV90b29s X29iajogewotICAgICAgICBnZXRTZWxlY3Rpb246IGphc21pbmUuY3JlYXRlU3B5KCdnZXRTZWxl Y3Rpb24nKSwKLSAgICAgICAgZ2V0VmFsdWU6IGphc21pbmUuY3JlYXRlU3B5KCdnZXRWYWx1ZScp LAotICAgICAgfSwKLSAgICB9OwotCi0gICAgc3FsRWRpdG9yQ29udHJvbGxlclNweSA9IGphc21p bmUuY3JlYXRlU3B5T2JqKCdTcWxFZGl0b3JDb250cm9sbGVyJywgWwotICAgICAgJ2lzUXVlcnlS dW5uaW5nJywKLSAgICAgICdleGVjdXRlJywKLSAgICBdKTsKLQotICAgIHNxbEVkaXRvckNvbnRy b2xsZXJTcHkuZ3JpZFZpZXcgPSBncmlkVmlldzsKLQotICAgIHNxbEVkaXRvckNvbnRyb2xsZXJT cHkucHJlZmVyZW5jZXMgPSB7Ci0gICAgICBleGVjdXRlX3F1ZXJ5OiB7Ci0gICAgICAgIGFsdDog ZmFsc2UsCi0gICAgICAgIHNoaWZ0OiBmYWxzZSwKLSAgICAgICAgY29udHJvbDogZmFsc2UsCi0g ICAgICAgIGtleTogewotICAgICAgICAgIGtleV9jb2RlOiBGNV9LRVksCi0gICAgICAgIH0sCi0g ICAgICB9LAotICAgICAgZXhwbGFpbl9xdWVyeTogewotICAgICAgICBhbHQ6IGZhbHNlLAotICAg ICAgICBzaGlmdDogZmFsc2UsCi0gICAgICAgIGNvbnRyb2w6IGZhbHNlLAotICAgICAgICBrZXk6 IHsKLSAgICAgICAgICBrZXlfY29kZTogRjdfS0VZLAotICAgICAgICB9LAotICAgICAgfSwKLSAg ICAgIGV4cGxhaW5fYW5hbHl6ZV9xdWVyeTogewotICAgICAgICBhbHQ6IGZhbHNlLAotICAgICAg ICBzaGlmdDogdHJ1ZSwKLSAgICAgICAgY29udHJvbDogZmFsc2UsCi0gICAgICAgIGtleTogewot ICAgICAgICAgIGtleV9jb2RlOiBGN19LRVksCi0gICAgICAgIH0sCi0gICAgICB9LAotICAgICAg ZG93bmxvYWRfcmVzdWx0czogewotICAgICAgICBhbHQ6IGZhbHNlLAotICAgICAgICBzaGlmdDog ZmFsc2UsCi0gICAgICAgIGNvbnRyb2w6IGZhbHNlLAotICAgICAgICBrZXk6IHsKLSAgICAgICAg ICBrZXlfY29kZTogRjhfS0VZLAotICAgICAgICB9LAotICAgICAgfSwKLSAgICAgIG1vdmVfbmV4 dDogewotICAgICAgICBhbHQ6IGZhbHNlLAotICAgICAgICBzaGlmdDogZmFsc2UsCi0gICAgICAg IGNvbnRyb2w6IGZhbHNlLAotICAgICAgICBrZXk6IHsKLSAgICAgICAgICBrZXlfY29kZTogbnVs bCwKLSAgICAgICAgfSwKLSAgICAgIH0sCi0gICAgICBtb3ZlX3ByZXZpb3VzOiB7Ci0gICAgICAg IGFsdDogZmFsc2UsCi0gICAgICAgIHNoaWZ0OiBmYWxzZSwKLSAgICAgICAgY29udHJvbDogZmFs c2UsCi0gICAgICAgIGtleTogewotICAgICAgICAgIGtleV9jb2RlOiBudWxsLAotICAgICAgICB9 LAotICAgICAgfSwKLSAgICAgIGNvbW1pdF90cmFuc2FjdGlvbjogewotICAgICAgICBhbHQ6IGZh bHNlLAotICAgICAgICBzaGlmdDogdHJ1ZSwKLSAgICAgICAgY29udHJvbDogdHJ1ZSwKLSAgICAg ICAga2V5OiB7Ci0gICAgICAgICAga2V5X2NvZGU6ICdtJywKLSAgICAgICAgfSwKLSAgICAgIH0s Ci0gICAgICByb2xsYmFja190cmFuc2FjdGlvbjogewotICAgICAgICBhbHQ6IGZhbHNlLAotICAg ICAgICBzaGlmdDogdHJ1ZSwKLSAgICAgICAgY29udHJvbDogdHJ1ZSwKLSAgICAgICAga2V5OiB7 Ci0gICAgICAgICAga2V5X2NvZGU6ICdyJywKLSAgICAgICAgfSwKLSAgICAgIH0sCi0gICAgICBz YXZlX2RhdGE6IHsKLSAgICAgICAgYWx0IDogZmFsc2UsCi0gICAgICAgIHNoaWZ0OiBmYWxzZSwK LSAgICAgICAgY29udHJvbDogZmFsc2UsCi0gICAgICAgIGtleTogewotICAgICAgICAgIGtleV9j b2RlOiBGNl9LRVksCi0gICAgICAgIH0sCi0gICAgICB9LAotICAgIH07Ci0KLSAgICBzcWxFZGl0 b3JDb250cm9sbGVyU3B5Lm1hY3JvcyA9IFsKLSAgICAgIHsKLSAgICAgICAgYWx0OiBmYWxzZSwK LSAgICAgICAgY29udHJvbDogdHJ1ZSwKLSAgICAgICAgaWQ6IDEsCi0gICAgICAgIGtleTogJzEn LAotICAgICAgICBrZXlfY29kZTogQzFfS0VZLAotICAgICAgICBrZXlfbGFiZWw6ICdDdHJsICsg MScsCi0gICAgICAgIG5hbWU6ICdDMScsCi0gICAgICAgIHNxbDogJ1NlbGVjdCAxOycsCi0gICAg ICB9LAotICAgIF07Ci0KLSAgICBxdWVyeVRvb2xBY3Rpb25zU3B5ID0gamFzbWluZS5jcmVhdGVT cHlPYmoocXVlcnlUb29sQWN0aW9ucywgWwotICAgICAgJ2V4cGxhaW5BbmFseXplJywKLSAgICAg ICdleHBsYWluJywKLSAgICAgICdkb3dubG9hZCcsCi0gICAgICAnY29tbWVudEJsb2NrQ29kZScs Ci0gICAgICAnY29tbWVudExpbmVDb2RlJywKLSAgICAgICd1bmNvbW1lbnRMaW5lQ29kZScsCi0g ICAgICAnZXhlY3V0ZVF1ZXJ5JywKLSAgICAgICdleGVjdXRlQ29tbWl0JywKLSAgICAgICdleGVj dXRlUm9sbGJhY2snLAotICAgICAgJ3NhdmVEYXRhQ2hhbmdlcycsCi0gICAgICAnZXhlY3V0ZU1h Y3JvJywKLSAgICBdKTsKLSAgfSk7Ci0KLSAgbGV0IGRvZXNOb3RoaW5nVGVzdENhc2UgPSAoKT0+ IHsKLSAgICBpdCgnZG9lcyBub3RoaW5nJywgKCkgPT4gewotICAgICAga2V5Ym9hcmRTaG9ydGN1 dHMucHJvY2Vzc0V2ZW50UXVlcnlUb29sKAotICAgICAgICBzcWxFZGl0b3JDb250cm9sbGVyU3B5 LCBxdWVyeVRvb2xBY3Rpb25zU3B5LCBldmVudAotICAgICAgKTsKLQotICAgICAgZXhwZWN0KHF1 ZXJ5VG9vbEFjdGlvbnNTcHkuY29tbWVudExpbmVDb2RlKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgp OwotICAgIH0pOwotICB9OwotCi0gIGxldCBiZWZvcmVFYWNoV2luZG93cyA9ICgpPT4gewotICAg IHdpbmRvd3NLZXlzU2V0dXAoKTsKLSAgICBldmVudC53aGljaCA9IEZXRF9TTEFTSF9LRVk7Ci0g ICAgZXZlbnQuc2hpZnRLZXkgPSB0cnVlOwotICAgIGtleWJvYXJkU2hvcnRjdXRzLnByb2Nlc3NF dmVudFF1ZXJ5VG9vbCgKLSAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHksIHF1ZXJ5VG9vbEFj dGlvbnNTcHksIGV2ZW50Ci0gICAgKTsKLSAgfTsKLQotICBsZXQgYmVmb3JlRWFjaE1BQyA9ICgp PT4gewotICAgIG1hY0tleXNTZXR1cCgpOwotICAgIGV2ZW50LndoaWNoID0gRldEX1NMQVNIX0tF WTsKLSAgICBldmVudC5zaGlmdEtleSA9IHRydWU7Ci0gICAga2V5Ym9hcmRTaG9ydGN1dHMucHJv Y2Vzc0V2ZW50UXVlcnlUb29sKAotICAgICAgc3FsRWRpdG9yQ29udHJvbGxlclNweSwgcXVlcnlU b29sQWN0aW9uc1NweSwgZXZlbnQKLSAgICApOwotICB9OwotCi0KLSAgZGVzY3JpYmUoJ3doZW4g dGhlIGtleSBpcyBub3QgaGFuZGxlZCBieSB0aGUgZnVuY3Rpb24nLCBmdW5jdGlvbiAoKSB7Ci0K LSAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgIGV2ZW50LndoaWNoID0gRjFfS0VZOwotICAg ICAga2V5Ym9hcmRTaG9ydGN1dHMucHJvY2Vzc0V2ZW50UXVlcnlUb29sKAotICAgICAgICBzcWxF ZGl0b3JDb250cm9sbGVyU3B5LCBxdWVyeVRvb2xBY3Rpb25zU3B5LCBldmVudAotICAgICAgKTsK LSAgICB9KTsKLQotICAgIGl0KCdzaG91bGQgYWxsb3cgZXZlbnQgdG8gcHJvcGFnYXRlJywgKCkg PT4gewotICAgICAgZXhwZWN0KGV2ZW50LnByZXZlbnREZWZhdWx0KS5ub3QudG9IYXZlQmVlbkNh bGxlZCgpOwotICAgIH0pOwotICB9KTsKLQotICBkZXNjcmliZSgnRjUnLCAoKSA9PiB7Ci0gICAg ZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMgbm8gcXVlcnkgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4g ewotICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgIGV2ZW50LmtleUNvZGUgPSBGNV9L RVk7Ci0gICAgICAgIGV2ZW50LmFsdEtleSA9IGZhbHNlOwotICAgICAgICBldmVudC5zaGlmdEtl eSA9IGZhbHNlOwotICAgICAgICBldmVudC5jdHJsS2V5ID0gZmFsc2U7Ci0gICAgICAgIGtleWJv YXJkU2hvcnRjdXRzLnByb2Nlc3NFdmVudFF1ZXJ5VG9vbCgKLSAgICAgICAgICBzcWxFZGl0b3JD b250cm9sbGVyU3B5LCBxdWVyeVRvb2xBY3Rpb25zU3B5LCBldmVudAotICAgICAgICApOwotICAg ICAgfSk7Ci0KLSAgICAgIGl0KCdzaG91bGQgZXhlY3V0ZSB0aGUgcXVlcnknLCAoKSA9PiB7Ci0g ICAgICAgIGV4cGVjdChxdWVyeVRvb2xBY3Rpb25zU3B5LmV4ZWN1dGVRdWVyeSkudG9IYXZlQmVl bkNhbGxlZFdpdGgoc3FsRWRpdG9yQ29udHJvbGxlclNweSk7Ci0gICAgICB9KTsKLQotICAgICAg aXQoJ3Nob3VsZCBzdG9wIGV2ZW50IHByb3BhZ2F0aW9uJywgKCkgPT4gewotICAgICAgICBleHBl Y3QoZXZlbnQucHJldmVudERlZmF1bHQpLnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgICAgIH0pOwot ICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJ3doZW4gdGhlIHF1ZXJ5IGlzIGFscmVhZHkgcnVubmlu ZycsICgpID0+IHsKLSAgICAgIGl0KCdkb2VzIG5vdGhpbmcnLCAoKSA9PiB7Ci0gICAgICAgIGV2 ZW50LmtleUNvZGUgPSBGNV9LRVk7Ci0gICAgICAgIGV2ZW50LmFsdEtleSA9IGZhbHNlOwotICAg ICAgICBldmVudC5zaGlmdEtleSA9IGZhbHNlOwotICAgICAgICBldmVudC5jdHJsS2V5ID0gZmFs c2U7Ci0gICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHkuaXNRdWVyeVJ1bm5pbmcuYW5kLnJl dHVyblZhbHVlKHRydWUpOwotCi0gICAgICAgIGtleWJvYXJkU2hvcnRjdXRzLnByb2Nlc3NFdmVu dFF1ZXJ5VG9vbCgKLSAgICAgICAgICBzcWxFZGl0b3JDb250cm9sbGVyU3B5LCBxdWVyeVRvb2xB Y3Rpb25zU3B5LCBldmVudAotICAgICAgICApOwotCi0gICAgICAgIGV4cGVjdChxdWVyeVRvb2xB Y3Rpb25zU3B5LmV4ZWN1dGVRdWVyeSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgICAgIH0p OwotICAgIH0pOwotICB9KTsKLQotICBkZXNjcmliZSgnRjYnLCAoKSA9PiB7Ci0gICAgZGVzY3Jp YmUoJ3doZW4gdGhlcmUgaXMgbm90IGEgcXVlcnkgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4gewot ICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgIGV2ZW50LndoaWNoID0gRjZfS0VZOwot ICAgICAgICBldmVudC5hbHRLZXkgPSBmYWxzZTsKLSAgICAgICAgZXZlbnQuc2hpZnRLZXkgPSBm YWxzZTsKLSAgICAgICAgZXZlbnQuY3RybEtleSA9IGZhbHNlOwotICAgICAgICBrZXlib2FyZFNo b3J0Y3V0cy5wcm9jZXNzRXZlbnRRdWVyeVRvb2woCi0gICAgICAgICAgc3FsRWRpdG9yQ29udHJv bGxlclNweSwgcXVlcnlUb29sQWN0aW9uc1NweSwgZXZlbnQKLSAgICAgICAgKTsKLSAgICAgIH0p OwotCi0gICAgICBpdCgnc2hvdWxkIHNhdmUgdGhlIGNoYW5nZWQgZGF0YScsICgpID0+IHsKLSAg ICAgICAgZXhwZWN0KHF1ZXJ5VG9vbEFjdGlvbnNTcHkuc2F2ZURhdGFDaGFuZ2VzKS50b0hhdmVC ZWVuQ2FsbGVkV2l0aChzcWxFZGl0b3JDb250cm9sbGVyU3B5KTsKLSAgICAgIH0pOwotCi0gICAg ICBleHBlY3RFdmVudFByb3BhZ2F0aW9uVG9TdG9wKCk7Ci0gICAgfSk7Ci0KLSAgICBkZXNjcmli ZSgnd2hlbiB0aGUgcXVlcnkgaXMgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4gewotICAgICAgaXQo J2RvZXMgbm90aGluZycsICgpID0+IHsKLSAgICAgICAgZXZlbnQua2V5Q29kZSA9IEY2X0tFWTsK LSAgICAgICAgZXZlbnQuYWx0S2V5ID0gZmFsc2U7Ci0gICAgICAgIGV2ZW50LnNoaWZ0S2V5ID0g ZmFsc2U7Ci0gICAgICAgIGV2ZW50LmN0cmxLZXkgPSBmYWxzZTsKLSAgICAgICAgc3FsRWRpdG9y Q29udHJvbGxlclNweS5pc1F1ZXJ5UnVubmluZy5hbmQucmV0dXJuVmFsdWUodHJ1ZSk7Ci0KLSAg ICAgICAga2V5Ym9hcmRTaG9ydGN1dHMucHJvY2Vzc0V2ZW50UXVlcnlUb29sKAotICAgICAgICAg IHNxbEVkaXRvckNvbnRyb2xsZXJTcHksIHF1ZXJ5VG9vbEFjdGlvbnNTcHksIGV2ZW50Ci0gICAg ICAgICk7Ci0KLSAgICAgICAgZXhwZWN0KHF1ZXJ5VG9vbEFjdGlvbnNTcHkuc2F2ZURhdGFDaGFu Z2VzKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0gIH0pOwot Ci0gIGRlc2NyaWJlKCdGNycsICgpID0+IHsKLSAgICBkZXNjcmliZSgnd2hlbiB0aGVyZSBpcyBu b3QgYSBxdWVyeSBhbHJlYWR5IHJ1bm5pbmcnLCAoKSA9PiB7Ci0gICAgICBiZWZvcmVFYWNoKCgp ID0+IHsKLSAgICAgICAgZXZlbnQud2hpY2ggPSBGN19LRVk7Ci0gICAgICAgIGV2ZW50LmFsdEtl eSA9IGZhbHNlOwotICAgICAgICBldmVudC5zaGlmdEtleSA9IGZhbHNlOwotICAgICAgICBldmVu dC5jdHJsS2V5ID0gZmFsc2U7Ci0gICAgICAgIGtleWJvYXJkU2hvcnRjdXRzLnByb2Nlc3NFdmVu dFF1ZXJ5VG9vbCgKLSAgICAgICAgICBzcWxFZGl0b3JDb250cm9sbGVyU3B5LCBxdWVyeVRvb2xB Y3Rpb25zU3B5LCBldmVudAotICAgICAgICApOwotICAgICAgfSk7Ci0KLSAgICAgIGl0KCdzaG91 bGQgZXhwbGFpbiB0aGUgcXVlcnkgcGxhbicsICgpID0+IHsKLSAgICAgICAgZXhwZWN0KHF1ZXJ5 VG9vbEFjdGlvbnNTcHkuZXhwbGFpbikudG9IYXZlQmVlbkNhbGxlZFdpdGgoc3FsRWRpdG9yQ29u dHJvbGxlclNweSk7Ci0gICAgICB9KTsKLQotICAgICAgZXhwZWN0RXZlbnRQcm9wYWdhdGlvblRv U3RvcCgpOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJ3doZW4gdGhlIHF1ZXJ5IGlzIGFscmVh ZHkgcnVubmluZycsICgpID0+IHsKLSAgICAgIGl0KCdkb2VzIG5vdGhpbmcnLCAoKSA9PiB7Ci0g ICAgICAgIGV2ZW50LmtleUNvZGUgPSBGN19LRVk7Ci0gICAgICAgIGV2ZW50LmFsdEtleSA9IGZh bHNlOwotICAgICAgICBldmVudC5zaGlmdEtleSA9IGZhbHNlOwotICAgICAgICBldmVudC5jdHJs S2V5ID0gZmFsc2U7Ci0gICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHkuaXNRdWVyeVJ1bm5p bmcuYW5kLnJldHVyblZhbHVlKHRydWUpOwotCi0gICAgICAgIGtleWJvYXJkU2hvcnRjdXRzLnBy b2Nlc3NFdmVudFF1ZXJ5VG9vbCgKLSAgICAgICAgICBzcWxFZGl0b3JDb250cm9sbGVyU3B5LCBx dWVyeVRvb2xBY3Rpb25zU3B5LCBldmVudAotICAgICAgICApOwotCi0gICAgICAgIGV4cGVjdChx dWVyeVRvb2xBY3Rpb25zU3B5LmV4cGxhaW4pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAg ICB9KTsKLSAgICB9KTsKLSAgfSk7Ci0KLSAgZGVzY3JpYmUoJ1NoaWZ0K0Y3JywgKCkgPT4gewot ICAgIGRlc2NyaWJlKCd3aGVuIHRoZXJlIGlzIG5vdCBhIHF1ZXJ5IGFscmVhZHkgcnVubmluZycs ICgpID0+IHsKLSAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgICBldmVudC5zaGlmdEtl eSA9IHRydWU7Ci0gICAgICAgIGV2ZW50LndoaWNoID0gRjdfS0VZOwotICAgICAgICBldmVudC5h bHRLZXkgPSBmYWxzZTsKLSAgICAgICAgZXZlbnQuY3RybEtleSA9IGZhbHNlOwotICAgICAgICBr ZXlib2FyZFNob3J0Y3V0cy5wcm9jZXNzRXZlbnRRdWVyeVRvb2woCi0gICAgICAgICAgc3FsRWRp dG9yQ29udHJvbGxlclNweSwgcXVlcnlUb29sQWN0aW9uc1NweSwgZXZlbnQKLSAgICAgICAgKTsK LSAgICAgIH0pOwotCi0gICAgICBpdCgnc2hvdWxkIGFuYWx5emUgZXhwbGFpbiB0aGUgcXVlcnkg cGxhbicsICgpID0+IHsKLSAgICAgICAgZXhwZWN0KHF1ZXJ5VG9vbEFjdGlvbnNTcHkuZXhwbGFp bkFuYWx5emUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHNxbEVkaXRvckNvbnRyb2xsZXJTcHkpOwot ICAgICAgfSk7Ci0KLSAgICAgIGV4cGVjdEV2ZW50UHJvcGFnYXRpb25Ub1N0b3AoKTsKLSAgICB9 KTsKLQotICAgIGRlc2NyaWJlKCd3aGVuIHRoZSBxdWVyeSBpcyBhbHJlYWR5IHJ1bm5pbmcnLCAo KSA9PiB7Ci0gICAgICBpdCgnZG9lcyBub3RoaW5nJywgKCkgPT4gewotICAgICAgICBldmVudC5z aGlmdEtleSA9IHRydWU7Ci0gICAgICAgIGV2ZW50LndoaWNoID0gRjdfS0VZOwotICAgICAgICBl dmVudC5hbHRLZXkgPSBmYWxzZTsKLSAgICAgICAgZXZlbnQuY3RybEtleSA9IGZhbHNlOwotCi0g ICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHkuaXNRdWVyeVJ1bm5pbmcuYW5kLnJldHVyblZh bHVlKHRydWUpOwotCi0gICAgICAgIGtleWJvYXJkU2hvcnRjdXRzLnByb2Nlc3NFdmVudFF1ZXJ5 VG9vbCgKLSAgICAgICAgICBzcWxFZGl0b3JDb250cm9sbGVyU3B5LCBxdWVyeVRvb2xBY3Rpb25z U3B5LCBldmVudAotICAgICAgICApOwotCi0gICAgICAgIGV4cGVjdChxdWVyeVRvb2xBY3Rpb25z U3B5LmV4cGxhaW5BbmFseXplKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpOwotICAgICAgfSk7Ci0g ICAgfSk7Ci0gIH0pOwotCi0gIGRlc2NyaWJlKCdGOCcsICgpID0+IHsKLSAgICBkZXNjcmliZSgn d2hlbiB0aGVyZSBpcyBub3QgYSBxdWVyeSBhbHJlYWR5IHJ1bm5pbmcnLCAoKSA9PiB7Ci0gICAg ICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgZXZlbnQud2hpY2ggPSBGOF9LRVk7Ci0gICAg ICAgIGV2ZW50LmFsdEtleSA9IGZhbHNlOwotICAgICAgICBldmVudC5zaGlmdEtleSA9IGZhbHNl OwotICAgICAgICBldmVudC5jdHJsS2V5ID0gZmFsc2U7Ci0KLSAgICAgICAga2V5Ym9hcmRTaG9y dGN1dHMucHJvY2Vzc0V2ZW50UXVlcnlUb29sKAotICAgICAgICAgIHNxbEVkaXRvckNvbnRyb2xs ZXJTcHksIHF1ZXJ5VG9vbEFjdGlvbnNTcHksIGV2ZW50Ci0gICAgICAgICk7Ci0gICAgICB9KTsK LQotICAgICAgaXQoJ3Nob3VsZCBkb3dubG9hZCB0aGUgcXVlcnkgcmVzdWx0cyBhcyBhIENTVics ICgpID0+IHsKLSAgICAgICAgZXhwZWN0KHF1ZXJ5VG9vbEFjdGlvbnNTcHkuZG93bmxvYWQpLnRv SGF2ZUJlZW5DYWxsZWQoKTsKLSAgICAgIH0pOwotCi0gICAgICBpdCgnc2hvdWxkIHN0b3AgZXZl bnQgcHJvcGFnYXRpb24nLCAoKSA9PiB7Ci0gICAgICAgIGV4cGVjdChldmVudC5wcmV2ZW50RGVm YXVsdCkudG9IYXZlQmVlbkNhbGxlZCgpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBkZXNj cmliZSgnd2hlbiB0aGUgcXVlcnkgaXMgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4gewotICAgICAg aXQoJ2RvZXMgbm90aGluZycsICgpID0+IHsKLSAgICAgICAgZXZlbnQua2V5Q29kZSA9IEY4X0tF WTsKLSAgICAgICAgZXZlbnQuYWx0S2V5ID0gZmFsc2U7Ci0gICAgICAgIGV2ZW50LnNoaWZ0S2V5 ID0gZmFsc2U7Ci0gICAgICAgIGV2ZW50LmN0cmxLZXkgPSBmYWxzZTsKLQotICAgICAgICBzcWxF ZGl0b3JDb250cm9sbGVyU3B5LmlzUXVlcnlSdW5uaW5nLmFuZC5yZXR1cm5WYWx1ZSh0cnVlKTsK LQotICAgICAgICBrZXlib2FyZFNob3J0Y3V0cy5wcm9jZXNzRXZlbnRRdWVyeVRvb2woCi0gICAg ICAgICAgc3FsRWRpdG9yQ29udHJvbGxlclNweSwgcXVlcnlUb29sQWN0aW9uc1NweSwgZXZlbnQK LSAgICAgICAgKTsKLQotICAgICAgICBleHBlY3QocXVlcnlUb29sQWN0aW9uc1NweS5kb3dubG9h ZCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgICAgIH0pOwotICAgIH0pOwotICB9KTsKLQot ICBkZXNjcmliZSgnaW5saW5lQ29tbWVudCcsICgpID0+IHsKLSAgICBkZXNjcmliZSgnd2hlbiB0 aGVyZSBpcyBub3QgYSBxdWVyeSBhbHJlYWR5IHJ1bm5pbmcnLCAoKSA9PiB7Ci0gICAgICBkZXNj cmliZSgnYW5kIHRoZSBzeXN0ZW0gaXMgYSBNYWMnLCAoKSA9PiB7Ci0gICAgICAgIGJlZm9yZUVh Y2goKCkgPT4gewotICAgICAgICAgIG1hY0tleXNTZXR1cCgpOwotICAgICAgICAgIGV2ZW50Lndo aWNoID0gRldEX1NMQVNIX0tFWTsKLSAgICAgICAgICBrZXlib2FyZFNob3J0Y3V0cy5wcm9jZXNz RXZlbnRRdWVyeVRvb2woCi0gICAgICAgICAgICBzcWxFZGl0b3JDb250cm9sbGVyU3B5LCBxdWVy eVRvb2xBY3Rpb25zU3B5LCBldmVudAotICAgICAgICAgICk7Ci0gICAgICAgIH0pOwotCi0gICAg ICAgIGl0KCdzaG91bGQgY29tbWVudCB0aGUgbGluZScsICgpID0+IHsKLSAgICAgICAgICBleHBl Y3QocXVlcnlUb29sQWN0aW9uc1NweS5jb21tZW50TGluZUNvZGUpLnRvSGF2ZUJlZW5DYWxsZWRX aXRoKHNxbEVkaXRvckNvbnRyb2xsZXJTcHkpOwotICAgICAgICB9KTsKLQotICAgICAgICBleHBl Y3RFdmVudFByb3BhZ2F0aW9uVG9TdG9wKCk7Ci0gICAgICB9KTsKLQotICAgICAgZGVzY3JpYmUo J2FuZCB0aGUgc3lzdGVtIGlzIFdpbmRvd3MnLCAoKSA9PiB7Ci0gICAgICAgIGJlZm9yZUVhY2go KCkgPT4gewotICAgICAgICAgIHdpbmRvd3NLZXlzU2V0dXAoKTsKLSAgICAgICAgICBldmVudC53 aGljaCA9IEZXRF9TTEFTSF9LRVk7Ci0gICAgICAgICAga2V5Ym9hcmRTaG9ydGN1dHMucHJvY2Vz c0V2ZW50UXVlcnlUb29sKAotICAgICAgICAgICAgc3FsRWRpdG9yQ29udHJvbGxlclNweSwgcXVl cnlUb29sQWN0aW9uc1NweSwgZXZlbnQKLSAgICAgICAgICApOwotICAgICAgICB9KTsKLQotICAg ICAgICBpdCgnc2hvdWxkIGNvbW1lbnQgdGhlIGxpbmUnLCAoKSA9PiB7Ci0gICAgICAgICAgZXhw ZWN0KHF1ZXJ5VG9vbEFjdGlvbnNTcHkuY29tbWVudExpbmVDb2RlKS50b0hhdmVCZWVuQ2FsbGVk V2l0aChzcWxFZGl0b3JDb250cm9sbGVyU3B5KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZXhw ZWN0RXZlbnRQcm9wYWdhdGlvblRvU3RvcCgpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBk ZXNjcmliZSgnd2hlbiB0aGUgcXVlcnkgaXMgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4gewotICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHkuaXNR dWVyeVJ1bm5pbmcuYW5kLnJldHVyblZhbHVlKHRydWUpOwotICAgICAgfSk7Ci0gICAgICBkZXNj cmliZSgnYW5kIHRoZSBzeXN0ZW0gaXMgYSBNYWMnLCAoKSA9PiB7Ci0gICAgICAgIGJlZm9yZUVh Y2goKCkgPT4gewotICAgICAgICAgIG1hY0tleXNTZXR1cCgpOwotICAgICAgICAgIGV2ZW50Lndo aWNoID0gRldEX1NMQVNIX0tFWTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZG9lc05vdGhpbmdU ZXN0Q2FzZSgpOwotICAgICAgfSk7Ci0KLSAgICAgIGRlc2NyaWJlKCdhbmQgdGhlIHN5c3RlbSBp cyBhIFdpbmRvd3MnLCAoKSA9PiB7Ci0gICAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAg ICAgIHdpbmRvd3NLZXlzU2V0dXAoKTsKLSAgICAgICAgICBldmVudC53aGljaCA9IEZXRF9TTEFT SF9LRVk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGRvZXNOb3RoaW5nVGVzdENhc2UoKTsKLSAg ICAgIH0pOwotICAgIH0pOwotICB9KTsKLQotICBkZXNjcmliZSgnaW5saW5lVW5jb21tZW50Jywg KCkgPT4gewotICAgIGRlc2NyaWJlKCd3aGVuIHRoZXJlIGlzIG5vdCBhIHF1ZXJ5IGFscmVhZHkg cnVubmluZycsICgpID0+IHsKLSAgICAgIGRlc2NyaWJlKCdhbmQgdGhlIHN5c3RlbSBpcyBhIG1h YycsICgpID0+IHsKLSAgICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgICAgbWFjS2V5 c1NldHVwKCk7Ci0gICAgICAgICAgZXZlbnQud2hpY2ggPSBQRVJJT0RfS0VZOwotICAgICAgICAg IGtleWJvYXJkU2hvcnRjdXRzLnByb2Nlc3NFdmVudFF1ZXJ5VG9vbCgKLSAgICAgICAgICAgIHNx bEVkaXRvckNvbnRyb2xsZXJTcHksIHF1ZXJ5VG9vbEFjdGlvbnNTcHksIGV2ZW50Ci0gICAgICAg ICAgKTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgaXQoJ3Nob3VsZCB1bmNvbW1lbnQgdGhlIGxp bmUnLCAoKSA9PiB7Ci0gICAgICAgICAgZXhwZWN0KHF1ZXJ5VG9vbEFjdGlvbnNTcHkudW5jb21t ZW50TGluZUNvZGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHNxbEVkaXRvckNvbnRyb2xsZXJTcHkp OwotICAgICAgICB9KTsKLQotICAgICAgICBleHBlY3RFdmVudFByb3BhZ2F0aW9uVG9TdG9wKCk7 Ci0gICAgICB9KTsKLSAgICAgIGRlc2NyaWJlKCdhbmQgdGhlIHN5c3RlbSBpcyBhIHdpbmRvd3Mn LCAoKSA9PiB7Ci0gICAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgICAgIHdpbmRvd3NL ZXlzU2V0dXAoKTsKLSAgICAgICAgICBldmVudC53aGljaCA9IFBFUklPRF9LRVk7Ci0gICAgICAg ICAga2V5Ym9hcmRTaG9ydGN1dHMucHJvY2Vzc0V2ZW50UXVlcnlUb29sKAotICAgICAgICAgICAg c3FsRWRpdG9yQ29udHJvbGxlclNweSwgcXVlcnlUb29sQWN0aW9uc1NweSwgZXZlbnQKLSAgICAg ICAgICApOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgnc2hvdWxkIHVuY29tbWVudCB0aGUg bGluZScsICgpID0+IHsKLSAgICAgICAgICBleHBlY3QocXVlcnlUb29sQWN0aW9uc1NweS51bmNv bW1lbnRMaW5lQ29kZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoc3FsRWRpdG9yQ29udHJvbGxlclNw eSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGV4cGVjdEV2ZW50UHJvcGFnYXRpb25Ub1N0b3Ao KTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJ3doZW4gdGhlIHF1ZXJ5IGlz IGFscmVhZHkgcnVubmluZycsICgpID0+IHsKLSAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAg ICAgICBzcWxFZGl0b3JDb250cm9sbGVyU3B5LmlzUXVlcnlSdW5uaW5nLmFuZC5yZXR1cm5WYWx1 ZSh0cnVlKTsKLSAgICAgIH0pOwotICAgICAgZGVzY3JpYmUoJ2FuZCB0aGUgc3lzdGVtIGlzIGEg TWFjJywgKCkgPT4gewotICAgICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgICBtYWNL ZXlzU2V0dXAoKTsKLSAgICAgICAgICBldmVudC53aGljaCA9IFBFUklPRF9LRVk7Ci0gICAgICAg IH0pOwotCi0gICAgICAgIGRvZXNOb3RoaW5nVGVzdENhc2UoKTsKLSAgICAgIH0pOwotICAgICAg ZGVzY3JpYmUoJ2FuZCB0aGUgc3lzdGVtIGlzIGEgV2luZG93cycsICgpID0+IHsKLSAgICAgICAg YmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgICAgd2luZG93c0tleXNTZXR1cCgpOwotICAgICAg ICAgIGV2ZW50LndoaWNoID0gUEVSSU9EX0tFWTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZG9l c05vdGhpbmdUZXN0Q2FzZSgpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0gIH0pOwotCi0gIGRlc2Ny aWJlKCdibG9ja0NvbW1lbnQnLCAoKSA9PiB7Ci0gICAgZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMg bm90IGEgcXVlcnkgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4gewotICAgICAgZGVzY3JpYmUoJ2Fu ZCB0aGUgc3lzdGVtIGlzIGEgTWFjJywgKCkgPT4gewotICAgICAgICBiZWZvcmVFYWNoKGJlZm9y ZUVhY2hNQUMpOwotCi0gICAgICAgIGl0KCdzaG91bGQgY29tbWVudCBvdXQgdGhlIGJsb2NrIHNl bGVjdGlvbicsICgpID0+IHsKLSAgICAgICAgICBleHBlY3QocXVlcnlUb29sQWN0aW9uc1NweS5j b21tZW50QmxvY2tDb2RlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChzcWxFZGl0b3JDb250cm9sbGVy U3B5KTsKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgZXhwZWN0RXZlbnRQcm9wYWdhdGlvblRvU3Rv cCgpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnd2hlbiB0aGVyZSBpcyBu b3QgYSBxdWVyeSBhbHJlYWR5IHJ1bm5pbmcnLCAoKSA9PiB7Ci0gICAgICBkZXNjcmliZSgnYW5k IHRoZSBzeXN0ZW0gaXMgYSBXaW5kb3dzJywgKCkgPT4gewotICAgICAgICBiZWZvcmVFYWNoKGJl Zm9yZUVhY2hXaW5kb3dzKTsKLQotICAgICAgICBpdCgnc2hvdWxkIGNvbW1lbnQgb3V0IHRoZSBi bG9jayBzZWxlY3Rpb24nLCAoKSA9PiB7Ci0gICAgICAgICAgZXhwZWN0KHF1ZXJ5VG9vbEFjdGlv bnNTcHkuY29tbWVudEJsb2NrQ29kZSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoc3FsRWRpdG9yQ29u dHJvbGxlclNweSk7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIGV4cGVjdEV2ZW50UHJvcGFnYXRp b25Ub1N0b3AoKTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJ3doZW4gdGhl cmUgaXMgYSBxdWVyeSBhbHJlYWR5IHJ1bm5pbmcnLCAoKSA9PiB7Ci0gICAgICBiZWZvcmVFYWNo KCgpID0+IHsKLSAgICAgICAgc3FsRWRpdG9yQ29udHJvbGxlclNweS5pc1F1ZXJ5UnVubmluZy5h bmQucmV0dXJuVmFsdWUodHJ1ZSk7Ci0gICAgICB9KTsKLSAgICAgIGRlc2NyaWJlKCdhbmQgdGhl IHN5c3RlbSBpcyBhIE1hYycsICgpID0+IHsKLSAgICAgICAgYmVmb3JlRWFjaChiZWZvcmVFYWNo TUFDKTsKLSAgICAgICAgaXQoJ2RvZXMgbm90aGluZycsICgpID0+IHsKLSAgICAgICAgICBleHBl Y3QocXVlcnlUb29sQWN0aW9uc1NweS5jb21tZW50QmxvY2tDb2RlKS5ub3QudG9IYXZlQmVlbkNh bGxlZCgpOwotICAgICAgICB9KTsKLSAgICAgIH0pOwotICAgICAgZGVzY3JpYmUoJ2FuZCB0aGUg c3lzdGVtIGlzIGEgV2luZG93cycsICgpID0+IHsKLSAgICAgICAgYmVmb3JlRWFjaChiZWZvcmVF YWNoV2luZG93cyk7Ci0gICAgICAgIGl0KCdkb2VzIG5vdGhpbmcnLCAoKSA9PiB7Ci0gICAgICAg ICAgZXhwZWN0KHF1ZXJ5VG9vbEFjdGlvbnNTcHkuY29tbWVudEJsb2NrQ29kZSkubm90LnRvSGF2 ZUJlZW5DYWxsZWQoKTsKLSAgICAgICAgfSk7Ci0gICAgICB9KTsKLSAgICB9KTsKLSAgfSk7Ci0K LSAgZGVzY3JpYmUoJ3Nob3J0Y3V0IHRvIHRleHQgY29udmVydGVycycsICgpPT4gewotICAgIHZh ciBzaG9ydGN1dCA9IHsKLSAgICAgIGFsdDogZmFsc2UsCi0gICAgICBzaGlmdDogZmFsc2UsCi0g ICAgICBjb250cm9sOiBmYWxzZSwKLSAgICAgIGtleTogewotICAgICAgICBjaGFyOiAnYScsCi0g ICAgICAgIGtleV9jb2RlOiA2NSwKLSAgICAgIH0sCi0gICAgfTsKLQotICAgIGl0KCdzaG9ydGN1 dF9rZXknLCgpPT57Ci0gICAgICBleHBlY3Qoa2V5Ym9hcmRTaG9ydGN1dHMuc2hvcnRjdXRfa2V5 KHNob3J0Y3V0KSkudG9FcXVhbCgnQScpOwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3J0Y3V0X2Fj Y2Vzc2tleV90aXRsZScsKCk9PnsKLSAgICAgIGV4cGVjdChrZXlib2FyZFNob3J0Y3V0cy5zaG9y dGN1dF9hY2Nlc3NrZXlfdGl0bGUoCi0gICAgICAgICdUaXRsZScsIHNob3J0Y3V0KSkudG9FcXVh bChnZXR0ZXh0KCdUaXRsZSAoYWNjZXNza2V5ICsgQSknKSk7Ci0gICAgfSk7Ci0KLSAgICBpdCgn c2hvcnRjdXRfdGl0bGUnLCgpPT57Ci0gICAgICBzaG9ydGN1dC5hbHQgPSB0cnVlOwotICAgICAg c2hvcnRjdXQuc2hpZnQgPSBmYWxzZTsKLSAgICAgIHNob3J0Y3V0LmNvbnRyb2wgPSBmYWxzZTsK LSAgICAgIGV4cGVjdChrZXlib2FyZFNob3J0Y3V0cy5zaG9ydGN1dF90aXRsZSgKLSAgICAgICAg J1RpdGxlJywgc2hvcnRjdXQpKS50b0VxdWFsKGdldHRleHQoJ1RpdGxlIChBbHQrQSknKSk7Ci0K LSAgICAgIHNob3J0Y3V0LmFsdCA9IGZhbHNlOwotICAgICAgc2hvcnRjdXQuc2hpZnQgPSB0cnVl OwotICAgICAgc2hvcnRjdXQuY29udHJvbCA9IGZhbHNlOwotICAgICAgZXhwZWN0KGtleWJvYXJk U2hvcnRjdXRzLnNob3J0Y3V0X3RpdGxlKAotICAgICAgICAnVGl0bGUnLCBzaG9ydGN1dCkpLnRv RXF1YWwoZ2V0dGV4dCgnVGl0bGUgKFNoaWZ0K0EpJykpOwotCi0gICAgICBzaG9ydGN1dC5hbHQg PSBmYWxzZTsKLSAgICAgIHNob3J0Y3V0LnNoaWZ0ID0gZmFsc2U7Ci0gICAgICBzaG9ydGN1dC5j b250cm9sID0gdHJ1ZTsKLSAgICAgIGV4cGVjdChrZXlib2FyZFNob3J0Y3V0cy5zaG9ydGN1dF90 aXRsZSgKLSAgICAgICAgJ1RpdGxlJywgc2hvcnRjdXQpKS50b0VxdWFsKGdldHRleHQoJ1RpdGxl IChDdHJsK0EpJykpOwotCi0gICAgICBzaG9ydGN1dC5hbHQgPSB0cnVlOwotICAgICAgc2hvcnRj dXQuc2hpZnQgPSB0cnVlOwotICAgICAgc2hvcnRjdXQuY29udHJvbCA9IHRydWU7Ci0gICAgICBl eHBlY3Qoa2V5Ym9hcmRTaG9ydGN1dHMuc2hvcnRjdXRfdGl0bGUoCi0gICAgICAgICdUaXRsZScs IHNob3J0Y3V0KSkudG9FcXVhbChnZXR0ZXh0KCdUaXRsZSAoQWx0K1NoaWZ0K0N0cmwrQSknKSk7 Ci0gICAgfSk7Ci0gIH0pOwotCi0gIGRlc2NyaWJlKCdTaGlmdCtDdHJsK0MnLCAoKSA9PiB7Ci0g ICAgZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMgbm90IGEgcXVlcnkgYWxyZWFkeSBydW5uaW5nJywg KCkgPT4gewotICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgIGV2ZW50LnNoaWZ0S2V5 ID0gdHJ1ZTsKLSAgICAgICAgZXZlbnQud2hpY2ggPSAnbSc7Ci0gICAgICAgIGV2ZW50LmFsdEtl eSA9IGZhbHNlOwotICAgICAgICBldmVudC5jdHJsS2V5ID0gdHJ1ZTsKLSAgICAgICAga2V5Ym9h cmRTaG9ydGN1dHMucHJvY2Vzc0V2ZW50UXVlcnlUb29sKAotICAgICAgICAgIHNxbEVkaXRvckNv bnRyb2xsZXJTcHksIHF1ZXJ5VG9vbEFjdGlvbnNTcHksIGV2ZW50Ci0gICAgICAgICk7Ci0gICAg ICB9KTsKLQotICAgICAgaXQoJ3Nob3VsZCBjb21taXQgdGhlIHRyYW5zYWN0aW9uJywgKCkgPT4g ewotICAgICAgICBleHBlY3QocXVlcnlUb29sQWN0aW9uc1NweS5leGVjdXRlQ29tbWl0KS50b0hh dmVCZWVuQ2FsbGVkV2l0aChzcWxFZGl0b3JDb250cm9sbGVyU3B5KTsKLSAgICAgIH0pOwotCi0g ICAgICBleHBlY3RFdmVudFByb3BhZ2F0aW9uVG9TdG9wKCk7Ci0gICAgfSk7Ci0KLSAgICBkZXNj cmliZSgnd2hlbiB0aGUgcXVlcnkgaXMgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4gewotICAgICAg aXQoJ2RvZXMgbm90aGluZycsICgpID0+IHsKLSAgICAgICAgZXZlbnQuc2hpZnRLZXkgPSB0cnVl OwotICAgICAgICBldmVudC53aGljaCA9ICdtJzsKLSAgICAgICAgZXZlbnQuYWx0S2V5ID0gZmFs c2U7Ci0gICAgICAgIGV2ZW50LmN0cmxLZXkgPSB0cnVlOwotCi0gICAgICAgIHNxbEVkaXRvckNv bnRyb2xsZXJTcHkuaXNRdWVyeVJ1bm5pbmcuYW5kLnJldHVyblZhbHVlKHRydWUpOwotCi0gICAg ICAgIGtleWJvYXJkU2hvcnRjdXRzLnByb2Nlc3NFdmVudFF1ZXJ5VG9vbCgKLSAgICAgICAgICBz cWxFZGl0b3JDb250cm9sbGVyU3B5LCBxdWVyeVRvb2xBY3Rpb25zU3B5LCBldmVudAotICAgICAg ICApOwotCi0gICAgICAgIGV4cGVjdChxdWVyeVRvb2xBY3Rpb25zU3B5LmV4ZWN1dGVDb21taXQp Lm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgICB9KTsKLSAgICB9KTsKLSAgfSk7Ci0KLSAg ZGVzY3JpYmUoJ1NoaWZ0K0N0cmwrUicsICgpID0+IHsKLSAgICBkZXNjcmliZSgnd2hlbiB0aGVy ZSBpcyBub3QgYSBxdWVyeSBhbHJlYWR5IHJ1bm5pbmcnLCAoKSA9PiB7Ci0gICAgICBiZWZvcmVF YWNoKCgpID0+IHsKLSAgICAgICAgZXZlbnQuc2hpZnRLZXkgPSB0cnVlOwotICAgICAgICBldmVu dC53aGljaCA9ICdyJzsKLSAgICAgICAgZXZlbnQuYWx0S2V5ID0gZmFsc2U7Ci0gICAgICAgIGV2 ZW50LmN0cmxLZXkgPSB0cnVlOwotICAgICAgICBrZXlib2FyZFNob3J0Y3V0cy5wcm9jZXNzRXZl bnRRdWVyeVRvb2woCi0gICAgICAgICAgc3FsRWRpdG9yQ29udHJvbGxlclNweSwgcXVlcnlUb29s QWN0aW9uc1NweSwgZXZlbnQKLSAgICAgICAgKTsKLSAgICAgIH0pOwotCi0gICAgICBpdCgnc2hv dWxkIHJvbGxiYWNrIHRoZSB0cmFuc2FjdGlvbicsICgpID0+IHsKLSAgICAgICAgZXhwZWN0KHF1 ZXJ5VG9vbEFjdGlvbnNTcHkuZXhlY3V0ZVJvbGxiYWNrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChz cWxFZGl0b3JDb250cm9sbGVyU3B5KTsKLSAgICAgIH0pOwotCi0gICAgICBleHBlY3RFdmVudFBy b3BhZ2F0aW9uVG9TdG9wKCk7Ci0gICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnd2hlbiB0aGUgcXVl cnkgaXMgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4gewotICAgICAgaXQoJ2RvZXMgbm90aGluZycs ICgpID0+IHsKLSAgICAgICAgZXZlbnQuc2hpZnRLZXkgPSB0cnVlOwotICAgICAgICBldmVudC53 aGljaCA9ICdyJzsKLSAgICAgICAgZXZlbnQuYWx0S2V5ID0gZmFsc2U7Ci0gICAgICAgIGV2ZW50 LmN0cmxLZXkgPSB0cnVlOwotCi0gICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHkuaXNRdWVy eVJ1bm5pbmcuYW5kLnJldHVyblZhbHVlKHRydWUpOwotCi0gICAgICAgIGtleWJvYXJkU2hvcnRj dXRzLnByb2Nlc3NFdmVudFF1ZXJ5VG9vbCgKLSAgICAgICAgICBzcWxFZGl0b3JDb250cm9sbGVy U3B5LCBxdWVyeVRvb2xBY3Rpb25zU3B5LCBldmVudAotICAgICAgICApOwotCi0gICAgICAgIGV4 cGVjdChxdWVyeVRvb2xBY3Rpb25zU3B5LmV4ZWN1dGVSb2xsYmFjaykubm90LnRvSGF2ZUJlZW5D YWxsZWQoKTsKLSAgICAgIH0pOwotICAgIH0pOwotICB9KTsKLQotICBkZXNjcmliZSgnTWFjcm8g Q3RybCArIDEnLCAoKSA9PiB7Ci0gICAgZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMgbm90IGEgcXVl cnkgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4gewotICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0g ICAgICAgIGV2ZW50LndoaWNoID0gQzFfS0VZOwotICAgICAgICBldmVudC5hbHRLZXkgPSBmYWxz ZTsKLSAgICAgICAgZXZlbnQuc2hpZnRLZXkgPSBmYWxzZTsKLSAgICAgICAgZXZlbnQuY3RybEtl eSA9IHRydWU7Ci0KLSAgICAgICAga2V5Ym9hcmRTaG9ydGN1dHMucHJvY2Vzc0V2ZW50UXVlcnlU b29sKAotICAgICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHksIHF1ZXJ5VG9vbEFjdGlvbnNT cHksIGV2ZW50Ci0gICAgICAgICk7Ci0gICAgICB9KTsKLQotICAgICAgaXQoJ3Nob3VsZCBleGVj dXRlIHRoZSBtYWNybycsICgpID0+IHsKLSAgICAgICAgZXhwZWN0KHF1ZXJ5VG9vbEFjdGlvbnNT cHkuZXhlY3V0ZU1hY3JvKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChzcWxFZGl0b3JDb250cm9sbGVy U3B5LAotICAgICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHkubWFjcm9zWzBdLmlkKTsKLSAg ICAgIH0pOwotCi0gICAgICBpdCgnc2hvdWxkIHN0b3AgZXZlbnQgcHJvcGFnYXRpb24nLCAoKSA9 PiB7Ci0gICAgICAgIGV4cGVjdChldmVudC5wcmV2ZW50RGVmYXVsdCkudG9IYXZlQmVlbkNhbGxl ZCgpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnd2hlbiB0aGUgcXVlcnkg aXMgYWxyZWFkeSBydW5uaW5nJywgKCkgPT4gewotICAgICAgaXQoJ2RvZXMgbm90aGluZycsICgp ID0+IHsKLSAgICAgICAgZXZlbnQua2V5Q29kZSA9IEMxX0tFWTsKLSAgICAgICAgZXZlbnQuYWx0 S2V5ID0gZmFsc2U7Ci0gICAgICAgIGV2ZW50LnNoaWZ0S2V5ID0gZmFsc2U7Ci0gICAgICAgIGV2 ZW50LmN0cmxLZXkgPSB0cnVlOwotCi0gICAgICAgIHNxbEVkaXRvckNvbnRyb2xsZXJTcHkuaXNR dWVyeVJ1bm5pbmcuYW5kLnJldHVyblZhbHVlKHRydWUpOwotCi0gICAgICAgIGtleWJvYXJkU2hv cnRjdXRzLnByb2Nlc3NFdmVudFF1ZXJ5VG9vbCgKLSAgICAgICAgICBzcWxFZGl0b3JDb250cm9s bGVyU3B5LCBxdWVyeVRvb2xBY3Rpb25zU3B5LCBldmVudAotICAgICAgICApOwotCi0gICAgICAg IGV4cGVjdChxdWVyeVRvb2xBY3Rpb25zU3B5LmV4ZWN1dGVNYWNybykubm90LnRvSGF2ZUJlZW5D YWxsZWQoKTsKLSAgICAgIH0pOwotICAgIH0pOwotICB9KTsKLQotICBmdW5jdGlvbiBleHBlY3RF dmVudFByb3BhZ2F0aW9uVG9TdG9wKCkgewotICAgIGRlc2NyaWJlKCdzdG9wcyBhbGwgZXZlbnQg cHJvcG9nYXRpb24nLCAoKSA9PiB7Ci0KLSAgICAgIGl0KCdzaG91bGQgY2FuY2VsIHRoZSBidWJi bGUnLCAoKSA9PiB7Ci0gICAgICAgIGV4cGVjdChldmVudC5jYW5jZWxCdWJibGUpLnRvRXF1YWwo dHJ1ZSk7Ci0gICAgICB9KTsKLQotICAgICAgaXQoJ3Nob3VsZCBwcmV2ZW50IHRoZSBkZWZhdWx0 IGJlaGF2aW9yJywgKCkgPT4gewotICAgICAgICBleHBlY3QoZXZlbnQucHJldmVudERlZmF1bHQp LnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgICAgIH0pOwotCi0gICAgICBpdCgnc2hvdWxkIHN0b3Ag ZXZlbnQgcHJvcGFnYXRpb24nLCAoKSA9PiB7Ci0gICAgICAgIGV4cGVjdChldmVudC5zdG9wUHJv cGFnYXRpb24pLnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgICAgICAgZXhwZWN0KGV2ZW50LnN0b3BJ bW1lZGlhdGVQcm9wYWdhdGlvbikudG9IYXZlQmVlbkNhbGxlZCgpOwotICAgICAgfSk7Ci0gICAg fSk7Ci0gIH0KLQotICBmdW5jdGlvbiB3aW5kb3dzS2V5c1NldHVwKCkgewotICAgIHNweU9uKGtl eWJvYXJkU2hvcnRjdXRzLCAnaXNNYWMnKS5hbmQucmV0dXJuVmFsdWUoZmFsc2UpOwotICAgIGV2 ZW50LmN0cmxLZXkgPSB0cnVlOwotICAgIGV2ZW50Lm1ldGFLZXkgPSBmYWxzZTsKLSAgfQotCi0g IGZ1bmN0aW9uIG1hY0tleXNTZXR1cCgpIHsKLSAgICBzcHlPbihrZXlib2FyZFNob3J0Y3V0cywg J2lzTWFjJykuYW5kLnJldHVyblZhbHVlKHRydWUpOwotICAgIGV2ZW50LmN0cmxLZXkgPSBmYWxz ZTsKLSAgICBldmVudC5tZXRhS2V5ID0gdHJ1ZTsKLSAgfQotfSk7CmRpZmYgLS1naXQgYS93ZWIv cmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9xdWVyeV90b29sX2FjdGlvbnNfc3BlYy5q cyBiL3dlYi9yZWdyZXNzaW9uL2phdmFzY3JpcHQvc3FsZWRpdG9yL3F1ZXJ5X3Rvb2xfYWN0aW9u c19zcGVjLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NGI4MmQwNWQuLjAwMDAw MDAwMAotLS0gYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9xdWVyeV90b29s X2FjdGlvbnNfc3BlYy5qcworKysgL2Rldi9udWxsCkBAIC0xLDYwOCArMCwwIEBACi0vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLS8vCi0vLyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0v LyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UK LS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotaW1wb3J0IHF1ZXJ5VG9vbEFjdGlvbnMgZnJvbSAnc291 cmNlcy9zcWxlZGl0b3IvcXVlcnlfdG9vbF9hY3Rpb25zJzsKLQotZGVzY3JpYmUoJ3F1ZXJ5VG9v bEFjdGlvbnMnLCAoKSA9PiB7Ci0gIGxldCBzcWxFZGl0b3JDb250cm9sbGVyLAotICAgIGdldFNl bGVjdGlvblNweSwgZ2V0VmFsdWVTcHksCi0gICAgc2VsZWN0ZWRRdWVyeVN0cmluZywgZW50aXJl UXVlcnlTdHJpbmcsCi0gICAgcmVwbGFjZVNlbGVjdGlvblNweTsKLQotICBsZXQgZXhlY3V0ZUZ1 bmN0aW9uQ2FsbCA9ICgpPT57Ci0gICAgcXVlcnlUb29sQWN0aW9ucy5leGVjdXRlUXVlcnkoc3Fs RWRpdG9yQ29udHJvbGxlcik7Ci0gICAgZXhwZWN0KHNxbEVkaXRvckNvbnRyb2xsZXIuY2hlY2tf ZGF0YV9jaGFuZ2VzX3RvX2V4ZWN1dGVfcXVlcnkpLnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgfTsK LQotICBsZXQgdG9nZ2xlU2VsZWN0aW9uU3RyaW5nVXBwZXJDYXNlID0gKCk9PiB7Ci0gICAgaXQo J3RvZ2dsZSB0aGUgc2VsZWN0aW9uIGFuZCBzdHJpbmcgc2hvdWxkIGJlIGluIHVwcGVyIGNhc2Un LCAoKSA9PiB7Ci0gICAgICBxdWVyeVRvb2xBY3Rpb25zLnRvZ2dsZUNhc2VPZlNlbGVjdGVkVGV4 dChzcWxFZGl0b3JDb250cm9sbGVyKTsKLSAgICAgIGV4cGVjdChyZXBsYWNlU2VsZWN0aW9uU3B5 Ci0gICAgICApLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdTVFJJTkcnKTsKLSAgICB9KTsKLSAgfTsK LQotICBsZXQgYmVmb3JlRWFjaEVtcHR5U2VsZWN0aW9uID0gKCk9PiB7Ci0gICAgc2V0VXBTcGll cygnJywgJ2Egc3RyaW5nXG5kZGRcbnNzcycpOwotCi0gICAgc3FsRWRpdG9yQ29udHJvbGxlci5n cmlkVmlldy5xdWVyeV90b29sX29iai5nZXRDdXJzb3IgPSAoKSA9PiB7Ci0gICAgICByZXR1cm4g MzsKLSAgICB9OwotICB9OwotCi0gIGRlc2NyaWJlKCdleGVjdXRlUXVlcnknLCAoKSA9PiB7Ci0g ICAgZGVzY3JpYmUoJ3doZW4gdGhlIGNvbW1hbmQgaXMgYmVpbmcgcnVuIGZyb20gdGhlIHF1ZXJ5 IHRvb2wnLCAoKSA9PiB7Ci0gICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgc2V0VXBT cGllcygnJywgJycpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX2NsZWFyTWVz c2FnZVRhYicpOwotICAgICAgfSk7Ci0KLSAgICAgIGl0KCdjbGVhcnMgdGhlIGh0bWwgaW4gdGhl IG1lc3NhZ2UgdGFiJywgKCkgPT4gewotICAgICAgICBxdWVyeVRvb2xBY3Rpb25zLmV4ZWN1dGVR dWVyeShzcWxFZGl0b3JDb250cm9sbGVyKTsKLQotICAgICAgICBleHBlY3QocXVlcnlUb29sQWN0 aW9ucy5fY2xlYXJNZXNzYWdlVGFiKS50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgICB9KTsKLQot ICAgICAgaXQoJ2NhbGxzIHRoZSBleGVjdXRlIGZ1bmN0aW9uIG9uIHRoZSBzcWxFZGl0b3JDb250 cm9sbGVyJywgZXhlY3V0ZUZ1bmN0aW9uQ2FsbCk7Ci0gICAgfSk7Ci0gICAgZGVzY3JpYmUoJ3do ZW4gdGhlIGNvbW1hbmQgaXMgYmVpbmcgcnVuIGZyb20gdGhlIHZpZXcgZGF0YSB2aWV3JywgKCkg PT4gewotICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgIHNldFVwU3BpZXMoJycsICcn KTsKLSAgICAgICAgc3FsRWRpdG9yQ29udHJvbGxlci5pc19xdWVyeV90b29sID0gZmFsc2U7Ci0g ICAgICB9KTsKLQotICAgICAgaXQoJ2l0IGNhbGxzIHRoZSBjaGVja19kYXRhX2NoYW5nZXNfdG9f ZXhlY3V0ZV9xdWVyeSBmdW5jdGlvbiBvbiB0aGUgc3FsRWRpdG9yQ29udHJvbGxlcicsIGV4ZWN1 dGVGdW5jdGlvbkNhbGwpOwotICAgIH0pOwotICB9KTsKLQotICBkZXNjcmliZSgnZXhwbGFpbkFu YWx5emUnLCAoKSA9PiB7Ci0gICAgZGVzY3JpYmUoJ3doZW4gdmVyYm9zZSBhbmQgY29zdHMgYXJl IG5vdCBzZWxlY3RlZCBhbmQgYnVmZmVycyBhbmQgdGltaW5nIGFyZSBub3Qgc2VsZWN0ZWQnLCAo KSA9PiB7Ci0gICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgc2V0VXBTcGllcygnJywg JycpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX3ZlcmJvc2UnKS5hbmQucmV0 dXJuVmFsdWUoZmFsc2UpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX2Nvc3Rz RW5hYmxlZCcpLmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9v bEFjdGlvbnMsICdfYnVmZmVycycpLmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7Ci0gICAgICAgIHNw eU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfdGltaW5nJykuYW5kLnJldHVyblZhbHVlKGZhbHNlKTsK LSAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19zdW1tYXJ5JykuYW5kLnJldHVyblZh bHVlKGZhbHNlKTsKLSAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19zZXR0aW5ncycp LmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7Ci0gICAgICB9KTsKLQotICAgICAgaXQoJ2NhbGxzIHRo ZSBleGVjdXRlIGZ1bmN0aW9uJywgKCkgPT4gewotICAgICAgICBxdWVyeVRvb2xBY3Rpb25zLmV4 cGxhaW5BbmFseXplKHNxbEVkaXRvckNvbnRyb2xsZXIpOwotCi0gICAgICAgIGNvbnN0IGV4cGxh aW5PYmplY3QgPSB7Ci0gICAgICAgICAgZm9ybWF0OiAnanNvbicsCi0gICAgICAgICAgYW5hbHl6 ZTogdHJ1ZSwKLSAgICAgICAgICB2ZXJib3NlOiBmYWxzZSwKLSAgICAgICAgICBjb3N0czogZmFs c2UsCi0gICAgICAgICAgYnVmZmVyczogZmFsc2UsCi0gICAgICAgICAgdGltaW5nOiBmYWxzZSwK LSAgICAgICAgICBzdW1tYXJ5OiBmYWxzZSwKLSAgICAgICAgICBzZXR0aW5nczogZmFsc2UsCi0g ICAgICAgIH07Ci0KLSAgICAgICAgZXhwZWN0KHNxbEVkaXRvckNvbnRyb2xsZXIuY2hlY2tfZGF0 YV9jaGFuZ2VzX3RvX2V4ZWN1dGVfcXVlcnkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGxhaW5P YmplY3QpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnd2hlbiBhbGwgb3B0 aW9ucyBhcmUgc2VsZWN0ZWQnLCAoKSA9PiB7Ci0gICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAg ICAgICAgc2V0VXBTcGllcygnJywgJycpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25z LCAnX3ZlcmJvc2UnKS5hbmQucmV0dXJuVmFsdWUodHJ1ZSk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5 VG9vbEFjdGlvbnMsICdfY29zdHNFbmFibGVkJykuYW5kLnJldHVyblZhbHVlKHRydWUpOwotICAg ICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX2J1ZmZlcnMnKS5hbmQucmV0dXJuVmFsdWUo dHJ1ZSk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfdGltaW5nJykuYW5kLnJl dHVyblZhbHVlKHRydWUpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX3N1bW1h cnknKS5hbmQucmV0dXJuVmFsdWUodHJ1ZSk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlv bnMsICdfc2V0dGluZ3MnKS5hbmQucmV0dXJuVmFsdWUodHJ1ZSk7Ci0gICAgICB9KTsKLSAgICAg IGl0KCdjYWxscyB0aGUgZXhlY3V0ZSBmdW5jdGlvbicsICgpID0+IHsKLSAgICAgICAgcXVlcnlU b29sQWN0aW9ucy5leHBsYWluQW5hbHl6ZShzcWxFZGl0b3JDb250cm9sbGVyKTsKLSAgICAgICAg Y29uc3QgZXhwbGFpbk9iamVjdCA9IHsKLSAgICAgICAgICBmb3JtYXQ6ICdqc29uJywKLSAgICAg ICAgICBhbmFseXplOiB0cnVlLAotICAgICAgICAgIHZlcmJvc2U6IHRydWUsCi0gICAgICAgICAg Y29zdHM6IHRydWUsCi0gICAgICAgICAgYnVmZmVyczogdHJ1ZSwKLSAgICAgICAgICB0aW1pbmc6 IHRydWUsCi0gICAgICAgICAgc3VtbWFyeTogdHJ1ZSwKLSAgICAgICAgICBzZXR0aW5nczogdHJ1 ZSwKLSAgICAgICAgfTsKLSAgICAgICAgZXhwZWN0KHNxbEVkaXRvckNvbnRyb2xsZXIuY2hlY2tf ZGF0YV9jaGFuZ2VzX3RvX2V4ZWN1dGVfcXVlcnkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGxh aW5PYmplY3QpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnd2hlbiB2ZXJi b3NlIGlzIHNlbGVjdGVkIGFuZCBjb3N0cyBpcyBub3Qgc2VsZWN0ZWQgYW5kIGJ1ZmZlciBpcyBz ZWxlY3RlZCBhbmQgdGltaW5nIGlzIG5vdCBzZWxlY3RlZCcsICgpID0+IHsKLSAgICAgIGJlZm9y ZUVhY2goKCkgPT4gewotICAgICAgICBzZXRVcFNwaWVzKCcnLCAnJyk7Ci0gICAgICAgIHNweU9u KHF1ZXJ5VG9vbEFjdGlvbnMsICdfdmVyYm9zZScpLmFuZC5yZXR1cm5WYWx1ZSh0cnVlKTsKLSAg ICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19jb3N0c0VuYWJsZWQnKS5hbmQucmV0dXJu VmFsdWUoZmFsc2UpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX2J1ZmZlcnMn KS5hbmQucmV0dXJuVmFsdWUodHJ1ZSk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMs ICdfdGltaW5nJykuYW5kLnJldHVyblZhbHVlKGZhbHNlKTsKLSAgICAgICAgc3B5T24ocXVlcnlU b29sQWN0aW9ucywgJ19zdW1tYXJ5JykuYW5kLnJldHVyblZhbHVlKGZhbHNlKTsKLSAgICAgICAg c3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19zZXR0aW5ncycpLmFuZC5yZXR1cm5WYWx1ZShmYWxz ZSk7Ci0gICAgICB9KTsKLSAgICAgIGl0KCdjYWxscyB0aGUgZXhlY3V0ZSBmdW5jdGlvbicsICgp ID0+IHsKLSAgICAgICAgcXVlcnlUb29sQWN0aW9ucy5leHBsYWluQW5hbHl6ZShzcWxFZGl0b3JD b250cm9sbGVyKTsKLQotICAgICAgICBjb25zdCBleHBsYWluT2JqZWN0ID0gewotICAgICAgICAg IGZvcm1hdDogJ2pzb24nLAotICAgICAgICAgIGFuYWx5emU6IHRydWUsCi0gICAgICAgICAgdmVy Ym9zZTogdHJ1ZSwKLSAgICAgICAgICBjb3N0czogZmFsc2UsCi0gICAgICAgICAgYnVmZmVyczog dHJ1ZSwKLSAgICAgICAgICB0aW1pbmc6IGZhbHNlLAotICAgICAgICAgIHN1bW1hcnk6IGZhbHNl LAotICAgICAgICAgIHNldHRpbmdzOiBmYWxzZSwKLSAgICAgICAgfTsKLQotICAgICAgICBleHBl Y3Qoc3FsRWRpdG9yQ29udHJvbGxlci5jaGVja19kYXRhX2NoYW5nZXNfdG9fZXhlY3V0ZV9xdWVy eSkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwbGFpbk9iamVjdCk7Ci0gICAgICB9KTsKLSAgICB9 KTsKLQotICAgIGRlc2NyaWJlKCd3aGVuIHZlcmJvc2UgaXMgIG5vdCBzZWxlY3RlZCBhbmQgY29z dHMgaXMgc2VsZWN0ZWQgYW5kIGJ1ZmZlciBpcyBub3Qgc2VsZWN0ZWQgYW5kIHRpbWluZyBpcyAg c2VsZWN0ZWQnLCAoKSA9PiB7Ci0gICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgc2V0 VXBTcGllcygnJywgJycpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX3ZlcmJv c2UnKS5hbmQucmV0dXJuVmFsdWUoZmFsc2UpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rp b25zLCAnX2Nvc3RzRW5hYmxlZCcpLmFuZC5yZXR1cm5WYWx1ZSh0cnVlKTsKLSAgICAgICAgc3B5 T24ocXVlcnlUb29sQWN0aW9ucywgJ19idWZmZXJzJykuYW5kLnJldHVyblZhbHVlKGZhbHNlKTsK LSAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ190aW1pbmcnKS5hbmQucmV0dXJuVmFs dWUodHJ1ZSk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfc3VtbWFyeScpLmFu ZC5yZXR1cm5WYWx1ZShmYWxzZSk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdf c2V0dGluZ3MnKS5hbmQucmV0dXJuVmFsdWUoZmFsc2UpOwotICAgICAgfSk7Ci0gICAgICBpdCgn Y2FsbHMgdGhlIGV4ZWN1dGUgZnVuY3Rpb24nLCAoKSA9PiB7Ci0gICAgICAgIHF1ZXJ5VG9vbEFj dGlvbnMuZXhwbGFpbkFuYWx5emUoc3FsRWRpdG9yQ29udHJvbGxlcik7Ci0KLSAgICAgICAgY29u c3QgZXhwbGFpbk9iamVjdCA9IHsKLSAgICAgICAgICBmb3JtYXQ6ICdqc29uJywKLSAgICAgICAg ICBhbmFseXplOiB0cnVlLAotICAgICAgICAgIHZlcmJvc2U6IGZhbHNlLAotICAgICAgICAgIGNv c3RzOiB0cnVlLAotICAgICAgICAgIGJ1ZmZlcnM6IGZhbHNlLAotICAgICAgICAgIHRpbWluZzog dHJ1ZSwKLSAgICAgICAgICBzdW1tYXJ5OiBmYWxzZSwKLSAgICAgICAgICBzZXR0aW5nczogZmFs c2UsCi0gICAgICAgIH07Ci0KLSAgICAgICAgZXhwZWN0KHNxbEVkaXRvckNvbnRyb2xsZXIuY2hl Y2tfZGF0YV9jaGFuZ2VzX3RvX2V4ZWN1dGVfcXVlcnkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4 cGxhaW5PYmplY3QpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBkZXNjcmliZSgnd2hlbiBh bGwgYXJlIG5vdCBzZWxlY3RlZCBleGNlcHQgc3VtbWFyeSBhbmQgc2V0dGluZ3MnLCAoKSA9PiB7 Ci0gICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgc2V0VXBTcGllcygnJywgJycpOwot ICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX3ZlcmJvc2UnKS5hbmQucmV0dXJuVmFs dWUoZmFsc2UpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX2Nvc3RzRW5hYmxl ZCcpLmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlv bnMsICdfYnVmZmVycycpLmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7Ci0gICAgICAgIHNweU9uKHF1 ZXJ5VG9vbEFjdGlvbnMsICdfdGltaW5nJykuYW5kLnJldHVyblZhbHVlKGZhbHNlKTsKLSAgICAg ICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19zdW1tYXJ5JykuYW5kLnJldHVyblZhbHVlKHRy dWUpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX3NldHRpbmdzJykuYW5kLnJl dHVyblZhbHVlKHRydWUpOwotICAgICAgfSk7Ci0gICAgICBpdCgnY2FsbHMgdGhlIGV4ZWN1dGUg ZnVuY3Rpb24nLCAoKSA9PiB7Ci0gICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMuZXhwbGFpbkFuYWx5 emUoc3FsRWRpdG9yQ29udHJvbGxlcik7Ci0KLSAgICAgICAgY29uc3QgZXhwbGFpbk9iamVjdCA9 IHsKLSAgICAgICAgICBmb3JtYXQ6ICdqc29uJywKLSAgICAgICAgICBhbmFseXplOiB0cnVlLAot ICAgICAgICAgIHZlcmJvc2U6IGZhbHNlLAotICAgICAgICAgIGNvc3RzOiBmYWxzZSwKLSAgICAg ICAgICBidWZmZXJzOiBmYWxzZSwKLSAgICAgICAgICB0aW1pbmc6IGZhbHNlLAotICAgICAgICAg IHN1bW1hcnk6IHRydWUsCi0gICAgICAgICAgc2V0dGluZ3M6IHRydWUsCi0gICAgICAgIH07Ci0K LSAgICAgICAgZXhwZWN0KHNxbEVkaXRvckNvbnRyb2xsZXIuY2hlY2tfZGF0YV9jaGFuZ2VzX3Rv X2V4ZWN1dGVfcXVlcnkpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGxhaW5PYmplY3QpOwotICAg ICAgfSk7Ci0gICAgfSk7Ci0gIH0pOwotCi0gIGRlc2NyaWJlKCdleHBsYWluJywgKCkgPT4gewot ICAgIGRlc2NyaWJlKCd3aGVuIHZlcmJvc2UgYW5kIGNvc3RzIGFyZSBzZWxlY3RlZCcsICgpID0+ IHsKLSAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgICBzZXRVcFNwaWVzKCcnLCAnJyk7 Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfdmVyYm9zZScpLmFuZC5yZXR1cm5W YWx1ZSh0cnVlKTsKLSAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ19jb3N0c0VuYWJs ZWQnKS5hbmQucmV0dXJuVmFsdWUodHJ1ZSk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlv bnMsICdfc3VtbWFyeScpLmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7Ci0gICAgICAgIHNweU9uKHF1 ZXJ5VG9vbEFjdGlvbnMsICdfc2V0dGluZ3MnKS5hbmQucmV0dXJuVmFsdWUoZmFsc2UpOwotICAg ICAgfSk7Ci0KLSAgICAgIGl0KCdjYWxscyB0aGUgZXhlY3V0ZSBmdW5jdGlvbicsICgpID0+IHsK LSAgICAgICAgcXVlcnlUb29sQWN0aW9ucy5leHBsYWluKHNxbEVkaXRvckNvbnRyb2xsZXIpOwot ICAgICAgICBjb25zdCBleHBsYWluT2JqZWN0ID0gewotICAgICAgICAgIGZvcm1hdDogJ2pzb24n LAotICAgICAgICAgIGFuYWx5emU6IGZhbHNlLAotICAgICAgICAgIHZlcmJvc2U6IHRydWUsCi0g ICAgICAgICAgY29zdHM6IHRydWUsCi0gICAgICAgICAgYnVmZmVyczogZmFsc2UsCi0gICAgICAg ICAgdGltaW5nOiBmYWxzZSwKLSAgICAgICAgICBzdW1tYXJ5OiBmYWxzZSwKLSAgICAgICAgICBz ZXR0aW5nczogZmFsc2UsCi0gICAgICAgIH07Ci0gICAgICAgIGV4cGVjdChzcWxFZGl0b3JDb250 cm9sbGVyLmNoZWNrX2RhdGFfY2hhbmdlc190b19leGVjdXRlX3F1ZXJ5KS50b0hhdmVCZWVuQ2Fs bGVkV2l0aChleHBsYWluT2JqZWN0KTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3Jp YmUoJ3doZW4gdmVyYm9zZSBhbmQgY29zdHMgYXJlIG5vdCBzZWxlY3RlZCcsICgpID0+IHsKLSAg ICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgICBzZXRVcFNwaWVzKCcnLCAnJyk7Ci0gICAg ICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfdmVyYm9zZScpLmFuZC5yZXR1cm5WYWx1ZShm YWxzZSk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfY29zdHNFbmFibGVkJyku YW5kLnJldHVyblZhbHVlKGZhbHNlKTsKLSAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywg J19zdW1tYXJ5JykuYW5kLnJldHVyblZhbHVlKGZhbHNlKTsKLSAgICAgICAgc3B5T24ocXVlcnlU b29sQWN0aW9ucywgJ19zZXR0aW5ncycpLmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7Ci0gICAgICB9 KTsKLQotICAgICAgaXQoJ2NhbGxzIHRoZSBleGVjdXRlIGZ1bmN0aW9uJywgKCkgPT4gewotICAg ICAgICBxdWVyeVRvb2xBY3Rpb25zLmV4cGxhaW4oc3FsRWRpdG9yQ29udHJvbGxlcik7Ci0gICAg ICAgIGNvbnN0IGV4cGxhaW5PYmplY3QgPSB7Ci0gICAgICAgICAgZm9ybWF0OiAnanNvbicsCi0g ICAgICAgICAgYW5hbHl6ZTogZmFsc2UsCi0gICAgICAgICAgdmVyYm9zZTogZmFsc2UsCi0gICAg ICAgICAgY29zdHM6IGZhbHNlLAotICAgICAgICAgIGJ1ZmZlcnM6IGZhbHNlLAotICAgICAgICAg IHRpbWluZzogZmFsc2UsCi0gICAgICAgICAgc3VtbWFyeTogZmFsc2UsCi0gICAgICAgICAgc2V0 dGluZ3M6IGZhbHNlLAotICAgICAgICB9OwotCi0gICAgICAgIGV4cGVjdChzcWxFZGl0b3JDb250 cm9sbGVyLmNoZWNrX2RhdGFfY2hhbmdlc190b19leGVjdXRlX3F1ZXJ5KS50b0hhdmVCZWVuQ2Fs bGVkV2l0aChleHBsYWluT2JqZWN0KTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3Jp YmUoJ3doZW4gdmVyYm9zZSBpcyBzZWxlY3RlZCBhbmQgY29zdHMgaXMgbm90IHNlbGVjdGVkJywg KCkgPT4gewotICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgIHNldFVwU3BpZXMoJycs ICcnKTsKLSAgICAgICAgc3B5T24ocXVlcnlUb29sQWN0aW9ucywgJ192ZXJib3NlJykuYW5kLnJl dHVyblZhbHVlKHRydWUpOwotICAgICAgICBzcHlPbihxdWVyeVRvb2xBY3Rpb25zLCAnX2Nvc3Rz RW5hYmxlZCcpLmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7Ci0gICAgICAgIHNweU9uKHF1ZXJ5VG9v bEFjdGlvbnMsICdfc3VtbWFyeScpLmFuZC5yZXR1cm5WYWx1ZShmYWxzZSk7Ci0gICAgICAgIHNw eU9uKHF1ZXJ5VG9vbEFjdGlvbnMsICdfc2V0dGluZ3MnKS5hbmQucmV0dXJuVmFsdWUoZmFsc2Up OwotICAgICAgfSk7Ci0KLSAgICAgIGl0KCdjYWxscyB0aGUgZXhlY3V0ZSBmdW5jdGlvbicsICgp ID0+IHsKLSAgICAgICAgcXVlcnlUb29sQWN0aW9ucy5leHBsYWluKHNxbEVkaXRvckNvbnRyb2xs ZXIpOwotICAgICAgICBjb25zdCBleHBsYWluT2JqZWN0ID0gewotICAgICAgICAgIGZvcm1hdDog J2pzb24nLAotICAgICAgICAgIGFuYWx5emU6IGZhbHNlLAotICAgICAgICAgIHZlcmJvc2U6IHRy dWUsCi0gICAgICAgICAgY29zdHM6IGZhbHNlLAotICAgICAgICAgIGJ1ZmZlcnM6IGZhbHNlLAot ICAgICAgICAgIHRpbWluZzogZmFsc2UsCi0gICAgICAgICAgc3VtbWFyeTogZmFsc2UsCi0gICAg ICAgICAgc2V0dGluZ3M6IGZhbHNlLAotICAgICAgICB9OwotICAgICAgICBleHBlY3Qoc3FsRWRp dG9yQ29udHJvbGxlci5jaGVja19kYXRhX2NoYW5nZXNfdG9fZXhlY3V0ZV9xdWVyeSkudG9IYXZl QmVlbkNhbGxlZFdpdGgoZXhwbGFpbk9iamVjdCk7Ci0gICAgICB9KTsKLSAgICB9KTsKLSAgfSk7 Ci0KLSAgZGVzY3JpYmUoJ2Rvd25sb2FkJywgKCkgPT4gewotICAgIGRlc2NyaWJlKCd3aGVuIHRo ZSBxdWVyeSBpcyBlbXB0eScsICgpID0+IHsKLSAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAg ICAgICBzZXRVcFNwaWVzKCcnLCAnJyk7Ci0gICAgICB9KTsKLSAgICAgIGl0KCdkb2VzIG5vdGhp bmcnLCAoKSA9PiB7Ci0gICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMuZG93bmxvYWQoc3FsRWRpdG9y Q29udHJvbGxlcik7Ci0KLSAgICAgICAgZXhwZWN0KHNxbEVkaXRvckNvbnRyb2xsZXIudHJpZ2dl cl9jc3ZfZG93bmxvYWQpLnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgICAgIH0pOwotICAgIH0pOwot Ci0gICAgZGVzY3JpYmUoJ3doZW4gdGhlIHRhYmxlIHdhcyBvcGVuZWQgdGhyb3VnaCB0aGUgcXVl cnlUb29sJywgKCkgPT4gewotICAgICAgbGV0IHRpbWU7Ci0gICAgICBsZXQgc3B5Q2FsbCA9ICgp PT4gewotICAgICAgICB0aW1lID0gJ3JpZ2h0Tm93JzsKLSAgICAgICAgc3B5T24od2luZG93LCAn RGF0ZScpLmFuZC5jYWxsRmFrZSgoKSA9PiAoewotICAgICAgICAgIGdldFRpbWU6ICgpID0+IHsK LSAgICAgICAgICAgIHJldHVybiB0aW1lOwotICAgICAgICAgIH0sCi0gICAgICAgIH0pKTsKLSAg ICAgIH07Ci0KLSAgICAgIGxldCBjYWxsQ1NWRG93bmxvYWQgPSAoKT0+IHsKLSAgICAgICAgbGV0 IGZpbGVuYW1lID0gJ2RhdGEtJyArIHRpbWUgKyAnLmNzdic7Ci0KLSAgICAgICAgcXVlcnlUb29s QWN0aW9ucy5kb3dubG9hZChzcWxFZGl0b3JDb250cm9sbGVyKTsKLQotICAgICAgICBleHBlY3Qo c3FsRWRpdG9yQ29udHJvbGxlci50cmlnZ2VyX2Nzdl9kb3dubG9hZCkudG9IYXZlQmVlbkNhbGxl ZFdpdGgoZmlsZW5hbWUpOwotICAgICAgfTsKLQotICAgICAgZGVzY3JpYmUoJ3doZW4gdGhlIHF1 ZXJ5IHRvb2wgb2JqZWN0IGhhcyBhIHNlbGVjdGlvbicsICgpID0+IHsKLSAgICAgICAgYmVmb3Jl RWFjaCgoKSA9PiB7Ci0gICAgICAgICAgZW50aXJlUXVlcnlTdHJpbmcgPSAnaW5jbHVkZSBzb21l IG1vcmUgb2YgdGhhdCB5dW1teSBzdHJpbmcgY2hlZXNlOyc7Ci0gICAgICAgICAgc2VsZWN0ZWRR dWVyeVN0cmluZyA9ICdzb21lIHNpbGx5IHN0cmluZyBjaGVlc2UnOwotICAgICAgICAgIHNldFVw U3BpZXMoc2VsZWN0ZWRRdWVyeVN0cmluZywgZW50aXJlUXVlcnlTdHJpbmcpOwotCi0gICAgICAg ICAgc3B5Q2FsbCgpOwotICAgICAgICB9KTsKLQotICAgICAgICBpdCgnY2FsbHMgdHJpZ2dlcl9j c3ZfZG93bmxvYWQgd2l0aCBmaWxlbmFtZSBoYXZpbmcgLmNzdiBleHRlbnNpb24nLCBjYWxsQ1NW RG93bmxvYWQpOwotCi0gICAgICAgIGl0KCdjYWxscyB0cmlnZ2VyX2Nzdl9kb3dubG9hZCBmaWxl bmFtZSBoYXZpbmcgLnR4dCBleHRlbnNpb24nLCAoKSA9PiB7Ci0gICAgICAgICAgc3FsRWRpdG9y Q29udHJvbGxlci5wcmVmZXJlbmNlcy5jc3ZfZmllbGRfc2VwYXJhdG9yID0gJzsnOwotICAgICAg ICAgIGxldCBmaWxlbmFtZSA9ICdkYXRhLScgKyB0aW1lICsgJy50eHQnOwotCi0gICAgICAgICAg cXVlcnlUb29sQWN0aW9ucy5kb3dubG9hZChzcWxFZGl0b3JDb250cm9sbGVyKTsKLQotICAgICAg ICAgIGV4cGVjdChzcWxFZGl0b3JDb250cm9sbGVyLnRyaWdnZXJfY3N2X2Rvd25sb2FkKS50b0hh dmVCZWVuQ2FsbGVkV2l0aChmaWxlbmFtZSk7Ci0gICAgICAgIH0pOwotICAgICAgfSk7Ci0KLSAg ICAgIGRlc2NyaWJlKCd3aGVuIHRoZXJlIGlzIG5vIHNlbGVjdGlvbicsICgpID0+IHsKLSAgICAg ICAgYmVmb3JlRWFjaCgoKSA9PiB7Ci0gICAgICAgICAgc2VsZWN0ZWRRdWVyeVN0cmluZyA9ICcn OwotICAgICAgICAgIGVudGlyZVF1ZXJ5U3RyaW5nID0gJ2luY2x1ZGUgc29tZSBtb3JlIG9mIHRo YXQgeXVtbXkgc3RyaW5nIGNoZWVzZTsnOwotICAgICAgICAgIHNldFVwU3BpZXMoc2VsZWN0ZWRR dWVyeVN0cmluZywgZW50aXJlUXVlcnlTdHJpbmcpOwotICAgICAgICAgIHNweUNhbGwoKTsKLSAg ICAgICAgfSk7Ci0KLSAgICAgICAgaXQoJ2NhbGxzIHRyaWdnZXJfY3N2X2Rvd25sb2FkIHdpdGgg ZmlsZW5hbWUnLCBjYWxsQ1NWRG93bmxvYWQpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0KLSAgICBk ZXNjcmliZSgnd2hlbiB0aGUgdGFibGUgd2FzIG9wZW5lZCB0aHJvdWdoIHRhYmxlcywgdmlldyBh bGwgZGF0YScsICgpID0+IHsKLSAgICAgIGl0KCdjYWxscyB0cmlnZ2VyX2Nzdl9kb3dubG9hZCB3 aXRoIHRoZSBzcWxRdWVyeSBhbmQgdGhlIHRhYmxlIG5hbWUnLCAoKSA9PiB7Ci0gICAgICAgIGxl dCBxdWVyeSA9ICdhIHZlcnkgbG9uZyBxdWVyeSc7Ci0gICAgICAgIHNldFVwU3BpZXMoJycsIHF1 ZXJ5KTsKLSAgICAgICAgc3FsRWRpdG9yQ29udHJvbGxlci5pc19xdWVyeV90b29sID0gZmFsc2U7 Ci0KLSAgICAgICAgcXVlcnlUb29sQWN0aW9ucy5kb3dubG9hZChzcWxFZGl0b3JDb250cm9sbGVy KTsKLQotICAgICAgICBleHBlY3Qoc3FsRWRpdG9yQ29udHJvbGxlci50cmlnZ2VyX2Nzdl9kb3du bG9hZCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoJ2lBbUFUYWJsZScgKyAnLmNzdicpOwotICAgICAg fSk7Ci0gICAgfSk7Ci0KLSAgfSk7Ci0KLSAgZGVzY3JpYmUoJ2NvbW1lbnRCbG9ja0NvZGUnLCAo KSA9PiB7Ci0gICAgZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMgbm8gcXVlcnkgdGV4dCcsICgpID0+ IHsKLSAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgICBzZXRVcFNwaWVzKCcnLCAnJyk7 Ci0gICAgICB9KTsKLSAgICAgIGl0KCdkb2VzIG5vdGhpbmcnLCAoKSA9PiB7Ci0gICAgICAgIGxl dCBjb2RlTWlycm9yT2JqID0gc3FsRWRpdG9yQ29udHJvbGxlci5ncmlkVmlldy5xdWVyeV90b29s X29iajsKLQotICAgICAgICBxdWVyeVRvb2xBY3Rpb25zLmNvbW1lbnRCbG9ja0NvZGUoc3FsRWRp dG9yQ29udHJvbGxlcik7Ci0KLSAgICAgICAgZXhwZWN0KGNvZGVNaXJyb3JPYmoudG9nZ2xlQ29t bWVudCkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gICAg ZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMgZW1wdHkgc2VsZWN0aW9uJywgKCkgPT4gewotICAgICAg YmVmb3JlRWFjaChiZWZvcmVFYWNoRW1wdHlTZWxlY3Rpb24pOwotCi0gICAgICBpdCgnY29tbWVu dHMgdGhlIGN1cnJlbnQgbGluZScsICgpID0+IHsKLSAgICAgICAgbGV0IGNvZGVNaXJyb3JPYmog PSBzcWxFZGl0b3JDb250cm9sbGVyLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqOwotCi0gICAgICAg IHF1ZXJ5VG9vbEFjdGlvbnMuY29tbWVudEJsb2NrQ29kZShzcWxFZGl0b3JDb250cm9sbGVyKTsK LQotICAgICAgICBleHBlY3QoY29kZU1pcnJvck9iai50b2dnbGVDb21tZW50KS50b0hhdmVCZWVu Q2FsbGVkV2l0aCgzLCAzKTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJ3do ZW4gc29tZSBwYXJ0IG9mIHRoZSBxdWVyeSBpcyBzZWxlY3RlZCcsICgpID0+IHsKLSAgICAgIGJl Zm9yZUVhY2goKCkgPT4gewotICAgICAgICBzZXRVcFNwaWVzKCdhIHN0cmluZ1xuZGRkJywgJ2Eg c3RyaW5nXG5kZGRcbnNzcycpOwotICAgICAgfSk7Ci0KLSAgICAgIGl0KCdjb21tZW50cyB0aGUg c2VsZWN0aW9uJywgKCkgPT4gewotICAgICAgICBsZXQgY29kZU1pcnJvck9iaiA9IHNxbEVkaXRv ckNvbnRyb2xsZXIuZ3JpZFZpZXcucXVlcnlfdG9vbF9vYmo7Ci0KLSAgICAgICAgcXVlcnlUb29s QWN0aW9ucy5jb21tZW50QmxvY2tDb2RlKHNxbEVkaXRvckNvbnRyb2xsZXIpOwotCi0gICAgICAg IGV4cGVjdChjb2RlTWlycm9yT2JqLnRvZ2dsZUNvbW1lbnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KDAsIDEyKTsKLSAgICAgIH0pOwotICAgIH0pOwotICB9KTsKLQotICBkZXNjcmliZSgnY29tbWVu dExpbmVDb2RlJywgKCkgPT4gewotICAgIGRlc2NyaWJlKCd3aGVuIHRoZXJlIGlzIG5vIHF1ZXJ5 IHRleHQnLCAoKSA9PiB7Ci0gICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgc2V0VXBT cGllcygnJywgJycpOwotICAgICAgfSk7Ci0gICAgICBpdCgnZG9lcyBub3RoaW5nJywgKCkgPT4g ewotICAgICAgICBsZXQgY29kZU1pcnJvck9iaiA9IHNxbEVkaXRvckNvbnRyb2xsZXIuZ3JpZFZp ZXcucXVlcnlfdG9vbF9vYmo7Ci0KLSAgICAgICAgcXVlcnlUb29sQWN0aW9ucy5jb21tZW50TGlu ZUNvZGUoc3FsRWRpdG9yQ29udHJvbGxlcik7Ci0KLSAgICAgICAgZXhwZWN0KGNvZGVNaXJyb3JP YmoubGluZUNvbW1lbnQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgICB9KTsKLSAgICB9 KTsKLQotICAgIGRlc2NyaWJlKCd3aGVuIHRoZXJlIGlzIGVtcHR5IHNlbGVjdGlvbicsICgpID0+ IHsKLSAgICAgIGJlZm9yZUVhY2goYmVmb3JlRWFjaEVtcHR5U2VsZWN0aW9uKTsKLQotICAgICAg aXQoJ2NvbW1lbnRzIHRoZSBjdXJyZW50IGxpbmUnLCAoKSA9PiB7Ci0gICAgICAgIGxldCBjb2Rl TWlycm9yT2JqID0gc3FsRWRpdG9yQ29udHJvbGxlci5ncmlkVmlldy5xdWVyeV90b29sX29iajsK LQotICAgICAgICBxdWVyeVRvb2xBY3Rpb25zLmNvbW1lbnRMaW5lQ29kZShzcWxFZGl0b3JDb250 cm9sbGVyKTsKLQotICAgICAgICBleHBlY3QoY29kZU1pcnJvck9iai5saW5lQ29tbWVudCkudG9I YXZlQmVlbkNhbGxlZFdpdGgoMywgMywge2xpbmVDb21tZW50OiAnLS0nfSk7Ci0gICAgICB9KTsK LSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCd3aGVuIHNvbWUgcGFydCBvZiB0aGUgcXVlcnkgaXMg c2VsZWN0ZWQnLCAoKSA9PiB7Ci0gICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgc2V0 VXBTcGllcygndHJpbmdcbmRkZCcsICdhIHN0cmluZ1xuZGRkXG5zc3MnKTsKLSAgICAgIH0pOwot Ci0gICAgICBpdCgnY29tbWVudHMgdGhlIHNlbGVjdGlvbicsICgpID0+IHsKLSAgICAgICAgbGV0 IGNvZGVNaXJyb3JPYmogPSBzcWxFZGl0b3JDb250cm9sbGVyLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xf b2JqOwotCi0gICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMuY29tbWVudExpbmVDb2RlKHNxbEVkaXRv ckNvbnRyb2xsZXIpOwotCi0gICAgICAgIGV4cGVjdChjb2RlTWlycm9yT2JqLmxpbmVDb21tZW50 KS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgzLCAxMiwge2xpbmVDb21tZW50OiAnLS0nfSk7Ci0gICAg ICB9KTsKLSAgICB9KTsKLSAgfSk7Ci0KLSAgZGVzY3JpYmUoJ3VuY29tbWVudExpbmVDb2RlJywg KCkgPT4gewotICAgIGRlc2NyaWJlKCd3aGVuIHRoZXJlIGlzIG5vIHF1ZXJ5IHRleHQnLCAoKSA9 PiB7Ci0gICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgc2V0VXBTcGllcygnJywgJycp OwotICAgICAgfSk7Ci0gICAgICBpdCgnZG9lcyBub3RoaW5nJywgKCkgPT4gewotICAgICAgICBs ZXQgY29kZU1pcnJvck9iaiA9IHNxbEVkaXRvckNvbnRyb2xsZXIuZ3JpZFZpZXcucXVlcnlfdG9v bF9vYmo7Ci0KLSAgICAgICAgcXVlcnlUb29sQWN0aW9ucy51bmNvbW1lbnRMaW5lQ29kZShzcWxF ZGl0b3JDb250cm9sbGVyKTsKLQotICAgICAgICBleHBlY3QoY29kZU1pcnJvck9iai51bmNvbW1l bnQpLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgICB9KTsKLSAgICB9KTsKLQotICAgIGRl c2NyaWJlKCd3aGVuIHRoZXJlIGlzIGVtcHR5IHNlbGVjdGlvbicsICgpID0+IHsKLSAgICAgIGJl Zm9yZUVhY2goYmVmb3JlRWFjaEVtcHR5U2VsZWN0aW9uKTsKLQotICAgICAgaXQoJ3VuY29tbWVu dHMgdGhlIGN1cnJlbnQgbGluZScsICgpID0+IHsKLSAgICAgICAgbGV0IGNvZGVNaXJyb3JPYmog PSBzcWxFZGl0b3JDb250cm9sbGVyLmdyaWRWaWV3LnF1ZXJ5X3Rvb2xfb2JqOwotCi0gICAgICAg IHF1ZXJ5VG9vbEFjdGlvbnMudW5jb21tZW50TGluZUNvZGUoc3FsRWRpdG9yQ29udHJvbGxlcik7 Ci0KLSAgICAgICAgZXhwZWN0KGNvZGVNaXJyb3JPYmoudW5jb21tZW50KS50b0hhdmVCZWVuQ2Fs bGVkV2l0aCgzLCAzLCB7bGluZUNvbW1lbnQ6ICctLSd9KTsKLSAgICAgIH0pOwotICAgIH0pOwot Ci0gICAgZGVzY3JpYmUoJ3doZW4gc29tZSBwYXJ0IG9mIHRoZSBxdWVyeSBpcyBzZWxlY3RlZCcs ICgpID0+IHsKLSAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgICBzZXRVcFNwaWVzKCd0 cmluZ1xuZGRkJywgJ2Egc3RyaW5nXG5kZGRcbnNzcycpOwotICAgICAgfSk7Ci0KLSAgICAgIGl0 KCd1bmNvbW1lbnRzIHRoZSBzZWxlY3Rpb24nLCAoKSA9PiB7Ci0gICAgICAgIGxldCBjb2RlTWly cm9yT2JqID0gc3FsRWRpdG9yQ29udHJvbGxlci5ncmlkVmlldy5xdWVyeV90b29sX29iajsKLQot ICAgICAgICBxdWVyeVRvb2xBY3Rpb25zLnVuY29tbWVudExpbmVDb2RlKHNxbEVkaXRvckNvbnRy b2xsZXIpOwotCi0gICAgICAgIGV4cGVjdChjb2RlTWlycm9yT2JqLnVuY29tbWVudCkudG9IYXZl QmVlbkNhbGxlZFdpdGgoMywgMTIsIHtsaW5lQ29tbWVudDogJy0tJ30pOwotICAgICAgfSk7Ci0g ICAgfSk7Ci0gIH0pOwotCi0gIGRlc2NyaWJlKCd0b2dnbGVDYXNlT2ZTZWxlY3RlZFRleHQnLCAo KSA9PiB7Ci0KLSAgICBsZXQgZG9lc05vdGhpbmdUZXN0Q2FzZSA9ICgpPT4gewotICAgICAgaXQo J2RvZXMgbm90aGluZycsICgpID0+IHsKLSAgICAgICAgZXhwZWN0KAotICAgICAgICAgIHF1ZXJ5 VG9vbEFjdGlvbnMudG9nZ2xlQ2FzZU9mU2VsZWN0ZWRUZXh0KHNxbEVkaXRvckNvbnRyb2xsZXIp Ci0gICAgICAgICkubm90LnRvQmVEZWZpbmVkKCk7Ci0gICAgICB9KTsKLSAgICB9OwotCi0gICAg ZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMgbm8gcXVlcnkgdGV4dCcsICgpID0+IHsKLSAgICAgIGJl Zm9yZUVhY2goKCkgPT4gewotICAgICAgICBzZXRVcFNwaWVzKCcnLCAnJyk7Ci0gICAgICB9KTsK LSAgICAgIGRvZXNOb3RoaW5nVGVzdENhc2UoKTsKLSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCd3 aGVuIHRoZXJlIGlzIGVtcHR5IHNlbGVjdGlvbicsICgpID0+IHsKLSAgICAgIGJlZm9yZUVhY2go YmVmb3JlRWFjaEVtcHR5U2VsZWN0aW9uKTsKLQotICAgICAgZG9lc05vdGhpbmdUZXN0Q2FzZSgp OwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJ3doZW4gc2VsZWN0ZWQgcXVlcnkgaXMgaW4gbG93 ZXIgY2FzZScsICgpID0+IHsKLSAgICAgIGJlZm9yZUVhY2goKCkgPT4gewotICAgICAgICBzZXRV cFNwaWVzKCdzdHJpbmcnLCAnYSBzdHJpbmdcbmRkZFxuc3NzJyk7Ci0gICAgICB9KTsKLQotICAg ICAgdG9nZ2xlU2VsZWN0aW9uU3RyaW5nVXBwZXJDYXNlKCk7Ci0KLSAgICAgIGl0KCcobmVnYXRp dmUgc2NlbmFyaW8gdG9nZ2xlIHRoZSBzZWxlY3Rpb24gYW5kIHN0cmluZyBzaG91bGQgYmUgaW4g dXBwZXIgY2FzZScsICgpID0+IHsKLSAgICAgICAgcXVlcnlUb29sQWN0aW9ucy50b2dnbGVDYXNl T2ZTZWxlY3RlZFRleHQoc3FsRWRpdG9yQ29udHJvbGxlcik7Ci0gICAgICAgIGV4cGVjdChyZXBs YWNlU2VsZWN0aW9uU3B5Ci0gICAgICAgICkubm90LnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCdzdHJp bmcnKTsKLSAgICAgIH0pOwotICAgIH0pOwotCi0gICAgZGVzY3JpYmUoJ3doZW4gc2VsZWN0ZWQg cXVlcnkgaXMgaW4gdXBwZXIgY2FzZScsICgpID0+IHsKLSAgICAgIGJlZm9yZUVhY2goKCkgPT4g ewotICAgICAgICBzZXRVcFNwaWVzKCdTVFJJTkcnLCAnYSBzdHJpbmdcbmRkZFxuc3NzJyk7Ci0g ICAgICB9KTsKLQotICAgICAgaXQoJ3RvZ2dsZSB0aGUgc2VsZWN0aW9uIGFuZCBzdHJpbmcgc2hv dWxkIGJlIGluIGxvd2VyIGNhc2UnLCAoKSA9PiB7Ci0gICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMu dG9nZ2xlQ2FzZU9mU2VsZWN0ZWRUZXh0KHNxbEVkaXRvckNvbnRyb2xsZXIpOwotICAgICAgICBl eHBlY3QocmVwbGFjZVNlbGVjdGlvblNweQotICAgICAgICApLnRvSGF2ZUJlZW5DYWxsZWRXaXRo KCdzdHJpbmcnKTsKLSAgICAgIH0pOwotCi0gICAgICBpdCgnKG5lZ2F0aXZlIHNjZW5hcmlvIHRv Z2dsZSB0aGUgc2VsZWN0aW9uIGFuZCBzdHJpbmcgc2hvdWxkIGJlIGluIGxvd2VyIGNhc2UnLCAo KSA9PiB7Ci0gICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMudG9nZ2xlQ2FzZU9mU2VsZWN0ZWRUZXh0 KHNxbEVkaXRvckNvbnRyb2xsZXIpOwotICAgICAgICBleHBlY3QocmVwbGFjZVNlbGVjdGlvblNw eQotICAgICAgICApLm5vdC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnU1RSSU5HJyk7Ci0gICAgICB9 KTsKLSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCd3aGVuIHNlbGVjdGVkIHF1ZXJ5IGlzIGluIG1p eGVkIGNhc2UnLCAoKSA9PiB7Ci0gICAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgICAgc2V0 VXBTcGllcygnc1RSSW5nJywgJ2Egc3RyaW5nXG5kZGRcbnNzcycpOwotICAgICAgfSk7Ci0KLSAg ICAgIHRvZ2dsZVNlbGVjdGlvblN0cmluZ1VwcGVyQ2FzZSgpOwotCi0gICAgICBpdCgnKG5lZ2F0 aXZlIHNjZW5hcmlvIHRvZ2dsZSB0aGUgc2VsZWN0aW9uIGFuZCBzdHJpbmcgc2hvdWxkIGJlIGlu IHVwcGVyIGNhc2UnLCAoKSA9PiB7Ci0gICAgICAgIHF1ZXJ5VG9vbEFjdGlvbnMudG9nZ2xlQ2Fz ZU9mU2VsZWN0ZWRUZXh0KHNxbEVkaXRvckNvbnRyb2xsZXIpOwotICAgICAgICBleHBlY3QocmVw bGFjZVNlbGVjdGlvblNweQotICAgICAgICApLm5vdC50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnc1RS SW5nJyk7Ci0gICAgICB9KTsKLSAgICB9KTsKLSAgfSk7Ci0KLSAgZGVzY3JpYmUoJ2V4ZWN1dGVD b21taXQnLCAoKSA9PiB7Ci0gICAgZGVzY3JpYmUoJ3doZW4gY29tbWl0IGFjdGlvbiBpcyBiZWlu ZyBydW4gZnJvbSB0aGUgcXVlcnkgdG9vbCcsICgpID0+IHsKLSAgICAgIGJlZm9yZUVhY2goKCkg PT4gewotICAgICAgICBzZXRVcFNwaWVzKCcnLCAnJyk7Ci0gICAgICB9KTsKLQotICAgICAgaXQo J2NhbGxzIHRoZSBleGVjdXRlIGNvbW1pdCBmdW5jdGlvbicsICgpID0+IHsKLSAgICAgICAgcXVl cnlUb29sQWN0aW9ucy5leGVjdXRlQ29tbWl0KHNxbEVkaXRvckNvbnRyb2xsZXIpOwotICAgICAg ICBleHBlY3Qoc3FsRWRpdG9yQ29udHJvbGxlci5zcGVjaWFsX3NxbCkudG9FcXVhbCgnQ09NTUlU OycpOwotICAgICAgfSk7Ci0gICAgfSk7Ci0gIH0pOwotCi0gIGRlc2NyaWJlKCdleGVjdXRlUm9s bGJhY2snLCAoKSA9PiB7Ci0gICAgZGVzY3JpYmUoJ3doZW4gcm9sbGJhY2sgYWN0aW9uIGlzIGJl aW5nIHJ1biBmcm9tIHRoZSBxdWVyeSB0b29sJywgKCkgPT4gewotICAgICAgYmVmb3JlRWFjaCgo KSA9PiB7Ci0gICAgICAgIHNldFVwU3BpZXMoJycsICcnKTsKLSAgICAgIH0pOwotCi0gICAgICBp dCgnY2FsbHMgdGhlIGV4ZWN1dGUgcm9sbGJhY2sgZnVuY3Rpb24nLCAoKSA9PiB7Ci0gICAgICAg IHF1ZXJ5VG9vbEFjdGlvbnMuZXhlY3V0ZVJvbGxiYWNrKHNxbEVkaXRvckNvbnRyb2xsZXIpOwot ICAgICAgICBleHBlY3Qoc3FsRWRpdG9yQ29udHJvbGxlci5zcGVjaWFsX3NxbCkudG9FcXVhbCgn Uk9MTEJBQ0s7Jyk7Ci0gICAgICB9KTsKLSAgICB9KTsKLSAgfSk7Ci0KLSAgZnVuY3Rpb24gc2V0 VXBTcGllcyhzZWxlY3RlZFF1ZXJ5U3RyaW5nQXJnLCBlbnRpcmVRdWVyeVN0cmluZ0FyZykgewot ICAgIGdldFZhbHVlU3B5ID0gamFzbWluZS5jcmVhdGVTcHkoJ2dldFZhbHVlU3B5JykuYW5kLnJl dHVyblZhbHVlKGVudGlyZVF1ZXJ5U3RyaW5nQXJnKTsKLSAgICBnZXRTZWxlY3Rpb25TcHkgPSBq YXNtaW5lLmNyZWF0ZVNweSgnZ2V0U2VsZWN0aW9uU3B5JykuYW5kLnJldHVyblZhbHVlKHNlbGVj dGVkUXVlcnlTdHJpbmdBcmcpOwotICAgIHJlcGxhY2VTZWxlY3Rpb25TcHkgPSBqYXNtaW5lLmNy ZWF0ZVNweSgncmVwbGFjZVNlbGVjdGlvblNweScpOwotCi0gICAgc3FsRWRpdG9yQ29udHJvbGxl ciA9IHsKLSAgICAgIGdyaWRWaWV3OiB7Ci0gICAgICAgIHF1ZXJ5X3Rvb2xfb2JqOiB7Ci0gICAg ICAgICAgZ2V0U2VsZWN0aW9uOiBnZXRTZWxlY3Rpb25TcHksCi0gICAgICAgICAgZ2V0VmFsdWU6 IGdldFZhbHVlU3B5LAotICAgICAgICAgIHRvZ2dsZUNvbW1lbnQ6IGphc21pbmUuY3JlYXRlU3B5 KCd0b2dnbGVDb21tZW50U3B5JyksCi0gICAgICAgICAgbGluZUNvbW1lbnQ6IGphc21pbmUuY3Jl YXRlU3B5KCdsaW5lQ29tbWVudFNweScpLAotICAgICAgICAgIHVuY29tbWVudDogamFzbWluZS5j cmVhdGVTcHkoJ3VuY29tbWVudFNweScpLAotICAgICAgICAgIHJlcGxhY2VTZWxlY3Rpb246IHJl cGxhY2VTZWxlY3Rpb25TcHksCi0gICAgICAgICAgZ2V0Q3Vyc29yOiAoaXNGcm9tKSA9PiB7Ci0g ICAgICAgICAgICByZXR1cm4gZW50aXJlUXVlcnlTdHJpbmdBcmcuaW5kZXhPZihzZWxlY3RlZFF1 ZXJ5U3RyaW5nQXJnKSArIChpc0Zyb20gPyAwIDogc2VsZWN0ZWRRdWVyeVN0cmluZ0FyZy5sZW5n dGgpOwotICAgICAgICAgIH0sCi0gICAgICAgIH0sCi0gICAgICB9LAotICAgICAgdHJpZ2dlcl9j c3ZfZG93bmxvYWQ6IGphc21pbmUuY3JlYXRlU3B5KCd0cmlnZ2VyX2Nzdl9kb3dubG9hZCcpLAot ICAgICAgdHJpZ2dlcjogamFzbWluZS5jcmVhdGVTcHkoJ3RyaWdnZXInKSwKLSAgICAgIHRhYmxl X25hbWU6ICdpQW1BVGFibGUnLAotICAgICAgaXNfcXVlcnlfdG9vbDogdHJ1ZSwKLSAgICAgIGNo ZWNrX2RhdGFfY2hhbmdlc190b19leGVjdXRlX3F1ZXJ5OiBqYXNtaW5lLmNyZWF0ZVNweSgnY2hl Y2tfZGF0YV9jaGFuZ2VzX3RvX2V4ZWN1dGVfcXVlcnknKSwKLSAgICAgIHByZWZlcmVuY2VzOiB7 Ci0gICAgICAgIGNzdl9maWVsZF9zZXBhcmF0b3I6ICcsJywKLSAgICAgIH0sCi0gICAgfTsKLSAg fQotfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvci9x dWVyeV90b29sX2h0dHBfZXJyb3JfaGFuZGxlcl9zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC9zcWxlZGl0b3IvcXVlcnlfdG9vbF9odHRwX2Vycm9yX2hhbmRsZXJfc3BlYy5qcwpk ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWExNWVmYWVkLi4wMDAwMDAwMDAKLS0tIGEv d2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3IvcXVlcnlfdG9vbF9odHRwX2Vycm9y X2hhbmRsZXJfc3BlYy5qcworKysgL2Rldi9udWxsCkBAIC0xLDE5MSArMCwwIEBACi0vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLwotLy8KLS8vIHBnQWRtaW4gNCAtIFBvc3RncmVTUUwgVG9vbHMKLS8vCi0vLyBD b3B5cmlnaHQgKEMpIDIwMTMgLSAyMDIyLCBUaGUgcGdBZG1pbiBEZXZlbG9wbWVudCBUZWFtCi0v LyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHVuZGVyIHRoZSBQb3N0Z3JlU1FMIExpY2VuY2UK LS8vCi0vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLwotCi1pbXBvcnQgewotICBodHRwUmVzcG9uc2VSZXF1aXJl c05ld1RyYW5zYWN0aW9uLAotICBoYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IsCi19IGZyb20gJy4u Ly4uLy4uL3BnYWRtaW4vc3RhdGljL2pzL3NxbGVkaXRvci9xdWVyeV90b29sX2h0dHBfZXJyb3Jf aGFuZGxlcic7Ci0KLWRlc2NyaWJlKCcjaHR0cFJlc3BvbnNlUmVxdWlyZXNOZXdUcmFuc2FjdGlv bicsICgpID0+IHsKLSAgZGVzY3JpYmUoJ3doZW4gc3RhdHVzIGlzIG5vdCA0MDQnLCAoKSA9PiB7 Ci0gICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UnLCAoKSA9PiB7Ci0gICAgICBleHBlY3QoaHR0 cFJlc3BvbnNlUmVxdWlyZXNOZXdUcmFuc2FjdGlvbih7Ci0gICAgICAgIHN0YXR1czogMzAwLAot ICAgICAgfSkpLnRvRXF1YWwoZmFsc2UpOwotICAgIH0pOwotICB9KTsKLQotICBkZXNjcmliZSgn d2hlbiBzdGF0dXMgaXMgNDA0JywgKCkgPT4gewotICAgIGRlc2NyaWJlKCd3aGVuIGRhdGEgaXMg bm90IHByZXNlbnQnLCAoKSA9PiB7Ci0gICAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZScsICgp ID0+IHsKLSAgICAgICAgZXhwZWN0KGh0dHBSZXNwb25zZVJlcXVpcmVzTmV3VHJhbnNhY3Rpb24o ewotICAgICAgICAgIHN0YXR1czogNDA0LAotICAgICAgICB9KSkudG9CZUZhbHN5KCk7Ci0gICAg ICB9KTsKLSAgICB9KTsKLQotICAgIGRlc2NyaWJlKCd3aGVuIGRhdGEgaXMgcHJlc2VudCcsICgp ID0+IHsKLSAgICAgIGRlc2NyaWJlKCd3aGVuIGluZm8gaXMgbm90IHByZXNlbnQgaW5zaWRlIGRh dGEnLCAoKSA9PiB7Ci0gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlJywgKCkgPT4gewot ICAgICAgICAgIGV4cGVjdChodHRwUmVzcG9uc2VSZXF1aXJlc05ld1RyYW5zYWN0aW9uKHsKLSAg ICAgICAgICAgIHN0YXR1czogNDA0LAotICAgICAgICAgICAgZGF0YToge30sCi0gICAgICAgICAg fSkpLnRvQmVGYWxzeSgpOwotICAgICAgICB9KTsKLSAgICAgIH0pOwotCi0gICAgICBkZXNjcmli ZSgnd2hlbiBpbmZvIGlzIHByZXNlbnQgaW5zaWRlIGRhdGEnLCAoKSA9PiB7Ci0gICAgICAgIGRl c2NyaWJlKCd3aGVuIGluZm8gdmFsdWUgaXMgbm90ICJEQVRBR1JJRF9UUkFOU0FDVElPTl9SRVFV SVJFRCInLCAoKSA9PiB7Ci0gICAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gZmFsc2UnLCAoKSA9 PiB7Ci0gICAgICAgICAgICBleHBlY3QoaHR0cFJlc3BvbnNlUmVxdWlyZXNOZXdUcmFuc2FjdGlv bih7Ci0gICAgICAgICAgICAgIHN0YXR1czogNDA0LAotICAgICAgICAgICAgICBkYXRhOiB7Ci0g ICAgICAgICAgICAgICAgaW5mbzogJ3NvbWUgaW5mb3JtYXRpb24nLAotICAgICAgICAgICAgICB9 LAotICAgICAgICAgICAgfSkpLnRvRXF1YWwoZmFsc2UpOwotICAgICAgICAgIH0pOwotICAgICAg ICB9KTsKLQotICAgICAgICBkZXNjcmliZSgnd2hlbiBpbmZvIHZhbHVlIGlzICJEQVRBR1JJRF9U UkFOU0FDVElPTl9SRVFVSVJFRCInLCAoKSA9PiB7Ci0gICAgICAgICAgaXQoJ3Nob3VsZCByZXR1 cm4gZmFsc2UnLCAoKSA9PiB7Ci0gICAgICAgICAgICBleHBlY3QoaHR0cFJlc3BvbnNlUmVxdWly ZXNOZXdUcmFuc2FjdGlvbih7Ci0gICAgICAgICAgICAgIHN0YXR1czogNDA0LAotICAgICAgICAg ICAgICBkYXRhOiB7Ci0gICAgICAgICAgICAgICAgaW5mbzogJ0RBVEFHUklEX1RSQU5TQUNUSU9O X1JFUVVJUkVEJywKLSAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIH0pKS50b0VxdWFsKHRy dWUpOwotICAgICAgICAgIH0pOwotICAgICAgICB9KTsKLSAgICAgIH0pOwotICAgIH0pOwotICB9 KTsKLX0pOwotCi0KLWRlc2NyaWJlKCcjaGFuZGxlUXVlcnlUb29sQWpheEVycm9yJywgKCkgPT4g ewotICBsZXQgc3FsRWRpdG9ySGFuZGxlciwKLSAgICBleGNlcHRpb25TcHksIHN0YXRlVG9TYXZl LAotICAgIHN0YXRlUGFyYW1ldGVycywgY2hlY2tUcmFuc2FjdGlvbiwKLSAgICBwZ0Jyb3dzZXJN b2NrOwotCi0gIGJlZm9yZUVhY2goKCkgPT4gewotICAgIHN0YXRlVG9TYXZlID0gJ3Rlc3RTdGF0 ZSc7Ci0gICAgc3RhdGVQYXJhbWV0ZXJzID0gW107Ci0gICAgY2hlY2tUcmFuc2FjdGlvbiA9IGZh bHNlOwotICAgIHNxbEVkaXRvckhhbmRsZXIgPSBqYXNtaW5lLmNyZWF0ZVNweU9iaigKLSAgICAg ICdoYW5kbGVyJywgWydpbml0VHJhbnNhY3Rpb24nLCAnc2F2ZVN0YXRlJywgJ2hhbmRsZV9jb25u ZWN0aW9uX2xvc3QnXQotICAgICk7Ci0gICAgZXhjZXB0aW9uU3B5ID0gewotICAgICAgcmVhZHlT dGF0ZTogMCwKLSAgICAgIHN0YXR1czogNDA0LAotICAgICAgZGF0YTogewotICAgICAgICBpbmZv OiAnQ09OTkVDVElPTl9MT1NUJywKLSAgICAgIH0sCi0gICAgfTsKLSAgICBwZ0Jyb3dzZXJNb2Nr ID0gewotICAgICAgJ0Jyb3dzZXInOiB7Ci0gICAgICAgICdVc2VyTWFuYWdlbWVudCc6IGphc21p bmUuY3JlYXRlU3B5T2JqKCdVc2VyTWFuYWdlbWVudCcsIFsnaXNQZ2FMb2dpblJlcXVpcmVkJywg J3BnYUxvZ2luJ10pLAotICAgICAgfSwKLSAgICB9OwotICB9KTsKLQotICBkZXNjcmliZSgnd2hl biByZWFkeSBzdGF0ZSBpcyAwJywgKCkgPT4gewotICAgIGl0KCdzaG91bGQgcmV0dXJuIGNvbm5l Y3Rpb24nLCAoKSA9PiB7Ci0gICAgICBleHBlY3QoCi0gICAgICAgIGhhbmRsZVF1ZXJ5VG9vbEFq YXhFcnJvcigKLSAgICAgICAgICBwZ0Jyb3dzZXJNb2NrLCBzcWxFZGl0b3JIYW5kbGVyLCBleGNl cHRpb25TcHksIHN0YXRlVG9TYXZlLAotICAgICAgICAgIHN0YXRlUGFyYW1ldGVycywgY2hlY2tU cmFuc2FjdGlvbgotICAgICAgICApCi0gICAgICApLnRvRXF1YWwoJ05vdCBjb25uZWN0ZWQgdG8g dGhlIHNlcnZlciBvciB0aGUgY29ubmVjdGlvbiB0byB0aGUgc2VydmVyIGhhcyBiZWVuIGNsb3Nl ZC4nKTsKLSAgICB9KTsKLSAgfSk7Ci0KLSAgZGVzY3JpYmUoJ3doZW4gdGhlcmUgaXMgYW4gYWph eCBlcnJvciBkdWUgdG8gbG9naW4gaXMgcmVxdWlyZWQnLCAoKSA9PiB7Ci0gICAgYmVmb3JlRWFj aCgoKSA9PiB7Ci0gICAgICBleGNlcHRpb25TcHkucmVhZHlTdGF0ZSA9IDE7Ci0gICAgICBleGNl cHRpb25TcHkuc3RhdHVzID0gNDAxOwotICAgICAgZXhjZXB0aW9uU3B5LmRhdGEuaW5mbyA9ICdQ R0FETUlOX0xPR0lOX1JFUVVJUkVEJzsKLSAgICAgIHBnQnJvd3Nlck1vY2suQnJvd3Nlci5Vc2Vy TWFuYWdlbWVudC5pc1BnYUxvZ2luUmVxdWlyZWQuYW5kLnJldHVyblZhbHVlKHRydWUpOwotICAg IH0pOwotCi0gICAgaXQoJ3Nob3VsZCBzYXZlIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBjYWxsIGxv Z2luIGhhbmRsZXInLCAoKSA9PiB7Ci0gICAgICBoYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCi0g ICAgICAgIHBnQnJvd3Nlck1vY2ssIHNxbEVkaXRvckhhbmRsZXIsIGV4Y2VwdGlvblNweSwgc3Rh dGVUb1NhdmUsCi0gICAgICAgIHN0YXRlUGFyYW1ldGVycywgY2hlY2tUcmFuc2FjdGlvbgotICAg ICAgKTsKLSAgICAgIGV4cGVjdChzcWxFZGl0b3JIYW5kbGVyLnNhdmVTdGF0ZSkudG9IYXZlQmVl bkNhbGxlZFdpdGgoc3RhdGVUb1NhdmUsIHN0YXRlUGFyYW1ldGVycyk7Ci0gICAgICBleHBlY3Qo cGdCcm93c2VyTW9jay5Ccm93c2VyLlVzZXJNYW5hZ2VtZW50LnBnYUxvZ2luKS50b0hhdmVCZWVu Q2FsbGVkKCk7Ci0gICAgfSk7Ci0gIH0pOwotCi0gIGRlc2NyaWJlKCd3aGVuIHRoZXJlIGlzIGFu IGFqYXggZXJyb3IgYW5kIG5ldyB0cmFuc2FjdGlvbiBpbml0aWFsaXphdGlvbiByZXF1aXJlZCcs ICgpID0+IHsKLSAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAgIGV4Y2VwdGlvblNweS5yZWFk eVN0YXRlID0gMTsKLSAgICAgIGV4Y2VwdGlvblNweS5zdGF0dXMgPSA0MDQ7Ci0gICAgICBleGNl cHRpb25TcHkuZGF0YS5pbmZvID0gJ0RBVEFHUklEX1RSQU5TQUNUSU9OX1JFUVVJUkVEJzsKLSAg ICAgIHBnQnJvd3Nlck1vY2suQnJvd3Nlci5Vc2VyTWFuYWdlbWVudC5pc1BnYUxvZ2luUmVxdWly ZWQuYW5kLnJldHVyblZhbHVlKGZhbHNlKTsKLSAgICAgIGNoZWNrVHJhbnNhY3Rpb24gPSB0cnVl OwotICAgIH0pOwotCi0gICAgaXQoJ3Nob3VsZCBzYXZlIHRoZSBjdXJyZW50IHN0YXRlIGFuZCBj YWxsIGxvZ2luIGhhbmRsZXInLCAoKSA9PiB7Ci0gICAgICBoYW5kbGVRdWVyeVRvb2xBamF4RXJy b3IoCi0gICAgICAgIHBnQnJvd3Nlck1vY2ssIHNxbEVkaXRvckhhbmRsZXIsIGV4Y2VwdGlvblNw eSwgc3RhdGVUb1NhdmUsCi0gICAgICAgIHN0YXRlUGFyYW1ldGVycywgY2hlY2tUcmFuc2FjdGlv bgotICAgICAgKTsKLSAgICAgIGV4cGVjdChwZ0Jyb3dzZXJNb2NrLkJyb3dzZXIuVXNlck1hbmFn ZW1lbnQucGdhTG9naW4pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgICBleHBlY3Qoc3Fs RWRpdG9ySGFuZGxlci5zYXZlU3RhdGUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKHN0YXRlVG9TYXZl LCBzdGF0ZVBhcmFtZXRlcnMpOwotICAgICAgZXhwZWN0KHNxbEVkaXRvckhhbmRsZXIuaW5pdFRy YW5zYWN0aW9uKS50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgfSk7Ci0gIH0pOwotCi0gIGRlc2Ny aWJlKCd3aGVuIHRoZXJlIGlzIGFuIGFqYXggZXJyb3IgZHVlIHRvIGRhdGFiYXNlIGNvbm5lY3Rp b24gaGFzIGJlZW4gbG9zdCcsICgpID0+IHsKLSAgICBiZWZvcmVFYWNoKCgpID0+IHsKLSAgICAg IGV4Y2VwdGlvblNweS5yZWFkeVN0YXRlID0gMTsKLSAgICAgIGV4Y2VwdGlvblNweS5zdGF0dXMg PSA1MDM7Ci0gICAgICBleGNlcHRpb25TcHkucmVzcG9uc2VKU09OID0gewotICAgICAgICAnaW5m byc6ICdDT05ORUNUSU9OX0xPU1QnLAotICAgICAgfTsKLSAgICAgIHBnQnJvd3Nlck1vY2suQnJv d3Nlci5Vc2VyTWFuYWdlbWVudC5pc1BnYUxvZ2luUmVxdWlyZWQuYW5kLnJldHVyblZhbHVlKGZh bHNlKTsKLSAgICAgIGNoZWNrVHJhbnNhY3Rpb24gPSBmYWxzZTsKLSAgICB9KTsKLQotICAgIGl0 KCdzaG91bGQgc2F2ZSB0aGUgY3VycmVudCBzdGF0ZSBhbmQgY2FsbCBjb25uZWN0aW9uIGxvc3Qg aGFuZGxlcicsIChkb25lKSA9PiB7Ci0gICAgICBoYW5kbGVRdWVyeVRvb2xBamF4RXJyb3IoCi0g ICAgICAgIHBnQnJvd3Nlck1vY2ssIHNxbEVkaXRvckhhbmRsZXIsIGV4Y2VwdGlvblNweSwgc3Rh dGVUb1NhdmUsCi0gICAgICAgIHN0YXRlUGFyYW1ldGVycywgY2hlY2tUcmFuc2FjdGlvbgotICAg ICAgKTsKLSAgICAgIGV4cGVjdChwZ0Jyb3dzZXJNb2NrLkJyb3dzZXIuVXNlck1hbmFnZW1lbnQu cGdhTG9naW4pLm5vdC50b0hhdmVCZWVuQ2FsbGVkKCk7Ci0gICAgICBzZXRUaW1lb3V0KCgpID0+ IHsKLSAgICAgICAgZXhwZWN0KHNxbEVkaXRvckhhbmRsZXIuc2F2ZVN0YXRlKS50b0hhdmVCZWVu Q2FsbGVkV2l0aChzdGF0ZVRvU2F2ZSwgc3RhdGVQYXJhbWV0ZXJzKTsKLSAgICAgICAgZXhwZWN0 KHNxbEVkaXRvckhhbmRsZXIuaGFuZGxlX2Nvbm5lY3Rpb25fbG9zdCkudG9IYXZlQmVlbkNhbGxl ZFdpdGgoZmFsc2UsIGV4Y2VwdGlvblNweSk7Ci0gICAgICAgIGRvbmUoKTsKLSAgICAgIH0sIDAp OwotICAgIH0pOwotICB9KTsKLQotICBkZXNjcmliZSgnd2hlbiB0aGVyZSBpcyBhbiBhamF4IGVy cm9yIGR1ZSB0byB1bmtub3duIHJlYXNvbicsICgpID0+IHsKLSAgICBiZWZvcmVFYWNoKCgpID0+ IHsKLSAgICAgIGV4Y2VwdGlvblNweS5yZWFkeVN0YXRlID0gMTsKLSAgICAgIGV4Y2VwdGlvblNw eS5zdGF0dXMgPSA4MDM7Ci0gICAgICBleGNlcHRpb25TcHkucmVzcG9uc2VUZXh0ID0gJ2FqYXgg ZmFpbGVkIHdpdGggdW5rbm93biByZWFzb24nOwotICAgICAgcGdCcm93c2VyTW9jay5Ccm93c2Vy LlVzZXJNYW5hZ2VtZW50LmlzUGdhTG9naW5SZXF1aXJlZC5hbmQucmV0dXJuVmFsdWUoZmFsc2Up OwotICAgICAgY2hlY2tUcmFuc2FjdGlvbiA9IGZhbHNlOwotICAgIH0pOwotCi0gICAgaXQoJ3No b3VsZCByZXR1cm4gcHJvcGVyIGVycm9yIG1lc3NhZ2UgZnJvbSBhamF4IGV4Y2VwdGlvbicsICgp ID0+IHsKLSAgICAgIGV4cGVjdCgKLSAgICAgICAgaGFuZGxlUXVlcnlUb29sQWpheEVycm9yKAot ICAgICAgICAgIHBnQnJvd3Nlck1vY2ssIHNxbEVkaXRvckhhbmRsZXIsIGV4Y2VwdGlvblNweSwg c3RhdGVUb1NhdmUsCi0gICAgICAgICAgc3RhdGVQYXJhbWV0ZXJzLCBjaGVja1RyYW5zYWN0aW9u Ci0gICAgICAgICkKLSAgICAgICkudG9FcXVhbCgnYWpheCBmYWlsZWQgd2l0aCB1bmtub3duIHJl YXNvbicpOwotICAgIH0pOwotICB9KTsKLQotfSk7CmRpZmYgLS1naXQgYS93ZWIvcmVncmVzc2lv bi9qYXZhc2NyaXB0L3NxbGVkaXRvcl91dGlsc19zcGVjLmpzIGIvd2ViL3JlZ3Jlc3Npb24vamF2 YXNjcmlwdC9zcWxlZGl0b3JfdXRpbHNfc3BlYy5qcwppbmRleCAyOWU5ODU1ZWEuLjg4NjYyNTc2 OSAxMDA2NDQKLS0tIGEvd2ViL3JlZ3Jlc3Npb24vamF2YXNjcmlwdC9zcWxlZGl0b3JfdXRpbHNf c3BlYy5qcworKysgYi93ZWIvcmVncmVzc2lvbi9qYXZhc2NyaXB0L3NxbGVkaXRvcl91dGlsc19z cGVjLmpzCkBAIC0xMCwyNSArMTAsNiBAQAogZGVmaW5lKFsnc291cmNlcy9zcWxlZGl0b3JfdXRp bHMnXSwKICAgZnVuY3Rpb24gKFNxbEVkaXRvclV0aWxzKSB7CiAgICAgZGVzY3JpYmUoJ1NxbEVk aXRvclV0aWxzJywgZnVuY3Rpb24gKCkgewotCi0gICAgICBkZXNjcmliZSgnR2VuZXJhdGUgYSBy YW5kb20gc3RyaW5nIG9mIHNpemUgMTAnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGl0KCdyZXR1 cm5zIHN0cmluZyBvZiBsZW5ndGggMTAnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgICAgZXhwZWN0 KFNxbEVkaXRvclV0aWxzLmVwaWNSYW5kb21TdHJpbmcoMTApLmxlbmd0aCkudG9FcXVhbCgxMCk7 Ci0gICAgICAgIH0pOwotICAgICAgfSk7Ci0KLSAgICAgIGRlc2NyaWJlKCdHZW5lcmF0ZSBhIHVu aXF1ZSBoYXNoIGZvciBnaXZlbiBzdHJpbmcnLCBmdW5jdGlvbiAoKSB7Ci0gICAgICAgIGl0KCdy ZXR1cm5zIHVuaXF1ZSBoYXNoJywgZnVuY3Rpb24gKCkgewotICAgICAgICAgIGV4cGVjdChTcWxF ZGl0b3JVdGlscy5nZXRIYXNoKCdzZWxlY3QgKiBmcm9tIHRlc3QnKSkudG9FcXVhbCg0MDMzNzk2 MzApOwotICAgICAgICB9KTsKLSAgICAgIH0pOwotCi0gICAgICBkZXNjcmliZSgnQ2FwaXRhbGl6 ZSB0aGUgZmlyc3QgbGV0dGVyIG9mIGdpdmVuIHN0cmluZycsIGZ1bmN0aW9uICgpIHsKLSAgICAg ICAgaXQoJ3JldHVybnMgc3RyaW5nIHdpdGggRmlyc3QgbGV0dGVyIENhcGl0YWwnLCBmdW5jdGlv biAoKSB7Ci0gICAgICAgICAgZXhwZWN0KFNxbEVkaXRvclV0aWxzLmNhcGl0YWxpemVGaXJzdExl dHRlcignY3JlYXRlIHNjcmlwdCcpKS50b0VxdWFsKCdDcmVhdGUgc2NyaXB0Jyk7Ci0gICAgICAg IH0pOwotICAgICAgfSk7Ci0KICAgICAgIGRlc2NyaWJlKCdDYWxjdWxhdGUgZm9udCBzaXplIG9m IGlucHV0IG51bWJlciBwYXNzZWQnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgIGl0KCdjYWxjRm9u dFNpemUnLCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgZXhwZWN0KFNxbEVkaXRvclV0aWxzLmNh bGNGb250U2l6ZSgxLjQ1NikpLnRvRXF1YWwoJzEuNDZlbScpOwpkaWZmIC0tZ2l0IGEvd2ViL3dl YnBhY2suY29uZmlnLmpzIGIvd2ViL3dlYnBhY2suY29uZmlnLmpzCmluZGV4IDNmOWM1ZjhmNC4u NjZiODQ2MTFkIDEwMDY0NAotLS0gYS93ZWIvd2VicGFjay5jb25maWcuanMKKysrIGIvd2ViL3dl YnBhY2suY29uZmlnLmpzCkBAIC0zNzQsNyArMzc0LDcgQEAgbW9kdWxlLmV4cG9ydHMgPSBbewog ICAgICdhcHAuYnVuZGxlJzogc291cmNlRGlyICsgJy9idW5kbGUvYXBwLmpzJywKICAgICBjb2Rl bWlycm9yOiBzb3VyY2VEaXIgKyAnL2J1bmRsZS9jb2RlbWlycm9yLmpzJywKICAgICBzbGlja2dy aWQ6IHNvdXJjZURpciArICcvYnVuZGxlL3NsaWNrZ3JpZC5qcycsCi0gICAgc3FsZWRpdG9yOiAn Li9wZ2FkbWluL3Rvb2xzL3NxbGVkaXRvci9zdGF0aWMvanMvc3FsZWRpdG9yLmpzJywKKyAgICBz cWxlZGl0b3I6ICcuL3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9pbmRleC5qcycs CiAgICAgZGVidWdnZXJfZGlyZWN0OiAnLi9wZ2FkbWluL3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9q cy9kaXJlY3QuanMnLAogICAgIHNjaGVtYV9kaWZmOiAnLi9wZ2FkbWluL3Rvb2xzL3NjaGVtYV9k aWZmL3N0YXRpYy9qcy9zY2hlbWFfZGlmZl9ob29rLmpzJywKICAgICBlcmRfdG9vbDogJy4vcGdh ZG1pbi90b29scy9lcmQvc3RhdGljL2pzL2VyZF90b29sX2hvb2suanMnLApAQCAtNDYzLDcgKzQ2 Myw3IEBAIG1vZHVsZS5leHBvcnRzID0gW3sKICAgICAgIC8vIHZhciBqUXVlcnkgPSByZXF1aXJl KCdqcXVlcnknKTsgdmFyIGJyb3dzZXIgPSByZXF1aXJlKCdwZ2FkbWluLmJyb3dzZXInKQogICAg ICAgLy8gSXQgc29sdmVzIG51bWJlciBvZiBwcm9ibGVtcwogICAgICAgLy8gUmVmOiBodHRwOi9n aXRodWIuY29tL3dlYnBhY2stY29udHJpYi9pbXBvcnRzLWxvYWRlci8KLSAgICAgIHRlc3Q6IHJl cXVpcmUucmVzb2x2ZSgnLi9wZ2FkbWluL3Rvb2xzL2RhdGFncmlkL3N0YXRpYy9qcy9kYXRhZ3Jp ZCcpLAorICAgICAgdGVzdDogcmVxdWlyZS5yZXNvbHZlKCcuL3BnYWRtaW4vdG9vbHMvc3FsZWRp dG9yL3N0YXRpYy9qcy9pbmRleCcpLAogICAgICAgdXNlOiB7CiAgICAgICAgIGxvYWRlcjogJ2lt cG9ydHMtbG9hZGVyJywKICAgICAgICAgb3B0aW9uczogewpAQCAtNTY2LDYgKzU2Niw3IEBAIG1v ZHVsZS5leHBvcnRzID0gW3sKICAgICAgICAgICAgICdwdXJlfHBnYWRtaW4udG9vbHMuc2VhcmNo X29iamVjdHMnLAogICAgICAgICAgICAgJ3B1cmV8cGdhZG1pbi50b29scy5lcmRfbW9kdWxlJywK ICAgICAgICAgICAgICdwdXJlfHBnYWRtaW4udG9vbHMucHNxbF9tb2R1bGUnLAorICAgICAgICAg ICAgJ3B1cmV8cGdhZG1pbi50b29scy5zcWxlZGl0b3InLAogICAgICAgICAgICAgJ3B1cmV8cGdh ZG1pbi5taXNjLmNsb3VkJywKICAgICAgICAgICBdLAogICAgICAgICB9LApkaWZmIC0tZ2l0IGEv d2ViL3dlYnBhY2suc2hpbS5qcyBiL3dlYi93ZWJwYWNrLnNoaW0uanMKaW5kZXggZjQ1ZWZkZTg4 Li40ZDU2MGIwNTEgMTAwNjQ0Ci0tLSBhL3dlYi93ZWJwYWNrLnNoaW0uanMKKysrIGIvd2ViL3dl YnBhY2suc2hpbS5qcwpAQCAtMjE2LDcgKzIxNiw2IEBAIHZhciB3ZWJwYWNrU2hpbUNvbmZpZyA9 IHsKICAgICAncGdhZG1pbi5icm93c2VyLnV0aWxzJzogJy9icm93c2VyL2pzL3V0aWxzJywKICAg ICAncGdhZG1pbi5icm93c2VyLndpemFyZCc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRt aW4vYnJvd3Nlci9zdGF0aWMvanMvd2l6YXJkJyksCiAgICAgJ3BnYWRtaW4uZGFzaGJvYXJkJzog cGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi9kYXNoYm9hcmQvc3RhdGljL2pzL2Rhc2hi b2FyZCcpLAotICAgICdwZ2FkbWluLmRhdGFncmlkJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4v cGdhZG1pbi90b29scy9kYXRhZ3JpZC9zdGF0aWMvanMvZGF0YWdyaWQnKSwKICAgICAncGdhZG1p bi5maWxlX21hbmFnZXInOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL21pc2MvZmls ZV9tYW5hZ2VyL3N0YXRpYy9qcy9maWxlX21hbmFnZXInKSwKICAgICAncGdhZG1pbi5maWxlX3V0 aWxpdHknOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL21pc2MvZmlsZV9tYW5hZ2Vy L3N0YXRpYy9qcy91dGlsaXR5JyksCiAgICAgJ3BnYWRtaW4uaGVscCc6IHBhdGguam9pbihfX2Rp cm5hbWUsICcuL3BnYWRtaW4vaGVscC9zdGF0aWMvanMvaGVscCcpLApAQCAtMjg1LDcgKzI4NCw2 IEBAIHZhciB3ZWJwYWNrU2hpbUNvbmZpZyA9IHsKICAgICAncGdhZG1pbi5wcmVmZXJlbmNlcyc6 IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRtaW4vcHJlZmVyZW5jZXMvc3RhdGljL2pzL3By ZWZlcmVuY2VzJyksCiAgICAgJ3BnYWRtaW4uc2V0dGluZ3MnOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9wZ2FkbWluL3NldHRpbmdzL3N0YXRpYy9qcy9zZXR0aW5ncycpLAogICAgICdwZ2FkbWlu LnNlcnZlci5zdXBwb3J0ZWRfc2VydmVycyc6ICcvYnJvd3Nlci9zZXJ2ZXIvc3VwcG9ydGVkX3Nl cnZlcnMnLAotICAgICdwZ2FkbWluLnNxbGVkaXRvcic6IHBhdGguam9pbihfX2Rpcm5hbWUsICcu L3BnYWRtaW4vdG9vbHMvc3FsZWRpdG9yL3N0YXRpYy9qcy9zcWxlZGl0b3InKSwKICAgICAncGdh ZG1pbi50YWJsZXMuanMnOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2Jyb3dzZXIv c2VydmVyX2dyb3Vwcy9zZXJ2ZXJzL2RhdGFiYXNlcy9zY2hlbWFzL3RhYmxlcy9zdGF0aWMvanMv JyksCiAgICAgJ3BnYWRtaW4udG9vbHMuYmFja3VwJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4v cGdhZG1pbi90b29scy9iYWNrdXAvc3RhdGljL2pzL2JhY2t1cCcpLAogICAgICdwZ2FkbWluLnRv b2xzLmRlYnVnZ2VyLmNvbnRyb2xsZXInOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWlu L3Rvb2xzL2RlYnVnZ2VyL3N0YXRpYy9qcy9kZWJ1Z2dlcicpLApAQCAtMzA1LDcgKzMwMyw3IEBA IHZhciB3ZWJwYWNrU2hpbUNvbmZpZyA9IHsKICAgICAncGdhZG1pbi50b29scy5lcmQnOiBwYXRo LmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL2VyZC9zdGF0aWMvanMnKSwKICAgICAn cGdhZG1pbi50b29scy5wc3FsX21vZHVsZSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICcuL3BnYWRt aW4vdG9vbHMvcHNxbC9zdGF0aWMvanMvcHNxbF9tb2R1bGUnKSwKICAgICAncGdhZG1pbi50b29s cy5wc3FsJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi90b29scy9wc3FsL3N0YXRp Yy9qcycpLAotICAgICdwZ2FkbWluLnRvb2xzLnF1ZXJ5X3Rvb2wnOiBwYXRoLmpvaW4oX19kaXJu YW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3F1ZXJ5X3Rvb2wvc3RhdGljL2pzJyksCisgICAgJ3BnYWRt aW4udG9vbHMuc3FsZWRpdG9yJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi90b29s cy9zcWxlZGl0b3Ivc3RhdGljL2pzJyksCiAgICAgJ3BnYWRtaW4uc2VhcmNoX29iamVjdHMnOiBw YXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3Rvb2xzL3NlYXJjaF9vYmplY3RzL3N0YXRp Yy9qcycpLAogICAgICdwZ2FkbWluLnRvb2xzLnVzZXJfbWFuYWdlbWVudCc6IHBhdGguam9pbihf X2Rpcm5hbWUsICcuL3BnYWRtaW4vdG9vbHMvdXNlcl9tYW5hZ2VtZW50L3N0YXRpYy9qcy91c2Vy X21hbmFnZW1lbnQnKSwKICAgICAncGdhZG1pbi51c2VyX21hbmFnZW1lbnQuY3VycmVudF91c2Vy JzogJy91c2VyX21hbmFnZW1lbnQvY3VycmVudF91c2VyJywKZGlmZiAtLWdpdCBhL3dlYi93ZWJw YWNrLnRlc3QuY29uZmlnLmpzIGIvd2ViL3dlYnBhY2sudGVzdC5jb25maWcuanMKaW5kZXggYzM2 ZDQ2M2I5Li4xOTczOTVkOTkgMTAwNjQ0Ci0tLSBhL3dlYi93ZWJwYWNrLnRlc3QuY29uZmlnLmpz CisrKyBiL3dlYi93ZWJwYWNrLnRlc3QuY29uZmlnLmpzCkBAIC0xODUsNiArMTg1LDggQEAgbW9k dWxlLmV4cG9ydHMgPSB7CiAgICAgICAnYmFja2Zvcm0nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAn Li9ub2RlX21vZHVsZXMvYmFja2Zvcm0vc3JjL2JhY2tmb3JtJyksCiAgICAgICAnYmFja2dyaWQn OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL3N0YXRpYy92ZW5kb3IvYmFja2dyaWQv YmFja2dyaWQnKSwKICAgICAgICdiYWNrZ3JpZC5maWx0ZXInOiBwYXRoLmpvaW4oX19kaXJuYW1l LCAnLi9ub2RlX21vZHVsZXMvYmFja2dyaWQtZmlsdGVyL2JhY2tncmlkLWZpbHRlcicpLAorICAg ICAgJ3JlYWN0JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJ25vZGVfbW9kdWxlcy9yZWFjdCcpLAor ICAgICAgJ3JlYWN0LWRvbSc6IHBhdGguam9pbihfX2Rpcm5hbWUsICdub2RlX21vZHVsZXMvcmVh Y3QtZG9tJyksCiAgICAgICAnc291cmNlcyc6IHNvdXJjZXNEaXIgKyAnL2pzJywKICAgICAgICd0 cmFuc2xhdGlvbnMnOiByZWdyZXNzaW9uRGlyICsgJy9qYXZhc2NyaXB0L2Zha2VfdHJhbnNsYXRp b25zJywKICAgICAgICdwZ2FkbWluLmJyb3dzZXIubWVzc2FnZXMnOiByZWdyZXNzaW9uRGlyICsg Jy9qYXZhc2NyaXB0L2Zha2VfbWVzc2FnZXMnLApAQCAtMTk0LDYgKzE5Niw3IEBAIG1vZHVsZS5l eHBvcnRzID0gewogICAgICAgJ3NsaWNrZ3JpZC5wbHVnaW5zJzogbm9kZU1vZHVsZXNEaXIgKyAn L3NsaWNrZ3JpZC9wbHVnaW5zLycsCiAgICAgICAnc2xpY2tncmlkLmdyaWQnOiBub2RlTW9kdWxl c0RpciArICcvc2xpY2tncmlkL3NsaWNrLmdyaWQnLAogICAgICAgJ21vbWVudCc6IHBhdGguam9p bihfX2Rpcm5hbWUsICcuL25vZGVfbW9kdWxlcy9tb21lbnQvbW9tZW50JyksCisgICAgICAnanNv bmVkaXRvci5taW4nOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9ub2RlX21vZHVsZXMvanNvbmVk aXRvci9kaXN0L2pzb25lZGl0b3IubWluJyksCiAgICAgICAnYnJvd3Nlcic6IHBhdGgucmVzb2x2 ZShfX2Rpcm5hbWUsICdwZ2FkbWluL2Jyb3dzZXIvc3RhdGljL2pzJyksCiAgICAgICAncGdhZG1p bic6IHNvdXJjZXNEaXIgKyAnL2pzL3BnYWRtaW4nLAogICAgICAgJ3BnYWRtaW4uc3FsZm9sZGNv ZGUnOiBzb3VyY2VzRGlyICsgJy9qcy9jb2RlbWlycm9yL2FkZG9uL2ZvbGQvcGdhZG1pbi1zcWxm b2xkY29kZScsCkBAIC0yMDgsNiArMjExLDggQEAgbW9kdWxlLmV4cG9ydHMgPSB7CiAgICAgICAn cGdhZG1pbi5icm93c2VyLmFjdGl2aXR5JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1p bi9icm93c2VyL3N0YXRpYy9qcy9hY3Rpdml0eScpLAogICAgICAgJ3BnYWRtaW4udG9vbHMuZXJk JzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi90b29scy9lcmQvc3RhdGljL2pzJyks CiAgICAgICAncGdhZG1pbi50b29scy5wc3FsJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdh ZG1pbi90b29scy9wc3FsL3N0YXRpYy9qcycpLAorICAgICAgJ3BnYWRtaW4udG9vbHMuc3FsZWRp dG9yJzogcGF0aC5qb2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi90b29scy9zcWxlZGl0b3Ivc3Rh dGljL2pzJyksCisgICAgICAncGdhZG1pbi5hdXRoZW50aWNhdGUua2VyYmVyb3MnOiBwYXRoLmpv aW4oX19kaXJuYW1lLCAnLi9wZ2FkbWluL2F1dGhlbnRpY2F0ZS9zdGF0aWMvanMva2VyYmVyb3Mn KSwKICAgICAgICdidW5kbGVkX2NvZGVtaXJyb3InOiBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi9w Z2FkbWluL3N0YXRpYy9idW5kbGUvY29kZW1pcnJvcicpLAogICAgICAgJ3Rvb2xzJzogcGF0aC5q b2luKF9fZGlybmFtZSwgJy4vcGdhZG1pbi90b29scy8nKSwKICAgICAgICdwZ2FkbWluLnVzZXJf bWFuYWdlbWVudC5jdXJyZW50X3VzZXInOiByZWdyZXNzaW9uRGlyICsgJy9qYXZhc2NyaXB0L2Zh a2VfY3VycmVudF91c2VyJywKZGlmZiAtLWdpdCBhL3dlYi95YXJuLmxvY2sgYi93ZWIveWFybi5s b2NrCmluZGV4IDdkYzcwOWFiNS4uMTg2NTAwZDdiIDEwMDY0NAotLS0gYS93ZWIveWFybi5sb2Nr CisrKyBiL3dlYi95YXJuLmxvY2sKQEAgLTMxLDYgKzMxLDEzIEBACiAgIGRlcGVuZGVuY2llczoK ICAgICAiQGJhYmVsL2hpZ2hsaWdodCIgIl43LjE0LjUiCiAKKyJAYmFiZWwvY29kZS1mcmFtZUBe Ny4xNi4wIjoKKyAgdmVyc2lvbiAiNy4xNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9AYmFiZWwvY29kZS1mcmFtZS8tL2NvZGUtZnJhbWUtNy4xNi4wLnRneiMw ZGZjODAzMDliZWVjODQxMWU2NWU3MDY0NjFjNDA4YjBiYjliNDMxIgorICBpbnRlZ3JpdHkgc2hh NTEyLUlGNEVPTUVWK2JmWXdPbU54R3pTbmpSMkVtUW9kN2YxVVhPcFpNM2w0aTRvNFFOd3pqdEpB dS9IeGRqSHEwYVlCdmRxTXVRRVkxZWcwbnFXOVpQT1JBPT0KKyAgZGVwZW5kZW5jaWVzOgorICAg ICJAYmFiZWwvaGlnaGxpZ2h0IiAiXjcuMTYuMCIKKwogIkBiYWJlbC9jb2RlLWZyYW1lQF43LjE2 LjciOgogICB2ZXJzaW9uICI3LjE2LjciCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL0BiYWJlbC9jb2RlLWZyYW1lLy0vY29kZS1mcmFtZS03LjE2LjcudGd6IzQ0NDE2 YjZiZDc2MjRiOTk4ZjViMWFmNWQ0NzA4NTZjNDAxMzg3ODkiCkBAIC0zOCwxMiArNDUsNyBAQAog ICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC9oaWdobGlnaHQiICJeNy4xNi43IgogCi0iQGJh YmVsL2NvbXBhdC1kYXRhQF43LjEzLjAiLCAiQGJhYmVsL2NvbXBhdC1kYXRhQF43LjEzLjgiLCAi QGJhYmVsL2NvbXBhdC1kYXRhQF43LjE0LjUiLCAiQGJhYmVsL2NvbXBhdC1kYXRhQF43LjE0Ljci OgotICB2ZXJzaW9uICI3LjE0LjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL0BiYWJlbC9jb21wYXQtZGF0YS8tL2NvbXBhdC1kYXRhLTcuMTQuNy50Z3ojN2IwNDdk N2EzYTg5YTY3ZDIyNThkYzYxZjYwNGYwOThmMWJjN2UwOCIKLSAgaW50ZWdyaXR5IHNoYTUxMi1u UzZkWmFJU0NYSjMrNTE4Q1dpQmZFci8vZ0h5TU8wMnVEeEJrWFRLWkRONVBPcnVDbk9aMU40WUJS WkRDYWJ3RjhuWk1XQnBSeElpY21YdEJzK2Z2dz09Ci0KLSJAYmFiZWwvY29tcGF0LWRhdGFAXjcu MTMuMTEiLCAiQGJhYmVsL2NvbXBhdC1kYXRhQF43LjE2LjQiLCAiQGJhYmVsL2NvbXBhdC1kYXRh QF43LjE2LjgiOgorIkBiYWJlbC9jb21wYXQtZGF0YUBeNy4xMy4wIiwgIkBiYWJlbC9jb21wYXQt ZGF0YUBeNy4xMy4xMSIsICJAYmFiZWwvY29tcGF0LWRhdGFAXjcuMTMuOCIsICJAYmFiZWwvY29t cGF0LWRhdGFAXjcuMTQuNSIsICJAYmFiZWwvY29tcGF0LWRhdGFAXjcuMTQuNyIsICJAYmFiZWwv Y29tcGF0LWRhdGFAXjcuMTYuNCIsICJAYmFiZWwvY29tcGF0LWRhdGFAXjcuMTYuOCI6CiAgIHZl cnNpb24gIjcuMTcuMCIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v QGJhYmVsL2NvbXBhdC1kYXRhLy0vY29tcGF0LWRhdGEtNy4xNy4wLnRneiM4Njg1MGI4NTk3ZWE2 OTYyMDg5NzcwOTUyMDc1ZGNhYWJiOGRiYTM0IgogICBpbnRlZ3JpdHkgc2hhNTEyLTM5MmJ5VGxw R1dYTXY0RmJ5V3czc0FaL0ZyVy9EcndxTEdYcHkwbWJ5TmU5VGFxdjFtZzl5T041L28wY25yOFhZ Q2tGVFpiQzFlVitjK0xBUk9ncm5nPT0KQEAgLTkyLDMxICs5NCwyMiBAQAogICAgIHNlbXZlciAi XjYuMy4wIgogCiAiQGJhYmVsL2VzbGludC1wYXJzZXJAXjcuMTIuMTMiOgotICB2ZXJzaW9uICI3 LjEzLjgiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9l c2xpbnQtcGFyc2VyLy0vZXNsaW50LXBhcnNlci03LjEzLjgudGd6IzZmMmJkZTZiMDY5MGZjYzA1 OThiNDg2OWZjN2M4ZThiNTViMTc2ODciCi0gIGludGVncml0eSBzaGE1MTItWGV3S2tpeXVrckd6 TWVxVG9YSlFrNmhqZzJ2ZUk5U05RRWxHekFvQWpLeFlDTGJnY1ZYNEtBMldob3lxTW9uOU40Uk1k Q1poTlRKTk9CY3A5c3BzaXc9PQorICB2ZXJzaW9uICI3LjE2LjAiCisgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9lc2xpbnQtcGFyc2VyLy0vZXNsaW50LXBh cnNlci03LjE2LjAudGd6IzAzMmNmNmM4ZDg0NGE5NWFkNjJmNzc5ZDI3MDhmYjRmNzdlMWE4MWMi CisgIGludGVncml0eSBzaGE1MTItYytBc1lPSGpJK0ZnQ2EraWZMZDhzRFhwNFU0bWprZkZnTDlO ZFFXaHVBNzMxa0FVSnMwV2RKSVhFVDRBMTRFSkFSOUp2OUZGRi9NelBXSmZWOU9pcnc9PQogICBk ZXBlbmRlbmNpZXM6Ci0gICAgZXNsaW50LXNjb3BlICI1LjEuMCIKLSAgICBlc2xpbnQtdmlzaXRv ci1rZXlzICJeMS4zLjAiCisgICAgZXNsaW50LXNjb3BlICJeNS4xLjEiCisgICAgZXNsaW50LXZp c2l0b3Ita2V5cyAiXjIuMS4wIgogICAgIHNlbXZlciAiXjYuMy4wIgogCiAiQGJhYmVsL2VzbGlu dC1wbHVnaW5AXjcuMTIuMTMiOgotICB2ZXJzaW9uICI3LjEzLjAiCi0gIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9lc2xpbnQtcGx1Z2luLy0vZXNsaW50LXBs dWdpbi03LjEzLjAudGd6I2U2ZDk5ZWZjZDZiODU1MWFkZjQ3OWUzODJhNDcyMTg3MjYxNzliMWIi Ci0gIGludGVncml0eSBzaGE1MTItWUd3Q0xjL3UvdWMzYlUrcS9mdmdSUTYyK1RreHV5VnZkbXli SzZFbHpFNDl2T0RwK1JuUmUxNmVKek1NN0V3dmNSUFFmUXZjT1N1R216ZmNiWkUyK3c9PQotICBk ZXBlbmRlbmNpZXM6Ci0gICAgZXNsaW50LXJ1bGUtY29tcG9zZXIgIl4wLjMuMCIKLQotIkBiYWJl bC9nZW5lcmF0b3JAXjcuMTMuMCIsICJAYmFiZWwvZ2VuZXJhdG9yQF43LjE0LjUiOgogICB2ZXJz aW9uICI3LjE0LjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0Bi YWJlbC9nZW5lcmF0b3IvLS9nZW5lcmF0b3ItNy4xNC41LnRneiM4NDhkN2I5ZjAzMWNhY2E5ZDBj ZDBhZjAxYjA2M2YyMjZmNTJkNzg1IgotICBpbnRlZ3JpdHkgc2hhNTEyLXkzcmxQKy9HMjVPSVgz bVlLS0lPbFFSY3FqN1lncnZIeE9MYlZteUxKOWJQbWk1dHR2VW1weWRWamNGalpwaE9rdFd1QTdv dmJ4OTFFQ2xvV1RmaklBPT0KKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vQGJhYmVsL2VzbGludC1wbHVnaW4vLS9lc2xpbnQtcGx1Z2luLTcuMTQuNS50Z3ojNzBiNzY2 MDhkNDkwOTQwNjJlOGRhMmEyNjE0ZDUwZmVjNzc1YzAwZiIKKyAgaW50ZWdyaXR5IHNoYTUxMi1u enQvWU1uT09JUmlrdlNuMmhrOStXMm9tZ0pCeTZVOFROMFIrV1RUbXFhcEErSG5aVHV2aVpha2V0 ZFRFOVc3L2svK0UvRGZabHQxZXkxTlNFMzlwZz09CiAgIGRlcGVuZGVuY2llczoKLSAgICAiQGJh YmVsL3R5cGVzIiAiXjcuMTQuNSIKLSAgICBqc2VzYyAiXjIuNS4xIgotICAgIHNvdXJjZS1tYXAg Il4wLjUuMCIKKyAgICBlc2xpbnQtcnVsZS1jb21wb3NlciAiXjAuMy4wIgogCi0iQGJhYmVsL2dl bmVyYXRvckBeNy4xNy4wIjoKKyJAYmFiZWwvZ2VuZXJhdG9yQF43LjEzLjAiLCAiQGJhYmVsL2dl bmVyYXRvckBeNy4xNC41IiwgIkBiYWJlbC9nZW5lcmF0b3JAXjcuMTcuMCI6CiAgIHZlcnNpb24g IjcuMTcuMCIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVs L2dlbmVyYXRvci8tL2dlbmVyYXRvci03LjE3LjAudGd6IzdiZDg5MGJhNzA2Y2Q4NmQzZTJmNzI3 MzIyMzQ2ZmZkYmY5OGY2NWUiCiAgIGludGVncml0eSBzaGE1MTItSTNPbWl2NkZHT0MyOWR0bFpo a2ZYTzZwZ2ttdWtKU2xUMjZRalZ2UzFER1plL056U1ZDUEc0MVgwdFMyMW9aa0pZbG92Zmo5cURX Z0tQK0NuNGJYeHc9PQpAQCAtMTI1LDEyICsxMTgsMjEgQEAKICAgICBqc2VzYyAiXjIuNS4xIgog ICAgIHNvdXJjZS1tYXAgIl4wLjUuMCIKIAotIkBiYWJlbC9oZWxwZXItYW5ub3RhdGUtYXMtcHVy ZUBeNy4wLjAiLCAiQGJhYmVsL2hlbHBlci1hbm5vdGF0ZS1hcy1wdXJlQF43LjEwLjQiLCAiQGJh YmVsL2hlbHBlci1hbm5vdGF0ZS1hcy1wdXJlQF43LjEyLjEzIiwgIkBiYWJlbC9oZWxwZXItYW5u b3RhdGUtYXMtcHVyZUBeNy4xNC41IjoKLSAgdmVyc2lvbiAiNy4xNC41IgotICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvaGVscGVyLWFubm90YXRlLWFzLXB1 cmUvLS9oZWxwZXItYW5ub3RhdGUtYXMtcHVyZS03LjE0LjUudGd6IzdiZjQ3OGVjM2I3MTcyNmQ1 NmE4Y2E1Nzc1YjA0NmZjMjk4NzllNjEiCi0gIGludGVncml0eSBzaGE1MTItRWl2SDlFZ0JJYitH OGlqMUIyakF3U0gzNlduR3ZrUVNFQzZDa1gvNnY2WkZsdzVmVk9IdnNnR0Y0dWlFSE8yR3pNdnVu WmI2dERMUUVRU2RyZG9jckE9PQorIkBiYWJlbC9nZW5lcmF0b3JAXjcuMTYuMCI6CisgIHZlcnNp b24gIjcuMTYuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJh YmVsL2dlbmVyYXRvci8tL2dlbmVyYXRvci03LjE2LjAudGd6I2Q0MGYzZDFkNTA3NWU2MmQzNTAw YmNjYjY3ZjNkYWE4YTk1MjY1YjIiCisgIGludGVncml0eSBzaGE1MTItUlI4aFVDZlJRbjlqOVJQ S0VWWG85TGl3b3hMUFluNmhOWmx2VU9SOHRTbmF4bEQwcDArbGEwMFpQOS9TblJ0NkhjaEtyK1gw Zk8ycjh2ckVUaUpHZXc9PQogICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC90eXBlcyIgIl43 LjE0LjUiCisgICAgIkBiYWJlbC90eXBlcyIgIl43LjE2LjAiCisgICAganNlc2MgIl4yLjUuMSIK KyAgICBzb3VyY2UtbWFwICJeMC41LjAiCisKKyJAYmFiZWwvaGVscGVyLWFubm90YXRlLWFzLXB1 cmVAXjcuMTUuNCIsICJAYmFiZWwvaGVscGVyLWFubm90YXRlLWFzLXB1cmVAXjcuMTYuMCI6Cisg IHZlcnNpb24gIjcuMTYuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vQGJhYmVsL2hlbHBlci1hbm5vdGF0ZS1hcy1wdXJlLy0vaGVscGVyLWFubm90YXRlLWFzLXB1 cmUtNy4xNi4wLnRneiM5YTFmMGViY2RhNTNkOWEyZDAwMTA4YzRjZWFjZTZhNWQ1ZjFmMDhkIgor ICBpbnRlZ3JpdHkgc2hhNTEyLUl0bVlGOXZSNHpBOGNCeURvY1kwNW8wTEdVa3AxemhiVFFPSDFO RnlsNXhYRXFsVEpRQ0VKamllcml3K2FGcHhvMTZzd014VW5VaUtTN2EvcjR2dEhnPT0KKyAgZGVw ZW5kZW5jaWVzOgorICAgICJAYmFiZWwvdHlwZXMiICJeNy4xNi4wIgogCiAiQGJhYmVsL2hlbHBl ci1hbm5vdGF0ZS1hcy1wdXJlQF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2LjciCkBAIC0xMzks MTQgKzE0MSw2IEBACiAgIGRlcGVuZGVuY2llczoKICAgICAiQGJhYmVsL3R5cGVzIiAiXjcuMTYu NyIKIAotIkBiYWJlbC9oZWxwZXItYnVpbGRlci1iaW5hcnktYXNzaWdubWVudC1vcGVyYXRvci12 aXNpdG9yQF43LjEyLjEzIjoKLSAgdmVyc2lvbiAiNy4xMi4xMyIKLSAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1idWlsZGVyLWJpbmFyeS1hc3Np Z25tZW50LW9wZXJhdG9yLXZpc2l0b3IvLS9oZWxwZXItYnVpbGRlci1iaW5hcnktYXNzaWdubWVu dC1vcGVyYXRvci12aXNpdG9yLTcuMTIuMTMudGd6IzZiYzIwMzYxYzg4YjBhNzRkMDUxMzdhNjVj YWM4ZDNjYmY2ZjYxZmMiCi0gIGludGVncml0eSBzaGE1MTItQ1pPdjl0R3BoaERSbFZqVmtBZ204 TmhrbG05UnpTbVdwWDJteSt0N1VhL0tUNjE2cEV6WHNRQ2ppbnp2a1J2SFdKOWl0TzRmMjk2ZWZy b1gyM1hDTUE9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXItZXhwbG9kZS1h c3NpZ25hYmxlLWV4cHJlc3Npb24iICJeNy4xMi4xMyIKLSAgICAiQGJhYmVsL3R5cGVzIiAiXjcu MTIuMTMiCi0KICJAYmFiZWwvaGVscGVyLWJ1aWxkZXItYmluYXJ5LWFzc2lnbm1lbnQtb3BlcmF0 b3ItdmlzaXRvckBeNy4xNi43IjoKICAgdmVyc2lvbiAiNy4xNi43IgogICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvaGVscGVyLWJ1aWxkZXItYmluYXJ5LWFz c2lnbm1lbnQtb3BlcmF0b3ItdmlzaXRvci8tL2hlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25t ZW50LW9wZXJhdG9yLXZpc2l0b3ItNy4xNi43LnRneiMzOGQxMzg1NjFlYTIwN2YwZjY5ZWIxNjI2 YTQxOGU0ZjdlNmE1ODBiIgpAQCAtMTU1LDcgKzE0OSw3IEBACiAgICAgIkBiYWJlbC9oZWxwZXIt ZXhwbG9kZS1hc3NpZ25hYmxlLWV4cHJlc3Npb24iICJeNy4xNi43IgogICAgICJAYmFiZWwvdHlw ZXMiICJeNy4xNi43IgogCi0iQGJhYmVsL2hlbHBlci1jb21waWxhdGlvbi10YXJnZXRzQF43LjEz LjAiLCAiQGJhYmVsL2hlbHBlci1jb21waWxhdGlvbi10YXJnZXRzQF43LjEzLjgiLCAiQGJhYmVs L2hlbHBlci1jb21waWxhdGlvbi10YXJnZXRzQF43LjE0LjUiOgorIkBiYWJlbC9oZWxwZXItY29t cGlsYXRpb24tdGFyZ2V0c0BeNy4xMy4wIiwgIkBiYWJlbC9oZWxwZXItY29tcGlsYXRpb24tdGFy Z2V0c0BeNy4xMy44IjoKICAgdmVyc2lvbiAiNy4xNC41IgogICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvaGVscGVyLWNvbXBpbGF0aW9uLXRhcmdldHMvLS9o ZWxwZXItY29tcGlsYXRpb24tdGFyZ2V0cy03LjE0LjUudGd6IzdhOTljNWQwOTY3OTExZTk3MmZl MmMzNDExZjdkNWI0OTg0OThlY2YiCiAgIGludGVncml0eSBzaGE1MTItditRdFpxWEVpT25wTzZF WXZsSW1CNnpDRDJMZWwwNlJ6T1B6bWt6L0QvWGdRaVV1M0MvSmIxTE9xU3QvQUlBMzRUWWkvUStL bFQ4dlRRcmdkeGtiTHc9PQpAQCAtMTY1LDcgKzE1OSw3IEBACiAgICAgYnJvd3NlcnNsaXN0ICJe NC4xNi42IgogICAgIHNlbXZlciAiXjYuMy4wIgogCi0iQGJhYmVsL2hlbHBlci1jb21waWxhdGlv bi10YXJnZXRzQF43LjE2LjciOgorIkBiYWJlbC9oZWxwZXItY29tcGlsYXRpb24tdGFyZ2V0c0Be Ny4xNC41IiwgIkBiYWJlbC9oZWxwZXItY29tcGlsYXRpb24tdGFyZ2V0c0BeNy4xNi43IjoKICAg dmVyc2lvbiAiNy4xNi43IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9AYmFiZWwvaGVscGVyLWNvbXBpbGF0aW9uLXRhcmdldHMvLS9oZWxwZXItY29tcGlsYXRpb24t dGFyZ2V0cy03LjE2LjcudGd6IzA2ZTY2YzVmMjk5NjAxZTZjN2RhMzUwMDQ5MzE1ZTgzMjA5ZDU1 MWIiCiAgIGludGVncml0eSBzaGE1MTItbUdvakJ3SVdjd0dENnJmcWdSWFZsVlltUEF2N2VPcEll bVVHM2RHbkRkQ1k0UGFlNzBST2lqM1htZnJINkZhMWgxYWlEeWxwZ2xiWnlrdGZ6eW8vaEE9PQpA QCAtMTc1LDE3ICsxNjksMzAgQEAKICAgICBicm93c2Vyc2xpc3QgIl40LjE3LjUiCiAgICAgc2Vt dmVyICJeNi4zLjAiCiAKLSJAYmFiZWwvaGVscGVyLWNyZWF0ZS1jbGFzcy1mZWF0dXJlcy1wbHVn aW5AXjcuMTMuMCIsICJAYmFiZWwvaGVscGVyLWNyZWF0ZS1jbGFzcy1mZWF0dXJlcy1wbHVnaW5A XjcuMTQuNiI6Ci0gIHZlcnNpb24gIjcuMTQuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1jcmVhdGUtY2xhc3MtZmVhdHVyZXMtcGx1Z2lu Ly0vaGVscGVyLWNyZWF0ZS1jbGFzcy1mZWF0dXJlcy1wbHVnaW4tNy4xNC42LnRneiNmMTE0NDY5 YjZjMDZmOGI1YzU5YzZjNGU3NDYyMWY1MDg1MzYyNTQyIgotICBpbnRlZ3JpdHkgc2hhNTEyLVo2 Z3NmR29mVHhILytMUVhxWUVLNDVreG1jZW5zYnptay9vaThEbWFReXRsUUNncU5adDlYUUY4aXFs SS9TZVhXVmphTU54dll2emFZdytraDQybURnPT0KKyJAYmFiZWwvaGVscGVyLWNyZWF0ZS1jbGFz cy1mZWF0dXJlcy1wbHVnaW5AXjcuMTMuMCI6CisgIHZlcnNpb24gIjcuMTcuMSIKKyAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1jcmVhdGUtY2xh c3MtZmVhdHVyZXMtcGx1Z2luLy0vaGVscGVyLWNyZWF0ZS1jbGFzcy1mZWF0dXJlcy1wbHVnaW4t Ny4xNy4xLnRneiM5Njk5ZjE0YTg4ODMzYTdlMDU1Y2U1N2RjZDNmZmRjZDI1MTg2YjIxIgorICBp bnRlZ3JpdHkgc2hhNTEyLUpCZFNyL0x0eVlJbm8vcE5uSjc1bEJjcWMzWjFYWHVqelBhbkhxanZ2 cmhPQStEVGNlVEZ1Smk4WGptV1RaaDRyM2ZzZGZxYUNNTjBpWmVtZGt4WkhRPT0KICAgZGVwZW5k ZW5jaWVzOgotICAgICJAYmFiZWwvaGVscGVyLWFubm90YXRlLWFzLXB1cmUiICJeNy4xNC41Igot ICAgICJAYmFiZWwvaGVscGVyLWZ1bmN0aW9uLW5hbWUiICJeNy4xNC41IgotICAgICJAYmFiZWwv aGVscGVyLW1lbWJlci1leHByZXNzaW9uLXRvLWZ1bmN0aW9ucyIgIl43LjE0LjUiCi0gICAgIkBi YWJlbC9oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uIiAiXjcuMTQuNSIKLSAgICAiQGJh YmVsL2hlbHBlci1yZXBsYWNlLXN1cGVycyIgIl43LjE0LjUiCi0gICAgIkBiYWJlbC9oZWxwZXIt c3BsaXQtZXhwb3J0LWRlY2xhcmF0aW9uIiAiXjcuMTQuNSIKKyAgICAiQGJhYmVsL2hlbHBlci1h bm5vdGF0ZS1hcy1wdXJlIiAiXjcuMTYuNyIKKyAgICAiQGJhYmVsL2hlbHBlci1lbnZpcm9ubWVu dC12aXNpdG9yIiAiXjcuMTYuNyIKKyAgICAiQGJhYmVsL2hlbHBlci1mdW5jdGlvbi1uYW1lIiAi XjcuMTYuNyIKKyAgICAiQGJhYmVsL2hlbHBlci1tZW1iZXItZXhwcmVzc2lvbi10by1mdW5jdGlv bnMiICJeNy4xNi43IgorICAgICJAYmFiZWwvaGVscGVyLW9wdGltaXNlLWNhbGwtZXhwcmVzc2lv biIgIl43LjE2LjciCisgICAgIkBiYWJlbC9oZWxwZXItcmVwbGFjZS1zdXBlcnMiICJeNy4xNi43 IgorICAgICJAYmFiZWwvaGVscGVyLXNwbGl0LWV4cG9ydC1kZWNsYXJhdGlvbiIgIl43LjE2Ljci CisKKyJAYmFiZWwvaGVscGVyLWNyZWF0ZS1jbGFzcy1mZWF0dXJlcy1wbHVnaW5AXjcuMTYuMCI6 CisgIHZlcnNpb24gIjcuMTYuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr Zy5jb20vQGJhYmVsL2hlbHBlci1jcmVhdGUtY2xhc3MtZmVhdHVyZXMtcGx1Z2luLy0vaGVscGVy LWNyZWF0ZS1jbGFzcy1mZWF0dXJlcy1wbHVnaW4tNy4xNi4wLnRneiMwOTBkNGQxNjZiMzQyYTAz YTlmZWMzN2VmNGZkNWFlYjljN2M2YTRiIgorICBpbnRlZ3JpdHkgc2hhNTEyLVhMd1d2cUVhcTE5 ekZsRjVQVGdPb2Q0YlVBK1hia1I0V0xRQmN0MWJrem14SkdCMFpFSmFvS0Y0YzhjZ0g5b0J0Q0R1 WUo4QlA1TkI5dUZpRWdPNVFBPT0KKyAgZGVwZW5kZW5jaWVzOgorICAgICJAYmFiZWwvaGVscGVy LWFubm90YXRlLWFzLXB1cmUiICJeNy4xNi4wIgorICAgICJAYmFiZWwvaGVscGVyLWZ1bmN0aW9u LW5hbWUiICJeNy4xNi4wIgorICAgICJAYmFiZWwvaGVscGVyLW1lbWJlci1leHByZXNzaW9uLXRv LWZ1bmN0aW9ucyIgIl43LjE2LjAiCisgICAgIkBiYWJlbC9oZWxwZXItb3B0aW1pc2UtY2FsbC1l eHByZXNzaW9uIiAiXjcuMTYuMCIKKyAgICAiQGJhYmVsL2hlbHBlci1yZXBsYWNlLXN1cGVycyIg Il43LjE2LjAiCisgICAgIkBiYWJlbC9oZWxwZXItc3BsaXQtZXhwb3J0LWRlY2xhcmF0aW9uIiAi XjcuMTYuMCIKIAogIkBiYWJlbC9oZWxwZXItY3JlYXRlLWNsYXNzLWZlYXR1cmVzLXBsdWdpbkBe Ny4xNi4xMCIsICJAYmFiZWwvaGVscGVyLWNyZWF0ZS1jbGFzcy1mZWF0dXJlcy1wbHVnaW5AXjcu MTYuNyI6CiAgIHZlcnNpb24gIjcuMTcuMCIKQEAgLTIwMCwxNSArMjA3LDcgQEAKICAgICAiQGJh YmVsL2hlbHBlci1yZXBsYWNlLXN1cGVycyIgIl43LjE2LjciCiAgICAgIkBiYWJlbC9oZWxwZXIt c3BsaXQtZXhwb3J0LWRlY2xhcmF0aW9uIiAiXjcuMTYuNyIKIAotIkBiYWJlbC9oZWxwZXItY3Jl YXRlLXJlZ2V4cC1mZWF0dXJlcy1wbHVnaW5AXjcuMTIuMTMiOgotICB2ZXJzaW9uICI3LjE0LjMi Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9oZWxwZXIt Y3JlYXRlLXJlZ2V4cC1mZWF0dXJlcy1wbHVnaW4vLS9oZWxwZXItY3JlYXRlLXJlZ2V4cC1mZWF0 dXJlcy1wbHVnaW4tNy4xNC4zLnRneiMxNDlhYTZkNzhjMDE2ZTMxOGM0M2UyNDA5YTBhZTljMTM2 YTg2Njg4IgotICBpbnRlZ3JpdHkgc2hhNTEyLUpJQjIrWEpyYjd2M3pjZVYyWHpEaEdJQjkwMkNt S0dTcFNsNHEyQzZhZ1U5U05MRy8yVjFSdEZSR1BHMUFqaDlTVGozK3E2ekpNT0MrTi9wcDJQOURB PT0KLSAgZGVwZW5kZW5jaWVzOgotICAgICJAYmFiZWwvaGVscGVyLWFubm90YXRlLWFzLXB1cmUi ICJeNy4xMi4xMyIKLSAgICByZWdleHB1LWNvcmUgIl40LjcuMSIKLQotIkBiYWJlbC9oZWxwZXIt Y3JlYXRlLXJlZ2V4cC1mZWF0dXJlcy1wbHVnaW5AXjcuMTYuNyI6CisiQGJhYmVsL2hlbHBlci1j cmVhdGUtcmVnZXhwLWZlYXR1cmVzLXBsdWdpbkBeNy4xMi4xMyIsICJAYmFiZWwvaGVscGVyLWNy ZWF0ZS1yZWdleHAtZmVhdHVyZXMtcGx1Z2luQF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE3LjAi CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9oZWxwZXIt Y3JlYXRlLXJlZ2V4cC1mZWF0dXJlcy1wbHVnaW4vLS9oZWxwZXItY3JlYXRlLXJlZ2V4cC1mZWF0 dXJlcy1wbHVnaW4tNy4xNy4wLnRneiMxZGNjN2Q0MGJhMGM2YjZiMjU2MTg5OTdjNWRiZmQzMTBm MTg2ZmUxIgogICBpbnRlZ3JpdHkgc2hhNTEyLWF3TzJTbzk5d0c2S25sRStUUHM2cm44M2dDejVX bEVlUEpEVG5MRXFiY2hNVnJCZUF1alVSVnBoUmRpZ3NrMDk0Vmh2WmVoRm9OT2loU2xjQmp3c1hB PT0KQEAgLTIxNiw2ICsyMTUsMTQgQEAKICAgICAiQGJhYmVsL2hlbHBlci1hbm5vdGF0ZS1hcy1w dXJlIiAiXjcuMTYuNyIKICAgICByZWdleHB1LWNvcmUgIl41LjAuMSIKIAorIkBiYWJlbC9oZWxw ZXItY3JlYXRlLXJlZ2V4cC1mZWF0dXJlcy1wbHVnaW5AXjcuMTYuMCI6CisgIHZlcnNpb24gIjcu MTYuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hl bHBlci1jcmVhdGUtcmVnZXhwLWZlYXR1cmVzLXBsdWdpbi8tL2hlbHBlci1jcmVhdGUtcmVnZXhw LWZlYXR1cmVzLXBsdWdpbi03LjE2LjAudGd6IzA2YjIzNDhjZTM3ZmNjYzRmNWUxOGRjZDhkNzUw NTNmMmE3YzQ0ZmYiCisgIGludGVncml0eSBzaGE1MTItM0R5RzB6QUZBWktjT3A3YVZyMzNkZHdr eEowWjBKcjVWOTl5M0k2OTBlWUxwdWtKc0p2QWJ6VHkxZXdvQ3FzTUw4U2JJcmpIMTRKYy9uU1E0 VHZOUEE9PQorICBkZXBlbmRlbmNpZXM6CisgICAgIkBiYWJlbC9oZWxwZXItYW5ub3RhdGUtYXMt cHVyZSIgIl43LjE2LjAiCisgICAgcmVnZXhwdS1jb3JlICJeNC43LjEiCisKICJAYmFiZWwvaGVs cGVyLWRlZmluZS1wb2x5ZmlsbC1wcm92aWRlckBeMC4xLjUiOgogICB2ZXJzaW9uICIwLjEuNSIK ICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1k ZWZpbmUtcG9seWZpbGwtcHJvdmlkZXIvLS9oZWxwZXItZGVmaW5lLXBvbHlmaWxsLXByb3ZpZGVy LTAuMS41LnRneiMzYzJmOTFiNzk3MWI5ZmMxMWZlNzc5Yzk0NWMwMTQwNjVkZWEzNDBlIgpAQCAt MjUxLDEzICsyNTgsNiBAQAogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC90eXBlcyIgIl43 LjE2LjciCiAKLSJAYmFiZWwvaGVscGVyLWV4cGxvZGUtYXNzaWduYWJsZS1leHByZXNzaW9uQF43 LjEyLjEzIjoKLSAgdmVyc2lvbiAiNy4xMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9AYmFiZWwvaGVscGVyLWV4cGxvZGUtYXNzaWduYWJsZS1leHByZXNzaW9u Ly0vaGVscGVyLWV4cGxvZGUtYXNzaWduYWJsZS1leHByZXNzaW9uLTcuMTMuMC50Z3ojMTdiNWM1 OWZmNDczZDlmOTU2ZjQwZWY1NzBjZjNhNzZjYTEyNjU3ZiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1x UzBwZUxURFA4a09pc0cxYmxLYmFvQmcvbzlPU2ExcW91bU1qVEs1cE0rS0RUdHB4cHNpdWJuQ0dQ MzR2SzhCWEdjYjJNOWVpZ3dndm9KcnlyendXQT09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQGJh YmVsL3R5cGVzIiAiXjcuMTMuMCIKLQogIkBiYWJlbC9oZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxl LWV4cHJlc3Npb25AXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1leHBsb2RlLWFzc2lnbmFi bGUtZXhwcmVzc2lvbi8tL2hlbHBlci1leHBsb2RlLWFzc2lnbmFibGUtZXhwcmVzc2lvbi03LjE2 LjcudGd6IzEyYTZkODUyMmZkZDgzNGYxOTRlODY4YWY2MzU0ZTg2NTAyNDJiN2EiCkBAIC0yNjUs NyArMjY1LDcgQEAKICAgZGVwZW5kZW5jaWVzOgogICAgICJAYmFiZWwvdHlwZXMiICJeNy4xNi43 IgogCi0iQGJhYmVsL2hlbHBlci1mdW5jdGlvbi1uYW1lQF43LjEyLjEzIiwgIkBiYWJlbC9oZWxw ZXItZnVuY3Rpb24tbmFtZUBeNy4xNC41IjoKKyJAYmFiZWwvaGVscGVyLWZ1bmN0aW9uLW5hbWVA XjcuMTQuNSI6CiAgIHZlcnNpb24gIjcuMTQuNSIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1mdW5jdGlvbi1uYW1lLy0vaGVscGVyLWZ1bmN0 aW9uLW5hbWUtNy4xNC41LnRneiM4OWUyYzQ3NDk3MmYxNWQ4ZTIzM2I1MmVlOGM0ODBlMmNmY2Q1 MGM0IgogICBpbnRlZ3JpdHkgc2hhNTEyLUdqbmEwQXNYV2ZGdnJBdVgrVktjTi9hTk5Xb25pekJq Mzl5R3dVelZEVlRsTVlKTUsyV3A2eGRweTcybWZBckZxNXVLK05PdWV4ZnpabHpJMXo5K0FRPT0K QEAgLTI3NCw2ICsyNzQsMTUgQEAKICAgICAiQGJhYmVsL3RlbXBsYXRlIiAiXjcuMTQuNSIKICAg ICAiQGJhYmVsL3R5cGVzIiAiXjcuMTQuNSIKIAorIkBiYWJlbC9oZWxwZXItZnVuY3Rpb24tbmFt ZUBeNy4xNi4wIjoKKyAgdmVyc2lvbiAiNy4xNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9AYmFiZWwvaGVscGVyLWZ1bmN0aW9uLW5hbWUvLS9oZWxwZXItZnVu Y3Rpb24tbmFtZS03LjE2LjAudGd6I2I3ZGQwNzk3ZDAwYmJmZWU0ZjA3ZTljNGVhNWIwZTMwYzhi YjE0ODEiCisgIGludGVncml0eSBzaGE1MTItQlpoNG1FazF4aTJoNEhGaldVWFJRWDVBRXg0cnZh WnhIZ2F4OWdjamRMV2RranNZN01LdDVwMG90anNnNW5vWHcrcEIrY2xNQ2p3K2FFVllBRE1qb2c9 PQorICBkZXBlbmRlbmNpZXM6CisgICAgIkBiYWJlbC9oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5 IiAiXjcuMTYuMCIKKyAgICAiQGJhYmVsL3RlbXBsYXRlIiAiXjcuMTYuMCIKKyAgICAiQGJhYmVs L3R5cGVzIiAiXjcuMTYuMCIKKwogIkBiYWJlbC9oZWxwZXItZnVuY3Rpb24tbmFtZUBeNy4xNi43 IjoKICAgdmVyc2lvbiAiNy4xNi43IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9AYmFiZWwvaGVscGVyLWZ1bmN0aW9uLW5hbWUvLS9oZWxwZXItZnVuY3Rpb24tbmFt ZS03LjE2LjcudGd6I2YxZWM1MTU1MWZiMWM4OTU2YmM4ZGQ5NWYzODUyM2I2Y2YzNzVmOGYiCkBA IC0yODMsMjcgKzI5MiwzNCBAQAogICAgICJAYmFiZWwvdGVtcGxhdGUiICJeNy4xNi43IgogICAg ICJAYmFiZWwvdHlwZXMiICJeNy4xNi43IgogCi0iQGJhYmVsL2hlbHBlci1nZXQtZnVuY3Rpb24t YXJpdHlAXjcuMTQuNSI6Ci0gIHZlcnNpb24gIjcuMTQuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1nZXQtZnVuY3Rpb24tYXJpdHkvLS9o ZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5LTcuMTQuNS50Z3ojMjVmYmZhNTc5YjA5MzdlZWUxZjNi ODA1ZWNlNGNlMzk4YzQzMTgxNSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1JMURiNFNoc3Q1bGV3T000 VitaS0p6UTBKR0dhWjZWWTFqWXZNZ2hSanFzNkRXZ3hMQ0l5RnQzMEdsbktrZlVlRkxwSnQydnpi TVZFWFZTWGxJRllVZz09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL3R5cGVzIiAiXjcu MTQuNSIKLQotIkBiYWJlbC9oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5QF43LjE2LjciOgorIkBi YWJlbC9oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5QF43LjE0LjUiLCAiQGJhYmVsL2hlbHBlci1n ZXQtZnVuY3Rpb24tYXJpdHlAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1nZXQtZnVuY3Rp b24tYXJpdHkvLS9oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5LTcuMTYuNy50Z3ojZWEwOGFjNzUz MTE3YTY2OWYxNTA4YmEwNmViY2M0OTE1NjM4NzQxOSIKICAgaW50ZWdyaXR5IHNoYTUxMi1mbGMr UkxTT0JYek56VmhjTHU2dWplSFVyRDZ0QU5BT1U1b2pyUngvYXMrdGJ6Zjgrc3RVQ2o3K0lmUlJv QWJFWnFqL2FoWEVNc2poT2hnZVpzcm5Udz09CiAgIGRlcGVuZGVuY2llczoKICAgICAiQGJhYmVs L3R5cGVzIiAiXjcuMTYuNyIKIAotIkBiYWJlbC9oZWxwZXItaG9pc3QtdmFyaWFibGVzQF43LjEz LjAiLCAiQGJhYmVsL2hlbHBlci1ob2lzdC12YXJpYWJsZXNAXjcuMTQuNSI6CisiQGJhYmVsL2hl bHBlci1nZXQtZnVuY3Rpb24tYXJpdHlAXjcuMTYuMCI6CisgIHZlcnNpb24gIjcuMTYuMCIKKyAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1nZXQt ZnVuY3Rpb24tYXJpdHkvLS9oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5LTcuMTYuMC50Z3ojMDA4 OGM3NDg2YjI5YTljYjVkOTQ4YjFhMWRlNDZkYjY2ZTA4OWNmYSIKKyAgaW50ZWdyaXR5IHNoYTUx Mi1BU0NxdU5jeXdDMU5rWWgvejdDZ3AzdzMxWVc4YW9qallJbE5nNFZlSmlIa3F5UDRBekl2cjRx eDdwWURiNC9zOFljc1pXcXFPU3hna3ZqVXoxa3BEUT09CisgIGRlcGVuZGVuY2llczoKKyAgICAi QGJhYmVsL3R5cGVzIiAiXjcuMTYuMCIKKworIkBiYWJlbC9oZWxwZXItaG9pc3QtdmFyaWFibGVz QF43LjE0LjUiOgogICB2ZXJzaW9uICI3LjE0LjUiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9oZWxwZXItaG9pc3QtdmFyaWFibGVzLy0vaGVscGVyLWhv aXN0LXZhcmlhYmxlcy03LjE0LjUudGd6I2UwZGQyN2MzM2E3OGU1NzdkN2M4ODg0OTE2YTNlN2Vm MWY3YzdmOGQiCiAgIGludGVncml0eSBzaGE1MTItUjFQWGl6MzFVYzBWeHk0T0VPbTA3eDBvU2pL QWRQUENoM3RQaXZuL0VvOGN2ejZndmVBZXV5VVVQQjIxSG9paWYwdW9QUVNTZGhJUFMzMzUybnZk eVE9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC90eXBlcyIgIl43LjE0LjUiCiAKKyJA YmFiZWwvaGVscGVyLWhvaXN0LXZhcmlhYmxlc0BeNy4xNi4wIjoKKyAgdmVyc2lvbiAiNy4xNi4w IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvaGVscGVy LWhvaXN0LXZhcmlhYmxlcy8tL2hlbHBlci1ob2lzdC12YXJpYWJsZXMtNy4xNi4wLnRneiM0Yzkw MjNjMmYxZGVmN2UyOGZmNDZmYzFkYmNkMzZhMzliZWFhODFhIgorICBpbnRlZ3JpdHkgc2hhNTEy LTFBWmxwYXpqVVIwRVFaUXYzc2dSTmZNOW1FVldQSzNNNnZsYWxjekErRUVDY1B6M1hQaDZWcGxi RXJMNVVvTXBDaGhTY2s1d0FKSHRobGoxYllwY21nPT0KKyAgZGVwZW5kZW5jaWVzOgorICAgICJA YmFiZWwvdHlwZXMiICJeNy4xNi4wIgorCiAiQGJhYmVsL2hlbHBlci1ob2lzdC12YXJpYWJsZXNA XjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1ob2lzdC12YXJpYWJsZXMvLS9oZWxwZXItaG9p c3QtdmFyaWFibGVzLTcuMTYuNy50Z3ojODZiY2IxOWE3N2E1MDljN2I3N2QwZTIyMzIzZWY1ODhm YTU4YzI0NiIKQEAgLTMxMSwxMiArMzI3LDEyIEBACiAgIGRlcGVuZGVuY2llczoKICAgICAiQGJh YmVsL3R5cGVzIiAiXjcuMTYuNyIKIAotIkBiYWJlbC9oZWxwZXItbWVtYmVyLWV4cHJlc3Npb24t dG8tZnVuY3Rpb25zQF43LjE0LjUiOgotICB2ZXJzaW9uICI3LjE0LjciCi0gIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9oZWxwZXItbWVtYmVyLWV4cHJlc3Np b24tdG8tZnVuY3Rpb25zLy0vaGVscGVyLW1lbWJlci1leHByZXNzaW9uLXRvLWZ1bmN0aW9ucy03 LjE0LjcudGd6Izk3ZTU2MjQ0YmViOTQyMTFmZTI3N2JkODE4ZTNhMzI5YzY2Zjc5NzAiCi0gIGlu dGVncml0eSBzaGE1MTItVE1VdDR4S3hKbjZjY2pjT1c3YzRobHd5SkFyaXpza0Fob1NUT0NrQTB1 WitLZ2hJYWNpMFFnOVIwNDNrVU1XSTltdFFmZ255K05RNVFBVG5aK3BhYUE9PQorIkBiYWJlbC9o ZWxwZXItbWVtYmVyLWV4cHJlc3Npb24tdG8tZnVuY3Rpb25zQF43LjE2LjAiOgorICB2ZXJzaW9u ICI3LjE2LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJl bC9oZWxwZXItbWVtYmVyLWV4cHJlc3Npb24tdG8tZnVuY3Rpb25zLy0vaGVscGVyLW1lbWJlci1l eHByZXNzaW9uLXRvLWZ1bmN0aW9ucy03LjE2LjAudGd6IzI5Mjg3MDQwZWZkMTk3Yzc3NjM2ZWY3 NTE4OGU4MWRhOGJjY2Q1YTQiCisgIGludGVncml0eSBzaGE1MTItYnNqbEJGUHVXVDZJV2hsMjhF ZHJRK2dUdlN2ajV0cVZQNVhlZnRwMDdTRXV6NXBMbnNYWnVEa0REM1JmY3h5MElzSG1iWis3QjIv OVNIenhPMFQrc1E9PQogICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC90eXBlcyIgIl43LjE0 LjUiCisgICAgIkBiYWJlbC90eXBlcyIgIl43LjE2LjAiCiAKICJAYmFiZWwvaGVscGVyLW1lbWJl ci1leHByZXNzaW9uLXRvLWZ1bmN0aW9uc0BeNy4xNi43IjoKICAgdmVyc2lvbiAiNy4xNi43IgpA QCAtMzI1LDEzICszNDEsMjAgQEAKICAgZGVwZW5kZW5jaWVzOgogICAgICJAYmFiZWwvdHlwZXMi ICJeNy4xNi43IgogCi0iQGJhYmVsL2hlbHBlci1tb2R1bGUtaW1wb3J0c0BeNy4wLjAiLCAiQGJh YmVsL2hlbHBlci1tb2R1bGUtaW1wb3J0c0BeNy4xMi4xMyIsICJAYmFiZWwvaGVscGVyLW1vZHVs ZS1pbXBvcnRzQF43LjEzLjEyIjoKKyJAYmFiZWwvaGVscGVyLW1vZHVsZS1pbXBvcnRzQF43LjAu MCIsICJAYmFiZWwvaGVscGVyLW1vZHVsZS1pbXBvcnRzQF43LjEyLjEzIjoKICAgdmVyc2lvbiAi Ny4xMy4xMiIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVs L2hlbHBlci1tb2R1bGUtaW1wb3J0cy8tL2hlbHBlci1tb2R1bGUtaW1wb3J0cy03LjEzLjEyLnRn eiNjNmEzNjlhNmYzNjIxY2IyNWRhMDE0MDc4Njg0ZGE5MTk2YjYxOTc3IgogICBpbnRlZ3JpdHkg c2hhNTEyLTRjVnZSMi8xQjY5M0l1T3ZTSTIweHFxYS8rYmw3bHFBTVI1OVI0aXUzOVI5YU9YOC9K b1lZMXNGYU52VU15TUJHbkhkd3ZKZ1Vyek5Mb1VaeFh5cHhBPT0KICAgZGVwZW5kZW5jaWVzOgog ICAgICJAYmFiZWwvdHlwZXMiICJeNy4xMy4xMiIKIAorIkBiYWJlbC9oZWxwZXItbW9kdWxlLWlt cG9ydHNAXjcuMTUuNCI6CisgIHZlcnNpb24gIjcuMTYuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1tb2R1bGUtaW1wb3J0cy8tL2hlbHBl ci1tb2R1bGUtaW1wb3J0cy03LjE2LjAudGd6IzkwNTM4ZTYwYjY3MmVjZjFiNDQ4ZjVmNGY1NDMz ZDM3ZTc5YTNlYzMiCisgIGludGVncml0eSBzaGE1MTIta2tIN3NXektQcTB4dDNIMW4rZ2hiNHhF TVA4azBVN1hWM2trQitaR3k2OWtEazJ5U0ZXMXFQaTA2c2pLekZZM3QxajZYYkpTcXI0bUY5TDdD WVZ5aGc9PQorICBkZXBlbmRlbmNpZXM6CisgICAgIkBiYWJlbC90eXBlcyIgIl43LjE2LjAiCisK ICJAYmFiZWwvaGVscGVyLW1vZHVsZS1pbXBvcnRzQF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2 LjciCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9oZWxw ZXItbW9kdWxlLWltcG9ydHMvLS9oZWxwZXItbW9kdWxlLWltcG9ydHMtNy4xNi43LnRneiMyNTYx MmE4MDkxYTk5OTcwNDQ2MWM4YTIyMmQwZWZlYzVkMDkxNDM3IgpAQCAtMzY4LDEyICszOTEsMTIg QEAKICAgICAiQGJhYmVsL3RyYXZlcnNlIiAiXjcuMTYuNyIKICAgICAiQGJhYmVsL3R5cGVzIiAi XjcuMTYuNyIKIAotIkBiYWJlbC9oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uQF43LjEy LjEzIiwgIkBiYWJlbC9oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uQF43LjE0LjUiOgot ICB2ZXJzaW9uICI3LjE0LjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL0BiYWJlbC9oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uLy0vaGVscGVyLW9wdGlt aXNlLWNhbGwtZXhwcmVzc2lvbi03LjE0LjUudGd6I2YyNzM5NWE4NjE5ZTA2NjViM2YwMzY0Y2Rk YjQxYzI1ZDcxYjQ5OWMiCi0gIGludGVncml0eSBzaGE1MTItSXFpTElyT0RVT2RuUFU5L0Y4aWIx Rngyb2hsZ0RoeG5JRFU3T0VWaStrQWJFWmN5aUY3QkxVOFc2UGZ2UGk5THp6dGpTN2tjYnpibUw3 b0c4a0Q2VkE9PQorIkBiYWJlbC9oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uQF43LjE2 LjAiOgorICB2ZXJzaW9uICI3LjE2LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL0BiYWJlbC9oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uLy0vaGVscGVy LW9wdGltaXNlLWNhbGwtZXhwcmVzc2lvbi03LjE2LjAudGd6I2NlY2RiMTQ1ZDcwYzU0MDk2YjE1 NjRmOGU5ZjEwY2Q3ZDE5M2IzMzgiCisgIGludGVncml0eSBzaGE1MTItU3VJNDY3R2kyVjhma29m bTJKUG5aekIvU1V1WG9KQTV6WGUveHp5UFAyTTA0Njg2UnpGS0ZIUEs2SERWTjZKdldCSUVXOHR0 OWhQUjdmWGRuMkxncHc9PQogICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC90eXBlcyIgIl43 LjE0LjUiCisgICAgIkBiYWJlbC90eXBlcyIgIl43LjE2LjAiCiAKICJAYmFiZWwvaGVscGVyLW9w dGltaXNlLWNhbGwtZXhwcmVzc2lvbkBeNy4xNi43IjoKICAgdmVyc2lvbiAiNy4xNi43IgpAQCAt MzkyLDE1ICs0MTUsNiBAQAogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9AYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscy8tL2hlbHBlci1wbHVnaW4tdXRpbHMtNy4xNi43 LnRneiNhYTNhOGFiNGMzY2NlZmY4ZTY1ZWI5ZTczZDg3ZGM0ZmYzMjBiMmY1IgogICBpbnRlZ3Jp dHkgc2hhNTEyLVFnM05rN1p4cGdNcnNveDZIcmVZMVpOS2RCcTdLNzJ0RFNsaUE2ZENsNWYwMDdq UjRuZThpRDVVenVObkNKSDJ4QmYyQkVFVkdyKy9PTDZHZHA3UnhBPT0KIAotIkBiYWJlbC9oZWxw ZXItcmVtYXAtYXN5bmMtdG8tZ2VuZXJhdG9yQF43LjEzLjAiOgotICB2ZXJzaW9uICI3LjEzLjAi Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9oZWxwZXIt cmVtYXAtYXN5bmMtdG8tZ2VuZXJhdG9yLy0vaGVscGVyLXJlbWFwLWFzeW5jLXRvLWdlbmVyYXRv ci03LjEzLjAudGd6IzM3NmE3NjBkOWY3YjRiMjA3N2E5ZGQwNWFhOWMzOTI3Y2FkYjIyMDkiCi0g IGludGVncml0eSBzaGE1MTItcFVRcEZCRTlKdkM5bHJRYnBYMFRtZU5JeTVzN0duWmpuYTJsaGhj SEM3RHpnQnM2ZlduNzIyWTVjZndncnRycWM3TkFKd012T2EwbUtocTZYYUU0amc9PQotICBkZXBl bmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXItYW5ub3RhdGUtYXMtcHVyZSIgIl43LjEyLjEz IgotICAgICJAYmFiZWwvaGVscGVyLXdyYXAtZnVuY3Rpb24iICJeNy4xMy4wIgotICAgICJAYmFi ZWwvdHlwZXMiICJeNy4xMy4wIgotCiAiQGJhYmVsL2hlbHBlci1yZW1hcC1hc3luYy10by1nZW5l cmF0b3JAXjcuMTYuOCI6CiAgIHZlcnNpb24gIjcuMTYuOCIKICAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1yZW1hcC1hc3luYy10by1nZW5lcmF0 b3IvLS9oZWxwZXItcmVtYXAtYXN5bmMtdG8tZ2VuZXJhdG9yLTcuMTYuOC50Z3ojMjlmZmFhZGU2 OGEzNjdlMmVkMDljOTA5MDE5ODY5MThkMjVlNTdlMyIKQEAgLTQxMCwxNyArNDI0LDcgQEAKICAg ICAiQGJhYmVsL2hlbHBlci13cmFwLWZ1bmN0aW9uIiAiXjcuMTYuOCIKICAgICAiQGJhYmVsL3R5 cGVzIiAiXjcuMTYuOCIKIAotIkBiYWJlbC9oZWxwZXItcmVwbGFjZS1zdXBlcnNAXjcuMTIuMTMi LCAiQGJhYmVsL2hlbHBlci1yZXBsYWNlLXN1cGVyc0BeNy4xMy4wIiwgIkBiYWJlbC9oZWxwZXIt cmVwbGFjZS1zdXBlcnNAXjcuMTQuNSI6Ci0gIHZlcnNpb24gIjcuMTQuNSIKLSAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1yZXBsYWNlLXN1cGVy cy8tL2hlbHBlci1yZXBsYWNlLXN1cGVycy03LjE0LjUudGd6IzBlY2MwYjAzYzQxY2Q1NjdiNDAy NGVhMDE2MTM0YzI4NDE0YWJiOTQiCi0gIGludGVncml0eSBzaGE1MTItM2kxUWU5Lzh4L2hDSElO dWpuK2l1SHkrbU1STG9jNzdiMm5JOVRCMHpqSDFodm45cUdsWGpXbGdnZHdVY2p1MzZQa1BDeS9s cE03TExVZGNUeUg0T3c9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXItbWVt YmVyLWV4cHJlc3Npb24tdG8tZnVuY3Rpb25zIiAiXjcuMTQuNSIKLSAgICAiQGJhYmVsL2hlbHBl ci1vcHRpbWlzZS1jYWxsLWV4cHJlc3Npb24iICJeNy4xNC41IgotICAgICJAYmFiZWwvdHJhdmVy c2UiICJeNy4xNC41IgotICAgICJAYmFiZWwvdHlwZXMiICJeNy4xNC41IgotCi0iQGJhYmVsL2hl bHBlci1yZXBsYWNlLXN1cGVyc0BeNy4xNi43IjoKKyJAYmFiZWwvaGVscGVyLXJlcGxhY2Utc3Vw ZXJzQF43LjEzLjAiLCAiQGJhYmVsL2hlbHBlci1yZXBsYWNlLXN1cGVyc0BeNy4xNi43IjoKICAg dmVyc2lvbiAiNy4xNi43IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9AYmFiZWwvaGVscGVyLXJlcGxhY2Utc3VwZXJzLy0vaGVscGVyLXJlcGxhY2Utc3VwZXJzLTcu MTYuNy50Z3ojZTlmNWY1ZjMyYWM5MDQyOWMxYTRiZGVjMGYyMzFlZjBjMjgzOGFiMSIKICAgaW50 ZWdyaXR5IHNoYTUxMi15OXZzV2lsVE5hVm5WaDZ4aUpmQUJ6c05wZ0RQS2V2OUhuQWd6NkdiMXA2 VVV3ZjlOZXBkbHNWN1ZYR0NmdEpNK2pxRDVmN0pJRXViY3BMalpqNWRCdz09CkBAIC00MzEsMjcg KzQzNSwyMyBAQAogICAgICJAYmFiZWwvdHJhdmVyc2UiICJeNy4xNi43IgogICAgICJAYmFiZWwv dHlwZXMiICJeNy4xNi43IgogCi0iQGJhYmVsL2hlbHBlci1zaW1wbGUtYWNjZXNzQF43LjEyLjEz IjoKLSAgdmVyc2lvbiAiNy4xMy4xMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vQGJhYmVsL2hlbHBlci1zaW1wbGUtYWNjZXNzLy0vaGVscGVyLXNpbXBsZS1hY2Nl c3MtNy4xMy4xMi50Z3ojZGQ2YzUzOGFmYjYxODE5ZDIwNWEwMTJjMzE3OTJhMzljN2E1ZWFmNiIK LSAgaW50ZWdyaXR5IHNoYTUxMi03RkVqYnJ4NVNMOWNXdlhpb0RibmxZVHBwY1pHdUNZNm93My9E NXZNZ2diMll3Z3U0ZE1ycFRKWDBKZFFBSWNSUlVFbE9JeEYzeUVvb2E5Z1ViOVpiQT09CisiQGJh YmVsL2hlbHBlci1yZXBsYWNlLXN1cGVyc0BeNy4xNi4wIjoKKyAgdmVyc2lvbiAiNy4xNi4wIgor ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvaGVscGVyLXJl cGxhY2Utc3VwZXJzLy0vaGVscGVyLXJlcGxhY2Utc3VwZXJzLTcuMTYuMC50Z3ojNzMwNTVlOGQz Y2Y5YmNiYThkZGI1NWNhZDkzZmVkYzg2MGY2OGYxNyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1UUXh1 UWZTQ2RvaGE3Y3BSTkp2ZmFZeHh4em1ieFh3Lys2Y1M3VjAyZWVEWXloeGRlclNvTVZBTHZ3dXBB NTQvcFpjT1R0VmVKMHhjY3AxbkdXbGFkQT09CiAgIGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVs L3R5cGVzIiAiXjcuMTMuMTIiCisgICAgIkBiYWJlbC9oZWxwZXItbWVtYmVyLWV4cHJlc3Npb24t dG8tZnVuY3Rpb25zIiAiXjcuMTYuMCIKKyAgICAiQGJhYmVsL2hlbHBlci1vcHRpbWlzZS1jYWxs LWV4cHJlc3Npb24iICJeNy4xNi4wIgorICAgICJAYmFiZWwvdHJhdmVyc2UiICJeNy4xNi4wIgor ICAgICJAYmFiZWwvdHlwZXMiICJeNy4xNi4wIgogCi0iQGJhYmVsL2hlbHBlci1zaW1wbGUtYWNj ZXNzQF43LjE2LjciOgorIkBiYWJlbC9oZWxwZXItc2ltcGxlLWFjY2Vzc0BeNy4xMi4xMyIsICJA YmFiZWwvaGVscGVyLXNpbXBsZS1hY2Nlc3NAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIK ICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1z aW1wbGUtYWNjZXNzLy0vaGVscGVyLXNpbXBsZS1hY2Nlc3MtNy4xNi43LnRneiNkNjU2NjU0Yjll YTA4ZGJiOTY1OWI2OWQ2MTA2M2NjZDM0M2ZmMGY3IgogICBpbnRlZ3JpdHkgc2hhNTEyLVpJekhW eW9lTE12WE1OL3Zvay9hNExXUnk4RzJ2MjA1bU5QMFhPdWY5WFJMeVg1L3U5Q25WdWxVdERnVVRh bWEzbFQrYmYvVXF1Y3VaanFpR3VUUzFnPT0KICAgZGVwZW5kZW5jaWVzOgogICAgICJAYmFiZWwv dHlwZXMiICJeNy4xNi43IgogCi0iQGJhYmVsL2hlbHBlci1za2lwLXRyYW5zcGFyZW50LWV4cHJl c3Npb24td3JhcHBlcnNAXjcuMTIuMSI6Ci0gIHZlcnNpb24gIjcuMTIuMSIKLSAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1za2lwLXRyYW5zcGFy ZW50LWV4cHJlc3Npb24td3JhcHBlcnMvLS9oZWxwZXItc2tpcC10cmFuc3BhcmVudC1leHByZXNz aW9uLXdyYXBwZXJzLTcuMTIuMS50Z3ojNDYyZGM2M2E3ZTQzNWFkZTg0NjgzODVjNjNkMmI4NGNj ZTRiM2NiZiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1NZjVBVXVoRzEvT0NDaE9KL0hjQURtdmNITTQy V0pvY2tvbWJuOEFUSkczT255aVN4QksvTW01eDc4QlFXdm10WFpLSGdiamRHTDJraW4vSE9MbFpH QT09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL3R5cGVzIiAiXjcuMTIuMSIKLQogIkBi YWJlbC9oZWxwZXItc2tpcC10cmFuc3BhcmVudC1leHByZXNzaW9uLXdyYXBwZXJzQF43LjE2LjAi OgogICB2ZXJzaW9uICI3LjE2LjAiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL0BiYWJlbC9oZWxwZXItc2tpcC10cmFuc3BhcmVudC1leHByZXNzaW9uLXdyYXBwZXJz Ly0vaGVscGVyLXNraXAtdHJhbnNwYXJlbnQtZXhwcmVzc2lvbi13cmFwcGVycy03LjE2LjAudGd6 IzBlZTMzODgwNzAxNDdjM2FlMDUxZTQ4N2VjYTNlYmIwZTJlOGJiMDkiCkBAIC00NTksNDkgKzQ1 OSw0NiBAQAogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC90eXBlcyIgIl43LjE2LjAiCiAK LSJAYmFiZWwvaGVscGVyLXNwbGl0LWV4cG9ydC1kZWNsYXJhdGlvbkBeNy4xMi4xMyIsICJAYmFi ZWwvaGVscGVyLXNwbGl0LWV4cG9ydC1kZWNsYXJhdGlvbkBeNy4xNC41IjoKKyJAYmFiZWwvaGVs cGVyLXNwbGl0LWV4cG9ydC1kZWNsYXJhdGlvbkBeNy4xMi4xMyIsICJAYmFiZWwvaGVscGVyLXNw bGl0LWV4cG9ydC1kZWNsYXJhdGlvbkBeNy4xNi43IjoKKyAgdmVyc2lvbiAiNy4xNi43IgorICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvaGVscGVyLXNwbGl0 LWV4cG9ydC1kZWNsYXJhdGlvbi8tL2hlbHBlci1zcGxpdC1leHBvcnQtZGVjbGFyYXRpb24tNy4x Ni43LnRneiMwYjY0OGMwYzQyZGE5ZDM5MjBkODVhZDU4NWYyNzc4NjIwYjg3MjZiIgorICBpbnRl Z3JpdHkgc2hhNTEyLXhiV295L1BGb3hTV2F6SVRvVDlTaWYrakpUbHJNY25kSXNhT0t2VEE2dTdR RW83aWxrUlpwamV3MTgvVzNjN25tOGZYZFVEWGgwMlZYVGJaMHBHRE53PT0KKyAgZGVwZW5kZW5j aWVzOgorICAgICJAYmFiZWwvdHlwZXMiICJeNy4xNi43IgorCisiQGJhYmVsL2hlbHBlci1zcGxp dC1leHBvcnQtZGVjbGFyYXRpb25AXjcuMTQuNSI6CiAgIHZlcnNpb24gIjcuMTQuNSIKICAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci1zcGxpdC1l eHBvcnQtZGVjbGFyYXRpb24vLS9oZWxwZXItc3BsaXQtZXhwb3J0LWRlY2xhcmF0aW9uLTcuMTQu NS50Z3ojMjJiMjNhNTRlZjUxYzJiNzYwNWQ4NTE5MzBjMTk3NmRkMGJjNjkzYSIKICAgaW50ZWdy aXR5IHNoYTUxMi1ocHJ4VlB1NmU1S2RwMnB1WlVtdk9HamFMdjlUQ2U1OEUvRmw2aFJxNFlpVlF4 SWNOdnVxNnVUTTJyMW1UL29Qc2t1UzlDZ1IrSTk0c3FBWXYwTkdLQT09CiAgIGRlcGVuZGVuY2ll czoKICAgICAiQGJhYmVsL3R5cGVzIiAiXjcuMTQuNSIKIAotIkBiYWJlbC9oZWxwZXItc3BsaXQt ZXhwb3J0LWRlY2xhcmF0aW9uQF43LjE2LjciOgotICB2ZXJzaW9uICI3LjE2LjciCi0gIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9oZWxwZXItc3BsaXQtZXhw b3J0LWRlY2xhcmF0aW9uLy0vaGVscGVyLXNwbGl0LWV4cG9ydC1kZWNsYXJhdGlvbi03LjE2Ljcu dGd6IzBiNjQ4YzBjNDJkYTlkMzkyMGQ4NWFkNTg1ZjI3Nzg2MjBiODcyNmIiCi0gIGludGVncml0 eSBzaGE1MTIteGJXb3kvUEZveFNXYXpJVG9UOVNpZitqSlRsck1jbmRJc2FPS3ZUQTZ1N1FFbzdp bGtSWnBqZXcxOC9XM2M3bm04ZlhkVURYaDAyVlhUYlowcEdETnc9PQorIkBiYWJlbC9oZWxwZXIt c3BsaXQtZXhwb3J0LWRlY2xhcmF0aW9uQF43LjE2LjAiOgorICB2ZXJzaW9uICI3LjE2LjAiCisg IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9oZWxwZXItc3Bs aXQtZXhwb3J0LWRlY2xhcmF0aW9uLy0vaGVscGVyLXNwbGl0LWV4cG9ydC1kZWNsYXJhdGlvbi03 LjE2LjAudGd6IzI5NjcyZjQzNjYzZTkzNmRmMzcwYWFlYjIyYmVkZGIzYmFlYzc0MzgiCisgIGlu dGVncml0eSBzaGE1MTItMFlNTVJwdURGTkdUSE5SaWlxSlgxOUdqTlhBNEgwRThqWjJpYmNjZlN4 YUNvZ2JtM2FtNVdOLzJuUU5qMFluUXdHV00xSjA2R09jUTJxbmgzKzBwYXc9PQogICBkZXBlbmRl bmNpZXM6Ci0gICAgIkBiYWJlbC90eXBlcyIgIl43LjE2LjciCi0KLSJAYmFiZWwvaGVscGVyLXZh bGlkYXRvci1pZGVudGlmaWVyQF43LjEyLjExIiwgIkBiYWJlbC9oZWxwZXItdmFsaWRhdG9yLWlk ZW50aWZpZXJAXjcuMTQuNSIsICJAYmFiZWwvaGVscGVyLXZhbGlkYXRvci1pZGVudGlmaWVyQF43 LjE0LjkiOgotICB2ZXJzaW9uICI3LjE0LjkiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL0BiYWJlbC9oZWxwZXItdmFsaWRhdG9yLWlkZW50aWZpZXIvLS9oZWxwZXIt dmFsaWRhdG9yLWlkZW50aWZpZXItNy4xNC45LnRneiM2NjU0ZDE3MWIyMDI0ZjZkOGVlMTUxYmYy NTA5Njk5OTE5MTMxZDQ4IgotICBpbnRlZ3JpdHkgc2hhNTEyLXBRWXhQWTBVUDZJSElTUml0TmU4 YnNpakhleDRUV1pYaTJId0tWc2pQaWx0emxoc2Uyem5WY205QWNlNTEwVlQxa3hJSGpHSkNaWlFC WDJnSkRibzBnPT0KKyAgICAiQGJhYmVsL3R5cGVzIiAiXjcuMTYuMCIKIAotIkBiYWJlbC9oZWxw ZXItdmFsaWRhdG9yLWlkZW50aWZpZXJAXjcuMTYuNyI6CisiQGJhYmVsL2hlbHBlci12YWxpZGF0 b3ItaWRlbnRpZmllckBeNy4xMi4xMSIsICJAYmFiZWwvaGVscGVyLXZhbGlkYXRvci1pZGVudGlm aWVyQF43LjE0LjUiLCAiQGJhYmVsL2hlbHBlci12YWxpZGF0b3ItaWRlbnRpZmllckBeNy4xNC45 IiwgIkBiYWJlbC9oZWxwZXItdmFsaWRhdG9yLWlkZW50aWZpZXJAXjcuMTYuNyI6CiAgIHZlcnNp b24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJh YmVsL2hlbHBlci12YWxpZGF0b3ItaWRlbnRpZmllci8tL2hlbHBlci12YWxpZGF0b3ItaWRlbnRp Zmllci03LjE2LjcudGd6I2U4YzYwMjQzOGM0YTgxOTU3NTEyNDNkYTkwMzFkMTYwN2QyNDdjYWQi CiAgIGludGVncml0eSBzaGE1MTItaHNFbkZlbWVpVzREMDhBNWdVQVp4TEJUWHBaMzlQK2ErREdE c0h3MXl4cXlRL2p6RkVueGY1dVRFR3ArM2J6QWJOT3hVMXBhVGdZUzRFQ1UvSWdmRHc9PQogCi0i QGJhYmVsL2hlbHBlci12YWxpZGF0b3Itb3B0aW9uQF43LjEyLjE3IiwgIkBiYWJlbC9oZWxwZXIt dmFsaWRhdG9yLW9wdGlvbkBeNy4xNC41IjoKLSAgdmVyc2lvbiAiNy4xNC41IgotICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvaGVscGVyLXZhbGlkYXRvci1v cHRpb24vLS9oZWxwZXItdmFsaWRhdG9yLW9wdGlvbi03LjE0LjUudGd6IzZlNzJhMWZmZjE4ZDVk ZmNiODc4ZTFlNjJmMWEwMjFjNGI3MmQ1YTMiCi0gIGludGVncml0eSBzaGE1MTItT1g4RDVlZVg0 WHdjcm9WVzQ1Tk12b1lhSXVGSStHUXBBMmE4R2krWC9VL2NEVUlSc1YzN3FRZkY5MDVGMGh0VFJD UkVRSUI0S3FQZWF2ZVJKVWwzT3c9PQorIkBiYWJlbC9oZWxwZXItdmFsaWRhdG9yLWlkZW50aWZp ZXJAXjcuMTUuNyI6CisgIHZlcnNpb24gIjcuMTUuNyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci12YWxpZGF0b3ItaWRlbnRpZmllci8tL2hl bHBlci12YWxpZGF0b3ItaWRlbnRpZmllci03LjE1LjcudGd6IzIyMGRmOTkzYmZlOTA0YTRhNmIw MmFiNGYzMzg1YTVlYmY2ZTIzODkiCisgIGludGVncml0eSBzaGE1MTItSzRKdkN0UXFhZDlPWTIr eVRVOHcrRTgyeXdrL2ZlK0VMTmx0MUc4ejNiVkdsWmZuL2hPY1FRc1VoR2hXL04rdGIzZnhLODAw d0x0S09FL2FNMG03Mnc9PQogCi0iQGJhYmVsL2hlbHBlci12YWxpZGF0b3Itb3B0aW9uQF43LjE2 LjciOgorIkBiYWJlbC9oZWxwZXItdmFsaWRhdG9yLW9wdGlvbkBeNy4xMi4xNyIsICJAYmFiZWwv aGVscGVyLXZhbGlkYXRvci1vcHRpb25AXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci12YWxp ZGF0b3Itb3B0aW9uLy0vaGVscGVyLXZhbGlkYXRvci1vcHRpb24tNy4xNi43LnRneiNiMjAzY2U2 MmNlNWZlMTUzODk5YjYxN2MwODk1N2RlODYwZGU0ZDIzIgogICBpbnRlZ3JpdHkgc2hhNTEyLVRS dGVuT3VSVVZvOW9JUUdQQzVHOURnSzQ3NDNjZHh2dE93MHdlUU5wWlhhUzE2U0NCaTVNTmpaRjh2 YmEzRVRVUmpacFRiVm43VnZjZjJlQXdGb3pRPT0KIAotIkBiYWJlbC9oZWxwZXItd3JhcC1mdW5j dGlvbkBeNy4xMy4wIjoKLSAgdmVyc2lvbiAiNy4xMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvaGVscGVyLXdyYXAtZnVuY3Rpb24vLS9oZWxwZXIt d3JhcC1mdW5jdGlvbi03LjEzLjAudGd6I2JkYjVjNjZmZGE4NTI2ZWMyMzVhYjg5NGFkNTNhMTIz NWM3OWZjYzQiCi0gIGludGVncml0eSBzaGE1MTItMVVYOUY3SzNCUzQyZkk2cWQyQTRCakt6Z0dq VG9zY3laVGRwMURqa25ITENJdnBnbmU2OTE4aW8rYUw1TFhGY0VSLzhRV2l3cG9ZOTAycFZFcWdU WEE9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXItZnVuY3Rpb24tbmFtZSIg Il43LjEyLjEzIgotICAgICJAYmFiZWwvdGVtcGxhdGUiICJeNy4xMi4xMyIKLSAgICAiQGJhYmVs L3RyYXZlcnNlIiAiXjcuMTMuMCIKLSAgICAiQGJhYmVsL3R5cGVzIiAiXjcuMTMuMCIKKyJAYmFi ZWwvaGVscGVyLXZhbGlkYXRvci1vcHRpb25AXjcuMTQuNSI6CisgIHZlcnNpb24gIjcuMTQuNSIK KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hlbHBlci12 YWxpZGF0b3Itb3B0aW9uLy0vaGVscGVyLXZhbGlkYXRvci1vcHRpb24tNy4xNC41LnRneiM2ZTcy YTFmZmYxOGQ1ZGZjYjg3OGUxZTYyZjFhMDIxYzRiNzJkNWEzIgorICBpbnRlZ3JpdHkgc2hhNTEy LU9YOEQ1ZWVYNFh3Y3JvVlc0NU5Ndm9ZYUl1RkkrR1FwQTJhOEdpK1gvVS9jRFVJUnNWMzdxUWZG OTA1RjBodFRSQ1JFUUlCNEtxUGVhdmVSSlVsM093PT0KIAogIkBiYWJlbC9oZWxwZXItd3JhcC1m dW5jdGlvbkBeNy4xNi44IjoKICAgdmVyc2lvbiAiNy4xNi44IgpAQCAtNTQwLDYgKzUzNywxNSBA QAogICAgIGNoYWxrICJeMi4wLjAiCiAgICAganMtdG9rZW5zICJeNC4wLjAiCiAKKyJAYmFiZWwv aGlnaGxpZ2h0QF43LjE2LjAiOgorICB2ZXJzaW9uICI3LjE2LjAiCisgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9oaWdobGlnaHQvLS9oaWdobGlnaHQtNy4x Ni4wLnRneiM2Y2ViMzJiMmNhNGI4ZjVmMzYxZmI3ZmQ4MjFlM2ZkZGY0YTE3MjVhIgorICBpbnRl Z3JpdHkgc2hhNTEyLXQ4TUg0MWtVUXlsQnR1Mis0SVFBM2F0cWV2QTJsUmdxQTJ3eVZCL1lpV21z RFN1eWxaWnVYT1V5OXJpYzMwaGZ6YXVFRmZkc3VrL2VYVFJyR3JmZDBnPT0KKyAgZGVwZW5kZW5j aWVzOgorICAgICJAYmFiZWwvaGVscGVyLXZhbGlkYXRvci1pZGVudGlmaWVyIiAiXjcuMTUuNyIK KyAgICBjaGFsayAiXjIuMC4wIgorICAgIGpzLXRva2VucyAiXjQuMC4wIgorCiAiQGJhYmVsL2hp Z2hsaWdodEBeNy4xNi43IjoKICAgdmVyc2lvbiAiNy4xNi4xMCIKICAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL2hpZ2hsaWdodC8tL2hpZ2hsaWdodC03LjE2 LjEwLnRneiM3NDRmMmViODE1NzlkNmVlYTc1M2MyMjdiMGY1NzBhZDc4NWFiYTg4IgpAQCAtNTU0 LDYgKzU2MCwxMSBAQAogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9A YmFiZWwvcGFyc2VyLy0vcGFyc2VyLTcuMTQuNy50Z3ojNjA5OTcyMGM4ODM5Y2E4NjVhMjYzN2U2 Yzg1ODUyZWFkMGJkYjU5NSIKICAgaW50ZWdyaXR5IHNoYTUxMi1YNjdaNXkrVkJKdUhCL1Jqd0VD cDhrU2w1dVlpMEJ2UmJOZVdxa2FKQ1ZoK0xpVFBsMTlXQlVmRzYyN3BzU2dwOXJTZjZvanVYZ2hR TTNoYTZxSEhkQT09CiAKKyJAYmFiZWwvcGFyc2VyQF43LjE2LjAiOgorICB2ZXJzaW9uICI3LjE2 LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wYXJz ZXIvLS9wYXJzZXItNy4xNi4yLnRneiMzNzIzY2Q1YzhkODc3M2VlZjk2Y2U1N2VhMWQ5YjdmYWFj Y2QxMmFjIgorICBpbnRlZ3JpdHkgc2hhNTEyLVJVVnBUMEcyaDZyT1p3cUxEVHJLazdrc052N1lw QWlsVG5ZZTEvUStlRGp4RWNlUk1LVldiQ3NYN3Q4aDZDMXFDRmkvMVk4V1pqY0VQQkFGRzI3R1B3 PT0KKwogIkBiYWJlbC9wYXJzZXJAXjcuMTYuNyIsICJAYmFiZWwvcGFyc2VyQF43LjE3LjAiOgog ICB2ZXJzaW9uICI3LjE3LjAiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL0BiYWJlbC9wYXJzZXIvLS9wYXJzZXItNy4xNy4wLnRneiNmMGFjMzNlZGRiZTIxNGU0MTA1 MzYzYmIxN2MzMzQxYzVmZmNjNDNjIgpAQCAtNTc1LDE2ICs1ODYsNyBAQAogICAgICJAYmFiZWwv aGVscGVyLXNraXAtdHJhbnNwYXJlbnQtZXhwcmVzc2lvbi13cmFwcGVycyIgIl43LjE2LjAiCiAg ICAgIkBiYWJlbC9wbHVnaW4tcHJvcG9zYWwtb3B0aW9uYWwtY2hhaW5pbmciICJeNy4xNi43Igog Ci0iQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1hc3luYy1nZW5lcmF0b3ItZnVuY3Rpb25zQF43LjEz LjgiOgotICB2ZXJzaW9uICI3LjEzLjgiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tcHJvcG9zYWwtYXN5bmMtZ2VuZXJhdG9yLWZ1bmN0aW9u cy8tL3BsdWdpbi1wcm9wb3NhbC1hc3luYy1nZW5lcmF0b3ItZnVuY3Rpb25zLTcuMTMuOC50Z3oj ODdhYWNiNTc0YjNiYzRiNTYwM2Y2ZmU0MTQ1OGQ3MmE1YTJlYzRiMSIKLSAgaW50ZWdyaXR5IHNo YTUxMi1yUEJuaGorV2dvU21ncSs0Z1FVdFh4L3ZPY1UrVVl0ankxQUEvYWVENjFId2o0MTBmd1l5 cWZVY1JQM2xSOHVjZ2xpVkpML0c3c1hjTlVlY0M3NUlYQT09Ci0gIGRlcGVuZGVuY2llczoKLSAg ICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4xMy4wIgotICAgICJAYmFiZWwvaGVs cGVyLXJlbWFwLWFzeW5jLXRvLWdlbmVyYXRvciIgIl43LjEzLjAiCi0gICAgIkBiYWJlbC9wbHVn aW4tc3ludGF4LWFzeW5jLWdlbmVyYXRvcnMiICJeNy44LjQiCi0KLSJAYmFiZWwvcGx1Z2luLXBy b3Bvc2FsLWFzeW5jLWdlbmVyYXRvci1mdW5jdGlvbnNAXjcuMTYuOCI6CisiQGJhYmVsL3BsdWdp bi1wcm9wb3NhbC1hc3luYy1nZW5lcmF0b3ItZnVuY3Rpb25zQF43LjEzLjgiLCAiQGJhYmVsL3Bs dWdpbi1wcm9wb3NhbC1hc3luYy1nZW5lcmF0b3ItZnVuY3Rpb25zQF43LjE2LjgiOgogICB2ZXJz aW9uICI3LjE2LjgiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0Bi YWJlbC9wbHVnaW4tcHJvcG9zYWwtYXN5bmMtZ2VuZXJhdG9yLWZ1bmN0aW9ucy8tL3BsdWdpbi1w cm9wb3NhbC1hc3luYy1nZW5lcmF0b3ItZnVuY3Rpb25zLTcuMTYuOC50Z3ojM2JkZDFlYmJlNjIw ODA0ZWE5NDE2NzA2Y2Q2N2Q2MDc4NzUwNGJjOCIKICAgaW50ZWdyaXR5IHNoYTUxMi03MVlISXZN dWl1cVdKUWtlYldKdGRoUVRmZDRRNG1GNzZxMklYMzd1WlBrRzkrb2xCeHNYK3JIMXZraEZ0bzRV ZUpaOWRQWTJzK21EdmhEbTF1MkJHUT09CkBAIC01OTMsNyArNTk1LDcgQEAKICAgICAiQGJhYmVs L2hlbHBlci1yZW1hcC1hc3luYy10by1nZW5lcmF0b3IiICJeNy4xNi44IgogICAgICJAYmFiZWwv cGx1Z2luLXN5bnRheC1hc3luYy1nZW5lcmF0b3JzIiAiXjcuOC40IgogCi0iQGJhYmVsL3BsdWdp bi1wcm9wb3NhbC1jbGFzcy1wcm9wZXJ0aWVzQF43LjEwLjQiLCAiQGJhYmVsL3BsdWdpbi1wcm9w b3NhbC1jbGFzcy1wcm9wZXJ0aWVzQF43LjEzLjAiOgorIkBiYWJlbC9wbHVnaW4tcHJvcG9zYWwt Y2xhc3MtcHJvcGVydGllc0BeNy4xMC40IjoKICAgdmVyc2lvbiAiNy4xMy4wIgogICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXByb3Bvc2FsLWNs YXNzLXByb3BlcnRpZXMvLS9wbHVnaW4tcHJvcG9zYWwtY2xhc3MtcHJvcGVydGllcy03LjEzLjAu dGd6IzE0NjM3NjAwMGI5NGVmZDAwMWU1N2E0MGE4OGE1MjVhZmFhYjlmMzciCiAgIGludGVncml0 eSBzaGE1MTItS25URGpGTkMxZys0NWthMG15Wk52U0JGTGhOQ0xOK0dlR1lMREVBOE9xN01aNnlN Z2ZMb0lSaDg2R1JUMEZqdEpoWnc4SnlVc2tQOXV2ajVwSE05Wmc9PQpAQCAtNjAxLDcgKzYwMyw3 IEBACiAgICAgIkBiYWJlbC9oZWxwZXItY3JlYXRlLWNsYXNzLWZlYXR1cmVzLXBsdWdpbiIgIl43 LjEzLjAiCiAgICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTMuMCIKIAotIkBi YWJlbC9wbHVnaW4tcHJvcG9zYWwtY2xhc3MtcHJvcGVydGllc0BeNy4xNi43IjoKKyJAYmFiZWwv cGx1Z2luLXByb3Bvc2FsLWNsYXNzLXByb3BlcnRpZXNAXjcuMTMuMCIsICJAYmFiZWwvcGx1Z2lu LXByb3Bvc2FsLWNsYXNzLXByb3BlcnRpZXNAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIK ICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi1w cm9wb3NhbC1jbGFzcy1wcm9wZXJ0aWVzLy0vcGx1Z2luLXByb3Bvc2FsLWNsYXNzLXByb3BlcnRp ZXMtNy4xNi43LnRneiM5MjVjYWQ3YjNiMWEyZmNlYTdlNTllY2M4ZWI1OTU0Zjk2MWY5MWIwIgog ICBpbnRlZ3JpdHkgc2hhNTEyLUlvYlUwWG1lMzFld2pZT1NoU0lxZC9aR00vci9jdU96MnowTURi TnJoRjVGVytaVmdpMGYybHllb2o5S0ZQRE9BcXNZeG1MV1p0ZTFXT3dsdlk5YXd3PT0KQEAgLTYx OCwxNSArNjIwLDcgQEAKICAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4xNi43 IgogICAgICJAYmFiZWwvcGx1Z2luLXN5bnRheC1jbGFzcy1zdGF0aWMtYmxvY2siICJeNy4xNC41 IgogCi0iQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1keW5hbWljLWltcG9ydEBeNy4xMy44IjoKLSAg dmVyc2lvbiAiNy4xMy44IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9AYmFiZWwvcGx1Z2luLXByb3Bvc2FsLWR5bmFtaWMtaW1wb3J0Ly0vcGx1Z2luLXByb3Bvc2Fs LWR5bmFtaWMtaW1wb3J0LTcuMTMuOC50Z3ojODc2YTFmNjk2NmUxZGVjMzMyZThjOTQ1MWFmZGEz YmViY2RmMmUxZCIKLSAgaW50ZWdyaXR5IHNoYTUxMi1PTldLajBINit3SVJDa1ppOXpTYlp0RS9y NzN1T2hNVkhoMjU2eXMwVXpmTTdJM2Q0bitzcFpOV2pPbkp2Mmd6b3B1bVAyV3hpMTg2dkk4TjBZ Mkp5UT09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMi ICJeNy4xMy4wIgotICAgICJAYmFiZWwvcGx1Z2luLXN5bnRheC1keW5hbWljLWltcG9ydCIgIl43 LjguMyIKLQotIkBiYWJlbC9wbHVnaW4tcHJvcG9zYWwtZHluYW1pYy1pbXBvcnRAXjcuMTYuNyI6 CisiQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1keW5hbWljLWltcG9ydEBeNy4xMy44IiwgIkBiYWJl bC9wbHVnaW4tcHJvcG9zYWwtZHluYW1pYy1pbXBvcnRAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcu MTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3Bs dWdpbi1wcm9wb3NhbC1keW5hbWljLWltcG9ydC8tL3BsdWdpbi1wcm9wb3NhbC1keW5hbWljLWlt cG9ydC03LjE2LjcudGd6I2MxOWM4OTdlYWE0NmIyNzYzNGEwMGZlZTlmYjdkODI5MTU4NzA0YjIi CiAgIGludGVncml0eSBzaGE1MTItSThTVzlIbzMvOERSU2RtRGRIM2dPUmR5VXVZbmsxbTRjTXhV QWR1NW95NG4zT2ZOOGZsREVIK2Q2MGlHN2RVZmkwS2tZd1N2b2FsSHp6ZFJ6cFdIVGc9PQpAQCAt NjM0LDE1ICs2MjgsNyBAQAogICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE2 LjciCiAgICAgIkBiYWJlbC9wbHVnaW4tc3ludGF4LWR5bmFtaWMtaW1wb3J0IiAiXjcuOC4zIgog Ci0iQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1leHBvcnQtbmFtZXNwYWNlLWZyb21AXjcuMTIuMTMi OgotICB2ZXJzaW9uICI3LjE0LjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL0BiYWJlbC9wbHVnaW4tcHJvcG9zYWwtZXhwb3J0LW5hbWVzcGFjZS1mcm9tLy0vcGx1 Z2luLXByb3Bvc2FsLWV4cG9ydC1uYW1lc3BhY2UtZnJvbS03LjE0LjIudGd6IzYyNTQyZjk0YWE5 Y2U4ZjZkYmE3OWVlYzY5OGFmMjIxMTIyNTM3OTEiCi0gIGludGVncml0eSBzaGE1MTItc1J4VzN6 M1pwM3BGZkxBZ1ZFdnpURnV0VFhheDgzN29PYXRVSXZTRzlvNWdSajltS3dtM2JyMVNlNWY0UWFs VFFzOXg0QXpsQS9IckNXYlFJSEFTVVE9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9o ZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTMuMCIKLSAgICAiQGJhYmVsL3BsdWdpbi1zeW50YXgt ZXhwb3J0LW5hbWVzcGFjZS1mcm9tIiAiXjcuOC4zIgotCi0iQGJhYmVsL3BsdWdpbi1wcm9wb3Nh bC1leHBvcnQtbmFtZXNwYWNlLWZyb21AXjcuMTYuNyI6CisiQGJhYmVsL3BsdWdpbi1wcm9wb3Nh bC1leHBvcnQtbmFtZXNwYWNlLWZyb21AXjcuMTIuMTMiLCAiQGJhYmVsL3BsdWdpbi1wcm9wb3Nh bC1leHBvcnQtbmFtZXNwYWNlLWZyb21AXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi1wcm9w b3NhbC1leHBvcnQtbmFtZXNwYWNlLWZyb20vLS9wbHVnaW4tcHJvcG9zYWwtZXhwb3J0LW5hbWVz cGFjZS1mcm9tLTcuMTYuNy50Z3ojMDlkZTA5ZGYxODQ0NWE1Nzg2YTMwNTY4MTQyM2FlNjM1MDdh NjE2MyIKICAgaW50ZWdyaXR5IHNoYTUxMi1aeGR0cURYTFJHQkw2NG9jWmNzN292dDcxTDNqaEMx UkdTeVI5OTZzdnJDaTNQWXFITmtiM1N3UEpDczhSSXpEODZzK1dQcHQyUzczK0VIQ0dPK05VQT09 CkBAIC02NTAsMTUgKzYzNiw3IEBACiAgICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAi XjcuMTYuNyIKICAgICAiQGJhYmVsL3BsdWdpbi1zeW50YXgtZXhwb3J0LW5hbWVzcGFjZS1mcm9t IiAiXjcuOC4zIgogCi0iQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1qc29uLXN0cmluZ3NAXjcuMTMu OCI6Ci0gIHZlcnNpb24gIjcuMTMuOCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1qc29uLXN0cmluZ3MvLS9wbHVnaW4tcHJv cG9zYWwtanNvbi1zdHJpbmdzLTcuMTMuOC50Z3ojYmYxZmIzNjI1NDcwNzVhZmRhMzYzNGVkMzE1 NzFjNTkwMWFmZWY3YiIKLSAgaW50ZWdyaXR5IHNoYTUxMi13NHpPUEtVRlBYMW1ndlRtTC9mY0Vx eTM0aHJRMUNSY0d4ZHBoQmM2c25Ebm5xSjQ3RVpESXlvcDZJd1h6QUM4RzkxNmhzSXVYQjJaTUJD RXhDNWs3UT09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRp bHMiICJeNy4xMy4wIgotICAgICJAYmFiZWwvcGx1Z2luLXN5bnRheC1qc29uLXN0cmluZ3MiICJe Ny44LjMiCi0KLSJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLWpzb24tc3RyaW5nc0BeNy4xNi43IjoK KyJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLWpzb24tc3RyaW5nc0BeNy4xMy44IiwgIkBiYWJlbC9w bHVnaW4tcHJvcG9zYWwtanNvbi1zdHJpbmdzQF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2Ljci CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4t cHJvcG9zYWwtanNvbi1zdHJpbmdzLy0vcGx1Z2luLXByb3Bvc2FsLWpzb24tc3RyaW5ncy03LjE2 LjcudGd6Izk3MzJjYjFkMTdkOWEyNjI2YTA4YzViZTI1MTg2YzE5NWI2ZmE2ZTgiCiAgIGludGVn cml0eSBzaGE1MTItbE5aM0VFZ2dzR1k3OEphdmdiSHNLOXU1UDNwUWFXN2s0YXhsZ0ZMWWtNZDdV QnNpTmFoQ0lUU2hMak5Rc2NoUHlqdE82ZEFEckwyNDc1N0lkaEJyc1E9PQpAQCAtNjY2LDE1ICs2 NDQsNyBAQAogICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE2LjciCiAgICAg IkBiYWJlbC9wbHVnaW4tc3ludGF4LWpzb24tc3RyaW5ncyIgIl43LjguMyIKIAotIkBiYWJlbC9w bHVnaW4tcHJvcG9zYWwtbG9naWNhbC1hc3NpZ25tZW50LW9wZXJhdG9yc0BeNy4xMy44IjoKLSAg dmVyc2lvbiAiNy4xMy44IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9AYmFiZWwvcGx1Z2luLXByb3Bvc2FsLWxvZ2ljYWwtYXNzaWdubWVudC1vcGVyYXRvcnMvLS9w bHVnaW4tcHJvcG9zYWwtbG9naWNhbC1hc3NpZ25tZW50LW9wZXJhdG9ycy03LjEzLjgudGd6Izkz ZmE3OGQ2Mzg1N2M0MGNlM2M4YzMzMTUyMjBmZDAwYmZiYjRlMWEiCi0gIGludGVncml0eSBzaGE1 MTItYXVsNnpuWUI0TjRIR3dlSW1xS241OVN1OVJTOGxiVUlxeHRYVE9jQUd0TklEY3pvRUZ2K2wx RWhtWDhyVUJwM0cxak1qS0ptOG0walhWcDYzWnBTNEE9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAg IkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTMuMCIKLSAgICAiQGJhYmVsL3BsdWdp bi1zeW50YXgtbG9naWNhbC1hc3NpZ25tZW50LW9wZXJhdG9ycyIgIl43LjEwLjQiCi0KLSJAYmFi ZWwvcGx1Z2luLXByb3Bvc2FsLWxvZ2ljYWwtYXNzaWdubWVudC1vcGVyYXRvcnNAXjcuMTYuNyI6 CisiQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1sb2dpY2FsLWFzc2lnbm1lbnQtb3BlcmF0b3JzQF43 LjEzLjgiLCAiQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1sb2dpY2FsLWFzc2lnbm1lbnQtb3BlcmF0 b3JzQF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2LjciCiAgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tcHJvcG9zYWwtbG9naWNhbC1hc3NpZ25t ZW50LW9wZXJhdG9ycy8tL3BsdWdpbi1wcm9wb3NhbC1sb2dpY2FsLWFzc2lnbm1lbnQtb3BlcmF0 b3JzLTcuMTYuNy50Z3ojYmUyM2MwYmE3NGRlZWMxOTIyZTYzOTgzMjkwNGJlMGJlYTczY2RlYSIK ICAgaW50ZWdyaXR5IHNoYTUxMi1LM1h6eVpKR1FDcjAwK0V0WXRyRGptd1g3bzdQTEs2VTliaTFu Q3drUWlvUkZWVXY2ZEpveGJRanRXVnRQK2JDUHk4MmJPTkJLRzhOUHlRNCtpNnlqZz09CkBAIC02 ODIsMTUgKzY1Miw3IEBACiAgICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTYu NyIKICAgICAiQGJhYmVsL3BsdWdpbi1zeW50YXgtbG9naWNhbC1hc3NpZ25tZW50LW9wZXJhdG9y cyIgIl43LjEwLjQiCiAKLSJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLW51bGxpc2gtY29hbGVzY2lu Zy1vcGVyYXRvckBeNy4xMy44IjoKLSAgdmVyc2lvbiAiNy4xMy44IgotICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXByb3Bvc2FsLW51bGxpc2gt Y29hbGVzY2luZy1vcGVyYXRvci8tL3BsdWdpbi1wcm9wb3NhbC1udWxsaXNoLWNvYWxlc2Npbmct b3BlcmF0b3ItNy4xMy44LnRneiMzNzMwYTMxZGFmZDNjMTBkOGNjZDEwNjQ4ZWQ4MGEyYWM1NDcy ZWYzIgotICBpbnRlZ3JpdHkgc2hhNTEyLWllUGxEUEJuLy9VaHhFeHlTOUt5ZVlVN1JNOVdTY0FH K0QzSGhubzBQTEplYkFFcERaTW9jYkRlNjRlcXluaE5Bbnd6L3Zab0wvcS9RQjJUMU9IMzlBPT0K LSAgZGVwZW5kZW5jaWVzOgotICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjEz LjAiCi0gICAgIkBiYWJlbC9wbHVnaW4tc3ludGF4LW51bGxpc2gtY29hbGVzY2luZy1vcGVyYXRv ciIgIl43LjguMyIKLQotIkBiYWJlbC9wbHVnaW4tcHJvcG9zYWwtbnVsbGlzaC1jb2FsZXNjaW5n LW9wZXJhdG9yQF43LjE2LjciOgorIkBiYWJlbC9wbHVnaW4tcHJvcG9zYWwtbnVsbGlzaC1jb2Fs ZXNjaW5nLW9wZXJhdG9yQF43LjEzLjgiLCAiQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1udWxsaXNo LWNvYWxlc2Npbmctb3BlcmF0b3JAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi1wcm9wb3Nh bC1udWxsaXNoLWNvYWxlc2Npbmctb3BlcmF0b3IvLS9wbHVnaW4tcHJvcG9zYWwtbnVsbGlzaC1j b2FsZXNjaW5nLW9wZXJhdG9yLTcuMTYuNy50Z3ojMTQxZmMyMGI2ODU3ZTU5NDU5ZDQzMGM4NTBh MDAxMWUzNjU2MWQ5OSIKICAgaW50ZWdyaXR5IHNoYTUxMi1hVU9yWVUzRVZ0amY2MmpRckNqNjNw WVo3azZ2bnMyaC9EUXZIUFdHbXNKUll6V1haNi9Bc2ZncGlSeTZYaXVJREFEaEp6UDJROU13U01L YXVCUStVUT09CkBAIC02OTgsMTUgKzY2MCw3IEBACiAgICAgIkBiYWJlbC9oZWxwZXItcGx1Z2lu LXV0aWxzIiAiXjcuMTYuNyIKICAgICAiQGJhYmVsL3BsdWdpbi1zeW50YXgtbnVsbGlzaC1jb2Fs ZXNjaW5nLW9wZXJhdG9yIiAiXjcuOC4zIgogCi0iQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1udW1l cmljLXNlcGFyYXRvckBeNy4xMi4xMyI6Ci0gIHZlcnNpb24gIjcuMTQuMiIKLSAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1udW1l cmljLXNlcGFyYXRvci8tL3BsdWdpbi1wcm9wb3NhbC1udW1lcmljLXNlcGFyYXRvci03LjE0LjIu dGd6IzgyYjRjYzA2NTcxMTQzZmFmNTA2MjYxMDRiMzM1ZGQ3MWJhYTRmOWUiCi0gIGludGVncml0 eSBzaGE1MTItRGNUUVk5c3l4dTlCcFUzVW85NGZqQ0IzTE45L2hnUFM4b1VMN0tyU1czYkEyZVBy S1paUEpjYzV5MGhvSkFNOWRmdDNwR2ZFcnRFVXZ4WFFjZkx4VWc9PQotICBkZXBlbmRlbmNpZXM6 Ci0gICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTMuMCIKLSAgICAiQGJhYmVs L3BsdWdpbi1zeW50YXgtbnVtZXJpYy1zZXBhcmF0b3IiICJeNy4xMC40IgotCi0iQGJhYmVsL3Bs dWdpbi1wcm9wb3NhbC1udW1lcmljLXNlcGFyYXRvckBeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2lu LXByb3Bvc2FsLW51bWVyaWMtc2VwYXJhdG9yQF43LjEyLjEzIiwgIkBiYWJlbC9wbHVnaW4tcHJv cG9zYWwtbnVtZXJpYy1zZXBhcmF0b3JAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi1wcm9w b3NhbC1udW1lcmljLXNlcGFyYXRvci8tL3BsdWdpbi1wcm9wb3NhbC1udW1lcmljLXNlcGFyYXRv ci03LjE2LjcudGd6I2Q2YjY5ZjRhZjYzZmIzOGI2Y2EyNTU4NDQyYTdmYjE5MTIzNmViYTkiCiAg IGludGVncml0eSBzaGE1MTItdlFnUE1rbk9JZ2l1VnFib2tUb3lYYmtZL09tbWpBenIvMGxoU0li Ry9LbW56WFBHd1cvQWRoZEtwaStPNFgvVmtXaVdqbmtLT0JpcUpyVGFDOThWS3c9PQpAQCAtNzE0 LDcgKzY2OCw3IEBACiAgICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTYuNyIK ICAgICAiQGJhYmVsL3BsdWdpbi1zeW50YXgtbnVtZXJpYy1zZXBhcmF0b3IiICJeNy4xMC40Igog Ci0iQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1vYmplY3QtcmVzdC1zcHJlYWRAXjcuMTAuMSIsICJA YmFiZWwvcGx1Z2luLXByb3Bvc2FsLW9iamVjdC1yZXN0LXNwcmVhZEBeNy4xMy44IjoKKyJAYmFi ZWwvcGx1Z2luLXByb3Bvc2FsLW9iamVjdC1yZXN0LXNwcmVhZEBeNy4xMC4xIjoKICAgdmVyc2lv biAiNy4xNC43IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFi ZWwvcGx1Z2luLXByb3Bvc2FsLW9iamVjdC1yZXN0LXNwcmVhZC8tL3BsdWdpbi1wcm9wb3NhbC1v YmplY3QtcmVzdC1zcHJlYWQtNy4xNC43LnRneiM1OTIwYTJiM2RmN2Y3OTAxZGYwMjA1OTc0YzA2 NDFiMTNmZDlkMzYzIgogICBpbnRlZ3JpdHkgc2hhNTEyLTA4MmhzWnorc1ZhYmZtRFdvMU9jdDF1 MUFnYktiVUF5VmdtWDRvdEljN2Jkc1JnSEJYd1R3YjNEcERtRDRFeXl4NkROaXV6NVVBQVRUNjU1 aytrTDVnPT0KQEAgLTcyNSw3ICs2NzksNyBAQAogICAgICJAYmFiZWwvcGx1Z2luLXN5bnRheC1v YmplY3QtcmVzdC1zcHJlYWQiICJeNy44LjMiCiAgICAgIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3Jt LXBhcmFtZXRlcnMiICJeNy4xNC41IgogCi0iQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1vYmplY3Qt cmVzdC1zcHJlYWRAXjcuMTYuNyI6CisiQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1vYmplY3QtcmVz dC1zcHJlYWRAXjcuMTMuOCIsICJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLW9iamVjdC1yZXN0LXNw cmVhZEBeNy4xNi43IjoKICAgdmVyc2lvbiAiNy4xNi43IgogICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXByb3Bvc2FsLW9iamVjdC1yZXN0LXNw cmVhZC8tL3BsdWdpbi1wcm9wb3NhbC1vYmplY3QtcmVzdC1zcHJlYWQtNy4xNi43LnRneiM5NDU5 M2VmMWRkZjM3MDIxYTI1YmRjYjU3NTRjNGE4ZDUzNGIwMWQ4IgogICBpbnRlZ3JpdHkgc2hhNTEy LTNPMFk0K2R3OTRIQTg2cVNnOUlIZnlQa3RnUjdxM2dwTlZBZWlLUWQrOGpCS0ZhVTVOUVMxWWF0 Z280d1krVUZOdUxqdnhjU216Y3NIcXJoZ1R5QlVBPT0KQEAgLTczNiwxNSArNjkwLDcgQEAKICAg ICAiQGJhYmVsL3BsdWdpbi1zeW50YXgtb2JqZWN0LXJlc3Qtc3ByZWFkIiAiXjcuOC4zIgogICAg ICJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1wYXJhbWV0ZXJzIiAiXjcuMTYuNyIKIAotIkBiYWJl bC9wbHVnaW4tcHJvcG9zYWwtb3B0aW9uYWwtY2F0Y2gtYmluZGluZ0BeNy4xMy44IjoKLSAgdmVy c2lvbiAiNy4xMy44IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9A YmFiZWwvcGx1Z2luLXByb3Bvc2FsLW9wdGlvbmFsLWNhdGNoLWJpbmRpbmcvLS9wbHVnaW4tcHJv cG9zYWwtb3B0aW9uYWwtY2F0Y2gtYmluZGluZy03LjEzLjgudGd6IzNhZDZiZDU5MDE1MDZlYTk5 NmZjMzFiZGNmM2NjZmEyYmVkNzExMDciCi0gIGludGVncml0eSBzaGE1MTItMHdTLzREVUYxQ3VU bUdvK05pYUhmSGNWU2VTTGo1UzNlNlJpdlBUZy8yazN3T3Yzak8zNXRaNi9aV3NRaFFNdmRnSTdD d3BoalFhL2NjYXJMeW1IVkE9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXIt cGx1Z2luLXV0aWxzIiAiXjcuMTMuMCIKLSAgICAiQGJhYmVsL3BsdWdpbi1zeW50YXgtb3B0aW9u YWwtY2F0Y2gtYmluZGluZyIgIl43LjguMyIKLQotIkBiYWJlbC9wbHVnaW4tcHJvcG9zYWwtb3B0 aW9uYWwtY2F0Y2gtYmluZGluZ0BeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLW9w dGlvbmFsLWNhdGNoLWJpbmRpbmdAXjcuMTMuOCIsICJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLW9w dGlvbmFsLWNhdGNoLWJpbmRpbmdAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi1wcm9wb3Nh bC1vcHRpb25hbC1jYXRjaC1iaW5kaW5nLy0vcGx1Z2luLXByb3Bvc2FsLW9wdGlvbmFsLWNhdGNo LWJpbmRpbmctNy4xNi43LnRneiNjNjIzYTQzMDY3NGZmYzRhYjczMmZkMGEwYWU3NzIyYjY3Y2I3 NGNmIgogICBpbnRlZ3JpdHkgc2hhNTEyLWVNT0gvTDRPdldTWkFFMVZrSGJyMXZja0xHMVdVY0hH SlNMcXFRd2wyR2FVcUc2UWpkZHZyT2FUVU1OWWl2NzdINUlLUE1aOVU5UDdFYUh3dkFTaGZBPT0K QEAgLTc1MiwxNiArNjk4LDcgQEAKICAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJe Ny4xNi43IgogICAgICJAYmFiZWwvcGx1Z2luLXN5bnRheC1vcHRpb25hbC1jYXRjaC1iaW5kaW5n IiAiXjcuOC4zIgogCi0iQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1vcHRpb25hbC1jaGFpbmluZ0Be Ny4xMy44IjoKLSAgdmVyc2lvbiAiNy4xMy44IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXByb3Bvc2FsLW9wdGlvbmFsLWNoYWluaW5nLy0v cGx1Z2luLXByb3Bvc2FsLW9wdGlvbmFsLWNoYWluaW5nLTcuMTMuOC50Z3ojZTM5ZGY5M2VmZTdl N2U2MjE4NDFiYWJjMTk3OTgyZTE0MGU5MDc1NiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1ocGJCd2JU Z2Q3Q3oxUXJ5dndKWlJvMVUwazFxOHV5Qm1lWE9TUVVqZGcvQTJUQVNraFIvcno3QXlxWi9rUzhr YnBzTkE4MHJPWWJ4eVNCSkFxbWhoUT09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hl bHBlci1wbHVnaW4tdXRpbHMiICJeNy4xMy4wIgotICAgICJAYmFiZWwvaGVscGVyLXNraXAtdHJh bnNwYXJlbnQtZXhwcmVzc2lvbi13cmFwcGVycyIgIl43LjEyLjEiCi0gICAgIkBiYWJlbC9wbHVn aW4tc3ludGF4LW9wdGlvbmFsLWNoYWluaW5nIiAiXjcuOC4zIgotCi0iQGJhYmVsL3BsdWdpbi1w cm9wb3NhbC1vcHRpb25hbC1jaGFpbmluZ0BeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2luLXByb3Bv c2FsLW9wdGlvbmFsLWNoYWluaW5nQF43LjEzLjgiLCAiQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1v cHRpb25hbC1jaGFpbmluZ0BeNy4xNi43IjoKICAgdmVyc2lvbiAiNy4xNi43IgogICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXByb3Bvc2FsLW9w dGlvbmFsLWNoYWluaW5nLy0vcGx1Z2luLXByb3Bvc2FsLW9wdGlvbmFsLWNoYWluaW5nLTcuMTYu Ny50Z3ojN2NkNjI5NTY0NzI0ODE2YzBlOGE5Njk1MzU1NTFmOTQzYzY0YzM5YSIKICAgaW50ZWdy aXR5IHNoYTUxMi1lQzN4eStaclVjQnRQN3grc3E2MlEvSFlkNjc0cFBUYi83N1haTWI1d2JEUEdX SWRVYlNyNEFncjA1Mit6YVVQU2IrZ0dSbmp4WGZLRnZ4NWlNSitEQT09CkBAIC03NzAsMTUgKzcw Nyw3IEBACiAgICAgIkBiYWJlbC9oZWxwZXItc2tpcC10cmFuc3BhcmVudC1leHByZXNzaW9uLXdy YXBwZXJzIiAiXjcuMTYuMCIKICAgICAiQGJhYmVsL3BsdWdpbi1zeW50YXgtb3B0aW9uYWwtY2hh aW5pbmciICJeNy44LjMiCiAKLSJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLXByaXZhdGUtbWV0aG9k c0BeNy4xMy4wIjoKLSAgdmVyc2lvbiAiNy4xMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXByb3Bvc2FsLXByaXZhdGUtbWV0aG9kcy8t L3BsdWdpbi1wcm9wb3NhbC1wcml2YXRlLW1ldGhvZHMtNy4xMy4wLnRneiMwNGJkNGM2ZDQwZjZl NmJiZmEyZjU3ZTJkODA5NGJhZDkwMGVmNzg3IgotICBpbnRlZ3JpdHkgc2hhNTEyLU1YeXlLUWQ5 aW5oeDFrRFlQa0ZSVk9CWFEyMEVTOFB0bzNUN1VaOTJ4ajJtWTBFVkQ4b0FWemV5WXVWZnkvbXhB ZFRTSWF5T3ZnK2FWemNIVjJibjZRPT0KLSAgZGVwZW5kZW5jaWVzOgotICAgICJAYmFiZWwvaGVs cGVyLWNyZWF0ZS1jbGFzcy1mZWF0dXJlcy1wbHVnaW4iICJeNy4xMy4wIgotICAgICJAYmFiZWwv aGVscGVyLXBsdWdpbi11dGlscyIgIl43LjEzLjAiCi0KLSJAYmFiZWwvcGx1Z2luLXByb3Bvc2Fs LXByaXZhdGUtbWV0aG9kc0BeNy4xNi4xMSI6CisiQGJhYmVsL3BsdWdpbi1wcm9wb3NhbC1wcml2 YXRlLW1ldGhvZHNAXjcuMTMuMCIsICJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLXByaXZhdGUtbWV0 aG9kc0BeNy4xNi4xMSI6CiAgIHZlcnNpb24gIjcuMTYuMTEiCiAgIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tcHJvcG9zYWwtcHJpdmF0ZS1tZXRo b2RzLy0vcGx1Z2luLXByb3Bvc2FsLXByaXZhdGUtbWV0aG9kcy03LjE2LjExLnRneiNlOGRmMTA4 Mjg4NTU1ZmYyNTlmNDUyN2RiZTg0ODEzYWFjM2ExYzUwIgogICBpbnRlZ3JpdHkgc2hhNTEyLUYv MnVBa1BsWERyOCtCSHBadm8xOXczaExGS2dlK2s3NVhVcHJFNmphcUt4akdrU1ljSys0YytidXA1 UGRXLzdXL1JwandxbDdGVFZFRFcrZlJBUXN3PT0KQEAgLTc5NiwxNSArNzI1LDcgQEAKICAgICAi QGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4xNi43IgogICAgICJAYmFiZWwvcGx1Z2lu LXN5bnRheC1wcml2YXRlLXByb3BlcnR5LWluLW9iamVjdCIgIl43LjE0LjUiCiAKLSJAYmFiZWwv cGx1Z2luLXByb3Bvc2FsLXVuaWNvZGUtcHJvcGVydHktcmVnZXhAXjcuMTIuMTMiLCAiQGJhYmVs L3BsdWdpbi1wcm9wb3NhbC11bmljb2RlLXByb3BlcnR5LXJlZ2V4QF43LjQuNCI6Ci0gIHZlcnNp b24gIjcuMTIuMTMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0Bi YWJlbC9wbHVnaW4tcHJvcG9zYWwtdW5pY29kZS1wcm9wZXJ0eS1yZWdleC8tL3BsdWdpbi1wcm9w b3NhbC11bmljb2RlLXByb3BlcnR5LXJlZ2V4LTcuMTIuMTMudGd6I2JlYmRlNTEzMzliZTgyOWMx N2FhYWFjZWQxODY0MWRlYjYyYjM5YmEiCi0gIGludGVncml0eSBzaGE1MTItWHlKbVppZE5mb2ZF a3FGVjVWQy9iTGFiR21PNVF6ZW5QTy9ZT2ZHdUViZ1UrMnNTd01taW8zWUxiNFd0QmdjbW1kd1pI eVZ5djhvbjc3SVVqUTVHdmc9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXIt Y3JlYXRlLXJlZ2V4cC1mZWF0dXJlcy1wbHVnaW4iICJeNy4xMi4xMyIKLSAgICAiQGJhYmVsL2hl bHBlci1wbHVnaW4tdXRpbHMiICJeNy4xMi4xMyIKLQotIkBiYWJlbC9wbHVnaW4tcHJvcG9zYWwt dW5pY29kZS1wcm9wZXJ0eS1yZWdleEBeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2luLXByb3Bvc2Fs LXVuaWNvZGUtcHJvcGVydHktcmVnZXhAXjcuMTIuMTMiLCAiQGJhYmVsL3BsdWdpbi1wcm9wb3Nh bC11bmljb2RlLXByb3BlcnR5LXJlZ2V4QF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2LjciCiAg IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tcHJv cG9zYWwtdW5pY29kZS1wcm9wZXJ0eS1yZWdleC8tL3BsdWdpbi1wcm9wb3NhbC11bmljb2RlLXBy b3BlcnR5LXJlZ2V4LTcuMTYuNy50Z3ojNjM1ZDE4ZWIxMGM2MjE0MjEwZmZjNWZmNDkzMjU1MmRl MDgxODhhMiIKICAgaW50ZWdyaXR5IHNoYTUxMi1RUkswWUkvNDBWTGhOVkdJalJOQUFRa0VId3Mw Y3N3U2RGRmpwRnl0OTQzWW1KSVUxZGE5dVc2M0l1Nk5GVjZDeFRaVzVlVERDcndaVXN0QldncC9S Zz09CkBAIC04MTIsNiArNzMzLDE0IEBACiAgICAgIkBiYWJlbC9oZWxwZXItY3JlYXRlLXJlZ2V4 cC1mZWF0dXJlcy1wbHVnaW4iICJeNy4xNi43IgogICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11 dGlscyIgIl43LjE2LjciCiAKKyJAYmFiZWwvcGx1Z2luLXByb3Bvc2FsLXVuaWNvZGUtcHJvcGVy dHktcmVnZXhAXjcuNC40IjoKKyAgdmVyc2lvbiAiNy4xNi4wIgorICByZXNvbHZlZCAiaHR0cHM6 Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXByb3Bvc2FsLXVuaWNvZGUtcHJv cGVydHktcmVnZXgvLS9wbHVnaW4tcHJvcG9zYWwtdW5pY29kZS1wcm9wZXJ0eS1yZWdleC03LjE2 LjAudGd6Izg5MDQ4MmRmYzVlYTM3OGU0MmUxOWE3MWU3MDk3MjhjYWJmMTg2MTIiCisgIGludGVn cml0eSBzaGE1MTItdGk3SWRNNTROWHYyOWNBNCtiTk5LRU1TNGpMTUNiSmdsK0RyditGZ1l5MGVy SkxBeE5BSVhjTmpOanJSWkVjV3EweEpIc05Wd1FlenNrTUZwRjhOOWc9PQorICBkZXBlbmRlbmNp ZXM6CisgICAgIkBiYWJlbC9oZWxwZXItY3JlYXRlLXJlZ2V4cC1mZWF0dXJlcy1wbHVnaW4iICJe Ny4xNi4wIgorICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE0LjUiCisKICJA YmFiZWwvcGx1Z2luLXN5bnRheC1hc3luYy1nZW5lcmF0b3JzQF43LjguNCI6CiAgIHZlcnNpb24g IjcuOC40IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwv cGx1Z2luLXN5bnRheC1hc3luYy1nZW5lcmF0b3JzLy0vcGx1Z2luLXN5bnRheC1hc3luYy1nZW5l cmF0b3JzLTcuOC40LnRneiNhOTgzZmIxYWViMmVjM2Y2ZWQwNDJhMjEwZjY0MGU5MGU3ODZmZTBk IgpAQCAtODU0LDEzICs3ODMsNiBAQAogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC9oZWxw ZXItcGx1Z2luLXV0aWxzIiAiXjcuOC4wIgogCi0iQGJhYmVsL3BsdWdpbi1zeW50YXgtanN4QF43 LjEyLjEzIjoKLSAgdmVyc2lvbiAiNy4xMi4xMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi1zeW50YXgtanN4Ly0vcGx1Z2luLXN5bnRheC1q c3gtNy4xMi4xMy50Z3ojMDQ0ZmI4MWViYWQ2Njk4ZmU2MmM0Nzg4NzU1NzViY2JiOWI3MGYxNSIK LSAgaW50ZWdyaXR5IHNoYTUxMi1kNEhNMjNRMUs3b3EvU0xObUc2bVJ0ODVsMmNzbVEwY0hSYXhS WGpLVzBZRmRFWHFsWjVrekZRS0g1VWMzckRKRUNndSt5Q1JnUGtHMDRNbTk4Ui8xZz09Ci0gIGRl cGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4xMi4xMyIK LQogIkBiYWJlbC9wbHVnaW4tc3ludGF4LWpzeEBeNy4xNi4wIiwgIkBiYWJlbC9wbHVnaW4tc3lu dGF4LWpzeEBeNy4xNi43IjoKICAgdmVyc2lvbiAiNy4xNi43IgogICByZXNvbHZlZCAiaHR0cHM6 Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXN5bnRheC1qc3gvLS9wbHVnaW4t c3ludGF4LWpzeC03LjE2LjcudGd6IzUwYjY1NzFkMTNmNzY0MjY2YTExM2Q3N2M4MmI0YTY1MDhi YmU2NjUiCkBAIC05MTcsNTEgKzgzOSwyOCBAQAogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJl bC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTQuNSIKIAotIkBiYWJlbC9wbHVnaW4tc3ludGF4 LXRvcC1sZXZlbC1hd2FpdEBeNy4xMi4xMyI6Ci0gIHZlcnNpb24gIjcuMTIuMTMiCi0gIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tc3ludGF4LXRv cC1sZXZlbC1hd2FpdC8tL3BsdWdpbi1zeW50YXgtdG9wLWxldmVsLWF3YWl0LTcuMTIuMTMudGd6 I2M1ZjBmYTZlMjQ5ZjViNzM5NzI3ZjkyMzU0MGNmN2E4MDYxMzAxNzgiCi0gIGludGVncml0eSBz aGE1MTItQTgxRjlwRHd5Uzd5TS8vS3diQ1NEcXkzVWo0Tk1JdXJ0cGx4cGhXeG9ZdE5Qb3Y3Y0pz RGtBRk5OeVZsSVozandHeWNWc3VyWitMdE9BOGdaMzc2aVE9PQotICBkZXBlbmRlbmNpZXM6Ci0g ICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTIuMTMiCi0KLSJAYmFiZWwvcGx1 Z2luLXN5bnRheC10b3AtbGV2ZWwtYXdhaXRAXjcuMTQuNSI6CisiQGJhYmVsL3BsdWdpbi1zeW50 YXgtdG9wLWxldmVsLWF3YWl0QF43LjEyLjEzIiwgIkBiYWJlbC9wbHVnaW4tc3ludGF4LXRvcC1s ZXZlbC1hd2FpdEBeNy4xNC41IjoKICAgdmVyc2lvbiAiNy4xNC41IgogICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXN5bnRheC10b3AtbGV2ZWwt YXdhaXQvLS9wbHVnaW4tc3ludGF4LXRvcC1sZXZlbC1hd2FpdC03LjE0LjUudGd6I2MxY2ZkYWRj MzVhNjQ2MjQwMDAxZjA2MTM4MjQ3Yjc0MWMzNGQ5NGMiCiAgIGludGVncml0eSBzaGE1MTItaHgr K3VwTHY1VTFyZ1lmd2UxeEJRVWhSbVU0MU5FdnBVdnJwOGprclNDZHZHU25NNS9xZFJNdHlsSjZQ RzVPRmtCYUhrYlRBS1RuZDMvWXlFU1JIRnc9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJl bC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTQuNSIKIAotIkBiYWJlbC9wbHVnaW4tc3ludGF4 LXR5cGVzY3JpcHRAXjcuMTQuNSI6Ci0gIHZlcnNpb24gIjcuMTQuNSIKLSAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi1zeW50YXgtdHlwZXNjcmlw dC8tL3BsdWdpbi1zeW50YXgtdHlwZXNjcmlwdC03LjE0LjUudGd6I2I4MmM2Y2U0NzFiMTY1YjVj ZTQyMGNmOTI5MTRkNmZiNDYyMjU3MTYiCi0gIGludGVncml0eSBzaGE1MTItdTZPWHpEYUlYakVz dEJSUm9CQ1EvdUtRS2xidWFlRTVpbjBSdldkQTRwTjZBaHF4VEl3VXNuSFBVMUNGWkEvYW1ZT2JN c3VXaFlmUmwzQ2g5MEhEMFE9PQorIkBiYWJlbC9wbHVnaW4tc3ludGF4LXR5cGVzY3JpcHRAXjcu MTYuMCI6CisgIHZlcnNpb24gIjcuMTYuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi1zeW50YXgtdHlwZXNjcmlwdC8tL3BsdWdpbi1zeW50 YXgtdHlwZXNjcmlwdC03LjE2LjAudGd6IzJmZWViMTNkOTMzNGNjNTgyZWE5MTExZDM1MDZmNzcz MTc0MTc5YmIiCisgIGludGVncml0eSBzaGE1MTItWHY2bUVYcVZkYXFDQmZKRnllYWIwZkgyRG5V b01zRG1oYW14c1NpNGo4bkxkNFZ0dzIxM1dNSnI1NXh4cWlwQy9ZVld5UFkzSzBibEpuY1BZamkr ZFE9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAi XjcuMTQuNSIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWFycm93LWZ1bmN0aW9uc0BeNy4x My4wIjoKLSAgdmVyc2lvbiAiNy4xMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1hcnJvdy1mdW5jdGlvbnMvLS9wbHVn aW4tdHJhbnNmb3JtLWFycm93LWZ1bmN0aW9ucy03LjEzLjAudGd6IzEwYTU5YmViYWQ1MmQ2Mzdh MDI3YWZhNjkyZThkNWNlZmY1ZTNkYWUiCi0gIGludGVncml0eSBzaGE1MTItOTZsZ0phZ29iZVZt YXpYRmFEcmJtQ0xReEJ5c0t1N1U2RG8zbUxzeDI3Z2Y1RGs4NWV6eXNyczJCWlVwWEQ3MDNVL1N1 MXhUQkR4eGFyMm9hNGpBR2c9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXIt cGx1Z2luLXV0aWxzIiAiXjcuMTMuMCIKLQotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWFycm93 LWZ1bmN0aW9uc0BeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1hcnJvdy1mdW5j dGlvbnNAXjcuMTMuMCIsICJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1hcnJvdy1mdW5jdGlvbnNA XjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tYXJyb3ctZnVuY3Rpb25zLy0v cGx1Z2luLXRyYW5zZm9ybS1hcnJvdy1mdW5jdGlvbnMtNy4xNi43LnRneiM0NDEyNWU2NTNkOTRi OThkYjc2MzY5ZGU5YzM5NmRjMTRiZWY0MTU0IgogICBpbnRlZ3JpdHkgc2hhNTEyLTlmZmtGRk1i dnpUdnYrN2RUcC82Nnh2WkFXQVN1UEQ1VGw5TEszWjl2aE9tQU5vNmo5NHJpays1WU1CdDRDd0hW TVdMV3BNc3JpSWMyenNhM1dXM3hRPT0KICAgZGVwZW5kZW5jaWVzOgogICAgICJAYmFiZWwvaGVs cGVyLXBsdWdpbi11dGlscyIgIl43LjE2LjciCiAKLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1h c3luYy10by1nZW5lcmF0b3JAXjcuMTMuMCI6Ci0gIHZlcnNpb24gIjcuMTMuMCIKLSAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0t YXN5bmMtdG8tZ2VuZXJhdG9yLy0vcGx1Z2luLXRyYW5zZm9ybS1hc3luYy10by1nZW5lcmF0b3It Ny4xMy4wLnRneiM4ZTExMmJmNjc3MWI4MmJmMWU5NzRlNWUyNjgwNmM1Yzk5YWE1MTZmIgotICBp bnRlZ3JpdHkgc2hhNTEyLTNqNkUwMDREeDBLM2VHbWh4Vkp4d3dJODlDVEpyY2U3bGczVXJ0RnVE QVZRLzIrU0ovaC9hU0ZPZUU2L24wV0IxR3NPZmZzSnA2TW5QUU5ROG5td2hnPT0KLSAgZGVwZW5k ZW5jaWVzOgotICAgICJAYmFiZWwvaGVscGVyLW1vZHVsZS1pbXBvcnRzIiAiXjcuMTIuMTMiCi0g ICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTMuMCIKLSAgICAiQGJhYmVsL2hl bHBlci1yZW1hcC1hc3luYy10by1nZW5lcmF0b3IiICJeNy4xMy4wIgotCi0iQGJhYmVsL3BsdWdp bi10cmFuc2Zvcm0tYXN5bmMtdG8tZ2VuZXJhdG9yQF43LjE2LjgiOgorIkBiYWJlbC9wbHVnaW4t dHJhbnNmb3JtLWFzeW5jLXRvLWdlbmVyYXRvckBeNy4xMy4wIiwgIkBiYWJlbC9wbHVnaW4tdHJh bnNmb3JtLWFzeW5jLXRvLWdlbmVyYXRvckBeNy4xNi44IjoKICAgdmVyc2lvbiAiNy4xNi44Igog ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRy YW5zZm9ybS1hc3luYy10by1nZW5lcmF0b3IvLS9wbHVnaW4tdHJhbnNmb3JtLWFzeW5jLXRvLWdl bmVyYXRvci03LjE2LjgudGd6I2I4M2RmZjRiOTcwY2Y0MWYxYjgxOWY4YjQ5Y2MwY2ZiYWE1M2E4 MDgiCiAgIGludGVncml0eSBzaGE1MTItTXRtVW1USlFIQ255SlZyU2NOek5sb2ZRSjNkTEZ1b2JZ bjNtd09US0huU0NNdGJOc3F2RjcxR1FtSmZGamRyWFNzQUE3aXlzRm1ZV3c0YlhaMjBoT2c9PQpA QCAtOTcwLDQ4ICs4NjksMjEgQEAKICAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJe Ny4xNi43IgogICAgICJAYmFiZWwvaGVscGVyLXJlbWFwLWFzeW5jLXRvLWdlbmVyYXRvciIgIl43 LjE2LjgiCiAKLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1ibG9jay1zY29wZWQtZnVuY3Rpb25z QF43LjEyLjEzIjoKLSAgdmVyc2lvbiAiNy4xMi4xMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tYmxvY2stc2NvcGVkLWZ1 bmN0aW9ucy8tL3BsdWdpbi10cmFuc2Zvcm0tYmxvY2stc2NvcGVkLWZ1bmN0aW9ucy03LjEyLjEz LnRneiNhOWJmMTgzNmYyYTM5YjRlYjZjZjA5OTY3NzM5ZGUyOWVhNGJmNGM0IgotICBpbnRlZ3Jp dHkgc2hhNTEyLXpOeUZxYmMza0kvZlZwcXdmcWtnNlJ2QmdGcEM0SjE4YUtLTW12N0tkUS8xR2dS RWFwU0pBeWtMTVZOd2ZSR08zQnRIajNZUVpsOGt4Q1hQY1ZNVmVnPT0KLSAgZGVwZW5kZW5jaWVz OgotICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjEyLjEzIgotCi0iQGJhYmVs L3BsdWdpbi10cmFuc2Zvcm0tYmxvY2stc2NvcGVkLWZ1bmN0aW9uc0BeNy4xNi43IjoKKyJAYmFi ZWwvcGx1Z2luLXRyYW5zZm9ybS1ibG9jay1zY29wZWQtZnVuY3Rpb25zQF43LjEyLjEzIiwgIkBi YWJlbC9wbHVnaW4tdHJhbnNmb3JtLWJsb2NrLXNjb3BlZC1mdW5jdGlvbnNAXjcuMTYuNyI6CiAg IHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tYmxvY2stc2NvcGVkLWZ1bmN0aW9ucy8tL3BsdWdp bi10cmFuc2Zvcm0tYmxvY2stc2NvcGVkLWZ1bmN0aW9ucy03LjE2LjcudGd6IzRkMGQ1N2Q5NjMy ZWY2MDYyY2RmMzU0YmI3MTcxMDJlZTA0MmE2MjAiCiAgIGludGVncml0eSBzaGE1MTItSlV1emx6 bUY0MFo5Y1h5eXRjYlpFWktja2dyUXpDaGJRSncvNVB1RUhZZXF6Q3N2ZWJEeDBLMGpXbklJVmNt bURPQVZjdENnbllzMHBNY3JZajJ6Smc9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC9o ZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTYuNyIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3Jt LWJsb2NrLXNjb3BpbmdAXjcuMTIuMTMiOgotICB2ZXJzaW9uICI3LjE0LjIiCi0gIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWJs b2NrLXNjb3BpbmcvLS9wbHVnaW4tdHJhbnNmb3JtLWJsb2NrLXNjb3BpbmctNy4xNC4yLnRneiM3 NjFjYjEyYWI1YTg4ZDY0MGFkNGFmNGFhODFmODIwZTZiNWZkZjVjIgotICBpbnRlZ3JpdHkgc2hh NTEyLW5lWlpjUDE5TnVnWlpxTndNVEgrS29Cang1V3l2RVNQU0lPUWI0SkhwZmQrelBmcWNINjVS TXU1eEpqdTUrNnEvWTJWellybGVRVHIrYjZNRVR5eXhnPT0KLSAgZGVwZW5kZW5jaWVzOgotICAg ICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjEzLjAiCi0KLSJAYmFiZWwvcGx1Z2lu LXRyYW5zZm9ybS1ibG9jay1zY29waW5nQF43LjE2LjciOgorIkBiYWJlbC9wbHVnaW4tdHJhbnNm b3JtLWJsb2NrLXNjb3BpbmdAXjcuMTIuMTMiLCAiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tYmxv Y2stc2NvcGluZ0BeNy4xNi43IjoKICAgdmVyc2lvbiAiNy4xNi43IgogICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1ibG9jay1z Y29waW5nLy0vcGx1Z2luLXRyYW5zZm9ybS1ibG9jay1zY29waW5nLTcuMTYuNy50Z3ojZjUwNjY0 YWI5OWRkZWFlZTViYzY4MWI4ZjNhNmVhOWQ3MmFiNGY4NyIKICAgaW50ZWdyaXR5IHNoYTUxMi1P YlpldjJueFZBWUE0Ymh5dXNFTGRvOWhiM0grQTU2YnhIM0ZaTWJFSW1aRmlFRFlWSFhRU0oxaFFL RmxEbmx0OEc5YkJyQ1o1WnBVUlpVclY0RzVxUT09CiAgIGRlcGVuZGVuY2llczoKICAgICAiQGJh YmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4xNi43IgogCi0iQGJhYmVsL3BsdWdpbi10cmFu c2Zvcm0tY2xhc3Nlc0BeNy4xMy4wIjoKLSAgdmVyc2lvbiAiNy4xMy4wIgotICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1jbGFz c2VzLy0vcGx1Z2luLXRyYW5zZm9ybS1jbGFzc2VzLTcuMTMuMC50Z3ojMDI2NTE1NTA3NWM0Mjkx OGJmNGQzYTQwNTMxMzQxNzZhZDliNTMzYiIKLSAgaW50ZWdyaXR5IHNoYTUxMi05QnRIQ1BVQVJ5 Vkgxb1hHY1NKRDNZcHNxUkxST0p4NVpOUDZ0TjV2bmsxN04wU1ZmOVdDdGY4TnVoMUNGbWdCeUtL QUlNc3RpdEtkdW9DbXNhREs1Zz09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBl ci1hbm5vdGF0ZS1hcy1wdXJlIiAiXjcuMTIuMTMiCi0gICAgIkBiYWJlbC9oZWxwZXItZnVuY3Rp b24tbmFtZSIgIl43LjEyLjEzIgotICAgICJAYmFiZWwvaGVscGVyLW9wdGltaXNlLWNhbGwtZXhw cmVzc2lvbiIgIl43LjEyLjEzIgotICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43 LjEzLjAiCi0gICAgIkBiYWJlbC9oZWxwZXItcmVwbGFjZS1zdXBlcnMiICJeNy4xMy4wIgotICAg ICJAYmFiZWwvaGVscGVyLXNwbGl0LWV4cG9ydC1kZWNsYXJhdGlvbiIgIl43LjEyLjEzIgotICAg IGdsb2JhbHMgIl4xMS4xLjAiCi0KLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1jbGFzc2VzQF43 LjE2LjciOgorIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWNsYXNzZXNAXjcuMTMuMCIsICJAYmFi ZWwvcGx1Z2luLXRyYW5zZm9ybS1jbGFzc2VzQF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2Ljci CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4t dHJhbnNmb3JtLWNsYXNzZXMvLS9wbHVnaW4tdHJhbnNmb3JtLWNsYXNzZXMtNy4xNi43LnRneiM4 ZjRiOTU2Mjg1MGNkOTczZGUzYjQ5OGYxMjE4Nzk2ZWIxODFjZTAwIgogICBpbnRlZ3JpdHkgc2hh NTEyLVdZN29nMzhTRkFHWVJlNjRCcmpLZjhPckU2dWxFSHRyNWpFWWFaTXdveDlLZWJncVBpNjda cXo4SzUzRUtrMWZGRUpnbTk2cjMycmtLWjNxQTJuQ1dRPT0KQEAgLTEwMjUsNDMgKzg5NywyMSBA QAogICAgICJAYmFiZWwvaGVscGVyLXNwbGl0LWV4cG9ydC1kZWNsYXJhdGlvbiIgIl43LjE2Ljci CiAgICAgZ2xvYmFscyAiXjExLjEuMCIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWNvbXB1 dGVkLXByb3BlcnRpZXNAXjcuMTMuMCI6Ci0gIHZlcnNpb24gIjcuMTMuMCIKLSAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tY29t cHV0ZWQtcHJvcGVydGllcy8tL3BsdWdpbi10cmFuc2Zvcm0tY29tcHV0ZWQtcHJvcGVydGllcy03 LjEzLjAudGd6Izg0NWM2ZThiOWJiNTUzNzZiMWZhMGI5MmVmMGJkYzhlYTA2NjQ0ZWQiCi0gIGlu dGVncml0eSBzaGE1MTItUlJxVFlUZVprWkF6OFdiaWVMVHZLVUVVeFpsVVRkbUw1S0dNeVpqN0Zu TWZMTktWNCtyNTU0OWFPUkcvbWdvalJtRmxRTUpEVXVwd0FNaUYyUTdPVWc9PQotICBkZXBlbmRl bmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTMuMCIKLQotIkBi YWJlbC9wbHVnaW4tdHJhbnNmb3JtLWNvbXB1dGVkLXByb3BlcnRpZXNAXjcuMTYuNyI6CisiQGJh YmVsL3BsdWdpbi10cmFuc2Zvcm0tY29tcHV0ZWQtcHJvcGVydGllc0BeNy4xMy4wIiwgIkBiYWJl bC9wbHVnaW4tdHJhbnNmb3JtLWNvbXB1dGVkLXByb3BlcnRpZXNAXjcuMTYuNyI6CiAgIHZlcnNp b24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJh YmVsL3BsdWdpbi10cmFuc2Zvcm0tY29tcHV0ZWQtcHJvcGVydGllcy8tL3BsdWdpbi10cmFuc2Zv cm0tY29tcHV0ZWQtcHJvcGVydGllcy03LjE2LjcudGd6IzY2ZGVlMTJlNDZmNjFkMmFhZTdhNzM3 MTBmNTkxZWIzZGY2MTY0NzAiCiAgIGludGVncml0eSBzaGE1MTItZ043Mkc5YmNtZW5WSUxqLy9z djF6TE5hUHlZY096VWhvMmxJSkJNaC9pYWtKOXlnQ28vaEVGOWNwR2I2MVNDTUVEeGJieUJvVlF4 cnQrYldLdTVLR3c9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC9oZWxwZXItcGx1Z2lu LXV0aWxzIiAiXjcuMTYuNyIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWRlc3RydWN0dXJp bmdAXjcuMTMuMCI6Ci0gIHZlcnNpb24gIjcuMTMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tZGVzdHJ1Y3R1cmluZy8t L3BsdWdpbi10cmFuc2Zvcm0tZGVzdHJ1Y3R1cmluZy03LjEzLjAudGd6I2M1ZGNlMjcwMDE0ZDRl MWViYjFkODA2MTE2Njk0YzEyYjcwMjg5NjMiCi0gIGludGVncml0eSBzaGE1MTItenltNWVtN3Rl UG9OVDlzOTY0YzAvS1UzSlBQbnVxN1ZoSXhQUmVmSjQvczgyY0QrcTFtZ0tmdUdSRE1DUEwwSFR5 S3o0ZElTdVFsQ3VzZmdDSjg2SEE9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxw ZXItcGx1Z2luLXV0aWxzIiAiXjcuMTMuMCIKLQotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWRl c3RydWN0dXJpbmdAXjcuMTYuNyI6CisiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tZGVzdHJ1Y3R1 cmluZ0BeNy4xMy4wIiwgIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWRlc3RydWN0dXJpbmdAXjcu MTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tZGVzdHJ1Y3R1cmluZy8tL3BsdWdp bi10cmFuc2Zvcm0tZGVzdHJ1Y3R1cmluZy03LjE2LjcudGd6I2NhOTU4OGFlMmQ2Mzk3OGE0YzI5 ZDNmMzMyODJkODYwM2Y2MThlMjMiCiAgIGludGVncml0eSBzaGE1MTItVnFBd2hUSEJudTV4QlZE Q3ZydnFKYnRMVWErK3FaYVdDMEZncjJtcW9rQmx1bFpBUkd5SXZaRG9xYlBsUGFLSW1ROWRLQWND emJ2K3VsLy91cXU3MEE9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC9oZWxwZXItcGx1 Z2luLXV0aWxzIiAiXjcuMTYuNyIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWRvdGFsbC1y ZWdleEBeNy4xMi4xMyIsICJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1kb3RhbGwtcmVnZXhAXjcu NC40IjoKLSAgdmVyc2lvbiAiNy4xMi4xMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tZG90YWxsLXJlZ2V4Ly0vcGx1Z2lu LXRyYW5zZm9ybS1kb3RhbGwtcmVnZXgtNy4xMi4xMy50Z3ojM2YxNjAxY2MyOTkwNWJmY2I2N2Y1 MzkxMGYxOTdhZWFmZWJiMjVhZCIKLSAgaW50ZWdyaXR5IHNoYTUxMi1mb0Ryb3pFNjVaRmRVQzJP ZmdlT0NyRVBUeGRCM3lqcXhwWGg4Q0graXBkOUNIZDRzL2lxODFrY1VweUg4QUNHTkVQZEZxYnR6 Zmd6YlQvWkdsYkRlUT09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBlci1jcmVh dGUtcmVnZXhwLWZlYXR1cmVzLXBsdWdpbiIgIl43LjEyLjEzIgotICAgICJAYmFiZWwvaGVscGVy LXBsdWdpbi11dGlscyIgIl43LjEyLjEzIgotCi0iQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tZG90 YWxsLXJlZ2V4QF43LjE2LjciOgorIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWRvdGFsbC1yZWdl eEBeNy4xMi4xMyIsICJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1kb3RhbGwtcmVnZXhAXjcuMTYu NyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tZG90YWxsLXJlZ2V4Ly0vcGx1Z2luLXRy YW5zZm9ybS1kb3RhbGwtcmVnZXgtNy4xNi43LnRneiM2YjJkNjc2ODZmYWIxNWZiNmE3ZmQ0YmQ4 OTVkNTk4MmNmYzgxMjQxIgogICBpbnRlZ3JpdHkgc2hhNTEyLUx5dHRhYW8yU2paRjZQZjR2azFk Vkt2OFl5cE1wb21BYnlnVyttVTVjWVAzUzVjV1RmQ0pqRzh4VjZDRmR6R0ZsZldLODFJakw5dmlp VHZwYjZHN2dRPT0KQEAgLTEwNjksMjkgKzkxOSwyMiBAQAogICAgICJAYmFiZWwvaGVscGVyLWNy ZWF0ZS1yZWdleHAtZmVhdHVyZXMtcGx1Z2luIiAiXjcuMTYuNyIKICAgICAiQGJhYmVsL2hlbHBl ci1wbHVnaW4tdXRpbHMiICJeNy4xNi43IgogCi0iQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tZHVw bGljYXRlLWtleXNAXjcuMTIuMTMiOgorIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWRvdGFsbC1y ZWdleEBeNy40LjQiOgogICB2ZXJzaW9uICI3LjEyLjEzIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1kdXBsaWNhdGUta2V5 cy8tL3BsdWdpbi10cmFuc2Zvcm0tZHVwbGljYXRlLWtleXMtNy4xMi4xMy50Z3ojNmYwNmI4N2E4 YjgwM2ZkOTI4ZTU0YjgxYzI1OGYwYTAwMzM5MDRkZSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1OZkFE SmlpSGRoTEJXM3B1bEpsSkkyTkIwdDRjY2k0V1RaOEZ0ZEl1TmMyKzhwc2xYZFB0UlJBRVdxVVkr bTlrTk9rMmVSWWJUQU9pcEF4bHJPY3d3UT09CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWRvdGFsbC1yZWdleC8tL3BsdWdp bi10cmFuc2Zvcm0tZG90YWxsLXJlZ2V4LTcuMTIuMTMudGd6IzNmMTYwMWNjMjk5MDViZmNiNjdm NTM5MTBmMTk3YWVhZmViYjI1YWQiCisgIGludGVncml0eSBzaGE1MTItZm9Ecm96RTY1WkZkVUMy T2ZnZU9DckVQVHhkQjN5anF4cFhoOENIK2lwZDlDSGQ0cy9pcTgxa2NVcHlIOEFDR05FUGRGcWJ0 emZnemJUL1pHbGJEZVE9PQogICBkZXBlbmRlbmNpZXM6CisgICAgIkBiYWJlbC9oZWxwZXItY3Jl YXRlLXJlZ2V4cC1mZWF0dXJlcy1wbHVnaW4iICJeNy4xMi4xMyIKICAgICAiQGJhYmVsL2hlbHBl ci1wbHVnaW4tdXRpbHMiICJeNy4xMi4xMyIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWR1 cGxpY2F0ZS1rZXlzQF43LjE2LjciOgorIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWR1cGxpY2F0 ZS1rZXlzQF43LjEyLjEzIiwgIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWR1cGxpY2F0ZS1rZXlz QF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2LjciCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWR1cGxpY2F0ZS1rZXlzLy0v cGx1Z2luLXRyYW5zZm9ybS1kdXBsaWNhdGUta2V5cy03LjE2LjcudGd6IzIyMDdlOWNhOGY4MmEw ZDM2YTVhNjdiNjUzNmU3ZWY4YjA4ODIzYzkiCiAgIGludGVncml0eSBzaGE1MTItMDNEdnBiUmZ2 V0lYeUswLzZRaVIxS01UV2VUNk9jUTd0Ymhqclh5RlMwMmtqdVgvbXU1QnZuaDVTRFNXSHh5YXdp dDJnNWFXaEt3STg2RUU3R1VuVHc9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC9oZWxw ZXItcGx1Z2luLXV0aWxzIiAiXjcuMTYuNyIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLWV4 cG9uZW50aWF0aW9uLW9wZXJhdG9yQF43LjEyLjEzIjoKLSAgdmVyc2lvbiAiNy4xMi4xMyIKLSAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFu c2Zvcm0tZXhwb25lbnRpYXRpb24tb3BlcmF0b3IvLS9wbHVnaW4tdHJhbnNmb3JtLWV4cG9uZW50 aWF0aW9uLW9wZXJhdG9yLTcuMTIuMTMudGd6IzRkNTIzOTBiOWEyNzNlNjUxZTRhYmE2YWVlNDll ZjQwZTgwY2QwYTEiCi0gIGludGVncml0eSBzaGE1MTItZmJVZWxrTTFhcHZxZXoveVl4MS9vSUNW bkdvMktNNXM2M21oR3lscm1YVXhLL0lBWFNJZjg3UUl4VmZabGRXZjRRc09hZlk2dlYzYlg4YU1I U3ZOckE9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXItYnVpbGRlci1iaW5h cnktYXNzaWdubWVudC1vcGVyYXRvci12aXNpdG9yIiAiXjcuMTIuMTMiCi0gICAgIkBiYWJlbC9o ZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTIuMTMiCi0KLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9y bS1leHBvbmVudGlhdGlvbi1vcGVyYXRvckBeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2luLXRyYW5z Zm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRvckBeNy4xMi4xMyIsICJAYmFiZWwvcGx1Z2luLXRy YW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRvckBeNy4xNi43IjoKICAgdmVyc2lvbiAiNy4x Ni43IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1 Z2luLXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRvci8tL3BsdWdpbi10cmFuc2Zvcm0t ZXhwb25lbnRpYXRpb24tb3BlcmF0b3ItNy4xNi43LnRneiNlZmE5ODYyZWY5N2U5ZTllNWY2NTNm NmRkYzdiNjY1ZTg1MzZmZTliIgogICBpbnRlZ3JpdHkgc2hhNTEyLThVWUxTbHlMZ1JpeFF2bFlI M0oyZWtYRkhERkxRdXRkeTdGZkZBTW0zQ1BaNnE5d0hDd25VeWlYcFFDZTNnVlZuUWxIYzVuc3Vp RVZ6aXRlUk5UWEVBPT0KQEAgLTEwOTksMjkgKzk0MiwxNCBAQAogICAgICJAYmFiZWwvaGVscGVy LWJ1aWxkZXItYmluYXJ5LWFzc2lnbm1lbnQtb3BlcmF0b3ItdmlzaXRvciIgIl43LjE2LjciCiAg ICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTYuNyIKIAotIkBiYWJlbC9wbHVn aW4tdHJhbnNmb3JtLWZvci1vZkBeNy4xMy4wIjoKLSAgdmVyc2lvbiAiNy4xMy4wIgotICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5zZm9y bS1mb3Itb2YvLS9wbHVnaW4tdHJhbnNmb3JtLWZvci1vZi03LjEzLjAudGd6I2M3OTlmODgxYTgw OTFhYzI2YjU0ODY3YTg0NWMzZTk3ZDI2OTYwNjIiCi0gIGludGVncml0eSBzaGE1MTItSUhLVDAw bXdVVllFMHp6YmtEZ05SUDZTUnp2ZkdDWXNPeElSejhLc2lhYUhDY1Q5QldJa08rSDlRUkpzZUhC TE9HQlprSFVkSGlxajZyMFBPc2R5dGc9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9o ZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTMuMCIKLQotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3Jt LWZvci1vZkBeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1mb3Itb2ZAXjcuMTMu MCIsICJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1mb3Itb2ZAXjcuMTYuNyI6CiAgIHZlcnNpb24g IjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVs L3BsdWdpbi10cmFuc2Zvcm0tZm9yLW9mLy0vcGx1Z2luLXRyYW5zZm9ybS1mb3Itb2YtNy4xNi43 LnRneiM2NDlkNjM5ZDQ2MTdkZmY1MDJhOWExNThjNDc5YjNiNTU2NzI4ZDhjIgogICBpbnRlZ3Jp dHkgc2hhNTEyLS9RWm05VzkyUHRwdzdzakk5TngxbWJjc1d6MzMrbDhrdU1JUW5Ed2dRQkc1czNm QWZRdmtSalE3TnFYaHROY0tPblBrZElDbVVIeUNhV1cwNkhDc3FnPT0KICAgZGVwZW5kZW5jaWVz OgogICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE2LjciCiAKLSJAYmFiZWwv cGx1Z2luLXRyYW5zZm9ybS1mdW5jdGlvbi1uYW1lQF43LjEyLjEzIjoKLSAgdmVyc2lvbiAiNy4x Mi4xMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3Bs dWdpbi10cmFuc2Zvcm0tZnVuY3Rpb24tbmFtZS8tL3BsdWdpbi10cmFuc2Zvcm0tZnVuY3Rpb24t bmFtZS03LjEyLjEzLnRneiNiYjAyNDQ1MmY5YWFlZDg2MWQzNzRjOGU3YTI0MjUyY2UzYTUwMDUx IgotICBpbnRlZ3JpdHkgc2hhNTEyLTZLN2daeWNHMGNtSXd3Rjd1TUsvWnFlQ2lrQ0dWQmR5UDJK NVNLTkNYTzVFT0hjcWkrejdKd2Y4QW15RE5jQmd4RVQ4RHJFdEN0L21QS1B5QXpYeXFRPT0KLSAg ZGVwZW5kZW5jaWVzOgotICAgICJAYmFiZWwvaGVscGVyLWZ1bmN0aW9uLW5hbWUiICJeNy4xMi4x MyIKLSAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4xMi4xMyIKLQotIkBiYWJl bC9wbHVnaW4tdHJhbnNmb3JtLWZ1bmN0aW9uLW5hbWVAXjcuMTYuNyI6CisiQGJhYmVsL3BsdWdp bi10cmFuc2Zvcm0tZnVuY3Rpb24tbmFtZUBeNy4xMi4xMyIsICJAYmFiZWwvcGx1Z2luLXRyYW5z Zm9ybS1mdW5jdGlvbi1uYW1lQF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2LjciCiAgIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3Jt LWZ1bmN0aW9uLW5hbWUvLS9wbHVnaW4tdHJhbnNmb3JtLWZ1bmN0aW9uLW5hbWUtNy4xNi43LnRn eiM1YWIzNDM3NWM2NGQ2MWQwODNkN2QyZjA1YzM4ZDkwYjk3ZWM2NWNmIgogICBpbnRlZ3JpdHkg c2hhNTEyLVNVL0M2OFlWd1RSeHFXajVrZ3NiS0lOYWtHYWcwS1RncTlmMmlaRVhkU3RvQWJPekxI RUJSWXpJbW1BNnlGbzhZWmhKVmZsdlhtSUhVTzdHV0hteHhBPT0KQEAgLTExMzAsNDQgKzk1OCwy MSBAQAogICAgICJAYmFiZWwvaGVscGVyLWZ1bmN0aW9uLW5hbWUiICJeNy4xNi43IgogICAgICJA YmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE2LjciCiAKLSJAYmFiZWwvcGx1Z2luLXRy YW5zZm9ybS1saXRlcmFsc0BeNy4xMi4xMyI6Ci0gIHZlcnNpb24gIjcuMTIuMTMiCi0gIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3Jt LWxpdGVyYWxzLy0vcGx1Z2luLXRyYW5zZm9ybS1saXRlcmFscy03LjEyLjEzLnRneiMyY2E0NWJh ZmU0YTgyMDE5N2NmMzE1Nzk0YTRkMjY1NjBmZTRiZGI5IgotICBpbnRlZ3JpdHkgc2hhNTEyLUZX K1dQalNSN2hpVXhNY0txeU5qUDA1dFEya21CQ2RwRXBaSFkxQVJtOTZ0R1FDQ0J2WEtucGpJTHRE cGxVbkovZUhaMGxBTExNK2QybE1GU3BZSnJRPT0KLSAgZGVwZW5kZW5jaWVzOgotICAgICJAYmFi ZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjEyLjEzIgotCi0iQGJhYmVsL3BsdWdpbi10cmFu c2Zvcm0tbGl0ZXJhbHNAXjcuMTYuNyI6CisiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tbGl0ZXJh bHNAXjcuMTIuMTMiLCAiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tbGl0ZXJhbHNAXjcuMTYuNyI6 CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr Zy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tbGl0ZXJhbHMvLS9wbHVnaW4tdHJhbnNmb3Jt LWxpdGVyYWxzLTcuMTYuNy50Z3ojMjU0Yzk2MThjNWZmNzQ5ZTg3Y2IwYzBjZWYxYTBhMDUwYzBi ZGFiMSIKICAgaW50ZWdyaXR5IHNoYTUxMi02dEg4UlRwVFdJMHMyc1Y2dXEzZS9DOXdQbzRQVHFx WnBzNHVGMGt6UTkveFBMRlF0aXB5bnZtVDFnL2RPZkVKKzBFUXNIaGtRL3p5UklkOEoyYjh6UT09 CiAgIGRlcGVuZGVuY2llczoKICAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4x Ni43IgogCi0iQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tbWVtYmVyLWV4cHJlc3Npb24tbGl0ZXJh bHNAXjcuMTIuMTMiOgotICB2ZXJzaW9uICI3LjEyLjEzIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1tZW1iZXItZXhwcmVz c2lvbi1saXRlcmFscy8tL3BsdWdpbi10cmFuc2Zvcm0tbWVtYmVyLWV4cHJlc3Npb24tbGl0ZXJh bHMtNy4xMi4xMy50Z3ojNWZmYTY2Y2Q1OWI5ZTE5MTMxNGM5ZjFmODAzYjkzOGU4YzA4MWU0MCIK LSAgaW50ZWdyaXR5IHNoYTUxMi1reExrT3NnOHlpcjRZZUVQSEx1TzJ0WFA5Ui9nVGpwdVRPanNo cVNwRUxVTjNaQWcyamZEbktVdnp6SnhPYnVuMzhzdzN3bTRVdTY5c1gvekE3aVJ2Zz09Ci0gIGRl cGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4xMi4xMyIK LQotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1lbWJlci1leHByZXNzaW9uLWxpdGVyYWxzQF43 LjE2LjciOgorIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1lbWJlci1leHByZXNzaW9uLWxpdGVy YWxzQF43LjEyLjEzIiwgIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1lbWJlci1leHByZXNzaW9u LWxpdGVyYWxzQF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2LjciCiAgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1lbWJlci1l eHByZXNzaW9uLWxpdGVyYWxzLy0vcGx1Z2luLXRyYW5zZm9ybS1tZW1iZXItZXhwcmVzc2lvbi1s aXRlcmFscy03LjE2LjcudGd6IzZlNWRjZjkwNmVmOGEwOThlNjMwMTQ5ZDE0Yzg2N2RkMjhmOTIz ODQiCiAgIGludGVncml0eSBzaGE1MTItbUJydVJNYmt0S1F3YnhhSm9mMzJMVDlLTHkyZjNnSCsy N2E1WFN1WG82aDdSM3ZxbHRsMFBnWjgwQzhaTUt3OThCZjhicXQ2QkVWaTNzdk9oMlB6TXc9PQog ICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTYu NyIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1vZHVsZXMtYW1kQF43LjEzLjAiOgotICB2 ZXJzaW9uICI3LjEzLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1vZHVsZXMtYW1kLy0vcGx1Z2luLXRyYW5zZm9ybS1t b2R1bGVzLWFtZC03LjEzLjAudGd6IzE5ZjUxMWQ2MGUzZDg3NTNjYzVhNmQ0ZTc3NWQzYTUxODQ4 NjZjYzMiCi0gIGludGVncml0eSBzaGE1MTItRUt5L0UyTkhoWS82Vnc1ZDFrM3Jnb29iZnRjTlVt cDlmR2piOVhad1FMdFRjdHNSQk9UUk83UkhIeGZJa3kxb2dNTjVCeE43cDl1TUEzU3pQZm90TVE9 PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXItbW9kdWxlLXRyYW5zZm9ybXMi ICJeNy4xMy4wIgotICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjEzLjAiCi0g ICAgYmFiZWwtcGx1Z2luLWR5bmFtaWMtaW1wb3J0LW5vZGUgIl4yLjMuMyIKLQotIkBiYWJlbC9w bHVnaW4tdHJhbnNmb3JtLW1vZHVsZXMtYW1kQF43LjE2LjciOgorIkBiYWJlbC9wbHVnaW4tdHJh bnNmb3JtLW1vZHVsZXMtYW1kQF43LjEzLjAiLCAiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tbW9k dWxlcy1hbWRAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tbW9kdWxlcy1h bWQvLS9wbHVnaW4tdHJhbnNmb3JtLW1vZHVsZXMtYW1kLTcuMTYuNy50Z3ojYjI4ZDMyMzAxNmE3 ZGFhYWU4NjA5NzgxZDFmOGM5ZGE0MmIxMzE4NiIKICAgaW50ZWdyaXR5IHNoYTUxMi1LYWFFdGdC TDdGS1l3akovdGVINjNvQW1FM2xQMzROM2tzaHo4bW00Vk1BdzdVM1B4alZ3d1VteEVGa3NiZ3NO VWFPM3dJZDlSMkFWUVlTRUdSYTIrZz09CkBAIC0xMTc2LDE3ICs5ODEsNyBAQAogICAgICJAYmFi ZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE2LjciCiAgICAgYmFiZWwtcGx1Z2luLWR5bmFt aWMtaW1wb3J0LW5vZGUgIl4yLjMuMyIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1vZHVs ZXMtY29tbW9uanNAXjcuMTMuOCI6Ci0gIHZlcnNpb24gIjcuMTMuOCIKLSAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tbW9kdWxl cy1jb21tb25qcy8tL3BsdWdpbi10cmFuc2Zvcm0tbW9kdWxlcy1jb21tb25qcy03LjEzLjgudGd6 IzdiMDFhZDdjMmRjZjIyNzViMDZmYTE3ODFlMDBkMTNkNDIwYjNlMWIiCi0gIGludGVncml0eSBz aGE1MTItOVFpT3g0TUVHZ2xmWVo0WE9uVTc5T0hyNnZJV1Vha0lqOWI0bWlvTjhlUUlvRWgrcGY1 cC96RUIzNkpwREZXQTEybk5NaVJmN2Jmb1J2bDlSbjc5Qnc9PQotICBkZXBlbmRlbmNpZXM6Ci0g ICAgIkBiYWJlbC9oZWxwZXItbW9kdWxlLXRyYW5zZm9ybXMiICJeNy4xMy4wIgotICAgICJAYmFi ZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjEzLjAiCi0gICAgIkBiYWJlbC9oZWxwZXItc2lt cGxlLWFjY2VzcyIgIl43LjEyLjEzIgotICAgIGJhYmVsLXBsdWdpbi1keW5hbWljLWltcG9ydC1u b2RlICJeMi4zLjMiCi0KLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1tb2R1bGVzLWNvbW1vbmpz QF43LjE2LjgiOgorIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1vZHVsZXMtY29tbW9uanNAXjcu MTMuOCIsICJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1tb2R1bGVzLWNvbW1vbmpzQF43LjE2Ljgi OgogICB2ZXJzaW9uICI3LjE2LjgiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1vZHVsZXMtY29tbW9uanMvLS9wbHVnaW4t dHJhbnNmb3JtLW1vZHVsZXMtY29tbW9uanMtNy4xNi44LnRneiNjZGVlMTlhYWU4ODdiMTZiOWQz MzEwMDlhYTlhMjE5YWY3Yzg2YWZlIgogICBpbnRlZ3JpdHkgc2hhNTEyLW9mbEtQdnNMVDIrdUtR b3Blc0p0M0FwaWFJUzJIVytoekhGY3dSTnR5REdpZUFlQy9kSUhaWDhidUpRMkoyWDFyeEdQeTRl UmNVaWptM3FjU1BqWWNBPT0KQEAgLTExOTYsMTggKzk5MSw3IEBACiAgICAgIkBiYWJlbC9oZWxw ZXItc2ltcGxlLWFjY2VzcyIgIl43LjE2LjciCiAgICAgYmFiZWwtcGx1Z2luLWR5bmFtaWMtaW1w b3J0LW5vZGUgIl4yLjMuMyIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1vZHVsZXMtc3lz dGVtanNAXjcuMTMuOCI6Ci0gIHZlcnNpb24gIjcuMTMuOCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tbW9kdWxlcy1zeXN0 ZW1qcy8tL3BsdWdpbi10cmFuc2Zvcm0tbW9kdWxlcy1zeXN0ZW1qcy03LjEzLjgudGd6IzZkMDY2 ZWUyYmZmM2M3YjNkNjBiZjI4ZGVjMTY5YWQ5OTM4MzFhZTMiCi0gIGludGVncml0eSBzaGE1MTIt aHdxY3RQWWpoTTZjV3ZWSWxPSWUyN2pDSUJnSENzZEgyeENKVkFZUW03VjV5VE1vaWxiVk1pOWY2 d0tnMHJwUUFPbjZaRzRBT3l2Q3FGRi9oVWg2K0E9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBi YWJlbC9oZWxwZXItaG9pc3QtdmFyaWFibGVzIiAiXjcuMTMuMCIKLSAgICAiQGJhYmVsL2hlbHBl ci1tb2R1bGUtdHJhbnNmb3JtcyIgIl43LjEzLjAiCi0gICAgIkBiYWJlbC9oZWxwZXItcGx1Z2lu LXV0aWxzIiAiXjcuMTMuMCIKLSAgICAiQGJhYmVsL2hlbHBlci12YWxpZGF0b3ItaWRlbnRpZmll ciIgIl43LjEyLjExIgotICAgIGJhYmVsLXBsdWdpbi1keW5hbWljLWltcG9ydC1ub2RlICJeMi4z LjMiCi0KLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1tb2R1bGVzLXN5c3RlbWpzQF43LjE2Ljci OgorIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1vZHVsZXMtc3lzdGVtanNAXjcuMTMuOCIsICJA YmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1tb2R1bGVzLXN5c3RlbWpzQF43LjE2LjciOgogICB2ZXJz aW9uICI3LjE2LjciCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0Bi YWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1vZHVsZXMtc3lzdGVtanMvLS9wbHVnaW4tdHJhbnNmb3Jt LW1vZHVsZXMtc3lzdGVtanMtNy4xNi43LnRneiM4ODdjZWZhZWY4OGU2ODRkMjk1NThjMmIxM2Vl MDU2M2UyODdjMmQ3IgogICBpbnRlZ3JpdHkgc2hhNTEyLUR1SzVFM2srUVFtbk9xQlI5VWt1c0J5 eTVXWldHUnhmelY1MjlzOW5QcmExR0U3b2xteGZxTzJGSG9iRU9ZU1BJalBCVHI0cDY2WURjalFu dDhjQm13PT0KQEAgLTEyMTgsMTUgKzEwMDIsNyBAQAogICAgICJAYmFiZWwvaGVscGVyLXZhbGlk YXRvci1pZGVudGlmaWVyIiAiXjcuMTYuNyIKICAgICBiYWJlbC1wbHVnaW4tZHluYW1pYy1pbXBv cnQtbm9kZSAiXjIuMy4zIgogCi0iQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tbW9kdWxlcy11bWRA XjcuMTMuMCI6Ci0gIHZlcnNpb24gIjcuMTMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tbW9kdWxlcy11bWQvLS9wbHVn aW4tdHJhbnNmb3JtLW1vZHVsZXMtdW1kLTcuMTMuMC50Z3ojOGEzZDk2YTk3ZDE5OTcwNWI5ZmQw MjE1ODAwODJhZjgxYzA2ZTcwYiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1EL0lMekFoNnV5dmtXaktL eUZFL1cwRnpXd2FzdjZ2UFRTcVBjanhGcW42UXBYM3U4RGpSVmxpcTRGMkJhbU8yV2VlL29tMDZW eXkrdlBrTnJkNHd4dz09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBlci1tb2R1 bGUtdHJhbnNmb3JtcyIgIl43LjEzLjAiCi0gICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxz IiAiXjcuMTMuMCIKLQotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1vZHVsZXMtdW1kQF43LjE2 LjciOgorIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW1vZHVsZXMtdW1kQF43LjEzLjAiLCAiQGJh YmVsL3BsdWdpbi10cmFuc2Zvcm0tbW9kdWxlcy11bWRAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcu MTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3Bs dWdpbi10cmFuc2Zvcm0tbW9kdWxlcy11bWQvLS9wbHVnaW4tdHJhbnNmb3JtLW1vZHVsZXMtdW1k LTcuMTYuNy50Z3ojMjNkYWQ0NzlmYTU4NTI4M2RiZDIyMjE1YmZmMTI3MTkxNzFlNzYxOCIKICAg aW50ZWdyaXR5IHNoYTUxMi1FTWg3dW9sc0M4TzR4aHVkRjJGNndlZGJTSG0xSEhaMEM2YUo3SzY3 emNETmlkTXpWY3hXZEdyK2h0VzluMjFrbG0rYk9uK1J4NENCc0FudFpkM3JFUT09CkBAIC0xMjM0 LDQzICsxMDEwLDIxIEBACiAgICAgIkBiYWJlbC9oZWxwZXItbW9kdWxlLXRyYW5zZm9ybXMiICJe Ny4xNi43IgogICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE2LjciCiAKLSJA YmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1uYW1lZC1jYXB0dXJpbmctZ3JvdXBzLXJlZ2V4QF43LjEy LjEzIjoKLSAgdmVyc2lvbiAiNy4xMi4xMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tbmFtZWQtY2FwdHVyaW5nLWdyb3Vw cy1yZWdleC8tL3BsdWdpbi10cmFuc2Zvcm0tbmFtZWQtY2FwdHVyaW5nLWdyb3Vwcy1yZWdleC03 LjEyLjEzLnRneiMyMjEzNzI1YTVmNWJiYmUzNjRiNTBjM2JhNTk5OGM5NTk5YzVjOWQ5IgotICBp bnRlZ3JpdHkgc2hhNTEyLVhzbThQMmhyNWhBeHlZYmxyZkFDWHBRS2RRYng0bTJkZjkvWlpTUThN QWhzYWR3MDYralc3czl6c1N3NmhlK21KWlhSbFZNeUVuVmt0Sm80emprMVdBPT0KLSAgZGVwZW5k ZW5jaWVzOgotICAgICJAYmFiZWwvaGVscGVyLWNyZWF0ZS1yZWdleHAtZmVhdHVyZXMtcGx1Z2lu IiAiXjcuMTIuMTMiCi0KLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1uYW1lZC1jYXB0dXJpbmct Z3JvdXBzLXJlZ2V4QF43LjE2LjgiOgorIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW5hbWVkLWNh cHR1cmluZy1ncm91cHMtcmVnZXhAXjcuMTIuMTMiLCAiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0t bmFtZWQtY2FwdHVyaW5nLWdyb3Vwcy1yZWdleEBeNy4xNi44IjoKICAgdmVyc2lvbiAiNy4xNi44 IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2lu LXRyYW5zZm9ybS1uYW1lZC1jYXB0dXJpbmctZ3JvdXBzLXJlZ2V4Ly0vcGx1Z2luLXRyYW5zZm9y bS1uYW1lZC1jYXB0dXJpbmctZ3JvdXBzLXJlZ2V4LTcuMTYuOC50Z3ojN2Y4NjBlMGU0MGQ4NDRh MDJjOWRjZjlkODQ5NjVlN2RmZDY2NjI1MiIKICAgaW50ZWdyaXR5IHNoYTUxMi1qM0p3K241UHZw bWhSUittcmdJaDA0cHVTQU5Day9UL1VBM20zUDFNakpraGxLOTA2K0FwSGhESXFCUURkT2dML3Ix VVlwejRHTmNsVFh4eVpyWUdTdz09CiAgIGRlcGVuZGVuY2llczoKICAgICAiQGJhYmVsL2hlbHBl ci1jcmVhdGUtcmVnZXhwLWZlYXR1cmVzLXBsdWdpbiIgIl43LjE2LjciCiAKLSJAYmFiZWwvcGx1 Z2luLXRyYW5zZm9ybS1uZXctdGFyZ2V0QF43LjEyLjEzIjoKLSAgdmVyc2lvbiAiNy4xMi4xMyIK LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10 cmFuc2Zvcm0tbmV3LXRhcmdldC8tL3BsdWdpbi10cmFuc2Zvcm0tbmV3LXRhcmdldC03LjEyLjEz LnRneiNlMjJkOGMzYWYyNGIxNTBkZDUyOGNiZDZlNjg1ZTc5OWJmMWMzNTFjIgotICBpbnRlZ3Jp dHkgc2hhNTEyLS9LWTJoYkx4ckc1R1RROXp6WlNjM3hXaU95Mzc5cElFVEVoYnR6d1pjdzlydnVh VlY0RnF5N0JZR1lPV1puYW9YSVFZYmJKMHppWExhL3NLY0dDWUVRPT0KLSAgZGVwZW5kZW5jaWVz OgotICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjEyLjEzIgotCi0iQGJhYmVs L3BsdWdpbi10cmFuc2Zvcm0tbmV3LXRhcmdldEBeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2luLXRy YW5zZm9ybS1uZXctdGFyZ2V0QF43LjEyLjEzIiwgIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW5l dy10YXJnZXRAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tbmV3LXRhcmdl dC8tL3BsdWdpbi10cmFuc2Zvcm0tbmV3LXRhcmdldC03LjE2LjcudGd6Izk5NjdkODlhNWMyNDM4 MThlMDgwMGZkYWQ4OWRiMjJjNWY1MTQyNDQiCiAgIGludGVncml0eSBzaGE1MTIteGlMRHpXTk1m S29HT3BjNnQzVStldENFMnlSbm4zU00wOUJYcVdQSVpPQnBMMmd2VnJCV1VLbnNKeDBLL0FEaTVG NVlDNWY4QVBGZldyejI1VGRsR2c9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC9oZWxw ZXItcGx1Z2luLXV0aWxzIiAiXjcuMTYuNyIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW9i amVjdC1zdXBlckBeNy4xMi4xMyI6Ci0gIHZlcnNpb24gIjcuMTIuMTMiCi0gIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW9iamVj dC1zdXBlci8tL3BsdWdpbi10cmFuc2Zvcm0tb2JqZWN0LXN1cGVyLTcuMTIuMTMudGd6I2I0NDE2 YTJkNjNiOGY3YmUzMTRmM2QzNDliZDU1YTljMWI1MTcxZjciCi0gIGludGVncml0eSBzaGE1MTIt SnpZSWNqM1h0WXNwWkRWOGo5dWxub01QWlpuRi9DajBMVXhQT2pSODlCZEJWeCt6WUpJOU1kTUls VVpqYlhEWCs2WVZlUzZJM2U4b3ArcVEzQllCb1E9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBi YWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTIuMTMiCi0gICAgIkBiYWJlbC9oZWxwZXIt cmVwbGFjZS1zdXBlcnMiICJeNy4xMi4xMyIKLQotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW9i amVjdC1zdXBlckBeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1vYmplY3Qtc3Vw ZXJAXjcuMTIuMTMiLCAiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tb2JqZWN0LXN1cGVyQF43LjE2 LjciOgogICB2ZXJzaW9uICI3LjE2LjciCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLW9iamVjdC1zdXBlci8tL3BsdWdpbi10 cmFuc2Zvcm0tb2JqZWN0LXN1cGVyLTcuMTYuNy50Z3ojYWMzNTljZjhkMzJjZjQzNTRkMjdhNDY4 Njc5OTk0OTBiNmMzMmE5NCIKICAgaW50ZWdyaXR5IHNoYTUxMi0xNEoxZmVpUVZXYUd2UnhqMldq eU11WFMyanNCa2dCM01kU041SHVDMkc1blJzcGE1Uks5Q09jczgyUHd5NUJ1R2NqYitmWWFVajk0 bVljT2o3ckN2dz09CkBAIC0xMjc4LDI4ICsxMDMyLDE0IEBACiAgICAgIkBiYWJlbC9oZWxwZXIt cGx1Z2luLXV0aWxzIiAiXjcuMTYuNyIKICAgICAiQGJhYmVsL2hlbHBlci1yZXBsYWNlLXN1cGVy cyIgIl43LjE2LjciCiAKLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1wYXJhbWV0ZXJzQF43LjEz LjAiLCAiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcGFyYW1ldGVyc0BeNy4xNC41IjoKLSAgdmVy c2lvbiAiNy4xNC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9A YmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1wYXJhbWV0ZXJzLy0vcGx1Z2luLXRyYW5zZm9ybS1wYXJh bWV0ZXJzLTcuMTQuNS50Z3ojNDk2NjJlODZhMWYzZGRjY2FjNjM2M2E3ZGZiMWZmMGExNThhZmVi MyIKLSAgaW50ZWdyaXR5IHNoYTUxMi1UbDdMV2RyNkhVeFRtelF0enVVMTRTcWJnclNLbWFSNzdN ME9LeXE0bmpaTFFUUGZPdnpibE5LeU5rR3dPZkVGQ0V4N0tlWUhRSERJMFAzRjAySVZrQT09Ci0g IGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4xNC41 IgotCi0iQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcGFyYW1ldGVyc0BeNy4xNi43IjoKKyJAYmFi ZWwvcGx1Z2luLXRyYW5zZm9ybS1wYXJhbWV0ZXJzQF43LjEzLjAiLCAiQGJhYmVsL3BsdWdpbi10 cmFuc2Zvcm0tcGFyYW1ldGVyc0BeNy4xNC41IiwgIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXBh cmFtZXRlcnNAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcGFyYW1ldGVy cy8tL3BsdWdpbi10cmFuc2Zvcm0tcGFyYW1ldGVycy03LjE2LjcudGd6I2ExNzIxZjU1Yjk5Yjcz NjUxMWNiN2UwMTUyZjYxZjE3Njg4ZjMzMWYiCiAgIGludGVncml0eSBzaGE1MTItQVQzTXVmUTd6 WkVoVTJod09BMTFheEJuRXhXMExzenU0UkwvdEFsVUpCdU5vUmFrK3dlaFFXOGg2S2NYT2Nnalk0 MmZIdER4c3d1TWhNakZFdXYvYXc9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC9oZWxw ZXItcGx1Z2luLXV0aWxzIiAiXjcuMTYuNyIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXBy b3BlcnR5LWxpdGVyYWxzQF43LjEyLjEzIjoKLSAgdmVyc2lvbiAiNy4xMi4xMyIKLSAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0t cHJvcGVydHktbGl0ZXJhbHMvLS9wbHVnaW4tdHJhbnNmb3JtLXByb3BlcnR5LWxpdGVyYWxzLTcu MTIuMTMudGd6IzRlNmE5ZTM3ODY0ZDhmMWIzYmMwZTJkY2U3YmY4ODU3ZGI4YjFhODEiCi0gIGlu dGVncml0eSBzaGE1MTItbnFWaWd3VmFuK2xSK2c4Rmo4RXhsMFVRWDJreW10amNXZk1PWU0xdlRZ RUt1amV5djJTa01nYXpmMnFOY0s3bDRTRGlLeVRBL25IQ1BxTDRlMnpvMUE9PQotICBkZXBlbmRl bmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTIuMTMiCi0KLSJA YmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1wcm9wZXJ0eS1saXRlcmFsc0BeNy4xNi43IjoKKyJAYmFi ZWwvcGx1Z2luLXRyYW5zZm9ybS1wcm9wZXJ0eS1saXRlcmFsc0BeNy4xMi4xMyIsICJAYmFiZWwv cGx1Z2luLXRyYW5zZm9ybS1wcm9wZXJ0eS1saXRlcmFsc0BeNy4xNi43IjoKICAgdmVyc2lvbiAi Ny4xNi43IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwv cGx1Z2luLXRyYW5zZm9ybS1wcm9wZXJ0eS1saXRlcmFscy8tL3BsdWdpbi10cmFuc2Zvcm0tcHJv cGVydHktbGl0ZXJhbHMtNy4xNi43LnRneiMyZGFkYWM4NTE1NTQzNmYyMmM2OTZjNDgyNzczMGUw ZmUxMDU3YTU1IgogICBpbnRlZ3JpdHkgc2hhNTEyLXo0RkdyOU5NR2RvSWwxUnFhdkNxR0crWnVZ amZaL2hrQ0lldUg2RG83dFhtU20wbHMxMW5ZVlNKcUZFVU9TSmJEYWI1d0M2bFJFL3c2WWpWY3I2 SHF3PT0KQEAgLTEzMTMsNDYgKzEwNTMsMjEgQEAKICAgZGVwZW5kZW5jaWVzOgogICAgICJAYmFi ZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE2LjciCiAKLSJAYmFiZWwvcGx1Z2luLXRyYW5z Zm9ybS1yZWFjdC1kaXNwbGF5LW5hbWVAXjcuMTIuMTMiOgotICB2ZXJzaW9uICI3LjE0LjIiCi0g IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJh bnNmb3JtLXJlYWN0LWRpc3BsYXktbmFtZS8tL3BsdWdpbi10cmFuc2Zvcm0tcmVhY3QtZGlzcGxh eS1uYW1lLTcuMTQuMi50Z3ojMmU4NTQ1NDRkNDJhYjNiYjljMjFmODRlMTUzZDYyZTgwMGZiZDU5 MyIKLSAgaW50ZWdyaXR5IHNoYTUxMi16Q3VidlAramphaHBuRkp2UGFIUGlHVmZ1VlVqWEhoRnZK S1FkTm5zbVNzaVU5a1IvckNaNDFqSGMrK3RFUkQyelYrcDdIcjZpcyt0NWI2aVdUQ3FTdz09Ci0g IGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4xMy4w IgotCi0iQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcmVhY3QtZGlzcGxheS1uYW1lQF43LjE2Ljci OgorIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWRpc3BsYXktbmFtZUBeNy4xMi4xMyIs ICJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1kaXNwbGF5LW5hbWVAXjcuMTYuNyI6CiAg IHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcmVhY3QtZGlzcGxheS1uYW1lLy0vcGx1Z2luLXRy YW5zZm9ybS1yZWFjdC1kaXNwbGF5LW5hbWUtNy4xNi43LnRneiM3YjZkNDBkMjMyZjRjMGY1NTBl YTM0ODU5M2RiM2IyMWUyNDA0MzQwIgogICBpbnRlZ3JpdHkgc2hhNTEyLXFnSWc4QmNaZ2QwRy9D ejkxNkQ1KzlrcVgwYzduUFp5WGFQOFIydExOTjV0a3lJWmRHNWZFd0JyeHdwbHpTbmpDMWp2UW15 TU5Wd1VDWlBjYkdZN1BnPT0KICAgZGVwZW5kZW5jaWVzOgogICAgICJAYmFiZWwvaGVscGVyLXBs dWdpbi11dGlscyIgIl43LjE2LjciCiAKLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1q c3gtZGV2ZWxvcG1lbnRAXjcuMTIuMTciOgotICB2ZXJzaW9uICI3LjEyLjE3IgotICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1y ZWFjdC1qc3gtZGV2ZWxvcG1lbnQvLS9wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1kZXZlbG9w bWVudC03LjEyLjE3LnRneiNmNTEwYzBmYTdjZDcyMzQxNTM1MzlmOWEzNjJjZWQ0MWE1Y2ExNDQ3 IgotICBpbnRlZ3JpdHkgc2hhNTEyLUJQallWODZTVnVPYXVkRmhzSlIxempneHhPaEpEdDZKSE5v RDQ4RHhXRUl4VUNBTWpWMXlzNkRZdzRTRFlaaDBiMVFzUzJ2ZklBOXQvWnNRR3NET1VRPT0KLSAg ZGVwZW5kZW5jaWVzOgotICAgICJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3giICJe Ny4xMi4xNyIKLQotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1kZXZlbG9wbWVu dEBeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtZGV2ZWxvcG1l bnRAXjcuMTIuMTciLCAiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LWRldmVsb3Bt ZW50QF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2LjciCiAgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1kZXZl bG9wbWVudC8tL3BsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LWRldmVsb3BtZW50LTcuMTYuNy50 Z3ojNDNhMDA3MjRhM2VkMjU1N2VkM2YyNzZhMDFhOTI5ZTY2ODZhYzdiOCIKICAgaW50ZWdyaXR5 IHNoYTUxMi1STXZRV3ZwbGEreHk2TWxCcFBscktaQ01SczJBR2lIT0dIWTN4UndsMHBFZWltMzQ4 ZER5eGVINHhCc01QYklNaHVqZXE3aWhFNzAyZU0yRXcwV28rQT09CiAgIGRlcGVuZGVuY2llczoK ICAgICAiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4IiAiXjcuMTYuNyIKIAotIkBi YWJlbC9wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeEBeNy4xMi4xNyIsICJAYmFiZWwvcGx1Z2lu LXRyYW5zZm9ybS1yZWFjdC1qc3hAXjcuMTMuMTIiOgotICB2ZXJzaW9uICI3LjEzLjEyIgotICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5z Zm9ybS1yZWFjdC1qc3gvLS9wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC03LjEzLjEyLnRneiMx ZGY1ZGZhZjBmNGI3ODRiNDNlOTZkYTZmMjhkNjMwZTc3NWY2OGIzIgotICBpbnRlZ3JpdHkgc2hh NTEyLWpjRUkyVXFJY3BDcUI1VTVEUnhJbDB0UUVQcm9JMmdjdStnOFZUSXF4TE81SWlkb2piNGQ3 N3ErZndHc2VDdmQ4YWYvbEo5bWFzcDRRV3pCWEZFMnhBPT0KLSAgZGVwZW5kZW5jaWVzOgotICAg ICJAYmFiZWwvaGVscGVyLWFubm90YXRlLWFzLXB1cmUiICJeNy4xMi4xMyIKLSAgICAiQGJhYmVs L2hlbHBlci1tb2R1bGUtaW1wb3J0cyIgIl43LjEzLjEyIgotICAgICJAYmFiZWwvaGVscGVyLXBs dWdpbi11dGlscyIgIl43LjEzLjAiCi0gICAgIkBiYWJlbC9wbHVnaW4tc3ludGF4LWpzeCIgIl43 LjEyLjEzIgotICAgICJAYmFiZWwvdHlwZXMiICJeNy4xMy4xMiIKLQotIkBiYWJlbC9wbHVnaW4t dHJhbnNmb3JtLXJlYWN0LWpzeEBeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1y ZWFjdC1qc3hAXjcuMTMuMTIiLCAiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4QF43 LjE2LjciOgogICB2ZXJzaW9uICI3LjE2LjciCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC8tL3BsdWdpbi10 cmFuc2Zvcm0tcmVhY3QtanN4LTcuMTYuNy50Z3ojODZhNmEyMjA1NTJhZmQwZTRlMWYwMzg4YTY4 YTM3MmJlN2FkZDBkNCIKICAgaW50ZWdyaXR5IHNoYTUxMi04RDE2eWU2NmZ4aUU4bTg5MHcwQnBQ cG5nRzlvOU9WQkJ5MGdIMkUrMkFSN3FNUjJacFRZSkVxTHhBc29yb2VuTUlkMHAvd01XK0JsYzBt ZURndTBBZz09CkBAIC0xMzYzLDE1ICsxMDc4LDcgQEAKICAgICAiQGJhYmVsL3BsdWdpbi1zeW50 YXgtanN4IiAiXjcuMTYuNyIKICAgICAiQGJhYmVsL3R5cGVzIiAiXjcuMTYuNyIKIAotIkBiYWJl bC9wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LXB1cmUtYW5ub3RhdGlvbnNAXjcuMTIuMSI6Ci0gIHZl cnNpb24gIjcuMTIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v QGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcmVhY3QtcHVyZS1hbm5vdGF0aW9ucy8tL3BsdWdpbi10 cmFuc2Zvcm0tcmVhY3QtcHVyZS1hbm5vdGF0aW9ucy03LjEyLjEudGd6IzA1ZDQ2ZjBhYjRkMTMz OWFjNTlhZGYyMGExNDYyYzkxYjM3YTFhNDIiCi0gIGludGVncml0eSBzaGE1MTItUnFlYUhpd1p0 cGhTSVVaNUk4NVBFSDE5TE9TenhmdUVhem9ZNy9wV0FTQ0FJQnVBVFF6cFNWRCtlVDZNZWJlZVpU MkY0ZVNMMHU0dnc2bjRObTBNamc9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxw ZXItYW5ub3RhdGUtYXMtcHVyZSIgIl43LjEwLjQiCi0gICAgIkBiYWJlbC9oZWxwZXItcGx1Z2lu LXV0aWxzIiAiXjcuMTAuNCIKLQotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LXB1cmUt YW5ub3RhdGlvbnNAXjcuMTYuNyI6CisiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcmVhY3QtcHVy ZS1hbm5vdGF0aW9uc0BeNy4xMi4xIiwgIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LXB1 cmUtYW5ub3RhdGlvbnNAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tcmVh Y3QtcHVyZS1hbm5vdGF0aW9ucy8tL3BsdWdpbi10cmFuc2Zvcm0tcmVhY3QtcHVyZS1hbm5vdGF0 aW9ucy03LjE2LjcudGd6IzIzMmJmZDJmMTJlYjU1MWQ2ZDdkMDFkMTNmZTNmODZiNDVlYjljNjci CiAgIGludGVncml0eSBzaGE1MTItaHM3MVRvQzk3azNRV3hzd2gyRWx6TUZBQlhIdkdpSjAxSUIx VGJZUURHZVdSS1d6L01QVVRoNWpHRXhkSHZvc1lLcG5KVzVQbTNTNCtUQTNGeVgrR0E9PQpAQCAt MTM3OSw1NyArMTA4NiwyOCBAQAogICAgICJAYmFiZWwvaGVscGVyLWFubm90YXRlLWFzLXB1cmUi ICJeNy4xNi43IgogICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE2LjciCiAK LSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1yZWdlbmVyYXRvckBeNy4xMi4xMyI6Ci0gIHZlcnNp b24gIjcuMTMuMTUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0Bi YWJlbC9wbHVnaW4tdHJhbnNmb3JtLXJlZ2VuZXJhdG9yLy0vcGx1Z2luLXRyYW5zZm9ybS1yZWdl bmVyYXRvci03LjEzLjE1LnRneiNlNWViMjg5NDViZjhiNjU2M2U3ZjgxODk0NWY5NjZhOGQyOTk3 ZjM5IgotICBpbnRlZ3JpdHkgc2hhNTEyLUJrOWNPTFN6OERpdXJjTUVUWjhFMll0SVZKYkZDUEdX MjhESldVYWtteVZXdFFTbTZXc2YwcDRCNEJmRXIvZUwyTmtoZS9DSUNpVWlNT0NpMVRQaHVRPT0K LSAgZGVwZW5kZW5jaWVzOgotICAgIHJlZ2VuZXJhdG9yLXRyYW5zZm9ybSAiXjAuMTQuMiIKLQot IkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXJlZ2VuZXJhdG9yQF43LjE2LjciOgorIkBiYWJlbC9w bHVnaW4tdHJhbnNmb3JtLXJlZ2VuZXJhdG9yQF43LjEyLjEzIiwgIkBiYWJlbC9wbHVnaW4tdHJh bnNmb3JtLXJlZ2VuZXJhdG9yQF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2LjciCiAgIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3Jt LXJlZ2VuZXJhdG9yLy0vcGx1Z2luLXRyYW5zZm9ybS1yZWdlbmVyYXRvci03LjE2LjcudGd6Izll NzU3NmRjNDc2Y2I4OWNjYzUwOTZmZmY3YWY2NTkyNDNiNGFkZWIiCiAgIGludGVncml0eSBzaGE1 MTItbUY3ak9nR1lDa1NKYWdKNlhDdWpTUWcrNnhDMU03Ny8wM0syb0JtVkpXb0ZHTlV0blZKTzRX SEtKazNkblBDOEhDY2o0eEJRUDFFZ204RFdoM1BiM1E9PQogICBkZXBlbmRlbmNpZXM6CiAgICAg cmVnZW5lcmF0b3ItdHJhbnNmb3JtICJeMC4xNC4yIgogCi0iQGJhYmVsL3BsdWdpbi10cmFuc2Zv cm0tcmVzZXJ2ZWQtd29yZHNAXjcuMTIuMTMiOgotICB2ZXJzaW9uICI3LjEyLjEzIgotICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5zZm9y bS1yZXNlcnZlZC13b3Jkcy8tL3BsdWdpbi10cmFuc2Zvcm0tcmVzZXJ2ZWQtd29yZHMtNy4xMi4x My50Z3ojN2Q5OTg4ZDRmMDZlMGZlNjk3ZWExZDk4MDMxODhhYTE4YjQ3MjY5NSIKLSAgaW50ZWdy aXR5IHNoYTUxMi14aFVQekRYeFpOMVFmaU95L0k1dHl5ZStUUno2bEE3ejZ4YVQ0Q0xPalBSTVZn MWxkUmYwTEh3MFREQnBZTDR2Rzc4NTU2V3VIZHlPOW9pNVVtelpCZz09Ci0gIGRlcGVuZGVuY2ll czoKLSAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4xMi4xMyIKLQotIkBiYWJl bC9wbHVnaW4tdHJhbnNmb3JtLXJlc2VydmVkLXdvcmRzQF43LjE2LjciOgorIkBiYWJlbC9wbHVn aW4tdHJhbnNmb3JtLXJlc2VydmVkLXdvcmRzQF43LjEyLjEzIiwgIkBiYWJlbC9wbHVnaW4tdHJh bnNmb3JtLXJlc2VydmVkLXdvcmRzQF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2LjciCiAgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNm b3JtLXJlc2VydmVkLXdvcmRzLy0vcGx1Z2luLXRyYW5zZm9ybS1yZXNlcnZlZC13b3Jkcy03LjE2 LjcudGd6IzFkNzk4ZTA3OGY3YzU5NThlZWM5NTIwNTljNDYwYjIyMGE2M2Y1ODYiCiAgIGludGVn cml0eSBzaGE1MTItS1F6ekRuWjloV1FCandpNWxwWTV2OXNobW02SVZHMFU5cEIxOHp2TXUyaTRI OTB4cFQ0Z21xd1BZc244ck9iaWFkWWUyTTBnbWdzaU9JRjVBLzJydGc9PQogICBkZXBlbmRlbmNp ZXM6CiAgICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTYuNyIKIAotIkBiYWJl bC9wbHVnaW4tdHJhbnNmb3JtLXNob3J0aGFuZC1wcm9wZXJ0aWVzQF43LjEyLjEzIjoKLSAgdmVy c2lvbiAiNy4xMi4xMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v QGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tc2hvcnRoYW5kLXByb3BlcnRpZXMvLS9wbHVnaW4tdHJh bnNmb3JtLXNob3J0aGFuZC1wcm9wZXJ0aWVzLTcuMTIuMTMudGd6I2RiNzU1NzMyYjcwYzUzOWQ1 MDRjNjM5MGQ5Y2U5MGZlNjRhZmY3YWQiCi0gIGludGVncml0eSBzaGE1MTIteHBMNDlwcVBuTHRm MHRWbHV1cXZ6V0lnTEVodVBwWnp2czJ5YWJVSFNLUk5sTjdTY1lVN2FNbG1hdk9leVhKWktnWktR UkJsaDhySGJLaUpEcmFUU3c9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXIt cGx1Z2luLXV0aWxzIiAiXjcuMTIuMTMiCi0KLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1zaG9y dGhhbmQtcHJvcGVydGllc0BeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1zaG9y dGhhbmQtcHJvcGVydGllc0BeNy4xMi4xMyIsICJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1zaG9y dGhhbmQtcHJvcGVydGllc0BeNy4xNi43IjoKICAgdmVyc2lvbiAiNy4xNi43IgogICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1z aG9ydGhhbmQtcHJvcGVydGllcy8tL3BsdWdpbi10cmFuc2Zvcm0tc2hvcnRoYW5kLXByb3BlcnRp ZXMtNy4xNi43LnRneiNlODU0OWFlNGFmY2Y4MzgyZjcxMTc5NGMwYzdiNmI5MzRjNWZiZDJhIgog ICBpbnRlZ3JpdHkgc2hhNTEyLWhhaDIrRkVub1JvQVRkSWIwNUlPWGYrNEd6WFlUcTc1VFZoSW4x UGV3aWhicHlyTldVdDJKYnVkS1FPRVRXdzZRcExlK0FJVXBKNU1WTFlUUWJlZVVnPT0KICAgZGVw ZW5kZW5jaWVzOgogICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE2LjciCiAK LSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1zcHJlYWRAXjcuMTMuMCI6Ci0gIHZlcnNpb24gIjcu MTMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3Bs dWdpbi10cmFuc2Zvcm0tc3ByZWFkLy0vcGx1Z2luLXRyYW5zZm9ybS1zcHJlYWQtNy4xMy4wLnRn eiM4NDg4NzcxMGUyNzNjMTgxNWFjZTdhZTQ1OWY2ZjQyYTVkMzFkNWZkIgotICBpbnRlZ3JpdHkg c2hhNTEyLVY2dmtpWGlqanpZZUZtUVRyM2RCeFB0WllMUGNVZlkzNERlYk9VMjdqSWwyTS9ZOEVn bTUySHc4MkNTampQcWQ1NEdUbEpzNXgrQ1I3SGVOcjI0Y2tnPT0KLSAgZGVwZW5kZW5jaWVzOgot ICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjEzLjAiCi0gICAgIkBiYWJlbC9o ZWxwZXItc2tpcC10cmFuc3BhcmVudC1leHByZXNzaW9uLXdyYXBwZXJzIiAiXjcuMTIuMSIKLQot IkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXNwcmVhZEBeNy4xNi43IjoKKyJAYmFiZWwvcGx1Z2lu LXRyYW5zZm9ybS1zcHJlYWRAXjcuMTMuMCIsICJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1zcHJl YWRAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tc3ByZWFkLy0vcGx1Z2lu LXRyYW5zZm9ybS1zcHJlYWQtNy4xNi43LnRneiNhMzAzZTIxMjJmOWYxMmUwMTA1ZGFlZWRkMGYz MGZiMTk3ZDhmZjQ0IgogICBpbnRlZ3JpdHkgc2hhNTEyLStwakpwZ0FuZ2I1M0wwaWFBNWdVLzFN TFhKSWZYY1llcExnWEIzZXNWUmY0ZnFtajhmMmN4TTMvRkthSHNabXMwOGhGUUprRmNjRVd1SXBt NDI5VFhnPT0KQEAgLTE0MzcsODAgKzExMTUsNDQgQEAKICAgICAiQGJhYmVsL2hlbHBlci1wbHVn aW4tdXRpbHMiICJeNy4xNi43IgogICAgICJAYmFiZWwvaGVscGVyLXNraXAtdHJhbnNwYXJlbnQt ZXhwcmVzc2lvbi13cmFwcGVycyIgIl43LjE2LjAiCiAKLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9y bS1zdGlja3ktcmVnZXhAXjcuMTIuMTMiOgotICB2ZXJzaW9uICI3LjEyLjEzIgotICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1z dGlja3ktcmVnZXgvLS9wbHVnaW4tdHJhbnNmb3JtLXN0aWNreS1yZWdleC03LjEyLjEzLnRneiM3 NjBmZmQ5MzZmYWNlNzNmODYwYWU2NDZmYjg2ZWU4MmYzZDA2ZDFmIgotICBpbnRlZ3JpdHkgc2hh NTEyLUpjM0pTYWFXVDgrZnI3R1J2UVAwMmZLRHNZazRLL2xZd1dxMzhyL1VHZmF4bzg5YWp1ZDMy MU5IMjhLUlE3eHkxWWJjMFZVRTVQejhwc2pOTkRVZ2xnPT0KLSAgZGVwZW5kZW5jaWVzOgotICAg ICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjEyLjEzIgotCi0iQGJhYmVsL3BsdWdp bi10cmFuc2Zvcm0tc3RpY2t5LXJlZ2V4QF43LjE2LjciOgorIkBiYWJlbC9wbHVnaW4tdHJhbnNm b3JtLXN0aWNreS1yZWdleEBeNy4xMi4xMyIsICJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS1zdGlj a3ktcmVnZXhAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tc3RpY2t5LXJl Z2V4Ly0vcGx1Z2luLXRyYW5zZm9ybS1zdGlja3ktcmVnZXgtNy4xNi43LnRneiNjODQ3NDFkNGY0 YTM4MDcyYjlhMWUyZTNmZDU2ZDM1OTU1MmU4NjYwIgogICBpbnRlZ3JpdHkgc2hhNTEyLU5KYTBC ZC84N1FWNU5aWnpUdVpHNUJQSmpMWWFkZVNaOWZPNm9PVW9MNGlReCs5RUV1dy9lRU05MlNyc1Qx OVljMmpnQjF1MWhzanFEdEgwMmMzRHJ3PT0KICAgZGVwZW5kZW5jaWVzOgotICAgICJAYmFiZWwv aGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE2LjciCi0KLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9y bS10ZW1wbGF0ZS1saXRlcmFsc0BeNy4xMy4wIjoKLSAgdmVyc2lvbiAiNy4xMy4wIgotICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5zZm9y bS10ZW1wbGF0ZS1saXRlcmFscy8tL3BsdWdpbi10cmFuc2Zvcm0tdGVtcGxhdGUtbGl0ZXJhbHMt Ny4xMy4wLnRneiNhMzYwNDkxMjc5NzdhZDk0NDM4ZGVlNzQ0MzU5OGQxY2VmZGY0MDlkIgotICBp bnRlZ3JpdHkgc2hhNTEyLWQ2N3VtVzZubGZtcjFpZWhDY0J2NjllU1VTeVNrMUVzSVM4YVREWDRY bzlxYWpBaDZtWXRjbDRrSnJCa0dYdXhaUEVnVnI3UlZmQXZOVzZZUWtkNE13PT0KLSAgZGVwZW5k ZW5jaWVzOgotICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjEzLjAiCisgICAg IkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxzIiAiXjcuMTYuNyIKIAotIkBiYWJlbC9wbHVnaW4t dHJhbnNmb3JtLXRlbXBsYXRlLWxpdGVyYWxzQF43LjE2LjciOgorIkBiYWJlbC9wbHVnaW4tdHJh bnNmb3JtLXRlbXBsYXRlLWxpdGVyYWxzQF43LjEzLjAiLCAiQGJhYmVsL3BsdWdpbi10cmFuc2Zv cm0tdGVtcGxhdGUtbGl0ZXJhbHNAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3BsdWdpbi10cmFuc2Zv cm0tdGVtcGxhdGUtbGl0ZXJhbHMvLS9wbHVnaW4tdHJhbnNmb3JtLXRlbXBsYXRlLWxpdGVyYWxz LTcuMTYuNy50Z3ojZjNkMWM0NWQyODk2N2M4ZTgwZjUzNjY2ZmM5YzNlNTA2MTgyMTdhYiIKICAg aW50ZWdyaXR5IHNoYTUxMi1Wd2JrRERVZWVubElqbWZOZURYL1YwYVdyUUgyUWlWeUp0d3ltVlFT ekl0RkRUcHhmeUpoM0VWYVFpUzBySU4vQ3FiTEdyMFZjR211d3lUZFp0ZElzQT09CiAgIGRlcGVu ZGVuY2llczoKICAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4xNi43IgogCi0i QGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tdHlwZW9mLXN5bWJvbEBeNy4xMi4xMyI6Ci0gIHZlcnNp b24gIjcuMTIuMTMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0Bi YWJlbC9wbHVnaW4tdHJhbnNmb3JtLXR5cGVvZi1zeW1ib2wvLS9wbHVnaW4tdHJhbnNmb3JtLXR5 cGVvZi1zeW1ib2wtNy4xMi4xMy50Z3ojNzg1ZGQ2N2ExZjJlYTU3OWQ5YzJiZTcyMmRlOGM4NGNi ODVmNWE3ZiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1lS3YvTG1VSnBNbnU0bnBnZnZzM0xpSGhKdWE1 Zm8vQ3lzRU54YTQ1WUNRWFp3S25HQ1FLQWc4N2J2b3FTVzFmRlQrSEEzMmwwM1F4c204b3VUWTNa UT09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJe Ny4xMi4xMyIKLQotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXR5cGVvZi1zeW1ib2xAXjcuMTYu NyI6CisiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tdHlwZW9mLXN5bWJvbEBeNy4xMi4xMyIsICJA YmFiZWwvcGx1Z2luLXRyYW5zZm9ybS10eXBlb2Ytc3ltYm9sQF43LjE2LjciOgogICB2ZXJzaW9u ICI3LjE2LjciCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJl bC9wbHVnaW4tdHJhbnNmb3JtLXR5cGVvZi1zeW1ib2wvLS9wbHVnaW4tdHJhbnNmb3JtLXR5cGVv Zi1zeW1ib2wtNy4xNi43LnRneiM5Y2RiZTYyMjU4MmMyMTM2OGJkNDgyYjY2MGJhODdkNTU0NWQ0 ZjdlIgogICBpbnRlZ3JpdHkgc2hhNTEyLXAyck9peENLUkp6cGc5SkI0Z2puRzRnaldrV2E4OVpv WVVubDlzbkoxY1dJY1RIL2h2eFpxZk8rV2pHNlQ4RFJCcGN0RW9sNWp3MU81ckE4Z2tDb2tRPT0K ICAgZGVwZW5kZW5jaWVzOgogICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE2 LjciCiAKLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS10eXBlc2NyaXB0QF43LjE0LjUiOgotICB2 ZXJzaW9uICI3LjE0LjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXR5cGVzY3JpcHQvLS9wbHVnaW4tdHJhbnNmb3JtLXR5 cGVzY3JpcHQtNy4xNC42LnRneiM2ZTljMmQ5OGRhMjUwN2ViZTBhODgzYjEwMGNkZTNjNzI3OWRm MzZjIgotICBpbnRlZ3JpdHkgc2hhNTEyLVhsVGRCcTdBd3I0RllJenFobVlZODBXTjBWMGF6Rjc0 RE1QeUZxVkhCdmY4MVpVZ2M0WDdaT3B4Nk84ZUxESzZpTTVjQ1F6ZXlKdzB5blRhZWZpeFJBPT0K KyJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS10eXBlc2NyaXB0QF43LjE2LjAiOgorICB2ZXJzaW9u ICI3LjE2LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJl bC9wbHVnaW4tdHJhbnNmb3JtLXR5cGVzY3JpcHQvLS9wbHVnaW4tdHJhbnNmb3JtLXR5cGVzY3Jp cHQtNy4xNi4xLnRneiNjYzA2NzBiMjgyMmIwMzM4MzU1YmMxYjNkMjI0NmE0MmI4MTY2NDA5Igor ICBpbnRlZ3JpdHkgc2hhNTEyLU5PNFhvcnlCbmcwNmpqdy9xV0VVMkxoY0xKcjF0V2tocE1hbS9I NGVhcy9DREtNWC9iMi9ZbGI2RUkyNTZZNytGVlBDYXd3U00xcnJKTk9wRGl6K0xnPT0KICAgZGVw ZW5kZW5jaWVzOgotICAgICJAYmFiZWwvaGVscGVyLWNyZWF0ZS1jbGFzcy1mZWF0dXJlcy1wbHVn aW4iICJeNy4xNC42IgorICAgICJAYmFiZWwvaGVscGVyLWNyZWF0ZS1jbGFzcy1mZWF0dXJlcy1w bHVnaW4iICJeNy4xNi4wIgogICAgICJAYmFiZWwvaGVscGVyLXBsdWdpbi11dGlscyIgIl43LjE0 LjUiCi0gICAgIkBiYWJlbC9wbHVnaW4tc3ludGF4LXR5cGVzY3JpcHQiICJeNy4xNC41IgotCi0i QGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tdW5pY29kZS1lc2NhcGVzQF43LjEyLjEzIjoKLSAgdmVy c2lvbiAiNy4xMi4xMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v QGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tdW5pY29kZS1lc2NhcGVzLy0vcGx1Z2luLXRyYW5zZm9y bS11bmljb2RlLWVzY2FwZXMtNy4xMi4xMy50Z3ojODQwY2VkM2I4MTZkM2I1MTI3ZGQxZDEyZGNl ZGM1ZGVhZDFhNWU3NCIKLSAgaW50ZWdyaXR5IHNoYTUxMi0wYkhFa2R3Si9zTi9pa0JIZlNtT1hQ eXBOL2JlaUdxam8rbzQvNUsrdnhFRk5QUlBkSW1odmlQYWtNS0c0eDk2bDg1ZW1vYTBaNmNEZmxz ZEJ1c1pidz09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRp bHMiICJeNy4xMi4xMyIKKyAgICAiQGJhYmVsL3BsdWdpbi1zeW50YXgtdHlwZXNjcmlwdCIgIl43 LjE2LjAiCiAKLSJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS11bmljb2RlLWVzY2FwZXNAXjcuMTYu NyI6CisiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tdW5pY29kZS1lc2NhcGVzQF43LjEyLjEzIiwg IkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXVuaWNvZGUtZXNjYXBlc0BeNy4xNi43IjoKICAgdmVy c2lvbiAiNy4xNi43IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9A YmFiZWwvcGx1Z2luLXRyYW5zZm9ybS11bmljb2RlLWVzY2FwZXMvLS9wbHVnaW4tdHJhbnNmb3Jt LXVuaWNvZGUtZXNjYXBlcy03LjE2LjcudGd6I2RhODcxN2RlN2IzMjg3YTJjNmQ2NTk3NTBjOTY0 ZjMwMmIzMWVjZTMiCiAgIGludGVncml0eSBzaGE1MTItVEFWNUlHYWhJejN5WjkvSGZ2MzVUVjJ4 RW0ra2FCRGFaUUNuMlMvaEc5L0NaMERrdHhKdjllS2ZQYzd5WUN2T1lSNEpHeDFoOEMramNTT3Zn YWFJL1E9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC9oZWxwZXItcGx1Z2luLXV0aWxz IiAiXjcuMTYuNyIKIAotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXVuaWNvZGUtcmVnZXhAXjcu MTIuMTMiOgotICB2ZXJzaW9uICI3LjEyLjEzIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9AYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS11bmljb2RlLXJlZ2V4Ly0vcGx1 Z2luLXRyYW5zZm9ybS11bmljb2RlLXJlZ2V4LTcuMTIuMTMudGd6I2I1MjUyMTY4NTgwNGUxNTVi MTIwMmU4M2ZjMTg4ZDM0YmI3MGY1YWMiCi0gIGludGVncml0eSBzaGE1MTItbURSelNOWTcvem9w d2lzUFo1a005WEtDZmhjaHFJWXdBS1JFUnRFbmhZc2NaQjc5VlJla3VSU29ZYk4wK0tWZTN5OCtx MWg2QTRzdlh0UDdOK1VvQ0E9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJlbC9oZWxwZXIt Y3JlYXRlLXJlZ2V4cC1mZWF0dXJlcy1wbHVnaW4iICJeNy4xMi4xMyIKLSAgICAiQGJhYmVsL2hl bHBlci1wbHVnaW4tdXRpbHMiICJeNy4xMi4xMyIKLQotIkBiYWJlbC9wbHVnaW4tdHJhbnNmb3Jt LXVuaWNvZGUtcmVnZXhAXjcuMTYuNyI6CisiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tdW5pY29k ZS1yZWdleEBeNy4xMi4xMyIsICJAYmFiZWwvcGx1Z2luLXRyYW5zZm9ybS11bmljb2RlLXJlZ2V4 QF43LjE2LjciOgogICB2ZXJzaW9uICI3LjE2LjciCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wbHVnaW4tdHJhbnNmb3JtLXVuaWNvZGUtcmVnZXgvLS9w bHVnaW4tdHJhbnNmb3JtLXVuaWNvZGUtcmVnZXgtNy4xNi43LnRneiMwZjdhYTRhNTAxMTk4OTc2 ZTI1ZTgyNzAyNTc0YzM0Y2ZlYmU5ZWYyIgogICBpbnRlZ3JpdHkgc2hhNTEyLW9DNXRZWUt3NTZI Tzc1S1pWTFErUi9ObDNIcm85a2Y4aUcwaFhvYUhQN3RqQXlDcHZxQmlTTmU2dkdyWm5pMVo2TWdn bVVPQzZBN1ZQN0FWbXcyMjVRPT0KQEAgLTE2NzIsMTggKzEzMTQsNyBAQAogICAgIGNvcmUtanMt Y29tcGF0ICJeMy4yMC4yIgogICAgIHNlbXZlciAiXjYuMy4wIgogCi0iQGJhYmVsL3ByZXNldC1t b2R1bGVzQF4wLjEuNCI6Ci0gIHZlcnNpb24gIjAuMS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcHJlc2V0LW1vZHVsZXMvLS9wcmVzZXQtbW9kdWxl cy0wLjEuNC50Z3ojMzYyZjJiNjhjNjYyODQyOTcwZmRiNWUyNTRmZmM4ZmMxYzJlNDE1ZSIKLSAg aW50ZWdyaXR5IHNoYTUxMi1KMzZOaHduZmR6cG1INDFNMURybmtrZ0FxaFphcXIvTkJkUGZRNjc3 bUx6bGFYbytvRGl2MWRleUNEdGdBaHo4cDMyOG90ZG9iMER1Nyt4Z0hHWmJLZz09Ci0gIGRlcGVu ZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4wLjAiCi0gICAg IkBiYWJlbC9wbHVnaW4tcHJvcG9zYWwtdW5pY29kZS1wcm9wZXJ0eS1yZWdleCIgIl43LjQuNCIK LSAgICAiQGJhYmVsL3BsdWdpbi10cmFuc2Zvcm0tZG90YWxsLXJlZ2V4IiAiXjcuNC40IgotICAg ICJAYmFiZWwvdHlwZXMiICJeNy40LjQiCi0gICAgZXN1dGlscyAiXjIuMC4yIgotCi0iQGJhYmVs L3ByZXNldC1tb2R1bGVzQF4wLjEuNSI6CisiQGJhYmVsL3ByZXNldC1tb2R1bGVzQF4wLjEuNCIs ICJAYmFiZWwvcHJlc2V0LW1vZHVsZXNAXjAuMS41IjoKICAgdmVyc2lvbiAiMC4xLjUiCiAgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC9wcmVzZXQtbW9kdWxl cy8tL3ByZXNldC1tb2R1bGVzLTAuMS41LnRneiNlZjkzOWQ2ZTdmMjY4ODI3ZTE4NDE2MzhkYzZm Zjk1NTE1ZTExNWQ5IgogICBpbnRlZ3JpdHkgc2hhNTEyLUE1N3RoNllSRzdvUjNjcS95dC9ZODRN dkdnRTBlSkcyRjFKTGhLdXlHK2pGeEVncmQvSEFNSmF0aUZ0bU9pWnVyeiswRGtydmJoZUNMYVY1 ZjJKZmpBPT0KQEAgLTE3MTksMTggKzEzNTAsMTggQEAKICAgICAiQGJhYmVsL3BsdWdpbi10cmFu c2Zvcm0tcmVhY3QtcHVyZS1hbm5vdGF0aW9ucyIgIl43LjE2LjciCiAKICJAYmFiZWwvcHJlc2V0 LXR5cGVzY3JpcHRAXjcuOC4zIjoKLSAgdmVyc2lvbiAiNy4xNC41IgotICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcHJlc2V0LXR5cGVzY3JpcHQvLS9wcmVz ZXQtdHlwZXNjcmlwdC03LjE0LjUudGd6I2FhOThkZTExOWNmOTg1MmI3OTUxMWYxOWU3ZjQ0YTJk Mzc5YmNjZTAiCi0gIGludGVncml0eSBzaGE1MTItdTR6TzZDZGJSS2JTOVR5cE1xcmxHSDdzZDJU QUpwcFp3bjNjL1pSTGVPL3dHc2JkZHhnYlBEVVpWTnJpZTNKV1lMUTl2cGluZUtsc3JXRnZPNlB3 a3c9PQorICB2ZXJzaW9uICI3LjE2LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL0BiYWJlbC9wcmVzZXQtdHlwZXNjcmlwdC8tL3ByZXNldC10eXBlc2NyaXB0LTcu MTYuMC50Z3ojYjBiNGYxMDViODU1ZmIzZDYzMWVjMDM2Y2RjOWQxZmZkMWZhNWVhYyIKKyAgaW50 ZWdyaXR5IHNoYTUxMi10eGVnZHJaWWdPOURsUGJ2KzlRT1ZwTW5LYk90ZXpzTEhXc25zUkY0QWpi U0lzVmF1anJxMXFnOEhLMG14UXBXdjBqbmVqdDB5RW9XMXVXcHZickRUZz09CiAgIGRlcGVuZGVu Y2llczoKICAgICAiQGJhYmVsL2hlbHBlci1wbHVnaW4tdXRpbHMiICJeNy4xNC41IgogICAgICJA YmFiZWwvaGVscGVyLXZhbGlkYXRvci1vcHRpb24iICJeNy4xNC41IgotICAgICJAYmFiZWwvcGx1 Z2luLXRyYW5zZm9ybS10eXBlc2NyaXB0IiAiXjcuMTQuNSIKKyAgICAiQGJhYmVsL3BsdWdpbi10 cmFuc2Zvcm0tdHlwZXNjcmlwdCIgIl43LjE2LjAiCiAKICJAYmFiZWwvcnVudGltZUBeNy4wLjAi LCAiQGJhYmVsL3J1bnRpbWVAXjcuMTIuMCIsICJAYmFiZWwvcnVudGltZUBeNy4xMy4xMCIsICJA YmFiZWwvcnVudGltZUBeNy4zLjEiLCAiQGJhYmVsL3J1bnRpbWVAXjcuNC40IiwgIkBiYWJlbC9y dW50aW1lQF43LjUuNSIsICJAYmFiZWwvcnVudGltZUBeNy42LjAiLCAiQGJhYmVsL3J1bnRpbWVA XjcuNy4yIiwgIkBiYWJlbC9ydW50aW1lQF43LjguMyIsICJAYmFiZWwvcnVudGltZUBeNy44LjQi LCAiQGJhYmVsL3J1bnRpbWVAXjcuOC43IjoKLSAgdmVyc2lvbiAiNy4xNC4wIgotICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvcnVudGltZS8tL3J1bnRpbWUt Ny4xNC4wLnRneiM0Njc5NGJjMjBiNjEyYzVmNzVlNjJkZDA3MWUyNGRmZDk1ZjFjYmU2IgotICBp bnRlZ3JpdHkgc2hhNTEyLUpFTGt2by9EbHBOZEo3ZGx5dy9lWTdFMHN1eTVpNUdRSCtWbHhhcTFu c05KK0g3ZjRWdHYzak1lQ0VnUmhaWlFGWFRqbGRZZlFndjJxbU02TTF2NXdBPT0KKyAgdmVyc2lv biAiNy4xNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFi ZWwvcnVudGltZS8tL3J1bnRpbWUtNy4xNi4wLnRneiNlMjdiOTc3ZjJlMjA4OGJhMjQ3NDhiZjk5 YjVlMWRlY2U2NGU0ZjBiIgorICBpbnRlZ3JpdHkgc2hhNTEyLU5odDhMME84WUNrdG1zRFY2RnFG dWU3dlFMUngzSGIwQjM3bFM1eTBqRFJxUnhsQkc0d0lKSG5mOS9iZ1NFMlV5aXBLRkEwMVl0Uytu cFJkVFdCVXl3PT0KICAgZGVwZW5kZW5jaWVzOgogICAgIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgIl4w LjEzLjQiCiAKQEAgLTE3NDEsNyArMTM3Miw3IEBACiAgIGRlcGVuZGVuY2llczoKICAgICByZWdl bmVyYXRvci1ydW50aW1lICJeMC4xMy40IgogCi0iQGJhYmVsL3RlbXBsYXRlQF43LjEyLjEzIiwg IkBiYWJlbC90ZW1wbGF0ZUBeNy4xNC41IjoKKyJAYmFiZWwvdGVtcGxhdGVAXjcuMTIuMTMiOgog ICB2ZXJzaW9uICI3LjE0LjUiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL0BiYWJlbC90ZW1wbGF0ZS8tL3RlbXBsYXRlLTcuMTQuNS50Z3ojYTliYzlkOGIzMzM1NGZm NmU1NWE5YzYwZDExMDkyMDBhNjg5NzRmNCIKICAgaW50ZWdyaXR5IHNoYTUxMi02WjNQbzg1c2Z4 UkdhY2hMVUxVaE9tdkFhT283eEN2cUdRdHhJTmFpMm1FR1BGbTZwUTR6NVFJbkZuVXJScGZvU1Y2 MEJuanlGNUYzYysxNWZ4RlYxZz09CkBAIC0xNzUwLDcgKzEzODEsNyBAQAogICAgICJAYmFiZWwv cGFyc2VyIiAiXjcuMTQuNSIKICAgICAiQGJhYmVsL3R5cGVzIiAiXjcuMTQuNSIKIAotIkBiYWJl bC90ZW1wbGF0ZUBeNy4xNi43IjoKKyJAYmFiZWwvdGVtcGxhdGVAXjcuMTQuNSIsICJAYmFiZWwv dGVtcGxhdGVAXjcuMTYuNyI6CiAgIHZlcnNpb24gIjcuMTYuNyIKICAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGJhYmVsL3RlbXBsYXRlLy0vdGVtcGxhdGUtNy4xNi43 LnRneiM4ZDEyNmM4NzAxZmRlNGQ2NmIyNjRiM2ViYTNkOTZmMDc2NjZkMTU1IgogICBpbnRlZ3Jp dHkgc2hhNTEyLUk4ai94OGtIVXJiWVJUVXhYcnJNYmZDYTdqeGtFN3RacmUzOXgza2pyOWh2STgy Y0sxRmZxTHlnb3RjV041a2RQR1djTGRXTUhwU0JhdnNlNXRXdzN3PT0KQEAgLTE3NTksNyArMTM5 MCwxNiBAQAogICAgICJAYmFiZWwvcGFyc2VyIiAiXjcuMTYuNyIKICAgICAiQGJhYmVsL3R5cGVz IiAiXjcuMTYuNyIKIAotIkBiYWJlbC90cmF2ZXJzZUBeNy4xMy4wIiwgIkBiYWJlbC90cmF2ZXJz ZUBeNy4xNC41IiwgIkBiYWJlbC90cmF2ZXJzZUBeNy40LjUiOgorIkBiYWJlbC90ZW1wbGF0ZUBe Ny4xNi4wIjoKKyAgdmVyc2lvbiAiNy4xNi4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9AYmFiZWwvdGVtcGxhdGUvLS90ZW1wbGF0ZS03LjE2LjAudGd6I2QxNmEz NWViZjRjZDc0ZTIwMjA4MzM1NmZhYjIxZGQ4OTM2M2RkZDYiCisgIGludGVncml0eSBzaGE1MTIt TW5aZHBGRC9aZFloWHdpdW5NcXFneVp5dWNhWXNiTDBJcmpvR2phVmhHaWx6K3g4WUIrK2tSZnln U09JajF5T3RXS1BseDdOQnArOUkxUlFTZ3NkNUE9PQorICBkZXBlbmRlbmNpZXM6CisgICAgIkBi YWJlbC9jb2RlLWZyYW1lIiAiXjcuMTYuMCIKKyAgICAiQGJhYmVsL3BhcnNlciIgIl43LjE2LjAi CisgICAgIkBiYWJlbC90eXBlcyIgIl43LjE2LjAiCisKKyJAYmFiZWwvdHJhdmVyc2VAXjcuMTMu MCIsICJAYmFiZWwvdHJhdmVyc2VAXjcuNC41IjoKICAgdmVyc2lvbiAiNy4xNC43IgogICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvdHJhdmVyc2UvLS90cmF2 ZXJzZS03LjE0LjcudGd6IzY0MDA3Yzk3NzRjZmRjM2FiZDIzYjA3ODBiYzE4YTNjZTM2MzE3NTMi CiAgIGludGVncml0eSBzaGE1MTItOXZEcjVOekh1Mjd3Z3dlanVLTDdrSU9tNGJ3RXRhUFE0WjZj cENtalN1YVJxcEgvN3hjNHFjR0VzY3dNcWxrd2djWGw2TXZxb0FqWmtRMjR1U2RJWlE9PQpAQCAt MTc3NCw2ICsxNDE0LDIxIEBACiAgICAgZGVidWcgIl40LjEuMCIKICAgICBnbG9iYWxzICJeMTEu MS4wIgogCisiQGJhYmVsL3RyYXZlcnNlQF43LjE2LjAiOgorICB2ZXJzaW9uICI3LjE2LjAiCisg IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC90cmF2ZXJzZS8t L3RyYXZlcnNlLTcuMTYuMC50Z3ojOTY1ZGY2YzZiZmMwYTk1OGMxZTczOTI4NGQzYzlmYTRhNmUz YzQ1YiIKKyAgaW50ZWdyaXR5IHNoYTUxMi1xUTg0aklzMWFSUXhhR2F4U3lzSUk5VHVEYWd1WjV5 VnJFdUMwQk4ydmNQbGFsd2ZMb3ZWbUNqYkZEUEVDUFhjWU0vd0x2TkZmcDh1RE9saUx4SW9VUT09 CisgIGRlcGVuZGVuY2llczoKKyAgICAiQGJhYmVsL2NvZGUtZnJhbWUiICJeNy4xNi4wIgorICAg ICJAYmFiZWwvZ2VuZXJhdG9yIiAiXjcuMTYuMCIKKyAgICAiQGJhYmVsL2hlbHBlci1mdW5jdGlv bi1uYW1lIiAiXjcuMTYuMCIKKyAgICAiQGJhYmVsL2hlbHBlci1ob2lzdC12YXJpYWJsZXMiICJe Ny4xNi4wIgorICAgICJAYmFiZWwvaGVscGVyLXNwbGl0LWV4cG9ydC1kZWNsYXJhdGlvbiIgIl43 LjE2LjAiCisgICAgIkBiYWJlbC9wYXJzZXIiICJeNy4xNi4wIgorICAgICJAYmFiZWwvdHlwZXMi ICJeNy4xNi4wIgorICAgIGRlYnVnICJeNC4xLjAiCisgICAgZ2xvYmFscyAiXjExLjEuMCIKKwog IkBiYWJlbC90cmF2ZXJzZUBeNy4xNi43IiwgIkBiYWJlbC90cmF2ZXJzZUBeNy4xNi44IiwgIkBi YWJlbC90cmF2ZXJzZUBeNy4xNy4wIjoKICAgdmVyc2lvbiAiNy4xNy4wIgogICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvdHJhdmVyc2UvLS90cmF2ZXJzZS03 LjE3LjAudGd6IzMxNDNlNTA2Njc5NjQwOGNjYzg4MGEzM2VjZDMxODRmM2U3NWNkMzAiCkBAIC0x NzkwLDE1ICsxNDQ1LDcgQEAKICAgICBkZWJ1ZyAiXjQuMS4wIgogICAgIGdsb2JhbHMgIl4xMS4x LjAiCiAKLSJAYmFiZWwvdHlwZXNAXjcuMTIuMSIsICJAYmFiZWwvdHlwZXNAXjcuMTIuMTMiLCAi QGJhYmVsL3R5cGVzQF43LjEzLjAiLCAiQGJhYmVsL3R5cGVzQF43LjEzLjEyIiwgIkBiYWJlbC90 eXBlc0BeNy4xNC41IiwgIkBiYWJlbC90eXBlc0BeNy40LjQiOgotICB2ZXJzaW9uICI3LjE1LjQi Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BiYWJlbC90eXBlcy8t L3R5cGVzLTcuMTUuNC50Z3ojNzRlZWI4NmRiZDY3NDhkMjc0MTM5NjU1N2I5ODYwZTU3ZmNlMGEw ZCIKLSAgaW50ZWdyaXR5IHNoYTUxMi0wZjFISkZ1R21tYnJLVENadGJtM2NVK2IvQXFkRVlrNXRv ajVpUXVyNTh4a1ZNbFMwSldhS3hUQlNtQ1hkNDd1aU43dmJjb3pBdXBtNk12czgwR05odz09Ci0g IGRlcGVuZGVuY2llczoKLSAgICAiQGJhYmVsL2hlbHBlci12YWxpZGF0b3ItaWRlbnRpZmllciIg Il43LjE0LjkiCi0gICAgdG8tZmFzdC1wcm9wZXJ0aWVzICJeMi4wLjAiCi0KLSJAYmFiZWwvdHlw ZXNAXjcuMTIuNiIsICJAYmFiZWwvdHlwZXNAXjcuMTYuMCIsICJAYmFiZWwvdHlwZXNAXjcuMTYu NyIsICJAYmFiZWwvdHlwZXNAXjcuMTYuOCIsICJAYmFiZWwvdHlwZXNAXjcuMTcuMCI6CisiQGJh YmVsL3R5cGVzQF43LjEyLjYiLCAiQGJhYmVsL3R5cGVzQF43LjEzLjEyIiwgIkBiYWJlbC90eXBl c0BeNy4xNi4wIiwgIkBiYWJlbC90eXBlc0BeNy4xNi43IiwgIkBiYWJlbC90eXBlc0BeNy4xNi44 IiwgIkBiYWJlbC90eXBlc0BeNy4xNy4wIjoKICAgdmVyc2lvbiAiNy4xNy4wIgogICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AYmFiZWwvdHlwZXMvLS90eXBlcy03LjE3 LjAudGd6I2E4MjZlMzY4YmNjYjZiM2Q4NGFjZDc2YWNhZDVjMGQ4NzM0MjM5MGIiCiAgIGludGVn cml0eSBzaGE1MTItVG1LU05PNEQ1cnpoTDVialdGY1ZISExFVHpmUS9BbWJLcEtQT1NqbFAwV29I WjZMOTExZmdvT0tZNEFscC9lbXpHNGNISmR5TjQ5enBna2JYRkVISHc9PQpAQCAtMTgwNiw2ICsx NDUzLDE0IEBACiAgICAgIkBiYWJlbC9oZWxwZXItdmFsaWRhdG9yLWlkZW50aWZpZXIiICJeNy4x Ni43IgogICAgIHRvLWZhc3QtcHJvcGVydGllcyAiXjIuMC4wIgogCisiQGJhYmVsL3R5cGVzQF43 LjEzLjAiLCAiQGJhYmVsL3R5cGVzQF43LjE0LjUiLCAiQGJhYmVsL3R5cGVzQF43LjQuNCI6Cisg IHZlcnNpb24gIjcuMTUuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vQGJhYmVsL3R5cGVzLy0vdHlwZXMtNy4xNS40LnRneiM3NGVlYjg2ZGJkNjc0OGQyNzQxMzk2 NTU3Yjk4NjBlNTdmY2UwYTBkIgorICBpbnRlZ3JpdHkgc2hhNTEyLTBmMUhKRnVHbW1icktUQ1p0 Ym0zY1UrYi9BcWRFWWs1dG9qNWlRdXI1OHhrVk1sUzBKV2FLeFRCU21DWGQ0N3VpTjd2YmNvekF1 cG02TXZzODBHTmh3PT0KKyAgZGVwZW5kZW5jaWVzOgorICAgICJAYmFiZWwvaGVscGVyLXZhbGlk YXRvci1pZGVudGlmaWVyIiAiXjcuMTQuOSIKKyAgICB0by1mYXN0LXByb3BlcnRpZXMgIl4yLjAu MCIKKwogIkBjb2xvcnMvY29sb3JzQDEuNS4wIjoKICAgdmVyc2lvbiAiMS41LjAiCiAgIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0Bjb2xvcnMvY29sb3JzLy0vY29sb3Jz LTEuNS4wLnRneiNiYjUwNDU3OWMxY2FlOTIzZTY1NzZhNGY1ZGE0M2QyNWY5N2JkYmQ5IgpAQCAt MTgyNCw5ICsxNDc5LDkgQEAKICAgICAiQGRhdGUtaW8vY29yZSIgIl4xLjMuMTMiCiAKICJAZGlz Y292ZXJ5anMvanNvbi1leHRAXjAuNS4wIjoKLSAgdmVyc2lvbiAiMC41LjMiCi0gIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BkaXNjb3Zlcnlqcy9qc29uLWV4dC8tL2pz b24tZXh0LTAuNS4zLnRneiM5MDQyMGY5ZjljNmQzOTg3ZjE3NmExOWE3ZDhlNzY0MjcxYTJmNTVk IgotICBpbnRlZ3JpdHkgc2hhNTEyLUZ4dCtBZlhnak1vaW4ybWFQSVl6RlpuUWpBWGpBTDBQSHNj TTVwUlR0YXRGcUIrdlp4QU05dExwMk9wdG51dzNRT1FDNDBqVE5lR1lGT012eWY3djlnPT0KKyAg dmVyc2lvbiAiMC41LjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L0BkaXNjb3Zlcnlqcy9qc29uLWV4dC8tL2pzb24tZXh0LTAuNS41LnRneiM5MjgzYzljZTViMjg5 YTNjNGY2MWMxMjc1NzQ2OWU1OTM3N2Y4MWYzIgorICBpbnRlZ3JpdHkgc2hhNTEyLTZuRmtma21T ZVYvcnFTYVM0b1dIZ21wbll3MTk0ZjZobVdGNWlzNmIwSjFuYUpab2lEME5UYzlBaVV3UEh2V3Nv d2tqdUhFckNaVDF3YTBqZytCTElBPT0KIAogIkBlbW90aW9uL2NhY2hlQF4xMC4wLjI3IjoKICAg dmVyc2lvbiAiMTAuMC4yOSIKQEAgLTE4MzgsMTYgKzE0OTMsMTYgQEAKICAgICAiQGVtb3Rpb24v dXRpbHMiICIwLjExLjMiCiAgICAgIkBlbW90aW9uL3dlYWstbWVtb2l6ZSIgIjAuMi41IgogCi0i QGVtb3Rpb24vY2FjaGVAXjExLjQuMCI6Ci0gIHZlcnNpb24gIjExLjQuMCIKLSAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGVtb3Rpb24vY2FjaGUvLS9jYWNoZS0xMS40 LjAudGd6IzI5M2ZjOWQ5YTdhMzhiOWFhZDhlOTMzN2U1MDE0MzY2YzNiMDlhYzAiCi0gIGludGVn cml0eSBzaGE1MTItWng3MGJqRTdMRXJSTzlPYVpyaGYyMlF5ZTF5NEY3aURsK0lUamV0MEoraStC ODhQckFPQmtLdmFBV2h4c1pmNzJ0RExhandDZ2ZDakoyZHZINzdDM2c9PQorIkBlbW90aW9uL2Nh Y2hlQF4xMS40LjAiLCAiQGVtb3Rpb24vY2FjaGVAXjExLjUuMCI6CisgIHZlcnNpb24gIjExLjUu MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGVtb3Rpb24vY2Fj aGUvLS9jYWNoZS0xMS41LjAudGd6I2E1ZWI3OGNiZWY4MTYzOTM5ZWUzNDVlM2RkZjBhZjIxN2I4 NDVlNjIiCisgIGludGVncml0eSBzaGE1MTItbUFaNVFScExyaUJ0YWovazJxeXJYd2NrNnllb3ox VjVsTXQvamZqNmlnV1UzNXlZbE5LczJMemlYVmd2SDgxZ25KWis5UVFOR2VsU3NudW9BeTZ1SXc9 PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBlbW90aW9uL21lbW9pemUiICJeMC43LjQiCi0gICAg IkBlbW90aW9uL3NoZWV0IiAiXjEuMC4wIgorICAgICJAZW1vdGlvbi9zaGVldCIgIl4xLjAuMyIK ICAgICAiQGVtb3Rpb24vdXRpbHMiICJeMS4wLjAiCiAgICAgIkBlbW90aW9uL3dlYWstbWVtb2l6 ZSIgIl4wLjIuNSIKLSAgICBzdHlsaXMgIl40LjAuMyIKKyAgICBzdHlsaXMgIl40LjAuMTAiCiAK ICJAZW1vdGlvbi9jb3JlQF4xMC4wLjE0IjoKICAgdmVyc2lvbiAiMTAuMS4xIgpAQCAtMTg5Mywx NCArMTU0OCwxNCBAQAogICBpbnRlZ3JpdHkgc2hhNTEyLWlnWDlhMzdEUjJaUEdZdFY2c3VaNndo cjhwVEZ0eUhMM0svb0xVb3R4cFNWTzJBU2Fwcm1BZTJEa3E3dEJvN0NSWTdNTURyQWE5bnVRUDkv WUc4RnhRPT0KIAogIkBlbW90aW9uL3JlYWN0QF4xMS4xLjEiLCAiQGVtb3Rpb24vcmVhY3RAXjEx LjEuNSI6Ci0gIHZlcnNpb24gIjExLjQuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vQGVtb3Rpb24vcmVhY3QvLS9yZWFjdC0xMS40LjAudGd6IzI0NjVhZDdiMDcz YTY5MTQwOWI4OGRmZDk2ZGMxNzA5N2RkYWQ5YjciCi0gIGludGVncml0eSBzaGE1MTItNFhrbFdz bDlCZHRhdExvSnBTanVzWGhwS3Y5WVZ0ZVlLaDloUEtQMVN4bCttc3dFRm9VZTBXdG10V2p4RWpr QTUxRFEyUVJNQ05PdktjU2xDUTdpdmc9PQorICB2ZXJzaW9uICIxMS41LjAiCisgIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BlbW90aW9uL3JlYWN0Ly0vcmVhY3QtMTEu NS4wLnRneiMxOWI1NzcxYmJmYmRhNWU4NTE3ZTk0OGEyZDkwNjQ4MTBmMDAyMmJkIgorICBpbnRl Z3JpdHkgc2hhNTEyLU1ZcS9ienAzclliZWU0RU1CT1JDbjRkdVBRZmdwaUVCNVh6clpFQm5VWkFM ODBRZGZyN0NFdi9UODBqd2FUbC9kblptdDlTblRhOE5rVHJ3Rk5wTGx3PT0KICAgZGVwZW5kZW5j aWVzOgogICAgICJAYmFiZWwvcnVudGltZSIgIl43LjEzLjEwIgotICAgICJAZW1vdGlvbi9jYWNo ZSIgIl4xMS40LjAiCisgICAgIkBlbW90aW9uL2NhY2hlIiAiXjExLjUuMCIKICAgICAiQGVtb3Rp b24vc2VyaWFsaXplIiAiXjEuMC4yIgotICAgICJAZW1vdGlvbi9zaGVldCIgIl4xLjAuMSIKKyAg ICAiQGVtb3Rpb24vc2hlZXQiICJeMS4wLjMiCiAgICAgIkBlbW90aW9uL3V0aWxzIiAiXjEuMC4w IgogICAgICJAZW1vdGlvbi93ZWFrLW1lbW9pemUiICJeMC4yLjUiCiAgICAgaG9pc3Qtbm9uLXJl YWN0LXN0YXRpY3MgIl4zLjMuMSIKQEAgLTE5MzIsMTAgKzE1ODcsMTAgQEAKICAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGVtb3Rpb24vc2hlZXQvLS9zaGVldC0wLjku NC50Z3ojODk0Mzc0YmVhMzllYzMwZjQ4OWJiZmMzNDM4MTkyYjk3NzRkMzJlNSIKICAgaW50ZWdy aXR5IHNoYTUxMi16TTlQRm1nVlNxQnc0ekwxMDFRMEhyQlZUR21wQXhGWkgvcFl4L2NqSlQ1YWR2 WGd1dmNnakhGVENhSU8zZW5ML3hyODl2SzJiaDBNZnlqOWFhMEFOQT09CiAKLSJAZW1vdGlvbi9z aGVldEBeMS4wLjAiLCAiQGVtb3Rpb24vc2hlZXRAXjEuMC4xIjoKLSAgdmVyc2lvbiAiMS4wLjEi Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BlbW90aW9uL3NoZWV0 Ly0vc2hlZXQtMS4wLjEudGd6IzI0NWY1NGFiYjAyZGZkODIzMjZlMjg2ODlmMzRjMjdhYTliMmE2 OTgiCi0gIGludGVncml0eSBzaGE1MTItR2JJdlZNZTRVK1pjKzkyOU4xVjduVzZZWUp0aWRqMzFs aWRTbWRZY1dvendvQklPYlhCbmFKa0tORGpackxtOU5jMEJSK1p5SE5hUlp4cU5aYm9mNWc9PQor IkBlbW90aW9uL3NoZWV0QF4xLjAuMSIsICJAZW1vdGlvbi9zaGVldEBeMS4wLjMiOgorICB2ZXJz aW9uICIxLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGVt b3Rpb24vc2hlZXQvLS9zaGVldC0xLjAuMy50Z3ojMDBjMzI2Y2Q3OTg1YzVjY2I4ZmUyYzFiNTky ODg2NTc5ZGNmYWI4ZiIKKyAgaW50ZWdyaXR5IHNoYTUxMi1Zb1g1R3lRNGRiN0xwYm1YSE11Yzhr ZWJ0QkdQNm5aZlJDNVoxM09LSk1peEJFd2Racko5MTRENnlKdi9QK1pIL1lZM0Y1czg5TllYMmhs WkFmM1NSUT09CiAKICJAZW1vdGlvbi9zdHlsZWQtYmFzZUBeMTAuMC4yNyI6CiAgIHZlcnNpb24g IjEwLjAuMzEiCkBAIC0xOTgwLDE1ICsxNjM1LDE1IEBACiAgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL0BlbW90aW9uL3dlYWstbWVtb2l6ZS8tL3dlYWstbWVtb2l6ZS0w LjIuNS50Z3ojOGVlZDk4MmUyZWU2ZjdmNGU0NGMyNTNlMTI5NjI5ODA3OTFlZmQ0NiIKICAgaW50 ZWdyaXR5IHNoYTUxMi02VTcxQzJXcDdyNVh0RnRRellyVzVpS0ZUNjdPaXhyU3hqSTRNcHRDSHpk U1ZsZ2FiY3p6cUxlMFpTZ251Yi81S3A0aFNicERCMXRNeXRaWTlwd3h4QT09CiAKLSJAZXNsaW50 L2VzbGludHJjQF4wLjQuMCI6Ci0gIHZlcnNpb24gIjAuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6 Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AZXNsaW50L2VzbGludHJjLy0vZXNsaW50cmMtMC40LjAu dGd6Izk5Y2MwYTA1ODRkNzJmMWRmMzhiOTAwZmIwNjJiYTk5NWYzOTU1NDciCi0gIGludGVncml0 eSBzaGE1MTItMlpQQ2MrdU5ialY1RVJKcithS1NQUndaZ0tkMnoxMXgwRWdMdmIxUFVSbVVybjlR TlJYRnFqZTBMZHE0NTRQZkFWeWFKWXlyRHZ2SUtTRlA0Tm5Cb2c9PQorIkBlc2xpbnQvZXNsaW50 cmNAXjAuNC4zIjoKKyAgdmVyc2lvbiAiMC40LjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL0Blc2xpbnQvZXNsaW50cmMvLS9lc2xpbnRyYy0wLjQuMy50Z3ojOWU0 Mjk4MWVmMDM1YmViM2RkNDlhZGQxN2FjYjk2ZThmZjZmMzk0YyIKKyAgaW50ZWdyaXR5IHNoYTUx Mi1KNktGRno1UUNZVUpxM3BmMG1qRWNDSlZFUmJ6djcxUFVJRGN6dWg5Smt3R0V6Y2VkNkNPNUFE TEhCMXJiZi8rb1BCdG9QZk1ZTk9wR0R6Q0FObGJYdz09CiAgIGRlcGVuZGVuY2llczoKICAgICBh anYgIl42LjEyLjQiCiAgICAgZGVidWcgIl40LjEuMSIKICAgICBlc3ByZWUgIl43LjMuMCIKLSAg ICBnbG9iYWxzICJeMTIuMS4wIgorICAgIGdsb2JhbHMgIl4xMy45LjAiCiAgICAgaWdub3JlICJe NC4wLjYiCiAgICAgaW1wb3J0LWZyZXNoICJeMy4yLjEiCiAgICAganMteWFtbCAiXjMuMTMuMSIK QEAgLTIwMDUsNiArMTY2MCwyMCBAQAogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9AZ2FyL3Byb21pc2lmeS8tL3Byb21pc2lmeS0xLjEuMi50Z3ojMzBhYTgyNWYxMWQ0 Mzg2NzFkNTg1YmQ0NGU3ZmQ1NjQ1MzVmYzIxMCIKICAgaW50ZWdyaXR5IHNoYTUxMi04MmNweUp5 S1JvUW9SaSsxNGliQ2VHUHUwQ3d5cGd0QkFkQmhxMVdmdmFncENaTktxd1hiS3dYbGxZU01HOTFE aG1HNGp0OWdOOGVQNmxHT3RvenVhdz09CiAKKyJAaHVtYW53aG9jb2Rlcy9jb25maWctYXJyYXlA XjAuNS4wIjoKKyAgdmVyc2lvbiAiMC41LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL0BodW1hbndob2NvZGVzL2NvbmZpZy1hcnJheS8tL2NvbmZpZy1hcnJheS0w LjUuMC50Z3ojMTQwNzk2N2Q0YzZlZWNkNzM4OGY4M2FjZjFlYWY0ZDBjNmU1OGVmOSIKKyAgaW50 ZWdyaXR5IHNoYTUxMi1GYWd0S0Z6NzRYclRsN3k2SEN6UXB3RGZYUDB5aHhlOWxITEQxVVp4anZa SWNieVJ6OHpURkYveVlOZlNmelU0MTRlRHdaMVNyTzBRdnR5Zit3Rk1RZz09CisgIGRlcGVuZGVu Y2llczoKKyAgICAiQGh1bWFud2hvY29kZXMvb2JqZWN0LXNjaGVtYSIgIl4xLjIuMCIKKyAgICBk ZWJ1ZyAiXjQuMS4xIgorICAgIG1pbmltYXRjaCAiXjMuMC40IgorCisiQGh1bWFud2hvY29kZXMv b2JqZWN0LXNjaGVtYUBeMS4yLjAiOgorICB2ZXJzaW9uICIxLjIuMSIKKyAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQGh1bWFud2hvY29kZXMvb2JqZWN0LXNjaGVtYS8t L29iamVjdC1zY2hlbWEtMS4yLjEudGd6I2I1MjA1MjllYzIxZDhlNTk0NWExODUxZGZkMWMzMmU5 NGUzOWZmNDUiCisgIGludGVncml0eSBzaGE1MTItWm5RTW5MVjRlN2hEbFV2dzhIK1U4QVNMMDJT UzJHbjYrOUFjM3dHR0xJZTcramUyQWVBT3hQWStpeklQSkRmRkRiN2VEamV2MFVzOE1PMWlGUk44 aEE9PQorCiAiQGlzdGFuYnVsanMvc2NoZW1hQF4wLjEuMiI6CiAgIHZlcnNpb24gIjAuMS4zIgog ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AaXN0YW5idWxqcy9zY2hl bWEvLS9zY2hlbWEtMC4xLjMudGd6I2U0NWUzODRlNGI4ZWMxNmJjZTJmZDkwM2FmNzg0NTBmNmJm N2VjOTgiCkBAIC0yMDYwLDkgKzE3MjksOSBAQAogICAgIHJlYWN0LWlzICJeMTYuOC4wIHx8IF4x Ny4wLjAiCiAKICJAbWF0ZXJpYWwtdWkvcGlja2Vyc0BeMy4yLjEwIjoKLSAgdmVyc2lvbiAiMy4y LjEwIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AbWF0ZXJpYWwt dWkvcGlja2Vycy8tL3BpY2tlcnMtMy4yLjEwLnRneiMxOWRmMDI0ODk1ODc2ZWIwZWM3Y2QyMzli YmFlYTU5NWY3MDNmMGFlIgotICBpbnRlZ3JpdHkgc2hhNTEyLUI4RzZPYm41UzNSQ2w3aHdhaGtR ajlzS1VhcHdYV0ZqaWF6L0JzdzFmaFlGZE5NbkRVb2xSaVdRU29LUGIxL29LZTM3RHRmc3pveXdp MVluYm8zeTh3PT0KKyAgdmVyc2lvbiAiMy4zLjEwIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9AbWF0ZXJpYWwtdWkvcGlja2Vycy8tL3BpY2tlcnMtMy4zLjEwLnRn eiNmMWIwZjk2MzM0OGNjMTkxNjQ1ZWYwYmRlZmY3YTY3YzZhYTI1NDg1IgorICBpbnRlZ3JpdHkg c2hhNTEyLWhTNHB4d24xWkdYVmttZ0Q0dHBGcGF1bVVhQWcyWnpiVHJ4bHRmQzV5UHc0QkpWK21H a2ZuUU9CNFZwV0VZWncyanY2NVowd0x3REUvcGlRaVBQWjN3PT0KICAgZGVwZW5kZW5jaWVzOgog ICAgICJAYmFiZWwvcnVudGltZSIgIl43LjYuMCIKICAgICAiQGRhdGUtaW8vY29yZSIgIjEueCIK QEAgLTIxMTcsMjUgKzE3ODYsMjUgQEAKICAgICBwcm9wLXR5cGVzICJeMTUuNy4yIgogICAgIHJl YWN0LWlzICJeMTYuOC4wIHx8IF4xNy4wLjAiCiAKLSJAbm9kZWxpYi9mcy5zY2FuZGlyQDIuMS40 IjoKLSAgdmVyc2lvbiAiMi4xLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL0Bub2RlbGliL2ZzLnNjYW5kaXIvLS9mcy5zY2FuZGlyLTIuMS40LnRneiNkNGIzNTQ5 YTVkYjVkZTI2ODNlMGMxMDcxYWI0ZjE0MDkwNGJiZjY5IgotICBpbnRlZ3JpdHkgc2hhNTEyLTMz ZzNwTUprM2JnNW5YYkwvK0NZNkkyZUpEelpBbmk0OVBmSm5MNWZnaFBUZ2dQdkJkL3BGTlNnSnNk QWdXcHR1RnU3cXEvRVJ2T1lGbGh2c0xUQ0tBPT0KKyJAbm9kZWxpYi9mcy5zY2FuZGlyQDIuMS41 IjoKKyAgdmVyc2lvbiAiMi4xLjUiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL0Bub2RlbGliL2ZzLnNjYW5kaXIvLS9mcy5zY2FuZGlyLTIuMS41LnRneiM3NjE5YzJl YjIxYjI1NDgzZjZkMTY3NTQ4YjRjZmQ1YTc0ODhjM2Q1IgorICBpbnRlZ3JpdHkgc2hhNTEyLXZx MjRCcTN5bTVIRVFtMk5LQ3IzeVhEd2pjN3ZUc0VUaFJEbmtwMkRLOXAxdXFMUitESHVybS9OT1Rv MEtHN0hZSFU3ZXBwS1pqM015cVl1TUJmNjJnPT0KICAgZGVwZW5kZW5jaWVzOgotICAgICJAbm9k ZWxpYi9mcy5zdGF0IiAiMi4wLjQiCisgICAgIkBub2RlbGliL2ZzLnN0YXQiICIyLjAuNSIKICAg ICBydW4tcGFyYWxsZWwgIl4xLjEuOSIKIAotIkBub2RlbGliL2ZzLnN0YXRAMi4wLjQiLCAiQG5v ZGVsaWIvZnMuc3RhdEBeMi4wLjIiOgotICB2ZXJzaW9uICIyLjAuNCIKLSAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQG5vZGVsaWIvZnMuc3RhdC8tL2ZzLnN0YXQtMi4w LjQudGd6I2EzZjJkZDYxYmFiNDNiOGRiOGZhMTA4YTEyMWNmZmZlNGM2NzY2NTUiCi0gIGludGVn cml0eSBzaGE1MTItSVlsSEpBMGNsdDIrVmc3YmNjcStUelJkSnZ2MTljMklOcUJTc29PTHAxamU3 eGp0cjdKMjYrV1hSNzJNQ2R2VTlxMXFUeklXRGZoTWYrRFJ2UUpLNFE9PQorIkBub2RlbGliL2Zz LnN0YXRAMi4wLjUiLCAiQG5vZGVsaWIvZnMuc3RhdEBeMi4wLjIiOgorICB2ZXJzaW9uICIyLjAu NSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQG5vZGVsaWIvZnMu c3RhdC8tL2ZzLnN0YXQtMi4wLjUudGd6IzViZDI2MmFmOTRlOWQyNWJkMWU3MWIwNWRlZWQ0NDg3 NmEyMjJlOGIiCisgIGludGVncml0eSBzaGE1MTItUmtoUFBwMnpycURBUUEvMmpOaG56dGNQQWx2 NjRYZGhJcDdhNzQ1NEE1b3ZJN0J1a3hndDdNWDd1ZHdBdTN6ZzFEY3BQVTByejNWVjFTZWFxdlk0 K0E9PQogCiAiQG5vZGVsaWIvZnMud2Fsa0BeMS4yLjMiOgotICB2ZXJzaW9uICIxLjIuNiIKLSAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQG5vZGVsaWIvZnMud2Fsay8t L2ZzLndhbGstMS4yLjYudGd6I2NjZTkzOTZiMzBhYTVhZmU5ZTM3NTY2MDhmNTgzMWFkY2I1M2Qw NjMiCi0gIGludGVncml0eSBzaGE1MTItOEJyb2FzNnZUdFc0R0lYVEFIRG9FMzJobk4yTTV5a2dD cFdHYnVYSFExNXZFTXFyMjNwQjc2ZS9HWmNZc1pDSEFMdjUwa3RkMjRxaEV5S3I2d0J0b3c9PQor ICB2ZXJzaW9uICIxLjIuOCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vQG5vZGVsaWIvZnMud2Fsay8tL2ZzLndhbGstMS4yLjgudGd6I2U5NTczN2U4YmI2NzQ2ZGRl ZGY2OWM1NTY5NTM0OTRmMTk2ZmU2OWEiCisgIGludGVncml0eSBzaGE1MTItb0dCK1V4bGdXY2dR a2d3bzhHY0VHd2Vtb1RGdDNGSU85YWJhYkJtYUd3WElvQktaK0dUeTBwUDE4NWJlR2c3TGxpaC9O U0hTVjJYQXMxbG56bm9jU2c9PQogICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBub2RlbGliL2ZzLnNj YW5kaXIiICIyLjEuNCIKKyAgICAiQG5vZGVsaWIvZnMuc2NhbmRpciIgIjIuMS41IgogICAgIGZh c3RxICJeMS42LjAiCiAKICJAbnBtY2xpL2ZzQF4xLjAuMCI6CkBAIC0yMTU0LDE1ICsxODIzLDE1 IEBACiAgICAgbWtkaXJwICJeMS4wLjQiCiAgICAgcmltcmFmICJeMy4wLjIiCiAKLSJAcG9sa2Ev dXJsQF4xLjAuMC1uZXh0LjE1IjoKLSAgdmVyc2lvbiAiMS4wLjAtbmV4dC4xNSIKLSAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHBvbGthL3VybC8tL3VybC0xLjAuMC1u ZXh0LjE1LnRneiM2YTlkMTQzZjdmNGY0OWRiMmQ3ODJmOWUxYzg4MzlhMjliNDNhZTIzIgotICBp bnRlZ3JpdHkgc2hhNTEyLTE1c3BpM1YyOFFkZXZsZVdCTlhFNHBJbHMzbkZabUJiVUdyVzlJVlB3 aVFjenVTYjluNzZUQ0I0YnNrOFRTZWwrSTFPa0hFZFBodTVRS01mWTZyUUhBPT0KKyJAcG9sa2Ev dXJsQF4xLjAuMC1uZXh0LjIwIjoKKyAgdmVyc2lvbiAiMS4wLjAtbmV4dC4yMSIKKyAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHBvbGthL3VybC8tL3VybC0xLjAuMC1u ZXh0LjIxLnRneiM1ZGU1YTIzODVhMzUzMDk0MjdmNjAxMTk5MmI1NDQ1MTRkNTU5YWExIgorICBp bnRlZ3JpdHkgc2hhNTEyLWE1U2FiMUM0L2ljcFRaVnpaYzVHaHB6ODh5UXRHT3lOcVlYY1pnT3Nz QjJ1dUFyK3dGL012TjZiZ3RXMzJxN0hIcnZCa2krQnNaME91TnY2RVYzSzlnPT0KIAotIkBwb3Bw ZXJqcy9jb3JlQF4yLjguMyI6Ci0gIHZlcnNpb24gIjIuOS4wIgotICByZXNvbHZlZCAiaHR0cHM6 Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AcG9wcGVyanMvY29yZS8tL2NvcmUtMi45LjAudGd6IzMy ZTYzMjEyMjkzZGQzZWZiYjUyMWNkMzVhNTAyMGFiNjZlYWE1NDYiCi0gIGludGVncml0eSBzaGE1 MTItd2p0S2VoRkFJQVJxMk94SzhqM0pyZ2dObEVzbEpmTnVTbTJBcnRlSWJLeVJNdHMyZzBhN0t6 VHhmUlZOVU0rTzBnbkJKMmhOVjhuV1BPWUJnSTFzZXc9PQorIkBwb3BwZXJqcy9jb3JlQF4yLjku MCI6CisgIHZlcnNpb24gIjIuMTAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vQHBvcHBlcmpzL2NvcmUvLS9jb3JlLTIuMTAuMi50Z3ojMDc5OGMwMzM1MWYwZGVh MWE1YTRjYWJkZGYyNmE1NWE3Y2JlZTU5MCIKKyAgaW50ZWdyaXR5IHNoYTUxMi1JWGYzWEE3K1h5 TjdDUDlnR2gvWEIwVXhWTWx2QVJHRWdHWEx1YkZJQ3NVTUd6NlErRFUraTRnR2xwT3hUakt2WGpr SkRKQzhZZHFkS2tEajlxWkhFUT09CiAKICJAcHJvamVjdHN0b3JtL2dlb21ldHJ5QF42LjYuMSI6 CiAgIHZlcnNpb24gIjYuNi4xIgpAQCAtMjIwOSwxMiArMTg3OCwxNyBAQAogICAgICJAcHJvamVj dHN0b3JtL3JlYWN0LWRpYWdyYW1zLWRlZmF1bHRzIiAiXjYuNi4xIgogICAgICJAcHJvamVjdHN0 b3JtL3JlYWN0LWRpYWdyYW1zLXJvdXRpbmciICJeNi42LjEiCiAKKyJAcmVhY3QtbGVhZmxldC9j b3JlQF4xLjEuMSI6CisgIHZlcnNpb24gIjEuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9AcmVhY3QtbGVhZmxldC9jb3JlLy0vY29yZS0xLjEuMS50Z3ojODI3 ZmQwNWJiNTQyY2Y4NzQxMTYxNzZkOGVmNDhkNWIxMjE2M2Y4MSIKKyAgaW50ZWdyaXR5IHNoYTUx Mi03UEdMV2E5TVo1eC9jV3k4RUgyVnpJNFQ4cTVXcHVIYml4ekNEWHFpeFAvV3lxd0lyZzVORFVQ Z1l1Rm5CNElFSVpGKzZuQTI2NW1ZenN3Rm8vaDFQdz09CisKICJAc2ltb253ZXAvcGlja3JAXjEu NS4xIjoKLSAgdmVyc2lvbiAiMS44LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL0BzaW1vbndlcC9waWNrci8tL3BpY2tyLTEuOC4xLnRneiNlMTM2Y2JkOWMzNDVk ZGJiN2Q3MWViMTRhZjU0NGM3OTgxNjVkNDk1IgotICBpbnRlZ3JpdHkgc2hhNTEyLTNRNStJTldX MFB5Ky9FOWhneTBjeUQwLzB3L3lHWmJreGFtNlJ6RlZGRE9FSGdBcU1WSlIreDl6bng1OC9reS9a SXZFLzc4RmJIMTg5eUlDOWgxMTFBPT0KKyAgdmVyc2lvbiAiMS44LjIiCisgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0BzaW1vbndlcC9waWNrci8tL3BpY2tyLTEuOC4y LnRneiM5NmRjODY2NzU5NDBkN2NhZDYzZDY5YzIyMDgzZGQxY2JiOTc5N2NiIgorICBpbnRlZ3Jp dHkgc2hhNTEyLS9sNXc4QklrcnBQNm4xeHNldHg5TVdQV2xVNk9ibE41WWdaWnBoeGFuMFRxNEJC eVRDRVRMNmx5SWVZOGxhZ2FsUzJOYnQ0RjJXMDM0S0hMSWl1bktBPT0KICAgZGVwZW5kZW5jaWVz OgotICAgIGNvcmUtanMgIl4zLjEyLjEiCisgICAgY29yZS1qcyAiXjMuMTUuMSIKICAgICBuYW5v cG9wICJeMi4xLjAiCiAKICJAc2luZHJlc29yaHVzL2lzQF4wLjcuMCI6CkBAIC0yMjI3LDYgKzE5 MDEsMTEgQEAKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHNvY2tl dC5pby9iYXNlNjQtYXJyYXlidWZmZXIvLS9iYXNlNjQtYXJyYXlidWZmZXItMS4wLjIudGd6IzU2 OGQ5YmVhZTAwYjBkODM1ZjRmOGM1M2ZkNTU3MTQ5ODY0OTJlNjEiCiAgIGludGVncml0eSBzaGE1 MTItZE9sQ0JLbkR3NGlTaGFJc0gvYnh1aktUTTE4KzJUT0FzWXorS1NjMTFBbTM4SDRxNVh3OEJi ejk3WllkclZOTSt1bTNwN3c4NkJ2dm1jbjlxKzUrZVE9PQogCisiQHNvY2tldC5pby9jb21wb25l bnQtZW1pdHRlckB+My4wLjAiOgorICB2ZXJzaW9uICIzLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHNvY2tldC5pby9jb21wb25lbnQtZW1pdHRlci8tL2Nv bXBvbmVudC1lbWl0dGVyLTMuMC4wLnRneiM4ODYzOTE1Njc2ZjgzN2Q5ZGFkN2I3NmY1MGNiNTAw YzFlOTQyMmU5IgorICBpbnRlZ3JpdHkgc2hhNTEyLTJwVEd1aWJBWEpzd0FQSmphS2lzdGhxUy9O T0s1eXBHNExZVDZ0RUFWMFMvbXhXMHpPSXZZdkdLMFY4dzgrU0h4QW02dlJNU2pxU2FsRlhlQkFx cytRPT0KKwogIkBzcGhpbnh4eHgvY29sb3ItY29udmVyc2lvbkBeMi4yLjIiOgogICB2ZXJzaW9u ICIyLjIuMiIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHNwaGlu eHh4eC9jb2xvci1jb252ZXJzaW9uLy0vY29sb3ItY29udmVyc2lvbi0yLjIuMi50Z3ojMDNlY2My OTI3OWUzYzBjODMyZjYxODVhNWJmYTM0OTc4NThhYzhjYSIKQEAgLTIzNDQsOSArMjAyMyw5IEBA CiAgICAgcmVhY3QtdHJhbnNpdGlvbi1zdGF0ZSAiXjEuMS4zIgogCiAiQHRpcHB5anMvcmVhY3RA XjQuMi4wIjoKLSAgdmVyc2lvbiAiNC4yLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL0B0aXBweWpzL3JlYWN0Ly0vcmVhY3QtNC4yLjMudGd6I2MyZGJlOWViNzFi ZDlmZmEzOTc0ZjliYThlM2E0YTZmYzE1MzhhZWQiCi0gIGludGVncml0eSBzaGE1MTItNDR2QmFw cVJPUUk3UTVuRHRYMU1NQWdjQVYrM0RzSWkrbS80NUN4UTcyQzVMRE5tTkRxOWgzZjA0eDNOSE1y VWhXY2ZnZmdqWUEyRW1lTFNILzRlUmc9PQorICB2ZXJzaW9uICI0LjIuNiIKKyAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHRpcHB5anMvcmVhY3QvLS9yZWFjdC00LjIu Ni50Z3ojOTcxNjc3YTU5OWJmNjYzZjIwYmIxYzYwYTYyYjk1NTViNzQ5Y2M3MSIKKyAgaW50ZWdy aXR5IHNoYTUxMi05MVJpY0RSK0g3b0RTeVB5Y0kxM3EzYjdvNE82MHdhMm9SYmpsejJmeVJMbUhJ bWM0dnlEd3VVUDhOdFphTjBWQVJKWTVoeWJ2RFlyRnpoWTkrTGJ5dz09CiAgIGRlcGVuZGVuY2ll czoKICAgICB0aXBweS5qcyAiXjYuMy4xIgogCkBAIC0yMzY4LDkgKzIwNDcsOSBAQAogICAgIGNs YXNzbmFtZXMgIioiCiAKICJAdHlwZXMvY29tcG9uZW50LWVtaXR0ZXJAXjEuMi4xMCI6Ci0gIHZl cnNpb24gIjEuMi4xMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v QHR5cGVzL2NvbXBvbmVudC1lbWl0dGVyLy0vY29tcG9uZW50LWVtaXR0ZXItMS4yLjEwLnRneiNl ZjViMTU4OWI5ZjE2NTQ0NjQyZTQ3M2RiNWVhNTYzOTEwN2VmM2VhIgotICBpbnRlZ3JpdHkgc2hh NTEyLWJzamxldVJLV21HcWFqTWVya3pveDE5YUdic2NRWDVybW12dlhsM3dsSXA1Z01HMUhna2l3 UHhzTjVwMDcwZkJES1ROU1Bnb2pWYnVZMStIV01iRmhnPT0KKyAgdmVyc2lvbiAiMS4yLjExIgor ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AdHlwZXMvY29tcG9uZW50 LWVtaXR0ZXIvLS9jb21wb25lbnQtZW1pdHRlci0xLjIuMTEudGd6IzUwZDQ3ZDQyYjM0NzI1Mzgx N2EzOTcwOWZlZjAzY2U2NmExMDg1MDYiCisgIGludGVncml0eSBzaGE1MTItU1JYak0rdGZzU2xB OVZ1RzhoR08ybmZ0MnA4empYQ0sxVmNDNk40TlhiQmJZYlNpYTlrekNDaFlRYWpJanpJcU9PT3Vo NU9jazZNbVYyb3V4NGpEWlE9PQogCiAiQHR5cGVzL2Nvb2tpZUBeMC40LjEiOgogICB2ZXJzaW9u ICIwLjQuMSIKQEAgLTIzODMsNDggKzIwNjIsNDggQEAKICAgaW50ZWdyaXR5IHNoYTUxMi12dCtr RGhxL00yYXliZXJFdEpjSU4vaHhYeTFQays1OWcyRlYvWlFjZWVhVHlDdEN1Y2pMMlE3RlhsRmp0 V240bjE1S0NyMU5FMmxOTkZocDBsRVRodz09CiAKICJAdHlwZXMvZXNsaW50LXNjb3BlQF4zLjcu MCI6Ci0gIHZlcnNpb24gIjMuNy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9AdHlwZXMvZXNsaW50LXNjb3BlLy0vZXNsaW50LXNjb3BlLTMuNy4wLnRneiM0Nzky ODE2ZTMxMTE5ZWJkNTA2OTAyYTQ4MmNhZWM0OTUxZmFiZDg2IgotICBpbnRlZ3JpdHkgc2hhNTEy LU8vcWwyK3JyQ1VlMlcycnM3d01SK0dxUFJjZ0I2VWlxTjVSaHJSNXhydUZsWTdsOVlMTW4wWmtE empvSExlaUZrUjhNQ1FaVnVkVXV1dlEyQkxDOVF3PT0KKyAgdmVyc2lvbiAiMy43LjEiCisgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0B0eXBlcy9lc2xpbnQtc2NvcGUv LS9lc2xpbnQtc2NvcGUtMy43LjEudGd6IzhkYzM5MGE3YjRmOWRkOWYxMjg0NjI5ZWZjZTk4MmU0 MTYxMjExNmUiCisgIGludGVncml0eSBzaGE1MTItU0NGZW9ncWlwdG1zNEZnMjlXcE9UazVuSEl6 ZnBLQ2VtU042M2tzQlFZS1RjWG9KRW1KYWdWK0RoVm1iYXBaelk0LzVZYU9WMW5ad3JzVTc5ZkZt MWc9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkB0eXBlcy9lc2xpbnQiICIqIgogICAgICJAdHlw ZXMvZXN0cmVlIiAiKiIKIAogIkB0eXBlcy9lc2xpbnRAKiI6Ci0gIHZlcnNpb24gIjcuMi43Igot ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AdHlwZXMvZXNsaW50Ly0v ZXNsaW50LTcuMi43LnRneiNmN2VmMWNmMGRjZWFiMGFlNmY5YTk3NmEwYTlhZjE0YWIxYmFjYTI2 IgotICBpbnRlZ3JpdHkgc2hhNTEyLUVIWGJjMXoyR29RUnFIYUFUNytncnhsVEozV0UyWU5lRDZq bHBQb1JjODNjQ29UaFJZK05VV2pDVVphWW1rNTFPSUNrUFhuMmhocGhjV2NXWGdOVzBRPT0KKyAg dmVyc2lvbiAiNy4yOC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9AdHlwZXMvZXNsaW50Ly0vZXNsaW50LTcuMjguMi50Z3ojMGZmMjk0N2NkZDMwNTg5N2M1MmQ1 MzcyMjk0ZThjNzZmMzUxZGI2OCIKKyAgaW50ZWdyaXR5IHNoYTUxMi1LdWJiQURQa2ZvVTc1S2dL ZUtMc0ZIWG5VNGlwSDd3WWcwVFJUMzNOSzNOM3lpdTdqbEZBQW95Z0lXQlYrS2J1SHgvRytBdnVH WDZEbGxuSzM1Z2ZKQT09CiAgIGRlcGVuZGVuY2llczoKICAgICAiQHR5cGVzL2VzdHJlZSIgIioi CiAgICAgIkB0eXBlcy9qc29uLXNjaGVtYSIgIioiCiAKLSJAdHlwZXMvZXN0cmVlQCoiLCAiQHR5 cGVzL2VzdHJlZUBeMC4wLjQ2IjoKLSAgdmVyc2lvbiAiMC4wLjQ2IgotICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AdHlwZXMvZXN0cmVlLy0vZXN0cmVlLTAuMC40Ni50 Z3ojMGZiNmJmYmJlYWJkN2EzMDg4MDUwNDk5MzM2OWM0YmYxZGVhYjFmZSIKLSAgaW50ZWdyaXR5 IHNoYTUxMi1sYUlqd1RRYUQrNUR1a0JaYXlnUTc5SzFaMGpiMWJQRU1ScmtYU0xqdENjWm0rYWJ5 cDVZYnJxcFNMekQ0MkZ3V1c2Z0svYVM0TllwSjgwNG5HMmJyZz09CisiQHR5cGVzL2VzdHJlZUAq IiwgIkB0eXBlcy9lc3RyZWVAXjAuMC41MCI6CisgIHZlcnNpb24gIjAuMC41MCIKKyAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHR5cGVzL2VzdHJlZS8tL2VzdHJlZS0w LjAuNTAudGd6IzFlMGNhYTkzNjRkM2ZjY2QyOTMxYzNlZDk2ZmRiZWFhNWQ0Y2NhODMiCisgIGlu dGVncml0eSBzaGE1MTItQzZONXMyWkZ0dVpSajU0azIvenlSaE5Eakp3d2NWaUFNM05ibTh6akJw YnFBZFowMG1yMENGeHZTS2VPOFkvZTAzV1ZGTHBRTWRIWVZmVWQ2U0IrSHc9PQogCiAiQHR5cGVz L2dsb2JAXjcuMS4xIjoKLSAgdmVyc2lvbiAiNy4xLjMiCi0gIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL0B0eXBlcy9nbG9iLy0vZ2xvYi03LjEuMy50Z3ojZTZiYTgwZjM2 YjdkYWFkMmM2ODVhY2Q5MjY2MzgyZTY4OTg1YzE4MyIKLSAgaW50ZWdyaXR5IHNoYTUxMi1TRVll R0FJUUlRWDhOTjZMREtwckxqYnJkNWRBUk01RVhzZDhHSS9BNWwwYXBZSTFmR01XZ1BIU2U0WktM NGVvemxBeUkrZG9VRTlYYllTNHhDa1Exdz09CisgIHZlcnNpb24gIjcuMi4wIgorICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AdHlwZXMvZ2xvYi8tL2dsb2ItNy4yLjAu dGd6I2JjMWI1YmYzYWE5MmYyNWJkNWRkMzlmMzVjNTczNjFiZGNlNWIyZWIiCisgIGludGVncml0 eSBzaGE1MTItWlV4YnpLbDBJZkpJTFRTNnQ3aXA1ZlFRTS9KM1RKWXViRG0zbk1iZ3ViTk5ZUzYy ZVhlVXBvTFVDOC83ZkpOaUZZSFRyR1BRbjdoc3BEVXpJSFgzVUE9PQogICBkZXBlbmRlbmNpZXM6 CiAgICAgIkB0eXBlcy9taW5pbWF0Y2giICIqIgogICAgICJAdHlwZXMvbm9kZSIgIioiCiAKLSJA dHlwZXMvanNvbi1zY2hlbWFAKiIsICJAdHlwZXMvanNvbi1zY2hlbWFAXjcuMC41IiwgIkB0eXBl cy9qc29uLXNjaGVtYUBeNy4wLjYiOgotICB2ZXJzaW9uICI3LjAuNyIKLSAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHR5cGVzL2pzb24tc2NoZW1hLy0vanNvbi1zY2hl bWEtNy4wLjcudGd6Izk4YTk5MzUxNmM4NTllYjBkNWM0YzhmMDk4MzE3YTllYTY4ZGI5YWQiCi0g IGludGVncml0eSBzaGE1MTItY3hXRlFWc2VCbTZPOUdidzFJV2I4cjZPUzRPaFN0M2hQWkxrRkFw TGpNOFRFWFJPQnVRR0xBSDJpMmdacGNYZExCSXJwWHVURGhIN1ZibTFpWG1OR0E9PQorIkB0eXBl cy9qc29uLXNjaGVtYUAqIiwgIkB0eXBlcy9qc29uLXNjaGVtYUBeNy4wLjUiLCAiQHR5cGVzL2pz b24tc2NoZW1hQF43LjAuOCI6CisgIHZlcnNpb24gIjcuMC45IgorICByZXNvbHZlZCAiaHR0cHM6 Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AdHlwZXMvanNvbi1zY2hlbWEvLS9qc29uLXNjaGVtYS03 LjAuOS50Z3ojOTdlZGM5MDM3ZWEwYzM4NTg1MzIwYjI4OTY0ZGRlM2IzOWU0NjYwZCIKKyAgaW50 ZWdyaXR5IHNoYTUxMi1xY1VYdWVtdEV1K0U1d1pTSkhOeFVYZUNaaEFmWEtRNDFEK2R1WCtWWVBk ZTd4eUVWWmNpKy9vWEtKTDEzdG5SczlsUjJwcjRmb2Q1OUdUNi9YMS95UT09CiAKICJAdHlwZXMv bWluaW1hdGNoQCoiOgotICB2ZXJzaW9uICIzLjAuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vQHR5cGVzL21pbmltYXRjaC8tL21pbmltYXRjaC0zLjAuNC50Z3oj ZjBlYzI1ZGJmMmYwZTRiMTg2NDczMTNhYzAzMTEzNGNhNWIyNGIyMSIKLSAgaW50ZWdyaXR5IHNo YTUxMi0xejhrNHd6Rm5OalZLL3RseHZyV3VLNVdNdDZteWRXV1A3K3p2SDVlRmVwNG9qK1VrcmZp SlRSdGpDZUJYTnB3YUEvRllxcXRiNC9RUzRpYW5GcElSQT09CisgIHZlcnNpb24gIjMuMC41Igor ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AdHlwZXMvbWluaW1hdGNo Ly0vbWluaW1hdGNoLTMuMC41LnRneiMxMDAxY2M1ZTZhMzcwNGI4M2MyMzYwMjdlNzdmMmY1OGVh MDEwZjQwIgorICBpbnRlZ3JpdHkgc2hhNTEyLUtsejk0OWgwMkd6MnVaQ01Hd0RVU0RTMVlCbFRk RERnYldIaSs4MWwyOXRRQUxVdHZ6NHJBWWk1dW9WaEU1TGFnb3E2RGVxQVVsYnJIdlcvbVhEZ2RR PT0KIAogIkB0eXBlcy9ub2RlQCoiLCAiQHR5cGVzL25vZGVAPj0xMC4wLjAiOgotICB2ZXJzaW9u ICIxNC4xNC4zMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHR5 cGVzL25vZGUvLS9ub2RlLTE0LjE0LjMyLnRneiM5MGM1YzRhOGQ3MmJiYmZlNTMwMzNmMTIyMzQx MzQzMjQ5MTgzNDQ4IgotICBpbnRlZ3JpdHkgc2hhNTEyLS9DdHJmdHgvenA0bThKT3VqTTVaaHd6 bFdMeDIybmJRSmlWcXo4L3pFMTVnT2VFVyt1bHkzRlNYNGZHRnBjZkV2RnpYY01DSndxOWxHVldn eUFSWGhnPT0KKyAgdmVyc2lvbiAiMTYuMTEuNiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vQHR5cGVzL25vZGUvLS9ub2RlLTE2LjExLjYudGd6IzZiZWY3YTJhMGFk Njg0Y2Y2ZTkwZmNmZTMxY2VjYWJkOWNlMGEzYWUiCisgIGludGVncml0eSBzaGE1MTItdWE3UGdV b2VRRmptV1Bjb285a2hpUHVtM1BkNjBrNC8yWkdYdDE4c20yU2xrMFcweFpUcXQ1WTBOeTFOeUJp TjFFVlEvK0ZhRjlOY1k0UWU2cndrNXc9PQogCiAiQHR5cGVzL3BhcnNlLWpzb25AXjQuMC4wIjoK ICAgdmVyc2lvbiAiNC4wLjAiCkBAIC0yNDMyLDE0ICsyMTExLDE0IEBACiAgIGludGVncml0eSBz aGE1MTItLy9vb3JFWmpMNnNiUGNLVWFDZElHbElVZUgyNm1nemltakJCNzdHNlhSZ25EbC9MNXdP bnB5QkdSZS9NbWY1Q1ZXM1B3RUJFMU5qaU1aL3NzRmg0d0E9PQogCiAiQHR5cGVzL3Byb3AtdHlw ZXNAKiI6Ci0gIHZlcnNpb24gIjE1LjcuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vQHR5cGVzL3Byb3AtdHlwZXMvLS9wcm9wLXR5cGVzLTE1LjcuMy50Z3ojMmFi MGQ1ZGEyZTU4MTVmOTRiMGI5ZDRiOTVkMWU1ZjI0M2FiMmNhNyIKLSAgaW50ZWdyaXR5IHNoYTUx Mi1LZlJMM1B1SG1xUUxPRysydEdwUk8yNkN0ZytDcTFFMDFEMkRNcmlLRUFUSGdXTGZlTkRtcTll MjlROVdJa3kwZFEzTlBrZDFtellIOExtOTM2Wjlxdz09CisgIHZlcnNpb24gIjE1LjcuNCIKKyAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHR5cGVzL3Byb3AtdHlwZXMv LS9wcm9wLXR5cGVzLTE1LjcuNC50Z3ojZmNmNzIwNWMyNWRmZjc5NWVlNzlhZjFlMzBkYTJjOTc5 MDgwOGYxMSIKKyAgaW50ZWdyaXR5IHNoYTUxMi1yWjVkckMvaldqckFyclM4QlI2U0lyNGNXcFcw OVJOVFl0OUFNWm8zSnd3aWYraWFjWEFxZ1ZqbTBCMEJ2L1MxamhEWEtIcVJWTkNiQUNrSjg5UkFu UT09CiAKICJAdHlwZXMvcUBeMS41LjEiOgotICB2ZXJzaW9uICIxLjUuNCIKLSAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHR5cGVzL3EvLS9xLTEuNS40LnRneiMxNTky NTQxNGUwYWQyY2Q3NjViZmVmNTg4NDJmN2UyNmE3YWNjYjI0IgotICBpbnRlZ3JpdHkgc2hhNTEy LTFIY0RhczhTRWo0ejFXYzY5NnRINTZHOE9sUmFIL3NxWk95bk5OQitIRjBXT2VYUGF4VHRiWXpK WTJvRWZpVXhqU0tqaENLcitNdlI3ZENIY0VlbHVnPT0KKyAgdmVyc2lvbiAiMS41LjUiCisgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0B0eXBlcy9xLy0vcS0xLjUuNS50 Z3ojNzVhMmE4ZTdkOGFiNGIyMzA0MTQ1MDVkOTIzMzVkMWRjYjUzYTZkZiIKKyAgaW50ZWdyaXR5 IHNoYTUxMi1MMjhqMkZjSmZTWk9uTDFXQmpEWXAydlVIQ2VJRmx5WUkvNTNFd0QvcktVQlE3TXRV VWZiUVdpeUtKR3BjbnY0L1dncmhXc0ZLcmNQc3RjQXQvSjB0UT09CiAKICJAdHlwZXMvcmVhY3Qt ZG9tQF4xNi4wLjExIjoKICAgdmVyc2lvbiAiMTYuOS4xNCIKQEAgLTI0NDksMzkgKzIxMjgsMzkg QEAKICAgICAiQHR5cGVzL3JlYWN0IiAiXjE2IgogCiAiQHR5cGVzL3JlYWN0LXRyYW5zaXRpb24t Z3JvdXBAXjQuMi4wIjoKLSAgdmVyc2lvbiAiNC40LjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL0B0eXBlcy9yZWFjdC10cmFuc2l0aW9uLWdyb3VwLy0vcmVhY3Qt dHJhbnNpdGlvbi1ncm91cC00LjQuMS50Z3ojZTFhM2NiMjc4ZGY3ZjQ3ZjE3YjUwODJiMWIzZGEx NzE3MGJkNDRiMSIKLSAgaW50ZWdyaXR5IHNoYTUxMi12SW82OXFLS2NZb0o4d0tDSmp3U2dDVE0r ejNjaHczZzE4ZGtyRGZWWDY2NXRNSDd0bWJEeEVBblBkZXk0Z1Rsd1p6NVF1SEd6ZCtodWwwT1Za RHFxUT09CisgIHZlcnNpb24gIjQuNC40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9AdHlwZXMvcmVhY3QtdHJhbnNpdGlvbi1ncm91cC8tL3JlYWN0LXRyYW5zaXRp b24tZ3JvdXAtNC40LjQudGd6I2FjZDRjY2VhYTJiZTZiNzU3ZGI2MWVkN2I0MzJlMTAzMjQyZDE2 M2UiCisgIGludGVncml0eSBzaGE1MTItN2dBUHo3YW5WSzV4emJlUVc5d0ZCRGc3RysrYVBMQUZZ MFFhU01Pb3U5ckpacGJ1STU4V0F1SnJndStxUjkybDYxZ3JsbkNVZTdBRlg4S0dhaEFndWc9PQog ICBkZXBlbmRlbmNpZXM6CiAgICAgIkB0eXBlcy9yZWFjdCIgIioiCiAKLSJAdHlwZXMvcmVhY3RA KiIsICJAdHlwZXMvcmVhY3RAXjE2IjoKLSAgdmVyc2lvbiAiMTYuMTQuMTAiCi0gIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0B0eXBlcy9yZWFjdC8tL3JlYWN0LTE2LjE0 LjEwLnRneiM3NmJjMWM0MmVkNWFiMGQyYWIxM2U1YzU4ZmFhY2NhYWQzNDQ5NDc3IgotICBpbnRl Z3JpdHkgc2hhNTEyLVFhZEJzTXlGNmxkakVBWEVoc21FVy9MMHVCREpUOHl3N1FvZTVzUm5FS1Zy ek1raVlvSndxb0w1VEtKT2xBcnNuL3d2SUpNL1hkVnprZEw2K0FTNjRRPT0KKyJAdHlwZXMvcmVh Y3RAKiI6CisgIHZlcnNpb24gIjE3LjAuMzQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL0B0eXBlcy9yZWFjdC8tL3JlYWN0LTE3LjAuMzQudGd6Izc5N2I2NmQzNTli NjkyZTNmMTk5OTFiNmIwN2U0YjBjNzA2YzAxMDIiCisgIGludGVncml0eSBzaGE1MTItNDZGRUdy TWpjMis4WGhIWElMciszKy9zVGUzT2Z6U1BVOVlHS0lMTHJVWWJRMUNMUUM5RGFxbzFLekVOR1hB V3dyRndpWTBsNFpiRjIwZ1J2Z3BXVGc9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkB0eXBlcy9w cm9wLXR5cGVzIiAiKiIKICAgICAiQHR5cGVzL3NjaGVkdWxlciIgIioiCiAgICAgY3NzdHlwZSAi XjMuMC4yIgogCi0iQHR5cGVzL3JlYWN0QF4xNi43LjE4IjoKLSAgdmVyc2lvbiAiMTYuMTQuMTgi Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0B0eXBlcy9yZWFjdC8t L3JlYWN0LTE2LjE0LjE4LnRneiNiMmJjZWEwNWVlMjQ0ZmRlOTJkNDA5ZjkxYmQ4ODhjYThlNTRi MjBmIgotICBpbnRlZ3JpdHkgc2hhNTEyLWVleXFkMW1xb0c0M21JMFR2Tkt5OVFOZjFUanozREVP c1JQM3JsUG8zNU9lTUl0MDVJK3Y5UlI4WnZMMkd1WVplRjJXQWNMWEpaTXp1NnpkejNWYnRRPT0K KyJAdHlwZXMvcmVhY3RAXjE2IiwgIkB0eXBlcy9yZWFjdEBeMTYuNy4xOCI6CisgIHZlcnNpb24g IjE2LjE0LjIwIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AdHlw ZXMvcmVhY3QvLS9yZWFjdC0xNi4xNC4yMC50Z3ojZmY2ZTkzMmFkNzFkOTJjMjc1OTBlNGE4NjY3 YzdhNTNhN2QwYmFhZCIKKyAgaW50ZWdyaXR5IHNoYTUxMi1TVjdUYVZjOGU5RS81WHV2NlRJeUo1 VmhRcFpvVkZKcVg2SVpnajVIWm9GQ3RJRENBckUzcVhrY0hsYzZPL1VkNFV3Y01vWCt0bHZEQTk1 WXJLZExnQT09CiAgIGRlcGVuZGVuY2llczoKICAgICAiQHR5cGVzL3Byb3AtdHlwZXMiICIqIgog ICAgICJAdHlwZXMvc2NoZWR1bGVyIiAiKiIKICAgICBjc3N0eXBlICJeMy4wLjIiCiAKICJAdHlw ZXMvc2NoZWR1bGVyQCoiOgotICB2ZXJzaW9uICIwLjE2LjEiCi0gIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0B0eXBlcy9zY2hlZHVsZXIvLS9zY2hlZHVsZXItMC4xNi4x LnRneiMxODg0NTIwNWU4NmZmMDAzODUxN2FhYjdhMThhNjJhNmI5ZjcxMjc1IgotICBpbnRlZ3Jp dHkgc2hhNTEyLUVhQ3hiYW5WZXl4RFJUUUJrZExiM0J2bC9ISzdQQks2VUpqc1NpeEIwaUhLb1d4 RTV1dTJRL0RndHBPaFBJb2pOMFpsMXdodk9kN1BvSHMyUDBzNWVBPT0KKyAgdmVyc2lvbiAiMC4x Ni4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9AdHlwZXMvc2No ZWR1bGVyLy0vc2NoZWR1bGVyLTAuMTYuMi50Z3ojMWE2MmY4OTUyNTcyM2RkZTI0YmExYjAxYjA5 MmJmNWRmOGFkNGQzOSIKKyAgaW50ZWdyaXR5IHNoYTUxMi1ocHBRRUJEbWx3aEZBWEtKWDJLbldM WXU1eU1maTkxeWF6UGIybCtsYkppd1crd2RvMWdOZVJBKzNSZ05TTzM5V1lYMmV1ZXk0MUtFd25x ZXNVMkpldz09CiAKICJAdHlwZXMvc3R5bGVkLWpzeEBeMi4yLjgiOgotICB2ZXJzaW9uICIyLjIu OCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHR5cGVzL3N0eWxl ZC1qc3gvLS9zdHlsZWQtanN4LTIuMi44LnRneiNiNTBkMTNkOGEzYzM0MDM2MjgyZDY1MTk0NTU0 Y2YxODZiYWI3MjM0IgotICBpbnRlZ3JpdHkgc2hhNTEyLVlqeWU5VndNZFllWGZTNzFpaHVlV1JT eHJydXVYVHdLQ2J6dWU0KzViMnJqblEvL0F0eU03bXlaMUJFaE5oQlEvbkwvUkU3YmRUb1VvTGxu Mm1pS3ZnPT0KKyAgdmVyc2lvbiAiMi4yLjkiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL0B0eXBlcy9zdHlsZWQtanN4Ly0vc3R5bGVkLWpzeC0yLjIuOS50Z3ojZTUw YjNmODY4YzA1NWJjYmY5YmMzNTNlY2E2YzEwZmRhZDMyYTUzZiIKKyAgaW50ZWdyaXR5IHNoYTUx Mi1XL2lUbElrR0V5VEJHVEV2WkNleThFZ1FsUTVsMER3TXFpM2lPWGxMczJreUJ3WVRYSEtFaVU2 SVo1RXdvUnduZ0w4L2RHWXV6ZXpTdXA4OXR0VkhMdz09CiAgIGRlcGVuZGVuY2llczoKICAgICAi QHR5cGVzL3JlYWN0IiAiKiIKIApAQCAtMjUwMSwxNDMgKzIxODAsMTQzIEBACiAgICAgdW5kZXJz Y29yZSAiXjEuOS4xIgogICAgIHVybC1qb2luICJeNC4wLjAiCiAKLSJAd2ViYXNzZW1ibHlqcy9h c3RAMS4xMS4wIjoKLSAgdmVyc2lvbiAiMS4xMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9Ad2ViYXNzZW1ibHlqcy9hc3QvLS9hc3QtMS4xMS4wLnRneiNhNWFh Njc5ZWZkYzllNTE3MDdhNDIwNzEzOWRhNTc5MjA1NTU5NjFmIgotICBpbnRlZ3JpdHkgc2hhNTEy LWtYMlc0OUxXc2J0aHJtSVJNYlFadVFEaEd0anlxWGZFbW1IeUVpNFhXblNadFBteFkwKzNhblBJ enNuUmI0NVZIL0o1NXpsT2ZXdlp1WTQ3YUpaVEpnPT0KKyJAd2ViYXNzZW1ibHlqcy9hc3RAMS4x MS4xIjoKKyAgdmVyc2lvbiAiMS4xMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9Ad2ViYXNzZW1ibHlqcy9hc3QvLS9hc3QtMS4xMS4xLnRneiMyYmZkNzY3ZWFl MWE2OTk2ZjQzMmZmN2U4ZDdmYzc1Njc5YzBiNmE3IgorICBpbnRlZ3JpdHkgc2hhNTEyLXVrQmgx NHFGTGp4VFFOVFhvY2R5a3NONVFkTTI4UzFDeEh0MnJkc2tGeUwreEZWN1ZyZW11QkxWYm1DZVBq K1VSYWxYQkVOeC85TG03bG5oaWh0Q1N3PT0KICAgZGVwZW5kZW5jaWVzOgotICAgICJAd2ViYXNz ZW1ibHlqcy9oZWxwZXItbnVtYmVycyIgIjEuMTEuMCIKLSAgICAiQHdlYmFzc2VtYmx5anMvaGVs cGVyLXdhc20tYnl0ZWNvZGUiICIxLjExLjAiCisgICAgIkB3ZWJhc3NlbWJseWpzL2hlbHBlci1u dW1iZXJzIiAiMS4xMS4xIgorICAgICJAd2ViYXNzZW1ibHlqcy9oZWxwZXItd2FzbS1ieXRlY29k ZSIgIjEuMTEuMSIKIAotIkB3ZWJhc3NlbWJseWpzL2Zsb2F0aW5nLXBvaW50LWhleC1wYXJzZXJA MS4xMS4wIjoKLSAgdmVyc2lvbiAiMS4xMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9Ad2ViYXNzZW1ibHlqcy9mbG9hdGluZy1wb2ludC1oZXgtcGFyc2VyLy0v ZmxvYXRpbmctcG9pbnQtaGV4LXBhcnNlci0xLjExLjAudGd6IzM0ZDYyMDUyZjQ1M2NkNDMxMDFk NzJlYWI0OTY2YTAyMjU4Nzk0N2MiCi0gIGludGVncml0eSBzaGE1MTItUS9hVllzL1ZuUERWWXZz Q0JML2dTZ3dtZmplQ2I0TFc4K1RNck8zY1N6SkltZ3Y4bHh4RVBNMkpBNWpNcml2RTdMU3ozVitQ RnF0TWJsczNtMWV4REE9PQorIkB3ZWJhc3NlbWJseWpzL2Zsb2F0aW5nLXBvaW50LWhleC1wYXJz ZXJAMS4xMS4xIjoKKyAgdmVyc2lvbiAiMS4xMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9Ad2ViYXNzZW1ibHlqcy9mbG9hdGluZy1wb2ludC1oZXgtcGFyc2Vy Ly0vZmxvYXRpbmctcG9pbnQtaGV4LXBhcnNlci0xLjExLjEudGd6I2Y2YzYxYTcwNWYwZmQ3YTZh ZWNhYTRlODE5OGYyM2Q5ZGMxNzllNGYiCisgIGludGVncml0eSBzaGE1MTItaUdSZnljNUJxK05u TnVYOGI1aHdCclJqemYwb2NySlBJNkdXRm9kQkZ6bUZueXZyUTgzU0hLaG1pbENVLzhKdjY3aTRH SlpCTWhFemx0eHpjTmFndFE9PQogCi0iQHdlYmFzc2VtYmx5anMvaGVscGVyLWFwaS1lcnJvckAx LjExLjAiOgotICB2ZXJzaW9uICIxLjExLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL0B3ZWJhc3NlbWJseWpzL2hlbHBlci1hcGktZXJyb3IvLS9oZWxwZXItYXBp LWVycm9yLTEuMTEuMC50Z3ojYWFlYThmYjNiOTIzZjRhYWE5YjUxMmZmNTQxYjAxM2ZmYjY4ZDJk NCIKLSAgaW50ZWdyaXR5IHNoYTUxMi1iYVQvdmE5NWVYaVhiMlFmbFN4OTVRR1Q1Q2x6V3BHYWE4 TDdKbkpiZ3pvWWVhQTI3RkN2dUJYVTc1OGwrS1hXUm5kRW1VWGpQMFE1ZmliaGF2SW44dz09Cisi QHdlYmFzc2VtYmx5anMvaGVscGVyLWFwaS1lcnJvckAxLjExLjEiOgorICB2ZXJzaW9uICIxLjEx LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0B3ZWJhc3NlbWJs eWpzL2hlbHBlci1hcGktZXJyb3IvLS9oZWxwZXItYXBpLWVycm9yLTEuMTEuMS50Z3ojMWE2MzE5 MmQ4Nzg4ZTVjMDEyODAwYmE2YTdhNDZjNzA1Mjg4ZmQxNiIKKyAgaW50ZWdyaXR5IHNoYTUxMi1S bGhTOENCQ1hmUlVSL2N3bzJobzlia2hlU1hHMCtOd29vWGNjM1BBSUxBTGYyUUxkRnlqN0tHc0tS YlZjOTVoWm5obkVSb240a1cvRDNTWnBwNlRjZz09CiAKLSJAd2ViYXNzZW1ibHlqcy9oZWxwZXIt YnVmZmVyQDEuMTEuMCI6Ci0gIHZlcnNpb24gIjEuMTEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vQHdlYmFzc2VtYmx5anMvaGVscGVyLWJ1ZmZlci8tL2hlbHBl ci1idWZmZXItMS4xMS4wLnRneiNkMDI2YzI1ZDE3NWUzODhhN2RiZGE5Njk0ZTkxZTc0M2NiZTli NjQyIgotICBpbnRlZ3JpdHkgc2hhNTEyLXU5SFBCRWw0RFMrdkE4cUxRZEVRNk4vZUpRN2dUN2FO dk1JbzhBQVd2QWwveE1yY09TaUkyTTBNQW5NQ3kzaklGa2U3YkVlZS9Kd2RYMW5VcEN0ZHlBPT0K KyJAd2ViYXNzZW1ibHlqcy9oZWxwZXItYnVmZmVyQDEuMTEuMSI6CisgIHZlcnNpb24gIjEuMTEu MSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHdlYmFzc2VtYmx5 anMvaGVscGVyLWJ1ZmZlci8tL2hlbHBlci1idWZmZXItMS4xMS4xLnRneiM4MzJhOTAwZWI0NDQ4 ODRjZGU5YTdjYWQ0NjdmODE1MDBmNWU1YWI1IgorICBpbnRlZ3JpdHkgc2hhNTEyLWd3aWtGNjVh RE5lZVhhOEp4WGEyQkFrK1JFalN5aHJOQzlad2RUMGY4amM0ZFFRZURRN0c0bTBmMlFDTFBKaU1U VE82d2ZEbVJtai9wVzBQc1V2SWNBPT0KIAotIkB3ZWJhc3NlbWJseWpzL2hlbHBlci1udW1iZXJz QDEuMTEuMCI6Ci0gIHZlcnNpb24gIjEuMTEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vQHdlYmFzc2VtYmx5anMvaGVscGVyLW51bWJlcnMvLS9oZWxwZXItbnVt YmVycy0xLjExLjAudGd6IzdhYjA0MTcyZDU0ZTMxMmNjNmVhNDI4NmQ3ZDlmYTI3Yzg4Y2Q0Zjki Ci0gIGludGVncml0eSBzaGE1MTItRGhSUUtlbElqMDFzNUlnZHNPSk1LTHBwSSs0enBtY01RM1hi b0ZQTHdDcFNOSDZIcW8xcml0Z0hnRDBucUhlU1lxb2ZBNmFCTi9ObVh1R2pNMWpFZlE9PQorIkB3 ZWJhc3NlbWJseWpzL2hlbHBlci1udW1iZXJzQDEuMTEuMSI6CisgIHZlcnNpb24gIjEuMTEuMSIK KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHdlYmFzc2VtYmx5anMv aGVscGVyLW51bWJlcnMvLS9oZWxwZXItbnVtYmVycy0xLjExLjEudGd6IzY0ZDgxZGEyMTlmYmJi YTFlM2JkMWJmYzc0ZjZlOGM0ZTEwYTYyYWUiCisgIGludGVncml0eSBzaGE1MTItdkRrYnhpQjh6 Zm5QZE5LOVJhamNleTVDMHcrUUp1Z0VnbE4wb2Yra21POGw3bERiNzdBbmxLWVFGN2Fhclp1Q3J2 K2wwVXZxTCs2OGdTRHIzazlMUFE9PQogICBkZXBlbmRlbmNpZXM6Ci0gICAgIkB3ZWJhc3NlbWJs eWpzL2Zsb2F0aW5nLXBvaW50LWhleC1wYXJzZXIiICIxLjExLjAiCi0gICAgIkB3ZWJhc3NlbWJs eWpzL2hlbHBlci1hcGktZXJyb3IiICIxLjExLjAiCisgICAgIkB3ZWJhc3NlbWJseWpzL2Zsb2F0 aW5nLXBvaW50LWhleC1wYXJzZXIiICIxLjExLjEiCisgICAgIkB3ZWJhc3NlbWJseWpzL2hlbHBl ci1hcGktZXJyb3IiICIxLjExLjEiCiAgICAgIkB4dHVjL2xvbmciICI0LjIuMiIKIAotIkB3ZWJh c3NlbWJseWpzL2hlbHBlci13YXNtLWJ5dGVjb2RlQDEuMTEuMCI6Ci0gIHZlcnNpb24gIjEuMTEu MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHdlYmFzc2VtYmx5 anMvaGVscGVyLXdhc20tYnl0ZWNvZGUvLS9oZWxwZXItd2FzbS1ieXRlY29kZS0xLjExLjAudGd6 Izg1ZmRjZGE0MTI5OTAyZmU4NmY4MWFiZjdlNzIzNjk1M2VjNWE0ZTEiCi0gIGludGVncml0eSBz aGE1MTItTWJtaHZ4WEV4bTU0MnRXUkVnU0ZuT1ZvMDdmRHBzQkpnM3NJbDZmU3A5eHV1NzVlR3o1 bHozMXE3d1RMZmZ3TDNaYTdYTlJDTVp5MjEwK3Ruc1VTRUE9PQorIkB3ZWJhc3NlbWJseWpzL2hl bHBlci13YXNtLWJ5dGVjb2RlQDEuMTEuMSI6CisgIHZlcnNpb24gIjEuMTEuMSIKKyAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHdlYmFzc2VtYmx5anMvaGVscGVyLXdh c20tYnl0ZWNvZGUvLS9oZWxwZXItd2FzbS1ieXRlY29kZS0xLjExLjEudGd6I2YzMjgyNDFlNDFl N2IxOTlkMGIyMGMxOGU4ODQyOWM0NDMzMjk1ZTEiCisgIGludGVncml0eSBzaGE1MTItUHZwb09H aUp3WGVUclNmL3FmdWRKaHdsdkRReEZnZWxiTXF0cTUyV1dpWEM2WGdnMUlSRWRuZ21QTjNiczRS b084M1BuTC9uRnJ4dWNYajErQlg2MlE9PQogCi0iQHdlYmFzc2VtYmx5anMvaGVscGVyLXdhc20t c2VjdGlvbkAxLjExLjAiOgotICB2ZXJzaW9uICIxLjExLjAiCi0gIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0B3ZWJhc3NlbWJseWpzL2hlbHBlci13YXNtLXNlY3Rpb24v LS9oZWxwZXItd2FzbS1zZWN0aW9uLTEuMTEuMC50Z3ojOWNlMmNjODkzMDAyNjI1MDljODAxYjRh ZjExM2QxY2EyNWMxYTc1YiIKLSAgaW50ZWdyaXR5IHNoYTUxMi0zRWI4OGhjYmZZL0ZDdWtyZzZp M0VIOEgyVXNEN3g4Vnk0N2lWSnJQOTY3QTlKR3FnQlZMOWFINzFTRVRQeDFKckdzT1VWTG8wYzd2 TUNOMjJ5dEpldz09CisiQHdlYmFzc2VtYmx5anMvaGVscGVyLXdhc20tc2VjdGlvbkAxLjExLjEi OgorICB2ZXJzaW9uICIxLjExLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL0B3ZWJhc3NlbWJseWpzL2hlbHBlci13YXNtLXNlY3Rpb24vLS9oZWxwZXItd2FzbS1z ZWN0aW9uLTEuMTEuMS50Z3ojMjFlZTA2NWE3YjYzNWYzMTllNzM4ZjBkZDczYmZiZGEyODFjMDk3 YSIKKyAgaW50ZWdyaXR5IHNoYTUxMi0xMFA5Tm8yOXJZWDFqN0YzRVZQWDNKdkdQUVBhZStBb211 U1RQaUY5ZUJRZUNoSEk2aXFqTUl3UjlKbU9KWHdwbm4vb1ZHRGs3STVJbHNrdU13VS9wZz09CiAg IGRlcGVuZGVuY2llczoKLSAgICAiQHdlYmFzc2VtYmx5anMvYXN0IiAiMS4xMS4wIgotICAgICJA d2ViYXNzZW1ibHlqcy9oZWxwZXItYnVmZmVyIiAiMS4xMS4wIgotICAgICJAd2ViYXNzZW1ibHlq cy9oZWxwZXItd2FzbS1ieXRlY29kZSIgIjEuMTEuMCIKLSAgICAiQHdlYmFzc2VtYmx5anMvd2Fz bS1nZW4iICIxLjExLjAiCisgICAgIkB3ZWJhc3NlbWJseWpzL2FzdCIgIjEuMTEuMSIKKyAgICAi QHdlYmFzc2VtYmx5anMvaGVscGVyLWJ1ZmZlciIgIjEuMTEuMSIKKyAgICAiQHdlYmFzc2VtYmx5 anMvaGVscGVyLXdhc20tYnl0ZWNvZGUiICIxLjExLjEiCisgICAgIkB3ZWJhc3NlbWJseWpzL3dh c20tZ2VuIiAiMS4xMS4xIgogCi0iQHdlYmFzc2VtYmx5anMvaWVlZTc1NEAxLjExLjAiOgotICB2 ZXJzaW9uICIxLjExLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L0B3ZWJhc3NlbWJseWpzL2llZWU3NTQvLS9pZWVlNzU0LTEuMTEuMC50Z3ojNDY5NzVkNTgzZjk4 MjhmNWQwOTRhYzIxMGUyMTk0NDFjNGU2ZjVjZiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1LWHpPcXBj WVF3QWZlUTZXYkY2SFhvKzB1ZEJObXcwaVhEbUVLNXNGbG1RZG1ORCt0cjc3M1RpOC81VC9NNlRs LzQxM0FyU0pFckFUZDhJbjNCK1dCQT09CisiQHdlYmFzc2VtYmx5anMvaWVlZTc1NEAxLjExLjEi OgorICB2ZXJzaW9uICIxLjExLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL0B3ZWJhc3NlbWJseWpzL2llZWU3NTQvLS9pZWVlNzU0LTEuMTEuMS50Z3ojOTYzOTI5 ZTliYmQwNTcwOWU3ZTEyMjQzYTA5OTE4MDgxMjk5MjYxNCIKKyAgaW50ZWdyaXR5IHNoYTUxMi1o Sjg3UUlQdEFNS2JGcTZDR1RrWllKaXZFd1pEYlFVZ1lkM3FLU2FkVE5PaFZZN3ArZ2ZQNlNyMGxM UlZUYUcxSmpGaityM1ljaG9xUll4TkgzTTBHUT09CiAgIGRlcGVuZGVuY2llczoKICAgICAiQHh0 dWMvaWVlZTc1NCIgIl4xLjIuMCIKIAotIkB3ZWJhc3NlbWJseWpzL2xlYjEyOEAxLjExLjAiOgot ICB2ZXJzaW9uICIxLjExLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL0B3ZWJhc3NlbWJseWpzL2xlYjEyOC8tL2xlYjEyOC0xLjExLjAudGd6I2Y3MzUzZGUxZGYz OGFhMjAxY2JhOWZiODhiNDNmNDFmNzVmZjQwM2IiCi0gIGludGVncml0eSBzaGE1MTItYXFic0hh MW1TUUFiZWVOY2wzOHVuNnFWWSsraGg4T3BDT3p4aGl4U1lnYlJmTldjeEpOSlF3ZTJyZXpLOVhF Y3NzSmJiV0lrYmxhSlJ3R01TOXpwK2c9PQorIkB3ZWJhc3NlbWJseWpzL2xlYjEyOEAxLjExLjEi OgorICB2ZXJzaW9uICIxLjExLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL0B3ZWJhc3NlbWJseWpzL2xlYjEyOC8tL2xlYjEyOC0xLjExLjEudGd6I2NlODE0YjQ1 NTc0ZTkzZDc2YmFlMWZiMjY0NGFiOWNkZDk1MjdhYTUiCisgIGludGVncml0eSBzaGE1MTItQkoy UDBoTlowdStUaDFZWlhKcHpXNm1pd3FRVUdjSUhUMUcvc2Y3MmdMVkQ5RFo1QWRZVHFQTmJIWmg2 SzFNNVZtS3ZGWHdHU1daQUR6K3FCV3hlUnc9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkB4dHVj L2xvbmciICI0LjIuMiIKIAotIkB3ZWJhc3NlbWJseWpzL3V0ZjhAMS4xMS4wIjoKLSAgdmVyc2lv biAiMS4xMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9Ad2Vi YXNzZW1ibHlqcy91dGY4Ly0vdXRmOC0xLjExLjAudGd6Izg2ZTQ4Zjk1OWNmNDllMGU1MDkxZjA2 OWE3MDliODYyZjVhMmNhZGYiCi0gIGludGVncml0eSBzaGE1MTItQS9sY2xHeEg2U3BTTFN5Rm93 TXpPLythREVQVTRodkVpb29DTVhRUGNRRlBQSmFZY1BRTktHT0NMVXlTSnNZSjR0cmJwcitGczA4 bjRqZWxrVlRHVnc9PQotCi0iQHdlYmFzc2VtYmx5anMvd2FzbS1lZGl0QDEuMTEuMCI6Ci0gIHZl cnNpb24gIjEuMTEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v QHdlYmFzc2VtYmx5anMvd2FzbS1lZGl0Ly0vd2FzbS1lZGl0LTEuMTEuMC50Z3ojZWU0YTVjOWY2 NzcwNDZhMjEwNTQyYWU2Mzg5NzA5NGMyMDI3Y2I3OCIKLSAgaW50ZWdyaXR5IHNoYTUxMi1KSFEw ZGFtWHkwRzZKOXVjeUtWWE8yajA4SlZKMm50a2RKbHExVVRpVXJJZ2ZHTW1BN0lrNVZkQy9MOGhC SzQ2a1ZKZ3Vqa0JJb010VDh5VnIreVZPUT09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQHdlYmFz c2VtYmx5anMvYXN0IiAiMS4xMS4wIgotICAgICJAd2ViYXNzZW1ibHlqcy9oZWxwZXItYnVmZmVy IiAiMS4xMS4wIgotICAgICJAd2ViYXNzZW1ibHlqcy9oZWxwZXItd2FzbS1ieXRlY29kZSIgIjEu MTEuMCIKLSAgICAiQHdlYmFzc2VtYmx5anMvaGVscGVyLXdhc20tc2VjdGlvbiIgIjEuMTEuMCIK LSAgICAiQHdlYmFzc2VtYmx5anMvd2FzbS1nZW4iICIxLjExLjAiCi0gICAgIkB3ZWJhc3NlbWJs eWpzL3dhc20tb3B0IiAiMS4xMS4wIgotICAgICJAd2ViYXNzZW1ibHlqcy93YXNtLXBhcnNlciIg IjEuMTEuMCIKLSAgICAiQHdlYmFzc2VtYmx5anMvd2FzdC1wcmludGVyIiAiMS4xMS4wIgotCi0i QHdlYmFzc2VtYmx5anMvd2FzbS1nZW5AMS4xMS4wIjoKLSAgdmVyc2lvbiAiMS4xMS4wIgotICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9Ad2ViYXNzZW1ibHlqcy93YXNt LWdlbi8tL3dhc20tZ2VuLTEuMTEuMC50Z3ojM2NkYjM1ZTcwMDgyZDQyYTM1MTY2OTg4ZGRhNjRm MjRjZWI5N2FiZSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1CRVV2MWFqMFdwdENaOWtJUzMwdGg1SUxB U1VuQVBFdkUzdFZNVHJJdG5aUlQ5dFhDTFcyTEVYVDhlekx3NTlycVBQOWtsaDlMUG1wVStXbVJR bUNQUT09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQHdlYmFzc2VtYmx5anMvYXN0IiAiMS4xMS4w IgotICAgICJAd2ViYXNzZW1ibHlqcy9oZWxwZXItd2FzbS1ieXRlY29kZSIgIjEuMTEuMCIKLSAg ICAiQHdlYmFzc2VtYmx5anMvaWVlZTc1NCIgIjEuMTEuMCIKLSAgICAiQHdlYmFzc2VtYmx5anMv bGViMTI4IiAiMS4xMS4wIgotICAgICJAd2ViYXNzZW1ibHlqcy91dGY4IiAiMS4xMS4wIgotCi0i QHdlYmFzc2VtYmx5anMvd2FzbS1vcHRAMS4xMS4wIjoKLSAgdmVyc2lvbiAiMS4xMS4wIgotICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9Ad2ViYXNzZW1ibHlqcy93YXNt LW9wdC8tL3dhc20tb3B0LTEuMTEuMC50Z3ojMTYzOGFlMTg4MTM3ZjRiYjAzMWY1NjhhNDEzY2Qy NGQzMmY5Mjk3OCIKLSAgaW50ZWdyaXR5IHNoYTUxMi10SFVTUDVGNHl3eWgzaFowK2ZEUXVXeEt4 M21KaVBlRnVmZys5Z3dUcFlwMzI0bVBDUWdudVZLd3pMVFpWcWowZHVSRG92blBhWnFEd295aElP OGtZZz09Ci0gIGRlcGVuZGVuY2llczoKLSAgICAiQHdlYmFzc2VtYmx5anMvYXN0IiAiMS4xMS4w IgotICAgICJAd2ViYXNzZW1ibHlqcy9oZWxwZXItYnVmZmVyIiAiMS4xMS4wIgotICAgICJAd2Vi YXNzZW1ibHlqcy93YXNtLWdlbiIgIjEuMTEuMCIKLSAgICAiQHdlYmFzc2VtYmx5anMvd2FzbS1w YXJzZXIiICIxLjExLjAiCi0KLSJAd2ViYXNzZW1ibHlqcy93YXNtLXBhcnNlckAxLjExLjAiOgot ICB2ZXJzaW9uICIxLjExLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL0B3ZWJhc3NlbWJseWpzL3dhc20tcGFyc2VyLy0vd2FzbS1wYXJzZXItMS4xMS4wLnRneiMz ZTY4MGI4ODMwZDViMTNkMWVjODZjYzQyZjM4ZjNkNGE3NzAwNzU0IgotICBpbnRlZ3JpdHkgc2hh NTEyLTZMMjg1U2d1OWdwaHJjcERYSU52bTBNOUJza3pubnpKVEU3Z1lrakRieEVUMjhzaERxcDI3 d3BydXl4M0MyUy9kdkV3aWlnQndMQTFjejdsTlVpMGt3PT0KLSAgZGVwZW5kZW5jaWVzOgotICAg ICJAd2ViYXNzZW1ibHlqcy9hc3QiICIxLjExLjAiCi0gICAgIkB3ZWJhc3NlbWJseWpzL2hlbHBl ci1hcGktZXJyb3IiICIxLjExLjAiCi0gICAgIkB3ZWJhc3NlbWJseWpzL2hlbHBlci13YXNtLWJ5 dGVjb2RlIiAiMS4xMS4wIgotICAgICJAd2ViYXNzZW1ibHlqcy9pZWVlNzU0IiAiMS4xMS4wIgot ICAgICJAd2ViYXNzZW1ibHlqcy9sZWIxMjgiICIxLjExLjAiCi0gICAgIkB3ZWJhc3NlbWJseWpz L3V0ZjgiICIxLjExLjAiCi0KLSJAd2ViYXNzZW1ibHlqcy93YXN0LXByaW50ZXJAMS4xMS4wIjoK LSAgdmVyc2lvbiAiMS4xMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn LmNvbS9Ad2ViYXNzZW1ibHlqcy93YXN0LXByaW50ZXIvLS93YXN0LXByaW50ZXItMS4xMS4wLnRn eiM2ODBkMWY2YTUzNjVkNmQ0MDE5NzRhOGU5NDllMDU0NzRlMWZhYjdlIgotICBpbnRlZ3JpdHkg c2hhNTEyLUZnNU9YNDZwUmRUZ0I3cktJVW9qa2g5dlhhVk42c0dZQ25FaUpOMUdZa2IwUlB3U2ha WHA2S1REcW1vTWRRUEtoY3JvT1hoM2ZFem1rV21DWWFLWWhRPT0KLSAgZGVwZW5kZW5jaWVzOgot ICAgICJAd2ViYXNzZW1ibHlqcy9hc3QiICIxLjExLjAiCisiQHdlYmFzc2VtYmx5anMvdXRmOEAx LjExLjEiOgorICB2ZXJzaW9uICIxLjExLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL0B3ZWJhc3NlbWJseWpzL3V0ZjgvLS91dGY4LTEuMTEuMS50Z3ojZDFmOGI3 NjQzNjllN2M2ZTZiYWUzNTBlODU0ZGVjOWE1OWYwYTNmZiIKKyAgaW50ZWdyaXR5IHNoYTUxMi05 a3FjeEFFZE1oaXdRa0hwa05pb3JaenFwR3JvZFFRMklHckhIeEN5K096bmcwb2Z5TUEwbFRxaUxr VnMxdXpUUmVqWCsvTzBFT1Q3S3hxVlB1WG9zUT09CisKKyJAd2ViYXNzZW1ibHlqcy93YXNtLWVk aXRAMS4xMS4xIjoKKyAgdmVyc2lvbiAiMS4xMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9Ad2ViYXNzZW1ibHlqcy93YXNtLWVkaXQvLS93YXNtLWVkaXQtMS4x MS4xLnRneiNhZDIwNmViZjRiZjk1YTA1OGNlOTg4MGE4YzA5MmM1ZGVjODE5M2Q2IgorICBpbnRl Z3JpdHkgc2hhNTEyLWcrUnN1cFVDMWFUSGZSOENEZ25zVlJWWkZKcWRrRkhwc0hNZkp1V1F6V1Uz dHZuTEMwN1VxSElDZlArNFh5TDJ0bnIxYW12bDFTZHAwNlRuWUNtVmtBPT0KKyAgZGVwZW5kZW5j aWVzOgorICAgICJAd2ViYXNzZW1ibHlqcy9hc3QiICIxLjExLjEiCisgICAgIkB3ZWJhc3NlbWJs eWpzL2hlbHBlci1idWZmZXIiICIxLjExLjEiCisgICAgIkB3ZWJhc3NlbWJseWpzL2hlbHBlci13 YXNtLWJ5dGVjb2RlIiAiMS4xMS4xIgorICAgICJAd2ViYXNzZW1ibHlqcy9oZWxwZXItd2FzbS1z ZWN0aW9uIiAiMS4xMS4xIgorICAgICJAd2ViYXNzZW1ibHlqcy93YXNtLWdlbiIgIjEuMTEuMSIK KyAgICAiQHdlYmFzc2VtYmx5anMvd2FzbS1vcHQiICIxLjExLjEiCisgICAgIkB3ZWJhc3NlbWJs eWpzL3dhc20tcGFyc2VyIiAiMS4xMS4xIgorICAgICJAd2ViYXNzZW1ibHlqcy93YXN0LXByaW50 ZXIiICIxLjExLjEiCisKKyJAd2ViYXNzZW1ibHlqcy93YXNtLWdlbkAxLjExLjEiOgorICB2ZXJz aW9uICIxLjExLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0B3 ZWJhc3NlbWJseWpzL3dhc20tZ2VuLy0vd2FzbS1nZW4tMS4xMS4xLnRneiM4NmM1ZWEzMDQ4NDk3 NTliN2Q4OGM0N2EzMmY0ZjAzOWFlM2M4Zjc2IgorICBpbnRlZ3JpdHkgc2hhNTEyLUY3UXFLWHd3 TmxNbXN1bGo2K083cjRtbXRBbENXZk8vMEhkZ094U2tsWmZRY0R1MFRwTGlEMW1SdC96RjI1Qms1 OUZJakV1R0FJeW41ZWk0eU1mTGhBPT0KKyAgZGVwZW5kZW5jaWVzOgorICAgICJAd2ViYXNzZW1i bHlqcy9hc3QiICIxLjExLjEiCisgICAgIkB3ZWJhc3NlbWJseWpzL2hlbHBlci13YXNtLWJ5dGVj b2RlIiAiMS4xMS4xIgorICAgICJAd2ViYXNzZW1ibHlqcy9pZWVlNzU0IiAiMS4xMS4xIgorICAg ICJAd2ViYXNzZW1ibHlqcy9sZWIxMjgiICIxLjExLjEiCisgICAgIkB3ZWJhc3NlbWJseWpzL3V0 ZjgiICIxLjExLjEiCisKKyJAd2ViYXNzZW1ibHlqcy93YXNtLW9wdEAxLjExLjEiOgorICB2ZXJz aW9uICIxLjExLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0B3 ZWJhc3NlbWJseWpzL3dhc20tb3B0Ly0vd2FzbS1vcHQtMS4xMS4xLnRneiM2NTdiNGMyMjAyZjRj ZjNiMzQ1ZjhhNGM2NDYxYzhjMjQxODk4NWYyIgorICBpbnRlZ3JpdHkgc2hhNTEyLVZxbmtOcW5a bFU1RUI2NHBwMWw3aGRtM2htUXc3VmdxYTBLRi9LQ05POXNJcEk2Rms2YnJERWlYK2lDT1lydk11 QldEd3MwTmtUT3hZRWI4NVhRSEh3PT0KKyAgZGVwZW5kZW5jaWVzOgorICAgICJAd2ViYXNzZW1i bHlqcy9hc3QiICIxLjExLjEiCisgICAgIkB3ZWJhc3NlbWJseWpzL2hlbHBlci1idWZmZXIiICIx LjExLjEiCisgICAgIkB3ZWJhc3NlbWJseWpzL3dhc20tZ2VuIiAiMS4xMS4xIgorICAgICJAd2Vi YXNzZW1ibHlqcy93YXNtLXBhcnNlciIgIjEuMTEuMSIKKworIkB3ZWJhc3NlbWJseWpzL3dhc20t cGFyc2VyQDEuMTEuMSI6CisgIHZlcnNpb24gIjEuMTEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vQHdlYmFzc2VtYmx5anMvd2FzbS1wYXJzZXIvLS93YXNtLXBh cnNlci0xLjExLjEudGd6Izg2Y2E3MzQ1MzRmNDE3ZTliZDNjNjdjN2ExYzc1ZDhiZTQxZmIxOTki CisgIGludGVncml0eSBzaGE1MTItcnJCdWp3K2RKdTMyZ1lCNy9MdXA2VWhka1B4OVM5U25vYlp6 UlZMN1ZjQkg5QnQ5YkNCTEV1WC9ZWE9PdEJzT1o0TlFyUnlrS2hmZlJXSHZpZ1F2T0E9PQorICBk ZXBlbmRlbmNpZXM6CisgICAgIkB3ZWJhc3NlbWJseWpzL2FzdCIgIjEuMTEuMSIKKyAgICAiQHdl YmFzc2VtYmx5anMvaGVscGVyLWFwaS1lcnJvciIgIjEuMTEuMSIKKyAgICAiQHdlYmFzc2VtYmx5 anMvaGVscGVyLXdhc20tYnl0ZWNvZGUiICIxLjExLjEiCisgICAgIkB3ZWJhc3NlbWJseWpzL2ll ZWU3NTQiICIxLjExLjEiCisgICAgIkB3ZWJhc3NlbWJseWpzL2xlYjEyOCIgIjEuMTEuMSIKKyAg ICAiQHdlYmFzc2VtYmx5anMvdXRmOCIgIjEuMTEuMSIKKworIkB3ZWJhc3NlbWJseWpzL3dhc3Qt cHJpbnRlckAxLjExLjEiOgorICB2ZXJzaW9uICIxLjExLjEiCisgIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL0B3ZWJhc3NlbWJseWpzL3dhc3QtcHJpbnRlci8tL3dhc3Qt cHJpbnRlci0xLjExLjEudGd6I2QwYzczYmVkYThlZWM1NDI2ZjEwYWU4ZWY1NWNlZTVlNzA4NGMy ZjAiCisgIGludGVncml0eSBzaGE1MTItSVFib1VXTTRlS3pXVytOL2ppajJzUmF0S01oOTlRRWVs bzNFYjJxMHFYa3ZQUklTQWo4UXh0bXc1aXR3cUsrVFRrQnVVSUU0NUF4WVBUb3FQdEw1Z2c9PQor ICBkZXBlbmRlbmNpZXM6CisgICAgIkB3ZWJhc3NlbWJseWpzL2FzdCIgIjEuMTEuMSIKICAgICAi QHh0dWMvbG9uZyIgIjQuMi4yIgogCi0iQHdlYnBhY2stY2xpL2NvbmZpZ3Rlc3RAXjEuMC4zIjoK LSAgdmVyc2lvbiAiMS4wLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL0B3ZWJwYWNrLWNsaS9jb25maWd0ZXN0Ly0vY29uZmlndGVzdC0xLjAuMy50Z3ojMjA0YmNm Zjg3Y2RhM2VhNDgxMDg4MWY3ZWE5NmU1ZjUzMjFiODdiOSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1X UXMwZXA5OEZYWDJYQkFmUXBSYlkwTWE2QUR3OEpSNnhvSWthSWlKSXpDbEdPTXFWUnZQQ1dxbmRU eGYyOERnRm9wV2FuMEVLdEh0Zy81VzFoMFprdz09CisiQHdlYnBhY2stY2xpL2NvbmZpZ3Rlc3RA XjEuMS4wIjoKKyAgdmVyc2lvbiAiMS4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL0B3ZWJwYWNrLWNsaS9jb25maWd0ZXN0Ly0vY29uZmlndGVzdC0xLjEuMC50 Z3ojODM0MmJlZjBiYWRmYjdkZmQzYjU3NmYyNTc0YWI4MGM3MjViZTA0MyIKKyAgaW50ZWdyaXR5 IHNoYTUxMi10dE9rRWtvYWxFSGE3UmFGWXBNMEVySzF4YzR0d2czQW05aGZIaEw3TVZxbEhlYm5r WWQyd3VJL1pxVERqMGNWelpobzZQZGluWTBwaEZaVjNPME16Zz09CiAKLSJAd2VicGFjay1jbGkv aW5mb0BeMS4yLjQiOgotICB2ZXJzaW9uICIxLjIuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vQHdlYnBhY2stY2xpL2luZm8vLS9pbmZvLTEuMi40LnRneiM3Mzgx ZmQ0MWM5NTc3YjJkOGY2YzI1OTRmYWQzOTdlZjQ5YWQ1NTczIgotICBpbnRlZ3JpdHkgc2hhNTEy LW9nRTJUNCtwTGhUVFBTLzhNTTNJakhuMElZcGxLTTRIYlZOTUNXQTlONE5yZFB6dW53ZW5wQ3Nx S0VYeWVqTWZSdTZLOG1oYXVJUFlmOFp4V0c1TzZnPT0KKyJAd2VicGFjay1jbGkvaW5mb0BeMS40 LjAiOgorICB2ZXJzaW9uICIxLjQuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vQHdlYnBhY2stY2xpL2luZm8vLS9pbmZvLTEuNC4wLnRneiNiOTE3OWMzMjI3YWIw OWNiYmIxNDlhYTczMzQ3NWZjZjk5NDMwMjIzIgorICBpbnRlZ3JpdHkgc2hhNTEyLUY2YitNYW4w cndFNG4wNDA5RnlBSkhTdFlBNU9JWkVSeG1uVWZMVnd2MG1jMFYxd0xhZDNWN2pxUmxNa2dLQmVB cTA3alV2Z2xhY05hYTZnOWxPcHV3PT0KICAgZGVwZW5kZW5jaWVzOgogICAgIGVudmluZm8gIl43 LjcuMyIKIAotIkB3ZWJwYWNrLWNsaS9zZXJ2ZUBeMS40LjAiOgotICB2ZXJzaW9uICIxLjQuMCIK LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHdlYnBhY2stY2xpL3Nl cnZlLy0vc2VydmUtMS40LjAudGd6I2Y4NGZkMDdiY2FjZWZlNTZjZTc2MjkyNTc5ODg3MTA5MmYw ZjIyOGUiCi0gIGludGVncml0eSBzaGE1MTIteGdUL0hxSit1TFdHWCtNenVmdXNsM2NnakFjbnFZ WXNrYUI3bzB2UmN3T0VmdXU2aE16U0lMUXBuSXpGTUdzVGFlYVg0Tm5la2wrNmZhZExibDEvVmc9 PQorIkB3ZWJwYWNrLWNsaS9zZXJ2ZUBeMS42LjAiOgorICB2ZXJzaW9uICIxLjYuMCIKKyAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vQHdlYnBhY2stY2xpL3NlcnZlLy0v c2VydmUtMS42LjAudGd6IzJjMjc1YWEwNWM4OTVlY2NlYmJmYzM0Y2ZiMjIzYzZlOGJkNTkxYTIi CisgIGludGVncml0eSBzaGE1MTItWmtWZXFFbVJwQlYyR0h2ampVWnFFYWkyUHBVYnVxOEJxZC8v dkVZc3A2M0o4V3lleEk4cHBDcVZTM1pzMFFBRGY2YVd1UGRVKzBYc1BJNjQ3UFZsUUE9PQogCiAi QHdvanRla21hai9lbnp5bWUtYWRhcHRlci1yZWFjdC0xN0BeMC40LjEiOgogICB2ZXJzaW9uICIw LjQuMSIKQEAgLTI2OTEsMTggKzIzNzAsMjMgQEAgYWNjZXB0c0B+MS4zLjQ6CiAgICAgbmVnb3Rp YXRvciAiMC42LjIiCiAKIGFjZS1idWlsZHNAXjEuNC4xMjoKLSAgdmVyc2lvbiAiMS40LjEyIgot ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hY2UtYnVpbGRzLy0vYWNl LWJ1aWxkcy0xLjQuMTIudGd6Izg4OGVmYTM4NmUzNmY0MzQ1ZjQwYjUyMzNmY2M0ZmU0YzU4OGZh ZTciCi0gIGludGVncml0eSBzaGE1MTItRytjaEpjdEZQaWlMR3ZzMysvTWx5M2FwWFRjZmdFNDVk VDV5cDEyQmNXWjFrVXMrZ20wcWQzL2Z2NGdzejZmVmFnNG1NMG1vSFZwakhESWdwaDZQc2c9PQor ICB2ZXJzaW9uICIxLjQuMTMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL2FjZS1idWlsZHMvLS9hY2UtYnVpbGRzLTEuNC4xMy50Z3ojMTg2ZjQyZDM4NDllYmNjNmE0 OGI5MzA4OGEwNTg0ODk4OTc1MTRjMSIKKyAgaW50ZWdyaXR5IHNoYTUxMi1TT0x6ZGFRa1k2ZWNQ S1lSRERnK01ZMVdvR2dYQTM0Y0l2WUpOTm9CTUdHVXN3SG1sYXVVMkh5MFVMOTZ2VzBGcy9MZ0Zi TVVqRCs2dnF6V1RsZElZUT09CiAKICJhY2l0cmVlQGdpdCtodHRwczovL2dpdGh1Yi5jb20vaW1z dXJpbmRlcjkwL2pxdWVyeS1hY2lUcmVlLmdpdCNyYy43IjoKICAgdmVyc2lvbiAiNC41LjAtcmMu NyIKICAgcmVzb2x2ZWQgImdpdCtodHRwczovL2dpdGh1Yi5jb20vaW1zdXJpbmRlcjkwL2pxdWVy eS1hY2lUcmVlLmdpdCMyNGRjZDc1MzZhMDA4YWJlMjVkYTZhZGI3YmZkZThlZWI1Mzg5MmYxIgog CithY29ybi1pbXBvcnQtYXNzZXJ0aW9uc0BeMS43LjY6CisgIHZlcnNpb24gIjEuOC4wIgorICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hY29ybi1pbXBvcnQtYXNzZXJ0 aW9ucy8tL2Fjb3JuLWltcG9ydC1hc3NlcnRpb25zLTEuOC4wLnRneiNiYTJiNTkzOWNlNjJjMjM4 ZGI2ZDkzZDgxYzliMTExYjI5Yjg1NWU5IgorICBpbnRlZ3JpdHkgc2hhNTEyLW03Vlozand6NGVL NkE0VnR0OEV3MS9tTmJQMjR1MEZoZHlmQTdmU3ZuSlI2TE1kZk9Zbm11SXJySkFncllmWUoxMEYv b3RhSFR0cnRydG1IZE1OekV3PT0KKwogYWNvcm4tanN4QF41LjMuMToKLSAgdmVyc2lvbiAiNS4z LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fjb3JuLWpzeC8t L2Fjb3JuLWpzeC01LjMuMS50Z3ojZmM4NjYxZTExYjdhYzE1MzljNDdkYmZlYTJlNzJiM2FmMzRk MjY3YiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1LMFB0bS80N09LZlFScE5RMkovb0lOLzNRWWlLNkZ3 VytlSmJJTGhzZHhoMldUTGRsKzMwbzhhR2RUYm01SmJmZnBGRkFnL2cremkxRStqdkpoYTVuZz09 CisgIHZlcnNpb24gIjUuMy4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn LmNvbS9hY29ybi1qc3gvLS9hY29ybi1qc3gtNS4zLjIudGd6IzdlZDViYjU1OTA4YjNiMmYxYmM1 NWM2YWYxNjUzYmFkYTdmMDc5MzciCisgIGludGVncml0eSBzaGE1MTItcnE5cytKTmhmMElDaGp0 RFh4bGxKN2c0MW9aazVTbFh0cDBMSHd5QTVjZWp3bjd2S21LcDRwUHJpNllFZVB2MlBVNjVzQXNl Z2JYdElpbm1ERkRYZ1E9PQogCiBhY29ybi1ub2RlQF4xLjIuMCwgYWNvcm4tbm9kZUBeMS4zLjAs IGFjb3JuLW5vZGVAXjEuNS4yLCBhY29ybi1ub2RlQF4xLjYuMToKICAgdmVyc2lvbiAiMS44LjIi CkBAIC0yNzE5LDE5ICsyNDAzLDE5IEBAIGFjb3JuLXdhbGtAXjcuMC4wOgogICBpbnRlZ3JpdHkg c2hhNTEyLU9QZENGNkdzTUlQK0F6K2FXZkFBT0V0Mi8raVZES0U3b3k2bEowOThhb2U1OW9BbUs3 NnFWNkd3NjBTYlo4akh1RzJ3SDA1OEdGNHBMRmJZYW1ZclZBPT0KIAogYWNvcm4td2Fsa0BeOC4w LjA6Ci0gIHZlcnNpb24gIjguMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9hY29ybi13YWxrLy0vYWNvcm4td2Fsay04LjEuMC50Z3ojZDNjNmE5ZmFmMDA5ODdh NWUyYjliZGI1MDZjMmFhNzZjZDcwN2Y4MyIKLSAgaW50ZWdyaXR5IHNoYTUxMi1tam16bXYxMllJ Ry9HOEpRZFF1ejJNVURTaEVKNnRlWXBUNWJtV0E0cTdpd29HZW44eHR0M3R3RjNPdnpJVWwrUTA2 YVdJanZud1FVS3ZRNlR0TVJqZz09CisgIHZlcnNpb24gIjguMi4wIgorICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hY29ybi13YWxrLy0vYWNvcm4td2Fsay04LjIuMC50 Z3ojNzQxMjEwZjJlMjQyNjQ1NDUwODg1M2EyZjQ0ZDBhYjgzYjdmNjljMSIKKyAgaW50ZWdyaXR5 IHNoYTUxMi1rK2l5SEV1UGdTdzZTYnVEcEdRTSswNkhRVWEwNERaM28rRjZDU3pYTXZ2STVLTXZu YUVxWGUrWVZlNTU1UjlubjZHUHQ0MDRmb3M0d2NncHcxMlNEQT09CiAKIGFjb3JuQF43LjAuMCwg YWNvcm5AXjcuNC4wOgogICB2ZXJzaW9uICI3LjQuMSIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vYWNvcm4vLS9hY29ybi03LjQuMS50Z3ojZmVhZWQyNTU5NzNkMmU3 NzU1NWI4M2RiYzA4ODUxYTZjNjM1MjBmYSIKICAgaW50ZWdyaXR5IHNoYTUxMi1uUXlwMG8xL21O ZGJUTzFQTzZrSGt3U3JtZ1owTVQvakNDcE5pd2JVakdvUk40ZGxCaHFKdG9RdUNuRU9LemdUVndn MFpXaUNvUXk2U3hNZWJRVmg4QT09CiAKLWFjb3JuQF44LjAuNDoKLSAgdmVyc2lvbiAiOC4yLjQi Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fjb3JuLy0vYWNvcm4t OC4yLjQudGd6I2NhYmEyNGIwODE4NWMzYjU2ZTMxNjhlOTdkMTVlZDE3ZjRkMzFmZDAiCi0gIGlu dGVncml0eSBzaGE1MTItSWJ0ODRZd0JEREE4OTBlRGlEQ0VxY2J3dkhsQnZ6ekRrVTJjR0JCRERJ MVFXVDEyalRpWElPbjJDSXc1S0s0aTZONVoySFV4d1lqenJpRHlxYXFxWmc9PQorYWNvcm5AXjgu MC40LCBhY29ybkBeOC40LjE6CisgIHZlcnNpb24gIjguNS4wIgorICByZXNvbHZlZCAiaHR0cHM6 Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hY29ybi8tL2Fjb3JuLTguNS4wLnRneiM0NTEyY2NiOTli MzY5OGM3NTI1OTFlOWJiNDQ3MmUzOGFkNDNjZWUyIgorICBpbnRlZ3JpdHkgc2hhNTEyLXlYYlll RnkralV1WWQzL0NEY2cyTmtJWUU5OTFYWVgvYmplN0xtakppZ1VjaWFlTzFKUjRYeFhnQ0lWMS9a Yy9kUnVGRXl3MUwwcGJBK3F5bkprVzVRPT0KIAogYWdlbnQtYmFzZUA2LCBhZ2VudC1iYXNlQF42 LjAuMjoKICAgdmVyc2lvbiAiNi4wLjIiCkBAIC0yODAzLDkgKzI0ODcsOSBAQCBhanZAXjYuMS4w LCBhanZAXjYuMTAuMCwgYWp2QF42LjEyLjQsIGFqdkBeNi4xMi41LCBhanZAXjYuMTIuNjoKICAg ICB1cmktanMgIl40LjIuMiIKIAogYWp2QF44LjAuMToKLSAgdmVyc2lvbiAiOC41LjAiCi0gIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Fqdi8tL2Fqdi04LjUuMC50Z3oj Njk1NTI4Mjc0YmNiNWFmYzg2NTQ0NmFhMjc1NDg0MDQ5YTE4YWU0YiIKLSAgaW50ZWdyaXR5IHNo YTUxMi1ZMmwzOTlUdDFBZ3VVM0JQUlA5Rm40ZU4rT3IrU3RVR1dDVXBibkZ5WFNvOE5aOVM0dWor QUcycGpzNWFwSytaTU93WU96MSthK1ZLdktIN0N1ZFhnUT09CisgIHZlcnNpb24gIjguNi4zIgor ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hanYvLS9hanYtOC42LjMu dGd6IzExYTY2NTI3NzYxZGMzZTlhMzg0NWVhNzc1ZDJkM2MwNDE0ZTg3NjQiCisgIGludGVncml0 eSBzaGE1MTItU01KT2REUDZMcVRrRDBVcThxTGkrZ013U3QwaW1YTFNWMDgwcUZWd0pDcEg5VTZN YitTVUdIQVhNMEtOYmNCUGd1eXRXeXZGeGNIZ01MZTJEMlhTcHc9PQogICBkZXBlbmRlbmNpZXM6 CiAgICAgZmFzdC1kZWVwLWVxdWFsICJeMy4xLjEiCiAgICAganNvbi1zY2hlbWEtdHJhdmVyc2Ug Il4xLjAuMCIKQEAgLTI4NDEsNyArMjUyNSw3IEBAIGFuc2ktcmVnZXhAXjIuMC4wOgogICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hbnNpLXJlZ2V4Ly0vYW5zaS1yZWdl eC0yLjEuMS50Z3ojYzNiMzNhYjVlZTM2MGQ4NmUwZTYyOGYwNDY4YWU3ZWYyN2Q2NTRkZiIKICAg aW50ZWdyaXR5IHNoYTEtdzdNNnRlNDJEWWJnNWlqd1Jvcm43eWZXVk44PQogCi1hbnNpLXJlZ2V4 QF41LjAuMDoKK2Fuc2ktcmVnZXhAXjUuMC4xOgogICB2ZXJzaW9uICI1LjAuMSIKICAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYW5zaS1yZWdleC8tL2Fuc2ktcmVnZXgt NS4wLjEudGd6IzA4MmNiMmM4OWM5ZmU4NjU5YTMxMWE1M2JkNmE0ZGM1MzAxZGIzMDQiCiAgIGlu dGVncml0eSBzaGE1MTItcXVKUVhsVFNVR0wyTEg5U1VYbzhWd3NZNHNvYW5oZ282TE5TbTg0RTFM QmNFOHMzTzB3cGRpUnp5Ujl6L1paSk1sTVd2MzdxT09iOXBkSmxNVUVLRlE9PQpAQCAtMjg2NSw3 ICsyNTQ5LDcgQEAgYW5zaS1zdHlsZXNAXjQuMC4wLCBhbnNpLXN0eWxlc0BeNC4xLjA6CiAgIGRl cGVuZGVuY2llczoKICAgICBjb2xvci1jb252ZXJ0ICJeMi4wLjEiCiAKLWFueW1hdGNoQH4zLjEu MSwgYW55bWF0Y2hAfjMuMS4yOgorYW55bWF0Y2hAfjMuMS4yOgogICB2ZXJzaW9uICIzLjEuMiIK ICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYW55bWF0Y2gvLS9hbnlt YXRjaC0zLjEuMi50Z3ojYzA1NTdjMDk2YWYzMmYxMDYxOThmNGY0ZTJhMzgzNTM3ZTM3ODcxNiIK ICAgaW50ZWdyaXR5IHNoYTUxMi1QNDNlUGZPQUl1cGtndUhVeWNyYzRxSjlrejhaaXVPVWlqYUVU d1g3VEh0MFkvR05LN3YwYWE4clk4MTZ4V2paN3JKZEE1WGRNY3BWRlRLTXErUnZXZz09CkBAIC0y OTEwLDE2ICsyNTk0LDE2IEBAIGFyZ3BhcnNlQF4yLjAuMToKICAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vYXJncGFyc2UvLS9hcmdwYXJzZS0yLjAuMS50Z3ojMjQ2ZjUw ZjNjYTc4YTMyNDBmNmM5OTdlOGE5YmQxZWFjNDllNGIzOCIKICAgaW50ZWdyaXR5IHNoYTUxMi04 KzlXcWViYkZ6cFg5T1IrV2E2TzI5YXNJb2dlUk16Y0d0QUlOZHBNSEh5QWcxMGYwNWFTRlZCYmNF cUdmL1BYdzFFakFaK3EyL2JFQmczRHZ1ckszUT09CiAKLWFycmF5LWluY2x1ZGVzQF4zLjEuMiwg YXJyYXktaW5jbHVkZXNAXjMuMS4zOgotICB2ZXJzaW9uICIzLjEuMyIKLSAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJyYXktaW5jbHVkZXMvLS9hcnJheS1pbmNsdWRl cy0zLjEuMy50Z3ojYzdmNjE5YjM4MmFkMmFmYWY1MzI2Y2RkZmRjMGFmYzYxYWY3NjkwYSIKLSAg aW50ZWdyaXR5IHNoYTUxMi1nY2VtMUtsQlU3YzlyQitScTgvM1BQS3NLMmtqcWVFQmEzYkQ1a2tR bzRuWWxPSFFDSnFJSkZxQlhERWZ3YVJ1WVRUNEUrRnhBOXhlejdHZi9lM1E3QT09CithcnJheS1p bmNsdWRlc0BeMy4xLjM6CisgIHZlcnNpb24gIjMuMS40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS1pbmNsdWRlcy8tL2FycmF5LWluY2x1ZGVzLTMuMS40 LnRneiNmNWI0OTMxNjJjNzYwZjM1Mzk2MzFmMDA1YmEyYmI0NmFjYjQ1YmE5IgorICBpbnRlZ3Jp dHkgc2hhNTEyLVpUTlNRa21XdW1FYmlITzJHRjRHbVd4WVZUaVF5SnkyWE9UYTE1c2RRU3J2S243 bCsxODBlZ1FNcWxyTU9VTUN5TE1EN3BteVFlNG1NRFVUNkJlaHJ3PT0KICAgZGVwZW5kZW5jaWVz OgogICAgIGNhbGwtYmluZCAiXjEuMC4yIgogICAgIGRlZmluZS1wcm9wZXJ0aWVzICJeMS4xLjMi Ci0gICAgZXMtYWJzdHJhY3QgIl4xLjE4LjAtbmV4dC4yIgorICAgIGVzLWFic3RyYWN0ICJeMS4x OS4xIgogICAgIGdldC1pbnRyaW5zaWMgIl4xLjEuMSIKLSAgICBpcy1zdHJpbmcgIl4xLjAuNSIK KyAgICBpcy1zdHJpbmcgIl4xLjAuNyIKIAogYXJyYXktdW5pb25AXjIuMS4wOgogICB2ZXJzaW9u ICIyLjEuMCIKQEAgLTI5MjcsMzQgKzI2MTEsMzUgQEAgYXJyYXktdW5pb25AXjIuMS4wOgogICBp bnRlZ3JpdHkgc2hhNTEyLUhHeXhvT1RZVXlDTTZzdFVlNkVKZ25kNEVvZXdBSTd6TWRmcU8ra0dq bmxabUJEei9jUjVwZjhyL2NSNFdxNjBzTC9wMElrY2pVRUVQd1MzR0ZySXl3PT0KIAogYXJyYXku cHJvdG90eXBlLmZpbHRlckBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS5wcm90b3R5cGUuZmlsdGVyLy0vYXJy YXkucHJvdG90eXBlLmZpbHRlci0xLjAuMC50Z3ojMjRkNjNlMzg5ODNjZGM2YmYwMjNhM2M1NzRi MmYyYTNmMzg0YzMwMSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1UZk8xZ3ordExtK0Jzd3EwRkJPWFBx QWNodENyMlJuNDhUOGRMSm9SRmw4Tm9Fb3NqWm16cHRtdW8xWDhhWkJ6WmNxc1IxVzhVNzYxdGpB Q0p0bmdUUT09CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9hcnJheS5wcm90b3R5cGUuZmlsdGVyLy0vYXJyYXkucHJvdG90eXBlLmZp bHRlci0xLjAuMS50Z3ojMjA2ODg3OTJhY2RiOTdhMDk0ODhlYWFlZTllZWJiZjM5NjZhYWUyMSIK KyAgaW50ZWdyaXR5IHNoYTUxMi1EazNUeTdONDJPZGs3UGpVL0NpM3pUNHBMajIwWXZ1Vm5uZUcv NThJQ002YnQ0SWo1a1phSlRWUTlUU2FXYUlFQ1gyc0Z5ejRLSXRrVlpxSE5uY2lxdz09CiAgIGRl cGVuZGVuY2llczoKICAgICBjYWxsLWJpbmQgIl4xLjAuMiIKICAgICBkZWZpbmUtcHJvcGVydGll cyAiXjEuMS4zIgotICAgIGVzLWFic3RyYWN0ICJeMS4xOC4wIgorICAgIGVzLWFic3RyYWN0ICJe MS4xOS4wIgogICAgIGVzLWFycmF5LW1ldGhvZC1ib3hlcy1wcm9wZXJseSAiXjEuMC4wIgotICAg IGlzLXN0cmluZyAiXjEuMC41IgorICAgIGlzLXN0cmluZyAiXjEuMC43IgogCiBhcnJheS5wcm90 b3R5cGUuZmluZEBeMi4xLjE6Ci0gIHZlcnNpb24gIjIuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6 Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS5wcm90b3R5cGUuZmluZC8tL2FycmF5LnByb3Rv dHlwZS5maW5kLTIuMS4xLnRneiMzYmFjYTI2MTA4Y2E3YWZmYjA4ZGIwNmJmMGJlNmNiMzExNWE5 NjljIgotICBpbnRlZ3JpdHkgc2hhNTEyLW1pK01ZTkpZTFR4MmVOWXkrWWg2cmFvUWFjQ3NOZWVN VWFzcEZQaDlZMTQxbEZTc1d4eEI4VjltTTJ5ZStlcWlSczkxN0o2L3BKNE05WlB6ZW5XY2tBPT0K KyAgdmVyc2lvbiAiMi4xLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL2FycmF5LnByb3RvdHlwZS5maW5kLy0vYXJyYXkucHJvdG90eXBlLmZpbmQtMi4xLjIudGd6 IzZhYmJkMGMyNTczOTI1ZDgwOTRmN2QyMzExMjMwNmFmOGMxNmQ1MzQiCisgIGludGVncml0eSBz aGE1MTItMDBTMU80ZXdPOTVPbW1KVzdFZXNXZlFsckNyTEVMOGtaNDB3MytHa0xYMnlUdDBtMmdn Y2VQUGEydUhQSjlLVW1KdndScStsQ1Y5YkQ4WWltMjN4L1E9PQogICBkZXBlbmRlbmNpZXM6Cisg ICAgY2FsbC1iaW5kICJeMS4wLjIiCiAgICAgZGVmaW5lLXByb3BlcnRpZXMgIl4xLjEuMyIKLSAg ICBlcy1hYnN0cmFjdCAiXjEuMTcuNCIKKyAgICBlcy1hYnN0cmFjdCAiXjEuMTkuMCIKIAogYXJy YXkucHJvdG90eXBlLmZsYXRAXjEuMi4zOgotICB2ZXJzaW9uICIxLjIuNCIKLSAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJyYXkucHJvdG90eXBlLmZsYXQvLS9hcnJh eS5wcm90b3R5cGUuZmxhdC0xLjIuNC50Z3ojNmVmNjM4YjQzMzEyYmQ0MDFiNGM2MTk5ZmRlYzdl MmRjOWU5YTEyMyIKLSAgaW50ZWdyaXR5IHNoYTUxMi00NDcwWGkzR0FQQWpacUZjbGpYMnh6Y2t2 MXFlS1Bpem9Oa2lTMCtPNElvUFIyWk5wY2pFMHBraGRpaGxEb3VLK3g2UU9hc3QyNkI0US9POURK bndTZz09CisgIHZlcnNpb24gIjEuMi41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9hcnJheS5wcm90b3R5cGUuZmxhdC8tL2FycmF5LnByb3RvdHlwZS5mbGF0LTEu Mi41LnRneiMwN2UwOTc1ZDg0YmJjN2M0OGNkMTg3OWQ2MDllNjgyNTk4ZDMzZTEzIgorICBpbnRl Z3JpdHkgc2hhNTEyLUthWVUrUytuZFZxeVVuaWduSGZ0a3djNThvM3VWVTFqemN6SUxKMXROMllh SVpwRklLQmlQL3gvajk3RTVNVlBzYUNsb1BicVdMQi84cUNUVnZUMnFnPT0KICAgZGVwZW5kZW5j aWVzOgotICAgIGNhbGwtYmluZCAiXjEuMC4wIgorICAgIGNhbGwtYmluZCAiXjEuMC4yIgogICAg IGRlZmluZS1wcm9wZXJ0aWVzICJeMS4xLjMiCi0gICAgZXMtYWJzdHJhY3QgIl4xLjE4LjAtbmV4 dC4xIgorICAgIGVzLWFic3RyYWN0ICJeMS4xOS4wIgogCi1hcnJheS5wcm90b3R5cGUuZmxhdG1h cEAxLjIuNCwgYXJyYXkucHJvdG90eXBlLmZsYXRtYXBAXjEuMi40OgorYXJyYXkucHJvdG90eXBl LmZsYXRtYXBAMS4yLjQ6CiAgIHZlcnNpb24gIjEuMi40IgogICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS5wcm90b3R5cGUuZmxhdG1hcC8tL2FycmF5LnByb3Rv dHlwZS5mbGF0bWFwLTEuMi40LnRneiM5NGNmZDQ3Y2MxNTU2ZWMwNzQ3ZDk3ZjdjNzczOGM1ODEy MjAwNGM5IgogICBpbnRlZ3JpdHkgc2hhNTEyLXI5WjB6WW94cUh6NjB2dlFiV0VkWElFdEN3SEYw eXhhV2ZubzlxelhlTkh2ZnlsM0JacXlnbUd6Yjg0ZHN1YnlhWExINGh1c0YrTkZnTVNkcFpoazJR PT0KQEAgLTI5NjQsNiArMjY0OSwxNSBAQCBhcnJheS5wcm90b3R5cGUuZmxhdG1hcEAxLjIuNCwg YXJyYXkucHJvdG90eXBlLmZsYXRtYXBAXjEuMi40OgogICAgIGVzLWFic3RyYWN0ICJeMS4xOC4w LW5leHQuMSIKICAgICBmdW5jdGlvbi1iaW5kICJeMS4xLjEiCiAKK2FycmF5LnByb3RvdHlwZS5m bGF0bWFwQF4xLjIuNDoKKyAgdmVyc2lvbiAiMS4yLjUiCisgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL2FycmF5LnByb3RvdHlwZS5mbGF0bWFwLy0vYXJyYXkucHJvdG90 eXBlLmZsYXRtYXAtMS4yLjUudGd6IzkwOGRjODJkOGE0MDY5MzBmZGYzODU5OGQ1MWU3NDExZDE4 ZDQ0NDYiCisgIGludGVncml0eSBzaGE1MTItMDh1NnJWeWkxTGo3b3FXYlM5blV4bGlFVHJ0SVJP VDRYR1RBNEQvTFdHdGVuNkUzb2NtN2N5OVNJcm1OSE9MNVhWYlZ1Y2tVcDNYNlh5ZzgvenB2SEE9 PQorICBkZXBlbmRlbmNpZXM6CisgICAgY2FsbC1iaW5kICJeMS4wLjAiCisgICAgZGVmaW5lLXBy b3BlcnRpZXMgIl4xLjEuMyIKKyAgICBlcy1hYnN0cmFjdCAiXjEuMTkuMCIKKwogYXNuMS5qc0Be NS4yLjA6CiAgIHZlcnNpb24gIjUuNC4xIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9hc24xLmpzLy0vYXNuMS5qcy01LjQuMS50Z3ojMTFhOTgwYjg0ZWJiOTE3ODFj ZTM1YjBmZGMyZWUyOTRlMzc4M2YwNyIKQEAgLTI5NzUsOSArMjY2OSw5IEBAIGFzbjEuanNAXjUu Mi4wOgogICAgIHNhZmVyLWJ1ZmZlciAiXjIuMS4wIgogCiBhc3Blbi1jb3JlQF4xLjAuNDoKLSAg dmVyc2lvbiAiMS4wLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L2FzcGVuLWNvcmUvLS9hc3Blbi1jb3JlLTEuMC40LnRneiNhMmQ2YTIzYzgwMzAzZTczYWFhODM2 YzEyNGMxMTZlNDQ3YmE3YTdkIgotICBpbnRlZ3JpdHkgc2hhNTEyLW1RNzlKeEhzdEIycmY0N1pn dzJ5ZHVBSDlMNDdiKzNid1F0cGJFQUtlU0pzTFRQZThYN2xzUTZsTFAzdEZiUzIwNFROSUxDNUx4 U2tWV3Y0NUZYUVlnPT0KKyAgdmVyc2lvbiAiMS4wLjUiCisgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL2FzcGVuLWNvcmUvLS9hc3Blbi1jb3JlLTEuMC41LnRneiM3NzQ1 ZGVmODExZjc2MWJjYTQ5ZDQ3NWQ5YWRkYzhhNWRiYjFjNzFjIgorICBpbnRlZ3JpdHkgc2hhNTEy LWlxV09STlFlUVRuNlhIU3RsMXVDUTR0MXlNUE13L25TV3lnZlhWQUVmbGY4dkFXczR2UjJNMlRx REVaR3Z5b1RrcnhJUE9Odit3eVFRRkRuTjVRQ2tnPT0KICAgZGVwZW5kZW5jaWVzOgogICAgIG5v dGlmaWNhciAiXjEuMC4xIgogICAgIHAtc2VyaWVzICJeMS4xLjAiCkBAIC0zMDI0LDM0ICsyNzE4 LDM1IEBAIGFzeW5jQF4yLjEuNDoKICAgICBsb2Rhc2ggIl40LjE3LjE0IgogCiBhc3luY0BeMy4y LjA6Ci0gIHZlcnNpb24gIjMuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9hc3luYy8tL2FzeW5jLTMuMi4wLnRneiNiM2EyNjg1YzVlYmI2NDFkM2RlMDJkMTYx MDAyYzYwZmM5Zjg1NzIwIgotICBpbnRlZ3JpdHkgc2hhNTEyLVRSMm1FWkZWT2oycExTdFl4TGh0 N1R5ZnVSemF5ZGZweHIzazlScEhJek1ndzdBNjRkenNkcUN4SDFXSnlRZG9lOFQxMG5EWGQ5d25F aWdtaXVISVp3PT0KKyAgdmVyc2lvbiAiMy4yLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL2FzeW5jLy0vYXN5bmMtMy4yLjIudGd6IzJlYjc2NzEwMzRiYjIxOTRk NDVkMzBlMzFlMjRlYzdlN2Y5NjcwY2QiCisgIGludGVncml0eSBzaGE1MTItSDBFK3FaYURFZngv Rlk0dDdpTFJ2MVcyZkZJNitweUNlVHcxdU4yMEFRUGl3cXdNNm9qUHhIeGRMdjR6OGhpMkR0blc5 Qk9ja1NzcEx1Y1c3cElFNWc9PQogCiBhdXRvcHJlZml4ZXJAXjEwLjIuNDoKLSAgdmVyc2lvbiAi MTAuMi42IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hdXRvcHJl Zml4ZXIvLS9hdXRvcHJlZml4ZXItMTAuMi42LnRneiNhYWRkOWVjMzRlMWM5OGQ0MDNlMDE5NTAw MzgwNDlmMGViMjUyOTQ5IgotICBpbnRlZ3JpdHkgc2hhNTEyLThsQ2hTbWRVNmRDTk1DUW9wSWY0 UGU1a2lwa0FHai9mdlRNc2xDc2loMHVIcE9yWE9QVUVWT21ZTU1xbXczY2VrUWtTRDdFaElldVls NXkwQkxkS3FnPT0KKyAgdmVyc2lvbiAiMTAuNC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9hdXRvcHJlZml4ZXIvLS9hdXRvcHJlZml4ZXItMTAuNC4wLnRneiNj MzU3N2ViMzJhMTA3OWE0NDBlYzI1M2U0MDRlYWYxZWIyMTM4OGM4IgorICBpbnRlZ3JpdHkgc2hh NTEyLTdGZEoxT050d3pWMUc0M0dERDBrcFZNbi9xYmlOcXlPUE1GVFg1blJmZkkrN3ZnV29GRWM2 RGNYT3hISnhyV05EWHJaaDE4ZURzWmp2WkdVbGpTUkdBPT0KICAgZGVwZW5kZW5jaWVzOgotICAg IGJyb3dzZXJzbGlzdCAiXjQuMTYuNiIKLSAgICBjYW5pdXNlLWxpdGUgIl4xLjAuMzAwMDEyMzAi Ci0gICAgY29sb3JldHRlICJeMS4yLjIiCisgICAgYnJvd3NlcnNsaXN0ICJeNC4xNy41IgorICAg IGNhbml1c2UtbGl0ZSAiXjEuMC4zMDAwMTI3MiIKICAgICBmcmFjdGlvbi5qcyAiXjQuMS4xIgog ICAgIG5vcm1hbGl6ZS1yYW5nZSAiXjAuMS4yIgorICAgIHBpY29jb2xvcnMgIl4xLjAuMCIKICAg ICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjQuMS4wIgogCi1hdmFpbGFibGUtdHlwZWQtYXJyYXlz QF4xLjAuMjoKLSAgdmVyc2lvbiAiMS4wLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL2F2YWlsYWJsZS10eXBlZC1hcnJheXMvLS9hdmFpbGFibGUtdHlwZWQtYXJy YXlzLTEuMC40LnRneiM5ZTBhZTg0ZWNmZjIwY2FhZTZhOTRhMWMzYmMzOWI5NTU2NDliN2E5Igot ICBpbnRlZ3JpdHkgc2hhNTEyLVNBNW1YSldySWQxVGFRamZ4VVlnaGJxUS9oWWlvS21MSnZQSnlE dVlSdFhYZW5GTk1qajRoU1N0MUNmMXhzdVhTWHJ0eHJWQzVPdDRlVTZjT3RCRGRBPT0KK2F2YWls YWJsZS10eXBlZC1hcnJheXNAXjEuMC41OgorICB2ZXJzaW9uICIxLjAuNSIKKyAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXZhaWxhYmxlLXR5cGVkLWFycmF5cy8tL2F2 YWlsYWJsZS10eXBlZC1hcnJheXMtMS4wLjUudGd6IzkyZjk1NjE2NTAxMDY5ZDA3ZDEwZWRiMmZj MzdkM2UxYzY1MTIzYjciCisgIGludGVncml0eSBzaGE1MTItRE1EMEtpTjQ2ZWlwZXppU1QxTFBQ L1NUZkRVMHN1ZklTWG1qU2d2VnNvVTJ0cXhjdFFlQVNlaldjZk50eFlLcUVUTTFVeFE4c3AyT3JT QldwSFk2c3c9PQogCiBheGlvcy1tb2NrLWFkYXB0ZXJAXjEuMTcuMDoKLSAgdmVyc2lvbiAiMS4x OS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9heGlvcy1tb2Nr LWFkYXB0ZXIvLS9heGlvcy1tb2NrLWFkYXB0ZXItMS4xOS4wLnRneiM5ZDcyZTMyMWE2YzU0MThl MWVmZjA2N2FhOTk3NjFhODZjNTE4OGE0IgotICBpbnRlZ3JpdHkgc2hhNTEyLUQrMFU0TE5QcjdX cm9pQkR2V2lselRNWVBZVHVabGJvNkJJOFlIWnRqN3dZUVM4TmtBUmxQOUtCdDhJV1dIVFFKMHEv OG9aMENsUEJ0S0NDa3g4Y1FnPT0KKyAgdmVyc2lvbiAiMS4yMC4wIgorICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9heGlvcy1tb2NrLWFkYXB0ZXIvLS9heGlvcy1tb2Nr LWFkYXB0ZXItMS4yMC4wLnRneiMyMWY1YjRiNjI1MzA2ZjQzZThjMDU2NzM2MTY3MTlkYTg2ZTIw ZGNiIgorICBpbnRlZ3JpdHkgc2hhNTEyLXNoWlJoVGpMUDBXV2RjdkhLZjNySDNpVzlkZWIzVWRL YmRuS1VvSG1tc25CaFZYTjNzalBKTTZadlEyci95d2d2QlZRck1uanJTeVFhYjYwRzFzcjJ3PT0K ICAgZGVwZW5kZW5jaWVzOgogICAgIGZhc3QtZGVlcC1lcXVhbCAiXjMuMS4zIgotICAgIGlzLWJ1 ZmZlciAiXjIuMC4zIgorICAgIGlzLWJsb2IgIl4yLjEuMCIKKyAgICBpcy1idWZmZXIgIl4yLjAu NSIKIAogYXhpb3NAXjAuMjEuMToKICAgdmVyc2lvbiAiMC4yMS40IgpAQCAtMzA4NCw5ICsyNzc5 LDkgQEAgYmFiZWwtZ2VuZXJhdG9yQF42LjE4LjA6CiAgICAgdHJpbS1yaWdodCAiXjEuMC4xIgog CiBiYWJlbC1sb2FkZXJAXjguMS4wOgotICB2ZXJzaW9uICI4LjIuMiIKLSAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtbG9hZGVyLy0vYmFiZWwtbG9hZGVyLTgu Mi4yLnRneiM5MzYzY2U4NGMxMGM5YTQwZTZjNzUzNzQ4ZTE0NDFiNjBjOGEwYjgxIgotICBpbnRl Z3JpdHkgc2hhNTEyLUp2VGQwL0Q4ODlQUUJ0VVhKMlBYYUtVL3BqWkRNdEhBOVYyZWNtK2VOUm1t QkNNUjA5YStmbXBHVE53bkp0Rm1GbDVFaTdWeTQ3TGpCYitMMHdROTlnPT0KKyAgdmVyc2lvbiAi OC4yLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWxv YWRlci8tL2JhYmVsLWxvYWRlci04LjIuMy50Z3ojODk4NmI0MGYxYTY0Y2FjZmNiNGI4NDI5MzIw MDg1ZWY2OGIxMzQyZCIKKyAgaW50ZWdyaXR5IHNoYTUxMi1uNFpldGE4TkMzUUFzdXlpaXp1MEdr bVJjUTZjbGtWOVdGVW5VZjFpWFAvL0llU0tiV2pvZlczVUh5WlZ3bE9CNHkwMzlZUUtlZmF3eVRu NjRad2J1dz09CiAgIGRlcGVuZGVuY2llczoKICAgICBmaW5kLWNhY2hlLWRpciAiXjMuMy4xIgog ICAgIGxvYWRlci11dGlscyAiXjEuNC4wIgpAQCAtMzE4MCwxMyArMjg3NSwxMyBAQCBiYWJlbC1w bHVnaW4tcG9seWZpbGwtcmVnZW5lcmF0b3JAXjAuMy4wOgogICBkZXBlbmRlbmNpZXM6CiAgICAg IkBiYWJlbC9oZWxwZXItZGVmaW5lLXBvbHlmaWxsLXByb3ZpZGVyIiAiXjAuMy4xIgogCi0iYmFi ZWwtcGx1Z2luLXN0eWxlZC1jb21wb25lbnRzQD49IDEiOgotICB2ZXJzaW9uICIxLjEyLjAiCi0g IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zdHls ZWQtY29tcG9uZW50cy8tL2JhYmVsLXBsdWdpbi1zdHlsZWQtY29tcG9uZW50cy0xLjEyLjAudGd6 IzFkZWMxNjc2NTEyMTc3ZGU2YjgyNzIxMWU5ZWRhNWEzMGRiNGY5YjkiCi0gIGludGVncml0eSBz aGE1MTItRkVpRDdsNVpBQmRKUHBMc3NLWGpCVUpNWXF6YmNOekJvd2ZYRENkSmhPcGJoV2lld2Fw VWFZK0xaR1Q4UjRKZzJUd09qR2pHNFJLZXlyTzVwOXNCa0E9PQorImJhYmVsLXBsdWdpbi1zdHls ZWQtY29tcG9uZW50c0A+PSAxLjEyLjAiOgorICB2ZXJzaW9uICIxLjEzLjMiCisgIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXBsdWdpbi1zdHlsZWQtY29tcG9u ZW50cy8tL2JhYmVsLXBsdWdpbi1zdHlsZWQtY29tcG9uZW50cy0xLjEzLjMudGd6IzFmMWNiMzky N2Q0YWZhMWUzMjQ2OTVjNzhmNjkwOTAwZTNkMDc1YmMiCisgIGludGVncml0eSBzaGE1MTItbWVH U3RSR3YrVnVLQS9xMC9qWHhyUE5XRW00TFBmWUlxeG9vRFRkbWg4a0ZzUC9QaDdqSkc1clVQd1VQ WDNRSFV2Z2d3ZGJnZEdwbzg4UC9yUllzVnc9PQogICBkZXBlbmRlbmNpZXM6Ci0gICAgIkBiYWJl bC9oZWxwZXItYW5ub3RhdGUtYXMtcHVyZSIgIl43LjAuMCIKLSAgICAiQGJhYmVsL2hlbHBlci1t b2R1bGUtaW1wb3J0cyIgIl43LjAuMCIKKyAgICAiQGJhYmVsL2hlbHBlci1hbm5vdGF0ZS1hcy1w dXJlIiAiXjcuMTUuNCIKKyAgICAiQGJhYmVsL2hlbHBlci1tb2R1bGUtaW1wb3J0cyIgIl43LjE1 LjQiCiAgICAgYmFiZWwtcGx1Z2luLXN5bnRheC1qc3ggIl42LjE4LjAiCiAgICAgbG9kYXNoICJe NC4xNy4xMSIKIApAQCAtMzMwOCwxNiArMzAwMywxNiBAQCBiYWxhbmNlZC1tYXRjaEBeMS4wLjA6 CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhbGFuY2VkLW1hdGNo Ly0vYmFsYW5jZWQtbWF0Y2gtMS4wLjIudGd6I2U4M2UzYTdlM2YzMDBiMzRjYjlkODdmNjE1ZmEw Y2JmMzU3NjkwZWUiCiAgIGludGVncml0eSBzaGE1MTItM29TZVVPMFRNVjY3aE4xQW1iWHNLNHlh cVU3dGppSGxieFJEWk9wSDBLVzkrQ2VYNGJSQWFYMEFueHQwdHgyTXJwUnBXd1FhUHdJbElTRUpo WVU1UHc9PQogCi1iYXNlNjQtYXJyYXlidWZmZXJAMC4xLjQ6Ci0gIHZlcnNpb24gIjAuMS40Igot ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYXNlNjQtYXJyYXlidWZm ZXIvLS9iYXNlNjQtYXJyYXlidWZmZXItMC4xLjQudGd6Izk4MThjNzllMDU5YjEzNTVmOTdlMDQy OGEwMTdjODM4ZTkwYmE4MTIiCi0gIGludGVncml0eSBzaGExLW1CakhuZ1diRTFYNWZnUW9vQmZJ T09rTHFCST0KLQogYmFzZTY0LWFycmF5YnVmZmVyQF4wLjIuMDoKICAgdmVyc2lvbiAiMC4yLjAi CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jhc2U2NC1hcnJheWJ1 ZmZlci8tL2Jhc2U2NC1hcnJheWJ1ZmZlci0wLjIuMC50Z3ojNGI5NDRmYWMwMTkxYWE1OTA3YWZl MmQ4Yzk5OWNjYzU3Y2U4MGY0NSIKICAgaW50ZWdyaXR5IHNoYTUxMi03ZW15Q3N1MS94aUJYZ1Fa cnNjdy84S1BSVDQ0STRZcTlQZTZFR3MzYVBSVHNXdWdnTUwxLzFEVHVaVXVJYUpQSW0xRlREVVZY bDR4L3lXOHMwa1FEUT09CiAKK2Jhc2U2NC1hcnJheWJ1ZmZlckBeMS4wLjE6CisgIHZlcnNpb24g IjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYXNlNjQt YXJyYXlidWZmZXIvLS9iYXNlNjQtYXJyYXlidWZmZXItMS4wLjEudGd6Izg3YmQxMzUyNTYyNmRi NGE5ODM4ZTAwYTUwOGMyYjczZWZjZjM0OGMiCisgIGludGVncml0eSBzaGE1MTItdkZJVXE3RmRM dGpaTWhBVHdEdWw1UlpXdjJqcFhRMDlQZDZqY1ZFT3ZJc3FDV1RSRkQvT05ITmZ5T1M4ZEEvSXBw aTVkc0lncHlLV0taYUFLWmx0YkE9PQorCiBiYXNlNjQtanNAXjEuMC4yLCBiYXNlNjQtanNAXjEu My4xOgogICB2ZXJzaW9uICIxLjUuMSIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vYmFzZTY0LWpzLy0vYmFzZTY0LWpzLTEuNS4xLnRneiMxYjFiNDQwMTYwYTViZjdh ZDQwYjY1MGYwOTU5NjM0ODE5MDM5MzBhIgpAQCAtMzQ1NSw5ICszMTUwLDkgQEAgYm9vdHN0cmFw NC10b2dnbGVAXjMuNi4xOgogICBpbnRlZ3JpdHkgc2hhNTEyLWVSZWpjVGM5WXVyaFo2NG5IWTlJ aTlEUW4rRjkvUjc0SDlSUG9lQU5WTTNOMStDMmxaMnRVdUZDeDF3M29yT0oxeS9pRzRBN2lDd2RE WnBoTURJcllnPT0KIAogYm9vdHN0cmFwQF40LjMuMSwgYm9vdHN0cmFwQF40LjUuMjoKLSAgdmVy c2lvbiAiNC42LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jv b3RzdHJhcC8tL2Jvb3RzdHJhcC00LjYuMC50Z3ojOTdiOWYyOWFjOThmOThkZmE0M2JmNzQ2ODI2 MmQ4NDM5MjU1MmZkNyIKLSAgaW50ZWdyaXR5IHNoYTUxMi1JbzU1SXVRWTNreWR6SHRiR3ZReWEz SCtLb3JTL005clNOeWZDR0NnOVdaNHB5VC9sQ3hJbHBKZ0cxR1hXL1Bzd3pDODRUcjJmQllpKzcr akZWUVFCdz09CisgIHZlcnNpb24gIjQuNi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9ib290c3RyYXAvLS9ib290c3RyYXAtNC42LjEudGd6I2JjMjUzODBjMmMx NDE5MjM3NGU4ZGVjMDdjZjAxYjI3NDJkMjIyYTIiCisgIGludGVncml0eSBzaGE1MTItMGRqK1Zn STlFY29tK3J2dnBOWjRNVVpKejhkY1g3V0NYK2VUSUQ5Ky84SGdPa3YzZHNSemk4QkdlWkpDUVU2 ZmxXUVZZeHdUUW5FWkZybUpTRU83b2c9PQogCiBib3dzZXJAXjIuMTEuMDoKICAgdmVyc2lvbiAi Mi4xMS4wIgpAQCAtMzYzMSwxNiArMzMyNiwxNiBAQCBicm93c2VyaWZ5QF4xNy4wLjA6CiAgICAg dm0tYnJvd3NlcmlmeSAiXjEuMC4wIgogICAgIHh0ZW5kICJeNC4wLjAiCiAKLWJyb3dzZXJzbGlz dEBeNC4wLjAsIGJyb3dzZXJzbGlzdEBeNC4xNC41LCBicm93c2Vyc2xpc3RAXjQuMTYuMCwgYnJv d3NlcnNsaXN0QF40LjE2LjMsIGJyb3dzZXJzbGlzdEBeNC4xNi42OgotICB2ZXJzaW9uICI0LjE2 LjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Jyb3dzZXJzbGlz dC8tL2Jyb3dzZXJzbGlzdC00LjE2LjYudGd6I2Q3OTAxMjc3YTVhODhlNTU0ZWQzMDViMTgzZWM5 YjBjMDhmNjZmYTIiCi0gIGludGVncml0eSBzaGE1MTItV3Nway9QcU8rNFc5cXA1aVVUSnNhMUIv UXJZbjFrZU5DY0VQNU92UDdXQndUNEthRGx5MHVPTlltQzZYYTNaNUlxblVnUzBLY2dMWXUxbDc0 eDBaWFE9PQorYnJvd3NlcnNsaXN0QF40LjAuMCwgYnJvd3NlcnNsaXN0QF40LjE0LjUsIGJyb3dz ZXJzbGlzdEBeNC4xNi4wLCBicm93c2Vyc2xpc3RAXjQuMTYuNjoKKyAgdmVyc2lvbiAiNC4xNy42 IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9icm93c2Vyc2xpc3Qv LS9icm93c2Vyc2xpc3QtNC4xNy42LnRneiNjNzZiZTMzZTc3ODZiNDk3ZjY2Y2FkMjVhNzM3NTZj OGI5Mzg5ODVkIgorICBpbnRlZ3JpdHkgc2hhNTEyLXVQZ3ozdnlSVGxFaUN2NGVlOUtsc0tnbzJW NnFQazdKc24wS0FuMk9CcWJxS28zaU5jUEVDMVRpNko0ZHdueithSVJmRUVFdU96QzlJQms4dFhV b213PT0KICAgZGVwZW5kZW5jaWVzOgotICAgIGNhbml1c2UtbGl0ZSAiXjEuMC4zMDAwMTIxOSIK LSAgICBjb2xvcmV0dGUgIl4xLjIuMiIKLSAgICBlbGVjdHJvbi10by1jaHJvbWl1bSAiXjEuMy43 MjMiCisgICAgY2FuaXVzZS1saXRlICJeMS4wLjMwMDAxMjc0IgorICAgIGVsZWN0cm9uLXRvLWNo cm9taXVtICJeMS4zLjg4NiIKICAgICBlc2NhbGFkZSAiXjMuMS4xIgotICAgIG5vZGUtcmVsZWFz ZXMgIl4xLjEuNzEiCisgICAgbm9kZS1yZWxlYXNlcyAiXjIuMC4xIgorICAgIHBpY29jb2xvcnMg Il4xLjAuMCIKIAogYnJvd3NlcnNsaXN0QF40LjE3LjUsIGJyb3dzZXJzbGlzdEBeNC4xOS4xOgog ICB2ZXJzaW9uICI0LjE5LjEiCkBAIC0zNjc3LDkgKzMzNzIsOSBAQCBidWZmZXItZmlsbEBeMS4w LjA6CiAgIGludGVncml0eSBzaGExLStQZUxkbmlZaU84NThnWE5ZMzlvNXdJU0t5dz0KIAogYnVm ZmVyLWZyb21AXjEuMC4wOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vYnVmZmVyLWZyb20vLS9idWZmZXItZnJvbS0xLjEuMS50Z3oj MzI3MTNiYzAyOGY3NWMwMmZkYjcxMGQ3YzdiY2VjMWYyYzYwNzBlZiIKLSAgaW50ZWdyaXR5IHNo YTUxMi1NUWNYRVViQ0t0RW83YmhxRXM2NTYwSHlkNFhhb3ZabE8vazlWM2hqVlVGL3p3VzdLQlZk U0s0Z0l0L2J6d1M5TWJSNXFvYitGNWp1c1pzYjBZUUsyQT09CisgIHZlcnNpb24gIjEuMS4yIgor ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9idWZmZXItZnJvbS8tL2J1 ZmZlci1mcm9tLTEuMS4yLnRneiMyYjE0NmE2ZmQ3MmU4MGI0ZjU1ZDI1NWYzNWVkNTlhM2E5YTQx YmQ1IgorICBpbnRlZ3JpdHkgc2hhNTEyLUUrWFFDUndTYmFhaUNodHY2azZEd2djK2J4K0JzNnZ1 S0pISGw1a294L0JhS2JoaVh6cVFPd0s0Y08yMnlFbEdwMk9DbWp3VmhUM0hteGd5UEduSmZRPT0K IAogYnVmZmVyLXhvckBeMS4wLjM6CiAgIHZlcnNpb24gIjEuMC4zIgpAQCAtMzgwMiwxMSArMzQ5 NywxNiBAQCBjYW5pdXNlLWFwaUBeMy4wLjA6CiAgICAgbG9kYXNoLm1lbW9pemUgIl40LjEuMiIK ICAgICBsb2Rhc2gudW5pcSAiXjQuNS4wIgogCi1jYW5pdXNlLWxpdGVAXjEuMC4wLCBjYW5pdXNl LWxpdGVAXjEuMC4zMDAwMTIxOSwgY2FuaXVzZS1saXRlQF4xLjAuMzAwMDEyMzAsIGNhbml1c2Ut bGl0ZUBeMS4wLjMwMDAxMjg2OgorY2FuaXVzZS1saXRlQF4xLjAuMCwgY2FuaXVzZS1saXRlQF4x LjAuMzAwMDEyODY6CiAgIHZlcnNpb24gIjEuMC4zMDAwMTMwOSIKICAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkubnBtanMub3JnL2Nhbml1c2UtbGl0ZS8tL2Nhbml1c2UtbGl0ZS0xLjAuMzAw MDEzMDkudGd6IgogICBpbnRlZ3JpdHkgc2hhNTEyLVBsOHZmaWdtQlhYcSsveVV6MWpVd1VMZXE5 eGhNSnpuemRjL3h3bDRXY2xEQXVlYmNUSFZlZnB6OGxFL2JNSStVTjdUT2tTU2U3QjdSblpkNitk empBPT0KIAorY2FuaXVzZS1saXRlQF4xLjAuMzAwMDEyNzIsIGNhbml1c2UtbGl0ZUBeMS4wLjMw MDAxMjc0OgorICB2ZXJzaW9uICIxLjAuMzAwMDEyNzgiCisgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL2Nhbml1c2UtbGl0ZS8tL2Nhbml1c2UtbGl0ZS0xLjAuMzAwMDEy NzgudGd6IzUxY2FmYzg1OGRmNzdkOTY2YjE3ZjU5YjU4MzkyNTBiMjQ0MTdmZmYiCisgIGludGVn cml0eSBzaGE1MTItbXBGOUtlSDh1NWNNb0VtSWljL2NyN1BOUytGNUxXQmswdDJla0dUNjBsRmYw V3ErbjlMc3BBajBnM1ArbzdEUWhEM3NVZGxNbG40WUZBV2hGWW45amc9PQorCiBjYXdAXjIuMC4w LCBjYXdAXjIuMC4xOgogICB2ZXJzaW9uICIyLjAuMSIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vY2F3Ly0vY2F3LTIuMC4xLnRneiM2YzNjYTA3MWZjMTk0NzIwODgz YzJkYzVkYTliMDc0YmZjN2U5ZTk1IgpAQCAtMzgzOCw5ICszNTM4LDkgQEAgY2hhbGtAXjIuMC4w LCBjaGFsa0BeMi40LjEsIGNoYWxrQF4yLjQuMjoKICAgICBzdXBwb3J0cy1jb2xvciAiXjUuMy4w IgogCiBjaGFsa0BeNC4wLjAsIGNoYWxrQF40LjEuMDoKLSAgdmVyc2lvbiAiNC4xLjEiCi0gIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NoYWxrLy0vY2hhbGstNC4xLjEu dGd6I2M4MGIzZmFiMjhiZjYzNzFlNjg2MzMyNWVlZTY3ZTYxOGI3N2U2YWQiCi0gIGludGVncml0 eSBzaGE1MTItZGlIemRES3hjVStiQXNVYm9ITFBFRFFpdzBxRWUwcWQ3U1lVbjNIZ2NGbFdnYkRj ZkxHc3dPSFllR3JIS3pHOXo2VVlmMDFkOVZGTWZaeFBNMXhaU2c9PQorICB2ZXJzaW9uICI0LjEu MiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2hhbGsvLS9jaGFs ay00LjEuMi50Z3ojYWFjNGUyYjc3MzRhNzQwODY3YWViMTZiZjAyYWFkNTU2YTFlN2EwMSIKKyAg aW50ZWdyaXR5IHNoYTUxMi1vS25iaEZ5UklYcFV1ZXo4aUJNbXlFYTRuYmo0SU9ReXVoYy93eTlr WTcvV1ZQY3dJTzlWQTY2OFB1OFJrTzcrMEc3NlNMUk9leXc5Q3BRMDYxaTRtQT09CiAgIGRlcGVu ZGVuY2llczoKICAgICBhbnNpLXN0eWxlcyAiXjQuMS4wIgogICAgIHN1cHBvcnRzLWNvbG9yICJe Ny4xLjAiCkBAIC0zODY4LDQ0ICszNTY4LDQ0IEBAIGNoYXJ0anMtY29sb3JAXjIuMS4wOgogICAg IGNoYXJ0anMtY29sb3Itc3RyaW5nICJeMC42LjAiCiAgICAgY29sb3ItY29udmVydCAiXjEuOS4z IgogCi1jaGVlcmlvLXNlbGVjdEBeMS40LjA6Ci0gIHZlcnNpb24gIjEuNC4wIgotICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jaGVlcmlvLXNlbGVjdC8tL2NoZWVyaW8t c2VsZWN0LTEuNC4wLnRneiMzYTE2ZjIxZTM3YTJlZjBmMjExZDZkMWFhNGVmZjA1NGJiMjJjZGM5 IgotICBpbnRlZ3JpdHkgc2hhNTEyLXNvYlIzWXF6MjdMNTUzUWE3Y0s2cnRKbE1EYmlLUGROeXd0 Ujk1U2ovWWdmcExmeTB1NkNHSnVhQktlNVlFL3ZUYzIzU0NSS3hXU2Rsb24vdzZJL0V3PT0KK2No ZWVyaW8tc2VsZWN0QF4xLjUuMDoKKyAgdmVyc2lvbiAiMS41LjAiCisgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NoZWVyaW8tc2VsZWN0Ly0vY2hlZXJpby1zZWxlY3Qt MS41LjAudGd6I2ZhZjNkYWViMzFiMTdjNWUxYTlkYWJjZWUyODhhYWY4YWFmYTU4MjMiCisgIGlu dGVncml0eSBzaGE1MTItcW9jYUhQdjV5cGVmaDZZTnh2bmJBQk0wN0tNeEV4YnRiZnVKb0lpZTNp WlhYMUVSd1ltSmNJaVJycjlIMDV1Y1FQMWsyOGRhdjhycGREZ2pRZDhkcmc9PQogICBkZXBlbmRl bmNpZXM6Ci0gICAgY3NzLXNlbGVjdCAiXjQuMS4yIgotICAgIGNzcy13aGF0ICJeNS4wLjAiCisg ICAgY3NzLXNlbGVjdCAiXjQuMS4zIgorICAgIGNzcy13aGF0ICJeNS4wLjEiCiAgICAgZG9tZWxl bWVudHR5cGUgIl4yLjIuMCIKICAgICBkb21oYW5kbGVyICJeNC4yLjAiCi0gICAgZG9tdXRpbHMg Il4yLjYuMCIKKyAgICBkb211dGlscyAiXjIuNy4wIgogCiBjaGVlcmlvQF4xLjAuMC1yYy4zOgot ICB2ZXJzaW9uICIxLjAuMC1yYy45IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9jaGVlcmlvLy0vY2hlZXJpby0xLjAuMC1yYy45LnRneiNhM2FlNmI3Y2U3YWY4MDY3 NTMwMmZmODM2ZjYyOGU3Y2I3ODZhNjdmIgotICBpbnRlZ3JpdHkgc2hhNTEyLVFGNlhWZHJMT05P NkRYUkY1aWFvbFkrb2RtaGoyQ0xqK3h6Tm9kN0lOUFdNaS94OVg0U095bEgwUy92YVBwWCtBVVU2 dDA0czM0U1FOaDdEYmt1Q25nPT0KKyAgdmVyc2lvbiAiMS4wLjAtcmMuMTAiCisgIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NoZWVyaW8vLS9jaGVlcmlvLTEuMC4wLXJj LjEwLnRneiMyYmEzZGNkZmNjMjZlNzk1NmZjMWY0NDBlNjFkNTFjNjQzMzc5ZjNlIgorICBpbnRl Z3JpdHkgc2hhNTEyLWcwSjBxL082bVc4ejV6eFEzQThFOEoxaFVncDRTTU92RW9XL3g4NE93eUhL ZS9aY2N6ODNQVlQ0eTVDcmNyNTMwRlY2TmdtS0kxcXZHVEtWbDlYWFZ3PT0KICAgZGVwZW5kZW5j aWVzOgotICAgIGNoZWVyaW8tc2VsZWN0ICJeMS40LjAiCi0gICAgZG9tLXNlcmlhbGl6ZXIgIl4x LjMuMSIKKyAgICBjaGVlcmlvLXNlbGVjdCAiXjEuNS4wIgorICAgIGRvbS1zZXJpYWxpemVyICJe MS4zLjIiCiAgICAgZG9taGFuZGxlciAiXjQuMi4wIgogICAgIGh0bWxwYXJzZXIyICJeNi4xLjAi CiAgICAgcGFyc2U1ICJeNi4wLjEiCiAgICAgcGFyc2U1LWh0bWxwYXJzZXIyLXRyZWUtYWRhcHRl ciAiXjYuMC4xIgogICAgIHRzbGliICJeMi4yLjAiCiAKLSJjaG9raWRhckA+PTIuMC4wIDw0LjAu MCI6Ci0gIHZlcnNpb24gIjMuNS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9jaG9raWRhci8tL2Nob2tpZGFyLTMuNS4xLnRneiNlZTljZTdiYmViZDJiNzlmNDlm MzA0Nzk5ZDU0NjhlMzFlMTRlNjhhIgotICBpbnRlZ3JpdHkgc2hhNTEyLTkrcytPZCtXMFZKSnph d0RtYS9ndkJOUXFrVGlxWVRXTHVab3lBc2l2c0k0QWFXVEN6SEcwNi9UTWpzZjFjWWU5Q2I5N1VD RWhqejdIdm5QazJwL3R3PT0KKyJjaG9raWRhckA+PTMuMC4wIDw0LjAuMCI6CisgIHZlcnNpb24g IjMuNS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jaG9raWRh ci8tL2Nob2tpZGFyLTMuNS4yLnRneiNkYmEzOTc2ZmNhZGIwMTZmNjZmZDM2NTAyMWQ5MTYwMGQw MWMxZTc1IgorICBpbnRlZ3JpdHkgc2hhNTEyLWVrR2hPbk5WUGdUNzdyNEsvVTNHRGh1K0ZRMlM4 VG5LL3MyS2JJR1hpMFNaV3V3a1oyUU55ZldkWlcrVFZmbjg0RHBFUDdyTGVDdDJVSTZiSjhHd2JR PT0KICAgZGVwZW5kZW5jaWVzOgotICAgIGFueW1hdGNoICJ+My4xLjEiCisgICAgYW55bWF0Y2gg In4zLjEuMiIKICAgICBicmFjZXMgIn4zLjAuMiIKLSAgICBnbG9iLXBhcmVudCAifjUuMS4wIgor ICAgIGdsb2ItcGFyZW50ICJ+NS4xLjIiCiAgICAgaXMtYmluYXJ5LXBhdGggIn4yLjEuMCIKICAg ICBpcy1nbG9iICJ+NC4wLjEiCiAgICAgbm9ybWFsaXplLXBhdGggIn4zLjAuMCIKLSAgICByZWFk ZGlycCAifjMuNS4wIgorICAgIHJlYWRkaXJwICJ+My42LjAiCiAgIG9wdGlvbmFsRGVwZW5kZW5j aWVzOgotICAgIGZzZXZlbnRzICJ+Mi4zLjEiCisgICAgZnNldmVudHMgIn4yLjMuMiIKIAogY2hv a2lkYXJAXjMuNS4xOgogICB2ZXJzaW9uICIzLjUuMyIKQEAgLTQwMTIsOSArMzcxMiw5IEBAIGNv ZGUtcG9pbnQtYXRAXjEuMC4wOgogICBpbnRlZ3JpdHkgc2hhMS1EUWNMVFFRNlcrb3pvdkdrRGk3 YlBacE16M2M9CiAKIGNvZGVtaXJyb3JAXjUuNTkuMjoKLSAgdmVyc2lvbiAiNS41OS40IgotICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb2RlbWlycm9yLy0vY29kZW1p cnJvci01LjU5LjQudGd6I2JmYzExYzhjZTMyYjA0ODE4ZThkNjYxYmJkNzkwYTk0ZjRiM2E2ZjMi Ci0gIGludGVncml0eSBzaGE1MTItYWNodzVKQmd4OFFQY0FDRERuK0VVVVhtQ1l6eC96eEV0T0dY eWp2TEV2WVk4R2xlVXJuZm01RCtaYitValNoSGdnWEtEVDlBWHJia0JaWDZhMFlTUWc9PQorICB2 ZXJzaW9uICI1LjYzLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L2NvZGVtaXJyb3IvLS9jb2RlbWlycm9yLTUuNjMuMy50Z3ojOTcwNDJhMjQyMDI3ZmUwYzg3YzA5 YjM2YmMwMTkzMWQzN2I3NjUyNyIKKyAgaW50ZWdyaXR5IHNoYTUxMi0xQytMRUxyKzVncmdKWXF3 WktxeHJjYlBzSEZIYXBWYVZBbG9Cc0ZCQVNicExuUXFMdzFVOHlYSjNnVDVEK3JoeElpU3BvK2tU cU4raFErOWlhbElYdz09CiAKIGNvbG9yLWNvbnZlcnRAXjEuOS4wLCBjb2xvci1jb252ZXJ0QF4x LjkuMzoKICAgdmVyc2lvbiAiMS45LjMiCkBAIC00MDQwLDE1ICszNzQwLDE1IEBAIGNvbG9yLW5h bWVAXjEuMC4wLCBjb2xvci1uYW1lQH4xLjEuNDoKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vY29sb3ItbmFtZS8tL2NvbG9yLW5hbWUtMS4xLjQudGd6I2MyYTA5YTg3 YWNiZGU2OTU0M2RlNmY2M2ZhMzk5NWM4MjZjNTM2YTIiCiAgIGludGVncml0eSBzaGE1MTItZE95 KzNBdVczYTJ3TmJaSEl1TVpwVGNnakd1TFUvdUJML3ViY1pGOU9YYkRvOGZmNE84eVZwNUJmMGVm Uzh1RW9ZbzVxNEZ4N2RZOU9nUUdYZ0FzUUE9PQogCi1jb2xvcmRAXjIuMC4wOgotICB2ZXJzaW9u ICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29sb3Jk Ly0vY29sb3JkLTIuMC4wLnRneiNmOGMxOWYyNTI2YjdkYzViMjJkNmU1N2VmMTAyZjAzYTJhNDNh M2Q4IgotICBpbnRlZ3JpdHkgc2hhNTEyLVdNREZKZm9ZM3dxUFpOcEtVRmRzZTNIaEQ1QkhDYkU5 SkNkeFJ6b1ZIK3l3UklUR09lV0FITmtHRW15eExsRXJFcE45T0xNV2dkTTlkV1F0RGs1ZG9nPT0K K2NvbG9yZEBeMi45LjE6CisgIHZlcnNpb24gIjIuOS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9jb2xvcmQvLS9jb2xvcmQtMi45LjEudGd6I2M5NjFlYTBlZmVi NTdjOWYwZjQ4MzQ0NThmMjZjYjljYzRhM2Y5MGUiCisgIGludGVncml0eSBzaGE1MTItNExCTVN0 MDl2UjB1TG5QVmtPVUJubXhnb2FlTjRld1JieDgwMXdZL2JYY2x0WGZwUi9HNDZPZFduOTZYcFlt Q1d1WXZPNDZhQlpQNE5nWDhIcE5BY3c9PQogCi1jb2xvcmV0dGVAXjEuMi4xLCBjb2xvcmV0dGVA XjEuMi4yOgotICB2ZXJzaW9uICIxLjIuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vY29sb3JldHRlLy0vY29sb3JldHRlLTEuMi4yLnRneiNjYmNjNzlkNWU5OWNh ZWEyZGJmMTBlYjNhMjZmZDhiM2U2YWNmYTk0IgotICBpbnRlZ3JpdHkgc2hhNTEyLU1LR016eWZl dXV0Qy9aSjFjYmE5TnFjTnBmZXFNVWNZbXlGMVpGWTYvQ243Q05TQUt4NmErczQ4c3FMcXlBaVp1 YVAyVGNxTWhvbytkbHdGblZ4VDl3PT0KK2NvbG9yZXR0ZUBeMi4wLjE0OgorICB2ZXJzaW9uICIy LjAuMTYiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvbG9yZXR0 ZS8tL2NvbG9yZXR0ZS0yLjAuMTYudGd6IzcxM2I5YWY4NGZkYjAwMDEzOWYwNDU0NmJkNGE5M2Y2 MmE1MDg1ZGEiCisgIGludGVncml0eSBzaGE1MTItaFVld3Y3b01qQ3Ard2tCdjVSbTB2ODdlSmhx NHdvaDVyU1IrNDJZU1FKS2VjQ3FnSXFOa1o2bEFsUW1zL0J3SFBKQTVOS01SbHB4UFJ2MG44SFFX Nmc9PQogCiBjb21iaW5lLXNvdXJjZS1tYXBAXjAuOC4wLCBjb21iaW5lLXNvdXJjZS1tYXBAfjAu OC4wOgogICB2ZXJzaW9uICIwLjguMCIKQEAgLTQwNzAsMTcgKzM3NzAsNyBAQCBjb21tYW5kZXJA XjQuMC4xOgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb21tYW5k ZXIvLS9jb21tYW5kZXItNC4xLjEudGd6IzlmZDYwMmJkOTM2Mjk0ZTllOWVmNDZhM2Y0ZDY5NjQw NDRiMTgwNjgiCiAgIGludGVncml0eSBzaGE1MTItTk9LbTh4aGt6QWp6Rng4QjJ2NU9BSFQrdTVw UlFjMlVDYTJWcTlqWUwvMzFvMndpOW14QkE3TElGczNzVjVWU0M0OXo2cEVoZmJNVUx2U2hLajI2 V0E9PQogCi1jb21tYW5kZXJAXjYuMi4wOgotICB2ZXJzaW9uICI2LjIuMSIKLSAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29tbWFuZGVyLy0vY29tbWFuZGVyLTYuMi4x LnRneiMwNzkyZWI2ODJkZmJjMzI1OTk5YmIyYjg0ZmRkZGRiYTExMGFjNzNjIgotICBpbnRlZ3Jp dHkgc2hhNTEyLVU3VmRySkZuSmdvNHhqckhwVHp1MHlySFBHSW1kc21EOTVabGdZU0VhakFuMkpL ekRoRFRQRzlrQlRlZm1PYkwydy9uZ2VabmlsaytPVjlDRzNkN1VBPT0KLQotY29tbWFuZGVyQF43 LjAuMDoKLSAgdmVyc2lvbiAiNy4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL2NvbW1hbmRlci8tL2NvbW1hbmRlci03LjEuMC50Z3ojZjJlYWVjZjEzMWYxMGUz NmUwN2Q4OTQ2OTgyMjZlMzZhZTBlYjVmZiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1wUnhCbmEzTUpl NkhLbkJHc0R5TXY4RVRicHR3M2F4RWRZSG9xTmg3Z3U1b0RjZXc4ZnMweG5pdlpHbTA2T2drOHpH QUo5VlgrT1BFcjJHWEVRSzRkZz09Ci0KLWNvbW1hbmRlckBeNy4yLjA6Citjb21tYW5kZXJAXjcu MC4wLCBjb21tYW5kZXJAXjcuMi4wOgogICB2ZXJzaW9uICI3LjIuMCIKICAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29tbWFuZGVyLy0vY29tbWFuZGVyLTcuMi4wLnRn eiNhMzZjYjU3ZDBiNTAxY2UxMDhlNGQyMDU1OWExNTBhMzkxZDk3YWI3IgogICBpbnRlZ3JpdHkg c2hhNTEyLVFyV1hCK1pRU1ZQbUlXSWh0RU85SCtnd0hhTUdZaUY1Q2h2b0orSzlaR0hHL3NWc2E2 eWllc0FEMUdDL3g0NnNFVDAwWGx3bzF1NDlSVlZWenZjU2t3PT0KQEAgLTQxMTEsOSArMzgwMSw5 IEBAIGNvbmNhdC1zdHJlYW1AXjEuNi4wLCBjb25jYXQtc3RyZWFtQF4xLjYuMSwgY29uY2F0LXN0 cmVhbUB+MS42LjA6CiAgICAgdHlwZWRhcnJheSAiXjAuMC42IgogCiBjb25maWctY2hhaW5AXjEu MS4xMToKLSAgdmVyc2lvbiAiMS4xLjEyIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9jb25maWctY2hhaW4vLS9jb25maWctY2hhaW4tMS4xLjEyLnRneiMwZmRlOGQw OTEyMDBlYjVlODA4Y2FmMjVmZTYxOGMwMmY0OGU0ZWZhIgotICBpbnRlZ3JpdHkgc2hhNTEyLWEx ZU9JY3U4KzdsVUluZ2U0UnBmL240S3JrZjNEZDlscWhsalJ6SUkxL1puby9rUnRVV256blBPM2pP S0JtVEVrdGt0M2ZreGlzVWNpdm9qMGViem9BPT0KKyAgdmVyc2lvbiAiMS4xLjEzIgorICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb25maWctY2hhaW4vLS9jb25maWct Y2hhaW4tMS4xLjEzLnRneiNmYWQwNzk1YWE2YTZjZGFmZjllZDFiNjhlOWRmZjk0MzcyYzIzMmY0 IgorICBpbnRlZ3JpdHkgc2hhNTEyLXFqK2Y4QVBBUlhIck0waHJhcVhZYjIvYk9WU1Y0UHZKUWxO Wi9EVmowUXJtTk0ycTJldWl6a2V1VmNrUTU3SitXMG1SSDZIdmkrazUwTTRKdWwyVlJRPT0KICAg ZGVwZW5kZW5jaWVzOgogICAgIGluaSAiXjEuMy40IgogICAgIHByb3RvLWxpc3QgIn4xLjIuMSIK QEAgLTQyMDAsNyArMzg5MCw3IEBAIGNvcHktd2VicGFjay1wbHVnaW5AXjcuMC4wOgogICAgIHNj aGVtYS11dGlscyAiXjMuMC4wIgogICAgIHNlcmlhbGl6ZS1qYXZhc2NyaXB0ICJeNS4wLjEiCiAK LWNvcmUtanMtY29tcGF0QF4zLjIwLjIsIGNvcmUtanMtY29tcGF0QF4zLjIxLjA6Citjb3JlLWpz LWNvbXBhdEBeMy4yMC4yLCBjb3JlLWpzLWNvbXBhdEBeMy4yMS4wLCBjb3JlLWpzLWNvbXBhdEBe My44LjEsIGNvcmUtanMtY29tcGF0QF4zLjkuMDoKICAgdmVyc2lvbiAiMy4yMS4wIgogICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb3JlLWpzLWNvbXBhdC8tL2NvcmUt anMtY29tcGF0LTMuMjEuMC50Z3ojYmNjODZhYTVhNTg5Y2VlMzU4ZTdhN2ZhMGE0OTc5ZDVhNzZj Mzg4NSIKICAgaW50ZWdyaXR5IHNoYTUxMi1PU1hzZU5QU0syT1BKYTZHZHRrTXovWHhlWHg4L0NK dmZoUVdUcWQ2bmV1VXJhdWpjTDRqVnNqa0xRejFPV25heDh4VlFKblJQZTBWMmpxTldPUkErQT09 CkBAIC00MjA4LDI4ICszODk4LDIwIEBAIGNvcmUtanMtY29tcGF0QF4zLjIwLjIsIGNvcmUtanMt Y29tcGF0QF4zLjIxLjA6CiAgICAgYnJvd3NlcnNsaXN0ICJeNC4xOS4xIgogICAgIHNlbXZlciAi Ny4wLjAiCiAKLWNvcmUtanMtY29tcGF0QF4zLjguMSwgY29yZS1qcy1jb21wYXRAXjMuOS4wOgot ICB2ZXJzaW9uICIzLjkuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vY29yZS1qcy1jb21wYXQvLS9jb3JlLWpzLWNvbXBhdC0zLjkuMS50Z3ojNGU1NzJhY2ZlOTBh ZmY2OWQ3NmQ4YzM3NzU5ZDIxYTVjNTliYjQ1NSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1qWEFpck1R eHJrYmlpTHNDeDliUVBKRkE2bGxEYWRLTXBZckJKUUozL2M0L3ZzUFAvZkFmMjloMjR0dmlSbHZ3 VUw2QW1ZNUNITHUyR3ZqdVl2aVFxQT09Ci0gIGRlcGVuZGVuY2llczoKLSAgICBicm93c2Vyc2xp c3QgIl40LjE2LjMiCi0gICAgc2VtdmVyICI3LjAuMCIKLQogY29yZS1qc0BeMi40LjA6CiAgIHZl cnNpb24gIjIuNi4xMiIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v Y29yZS1qcy8tL2NvcmUtanMtMi42LjEyLnRneiNkOTMzM2RmYTdiMDY1ZTM0N2NjNTY4MjIxOWQ2 ZjY5MDg1OWNjMmVjIgogICBpbnRlZ3JpdHkgc2hhNTEyLUtiMndDMGZ2c1dmUXJnazhIVTVsVzZV L0xjczgrOWFhWWN5NFpGYzZERGxvNG5aN243MGRFZ0U1cnRSMG9HNnVmS0RVbnJ3ZldMMW1YUjVs akRhdHJRPT0KIAotY29yZS1qc0BeMy4xMi4xLCBjb3JlLWpzQF4zLjIuMToKLSAgdmVyc2lvbiAi My4xMi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb3JlLWpz Ly0vY29yZS1qcy0zLjEyLjEudGd6IzZiNWFmNGZmNTU2MTZjMDhhNDRkMzg2ZjFmNTEwOTE3ZmYy MDQxMTIiCi0gIGludGVncml0eSBzaGE1MTItTmU5REtQSFRPYlJ1QjA5RHJ1NUFqd0tqWTRjSkhW R3UreTVmN2NvR24xRTlHcmtjM3AyaUJ3RTlBSS9uSnpzRTI5bVFGN29xK21oWVlScU9NRk4xQnc9 PQorY29yZS1qc0BeMy4xNS4xLCBjb3JlLWpzQF4zLjIuMToKKyAgdmVyc2lvbiAiMy4xOS4xIgor ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb3JlLWpzLy0vY29yZS1q cy0zLjE5LjEudGd6I2Y2ZjE3M2NhZTIzZTczYTdkODhmYTIzYjZlOWRhMzI5Mjc2YzY2NDEiCisg IGludGVncml0eSBzaGE1MTItVG5jN0U5aUtkL2IvZmY3R0ZiaHdQVnpKelB6dEdyQ2hCOFg4R0xx b1lHZEVPRzhJcExuSzF4UHlvM1pvTzNIc0s2VG9kSlM1OFZHUE94QStoTEhRTWc9PQogCiBjb3Jl LXV0aWwtaXNAfjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vY29yZS11dGlsLWlzLy0vY29yZS11dGlsLWlzLTEuMC4yLnRn eiNiNWZkNTQyMjBhYTJiYzVhYjU3YWFiNzE0MGM5NDA3NTQ1MDNjMWE3IgotICBpbnRlZ3JpdHkg c2hhMS10ZjFVSWdxaXZGcTFlcXR4UU1sQWRVVUR3YWM9CisgIHZlcnNpb24gIjEuMC4zIgorICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb3JlLXV0aWwtaXMvLS9jb3Jl LXV0aWwtaXMtMS4wLjMudGd6I2E2MDQyZDM2MzRjMmIyN2U5MzI4ZjgzN2I5NjVmYWM4MzgwOGRi ODUiCisgIGludGVncml0eSBzaGE1MTItWlFCdmkxRGNwSjRHRHFhbmp1Y1oySGozd0VPNXBaRFM4 OUJXYmtjcnZkeGtzSm9yd1VERFphbVg5bGRGa3A5YXcybG1CRExna09iRUE0RFdOSjlGWVE9PQog CiBjb3JzQH4yLjguNToKICAgdmVyc2lvbiAiMi44LjUiCkBAIC00MjUxLDkgKzM5MzMsOSBAQCBj b3NtaWNvbmZpZ0BeNi4wLjA6CiAgICAgeWFtbCAiXjEuNy4yIgogCiBjb3NtaWNvbmZpZ0BeNy4w LjA6Ci0gIHZlcnNpb24gIjcuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9jb3NtaWNvbmZpZy8tL2Nvc21pY29uZmlnLTcuMC4wLnRneiNlZjliNDRkNzczOTU5 Y2FlNjNkZGVjZDEyMmRlMjM4NTNiNjBmOGQzIgotICBpbnRlZ3JpdHkgc2hhNTEyLXBvbmRHdlR1 VllEaysrdXBnaFhKYWJXekw2S3h1NmYyNmxqRnc2NFN3cTl2NnNRUFVMM0VVbFZEVjU2ZGlPanBD YXlLaWhMNmhWZThleElBQ1U0WGNBPT0KKyAgdmVyc2lvbiAiNy4wLjEiCisgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nvc21pY29uZmlnLy0vY29zbWljb25maWctNy4w LjEudGd6IzcxNGQ3NTY1MjJjYWNlODY3ODY3Y2NiNDQ3NGM1ZDAxYmJhZTVkNmQiCisgIGludGVn cml0eSBzaGE1MTItYTFZV05VVjJId0dpbUI3ZFUyczF3VU11ck5LanB4NjBIeEJCNnhVTThSZSsy czFnMUlJZkp2RlIwL2lDRitYSGRFMEdNVEtUdUxSMzJVUWZmNFRFeVE9PQogICBkZXBlbmRlbmNp ZXM6CiAgICAgIkB0eXBlcy9wYXJzZS1qc29uIiAiXjQuMC4wIgogICAgIGltcG9ydC1mcmVzaCAi XjMuMi4xIgpAQCAtNDM1MCw1OSArNDAzMiw1MiBAQCBjc3MtY29sb3Ita2V5d29yZHNAXjEuMC4w OgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3MtY29sb3Ita2V5 d29yZHMvLS9jc3MtY29sb3Ita2V5d29yZHMtMS4wLjAudGd6I2ZlYTI2MTZkYzY3NmIyOTYyNjg2 YjNhZjhkYmRiZTE4MGIyNDRlMDUiCiAgIGludGVncml0eSBzaGExLS9xSmhiY1oyc3BZbWhyT3Zq YjIrR0Fza1RnVT0KIAotY3NzLWNvbG9yLW5hbWVzQF4wLjAuNDoKLSAgdmVyc2lvbiAiMC4wLjQi Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzcy1jb2xvci1uYW1l cy8tL2Nzcy1jb2xvci1uYW1lcy0wLjAuNC50Z3ojODA4YWRjMmU3OWNmODQ3MzgwNjliNjQ2Y2Iy MGVjMjdiZWI2MjllMCIKLSAgaW50ZWdyaXR5IHNoYTEtZ0lyY0xublBoSE9BYWJaR3l5RHNKNzYy S2VBPQotCiBjc3MtY29sb3ItbmFtZXNAXjEuMC4xOgogICB2ZXJzaW9uICIxLjAuMSIKICAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3NzLWNvbG9yLW5hbWVzLy0vY3Nz LWNvbG9yLW5hbWVzLTEuMC4xLnRneiM2ZmY3ZWU4MWE4MjNhZDQ2ZTAyMGZhMmZkNmFiNDBhODg3 ZTJiYTY3IgogICBpbnRlZ3JpdHkgc2hhNTEyLS9sb1hZT2NoMXFVMWJpU3RJRnNISDhTeFRtT3Nl aDFJSnFGdnk4SXVqWE9tMWgrUWpVZERoa3pPclI1SEc4SzhtbHhSRWoweWZpOGV3Q0h4MGVNeHpB PT0KIAogY3NzLWRlY2xhcmF0aW9uLXNvcnRlckBeNi4wLjM6Ci0gIHZlcnNpb24gIjYuMC4zIgot ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3MtZGVjbGFyYXRpb24t c29ydGVyLy0vY3NzLWRlY2xhcmF0aW9uLXNvcnRlci02LjAuMy50Z3ojOWRmZDhlYTBkZjRjYzc4 NDY4Mjc4NzZmYWZiNTIzMTQ4OTBjMjFhOSIKLSAgaW50ZWdyaXR5IHNoYTUxMi01MlA5NW12VzFT TXp1UlplZ3ZwbHVUNnlFdjBGcVF1c3lkS1FQWnNOTjVRN2hoOEV3UXZOOEUybnd1SjE2QkJ2Tk42 TGNvSVpYdS9CazU4REFocnJ4dz09CisgIHZlcnNpb24gIjYuMS4zIgorICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3MtZGVjbGFyYXRpb24tc29ydGVyLy0vY3NzLWRl Y2xhcmF0aW9uLXNvcnRlci02LjEuMy50Z3ojZTk4NTJlNGNmOTQwYmE3OWY1MDlkOTQyNWIxMzdk MWY5NDQzOGRjMiIKKyAgaW50ZWdyaXR5IHNoYTUxMi1TdmpRak5SWmdoNFVMSzFMREoyQWR1UEtV S3hJcW10VTdaQXlpNDdCVFYrTTkwUXZ4cjlBQjZsS2xMYkRVZlhxSTlJUWVZQThMYkFzQ1pQcEpF VjNhQT09CiAgIGRlcGVuZGVuY2llczoKICAgICB0aW1zb3J0ICJeMC4zLjAiCiAKLWNzcy1saW5l LWJyZWFrQDEuMS4xOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vY3NzLWxpbmUtYnJlYWsvLS9jc3MtbGluZS1icmVhay0xLjEuMS50 Z3ojZDVlOWJkZDI5Nzg0MDA5OWViMDUwM2M3MzEwZmQzNDkyN2EwMjZlZiIKLSAgaW50ZWdyaXR5 IHNoYTUxMi0xZmVOVmFNNEZ5emRqNG1LUElRTkwybjcwTW11WXpBWFoxYXl0bFJPRlgxSnNPbzA3 ME9zdWd3R2pqN25sNmpuREpXSERNOHpSWnN3a21lWVZXWkpRQT09Citjc3MtbGluZS1icmVha0Ay LjAuMToKKyAgdmVyc2lvbiAiMi4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL2Nzcy1saW5lLWJyZWFrLy0vY3NzLWxpbmUtYnJlYWstMi4wLjEudGd6IzNkYzc0 YzJlZDVlYjY0MjExNDgwMjgxOTMyNDc1NzkwMjQzZTczMzgiCisgIGludGVncml0eSBzaGE1MTIt Z3dLWUlNVW43eG9kSWNiMzQ2d2dVaEUyRHQ1TzFLbXJjMTZQV2k4c0w0RlRmeURqOFA1MDk1cnpI NytPOENUWnVkSnIrdXcyR0NJL2h3RWtESkZJMnc9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgYmFz ZTY0LWFycmF5YnVmZmVyICJeMC4yLjAiCiAKIGNzcy1sb2FkZXJAXjUuMC4xOgotICB2ZXJzaW9u ICI1LjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3NzLWxv YWRlci8tL2Nzcy1sb2FkZXItNS4xLjEudGd6IzkzNjJkNDQ0YTBmN2MwOGMxNDhhMTA5NTk2NzE1 YzkwNGUyNTI4NzkiCi0gIGludGVncml0eSBzaGE1MTItNUZmaHBqd3R1Umd4cW11c0RpZG93cW1M bGNiKzFIZ25FRE1zaTJKaGlVclpVY29jK2NxdyttVXRNSUYvK09mZU1ZYWFGQ0xZcDFUYUl0OUg2 SS9mS0E9PQorICB2ZXJzaW9uICI1LjIuNyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vY3NzLWxvYWRlci8tL2Nzcy1sb2FkZXItNS4yLjcudGd6IzliOWYxMTFlZGY2 ZmIyYmU1ZGM2MjUyNTY0NGNiYzljMjMyMDY0YWUiCisgIGludGVncml0eSBzaGE1MTItUTdtT3Zw Qk5CRzdZclZHTXhSeGNCSlpGTDc1bytjSDJhYk5BU2RpYmtqL2ZmZllEOHFXYkluWnJEMFM5Y2NJ NnZaY2xGM0RzSEU3bmpHbEx0YUhiaGc9PQogICBkZXBlbmRlbmNpZXM6Ci0gICAgY2FtZWxjYXNl ICJeNi4yLjAiCi0gICAgY3NzZXNjICJeMy4wLjAiCiAgICAgaWNzcy11dGlscyAiXjUuMS4wIgog ICAgIGxvYWRlci11dGlscyAiXjIuMC4wIgotICAgIHBvc3Rjc3MgIl44LjIuNiIKKyAgICBwb3N0 Y3NzICJeOC4yLjE1IgogICAgIHBvc3Rjc3MtbW9kdWxlcy1leHRyYWN0LWltcG9ydHMgIl4zLjAu MCIKICAgICBwb3N0Y3NzLW1vZHVsZXMtbG9jYWwtYnktZGVmYXVsdCAiXjQuMC4wIgogICAgIHBv c3Rjc3MtbW9kdWxlcy1zY29wZSAiXjMuMC4wIgogICAgIHBvc3Rjc3MtbW9kdWxlcy12YWx1ZXMg Il40LjAuMCIKICAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjQuMS4wIgogICAgIHNjaGVtYS11 dGlscyAiXjMuMC4wIgotICAgIHNlbXZlciAiXjcuMy40IgorICAgIHNlbXZlciAiXjcuMy41Igog CiBjc3MtbWluaW1pemVyLXdlYnBhY2stcGx1Z2luQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4wLjAi Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzcy1taW5pbWl6ZXIt d2VicGFjay1wbHVnaW4vLS9jc3MtbWluaW1pemVyLXdlYnBhY2stcGx1Z2luLTMuMC4wLnRneiM1 YjFlZGJmZmUxYTNlNjQ1MGQ4Y2I1M2ZiNGY0YzUwMTNiN2FmMzEzIgotICBpbnRlZ3JpdHkgc2hh NTEyLXlJcnFHMHBQcGhSMVJvTngyd0R4WW14UmYydWJSQ2hMRFh4djdjY2lwRW01YlJLc1pSWXA4 bisycGVlWGVodFRGNXMzeU54bHFzZHozV1FPc0FnVWt3PT0KKyAgdmVyc2lvbiAiMy4xLjEiCisg IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzcy1taW5pbWl6ZXItd2Vi cGFjay1wbHVnaW4vLS9jc3MtbWluaW1pemVyLXdlYnBhY2stcGx1Z2luLTMuMS4xLnRneiMyN2Jh ZmEzYjc1MDU0NzEzNTY1YjIyNjZjNjRiMDIyOGFjZDE4NjM0IgorICBpbnRlZ3JpdHkgc2hhNTEy LUtsQjhsNXVvTmNmOUY3aTVrWG5reG9xSkdkMkJYSDRmMCtMajJ2U1dTbXV2TUxZTzFrTnNKMUtI U3plRFc4ZTQ1L3doZ1NPUGNLVlQvM0pvcGtUOGRnPT0KICAgZGVwZW5kZW5jaWVzOgotICAgIGNz c25hbm8gIl41LjAuMCIKLSAgICBqZXN0LXdvcmtlciAiXjI2LjMuMCIKKyAgICBjc3NuYW5vICJe NS4wLjYiCisgICAgamVzdC13b3JrZXIgIl4yNy4wLjIiCiAgICAgcC1saW1pdCAiXjMuMC4yIgot ICAgIHBvc3Rjc3MgIl44LjIuOSIKLSAgICBzY2hlbWEtdXRpbHMgIl4zLjAuMCIKLSAgICBzZXJp YWxpemUtamF2YXNjcmlwdCAiXjUuMC4xIgorICAgIHBvc3Rjc3MgIl44LjMuNSIKKyAgICBzY2hl bWEtdXRpbHMgIl4zLjEuMCIKKyAgICBzZXJpYWxpemUtamF2YXNjcmlwdCAiXjYuMC4wIgogICAg IHNvdXJjZS1tYXAgIl4wLjYuMSIKIAogY3NzLXNlbGVjdC1iYXNlLWFkYXB0ZXJAXjAuMS4xOgpA QCAtNDQyMCw3ICs0MDk1LDcgQEAgY3NzLXNlbGVjdEBeMi4wLjA6CiAgICAgZG9tdXRpbHMgIl4x LjcuMCIKICAgICBudGgtY2hlY2sgIl4xLjAuMiIKIAotY3NzLXNlbGVjdEBeNC4xLjIsIGNzcy1z ZWxlY3RAXjQuMS4zOgorY3NzLXNlbGVjdEBeNC4xLjM6CiAgIHZlcnNpb24gIjQuMS4zIgogICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3Mtc2VsZWN0Ly0vY3NzLXNl bGVjdC00LjEuMy50Z3ojYTcwNDQwZjcwMzE3ZjI2NjkxMThhZDc0ZmYxMDVlNjU4NDljNzA2NyIK ICAgaW50ZWdyaXR5IHNoYTUxMi1nVDN3Qk5kOU5qNDlyQWJtdEZIajFjbGpJQU9MWVNYMW5aOENC N1RCTzNJTllja3lnbTVCN0xJU1Uvc3pZLy9ZbWRpU0xiSnZETE94OVZuTVZwTUJ4QT09CkBAIC00 NDY5LDcgKzQxNDQsNyBAQCBjc3Mtd2hhdEBeMy4yLjE6CiAgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL2Nzcy13aGF0Ly0vY3NzLXdoYXQtMy40LjIudGd6I2VhNzAyNmZj YjAxNzc3ZWRiZGU1MjEyNGUyMWYzMjdlN2FlOTUwZTQiCiAgIGludGVncml0eSBzaGE1MTItQUNV bTNMMC9qaVpUcWZ6Uk0zSGk5UThlWnFkNklLMzdtTVdQTHo5UEp4a0xXbGxZZVJmK0VIVVNIWUV0 Rm9wMkVxeXRhcTFGaXpGVmg3WGZCblhDRFE9PQogCi1jc3Mtd2hhdEBeNS4wLjA6Citjc3Mtd2hh dEBeNS4wLjAsIGNzcy13aGF0QF41LjAuMToKICAgdmVyc2lvbiAiNS4xLjAiCiAgIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzcy13aGF0Ly0vY3NzLXdoYXQtNS4xLjAu dGd6IzNmN2I3MDdhYWRmNjMzYmFmNjJjMmNlYjg1NzliNTQ1YmI0MGY3ZmUiCiAgIGludGVncml0 eSBzaGE1MTItYXJTTVJXSUlGWTBoVjhwSXhaTUVmbU1JNDdXajNSL2FXcFpERHhXWUNQRWlPTXY2 dGZPcm5wRHRneEJZUEVRRDRWMFkvOTU4KzFUZEMzaVdURmNVUHc9PQpAQCAtNDQ3OSwyNCArNDE1 NCwyNCBAQCBjc3Nlc2NAXjMuMC4wOgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9jc3Nlc2MvLS9jc3Nlc2MtMy4wLjAudGd6IzM3NzQxOTE5OTAzYjg2ODU2NWUxYzA5 ZWE3NDc0NDVjZDE4OTgzZWUiCiAgIGludGVncml0eSBzaGE1MTItL1RiL0pjaksxMTFuTlNjR29i NU1OdHNudE5NMWFDTlVEaXBCL1Rrd1pGaHlEcnJFNDdTT3gvMTh3RjJiYmpnYzNaekNTS1cxVDVu dDVFYkZvQXovVmc9PQogCi1jc3NuYW5vLXByZXNldC1kZWZhdWx0QF41LjEuMToKLSAgdmVyc2lv biAiNS4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzc25h bm8tcHJlc2V0LWRlZmF1bHQvLS9jc3NuYW5vLXByZXNldC1kZWZhdWx0LTUuMS4xLnRneiM1Y2Q3 ODNjYWVkOTQyY2M5NDE1OWFlYjEwNTgzYWY0NjkxNDQ1YjhjIgotICBpbnRlZ3JpdHkgc2hhNTEy LWtBaFI3MVRhc2NtbmpsaGw0VWVnR0EzS0dHYk1MWEhra3FWcEE5aWRzUlQxSm1JaElzejFDM3RE cEJlUU1VdzVFWDVSZmIxSEdjL1BScUQyQUZrM1ZnPT0KK2Nzc25hbm8tcHJlc2V0LWRlZmF1bHRA XjUuMS41OgorICB2ZXJzaW9uICI1LjEuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vY3NzbmFuby1wcmVzZXQtZGVmYXVsdC8tL2Nzc25hbm8tcHJlc2V0LWRlZmF1 bHQtNS4xLjUudGd6IzZlZmZiNzE3NWVlNWQyOTZmOTUzMzBlMTM3NTg3ZTI3ZWU5NzRkNDQiCisg IGludGVncml0eSBzaGE1MTItZkYwMFVJK2QzUFdrR2ZNZDYyZ2VxbW9VZTVoK0xPaEdFMkdINEZx cTNiZU5LZENVMUxXd0xVeUljdTQvQTcybFd2MDczN2NIZXk1emhoV3czclcwc0E9PQogICBkZXBl bmRlbmNpZXM6CiAgICAgY3NzLWRlY2xhcmF0aW9uLXNvcnRlciAiXjYuMC4zIgogICAgIGNzc25h bm8tdXRpbHMgIl4yLjAuMSIKICAgICBwb3N0Y3NzLWNhbGMgIl44LjAuMCIKLSAgICBwb3N0Y3Nz LWNvbG9ybWluICJeNS4xLjEiCi0gICAgcG9zdGNzcy1jb252ZXJ0LXZhbHVlcyAiXjUuMC4xIgor ICAgIHBvc3Rjc3MtY29sb3JtaW4gIl41LjIuMSIKKyAgICBwb3N0Y3NzLWNvbnZlcnQtdmFsdWVz ICJeNS4wLjIiCiAgICAgcG9zdGNzcy1kaXNjYXJkLWNvbW1lbnRzICJeNS4wLjEiCiAgICAgcG9z dGNzcy1kaXNjYXJkLWR1cGxpY2F0ZXMgIl41LjAuMSIKICAgICBwb3N0Y3NzLWRpc2NhcmQtZW1w dHkgIl41LjAuMSIKICAgICBwb3N0Y3NzLWRpc2NhcmQtb3ZlcnJpZGRlbiAiXjUuMC4xIgogICAg IHBvc3Rjc3MtbWVyZ2UtbG9uZ2hhbmQgIl41LjAuMiIKLSAgICBwb3N0Y3NzLW1lcmdlLXJ1bGVz ICJeNS4wLjEiCisgICAgcG9zdGNzcy1tZXJnZS1ydWxlcyAiXjUuMC4yIgogICAgIHBvc3Rjc3Mt bWluaWZ5LWZvbnQtdmFsdWVzICJeNS4wLjEiCi0gICAgcG9zdGNzcy1taW5pZnktZ3JhZGllbnRz ICJeNS4wLjEiCisgICAgcG9zdGNzcy1taW5pZnktZ3JhZGllbnRzICJeNS4wLjMiCiAgICAgcG9z dGNzcy1taW5pZnktcGFyYW1zICJeNS4wLjEiCiAgICAgcG9zdGNzcy1taW5pZnktc2VsZWN0b3Jz ICJeNS4xLjAiCiAgICAgcG9zdGNzcy1ub3JtYWxpemUtY2hhcnNldCAiXjUuMC4xIgpAQCAtNDUw NiwxMiArNDE4MSwxMiBAQCBjc3NuYW5vLXByZXNldC1kZWZhdWx0QF41LjEuMToKICAgICBwb3N0 Y3NzLW5vcm1hbGl6ZS1zdHJpbmcgIl41LjAuMSIKICAgICBwb3N0Y3NzLW5vcm1hbGl6ZS10aW1p bmctZnVuY3Rpb25zICJeNS4wLjEiCiAgICAgcG9zdGNzcy1ub3JtYWxpemUtdW5pY29kZSAiXjUu MC4xIgotICAgIHBvc3Rjc3Mtbm9ybWFsaXplLXVybCAiXjUuMC4xIgorICAgIHBvc3Rjc3Mtbm9y bWFsaXplLXVybCAiXjUuMC4yIgogICAgIHBvc3Rjc3Mtbm9ybWFsaXplLXdoaXRlc3BhY2UgIl41 LjAuMSIKLSAgICBwb3N0Y3NzLW9yZGVyZWQtdmFsdWVzICJeNS4wLjEiCisgICAgcG9zdGNzcy1v cmRlcmVkLXZhbHVlcyAiXjUuMC4yIgogICAgIHBvc3Rjc3MtcmVkdWNlLWluaXRpYWwgIl41LjAu MSIKICAgICBwb3N0Y3NzLXJlZHVjZS10cmFuc2Zvcm1zICJeNS4wLjEiCi0gICAgcG9zdGNzcy1z dmdvICJeNS4wLjEiCisgICAgcG9zdGNzcy1zdmdvICJeNS4wLjMiCiAgICAgcG9zdGNzcy11bmlx dWUtc2VsZWN0b3JzICJeNS4wLjEiCiAKIGNzc25hbm8tdXRpbHNAXjIuMC4xOgpAQCAtNDUxOSwx NCArNDE5NCwxNSBAQCBjc3NuYW5vLXV0aWxzQF4yLjAuMToKICAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vY3NzbmFuby11dGlscy8tL2Nzc25hbm8tdXRpbHMtMi4wLjEu dGd6Izg2NjBhYTJiMzdlZDg2OWQyZTJmMjI5MTgxOTZhOWE4YjY0OThjZTIiCiAgIGludGVncml0 eSBzaGE1MTItaTh2TFJaVG5FSDl1Ykl5ZmRaQ0FkSWRnbkhBVWVRZUJ5RWVRMkk3b1RpbHZQOW9I TzZSU2NwZXEzR3NGVVZxZUI4dVpnT1E5cHc4dXRvZk5uMzJoaFE9PQogCi1jc3NuYW5vQF41LjAu MCwgY3NzbmFub0BeNS4wLjI6Ci0gIHZlcnNpb24gIjUuMC40IgotICByZXNvbHZlZCAiaHR0cHM6 Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3NuYW5vLy0vY3NzbmFuby01LjAuNC50Z3ojNWNhOTA3 MjljOTRjNzFjNGJjM2Q0NWFiYjU0M2JlMTA3NDBiZjM4MSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1J K2ZEVzc0Q0o0eWIzMTc2NW92OXhYZTcwWExadkZUWGp3aG1BLy9WZ0FBdVNBVTM0T2JsYmU5NFE5 emZmaUNYMVZoY1NmUVdBUlFud2h6K05xZ2I0UT09Citjc3NuYW5vQF41LjAuMiwgY3NzbmFub0Be NS4wLjY6CisgIHZlcnNpb24gIjUuMC45IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9jc3NuYW5vLy0vY3NzbmFuby01LjAuOS50Z3ojYmQwMzE2ODgzNWMwODgzYzE2 NzU0MDg1NzA0ZjU3ODYxYTMyZDk5YyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1ZNG9sVEtCS3NQS2w1 aXpwY1hIUkRpQi8xclZkYklETTRxVlhnRUtCdDQ2NmtZVDQyU0VFc25DWU9RRkZYekVrVVlWOHBK TkNJSTlKS3piOEtmRGsrZz09CiAgIGRlcGVuZGVuY2llczoKLSAgICBjb3NtaWNvbmZpZyAiXjcu MC4wIgotICAgIGNzc25hbm8tcHJlc2V0LWRlZmF1bHQgIl41LjEuMSIKKyAgICBjc3NuYW5vLXBy ZXNldC1kZWZhdWx0ICJeNS4xLjUiCiAgICAgaXMtcmVzb2x2YWJsZSAiXjEuMS4wIgorICAgIGxp bGNvbmZpZyAiXjIuMC4zIgorICAgIHlhbWwgIl4xLjEwLjIiCiAKIGNzc29AXjQuMC4yLCBjc3Nv QF40LjIuMDoKICAgdmVyc2lvbiAiNC4yLjAiCkBAIC00NTM2LDE0ICs0MjEyLDE0IEBAIGNzc29A XjQuMC4yLCBjc3NvQF40LjIuMDoKICAgICBjc3MtdHJlZSAiXjEuMS4yIgogCiBjc3N0eXBlQF4y LjUuMiwgY3NzdHlwZUBeMi41Ljc6Ci0gIHZlcnNpb24gIjIuNi4xNiIKLSAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY3NzdHlwZS8tL2Nzc3R5cGUtMi42LjE2LnRneiM1 NDRkNjlmNTQ3MDEzYjg1YTQwZDE1YmZmNzVkYjM4ZjM0ZmU5YzM5IgotICBpbnRlZ3JpdHkgc2hh NTEyLTYxRkJXb0RIcC9nUnRzb0RrcS9CMW5XckNVRy9vazFFM3RVcmNOYlpqc0U5Q3hkOXl6VWly alMzK25BQVRCOFU0Y1R0YVFtQUhiTm5kb0Z6NUw2QzlRPT0KKyAgdmVyc2lvbiAiMi42LjE4Igor ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jc3N0eXBlLy0vY3NzdHlw ZS0yLjYuMTgudGd6Izk4MGE4YjUzMDg1ZjM0YWYzMTM0MTBhZjA2NGYyYmQyNDE3ODQyMTgiCisg IGludGVncml0eSBzaGE1MTItUlNVNkh5ZWcxNGFtM0FoNFZaRW1lWDhIN2tMd0VFaXJYZTZhVTJJ UGZLTnZoWHdUZmxLNUhRUkROSTB5cFFYb3FtbStRUHlHMklhUHVRRTV6TXdTSVE9PQogCiBjc3N0 eXBlQF4zLjAuMjoKLSAgdmVyc2lvbiAiMy4wLjgiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL2Nzc3R5cGUvLS9jc3N0eXBlLTMuMC44LnRneiNkMjI2NmE3OTI3Mjlm YjIyN2NkMjE2ZmI1NzJmNDM3MjhlMWFkMzQwIgotICBpbnRlZ3JpdHkgc2hhNTEyLWpYS2hXcVhQ bWxVZW9RbkYvRWhUdFRsNEM5U25yeFNIL2paVWloM2ptTzZsQktyOTlyUDMvK0Ztck1qNEVGcE9Y ek10WEhBWmtkM3gwRTZoNkZnZmx3PT0KKyAgdmVyc2lvbiAiMy4wLjkiCisgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nzc3R5cGUvLS9jc3N0eXBlLTMuMC45LnRneiM2 NDEwYWYzMWIyNmJkMDUyMDkzM2QwMmNiYzY0ZmNlOWNlM2ZiZjBiIgorICBpbnRlZ3JpdHkgc2hh NTEyLXJwdzZKUHhLNlJmZzF6TE9ZQ1N3bGUyR0ZPT3Nuam1EWURhQndFY3dvT2c0cWxzSVZDTjc4 OVZrQlpESkFHaTRUMDdnSTRZU3V0UjQzdDlaejRMenV3PT0KIAogY3ViaWMycXVhZEBeMS4wLjA6 CiAgIHZlcnNpb24gIjEuMi4xIgpAQCAtNDU2OSwxNCArNDI0NSwxNCBAQCBkYXNoLWFzdEBeMS4w LjA6CiAgIGludGVncml0eSBzaGE1MTItVnk0ZHg3Z3F1VGVNY1FSL2hEa1lMR1Vud1ZpbDZ2azRG T09jdCtkalVuSE9VV3QrekpQSkFhUklYYUFGa1BYdEpqdmxZN28zcmZSdTAvM2hwbndvVUE9PQog CiBkYXRlLWZuc0BeMi4yNC4wOgotICB2ZXJzaW9uICIyLjI0LjAiCi0gIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RhdGUtZm5zLy0vZGF0ZS1mbnMtMi4yNC4wLnRneiM3 ZDg2ZGMwZDkzYzg3Yjc2YjYzZDIxM2I0NDEzMzM3Y2ZkMWMxMDVkIgotICBpbnRlZ3JpdHkgc2hh NTEyLTZ1and2d2dQSUQ2emJJMG83VWJVUmkydmxMRFI5dVAyNit0VzZMZytKaTN3N2RkMGkzRE9j amNDbExqTFByYW5UNjBTU0VGQndkU3lZd24vWmtQSXV3PT0KKyAgdmVyc2lvbiAiMi4yNS4wIgor ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kYXRlLWZucy8tL2RhdGUt Zm5zLTIuMjUuMC50Z3ojOGM1YzhmMWQ5NThiZTM4MDlhOWEwM2Y0Yjc0MmViYTg5NGZjNTY4MCIK KyAgaW50ZWdyaXR5IHNoYTUxMi1vdllSRm5UcmJHUEQ0bnFhRXFlc2NQRXYxbU53dnQrVVRxSTNB eTlTek50ZXk5TlpuWXU2RTJxQ2NCQmdKNi8yVkYxekdHeWdweVRESVRxcFFRNWUrdz09CiAKIGRh dGUtZm9ybWF0QF40LjAuMzoKICAgdmVyc2lvbiAiNC4wLjMiCiAgIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RhdGUtZm9ybWF0Ly0vZGF0ZS1mb3JtYXQtNC4wLjMudGd6 I2Y2M2RlNWRjMDhkYzAyZWZkOGVmMzJiZjJhNjkxOGU0ODZmMzU4NzMiCi0gIGludGVncml0eSAi c2hhMS05ajNsM0FqY0F1L1k3eksvS21rWTVJYnpXSE09IHNoYTUxMi03UDNGeXFEY2Zlem5MWnAy YitPTWl0VjlTejJsVW5zVDg3V2FUYXQ5blZ3cXNCa1R6UEczbFBMTndXM2VuNkY0cEhVaVd6cjZ2 YjhDTGhqZEs5YmN4UT09IgorICBpbnRlZ3JpdHkgc2hhNTEyLTdQM0Z5cURjZmV6bkxacDJiK09N aXRWOVN6MmxVbnNUODdXYVRhdDluVndxc0JrVHpQRzNsUExOd1czZW42RjRwSFVpV3pyNnZiOENM aGpkSzliY3hRPT0KIAogZGVidWdAMi42LjksIGRlYnVnQF4yLjYuODoKICAgdmVyc2lvbiAiMi42 LjkiCkBAIC00NTg2LDkgKzQyNjIsOSBAQCBkZWJ1Z0AyLjYuOSwgZGVidWdAXjIuNi44OgogICAg IG1zICIyLjAuMCIKIAogZGVidWdANCwgZGVidWdAXjQuMC4xLCBkZWJ1Z0BeNC4xLjAsIGRlYnVn QF40LjEuMSwgZGVidWdAXjQuMy4xLCBkZWJ1Z0B+NC4zLjE6Ci0gIHZlcnNpb24gIjQuMy4xIgot ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWJ1Zy8tL2RlYnVnLTQu My4xLnRneiNmMGQyMjljNTA1ZTBjNmQ4YzQ5YWM1NTNkMWIxM2RjMTgzZjZiMmVlIgotICBpbnRl Z3JpdHkgc2hhNTEyLWRvRXdkdm00UENlSzRLM1JRTjJaQzJCWVVCYXh3TEFSQ3FabU1qdEY4YTUx SjJSYjB4cFZsb0ZSbkNPRHdxanB3bkFvYW80cGVsTjhsM1JKZHYzZ1JRPT0KKyAgdmVyc2lvbiAi NC4zLjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlYnVnLy0v ZGVidWctNC4zLjIudGd6I2YwYTQ5YzE4YWM4Nzc5ZTMxZDRhMGM2MDI5ZGZiNzY4NzNjNzQyOGIi CisgIGludGVncml0eSBzaGE1MTItbU9wOHdLY3ZqN1h4Qzc4ekxndy9aQSs2VFNna29FMkMvaWVu dGhoUkQyOThUN1VOd0FnOWRpQnBMUnhDMG1PZXpMbDRCMHhWN00wY0NPNlAvTzBYaHc9PQogICBk ZXBlbmRlbmNpZXM6CiAgICAgbXMgIjIuMS4yIgogCkBAIC00Njc3LDkgKzQzNTMsOSBAQCBkZWVw LWVxdWFsLWlkZW50QF4xLjEuMToKICAgICBsb2Rhc2guaXNlcXVhbCAiXjMuMCIKIAogZGVlcC1p c0BeMC4xLjM6Ci0gIHZlcnNpb24gIjAuMS4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9kZWVwLWlzLy0vZGVlcC1pcy0wLjEuMy50Z3ojYjM2OWQ2ZmI1ZGJjMTNl ZWNmNTI0ZjkxYjA3MGZlZWRjMzU3Y2YzNCIKLSAgaW50ZWdyaXR5IHNoYTEtczJuVysxMjhFKzdQ VWsrUnNIRCs3Y05YenpRPQorICB2ZXJzaW9uICIwLjEuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vZGVlcC1pcy8tL2RlZXAtaXMtMC4xLjQudGd6I2E2ZjJkY2U2 MTJmYWRkMmVmMWY1MTliNzM1NTFmMTdlODUxOTk4MzEiCisgIGludGVncml0eSBzaGE1MTItb0lQ emtzbVRnNC9NcmlpYVlHTytva1hEVDd6dG4vdzNFcHR2LytnU0lkTWRLc0pvMHU0Q2ZZTkZKUHkr NFNLTXVDcUd3Mnd4bkErVVJNZzN0OGEvYlE9PQogCiBkZWVwbWVyZ2VAXjQuMi4yOgogICB2ZXJz aW9uICI0LjIuMiIKQEAgLTQ3NDgsMTIgKzQ0MjQsMTIgQEAgZGlAXjAuMC4xOgogICBpbnRlZ3Jp dHkgc2hhMS1nR1pKTW16cXA4cWpNRzExMllYcUowaTZrVHc9CiAKIGRpZmYtYXJyYXlzLW9mLW9i amVjdHNAXjEuMS44OgotICB2ZXJzaW9uICIxLjEuOCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vZGlmZi1hcnJheXMtb2Ytb2JqZWN0cy8tL2RpZmYtYXJyYXlzLW9m LW9iamVjdHMtMS4xLjgudGd6I2E1YjAwOGJiNDA5YWY3YzdmOTk3ZjAwNjRlMzEyZGYwZDVhMWJi MjQiCi0gIGludGVncml0eSBzaGE1MTItT0FhaURsUVJpdjUrRUFTVXB3TlNEYS9zV3lLSEt2T0RR ZmFoMUNBeDBkb3NSOE9XWGVkRlhneEFRSElkZVdEb2JaODZENmc5M0JmSzJYOUVDSVJ1cXc9PQor ICB2ZXJzaW9uICIxLjEuOSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vZGlmZi1hcnJheXMtb2Ytb2JqZWN0cy8tL2RpZmYtYXJyYXlzLW9mLW9iamVjdHMtMS4xLjku dGd6I2IxZjAwNDg1Njg0YzFiYjJhYzY2MTBkMmY2MDRiNTFmOTY3OTA2NGQiCisgIGludGVncml0 eSBzaGE1MTItVjNVazBzbTcxUmpMc0V2SDlOWmNnejYrQzhGdTJlQlJMd2xyRmx3WERFajZkZkhY NUVsNm1sUlVTMWhUU0VtNmVOdkxtRTRld0oraVFiWENxR3ZWZ1E9PQogICBkZXBlbmRlbmNpZXM6 CiAgICAgZGVlcC1kaWZmICJeMS4wLjIiCi0gICAgbG9kYXNoICJeNC4xNy4xOSIKKyAgICBsb2Rh c2ggIjQiCiAKIGRpZmZpZS1oZWxsbWFuQF41LjAuMDoKICAgdmVyc2lvbiAiNS4wLjMiCkBAIC00 Nzk2LDkgKzQ0NzIsOSBAQCBkb20tYWxpZ25AXjEuNy4wOgogICBpbnRlZ3JpdHkgc2hhNTEyLXBI dWF6Z3Fyc1RGckdVMldMRGRYeENGYWJrZFFEeDcyZGRrcmFaTmloMUtzTWNONXFzUlNUUjlPNFZK Umx3VFBDUGI1Q09ZZzNMT2ZpTUhIY1BJbkhnPT0KIAogZG9tLWhlbHBlcnNAXjUuMC4xOgotICB2 ZXJzaW9uICI1LjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v ZG9tLWhlbHBlcnMvLS9kb20taGVscGVycy01LjIuMC50Z3ojNTdmZDA1NGM1ZjhmMzRjNTJhM2Vl ZmZkYjdlN2U5M2NkMzU3ZDk1YiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1SdTVvOStWOENwdW5Lbno1 TEdnV1hrbXJILzIwY0dLd2NId1M0bTczekl2czU0Q045ZXBFbVQvSExxRkpXM2tYcGFrQUZrRWR6 Z3kxaHpsSmUzRTRPUT09CisgIHZlcnNpb24gIjUuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9kb20taGVscGVycy8tL2RvbS1oZWxwZXJzLTUuMi4xLnRneiNk OTQwMDUzNmIyYmY4MjI1YWQ5OGZlMDUyZTAyOTQ1MWFjNDBlOTAyIgorICBpbnRlZ3JpdHkgc2hh NTEyLW5SQ2E3Q0szVlRyTTJObUdrSXk0Y2JLN0labGdCRS9QWU1uNTVyclhlZnI1eFhEUDBMZHRm UG5ibEZEb1ZkY0Fmc2xKN29yNmlxQVVueDBDQ0dJV1FBPT0KICAgZGVwZW5kZW5jaWVzOgogICAg ICJAYmFiZWwvcnVudGltZSIgIl43LjguNyIKICAgICBjc3N0eXBlICJeMy4wLjIiCkBAIC00ODIx LDcgKzQ0OTcsNyBAQCBkb20tc2VyaWFsaXplckAwOgogICAgIGRvbWVsZW1lbnR0eXBlICJeMi4w LjEiCiAgICAgZW50aXRpZXMgIl4yLjAuMCIKIAotZG9tLXNlcmlhbGl6ZXJAXjEuMC4xLCBkb20t c2VyaWFsaXplckBeMS4zLjE6Citkb20tc2VyaWFsaXplckBeMS4wLjEsIGRvbS1zZXJpYWxpemVy QF4xLjMuMjoKICAgdmVyc2lvbiAiMS4zLjIiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL2RvbS1zZXJpYWxpemVyLy0vZG9tLXNlcmlhbGl6ZXItMS4zLjIudGd6IzYy MDY0MzdkMzJjZWVmYWVjNzE2MTgwMzIzMGM3YTIwYmMxYjRkOTEiCiAgIGludGVncml0eSBzaGE1 MTItNWM1NEJrNUR3NHFBeE5PSTFwRkVpelBTalZzeDUrYnBKS21MMmtQbjhKaEJVcTJxMDl0VENh M21qaWp1bjJOZks3OE5Nb3VEWU5NQmtPclBaaVMraWc9PQpAQCAtNDg0NSwxMCArNDUyMSwxMCBA QCBkb21lbGVtZW50dHlwZUBeMi4wLjEsIGRvbWVsZW1lbnR0eXBlQF4yLjIuMDoKICAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZG9tZWxlbWVudHR5cGUvLS9kb21lbGVt ZW50dHlwZS0yLjIuMC50Z3ojOWEwYjZjMjc4MmVkNmExYzczMjNkNDIyNjcxODNkZjliZDhiMWQ1 NyIKICAgaW50ZWdyaXR5IHNoYTUxMi1EdEJNbzgycHYxZEZ0VW1IeXI0OGJlaXVxNzkyU3hvaHIr OEhtOXpveGtsWVBmYTZuMFozQnlqajJJVjdibXIySXlxQ2xucUVRaGZnSEpKNVFGMFI1QT09CiAK LWRvbWhhbmRsZXJANC4yLjAsIGRvbWhhbmRsZXJAXjQuMC4wLCBkb21oYW5kbGVyQF40LjIuMDoK LSAgdmVyc2lvbiAiNC4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL2RvbWhhbmRsZXIvLS9kb21oYW5kbGVyLTQuMi4wLnRneiNmOTc2OGE1ZjAzNGJlNjBhODlh MjdjMmU0ZDBmNzRlYmEwZDhiMDU5IgotICBpbnRlZ3JpdHkgc2hhNTEyLXprN3NndDk3MGt6UGtz MkJmK2R3VC9QTHpnaExuc2l2YjlDY3hrdlI4TXpyNjZPbHIwT2ZkOG5lU2JnbEhKSGFIYTJNYWRm b1NkTmxLWUFhYWZtV2ZBPT0KK2RvbWhhbmRsZXJANC4yLjIsIGRvbWhhbmRsZXJAXjQuMC4wLCBk b21oYW5kbGVyQF40LjIuMDoKKyAgdmVyc2lvbiAiNC4yLjIiCisgIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbWhhbmRsZXIvLS9kb21oYW5kbGVyLTQuMi4yLnRneiNl ODI1ZDcyMWQxOWE4NmI4YzIwMWEzNTI2NGUyMjZjNjc4ZWU3NTVmIgorICBpbnRlZ3JpdHkgc2hh NTEyLVB6RTlhQk1zZFpPOFRLNEJudUp3SDBRVDQxd2dNYlJ6dVpySFVjcFluY0VqbVFhenE4UUVh QldnTEc3WnlDL0RBWktFZ2dscElBNmo0UW4vSG14UzN3PT0KICAgZGVwZW5kZW5jaWVzOgogICAg IGRvbWVsZW1lbnR0eXBlICJeMi4yLjAiCiAKQEAgLTQ4NjAsMTAgKzQ1MzYsMTAgQEAgZG9tdXRp bHNAXjEuNy4wOgogICAgIGRvbS1zZXJpYWxpemVyICIwIgogICAgIGRvbWVsZW1lbnR0eXBlICIx IgogCi1kb211dGlsc0BeMi41LjIsIGRvbXV0aWxzQF4yLjYuMDoKLSAgdmVyc2lvbiAiMi42LjAi Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbXV0aWxzLy0vZG9t dXRpbHMtMi42LjAudGd6IzJlMTVjMDQxODVkNDNmYjE2YWU3MDU3Y2I3NjQzM2M2ZWRiOTM4Yjci Ci0gIGludGVncml0eSBzaGE1MTIteTBCZXpIdXk0TURZeGg2T3ZvbFhZc0grMUVNR21GYnd2NUZL VzdvdndNRzZ6VFBXcU5QcTNXRjlheVpzc0ZxK1VsS2RmZkdMYk9FYWdoTmRhT20xV0E9PQorZG9t dXRpbHNAXjIuNS4yLCBkb211dGlsc0BeMi42LjAsIGRvbXV0aWxzQF4yLjcuMDoKKyAgdmVyc2lv biAiMi44LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RvbXV0 aWxzLy0vZG9tdXRpbHMtMi44LjAudGd6IzQ0MzdkZWY1ZGI2ZTJkMWY1ZDZlZTg1OWJkOTVjYTdk MDIwNDgxMzUiCisgIGludGVncml0eSBzaGE1MTItdzk2Q2pvZnA3Mk01SUlocGpnb2JCaW1ZRWZv UGp4MVZ4MEJTWDlQMzBXQmRaVzJXSUtVMFQxQmQwa3oyZU5aOWlraktnSGJFeUt4OEJCNkgxTDNo M0E9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgZG9tLXNlcmlhbGl6ZXIgIl4xLjAuMSIKICAgICBk b21lbGVtZW50dHlwZSAiXjIuMi4wIgpAQCAtNDkzOCwxMCArNDYxNCwxMCBAQCBlanNAfjMuMS42 OgogICBkZXBlbmRlbmNpZXM6CiAgICAgamFrZSAiXjEwLjYuMSIKIAotZWxlY3Ryb24tdG8tY2hy b21pdW1AXjEuMy43MjM6Ci0gIHZlcnNpb24gIjEuMy43NDAiCi0gIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VsZWN0cm9uLXRvLWNocm9taXVtLy0vZWxlY3Ryb24tdG8t Y2hyb21pdW0tMS4zLjc0MC50Z3ojZTM4YjdkMmI4NDhmNjMyMTkxYjY0M2U2ZGFiY2E1MWJlMjE2 MjkyMiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1NaTJtNTVKclgyQkZiTlpHS1lSKzJJdGNHblI0TzVI aHJ2Z29SUnlaUWxhTUdRVUxxRGhvR2tMV0h6Sm9zaFN6aTdrMVBVb2Z4Y0RiTmhsRnJEWk5oZz09 CitlbGVjdHJvbi10by1jaHJvbWl1bUBeMS4zLjg4NjoKKyAgdmVyc2lvbiAiMS4zLjg4OSIKKyAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZWxlY3Ryb24tdG8tY2hyb21p dW0vLS9lbGVjdHJvbi10by1jaHJvbWl1bS0xLjMuODg5LnRneiMwYjdjNmY3NjI4NTU5NTkyZDU0 MDZkZWRhMjgxNzg4ZjM3MTA3NzkwIgorICBpbnRlZ3JpdHkgc2hhNTEyLXN1RVVvUFREMW1FeGpM OVRkbUg3Y3ZFaVdKVk0yb0VpQWkrWTFwMFFLeEkySGNSbFQ0NHFEVFAyYzFhWm1Wd1JlbUlQWU9w eG1WN0N4UUNPV2NtNFhRPT0KIAogZWxlY3Ryb24tdG8tY2hyb21pdW1AXjEuNC4xNzoKICAgdmVy c2lvbiAiMS40LjYzIgpAQCAtNDk5MCwyOCArNDY2NiwyMSBAQCBlbmQtb2Ytc3RyZWFtQF4xLjAu MCwgZW5kLW9mLXN0cmVhbUBeMS4xLjA6CiAgIGRlcGVuZGVuY2llczoKICAgICBvbmNlICJeMS40 LjAiCiAKLWVuZ2luZS5pby1jbGllbnRAfjUuMS4xOgotICB2ZXJzaW9uICI1LjEuMSIKLSAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZW5naW5lLmlvLWNsaWVudC8tL2Vu Z2luZS5pby1jbGllbnQtNS4xLjEudGd6I2Y1YzNhYWFlZjFiZGM5NDQzYWFjNmZmZGU0OGIzYjJm YjJkYzU2ZmMiCi0gIGludGVncml0eSBzaGE1MTItalBGcHcySExMMGxoWjJLWTBCcFpoSUpkbGVR Y1VPOVcxeGtJcG8waDNkNnMrNUQ2K0VWL3hnUXc5cVdPbXltc3p2MldYZWYvNktVVWVoeXhFS29t bFE9PQorZW5naW5lLmlvLWNsaWVudEB+Ni4wLjE6CisgIHZlcnNpb24gIjYuMC4yIgorICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lbmdpbmUuaW8tY2xpZW50Ly0vZW5n aW5lLmlvLWNsaWVudC02LjAuMi50Z3ojY2NmYzA1OTA1MWU2NWNhNjM4NDVlNjU5MjkxODQ3NTc3 NTRjYzM0ZSIKKyAgaW50ZWdyaXR5IHNoYTUxMi1jQWVwOWxoWlY2UThqTVh4M1ROU1U1Y3lkTXpN ZWQ4L083VHo1dXp5cVp2cE5QdFEzV1FYckxZR0FEeGxzdWFGbU9MTjd3WkxtVDdJbWlGaFVPa3U4 Zz09CiAgIGRlcGVuZGVuY2llczoKLSAgICBiYXNlNjQtYXJyYXlidWZmZXIgIjAuMS40IgotICAg IGNvbXBvbmVudC1lbWl0dGVyICJ+MS4zLjAiCisgICAgIkBzb2NrZXQuaW8vY29tcG9uZW50LWVt aXR0ZXIiICJ+My4wLjAiCiAgICAgZGVidWcgIn40LjMuMSIKLSAgICBlbmdpbmUuaW8tcGFyc2Vy ICJ+NC4wLjEiCisgICAgZW5naW5lLmlvLXBhcnNlciAifjUuMC4wIgogICAgIGhhcy1jb3JzICIx LjEuMCIKICAgICBwYXJzZXFzICIwLjAuNiIKICAgICBwYXJzZXVyaSAiMC4wLjYiCi0gICAgd3Mg In43LjQuMiIKKyAgICB3cyAifjguMi4zIgorICAgIHhtbGh0dHByZXF1ZXN0LXNzbCAifjIuMC4w IgogICAgIHllYXN0ICIwLjEuMiIKIAotZW5naW5lLmlvLXBhcnNlckB+NC4wLjE6Ci0gIHZlcnNp b24gIjQuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lbmdp bmUuaW8tcGFyc2VyLy0vZW5naW5lLmlvLXBhcnNlci00LjAuMi50Z3ojZTQxZDBiM2ZiNjZmN2Jm NGEzNjcxZDIwMzhhMTU0MDI0ZWRiNTAxZSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1zSGZFUXY2bm10 SnJxNlRLdUl6NWt5RUtIL3FTZEs1NkgvQSs3RG5BdVVQV29zbklaQVMyTkhOY1BMbXlqdFkzY0dT L01xSmRaYlVqVzk3SlU3MmlZZz09Ci0gIGRlcGVuZGVuY2llczoKLSAgICBiYXNlNjQtYXJyYXli dWZmZXIgIjAuMS40IgotCiBlbmdpbmUuaW8tcGFyc2VyQH41LjAuMDoKICAgdmVyc2lvbiAiNS4w LjMiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VuZ2luZS5pby1w YXJzZXIvLS9lbmdpbmUuaW8tcGFyc2VyLTUuMC4zLnRneiNjYTFmMGQ3YjExZTI5MGI0YmZkYTI1 MTgwM2JhZWE3NjVlZDg5YzA5IgpAQCAtNTAzNSwxMCArNDcwNCwxMCBAQCBlbmdpbmUuaW9AfjYu MS4wOgogICAgIGVuZ2luZS5pby1wYXJzZXIgIn41LjAuMCIKICAgICB3cyAifjguMi4zIgogCi1l bmhhbmNlZC1yZXNvbHZlQF41LjcuMDoKLSAgdmVyc2lvbiAiNS44LjIiCi0gIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VuaGFuY2VkLXJlc29sdmUvLS9lbmhhbmNlZC1y ZXNvbHZlLTUuOC4yLnRneiMxNWRkYzc3OTM0NWNiYjczZTk3YzYxMWNkMDBjMDFjMWU3YmY0ZDhi IgotICBpbnRlZ3JpdHkgc2hhNTEyLUYyN29CM1d1SER6dlIyRE9HTlRhWXkwRDVvMGNucnY4VGVJ NDgyVk00a1lnUWQvRlQ5bFVRd3VOc0owb09IdEJVcTdlaVc1eXRxenA3bkJGa25MK0dBPT0KK2Vu aGFuY2VkLXJlc29sdmVAXjUuOC4zOgorICB2ZXJzaW9uICI1LjguMyIKKyAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZW5oYW5jZWQtcmVzb2x2ZS8tL2VuaGFuY2VkLXJl c29sdmUtNS44LjMudGd6IzZkNTUyZDQ2NWNjZTA0MjNmNWIzZDcxODUxMWVhNTM4MjZhN2IyZjAi CisgIGludGVncml0eSBzaGE1MTItRUdBYkd2SDdqN1h0Mm5jMEU3RDk5TGExT2lFczhMbnlpbWtS Z3dFeHBVTVNjTjZPKzN4OXRJV3M3UExRWlZOeDRZRCswMHNrSFhQWGkxeVFIcEFtWkE9PQogICBk ZXBlbmRlbmNpZXM6CiAgICAgZ3JhY2VmdWwtZnMgIl40LjIuNCIKICAgICB0YXBhYmxlICJeMi4y LjAiCkBAIC01MTM5LDIyICs0ODA4LDI2IEBAIGVycm9yLWV4QF4xLjMuMToKICAgZGVwZW5kZW5j aWVzOgogICAgIGlzLWFycmF5aXNoICJeMC4yLjEiCiAKLWVzLWFic3RyYWN0QF4xLjE3LjIsIGVz LWFic3RyYWN0QF4xLjE3LjQsIGVzLWFic3RyYWN0QF4xLjE4LjAsIGVzLWFic3RyYWN0QF4xLjE4 LjAtbmV4dC4xLCBlcy1hYnN0cmFjdEBeMS4xOC4wLW5leHQuMiwgZXMtYWJzdHJhY3RAXjEuMTgu MjoKLSAgdmVyc2lvbiAiMS4xOC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9lcy1hYnN0cmFjdC8tL2VzLWFic3RyYWN0LTEuMTguMi50Z3ojNmViNTE4YjY0MDI2 MmU4ZGRjYmQ0OGUwYmM4NTQ5ZjgyZWZkNDhhNyIKLSAgaW50ZWdyaXR5IHNoYTUxMi1ieVJpTklR WEU2SFdOeVNhVTZKb2hvTlh6WWdiQmp6dHdGbkJMVVRpSm1XWGphVTliU3EzdXJRTFVsTkxRMjky dGMrZ2MwN3pZWlhOWmphT29BWDNzdz09Citlcy1hYnN0cmFjdEBeMS4xNy4yLCBlcy1hYnN0cmFj dEBeMS4xOC4wLW5leHQuMSwgZXMtYWJzdHJhY3RAXjEuMTguNSwgZXMtYWJzdHJhY3RAXjEuMTku MCwgZXMtYWJzdHJhY3RAXjEuMTkuMToKKyAgdmVyc2lvbiAiMS4xOS4xIgorICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lcy1hYnN0cmFjdC8tL2VzLWFic3RyYWN0LTEu MTkuMS50Z3ojZDQ4ODU3OTY4NzY5MTY5NTlkZTc4ZWRhYTBkZjQ1NjYyNzExNWVjMyIKKyAgaW50 ZWdyaXR5IHNoYTUxMi0ydko2dGpBL1VmcUxtMk1QczdqeFZ5YkxvQjhpMXQxSmQ5UjNrSVNsZDIw c0l4UGNUYkx1Z2dRT1V4ZVdlQXZJVWtkdXYvQ2ZNanVoNFdtaVhyMnY5dz09CiAgIGRlcGVuZGVu Y2llczoKICAgICBjYWxsLWJpbmQgIl4xLjAuMiIKICAgICBlcy10by1wcmltaXRpdmUgIl4xLjIu MSIKICAgICBmdW5jdGlvbi1iaW5kICJeMS4xLjEiCiAgICAgZ2V0LWludHJpbnNpYyAiXjEuMS4x IgorICAgIGdldC1zeW1ib2wtZGVzY3JpcHRpb24gIl4xLjAuMCIKICAgICBoYXMgIl4xLjAuMyIK ICAgICBoYXMtc3ltYm9scyAiXjEuMC4yIgotICAgIGlzLWNhbGxhYmxlICJeMS4yLjMiCisgICAg aW50ZXJuYWwtc2xvdCAiXjEuMC4zIgorICAgIGlzLWNhbGxhYmxlICJeMS4yLjQiCiAgICAgaXMt bmVnYXRpdmUtemVybyAiXjIuMC4xIgotICAgIGlzLXJlZ2V4ICJeMS4xLjMiCi0gICAgaXMtc3Ry aW5nICJeMS4wLjYiCi0gICAgb2JqZWN0LWluc3BlY3QgIl4xLjEwLjMiCisgICAgaXMtcmVnZXgg Il4xLjEuNCIKKyAgICBpcy1zaGFyZWQtYXJyYXktYnVmZmVyICJeMS4wLjEiCisgICAgaXMtc3Ry aW5nICJeMS4wLjciCisgICAgaXMtd2Vha3JlZiAiXjEuMC4xIgorICAgIG9iamVjdC1pbnNwZWN0 ICJeMS4xMS4wIgogICAgIG9iamVjdC1rZXlzICJeMS4xLjEiCiAgICAgb2JqZWN0LmFzc2lnbiAi XjQuMS4yIgogICAgIHN0cmluZy5wcm90b3R5cGUudHJpbWVuZCAiXjEuMC40IgpAQCAtNTE2Niwx MCArNDgzOSwxMCBAQCBlcy1hcnJheS1tZXRob2QtYm94ZXMtcHJvcGVybHlAXjEuMC4wOgogICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lcy1hcnJheS1tZXRob2QtYm94 ZXMtcHJvcGVybHkvLS9lcy1hcnJheS1tZXRob2QtYm94ZXMtcHJvcGVybHktMS4wLjAudGd6Izg3 M2YzZTg0NDE4ZGU0ZWUxOWM1YmU3NTI5OTBiMmU0NDcxOGQwOWUiCiAgIGludGVncml0eSBzaGE1 MTItd2Q2SlhVbXlIbXQ4VDVhMnhyZVV3S2NHUHE2ZjFmK1d3SUpraWpVcWlHY0p6MXFxblpnUDZY SUsrUXlJV1U1bFQ3aW1lTnhVbGw0OGJ6aUcrVFNZY0E9PQogCi1lcy1tb2R1bGUtbGV4ZXJAXjAu NC4wOgotICB2ZXJzaW9uICIwLjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vZXMtbW9kdWxlLWxleGVyLy0vZXMtbW9kdWxlLWxleGVyLTAuNC4xLnRneiNkZGE4 YzZhMTRkOGYzNDBhMjRlMzQzMzFlMGZhYjBjYjUwNDM4ZTBlIgotICBpbnRlZ3JpdHkgc2hhNTEy LW9vWWNpQ1V0Znc2L2QydzU2VVZlcUhQY29DRkFpSmR6NVhPa1lwdi9UeGwxSE1Vb3pwWGp6LzJS SVFncXdLZFhORFBTRjFXN21KQ0ZzZTNHK0hEeUFBPT0KK2VzLW1vZHVsZS1sZXhlckBeMC45LjA6 CisgIHZlcnNpb24gIjAuOS4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn LmNvbS9lcy1tb2R1bGUtbGV4ZXIvLS9lcy1tb2R1bGUtbGV4ZXItMC45LjMudGd6IzZmMTNkYjAw Y2MzODQxNzEzN2RhZjc0MzY2ZjUzNWM4ZWI0MzhmMTkiCisgIGludGVncml0eSBzaGE1MTItMUhR Mk0yc1B0eHdudk92VDFaQ2xIeVFEaWdnZE5qVVJXcFkyd2U2YU1LQ1FpVVZ4VG1WczJVWVBMSXJE ODRzUytrTWRVd2ZCU3lsYkpQd05uQnJuSFE9PQogCiBlcy10by1wcmltaXRpdmVAXjEuMi4xOgog ICB2ZXJzaW9uICIxLjIuMSIKQEAgLTUxOTUsNDMgKzQ4NjgsNDIgQEAgZXNjYXBlLXN0cmluZy1y ZWdleHBAXjEuMC4yLCBlc2NhcGUtc3RyaW5nLXJlZ2V4cEBeMS4wLjU6CiAgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzY2FwZS1zdHJpbmctcmVnZXhwLy0vZXNjYXBl LXN0cmluZy1yZWdleHAtMS4wLjUudGd6IzFiNjFjMDU2MjE5MGE4ZGZmNmFlM2JiMmNmMDIwMGNh MTMwYjg2ZDQiCiAgIGludGVncml0eSBzaGExLUcySEFWaUdRcU4vMnJqdXl6d0lBeWhNTGh0UT0K IAorZXNjYXBlLXN0cmluZy1yZWdleHBAXjQuMC4wOgorICB2ZXJzaW9uICI0LjAuMCIKKyAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNjYXBlLXN0cmluZy1yZWdleHAv LS9lc2NhcGUtc3RyaW5nLXJlZ2V4cC00LjAuMC50Z3ojMTRiYTgzYTVkMzczZTNkMzExZTVhZmNh MjljZjViZmFkOTY1YmYzNCIKKyAgaW50ZWdyaXR5IHNoYTUxMi1UdHBjTkozWEF6eDNHcThzV1J6 SmFWYWpSczB1VnhBMllBa2RiMWptMllrUHo0RzZlZ1VGQXlBM241dnRFSVplZlBrNVdhNFVYYkt1 UzVmS2tKV2RnQT09CisKIGVzbGludC1wbHVnaW4tcmVhY3QtaG9va3NAXjQuMy4wOgogICB2ZXJz aW9uICI0LjMuMCIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNs aW50LXBsdWdpbi1yZWFjdC1ob29rcy8tL2VzbGludC1wbHVnaW4tcmVhY3QtaG9va3MtNC4zLjAu dGd6IzMxOGRiZjMxMmUwNmZhYjFjODM1YTRhYmVmMDAxMjE3NTFhYzExNzIiCiAgIGludGVncml0 eSBzaGE1MTItWHNsWnkwTG5Nbis4NE5FRzlqU0dSNmVHcWFaQjMxMzNMOHhld1FvM2ZRYWdiUXVH dDdhNjNnZitQMU5HS1phdkVZRUMzVVhhV0VBQS9BcURrdU42eEE9PQogCiBlc2xpbnQtcGx1Z2lu LXJlYWN0QF43LjIwLjU6Ci0gIHZlcnNpb24gIjcuMjMuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vZXNsaW50LXBsdWdpbi1yZWFjdC8tL2VzbGludC1wbHVnaW4t cmVhY3QtNy4yMy4yLnRneiMyZDIyOTFiMGY5NWMwMzcyOGI1NTg2OWYwMTEwMjI5MGU3OTJkNDk0 IgotICBpbnRlZ3JpdHkgc2hhNTEyLUFmamdGUUIrbllzenVka3hSa1RGdTBVUjF6RVFpZzBBclZN UGxvS2h4d2x3a3phdy9mQmlIMFFXY0JCaFpPTmxYcVFDNTErbmZxRnJrbjRFekhjR0J3PT0KKyAg dmVyc2lvbiAiNy4yNi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9lc2xpbnQtcGx1Z2luLXJlYWN0Ly0vZXNsaW50LXBsdWdpbi1yZWFjdC03LjI2LjEudGd6IzQx YmNmZTNlMzllNmE1YWMwNDA5NzFjMWFmOTQ0MzdjODBkYWE0MGUiCisgIGludGVncml0eSBzaGE1 MTItTHVnMCtOT0ZYZU9FK09SWjVwYnNoNm1TS2pCS1hEWEl0VUQyc1FvVCs1WWwwZW9UODJEcW5Y ZVRNZlVhcmU0UVZDbjlRd1hiZnpPL2RCTGpMWHdWalE9PQogICBkZXBlbmRlbmNpZXM6CiAgICAg YXJyYXktaW5jbHVkZXMgIl4zLjEuMyIKICAgICBhcnJheS5wcm90b3R5cGUuZmxhdG1hcCAiXjEu Mi40IgogICAgIGRvY3RyaW5lICJeMi4xLjAiCi0gICAgaGFzICJeMS4wLjMiCisgICAgZXN0cmF2 ZXJzZSAiXjUuMi4wIgogICAgIGpzeC1hc3QtdXRpbHMgIl4yLjQuMSB8fCBeMy4wLjAiCiAgICAg bWluaW1hdGNoICJeMy4wLjQiCi0gICAgb2JqZWN0LmVudHJpZXMgIl4xLjEuMyIKKyAgICBvYmpl Y3QuZW50cmllcyAiXjEuMS40IgogICAgIG9iamVjdC5mcm9tZW50cmllcyAiXjIuMC40IgotICAg IG9iamVjdC52YWx1ZXMgIl4xLjEuMyIKKyAgICBvYmplY3QuaGFzb3duICJeMS4wLjAiCisgICAg b2JqZWN0LnZhbHVlcyAiXjEuMS40IgogICAgIHByb3AtdHlwZXMgIl4xNS43LjIiCiAgICAgcmVz b2x2ZSAiXjIuMC4wLW5leHQuMyIKLSAgICBzdHJpbmcucHJvdG90eXBlLm1hdGNoYWxsICJeNC4w LjQiCisgICAgc2VtdmVyICJeNi4zLjAiCisgICAgc3RyaW5nLnByb3RvdHlwZS5tYXRjaGFsbCAi XjQuMC41IgogCiBlc2xpbnQtcnVsZS1jb21wb3NlckBeMC4zLjA6CiAgIHZlcnNpb24gIjAuMy4w IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lc2xpbnQtcnVsZS1j b21wb3Nlci8tL2VzbGludC1ydWxlLWNvbXBvc2VyLTAuMy4wLnRneiM3OTMyMGM5MjdiMGM1YzBk M2QzZDJiNzZjOGI0YTQ4OGYyNWJiYWY5IgogICBpbnRlZ3JpdHkgc2hhNTEyLWJ0K1NoOEN0RG1u Mk9hanh2Tk8rQlg3V240Q0lXTXBUUm0zTWFpS1BDUWNubmxtMENTMm1odWk2UWFvZVF1Z3MrM0tq MkVTS0VFR0pVZFZhZndoaUNnPT0KIAotZXNsaW50LXNjb3BlQDUuMS4wOgotICB2ZXJzaW9uICI1 LjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNsaW50LXNj b3BlLy0vZXNsaW50LXNjb3BlLTUuMS4wLnRneiNkMGY5NzFkZmU1OWM2OWUwY2FkYTY4NGIyM2Q0 OWRiZjgyNjAwY2U1IgotICBpbnRlZ3JpdHkgc2hhNTEyLWlpR1J2dHhXcWd0eDVtOEV5UVVKaWhC bG9FNEVuWWVHRS9iejF3U1B3SkU2dFp1SlV0SGxocURNNFhqMnVrRThEeXkxK0hDWjRoRTBmeklW TXpiNTh3PT0KLSAgZGVwZW5kZW5jaWVzOgotICAgIGVzcmVjdXJzZSAiXjQuMS4wIgotICAgIGVz dHJhdmVyc2UgIl40LjEuMSIKLQotZXNsaW50LXNjb3BlQF41LjEuMToKK2VzbGludC1zY29wZUA1 LjEuMSwgZXNsaW50LXNjb3BlQF41LjEuMToKICAgdmVyc2lvbiAiNS4xLjEiCiAgIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VzbGludC1zY29wZS8tL2VzbGludC1zY29w ZS01LjEuMS50Z3ojZTc4NmU1OWE2NmNiOTJiM2Y2YzFmYjBkNTA4YWFiMTc0ODQ4ZjQ4YyIKICAg aW50ZWdyaXR5IHNoYTUxMi0yTnh3YkYvaFowS3BlcFlOMGNOYm8rRk42WG9LN0dhSGxRaGd4L2hJ Wmw2VmEwYkY0NVJRT093aExJeThsUURidUNpYWRTTENCbkgyQ0ZZcXVpdDVidz09CkBAIC01MjUx LDM0ICs0OTIzLDM3IEBAIGVzbGludC12aXNpdG9yLWtleXNAXjEuMS4wLCBlc2xpbnQtdmlzaXRv ci1rZXlzQF4xLjMuMDoKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v ZXNsaW50LXZpc2l0b3Ita2V5cy8tL2VzbGludC12aXNpdG9yLWtleXMtMS4zLjAudGd6IzMwZWJk MWVmN2MyZmRmZjAxYzNhNGYxNTEwNDRhZjI1ZmFiMDUyM2UiCiAgIGludGVncml0eSBzaGE1MTIt Nko3Mk44VU5hNDYyd2EvS0ZPRHQvUEozSVU2MFNEcEMzUVhDMUhqYzFCWFhwZkwyQzlSNStBVTdq aGUwRjZHUkVxVk1oNEp1dStOWTd4bis2ZGlwVVE9PQogCi1lc2xpbnQtdmlzaXRvci1rZXlzQF4y LjAuMDoKK2VzbGludC12aXNpdG9yLWtleXNAXjIuMC4wLCBlc2xpbnQtdmlzaXRvci1rZXlzQF4y LjEuMDoKICAgdmVyc2lvbiAiMi4xLjAiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL2VzbGludC12aXNpdG9yLWtleXMvLS9lc2xpbnQtdmlzaXRvci1rZXlzLTIuMS4w LnRneiNmNjUzMjgyNTkzMDU5MjczOTJjOTM4ZWQ0NGViMGE1YzliMmJkMzAzIgogICBpbnRlZ3Jp dHkgc2hhNTEyLTByU21SQnpYZ0R6SXNENm1HZEpnZXZ6Z2V6STUzNENlcjVML3Z5TVgwa0h6VC9q aUI0M2pSaGQ5WVVsTUdZTFF5Mnpwck5tb1Q4cWFzQ0d0WStRYUt3PT0KIAogZXNsaW50QF43LjE5 LjA6Ci0gIHZlcnNpb24gIjcuMjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vZXNsaW50Ly0vZXNsaW50LTcuMjEuMC50Z3ojNGVjZDViOGM1YjQ0ZjVkZWRjOWI4 YTExMGIwMWJiZmViMTVkMWM4MyIKLSAgaW50ZWdyaXR5IHNoYTUxMi1XMmFKYlhwTU5vZlVwMHp0 UWFGNDBmdmVTc0pCamxTQ1NXcHkvL2d6ZlR2d0MrVVNzL25jZUJyS21sSk9pTThyMWJMd1AyRXVZ a0NxQXJuLzZRVElnZz09CisgIHZlcnNpb24gIjcuMzIuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vZXNsaW50Ly0vZXNsaW50LTcuMzIuMC50Z3ojYzZkMzI4YTE0 YmUzZmIwOGM4ZDFkMjFlMTJjMDJmZGI3YTJhODEyZCIKKyAgaW50ZWdyaXR5IHNoYTUxMi1WSFo4 Z1grRURmeis5N2pHY2d5R0N5UmlhL2RQT2Q2WGg5eVB2OEJsMStTb2FJd0QrYS92bHJPbUdSVXlP WXU3TXdVaGM3Q3hxZWFEWlUxM1M0K0VwQT09CiAgIGRlcGVuZGVuY2llczoKICAgICAiQGJhYmVs L2NvZGUtZnJhbWUiICI3LjEyLjExIgotICAgICJAZXNsaW50L2VzbGludHJjIiAiXjAuNC4wIgor ICAgICJAZXNsaW50L2VzbGludHJjIiAiXjAuNC4zIgorICAgICJAaHVtYW53aG9jb2Rlcy9jb25m aWctYXJyYXkiICJeMC41LjAiCiAgICAgYWp2ICJeNi4xMC4wIgogICAgIGNoYWxrICJeNC4wLjAi CiAgICAgY3Jvc3Mtc3Bhd24gIl43LjAuMiIKICAgICBkZWJ1ZyAiXjQuMC4xIgogICAgIGRvY3Ry aW5lICJeMy4wLjAiCiAgICAgZW5xdWlyZXIgIl4yLjMuNSIKKyAgICBlc2NhcGUtc3RyaW5nLXJl Z2V4cCAiXjQuMC4wIgogICAgIGVzbGludC1zY29wZSAiXjUuMS4xIgogICAgIGVzbGludC11dGls cyAiXjIuMS4wIgogICAgIGVzbGludC12aXNpdG9yLWtleXMgIl4yLjAuMCIKICAgICBlc3ByZWUg Il43LjMuMSIKICAgICBlc3F1ZXJ5ICJeMS40LjAiCiAgICAgZXN1dGlscyAiXjIuMC4yIgorICAg IGZhc3QtZGVlcC1lcXVhbCAiXjMuMS4zIgogICAgIGZpbGUtZW50cnktY2FjaGUgIl42LjAuMSIK ICAgICBmdW5jdGlvbmFsLXJlZC1ibGFjay10cmVlICJeMS4wLjEiCi0gICAgZ2xvYi1wYXJlbnQg Il41LjAuMCIKLSAgICBnbG9iYWxzICJeMTIuMS4wIgorICAgIGdsb2ItcGFyZW50ICJeNS4xLjIi CisgICAgZ2xvYmFscyAiXjEzLjYuMCIKICAgICBpZ25vcmUgIl40LjAuNiIKICAgICBpbXBvcnQt ZnJlc2ggIl4zLjAuMCIKICAgICBpbXVybXVyaGFzaCAiXjAuMS40IgpAQCAtNTI4Niw3ICs0OTYx LDcgQEAgZXNsaW50QF43LjE5LjA6CiAgICAganMteWFtbCAiXjMuMTMuMSIKICAgICBqc29uLXN0 YWJsZS1zdHJpbmdpZnktd2l0aG91dC1qc29uaWZ5ICJeMS4wLjEiCiAgICAgbGV2biAiXjAuNC4x IgotICAgIGxvZGFzaCAiXjQuMTcuMjAiCisgICAgbG9kYXNoLm1lcmdlICJeNC42LjIiCiAgICAg bWluaW1hdGNoICJeMy4wLjQiCiAgICAgbmF0dXJhbC1jb21wYXJlICJeMS40LjAiCiAgICAgb3B0 aW9uYXRvciAiXjAuOS4xIgpAQCAtNTI5NSw3ICs0OTcwLDcgQEAgZXNsaW50QF43LjE5LjA6CiAg ICAgc2VtdmVyICJeNy4yLjEiCiAgICAgc3RyaXAtYW5zaSAiXjYuMC4wIgogICAgIHN0cmlwLWpz b24tY29tbWVudHMgIl4zLjEuMCIKLSAgICB0YWJsZSAiXjYuMC40IgorICAgIHRhYmxlICJeNi4w LjkiCiAgICAgdGV4dC10YWJsZSAiXjAuMi4wIgogICAgIHY4LWNvbXBpbGUtY2FjaGUgIl4yLjAu MyIKIApAQCAtNTMyMCw3ICs0OTk1LDcgQEAgZXNxdWVyeUBeMS40LjA6CiAgIGRlcGVuZGVuY2ll czoKICAgICBlc3RyYXZlcnNlICJeNS4xLjAiCiAKLWVzcmVjdXJzZUBeNC4xLjAsIGVzcmVjdXJz ZUBeNC4zLjA6Citlc3JlY3Vyc2VAXjQuMy4wOgogICB2ZXJzaW9uICI0LjMuMCIKICAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNyZWN1cnNlLy0vZXNyZWN1cnNlLTQu My4wLnRneiM3YWQ3OTY0ZDY3OWFiYjI4YmVlNzJjZWM2Mzc1OGIxYzVkMmM5OTIxIgogICBpbnRl Z3JpdHkgc2hhNTEyLUttZktMM2I2RytSWHZQOE4xdnIzVHExa0wvb0NGZ24yTllYRXRxUDgvTDNw S2FwVUE0RzhjRlZhb0YzU1UzMjNDRDRYeXBSL2ZmaW9IbWt0aTYvVGFnPT0KQEAgLTUzMzMsOSAr NTAwOCw5IEBAIGVzdHJhdmVyc2VAXjQuMS4xOgogICBpbnRlZ3JpdHkgc2hhNTEyLTM5bm5LZmZX ejh4TjFCVS8yYzc5bjluQjlIRHpvMG5pWVVxeDZ4eXFVbnlvQW5ReXlXcE9UZFpFZWlDY2g4QkJ1 NTE1dDR3cDlabWdWZlZobjlFQnB3PT0KIAogZXN0cmF2ZXJzZUBeNS4xLjAsIGVzdHJhdmVyc2VA XjUuMi4wOgotICB2ZXJzaW9uICI1LjIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vZXN0cmF2ZXJzZS8tL2VzdHJhdmVyc2UtNS4yLjAudGd6IzMwN2RmNDI1NDdl NmNjNzMyNGQzY2YwM2MxNTVkNWNkYjhjNTM4ODAiCi0gIGludGVncml0eSBzaGE1MTItQnhiTkdH Tm0wUnlSWXZVZEhwSXd2OUlXemVNOVhDbGJPeHdvQVR1RmRPRTdaRTZ3SEwrSFE1VDhob1BNK3pI dm1LenpzRXFoZ3kwR3JRNVgxM2FmaVE9PQorICB2ZXJzaW9uICI1LjMuMCIKKyAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXN0cmF2ZXJzZS8tL2VzdHJhdmVyc2UtNS4z LjAudGd6IzJlZWE1MjkwNzAyZjI2YWI4ZmU1MzcwMzcwZmY4NmM5NjVkMjExMjMiCisgIGludGVn cml0eSBzaGE1MTItTU1kQVJ1VkVRemlOVGVKRDhEZ01xbWh3UjExQlJRL2NCUCtwTHRZZFNUbmYz TUlPOGZGZWlJTkViWDM2WmRObGZVLzdBOWYzZ1V3NDlCM29Rc3Z3QkE9PQogCiBlc3V0aWxzQF4y LjAuMjoKICAgdmVyc2lvbiAiMi4wLjMiCkBAIC01NDE4LDkgKzUwOTMsOSBAQCBleGVjYUBeNC4w LjA6CiAgICAgc3RyaXAtZmluYWwtbmV3bGluZSAiXjIuMC4wIgogCiBleGVjYUBeNS4wLjA6Ci0g IHZlcnNpb24gIjUuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9leGVjYS8tL2V4ZWNhLTUuMC4wLnRneiM0MDI5YjAwMDc5OThhODQxZmJkMTAzMmU1ZjRkZTg2 YTNjMWUzMzc2IgotICBpbnRlZ3JpdHkgc2hhNTEyLW92NncvMkxDaXV5TzRSTFlHZHBGR2prY3Mw d01UZ0dFOFBya1RIaWtlVXk1aUpla1h5UElLVWppZms1Q3NFMHB0N3NNQ3JNWjNZTnFvQ2o2aWRR T25RPT0KKyAgdmVyc2lvbiAiNS4xLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL2V4ZWNhLy0vZXhlY2EtNS4xLjEudGd6I2Y4MGFkOWNiZjQyOThmN2JkMWQ0Yzk1 NTVjMjFlOTM3NDFjNDExZGQiCisgIGludGVncml0eSBzaGE1MTItOHVTcFpab2NBWlJCQVBJRUlO SmozTG85SHlHaXRsbGN6YzI3RWg1WVlvampNRk1uOHlITURNYVVIRTJKcWZxMDVEL3d1Y3dJNEpH VVJ5WHQxdmNoeWc9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgY3Jvc3Mtc3Bhd24gIl43LjAuMyIK ICAgICBnZXQtc3RyZWFtICJeNi4wLjAiCkBAIC01NDc3LDE2ICs1MTUyLDE1IEBAIGZhc3QtZGVl cC1lcXVhbEBeMy4xLjEsIGZhc3QtZGVlcC1lcXVhbEBeMy4xLjM6CiAgIGludGVncml0eSBzaGE1 MTItZjNxUTlvUXk5ajJBaEJlL0g5VkM5MXdMbUtCQ0NVL2dET25LTkFZRzVoc3dPN0JMS2owOUhj NUhZTno5Y0dJKyt4bHBEQ0lnRGFpdFZzMDNBVFI4NFE9PQogCiBmYXN0LWdsb2JAXjMuMC4zLCBm YXN0LWdsb2JAXjMuMS4xLCBmYXN0LWdsb2JAXjMuMi40OgotICB2ZXJzaW9uICIzLjIuNSIKLSAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmFzdC1nbG9iLy0vZmFzdC1n bG9iLTMuMi41LnRneiM3OTM5YWYyYTY1NmRlNzlhNGYxOTAxOTAzZWU4YWRjYWE3Y2I5NjYxIgot ICBpbnRlZ3JpdHkgc2hhNTEyLTJEdEZjZ1Q2OHdpVFRpd1oyaE5kSmZjSE5rZTlYT2Zud21CUldY aG1lS004ckYwVEd3bUMvUXRvM1M3Um9aS3A1Y2lsWmJ4ek81aVROVFFzSitFZURnPT0KKyAgdmVy c2lvbiAiMy4yLjciCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zh c3QtZ2xvYi8tL2Zhc3QtZ2xvYi0zLjIuNy50Z3ojZmQ2Y2I3YTJkN2U5YWE3YTc4NDYxMTFlODVh MTk2ZDZiMmY3NjZhMSIKKyAgaW50ZWdyaXR5IHNoYTUxMi1yWUdNUndpcDZsVU12WUQzQlRTY013 VDFIdEFzMmQ3MVNNdjY2VnJ4czBJZWtHWkVqaE0wcGNNZmpRUG5rbkJ0MnplQ3dRTUV1cGlOMDJa UDREaVQxUT09CiAgIGRlcGVuZGVuY2llczoKICAgICAiQG5vZGVsaWIvZnMuc3RhdCIgIl4yLjAu MiIKICAgICAiQG5vZGVsaWIvZnMud2FsayIgIl4xLjIuMyIKLSAgICBnbG9iLXBhcmVudCAiXjUu MS4wIgorICAgIGdsb2ItcGFyZW50ICJeNS4xLjIiCiAgICAgbWVyZ2UyICJeMS4zLjAiCi0gICAg bWljcm9tYXRjaCAiXjQuMC4yIgotICAgIHBpY29tYXRjaCAiXjIuMi4xIgorICAgIG1pY3JvbWF0 Y2ggIl40LjAuNCIKIAogZmFzdC1qc29uLXN0YWJsZS1zdHJpbmdpZnlAXjIuMC4wOgogICB2ZXJz aW9uICIyLjEuMCIKQEAgLTU0OTksMTQgKzUxNzMsMTYgQEAgZmFzdC1sZXZlbnNodGVpbkBeMi4w LjY6CiAgIGludGVncml0eSBzaGExLVBZcGNab2c2RnFNTXFHUStoUjhadXFkNWVSYz0KIAogZmFz dC1zYWZlLXN0cmluZ2lmeUBeMi4wLjc6Ci0gIHZlcnNpb24gIjIuMC43IgotICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mYXN0LXNhZmUtc3RyaW5naWZ5Ly0vZmFzdC1z YWZlLXN0cmluZ2lmeS0yLjAuNy50Z3ojMTI0YWE4ODU4OTkyNjFmNjhhZWRiNDJhN2MwODBkZTlk YTYwODc0MyIKLSAgaW50ZWdyaXR5IHNoYTUxMi1VdG02Q2R6VCs2eHNEazJtOFM2dUw4Vkh4TndJ Nkp1YitlOU5ZVGNBbXMyOFQ4NHBUYTI1R0pRVjlqMENZME4xck04aEs0eDZncnBGMkJRZisycXdW QT09CisgIHZlcnNpb24gIjIuMS4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9mYXN0LXNhZmUtc3RyaW5naWZ5Ly0vZmFzdC1zYWZlLXN0cmluZ2lmeS0yLjEuMS50 Z3ojYzQwNmE4M2I2ZTcwZDllMzVjZTNiMzBhODExNDFkZjMwYWViYTg4NCIKKyAgaW50ZWdyaXR5 IHNoYTUxMi1XK0tKYzJkbUlMbFBwbEQvSDRLOWw5TGNBSEFmUHRQNkJZODR1VkxYUTZFdmN6OUxj ZzMzWTJ6MUlWYmxUNnhkWTU0UFhZVkhFdiswV3BxOElvNnprQT09CiAKIGZhc3QteG1sLXBhcnNl ckBeMy4xOS4wOgotICB2ZXJzaW9uICIzLjE5LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL2Zhc3QteG1sLXBhcnNlci8tL2Zhc3QteG1sLXBhcnNlci0zLjE5LjAu dGd6I2NiNjM3ZWMzZjM5OTlmNTE0MDZkZDhmZjBlNmZjNGQ4M2U1MjBkMDEiCi0gIGludGVncml0 eSBzaGE1MTItNHBYd21CcGxzQ1B2OEZPWTFXUmFrRjk3MFRqTkduR25mYk9uTHFqbFl2TWlGMVNS M3lPSHl4TVIvWUNYcFBUT3NwTkY1Z3d1ZHFrdElQNFZzV2t2Qmc9PQorICB2ZXJzaW9uICIzLjIx LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Zhc3QteG1sLXBh cnNlci8tL2Zhc3QteG1sLXBhcnNlci0zLjIxLjEudGd6IzE1MmExZDUxZDQ0NTM4MGY3MDQ2YjMw NDY3MmRkNTVkMTVjOWU3MzYiCisgIGludGVncml0eSBzaGE1MTItRlRGVmpZb0JPWlRKZWtpVXNh d0dzU1lWOVFMMEErekRZQ1JqN3kzNElPNkpnKzJJTVlFdFFhK2JiaWN0cGRwVjhkSHhYeXdxVTdD MGdSREVPRnRCRmc9PQorICBkZXBlbmRlbmNpZXM6CisgICAgc3RybnVtICJeMS4wLjQiCiAKIGZh c3Rlc3QtbGV2ZW5zaHRlaW5AXjEuMC4xMjoKICAgdmVyc2lvbiAiMS4wLjEyIgpAQCAtNTUxNCw5 ICs1MTkwLDkgQEAgZmFzdGVzdC1sZXZlbnNodGVpbkBeMS4wLjEyOgogICBpbnRlZ3JpdHkgc2hh NTEyLU9uMk4rQnBZSjE1eElDOTc0UU5WdVlHTU9sRVZ0NHMwRU9JM3d3TXFPbUsxZmREWStGTi96 bHRQVjh2b3NxNGFkNGMvZ0oxS0hTY1VuLzZBV0lnaW93PT0KIAogZmFzdHFAXjEuNi4wOgotICB2 ZXJzaW9uICIxLjExLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L2Zhc3RxLy0vZmFzdHEtMS4xMS4wLnRneiNiYjlmYjk1NWEwNzEzMGE5MThlYjYzYzFmNTE2MWNj MzJhNWQwODU4IgotICBpbnRlZ3JpdHkgc2hhNTEyLTdFY3pzOGdJUERyVnpUK0Vrc1lCY3VwcU15 eFNIWFhySE9MUlJ4VTIvRGljVjg3ODlNUkJSUjgrSGMydVd6VXVwT3M0WVM0SnpCbUJ4ampDVkJ4 RC9nPT0KKyAgdmVyc2lvbiAiMS4xMy4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9mYXN0cS8tL2Zhc3RxLTEuMTMuMC50Z3ojNjE2NzYwZjg4YTc1MjZiZGZjNTk2 YjdjYWI4YzE4OTM4YzM2Yjk4YyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1ZcGtwVW5LOG9kMG8xaG1l U2M3VVVzL2VCL3ZJUFdKWWpLY2syUUtJekFmNzFWbTFBQVEzRWJ1WkIzZzJKSXkrcGcrRVJEMHZx STc5S3laaUIyZTJOdz09CiAgIGRlcGVuZGVuY2llczoKICAgICByZXVzaWZ5ICJeMS4wLjQiCiAK QEAgLTU2MTEsOSArNTI4Nyw5IEBAIGZpbmFsaGFuZGxlckAxLjEuMjoKICAgICB1bnBpcGUgIn4x LjAuMCIKIAogZmluZC1jYWNoZS1kaXJAXjMuMy4xOgotICB2ZXJzaW9uICIzLjMuMSIKLSAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmluZC1jYWNoZS1kaXIvLS9maW5k LWNhY2hlLWRpci0zLjMuMS50Z3ojODliMzNmYWQ0YTQ2NzBkYWE5NGY4NTVmN2ZiZTMxZDZkODRm ZTg4MCIKLSAgaW50ZWdyaXR5IHNoYTUxMi10MkdETXQzb0dDL3YrQk13em1sbFdEdUpGL3hjRHRF NWovZkNHYnFERDdPTHVKa2owY2ZoMVlTQTVWS1B2d01lTEZMTkRCa3dPS1oyWDg1akdMVmZ0UT09 CisgIHZlcnNpb24gIjMuMy4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn LmNvbS9maW5kLWNhY2hlLWRpci8tL2ZpbmQtY2FjaGUtZGlyLTMuMy4yLnRneiNiMzBjNWI2ZWZm MDczMDczMWFlYTliYmQ5ZGJlY2JkODAyNTZkNjRiIgorICBpbnRlZ3JpdHkgc2hhNTEyLXdYWlY1 ZW1GRWpycmlkSWdFRDExT29VS0x4aVlqQWNxb3QvTkpkQWtPaGxKK3ZHendoT0FmY0c1T1gxalAr UzBQY2pFbjhiZE1KditnMmp3UTNPbmlnPT0KICAgZGVwZW5kZW5jaWVzOgogICAgIGNvbW1vbmRp ciAiXjEuMC4xIgogICAgIG1ha2UtZGlyICJeMy4wLjIiCkBAIC01NjQ4LDE0ICs1MzI0LDE0IEBA IGZsYXQtY2FjaGVAXjMuMC40OgogICAgIHJpbXJhZiAiXjMuMC4yIgogCiBmbGF0dGVkQF4zLjEu MDoKLSAgdmVyc2lvbiAiMy4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL2ZsYXR0ZWQvLS9mbGF0dGVkLTMuMS4xLnRneiNjNGI0ODllODAwOTZkOWRmMWRmYzk3 Yzc5ODcxYWVhN2M2MTdjNDY5IgotICBpbnRlZ3JpdHkgc2hhNTEyLXpBb0FRaXVkeStyNVN2blN3 M0tKeTVvcy9vUkpZSHpyemphL3RCRHFyWnROaFV3OGJ0Nnk4T0J6TVdjaldyKzhsaVY4RWI2eU9o dzhXWjdWRlo1WnpBPT0KKyAgdmVyc2lvbiAiMy4yLjIiCisgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL2ZsYXR0ZWQvLS9mbGF0dGVkLTMuMi4yLnRneiM2NGJmZWQ1Y2I2 OGZlM2NhNzhiM2ViMjE0YWQ5N2I2M2JlZGNlNTYxIgorICBpbnRlZ3JpdHkgc2hhNTEyLUphVFkv d3RyY1N5dlhKbDRJTUZIUEt5RnVyMXNFOUFVcWMwUW5oT2FKMEN4SHRBb0lWOHBZRHplRWZBYU5F dEdrT2ZxNGdyM0xCRm1kWFc1bU9RRm5BPT0KIAogZmxhdHRlZEBeMy4yLjQ6CiAgIHZlcnNpb24g IjMuMi41IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mbGF0dGVk Ly0vZmxhdHRlZC0zLjIuNS50Z3ojNzZjODU4NGY0ZmM4NDNkYjY0NzAyYTZiZDA0YWI3YThiZDY2 NmRhMyIKLSAgaW50ZWdyaXR5ICJzaGExLWRzaFlUMC9JUTl0a2NDcHIwRXEzcUwxbWJhTT0gc2hh NTEyLVdJV0dpMkwzRHlUVXZVcndSS2dHaTlUd3hRTVVFcVBPUFFCVmk3MVI5NmpaWEpkRnNrWEVt ZjU0Qm9aYVMxa2tuR09Eb0lHQVNHRXpCVVlkeU1DQkpnPT0iCisgIGludGVncml0eSBzaGE1MTIt V0lXR2kyTDNEeVRVdlVyd1JLZ0dpOVR3eFFNVUVxUE9QUUJWaTcxUjk2alpYSmRGc2tYRW1mNTRC b1phUzFra25HT0RvSUdBU0dFekJVWWR5TUNCSmc9PQogCiBmb2xsb3ctcmVkaXJlY3RzQF4xLjAu MCwgZm9sbG93LXJlZGlyZWN0c0BeMS4xNC4wOgogICB2ZXJzaW9uICIxLjE0LjgiCkBAIC01Njg4 LDcgKzUzNjQsNyBAQCBmcy1jb25zdGFudHNAXjEuMC4wOgogZnMtZXh0cmFAXjEwLjAuMDoKICAg dmVyc2lvbiAiMTAuMC4wIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9mcy1leHRyYS8tL2ZzLWV4dHJhLTEwLjAuMC50Z3ojOWZmNjFiNjU1ZGRlNTNmYjM0YTgyZGY4 NGJiMjE0Y2U4MDJlMTdjMSIKLSAgaW50ZWdyaXR5ICJzaGExLW4vWWJaVjNlVS9zMHFDMzRTN0lV em9BdUY4RT0gc2hhNTEyLUM1b3diMTR1OWVKd2l6S0dkY2hjRFVRZUZ0bFNISHRoQms4cGJYOVZj MVBGWnJMb21idWRqRG5ObnM4OGFZc2xDeUY2SVk1U1V3M1JvejZ4U2hjRUlRPT0iCisgIGludGVn cml0eSBzaGE1MTItQzVvd2IxNHU5ZUp3aXpLR2RjaGNEVVFlRnRsU0hIdGhCazhwYlg5VmMxUEZa ckxvbWJ1ZGpEbk5uczg4YVlzbEN5RjZJWTVTVXczUm96NnhTaGNFSVE9PQogICBkZXBlbmRlbmNp ZXM6CiAgICAgZ3JhY2VmdWwtZnMgIl40LjIuMCIKICAgICBqc29uZmlsZSAiXjYuMC4xIgpAQCAt NTcwNiw3ICs1MzgyLDcgQEAgZnMucmVhbHBhdGhAXjEuMC4wOgogICByZXNvbHZlZCAiaHR0cHM6 Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mcy5yZWFscGF0aC8tL2ZzLnJlYWxwYXRoLTEuMC4wLnRn eiMxNTA0YWQyNTIzMTU4Y2FhNDBkYjRhMjc4N2NiMDE0MTE5OTRlYTRmIgogICBpbnRlZ3JpdHkg c2hhMS1GUVN0SlNNVmpLcEEyMG9uaDhzQlFSbVU2azg9CiAKLWZzZXZlbnRzQH4yLjMuMSwgZnNl dmVudHNAfjIuMy4yOgorZnNldmVudHNAfjIuMy4yOgogICB2ZXJzaW9uICIyLjMuMiIKICAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnNldmVudHMvLS9mc2V2ZW50cy0y LjMuMi50Z3ojOGE1MjZmNzhiOGZkZjQ2MjNiNzA5ZTBiOTc1YzUyYzI0YzAyZmQxYSIKICAgaW50 ZWdyaXR5IHNoYTUxMi14aXFNUVI0eEFlSFR1Qjl1V20rZkZSY0lPZ0tCTWlPQlArZVhpeVQ3anNn VkNxMWJrVnlndDAwb0FTb3dCN0VkdHBPSGFhUGdLdDgxMlA5YWIrRERLQT09CkBAIC01NzE3LDEz ICs1MzkzLDEzIEBAIGZ1bmN0aW9uLWJpbmRAXjEuMS4xOgogICBpbnRlZ3JpdHkgc2hhNTEyLXlJ b3ZBek1YNDlzRjhZbDU4ZlNDV0o1c3ZTTHVhaWJQeFhRSkZMbUJPYlR1Q3IwTWYxS2lQb3BHTTlO aUZqaVlCQ2JmYWEyRmg2YnJlUTZBTlZUSTBBPT0KIAogZnVuY3Rpb24ucHJvdG90eXBlLm5hbWVA XjEuMS4yLCBmdW5jdGlvbi5wcm90b3R5cGUubmFtZUBeMS4xLjM6Ci0gIHZlcnNpb24gIjEuMS40 IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9mdW5jdGlvbi5wcm90 b3R5cGUubmFtZS8tL2Z1bmN0aW9uLnByb3RvdHlwZS5uYW1lLTEuMS40LnRneiNlNGVhODM5Yjlk MzY3MmFlOTlkMGVmZDlmMzhkOTE5MWM1ZWFhYzgzIgotICBpbnRlZ3JpdHkgc2hhNTEyLWlxeTFw SW90WS9SbWhkRlp5Z1NTbFcwd2tvMnl4a1NDS3FzdXY0cHI4UUVTb2hwWXlHL1o3Qi9YWHZQUktU SlMvLzk2MHJnZ3VFNW1TUlVzRGRhSnJRPT0KKyAgdmVyc2lvbiAiMS4xLjUiCisgIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Z1bmN0aW9uLnByb3RvdHlwZS5uYW1lLy0v ZnVuY3Rpb24ucHJvdG90eXBlLm5hbWUtMS4xLjUudGd6I2NjZTA1MDVmZTFmZmI4MDUwM2U2Zjll NDZjYzY0ZTQ2YTEyYTk2MjEiCisgIGludGVncml0eSBzaGE1MTItdU43bS9CelZLUW5DVUYvaVc4 alllYTY3disrMnU3bTVVZ0VOYkhSdGREVmNsT1VQK0ZNUGxDTmRtazBoL3lzR3lvMnRhdk1KRURx SkFrSmRSYTF2TUE9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgY2FsbC1iaW5kICJeMS4wLjIiCiAg ICAgZGVmaW5lLXByb3BlcnRpZXMgIl4xLjEuMyIKLSAgICBlcy1hYnN0cmFjdCAiXjEuMTguMC1u ZXh0LjIiCisgICAgZXMtYWJzdHJhY3QgIl4xLjE5LjAiCiAgICAgZnVuY3Rpb25zLWhhdmUtbmFt ZXMgIl4xLjIuMiIKIAogZnVuY3Rpb25hbC1yZWQtYmxhY2stdHJlZUBeMS4wLjE6CkBAIC01ODE4 LDcgKzU0OTQsMTUgQEAgZ2V0LXN0cmVhbUBeNi4wLjA6CiAgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL2dldC1zdHJlYW0vLS9nZXQtc3RyZWFtLTYuMC4xLnRneiNhMjYy ZDhlZWY2N2FjZWQ1N2MyODUyYWQ2MTY3NTI2YTQzY2JmN2I3IgogICBpbnRlZ3JpdHkgc2hhNTEy LXRzNldpKzJqM2pRanFpNzB3NUFsTjhERm5rU3dDK01xbXhFemRFQUxCMnFYWllWM1gvYjFDVGZn UExHSk5NZUFXeGRQZlU4Rk8xbXMzTlVmYUhDUFlnPT0KIAotZ2xvYi1wYXJlbnRAXjUuMC4wLCBn bG9iLXBhcmVudEBeNS4xLjAsIGdsb2ItcGFyZW50QF41LjEuMSwgZ2xvYi1wYXJlbnRAfjUuMS4w LCBnbG9iLXBhcmVudEB+NS4xLjI6CitnZXQtc3ltYm9sLWRlc2NyaXB0aW9uQF4xLjAuMDoKKyAg dmVyc2lvbiAiMS4wLjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L2dldC1zeW1ib2wtZGVzY3JpcHRpb24vLS9nZXQtc3ltYm9sLWRlc2NyaXB0aW9uLTEuMC4wLnRn eiM3ZmRiODFjOTAwMTAxZmJkNTY0ZGQ1ZjFhMzBhZjVhYWRjMWU1OGQ2IgorICBpbnRlZ3JpdHkg c2hhNTEyLTJFbWRIMVl2SVFpWnBsdENOZ2t1aVVueXVrenhNL1I2TkRKWDMxS2UzQkcxTnE1YjBT MlBoWDU5VUtpOXZacFBEUVZkcW4rMUljYUF3bnpUVDV2Q2p3PT0KKyAgZGVwZW5kZW5jaWVzOgor ICAgIGNhbGwtYmluZCAiXjEuMC4yIgorICAgIGdldC1pbnRyaW5zaWMgIl4xLjEuMSIKKworZ2xv Yi1wYXJlbnRAXjUuMS4xLCBnbG9iLXBhcmVudEBeNS4xLjIsIGdsb2ItcGFyZW50QH41LjEuMjoK ICAgdmVyc2lvbiAiNS4xLjIiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL2dsb2ItcGFyZW50Ly0vZ2xvYi1wYXJlbnQtNS4xLjIudGd6Izg2OTgzMmM1ODAzNGZlNjhh NDA5M2MxN2RjMTVlODM0MGQ4NDAxYzQiCiAgIGludGVncml0eSBzaGE1MTItQU9JZ1NRQ2VwaUpZ d1AzQVJuR3grNVZuVHUySEJZZHpiR1A0NWVMdzF2cjN6QjN2WkxleWVkMXNDOWhuYmNPYzkvU3JN eU01UlBRcmtHejRhUzlab3c9PQpAQCAtNTgzMCwxOSArNTUxNCw3IEBAIGdsb2ItdG8tcmVnZXhw QF4wLjQuMToKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYi10 by1yZWdleHAvLS9nbG9iLXRvLXJlZ2V4cC0wLjQuMS50Z3ojYzc1Mjk3MDg3Yzg1MWI5YTU3OGJk MjE3ZGQ1OWE5MmY1OWZlNTQ2ZSIKICAgaW50ZWdyaXR5IHNoYTUxMi1sa1gxSEpYd3lNY3Bydy81 WVVaYzJzN0RycEFpSEIyMS9WK0UxckhVclZOb2trdkI2YnFNelQwVmZWNi84NlpOYWJ0MWsxNFlP SWFUN25Edk9YM0lpdz09CiAKLWdsb2JAXjcuMS4wLCBnbG9iQF43LjEuMywgZ2xvYkBeNy4xLjQs IGdsb2JAXjcuMS42OgotICB2ZXJzaW9uICI3LjEuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vZ2xvYi8tL2dsb2ItNy4xLjYudGd6IzE0MWYzM2I4MWE3YzI0OTJl MTI1NTk0MzA3NDgwYzQ2Njc5Mjc4YTYiCi0gIGludGVncml0eSBzaGE1MTItTHdheHd5WjcyTGs3 dlpJTnROTnJ5d1gwWnVMeVN0cmREdGFiZWZaS0FZNVpHSmhWdGdkem5sdVJlc3hObVBpdEUwU0FP K08yNnNXVEhlS1NJMndNQkE9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgZnMucmVhbHBhdGggIl4x LjAuMCIKLSAgICBpbmZsaWdodCAiXjEuMC40IgotICAgIGluaGVyaXRzICIyIgotICAgIG1pbmlt YXRjaCAiXjMuMC40IgotICAgIG9uY2UgIl4xLjMuMCIKLSAgICBwYXRoLWlzLWFic29sdXRlICJe MS4wLjAiCi0KLWdsb2JAXjcuMS43OgorZ2xvYkBeNy4xLjAsIGdsb2JAXjcuMS4zLCBnbG9iQF43 LjEuNCwgZ2xvYkBeNy4xLjYsIGdsb2JAXjcuMS43OgogICB2ZXJzaW9uICI3LjIuMCIKICAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYi8tL2dsb2ItNy4yLjAudGd6 I2QxNTUzNWFmNzczMmUwMmU5NDhmNGM0MTYyOGJkOTEwMjkzZjYwMjMiCiAgIGludGVncml0eSBz aGE1MTItbG1MZjZndHlyUHE4dFRqU21yTzk0d0JlUWJGUjNIYkxIYnV5RDY5d3V5UWtJbXAyaFdx TUdCNDdPWDY1RkJrUGZmTzY0MUlQOWpXYTF6NGl2cUcyNlE9PQpAQCAtNTg1OSwxMiArNTUzMSwx MiBAQCBnbG9iYWxzQF4xMS4xLjA6CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL2dsb2JhbHMvLS9nbG9iYWxzLTExLjEyLjAudGd6I2FiODc5NTMzODg2OGEwYmFiZDg1 MjU3NTgwMThjMmE3ZWI5NWM0MmUiCiAgIGludGVncml0eSBzaGE1MTItV09CcC9FRUdVaUlzSlNw N3djdi95Nk1PK2xWOVVvbmNXcXh1RmZtOGVCd3pXTmd5ZkJkNkd6K0llS1E5akNteWhvSDk5ZzE1 TTNUK1FhVkhGaml6VkE9PQogCi1nbG9iYWxzQF4xMi4xLjA6Ci0gIHZlcnNpb24gIjEyLjQuMCIK LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYmFscy8tL2dsb2Jh bHMtMTIuNC4wLnRneiNhMTg4MTM1NzZhNDFiMDBhMjRhOTdlN2Y4MTU5MThjMmUxOTkyNWY4Igot ICBpbnRlZ3JpdHkgc2hhNTEyLUJXSUN1enpEdkRvSDU0TkhLQ3NlRGFuQWhFM0NlRG9yZ0RMNU1U NkxNWFhqMldDbmQ5VUMyc3pkazRBV0xmamRnTkJDWExVYW5YWWNwQkJLT1NXR3dnPT0KK2dsb2Jh bHNAXjEzLjYuMCwgZ2xvYmFsc0BeMTMuOS4wOgorICB2ZXJzaW9uICIxMy4xMi4wIgorICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nbG9iYWxzLy0vZ2xvYmFscy0xMy4x Mi4wLnRneiM0ZDczMzc2MDMwNDIzMGEwMDgyZWQ5NmUyMWU1YzU2NWY4OTgwODllIgorICBpbnRl Z3JpdHkgc2hhNTEyLXVTOFg2bFNLTjJKdW1Wb1hyYlV6K3VHNEJZRytlaWF3cW0zcUZjVDdhbW1m YlVIZUNCb0pNbEhjZWMvUzNrclNrNzMvQUUvZjBzellGbWdBQTNrWVpnPT0KICAgZGVwZW5kZW5j aWVzOgotICAgIHR5cGUtZmVzdCAiXjAuOC4xIgorICAgIHR5cGUtZmVzdCAiXjAuMjAuMiIKIAog Z2xvYmFsc0BeOS4xOC4wOgogICB2ZXJzaW9uICI5LjE4LjAiCkBAIC01ODg2LDkgKzU1NTgsOSBA QCBnbG9iYnlAXjEwLjAuMDoKICAgICBzbGFzaCAiXjMuMC4wIgogCiBnbG9iYnlAXjExLjAuMToK LSAgdmVyc2lvbiAiMTEuMC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn LmNvbS9nbG9iYnkvLS9nbG9iYnktMTEuMC4zLnRneiM5YjFmMGNiNTIzZTE3MWRkMWFkOGM3YjJh OWZiNGI2NDRiOTU5M2NiIgotICBpbnRlZ3JpdHkgc2hhNTEyLWZmZG1vc2pBODA3eTcrbEExTk0w akVMQVJWbVl1bC83MTV4aUlMRWpvM2hCTFBUY2lyZ1FOblhFQ241ZzNtdFI4VE9MQ1Zia2Z1YTFI cGVuMjUvWGNnPT0KKyAgdmVyc2lvbiAiMTEuMC40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9nbG9iYnkvLS9nbG9iYnktMTEuMC40LnRneiMyY2JhZmY3N2MyZjJh NjJlNzFlOWIyODEzYTY3Yjk3YTNhMzAwMWE1IgorICBpbnRlZ3JpdHkgc2hhNTEyLTlPNE1WRzlp b1pKMDhmZmJjeVZZeUxPSkxrNUpRNjg4cEo0ZU1HTHBkV0xIcS9XcjFEOUJscmlMUXlMMEUramJr dWVQVlpYWUZqNDdRTS92MDkzd0hnPT0KICAgZGVwZW5kZW5jaWVzOgogICAgIGFycmF5LXVuaW9u ICJeMi4xLjAiCiAgICAgZGlyLWdsb2IgIl4zLjAuMSIKQEAgLTU5NDEsOSArNTYxMyw5IEBAIGdv dEBeOC4zLjE6CiAgICAgdXJsLXRvLW9wdGlvbnMgIl4xLjAuMSIKIAogZ3JhY2VmdWwtZnNAXjQu MS4xMCwgZ3JhY2VmdWwtZnNAXjQuMS4yLCBncmFjZWZ1bC1mc0BeNC4xLjYsIGdyYWNlZnVsLWZz QF40LjIuMCwgZ3JhY2VmdWwtZnNAXjQuMi4yLCBncmFjZWZ1bC1mc0BeNC4yLjQsIGdyYWNlZnVs LWZzQF40LjIuNjoKLSAgdmVyc2lvbiAiNC4yLjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL2dyYWNlZnVsLWZzLy0vZ3JhY2VmdWwtZnMtNC4yLjYudGd6I2ZmMDQw YjJiMDg1M2IyM2MzZDMxMDI3NTIzNzA2ZjE4ODVkNzZiZWUiCi0gIGludGVncml0eSBzaGE1MTIt blRuSjUyOHBicXhZYW5ocERZc2k0UmQ4TUFlYUJBNjcrUloxMENNMW0zYlRBVkZFRGNkNUF1QTRh Nlc1WWtHWjFpTlhIelp6OFQ2VEJLTGVCdU5yaVE9PQorICB2ZXJzaW9uICI0LjIuOCIKKyAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ3JhY2VmdWwtZnMvLS9ncmFjZWZ1 bC1mcy00LjIuOC50Z3ojZTQxMmI4ZDMzZjVlMDA2NTkzY2JkM2NlZTZkZjlmMmNlYmJlODAyYSIK KyAgaW50ZWdyaXR5IHNoYTUxMi1xa0lpbFBVWWNOaEpwZDMzbjBHQlhUQjFNTVBwMTRUeEVzRXMw cFRyc1NWdWNBcHNZelc1VitROFF4aGlrNktVM2V2eStxa0FBb3dUQnl5bUswYXZkZz09CiAKIGdy YXBobGliQF4yLjEuODoKICAgdmVyc2lvbiAiMi4xLjgiCkBAIC02MDE1LDYgKzU2ODcsMTMgQEAg aGFzLXRvLXN0cmluZy10YWcteEBeMS4yLjA6CiAgIGRlcGVuZGVuY2llczoKICAgICBoYXMtc3lt Ym9sLXN1cHBvcnQteCAiXjEuNC4xIgogCitoYXMtdG9zdHJpbmd0YWdAXjEuMC4wOgorICB2ZXJz aW9uICIxLjAuMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGFz LXRvc3RyaW5ndGFnLy0vaGFzLXRvc3RyaW5ndGFnLTEuMC4wLnRneiM3ZTEzMzgxOGE3ZDM5NDcz NGY5NDFlNzNjM2QzZjkyOTFlNjU4YjI1IgorICBpbnRlZ3JpdHkgc2hhNTEyLWtGamNTTmhubEdW MWt5b0drN09YS1Nhd0g1Sk9iL0x6VWM1dzlCMDJoT1RPMGRmRlJqYkhRS3ZnMWQ2Y2YzSGJlVW10 VTlWYmJWM3F6WjJUZWg5N1dRPT0KKyAgZGVwZW5kZW5jaWVzOgorICAgIGhhcy1zeW1ib2xzICJe MS4wLjIiCisKIGhhcy11bmljb2RlQF4yLjAuMDoKICAgdmVyc2lvbiAiMi4wLjEiCiAgIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhcy11bmljb2RlLy0vaGFzLXVuaWNv ZGUtMi4wLjEudGd6I2UwZTZmZTZhMjhjZjUxMTM4ODU1ZTA4NmQxNjkxZTc3MWRlMmE4YjkiCkBA IC02MDU0LDExICs1NzMzLDYgQEAgaGVhcEAwLjIuNToKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vaGVhcC8tL2hlYXAtMC4yLjUudGd6IzcxM2I2NTU5MGViY2M0MGZj YmVlYWY1NWU4NTE2OTQwOTJiMzlhZjEiCiAgIGludGVncml0eSBzaGExLWNUdGxXUTY4eEEvTDdx OVY2RkZwUUpLem12RT0KIAotaGV4LWNvbG9yLXJlZ2V4QF4xLjEuMDoKLSAgdmVyc2lvbiAiMS4x LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hleC1jb2xvci1y ZWdleC8tL2hleC1jb2xvci1yZWdleC0xLjEuMC50Z3ojNGMwNmZjY2I0NjAyZmUyNjAyYjNjOTNk ZjgyZDdlN2RiZjFhOGE4ZSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1sOXNmREZzdXF0T3FLRHNRZHFy TVJrMFU4NVJaYzBSdE9SOXlQSTdtUlZPYTRGc1IvQlZuWjBzaG1RUk05NkppOTlrWVpQLzdobjFj ZWRjMStBcHNUUT09Ci0KIGhtYWMtZHJiZ0BeMS4wLjE6CiAgIHZlcnNpb24gIjEuMC4xIgogICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9obWFjLWRyYmcvLS9obWFjLWRy YmctMS4wLjEudGd6I2QyNzQ1NzAxMDI1YTZjNzc1YTZjNTQ1NzkzZWQ1MDJmYzBjNjQ5YTEiCkBA IC02MDc1LDIyICs1NzQ5LDEyIEBAIGhvaXN0LW5vbi1yZWFjdC1zdGF0aWNzQF4zLjAuMCwgaG9p c3Qtbm9uLXJlYWN0LXN0YXRpY3NAXjMuMy4wLCBob2lzdC1ub24tcmVhY3QtCiAgIGRlcGVuZGVu Y2llczoKICAgICByZWFjdC1pcyAiXjE2LjcuMCIKIAotaHNsLXJlZ2V4QF4xLjAuMDoKLSAgdmVy c2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hz bC1yZWdleC8tL2hzbC1yZWdleC0xLjAuMC50Z3ojZDQ5MzMwYzc4OWVkODE5ZTI3NmE0YzBkMjcy ZGZmYTMwYjE4ZmU2ZSIKLSAgaW50ZWdyaXR5IHNoYTEtMUpNd3g0bnRnWjRuYWt3Tkp5My9vd3NZ L200PQotCi1oc2xhLXJlZ2V4QF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hzbGEtcmVnZXgvLS9oc2xhLXJlZ2V4LTEu MC4wLnRneiNjMWNlN2EzMTY4YzhjNjYxNDAzM2E0YjVmNzg3N2YzYjIyNWY5YzM4IgotICBpbnRl Z3JpdHkgc2hhMS13YzU2TVdqSXhtRkFNNlMxOTRkL095SmZuRGc9Ci0KLWh0bWwtZG9tLXBhcnNl ckAxLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL2h0bWwtZG9tLXBhcnNlci8tL2h0bWwtZG9tLXBhcnNlci0xLjAuMS50Z3oj NWQxNDdmZWQ2NjU2YzEyOTE4ZWRiY2VhNGE0MjNlZWZlOGQwZTcxNSIKLSAgaW50ZWdyaXR5IHNo YTUxMi11S1hJU0tsSHpCL2w5QTA4anJzMndzZVFKOWI4NjRaZkVkbUlac2tqMTBjdVA2SHhDT01I U0swUmRsdVY4TlZRYVdzMFB3ZWZON2Q4d3FHM2pSMEliUT09CitodG1sLWRvbS1wYXJzZXJAMS4w LjI6CisgIHZlcnNpb24gIjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9odG1sLWRvbS1wYXJzZXIvLS9odG1sLWRvbS1wYXJzZXItMS4wLjIudGd6I2JiNWZm ODQ0ZjIxNDY1N2Q4OTlhYTRmYjdiMGE5ZTdkMTU2MDdlOTYiCisgIGludGVncml0eSBzaGE1MTIt SnE0b1ZrVlNuKzEwdXQzZnljMlAvRnMxanFUbzBsNDVjUDZROGQyZWYvOWpma1l3dWxPMFFYbXlM STBWVWlaclhGNGN6cEdnTUVKUmE1MkNRNkZrOFE9PQogICBkZXBlbmRlbmNpZXM6Ci0gICAgZG9t aGFuZGxlciAiNC4yLjAiCisgICAgZG9taGFuZGxlciAiNC4yLjIiCiAgICAgaHRtbHBhcnNlcjIg IjYuMS4wIgogCiBodG1sLWVsZW1lbnQtbWFwQF4xLjIuMDoKQEAgLTYxMDcsMjEgKzU3NzEsMjIg QEAgaHRtbC1lc2NhcGVyQF4yLjAuMDoKICAgaW50ZWdyaXR5IHNoYTUxMi1IMmlNdGQwSTRNdDVl WWlhcFJkSURqcCtYemVsWFEwdEZFNEpTN1lGd0ZldlhYTW1PcDlteU5yVXZDZzBENndzOGlxa1JQ QmZLSGdid2lnMVNtbExmZz09CiAKIGh0bWwtcmVhY3QtcGFyc2VyQF4xLjIuNzoKLSAgdmVyc2lv biAiMS4yLjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2h0bWwt cmVhY3QtcGFyc2VyLy0vaHRtbC1yZWFjdC1wYXJzZXItMS4yLjcudGd6IzE2NzRlZDRiOTZiMzQ0 MGFkOTIyOTYyYTNmZjAwMGU3ZjMzMjUyOTMiCi0gIGludGVncml0eSBzaGE1MTItZ1VVRWdyWlYw WWFDeHRaTzJYdUpEVW5IU3E3Z09xS3Uxa3J5ZTk3Y3hnaVoraXBhSXpzcEdNaEFUZXE5bGh5OWd3 WW13QkYyWUNIZS9hY2NyTU1vOFE9PQorICB2ZXJzaW9uICIxLjQuMCIKKyAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaHRtbC1yZWFjdC1wYXJzZXIvLS9odG1sLXJlYWN0 LXBhcnNlci0xLjQuMC50Z3ojYmYyNjRmMzhiOWZkZjRkOTRlMjEyMGY2YTM5NTg2YzE1Y2I4MWJk MCIKKyAgaW50ZWdyaXR5IHNoYTUxMi12OEt4eSs3TDkwWkZTTTY5MG9KV0JOUnpaV1pPUXF1WVBw UXQ2a0RRUHpReVpwdFhnT0o2OWtIU2k3eGRxTmRtMW1PZnNEUHdGNEs5Qm8vZFM1Z1JUUT09CiAg IGRlcGVuZGVuY2llczoKLSAgICBkb21oYW5kbGVyICI0LjIuMCIKLSAgICBodG1sLWRvbS1wYXJz ZXIgIjEuMC4xIgotICAgIHJlYWN0LXByb3BlcnR5ICIxLjAuMSIKKyAgICBkb21oYW5kbGVyICI0 LjIuMiIKKyAgICBodG1sLWRvbS1wYXJzZXIgIjEuMC4yIgorICAgIHJlYWN0LXByb3BlcnR5ICIy LjAuMCIKICAgICBzdHlsZS10by1qcyAiMS4xLjAiCiAKIGh0bWwyY2FudmFzQF4xLjAuMC1yYy43 OgotICB2ZXJzaW9uICIxLjAuMC1yYy43IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9odG1sMmNhbnZhcy8tL2h0bWwyY2FudmFzLTEuMC4wLXJjLjcudGd6IzcwYzE1 OWNlMGU2Mzk1NGE5MTE2OTUzMTg5NGQwOGFkNTYyN2FjOTgiCi0gIGludGVncml0eSBzaGE1MTIt eXZQTlpHZWpCMktPeUtsZVpzcGpLL05ydVhWUXVvd3U4Tm5WMkhZRzdnVzd5dHpsK3VtZmZidFVJ NjJ2MmRDSFFMRGRzSzZISUR0eUpaMFczbmVlckE9PQorICB2ZXJzaW9uICIxLjMuMiIKKyAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaHRtbDJjYW52YXMvLS9odG1sMmNh bnZhcy0xLjMuMi50Z3ojOTUxY2M4Mzg4YTNjZTkzOWZkYWMwMjEzMTAwN2VlMjgxMjRhZmMyNyIK KyAgaW50ZWdyaXR5IHNoYTUxMi00K3pxdjg3L2ExTHNhQ3JJTlY2OXdWTEdHOEdCWmNZQmJvejFK UFdFZ2lYY1dvRDlrcm9MemNjc0JSVS9MOVVsZlYyTUFaKzNKOTJVOUlRUFZNRGVTUT09CiAgIGRl cGVuZGVuY2llczoKLSAgICBjc3MtbGluZS1icmVhayAiMS4xLjEiCisgICAgY3NzLWxpbmUtYnJl YWsgIjIuMC4xIgorICAgIHRleHQtc2VnbWVudGF0aW9uICJeMS4wLjIiCiAKIGh0bWxlc2NhcGVA XjEuMS4wOgogICB2ZXJzaW9uICIxLjEuMSIKQEAgLTYyNDIsOSArNTkwNyw5IEBAIGlnbm9yZUBe NC4wLjY6CiAgIGludGVncml0eSBzaGE1MTItY3lGREtycWMvWWRjV0ZuaUpoekk0MitBelMrZ053 bVV6T1NGY1JDUVl3eVN1QkJCeS9LanV4V0xaL0ZIRUg2TW9xMU5pek1PQld5VGN2OE80T1pJTWc9 PQogCiBpZ25vcmVAXjUuMS4xLCBpZ25vcmVAXjUuMS40OgotICB2ZXJzaW9uICI1LjEuOCIKLSAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaWdub3JlLy0vaWdub3JlLTUu MS44LnRneiNmMTUwYThiNTBhMzQyODliMzNlMjJmNTg4OWFiZDRkODAxNmYwZTU3IgotICBpbnRl Z3JpdHkgc2hhNTEyLUJNcGZEN1BwaUVUcEJsL0E2UzQ5OEJhSUo2WS9BQlQ5M0VUYmJ5MmZQMDB2 NEVidlBCWFdFb2FSMVVCUEtzM2lSNTNwSlk3RXRaazVLQUNJNTdpMVV3PT0KKyAgdmVyc2lvbiAi NS4xLjkiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lnbm9yZS8t L2lnbm9yZS01LjEuOS50Z3ojOWVjMWE1Y2JlOGUxNDQ2ZWM2MGQ0NDIwMDYwZDQzYWE2ZTczODJm YiIKKyAgaW50ZWdyaXR5IHNoYTUxMi0yemVNUXBiS3o1ZGhaOUl3TDBnYnhTVzV3ME5LL01TQU10 TnVoZ0lIRVBtYVUzdlBkS1BMMFVkdlVDWHM1U1M0SkF3c0J4eXNLNXNGTVc4b2NGaVZqUT09CiAK IGltYWdlLW1pbmltaXplci13ZWJwYWNrLXBsdWdpbkBeMi4yLjA6CiAgIHZlcnNpb24gIjIuMi4w IgpAQCAtNjMyNiw5ICs1OTkxLDkgQEAgaW1wb3J0LWxhenlAXjMuMS4wOgogICBpbnRlZ3JpdHkg c2hhNTEyLTgvZ3ZYdlgySk1uMEYrQ0RsU0M0bDZrT21WYUxPTzNYTGtrc0k3Q0kzVWQ5NUtEWUp1 WXVyMmI5UC9QVXQvaS9wREFNZC9EdWxRc05iYmJtUlJzRElRPT0KIAogaW1wb3J0LWxvY2FsQF4z LjAuMjoKLSAgdmVyc2lvbiAiMy4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL2ltcG9ydC1sb2NhbC8tL2ltcG9ydC1sb2NhbC0zLjAuMi50Z3ojYThjZmQwNDMx ZDFkZTRhMjE5OTcwM2QwMDNlM2U2MjM2NGZhNmRiNiIKLSAgaW50ZWdyaXR5IHNoYTUxMi12akwz K3cwb3VsQVZaMGhCSG54YS9ObTVUQXVyZjlZTFFKRGhxUlp5cWIrVktHT0I2TFU4dDlIMU5yNUNJ bzE2dmg5WGZKVE9vSHdVMEI3MVM1NTdnQT09CisgIHZlcnNpb24gIjMuMC4zIgorICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pbXBvcnQtbG9jYWwvLS9pbXBvcnQtbG9j YWwtMy4wLjMudGd6IzRkNTFjMmM0OTVjYTkzOTNkYTI1OWVjNjZiNjJlMDIyOTIwMjExZTAiCisg IGludGVncml0eSBzaGE1MTItYkU5aWFVWTNDWEg4Q3dmYW4vYWJES0F4ZTFLR1Q5a3lHc0JQcWY2 RE1LL3owYTJPekFzcnVrZVlOZ0lINmNINVhyNDUyamIxVFVMOHJTZkNMalo5dUE9PQogICBkZXBl bmRlbmNpZXM6CiAgICAgcGtnLWRpciAiXjQuMi4wIgogICAgIHJlc29sdmUtY3dkICJeMy4wLjAi CkBAIC02MzQ3LDEzICs2MDEyLDYgQEAgaW11cm11cmhhc2hAXjAuMS40OgogICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pbXVybXVyaGFzaC8tL2ltdXJtdXJoYXNoLTAu MS40LnRneiM5MjE4YjliMmI5MjhhMjM4YjEzZGM0ZmI2YjZkNTc2ZjIzMTQ1M2VhIgogICBpbnRl Z3JpdHkgc2hhMS1raGk1c3Jrb29qaXhQY1Q3YTIxWGJ5TVVVK289CiAKLWluZGVmaW5pdGUtb2Jz ZXJ2YWJsZUBeMi4wLjE6Ci0gIHZlcnNpb24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9pbmRlZmluaXRlLW9ic2VydmFibGUvLS9pbmRlZmluaXRlLW9i c2VydmFibGUtMi4wLjEudGd6IzU3NGFmMjliZmJjMTdlYjU5NDc3OTM3OTdiZGRjOTRjOWQ4NTk0 MDAiCi0gIGludGVncml0eSBzaGE1MTItRzh2Z21vcmsrNkg5UzhsVUFnMWd0WEVqMkp4SVFUbzBn MlBiRmlZT2Rqa3ppU0kwRjdVWUJpVndoWlJ1aXhoQkNOR2N6QWxzMzQrNUhKUHlaeXN2eFE9PQot ICBkZXBlbmRlbmNpZXM6Ci0gICAgc3ltYm9sLW9ic2VydmFibGUgIjEuMi4wIgotCiBpbmRlbnQt c3RyaW5nQF40LjAuMDoKICAgdmVyc2lvbiAiNC4wLjAiCiAgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL2luZGVudC1zdHJpbmcvLS9pbmRlbnQtc3RyaW5nLTQuMC4wLnRn eiM2MjRmOGY0NDk3ZDYxOWIyZDk3Njg1MzFkNThmNDEyMjg1NGQ3MjUxIgpAQCAtNjQ3MywxNiAr NjEzMSwxNyBAQCBpcy1hYnNvbHV0ZS11cmxAXjMuMC4zOgogICBpbnRlZ3JpdHkgc2hhNTEyLW9w bU5JWDd1Rm5TOTZOdFBtaFdRZ1F4Ni9OWUZnc1VYWU1sbGNmendXS1VNd2ZvOGtrdTFUdkU2aGtO Y0grUTF0czVjTVZyc1k3ajBieFhRRGNpdTlRPT0KIAogaXMtYW55LWFycmF5QF4xLjAuMDoKLSAg dmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L2lzLWFueS1hcnJheS8tL2lzLWFueS1hcnJheS0xLjAuMC50Z3ojYmNiMmM3ZTJkMjhhYWEyZmEw MmVlOGY2YjYwNGIwYjNhOTU3YmJhNyIKLSAgaW50ZWdyaXR5IHNoYTUxMi0wbzBac2dPYm55bHY3 Mm5PMzlQNk0rUEw3alBVRXgzOU82QkVmWnVYMzZJS1B5L1JwZHVkeGx1QUlhUm4vTFppNWVWUERN bE1CYUxBQnpPSzZid1Bsdz09CisgIHZlcnNpb24gIjEuMC4xIgorICByZXNvbHZlZCAiaHR0cHM6 Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1hbnktYXJyYXkvLS9pcy1hbnktYXJyYXktMS4wLjEu dGd6IzA1ZmVkZWMxYTRkY2VkMTg1NGJkMjc5YjJlYzVkZjQzMWU1YmVhOWUiCisgIGludGVncml0 eSBzaGE1MTItbStGU2lhT054QnQyVzBoOVhPVW5nTUJ1L1dXOHV6QUtiU2s0VHkyYWVDY1FKK211 QnFFTmV4dnhVSHREcFg2NWZrNUFNQ1JPeHFnTlgwc1NBSHN0Y3c9PQogCiBpcy1hcmd1bWVudHNA XjEuMC40OgotICB2ZXJzaW9uICIxLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vaXMtYXJndW1lbnRzLy0vaXMtYXJndW1lbnRzLTEuMS4wLnRneiM2MjM1MzAz MWRmYmVlMDdjZWIzNDY1NmE2YmRlNTllZmVjYWU4ZGQ5IgotICBpbnRlZ3JpdHkgc2hhNTEyLTFJ ajRsT01QbC94QjVrQkRuN0krYjJ0dFBNS2E4c3poRUlyWER1WFFEL29lM0hKTFRMaHFoZ0dzcHdn eUdkNk1PeXdCVXFWdllpY0Y3MmxrZ0RuSUhnPT0KKyAgdmVyc2lvbiAiMS4xLjEiCisgIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWFyZ3VtZW50cy8tL2lzLWFyZ3Vt ZW50cy0xLjEuMS50Z3ojMTViM2Y4OGZkYTAxZjJhOTdmZWM4NGNhNzYxYTU2MGYxMjNlZmE5YiIK KyAgaW50ZWdyaXR5IHNoYTUxMi04UTdFQVJqekVuS3B0L1BDRDdlMWNnVVMwYTZYOHU1dGRTaU1x WGhvak9kb1Y5VHNNc2lPKzlWTEM1dkFtTzhONy9HbVhuN3lqUjhxbkE2YlZBRXpmQT09CiAgIGRl cGVuZGVuY2llczoKLSAgICBjYWxsLWJpbmQgIl4xLjAuMCIKKyAgICBjYWxsLWJpbmQgIl4xLjAu MiIKKyAgICBoYXMtdG9zdHJpbmd0YWcgIl4xLjAuMCIKIAogaXMtYXJyYXlpc2hAXjAuMi4xOgog ICB2ZXJzaW9uICIwLjIuMSIKQEAgLTY0OTAsOSArNjE0OSwxMSBAQCBpcy1hcnJheWlzaEBeMC4y LjE6CiAgIGludGVncml0eSBzaGExLWQ4bVlRRko2cU95eHFMcHBlNEJrV25xU2FwMD0KIAogaXMt YmlnaW50QF4xLjAuMToKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWJpZ2ludC8tL2lzLWJpZ2ludC0xLjAuMS50Z3ojNjkyMzA1 MWRmY2JjNzY0Mjc4NTQwYjljZTBlNmIzMjEzYWE1ZWJjMiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1K MEVMRjR5SEZ4SHkwY21TeFp1aGVET3oybHVPZFZ2cWp3bUVjajhIL0wxSkhldUVEU0RiZVJQK0Rr OWtGVms1UlRGemJ1Y0oyS2I5RjdpeFkyUWFDZz09CisgIHZlcnNpb24gIjEuMC40IgorICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1iaWdpbnQvLS9pcy1iaWdpbnQt MS4wLjQudGd6IzA4MTQ3YTE4NzViYzJiMzIwMDVkNDFjY2Q4MjkxZGZmYzY2OTFkZjMiCisgIGlu dGVncml0eSBzaGE1MTItekI5Q3J1TWFtanltODFpMkpaM1VNbjU0UEtHc1F6c0plbzZ4dk4zSEpK NENBc1FOQjZpUnV0cDJUbzc3T2ZDTnVveHNwc0loemFQb08xenlDRWhGT2c9PQorICBkZXBlbmRl bmNpZXM6CisgICAgaGFzLWJpZ2ludHMgIl4xLjAuMSIKIAogaXMtYmluYXJ5LXBhdGhAfjIuMS4w OgogICB2ZXJzaW9uICIyLjEuMCIKQEAgLTY1MDEsNTEgKzYxNjIsNDcgQEAgaXMtYmluYXJ5LXBh dGhAfjIuMS4wOgogICBkZXBlbmRlbmNpZXM6CiAgICAgYmluYXJ5LWV4dGVuc2lvbnMgIl4yLjAu MCIKIAoraXMtYmxvYkBeMi4xLjA6CisgIHZlcnNpb24gIjIuMS4wIgorICByZXNvbHZlZCAiaHR0 cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1ibG9iLy0vaXMtYmxvYi0yLjEuMC50Z3ojZTM2 Y2Q4MmM5MDY1M2YxZTFiOTMwZjExYmFmOWM2NDIxNmEwNTM4NSIKKyAgaW50ZWdyaXR5IHNoYTUx Mi1TWi9mVGZ0NWVVaFFNNm9GL1phQVNGREVkYkZWZTg5SW1sdG45dVpyMDN3ZEtNY1dOVllTTWpR UEZ0ZzA1UXVOa3Q1bDVjMTM1RWx2WEVRRzByazR0dz09CisKIGlzLWJvb2xlYW4tb2JqZWN0QF4x LjAuMSwgaXMtYm9vbGVhbi1vYmplY3RAXjEuMS4wOgotICB2ZXJzaW9uICIxLjEuMCIKLSAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtYm9vbGVhbi1vYmplY3QvLS9p cy1ib29sZWFuLW9iamVjdC0xLjEuMC50Z3ojZTJhYWFkM2EzYThmY2EzNGMyOGY2ZWVlMTM1YjE1 NmVkMjU4N2ZmMCIKLSAgaW50ZWdyaXR5IHNoYTUxMi1hN1Vwcng4VXREK0hXZHlZd25EMStFeHRU Z3FRdEQyay8xeUpndFhQNnduTW04Ynloa29UWlJsKzk1TExUaHB6TlpKNWFFdmk0NmNkSCtheU1G UndtQT09CisgIHZlcnNpb24gIjEuMS4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9pcy1ib29sZWFuLW9iamVjdC8tL2lzLWJvb2xlYW4tb2JqZWN0LTEuMS4yLnRn eiM1YzZkYzIwMDI0NmRkOTMyMWFlNGI4ODVhMTE0YmIxZjc1ZjYzNzE5IgorICBpbnRlZ3JpdHkg c2hhNTEyLWdEWWFLSEptbmo0YVd4eWo2WUh5WFZwZFFhd3RWTEhVNWNiK2V6dFBHY3pmNmNqdVRk d3ZlNVpJRWZnWHFINGU1N0FuMUQxQUtmOENaM2tZclFScVlBPT0KICAgZGVwZW5kZW5jaWVzOgot ICAgIGNhbGwtYmluZCAiXjEuMC4wIgorICAgIGNhbGwtYmluZCAiXjEuMC4yIgorICAgIGhhcy10 b3N0cmluZ3RhZyAiXjEuMC4wIgogCiBpcy1idWZmZXJAXjEuMS4wOgogICB2ZXJzaW9uICIxLjEu NiIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtYnVmZmVyLy0v aXMtYnVmZmVyLTEuMS42LnRneiNlZmFhMmVhOWRhYTBkN2FiMmVhMTNhOTdiMmI4YWQ1MWZlZmJl OGJlIgogICBpbnRlZ3JpdHkgc2hhNTEyLU5jZEFMd3BYa1RtNVp2dmJrN293T1VTdlZ2QktEZ0tQ NS9ld2ZYRXpubVFGZnM0WlJtYW5PZUtCVGpSVmprYTNRRm9ONlhKKzlGM1VTcWZIcVRhVTV3PT0K IAotaXMtYnVmZmVyQF4yLjAuMzoKK2lzLWJ1ZmZlckBeMi4wLjU6CiAgIHZlcnNpb24gIjIuMC41 IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1idWZmZXIvLS9p cy1idWZmZXItMi4wLjUudGd6I2ViYzI1MmU0MDBkMjJmZjhkNzdmYTA5ODg4ODIxYTI0YTY1OGMx OTEiCiAgIGludGVncml0eSBzaGE1MTItaTJSNnpORkR3Z0VISnlRVXRKRWswWEZpMWkwZFBGbi9v cWpLMy92UENjRGVKdlc1TlE4M1Y4UWJpY2ZGMVN1cE9hQjBoOG50Z0JDMllpRTdkZnljdFE9PQog Ci1pcy1jYWxsYWJsZUBeMS4xLjQsIGlzLWNhbGxhYmxlQF4xLjEuNSwgaXMtY2FsbGFibGVAXjEu Mi4zOgotICB2ZXJzaW9uICIxLjIuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vaXMtY2FsbGFibGUvLS9pcy1jYWxsYWJsZS0xLjIuMy50Z3ojOGIxZTA1MDBiNzNh MWQ3NmM3MDQ4NzYzNmYzNjhlNTE5ZGU4ZGI4ZSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1KMURjTWU4 VVlUQlNyS2V6dUlVVFV3alhzaG8yOTY5M3VuWE0yWWhKVVRSMnR4Sy9lRzQ3YnZOYS93aXBQRm1a RmdyL042ZjFHQTY2ZHYwbUV5VEl5UT09Ci0KLWlzLWNvbG9yLXN0b3BAXjEuMS4wOgotICB2ZXJz aW9uICIxLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMt Y29sb3Itc3RvcC8tL2lzLWNvbG9yLXN0b3AtMS4xLjAudGd6I2NmZmY0NzFhZWU0ZGQ1YzllMTU4 NTk4ZmJlMTI5NjdiNWNkYWQzNDUiCi0gIGludGVncml0eSBzaGExLXovOUhHdTVOMWNuaFdGbVB2 aEtXZTF6YTAwVT0KLSAgZGVwZW5kZW5jaWVzOgotICAgIGNzcy1jb2xvci1uYW1lcyAiXjAuMC40 IgotICAgIGhleC1jb2xvci1yZWdleCAiXjEuMS4wIgotICAgIGhzbC1yZWdleCAiXjEuMC4wIgot ICAgIGhzbGEtcmVnZXggIl4xLjAuMCIKLSAgICByZ2ItcmVnZXggIl4xLjAuMSIKLSAgICByZ2Jh LXJlZ2V4ICJeMS4wLjAiCitpcy1jYWxsYWJsZUBeMS4xLjQsIGlzLWNhbGxhYmxlQF4xLjEuNSwg aXMtY2FsbGFibGVAXjEuMi40OgorICB2ZXJzaW9uICIxLjIuNCIKKyAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtY2FsbGFibGUvLS9pcy1jYWxsYWJsZS0xLjIuNC50 Z3ojNDczMDFkNThkZDAyNTk0MDc4NjU1NDc4NTNkZjZkNjFmZTQ3MTk0NSIKKyAgaW50ZWdyaXR5 IHNoYTUxMi1uc3V3dHhaZk1YNjdPcnlsOUxDUSt1cG5DMFowQmdwd250cFM4OW0xSC9UTEYwek5m emZMTVYvOVdhLzZNWnNqMGFjcEVqQU8wS0YxeFQ2WmRMbDk1dz09CiAKIGlzLWNvcmUtbW9kdWxl QF4yLjIuMDoKLSAgdmVyc2lvbiAiMi4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL2lzLWNvcmUtbW9kdWxlLy0vaXMtY29yZS1tb2R1bGUtMi4yLjAudGd6Izk3 MDM3ZWYzZDUyMjI0ZDg1MTYzZjU1OTdiMmI2M2Q5YWZlZDk4MWEiCi0gIGludGVncml0eSBzaGE1 MTItWFJBZkFkeXlZNUY1Y09YbjdoWVFEcWgyWG1paStERWZJY1FHeEsvdU53TUhoSWtQV08wZzht c1hjYnpMZStNcEdvUjk1MU1scU0vMmlJbFU0dktEZFE9PQorICB2ZXJzaW9uICIyLjguMCIKKyAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtY29yZS1tb2R1bGUvLS9p cy1jb3JlLW1vZHVsZS0yLjguMC50Z3ojMDMyMTMzNmMzZDA5MjVlNDk3ZmQ5N2Y1ZDk1Y2IxMTRh NWNjZDU0OCIKKyAgaW50ZWdyaXR5IHNoYTUxMi12ZDE1cUhzYXFyUkw3ZHRINlFOdXkwbmRKbVJE clM5SEFNMUNBaVNpZk5VRnY0eDFhMENDVnNqMThoSjFtU2h4SUc2VDJpMXNPNzhNa1A1NnIwbllS dz09CiAgIGRlcGVuZGVuY2llczoKICAgICBoYXMgIl4xLjAuMyIKIAogaXMtZGF0ZS1vYmplY3RA XjEuMC4xOgotICB2ZXJzaW9uICIxLjAuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vaXMtZGF0ZS1vYmplY3QvLS9pcy1kYXRlLW9iamVjdC0xLjAuNC50Z3ojNTUw Y2ZjYzAzYWZhZGEwNWVlYTNkZDMwOTgxYzdiMDk1NTFmNzNlNSIKLSAgaW50ZWdyaXR5IHNoYTUx Mi0vYjRaVnNHN1o1WFZ0SXhzL2g5VzhudmZMZ1NBeUtZZHRHV1FMYnF5NmpBMWljbWdqZjhXQ29U S2dlUzR3eTV0WWFQZVBvdXpGTUFOYm5qOTRjMlorQT09CisgIHZlcnNpb24gIjEuMC41IgorICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1kYXRlLW9iamVjdC8tL2lz LWRhdGUtb2JqZWN0LTEuMC41LnRneiMwODQxZDU1MzZlNzI0YzI1NTk3YmY2ZWE2MmUxYmQzODI5 OGRmMzFmIgorICBpbnRlZ3JpdHkgc2hhNTEyLTlZUWFTeHNBaVN3Y3ZTMzNNQmszd1RDVm5XSytI aEY4VlpSMmpSeGVoTTE2UWNWT2RIcVBuNFZQSG1SSzRsU3IzOG45SnJpdXJJbkxjUDkweHNZTmZR PT0KKyAgZGVwZW5kZW5jaWVzOgorICAgIGhhcy10b3N0cmluZ3RhZyAiXjEuMC4wIgogCiBpcy1k b2NrZXJAXjIuMS4xOgogICB2ZXJzaW9uICIyLjIuMSIKQEAgLTY1NzUsMTQgKzYyMzIsMTYgQEAg aXMtZnVsbHdpZHRoLWNvZGUtcG9pbnRAXjMuMC4wOgogICBpbnRlZ3JpdHkgc2hhNTEyLXp5bW01 K3Urc0NzU1d5RDlxTmFlalYzREZ2aENLY2xLZGl6WWFKVXVIQTgzUkxqYjduU3VHbmRkQ0hHdjBo aytLWTdCTUFsc1dlSzRVZWc2RVY2WFFnPT0KIAogaXMtZ2VuZXJhdG9yLWZ1bmN0aW9uQF4xLjAu NzoKLSAgdmVyc2lvbiAiMS4wLjkiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL2lzLWdlbmVyYXRvci1mdW5jdGlvbi8tL2lzLWdlbmVyYXRvci1mdW5jdGlvbi0xLjAu OS50Z3ojZTVmODJjMjMyMzY3M2U3ZmNhZDNkMTI4NThjODNjNDAzOWY2Mzk5YyIKLSAgaW50ZWdy aXR5IHNoYTUxMi1aSjM0cDF1dklmcHRIQ043c0ZUakdpYkI5L29CZzE3c0hxekRMZnV3aHZtTi9x TFZ2SVFYUlE4bGljWlEzNVdKOEt1RVF0L2V0bm56UUZJOUM5VWUvQT09CisgIHZlcnNpb24gIjEu MC4xMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtZ2VuZXJh dG9yLWZ1bmN0aW9uLy0vaXMtZ2VuZXJhdG9yLWZ1bmN0aW9uLTEuMC4xMC50Z3ojZjE1NThiYWYx YWMxN2UwZGVlYTdjMDQxNWM0MzgzNTFmZjJiM2M3MiIKKyAgaW50ZWdyaXR5IHNoYTUxMi1qc0Vq eTlsM3lpWEVRK1BzWGRtQndFUGNPeGFYV0xzcEtkcGxGVVZJOXZxMWlaZ0lla2VDMEwxNjdxZXU4 NmN6UWF4ZWQzcS9VenV3MHN3TDBpckw4QT09CisgIGRlcGVuZGVuY2llczoKKyAgICBoYXMtdG9z dHJpbmd0YWcgIl4xLjAuMCIKIAogaXMtZ2xvYkBeNC4wLjAsIGlzLWdsb2JAXjQuMC4xLCBpcy1n bG9iQH40LjAuMToKLSAgdmVyc2lvbiAiNC4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL2lzLWdsb2IvLS9pcy1nbG9iLTQuMC4xLnRneiM3NTY3ZGJlOWYyZjVl MjQ2N2JjNzdhYjgzYzRhMjk0ODI0MDdhNWRjIgotICBpbnRlZ3JpdHkgc2hhNTEyLTVHMHRLdEJU RkltT3FEbkxCMmhHNkJwMnFjS0VGZHVvNHRadTlNVC9INk5Rdi9naGh5MzBvNTV1ZmFmeEovTGRI NzlMTHMyS2Zybjg1VExLeUE3QlVnPT0KKyAgdmVyc2lvbiAiNC4wLjMiCisgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWdsb2IvLS9pcy1nbG9iLTQuMC4zLnRneiM2 NGY2MWU0MmNiYmIyZWVjMjA3MWE5ZGFjMGIyOGJhMWU2NWQ1MDg0IgorICBpbnRlZ3JpdHkgc2hh NTEyLXhlbFNheUhIMzZaZ0U3WldobGk3cFczNGhOYk5sOE9qdjVLVm1rSkQ0aEJkRDN0aDhUZms5 dllhc0xNK21YV09aaEZrZ1pmeGhMU25yd1JyNGVsU1NnPT0KICAgZGVwZW5kZW5jaWVzOgogICAg IGlzLWV4dGdsb2IgIl4yLjEuMSIKIApAQCAtNjYxMiw5ICs2MjcxLDExIEBAIGlzLW5lZ2F0aXZl LXplcm9AXjIuMC4xOgogICBpbnRlZ3JpdHkgc2hhNTEyLTJ6Nkp6UXZaUmE5QTJZN3hDNmRRUW00 RlNUU1ROV2pLSVlZVHQ0MjQ2ZU1USm1JbzBRK1p5T3NVNjZYOGx4SzFBYkI5MmRGZWdsUExyaHdw ZVJLTzZ3PT0KIAogaXMtbnVtYmVyLW9iamVjdEBeMS4wLjQ6Ci0gIHZlcnNpb24gIjEuMC41Igot ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1udW1iZXItb2JqZWN0 Ly0vaXMtbnVtYmVyLW9iamVjdC0xLjAuNS50Z3ojNmVkZmFlZWQ3OTUwY2ZmMTlhZmVkY2U5ZmJm Y2E5ZWU2ZGQyODllYiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1SVTBsSS9uOTVwTW9VS3U5djFCWlA1 TUJjWnVOU1ZKa01rQUcyZEpxQzR6Mkdsa0dVTmVINjhTdUh1QktCRC9YRmUrTEhaK2Y5QktrTEVU NjBOaWVkdz09CisgIHZlcnNpb24gIjEuMC42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9pcy1udW1iZXItb2JqZWN0Ly0vaXMtbnVtYmVyLW9iamVjdC0xLjAuNi50 Z3ojNmE3YWFmODM4YzdmMDY4NmE1MGI0NTUzZjdlNTRhOTY0OTRlODlmMCIKKyAgaW50ZWdyaXR5 IHNoYTUxMi1iRVZPcWlSY3ZvM3pPMStHMmxWTXkrZ2trRW05WWg3Y0RNUnVzS0t1NVpKS1BVWVNK d0lDVEtack5LSEEyRWJTUDBUdTArNkIvZW1zWU5IWnluNks4Zz09CisgIGRlcGVuZGVuY2llczoK KyAgICBoYXMtdG9zdHJpbmd0YWcgIl4xLjAuMCIKIAogaXMtbnVtYmVyQF43LjAuMDoKICAgdmVy c2lvbiAiNy4wLjAiCkBAIC02NjQzLDEzICs2MzA0LDEzIEBAIGlzLXBuZ0BeMi4wLjA6CiAgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXBuZy8tL2lzLXBuZy0yLjAu MC50Z3ojZWU4Y2JjOWU5YjA1MDQyNWNlZGVlYjRhNmZiNzRhNjQ5YjBhNGE4ZCIKICAgaW50ZWdy aXR5IHNoYTUxMi00S1BHaXphVkdqMkxLN3h3Skl6OG81QjJ1YnUxRC92Y1FzZ09HRkVEbHBjdmda SHRvNGdCbnlkMGlnN1dzKzY3aXhtd0tvTm11MGhZbnBvNkFhS2I1Zz09CiAKLWlzLXJlZ2V4QF4x LjAuNSwgaXMtcmVnZXhAXjEuMS4wLCBpcy1yZWdleEBeMS4xLjM6Ci0gIHZlcnNpb24gIjEuMS4z IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1yZWdleC8tL2lz LXJlZ2V4LTEuMS4zLnRneiNkMDI5ZjlhZmY2NDQ4YjkzZWJiZTNmMzNkYWM3MTUxMWZkY2JlZjlm IgotICBpbnRlZ3JpdHkgc2hhNTEyLXFTVlhGejI4SE03eStJV1g2dkxDc2V4ZGx2elQxUEpORlNC dWFRTFE1bzBJRXc4VURZVzYvMitlQ01WeUlzYk04Q05MWDJhL1FXbVNweXhZRUhZN0NRPT0KK2lz LXJlZ2V4QF4xLjAuNSwgaXMtcmVnZXhAXjEuMS4wLCBpcy1yZWdleEBeMS4xLjQ6CisgIHZlcnNp b24gIjEuMS40IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1y ZWdleC8tL2lzLXJlZ2V4LTEuMS40LnRneiNlZWY1NjYzY2Q1OWZhNGMwYWUzMzk1MDUzMjNkZjY4 NTRiYjE1OTU4IgorICBpbnRlZ3JpdHkgc2hhNTEyLWt2UmR4RHN4WmpoelVYMDdabkx5ZHpTMVRV L1RKbFRVSEhZNFlMTDg3ZTM3b1VBNDlEZmtMcWd5K1ZqRm9jb3d5MjljS3ZjU2l1K2tJdjcyOGpU VFZnPT0KICAgZGVwZW5kZW5jaWVzOgogICAgIGNhbGwtYmluZCAiXjEuMC4yIgotICAgIGhhcy1z eW1ib2xzICJeMS4wLjIiCisgICAgaGFzLXRvc3RyaW5ndGFnICJeMS4wLjAiCiAKIGlzLXJlbGF0 aXZlQF4xLjAuMDoKICAgdmVyc2lvbiAiMS4wLjAiCkBAIC02NjY4LDIwICs2MzI5LDI3IEBAIGlz LXJldHJ5LWFsbG93ZWRAXjEuMC4wLCBpcy1yZXRyeS1hbGxvd2VkQF4xLjEuMDoKICAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtcmV0cnktYWxsb3dlZC8tL2lzLXJl dHJ5LWFsbG93ZWQtMS4yLjAudGd6I2Q3Nzg0ODhiZDBhNDY2NmEzYmU4YTE0ODJiOWYyYmFhZmVk ZWE4YjQiCiAgIGludGVncml0eSBzaGE1MTItUlViVWVLd3ZtM1hHMlZZYW1oSkwxeEZrdGdqdlB6 TDBIcThDKzZ5cldJc3dEeTNCSVhHcUN4aHhrYzMwTjlqcUszMTFnVlUxMzdLOEVpNTUvelZKUmc9 PQogCitpcy1zaGFyZWQtYXJyYXktYnVmZmVyQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjEiCisg IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXNoYXJlZC1hcnJheS1i dWZmZXIvLS9pcy1zaGFyZWQtYXJyYXktYnVmZmVyLTEuMC4xLnRneiM5N2IwYzg1ZmJkYWNiNTlj OWM0NDZmZTY1M2I4MmNmMmI1YjdjZmU2IgorICBpbnRlZ3JpdHkgc2hhNTEyLUlVME5teWtuWVpO MHJDaGNLaFJPMVg4TFl6NUlzai9Gc3FoOE5KT1NmK04vaENPVHd5MjlGMzJJazdhK1FzekU2M0lk dm13ZFRQRGQ2Y1o1cGc0Y3dBPT0KKwogaXMtc3RyZWFtQF4xLjAuMCwgaXMtc3RyZWFtQF4xLjEu MDoKICAgdmVyc2lvbiAiMS4xLjAiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL2lzLXN0cmVhbS8tL2lzLXN0cmVhbS0xLjEuMC50Z3ojMTJkNGEzZGQ0ZTY4ZTBiNzlj ZWI4ZGJjODQxNzNhZTgwZDkxY2E0NCIKICAgaW50ZWdyaXR5IHNoYTEtRXRTajNVNW80TGVjNjQy OGhCYzY2QTJSeWtRPQogCiBpcy1zdHJlYW1AXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtc3RyZWFtLy0vaXMtc3Ry ZWFtLTIuMC4wLnRneiNiZGU5YzMyNjgwZDZmYWUwNDEyOWQ2YWM5ZDkyMWNlNzgxNWY3OGUzIgot ICBpbnRlZ3JpdHkgc2hhNTEyLVhDb3krV2xVcjdkMStaOEdnU3VYbXB1VUZDOWZPaFJYZ2xKTXgr ZHdMS1RrTDQ0Q2pkNFcxWjVQK0JRWnByK2NSOTNhR1A0Uy9zN0Z0dzZOZC9raUV3PT0KKyAgdmVy c2lvbiAiMi4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz LXN0cmVhbS8tL2lzLXN0cmVhbS0yLjAuMS50Z3ojZmFjMWUzZDUzYjk3YWQ1YTlkMGFlOWNlZjIz ODlmNTgxMGE1YzA3NyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1oRm9pSmlUbDYzbm4ra3N0SEdCdGV3 V1NLblFMcHliMTU1S0hoZUExbDM5dXZ0TzluV0lvcDFwM3VkcVBjVWQveGJGMVZMTU80bjdPSTZw N1JibmdEZz09CiAKLWlzLXN0cmluZ0BeMS4wLjUsIGlzLXN0cmluZ0BeMS4wLjY6Ci0gIHZlcnNp b24gIjEuMC42IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1z dHJpbmcvLS9pcy1zdHJpbmctMS4wLjYudGd6IzNmZTVkNTk5MmZiMGQ5MzQwNGYzMjU4NGQ0YjAx NzlhNzFiNTRhNWYiCi0gIGludGVncml0eSBzaGE1MTItMmdkemJLVXVxdFEzbFlOclVUUVlvQ2xQ aG03b1F1NFVkcFNaTXAxL0RHZ2tIQlQ4RTJaMWwweU1kYjZENHpOQXh3RGlNdjhNZHVsS1JPSkdO bDBRMHc9PQoraXMtc3RyaW5nQF4xLjAuNSwgaXMtc3RyaW5nQF4xLjAuNzoKKyAgdmVyc2lvbiAi MS4wLjciCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXN0cmlu Zy8tL2lzLXN0cmluZy0xLjAuNy50Z3ojMGRkMTJiZjIwMDZmMjU1YmI1OGY2OTUxMTBlZmY3NDkx ZWViYzBmZCIKKyAgaW50ZWdyaXR5IHNoYTUxMi10RTJVWHppdmplNm9mUFc3bDIzY2pET01hMDln Yjd4bEFxRzZqRzVlajZ1UFYzMlRsV1AzTktQaWd0YUdlSE51OWZvaGNjUll2SWlaTWZPT25PWVV0 Zz09CisgIGRlcGVuZGVuY2llczoKKyAgICBoYXMtdG9zdHJpbmd0YWcgIl4xLjAuMCIKIAogaXMt c3Vic2V0QF4wLjEuMToKICAgdmVyc2lvbiAiMC4xLjEiCkBAIC02Njk2LDIyICs2MzY0LDIyIEBA IGlzLXN2Z0BeNC4yLjE6CiAgICAgZmFzdC14bWwtcGFyc2VyICJeMy4xOS4wIgogCiBpcy1zeW1i b2xAXjEuMC4yLCBpcy1zeW1ib2xAXjEuMC4zOgotICB2ZXJzaW9uICIxLjAuMyIKLSAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtc3ltYm9sLy0vaXMtc3ltYm9sLTEu MC4zLnRneiMzOGUxMDE0YjllNjMyOWJlMGRlOWQyNGE0MTRmZDc0NDFlYzYxOTM3IgotICBpbnRl Z3JpdHkgc2hhNTEyLU93aWpoYVJTZ3F2aG0vMFpkQWNYTlp0OWxZZEtGcGNSRFQ1VUxVdVlYUG9U Nzk0VU5PZFUrZ3BUNlJ6bzdiNFYySFVsL29wNkdxWTg5NEFad3Y5ZmFRPT0KKyAgdmVyc2lvbiAi MS4wLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXN5bWJv bC8tL2lzLXN5bWJvbC0xLjAuNC50Z3ojYTZkYWM5M2I2MzViMDYzY2E2ODcyMjM2ZGU4ODkxMGE1 N2FmMTM5YyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1DL0NQQnFLV252ZGN4cUlBUnh5T2g0djFVVUVP Q0hwZ0RhMFdZZ3BLREZNc3pjclBjZmZnNXVod1NnUENMRDJXV3htcTZpc2lzejg3dHpUMDF0dUdo Zz09CiAgIGRlcGVuZGVuY2llczoKLSAgICBoYXMtc3ltYm9scyAiXjEuMC4xIgorICAgIGhhcy1z eW1ib2xzICJeMS4wLjIiCiAKLWlzLXR5cGVkLWFycmF5QF4xLjEuMzoKLSAgdmVyc2lvbiAiMS4x LjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXR5cGVkLWFy cmF5Ly0vaXMtdHlwZWQtYXJyYXktMS4xLjUudGd6I2YzMmU2ZTA5NjQ1NWUzMjllYjdiNDIzODYy NDU2YWEyMTNmMGViNGUiCi0gIGludGVncml0eSBzaGE1MTItUytHUkRnSmxSM1B5RWJzWC9Gb2Jk OWNxcFpCdXZVUys4YXNScVlETUxDYjJxTXp0MW96NW01b3hRQ3hPZ1VEeGlXc09WTmk0eWFGKy91 dmRsSGxZdWc9PQoraXMtdHlwZWQtYXJyYXlAXjEuMS4zLCBpcy10eXBlZC1hcnJheUBeMS4xLjc6 CisgIHZlcnNpb24gIjEuMS44IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn LmNvbS9pcy10eXBlZC1hcnJheS8tL2lzLXR5cGVkLWFycmF5LTEuMS44LnRneiNjYmFhNjU4NWRj N2RiNDMzMThiYzViODk1MjNlYTM4NGE2ZjY1ZTc5IgorICBpbnRlZ3JpdHkgc2hhNTEyLUhxSDQx VE5acTJmZ3RHVDhXSFZGVkpoQlZHdVkzQW5QM1EzNks4SktYVXhTeFJnay9kKzdOam13RzJ2bzJt WW1YSzhVWVpLdTBxSDhiVlA1Z0Vpc2pBPT0KICAgZGVwZW5kZW5jaWVzOgotICAgIGF2YWlsYWJs ZS10eXBlZC1hcnJheXMgIl4xLjAuMiIKKyAgICBhdmFpbGFibGUtdHlwZWQtYXJyYXlzICJeMS4w LjUiCiAgICAgY2FsbC1iaW5kICJeMS4wLjIiCi0gICAgZXMtYWJzdHJhY3QgIl4xLjE4LjAtbmV4 dC4yIgorICAgIGVzLWFic3RyYWN0ICJeMS4xOC41IgogICAgIGZvcmVhY2ggIl4yLjAuNSIKLSAg ICBoYXMtc3ltYm9scyAiXjEuMC4xIgorICAgIGhhcy10b3N0cmluZ3RhZyAiXjEuMC4wIgogCiBp cy11bmMtcGF0aEBeMS4wLjA6CiAgIHZlcnNpb24gIjEuMC4wIgpAQCAtNjcyMCw2ICs2Mzg4LDEz IEBAIGlzLXVuYy1wYXRoQF4xLjAuMDoKICAgZGVwZW5kZW5jaWVzOgogICAgIHVuYy1wYXRoLXJl Z2V4ICJeMC4xLjIiCiAKK2lzLXdlYWtyZWZAXjEuMC4xOgorICB2ZXJzaW9uICIxLjAuMSIKKyAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtd2Vha3JlZi8tL2lzLXdl YWtyZWYtMS4wLjEudGd6Izg0MmRiYTRlYzE3ZmE5YWM5ODUwZGYyZDZlZmJjMTczNzI3NGYyYTIi CisgIGludGVncml0eSBzaGE1MTItYjJqS2MycFFaamFlRllXRWY3U2NGaitCZTFJK1BYbWx1NTcy UThjb1RYWitMRC9RUVo3U2hQTXN0OGgxNnJpVmd5WFRRd1VzRkVsNzRtRHZjLzNNSFE9PQorICBk ZXBlbmRlbmNpZXM6CisgICAgY2FsbC1iaW5kICJeMS4wLjAiCisKIGlzYXJyYXlAMC4wLjE6CiAg IHZlcnNpb24gIjAuMC4xIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9pc2FycmF5Ly0vaXNhcnJheS0wLjAuMS50Z3ojOGExOGFjZmNhOWE4ZjQxNzdlMDlhYmZjNjAz ODkzOWIwNWQxZWVkZiIKQEAgLTY3NjEsOSArNjQzNiw5IEBAIGlzdGFuYnVsLWxpYi1jb3ZlcmFn ZUBeMS4yLjE6CiAgIGludGVncml0eSBzaGE1MTItUHpJVGV1bkFneUdidFkxaWJWSVVpVjY3OUVG Q2hIam9NTlJpYkVJb2J2bXJDUmFJZ3dMeE51Y09TaW10TldVaEVpYi9vTzdRWTJpbUQ3NUpWZ0NK V1E9PQogCiBpc3RhbmJ1bC1saWItY292ZXJhZ2VAXjMuMC4wOgotICB2ZXJzaW9uICIzLjAuMCIK LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXN0YW5idWwtbGliLWNv dmVyYWdlLy0vaXN0YW5idWwtbGliLWNvdmVyYWdlLTMuMC4wLnRneiNmNTk0NGEzN2M3MGI1NTBi MDJhNzhhNWMzYjIwNTViMjgwY2VjOGVjIgotICBpbnRlZ3JpdHkgc2hhNTEyLVVpVUlxeE1nUkRF VDZlUitvNUhiZlJZUDFsMGhxa1dPczd2TnhDL21nZ3V0Q01VSWhXTW04Z0FIYjh0SGx5ZkQzL2w2 cmxnTkE1Y0tkRHpFQWY2aEVnPT0KKyAgdmVyc2lvbiAiMy4yLjAiCisgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzdGFuYnVsLWxpYi1jb3ZlcmFnZS8tL2lzdGFuYnVs LWxpYi1jb3ZlcmFnZS0zLjIuMC50Z3ojMTg5ZTc5MDlkMGEzOWZhNWEzZGZhZDViMDNmNzE5NDc3 NzAxOTFkMyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1lT2VKNUJIQ21IWXZRSzd4dDlHa2RIdXp1Q0dT MVk2ZzlHdm54M1ltMzNmei9IcExSWXhpUzB3SE5yK20vTUJDOEI2NDdYdDYwOHZDREV2aGw5YzZN dz09CiAKIGlzdGFuYnVsLWxpYi1pbnN0cnVtZW50QF4xLjcuMzoKICAgdmVyc2lvbiAiMS4xMC4y IgpAQCAtNjc5OCwxOCArNjQ3MywxOCBAQCBpc3RhbmJ1bC1saWItcmVwb3J0QF4zLjAuMDoKICAg ICBzdXBwb3J0cy1jb2xvciAiXjcuMS4wIgogCiBpc3RhbmJ1bC1saWItc291cmNlLW1hcHNAXjQu MC4wOgotICB2ZXJzaW9uICI0LjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vaXN0YW5idWwtbGliLXNvdXJjZS1tYXBzLy0vaXN0YW5idWwtbGliLXNvdXJjZS1t YXBzLTQuMC4wLnRneiM3NTc0M2NlNmQ5NmJiODZkYzdlZTQzNTJjZjYzNjZhMjNmMGIxYWQ5Igot ICBpbnRlZ3JpdHkgc2hhNTEyLWMxNkxwRlJrUjh2UVh5SFo1bkxwWTM1Slp0emoxUFFZMWlabWVz VWJmMUZaSGJJdXBjV2ZqZ09YQlk5WUhrTEVRNnB1ejF1NERnajZxbVUvRGlzclpnPT0KKyAgdmVy c2lvbiAiNC4wLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz dGFuYnVsLWxpYi1zb3VyY2UtbWFwcy8tL2lzdGFuYnVsLWxpYi1zb3VyY2UtbWFwcy00LjAuMS50 Z3ojODk1ZjNhNzA5ZmNmYmEzNGM2ZGU1YTQyOTM5MDIyZjNlNDM1ODU1MSIKKyAgaW50ZWdyaXR5 IHNoYTUxMi1uM3M4RXdrZEZJSkNHM0JQS0JZdnNrZ1hHb3k4OEFSenZlZ2tpdGs2ME54UmR3bHRM T1RhSDdDVWlNUlh2d1lvcmwwUTcxMmlFamNXQitmSy9NcldWdz09CiAgIGRlcGVuZGVuY2llczoK ICAgICBkZWJ1ZyAiXjQuMS4xIgogICAgIGlzdGFuYnVsLWxpYi1jb3ZlcmFnZSAiXjMuMC4wIgog ICAgIHNvdXJjZS1tYXAgIl4wLjYuMSIKIAogaXN0YW5idWwtcmVwb3J0c0BeMy4wLjA6Ci0gIHZl cnNpb24gIjMuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9p c3RhbmJ1bC1yZXBvcnRzLy0vaXN0YW5idWwtcmVwb3J0cy0zLjAuMi50Z3ojZDU5MzIxMGU1MDAw NjgzNzUwY2IwOWZjMDY0NGU0YjZlMjdmZDUzYiIKLSAgaW50ZWdyaXR5IHNoYTUxMi05dFp2ejdB aVIzUEVETkdpVjl2SW91US9FQWNxTVhGbWtjQTFDREZUd09COThPWlZETDBQSDlnbEhvdGY1VWdw NkdDT1R5cGZ6R1dJL09xaldOQ1JVdz09CisgIHZlcnNpb24gIjMuMC41IgorICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc3RhbmJ1bC1yZXBvcnRzLy0vaXN0YW5idWwt cmVwb3J0cy0zLjAuNS50Z3ojYTI1ODAxMDdlNzEyNzllYTZkNjYxZGRlZGU5MjlmZmM2ZDY5MzM4 NCIKKyAgaW50ZWdyaXR5IHNoYTUxMi01KzE5UGxobkdhYk5XQjdrT0ZudXhUOEgzVC9pSXlRekli UU14WHNVUm1tdktnODZQMnNia3JHT1Q3N1ZuSHcwUXIwZ2MyWHpSYVJmTVpZWWJTUUNKUT09CiAg IGRlcGVuZGVuY2llczoKICAgICBodG1sLWVzY2FwZXIgIl4yLjAuMCIKICAgICBpc3RhbmJ1bC1s aWItcmVwb3J0ICJeMy4wLjAiCkBAIC02ODMzLDkgKzY1MDgsOSBAQCBqYWtlQF4xMC42LjE6CiAg ICAgbWluaW1hdGNoICJeMy4wLjQiCiAKIGphc21pbmUtY29yZUBeMy42LjA6Ci0gIHZlcnNpb24g IjMuNy4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qYXNtaW5l LWNvcmUvLS9qYXNtaW5lLWNvcmUtMy43LjEudGd6IzA0MDEzMjdmNjI0OWVhYzk5M2Q0N2JiZmEx OGQ0ZThlZmFjZmI1NjEiCi0gIGludGVncml0eSBzaGE1MTItREgzb1lEUy9BVXZ2cjIyK3hVQlc2 Mm0xWG95N3RVbFkxdHN4S0VKdmw1SmVKN3E4emQxSzViVXdpT3hkSCtlcmo2bDJ2QU1NM2hWMjVY czkvV3JtdVE9PQorICB2ZXJzaW9uICIzLjEwLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL2phc21pbmUtY29yZS8tL2phc21pbmUtY29yZS0zLjEwLjEudGd6Izdh YTZmYTJiODM0YTUyMjMxNWM2NTFhMTI4ZDk0MGVjYTU1Mzk4OWEiCisgIGludGVncml0eSBzaGE1 MTItb29aV1NEVkFkaDc5UnJqNC9ubmZrbEwzTlFWcmEwQmN1aGN1V29Bd3dpK3puTERvVWVIODdB RmZlWDhzK1llWWk2eGx2NW52ZVJ5YUExdjdDaW50ZkE9PQogCiBqYXNtaW5lLWVuenltZUBeNy4x LjI6CiAgIHZlcnNpb24gIjcuMS4yIgpAQCAtNjg0OSwxNCArNjUyNCwxNCBAQCBqYXZhc2NyaXB0 LW5hdHVyYWwtc29ydEBeMC43LjE6CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL2phdmFzY3JpcHQtbmF0dXJhbC1zb3J0Ly0vamF2YXNjcmlwdC1uYXR1cmFsLXNvcnQt MC43LjEudGd6I2Y5ZTIzMDNkNDUwN2Y2ZDc0MzU1YTczNjY0ZDE0NDBmYjVhMGVmNTkiCiAgIGlu dGVncml0eSBzaGExLStlSXdQVVVIOXRkRFZhYzJaTkZFRDdXZzcxaz0KIAotamVzdC13b3JrZXJA XjI2LjMuMCwgamVzdC13b3JrZXJAXjI2LjYuMjoKLSAgdmVyc2lvbiAiMjYuNi4yIgotICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qZXN0LXdvcmtlci8tL2plc3Qtd29y a2VyLTI2LjYuMi50Z3ojN2Y3MmNiYzRkNjQzYzM2NWUyN2I5ZmQ3NzVmOWQwZWFhOWM3YThlZCIK LSAgaW50ZWdyaXR5IHNoYTUxMi1LV1lWVjFjNGkramJNcGFCQytVKys0VmEwY3A4T2lzVTE4NW83 M1Qxdm85OWhxaTd3OHRTSmZVWFlzd3dxcXJqend4YTZLcFJLNTRXaFB2d2Y1dzZQUT09CitqZXN0 LXdvcmtlckBeMjcuMC4yLCBqZXN0LXdvcmtlckBeMjcuMC42OgorICB2ZXJzaW9uICIyNy4zLjEi CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2plc3Qtd29ya2VyLy0v amVzdC13b3JrZXItMjcuMy4xLnRneiMwZGVmN2ZlYWU1YjgwNDJiZTM4NDc5Nzk5YWViN2I1ZmFj YWMyNGIyIgorICBpbnRlZ3JpdHkgc2hhNTEyLWtzM1dDenNpWmFPUEpsL29Nc0RqYWYwVFJpU3Y3 Y3ROZ3MwRnFScjJuQVJzb3Z6NkFXV3k0b0xFbHdjcXVHU3o2OTJEemdaUXJDTFNjUE5zNVlsQzRn PT0KICAgZGVwZW5kZW5jaWVzOgogICAgICJAdHlwZXMvbm9kZSIgIioiCiAgICAgbWVyZ2Utc3Ry ZWFtICJeMi4wLjAiCi0gICAgc3VwcG9ydHMtY29sb3IgIl43LjAuMCIKKyAgICBzdXBwb3J0cy1j b2xvciAiXjguMC4wIgogCiBqbWVzcGF0aEBeMC4xNS4wOgogICB2ZXJzaW9uICIwLjE1LjAiCkBA IC03MDExLDcgKzY2ODYsNyBAQCBqc29uZWRpdG9yQF45LjUuNDoKIGpzb25maWxlQF42LjAuMToK ICAgdmVyc2lvbiAiNi4xLjAiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL2pzb25maWxlLy0vanNvbmZpbGUtNi4xLjAudGd6I2JjNTViMjYzNDc5M2M2NzllYzY0MDMw OTRlYjEzNjk4YTZlYzBhYWUiCi0gIGludGVncml0eSAic2hhMS12Rld5WTBlVHhubnNaQU1KVHJF Mm1LYnNDcTQ9IHNoYTUxMi01ZGduZFdPcmlZU201Y25ZYUpOaGFsTE5ES09xRnd5REIvcnIxRTla c0djaUd2S1BzOFIyeFlHQ2FjdWYzejZLMVlLRHoxODJmZCtmWTNjbjNwTXFYUT09IgorICBpbnRl Z3JpdHkgc2hhNTEyLTVkZ25kV09yaVlTbTVjbllhSk5oYWxMTkRLT3FGd3lEQi9ycjFFOVpzR2Np R3ZLUHM4UjJ4WUdDYWN1ZjN6NksxWUtEejE4MmZkK2ZZM2NuM3BNcVhRPT0KICAgZGVwZW5kZW5j aWVzOgogICAgIHVuaXZlcnNhbGlmeSAiXjIuMC4wIgogICBvcHRpb25hbERlcGVuZGVuY2llczoK QEAgLTcwMjgsODIgKzY3MDMsODEgQEAganNvbnJlcGFpckBeMi4yLjE6CiAgIGludGVncml0eSBz aGE1MTItbzlKZThUY2VJTG84NzJ1UUM5ZklCSm05NTdqMUlvN3o4Q2ExaVdJcVk2UzVTNjVIR0U5 WE43WEVFdzcrdFV2aUI5VnE0c3lnVjg5TVZUeGwrcmhaeWc9PQogCiBqc3MtcGx1Z2luLWNhbWVs LWNhc2VAXjEwLjUuMToKLSAgdmVyc2lvbiAiMTAuNS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9qc3MtcGx1Z2luLWNhbWVsLWNhc2UvLS9qc3MtcGx1Z2luLWNh bWVsLWNhc2UtMTAuNS4xLnRneiM0MjdiMjRhOTk1MWI0YzJlYWE3ZTNkNTI2N2FjZDJlMDBiMDkz NGY5IgotICBpbnRlZ3JpdHkgc2hhNTEyLTkrb3ltQTd3UHRzd20renhWdGkxcWlvd0M1cTdiUmRD Sk5PUnRuczJKVWovUUhwMlFQWFl3U05SRDgrRDJDeTMvQ0VNdGRKemxObnQ1YVhtcFM2TkFnPT0K KyAgdmVyc2lvbiAiMTAuOC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn LmNvbS9qc3MtcGx1Z2luLWNhbWVsLWNhc2UvLS9qc3MtcGx1Z2luLWNhbWVsLWNhc2UtMTAuOC4y LnRneiM4ZDdmOTE1YzgxMTVhZmFmZjhjYmRlMDhmYWY2MTBlYzk4OTJmYmE2IgorICBpbnRlZ3Jp dHkgc2hhNTEyLTJJTnl4UisxVWROdUtmNHY5SXQzdE5mUHZmN0lQcnRraXd6b2ZlS3VNZDVENTgv ZHhESlZVUVlSVmcvbjQ2MHJUbEhVZnNFUXg0M2hEcmN4aTlkU1BBPT0KICAgZGVwZW5kZW5jaWVz OgogICAgICJAYmFiZWwvcnVudGltZSIgIl43LjMuMSIKICAgICBoeXBoZW5hdGUtc3R5bGUtbmFt ZSAiXjEuMC4zIgotICAgIGpzcyAiMTAuNS4xIgorICAgIGpzcyAiMTAuOC4yIgogCiBqc3MtcGx1 Z2luLWRlZmF1bHQtdW5pdEBeMTAuNS4xOgotICB2ZXJzaW9uICIxMC41LjEiCi0gIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzcy1wbHVnaW4tZGVmYXVsdC11bml0Ly0v anNzLXBsdWdpbi1kZWZhdWx0LXVuaXQtMTAuNS4xLnRneiMyYmUzODVkNzFkNTBhZWUyZWU4MWMy YTlhYzcwZTAwNTkyZWQ4NjFiIgotICBpbnRlZ3JpdHkgc2hhNTEyLUQ0OGhKQmM5VGozUHVzdmxp bGxIVzhGejB5L1FxQTdNTm1UWURRYVNCLzdtVHJDWmp0N0FWUlJPRXhvT0hFdGQycUlZS09ZSlcz SmMyYWdudnNYUmxRPT0KKyAgdmVyc2lvbiAiMTAuOC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9qc3MtcGx1Z2luLWRlZmF1bHQtdW5pdC8tL2pzcy1wbHVnaW4t ZGVmYXVsdC11bml0LTEwLjguMi50Z3ojYzY2ZjEyZTAyZTA4MTVkOTExYjg1YzAyYzJhOTc5ZWU3 YjRjZTY5YSIKKyAgaW50ZWdyaXR5IHNoYTUxMi1VWjdjd1Q5TkZZU0crU0V5N25vUlU1MHM0emlm dWxGZGprVU5LRSt1Nm1XN3ZGUDk2MCtSZ2xXalRnTWZoNzlHNk9FTlptYVluakhWL2djS1Y0blN4 Zz09CiAgIGRlcGVuZGVuY2llczoKICAgICAiQGJhYmVsL3J1bnRpbWUiICJeNy4zLjEiCi0gICAg anNzICIxMC41LjEiCisgICAganNzICIxMC44LjIiCiAKIGpzcy1wbHVnaW4tZ2xvYmFsQF4xMC41 LjE6Ci0gIHZlcnNpb24gIjEwLjUuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vanNzLXBsdWdpbi1nbG9iYWwvLS9qc3MtcGx1Z2luLWdsb2JhbC0xMC41LjEudGd6 IzBlMTc5M2RlYTg2YzI5ODM2MGE3ZTIwMDQ3MjEzNTE2NTNjN2U3NjQiCi0gIGludGVncml0eSBz aGE1MTItalg0WHBOZ29hQjh5UFd3L2dBMWFQWEpFb1gwTE5wdnNST1B2eGxuWWUrU0UwSk9odXZG N21BNmRDa2dwWEJ4ZlRXS0pzbm83Y0RTQ2d6SFRvY1JqQ1E9PQorICB2ZXJzaW9uICIxMC44LjIi CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzcy1wbHVnaW4tZ2xv YmFsLy0vanNzLXBsdWdpbi1nbG9iYWwtMTAuOC4yLnRneiMxYTM1NjMyYTY5M2NmNTAxMTNiY2M1 ZmZlNmI1MTk2OWRmNzljNGVjIgorICBpbnRlZ3JpdHkgc2hhNTEyLVVhWU1TUHNZWjdzL0VDR29q NEtvSEMyandRZDVpUTdLK0ZGR25DQUlMZFFydjdoUG12TTJZZGc0NVRoVC9zSDQ2RHFrdENSVjJT cWpSdXhlQkg4blJBPT0KICAgZGVwZW5kZW5jaWVzOgogICAgICJAYmFiZWwvcnVudGltZSIgIl43 LjMuMSIKLSAgICBqc3MgIjEwLjUuMSIKKyAgICBqc3MgIjEwLjguMiIKIAoganNzLXBsdWdpbi1u ZXN0ZWRAXjEwLjUuMToKLSAgdmVyc2lvbiAiMTAuNS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9qc3MtcGx1Z2luLW5lc3RlZC8tL2pzcy1wbHVnaW4tbmVzdGVk LTEwLjUuMS50Z3ojODc1M2E4MGFkMzExOTBmYjZhYzZmZGQzOWY1NzM1MmRjZjEyOTViYiIKLSAg aW50ZWdyaXR5IHNoYTUxMi14WGtXS09DbGp1d0hOalNZY1hyQ3hCbmpkOGVKcDkwS1ZGVzFybGh2 S0tSWG5FS1ZENnZkS1hZZXprMmE4OXVLQUhja1N2QnZCb0RHc2ZacmxkV3FxUT09CisgIHZlcnNp b24gIjEwLjguMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNz LXBsdWdpbi1uZXN0ZWQvLS9qc3MtcGx1Z2luLW5lc3RlZC0xMC44LjIudGd6Izc5ZjNjN2Y3NWVh NmEzNmFlNzJmZTUyZTc3NzAzNWJiMjRkMjMwYzciCisgIGludGVncml0eSBzaGE1MTItYWNSdnVQ Sk9iOTMwZnVZbWhrSmFhOTk0RUFEcHQ4VHhJNjNJeWc5NkM4Rko5VDJ4UnlVNVQ2UjFJWUtSd1Vp cVpvKzJTcjdmZEd6UlRERDR1QlphTUE9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkBiYWJlbC9y dW50aW1lIiAiXjcuMy4xIgotICAgIGpzcyAiMTAuNS4xIgorICAgIGpzcyAiMTAuOC4yIgogICAg IHRpbnktd2FybmluZyAiXjEuMC4yIgogCiBqc3MtcGx1Z2luLXByb3BzLXNvcnRAXjEwLjUuMToK LSAgdmVyc2lvbiAiMTAuNS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn LmNvbS9qc3MtcGx1Z2luLXByb3BzLXNvcnQvLS9qc3MtcGx1Z2luLXByb3BzLXNvcnQtMTAuNS4x LnRneiNhYjFjMTY3ZmQyZDQ1MDZmYjZhMWMxZDY2YzVmM2VmNTQ1ZmYxY2Q4IgotICBpbnRlZ3Jp dHkgc2hhNTEyLXQrMnZjZXZObU1nNFUvakF1eGxmakt0NDZEL2pIekNQRWpzakxSai9KNTZDdlA3 SXkwM3Njc1VQNThJdzhtVm5hVjM2eEFVWkgyQ21BbUFkbzg5OTRnPT0KKyAgdmVyc2lvbiAiMTAu OC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc3MtcGx1Z2lu LXByb3BzLXNvcnQvLS9qc3MtcGx1Z2luLXByb3BzLXNvcnQtMTAuOC4yLnRneiNlMjVhNzQ3MTg2 ODY1MmMzOTQ1NjJiNmRjNTQzM2RjYWVhN2RmZjZmIgorICBpbnRlZ3JpdHkgc2hhNTEyLXdxZGNq YXlLUldCWm5OcExVclh2c1dxaCs1SjVZVG9BUSs4SE5CTncwa1p4VnZDRHd6aEsyTng2QUtzN3Ar NS9NYkFoMlBMZ05XNVltL3lzYlZBdXFRPT0KICAgZGVwZW5kZW5jaWVzOgogICAgICJAYmFiZWwv cnVudGltZSIgIl43LjMuMSIKLSAgICBqc3MgIjEwLjUuMSIKKyAgICBqc3MgIjEwLjguMiIKIAog anNzLXBsdWdpbi1ydWxlLXZhbHVlLWZ1bmN0aW9uQF4xMC41LjE6Ci0gIHZlcnNpb24gIjEwLjUu MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNzLXBsdWdpbi1y dWxlLXZhbHVlLWZ1bmN0aW9uLy0vanNzLXBsdWdpbi1ydWxlLXZhbHVlLWZ1bmN0aW9uLTEwLjUu MS50Z3ojMzdmNDAzMDUyM2ZiMzAzMmM4ODAxZmFiNDhjMzZjMzczMDA0ZGU3ZSIKLSAgaW50ZWdy aXR5IHNoYTUxMi0zZ2pyU3hzeTRrYS9sR1FzVERZOG9ZWXRrdDJlc0J2UWljZUdCQjRQeWtYeEhv R1J6MTR0YkNLMzFaYzZESEVuSWVxc2pNVUdicSt3RWx5NVVWaVN0UT09CisgIHZlcnNpb24gIjEw LjguMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNzLXBsdWdp bi1ydWxlLXZhbHVlLWZ1bmN0aW9uLy0vanNzLXBsdWdpbi1ydWxlLXZhbHVlLWZ1bmN0aW9uLTEw LjguMi50Z3ojNTUzNTRiNTVmMWIyOTY4YTE1OTc2NzI5OTY4Zjc2N2YwMmQ2NDA0OSIKKyAgaW50 ZWdyaXR5IHNoYTUxMi1iVzBFS0FzKzBIWHBiNkJLSmhybjk0SURkaVdiMENuU2x1VGtoMHJHRWd5 elkvbm1EMXVWL1dmNktHbGVzR09aOWdtSnpReSs5RkZkeElVSUQxYzlVZz09CiAgIGRlcGVuZGVu Y2llczoKICAgICAiQGJhYmVsL3J1bnRpbWUiICJeNy4zLjEiCi0gICAganNzICIxMC41LjEiCisg ICAganNzICIxMC44LjIiCiAgICAgdGlueS13YXJuaW5nICJeMS4wLjIiCiAKIGpzcy1wbHVnaW4t dmVuZG9yLXByZWZpeGVyQF4xMC41LjE6Ci0gIHZlcnNpb24gIjEwLjUuMSIKLSAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNzLXBsdWdpbi12ZW5kb3ItcHJlZml4ZXIv LS9qc3MtcGx1Z2luLXZlbmRvci1wcmVmaXhlci0xMC41LjEudGd6IzQ1YTE4M2EzYTBlYjA5N2Jk ZmFiMDk4NmI4NThkOTk5MjBjMGJiZDgiCi0gIGludGVncml0eSBzaGE1MTItY0xrSDZSYVBaV0hh MVRxU2ZkMnZzek5OZ3hUMVcwb21sU2pBZDZoQ0ZIcDNLSW9jU3JXMjFnYUhqbE1VMjZKcFRId2tj K3RKVENRT21FL08xQTRGS1E9PQorICB2ZXJzaW9uICIxMC44LjIiCisgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzcy1wbHVnaW4tdmVuZG9yLXByZWZpeGVyLy0vanNz LXBsdWdpbi12ZW5kb3ItcHJlZml4ZXItMTAuOC4yLnRneiNlYmI0YTQ4MjY0MmYzNDA5MWU0NTQ5 MDFlMjExNzY0NDFkZDVmNDc1IgorICBpbnRlZ3JpdHkgc2hhNTEyLURlR3YxOFFzU2lZTFNWSUVC MitsMGFmNk9Ub1VlMEpCK3RycHpVeHlxRDJRUkMvNUF6ekRyQ3JZZmZPNUFIWjgxUWJmZll2U04v cGtmWmFUV3BSWGxnPT0KICAgZGVwZW5kZW5jaWVzOgogICAgICJAYmFiZWwvcnVudGltZSIgIl43 LjMuMSIKICAgICBjc3MtdmVuZG9yICJeMi4wLjgiCi0gICAganNzICIxMC41LjEiCisgICAganNz ICIxMC44LjIiCiAKLWpzc0AxMC41LjEsIGpzc0BeMTAuNS4xOgotICB2ZXJzaW9uICIxMC41LjEi Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzcy8tL2pzcy0xMC41 LjEudGd6IzkzZTZiMjQyOGM4NDA0MDgzNzJkOGI1NDhjM2YzYzYwZmE2MDFjNDAiCi0gIGludGVn cml0eSBzaGE1MTItaGJiTzMrRk9UcVZkZDdaVW9UaXdwSHpLWElvNXZHcE1OYnVYSDFhMHd1YlJT V0xXU0J2d3ZhcTRDaUhIL1U0MkNtak9ucDZsVk5Ocy9sK1o3WmREbWc9PQoranNzQDEwLjguMiwg anNzQF4xMC41LjE6CisgIHZlcnNpb24gIjEwLjguMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vanNzLy0vanNzLTEwLjguMi50Z3ojNGIyYTMwYjA5NGI5MjQ2Mjlh NjQ5MjgyMzYwMTdhNTJjN2M5NzUwNSIKKyAgaW50ZWdyaXR5IHNoYTUxMi1Ga29VTnhJMzI5Q0tR OU9RQzhMNzJNQkY5S1BmNXE4bUl1cEFKNXR3VTdHN1hSRVc3YWhiKzdqRmZyalo0aXkxcXZoeDFI d0lXVUl2a1pCRG5La0VkUT09CiAgIGRlcGVuZGVuY2llczoKICAgICAiQGJhYmVsL3J1bnRpbWUi ICJeNy4zLjEiCiAgICAgY3NzdHlwZSAiXjMuMC4yIgotICAgIGluZGVmaW5pdGUtb2JzZXJ2YWJs ZSAiXjIuMC4xIgogICAgIGlzLWluLWJyb3dzZXIgIl4xLjEuMyIKICAgICB0aW55LXdhcm5pbmcg Il4xLjAuMiIKIAogImpzeC1hc3QtdXRpbHNAXjIuNC4xIHx8IF4zLjAuMCI6Ci0gIHZlcnNpb24g IjMuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9qc3gtYXN0 LXV0aWxzLy0vanN4LWFzdC11dGlscy0zLjIuMC50Z3ojNDExMDhkMmNlYzQwOGMzNDUzYzFiYmU4 YTRhYWU5ZTFlMmJkOGY4MiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1FSXNtdDNPM2xqc1U2c290L0o0 RTF6RFJ4ZkJOcmhqeWYvT0tqbHlkd2dFaW1RdXpubE00V3Y3VSt1ZU9OSk15RW4xV1JFMEs4ZGhp M2RWQVhZVDI0UT09CisgIHZlcnNpb24gIjMuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9qc3gtYXN0LXV0aWxzLy0vanN4LWFzdC11dGlscy0zLjIuMS50Z3oj NzIwYjk3YmZlN2Q5MDFiOTI3ZDg3YzM3NzM2MzdhZThlYTQ4NzgxYiIKKyAgaW50ZWdyaXR5IHNo YTUxMi11UDV2dTh4ZnkyRjlBNkxHQzIyS083ZTIvdkdUUzFNaFArMThmKytaTmxmME9oYXhiYzlu SUV3SEFzZWpsSkt5emZaelU1VUloZTVJdFlraXRjWm5aQT09CiAgIGRlcGVuZGVuY2llczoKLSAg ICBhcnJheS1pbmNsdWRlcyAiXjMuMS4yIgorICAgIGFycmF5LWluY2x1ZGVzICJeMy4xLjMiCiAg ICAgb2JqZWN0LmFzc2lnbiAiXjQuMS4yIgogCiBqdW5rQF4zLjEuMDoKQEAgLTcxNDgsOSArNjgy Miw5IEBAIGthcm1hLWNvdmVyYWdlQF4yLjAuMzoKICAgICBtaW5pbWF0Y2ggIl4zLjAuNCIKIAog a2FybWEtamFzbWluZS1odG1sLXJlcG9ydGVyQF4xLjQuMDoKLSAgdmVyc2lvbiAiMS42LjAiCi0g IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2thcm1hLWphc21pbmUtaHRt bC1yZXBvcnRlci8tL2thcm1hLWphc21pbmUtaHRtbC1yZXBvcnRlci0xLjYuMC50Z3ojNTg2ZTE3 MDI1YTFiNDEyOGU5ZmJhNTVkNWYxZTg5MjFiZmMzYmMxZSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1F TE85eWYwY05xcHphTkxzZkZnWGQvd3haVllrRTIrRUNVd2hNSFVENFBaMTdrY3NQc1lzVnlqcXVp UnF5TW4yamtkMnNIdDBJZU15QXlxMU1DMjNGdz09CisgIHZlcnNpb24gIjEuNy4wIgorICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9rYXJtYS1qYXNtaW5lLWh0bWwtcmVw b3J0ZXIvLS9rYXJtYS1qYXNtaW5lLWh0bWwtcmVwb3J0ZXItMS43LjAudGd6IzUyYzQ4OWE3NGQ3 NjA5MzRhMTA4OWJmYTVlYTRhOGZjYjg0Y2MyOGIiCisgIGludGVncml0eSBzaGE1MTItcHp1bTFU TDdqOTBEVEU4NmVGdDQ4L3MxMmhxd1F1aUQrZTVhWHgyRGM5d0RFbjJMZkdxNlJvQXhFWlpqRmlO MFJEU0NPbm9zRUtSWld4YlEraU1wUVE9PQogCiBrYXJtYS1qYXNtaW5lQF40LjAuMToKICAgdmVy c2lvbiAiNC4wLjEiCkBAIC03MjMwLDkgKzY5MDQsOSBAQCBraW5kLW9mQF42LjAuMjoKICAgaW50 ZWdyaXR5IHNoYTUxMi1kY1MxdWwrOXRtZUQ5NVQreDI4L2VoTGdkOW1FTmEzTHN2RFR0em0zdnlC RU83UlBwdHZBRCt0NDRXVlhhVWpUQlJjcnBGZUZsQzhXQ3J1VVI0NTZodz09CiAKIGtsb25hQF4y LjAuNDoKLSAgdmVyc2lvbiAiMi4wLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL2tsb25hLy0va2xvbmEtMi4wLjQudGd6IzdiYjFlM2FmZmIwY2I4NjI0NTQ3ZWY3 ZThmNjcwOGVhMmUzOWRmYzAiCi0gIGludGVncml0eSBzaGE1MTItWlJibnZkZy9OeHF6QzdMOVV5 cXpmNHBzaTFPTTRDdWMrc0pBa1FQak82WGtRSUpUTmJmSzJSc21idzhmeDFwMm1rWmRwMkZaWW8y K0x3WFlZL3V3SUE9PQorICB2ZXJzaW9uICIyLjAuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20va2xvbmEvLS9rbG9uYS0yLjAuNS50Z3ojZDE2NjU3NGQ5MDA3NjM5 NWQ5OTYzYWE3YTkyOGZhYmI4ZDc2YWZiYyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1wSmlCcGlYTWJ0 N2RrelhlOEdoai91NEZmWE9PYTk4ZlBXK2JpaE9KNFNqbm9pandlSnJOVGhKZmQzaWZYcFhoUkVq cG9GMm1aVkgxR2ZTOUxWM2tIUT09CiAKIGxhYmVsZWQtc3RyZWFtLXNwbGljZXJAXjIuMC4wOgog ICB2ZXJzaW9uICIyLjAuMiIKQEAgLTcyNTUsNiArNjkyOSwxMSBAQCBsZXZuQF4wLjQuMToKICAg ICBwcmVsdWRlLWxzICJeMS4yLjEiCiAgICAgdHlwZS1jaGVjayAifjAuNC4wIgogCitsaWxjb25m aWdAXjIuMC4zOgorICB2ZXJzaW9uICIyLjAuMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vbGlsY29uZmlnLy0vbGlsY29uZmlnLTIuMC4zLnRneiM2OGYzMDA1ZTky MWRhZmJkMmEyYWZiNDgzNzk5ODZhYTZkMjU3OWZkIgorICBpbnRlZ3JpdHkgc2hhNTEyLUVIS3Fy LytadmRLQ2lmcE5ySkNLeEJUZ2s1WHVwWkEzeS9hQ1BZOW14ZmdCem1naDkzTXQvV3FqalEzOG9N eFh1dkRva2FLaU0zbEFndlNIMnNqdEhnPT0KKwogbGluZXMtYW5kLWNvbHVtbnNAXjEuMS42Ogog ICB2ZXJzaW9uICIxLjEuNiIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vbGluZXMtYW5kLWNvbHVtbnMvLS9saW5lcy1hbmQtY29sdW1ucy0xLjEuNi50Z3ojMWMwMGM3 NDNiNDMzY2QwYTRlODA3NThmN2I2NGE1NzQ0MGQ5ZmYwMCIKQEAgLTcyNzUsOSArNjk1NCw5IEBA IGxvYWRlci11dGlsc0BeMS4wLjMsIGxvYWRlci11dGlsc0BeMS4xLjAsIGxvYWRlci11dGlsc0Be MS40LjA6CiAgICAganNvbjUgIl4xLjAuMSIKIAogbG9hZGVyLXV0aWxzQF4yLjAuMDoKLSAgdmVy c2lvbiAiMi4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xv YWRlci11dGlscy8tL2xvYWRlci11dGlscy0yLjAuMC50Z3ojZTRjYWNlNWI4MTZkNDI1YTE2NmI1 ZjA5N2UxMGNkMTJiMzYwNjRiMCIKLSAgaW50ZWdyaXR5IHNoYTUxMi1yUDRGMGgyUmFXU3ZQRWtE N0JMREZRbnZTZituSyt3cjNFU1VqTlR5QUdvYnFyaWptVzkyemMrU082ZDRwNEIxd2g3K0IvSmcx bWtRZTVOWVVFSHRIUT09CisgIHZlcnNpb24gIjIuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9sb2FkZXItdXRpbHMvLS9sb2FkZXItdXRpbHMtMi4wLjIudGd6 I2Q2ZTNiNGZiODE4NzA3MjFhZTRlMDg2OGFiMTFkZDYzODM2OGMxMjkiCisgIGludGVncml0eSBz aGE1MTItVE01N1ZlSHB0djU2OWQvR0toNlRBWWR6S2Jsd0ROaXVtT2RrRm5lampEMFh3VEg4N0s5 MHczTzdBaUpScWRRb1h5Z3ZpMVZRVEpUTEdoSmw3V3FBN0E9PQogICBkZXBlbmRlbmNpZXM6CiAg ICAgYmlnLmpzICJeNS4yLjIiCiAgICAgZW1vamlzLWxpc3QgIl4zLjAuMCIKQEAgLTczMDksMTEg KzY5ODgsNiBAQCBsb2Rhc2guX2dldG5hdGl2ZUBeMy4wLjA6CiAgIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvZGFzaC5fZ2V0bmF0aXZlLy0vbG9kYXNoLl9nZXRuYXRp dmUtMy45LjEudGd6IzU3MGJjN2RlZGU0NmQ2MWNkY2RlNjg3ZDY1ZDNlZWNiYWEzYWFmZjUiCiAg IGludGVncml0eSBzaGExLVZ3dkgzdDVHMWh6YzNtaDlaZFB1eTZvNnIvVT0KIAotbG9kYXNoLmNs b25lZGVlcEBeNC41LjA6Ci0gIHZlcnNpb24gIjQuNS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9sb2Rhc2guY2xvbmVkZWVwLy0vbG9kYXNoLmNsb25lZGVlcC00 LjUuMC50Z3ojZTIzZjNmOWM0ZjhmYmRkZTg3MjUyOWMxMDcxODU3YTA4NmU1Y2NlZiIKLSAgaW50 ZWdyaXR5IHNoYTEtNGo4L25FK1B2ZDZISlNuQkJ4aFhvSWJsek84PQotCiBsb2Rhc2guZGVib3Vu Y2VAXjQuMC44OgogICB2ZXJzaW9uICI0LjAuOCIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vbG9kYXNoLmRlYm91bmNlLy0vbG9kYXNoLmRlYm91bmNlLTQuMC44LnRn eiM4MmQ3OWJmZjMwYTY3YzQwMDVmZmQ1ZTI1MTUzMDBhZDljYTRkN2FmIgpAQCAtNzM3Niw2ICs3 MDUwLDExIEBAIGxvZGFzaC5tZW1vaXplQH4zLjAuMzoKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vbG9kYXNoLm1lbW9pemUvLS9sb2Rhc2gubWVtb2l6ZS0zLjAuNC50 Z3ojMmRjYmQyYzI4N2NiYzBhNTVjYzQyMzI4YmQwYzczNjE1MGQ1M2UzZiIKICAgaW50ZWdyaXR5 IHNoYTEtTGN2U3dvZkx3S1ZjeENNb3ZReHpZVkRWUGo4PQogCitsb2Rhc2gubWVyZ2VAXjQuNi4y OgorICB2ZXJzaW9uICI0LjYuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr Zy5jb20vbG9kYXNoLm1lcmdlLy0vbG9kYXNoLm1lcmdlLTQuNi4yLnRneiM1NThhYTUzYjQzYjY2 MWUxOTI1YTBhZmRmYTM2YTlhMTA4NWZlNTdhIgorICBpbnRlZ3JpdHkgc2hhNTEyLTBLcGpxWFJW dnJZeUNzWDFzd1IvWFRLMHZhNlZRa1FNNk1ObzdQcVc3N0J5akFob0FSQThFZnJQMU40K0tsS2o4 WVMwWlVDdFJUL1lVdWh5WUR1aklRPT0KKwogbG9kYXNoLnRydW5jYXRlQF40LjQuMjoKICAgdmVy c2lvbiAiNC40LjIiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xv ZGFzaC50cnVuY2F0ZS8tL2xvZGFzaC50cnVuY2F0ZS00LjQuMi50Z3ojNWEzNTBkYTBiMTExM2I4 MzdlY2ZmZmQ1ODEyY2JlNThkNmVhZTE5MyIKQEAgLTczODYsNyArNzA2NSw3IEBAIGxvZGFzaC51 bmlxQF40LjUuMDoKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbG9k YXNoLnVuaXEvLS9sb2Rhc2gudW5pcS00LjUuMC50Z3ojZDAyMjUzNzNhZWI2NTJhZGMxYmM4MmU0 OTQ1MzM5YTg0Mjc1NDc3MyIKICAgaW50ZWdyaXR5IHNoYTEtMENKVGM2NjJVcTNCdklMa2xGTTVx RUoxUjNNPQogCi1sb2Rhc2hANC4qLCBsb2Rhc2hAXjQuMTQuMSwgbG9kYXNoQF40LjE3LjEwLCBs b2Rhc2hAXjQuMTcuMTEsIGxvZGFzaEBeNC4xNy4xNCwgbG9kYXNoQF40LjE3LjE1LCBsb2Rhc2hA XjQuMTcuMTksIGxvZGFzaEBeNC4xNy4yMCwgbG9kYXNoQF40LjE3LjIxLCBsb2Rhc2hAXjQuMTcu NDoKK2xvZGFzaEA0LCBsb2Rhc2hANC4qLCBsb2Rhc2hAXjQuMTQuMSwgbG9kYXNoQF40LjE3LjEw LCBsb2Rhc2hAXjQuMTcuMTEsIGxvZGFzaEBeNC4xNy4xNCwgbG9kYXNoQF40LjE3LjE1LCBsb2Rh c2hAXjQuMTcuMTksIGxvZGFzaEBeNC4xNy4yMCwgbG9kYXNoQF40LjE3LjIxLCBsb2Rhc2hAXjQu MTcuNDoKICAgdmVyc2lvbiAiNC4xNy4yMSIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vbG9kYXNoLy0vbG9kYXNoLTQuMTcuMjEudGd6IzY3OTU5MWM1NjRjM2JmZmFh ZTg0NTRjZjBiM2RmMzcwYzNkNjkxMWMiCiAgIGludGVncml0eSBzaGE1MTItdjJrREVlNTdsZWNU dWxhREl1TlRQeTNSeTRnTEdKNloxTzN2RTFrcmdYWk5yc1ErTEZUR0hWeFZqY1hQczE3TGhiWlZH ZWRBSnY4WFoxdHZqNUZ2U2c9PQpAQCAtNzQ3Niw5ICs3MTU1LDkgQEAgbWFrZS1mZXRjaC1oYXBw ZW5AXjkuMS4wOgogICAgIHNzcmkgIl44LjAuMCIKIAogbWFya2VkQF4yLjAuMDoKLSAgdmVyc2lv biAiMi4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21hcmtl ZC8tL21hcmtlZC0yLjAuMS50Z3ojNWU3ZWQ3MDA5YmZhNWM5NTE4MmU0ZWI2OTZmODVlOTQ4Y2Vm Y2VlMyIKLSAgaW50ZWdyaXR5IHNoYTUxMi01Ky9mS2dNdjJoQVJtTVc3RE9weWtyMmlMaGwwTmdq eUVMazV5bjkyaUU3ejhTZTFJUzluM1VzRm04NmhGWElrdk1CbVZ4a2k4K2NrY3BqQmV5by9odz09 CisgIHZlcnNpb24gIjIuMS4zIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn LmNvbS9tYXJrZWQvLS9tYXJrZWQtMi4xLjMudGd6I2JkMDE3Y2VmNjQzMTcyNGZkNGIyN2UwNjU3 ZjVjZWIxNGJmZjM3NTMiCisgIGludGVncml0eSBzaGE1MTItL1ErN01HemFFVHFpZk9NV1lFQTdI Vk1hWmI0WGJjUmZhT3pjU3NIWkVpdGg4M0tHbHZhU0czM3UwU0t1ODlNajVoK1Q4VjJoTSs4TzQ1 UWM1WFRnd0E9PQogCiBtYXRjaGVzLXNlbGVjdG9yQDAuMC4xOgogICB2ZXJzaW9uICIwLjAuMSIK QEAgLTc1MjksNyArNzIwOCw3IEBAIG1pY3JvYnVmZmVyQF4xLjAuMDoKICAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWljcm9idWZmZXIvLS9taWNyb2J1ZmZlci0xLjAu MC50Z3ojOGIzODMyZWQ0MGM4N2Q1MWY0N2JiMjM0OTEzYTY5OGE3NTZkMTlkMiIKICAgaW50ZWdy aXR5IHNoYTEtaXpneTdVRElmVkgwZTdJMGtUcHBpblZ0R2RJPQogCi1taWNyb21hdGNoQF40LjAu MjoKK21pY3JvbWF0Y2hAXjQuMC40OgogICB2ZXJzaW9uICI0LjAuNCIKICAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbWljcm9tYXRjaC8tL21pY3JvbWF0Y2gtNC4wLjQu dGd6Izg5NmQ1MTlkZmU5ZGIyNWZjZTk0Y2ViN2E1MDA5MTliZjg4MWViZjkiCiAgIGludGVncml0 eSBzaGE1MTItcFJtencvWFVjd1hHcEQ5YUk5cS8wWE93TE55Z2pFVEo4eTBhbzB3ZHFwcnJ6RGE0 WW54TGN6N2ZRUlpyOHZvaDhWMTBrR2hBQmJOY0hWazV3SGdXd2c9PQpAQCAtNzU0NSwxNyArNzIy NCwxNyBAQCBtaWxsZXItcmFiaW5AXjQuMC4wOgogICAgIGJuLmpzICJeNC4wLjAiCiAgICAgYnJv cmFuZCAiXjEuMC4xIgogCi1taW1lLWRiQDEuNDYuMCwgbWltZS1kYkBeMS4yOC4wOgotICB2ZXJz aW9uICIxLjQ2LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21p bWUtZGIvLS9taW1lLWRiLTEuNDYuMC50Z3ojNjI2Nzc0OGE3Zjc5OTU5NGRlM2NiYzhjZGU5MWRl ZjM0OTY2MWNlZSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1zdlhhUDhVUVJaNUs3b3IrWm1mTmhnMnhY M3lLRE1VenFhZHNTcWk0TkNIL0tvbWNINzVNQU1ZQUdWbHZYbjQrYi94T1BoUzNJMnVIS1JVenZq WTdCUT09CittaW1lLWRiQDEuNTAuMCwgbWltZS1kYkBeMS4yOC4wOgorICB2ZXJzaW9uICIxLjUw LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbWUtZGIvLS9t aW1lLWRiLTEuNTAuMC50Z3ojYWJkNGFjOTRlOThkM2MwZTE4NTAxNmM2N2FiNDVkNWZkZTQwYzEx ZiIKKyAgaW50ZWdyaXR5IHNoYTUxMi05dE1aQ0RsWUhxZUVSWEVITzlmL2hLZk5YaHJlNWRLMmVF L2tySXZValpiUzJLUGNxR0RmTlNoSVdTMXVXOVhPVEtRS3FLNnFiZU9jaTE4cmJmVzc3QT09CiAK IG1pbWUtdHlwZXNAXjIuMS4yNywgbWltZS10eXBlc0B+Mi4xLjI0OgotICB2ZXJzaW9uICIyLjEu MjkiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbWUtdHlwZXMv LS9taW1lLXR5cGVzLTIuMS4yOS50Z3ojMWQ0YWI3N2RhNjRiOTFmNWY3MjQ4OWRmMjkyMzY1NjM3 NTRiYjFiMiIKLSAgaW50ZWdyaXR5IHNoYTUxMi1ZL2pNdC9TNXNSOU9hcXRlSnRzbHNGWktXT0lJ cU1BQ3NKU2lIZ2hsQ0F5aGY3amZWWWpLQm1MaVg4T2dwV2VXK2ZqSjJiK0F6NjlhUEZQa1VPWTZ4 UT09CisgIHZlcnNpb24gIjIuMS4zMyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vbWltZS10eXBlcy8tL21pbWUtdHlwZXMtMi4xLjMzLnRneiMxZmExMmE5MDQ0NzJm YWZkMDY4ZTQ4ZDllODQwMWY3NGQzZjcwZWRiIgorICBpbnRlZ3JpdHkgc2hhNTEyLXBsTEVsWHA3 cFJEZDBiTlpIdytuTWQ1MnZSWWpMd1FqeWdhTmc3ZGRKMnVKdFRsbW5UQ2pXdVBLeFZ1Ni8vQWRh UnVNRTg0U3ZMVzkxc0lrQnFHVDBnPT0KICAgZGVwZW5kZW5jaWVzOgotICAgIG1pbWUtZGIgIjEu NDYuMCIKKyAgICBtaW1lLWRiICIxLjUwLjAiCiAKIG1pbWVAXjIuMC4zLCBtaW1lQF4yLjMuMToK ICAgdmVyc2lvbiAiMi41LjIiCkBAIC03NTc4LDkgKzcyNTcsOSBAQCBtaW1pYy1yZXNwb25zZUBe MS4wLjA6CiAgIGludGVncml0eSBzaGE1MTItajVFY3Rua0g3YW1mVi9xNUhnbW9hbDFnMlFIRkpS cmFPdG14MEpwSXFreGhCaEkvbEpTbDFuTXBRNDVoVmFyd05FVE9vV0VpbW5kWjRRSzBSSHh1eFE9 PQogCiBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbkBeMS4zLjU6Ci0gIHZlcnNpb24gIjEuMy45Igot ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taW5pLWNzcy1leHRyYWN0 LXBsdWdpbi8tL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luLTEuMy45LnRneiM0N2EzMjEzMmIwZmQ5 N2ExMTlhY2Q1MzBlODQyMWU4ZjZhYjE2ZDVlIgotICBpbnRlZ3JpdHkgc2hhNTEyLUFjNHMreGhW YnFseWhYUzVKL1ZoL1FYVXozeWNYbENxb0NQcGcwdmRmaHNJQkg5ZWcvSXQvOUwxcjFYaFNDSDcz N00xbHFjV25NdVdMMTN6Y3lnbjVBPT0KKyAgdmVyc2lvbiAiMS42LjIiCisgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luLy0vbWlu aS1jc3MtZXh0cmFjdC1wbHVnaW4tMS42LjIudGd6IzgzMTcyYjRmZDgxMmY4ZmM0YTA5ZDZmNmQx NmY5MjRmNTM5OTBjYTgiCisgIGludGVncml0eSBzaGE1MTItV2hEdk8zU2pHbTQwb1Y1eTI2R2pN SllqZDJVTXFyTEFHS3k1WVMyLzNRS0p5MkY3amd5bnVIVGlyL3RnVVVPaU5RdTVzYVhIZGM4cmVv N1l1aGhUNFE9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgbG9hZGVyLXV0aWxzICJeMi4wLjAiCiAg ICAgc2NoZW1hLXV0aWxzICJeMy4wLjAiCkBAIC03Njk0LDkgKzczNzMsOSBAQCBtbC1hcnJheS1t aW5AXjEuMi4yOgogICAgIGlzLWFueS1hcnJheSAiXjEuMC4wIgogCiBtbC1hcnJheS1yZXNjYWxl QF4xLjMuNToKLSAgdmVyc2lvbiAiMS4zLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL21sLWFycmF5LXJlc2NhbGUvLS9tbC1hcnJheS1yZXNjYWxlLTEuMy41LnRn eiNhNDFhOTg1MzVlNWIzYmNkY2RlMmYxZWY1MzJmNDQ1M2ZlYjExMTA0IgotICBpbnRlZ3JpdHkg c2hhNTEyLWN6SytmYU43a1lyRjQ4U2dWUWVYR2t4VWpERWFzNkJBNEV6RjRqSk5oOFVFdHpwU3ZI VzNSbGxaQ0pDQ3lyQXFlRmMrWS9MaGdZVXp1SEZwZXZNM3FBPT0KKyAgdmVyc2lvbiAiMS4zLjYi CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21sLWFycmF5LXJlc2Nh bGUvLS9tbC1hcnJheS1yZXNjYWxlLTEuMy42LnRneiMwNjBkMWM2MzZmYmI1Zjg3NzI2NWY0ZmNj NGUwZTE1NzUyMWQ2MTVhIgorICBpbnRlZ3JpdHkgc2hhNTEyLUx6ajQ1VDZodkhOZGh0OTI0SlFo SHpJbklLK2lsQzU1em45OHVyYVpVdkxCa09XT0pHT3p0RWtSTTB4eXpBald2VnVocHN6TEFET25v VndmQlNuajh3PT0KICAgZGVwZW5kZW5jaWVzOgogICAgIGlzLWFueS1hcnJheSAiXjEuMC4wIgog ICAgIG1sLWFycmF5LW1heCAiXjEuMi4zIgpAQCAtNzc3NSwyNiArNzQ1NCwzMSBAQCBtc0AyLjAu MDoKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbXMvLS9tcy0yLjAu MC50Z3ojNTYwOGFlYWRmYzAwYmU2YzI5MDFkZjVmOTg2MTc4OGRlMGQ1OTdjOCIKICAgaW50ZWdy aXR5IHNoYTEtVmdpdXJmd0F2bXdwQWQ5Zm1HRjRqZURWbDhnPQogCi1tc0AyLjEuMiwgbXNAXjIu MC4wOgorbXNAMi4xLjI6CiAgIHZlcnNpb24gIjIuMS4yIgogICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9tcy8tL21zLTIuMS4yLnRneiNkMDlkMWYzNTdiNDQzZjQ5MzM4 MmE4ZWIzY2NkMTgzODcyYWU2MDA5IgogICBpbnRlZ3JpdHkgc2hhNTEyLXNHa1B4K1ZqTXRtQTZN WDI3b0E0RkJGRUxGQ1paNFM0WHFlR09YQ3Y2OHRUK2piM3ZrL1J5YUtXUDBQVEt5V3RtTFNNMGIr YWRVVEV2YnMxUEVhSDJ3PT0KIAorbXNAXjIuMC4wOgorICB2ZXJzaW9uICIyLjEuMyIKKyAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbXMvLS9tcy0yLjEuMy50Z3ojNTc0 YzgxMzhjZTFkMmI1ODYxZjBiNDQ1NzlkYmFkZDYwYzY2MTViMiIKKyAgaW50ZWdyaXR5IHNoYTUx Mi02Rmx6dWJUTFpHM0oyYS9OVkNBbGVFaGp6cTVveGdIeWFDVTl5WVh2Y0xzdm9WYUhKcS9zNXhY STYvWFhQNnR6N1I5eEFPdEhuU08vdFh0RjNXUlRsQT09CisKIG5hbkBeMi4xNC4yOgogICB2ZXJz aW9uICIyLjE1LjAiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25h bi8tL25hbi0yLjE1LjAudGd6IzNmMzRhNDczZmYxOGUxNWMxYjU2MjZiNjI5MDNiNWFkNmU2NjVm ZWUiCiAgIGludGVncml0eSBzaGE1MTItOFp0dkVuQTJjNWFZQ1pZZDFjdmdkblU2Y3F3aXhSb1ln NzB4UExXVXdzNU9SVGEvbG53K3U0YW1peFJTL0FjNVU1bVFWZ3A5cG5sU1VuYk5XRmFXWlE9PQog Ci1uYW5vY29sb3JzQF4wLjEuMTI6Ci0gIHZlcnNpb24gIjAuMS4xMiIKLSAgcmVzb2x2ZWQgImh0 dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbmFub2NvbG9ycy8tL25hbm9jb2xvcnMtMC4xLjEy LnRneiM4NTc3NDgyYzU4Y2JkN2I1YmIxNjgxZGI0Y2Y0OGYxMWE4N2ZkNWY2IgotICBpbnRlZ3Jp dHkgc2hhNTEyLTJuTUhxZzF4NVBVK3VueFg3UEdZN0F1WXhsMnFEeDdQU3JUUmppenI4c3hkZDNs LzNoQnVXV2FraTYycW10WW0yVTVpNFo1RTdHYmpseURGaHM5L0VRPT0KLQotbmFub2lkQF4zLjAu MCwgbmFub2lkQF4zLjEuMjM6CituYW5vaWRAXjMuMC4wOgogICB2ZXJzaW9uICIzLjIuMCIKICAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbmFub2lkLy0vbmFub2lkLTMu Mi4wLnRneiM2MjY2NzUyMmRhNjY3Mzk3MWNjYTkxNmE2ZDNlZmYzZjQxNWZmODBjIgogICBpbnRl Z3JpdHkgInNoYTEtWW1aMUl0cG1jNWNjeXBGcWJUNy9QMEZmK0F3PSBzaGE1MTItZm1zWllhOWxw bjY5QWQ1ZURuN0ZNY25uU1IrOFIzNFc5cUpFaWp4WWhUYmZPV3pyMjJuMVF4Q016WExLK09EeVcy OTczVjNGdXg5NTlpUW9VeHpVSUE9PSIKIAorbmFub2lkQF4zLjEuMzA6CisgIHZlcnNpb24gIjMu MS4zMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbmFub2lkLy0v bmFub2lkLTMuMS4zMC50Z3ojNjNmOTNjYzU0OGQyYTExM2RjNWRmYmM2M2JmYTA5ZTJiOWI2NDM2 MiIKKyAgaW50ZWdyaXR5IHNoYTUxMi16SnB1UER3T3Y4RDJ6cTJXUm9NZTFIc2ZadGhWZXdwZWw5 Q0F2VGZjLzJtQkQxdVVUL2FnYzVmN0dIR1dYbFlrRnZpMW1WeGU0SWp2UDJITnJvcDduUT09CisK IG5hbm9wb3BAXjIuMS4wOgogICB2ZXJzaW9uICIyLjEuMCIKICAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vbmFub3BvcC8tL25hbm9wb3AtMi4xLjAudGd6IzIzNDc2NTEz Y2VlMjQwNTg4OGFmZDJlOGE0YjU0MDY2YjcwYjllNjAiCkBAIC03ODM4LDkgKzc1MjIsOSBAQCBu aWNlLXRyeUBeMS4wLjQ6CiAgIGludGVncml0eSBzaGE1MTItMW5oNDVkZWViNW9sTlk3ZVg4MkJr UE83U1N4UjVTU1lKaVBUclRkRlVWWXdBbDhDS01BNU45UGpUWWtIaVJqaXNWY3hjUTFIWGRMaHgy cXh4SnpMTlE9PQogCiBub2RlLWd5cEBeOC4xLjA6Ci0gIHZlcnNpb24gIjguMy4wIgotICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub2RlLWd5cC8tL25vZGUtZ3lwLTgu My4wLnRneiNlYmMzNmExNDZkNDUwOTVlMWM2YWY2Y2NiMGU0N2QxYzhmYzNmZTY5IgotICBpbnRl Z3JpdHkgc2hhNTEyLWUrdm1LeVRpeWJLZ3JtdnM0TTJSRUZLQ25PZCtOY3JBQW5uOTlZa282TlFB K3paZE1sUnZiSVVIb2pmc0hyU1ExQ2RkTGdabkhpY25FVmdESHppSnpBPT0KKyAgdmVyc2lvbiAi OC40LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vZGUtZ3lw Ly0vbm9kZS1neXAtOC40LjAudGd6IzZlMTExMmIxMDYxN2YwZjg1NTljNjRiM2Y3MzdlODEwOWU1 YTgzMzgiCisgIGludGVncml0eSBzaGE1MTItQmkvb0NtNWJINkYrRm16ZlV4SnBQYXhNRXlJaHN6 VUxHUjNUcHJtVGVrdTgvZE1GY2RUY3lwazEyME5lWnFFdDU0cjFCcmdFS3RtMmpKaXVJS0UyOFE9 PQogICBkZXBlbmRlbmNpZXM6CiAgICAgZW52LXBhdGhzICJeMi4yLjAiCiAgICAgZ2xvYiAiXjcu MS40IgpAQCAtNzg1MywxMSArNzUzNyw2IEBAIG5vZGUtZ3lwQF44LjEuMDoKICAgICB0YXIgIl42 LjEuMiIKICAgICB3aGljaCAiXjIuMC4yIgogCi1ub2RlLXJlbGVhc2VzQF4xLjEuNzE6Ci0gIHZl cnNpb24gIjEuMS43MiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v bm9kZS1yZWxlYXNlcy8tL25vZGUtcmVsZWFzZXMtMS4xLjcyLnRneiMxNDgwMmFiNmIxMDM5YTc5 YTBjN2Q2NjJiNjEwYTViYmQ3NmVhY2JlIgotICBpbnRlZ3JpdHkgc2hhNTEyLUxMVW8rUHBIM2RV NlhpelgzaVZvdWJVTmhlRi9vd2pYQ1paNXlBQ0R4Tm5QdGdGdWx1ZFYxWkwzYXlLMWtWZXA0MlJt bTArUjkvWTYwTlFiWjJiaWZ3PT0KLQogbm9kZS1yZWxlYXNlc0BeMi4wLjE6CiAgIHZlcnNpb24g IjIuMC4xIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub2RlLXJl bGVhc2VzLy0vbm9kZS1yZWxlYXNlcy0yLjAuMS50Z3ojM2QxZDM5NWYyMDRmMWYyZjI5YTU0MzU4 YjlmYjY3ODc2NWFkMmZjNSIKQEAgLTc4ODksMTAgKzc1NjgsMTAgQEAgbm9ybWFsaXplLXVybEAy LjAuMToKICAgICBxdWVyeS1zdHJpbmcgIl41LjAuMSIKICAgICBzb3J0LWtleXMgIl4yLjAuMCIK IAotbm9ybWFsaXplLXVybEBeNC41LjA6Ci0gIHZlcnNpb24gIjQuNS4xIgotICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ub3JtYWxpemUtdXJsLy0vbm9ybWFsaXplLXVy bC00LjUuMS50Z3ojMGRkOTBjZjEyODhlZTFkMTMxM2I4NzA4MWM5YTU5MzJlZTQ4NTE4YSIKLSAg aW50ZWdyaXR5IHNoYTUxMi05VVpDRlJIUWROcmZUcEdnOCsxSU5JZzkzQjZ6RTBhWE1WRmt3MVdG d3ZPNFNsWnl3VTZhTGc1T2YwQXAvUGdjYlN3NExOeHZNV1hNZXVnd01DWDBBQT09Citub3JtYWxp emUtdXJsQF42LjAuMToKKyAgdmVyc2lvbiAiNi4xLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL25vcm1hbGl6ZS11cmwvLS9ub3JtYWxpemUtdXJsLTYuMS4wLnRn eiM0MGQwODg1YjUzNWRlZmZlM2YzMTQ3YmVjODc3ZDA1ZmU0YzU2NjhhIgorICBpbnRlZ3JpdHkg c2hhNTEyLURsTCtYd095M054QVE4eHVDMG9rUGdLNDZpdVZOQUswMVlON1J1ZVlCcXFGZUdzQmpW OVhtQ0F6QWRndCs2NjdiQ2w1a1BoOUVxS0tEd25hUEcxSTdBPT0KIAogbm90aWZpY2FyQF4xLjAu MToKICAgdmVyc2lvbiAiMS4wLjEiCkBAIC03OTYzLDEwICs3NjQyLDEwIEBAIG9iamVjdC1hc3Np Z25AXjQsIG9iamVjdC1hc3NpZ25AXjQuMC4xLCBvYmplY3QtYXNzaWduQF40LjEuMCwgb2JqZWN0 LWFzc2lnbkBeNC4xCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29i amVjdC1hc3NpZ24vLS9vYmplY3QtYXNzaWduLTQuMS4xLnRneiMyMTA5YWRjNzk2NTg4N2NmYzA1 Y2JiZDQ0MmNhYzhiZmJiMzYwODYzIgogICBpbnRlZ3JpdHkgc2hhMS1JUW10eDVaWWg4L0FYTHZV UXNySXY3czJDR009CiAKLW9iamVjdC1pbnNwZWN0QF4xLjEwLjMsIG9iamVjdC1pbnNwZWN0QF4x LjcuMCwgb2JqZWN0LWluc3BlY3RAXjEuOS4wOgotICB2ZXJzaW9uICIxLjEwLjMiCi0gIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29iamVjdC1pbnNwZWN0Ly0vb2JqZWN0 LWluc3BlY3QtMS4xMC4zLnRneiNjMmFhN2QyZDA5ZjUwYzk5Mzc1NzA0ZjdhMGFkZjI0YzU3ODJk MzY5IgotICBpbnRlZ3JpdHkgc2hhNTEyLWU1bUNKbFNIN3BvQU5mQzh6OFM5czlTMklONS80WmIz YVozM2Y1czhZcW9hekNGek5MbG9MVThyNVZDRytHN1dvcUx2QUFab1ZNY3kzdHAvM1gwUGx3PT0K K29iamVjdC1pbnNwZWN0QF4xLjExLjAsIG9iamVjdC1pbnNwZWN0QF4xLjcuMCwgb2JqZWN0LWlu c3BlY3RAXjEuOS4wOgorICB2ZXJzaW9uICIxLjExLjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL29iamVjdC1pbnNwZWN0Ly0vb2JqZWN0LWluc3BlY3QtMS4xMS4w LnRneiM5ZGNlYjE0NmNlZGQ0MTQ4YTBkOWU1MWFiODhkMzRjZjUwOTkyMmIxIgorICBpbnRlZ3Jp dHkgc2hhNTEyLWpwN2lrUzZTZDNHeFFmWkpQeUgzY2pjYkpGNkdaUENsZ2RWK0VGeWdqRkxRNUZt Vy9kUlVuVGQ5UFE5azBKaG9ORGFiV0ZicEYxeUNkU1dDQzZnZXhnPT0KIAogb2JqZWN0LWlzQF4x LjAuMiwgb2JqZWN0LWlzQF4xLjEuMjoKICAgdmVyc2lvbiAiMS4xLjUiCkBAIC03OTkxLDQyICs3 NjcwLDQ5IEBAIG9iamVjdC5hc3NpZ25AXjQuMS4wLCBvYmplY3QuYXNzaWduQF40LjEuMjoKICAg ICBoYXMtc3ltYm9scyAiXjEuMC4xIgogICAgIG9iamVjdC1rZXlzICJeMS4xLjEiCiAKLW9iamVj dC5lbnRyaWVzQF4xLjEuMSwgb2JqZWN0LmVudHJpZXNAXjEuMS4yLCBvYmplY3QuZW50cmllc0Be MS4xLjM6Ci0gIHZlcnNpb24gIjEuMS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9vYmplY3QuZW50cmllcy8tL29iamVjdC5lbnRyaWVzLTEuMS40LnRneiM0M2Nj ZjlhNTBiYzVmZDViNjQ5ZDQ1YWIxYTU3OWYyNGUwODhjYWZkIgotICBpbnRlZ3JpdHkgc2hhNTEy LWg0TFdLV0Urd0tRR2h0TWpaRUJ1ZDd1TEdocXlMd2o4ZnBIT2FyWmhEMnVZM0M5Y1J0azU3VlE4 OWtlM21vQnlMWE1lZHFzM1hDSHp5YjRBbUEyRGpBPT0KK29iamVjdC5lbnRyaWVzQF4xLjEuMSwg b2JqZWN0LmVudHJpZXNAXjEuMS4yLCBvYmplY3QuZW50cmllc0BeMS4xLjQ6CisgIHZlcnNpb24g IjEuMS41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vYmplY3Qu ZW50cmllcy8tL29iamVjdC5lbnRyaWVzLTEuMS41LnRneiNlMWFjZGQxN2M0ZGUyY2Q5NmQ1YTA4 NDg3Y2ZiOWRiODRkODgxODYxIgorICBpbnRlZ3JpdHkgc2hhNTEyLVR5eG1qVW9aZ2dkNE9yclUx VzY2Rk1ERzZDdXFKeHNGdnltZXlYSTUxK3ZRTE42N3pZZlpzZXB0UmdlNzAza0tRZG80dWNjZ0FL ZWJYRmNSQ3prNCtnPT0KICAgZGVwZW5kZW5jaWVzOgogICAgIGNhbGwtYmluZCAiXjEuMC4yIgog ICAgIGRlZmluZS1wcm9wZXJ0aWVzICJeMS4xLjMiCi0gICAgZXMtYWJzdHJhY3QgIl4xLjE4LjIi CisgICAgZXMtYWJzdHJhY3QgIl4xLjE5LjEiCiAKIG9iamVjdC5mcm9tZW50cmllc0BeMi4wLjMs IG9iamVjdC5mcm9tZW50cmllc0BeMi4wLjQ6Ci0gIHZlcnNpb24gIjIuMC40IgotICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vYmplY3QuZnJvbWVudHJpZXMvLS9vYmpl Y3QuZnJvbWVudHJpZXMtMi4wLjQudGd6IzI2ZTFiYTVjNDU3MWM1YzZmMDg5MGNlZjQ0NzMwNjY0 NTZhMTIwYjgiCi0gIGludGVncml0eSBzaGE1MTItRXNGQnNoczVSVVVwUUVZMUQ0cS9tNTlrTWZ6 NFlKdnh1TkNKY3Yvald3T0pyMzRFYVZuRzExWnJaYTBVSEIzd256VjF3eDhtNThUNGhRTDhJdU5Y bFE9PQorICB2ZXJzaW9uICIyLjAuNSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vb2JqZWN0LmZyb21lbnRyaWVzLy0vb2JqZWN0LmZyb21lbnRyaWVzLTIuMC41LnRn eiM3YjM3YjIwNTEwOWMyMWU3NDFlNjA1NzI3ZmU4YjBhZDVmYTA4MjUxIgorICBpbnRlZ3JpdHkg c2hhNTEyLUNBeUc1bVdRUlJpQlU1N1JlNEZLb1RCalhmRG9Od2RGVkgyWTF0UzlQcUNzZlVUeW1B b2hPa0VNU0czYVJOS212NGxWM083cDFldDdjMTg3cTZieW53PT0KICAgZGVwZW5kZW5jaWVzOgog ICAgIGNhbGwtYmluZCAiXjEuMC4yIgogICAgIGRlZmluZS1wcm9wZXJ0aWVzICJeMS4xLjMiCi0g ICAgZXMtYWJzdHJhY3QgIl4xLjE4LjAtbmV4dC4yIgotICAgIGhhcyAiXjEuMC4zIgorICAgIGVz LWFic3RyYWN0ICJeMS4xOS4xIgogCiBvYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9yc0Be Mi4xLjA6Ci0gIHZlcnNpb24gIjIuMS4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9vYmplY3QuZ2V0b3ducHJvcGVydHlkZXNjcmlwdG9ycy8tL29iamVjdC5nZXRv d25wcm9wZXJ0eWRlc2NyaXB0b3JzLTIuMS4yLnRneiMxYmQ2M2FlYWNmMGQ1ZDJkMmYzMWI1ZTM5 M2IwM2E3YzYwMWEyM2Y3IgotICBpbnRlZ3JpdHkgc2hhNTEyLVd0eGVLU3pmQmpsekwrRjliN003 aGV3RHpNd3krQzhOUnNzSGQxWXJObHpIeklEclhjWGlOT01yZXpkQUVNNFVYaXhnVit2dm55QmVO N1J5Z2wydHRRPT0KKyAgdmVyc2lvbiAiMi4xLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL29iamVjdC5nZXRvd25wcm9wZXJ0eWRlc2NyaXB0b3JzLy0vb2JqZWN0 LmdldG93bnByb3BlcnR5ZGVzY3JpcHRvcnMtMi4xLjMudGd6I2IyMjNjZjM4ZTE3ZmVmYjk3YTYz YzEwYzkxZGY3MmNjYjM4NmRmOWUiCisgIGludGVncml0eSBzaGE1MTItVmREb0N3dkpJNFFkQzZu ZGpwcUZtb0wzLytIeGZmRkJiY0p6S2k1aHdMTHFxeDNtZGJlZFJwZlpEZEswU3JPU2F1ajhYNEd6 QnZuRFpsNHZUTjdkT3c9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgY2FsbC1iaW5kICJeMS4wLjIi CiAgICAgZGVmaW5lLXByb3BlcnRpZXMgIl4xLjEuMyIKLSAgICBlcy1hYnN0cmFjdCAiXjEuMTgu MC1uZXh0LjIiCisgICAgZXMtYWJzdHJhY3QgIl4xLjE5LjEiCiAKLW9iamVjdC52YWx1ZXNAXjEu MS4wLCBvYmplY3QudmFsdWVzQF4xLjEuMSwgb2JqZWN0LnZhbHVlc0BeMS4xLjM6Ci0gIHZlcnNp b24gIjEuMS40IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vYmpl Y3QudmFsdWVzLy0vb2JqZWN0LnZhbHVlcy0xLjEuNC50Z3ojMGQyNzM3NjI4MzNlODE2YjY5M2E2 MzdkMzAwNzNlNzA1MTUzNWIzMCIKLSAgaW50ZWdyaXR5IHNoYTUxMi1UbkdvN2o0WFNuS1FvSzNN ZnZrenFLQ2kwblZlL0Q5STlJandUTllkYi9meFlIcGpybHVIVk9ndzBBRjZqclJGR01QSGRmdWlk UjA5dElEaUl2bmFTZz09CitvYmplY3QuaGFzb3duQF4xLjAuMDoKKyAgdmVyc2lvbiAiMS4xLjAi CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29iamVjdC5oYXNvd24v LS9vYmplY3QuaGFzb3duLTEuMS4wLnRneiM3MjMyZWQyNjZmMzRkMTk3ZDE1Y2FjNTg4MDIzMmY3 YTQ3OTBhZmU1IgorICBpbnRlZ3JpdHkgc2hhNTEyLU1oallSZmozR0JsaFNrREhvNlFtdmdqUkxY UTJ6bmRhYmRmM25YMHlUeVpLOXJQZnhiNnVScEFhYzhIWE5MeTFHcHFXdFo4MVFoNHYzdU9sczJz UkFnPT0KKyAgZGVwZW5kZW5jaWVzOgorICAgIGRlZmluZS1wcm9wZXJ0aWVzICJeMS4xLjMiCisg ICAgZXMtYWJzdHJhY3QgIl4xLjE5LjEiCisKK29iamVjdC52YWx1ZXNAXjEuMS4wLCBvYmplY3Qu dmFsdWVzQF4xLjEuMSwgb2JqZWN0LnZhbHVlc0BeMS4xLjQ6CisgIHZlcnNpb24gIjEuMS41Igor ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vYmplY3QudmFsdWVzLy0v b2JqZWN0LnZhbHVlcy0xLjEuNS50Z3ojOTU5ZjYzZTNjZTllZjEwODcyMDMzMzA4MjEzMWU0YTQ1 OWI3MTZhYyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1RVVpSVzBpbFEzUG5QcGJOdGdkTlYxUERiRXFM SWlTRkIzbCtFbkd0QlEvOFNVVExqMVBad3RRSEFCWnRMZ3dwSlpUU1podUdMT0drNTdEcngySXZZ Zz09CiAgIGRlcGVuZGVuY2llczoKICAgICBjYWxsLWJpbmQgIl4xLjAuMiIKICAgICBkZWZpbmUt cHJvcGVydGllcyAiXjEuMS4zIgotICAgIGVzLWFic3RyYWN0ICJeMS4xOC4yIgorICAgIGVzLWFi c3RyYWN0ICJeMS4xOS4xIgogCiBvbi1maW5pc2hlZEB+Mi4zLjA6CiAgIHZlcnNpb24gIjIuMy4w IgpAQCAtODQ0OCwxOSArODEzNCwyMCBAQCBwb3N0Y3NzLWNhbGNAXjguMC4wOgogICAgIHBvc3Rj c3Mtc2VsZWN0b3ItcGFyc2VyICJeNi4wLjIiCiAgICAgcG9zdGNzcy12YWx1ZS1wYXJzZXIgIl40 LjAuMiIKIAotcG9zdGNzcy1jb2xvcm1pbkBeNS4xLjE6Ci0gIHZlcnNpb24gIjUuMS4xIgotICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLWNvbG9ybWluLy0v cG9zdGNzcy1jb2xvcm1pbi01LjEuMS50Z3ojODM0ZDI2MmY2MDIxZjgzMmQ5MDg1ZTM1NWYwOGFk ZTI4OGE5MmExZCIKLSAgaW50ZWdyaXR5IHNoYTUxMi1TeVRtcUtLTjZQeVlOZWVLRUMwaHFJUDVD RHVwck8xaEh1cmRXMWFlekR5Zm9mRFVPbjd5N01heGNvbGJzVzNvYXpQd0ZpR2lZMzBYUmlXMVY0 aVpwQT09Citwb3N0Y3NzLWNvbG9ybWluQF41LjIuMToKKyAgdmVyc2lvbiAiNS4yLjEiCisgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtY29sb3JtaW4vLS9w b3N0Y3NzLWNvbG9ybWluLTUuMi4xLnRneiM2ZTQ0NGE4MDZmZDNjNTc4ODI3ZGJhZDAyMjc2MmRm MTkzMzQ0MTRkIgorICBpbnRlZ3JpdHkgc2hhNTEyLVZWd01yRVlMY0hZZVBVWVY5OVltdW9pN1do S3JNR3kvVjkva1RTMERrQ29KWW1tamRPTW5leWh6WVV4Y05ndGVLRFZicmV3T2tTTTdXamUvTUZ3 eHpBPT0KICAgZGVwZW5kZW5jaWVzOgotICAgIGJyb3dzZXJzbGlzdCAiXjQuMTYuMCIKLSAgICBj b2xvcmQgIl4yLjAuMCIKKyAgICBicm93c2Vyc2xpc3QgIl40LjE2LjYiCisgICAgY2FuaXVzZS1h cGkgIl4zLjAuMCIKKyAgICBjb2xvcmQgIl4yLjkuMSIKICAgICBwb3N0Y3NzLXZhbHVlLXBhcnNl ciAiXjQuMS4wIgogCi1wb3N0Y3NzLWNvbnZlcnQtdmFsdWVzQF41LjAuMToKLSAgdmVyc2lvbiAi NS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3Mt Y29udmVydC12YWx1ZXMvLS9wb3N0Y3NzLWNvbnZlcnQtdmFsdWVzLTUuMC4xLnRneiM0ZWMxOWQ2 MDE2NTM0ZTMwZTMxMDJmZGY0MTRlNzUzMzk4NjQ1MjMyIgotICBpbnRlZ3JpdHkgc2hhNTEyLUMz elIxRG8yQmtLa0NnQzBnM3NGOFRTMGtvRjJHK21OOHh4YXlaeDNmMTBjSVJtVGFBbnBncFJRWmpO ZWtUWnhNMmNpU1BvaDJJV0ptMFZaeDhOb1FnPT0KK3Bvc3Rjc3MtY29udmVydC12YWx1ZXNAXjUu MC4yOgorICB2ZXJzaW9uICI1LjAuMiIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vcG9zdGNzcy1jb252ZXJ0LXZhbHVlcy8tL3Bvc3Rjc3MtY29udmVydC12YWx1ZXMt NS4wLjIudGd6Izg3OWI4NDlkYzM2NzdjN2Q2YmM5NGI2YTJjMWEzZjA4MDg3OTgwNTkiCisgIGlu dGVncml0eSBzaGE1MTItS1EwNEUyeWFkbWZhMUxxWG03VUlEd1cxZnR4VS9RV1ptejZOS25IblV2 SjNMRVliYmNYNmkzMjlmL2lnK1duRUJ5SGVndWxvY1hyRUNhWkdMcEw4Wmc9PQogICBkZXBlbmRl bmNpZXM6CiAgICAgcG9zdGNzcy12YWx1ZS1wYXJzZXIgIl40LjEuMCIKIApAQCAtODQ4NSw5ICs4 MTcyLDkgQEAgcG9zdGNzcy1kaXNjYXJkLW92ZXJyaWRkZW5AXjUuMC4xOgogICBpbnRlZ3JpdHkg c2hhNTEyLVkyOEg3eTkzTDJCcEpocmRVUjJTUjJmblNzVCszVFZ4MU5tVlFMYmNuWld3SVVwSjdt ZmNUQzZaYTlNMlBHNnc4ajdVUVJmenhxbjhqVTJWd0Z4bzNRPT0KIAogcG9zdGNzcy1sb2FkZXJA XjUuMC4wOgotICB2ZXJzaW9uICI1LjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku eWFybnBrZy5jb20vcG9zdGNzcy1sb2FkZXIvLS9wb3N0Y3NzLWxvYWRlci01LjEuMC50Z3ojOGEz NmYxOGI4OTg5YmVlOTQxNzI2MjZiMjVmMmI5Y2M2MTYwZmI0MyIKLSAgaW50ZWdyaXR5IHNoYTUx Mi10R2dLWkY2TnRuMTZ6SVdYdDd5S1YxOUwwcklTYW96SFBDZmRQdCthSE9uVFpycmVlcVZSNmhD a0ZoWllmSjZLZ3B5SUZSa0t1Vzh5Z0h0VWlkNEdsQT09CisgIHZlcnNpb24gIjUuMy4wIgorICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLWxvYWRlci8tL3Bv c3Rjc3MtbG9hZGVyLTUuMy4wLnRneiMxNjU3Zjg2OWU0OGQ0ZmRiMDE4YTQwNzcxYzIzNWU0OTll ZTI2MjQ0IgorICBpbnRlZ3JpdHkgc2hhNTEyLS8rWjFSQW1zc2RpU0xnSVp3bkpId0JNbmxBQlBn RjdnaVl6VE4yTk9mcjlEMjFJSlo0bVFDMVIybWl3cDgwem5vOU00ek1EL3VtR0k4Y1IrMkVMNXp3 PT0KICAgZGVwZW5kZW5jaWVzOgogICAgIGNvc21pY29uZmlnICJeNy4wLjAiCiAgICAga2xvbmEg Il4yLjAuNCIKQEAgLTg1MDIsMTIgKzgxODksMTIgQEAgcG9zdGNzcy1tZXJnZS1sb25naGFuZEBe NS4wLjI6CiAgICAgcG9zdGNzcy12YWx1ZS1wYXJzZXIgIl40LjEuMCIKICAgICBzdHlsZWhhY2tz ICJeNS4wLjEiCiAKLXBvc3Rjc3MtbWVyZ2UtcnVsZXNAXjUuMC4xOgotICB2ZXJzaW9uICI1LjAu MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1tZXJn ZS1ydWxlcy8tL3Bvc3Rjc3MtbWVyZ2UtcnVsZXMtNS4wLjEudGd6IzRmZjYxYzUwODlkODY4NDUx ODRhMGYxNDllODhkNjg3MDI4YmVmN2UiCi0gIGludGVncml0eSBzaGE1MTItVVI2UjVQaDBjOTZR QjlUTUJIM21sOC9rdlBDVGhQSGVwZGhScUFidk1SRFJIUUFDUEM4aU01TnBmSUMwMytWUk1aVEdY eTRML0J2RnpjREZDZ2IrZkE9PQorcG9zdGNzcy1tZXJnZS1ydWxlc0BeNS4wLjI6CisgIHZlcnNp b24gIjUuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0 Y3NzLW1lcmdlLXJ1bGVzLy0vcG9zdGNzcy1tZXJnZS1ydWxlcy01LjAuMi50Z3ojZDZlNGQ2NTAx OGJhZGJkYjdkY2M3ODljNGYzOWI5NDEzMDVkNDEwYSIKKyAgaW50ZWdyaXR5IHNoYTUxMi01SytN ZDdTM0d3QmV3ZkI0cmpEZW9sNlYvUlo4Uyt2NEI2NlprMmdDaFJxTFRDQzh5am5IUTYwMW9tajlU S2Z0UzE5T1BHcVovWHpvcXB6TlFRTHdiZz09CiAgIGRlcGVuZGVuY2llczoKLSAgICBicm93c2Vy c2xpc3QgIl40LjE2LjAiCisgICAgYnJvd3NlcnNsaXN0ICJeNC4xNi42IgogICAgIGNhbml1c2Ut YXBpICJeMy4wLjAiCiAgICAgY3NzbmFuby11dGlscyAiXjIuMC4xIgogICAgIHBvc3Rjc3Mtc2Vs ZWN0b3ItcGFyc2VyICJeNi4wLjUiCkBAIC04NTIwLDEzICs4MjA3LDEzIEBAIHBvc3Rjc3MtbWlu aWZ5LWZvbnQtdmFsdWVzQF41LjAuMToKICAgZGVwZW5kZW5jaWVzOgogICAgIHBvc3Rjc3MtdmFs dWUtcGFyc2VyICJeNC4xLjAiCiAKLXBvc3Rjc3MtbWluaWZ5LWdyYWRpZW50c0BeNS4wLjE6Ci0g IHZlcnNpb24gIjUuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9wb3N0Y3NzLW1pbmlmeS1ncmFkaWVudHMvLS9wb3N0Y3NzLW1pbmlmeS1ncmFkaWVudHMtNS4w LjEudGd6IzJkYzc5ZmQxYTFhZmNiNzJhOWU3MjdiYzU0OWNlODYwZjkzNTY1ZDIiCi0gIGludGVn cml0eSBzaGE1MTItb2RPd0JGQUluMndJditYWVJwb04yaFVWM3BQUWxnYkoxMFhlWFBxOFVZMk4r OVpHNDJ4dTQ1bFRuL2c5elorZDcwTktTUUQ2RU9pNlVpQ011M0ZON2c9PQorcG9zdGNzcy1taW5p ZnktZ3JhZGllbnRzQF41LjAuMzoKKyAgdmVyc2lvbiAiNS4wLjMiCisgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3MtbWluaWZ5LWdyYWRpZW50cy8tL3Bvc3Rj c3MtbWluaWZ5LWdyYWRpZW50cy01LjAuMy50Z3ojZjk3MGExMWNjNzFlMDhlOTA5NWU3OGVjM2E2 YjM0YjkxYzE5NTUwZSIKKyAgaW50ZWdyaXR5IHNoYTUxMi1aOTFPbDIybkI2WEpXKzVvZTMxK1l4 UnNZb294T2RGS2NiT3FZL1Y4RnhzZTFZM3ZxbE5ScGkxY3hDcW9BQ1pUUUVobCt4dnQ0aHNiV2lW NVIrWEk5UT09CiAgIGRlcGVuZGVuY2llczoKKyAgICBjb2xvcmQgIl4yLjkuMSIKICAgICBjc3Nu YW5vLXV0aWxzICJeMi4wLjEiCi0gICAgaXMtY29sb3Itc3RvcCAiXjEuMS4wIgogICAgIHBvc3Rj c3MtdmFsdWUtcGFyc2VyICJeNC4xLjAiCiAKIHBvc3Rjc3MtbWluaWZ5LXBhcmFtc0BeNS4wLjE6 CkBAIC04NjI3LDEzICs4MzE0LDEzIEBAIHBvc3Rjc3Mtbm9ybWFsaXplLXVuaWNvZGVAXjUuMC4x OgogICAgIGJyb3dzZXJzbGlzdCAiXjQuMTYuMCIKICAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAi XjQuMS4wIgogCi1wb3N0Y3NzLW5vcm1hbGl6ZS11cmxAXjUuMC4xOgotICB2ZXJzaW9uICI1LjAu MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1ub3Jt YWxpemUtdXJsLy0vcG9zdGNzcy1ub3JtYWxpemUtdXJsLTUuMC4xLnRneiNmZmE5ZmU1NDU5MzVk OGI1N2JlY2JiYjc5MzRkZDVlMjQ1NTEzMTgzIgotICBpbnRlZ3JpdHkgc2hhNTEyLWhrYkcwajU4 WjFNODMwL0NKNzNWc1A3Z3ZsRzF5Ris0eTdGZDF3NHREMmM3Q2FBMlBzbGwrcFE2ZVFodGg5eTlF YXFaU0x6YW1mZi9EME1aQk1iWVNnPT0KK3Bvc3Rjc3Mtbm9ybWFsaXplLXVybEBeNS4wLjI6Cisg IHZlcnNpb24gIjUuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9wb3N0Y3NzLW5vcm1hbGl6ZS11cmwvLS9wb3N0Y3NzLW5vcm1hbGl6ZS11cmwtNS4wLjIudGd6 I2RkY2RmYjdjZWRlMTI3MDc0MGNmM2U0ZGZjNjAwOGJkOTZhYmM3NjMiCisgIGludGVncml0eSBz aGE1MTItazRqTFRQVXhSRVE1YnBhakZRWnB4OGJDRjJVcmxxT1R6UDlrRXFjRW5PZndzUnNoV3My K29BRklIZkRRQjhHTzJQYVVhU0UwTmxUQVl0Ymx1WlRsSFE9PQogICBkZXBlbmRlbmNpZXM6CiAg ICAgaXMtYWJzb2x1dGUtdXJsICJeMy4wLjMiCi0gICAgbm9ybWFsaXplLXVybCAiXjQuNS4wIgor ICAgIG5vcm1hbGl6ZS11cmwgIl42LjAuMSIKICAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjQu MS4wIgogCiBwb3N0Y3NzLW5vcm1hbGl6ZS13aGl0ZXNwYWNlQF41LjAuMToKQEAgLTg2NDMsMTAg KzgzMzAsMTAgQEAgcG9zdGNzcy1ub3JtYWxpemUtd2hpdGVzcGFjZUBeNS4wLjE6CiAgIGRlcGVu ZGVuY2llczoKICAgICBwb3N0Y3NzLXZhbHVlLXBhcnNlciAiXjQuMS4wIgogCi1wb3N0Y3NzLW9y ZGVyZWQtdmFsdWVzQF41LjAuMToKLSAgdmVyc2lvbiAiNS4wLjEiCi0gIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Bvc3Rjc3Mtb3JkZXJlZC12YWx1ZXMvLS9wb3N0Y3Nz LW9yZGVyZWQtdmFsdWVzLTUuMC4xLnRneiM3OWVmNmUyYmQyNjdjY2FkM2ZjMGM0ZjRhNTg2ZGZk MDFjMTMxZjY0IgotICBpbnRlZ3JpdHkgc2hhNTEyLTZta0NGNUJRMjVIdkVjRGZyTUhDTExGSGxy YUJTbE9YRm5RTUhZaFNwRE8vNWpTUjFrOExkRVhPa3YrNyt1elc2bzZ0QlllYTFLbTB3UVNSa1BK a3dBPT0KK3Bvc3Rjc3Mtb3JkZXJlZC12YWx1ZXNAXjUuMC4yOgorICB2ZXJzaW9uICI1LjAuMiIK KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1vcmRlcmVk LXZhbHVlcy8tL3Bvc3Rjc3Mtb3JkZXJlZC12YWx1ZXMtNS4wLjIudGd6IzFmMzUxNDI2OTc3YmUw MGUwZjc2NWIzMTY0YWQ3NTNkYWM4ZWQwNDQiCisgIGludGVncml0eSBzaGE1MTItOEFGWURTT1lX ZWJKWUx5SmkzZnlqbDZDcU1FRy9VVndvcmppeUsxcjU3M0k1NmtiM2U4NzlzQ0pMR3ZSM21lcmor ZkFkUHBWcGxYS1FaditleTZDZ1E9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgY3NzbmFuby11dGls cyAiXjIuMC4xIgogICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeNC4xLjAiCkBAIC04Njc1LDEz ICs4MzYyLDEzIEBAIHBvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyQF42LjAuMiwgcG9zdGNzcy1zZWxl Y3Rvci1wYXJzZXJAXjYuMC40LCBwb3N0Y3NzLXNlbGVjdG9yCiAgICAgY3NzZXNjICJeMy4wLjAi CiAgICAgdXRpbC1kZXByZWNhdGUgIl4xLjAuMiIKIAotcG9zdGNzcy1zdmdvQF41LjAuMToKLSAg dmVyc2lvbiAiNS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L3Bvc3Rjc3Mtc3Znby8tL3Bvc3Rjc3Mtc3Znby01LjAuMS50Z3ojNmVkNWUwMWUxNjRlNTkyMDQ5 Nzg5OTRkODQ0YzY1M2EzMzFhODEwMCIKLSAgaW50ZWdyaXR5IHNoYTUxMi1jRDdERm82dEY5aTVl V3Z3dEk0aXJLT0hDcG1BU0ZTMHh2WjVFUUlnRWRBMUFXZk0vWGlISFkvaXNzMGdjS0hoa3F3Z1lt dW8yTTBLaEpMZDVVczZtZz09Citwb3N0Y3NzLXN2Z29AXjUuMC4zOgorICB2ZXJzaW9uICI1LjAu MyIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy1zdmdv Ly0vcG9zdGNzcy1zdmdvLTUuMC4zLnRneiNkOTQ1MTg1NzU2ZTVkZmFhZTA3ZjllZGIwZDNjYWU3 ZmY3OWY5YjMwIgorICBpbnRlZ3JpdHkgc2hhNTEyLTQxWFpVQTF3TkRBWnJRM1hnV1JFTC9NMnpT dzhMSlB2YjVaV2l2bGpCc1VRQUdvRUtNWW02b2tIc1RqSnhLWUk0TTc1UlFFSDRLWWxFTTUyVndk WFZBPT0KICAgZGVwZW5kZW5jaWVzOgogICAgIHBvc3Rjc3MtdmFsdWUtcGFyc2VyICJeNC4xLjAi Ci0gICAgc3ZnbyAiXjIuMy4wIgorICAgIHN2Z28gIl4yLjcuMCIKIAogcG9zdGNzcy11bmlxdWUt c2VsZWN0b3JzQF41LjAuMToKICAgdmVyc2lvbiAiNS4wLjEiCkBAIC04Njk3LDE0ICs4Mzg0LDE0 IEBAIHBvc3Rjc3MtdmFsdWUtcGFyc2VyQF40LjAuMiwgcG9zdGNzcy12YWx1ZS1wYXJzZXJAXjQu MS4wOgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9wb3N0Y3NzLXZh bHVlLXBhcnNlci8tL3Bvc3Rjc3MtdmFsdWUtcGFyc2VyLTQuMS4wLnRneiM0NDNmNmEyMGNlZDY0 ODFhMmJkYTRmYTg1MzJhNmU1NWQ3ODlhMmNiIgogICBpbnRlZ3JpdHkgc2hhNTEyLTk3RFhPRmJR SmhrNzFuZTUvTXQ2Y091Nnl4c1NmTTBRR1F5bDBMMjVHY2E0eUdXRUdKYWlnN2w3Z2JDWDYyM1Zx VEJOR0xSTGFWVUNuTmtjZWRsUlNRPT0KIAotcG9zdGNzc0BeOC4yLjE1LCBwb3N0Y3NzQF44LjIu NiwgcG9zdGNzc0BeOC4yLjk6Ci0gIHZlcnNpb24gIjguMi4xNSIKLSAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vcG9zdGNzcy8tL3Bvc3Rjc3MtOC4yLjE1LnRneiM5ZTY2 Y2NmMDcyOTI4MTdkMjI2ZmMzMTVjYmJmOWJjMTQ4ZmJjYTY1IgotICBpbnRlZ3JpdHkgc2hhNTEy LTJ6TzNiMjZlSkQvOHJiMTA2UXUybzdRZ2c1Mk5ENUhQamN5UWlLMkI5OE8zODhoNDNBNDQ4TENz bEMwZEkyUDk3d0NBUVJKc0Z2d1RSY1h4VEtkcytRPT0KK3Bvc3Rjc3NAXjguMi4xNSwgcG9zdGNz c0BeOC4zLjU6CisgIHZlcnNpb24gIjguMy4xMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vcG9zdGNzcy8tL3Bvc3Rjc3MtOC4zLjExLnRneiNjM2JlY2E3ZWE4MTFj ZDVlMWM0YTNlYzZkMmU3NTk5ZWYxZjhmODU4IgorICBpbnRlZ3JpdHkgc2hhNTEyLWhDbWxVQUls VWlhdjhYZHF3M0lvNExjcEExRE90N2gzTFNUQUM0RzZKR0hGRmFXekk2cXZGdDlvaWx2bDhCbWti QlJYMUloTTkwWkFtcGs2OHpjY1FBPT0KICAgZGVwZW5kZW5jaWVzOgotICAgIGNvbG9yZXR0ZSAi XjEuMi4yIgotICAgIG5hbm9pZCAiXjMuMS4yMyIKLSAgICBzb3VyY2UtbWFwICJeMC42LjEiCisg ICAgbmFub2lkICJeMy4xLjMwIgorICAgIHBpY29jb2xvcnMgIl4xLjAuMCIKKyAgICBzb3VyY2Ut bWFwLWpzICJeMC42LjIiCiAKIHByZWNvbmRAXjAuMi4zOgogICB2ZXJzaW9uICIwLjIuMyIKQEAg LTkwNDQsNiArODczMSwxMyBAQCByZWFjdC1jaGVja2JveC10cmVlQF4xLjcuMjoKICAgICBuYW5v aWQgIl4zLjAuMCIKICAgICBwcm9wLXR5cGVzICJeMTUuNS44IgogCityZWFjdC1kYXRhLWdyaWRA XjcuMC4wLWJldGEuMTE6CisgIHZlcnNpb24gIjcuMC4wLWJldGEuMTEiCisgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0LWRhdGEtZ3JpZC8tL3JlYWN0LWRhdGEt Z3JpZC03LjAuMC1iZXRhLjExLnRneiMxNmU4N2Y4N2FjMmQxZjJjMzM4MTY4MzdmMWJlM2M0MjEw ZjFlNGIyIgorICBpbnRlZ3JpdHkgc2hhNTEyLUlqSmYzR1o3SHhIN3VTb0RhUWhLWFY5K0w4STY0 eFJLZ0xWUU5DYmxTZ3ZFWTIwbWcyWGxNbUVqaVY5S3FST1RVTTJNcUkrSWxFcGVCTENaUkIzbUV3 PT0KKyAgZGVwZW5kZW5jaWVzOgorICAgIGNsc3ggIl4xLjEuMSIKKwogcmVhY3QtZG9tQF4xNi42 LjM6CiAgIHZlcnNpb24gIjE2LjE0LjAiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNi4xNC4wLnRneiM3YWQ4MzhlYzI5YTc3 N2ZiM2M3NWMzYTE5MGY2NjFjZjkyYWI4Yjg5IgpAQCAtOTA4OCwxMCArODc4MiwxNyBAQCByZWFj dC1pc0BeMTYuMTIuMCwgcmVhY3QtaXNAXjE2LjEzLjEsIHJlYWN0LWlzQF4xNi43LjAsIHJlYWN0 LWlzQF4xNi44LjAsIHJlYWN0LQogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn LmNvbS9yZWFjdC1pcy8tL3JlYWN0LWlzLTE3LjAuMi50Z3ojZTY5MWQ0YThlOWM3ODkzNjU2NTU1 MzlhYjM3Mjc2MmIwZWZiNTRmMCIKICAgaW50ZWdyaXR5IHNoYTUxMi13MkdzeXVrTDYySUpubGFm Zi9uUmVnUFFSOTRDL1hYYW12TVdtU0hSSjR5N1RzLzRvY0dSbVRIdk9zOFBTRTZwQjNkV09yRC9u dWV1VTVzZHVCc1E0dz09CiAKLXJlYWN0LXByb3BlcnR5QDEuMC4xOgotICB2ZXJzaW9uICIxLjAu MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVhY3QtcHJvcGVy dHkvLS9yZWFjdC1wcm9wZXJ0eS0xLjAuMS50Z3ojNGFlNDIxMTU1N2QwYTBhZTA1MGE3MWFhOGFk Mjg4YzA3NGJlYTRlNiIKLSAgaW50ZWdyaXR5IHNoYTUxMi0xdEtPd3hGbjNkWFZvbUg2cE05SWtM a3EyWThvaCtmaC9sWVczTUovQjAzVVJzd1VUcXR0Z2NrT2xieFkyWEhGM3ZQRzZ1YW5TYzRkVnNM Vy93azN3UT09CityZWFjdC1sZWFmbGV0QF4zLjIuMjoKKyAgdmVyc2lvbiAiMy4yLjIiCisgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0LWxlYWZsZXQvLS9yZWFj dC1sZWFmbGV0LTMuMi4yLnRneiMzZDc3OTY2MmMzMmExZDg3MjllNzNkMjRlOGFkOTZlZTViMzhi ZWVmIgorICBpbnRlZ3JpdHkgc2hhNTEyLTVXN2lXakk5K0NkVEdWQUlDZThSVXlLMG4rdUxzaHIr ZUxRYThlQkNibXN0UE5wQ0haSlRVU2JqdTRXczVka1MvUFVDcjl0NVZtb0lFOUNYdVNCRWh3PT0K KyAgZGVwZW5kZW5jaWVzOgorICAgICJAcmVhY3QtbGVhZmxldC9jb3JlIiAiXjEuMS4xIgorCity ZWFjdC1wcm9wZXJ0eUAyLjAuMDoKKyAgdmVyc2lvbiAiMi4wLjAiCisgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0LXByb3BlcnR5Ly0vcmVhY3QtcHJvcGVydHkt Mi4wLjAudGd6IzIxNTZiYTlkODVmYTQ3NDFmYWYxOTE4YjM4ZWZjMWVhZTNjNmExMzYiCisgIGlu dGVncml0eSBzaGE1MTIta3ptTmpJZ1UzMm1PNG1tSDUraVV5cnFscEZRaEY4SzJrN2VaNGZkTFNP UEZyRDFYZ0V1U0J2OUxERWd4UlhUTUJxTWQ4cHBUMHg2VEl6cUU1cGRHZHc9PQogCiByZWFjdC1z ZWxlY3RAXjQuMi4xOgogICB2ZXJzaW9uICI0LjMuMSIKQEAgLTkxMzUsOSArODgzNiw5IEBAIHJl YWN0LXRpbWVyLWhvb2tAXjMuMC41OgogICBpbnRlZ3JpdHkgc2hhNTEyLW4rOThTZG1ZdnVpMm5l M0t5V2IzTGR1NGswTllRYTNnL1Z6VzZWRUlmWko4R0FrL2pKc0lZNzAwTThOZDJ2TlNUajA1Yzd3 S3lRZkpCcVoweDd6ZmlBPT0KIAogcmVhY3QtdHJhbnNpdGlvbi1ncm91cEBeNC4wLjAsIHJlYWN0 LXRyYW5zaXRpb24tZ3JvdXBAXjQuMy4wLCByZWFjdC10cmFuc2l0aW9uLWdyb3VwQF40LjQuMDoK LSAgdmVyc2lvbiAiNC40LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu Y29tL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAvLS9yZWFjdC10cmFuc2l0aW9uLWdyb3VwLTQuNC4x LnRneiM2Mzg2OGY5MzI1YTM4ZWE1ZWU5NTM1ZDgyODMyN2Y4NTc3MzM0NWM5IgotICBpbnRlZ3Jp dHkgc2hhNTEyLURqcXI3T1EyYVBVaVl1cmhQYWxUclZ5OWRkbUZDQ3p3aHFRbXROK0ozKzNEekxP MjA5RmRyNzBRck44WjNEc2dsV3FsNmlZMWxEV0FmcEZpQnR1S0d3PT0KKyAgdmVyc2lvbiAiNC40 LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0LXRyYW5z aXRpb24tZ3JvdXAvLS9yZWFjdC10cmFuc2l0aW9uLWdyb3VwLTQuNC4yLnRneiM4YjU5YTU2ZjA5 Y2VkN2I1NWNiZDUzYzM2NzY4YjkyMjg5MGQ1NDcwIgorICBpbnRlZ3JpdHkgc2hhNTEyLS9STllm UkFNbFp3RFNyNno0ek5LVjZ4dTUzL2UyQnVhQmJHaGJ5WUlYVHJtZ3UvYkdIem1xT3M3bUpTSkJI eTlVZCtBcEh4M1FqcmtLU3AxcHh2bEZnPT0KICAgZGVwZW5kZW5jaWVzOgogICAgICJAYmFiZWwv cnVudGltZSIgIl43LjUuNSIKICAgICBkb20taGVscGVycyAiXjUuMC4xIgpAQCAtOTIxOCwxMyAr ODkxOSw2IEBAIHJlYWRhYmxlLXN0cmVhbUBeMy40LjAsIHJlYWRhYmxlLXN0cmVhbUBeMy41LjAs IHJlYWRhYmxlLXN0cmVhbUBeMy42LjA6CiAgICAgc3RyaW5nX2RlY29kZXIgIl4xLjEuMSIKICAg ICB1dGlsLWRlcHJlY2F0ZSAiXjEuMC4xIgogCi1yZWFkZGlycEB+My41LjA6Ci0gIHZlcnNpb24g IjMuNS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFkZGly cC8tL3JlYWRkaXJwLTMuNS4wLnRneiM5YmE3NGMwMTliMTVkMzY1Mjc4ZDJlOTFiYjhjNDhkN2I0 ZDQyYzllIgotICBpbnRlZ3JpdHkgc2hhNTEyLWNNaHU3Yy84cmRoa0hYV3NZK29zQmhmU3kwSmlr d3BISy81K2ltbytMcGVhc1RGOG91RXJIcmxZa3dUMCsrbmppeXVEdmM3T0ZZNVQzdWt2WjhxbUZR PT0KLSAgZGVwZW5kZW5jaWVzOgotICAgIHBpY29tYXRjaCAiXjIuMi4xIgotCiByZWFkZGlycEB+ My42LjA6CiAgIHZlcnNpb24gIjMuNi4wIgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS9yZWFkZGlycC8tL3JlYWRkaXJwLTMuNi4wLnRneiM3NGEzNzBiZDg1NzExNmUy NDViMjljYzk3MzQwY2Q0MzFhMDJhNmM3IgpAQCAtOTIzMyw5ICs4OTI3LDkgQEAgcmVhZGRpcnBA fjMuNi4wOgogICAgIHBpY29tYXRjaCAiXjIuMi4xIgogCiByZWNob2lyQF4wLjcuMDoKLSAgdmVy c2lvbiAiMC43LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Jl Y2hvaXIvLS9yZWNob2lyLTAuNy4wLnRneiMzMjY1MGZkNTJjMjFhYjI1MmFhNWQ2NWIxOTMxMDQ0 MWM3ZTAzYWNhIgotICBpbnRlZ3JpdHkgc2hhNTEyLUFEc0RFSDJidmJqbHRYRVAraFRJQW1lRmVr VEZLMFYyQlR4TWtvazZxSUx5QUpFWFYwQUZmb1djQXE0eWZsbDVWZElNZC9SVlhxMGxSK3dRaTVa VTNRPT0KKyAgdmVyc2lvbiAiMC43LjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL3JlY2hvaXIvLS9yZWNob2lyLTAuNy4xLnRneiM5NDc4YTk2YTFjYTEzNWI1ZTg4 ZmMwMjdmMDNlZTkyZDZjNjQ1Njg2IgorICBpbnRlZ3JpdHkgc2hhNTEyLS9uam1aOHMxd1ZlUjZw alRaKzBuQ252OFNwWk5STVQyRDFSTE9KUUVTbFlGREJ2d3BUQTRLV0pwWitzQko0K3ZoaklMUmNL N0pJRmRHQ2R4RUFBaXRnPT0KICAgZGVwZW5kZW5jaWVzOgogICAgIHJlc29sdmUgIl4xLjkuMCIK IApAQCAtOTI2OSw5ICs4OTYzLDkgQEAgcmVnZW5lcmF0b3ItcnVudGltZUBeMC4xMS4wOgogICBp bnRlZ3JpdHkgc2hhNTEyLU1ndUc5NW9pajBmQzNRVjNVUmY0VjJTRFlHSmhKbkpHcXZJSWdkRUNl T0RDVDk4d1NXREFKOTRTU3VWcFlRVW9UY0dVSUw2TDR5TkI3ajFERkZIU0JnPT0KIAogcmVnZW5l cmF0b3ItcnVudGltZUBeMC4xMy40OgotICB2ZXJzaW9uICIwLjEzLjciCi0gIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlZ2VuZXJhdG9yLXJ1bnRpbWUvLS9yZWdlbmVy YXRvci1ydW50aW1lLTAuMTMuNy50Z3ojY2FjMmRhY2M4YTFlYTY3NWZlYWFiYWViOGFlODMzODk4 YWU0NmY1NSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1hNTRGeG9KRElyMjdwZ2Y3SWdlUUd4bXFVTlly Y1YzMzhsZi82Z0g0NTZIWi9QaFgrNUJjd0hYRzlhakVTbXdlNldSTzB0QXpSVXJSbU5PTldna3Jl dz09CisgIHZlcnNpb24gIjAuMTMuOSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vcmVnZW5lcmF0b3ItcnVudGltZS8tL3JlZ2VuZXJhdG9yLXJ1bnRpbWUtMC4xMy45 LnRneiM4OTI1NzQyYTk4ZmZkOTA4MTQ5ODhkNzU2NmFkMzBjYTNiMjYzYjUyIgorICBpbnRlZ3Jp dHkgc2hhNTEyLXAzVlQrY09FZ3hGc1JSQTlYNGxrSTFFK2syL0N0bkt0VTRnY3h5YUNVcmVpbEwv dnFJNkNkWjN3eFZVeDNVT1VnK2duVU9RUWNSSTdCbVNJNjU2TVlBPT0KIAogcmVnZW5lcmF0b3It dHJhbnNmb3JtQF4wLjE0LjI6CiAgIHZlcnNpb24gIjAuMTQuNSIKQEAgLTkyODksOSArODk4Myw5 IEBAIHJlZ2V4cC5wcm90b3R5cGUuZmxhZ3NAXjEuMy4xOgogICAgIGRlZmluZS1wcm9wZXJ0aWVz ICJeMS4xLjMiCiAKIHJlZ2V4cHBAXjMuMS4wOgotICB2ZXJzaW9uICIzLjEuMCIKLSAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVnZXhwcC8tL3JlZ2V4cHAtMy4xLjAu dGd6IzIwNmQwYWQwYTU2NDhjZmZiZGI4YWU0NjQzOGYzZGM1MWM5Zjc4ZTIiCi0gIGludGVncml0 eSBzaGE1MTItWk9JemQ4eVZzUVFBN2o4R0NTbFBHWHdnNVBmbUExbXJxMEpQNG5HaGg1NExhS04z eGRhaS92SFVEdTc0cEt3VjhPeHNlTVM2NXUyTkltb3NRY1NEMFE9PQorICB2ZXJzaW9uICIzLjIu MCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVnZXhwcC8tL3Jl Z2V4cHAtMy4yLjAudGd6IzA0MjVhMjc2OGQ4ZjIzYmFkNzBjYTRiOTA0NjFmYTJmMTIxM2UxYjIi CisgIGludGVncml0eSBzaGE1MTItcHEyYldvOW1WRDQzbmJ0czJ3R3YxN1hMaU5MeWErR2tsWjhr YURMVjJaMDhnRENzR3BuS245QkZNZXB2V3VIQ2J5VnZZN0o1bzUrQlZ2b1FibWxKTGc9PQogCiBy ZWdleHB1LWNvcmVAXjQuNy4xOgogICB2ZXJzaW9uICI0LjcuMSIKQEAgLTk0MzMsMTYgKzkxMjcs NiBAQCByZmRjQF4xLjMuMDoKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j b20vcmZkYy8tL3JmZGMtMS4zLjAudGd6I2QwYjdjNDQxYWIyNzIwZDA1ZGM0Y2YyNmUwMWM4OTYz MWQ5ZGEwOGIiCiAgIGludGVncml0eSBzaGE1MTItVjJob3ZkekZiT2k3Ny9XYWphU01YazJPTG0r eE5JZVFkTU11QjdpY2o3Yms2emkyRjhHR0F4aWdjbkRGcEpIYk55TmNneUpEaVArOG5Pclk1Y1pH ckE9PQogCi1yZ2ItcmVnZXhAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQg Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmdiLXJlZ2V4Ly0vcmdiLXJlZ2V4LTEuMC4x LnRneiNjMGUwZDY4ODJkZjBlMjNiZTI1NGE0NzVlOGVkZDQxOTE1ZmVhZWIxIgotICBpbnRlZ3Jp dHkgc2hhMS13T0RXaUMzdzRqdmlWS1IxNk8zVUdSWCtyckU9Ci0KLXJnYmEtcmVnZXhAXjEuMC4w OgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr Zy5jb20vcmdiYS1yZWdleC8tL3JnYmEtcmVnZXgtMS4wLjAudGd6IzQzMzc0ZTJlMmNhMDk2OGIw ZWYxNTIzNDYwYjdkNzMwZmYyMmVlYjMiCi0gIGludGVncml0eSBzaGExLVF6ZE9MaXlnbG9zTzhW STBZTGZYTVA4aTdyTT0KLQogcmlmbUBeMC43LjA6CiAgIHZlcnNpb24gIjAuNy4wIgogICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yaWZtLy0vcmlmbS0wLjcuMC50Z3oj ZGViZTk1MWE5YzgzNTQ5Y2E2YjMzZTU5MTlmNzE2MDQ0YzIyMzBiZSIKQEAgLTk1MTEsOSArOTE5 NSw5IEBAIHNhc3MtbG9hZGVyQF4xMS4wLjA6CiAgICAgbmVvLWFzeW5jICJeMi42LjIiCiAKIHNh c3MtcmVzb3VyY2VzLWxvYWRlckBeMi4yLjE6Ci0gIHZlcnNpb24gIjIuMi4xIgotICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zYXNzLXJlc291cmNlcy1sb2FkZXIvLS9z YXNzLXJlc291cmNlcy1sb2FkZXItMi4yLjEudGd6I2Q3ZGJjMzZjY2IyNWIyZDhmZmE1MDhiMWI4 NjMwYjk4N2RmMWU1YzMiCi0gIGludGVncml0eSBzaGE1MTItV2xvZnhiV09WbnhhZDg3NElIWmRX YlA5ZVcxcGJ5cXNUSktCc01iZUIrWUVMdkxTclpRTkRUcEg3MHM2RjE5Qnd0YW5SM05FRm55R3dK OVd5b3RKVFE9PQorICB2ZXJzaW9uICIyLjIuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vc2Fzcy1yZXNvdXJjZXMtbG9hZGVyLy0vc2Fzcy1yZXNvdXJjZXMtbG9h ZGVyLTIuMi40LnRneiMxYTg2ZmJhNDk5ZTc0YTg4Y2I3Y2U5NWYwYzk4NDQ5ZjM0OGQzNjBlIgor ICBpbnRlZ3JpdHkgc2hhNTEyLWhJUWhCeWdZa3krckxmKzRjdW9HWU9OWjYyM0NFSDRTd28xZnMx V1JKa3VrYnFkdk4xVkl1MktDTDU5ZHU2dlg5MmJORUx6TmtHUEx4K05vck43M3hBPT0KICAgZGVw ZW5kZW5jaWVzOgogICAgIGFzeW5jICJeMy4yLjAiCiAgICAgY2hhbGsgIl40LjEuMCIKQEAgLTk1 MjEsMTEgKzkyMDUsMTEgQEAgc2Fzcy1yZXNvdXJjZXMtbG9hZGVyQF4yLjIuMToKICAgICBsb2Fk ZXItdXRpbHMgIl4yLjAuMCIKIAogc2Fzc0BeMS4yNC40OgotICB2ZXJzaW9uICIxLjMyLjgiCi0g IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Nhc3MvLS9zYXNzLTEuMzIu OC50Z3ojZjE2YTlhYmQ4ZGM1MzBhZGQ4ODM0ZTUwNjg3OGEyODA4YzAzN2JkYyIKLSAgaW50ZWdy aXR5IHNoYTUxMi1TbDZtSWVHcHpqSVVacXZLbktFVGZNZjBpREFzd0Q5VE5sdjEzQTdhQUYzWFps UlBNcTRWdkpXQkMyTjJEWGJwOTRNUVZkTlNGRzZMZkYvaU9YclBIUT09CisgIHZlcnNpb24gIjEu NDMuNCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2Fzcy8tL3Nh c3MtMS40My40LnRneiM2OGM3ZDZhMWIwMDRiZWY0OWFmMGQ5Y2FmNzUwZTliMjUyMTA1ZDFmIgor ICBpbnRlZ3JpdHkgc2hhNTEyLS9wdEc3S0U5bHhwR1NZaVhuN0FyK2xLT3YzN3hmV3NaUnRGWWFs MlFITmlneVZRRHg2ODVWRlQvaDdlalZyK1I4dzdINHRtVWd0dWxzS2w1WXB2ZU9nPT0KICAgZGVw ZW5kZW5jaWVzOgotICAgIGNob2tpZGFyICI+PTIuMC4wIDw0LjAuMCIKKyAgICBjaG9raWRhciAi Pj0zLjAuMCA8NC4wLjAiCiAKIHNheEBeMS4yLjQsIHNheEB+MS4yLjQ6CiAgIHZlcnNpb24gIjEu Mi40IgpAQCAtOTU3MywxMiArOTI1NywxMiBAQCBzY2hlbWEtdXRpbHNAXjIuNi41OgogICAgIGFq diAiXjYuMTIuNCIKICAgICBhanYta2V5d29yZHMgIl4zLjUuMiIKIAotc2NoZW1hLXV0aWxzQF4z LjAuMDoKLSAgdmVyc2lvbiAiMy4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL3NjaGVtYS11dGlscy8tL3NjaGVtYS11dGlscy0zLjAuMC50Z3ojNjc1MDJmNmFh MmI2NmEyZDQwMzJiNDI3OWEyOTQ0OTc4YTA5MTNlZiIKLSAgaW50ZWdyaXR5IHNoYTUxMi02RDgy L3hTek8wOTRhamFub09TYmU0WXZYV01mbjJBLy84WTErTVVxRkFKdWw1QnMreW4zNnhiSzlPdE5E Y1JWU0JKOWpqZW9YZnRNNkNmenRzak9BQT09CitzY2hlbWEtdXRpbHNAXjMuMC4wLCBzY2hlbWEt dXRpbHNAXjMuMS4wLCBzY2hlbWEtdXRpbHNAXjMuMS4xOgorICB2ZXJzaW9uICIzLjEuMSIKKyAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2NoZW1hLXV0aWxzLy0vc2No ZW1hLXV0aWxzLTMuMS4xLnRneiNiYzc0YzRiNmI2OTk1YzFkODhmNzZhOGI3N2JlYTcyMTllMGM4 MjgxIgorICBpbnRlZ3JpdHkgc2hhNTEyLVk1UFF4UzRJVGxDK0VhaEx1WGFZODZUWGZSN0RjNWx3 Mjk0YWxYT3E4NkpBSENpaEFJWmZxdjhuTkNXdmFFSnZhQzUxdU45aGJMR2VWMGNGQmRIK0Z3PT0K ICAgZGVwZW5kZW5jaWVzOgotICAgICJAdHlwZXMvanNvbi1zY2hlbWEiICJeNy4wLjYiCisgICAg IkB0eXBlcy9qc29uLXNjaGVtYSIgIl43LjAuOCIKICAgICBhanYgIl42LjEyLjUiCiAgICAgYWp2 LWtleXdvcmRzICJeMy41LjIiCiAKQEAgLTk2MjEsMTQgKzkzMDUsNyBAQCBzZW12ZXJAXjYuMC4w LCBzZW12ZXJAXjYuMS4xLCBzZW12ZXJAXjYuMS4yLCBzZW12ZXJAXjYuMy4wOgogICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zZW12ZXIvLS9zZW12ZXItNi4zLjAudGd6 I2VlMGE2NGM4YWY1ZThjZWVhNjc2ODdiMTMzNzYxZTFiZWNiZDFkM2QiCiAgIGludGVncml0eSBz aGE1MTItYjM5VEJhVFNmVjZ5QnJhcFU4OXA1Zktla0UybS9Od25Eb2NPVnJ1UUZTMS92ZU1nZHp1 UGNuT00zNE02Q3d4VzhqSC9seEVhNXJCb0RlVXd1NUhIVHc9PQogCi1zZW12ZXJAXjcuMi4xLCBz ZW12ZXJAXjcuMy40OgotICB2ZXJzaW9uICI3LjMuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vc2VtdmVyLy0vc2VtdmVyLTcuMy40LnRneiMyN2FhYTdkMmU0Y2E3 NjQ1MmY5OGQzYWRkMDkzYTcyYzk0M2VkYzk3IgotICBpbnRlZ3JpdHkgc2hhNTEyLXRDZmIyV0xq cUZBdFhuNEtFZHhJaGFsblJ0b0tGTjduQXdqMEIzWlhDYlFsb1YydHE1ZURiY1RtVDY4SkpEM25S SnEyNC9YZ3h0UUtGSXBRZHR2bVZ3PT0KLSAgZGVwZW5kZW5jaWVzOgotICAgIGxydS1jYWNoZSAi XjYuMC4wIgotCi1zZW12ZXJAXjcuMy41Ogorc2VtdmVyQF43LjIuMSwgc2VtdmVyQF43LjMuNCwg c2VtdmVyQF43LjMuNToKICAgdmVyc2lvbiAiNy4zLjUiCiAgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL3NlbXZlci8tL3NlbXZlci03LjMuNS50Z3ojMGI2MjFjODc5MzQ4 ZDg5OThlNGIwZTRiZTk0YjNmMTJlNjAxOGVmNyIKICAgaW50ZWdyaXR5IHNoYTUxMi1Qb2VHSllo OEhLNEJUTy9hOVRmNlpHM3Zlby9BN1pWc1lyU0E2SjhueTluYjNCMVZycGt1Tit6OU9FNXdmRTVw Nkg0TGNoWVpzZWdpUWdiSkQ5NFpGUT09CkBAIC05NjQyLDYgKzkzMTksMTMgQEAgc2VyaWFsaXpl LWphdmFzY3JpcHRAXjUuMC4xOgogICBkZXBlbmRlbmNpZXM6CiAgICAgcmFuZG9tYnl0ZXMgIl4y LjEuMCIKIAorc2VyaWFsaXplLWphdmFzY3JpcHRAXjYuMC4wOgorICB2ZXJzaW9uICI2LjAuMCIK KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2VyaWFsaXplLWphdmFz Y3JpcHQvLS9zZXJpYWxpemUtamF2YXNjcmlwdC02LjAuMC50Z3ojZWZhZTVkODhmNDVkNzkyNDE0 MWRhOGI1YzNhN2E3ZTY2M2ZlZmViOCIKKyAgaW50ZWdyaXR5IHNoYTUxMi1RcjNUb3N2Z3VGdDhl UFdxc3ZSZnJLeVFYSWlXK25HYllweThYSzI0TlFIRTgzY2F4V3QrbUl5bVRUMTlER0ZiTldOTGZF d3Nya1NtTjY0bFZXQjlhZz09CisgIGRlcGVuZGVuY2llczoKKyAgICByYW5kb21ieXRlcyAiXjIu MS4wIgorCiBzZXQtYmxvY2tpbmdAfjIuMC4wOgogICB2ZXJzaW9uICIyLjAuMCIKICAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2V0LWJsb2NraW5nLy0vc2V0LWJsb2Nr aW5nLTIuMC4wLnRneiMwNDVmOTc4MmQwMTFhZTlhNjgwM2RkZDM4MmIyNDM5MmIzZDg5MGY3IgpA QCAtOTcwNCw5ICs5Mzg4LDkgQEAgc2hlYmFuZy1yZWdleEBeMy4wLjA6CiAgIGludGVncml0eSBz aGE1MTItNysrZEZodGN4MzM1M3VCYXE4RERSNE51eEJldEJ6QzdaUU9obVRRSW5IRWQ2YlNyWGRp RXl6Q3ZHMDdaNDRVWWRMU2hXVXlYdDVNL3loejhla2NiMUE9PQogCiBzaGVsbC1xdW90ZUBeMS42 LjE6Ci0gIHZlcnNpb24gIjEuNy4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu cGtnLmNvbS9zaGVsbC1xdW90ZS8tL3NoZWxsLXF1b3RlLTEuNy4yLnRneiM2N2E3ZDAyYzc2Yzlk YTI0Zjk5ZDIwODA4ZmNhZGVkMGUwZTA0YmUyIgotICBpbnRlZ3JpdHkgc2hhNTEyLW1Sei9tL0pW c2NDcmtNeVBxSGMvYmN6aTNPUUhrTFRxWEhFRnUwekRoSy9xZnYzVWNPQTRTVm1SQ0xtb3M0Ymhq cjlla1ZRdWJqL1I3d2FLYXBtaVFnPT0KKyAgdmVyc2lvbiAiMS43LjMiCisgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NoZWxsLXF1b3RlLy0vc2hlbGwtcXVvdGUtMS43 LjMudGd6I2FhNDBlZGFjMTcwNDQ1YjlhNDMxZTE3YmI2MmMwYjg4MWI5YzQxMjMiCisgIGludGVn cml0eSBzaGE1MTItVnBmcXdtNEVucUdkbHNCRk5tSGh4aEVsSllyZGZjeFBUaHUrcnlLUzVKOEwv ZmhBd0xhekZadHErUytUV1o5QU5qMnBpU1FMR2o2TlFnK2xLUG14cnc9PQogCiBzaGltLWxvYWRl ckBeMS4wLjE6CiAgIHZlcnNpb24gIjEuMC4xIgpAQCAtOTcyOCw5ICs5NDEyLDkgQEAgc2lkZS1j aGFubmVsQF4xLjAuNDoKICAgICBvYmplY3QtaW5zcGVjdCAiXjEuOS4wIgogCiBzaWduYWwtZXhp dEBeMy4wLjAsIHNpZ25hbC1leGl0QF4zLjAuMiwgc2lnbmFsLWV4aXRAXjMuMC4zOgotICB2ZXJz aW9uICIzLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2ln bmFsLWV4aXQvLS9zaWduYWwtZXhpdC0zLjAuMy50Z3ojYTE0MTBjMmVkZDhmMDc3YjA4YjRlMjUz YzhlYWNmY2FmMDU3NDYxYyIKLSAgaW50ZWdyaXR5IHNoYTUxMi1WVUo0OUZDOFUxT3h3Wkx4SWJU VHJEdkxuZi82VERneFpjSzh3eFI4enMxM3hweDd4Ykc2MG5kQmxoTnJGaTJFTXVGUm9lRG9KTzd3 dGhTTHE0MkVqQT09CisgIHZlcnNpb24gIjMuMC41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9zaWduYWwtZXhpdC8tL3NpZ25hbC1leGl0LTMuMC41LnRneiM5ZTNl OGNjMGM3NWE5OTQ3MmI0NDMyMTAzM2E3NzAyZTc3MzgyNTJmIgorICBpbnRlZ3JpdHkgc2hhNTEy LUtXY09pS2VRajZaeVh4N3pxNFl4U01nSFJsb2Q0Y3plQlFaclBiOE9LY29oY3FBWFNobTdFMjBr RU1sZTlXQnQyNmhGY0FmMHFMT2NwNXptWTdrT3FRPT0KIAogc2ltcGxlLWNvbmNhdEBeMS4wLjA6 CiAgIHZlcnNpb24gIjEuMC4xIgpAQCAtOTczOCwxMSArOTQyMiwxMSBAQCBzaW1wbGUtY29uY2F0 QF4xLjAuMDoKICAgaW50ZWdyaXR5IHNoYTUxMi1jU0Z0QVB0UmhsanY2OUlLMGhUVlpRK09mRTlu ZVBpL3J0Sm13NVVqSGVWeVZyb0VxSlhQMXNGenRLVXkxcVUreHZ6M3Uvc2ZZSkxhOTQ3YjduQU4y UT09CiAKIHNpcnZAXjEuMC43OgotICB2ZXJzaW9uICIxLjAuMTIiCi0gIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NpcnYvLS9zaXJ2LTEuMC4xMi50Z3ojZDgxNmM4ODJi MzU0ODliM2M2MzI5MGUyZjQ1NWFlM2VjY2Q1ZjY1MiIKLSAgaW50ZWdyaXR5IHNoYTUxMi0ralFv Q3huZHo3TDJ0cVFMNFp5emZEaGt5MFcvNFpKaXAzWG9PdXh5UVduQXdNeGluZExsM1h2MXFUNHgx WVgvcmUwbGVTaHZUbThVazBrUXNwR2hCZz09CisgIHZlcnNpb24gIjEuMC4xOCIKKyAgcmVzb2x2 ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2lydi8tL3NpcnYtMS4wLjE4LnRneiMx MDVmYWI1MmZiNjU2Y2U4YTJiZWJiZjM2YjExMDUyMDA1OTUyODk5IgorICBpbnRlZ3JpdHkgc2hh NTEyLWYyQU9Qb2dabVhnSjlNYTJNMjJaRWhjMWROdFJJemNFa2lmbE1GZVZUUnErT1ZpT1pNdkgx SVBNVk93cktheHBTYUhpb0JKaURSMFNsdVJxR2E3YXRBPT0KICAgZGVwZW5kZW5jaWVzOgotICAg ICJAcG9sa2EvdXJsIiAiXjEuMC4wLW5leHQuMTUiCisgICAgIkBwb2xrYS91cmwiICJeMS4wLjAt bmV4dC4yMCIKICAgICBtaW1lICJeMi4zLjEiCiAgICAgdG90YWxpc3QgIl4xLjAuMCIKIApAQCAt OTc5MiwxNyArOTQ3NiwxNiBAQCBzb2NrZXQuaW8tYWRhcHRlckB+Mi4zLjM6CiAgIGludGVncml0 eSBzaGE1MTItUWQvaXduM1Zza3JwTk82MEJlUnlDeXI4Wld3OUNQWnlpdFc0QVF3bVJaOHpDaXlE aUwrem5SbldYNnRESFhuV24xc0pyTTErYjZNbjZ3RURKSjRhWVE9PQogCiBzb2NrZXQuaW8tY2xp ZW50QF40LjAuMDoKLSAgdmVyc2lvbiAiNC4xLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL3NvY2tldC5pby1jbGllbnQvLS9zb2NrZXQuaW8tY2xpZW50LTQuMS4y LnRneiM5NWFkNzExMzMxOGVhMDFmYmEwODYwMjM3Yjk2ZDcxZTFiMWZkMmViIgotICBpbnRlZ3Jp dHkgc2hhNTEyLVJEcFdKUDREUVQxWGVleG1lRHlEa20wdnJGYzArYlVzSERLaVZHYU5JU0p2Sm9u aFFRT01xVjlWd2ZnMFpwUEoyN0xDZGFuN2lxVEk5MkZSU09rRldRPT0KKyAgdmVyc2lvbiAiNC4z LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvY2tldC5pby1j bGllbnQvLS9zb2NrZXQuaW8tY2xpZW50LTQuMy4yLnRneiM5Y2ZkYjhmZWNhYzhhMjRkNTcyM2Rh ZjhjODc0OWU3MGM4ZmRlYjI1IgorICBpbnRlZ3JpdHkgc2hhNTEyLTJCOUxxU3VuTjYweVY4RjdT ODRDQ0VFY2diWU5mcm43ZWpJSW5adExaN3BwV3RpWDhyR1pBanZkQ3ZibkM4YnFvLzlSbENOT1Vz T1JMeXNreFNGUDFnPT0KICAgZGVwZW5kZW5jaWVzOgotICAgICJAdHlwZXMvY29tcG9uZW50LWVt aXR0ZXIiICJeMS4yLjEwIgorICAgICJAc29ja2V0LmlvL2NvbXBvbmVudC1lbWl0dGVyIiAifjMu MC4wIgogICAgIGJhY2tvMiAifjEuMC4yIgotICAgIGNvbXBvbmVudC1lbWl0dGVyICJ+MS4zLjAi Ci0gICAgZGVidWcgIn40LjMuMSIKLSAgICBlbmdpbmUuaW8tY2xpZW50ICJ+NS4xLjEiCisgICAg ZGVidWcgIn40LjMuMiIKKyAgICBlbmdpbmUuaW8tY2xpZW50ICJ+Ni4wLjEiCiAgICAgcGFyc2V1 cmkgIjAuMC42IgotICAgIHNvY2tldC5pby1wYXJzZXIgIn40LjAuNCIKKyAgICBzb2NrZXQuaW8t cGFyc2VyICJ+NC4xLjEiCiAKIHNvY2tldC5pby1wYXJzZXJAfjQuMC40OgogICB2ZXJzaW9uICI0 LjAuNCIKQEAgLTk4MTMsNiArOTQ5NiwxNCBAQCBzb2NrZXQuaW8tcGFyc2VyQH40LjAuNDoKICAg ICBjb21wb25lbnQtZW1pdHRlciAifjEuMy4wIgogICAgIGRlYnVnICJ+NC4zLjEiCiAKK3NvY2tl dC5pby1wYXJzZXJAfjQuMS4xOgorICB2ZXJzaW9uICI0LjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vc29ja2V0LmlvLXBhcnNlci8tL3NvY2tldC5pby1wYXJz ZXItNC4xLjEudGd6IzBhZDUzZDk4MDc4MWNhYjFlYWJlMzIwNDE3ZDg0ODBjMDEzM2U2MmQiCisg IGludGVncml0eSBzaGE1MTItVVNRVkxTa0RXRTVuYmNZNzYwRXhkS2FKeENFNjVrY3NHLzhrNUZE R1pWVnhwRDFwQTdoQUJZWFlrQ1V2eFV1WVloLyt1UXcwTi9mdkJ6ZlQ4bzA3S0E9PQorICBkZXBl bmRlbmNpZXM6CisgICAgIkBzb2NrZXQuaW8vY29tcG9uZW50LWVtaXR0ZXIiICJ+My4wLjAiCisg ICAgZGVidWcgIn40LjMuMSIKKwogc29ja2V0LmlvQF40LjIuMDoKICAgdmVyc2lvbiAiNC40LjEi CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvY2tldC5pby8tL3Nv Y2tldC5pby00LjQuMS50Z3ojY2Q2ZGUyOWUyNzdhMTYxZDE3NjgzMmJiMjRmNjRlZTA0NWM1NmFi OCIKQEAgLTk4NjgsMTUgKzk1NTksMjAgQEAgc291cmNlLWxpc3QtbWFwQF4xLjEuMToKICAgcmVz b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc291cmNlLWxpc3QtbWFwLy0vc291 cmNlLWxpc3QtbWFwLTEuMS4yLnRneiM5ODg5MDE5ZDEwMjRjY2U1NWNkYzA2OTQ5ODMzN2VmNjE4 NmExMWExIgogICBpbnRlZ3JpdHkgc2hhMS1tSWtCblJBa3pPVmMzQWFVbUROKzloaHFFYUU9CiAK LXNvdXJjZS1saXN0LW1hcEBeMi4wLjAsIHNvdXJjZS1saXN0LW1hcEBeMi4wLjE6Citzb3VyY2Ut bGlzdC1tYXBAXjIuMC4wOgogICB2ZXJzaW9uICIyLjAuMSIKICAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vc291cmNlLWxpc3QtbWFwLy0vc291cmNlLWxpc3QtbWFwLTIu MC4xLnRneiMzOTkzYmQ4NzNiZmM0ODQ3OWNjYTllYTNhNTQ3ODM1YzdjMTU0YjM0IgogICBpbnRl Z3JpdHkgc2hhNTEyLXFuUTdnVk14R054c2lMNGxFdUp3ZS9UbzhVbks3ZkFubWJHRUVIOFJwTG91 dUtiZUVtMGxoYlFWRklyTlN1QitHN3RWckFsVnNaZ0VUVDVubGpmK0l3PT0KIAotc291cmNlLW1h cC1zdXBwb3J0QF4wLjUuNSwgc291cmNlLW1hcC1zdXBwb3J0QH4wLjUuMTk6Ci0gIHZlcnNpb24g IjAuNS4xOSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc291cmNl LW1hcC1zdXBwb3J0Ly0vc291cmNlLW1hcC1zdXBwb3J0LTAuNS4xOS50Z3ojYTk4YjYyZjg2ZGNh ZjRmNjczOTk2NDhjMDg1MjkxYWI5ZThmZWQ2MSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1Xb25tN3pP Q0lKekJHUWRCK3Roc1BhcjBrWXVDSXpZdnhad2xCYTg3eWkvTWRqdjdUaXAyY3lWYkxqNW8wY0ZQ TjRFVmt1VHdiM0dERHlVeDJER25Hdz09Citzb3VyY2UtbWFwLWpzQF4wLjYuMjoKKyAgdmVyc2lv biAiMC42LjIiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3NvdXJj ZS1tYXAtanMvLS9zb3VyY2UtbWFwLWpzLTAuNi4yLnRneiMwYmI1ZGU2MzFiNDFjZmJkYTZjZmJh OGJkMDVhODBlZmRmZDIzODVlIgorICBpbnRlZ3JpdHkgc2hhNTEyLS8zR3B0eld6dTArME1CUUZy REt6dy9EdnZNVFVPUnZnWTZrNmpkL1ZTNmlDUjRSRFRLV0g2djZXUHdRb1VPODY2N3VRRWY5T2Uz OER4QVlXWTVGL1VnPT0KKworc291cmNlLW1hcC1zdXBwb3J0QF4wLjUuNSwgc291cmNlLW1hcC1z dXBwb3J0QH4wLjUuMjA6CisgIHZlcnNpb24gIjAuNS4yMCIKKyAgcmVzb2x2ZWQgImh0dHBzOi8v cmVnaXN0cnkueWFybnBrZy5jb20vc291cmNlLW1hcC1zdXBwb3J0Ly0vc291cmNlLW1hcC1zdXBw b3J0LTAuNS4yMC50Z3ojMTIxNjYwODlmOGY1ZTVlOGM1NjkyNmIzNzc2MzMzOTJkZDJjYjZjOSIK KyAgaW50ZWdyaXR5IHNoYTUxMi1uMWxaWjhWZTRrc1JxaXphQlFneFhEZ0t3dHRIRGh5ZlFqQTZZ WlpuOCtBcm9IYnNJeitKand4UUR4YnArN3k1T1lDSTh0MVlrN2V0akQ5Q1JkMmhJdz09CiAgIGRl cGVuZGVuY2llczoKICAgICBidWZmZXItZnJvbSAiXjEuMC4wIgogICAgIHNvdXJjZS1tYXAgIl4w LjYuMCIKQEAgLTk5NzAsNyArOTY2Niw3IEBAIHN0cmVhbS1zcGxpY2VyQF4yLjAuMDoKIHN0cmVh bXJvbGxlckBeMy4wLjI6CiAgIHZlcnNpb24gIjMuMC4yIgogICByZXNvbHZlZCAiaHR0cHM6Ly9y ZWdpc3RyeS55YXJucGtnLmNvbS9zdHJlYW1yb2xsZXIvLS9zdHJlYW1yb2xsZXItMy4wLjIudGd6 IzMwNDE4ZDBlZWUzZDZjOTNlYzg5N2Y4OTJlZDA5OGUzYTgxZTY4YjciCi0gIGludGVncml0eSAi c2hhMS1NRUdORHU0OWJKUHNpWCtKTHRDWTQ2Z2VhTGM9IHNoYTUxMi11cjZ5NVM1ZG9wT2FSWEJ1 UklaMXU2R0M1YmNFWEhSWktnZkJqZkNnbE1obUlmK3JvVkNFQ2p2a0VZek5RT1hJTjIvSlBua01Q Vy84QjNDWm9LYUVQQT09IgorICBpbnRlZ3JpdHkgc2hhNTEyLXVyNnk1UzVkb3BPYVJYQnVSSVox dTZHQzViY0VYSFJaS2dmQmpmQ2dsTWhtSWYrcm9WQ0VDanZrRVl6TlFPWElOMi9KUG5rTVBXLzhC M0Nab0thRVBBPT0KICAgZGVwZW5kZW5jaWVzOgogICAgIGRhdGUtZm9ybWF0ICJeNC4wLjMiCiAg ICAgZGVidWcgIl40LjEuMSIKQEAgLTk5OTAsMTQgKzk2ODYsMTQgQEAgc3RyaW5nLXdpZHRoQF4x LjAuMToKICAgICBpcy1mdWxsd2lkdGgtY29kZS1wb2ludCAiXjEuMC4wIgogICAgIHN0cmlwLWFu c2kgIl4zLjAuMCIKIAotInN0cmluZy13aWR0aEBeMS4wLjIgfHwgMiB8fCAzIHx8IDQiLCBzdHJp bmctd2lkdGhAXjQuMS4wLCBzdHJpbmctd2lkdGhAXjQuMi4wOgotICB2ZXJzaW9uICI0LjIuMiIK LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaW5nLXdpZHRoLy0v c3RyaW5nLXdpZHRoLTQuMi4yLnRneiNkYWZkNGY5NTU5YTc1ODVjZmJhNTI5YzZhMGE0ZjczNDg4 ZWJkNGM1IgotICBpbnRlZ3JpdHkgc2hhNTEyLVhCSmJUM040SmhWdW1YRTBlb0xVOURDamNhRjky S0xOcVRtRkNuRzFwZjhkdVV4Rkd3dFA2QUQ2bmtqdzlhM0lkaVJ0TDNFMnczSkRpRS94aTN2T2VB PT0KKyJzdHJpbmctd2lkdGhAXjEuMC4yIHx8IDIgfHwgMyB8fCA0Iiwgc3RyaW5nLXdpZHRoQF40 LjEuMCwgc3RyaW5nLXdpZHRoQF40LjIuMCwgc3RyaW5nLXdpZHRoQF40LjIuMzoKKyAgdmVyc2lv biAiNC4yLjMiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmlu Zy13aWR0aC8tL3N0cmluZy13aWR0aC00LjIuMy50Z3ojMjY5YzcxMTdkMjdiMDVhZDJlNTM2ODMw YThlYzg5NWVmOWM2ZDAxMCIKKyAgaW50ZWdyaXR5IHNoYTUxMi13S3lRUlFwakowc0lwNjJFclNa ZEdzak1KV3NhcDVvUk5paEhodTZHN0pWTy85aklCNlV5ZXZMK3RYdU9xcm5nOGovY3hLVFd5V1V3 dlNUcmlpWnovZz09CiAgIGRlcGVuZGVuY2llczoKICAgICBlbW9qaS1yZWdleCAiXjguMC4wIgog ICAgIGlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50ICJeMy4wLjAiCi0gICAgc3RyaXAtYW5zaSAiXjYu MC4wIgorICAgIHN0cmlwLWFuc2kgIl42LjAuMSIKIAogc3RyaW5nLmZyb21jb2RlcG9pbnRAXjAu Mi4xOgogICB2ZXJzaW9uICIwLjIuMSIKQEAgLTEwMDA5LDE0ICs5NzA1LDE0IEBAIHN0cmluZy5w cm90b3R5cGUuY29kZXBvaW50YXRAXjAuMi4xOgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS9zdHJpbmcucHJvdG90eXBlLmNvZGVwb2ludGF0Ly0vc3RyaW5nLnByb3Rv dHlwZS5jb2RlcG9pbnRhdC0wLjIuMS50Z3ojMDA0YWQ0NGM4YWZjNzI3NTI3YjEwOGNkNDYyYjRk OTcxY2Q0NjliYyIKICAgaW50ZWdyaXR5IHNoYTUxMi0yY0JWQ2o2STRJT3ZFbmpnTy9oV3FYanFC R3NZK3p3UG1IbDEyU3JrOUlYU1o1Nkp3d215KzY2WE81SXV0L29RVlI3dDVpaFlkTEIwR01hNGFs RVVjZz09CiAKLXN0cmluZy5wcm90b3R5cGUubWF0Y2hhbGxAXjQuMC40OgotICB2ZXJzaW9uICI0 LjAuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaW5nLnBy b3RvdHlwZS5tYXRjaGFsbC8tL3N0cmluZy5wcm90b3R5cGUubWF0Y2hhbGwtNC4wLjUudGd6IzU5 MzcwNjQ0ZTFkYjdlNGMwYzA0NTI3NzY5MGNmN2IwMTIwM2M0ZGEiCi0gIGludGVncml0eSBzaGE1 MTItWjVaYVhPMHN2czBNMnhkLzZCeTNxcGVLcExLZDltTzR2NHEzb01FUXJrOENrNHhPRDVkNVhl Qk9PakdybVZaWi9BSEIxUzBDZ0c0TjVyMUc5TjNFMlE9PQorc3RyaW5nLnByb3RvdHlwZS5tYXRj aGFsbEBeNC4wLjU6CisgIHZlcnNpb24gIjQuMC42IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS9zdHJpbmcucHJvdG90eXBlLm1hdGNoYWxsLy0vc3RyaW5nLnByb3Rv dHlwZS5tYXRjaGFsbC00LjAuNi50Z3ojNWFiYjVkYWJjOTRjN2IwZWEyMzgwZjY1YmE2MTBiM2E1 NDRiMTVmYSIKKyAgaW50ZWdyaXR5IHNoYTUxMi02V2dEWDhIbVFxdkVkN0orRzZWdEFhaGhzUUlz c2laOHpsN3pLaDFWRE1GeUwzaFJUSlA0RlROQTNSYklwMlRPUTlBWU5EY2M3ZTNmSDBRYnVwK0RC Zz09CiAgIGRlcGVuZGVuY2llczoKICAgICBjYWxsLWJpbmQgIl4xLjAuMiIKICAgICBkZWZpbmUt cHJvcGVydGllcyAiXjEuMS4zIgotICAgIGVzLWFic3RyYWN0ICJeMS4xOC4yIgorICAgIGVzLWFi c3RyYWN0ICJeMS4xOS4xIgogICAgIGdldC1pbnRyaW5zaWMgIl4xLjEuMSIKICAgICBoYXMtc3lt Ym9scyAiXjEuMC4yIgogICAgIGludGVybmFsLXNsb3QgIl4xLjAuMyIKQEAgLTEwMDI0LDEzICs5 NzIwLDEzIEBAIHN0cmluZy5wcm90b3R5cGUubWF0Y2hhbGxAXjQuMC40OgogICAgIHNpZGUtY2hh bm5lbCAiXjEuMC40IgogCiBzdHJpbmcucHJvdG90eXBlLnRyaW1AXjEuMi4xOgotICB2ZXJzaW9u ICIxLjIuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaW5n LnByb3RvdHlwZS50cmltLy0vc3RyaW5nLnByb3RvdHlwZS50cmltLTEuMi40LnRneiM2MDE0Njg5 YmFmNWVmYWYxMDZhZDAzMWE1ZmE0NTE1NzY2NmVkMWJkIgotICBpbnRlZ3JpdHkgc2hhNTEyLWhX Q2svaXFmN2xwMC9BZ1RGNy9kZE8xSVd0U05QQVNqbHpDaWNWNWlyQVZkRTFncmpzbmVLMjZZRzZ4 QUNNQkVkQ3ZPOGZVU1QwVXpETWgvMlF5KzlRPT0KKyAgdmVyc2lvbiAiMS4yLjUiCisgIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N0cmluZy5wcm90b3R5cGUudHJpbS8t L3N0cmluZy5wcm90b3R5cGUudHJpbS0xLjIuNS50Z3ojYTU4N2JjYzhiZmFkOGNiOTgyOWE1Nzdm NWRlMzBkZDE3MGMxNjgyYyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1MbmgxN3dlYkpWc0Q2RUNlb3Zw Vk4xN1JsQUtqbXo0ckY5Uys4WTQ1Q2tNYy91ZlZwVGtVM3ZaSXlJQzdzbGxRMUZDdk9iWm5uQ2RO cy9IWFRVT1RsZz09CiAgIGRlcGVuZGVuY2llczoKICAgICBjYWxsLWJpbmQgIl4xLjAuMiIKICAg ICBkZWZpbmUtcHJvcGVydGllcyAiXjEuMS4zIgotICAgIGVzLWFic3RyYWN0ICJeMS4xOC4wLW5l eHQuMiIKKyAgICBlcy1hYnN0cmFjdCAiXjEuMTkuMSIKIAogc3RyaW5nLnByb3RvdHlwZS50cmlt ZW5kQF4xLjAuNDoKICAgdmVyc2lvbiAiMS4wLjQiCkBAIC0xMDA3NCwxMiArOTc3MCwxMiBAQCBz dHJpcC1hbnNpQF4zLjAuMCwgc3RyaXAtYW5zaUBeMy4wLjE6CiAgIGRlcGVuZGVuY2llczoKICAg ICBhbnNpLXJlZ2V4ICJeMi4wLjAiCiAKLXN0cmlwLWFuc2lAXjYuMC4wOgotICB2ZXJzaW9uICI2 LjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaXAtYW5z aS8tL3N0cmlwLWFuc2ktNi4wLjAudGd6IzBiMTU3MWRkNzY2OWNjZDRmM2UwNmUxNGVmMWVlZDI2 MjI1YWU1MzIiCi0gIGludGVncml0eSBzaGE1MTItQXV2S1RyVGZRTllOSWN0YlIxSy9ZR1RSMTc1 Nkd5Y1BzZzdiOWJkVjlEdXF1cjRndjZhS3FIWGFoNjdaOEltUzdXRXo1UVZjT3RsZlcyclpFdWd0 Nnc9PQorc3RyaXAtYW5zaUBeNi4wLjAsIHN0cmlwLWFuc2lAXjYuMC4xOgorICB2ZXJzaW9uICI2 LjAuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaXAtYW5z aS8tL3N0cmlwLWFuc2ktNi4wLjEudGd6IzllMjZjNjNkMzBmNTM0NDNlOTQ4OTQ5NWIyMTA1ZDM3 YjY3YTg1ZDkiCisgIGludGVncml0eSBzaGE1MTItWTM4VlBTSGNxa0ZyQ3BGblE5dnVTWG1xdXV2 NW9YT0twR2VUNmFHcnIzbzNHYzlBbFZhNkpCZlVTT0NuYnhHR1pGKy8wb29JN0tyUHVVU3p0VWRV NUE9PQogICBkZXBlbmRlbmNpZXM6Ci0gICAgYW5zaS1yZWdleCAiXjUuMC4wIgorICAgIGFuc2kt cmVnZXggIl41LjAuMSIKIAogc3RyaXAtY29tbWVudHNAXjIuMC4xOgogICB2ZXJzaW9uICIyLjAu MSIKQEAgLTEwMTE1LDYgKzk4MTEsMTEgQEAgc3RyaXAtb3V0ZXJAXjEuMC4wOgogICBkZXBlbmRl bmNpZXM6CiAgICAgZXNjYXBlLXN0cmluZy1yZWdleHAgIl4xLjAuMiIKIAorc3RybnVtQF4xLjAu NDoKKyAgdmVyc2lvbiAiMS4wLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL3N0cm51bS8tL3N0cm51bS0xLjAuNC50Z3ojZTk3ZTM2YTdkNmJhOWY5M2QwZDZiNDk2 YjJlZDA2NzhkNDIyODMyYiIKKyAgaW50ZWdyaXR5IHNoYTUxMi1sTXpOTWZEcGFRT0x0NEIybUVi ZnpZUzArVDdkdkNYZW9qbmxHZjZmMUF5Z3ZXRE1jV3lYWWFMYnlJQ2ZqVnUyOXNFclI4Zm5SYWdR ZkJXL04vaEdndz09CisKIHN0eWxlLWxvYWRlckBeMi4wLjA6CiAgIHZlcnNpb24gIjIuMC4wIgog ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHlsZS1sb2FkZXIvLS9z dHlsZS1sb2FkZXItMi4wLjAudGd6Izk2Njk2MDJmZDQ2OTA3NDBlYWFlYzEzNzc5OWEwM2FkZGJi YzM5M2MiCkBAIC0xMDEzOCwxNiArOTgzOSwxNiBAQCBzdHlsZS10by1vYmplY3RAMC4zLjA6CiAg ICAgaW5saW5lLXN0eWxlLXBhcnNlciAiMC4xLjEiCiAKIHN0eWxlZC1jb21wb25lbnRzQF41LjIu MToKLSAgdmVyc2lvbiAiNS4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL3N0eWxlZC1jb21wb25lbnRzLy0vc3R5bGVkLWNvbXBvbmVudHMtNS4yLjEudGd6IzZl ZDdmYWQyZGMyMzM4MjVmNjRjNzE5ZmZiZGVkZDg0YWQ3OTEwMWEiCi0gIGludGVncml0eSBzaGE1 MTItc0JkZ0xXckNGVEt0bVptLzl4N2prSWFiakZOVnpDVWVLZm9Rc002UjNzYUlta1VuangwUVlk THdKSEJqWTlpZkVjbWpEYW1KRFZma25XbTF5eFpQeFE9PQorICB2ZXJzaW9uICI1LjMuMyIKKyAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3R5bGVkLWNvbXBvbmVudHMv LS9zdHlsZWQtY29tcG9uZW50cy01LjMuMy50Z3ojMzEyYTNkOWE1NDlmNDcwOGYwZmIwZWRjODI5 ZWIzNGJkZTAzMjc0MyIKKyAgaW50ZWdyaXR5IHNoYTUxMi0rKzRpSHdCTTdaTit4NkR0UFBXa0NJ NHZkdHd1bVEraW5BL0RkQXNxWWQ0U1ZnVUtKaWU1dlh5em90QTAwdHRjRmRRa0NuZzd6YzZncnds Zklmdytsdz09CiAgIGRlcGVuZGVuY2llczoKICAgICAiQGJhYmVsL2hlbHBlci1tb2R1bGUtaW1w b3J0cyIgIl43LjAuMCIKICAgICAiQGJhYmVsL3RyYXZlcnNlIiAiXjcuNC41IgogICAgICJAZW1v dGlvbi9pcy1wcm9wLXZhbGlkIiAiXjAuOC44IgogICAgICJAZW1vdGlvbi9zdHlsaXMiICJeMC44 LjQiCiAgICAgIkBlbW90aW9uL3VuaXRsZXNzIiAiXjAuNy40IgotICAgIGJhYmVsLXBsdWdpbi1z dHlsZWQtY29tcG9uZW50cyAiPj0gMSIKKyAgICBiYWJlbC1wbHVnaW4tc3R5bGVkLWNvbXBvbmVu dHMgIj49IDEuMTIuMCIKICAgICBjc3MtdG8tcmVhY3QtbmF0aXZlICJeMy4wLjAiCiAgICAgaG9p c3Qtbm9uLXJlYWN0LXN0YXRpY3MgIl4zLjAuMCIKICAgICBzaGFsbG93ZXF1YWwgIl4xLjEuMCIK QEAgLTEwMTYxLDcgKzk4NjIsNyBAQCBzdHlsZWhhY2tzQF41LjAuMToKICAgICBicm93c2Vyc2xp c3QgIl40LjE2LjAiCiAgICAgcG9zdGNzcy1zZWxlY3Rvci1wYXJzZXIgIl42LjAuNCIKIAotc3R5 bGlzQF40LjAuMywgc3R5bGlzQF40LjAuNzoKK3N0eWxpc0BeNC4wLjEwLCBzdHlsaXNAXjQuMC43 OgogICB2ZXJzaW9uICI0LjAuMTAiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL3N0eWxpcy8tL3N0eWxpcy00LjAuMTAudGd6IzQ0NjUxMmQxMDk3MTk3YWIzZjAyZmIz YzI1ODM1OGMzZjdhMTQyNDAiCiAgIGludGVncml0eSBzaGE1MTItbTNrK2RrN1FlSnc2NjBlSUtS Um4zeFBGNnV1dkhzL0ZGempYM0hRNW92ZTBxWXNpeWdvQWh3bjVhM0lZS2FaUG81THJZRDByZlZt dHYxZ05ZMXVZd2c9PQpAQCAtMTAxODUsMTMgKzk4ODYsMjAgQEAgc3VwcG9ydHMtY29sb3JAXjUu My4wLCBzdXBwb3J0cy1jb2xvckBeNS41LjA6CiAgIGRlcGVuZGVuY2llczoKICAgICBoYXMtZmxh ZyAiXjMuMC4wIgogCi1zdXBwb3J0cy1jb2xvckBeNy4wLjAsIHN1cHBvcnRzLWNvbG9yQF43LjEu MDoKK3N1cHBvcnRzLWNvbG9yQF43LjEuMDoKICAgdmVyc2lvbiAiNy4yLjAiCiAgIHJlc29sdmVk ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N1cHBvcnRzLWNvbG9yLy0vc3VwcG9ydHMt Y29sb3ItNy4yLjAudGd6IzFiN2RjZGNiMzJiODEzODgwMWIzZTQ3OGJhNmE1MWNhYTg5NjQ4ZGEi CiAgIGludGVncml0eSBzaGE1MTItcXBDQXZSbDlzdHVPSHZlS3NuN0huY0pSdnY1MDFxSWFjS3pR bE8vK0x3eGM5KzBxMndMeXY0RGZ2dDgwL0RQbjJwcU9Cc0pkRGlvZ1hHUjkrT3Z3Unc9PQogICBk ZXBlbmRlbmNpZXM6CiAgICAgaGFzLWZsYWcgIl40LjAuMCIKIAorc3VwcG9ydHMtY29sb3JAXjgu MC4wOgorICB2ZXJzaW9uICI4LjEuMSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vc3VwcG9ydHMtY29sb3IvLS9zdXBwb3J0cy1jb2xvci04LjEuMS50Z3ojY2Q2ZmMx N2UyODUwMGNmZjU2YzFiODZjMGE3ZmQ0YTU0YTczMDA1YyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1N cFVFTjJPb2R0VXp4dktRbDcyY1VGN1JRNUVpSHNHdlNzVkcwaWE5YzVSYldHTDJDSTRDN0VwUFM4 VVRCSXBsbmx6WmlOdVY1NncrRnVOeHkzdHkyUT09CisgIGRlcGVuZGVuY2llczoKKyAgICBoYXMt ZmxhZyAiXjQuMC4wIgorCiBzdmctcGFyc2VyQF4yLjAuMjoKICAgdmVyc2lvbiAiMi4wLjQiCiAg IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3N2Zy1wYXJzZXIvLS9zdmct cGFyc2VyLTIuMC40LnRneiNmZGMyZTI5ZTEzOTUxNzM2MTQwYjc2Y2IxMjJjOGVlNjYzMGViNmI1 IgpAQCAtMTAyNTcsMTkgKzk5NjUsNiBAQCBzdmdvQF4xLjIuMiwgc3Znb0BeMS4zLjI6CiAgICAg dW5xdW90ZSAifjEuMS4xIgogICAgIHV0aWwucHJvbWlzaWZ5ICJ+MS4wLjAiCiAKLXN2Z29AXjIu My4wOgotICB2ZXJzaW9uICIyLjcuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20vc3Znby8tL3N2Z28tMi43LjAudGd6I2UxNjRjZGVkMjJmNDQwOGZlNDk3OGYwODJi ZTgwMTU5Y2FlYTFlMmQiCi0gIGludGVncml0eSBzaGE1MTItYURMc0drcmU0ZlREQ1d2b2x5Vytm czhaSkZBQnB6TFhidGRLMXk3MUNLbkh6QW5wRHhLWFBqMm1OS2orcHlPWFVDekZIenV4Uko5NFhP RnlnT1dWM3c9PQotICBkZXBlbmRlbmNpZXM6Ci0gICAgIkB0cnlzb3VuZC9zYXgiICIwLjIuMCIK LSAgICBjb21tYW5kZXIgIl43LjIuMCIKLSAgICBjc3Mtc2VsZWN0ICJeNC4xLjMiCi0gICAgY3Nz LXRyZWUgIl4xLjEuMyIKLSAgICBjc3NvICJeNC4yLjAiCi0gICAgbmFub2NvbG9ycyAiXjAuMS4x MiIKLSAgICBzdGFibGUgIl4wLjEuOCIKLQogc3Znb0BeMi43LjA6CiAgIHZlcnNpb24gIjIuOC4w IgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdmdvLy0vc3Znby0y LjguMC50Z3ojNGZmODBjY2U2NzEwZGMyNzk1ZjBjN2M3NDEwMWU2NzY0Y2ZjY2QyNCIKQEAgLTEw Mjg4LDExICs5OTgzLDYgQEAgc3ZncGF0aEBeMi4xLjU6CiAgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL3N2Z3BhdGgvLS9zdmdwYXRoLTIuMy4xLnRneiNiMTAyMzM0YmVi ZDIyNDRiNDgxODQ2MGJhMmViYWQ1MjcxNmEwZDQzIgogICBpbnRlZ3JpdHkgc2hhNTEyLXdOejZs Q29qKzk5R01veVU3U296VGZQcWlMSHo2V2NKWVozMForRjRsRi9nUHR4V0hCQ3BaNERob0RJMCtv WjBkT2JLeVlzSmRTUEdiTDJtSnEvcUNnPT0KIAotc3ltYm9sLW9ic2VydmFibGVAMS4yLjA6Ci0g IHZlcnNpb24gIjEuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS9zeW1ib2wtb2JzZXJ2YWJsZS8tL3N5bWJvbC1vYnNlcnZhYmxlLTEuMi4wLnRneiNjMjI2ODhh ZWQ0ZWFiM2NkYzJkZmVhY2JiNTYxNjYwNTYwYTAwODA0IgotICBpbnRlZ3JpdHkgc2hhNTEyLWU5 MDBuTThSUnRHaGxWMzZLR0VVOWs2NUszbVBiMVdWNzBPZGpmeGxHMkVBdU0xbm9pL0UvQmFXL3VN aEw3YlBFc3NLOFFWNTd2TjNlc2l4alV2Y1hRPT0KLQogc3ludGF4LWVycm9yQF4xLjEuMToKICAg dmVyc2lvbiAiMS40LjAiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L3N5bnRheC1lcnJvci8tL3N5bnRheC1lcnJvci0xLjQuMC50Z3ojMmQ5ZDRmZjVjMDY0YWNiNzEx NTk0YTNlM2I5NTA1NGFkNTFkOTA3YyIKQEAgLTEwMzAwLDE3ICs5OTkwLDE2IEBAIHN5bnRheC1l cnJvckBeMS4xLjE6CiAgIGRlcGVuZGVuY2llczoKICAgICBhY29ybi1ub2RlICJeMS4yLjAiCiAK LXRhYmxlQF42LjAuNDoKLSAgdmVyc2lvbiAiNi43LjEiCi0gIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL3RhYmxlLy0vdGFibGUtNi43LjEudGd6I2VlMDU1OTJiNzE0Mzgz MWE4Yzk0ZjNjZWU2YWFlNGMxY2NlZjMzZTIiCi0gIGludGVncml0eSBzaGE1MTItWkd1bTQ3WWk2 S09PRkRFOG0yMjN0ZDUzYXRoMmVuSGNZTGdPQ2pHcjVuZ3U4YmRJQVJRazZtTi93Uk12NHlNUmNI bkNTbkhiQ0VoYTRzb2JReDV5V2c9PQordGFibGVAXjYuMC45OgorICB2ZXJzaW9uICI2LjcuMyIK KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGFibGUvLS90YWJsZS02 LjcuMy50Z3ojMjU1Mzg4NDM5NzE1YTczODM5MWJkMmVlNGNiY2E4OWE0ZDA1YTliNyIKKyAgaW50 ZWdyaXR5IHNoYTUxMi01RGtJeGVBN1hFUkJxTXdKcTBhSFpPZE1hZEJ4NGU2ZURvRlJ1eVQ1VlI4 MkowWWNnMkR3TTZHZkEvRVFBaEordG9SVGFTMWxJZFNRQ3Fncm1oUG5sdz09CiAgIGRlcGVuZGVu Y2llczoKICAgICBhanYgIl44LjAuMSIKLSAgICBsb2Rhc2guY2xvbmVkZWVwICJeNC41LjAiCiAg ICAgbG9kYXNoLnRydW5jYXRlICJeNC40LjIiCiAgICAgc2xpY2UtYW5zaSAiXjQuMC4wIgotICAg IHN0cmluZy13aWR0aCAiXjQuMi4wIgotICAgIHN0cmlwLWFuc2kgIl42LjAuMCIKKyAgICBzdHJp bmctd2lkdGggIl40LjIuMyIKKyAgICBzdHJpcC1hbnNpICJeNi4wLjEiCiAKIHRhYmxlc29ydGVy QF4yLjMxLjI6CiAgIHZlcnNpb24gIjIuMzEuMyIKQEAgLTEwMzIwLDkgKzEwMDA5LDkgQEAgdGFi bGVzb3J0ZXJAXjIuMzEuMjoKICAgICBqcXVlcnkgIj49MS4yLjYiCiAKIHRhcGFibGVAXjIuMS4x LCB0YXBhYmxlQF4yLjIuMDoKLSAgdmVyc2lvbiAiMi4yLjAiCi0gIHJlc29sdmVkICJodHRwczov L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RhcGFibGUvLS90YXBhYmxlLTIuMi4wLnRneiM1YzM3M2Qy ODFkOWM2NzI4NDgyMTNkMGUwMzdkMWM0MTY1YWI0MjZiIgotICBpbnRlZ3JpdHkgc2hhNTEyLUZC azRJZXNNVjFyQnhYMnRmaUs4UkFtb2d0V241M3B1TE9RbHZPOFh1d2xneGNZYlA0bVZQUzlQaDRh ZWFtU3l5VmpPbDI0YVlXQXVjOFU1a0NWd013PT0KKyAgdmVyc2lvbiAiMi4yLjEiCisgIHJlc29s dmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RhcGFibGUvLS90YXBhYmxlLTIuMi4x LnRneiMxOTY3YTczZWY0MDYwYTgyZjEyYWI5NmFmODZkNTJmZGI3NmVlY2EwIgorICBpbnRlZ3Jp dHkgc2hhNTEyLUdOelF2UVRPSVA2UnlUZkUyUXhiOFpWbE5tdzBuODh2cDFzendXUmltUDAybW5U c3gzV3RuNXFSZHFZOXcyWGR1Rk5VZ3ZPd2hOblFzandDcCtrcWFRPT0KIAogdGFyLXN0cmVhbUBe MS41LjI6CiAgIHZlcnNpb24gIjEuNi4yIgpAQCAtMTAzODIsMjYgKzEwMDcxLDMzIEBAIHRlbXB1 c2RvbWludXMtY29yZUBeNS4wLjM6CiAgICAgbW9tZW50ICJ+Mi4yNC4wIgogICAgIG1vbWVudC10 aW1lem9uZSAiXjAuNS4yOCIKIAotdGVyc2VyLXdlYnBhY2stcGx1Z2luQF41LjEuMToKLSAgdmVy c2lvbiAiNS4xLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Rl cnNlci13ZWJwYWNrLXBsdWdpbi8tL3RlcnNlci13ZWJwYWNrLXBsdWdpbi01LjEuMi50Z3ojNTFk Mjk1ZWI3Y2M1Njc4NWE2N2EzNzI1NzVmZGM0NmU0MmQ1YzIwYyIKLSAgaW50ZWdyaXR5IHNoYTUx Mi02UWhEYUFpVkhJUXI1QWIzWFVXWnlEbXJJUENITWlxSlZsak1GOTFZS3lxd0trTDVRSG5ZTWty TUJ5OTZ2OVo3ZXYxaEdoU0V3MUhRWmMycC9zNVo4UT09Cit0ZXJzZXItd2VicGFjay1wbHVnaW5A XjUuMS4xLCB0ZXJzZXItd2VicGFjay1wbHVnaW5AXjUuMS4zOgorICB2ZXJzaW9uICI1LjIuNCIK KyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGVyc2VyLXdlYnBhY2st cGx1Z2luLy0vdGVyc2VyLXdlYnBhY2stcGx1Z2luLTUuMi40LnRneiNhZDFiZTc2MzliMWNiZTNl YTQ5ZmFiOTk1Y2JlNzIyNGIzMTc0N2ExIgorICBpbnRlZ3JpdHkgc2hhNTEyLUUyQ2tOTU4rMWNo bzA0WXBkQU55UnJuOEN5TjR5TXkrV2RGS1pJeVNGWnJHWFp4SndKUDZQTU5HR2MvTWNyNnF5Z1FI VVVxUnhuQVBtaTBNOWYwMFhBPT0KICAgZGVwZW5kZW5jaWVzOgotICAgIGplc3Qtd29ya2VyICJe MjYuNi4yIgorICAgIGplc3Qtd29ya2VyICJeMjcuMC42IgogICAgIHAtbGltaXQgIl4zLjEuMCIK LSAgICBzY2hlbWEtdXRpbHMgIl4zLjAuMCIKLSAgICBzZXJpYWxpemUtamF2YXNjcmlwdCAiXjUu MC4xIgorICAgIHNjaGVtYS11dGlscyAiXjMuMS4xIgorICAgIHNlcmlhbGl6ZS1qYXZhc2NyaXB0 ICJeNi4wLjAiCiAgICAgc291cmNlLW1hcCAiXjAuNi4xIgotICAgIHRlcnNlciAiXjUuNy4wIgor ICAgIHRlcnNlciAiXjUuNy4yIgogCi10ZXJzZXJAXjUuNy4wOgotICB2ZXJzaW9uICI1LjcuMCIK LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGVyc2VyLy0vdGVyc2Vy LTUuNy4wLnRneiNhNzYxZWVlYzIwNmJjODdiNjA1YWIxMzAyOTg3NmVhZDkzOGFlNjkzIgotICBp bnRlZ3JpdHkgc2hhNTEyLUhQNS85aHAyVWFadDVmWWt1aE5CUjhZeVJjVDhqdXc4K3VGYkFtZTUz aU45aGJsdktuTFVUS2ttd0pHNm9jV3BJS2Y4VUs0RG9lV0c0dHkwSjZTNi9nPT0KK3RlcnNlckBe NS43LjI6CisgIHZlcnNpb24gIjUuOS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS90ZXJzZXIvLS90ZXJzZXItNS45LjAudGd6IzQ3ZDZlNjI5YTUyMjk2MzI0MGYy YjU1ZmNhYTNjOTkwODNkMmMzNTEiCisgIGludGVncml0eSBzaGE1MTItaDVoeGEyM3NDZHB6Y3ll LzdiOFlxYkU1T3dLY2EvbmkwUlF6MXVSWDN0R2g4aGFhR0hxY3VTcWJHUnlidUFLTmRudFowbURn Rk5YUEo0OHhRMlJYS1E9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgY29tbWFuZGVyICJeMi4yMC4w IgogICAgIHNvdXJjZS1tYXAgIn4wLjcuMiIKLSAgICBzb3VyY2UtbWFwLXN1cHBvcnQgIn4wLjUu MTkiCisgICAgc291cmNlLW1hcC1zdXBwb3J0ICJ+MC41LjIwIgorCit0ZXh0LXNlZ21lbnRhdGlv bkBeMS4wLjI6CisgIHZlcnNpb24gIjEuMC4yIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry eS55YXJucGtnLmNvbS90ZXh0LXNlZ21lbnRhdGlvbi8tL3RleHQtc2VnbWVudGF0aW9uLTEuMC4y LnRneiMxZjgyOGZhMTRhYTEwMWMxMTRkZWQxYmRhMzViYTdkY2MxN2M5ODU4IgorICBpbnRlZ3Jp dHkgc2hhNTEyLXVUcXZMeGRCclZueC9DRlFPdG5mOHRmelNYRm0rMVF4YXU3WGk1NGo0T1BUWm9r dURPWDhxbmNRenJnMkc4WmljQU1PTThUZ3pGQVlUYitBcU5PNEN3PT0KKyAgZGVwZW5kZW5jaWVz OgorICAgIHV0cmllICJeMS4wLjEiCiAKIHRleHQtdGFibGVAXjAuMi4wOgogICB2ZXJzaW9uICIw LjIuMCIKQEAgLTEwNDQ5LDExICsxMDE0NSwxMSBAQCB0aW55LXdhcm5pbmdAXjEuMC4yOgogICBp bnRlZ3JpdHkgc2hhNTEyLWxCTjl6TE4vb0FmNjhvM3pOWFlyZEN0MWtQOFdzaUdXOE9vMmthNDFi MklNNUpML1MxQ1R5WDFyVzBtYi96U3VKdW4wWlVyRHh4NHNxdllTMkZXelBBPT0KIAogdGlwcHku anNAXjYuMy4xOgotICB2ZXJzaW9uICI2LjMuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0 cnkueWFybnBrZy5jb20vdGlwcHkuanMvLS90aXBweS5qcy02LjMuMS50Z3ojMzc4OGEwMDdiZTcw MTVlZWUwZmQ1ODlhNjZiOThmYjNmOGYxMDE4MSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1KbkZuY0Nx K3JGMWRUVVJ1cG9KNHlQaWU1Q29mOTc4aW5XNi80UzZrbVdWN0xMOVlPU0VWTWlmRUQzS2RyVlBF RytaL1RGSDJDRE5KY1FFZmFldVF3dz09CisgIHZlcnNpb24gIjYuMy41IgorICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90aXBweS5qcy8tL3RpcHB5LmpzLTYuMy41LnRn eiNjYmM5OWQzNGY4N2NjYzEyN2U2NDYwMDMyYjg2YzhkNDc5NzFkMzhmIgorICBpbnRlZ3JpdHkg c2hhNTEyLUI5aEFRNUtORitqREpSZzZjUnlzVjZZM0orNWZpTmZENjBHdVhSNVRQMHNmcmNsdHBn ZHpWYzdmMXdNdGpRM1cwK1hzeTgwQ0R2azBaK1ZyMGNNNHNRPT0KICAgZGVwZW5kZW5jaWVzOgot ICAgICJAcG9wcGVyanMvY29yZSIgIl4yLjguMyIKKyAgICAiQHBvcHBlcmpzL2NvcmUiICJeMi45 LjAiCiAKIHRtcEBeMC4yLjE6CiAgIHZlcnNpb24gIjAuMi4xIgpAQCAtMTA1MTIsOSArMTAyMDgs OSBAQCB0cmltLXJpZ2h0QF4xLjAuMToKICAgaW50ZWdyaXR5IHNoYTEteXk0U0F3WitESTNoOWhR SlM1L2tWd1RxWUFNPQogCiB0c2xpYkBeMi4yLjA6Ci0gIHZlcnNpb24gIjIuMi4wIgotICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90c2xpYi8tL3RzbGliLTIuMi4wLnRn eiNmYjJjNDc1OTc3ZTM1ZTI0MTMxMWVkZTI2OTNjZWUxZWM2Njk4ZjVjIgotICBpbnRlZ3JpdHkg c2hhNTEyLWdTOUdWSFJVK1JHbjVLUU0ycmxsQWxSM2RVNm03QWNwSktkdEg4Z0Z2UWlDNE90Z2s5 OFhubU1VK25aZW5IdC8rVmhuQlBXd2dySnN5cmRjdzZpMjN3PT0KKyAgdmVyc2lvbiAiMi4zLjEi CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3RzbGliLy0vdHNsaWIt Mi4zLjEudGd6I2U4YTMzNWFkZDVjZWFlNTFhYTI2MWQzMmE0OTAxNThlZjA0MmVmMDEiCisgIGlu dGVncml0eSBzaGE1MTItNzdFYnlQUHBNeitGUkZSdUFGbFdNdG1nVVdHZTlVT0cyWjI1TnFDd2lJ alJoT2Y1aUtHdXpTZTVQMncxbGFxK0ZrUnk0cCtQQ3VWa0pTR2t6VEVLVnc9PQogCiB0dGYyZW90 QF4yLjAuMDoKICAgdmVyc2lvbiAiMi4wLjAiCkBAIC0xMDU2NywxMCArMTAyNjMsMTAgQEAgdHlw ZS1mZXN0QF4wLjExLjA6CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L3R5cGUtZmVzdC8tL3R5cGUtZmVzdC0wLjExLjAudGd6Izk3YWJmMDg3MjMxMGZlZDg4YTVjNDY2 YjI1NjgxNTc2MTQ1ZTMzZjEiCiAgIGludGVncml0eSBzaGE1MTItT2RqWEp4bkNOMUF2eUxTemVL SWdYVFh4Vis5OVp1WGwzSHBvOVhwSkF2OU1CY0hyckpPUTVrVjd5cFhPdVFpZStBbVdHMjVoTGJp S2R3WVRpZnpjZlE9PQogCi10eXBlLWZlc3RAXjAuOC4xOgotICB2ZXJzaW9uICIwLjguMSIKLSAg cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdHlwZS1mZXN0Ly0vdHlwZS1m ZXN0LTAuOC4xLnRneiMwOWUyNDllYmRlODUxZDNiMWU0OGQyN2MxMDU0NDQ2NjdmMTdiODNkIgot ICBpbnRlZ3JpdHkgc2hhNTEyLTRkYnpJenF2anRnaU01cncxazVyRUh0QkFOS21kdWRoR3lCRWFq TjAxZkV5aGFBSWhzb0tOeTZ5NytJTjkzSWZwRnR3WTlpcWk3a0QreHdLaFFzTkpBPT0KK3R5cGUt ZmVzdEBeMC4yMC4yOgorICB2ZXJzaW9uICIwLjIwLjIiCisgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL3R5cGUtZmVzdC8tL3R5cGUtZmVzdC0wLjIwLjIudGd6IzFiZjIw N2Y0YjI4ZjkxNTgzNjY2Y2I1ZmJkMzI3ODg3MzAxY2Q1ZjQiCisgIGludGVncml0eSBzaGE1MTIt TmUrZUU0cjAvaVducEF4RDg1MnozQStOMEJ0NVJOLy9Oakp3UmQyVkZIRW1yeXd4ZjV2c1psaDRS NmxpeGw2Qit3ei84ZCttYVRTQWtOMUZJa0kzTFE9PQogCiB0eXBlLWlzQH4xLjYuMTc6CiAgIHZl cnNpb24gIjEuNi4xOCIKQEAgLTEwNTk2LDkgKzEwMjkyLDkgQEAgdWEtcGFyc2VyLWpzQF4wLjcu MzA6CiAgIGludGVncml0eSBzaGE1MTItcUxLL1hlOUUydXptWUkzcUxlT21JMHRFT3QrVEJCUXlV SUFoNGFBZ1UwNUZWWXplWnJLVWRrQVpmQk5WR1JhSFZnVjBURGtkRW5nSlN3L1N5UWNoa1E9PQog CiB1Z2xpZnktanNAXjMuMS40OgotICB2ZXJzaW9uICIzLjE0LjIiCi0gIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VnbGlmeS1qcy8tL3VnbGlmeS1qcy0zLjE0LjIudGd6 I2Q3ZGQ2YTQ2Y2E1NzIxNGY1NGEyZDBhNDNjYWQwZjM1ZGI4MmFjOTkiCi0gIGludGVncml0eSBz aGE1MTItcnRQTWxtY080YWdUVWZ6MTBDYmdKMWs2VUFvWE0yZ1diM0dvTVBQWkIvKy9BY2tmOGxO V2sxMUs0cllpMkQwYXBnb0ZSTHRRT1poYisvaUdOSnEyNkE9PQorICB2ZXJzaW9uICIzLjE0LjMi CisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VnbGlmeS1qcy8tL3Vn bGlmeS1qcy0zLjE0LjMudGd6I2MwZjI1ZGZlYTFlOGU1MzIzZWNjZjU5NjEwYmUwOGI2MDQzYzE1 Y2YiCisgIGludGVncml0eSBzaGE1MTItbWljM2FPZGlxMDFEdVNWeDBUc2VhRXpNSVZxZWJNWjBa M3ZhZURoRkVoOWJzYzI0aFYxVEZ2Tjc0cmVBMnZzMDhEMFpXZk5qQWNKM1ViVkxhQnNzK2c9PQog CiB1bWRAXjMuMC4wOgogICB2ZXJzaW9uICIzLjAuMyIKQEAgLTEwNzEyLDcgKzEwNDA4LDcgQEAg dW5pcXVlLXNsdWdAXjIuMC4wOgogdW5pdmVyc2FsaWZ5QF4yLjAuMDoKICAgdmVyc2lvbiAiMi4w LjAiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VuaXZlcnNhbGlm eS8tL3VuaXZlcnNhbGlmeS0yLjAuMC50Z3ojNzVhNDk4NGVmZWRjNGIwODk3NWM1YWViNzNmNTMw ZDAyZGYyNTcxNyIKLSAgaW50ZWdyaXR5ICJzaGExLWRhU1lUdjdjU3dpWFhGcnJjL1V3MEMzeVZ4 Yz0gc2hhNTEyLWhBWnNLcTdZeTExWnUxREUwT3pXanc3bm5MWm1KWllURFpaeUVGSFpkVWhWOEZr SDVNQ2ZvVTFYTWF4WG92cHlXNW5xNXNjUHFxMFpEUDlaeWwwNG9RPT0iCisgIGludGVncml0eSBz aGE1MTItaEFac0txN1l5MTFadTFERTBPeldqdzdubkxabUpaWVREWlp5RUZIWmRVaFY4RmtINU1D Zm9VMVhNYXhYb3ZweVc1bnE1c2NQcXEwWkRQOVp5bDA0b1E9PQogCiB1bnBpcGVAMS4wLjAsIHVu cGlwZUB+MS4wLjA6CiAgIHZlcnNpb24gIjEuMC4wIgpAQCAtMTA3OTUsOSArMTA0OTEsOSBAQCB1 dGlsQDAuMTAuMzoKICAgICBpbmhlcml0cyAiMi4wLjEiCiAKIHV0aWxAfjAuMTIuMDoKLSAgdmVy c2lvbiAiMC4xMi4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91 dGlsLy0vdXRpbC0wLjEyLjMudGd6Izk3MWJiMDI5MmQyY2MwYzg5MmRhYjdjNmE1ZDM3YzJiZWM3 MDc4ODgiCi0gIGludGVncml0eSBzaGE1MTItSThYa29Rd0UrZlBRRWh5OXYwMTJWK1RTZEgya3A5 dHMyOWkyMFRhYURVWHNnN3gvb25lUGJoRkpVRXhCZnYvMmF5MVpPcC9Wc20zbkRsbW5GR1NBb2c9 PQorICB2ZXJzaW9uICIwLjEyLjQiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w a2cuY29tL3V0aWwvLS91dGlsLTAuMTIuNC50Z3ojNjYxMjFhMzE0MjBkZjhmMDFjYTBjNDY0YmUx NWRmYTFkMTg1MDI1MyIKKyAgaW50ZWdyaXR5IHNoYTUxMi1ieFo5cXRTbEdVV1NPeTlRYTlYZ2sx MWtTc2xwdVp3YXhDZzRzTklEajZGTHVjRGFiMkp4bkh3eU5UQ3BITXRLMU1qb1FpV1E2RGlVTVpZ YlNyTytTdz09CiAgIGRlcGVuZGVuY2llczoKICAgICBpbmhlcml0cyAiXjIuMC4zIgogICAgIGlz LWFyZ3VtZW50cyAiXjEuMC40IgpAQCAtMTA4MTEsMTIgKzEwNTA3LDE5IEBAIHV0aWxzLW1lcmdl QDEuMC4xOgogICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS91dGlscy1t ZXJnZS8tL3V0aWxzLW1lcmdlLTEuMC4xLnRneiM5Zjk1NzEwZjUwYTI2Nzk0N2IyY2NjMTI0NzQx YzEwMjg0MjdlNzEzIgogICBpbnRlZ3JpdHkgc2hhMS1uNVZ4RDFDaVo1UjdMTXdTUjBIQkFvUW41 eE09CiAKK3V0cmllQF4xLjAuMToKKyAgdmVyc2lvbiAiMS4wLjEiCisgIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3V0cmllLy0vdXRyaWUtMS4wLjEudGd6I2UxNTUyMzVl YmNiZGRjODlhZTA5MjYxYWI2ZTc3M2NlNjE0MDFiMmYiCisgIGludGVncml0eSBzaGE1MTItSlBh RFhGM3Z6Z1p4ZmVFd3V0ZEd6bHJOb1ZGTDVVdlpjYk82UW85RDRHb2FocmllVVBvTVU4R0NwVnBS N01RcWNLaG1TaEloOFZsYkVOM1BMTTNFQmc9PQorICBkZXBlbmRlbmNpZXM6CisgICAgYmFzZTY0 LWFycmF5YnVmZmVyICJeMS4wLjEiCisKIHV1aWRAXjMuMC4xOgogICB2ZXJzaW9uICIzLjQuMCIK ICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdXVpZC8tL3V1aWQtMy40 LjAudGd6I2IyM2U0MzU4YWZhOGEyMDJmZTdhMTAwYWYxZjVmODgzZjAyMDA3ZWUiCiAgIGludGVn cml0eSBzaGE1MTItSGpTRFJ3NmdaRTVKTWdnY3RIQmNqVmFrMDgrS0VWaFNJaUR6Rm5UOVM5YWVn bXA4NVMvYlJlQlZUYjRRVEZhUk5wdEo5a3VZYU5obmJORU9rYktiL0E9PQogCi12OC1jb21waWxl LWNhY2hlQF4yLjAuMywgdjgtY29tcGlsZS1jYWNoZUBeMi4yLjA6Cit2OC1jb21waWxlLWNhY2hl QF4yLjAuMzoKICAgdmVyc2lvbiAiMi4zLjAiCiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL3Y4LWNvbXBpbGUtY2FjaGUvLS92OC1jb21waWxlLWNhY2hlLTIuMy4wLnRn eiMyZGUxOTYxOGM2NmRjMjQ3ZGNmYjZmOTkzMzgwMzVkODI0NWEyY2VlIgogICBpbnRlZ3JpdHkg c2hhNTEyLWw4bENFbUxjTFlaaDRuYnVuTlp2UUNKYzVwdjcrUkN3YThxL0xkVXg4dTdsc1d2UERL bXBvZEpBSk53a0FoSkMvL2RGWTQ4S3VJRW1qdGQ0UlZpRHJBPT0KQEAgLTEwODI5LDkgKzEwNTMy LDkgQEAgdmFsaWQtZmlsZW5hbWVAXjIuMC4xOgogICAgIGZpbGVuYW1lLXJlc2VydmVkLXJlZ2V4 ICJeMi4wLjAiCiAKIHZhbmlsbGEtcGlja2VyQF4yLjExLjI6Ci0gIHZlcnNpb24gIjIuMTEuMiIK LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdmFuaWxsYS1waWNrZXIv LS92YW5pbGxhLXBpY2tlci0yLjExLjIudGd6I2VhYTI0ZWZhNjhjMjdlN2VlOWUwNzc2ZGY1NWQ2 OTEzYjg1NWYxMzMiCi0gIGludGVncml0eSBzaGE1MTItMmNQN0xsVW54SHh3T2YwNlJlVVZ0ZDJS RkpNbkpHYXhOMnMwcDh3ekJIM0luNWIwMExlN2ZGWjlWcklvQkUwc3Zaa1NxL0JDL1B3cS9rLzlu K0FBMmc9PQorICB2ZXJzaW9uICIyLjEyLjEiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5 Lnlhcm5wa2cuY29tL3ZhbmlsbGEtcGlja2VyLy0vdmFuaWxsYS1waWNrZXItMi4xMi4xLnRneiM2 ZTYxOWVlY2Y1NTM4OTFiOGQyZDA0MmI3NDVhMjNjOTFmMTlmMzRjIgorICBpbnRlZ3JpdHkgc2hh NTEyLTJxckVQOVZZeWxLWGJ5elhLc2J1MmRmZXJCVHZxbmxzcjI5WGpId0ZFKy9NRXAwVk5qNm9F VUVTTER0S1o3RFd6R2RTdjF4Lyt1anFGWkYrS3NPM2NnPT0KICAgZGVwZW5kZW5jaWVzOgogICAg ICJAc3BoaW54eHh4L2NvbG9yLWNvbnZlcnNpb24iICJeMi4yLjIiCiAKQEAgLTEwODYyLDcgKzEw NTY1LDcgQEAgdm9pZC1lbGVtZW50c0BeMi4wLjA6CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lz dHJ5Lnlhcm5wa2cuY29tL3ZvaWQtZWxlbWVudHMvLS92b2lkLWVsZW1lbnRzLTIuMC4xLnRneiNj MDY2YWZiNTgyYmIxY2I0MTI4ZDYwZWE5MjM5MmU5NGQ1ZTlkYmVjIgogICBpbnRlZ3JpdHkgc2hh MS13R2F2dFlLN0hMUVNqV0Rxa2prdWxOWHAyK3c9CiAKLXdhdGNocGFja0BeMi4wLjA6Cit3YXRj aHBhY2tAXjIuMi4wOgogICB2ZXJzaW9uICIyLjIuMCIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20vd2F0Y2hwYWNrLy0vd2F0Y2hwYWNrLTIuMi4wLnRneiM0N2Q3OGY1 NDE1ZmU1NTBlY2Q3NDBmOTlmZTI4ODIzMjNhNThiMWNlIgogICBpbnRlZ3JpdHkgc2hhNTEyLXVw NFlBbi9YSGdaSEl4RkJWQ2RsTWlXRGo2V2FMS3B3VmVHUWsySTV0aGRZeEYvS21GMGFhejZUZkpa L2hmbDFoL1hsY0RyN2sxS0g3VGhEYWdwRmFBPT0KQEAgLTEwODg5LDE0ICsxMDU5MiwxNCBAQCB3 ZWJmb250cy1sb2FkZXJAXjcuMy4wOgogICAgIGxvYWRlci11dGlscyAiXjIuMC4wIgogCiB3ZWJw YWNrLWJ1bmRsZS1hbmFseXplckBeNC40LjA6Ci0gIHZlcnNpb24gIjQuNC4yIgotICByZXNvbHZl ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93ZWJwYWNrLWJ1bmRsZS1hbmFseXplci8t L3dlYnBhY2stYnVuZGxlLWFuYWx5emVyLTQuNC4yLnRneiMzOTg5OGNmNjIwMDE3ODI0MDkxMGQ2 Mjk3MDVmMGYzNDkzZjdkNjY2IgotICBpbnRlZ3JpdHkgc2hhNTEyLVBJYWdNWWhsRXpGZmhNWU96 czVnRlQ1NURrVWRreXJKaS9TeEpwOEVGM1lNV2hTK1Q5dnZzMkVvVGV0cGs1cWI2VnNDcTAyZVhU bFJET3lkUmhERkFRPT0KKyAgdmVyc2lvbiAiNC41LjAiCisgIHJlc29sdmVkICJodHRwczovL3Jl Z2lzdHJ5Lnlhcm5wa2cuY29tL3dlYnBhY2stYnVuZGxlLWFuYWx5emVyLy0vd2VicGFjay1idW5k bGUtYW5hbHl6ZXItNC41LjAudGd6IzFiMGVlYTI5NDdlNzM1Mjg3NTRhNmY5YWYzZTkxYjJiNmUw Zjc5ZDUiCisgIGludGVncml0eSBzaGE1MTItR1VNWmxNM1NLd1M4WitDS2VJRng3Q1ZvSG4zZFhG Y1VBalQvZGNaUVFtZlNaR3ZpdFBmTW9iMmlwamFpN292RkZxUHZUcWtFWi9sZUw0TzBZT2RBWVE9 PQogICBkZXBlbmRlbmNpZXM6CiAgICAgYWNvcm4gIl44LjAuNCIKICAgICBhY29ybi13YWxrICJe OC4wLjAiCiAgICAgY2hhbGsgIl40LjEuMCIKLSAgICBjb21tYW5kZXIgIl42LjIuMCIKKyAgICBj b21tYW5kZXIgIl43LjIuMCIKICAgICBnemlwLXNpemUgIl42LjAuMCIKICAgICBsb2Rhc2ggIl40 LjE3LjIwIgogICAgIG9wZW5lciAiXjEuNS4yIgpAQCAtMTA5MDQsMjIgKzEwNjA3LDIxIEBAIHdl YnBhY2stYnVuZGxlLWFuYWx5emVyQF40LjQuMDoKICAgICB3cyAiXjcuMy4xIgogCiB3ZWJwYWNr LWNsaUBeNC41LjA6Ci0gIHZlcnNpb24gIjQuNy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS93ZWJwYWNrLWNsaS8tL3dlYnBhY2stY2xpLTQuNy4wLnRneiMzMTk1 YTc3N2YxZjgwMmVjZGE3MzJmNmM5NWQyNGMwMDA0YmM1YTM1IgotICBpbnRlZ3JpdHkgc2hhNTEy LTdiS3I5MTgyL3NHZmpGbSt4ZFpTd2dRdUZqZ0VjeTBpQ1RJQnhSVWV0ZUoyS3I4L1d6MHFOSlgr anc2MExVMzZqQXB0NG5tTWtlcDYrVzVBS2hvazZnPT0KKyAgdmVyc2lvbiAiNC45LjEiCisgIHJl c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dlYnBhY2stY2xpLy0vd2VicGFj ay1jbGktNC45LjEudGd6I2I2NGJlODI1ZTJkMWIxMzBmMjg1YzMxNGNhYTNiMWJhOWE0NjMyYjMi CisgIGludGVncml0eSBzaGE1MTItSllSRlZ1eUZwekR4TURCK3YvbmFuVWRRWWNadHFGUEd6bWxX NHMrVWtQTUZoU3BmUk5tZjF6NEF3WWNISlZkdkVGQU03RkZDUWROVHBzQlloREx1c1E9PQogICBk ZXBlbmRlbmNpZXM6CiAgICAgIkBkaXNjb3Zlcnlqcy9qc29uLWV4dCIgIl4wLjUuMCIKLSAgICAi QHdlYnBhY2stY2xpL2NvbmZpZ3Rlc3QiICJeMS4wLjMiCi0gICAgIkB3ZWJwYWNrLWNsaS9pbmZv IiAiXjEuMi40IgotICAgICJAd2VicGFjay1jbGkvc2VydmUiICJeMS40LjAiCi0gICAgY29sb3Jl dHRlICJeMS4yLjEiCisgICAgIkB3ZWJwYWNrLWNsaS9jb25maWd0ZXN0IiAiXjEuMS4wIgorICAg ICJAd2VicGFjay1jbGkvaW5mbyIgIl4xLjQuMCIKKyAgICAiQHdlYnBhY2stY2xpL3NlcnZlIiAi XjEuNi4wIgorICAgIGNvbG9yZXR0ZSAiXjIuMC4xNCIKICAgICBjb21tYW5kZXIgIl43LjAuMCIK ICAgICBleGVjYSAiXjUuMC4wIgogICAgIGZhc3Rlc3QtbGV2ZW5zaHRlaW4gIl4xLjAuMTIiCiAg ICAgaW1wb3J0LWxvY2FsICJeMy4wLjIiCiAgICAgaW50ZXJwcmV0ICJeMi4yLjAiCiAgICAgcmVj aG9pciAiXjAuNy4wIgotICAgIHY4LWNvbXBpbGUtY2FjaGUgIl4yLjIuMCIKICAgICB3ZWJwYWNr LW1lcmdlICJeNS43LjMiCiAKIHdlYnBhY2stbWVyZ2VAXjQuMS41OgpAQCAtMTA5MzAsOSArMTA2 MzIsOSBAQCB3ZWJwYWNrLW1lcmdlQF40LjEuNToKICAgICBsb2Rhc2ggIl40LjE3LjE1IgogCiB3 ZWJwYWNrLW1lcmdlQF41LjcuMzoKLSAgdmVyc2lvbiAiNS43LjMiCi0gIHJlc29sdmVkICJodHRw czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dlYnBhY2stbWVyZ2UvLS93ZWJwYWNrLW1lcmdlLTUu Ny4zLnRneiMyYTA3NTRlMTg3N2EyNWE4YmJhYjNkMjQ3NWNhNzBhMDUyNzA4MjEzIgotICBpbnRl Z3JpdHkgc2hhNTEyLTYvSlVRdjBFTFExaWdqR0R6SGtYYlZEUnhrZkE1N1p3N1BmaXVwZExGSlly Z0ZxWTVaUDh4eGJwcDJsVTNFUHdZeDg5aHQ1Wi9hRGtENDBoRkNtNUFBPT0KKyAgdmVyc2lvbiAi NS44LjAiCisgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dlYnBhY2st bWVyZ2UvLS93ZWJwYWNrLW1lcmdlLTUuOC4wLnRneiMyYjM5ZGJmMjJhZjg3Nzc2YWQ3NDRjMzkw MjIzNzMxZDMwYTY4ZjYxIgorICBpbnRlZ3JpdHkgc2hhNTEyLS9TYUk3eFkwODMxWHdQNmt6dXdo S1dWS0RQOXQxUVkxaDY1bEFGTGJacU1QSXVZY0Q5UUFXNHU5U1RJYlU5a2FKYlBCQi9nZVUvZ0xy MXdEak9oUStRPT0KICAgZGVwZW5kZW5jaWVzOgogICAgIGNsb25lLWRlZXAgIl40LjAuMSIKICAg ICB3aWxkY2FyZCAiXjIuMC4wIgpAQCAtMTA5NTMsMzAgKzEwNjU1LDI4IEBAIHdlYnBhY2stc291 cmNlc0BeMS4xLjA6CiAgICAgc291cmNlLWxpc3QtbWFwICJeMi4wLjAiCiAgICAgc291cmNlLW1h cCAifjAuNi4xIgogCi13ZWJwYWNrLXNvdXJjZXNAXjIuMS4xOgotICB2ZXJzaW9uICIyLjMuMCIK LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2VicGFjay1zb3VyY2Vz Ly0vd2VicGFjay1zb3VyY2VzLTIuMy4wLnRneiM5ZWQyZGU2OWIyNTE0M2E0YzE4ODQ3NTg2YWQ5 ZWNjYjE5Mjc4Y2ZhIgotICBpbnRlZ3JpdHkgc2hhNTEyLVd5T2R0d1N2T01MMWtiZ3RYYlREbkVX MGprSjdoWnIvYkRCeUl3c3poV2QvNFhYMUEzWE1rcmJGTXN1SDQrL01mTGxaQ1V6bEFkZzRyN2ph R0tFSWdRPT0KLSAgZGVwZW5kZW5jaWVzOgotICAgIHNvdXJjZS1saXN0LW1hcCAiXjIuMC4xIgot ICAgIHNvdXJjZS1tYXAgIl4wLjYuMSIKK3dlYnBhY2stc291cmNlc0BeMy4yLjA6CisgIHZlcnNp b24gIjMuMi4xIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93ZWJw YWNrLXNvdXJjZXMvLS93ZWJwYWNrLXNvdXJjZXMtMy4yLjEudGd6IzI1MWE3ZDk3MjBkNzVhZGEx NDY5Y2EwN2RiYjYyZjM2NDFhMDViNmQiCisgIGludGVncml0eSBzaGE1MTItdDZCTVZMUTBBa2pC T29SVFpncXJXbTd4YlhNQnpEK1hEcTJFWjk2K3ZNZm4zcUtnc3ZkWFpoYlBaNEVsVU9wZHY0dStp aUdlK3czK0o3NWl5L2JZR0E9PQogCiB3ZWJwYWNrQF41LjIxLjI6Ci0gIHZlcnNpb24gIjUuMjQu MyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2VicGFjay8tL3dl YnBhY2stNS4yNC4zLnRneiM2ZWMwZjUwNTlmOGQ3Yzc5NjEwNzVmYTU1M2NmY2U3Yjc5MjhhY2Iz IgotICBpbnRlZ3JpdHkgc2hhNTEyLXg3bHJXWjd3bFdBZHlLZE1MNllQdmZWWmtoRDFJQ3VJWkdP REU1U3pLSmpxSTlBNFNwcUdUakdKVGM2Q3dhSHFuMTlnR2FvT1IzT05KNDZuWXNuOXJ3PT0KKyAg dmVyc2lvbiAiNS42MS4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv bS93ZWJwYWNrLy0vd2VicGFjay01LjYxLjAudGd6I2ZhODI3ZjBlZTliZGZkMTQxZGQ3M2MzZTg5 MWU5NTVlYmQ1MmZlN2YiCisgIGludGVncml0eSBzaGE1MTItZlBkVHVhWVovR01HRm00V3JQaTJL UkNxUzF2RHA3NzNrajlTMGlJNVVjLy81Y3N6c0ZFRGdITmFYNFJqMXZvYlVpVTFkRklWM21BOWsx ZUhlbHVGcHc9PQogICBkZXBlbmRlbmNpZXM6CiAgICAgIkB0eXBlcy9lc2xpbnQtc2NvcGUiICJe My43LjAiCi0gICAgIkB0eXBlcy9lc3RyZWUiICJeMC4wLjQ2IgotICAgICJAd2ViYXNzZW1ibHlq cy9hc3QiICIxLjExLjAiCi0gICAgIkB3ZWJhc3NlbWJseWpzL3dhc20tZWRpdCIgIjEuMTEuMCIK LSAgICAiQHdlYmFzc2VtYmx5anMvd2FzbS1wYXJzZXIiICIxLjExLjAiCi0gICAgYWNvcm4gIl44 LjAuNCIKKyAgICAiQHR5cGVzL2VzdHJlZSIgIl4wLjAuNTAiCisgICAgIkB3ZWJhc3NlbWJseWpz L2FzdCIgIjEuMTEuMSIKKyAgICAiQHdlYmFzc2VtYmx5anMvd2FzbS1lZGl0IiAiMS4xMS4xIgor ICAgICJAd2ViYXNzZW1ibHlqcy93YXNtLXBhcnNlciIgIjEuMTEuMSIKKyAgICBhY29ybiAiXjgu NC4xIgorICAgIGFjb3JuLWltcG9ydC1hc3NlcnRpb25zICJeMS43LjYiCiAgICAgYnJvd3NlcnNs aXN0ICJeNC4xNC41IgogICAgIGNocm9tZS10cmFjZS1ldmVudCAiXjEuMC4yIgotICAgIGVuaGFu Y2VkLXJlc29sdmUgIl41LjcuMCIKLSAgICBlcy1tb2R1bGUtbGV4ZXIgIl4wLjQuMCIKLSAgICBl c2xpbnQtc2NvcGUgIl41LjEuMSIKKyAgICBlbmhhbmNlZC1yZXNvbHZlICJeNS44LjMiCisgICAg ZXMtbW9kdWxlLWxleGVyICJeMC45LjAiCisgICAgZXNsaW50LXNjb3BlICI1LjEuMSIKICAgICBl dmVudHMgIl4zLjIuMCIKICAgICBnbG9iLXRvLXJlZ2V4cCAiXjAuNC4xIgogICAgIGdyYWNlZnVs LWZzICJeNC4yLjQiCkBAIC0xMDk4NCwxMSArMTA2ODQsMTEgQEAgd2VicGFja0BeNS4yMS4yOgog ICAgIGxvYWRlci1ydW5uZXIgIl40LjIuMCIKICAgICBtaW1lLXR5cGVzICJeMi4xLjI3IgogICAg IG5lby1hc3luYyAiXjIuNi4yIgotICAgIHNjaGVtYS11dGlscyAiXjMuMC4wIgorICAgIHNjaGVt YS11dGlscyAiXjMuMS4wIgogICAgIHRhcGFibGUgIl4yLjEuMSIKLSAgICB0ZXJzZXItd2VicGFj ay1wbHVnaW4gIl41LjEuMSIKLSAgICB3YXRjaHBhY2sgIl4yLjAuMCIKLSAgICB3ZWJwYWNrLXNv dXJjZXMgIl4yLjEuMSIKKyAgICB0ZXJzZXItd2VicGFjay1wbHVnaW4gIl41LjEuMyIKKyAgICB3 YXRjaHBhY2sgIl4yLjIuMCIKKyAgICB3ZWJwYWNrLXNvdXJjZXMgIl4zLjIuMCIKIAogd2hpY2gt Ym94ZWQtcHJpbWl0aXZlQF4xLjAuMjoKICAgdmVyc2lvbiAiMS4wLjIiCkBAIC0xMTAwMiwxNyAr MTA3MDIsMTYgQEAgd2hpY2gtYm94ZWQtcHJpbWl0aXZlQF4xLjAuMjoKICAgICBpcy1zeW1ib2wg Il4xLjAuMyIKIAogd2hpY2gtdHlwZWQtYXJyYXlAXjEuMS4yOgotICB2ZXJzaW9uICIxLjEuNCIK LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd2hpY2gtdHlwZWQtYXJy YXkvLS93aGljaC10eXBlZC1hcnJheS0xLjEuNC50Z3ojOGZjYjdkM2VlNWFkZjJkNzcxMDY2ZmJh N2NmMzdlMzJmZTg3MTFmZiIKLSAgaW50ZWdyaXR5IHNoYTUxMi00OUUwU3BVZTkwY2pwb2M3Qk9K d3lQSFJxU0FkMTJjMTBRbTJhbWRFWnJKUENZMk5EeGFXMDF6SElUcmVtK3JuRVRZM2R3cmJIM1VV clV3YWdmQ1lEQT09CisgIHZlcnNpb24gIjEuMS43IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp c3RyeS55YXJucGtnLmNvbS93aGljaC10eXBlZC1hcnJheS8tL3doaWNoLXR5cGVkLWFycmF5LTEu MS43LnRneiMyNzYxNzk5YjlhMjJkNGI4NjYwYjNjMWI0MGFiYWE3NzM5NjkxNzkzIgorICBpbnRl Z3JpdHkgc2hhNTEyLXZqeGFCNG5mRHF3S0kwd3M3d1pweElsZGUxWHJMWDV1QjBaanBmc2hnbWFw Sk1EN2pKV2haSSt5VG9KVHFhRkJ5RjBlTkJjWXhiam1Dem9SUDdDZkV3PT0KICAgZGVwZW5kZW5j aWVzOgotICAgIGF2YWlsYWJsZS10eXBlZC1hcnJheXMgIl4xLjAuMiIKLSAgICBjYWxsLWJpbmQg Il4xLjAuMCIKLSAgICBlcy1hYnN0cmFjdCAiXjEuMTguMC1uZXh0LjEiCisgICAgYXZhaWxhYmxl LXR5cGVkLWFycmF5cyAiXjEuMC41IgorICAgIGNhbGwtYmluZCAiXjEuMC4yIgorICAgIGVzLWFi c3RyYWN0ICJeMS4xOC41IgogICAgIGZvcmVhY2ggIl4yLjAuNSIKLSAgICBmdW5jdGlvbi1iaW5k ICJeMS4xLjEiCi0gICAgaGFzLXN5bWJvbHMgIl4xLjAuMSIKLSAgICBpcy10eXBlZC1hcnJheSAi XjEuMS4zIgorICAgIGhhcy10b3N0cmluZ3RhZyAiXjEuMC4wIgorICAgIGlzLXR5cGVkLWFycmF5 ICJeMS4xLjciCiAKIHdoaWNoQF4xLjIuMSwgd2hpY2hAXjEuMi45OgogICB2ZXJzaW9uICIxLjMu MSIKQEAgLTExMDcxLDEwICsxMDc3MCwxMCBAQCB3cmFwcHlAMToKICAgcmVzb2x2ZWQgImh0dHBz Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vd3JhcHB5Ly0vd3JhcHB5LTEuMC4yLnRneiNiNTI0M2Q4 ZjNlYzFhYTM1ZjEzNjQ2MDViYzBkMTAzNmUzMGFiNjlmIgogICBpbnRlZ3JpdHkgc2hhMS10U1E5 ano3QnFqWHhOa1lGdkEwUU51TUt0cDg9CiAKLXdzQF43LjMuMSwgd3NAfjcuNC4yOgotICB2ZXJz aW9uICI3LjQuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vd3Mv LS93cy03LjQuNi50Z3ojNTY1NGNhOGVjZGVlZTQ3YzMzYTlhNGJmNmQyOGUyYmUyOTgwMzc3YyIK LSAgaW50ZWdyaXR5IHNoYTUxMi1ZbWhIRE80TXphRExCK005eW0vbURBNXowbmFYOGo3U0lsVDhm OHorSTBWdHpzUmJla3hFdXRIU21lN05QUzJxRThTdENZUU5VbmZXZFh0YS9ZdTg1QT09Cit3c0Be Ny4zLjE6CisgIHZlcnNpb24gIjcuNS41IgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55 YXJucGtnLmNvbS93cy8tL3dzLTcuNS41LnRneiM4YjRiYzRhZjUxOGNmYWJkMDQ3M2FlNGY5OTE0 NDI4N2IzM2ViODgxIgorICBpbnRlZ3JpdHkgc2hhNTEyLUJBa01GY0F6bDhhczFHL2hBcmt4T3hx M0c3cGpVcVEzZ3pZYkxMMC81ek5rcGg3MGUrbENveEJHbm02QVcxKy9haU5lVjRmbktxWjhtNEda ZXdtSDJ3PT0KIAogd3NAfjguMi4zOgogICB2ZXJzaW9uICI4LjIuMyIKQEAgLTExMDg2LDYgKzEw Nzg1LDExIEBAIHhtbGRvbUB+MC41LjA6CiAgIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh cm5wa2cuY29tL3htbGRvbS8tL3htbGRvbS0wLjUuMC50Z3ojMTkzY2I5NmI4NGFhMzQ4NjEyN2Vh NjI3MmM0NTk2MzU0Y2I0OTYyZSIKICAgaW50ZWdyaXR5IHNoYTUxMi1Gb2FqNUZYVnpnbjd4Rnpz S2VOSWRlOWc2YUZCeFRQaTM3aXdzbm84UXZBcG10ZzdLWXJyK09QeVJIY0pGN2R1ZDJhNW5HUkJY SzNuMGRMNjJHZjdQQT09CiAKK3htbGh0dHByZXF1ZXN0LXNzbEB+Mi4wLjA6CisgIHZlcnNpb24g IjIuMC4wIgorICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS94bWxodHRw cmVxdWVzdC1zc2wvLS94bWxodHRwcmVxdWVzdC1zc2wtMi4wLjAudGd6IzkxMzYwYzg2YjkxNGU2 N2Y0NGRjZTc2OTE4MDAyN2MwZGE2MThjNjciCisgIGludGVncml0eSBzaGE1MTItUUt4VlJ4aVJB Q1FjVnVRRVlGc0kxaGhrck1sclhIUGVnYmJkMXluOVVIT21SeFkrc2kxMm5RWXpyaTN2Ynp0OFZk VFRSdmlxY0t4Y3lsbEZhczV6MkE9PQorCiB4dGVuZEBeNC4wLjAsIHh0ZW5kQF40LjAuMSwgeHRl bmRAXjQuMC4yLCB4dGVuZEB+NC4wLjE6CiAgIHZlcnNpb24gIjQuMC4yIgogICByZXNvbHZlZCAi aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS94dGVuZC8tL3h0ZW5kLTQuMC4yLnRneiNiYjcy Nzc5ZjVmYTQ2NTE4NmIxZjQzOGY2NzRmYTM0N2ZkYjVkYjU0IgpAQCAtMTEwOTcsOSArMTA4MDEs OSBAQCB4dGVybS1hZGRvbi1maXRAXjAuNS4wOgogICBpbnRlZ3JpdHkgc2hhNTEyLURzUzlmcWhY SGFjRW1zUHhCSlp2ZmoybGEzMEl6OXhrK1VLamhRZ25ZTmtyVUlONUNZTGJ3N1dFZnoxMTdjNytT ODZTL3RwSFBmdk54SnNGNS9HOHdRPT0KIAogeHRlcm0tYWRkb24tc2VhcmNoQF4wLjguMDoKLSAg dmVyc2lvbiAiMC44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t L3h0ZXJtLWFkZG9uLXNlYXJjaC8tL3h0ZXJtLWFkZG9uLXNlYXJjaC0wLjguMC50Z3ojZTMzZWFi OTE4ZGY3ZWFjN2U3YmFmOTVkZDJiM2QxNDEzMzc1NDg4MSIKLSAgaW50ZWdyaXR5IHNoYTUxMi1N UEpHUFZQcEhSVXc5Y0xJdXFRYnJWZXBtRU5NT3liVlVTeElBTHo1aDFyeXlRQnJWcVZ1anEyaEw1 YXJvWDUvZFpKb0h4OWxHSFFUVkxRMDdTS2dLQT09CisgIHZlcnNpb24gIjAuOC4xIgorICByZXNv bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS94dGVybS1hZGRvbi1zZWFyY2gvLS94 dGVybS1hZGRvbi1zZWFyY2gtMC44LjEudGd6I2RmYzU1N2U5YmNmNWZkOGVkOTYyOTJjMGQyNzFh YTg2NWJjNTQ1ZDUiCisgIGludGVncml0eSBzaGE1MTItT3RPYUM5Z3hEMlE0Wm5qWnJDU1JabUtM d3dValhYM2dQN21JenE4UnM1MDMxN0RHUkRxZ1RMdUhUWXYvTngvTHZJNWNlVkZSWUN4SzM2SXhz MW5YTnc9PQogCiB4dGVybS1hZGRvbi13ZWItbGlua3NAXjAuNC4wOgogICB2ZXJzaW9uICIwLjQu MCIKQEAgLTExMTA3LDkgKzEwODExLDkgQEAgeHRlcm0tYWRkb24td2ViLWxpbmtzQF4wLjQuMDoK ICAgaW50ZWdyaXR5IHNoYTUxMi14djhHZWlJTm14MHpFTk85aGY1ays1Ym5rYUU4bVJ6RitPQkFy OVdlRnEyZUxhUVN1ZGlvUVNpVDM0TTFvZktiemNkalNzS2labTE5UnczaTRlWGFtZz09CiAKIHh0 ZXJtQF40LjExLjA6Ci0gIHZlcnNpb24gIjQuMTIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn aXN0cnkueWFybnBrZy5jb20veHRlcm0vLS94dGVybS00LjEyLjAudGd6I2RiMDliNDI1YjRkY2Fl NWI5NmY4Y2JiYWFhOTNiM2JjNjA5OTdjYTkiCi0gIGludGVncml0eSBzaGE1MTItSzVtRi9wM3R4 VVYxOG1qaVpGbEVsYWdvSEZwcVhybTVPWUhlb3ltZVhTdThHRy9uTWFPTy8rTlJjTkN3ZmRqekFi ZFE1VkxGMzJoRUhpV1dLS20wYnc9PQorICB2ZXJzaW9uICI0LjE0LjEiCisgIHJlc29sdmVkICJo dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3h0ZXJtLy0veHRlcm0tNC4xNC4xLnRneiM2ODg0 Y2I4ZmIzYjgzMzUzYjFhOTgxMzllYTIzZGFlZGY4ZTM1Nzk2IgorICBpbnRlZ3JpdHkgc2hhNTEy LWpnek5nNUJ1R1B3cTUvTTRkR25tYmdoWnZIeDJqYWorOWNyU0V0MTViVjM0WmE0OVZ6aUJtQ3U3 ekl5ODh6VUtLaUdUeGVvN2FWemlyRlNKQXJJTUZ3PT0KIAogeTE4bkBeNS4wLjU6CiAgIHZlcnNp b24gIjUuMC44IgpAQCAtMTExMjYsMTUgKzEwODMwLDE1IEBAIHlhbGxpc3RAXjQuMC4wOgogICBy ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS95YWxsaXN0Ly0veWFsbGlzdC00 LjAuMC50Z3ojOWJiOTI3OTBkOWMwZWZmZWM2M2JlNzM1MTllMTFhMzUwMTlhM2E3MiIKICAgaW50 ZWdyaXR5IHNoYTUxMi0zd2RHaWRaeXE1UEIwODRYTEVTNVRwT1NSQTN3alhBbElXTWh1bTJrUmN2 LzQxU24yZW1RMGR5Y1FXNHVaWExlandLdmc2RXN2YmRsVkwrRllFY3Q3QT09CiAKLXlhbWxAXjEu MTAuMCwgeWFtbEBeMS43LjI6Cit5YW1sQF4xLjEwLjAsIHlhbWxAXjEuMTAuMiwgeWFtbEBeMS43 LjI6CiAgIHZlcnNpb24gIjEuMTAuMiIKICAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20veWFtbC8tL3lhbWwtMS4xMC4yLnRneiMyMzAxYzVmZmJmMTJiNDY3ZGU4ZGEyMzMz YTQ1OWUyOWU3OTIwZTRiIgogICBpbnRlZ3JpdHkgc2hhNTEyLXIzdlh5RXJSQ1lKN3dnMjh5dkJZ NVZTb0FGOFp2bGNXOS9Cd1V6RXRVc2p2WC9ES3MyNGRJa3V3anR1cHJ3SkpIc2J5VWJMQXBlcFlU UjFCTjR1SHJnPT0KIAogeWFyZ3MtcGFyc2VyQF4yMC4yLjI6Ci0gIHZlcnNpb24gIjIwLjIuNiIK LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20veWFyZ3MtcGFyc2VyLy0v eWFyZ3MtcGFyc2VyLTIwLjIuNi50Z3ojNjlmOTIwYWRkZjYxYWFmYzBiOGI4OTAwMmY1ZDY2ZTI4 ZjJkOGIyMCIKLSAgaW50ZWdyaXR5IHNoYTUxMi1BUDErZlFJV1NNL3NNaUVUOGZ5YXlqeC9KK0pt VFB0Mk1yMEZrcmdxQjR0b2R0ZmE1M3NPc3JTQWNJckpSRDVYUzIwYktVd2FESXVNa1dLQ0VpUUxL QT09CisgIHZlcnNpb24gIjIwLjIuOSIKKyAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy bnBrZy5jb20veWFyZ3MtcGFyc2VyLy0veWFyZ3MtcGFyc2VyLTIwLjIuOS50Z3ojMmViN2RjM2Iw Mjg5NzE4ZmMyOTVmMzYyNzUzODQ1YzQxYTBjOTRlZSIKKyAgaW50ZWdyaXR5IHNoYTUxMi15MTFu R0VsVElWK0NUM1p2OXQ3VktsK1EzaFRRb1Q5YTFRemV6aGhsNlJwMjFnSi9JVlRXN1ozeTlFV1ho dVVCQzJTaG5mK0RYMGFudGVjcEF3U1A4dz09CiAKIHlhcmdzQF4xNi4xLjE6CiAgIHZlcnNpb24g IjE2LjIuMCIK --0000000000001157a905da550079--