From unknown Tue Aug 19 23:13:09 2025 X-Loop: help-debbugs@gnu.org Subject: bug#41249: magic-wormhole fails to build Resent-From: Mikhail Tsykalov Original-Sender: "Debbugs-submit" Resent-CC: bug-guix@gnu.org Resent-Date: Thu, 14 May 2020 00:53:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 41249 X-GNU-PR-Package: guix X-GNU-PR-Keywords: To: 41249@debbugs.gnu.org X-Debbugs-Original-To: bug-guix@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.158941756827833 (code B ref -1); Thu, 14 May 2020 00:53:02 +0000 Received: (at submit) by debbugs.gnu.org; 14 May 2020 00:52:48 +0000 Received: from localhost ([127.0.0.1]:59896 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jZ27E-0007Er-9W for submit@debbugs.gnu.org; Wed, 13 May 2020 20:52:48 -0400 Received: from lists.gnu.org ([209.51.188.17]:47016) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jZ27C-0007Eh-9p for submit@debbugs.gnu.org; Wed, 13 May 2020 20:52:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57906) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZ27C-0003t5-01 for bug-guix@gnu.org; Wed, 13 May 2020 20:52:46 -0400 Received: from mail-qt1-x82f.google.com ([2607:f8b0:4864:20::82f]:41236) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jZ26k-0007B7-Mk for bug-guix@gnu.org; Wed, 13 May 2020 20:52:45 -0400 Received: by mail-qt1-x82f.google.com with SMTP id m44so55542qtm.8 for ; Wed, 13 May 2020 17:52:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=qYD+LznimRkKDCSxFCEbuhSx6SRqf5WWdrNIU3Tf8a0=; b=CbAE4ZY69Q4ItbpuSo8/xQWtfjNaKxk5MSXG5bFsKbcq3DT16vxBl2yKZnNoyGhdMM dIXs59ydQ0tx5C1wKDcusULQUAJrGIfLLVKUqDYqb86trWkz135GnLU+oKvCkuzy0fXj im9oSgrQmczgEg0I2+mSR3pYzNcEeevI0P4dxCH/maIdZEYZ/5QbVZe41hzuAmQmuAsS +K6nItNsk+8uyyiCa+DnRYhPzml3A6GneuVtl8EWu5dTt48SBf3JdtlNCRCL2Ld2mkFl vDKf2CAzC7wfik8zW5/zcCgqCYjbkbW3Do8146V12zoGA4SbB2SuKtrsG+KLBDSomcIL QfyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=qYD+LznimRkKDCSxFCEbuhSx6SRqf5WWdrNIU3Tf8a0=; b=aOK7pl/M9sS7TL7jqlMxVIn33ypyE++qOgLRxXHH2u8fVO9LFXfcsTsbuNIVmT9jwi hUTrRijXfNR7jrCuNg2hz6WG7FDh4nP1wyUPKW5nVIi/57OFqq36JJ8BYHZboJKyBAo1 xxhZZ0ch99ktyVqiBo26aGgANiJxzEJm1+DEqxH7H1UJmPuzY1qhhjUU6uysQ66zmnzB 7JP3hNFITFvCr/opgYu4oqAIa74z6b1yBgfZyJLKf+Vmb9ypQRT5UI1b0XItfzmV2nQ0 qcxFppp1OzVUFPA9LwusvXe9ZOcSNQ3tUUQIV+QHFHiZXxK8Mnzsm/s+84F8U1ETYXtW Ppyg== X-Gm-Message-State: AOAM530Yfq3f2y/w5bn3WTuMIk/yHTdIx3tbthEftbndBKhP8qdzFaA3 FXsJvlJYAlqGyRvuZK7/rsvOHIEjHBc2nzqZ3DFRHAN0NJk= X-Google-Smtp-Source: ABdhPJyiuA9Oh0JUTYUYKFC1FwWeE59MaWd3i0EoXsRrIyzzQx5WEMWpnAgl7/qvkj9x9peFfaK1DOuMcZrzoSSU+rQ= X-Received: by 2002:ac8:2c78:: with SMTP id e53mr1935584qta.365.1589417537076; Wed, 13 May 2020 17:52:17 -0700 (PDT) MIME-Version: 1.0 From: Mikhail Tsykalov Date: Thu, 14 May 2020 03:52:05 +0300 Message-ID: Content-Type: multipart/mixed; boundary="000000000000b2c9ee05a5911b7d" Received-SPF: pass client-ip=2607:f8b0:4864:20::82f; envelope-from=tsymsh@gmail.com; helo=mail-qt1-x82f.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --000000000000b2c9ee05a5911b7d Content-Type: text/plain; charset="UTF-8" magic-wormhole fails in test stage with errors similar to following: Expected: (,) Got: [Failure instance: Traceback: : an integer is required (got type bytes) Attaching build log. commit: 8ba4d8a347fbdf9fe09e8ac801b4ac0586ac382a --000000000000b2c9ee05a5911b7d Content-Type: text/plain; charset="US-ASCII"; name="magic-wormhole-buildlog.txt" Content-Disposition: attachment; filename="magic-wormhole-buildlog.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ka6254kn0 c3RhcnRpbmcgcGhhc2UgYHNldC1TT1VSQ0UtREFURS1FUE9DSCcKcGhhc2UgYHNldC1TT1VSQ0Ut REFURS1FUE9DSCcgc3VjY2VlZGVkIGFmdGVyIDAuMCBzZWNvbmRzCnN0YXJ0aW5nIHBoYXNlIGBz ZXQtcGF0aHMnCmVudmlyb25tZW50IHZhcmlhYmxlIGBQQVRIJyBzZXQgdG8gYC9nbnUvc3RvcmUv d2M0eGg5d2o0OXJsYnlpdnhpNGxzd3M2d2hoeng0YWItcHl0aG9uLXdyYXBwZXItMy44LjIvYmlu Oi9nbnUvc3RvcmUvNGZzMW1wY2o4ZzdmaGcyM3I4Z2Z5ODQ1MzVhODZrZ2ItcHl0aG9uLXRxZG0t NC40My4wL2JpbjovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9iaW46L2dudS9zdG9yZS92NmY0NHpjY3doOXo1emszcGpseXdq eWJiaThuMmhqaC10YXItMS4zMi9iaW46L2dudS9zdG9yZS9uY3lkZ3Eyem5tczVuMWQyazV5cXNo aGY1OG5zaXh3di1nemlwLTEuMTAvYmluOi9nbnUvc3RvcmUvaThoMnBjeHFkcTA3aWptM2lia2th OGY0c21uMXc0OHYtYnppcDItMS4wLjgvYmluOi9nbnUvc3RvcmUvOTg2MGYxYWJxajh3ampud2w4 YTl2NTRwZGNjM2JoZ2YteHotNS4yLjQvYmluOi9nbnUvc3RvcmUvNjBnN3IzbDAxZmQ3YzU4eWpi bTZrcmdjd2oxamtwd2ctZmlsZS01LjM4L2JpbjovZ251L3N0b3JlL240bjU2MHBmdnZ3NTBhOTM2 OWF4dzV2ajVycnFmajFuLWRpZmZ1dGlscy0zLjcvYmluOi9nbnUvc3RvcmUvY2Q1cWYza2NubHEz NXA5azM5MnBqZHBkenBzbmRzNzAtcGF0Y2gtMi43LjYvYmluOi9nbnUvc3RvcmUvaGljN3NuaGF5 Zmw3bTZjcGZxcXI3M25tbTE5YnBxa2ctZmluZHV0aWxzLTQuNy4wL2JpbjovZ251L3N0b3JlL3N3 cWR2d3JpOWRidjZ6c3NnNnYwYnk3bDA1aGQ2d3hwLWdhd2stNS4wLjEvYmluOi9nbnUvc3RvcmUv aXNoazdmc3djczRna3djcDhtaDc4OHo0bXZ2bDlieGgtc2VkLTQuOC9iaW46L2dudS9zdG9yZS9i aHM0cmo1OHY4ajFuYXJiMjQ1NHJhYW4ycHMzOHhkOC1ncmVwLTMuNC9iaW46L2dudS9zdG9yZS81 N3hqNWdjeTFqYmw5YWkybG5ycW5wcjBkYWxkOWk2NS1jb3JldXRpbHMtOC4zMi9iaW46L2dudS9z dG9yZS9obTQwYnhudjhqeG1iYzFscGI3emZpbWlpNHhtOW04MS1tYWtlLTQuMy9iaW46L2dudS9z dG9yZS9wd2NwMjM5a2pmN2xuajVpNGxrZHpjZmN4d2NmeWs3Mi1iYXNoLW1pbmltYWwtNS4wLjE2 L2JpbjovZ251L3N0b3JlL21wYTA0YXE4bGJsYmN2aXl4eXd4Y3NiMXpiaTBtZjM5LWxkLXdyYXBw ZXItMC9iaW46L2dudS9zdG9yZS9tMXo3Y2RicXNxeXA5eG5qdzVjdmxiNGE3Z2tjZzNtNC1iaW51 dGlscy0yLjM0L2JpbjovZ251L3N0b3JlL3JuNzVmbTdhZGd4M3B3NWo4cGczYmN6ZnFxMXkxN2xr LWdjYy03LjUuMC9iaW46L2dudS9zdG9yZS9mYTZ3ajVieGtqNWxsMWQ3MjkyYTcwa25teWw3YTBj ci1nbGliYy0yLjMxL2JpbjovZ251L3N0b3JlL2ZhNndqNWJ4a2o1bGwxZDcyOTJhNzBrbm15bDdh MGNyLWdsaWJjLTIuMzEvc2JpbjovZ251L3N0b3JlL3E5cm04aDlpbWF6c3EyYzRxaXYyeWpwdmx2 bGl5d3FiLXB5dGhvbi0zLjguMi9iaW46L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9iaW46L2dudS9zdG9yZS84YW12Y3FrNzJs amYwMjBkdngyZGMweHdsNzZsNmM0NC1weXRob24tY2hhcmRldC0zLjAuNC9iaW4nCmVudmlyb25t ZW50IHZhcmlhYmxlIGBQWVRIT05QQVRIJyBzZXQgdG8gYC9nbnUvc3RvcmUvZHBqdjRseGJ2OHJi ZDRpbHBicG03dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzOi9nbnUvc3RvcmUvc2lsbnFhYjMyNTdrcjI4MnFnMjIzd2R2djY4Nnp6d2ctbWFn aWMtd29ybWhvbGUtbWFpbGJveC1zZXJ2ZXItMC40LjEvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzOi9nbnUvc3RvcmUvYm04NmEyZmhiamp2c2k2amE0bXljNnhjdjR5c3BnemctbWFnaWMtd29y bWhvbGUtdHJhbnNpdC1yZWxheS0wLjIuMS9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2du dS9zdG9yZS9zbHl2MzB5NHlwem14MnZqYWQ2NG5pOHg3NjdtNnliZi1weXRob24tYXV0b2JhaG4t MTkuMi4xL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL2ZrZngwazM3ejVk cGN2bnF4eGFsNng3bGRrcjd6cm40LXB5dGhvbi1jbGljay03LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzOi9nbnUvc3RvcmUvOWs0bG0zcmMyMzU3eWp3MDQxaHNueTJoOHhra2t4N20tcHl0 aG9uLWhrZGYtMC4wLjMvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvemc5 ZjBuanZyNDl3bG5uMXZtNXZxa3kxN3E3czZsaWctcHl0aG9uLWh1bWFuaXplLTAuNS4xL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL3o5emkwbmhqbTk1enByOW54ejc3amNs ZDFxcmpwYm5mLXB5dGhvbi1weW5hY2wtMS4zLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz Oi9nbnUvc3RvcmUvd2M4cW1iMzdwMTN3YXlwcml6YndndjJqNzB4NHN5eDUtcHl0aG9uLXNwYWtl Mi0wLjgvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvNGZzMW1wY2o4Zzdm aGcyM3I4Z2Z5ODQ1MzVhODZrZ2ItcHl0aG9uLXRxZG0tNC40My4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlczovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9y ZS93Y2d2aGd4a3JsYnpwencxdjJhZmN5cTNoejQ0M2t4bi1weXRob24tdHh0b3Jjb24tMTkuMC4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL3E5cm04aDlpbWF6c3EyYzRx aXYyeWpwdmx2bGl5d3FiLXB5dGhvbi0zLjguMi9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6 L2dudS9zdG9yZS9iMHN2c2Z6MnZ3MnF3bGZzaTU2azhmd2J4NGZ6Y2Zoay1weXRob24tc2l4LTEu MTQuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS9wZ3kyM2FyNmM2M2gx eGdyanJwcTM4dzA0NG5qNGxkOC1weXRob24tdHJlcS0xOC42LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzOi9nbnUvc3RvcmUvd3BqcnNhZ3p4NzExMjNsNnE4cGpsMHF5M3ByMzM0eTctcHl0 aG9uLXNlcnZpY2UtaWRlbnRpdHktMTguMS4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczov Z251L3N0b3JlL3FuemZ6a3p4OWE5c2ZxZGw1MXdheGZqc3gyZjUwOTZsLXB5dGhvbi1pZG5hLTIu OC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS8ybmcxNTg4cXNzN2Nudnpr MmdjaXM3Z240cGI0aXpzYS1weXRob24tYXR0cnMtMTkuMy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlczovZ251L3N0b3JlL2d6Z2F2bTlwMndhNnkyNDNrenpqODYxOHl3cnNobTFzLXB5dGhv bi10eGFpby0xOC44LjEvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvZzFt aGF2c21kN2ZsZGs0OWQ5NWlzcmE0bjl3bTRqdnMtcHl0aG9uLWNmZmktMS4xMy4yL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczov Z251L3N0b3JlL3BwYjU4a3FpYng4dzN6MGd4YTQ2enh6cXM3cnZybmxzLXB5dGhvbi1jb25zdGFu dGx5LTE1LjEuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS9kczY3OXY4 aG1rOHE1OXA0NmtrbDRsbXkxbndpcXhjei1weXRob24taHlwZXJsaW5rLTE5LjAuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS82ejZ3N2g5OGRuZjZuOGZmeThkbjQyM3F6 djJ2eGs3NC1weXRob24taW5jcmVtZW50YWwtMTcuNS4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlczovZ251L3N0b3JlLzZ4MzMwY2Z4MGdtYWRsbjBnM2psc2JoajRua2l4NzN2LXB5dGhvbi1w eWhhbWNyZXN0LTEuOS4wLTAuMjVmZGM1Zi9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2du dS9zdG9yZS9kaWI5M2t4bjRoYXlocDd2YWY0NThpd2wxcHg3eHI4Yi1weXRob24tem9wZS1pbnRl cmZhY2UtNC43LjIvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvcWc0OGpk enppMTV4cG0zajY0YWp4MjU5YXJxbHg5OG4tcHl0aG9uLWlwYWRkcmVzcy0xLjAuMjIvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvdjA4ajBjbG13MzFydmMwYWF6amY4ZmZp N3BpcXB2MXAtcHl0aG9uLXJlcXVlc3RzLTIuMjIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXM6L2dudS9zdG9yZS9obHNjbDlhcnluczI1YWFzeWxnMHB5YTRqa2Fjc2tycC1weXRob24tcHlv cGVuc3NsLTE5LjAuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS96aGxr MWEwenhmcjFuc2pwYTg4NmIwaXlqMWE2NjRoaS1weXRob24tcHlhc24xLW1vZHVsZXMtMC4yLjIv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvajlzZms1aWpsc2NxbWtxZ2Q1 bjJybXpraW15bmdiYWotcHl0aG9uLXB5YXNuMS0wLjQuOC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXM6L2dudS9zdG9yZS9hcmhxaXBxMW5saXFrNDVxY2tuM3hxeGY5OGk2OWI5NC1weXRob24t cHljcGFyc2VyLTIuMTkvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvMDRw a2ZqYTR2NmNxa2tuYjF5d2ZwYTVjbno2d3l4MHgtcHl0aG9uLXVybGxpYjMtMS4yNS4zL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlLzhhbXZjcWs3MmxqZjAyMGR2eDJkYzB4 d2w3Nmw2YzQ0LXB5dGhvbi1jaGFyZGV0LTMuMC40L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl czovZ251L3N0b3JlLzNkYW43NmduczgycmZhaHMxeDJpdzF3N2RycXA3Ymk4LXB5dGhvbi1jZXJ0 aWZpLTIwMTkuMy45L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL2N6cjFo NTFqeXp6ZmIyczM2MHFnaGcwdjN5M3czemNoLXB5dGhvbi1jcnlwdG9ncmFwaHktMi43L2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL25scDh3d3kxbWc3MjgzcXNrOTZ5a2xm YzhuMWcybTBwLXB5dGhvbi1weXNvY2tzLTEuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl czovZ251L3N0b3JlL3I2bmdyMXNtd2FoMzgzcmRqYjMyNDBwNHAwNHlkaWNwLXB5dGhvbi1pc284 NjAxLTAuMS4xMi9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS95eWszOHhn N3FrOHh5cng3NHdoOWQzbWNpcXkwNzlpay1weXRob24tYXNuMWNyeXB0by0wLjI0LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzJwplbnZpcm9ubWVudCB2YXJpYWJsZSBgQkFTSF9MT0FEQUJM RVNfUEFUSCcgdW5zZXQKZW52aXJvbm1lbnQgdmFyaWFibGUgYENfSU5DTFVERV9QQVRIJyBzZXQg dG8gYC9nbnUvc3RvcmUvaThoMnBjeHFkcTA3aWptM2lia2thOGY0c21uMXc0OHYtYnppcDItMS4w LjgvaW5jbHVkZTovZ251L3N0b3JlLzk4NjBmMWFicWo4d2pqbndsOGE5djU0cGRjYzNiaGdmLXh6 LTUuMi40L2luY2x1ZGU6L2dudS9zdG9yZS82MGc3cjNsMDFmZDdjNTh5amJtNmtyZ2N3ajFqa3B3 Zy1maWxlLTUuMzgvaW5jbHVkZTovZ251L3N0b3JlL3N3cWR2d3JpOWRidjZ6c3NnNnYwYnk3bDA1 aGQ2d3hwLWdhd2stNS4wLjEvaW5jbHVkZTovZ251L3N0b3JlL2htNDBieG52OGp4bWJjMWxwYjd6 ZmltaWk0eG05bTgxLW1ha2UtNC4zL2luY2x1ZGU6L2dudS9zdG9yZS9tMXo3Y2RicXNxeXA5eG5q dzVjdmxiNGE3Z2tjZzNtNC1iaW51dGlscy0yLjM0L2luY2x1ZGU6L2dudS9zdG9yZS9ybjc1Zm03 YWRneDNwdzVqOHBnM2JjemZxcTF5MTdsay1nY2MtNy41LjAvaW5jbHVkZTovZ251L3N0b3JlL2Zh NndqNWJ4a2o1bGwxZDcyOTJhNzBrbm15bDdhMGNyLWdsaWJjLTIuMzEvaW5jbHVkZTovZ251L3N0 b3JlL3E5cm04aDlpbWF6c3EyYzRxaXYyeWpwdmx2bGl5d3FiLXB5dGhvbi0zLjguMi9pbmNsdWRl Oi9nbnUvc3RvcmUvczU0YzZyYmw0MDQxNmxsMGtycnI1Mm0zeWl2eGNsM3gtbGlic29kaXVtLTEu MC4xOC9pbmNsdWRlOi9nbnUvc3RvcmUvZ2ZhcGtrNWM2aHZsMWQ5NG00c3FuaG43ZjlsNWdxeWgt bGludXgtbGlicmUtaGVhZGVycy01LjQuMjAvaW5jbHVkZScKZW52aXJvbm1lbnQgdmFyaWFibGUg YENQTFVTX0lOQ0xVREVfUEFUSCcgc2V0IHRvIGAvZ251L3N0b3JlL2k4aDJwY3hxZHEwN2lqbTNp YmtrYThmNHNtbjF3NDh2LWJ6aXAyLTEuMC44L2luY2x1ZGU6L2dudS9zdG9yZS85ODYwZjFhYnFq OHdqam53bDhhOXY1NHBkY2MzYmhnZi14ei01LjIuNC9pbmNsdWRlOi9nbnUvc3RvcmUvNjBnN3Iz bDAxZmQ3YzU4eWpibTZrcmdjd2oxamtwd2ctZmlsZS01LjM4L2luY2x1ZGU6L2dudS9zdG9yZS9z d3FkdndyaTlkYnY2enNzZzZ2MGJ5N2wwNWhkNnd4cC1nYXdrLTUuMC4xL2luY2x1ZGU6L2dudS9z dG9yZS9obTQwYnhudjhqeG1iYzFscGI3emZpbWlpNHhtOW04MS1tYWtlLTQuMy9pbmNsdWRlOi9n bnUvc3RvcmUvbTF6N2NkYnFzcXlwOXhuanc1Y3ZsYjRhN2drY2czbTQtYmludXRpbHMtMi4zNC9p bmNsdWRlOi9nbnUvc3RvcmUvcm43NWZtN2FkZ3gzcHc1ajhwZzNiY3pmcXExeTE3bGstZ2NjLTcu NS4wL2luY2x1ZGUvYysrOi9nbnUvc3RvcmUvcm43NWZtN2FkZ3gzcHc1ajhwZzNiY3pmcXExeTE3 bGstZ2NjLTcuNS4wL2luY2x1ZGU6L2dudS9zdG9yZS9mYTZ3ajVieGtqNWxsMWQ3MjkyYTcwa25t eWw3YTBjci1nbGliYy0yLjMxL2luY2x1ZGU6L2dudS9zdG9yZS9xOXJtOGg5aW1henNxMmM0cWl2 MnlqcHZsdmxpeXdxYi1weXRob24tMy44LjIvaW5jbHVkZTovZ251L3N0b3JlL3M1NGM2cmJsNDA0 MTZsbDBrcnJyNTJtM3lpdnhjbDN4LWxpYnNvZGl1bS0xLjAuMTgvaW5jbHVkZTovZ251L3N0b3Jl L2dmYXBrazVjNmh2bDFkOTRtNHNxbmhuN2Y5bDVncXloLWxpbnV4LWxpYnJlLWhlYWRlcnMtNS40 LjIwL2luY2x1ZGUnCmVudmlyb25tZW50IHZhcmlhYmxlIGBMSUJSQVJZX1BBVEgnIHNldCB0byBg L2dudS9zdG9yZS9kcGp2NGx4YnY4cmJkNGlscGJwbTd3OGJ6NjBuNGJxcS1weXRob24tbW9jay0z LjAuNS9saWI6L2dudS9zdG9yZS9zaWxucWFiMzI1N2tyMjgycWcyMjN3ZHZ2Njg2enp3Zy1tYWdp Yy13b3JtaG9sZS1tYWlsYm94LXNlcnZlci0wLjQuMS9saWI6L2dudS9zdG9yZS9ibTg2YTJmaGJq anZzaTZqYTRteWM2eGN2NHlzcGd6Zy1tYWdpYy13b3JtaG9sZS10cmFuc2l0LXJlbGF5LTAuMi4x L2xpYjovZ251L3N0b3JlL3NseXYzMHk0eXB6bXgydmphZDY0bmk4eDc2N202eWJmLXB5dGhvbi1h dXRvYmFobi0xOS4yLjEvbGliOi9nbnUvc3RvcmUvZmtmeDBrMzd6NWRwY3ZucXh4YWw2eDdsZGty N3pybjQtcHl0aG9uLWNsaWNrLTcuMC9saWI6L2dudS9zdG9yZS85azRsbTNyYzIzNTd5ancwNDFo c255Mmg4eGtra3g3bS1weXRob24taGtkZi0wLjAuMy9saWI6L2dudS9zdG9yZS96ZzlmMG5qdnI0 OXdsbm4xdm01dnFreTE3cTdzNmxpZy1weXRob24taHVtYW5pemUtMC41LjEvbGliOi9nbnUvc3Rv cmUvejl6aTBuaGptOTV6cHI5bnh6NzdqY2xkMXFyanBibmYtcHl0aG9uLXB5bmFjbC0xLjMuMC9s aWI6L2dudS9zdG9yZS93YzhxbWIzN3AxM3dheXByaXpid2d2Mmo3MHg0c3l4NS1weXRob24tc3Bh a2UyLTAuOC9saWI6L2dudS9zdG9yZS80ZnMxbXBjajhnN2ZoZzIzcjhnZnk4NDUzNWE4NmtnYi1w eXRob24tdHFkbS00LjQzLjAvbGliOi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYjovZ251L3N0b3JlL3djZ3ZoZ3hrcmxi enB6dzF2MmFmY3lxM2h6NDQza3huLXB5dGhvbi10eHRvcmNvbi0xOS4wLjAvbGliOi9nbnUvc3Rv cmUvaThoMnBjeHFkcTA3aWptM2lia2thOGY0c21uMXc0OHYtYnppcDItMS4wLjgvbGliOi9nbnUv c3RvcmUvOTg2MGYxYWJxajh3ampud2w4YTl2NTRwZGNjM2JoZ2YteHotNS4yLjQvbGliOi9nbnUv c3RvcmUvNjBnN3IzbDAxZmQ3YzU4eWpibTZrcmdjd2oxamtwd2ctZmlsZS01LjM4L2xpYjovZ251 L3N0b3JlL3N3cWR2d3JpOWRidjZ6c3NnNnYwYnk3bDA1aGQ2d3hwLWdhd2stNS4wLjEvbGliOi9n bnUvc3RvcmUvbTF6N2NkYnFzcXlwOXhuanc1Y3ZsYjRhN2drY2czbTQtYmludXRpbHMtMi4zNC9s aWI6L2dudS9zdG9yZS9mYTZ3ajVieGtqNWxsMWQ3MjkyYTcwa25teWw3YTBjci1nbGliYy0yLjMx L2xpYjovZ251L3N0b3JlL3MzZGNxendxYWFrdjF5eDM3Ynk5Y2hrc2Ria2dpaDE3LWdsaWJjLTIu MzEtc3RhdGljL2xpYjovZ251L3N0b3JlL2h3Y2t5NzQ0NnM5NTJ3MG13Y2hobW0yMTFsbDA3enJx LWdsaWJjLXV0ZjgtbG9jYWxlcy0yLjMxL2xpYjovZ251L3N0b3JlL3E5cm04aDlpbWF6c3EyYzRx aXYyeWpwdmx2bGl5d3FiLXB5dGhvbi0zLjguMi9saWI6L2dudS9zdG9yZS9iMHN2c2Z6MnZ3MnF3 bGZzaTU2azhmd2J4NGZ6Y2Zoay1weXRob24tc2l4LTEuMTQuMC9saWI6L2dudS9zdG9yZS9wZ3ky M2FyNmM2M2gxeGdyanJwcTM4dzA0NG5qNGxkOC1weXRob24tdHJlcS0xOC42LjAvbGliOi9nbnUv c3RvcmUvd3BqcnNhZ3p4NzExMjNsNnE4cGpsMHF5M3ByMzM0eTctcHl0aG9uLXNlcnZpY2UtaWRl bnRpdHktMTguMS4wL2xpYjovZ251L3N0b3JlL3FuemZ6a3p4OWE5c2ZxZGw1MXdheGZqc3gyZjUw OTZsLXB5dGhvbi1pZG5hLTIuOC9saWI6L2dudS9zdG9yZS8ybmcxNTg4cXNzN2NudnprMmdjaXM3 Z240cGI0aXpzYS1weXRob24tYXR0cnMtMTkuMy4wL2xpYjovZ251L3N0b3JlL2d6Z2F2bTlwMndh NnkyNDNrenpqODYxOHl3cnNobTFzLXB5dGhvbi10eGFpby0xOC44LjEvbGliOi9nbnUvc3RvcmUv ZzFtaGF2c21kN2ZsZGs0OWQ5NWlzcmE0bjl3bTRqdnMtcHl0aG9uLWNmZmktMS4xMy4yL2xpYjov Z251L3N0b3JlL3M1NGM2cmJsNDA0MTZsbDBrcnJyNTJtM3lpdnhjbDN4LWxpYnNvZGl1bS0xLjAu MTgvbGliOi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliOi9nbnUvc3RvcmUvcHBiNThrcWlieDh3M3owZ3hhNDZ6eHpxczdy dnJubHMtcHl0aG9uLWNvbnN0YW50bHktMTUuMS4wL2xpYjovZ251L3N0b3JlL2RzNjc5djhobWs4 cTU5cDQ2a2tsNGxteTFud2lxeGN6LXB5dGhvbi1oeXBlcmxpbmstMTkuMC4wL2xpYjovZ251L3N0 b3JlLzZ6Nnc3aDk4ZG5mNm44ZmZ5OGRuNDIzcXp2MnZ4azc0LXB5dGhvbi1pbmNyZW1lbnRhbC0x Ny41LjAvbGliOi9nbnUvc3RvcmUvNngzMzBjZngwZ21hZGxuMGczamxzYmhqNG5raXg3M3YtcHl0 aG9uLXB5aGFtY3Jlc3QtMS45LjAtMC4yNWZkYzVmL2xpYjovZ251L3N0b3JlL2RpYjkza3huNGhh eWhwN3ZhZjQ1OGl3bDFweDd4cjhiLXB5dGhvbi16b3BlLWludGVyZmFjZS00LjcuMi9saWI6L2du dS9zdG9yZS9xZzQ4amR6emkxNXhwbTNqNjRhangyNTlhcnFseDk4bi1weXRob24taXBhZGRyZXNz LTEuMC4yMi9saWI6L2dudS9zdG9yZS92MDhqMGNsbXczMXJ2YzBhYXpqZjhmZmk3cGlxcHYxcC1w eXRob24tcmVxdWVzdHMtMi4yMi4wL2xpYjovZ251L3N0b3JlL2hsc2NsOWFyeW5zMjVhYXN5bGcw cHlhNGprYWNza3JwLXB5dGhvbi1weW9wZW5zc2wtMTkuMC4wL2xpYjovZ251L3N0b3JlL3pobGsx YTB6eGZyMW5zanBhODg2YjBpeWoxYTY2NGhpLXB5dGhvbi1weWFzbjEtbW9kdWxlcy0wLjIuMi9s aWI6L2dudS9zdG9yZS9qOXNmazVpamxzY3Fta3FnZDVuMnJtemtpbXluZ2Jhai1weXRob24tcHlh c24xLTAuNC44L2xpYjovZ251L3N0b3JlL2FyaHFpcHExbmxpcWs0NXFja24zeHF4Zjk4aTY5Yjk0 LXB5dGhvbi1weWNwYXJzZXItMi4xOS9saWI6L2dudS9zdG9yZS8wNHBrZmphNHY2Y3Fra25iMXl3 ZnBhNWNuejZ3eXgweC1weXRob24tdXJsbGliMy0xLjI1LjMvbGliOi9nbnUvc3RvcmUvOGFtdmNx azcybGpmMDIwZHZ4MmRjMHh3bDc2bDZjNDQtcHl0aG9uLWNoYXJkZXQtMy4wLjQvbGliOi9nbnUv c3RvcmUvM2Rhbjc2Z25zODJyZmFoczF4Mml3MXc3ZHJxcDdiaTgtcHl0aG9uLWNlcnRpZmktMjAx OS4zLjkvbGliOi9nbnUvc3RvcmUvY3pyMWg1MWp5enpmYjJzMzYwcWdoZzB2M3kzdzN6Y2gtcHl0 aG9uLWNyeXB0b2dyYXBoeS0yLjcvbGliOi9nbnUvc3RvcmUvbmxwOHd3eTFtZzcyODNxc2s5Nnlr bGZjOG4xZzJtMHAtcHl0aG9uLXB5c29ja3MtMS43LjAvbGliOi9nbnUvc3RvcmUvcjZuZ3Ixc213 YWgzODNyZGpiMzI0MHA0cDA0eWRpY3AtcHl0aG9uLWlzbzg2MDEtMC4xLjEyL2xpYjovZ251L3N0 b3JlL3l5azM4eGc3cWs4eHlyeDc0d2g5ZDNtY2lxeTA3OWlrLXB5dGhvbi1hc24xY3J5cHRvLTAu MjQuMC9saWInCmVudmlyb25tZW50IHZhcmlhYmxlIGBHVUlYX0xPQ1BBVEgnIHNldCB0byBgL2du dS9zdG9yZS9od2NreTc0NDZzOTUydzBtd2NoaG1tMjExbGwwN3pycS1nbGliYy11dGY4LWxvY2Fs ZXMtMi4zMS9saWIvbG9jYWxlJwpwaGFzZSBgc2V0LXBhdGhzJyBzdWNjZWVkZWQgYWZ0ZXIgMC4x IHNlY29uZHMKc3RhcnRpbmcgcGhhc2UgYGluc3RhbGwtbG9jYWxlJwp1c2luZyAnZW5fVVMudXRm OCcgbG9jYWxlIGZvciBjYXRlZ29yeSAiTENfQUxMIgpwaGFzZSBgaW5zdGFsbC1sb2NhbGUnIHN1 Y2NlZWRlZCBhZnRlciAwLjAgc2Vjb25kcwpzdGFydGluZyBwaGFzZSBgdW5wYWNrJwptYWdpYy13 b3JtaG9sZS0wLjEyLjAvCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zZXR1cC5jZmcKbWFnaWMtd29y bWhvbGUtMC4xMi4wL21pc2MvCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9taXNjL3dlYi8KbWFnaWMt d29ybWhvbGUtMC4xMi4wL21pc2Mvd2ViL3RpbWVsaW5lLmNzcwptYWdpYy13b3JtaG9sZS0wLjEy LjAvbWlzYy93ZWIvdGltZWxpbmUuaHRtbAptYWdpYy13b3JtaG9sZS0wLjEyLjAvbWlzYy93ZWIv dGltZWxpbmUuanMKbWFnaWMtd29ybWhvbGUtMC4xMi4wL21pc2MvZHVtcC1zdGF0cy5weQptYWdp Yy13b3JtaG9sZS0wLjEyLjAvbWlzYy9kZW1vLWpvdXJuYWwucHkKbWFnaWMtd29ybWhvbGUtMC4x Mi4wL21pc2Mvd2luZG93cy1idWlsZC5jbWQKbWFnaWMtd29ybWhvbGUtMC4xMi4wL21pc2MvZHVt cC10aW1pbmcucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL1JFQURNRS5tZAptYWdpYy13b3JtaG9s ZS0wLjEyLjAvTElDRU5TRQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc2V0dXAucHkKbWFnaWMtd29y bWhvbGUtMC4xMi4wL2RvY3MvCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3cuZG90Cm1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9kb2NzL3dlbGNvbWUubWQKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2Rv Y3MvYXBpLm1kCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3N0YXRlLW1hY2hpbmVzLwptYWdp Yy13b3JtaG9sZS0wLjEyLjAvZG9jcy9zdGF0ZS1tYWNoaW5lcy9tYWNoaW5lcy5kb3QKbWFnaWMt d29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUtbWFjaGluZXMvdGVybWluYXRvci5kb3QKbWFnaWMt d29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUtbWFjaGluZXMvaW5wdXQuZG90Cm1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9kb2NzL3N0YXRlLW1hY2hpbmVzL2xpc3Rlci5kb3QKbWFnaWMtd29ybWhvbGUt MC4xMi4wL2RvY3Mvc3RhdGUtbWFjaGluZXMvZGlsYXRpb24uZG90Cm1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9kb2NzL3N0YXRlLW1hY2hpbmVzL19jb25uZWN0aW9uLmRvdAptYWdpYy13b3JtaG9sZS0w LjEyLjAvZG9jcy9zdGF0ZS1tYWNoaW5lcy9ib3NzLmRvdAptYWdpYy13b3JtaG9sZS0wLjEyLjAv ZG9jcy9zdGF0ZS1tYWNoaW5lcy9vcmRlci5kb3QKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mv c3RhdGUtbWFjaGluZXMvc2VuZC5kb3QKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUt bWFjaGluZXMvbWFpbGJveC5kb3QKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUtbWFj aGluZXMvYWxsb2NhdG9yLmRvdAptYWdpYy13b3JtaG9sZS0wLjEyLjAvZG9jcy9zdGF0ZS1tYWNo aW5lcy9yZWNlaXZlLmRvdAptYWdpYy13b3JtaG9sZS0wLjEyLjAvZG9jcy9zdGF0ZS1tYWNoaW5l cy9NYWtlZmlsZQptYWdpYy13b3JtaG9sZS0wLjEyLjAvZG9jcy9zdGF0ZS1tYWNoaW5lcy9rZXku ZG90Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3N0YXRlLW1hY2hpbmVzL25hbWVwbGF0ZS5k b3QKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUtbWFjaGluZXMvY29kZS5kb3QKbWFn aWMtd29ybWhvbGUtMC4xMi4wL2RvY3MvY2xpZW50LXByb3RvY29sLm1kCm1hZ2ljLXdvcm1ob2xl LTAuMTIuMC9kb2NzL2RpbGF0aW9uLXByb3RvY29sLm1kCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9k b2NzL2F0dGFja3MubWQKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3MvaW5kZXgucnN0Cm1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9kb2NzL2NvbmYucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mv dHJhbnNpdC5tZAptYWdpYy13b3JtaG9sZS0wLjEyLjAvZG9jcy9maWxlLXRyYW5zZmVyLXByb3Rv Y29sLm1kCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL2pvdXJuYWwubWQKbWFnaWMtd29ybWhv bGUtMC4xMi4wL2RvY3MvdG9yLm1kCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3dvcm1ob2xl LjEKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3MvaW50cm9kdWN0aW9uLm1kCm1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9kb2NzL01ha2VmaWxlCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3NlcnZl ci1wcm90b2NvbC5tZAptYWdpYy13b3JtaG9sZS0wLjEyLjAvTkVXUy5tZAptYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjLwptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL21hZ2ljX3dvcm1ob2xlLmVn Zy1pbmZvLwptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL21hZ2ljX3dvcm1ob2xlLmVnZy1pbmZv L1NPVVJDRVMudHh0Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvbWFnaWNfd29ybWhvbGUuZWdn LWluZm8vcmVxdWlyZXMudHh0Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvbWFnaWNfd29ybWhv bGUuZWdnLWluZm8vdG9wX2xldmVsLnR4dAptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL21hZ2lj X3dvcm1ob2xlLmVnZy1pbmZvL2VudHJ5X3BvaW50cy50eHQKbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9kZXBlbmRlbmN5X2xpbmtzLnR4dAptYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL21hZ2ljX3dvcm1ob2xlLmVnZy1pbmZvL1BLRy1JTkZPCm1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvaXBhZGRycy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19i b3NzLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX25hbWVwbGF0ZS5weQpt YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS8KbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9jbGkvX19pbml0X18ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS9jbGkvcHVibGljX3JlbGF5LnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvY2xpL3dlbGNvbWUucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS9jbGkvY21kX3NlbmQucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkv Y21kX3JlY2VpdmUucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21k X3NzaC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbGkucHkKbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fa2V5LnB5Cm1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvX19pbml0X18ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9vYnNlcnZlci5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3hm ZXJfdXRpbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19pbnB1dC5weQpt YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZWNlaXZlLnB5Cm1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JsY29tcGxldGVyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvX2NvZGUucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYWxsb2NhdG9yLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX29y ZGVyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC8KbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfaGludHMucHkKbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfdXRpbC5weQptYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvX19pbml0X18ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS90ZXN0L3J1bl90cmlhbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL3Rlc3QvdGVzdF9rZXlzLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC9jb21tb24ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3RfdG9yX21hbmFnZXIucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L3Rlc3Rfb2JzZXJ2ZXIucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L3Rlc3RfaXBhZGRycy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L3Rlc3QvdGVzdF9zc2gucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L3Rlc3RfZXZlbnR1YWwucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L3Rlc3RfeGZlcl91dGlsLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVz dC90ZXN0X3JsY29tcGxldGVyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X3RyYW5zaXQucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3Rfam91cm5hbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF93b3JtaG9sZS5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF9hcmdzLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X2hrZGYucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0 ZS8KbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X291 dGJvdW5kLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUv dGVzdF9wYXJzZS5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGls YXRlL19faW5pdF9fLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvdGVzdC9kaWxhdGUvY29tbW9uLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvdGVzdC9kaWxhdGUvdGVzdF9lbmNvZGluZy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfaW5ib3VuZC5weQptYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weQptYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcmVjb3JkLnB5Cm1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9lbmRwb2ludHMu cHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nv bm5lY3QucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90 ZXN0X2Nvbm5lY3Rvci5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3Qv ZGlsYXRlL3Rlc3RfZnVsbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvZGlsYXRlL3Rlc3RfbWFuYWdlci5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZnJhbWVyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvdGVzdC90ZXN0X2NsaS5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvdGVzdF93b3JkbGlzdC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3dvcm1ob2xlLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3dvcmRs aXN0LnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkK bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fc2VuZC5weQptYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi8KbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS9fZGlsYXRpb24vcm9sZXMucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fZGlsYXRpb24vX25vaXNlLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2RpbGF0aW9uL19faW5pdF9fLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fZGlsYXRpb24vb3V0Ym91bmQucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdG9yLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX2RpbGF0aW9uL2VuY29kZS5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX2RpbGF0aW9uL2luYm91bmQucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fZGlsYXRpb24vbWFuYWdlci5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL3Rvcl9tYW5hZ2VyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv am91cm5hbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2Vycm9ycy5weQpt YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL190ZXJtaW5hdG9yLnB5Cm1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2xpc3Rlci5weQptYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3RpbWluZy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3V0aWwucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fX21haW5fXy5w eQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19oaW50cy5weQptYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19tYWlsYm94LnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvX3ZlcnNpb24ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90cmFuc2l0LnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvZXZlbnR1 YWwucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9faW50ZXJmYWNlcy5weQpt YWdpYy13b3JtaG9sZS0wLjEyLjAvc25hcGNyYWZ0LnlhbWwKbWFnaWMtd29ybWhvbGUtMC4xMi4w Ly5jb3ZlcmFnZXJjCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC92ZXJzaW9uZWVyLnB5Cm1hZ2ljLXdv cm1ob2xlLTAuMTIuMC90b3guaW5pCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9weWkvCm1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9weWkvd29ybWhvbGUuZXhlLnNwZWMKbWFnaWMtd29ybWhvbGUtMC4xMi4w L3B5aS9idWlsZC1leGUKbWFnaWMtd29ybWhvbGUtMC4xMi4wL1BLRy1JTkZPCm1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9NQU5JRkVTVC5pbgpwaGFzZSBgdW5wYWNrJyBzdWNjZWVkZWQgYWZ0ZXIgMC4x IHNlY29uZHMKc3RhcnRpbmcgcGhhc2UgYGVuc3VyZS1uby1tdGltZXMtcHJlLTE5ODAnCnBoYXNl IGBlbnN1cmUtbm8tbXRpbWVzLXByZS0xOTgwJyBzdWNjZWVkZWQgYWZ0ZXIgMC4wIHNlY29uZHMK c3RhcnRpbmcgcGhhc2UgYGVuYWJsZS1ieXRlY29kZS1kZXRlcm1pbmlzbScKcGhhc2UgYGVuYWJs ZS1ieXRlY29kZS1kZXRlcm1pbmlzbScgc3VjY2VlZGVkIGFmdGVyIDAuMCBzZWNvbmRzCnN0YXJ0 aW5nIHBoYXNlIGBwYXRjaC11c3ItYmluLWZpbGUnCnBoYXNlIGBwYXRjaC11c3ItYmluLWZpbGUn IHN1Y2NlZWRlZCBhZnRlciAwLjAgc2Vjb25kcwpzdGFydGluZyBwaGFzZSBgcGF0Y2gtc291cmNl LXNoZWJhbmdzJwpwYXRjaC1zaGViYW5nOiAuL3B5aS9idWlsZC1leGU6IGNoYW5naW5nIGAvYmlu L3NoJyB0byBgL2dudS9zdG9yZS9wd2NwMjM5a2pmN2xuajVpNGxrZHpjZmN4d2NmeWs3Mi1iYXNo LW1pbmltYWwtNS4wLjE2L2Jpbi9zaCcKcGhhc2UgYHBhdGNoLXNvdXJjZS1zaGViYW5ncycgc3Vj Y2VlZGVkIGFmdGVyIDAuMCBzZWNvbmRzCnN0YXJ0aW5nIHBoYXNlIGBwYXRjaC1nZW5lcmF0ZWQt ZmlsZS1zaGViYW5ncycKcGhhc2UgYHBhdGNoLWdlbmVyYXRlZC1maWxlLXNoZWJhbmdzJyBzdWNj ZWVkZWQgYWZ0ZXIgMC4wIHNlY29uZHMKc3RhcnRpbmcgcGhhc2UgYGJ1aWxkJwpydW5uaW5nICJw eXRob24gc2V0dXAucHkiIHdpdGggY29tbWFuZCAiYnVpbGQiIGFuZCBwYXJhbWV0ZXJzICgpCnJ1 bm5pbmcgYnVpbGQKcnVubmluZyBidWlsZF9weQpjcmVhdGluZyBidWlsZApjcmVhdGluZyBidWls ZC9saWIKY3JlYXRpbmcgYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL19y ZWNlaXZlLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9fX2lu aXRfXy5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvdXRpbC5w eSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX3JsY29tcGxldGVy LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9ldmVudHVhbC5w eSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX2tleS5weSAtPiBi dWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX2FsbG9jYXRvci5weSAtPiBi dWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX29yZGVyLnB5IC0+IGJ1aWxk L2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9faGludHMucHkgLT4gYnVpbGQvbGli L3dvcm1ob2xlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL190ZXJtaW5hdG9yLnB5IC0+IGJ1aWxkL2xp Yi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9qb3VybmFsLnB5IC0+IGJ1aWxkL2xpYi93 b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9lcnJvcnMucHkgLT4gYnVpbGQvbGliL3dvcm1o b2xlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL29ic2VydmVyLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9s ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9faW50ZXJmYWNlcy5weSAtPiBidWlsZC9saWIvd29ybWhv bGUKY29weWluZyBzcmMvd29ybWhvbGUveGZlcl91dGlsLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9s ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS93b3JtaG9sZS5weSAtPiBidWlsZC9saWIvd29ybWhvbGUK Y29weWluZyBzcmMvd29ybWhvbGUvaXBhZGRycy5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29w eWluZyBzcmMvd29ybWhvbGUvX2Jvc3MucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcg c3JjL3dvcm1ob2xlL193b3JkbGlzdC5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBz cmMvd29ybWhvbGUvdG9yX21hbmFnZXIucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcg c3JjL3dvcm1ob2xlL19uYW1lcGxhdGUucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcg c3JjL3dvcm1ob2xlL19zZW5kLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93 b3JtaG9sZS90cmFuc2l0LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3Jt aG9sZS9fX21haW5fXy5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhv bGUvX2lucHV0LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9f bWFpbGJveC5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX2Nv ZGUucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL19yZW5kZXp2 b3VzLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9fdmVyc2lv bi5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX2xpc3Rlci5w eSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvdGltaW5nLnB5IC0+ IGJ1aWxkL2xpYi93b3JtaG9sZQpjcmVhdGluZyBidWlsZC9saWIvd29ybWhvbGUvY2xpCmNvcHlp bmcgc3JjL3dvcm1ob2xlL2NsaS9jbWRfc3NoLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9jbGkK Y29weWluZyBzcmMvd29ybWhvbGUvY2xpL19faW5pdF9fLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9s ZS9jbGkKY29weWluZyBzcmMvd29ybWhvbGUvY2xpL3dlbGNvbWUucHkgLT4gYnVpbGQvbGliL3dv cm1ob2xlL2NsaQpjb3B5aW5nIHNyYy93b3JtaG9sZS9jbGkvcHVibGljX3JlbGF5LnB5IC0+IGJ1 aWxkL2xpYi93b3JtaG9sZS9jbGkKY29weWluZyBzcmMvd29ybWhvbGUvY2xpL2NtZF9zZW5kLnB5 IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9jbGkKY29weWluZyBzcmMvd29ybWhvbGUvY2xpL2NtZF9y ZWNlaXZlLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9jbGkKY29weWluZyBzcmMvd29ybWhvbGUv Y2xpL2NsaS5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvY2xpCmNyZWF0aW5nIGJ1aWxkL2xpYi93 b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL19faW5pdF9f LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBzcmMvd29ybWhvbGUv X2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL19kaWxhdGlvbgpj b3B5aW5nIHNyYy93b3JtaG9sZS9fZGlsYXRpb24vX25vaXNlLnB5IC0+IGJ1aWxkL2xpYi93b3Jt aG9sZS9fZGlsYXRpb24KY29weWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwu cHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL19kaWxhdGlvbgpjb3B5aW5nIHNyYy93b3JtaG9sZS9f ZGlsYXRpb24vY29ubmVjdG9yLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9fZGlsYXRpb24KY29w eWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL3JvbGVzLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9s ZS9fZGlsYXRpb24KY29weWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL2VuY29kZS5weSAtPiBi dWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uCmNvcHlpbmcgc3JjL3dvcm1ob2xlL19kaWxhdGlv bi9vdXRib3VuZC5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uCmNvcHlpbmcgc3Jj L3dvcm1ob2xlL19kaWxhdGlvbi9pbmJvdW5kLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9fZGls YXRpb24KY29weWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL21hbmFnZXIucHkgLT4gYnVpbGQv bGliL3dvcm1ob2xlL19kaWxhdGlvbgpjcmVhdGluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdApj b3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L3Rlc3RfaXBhZGRycy5weSAtPiBidWlsZC9saWIvd29y bWhvbGUvdGVzdApjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L19faW5pdF9fLnB5IC0+IGJ1aWxk L2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF90cmFuc2l0 LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3Qv dGVzdF94ZmVyX3V0aWwucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QKY29weWluZyBzcmMv d29ybWhvbGUvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90 ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvcnVuX3RyaWFsLnB5IC0+IGJ1aWxkL2xpYi93 b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9hcmdzLnB5IC0+IGJ1 aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9qb3Vy bmFsLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF90b3JfbWFuYWdlci5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvdGVzdApjb3B5aW5n IHNyYy93b3JtaG9sZS90ZXN0L3Rlc3RfaGludHMucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rl c3QKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC90ZXN0X2hrZGYucHkgLT4gYnVpbGQvbGliL3dv cm1ob2xlL3Rlc3QKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC90ZXN0X2V2ZW50dWFsLnB5IC0+ IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93 b3JtaG9sZS5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvdGVzdApjb3B5aW5nIHNyYy93b3JtaG9s ZS90ZXN0L3Rlc3RfY2xpLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3Jj L3dvcm1ob2xlL3Rlc3QvdGVzdF9rZXlzLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNv cHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9vYnNlcnZlci5weSAtPiBidWlsZC9saWIvd29y bWhvbGUvdGVzdApjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkgLT4g YnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9jb21tb24u cHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC90 ZXN0X3dvcmRsaXN0LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dv cm1ob2xlL3Rlc3QvdGVzdF91dGlsLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlp bmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9zc2gucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rl c3QKY3JlYXRpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgc3JjL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL19faW5pdF9fLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0 L2RpbGF0ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3BhcnNlLnB5IC0+ IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0 L2RpbGF0ZS90ZXN0X2VuY29kaW5nLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0 ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2VuZHBvaW50cy5weSAtPiBi dWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0b3IucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRl CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdC5weSAtPiBidWls ZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9kaWxh dGUvdGVzdF9jb25uZWN0aW9uLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpj b3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2luYm91bmQucHkgLT4gYnVpbGQv bGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRl L3Rlc3Rfb3V0Ym91bmQucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlp bmcgc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfbWFuYWdlci5weSAtPiBidWlsZC9saWIv d29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVz dF9zdWJjaGFubmVsLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5n IHNyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS9jb21tb24ucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xl L3Rlc3QvZGlsYXRlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcmVjb3Jk LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5nIHNyYy93b3JtaG9s ZS90ZXN0L2RpbGF0ZS90ZXN0X2ZyYW1lci5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvdGVzdC9k aWxhdGUKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9mdWxsLnB5IC0+IGJ1 aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpVUERBVElORyBidWlsZC9saWIvd29ybWhvbGUv X3ZlcnNpb24ucHkKc2V0IGJ1aWxkL2xpYi93b3JtaG9sZS9fdmVyc2lvbi5weSB0byAnMC4xMi4w JwpwaGFzZSBgYnVpbGQnIHN1Y2NlZWRlZCBhZnRlciAzLjMgc2Vjb25kcwpzdGFydGluZyBwaGFz ZSBgaW5zdGFsbCcKcnVubmluZyAicHl0aG9uIHNldHVwLnB5IiB3aXRoIGNvbW1hbmQgImluc3Rh bGwiIGFuZCBwYXJhbWV0ZXJzICgiLS1wcmVmaXg9L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAiICItLXNpbmdsZS12ZXJzaW9u LWV4dGVybmFsbHktbWFuYWdlZCIgIi0tcm9vdD0vIikKcnVubmluZyBpbnN0YWxsCnJ1bm5pbmcg YnVpbGQKcnVubmluZyBidWlsZF9weQpVUERBVElORyBidWlsZC9saWIvd29ybWhvbGUvX3ZlcnNp b24ucHkKc2V0IGJ1aWxkL2xpYi93b3JtaG9sZS9fdmVyc2lvbi5weSB0byAnMC4xMi4wJwpydW5u aW5nIGluc3RhbGxfbGliCmNyZWF0aW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNq bGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wCmNyZWF0aW5nIC9nbnUvc3RvcmUvM3g4 cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYgpj cmVhdGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44CmNyZWF0aW5nIC9nbnUvc3RvcmUvM3g4cTEy eWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcwpjcmVhdGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUKY3JlYXRpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4 c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3dvcm1ob2xlL2NsaQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9jbGkvY21kX3Nz aC5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xp CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL2NsaS9fX2luaXRfXy5weSAtPiAvZ251L3N0b3Jl LzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xpCmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL2NsaS93ZWxjb21lLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS9jbGkKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvY2xpL3B1Ymxp Y19yZWxheS5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJm LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhv bGUvY2xpCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL2NsaS9jbWRfc2VuZC5weSAtPiAvZ251 L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xpCmNvcHlpbmcgYnVp bGQvbGliL3dvcm1ob2xlL2NsaS9jbWRfcmVjZWl2ZS5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xpCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xl L2NsaS9jbGkucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpy Zi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1o b2xlL2NsaQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9fcmVjZWl2ZS5weSAtPiAvZ251L3N0 b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIv d29ybWhvbGUvX19pbml0X18ucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2ps YnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3V0aWwucHkgLT4gL2dudS9z dG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEy LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL19ybGNvbXBsZXRlci5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvZXZlbnR1YWwucHkg LT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3Jt aG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcg YnVpbGQvbGliL3dvcm1ob2xlL19rZXkucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL19hbGxvY2F0b3Iu cHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13 b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlp bmcgYnVpbGQvbGliL3dvcm1ob2xlL19vcmRlci5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdi eHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX2hpbnRz LnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMt d29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZQpjb3B5 aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9fdGVybWluYXRvci5weSAtPiAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUv am91cm5hbC5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJm LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhv bGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvZXJyb3JzLnB5IC0+IC9nbnUvc3RvcmUvM3g4 cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9s ZS9vYnNlcnZlci5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFt enJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29y bWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX2ludGVyZmFjZXMucHkgLT4gL2dudS9z dG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEy LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL3hmZXJfdXRpbC5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhz amxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvd29ybWhvbGUucHkgLT4g L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9s ZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNyZWF0aW5nIC9n bnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUt MC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29w eWluZyBidWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uL19faW5pdF9fLnB5IC0+IC9nbnUvc3Rv cmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBi dWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkgLT4gL2dudS9zdG9yZS8z eDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbgpjb3B5aW5nIGJ1aWxk L2xpYi93b3JtaG9sZS9fZGlsYXRpb24vX25vaXNlLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBidWlsZC9saWIvd29y bWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6 NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbgpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9s ZS9fZGlsYXRpb24vY29ubmVjdG9yLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX2Rp bGF0aW9uL3JvbGVzLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0 YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93 b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uL2Vu Y29kZS5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUv X2RpbGF0aW9uCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL19kaWxhdGlvbi9vdXRib3VuZC5w eSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvX2RpbGF0 aW9uCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL19kaWxhdGlvbi9pbmJvdW5kLnB5IC0+IC9n bnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUt MC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29w eWluZyBidWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uL21hbmFnZXIucHkgLT4gL2dudS9zdG9y ZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbgpjb3B5aW5nIGJ1 aWxkL2xpYi93b3JtaG9sZS9pcGFkZHJzLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZj cm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy93b3JtaG9sZQpjcmVhdGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L3Rl c3RfaXBhZGRycy5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFt enJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29y bWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L19faW5pdF9fLnB5IC0+ IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhv bGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlp bmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF90cmFuc2l0LnB5IC0+IC9nbnUvc3RvcmUv M3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL3Rlc3QvdGVzdF94ZmVyX3V0aWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUv dGVzdC90ZXN0X3JsY29tcGxldGVyLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvcnVu X3RyaWFsLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYt bWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9s ZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF9hcmdzLnB5IC0+IC9n bnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUt MC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcg YnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF9qb3VybmFsLnB5IC0+IC9nbnUvc3RvcmUvM3g4 cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dv cm1ob2xlL3Rlc3QvdGVzdF90b3JfbWFuYWdlci5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdi eHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdApjcmVhdGluZyAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBidWlsZC9saWIv d29ybWhvbGUvdGVzdC9kaWxhdGUvX19pbml0X18ucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcGFyc2UucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZW5jb2RpbmcucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5 ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZW5kcG9pbnRzLnB5IC0+IC9nbnUvc3RvcmUvM3g4 cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5nIGJ1aWxk L2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rvci5weSAtPiAvZ251L3N0b3Jl LzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBi dWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0LnB5IC0+IC9nbnUvc3Rv cmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5n IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkgLT4gL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNv cHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfaW5ib3VuZC5weSAtPiAv Z251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUK Y29weWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9vdXRib3VuZC5weSAt PiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxh dGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9tYW5hZ2VyLnB5 IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29y bWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2Rp bGF0ZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5u ZWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rl c3QvZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL2NvbW1vbi5w eSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9k aWxhdGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9yZWNvcmQu cHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13 b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3Qv ZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZnJhbWVy LnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMt d29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0 L2RpbGF0ZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Z1bGwu cHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13 b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3Qv ZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF9oaW50cy5weSAtPiAv Z251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdApjb3B5aW5n IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L3Rlc3RfaGtkZi5weSAtPiAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3Jt aG9sZS90ZXN0L3Rlc3RfZXZlbnR1YWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC90 ZXN0X3dvcm1ob2xlLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0 YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93 b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF9jbGkucHkg LT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3Jt aG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29w eWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC90ZXN0X2tleXMucHkgLT4gL2dudS9zdG9yZS8z eDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWlsZC9saWIv d29ybWhvbGUvdGVzdC90ZXN0X29ic2VydmVyLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4 ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rl c3QvdGVzdF9tYWNoaW5lcy5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxi c3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvd29ybWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2NvbW1vbi5w eSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdApj b3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L3Rlc3Rfd29yZGxpc3QucHkgLT4gL2dudS9z dG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEy LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWls ZC9saWIvd29ybWhvbGUvdGVzdC90ZXN0X3V0aWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUv dGVzdC90ZXN0X3NzaC5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5 NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv d29ybWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9fYm9zcy5weSAtPiAvZ251 L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9s aWIvd29ybWhvbGUvX3dvcmRsaXN0LnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90b3JfbWFuYWdlci5w eSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWlu ZyBidWlsZC9saWIvd29ybWhvbGUvX25hbWVwbGF0ZS5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX3Nl bmQucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNv cHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3RyYW5zaXQucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5 ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL19f bWFpbl9fLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYt bWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9s ZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9faW5wdXQucHkgLT4gL2dudS9zdG9yZS8zeDhx MTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xl L19tYWlsYm94LnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16 cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3Jt aG9sZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9fY29kZS5weSAtPiAvZ251L3N0b3JlLzN4 OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhv bGUvX3JlbmRlenZvdXMucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2 eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL192ZXJzaW9uLnB5IC0+IC9nbnUv c3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4x Mi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZQpjb3B5aW5nIGJ1aWxkL2xp Yi93b3JtaG9sZS9fbGlzdGVyLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNq bGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy93b3JtaG9sZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90aW1pbmcucHkgLT4gL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmJ5dGUtY29tcGlsaW5n IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhv bGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9jbGkvY21kX3Nz aC5weSB0byBjbWRfc3NoLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUv M3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9jbGkvX19pbml0X18ucHkgdG8gX19p bml0X18uY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL2NsaS93ZWxjb21lLnB5IHRvIHdlbGNvbWUuY3B5dGhv bi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2ps YnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3dvcm1ob2xlL2NsaS9wdWJsaWNfcmVsYXkucHkgdG8gcHVibGljX3JlbGF5LmNweXRob24t MzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJz dnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy93b3JtaG9sZS9jbGkvY21kX3NlbmQucHkgdG8gY21kX3NlbmQuY3B5dGhvbi0zOC5weWMKYnl0 ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1t YWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xl L2NsaS9jbWRfcmVjZWl2ZS5weSB0byBjbWRfcmVjZWl2ZS5jcHl0aG9uLTM4LnB5YwpieXRlLWNv bXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xp L2NsaS5weSB0byBjbGkuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8z eDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19yZWNlaXZlLnB5IHRvIF9yZWNlaXZl LmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZj cm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy93b3JtaG9sZS9fX2luaXRfXy5weSB0byBfX2luaXRfXy5jcHl0aG9uLTM4LnB5 YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFt enJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29y bWhvbGUvdXRpbC5weSB0byB1dGlsLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUv c3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4x Mi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fcmxjb21wbGV0ZXIucHkg dG8gX3JsY29tcGxldGVyLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUv M3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9ldmVudHVhbC5weSB0byBldmVudHVh bC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2 Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvd29ybWhvbGUvX2tleS5weSB0byBfa2V5LmNweXRob24tMzgucHljCmJ5dGUt Y29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFn aWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9f YWxsb2NhdG9yLnB5IHRvIF9hbGxvY2F0b3IuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcg L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9s ZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19vcmRlci5weSB0 byBfb3JkZXIuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5 ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19oaW50cy5weSB0byBfaGludHMuY3B5dGhvbi0z OC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2 eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3dvcm1ob2xlL190ZXJtaW5hdG9yLnB5IHRvIF90ZXJtaW5hdG9yLmNweXRob24tMzgucHljCmJ5 dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYt bWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9s ZS9qb3VybmFsLnB5IHRvIGpvdXJuYWwuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL2Vycm9ycy5weSB0byBl cnJvcnMuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL29ic2VydmVyLnB5IHRvIG9ic2VydmVyLmNweXRob24t MzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJz dnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy93b3JtaG9sZS9faW50ZXJmYWNlcy5weSB0byBfaW50ZXJmYWNlcy5jcHl0aG9uLTM4LnB5Ywpi eXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJm LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhv bGUveGZlcl91dGlsLnB5IHRvIHhmZXJfdXRpbC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGlu ZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvd29ybWhvbGUu cHkgdG8gd29ybWhvbGUuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8z eDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbi9fX2luaXRfXy5weSB0 byBfX2luaXRfXy5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkgdG8g Y29ubmVjdGlvbi5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvX2RpbGF0aW9uL19ub2lzZS5weSB0byBfbm9p c2UuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6 NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5IHRvIHN1YmNoYW5u ZWwuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6 NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbi9jb25uZWN0b3IucHkgdG8gY29ubmVjdG9y LmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZj cm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24vcm9sZXMucHkgdG8gcm9sZXMuY3B5dGhvbi0z OC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2 eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3dvcm1ob2xlL19kaWxhdGlvbi9lbmNvZGUucHkgdG8gZW5jb2RlLmNweXRob24tMzgucHljCmJ5 dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYt bWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9s ZS9fZGlsYXRpb24vb3V0Ym91bmQucHkgdG8gb3V0Ym91bmQuY3B5dGhvbi0zOC5weWMKYnl0ZS1j b21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19k aWxhdGlvbi9pbmJvdW5kLnB5IHRvIGluYm91bmQuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxp bmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3Jt aG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlv bi9tYW5hZ2VyLnB5IHRvIG1hbmFnZXIuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL2lwYWRkcnMucHkgdG8g aXBhZGRycy5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC90ZXN0X2lwYWRkcnMucHkgdG8gdGVzdF9p cGFkZHJzLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L19faW5pdF9fLnB5IHRvIF9faW5pdF9fLmNw eXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS90ZXN0L3Rlc3RfdHJhbnNpdC5weSB0byB0ZXN0X3RyYW5zaXQuY3B5 dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4 c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF94ZmVyX3V0aWwucHkgdG8gdGVzdF94ZmVyX3V0aWwu Y3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weSB0byB0ZXN0X3JsY29t cGxldGVyLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L3J1bl90cmlhbC5weSB0byBydW5fdHJpYWwu Y3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9hcmdzLnB5IHRvIHRlc3RfYXJncy5jcHl0aG9u LTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxi c3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvd29ybWhvbGUvdGVzdC90ZXN0X2pvdXJuYWwucHkgdG8gdGVzdF9qb3VybmFsLmNweXRob24t MzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJz dnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy93b3JtaG9sZS90ZXN0L3Rlc3RfdG9yX21hbmFnZXIucHkgdG8gdGVzdF90b3JfbWFuYWdlci5j cHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvX19pbml0X18ucHkgdG8gX19pbml0X18uY3B5 dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4 c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcGFyc2UucHkgdG8gdGVzdF9wYXJzZS5j cHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9lbmNvZGluZy5weSB0byB0ZXN0X2Vu Y29kaW5nLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2VuZHBvaW50cy5weSB0 byB0ZXN0X2VuZHBvaW50cy5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3Jl LzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25u ZWN0b3IucHkgdG8gdGVzdF9jb25uZWN0b3IuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcg L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9s ZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRl L3Rlc3RfY29ubmVjdC5weSB0byB0ZXN0X2Nvbm5lY3QuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21w aWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13 b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3Qv ZGlsYXRlL3Rlc3RfY29ubmVjdGlvbi5weSB0byB0ZXN0X2Nvbm5lY3Rpb24uY3B5dGhvbi0zOC5w eWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRh bXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfaW5ib3VuZC5weSB0byB0ZXN0X2luYm91bmQuY3B5dGhv bi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2ps YnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfb3V0Ym91bmQucHkgdG8gdGVzdF9vdXRib3Vu ZC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2 Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9tYW5hZ2VyLnB5IHRvIHRlc3Rf bWFuYWdlci5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFubmVsLnB5 IHRvIHRlc3Rfc3ViY2hhbm5lbC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0 b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvY29tbW9u LnB5IHRvIGNvbW1vbi5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4 OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9yZWNvcmQu cHkgdG8gdGVzdF9yZWNvcmQuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9y ZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZnJh bWVyLnB5IHRvIHRlc3RfZnJhbWVyLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUv c3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4x Mi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0 X2Z1bGwucHkgdG8gdGVzdF9mdWxsLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUv c3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4x Mi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L3Rlc3RfaGludHMu cHkgdG8gdGVzdF9oaW50cy5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3Jl LzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC90ZXN0X2hrZGYucHkgdG8g dGVzdF9oa2RmLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEy eWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L3Rlc3RfZXZlbnR1YWwucHkgdG8gdGVz dF9ldmVudHVhbC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IHRvIHRl c3Rfd29ybWhvbGUuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhx MTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9jbGkucHkgdG8gdGVzdF9j bGkuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6 NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9rZXlzLnB5IHRvIHRlc3Rfa2V5cy5jcHl0 aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhz amxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvd29ybWhvbGUvdGVzdC90ZXN0X29ic2VydmVyLnB5IHRvIHRlc3Rfb2JzZXJ2ZXIuY3B5 dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4 c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSB0byB0ZXN0X21hY2hpbmVzLmNw eXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS90ZXN0L2NvbW1vbi5weSB0byBjb21tb24uY3B5dGhvbi0zOC5weWMK Ynl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpy Zi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1o b2xlL3Rlc3QvdGVzdF93b3JkbGlzdC5weSB0byB0ZXN0X3dvcmRsaXN0LmNweXRob24tMzgucHlj CmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16 cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3Jt aG9sZS90ZXN0L3Rlc3RfdXRpbC5weSB0byB0ZXN0X3V0aWwuY3B5dGhvbi0zOC5weWMKYnl0ZS1j b21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rl c3QvdGVzdF9zc2gucHkgdG8gdGVzdF9zc2guY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcg L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9s ZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19ib3NzLnB5IHRv IF9ib3NzLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fd29yZGxpc3QucHkgdG8gX3dvcmRsaXN0LmNweXRo b24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNq bGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy93b3JtaG9sZS90b3JfbWFuYWdlci5weSB0byB0b3JfbWFuYWdlci5jcHl0aG9uLTM4LnB5 YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFt enJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29y bWhvbGUvX25hbWVwbGF0ZS5weSB0byBfbmFtZXBsYXRlLmNweXRob24tMzgucHljCmJ5dGUtY29t cGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMt d29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fc2Vu ZC5weSB0byBfc2VuZC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4 OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdHJhbnNpdC5weSB0byB0cmFuc2l0LmNw eXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS9fX21haW5fXy5weSB0byBfX21haW5fXy5jcHl0aG9uLTM4LnB5Ywpi eXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJm LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhv bGUvX2lucHV0LnB5IHRvIF9pbnB1dC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251 L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvX21haWxib3gucHkgdG8g X21haWxib3guY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5 ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19jb2RlLnB5IHRvIF9jb2RlLmNweXRob24tMzgu cHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0 YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93 b3JtaG9sZS9fcmVuZGV6dm91cy5weSB0byBfcmVuZGV6dm91cy5jcHl0aG9uLTM4LnB5YwpieXRl LWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUv X3ZlcnNpb24ucHkgdG8gX3ZlcnNpb24uY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19saXN0ZXIucHkgdG8g X2xpc3Rlci5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGltaW5nLnB5IHRvIHRpbWluZy5jcHl0aG9uLTM4 LnB5YwpydW5uaW5nIGluc3RhbGxfZWdnX2luZm8KcnVubmluZyBlZ2dfaW5mbwp3cml0aW5nIHNy Yy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9QS0ctSU5GTwp3cml0aW5nIGRlcGVuZGVuY3lfbGlu a3MgdG8gc3JjL21hZ2ljX3dvcm1ob2xlLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0Cndy aXRpbmcgZW50cnkgcG9pbnRzIHRvIHNyYy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9lbnRyeV9w b2ludHMudHh0CndyaXRpbmcgcmVxdWlyZW1lbnRzIHRvIHNyYy9tYWdpY193b3JtaG9sZS5lZ2ct aW5mby9yZXF1aXJlcy50eHQKd3JpdGluZyB0b3AtbGV2ZWwgbmFtZXMgdG8gc3JjL21hZ2ljX3dv cm1ob2xlLmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKcmVhZGluZyBtYW5pZmVzdCBmaWxlICdzcmMv bWFnaWNfd29ybWhvbGUuZWdnLWluZm8vU09VUkNFUy50eHQnCnJlYWRpbmcgbWFuaWZlc3QgdGVt cGxhdGUgJ01BTklGRVNULmluJwp3cml0aW5nIG1hbmlmZXN0IGZpbGUgJ3NyYy9tYWdpY193b3Jt aG9sZS5lZ2ctaW5mby9TT1VSQ0VTLnR4dCcKQ29weWluZyBzcmMvbWFnaWNfd29ybWhvbGUuZWdn LWluZm8gdG8gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL21hZ2ljX3dvcm1o b2xlLTAuMTIuMC1weTMuOC5lZ2ctaW5mbwpydW5uaW5nIGluc3RhbGxfc2NyaXB0cwpJbnN0YWxs aW5nIHdvcm1ob2xlIHNjcmlwdCB0byAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxi c3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9iaW4KcGhhc2UgYGluc3RhbGwnIHN1Y2Nl ZWRlZCBhZnRlciAxLjQgc2Vjb25kcwpzdGFydGluZyBwaGFzZSBgaW5zdGFsbC1kb2NzJwpwaGFz ZSBgaW5zdGFsbC1kb2NzJyBzdWNjZWVkZWQgYWZ0ZXIgMC4wIHNlY29uZHMKc3RhcnRpbmcgcGhh c2UgYHdyYXAnCmZpbmQtZmlsZXM6IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJz dnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NiaW46IE5vIHN1Y2ggZmlsZSBvciBkaXJl Y3RvcnkKcGhhc2UgYHdyYXAnIHN1Y2NlZWRlZCBhZnRlciAwLjAgc2Vjb25kcwpzdGFydGluZyBw aGFzZSBgY2hlY2snCnJ1bm5pbmcgInB5dGhvbiBzZXR1cC5weSIgd2l0aCBjb21tYW5kICJ0ZXN0 IiBhbmQgcGFyYW1ldGVycyAoKQpydW5uaW5nIHRlc3QKcnVubmluZyBlZ2dfaW5mbwp3cml0aW5n IHNyYy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9QS0ctSU5GTwp3cml0aW5nIGRlcGVuZGVuY3lf bGlua3MgdG8gc3JjL21hZ2ljX3dvcm1ob2xlLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0 CndyaXRpbmcgZW50cnkgcG9pbnRzIHRvIHNyYy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9lbnRy eV9wb2ludHMudHh0CndyaXRpbmcgcmVxdWlyZW1lbnRzIHRvIHNyYy9tYWdpY193b3JtaG9sZS5l Z2ctaW5mby9yZXF1aXJlcy50eHQKd3JpdGluZyB0b3AtbGV2ZWwgbmFtZXMgdG8gc3JjL21hZ2lj X3dvcm1ob2xlLmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKcmVhZGluZyBtYW5pZmVzdCBmaWxlICdz cmMvbWFnaWNfd29ybWhvbGUuZWdnLWluZm8vU09VUkNFUy50eHQnCnJlYWRpbmcgbWFuaWZlc3Qg dGVtcGxhdGUgJ01BTklGRVNULmluJwp3cml0aW5nIG1hbmlmZXN0IGZpbGUgJ3NyYy9tYWdpY193 b3JtaG9sZS5lZ2ctaW5mby9TT1VSQ0VTLnR4dCcKcnVubmluZyBidWlsZF9leHQKdGVzdF9saXN0 ICh3b3JtaG9sZS50ZXN0LnRlc3RfaXBhZGRycy5MaXN0QWRkcmVzc2VzKQp0ZXN0X2xpc3QgLi4u IG9rCnRlc3RfbGlzdF9tb2NrX2N5Z3dpbiAod29ybWhvbGUudGVzdC50ZXN0X2lwYWRkcnMuTGlz dEFkZHJlc3NlcykKdGVzdF9saXN0X21vY2tfY3lnd2luIC4uLiBvawp0ZXN0X2xpc3RfbW9ja19p ZmNvbmZpZyAod29ybWhvbGUudGVzdC50ZXN0X2lwYWRkcnMuTGlzdEFkZHJlc3NlcykKdGVzdF9s aXN0X21vY2tfaWZjb25maWcgLi4uIG9rCnRlc3RfbGlzdF9tb2NrX2lwX2FkZHIgKHdvcm1ob2xl LnRlc3QudGVzdF9pcGFkZHJzLkxpc3RBZGRyZXNzZXMpCnRlc3RfbGlzdF9tb2NrX2lwX2FkZHIg Li4uIG9rCnRlc3RfbGlzdF9tb2NrX3JvdXRlICh3b3JtaG9sZS50ZXN0LnRlc3RfaXBhZGRycy5M aXN0QWRkcmVzc2VzKQp0ZXN0X2xpc3RfbW9ja19yb3V0ZSAuLi4gb2sKdGVzdF9hYmlsaXRpZXMg KHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkJhc2ljKQp0ZXN0X2FiaWxpdGllcyAuLi4gb2sK dGVzdF9jb25uZWN0aW9uX3JlYWR5ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5CYXNpYykK dGVzdF9jb25uZWN0aW9uX3JlYWR5IC4uLiBvawp0ZXN0X2lnbm9yZV9iYWRfaGludHMgKHdvcm1o b2xlLnRlc3QudGVzdF90cmFuc2l0LkJhc2ljKQp0ZXN0X2lnbm9yZV9iYWRfaGludHMgLi4uIG9r CnRlc3RfaWdub3JlX2xvY2FsaG9zdF9oaW50ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5C YXNpYykKdGVzdF9pZ25vcmVfbG9jYWxob3N0X2hpbnQgLi4uIG9rCnRlc3RfaWdub3JlX2xvY2Fs aG9zdF9oaW50X29yaWcgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkJhc2ljKQp0ZXN0X2ln bm9yZV9sb2NhbGhvc3RfaGludF9vcmlnIC4uLiBvawp0ZXN0X2tlZXBfb25seV9sb2NhbGhvc3Rf aGludCAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQmFzaWMpCnRlc3Rfa2VlcF9vbmx5X2xv Y2FsaG9zdF9oaW50IC4uLiBvawp0ZXN0X25vX3JlbGF5X2hpbnRzICh3b3JtaG9sZS50ZXN0LnRl c3RfdHJhbnNpdC5CYXNpYykKdGVzdF9ub19yZWxheV9oaW50cyAuLi4gb2sKdGVzdF9yZWxheV9o aW50cyAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQmFzaWMpCnRlc3RfcmVsYXlfaGludHMg Li4uIG9rCnRlc3RfdHJhbnNpdF9rZXlfYWxyZWFkeV9zZXQgKHdvcm1ob2xlLnRlc3QudGVzdF90 cmFuc2l0LkJhc2ljKQp0ZXN0X3RyYW5zaXRfa2V5X2FscmVhZHlfc2V0IC4uLiBvawp0ZXN0X3Ry YW5zaXRfa2V5X3dhaXQgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkJhc2ljKQp0ZXN0X3Ry YW5zaXRfa2V5X3dhaXQgLi4uIG9rCnRlc3RfdHJhbnNpdF9rZXlzICh3b3JtaG9sZS50ZXN0LnRl c3RfdHJhbnNpdC5CYXNpYykKdGVzdF90cmFuc2l0X2tleXMgLi4uIG9rCnRlc3RfY2FuY2VsICh3 b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X2NhbmNlbCAuLi4gb2sK dGVzdF9jaGVja19hbmRfcmVtb3ZlICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0 aW9uKQp0ZXN0X2NoZWNrX2FuZF9yZW1vdmUgLi4uIG9rCnRlc3RfY29ubmVjdENvbnN1bWVyICh3 b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X2Nvbm5lY3RDb25zdW1l ciAuLi4gb2sKdGVzdF9jb25uZWN0Q29uc3VtZXJfZW1wdHkgKHdvcm1ob2xlLnRlc3QudGVzdF90 cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfY29ubmVjdENvbnN1bWVyX2VtcHR5IC4uLiBvawp0ZXN0 X2NvbnN1bWVyICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X2Nv bnN1bWVyIC4uLiBvawp0ZXN0X2Rlc2NyaWJlICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5D b25uZWN0aW9uKQp0ZXN0X2Rlc2NyaWJlIC4uLiBvawp0ZXN0X2hhbmRzaGFrZV9iYWRfc3RhdGUg KHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfaGFuZHNoYWtlX2Jh ZF9zdGF0ZSAuLi4gb2sKdGVzdF9oYW5kc2hha2Vfb3RoZXJfZXJyb3IgKHdvcm1ob2xlLnRlc3Qu dGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfaGFuZHNoYWtlX290aGVyX2Vycm9yIC4uLiBv awp0ZXN0X291dF9vZl9vcmRlcl9ub25jZSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQ29u bmVjdGlvbikKdGVzdF9vdXRfb2Zfb3JkZXJfbm9uY2UgLi4uIG9rCnRlc3RfcHJvZHVjZXIgKHdv cm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfcHJvZHVjZXIgLi4uIG9r CnRlc3RfcmVjZWl2ZV9xdWV1ZSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQ29ubmVjdGlv bikKdGVzdF9yZWNlaXZlX3F1ZXVlIC4uLiBvawp0ZXN0X3JlY2VpdmVyX2FjY2VwdGVkICh3b3Jt aG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X3JlY2VpdmVyX2FjY2VwdGVk IC4uLiBvawp0ZXN0X3JlY2VpdmVyX3JlamVjdGVkX3BvbGl0ZWx5ICh3b3JtaG9sZS50ZXN0LnRl c3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X3JlY2VpdmVyX3JlamVjdGVkX3BvbGl0ZWx5IC4u LiBvawp0ZXN0X3JlY2VpdmVyX3JlamVjdGVkX3J1ZGVseSAod29ybWhvbGUudGVzdC50ZXN0X3Ry YW5zaXQuQ29ubmVjdGlvbikKdGVzdF9yZWNlaXZlcl9yZWplY3RlZF9ydWRlbHkgLi4uIG9rCnRl c3RfcmVjb3Jkc19jb3JydXB0ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9u KQp0ZXN0X3JlY29yZHNfY29ycnVwdCAuLi4gb2sKdGVzdF9yZWNvcmRzX2dvb2QgKHdvcm1ob2xl LnRlc3QudGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfcmVjb3Jkc19nb29kIC4uLiBvawp0 ZXN0X3JlY29yZHNfbm90X2JpbmFyeSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQ29ubmVj dGlvbikKdGVzdF9yZWNvcmRzX25vdF9iaW5hcnkgLi4uIG9rCnRlc3RfcmVsYXlfaGFuZHNoYWtl ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X3JlbGF5X2hhbmRz aGFrZSAuLi4gb2sKdGVzdF9yZWxheV9oYW5kc2hha2VfYmFkICh3b3JtaG9sZS50ZXN0LnRlc3Rf dHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X3JlbGF5X2hhbmRzaGFrZV9iYWQgLi4uIG9rCnRlc3Rf c2VuZGVyX2FjY2VwdGluZyAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQ29ubmVjdGlvbikK dGVzdF9zZW5kZXJfYWNjZXB0aW5nIC4uLiBvawp0ZXN0X3NlbmRlcl9yZWplY3RpbmcgKHdvcm1o b2xlLnRlc3QudGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3Rfc2VuZGVyX3JlamVjdGluZyAu Li4gb2sKdGVzdF90aW1lb3V0ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9u KQp0ZXN0X3RpbWVvdXQgLi4uIG9rCnRlc3Rfd3JpdGVUb0ZpbGUgKHdvcm1ob2xlLnRlc3QudGVz dF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3Rfd3JpdGVUb0ZpbGUgLi4uIG9rCnRlc3RfYmFzaWMg KHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkZpbGVDb25zdW1lcikKdGVzdF9iYXNpYyAuLi4g b2sKdGVzdF9oYXNoZXIgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkZpbGVDb25zdW1lcikK dGVzdF9oYXNoZXIgLi4uIG9rCnRlc3Rfbm90X2ZvcmV2ZXJfY2FuY2VsX2Vhcmx5ICh3b3JtaG9s ZS50ZXN0LnRlc3RfdHJhbnNpdC5Gb3JldmVyKQp0ZXN0X25vdF9mb3JldmVyX2NhbmNlbF9lYXJs eSAuLi4gb2sKdGVzdF9ub3RfZm9yZXZlcl9lcnJzICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNp dC5Gb3JldmVyKQp0ZXN0X25vdF9mb3JldmVyX2VycnMgLi4uIG9rCnRlc3Rfbm90X2ZvcmV2ZXJf ZmlyZXMgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkZvcmV2ZXIpCnRlc3Rfbm90X2ZvcmV2 ZXJfZmlyZXMgLi4uIG9rCnRlc3Rfbm90X2ZvcmV2ZXJfdGltZW91dCAod29ybWhvbGUudGVzdC50 ZXN0X3RyYW5zaXQuRm9yZXZlcikKdGVzdF9ub3RfZm9yZXZlcl90aW1lb3V0IC4uLiBvawp0ZXN0 X2RpcmVjdCAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuRnVsbCkKdGVzdF9kaXJlY3QgLi4u IG9rCnRlc3RfcmVsYXkgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkZ1bGwpCnRlc3RfcmVs YXkgLi4uIG9rCnRlc3RfY2FuY2VsX2FmdGVyX29uZV9mYWlsdXJlICh3b3JtaG9sZS50ZXN0LnRl c3RfdHJhbnNpdC5IaWdobGFuZGVyKQp0ZXN0X2NhbmNlbF9hZnRlcl9vbmVfZmFpbHVyZSAuLi4g b2sKdGVzdF9jYW5jZWxfZWFybHkgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkhpZ2hsYW5k ZXIpCnRlc3RfY2FuY2VsX2Vhcmx5IC4uLiBvawp0ZXN0X29uZV93aW5uZXIgKHdvcm1ob2xlLnRl c3QudGVzdF90cmFuc2l0LkhpZ2hsYW5kZXIpCnRlc3Rfb25lX3dpbm5lciAuLi4gb2sKdGVzdF90 aGVyZV9taWdodF9hbHNvX2JlX25vbmUgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkhpZ2hs YW5kZXIpCnRlc3RfdGhlcmVfbWlnaHRfYWxzb19iZV9ub25lIC4uLiBvawp0ZXN0X2NhbmNlbCAo d29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuSW5ib3VuZENvbm5lY3Rpb25GYWN0b3J5KQp0ZXN0 X2NhbmNlbCAuLi4gb2sKdGVzdF9kZXNjcmliZSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQu SW5ib3VuZENvbm5lY3Rpb25GYWN0b3J5KQp0ZXN0X2Rlc2NyaWJlIC4uLiBvawp0ZXN0X2ZpcnN0 X3N1Y2Nlc3Nfd2lucyAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuSW5ib3VuZENvbm5lY3Rp b25GYWN0b3J5KQp0ZXN0X2ZpcnN0X3N1Y2Nlc3Nfd2lucyAuLi4gb2sKdGVzdF9sb2dfb3RoZXJf ZXJyb3JzICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5JbmJvdW5kQ29ubmVjdGlvbkZhY3Rv cnkpCnRlc3RfbG9nX290aGVyX2Vycm9ycyAuLi4gVW5oYW5kbGVkIGVycm9yIGluIERlZmVycmVk OgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotLS0gPGV4Y2VwdGlvbiBjYXVn aHQgaGVyZT4gLS0tCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDY1NCwgaW4gX3J1bkNhbGxiYWNrcwog ICAgY3VycmVudC5yZXN1bHQgPSBjYWxsYmFjayhjdXJyZW50LnJlc3VsdCwgKmFyZ3MsICoqa3cp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3RyYW5zaXQucHkiLCBsaW5lIDQ3NCwgaW4g X3Byb3RvX2ZhaWxlZAogICAgZi50cmFwKEJhZEhhbmRzaGFrZSwgZGVmZXIuQ2FuY2VsbGVkRXJy b3IpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv cHl0aG9uL2ZhaWx1cmUucHkiLCBsaW5lIDQ2MCwgaW4gdHJhcAogICAgc2VsZi5yYWlzZUV4Y2Vw dGlvbigpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvcHl0aG9uL2ZhaWx1cmUucHkiLCBsaW5lIDQ4OCwgaW4gcmFpc2VFeGNlcHRpb24KICAgIHJh aXNlIHNlbGYudmFsdWUud2l0aF90cmFjZWJhY2soc2VsZi50YikKd29ybWhvbGUudGVzdC50ZXN0 X3RyYW5zaXQuUmFuZG9tRXJyb3I6IGJvb20xCgpvawp0ZXN0X29uZV9mYWlsX29uZV9zdWNjZXNz ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5JbmJvdW5kQ29ubmVjdGlvbkZhY3RvcnkpCnRl c3Rfb25lX2ZhaWxfb25lX3N1Y2Nlc3MgLi4uIG9rCnRlc3Rfc3VjY2VzcyAod29ybWhvbGUudGVz dC50ZXN0X3RyYW5zaXQuSW5ib3VuZENvbm5lY3Rpb25GYWN0b3J5KQp0ZXN0X3N1Y2Nlc3MgLi4u IG9rCnRlc3RfZ2V0X2RpcmVjdF9oaW50cyAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuTGlz dGVuZXIpCnRlc3RfZ2V0X2RpcmVjdF9oaW50cyAuLi4gb2sKdGVzdF9saXN0ZW5lciAod29ybWhv bGUudGVzdC50ZXN0X3RyYW5zaXQuTGlzdGVuZXIpCnRlc3RfbGlzdGVuZXIgLi4uIG9rCnRlc3Rf YWxsb2NhdGVfcG9ydCAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuTWlzYykKdGVzdF9hbGxv Y2F0ZV9wb3J0IC4uLiBvawp0ZXN0X2FsbG9jYXRlX3BvcnRfbm9fcmV1c2VhZGRyICh3b3JtaG9s ZS50ZXN0LnRlc3RfdHJhbnNpdC5NaXNjKQp0ZXN0X2FsbG9jYXRlX3BvcnRfbm9fcmV1c2VhZGRy IC4uLiBvawp0ZXN0X3N1Y2Nlc3MgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0Lk91dGJvdW5k Q29ubmVjdGlvbkZhY3RvcnkpCnRlc3Rfc3VjY2VzcyAuLi4gb2sKdGVzdF9uZXcgKHdvcm1ob2xl LnRlc3QudGVzdF90cmFuc2l0LlJlbGF5SGFuZHNoYWtlKQp0ZXN0X25ldyAuLi4gb2sKdGVzdF9v bGQgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LlJlbGF5SGFuZHNoYWtlKQp0ZXN0X29sZCAu Li4gb2sKdGVzdF9ub19jb250ZW5kZXJzICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5UcmFu c2l0KQp0ZXN0X25vX2NvbnRlbmRlcnMgLi4uIG9rCnRlc3Rfbm9fZGlyZWN0X2hpbnRzICh3b3Jt aG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5UcmFuc2l0KQp0ZXN0X25vX2RpcmVjdF9oaW50cyAuLi4g b2sKdGVzdF9wcmlvcml0aWVzICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5UcmFuc2l0KQp0 ZXN0X3ByaW9yaXRpZXMgLi4uIG9rCnRlc3Rfc3VjY2Vzc19kaXJlY3QgKHdvcm1ob2xlLnRlc3Qu dGVzdF90cmFuc2l0LlRyYW5zaXQpCnRlc3Rfc3VjY2Vzc19kaXJlY3QgLi4uIG9rCi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9faGludHMucHk6OTE6IERlcHJlY2F0aW9uV2FybmluZzogUGFzc2luZyBI b3N0bmFtZUVuZHBvaW50IGEgcmVhY3RvciB0aGF0IGRvZXMgbm90IHByb3ZpZGUgSVJlYWN0b3JQ bHVnZ2FibGVOYW1lUmVzb2x2ZXIgKG1vY2subW9jay5Nb2NrKSB3YXMgZGVwcmVjYXRlZCBpbiBU d2lzdGVkIDE3LjUuMDsgcGxlYXNlIHVzZSBhIHJlYWN0b3IgdGhhdCBwcm92aWRlcyBJUmVhY3Rv clBsdWdnYWJsZU5hbWVSZXNvbHZlciBpbnN0ZWFkCiAgcmV0dXJuIEhvc3RuYW1lRW5kcG9pbnQo cmVhY3RvciwgaGludC5ob3N0bmFtZSwgaGludC5wb3J0KQp0ZXN0X3N1Y2Nlc3NfZGlyZWN0X3Rv ciAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuVHJhbnNpdCkKdGVzdF9zdWNjZXNzX2RpcmVj dF90b3IgLi4uIG9rCnRlc3Rfc3VjY2Vzc19kaXJlY3RfdG9yX3JlbGF5ICh3b3JtaG9sZS50ZXN0 LnRlc3RfdHJhbnNpdC5UcmFuc2l0KQp0ZXN0X3N1Y2Nlc3NfZGlyZWN0X3Rvcl9yZWxheSAuLi4g b2sKdGVzdF93YWl0X2Zvcl9yZWxheSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuVHJhbnNp dCkKdGVzdF93YWl0X2Zvcl9yZWxheSAuLi4gb2sKdGVzdF9tYWtlX2NvZGUgKHdvcm1ob2xlLnRl c3QudGVzdF94ZmVyX3V0aWwuWGZlcikKdGVzdF9tYWtlX2NvZGUgLi4uIEVSUk9SCnRlc3Rfb25f Y29kZSAod29ybWhvbGUudGVzdC50ZXN0X3hmZXJfdXRpbC5YZmVyKQp0ZXN0X29uX2NvZGUgLi4u IFVuaGFuZGxlZCBlcnJvciBpbiBEZWZlcnJlZDoKClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwog ICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X3hmZXJfdXRpbC5weSIsIGxpbmUgMzYsIGluIHRlc3Rfb25fY29kZQogICAgZDIg PSB4ZmVyX3V0aWwucmVjZWl2ZSgKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTYxMywgaW4gdW53aW5k R2VuZXJhdG9yCiAgICByZXR1cm4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdlbikKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUyOSwgaW4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzCiAg ICBfaW5saW5lQ2FsbGJhY2tzKE5vbmUsIGcsIHN0YXR1cykKLS0tIDxleGNlcHRpb24gY2F1Z2h0 IGhlcmU+IC0tLQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tz CiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS94ZmVyX3V0aWwucHkiLCBsaW5lIDQ2LCBpbiByZWNlaXZlCiAgICB3aCA9IHdvcm1ob2xlLmNy ZWF0ZShhcHBpZCwgcmVsYXlfdXJsLCByZWFjdG9yLCB0b3I9dG9yKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBC b3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRf dmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9z cz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0 dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAg c2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNl bGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2 b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYu X19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5k ZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYu X2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9p bnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYu X21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGlu ZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihk ZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0 dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2 YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29k ZSgqdmFsdWVzKQpidWlsdGlucy5UeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKRVJST1IKRVJST1IKdGVzdF94ZmVyICh3b3JtaG9sZS50ZXN0LnRlc3Rf eGZlcl91dGlsLlhmZXIpCnRlc3RfeGZlciAuLi4gRVJST1IKdGVzdF9idWlsZF9jb21wbGV0aW9u cyAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLkNvbXBsZXRpb24pCnRlc3RfYnVpbGRf Y29tcGxldGlvbnMgLi4uIG9rCnRlc3RfY2FsbCAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxl dGVyLkNvbXBsZXRpb24pCnRlc3RfY2FsbCAuLi4gb2sKdGVzdF9pbmNvbXBsZXRlX2NvZGUgKHdv cm1ob2xlLnRlc3QudGVzdF9ybGNvbXBsZXRlci5Db21wbGV0aW9uKQp0ZXN0X2luY29tcGxldGVf Y29kZSAuLi4gb2sKdGVzdF9yb2xsYmFja19uYW1lcGxhdGVfZHVyaW5nX2NvbXBsZXRpb24gKHdv cm1ob2xlLnRlc3QudGVzdF9ybGNvbXBsZXRlci5Db21wbGV0aW9uKQp0ZXN0X3JvbGxiYWNrX25h bWVwbGF0ZV9kdXJpbmdfY29tcGxldGlvbiAuLi4gb2sKdGVzdF9yb2xsYmFja19uYW1lcGxhdGVf ZHVyaW5nX2ZpbmlzaCAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLkNvbXBsZXRpb24p CnRlc3Rfcm9sbGJhY2tfbmFtZXBsYXRlX2R1cmluZ19maW5pc2ggLi4uIG9rCnRlc3Rfc2ltcGxl ICh3b3JtaG9sZS50ZXN0LnRlc3Rfcmxjb21wbGV0ZXIuQ29tcGxldGlvbikKdGVzdF9zaW1wbGUg Li4uIG9rCnRlc3Rfd2Fybl9yZWFkbGluZSAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVy LkNvbXBsZXRpb24pCnRlc3Rfd2Fybl9yZWFkbGluZSAuLi4gb2sKdGVzdF93cmFwX2Vycm9yICh3 b3JtaG9sZS50ZXN0LnRlc3Rfcmxjb21wbGV0ZXIuQ29tcGxldGlvbikKdGVzdF93cmFwX2Vycm9y IC4uLiBvawp0ZXN0X3dyYXBwZXIgKHdvcm1ob2xlLnRlc3QudGVzdF9ybGNvbXBsZXRlci5JbnB1 dCkKdGVzdF93cmFwcGVyIC4uLiBvawp0ZXN0X2J5dGVzICh3b3JtaG9sZS50ZXN0LnRlc3Rfcmxj b21wbGV0ZXIuU3luYykKdGVzdF9ieXRlcyAuLi4gb2sKdGVzdF9saWJlZGl0ICh3b3JtaG9sZS50 ZXN0LnRlc3Rfcmxjb21wbGV0ZXIuU3luYykKdGVzdF9saWJlZGl0IC4uLiBVbmhhbmRsZWQgZXJy b3IgaW4gRGVmZXJyZWQ6CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv ZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcu c2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF94ZmVy X3V0aWwucHkiLCBsaW5lIDQ5LCBpbiB0ZXN0X21ha2VfY29kZQogICAgZDEgPSB4ZmVyX3V0aWwu c2VuZCgKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTYxMywgaW4gdW53aW5kR2VuZXJhdG9yCiAgICBy ZXR1cm4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdlbikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgMTUyOSwgaW4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzCiAgICBfaW5saW5lQ2FsbGJh Y2tzKE5vbmUsIGcsIHN0YXR1cykKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBn LnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS94ZmVyX3V0aWwucHki LCBsaW5lIDExNiwgaW4gc2VuZAogICAgd2ggPSB3b3JtaG9sZS5jcmVhdGUoYXBwaWQsIHJlbGF5 X3VybCwgcmVhY3RvciwgdG9yPXRvcikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29y bWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxh eV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAi PGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4g X19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwog ICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19i b3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6 dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUg IjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29u bmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0 X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUg ODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNv bm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5l IDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25u ZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9f CiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQw LCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5 Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRp bnMuVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKClVu aGFuZGxlZCBlcnJvciBpbiBEZWZlcnJlZDoKClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAg cmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVz dC90ZXN0X3hmZXJfdXRpbC5weSIsIGxpbmUgMTcsIGluIHRlc3RfeGZlcgogICAgZDIgPSB4ZmVy X3V0aWwucmVjZWl2ZShyZWFjdG9yLCBBUFBJRCwgc2VsZi5yZWxheXVybCwgY29kZSkKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTYxMywgaW4gdW53aW5kR2VuZXJhdG9yCiAgICByZXR1cm4gX2NhbmNl bGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdlbikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUyOSwgaW4g X2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzCiAgICBfaW5saW5lQ2FsbGJhY2tzKE5vbmUsIGcs IHN0YXR1cykKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5Iiwg bGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS94ZmVyX3V0aWwucHkiLCBsaW5lIDQ2LCBp biByZWNlaXZlCiAgICB3aCA9IHdvcm1ob2xlLmNyZWF0ZShhcHBpZCwgcmVsYXlfdXJsLCByZWFj dG9yLCB0b3I9dG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIs IGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBw aWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2Vu ZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwog ICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9i dWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBs aW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVj dG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdl bmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+Iiwg bGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZh aWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4g d2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWls QWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBk b0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29y YXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBs YXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpidWlsdGlucy5UeXBlRXJy b3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKRVJST1IKRVJST1IK dGVzdF9ub19yZWFkbGluZSAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLlN5bmMpCnRl c3Rfbm9fcmVhZGxpbmUgLi4uIG9rCnRlc3RfcmVhZGxpbmUgKHdvcm1ob2xlLnRlc3QudGVzdF9y bGNvbXBsZXRlci5TeW5jKQp0ZXN0X3JlYWRsaW5lIC4uLiBvawp0ZXN0X3JlYWRsaW5lX25vX2Rv Y3N0cmluZyAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLlN5bmMpCnRlc3RfcmVhZGxp bmVfbm9fZG9jc3RyaW5nIC4uLiBvawp0ZXN0X3JlY2VpdmUgKHdvcm1ob2xlLnRlc3QudGVzdF9h cmdzLkNvbmZpZykKdGVzdF9yZWNlaXZlIC4uLiBvawp0ZXN0X3NlbmQgKHdvcm1ob2xlLnRlc3Qu dGVzdF9hcmdzLkNvbmZpZykKdGVzdF9zZW5kIC4uLiBvawp0ZXN0X2FjY2VwdF9maWxlICh3b3Jt aG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X2FjY2VwdF9maWxlIC4uLiBvawp0ZXN0 X2FwcGlkICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X2FwcGlkIC4uLiBv awp0ZXN0X2Jhc2VsaW5lICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X2Jh c2VsaW5lIC4uLiBvawp0ZXN0X2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlJlY2VpdmUp CnRlc3RfY29kZSAuLi4gb2sKdGVzdF9jb2RlX2xlbmd0aCAod29ybWhvbGUudGVzdC50ZXN0X2Fy Z3MuUmVjZWl2ZSkKdGVzdF9jb2RlX2xlbmd0aCAuLi4gb2sKdGVzdF9kdW1wX3RpbWluZyAod29y bWhvbGUudGVzdC50ZXN0X2FyZ3MuUmVjZWl2ZSkKdGVzdF9kdW1wX3RpbWluZyAuLi4gb2sKdGVz dF9oaWRlX3Byb2dyZXNzICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X2hp ZGVfcHJvZ3Jlc3MgLi4uIG9rCnRlc3Rfbm9saXN0ZW4gKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdz LlJlY2VpdmUpCnRlc3Rfbm9saXN0ZW4gLi4uIG9rCnRlc3Rfb25seV90ZXh0ICh3b3JtaG9sZS50 ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X29ubHlfdGV4dCAuLi4gb2sKdGVzdF9vdXRwdXRf ZmlsZSAod29ybWhvbGUudGVzdC50ZXN0X2FyZ3MuUmVjZWl2ZSkKdGVzdF9vdXRwdXRfZmlsZSAu Li4gb2sKdGVzdF9yZWxheV9lbnZfdmFyICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZl KQp0ZXN0X3JlbGF5X2Vudl92YXIgLi4uIG9rCnRlc3RfdG9yICh3b3JtaG9sZS50ZXN0LnRlc3Rf YXJncy5SZWNlaXZlKQp0ZXN0X3RvciAuLi4gb2sKdGVzdF90cmFuc2l0X2Vudl92YXIgKHdvcm1o b2xlLnRlc3QudGVzdF9hcmdzLlJlY2VpdmUpCnRlc3RfdHJhbnNpdF9lbnZfdmFyIC4uLiBvawp0 ZXN0X3ZlcmlmeSAod29ybWhvbGUudGVzdC50ZXN0X2FyZ3MuUmVjZWl2ZSkKdGVzdF92ZXJpZnkg Li4uIG9rCnRlc3RfemVyb21vZGUgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlJlY2VpdmUpCnRl c3RfemVyb21vZGUgLi4uIG9rCnRlc3RfYXBwaWQgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlNl bmQpCnRlc3RfYXBwaWQgLi4uIG9rCnRlc3RfYmFzZWxpbmUgKHdvcm1ob2xlLnRlc3QudGVzdF9h cmdzLlNlbmQpCnRlc3RfYmFzZWxpbmUgLi4uIG9rCnRlc3RfY29kZSAod29ybWhvbGUudGVzdC50 ZXN0X2FyZ3MuU2VuZCkKdGVzdF9jb2RlIC4uLiBvawp0ZXN0X2NvZGVfbGVuZ3RoICh3b3JtaG9s ZS50ZXN0LnRlc3RfYXJncy5TZW5kKQp0ZXN0X2NvZGVfbGVuZ3RoIC4uLiBvawp0ZXN0X2R1bXBf dGltaW5nICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5TZW5kKQp0ZXN0X2R1bXBfdGltaW5nIC4u LiBvawp0ZXN0X2ZpbGUgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlNlbmQpCnRlc3RfZmlsZSAu Li4gb2sKdGVzdF9oaWRlX3Byb2dyZXNzICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5TZW5kKQp0 ZXN0X2hpZGVfcHJvZ3Jlc3MgLi4uIG9rCnRlc3Rfbm9saXN0ZW4gKHdvcm1ob2xlLnRlc3QudGVz dF9hcmdzLlNlbmQpCnRlc3Rfbm9saXN0ZW4gLi4uIG9rCnRlc3RfcmVsYXlfZW52X3ZhciAod29y bWhvbGUudGVzdC50ZXN0X2FyZ3MuU2VuZCkKdGVzdF9yZWxheV9lbnZfdmFyIC4uLiBvawp0ZXN0 X3RleHQgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlNlbmQpCnRlc3RfdGV4dCAuLi4gb2sKdGVz dF90b3IgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlNlbmQpCnRlc3RfdG9yIC4uLiBvawp0ZXN0 X3RyYW5zaXRfZW52X3ZhciAod29ybWhvbGUudGVzdC50ZXN0X2FyZ3MuU2VuZCkKdGVzdF90cmFu c2l0X2Vudl92YXIgLi4uIG9rCnRlc3RfdmVyaWZ5ICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5T ZW5kKQp0ZXN0X3ZlcmlmeSAuLi4gb2sKdGVzdF96ZXJvbW9kZSAod29ybWhvbGUudGVzdC50ZXN0 X2FyZ3MuU2VuZCkKdGVzdF96ZXJvbW9kZSAuLi4gb2sKdGVzdF9pbW1lZGlhdGUgKHdvcm1ob2xl LnRlc3QudGVzdF9qb3VybmFsLkpvdXJuYWwpCnRlc3RfaW1tZWRpYXRlIC4uLiBvawp0ZXN0X2pv dXJuYWwgKHdvcm1ob2xlLnRlc3QudGVzdF9qb3VybmFsLkpvdXJuYWwpCnRlc3Rfam91cm5hbCAu Li4gb2sKdGVzdF90b3IgKHdvcm1ob2xlLnRlc3QudGVzdF90b3JfbWFuYWdlci5Tb2Nrc09ubHkp CnRlc3RfdG9yIC4uLiBvawp0ZXN0X2JhZF9hcmdzICh3b3JtaG9sZS50ZXN0LnRlc3RfdG9yX21h bmFnZXIuVG9yKQp0ZXN0X2JhZF9hcmdzIC4uLiBvawp0ZXN0X2Nvbm5lY3QgKHdvcm1ob2xlLnRl c3QudGVzdF90b3JfbWFuYWdlci5Ub3IpCnRlc3RfY29ubmVjdCAuLi4gb2sKdGVzdF9jb25uZWN0 X2N1c3RvbV9jb250cm9sX3BvcnQgKHdvcm1ob2xlLnRlc3QudGVzdF90b3JfbWFuYWdlci5Ub3Ip CnRlc3RfY29ubmVjdF9jdXN0b21fY29udHJvbF9wb3J0IC4uLiBvawp0ZXN0X2Nvbm5lY3RfY3Vz dG9tX2NvbnRyb2xfcG9ydF9mYWlscyAod29ybWhvbGUudGVzdC50ZXN0X3Rvcl9tYW5hZ2VyLlRv cikKdGVzdF9jb25uZWN0X2N1c3RvbV9jb250cm9sX3BvcnRfZmFpbHMgLi4uIG9rCnRlc3RfY29u bmVjdF9mYWlscyAod29ybWhvbGUudGVzdC50ZXN0X3Rvcl9tYW5hZ2VyLlRvcikKdGVzdF9jb25u ZWN0X2ZhaWxzIC4uLiBvawp0ZXN0X2xhdW5jaCAod29ybWhvbGUudGVzdC50ZXN0X3Rvcl9tYW5h Z2VyLlRvcikKdGVzdF9sYXVuY2ggLi4uIG9rCnRlc3Rfbm9fdHh0b3Jjb24gKHdvcm1ob2xlLnRl c3QudGVzdF90b3JfbWFuYWdlci5Ub3IpCnRlc3Rfbm9fdHh0b3Jjb24gLi4uIG9rCnRlc3RfZW5j b2RlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3BhcnNlLlBhcnNlKQp0ZXN0X2VuY29kZSAu Li4gb2sKdGVzdF9wYXJzZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9wYXJzZS5QYXJzZSkK dGVzdF9wYXJzZSAuLi4gb2sKdGVzdF9iZTQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5j b2RpbmcuRW5jb2RpbmcpCnRlc3RfYmU0IC4uLiBvawp0ZXN0X2Vhcmx5X2ZhaWwgKHdvcm1ob2xl LnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9pbnRzLkNvbm5lY3RvcikKdGVzdF9lYXJseV9mYWlsIC4u LiBvawp0ZXN0X2Vhcmx5X3N1Y2NlZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9p bnRzLkNvbm5lY3RvcikKdGVzdF9lYXJseV9zdWNjZWVkIC4uLiBvawp0ZXN0X2xhdGVfZmFpbCAo d29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9lbmRwb2ludHMuQ29ubmVjdG9yKQp0ZXN0X2xhdGVf ZmFpbCAuLi4gb2sKdGVzdF9sYXRlX3N1Y2NlZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rf ZW5kcG9pbnRzLkNvbm5lY3RvcikKdGVzdF9sYXRlX3N1Y2NlZWQgLi4uIG9rCnRlc3RfZWFybHlf ZmFpbCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9lbmRwb2ludHMuQ29udHJvbCkKdGVzdF9l YXJseV9mYWlsIC4uLiBvawp0ZXN0X2Vhcmx5X3N1Y2NlZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRl LnRlc3RfZW5kcG9pbnRzLkNvbnRyb2wpCnRlc3RfZWFybHlfc3VjY2VlZCAuLi4gb2sKdGVzdF9s YXRlX2ZhaWwgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9pbnRzLkNvbnRyb2wpCnRl c3RfbGF0ZV9mYWlsIC4uLiBvawp0ZXN0X2xhdGVfc3VjY2VlZCAod29ybWhvbGUudGVzdC5kaWxh dGUudGVzdF9lbmRwb2ludHMuQ29udHJvbCkKdGVzdF9sYXRlX3N1Y2NlZWQgLi4uIG9rCnJ1blRl c3QgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9pbnRzLkVuZHBvaW50cykKSWYgbm8g Q3ttZXRob2ROYW1lfSBhcmd1bWVudCBpcyBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCBMe3J1 bn0gd2lsbCAuLi4gb2sKdGVzdF9lYXJseV9mYWlsICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2VuZHBvaW50cy5MaXN0ZW5lcikKdGVzdF9lYXJseV9mYWlsIC4uLiBvawp0ZXN0X2Vhcmx5X3N1 Y2NlZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9pbnRzLkxpc3RlbmVyKQp0ZXN0 X2Vhcmx5X3N1Y2NlZWQgLi4uIG9rCnRlc3RfbGF0ZV9mYWlsICh3b3JtaG9sZS50ZXN0LmRpbGF0 ZS50ZXN0X2VuZHBvaW50cy5MaXN0ZW5lcikKdGVzdF9sYXRlX2ZhaWwgLi4uIG9rCnRlc3RfbGF0 ZV9zdWNjZWVkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2VuZHBvaW50cy5MaXN0ZW5lcikK dGVzdF9sYXRlX3N1Y2NlZWQgLi4uIG9rCnRlc3RfZGVzY3JpYmVfaW5ib3VuZCAod29ybWhvbGUu dGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuRGVzY3JpYmUpCnRlc3RfZGVzY3JpYmVfaW5ib3Vu ZCAuLi4gb2sKdGVzdF9idWlsZCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3Iu SGFuZHNoYWtlKQp0ZXN0X2J1aWxkIC4uLiBvawp0ZXN0X2J1aWxkICh3b3JtaG9sZS50ZXN0LmRp bGF0ZS50ZXN0X2Nvbm5lY3Rvci5JbmJvdW5kKQp0ZXN0X2J1aWxkIC4uLiBvawp0ZXN0X25vX3Jl bGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5PdXRib3VuZCkKdGVzdF9u b19yZWxheSAuLi4gb2sKdGVzdF93aXRoX3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Nvbm5lY3Rvci5PdXRib3VuZCkKdGVzdF93aXRoX3JlbGF5IC4uLiBvawp0ZXN0X2xhdGUgKHdv cm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlJhY2UpCnRlc3RfbGF0ZSAuLi4gRVJS T1IKdGVzdF9vbmVfZm9sbG93ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9y LlJhY2UpCnRlc3Rfb25lX2ZvbGxvd2VyIC4uLiBFUlJPUgp0ZXN0X29uZV9sZWFkZXIgKHdvcm1o b2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlJhY2UpCnRlc3Rfb25lX2xlYWRlciAuLi4g RVJST1IKdGVzdF9zdG9wICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5SYWNl KQp0ZXN0X3N0b3AgLi4uIEVSUk9SCnRlc3RfYWRkX3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0 ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X2FkZF9yZWxheSAuLi4gRVJST1IK dGVzdF9iYXNpYyAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5l Y3RvcikKdGVzdF9iYXNpYyAuLi4gRVJST1IKdGVzdF9idWlsZCAod29ybWhvbGUudGVzdC5kaWxh dGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9idWlsZCAuLi4gb2sKdGVzdF9i dWlsZF9ub2lzZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5l Y3RvcikKdGVzdF9idWlsZF9ub2lzZSAuLi4gc2tpcHBlZCAnbm9pc2Vwcm90b2NvbCB1bmF2YWls YWJsZScKdGVzdF9idWlsZF9wcm90b2NvbF9mb2xsb3dlciAod29ybWhvbGUudGVzdC5kaWxhdGUu dGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9idWlsZF9wcm90b2NvbF9mb2xsb3dl ciAuLi4gb2sKdGVzdF9idWlsZF9wcm90b2NvbF9sZWFkZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRl LnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3RfYnVpbGRfcHJvdG9jb2xfbGVhZGVy IC4uLiBvawp0ZXN0X2Nvbm5lY3Rpb25fYWJpbGl0aWVzICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50 ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X2Nvbm5lY3Rpb25fYWJpbGl0aWVzIC4u LiBvawp0ZXN0X2VtcHR5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0 Q29ubmVjdG9yKQp0ZXN0X2VtcHR5IC4uLiBFUlJPUgp0ZXN0X2luaXRpYWxfcmVsYXkgKHdvcm1o b2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3RfaW5pdGlh bF9yZWxheSAuLi4gb2sKdGVzdF9saXN0ZW4gKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29u bmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3RfbGlzdGVuIC4uLiBvawp0ZXN0X2xpc3Rlbl9hZGRy ZXNzZXMgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3Ip CnRlc3RfbGlzdGVuX2FkZHJlc3NlcyAuLi4gb2sKdGVzdF9saXN0ZW5fYnV0X3RvciAod29ybWhv bGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9saXN0ZW5f YnV0X3RvciAuLi4gb2sKdGVzdF9ub19saXN0ZW4gKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rf Y29ubmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3Rfbm9fbGlzdGVuIC4uLiBvawp0ZXN0X3ByaW9y aXRpZXMgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3Ip CnRlc3RfcHJpb3JpdGllcyAuLi4gb2sKdGVzdF9yZWxheV9kZWxheSAod29ybWhvbGUudGVzdC5k aWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9yZWxheV9kZWxheSAuLi4g RVJST1IKdGVzdF9zY2hlZHVsZV9jb25uZWN0aW9uX25vX3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRp bGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X3NjaGVkdWxlX2Nvbm5lY3Rp b25fbm9fcmVsYXkgLi4uIG9rCnRlc3Rfc2NoZWR1bGVfY29ubmVjdGlvbl9yZWxheSAod29ybWhv bGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9zY2hlZHVs ZV9jb25uZWN0aW9uX3JlbGF5IC4uLiBvawp0ZXN0X3N0YXJ0X2xpc3RlbiAod29ybWhvbGUudGVz dC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9zdGFydF9saXN0ZW4g Li4uIFVuaGFuZGxlZCBFcnJvcgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0b3IucHkiLCBsaW5lIDIxOSwgaW4gdGVzdF9zdGFydF9saXN0ZW4K ICAgIGQuY2FsbGJhY2sobHApCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDQ2MCwgaW4gY2FsbGJhY2sK ICAgIHNlbGYuX3N0YXJ0UnVuQ2FsbGJhY2tzKHJlc3VsdCkKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUg NTY4LCBpbiBfc3RhcnRSdW5DYWxsYmFja3MKICAgIHNlbGYuX3J1bkNhbGxiYWNrcygpCi0tLSA8 ZXhjZXB0aW9uIGNhdWdodCBoZXJlPiAtLS0KICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgNjU0LCBpbiBf cnVuQ2FsbGJhY2tzCiAgICBjdXJyZW50LnJlc3VsdCA9IGNhbGxiYWNrKGN1cnJlbnQucmVzdWx0 LCAqYXJncywgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nv bm5lY3Rvci5weSIsIGxpbmUgMzA1LCBpbiBfbGlzdGVuaW5nCiAgICBzZWxmLmxpc3RlbmVyX3Jl YWR5KGRpcmVjdF9oaW50cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRl ZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRl Y29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRl bXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpidWlsdGlucy5UeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKRkFJTApFUlJP Ugp0ZXN0X3N0YXJ0X3N0b3AgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlRl c3RDb25uZWN0b3IpCnRlc3Rfc3RhcnRfc3RvcCAuLi4gRVJST1IKdGVzdF90b3Jfbm9fbWFuYWdl ciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVz dF90b3Jfbm9fbWFuYWdlciAuLi4gRVJST1IKdGVzdF90b3Jfd2l0aF9tYW5hZ2VyICh3b3JtaG9s ZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X3Rvcl93aXRo X21hbmFnZXIgLi4uIEVSUk9SCnRlc3QxICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5l Y3QuQ29ubmVjdCkKdGVzdDEgLi4uIHNraXBwZWQgJ25vaXNlcHJvdG9jb2wgdW5hdmFpbGFibGUn CnRlc3RfYmFkX3Byb2xvZ3VlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rpb24u Q29ubmVjdGlvbikKdGVzdF9iYWRfcHJvbG9ndWUgLi4uIFVuaGFuZGxlZCBFcnJvcgpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4g bWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCph LCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nv bm5lY3Rpb24ucHkiLCBsaW5lIDM4LCBpbiB0ZXN0X2JhZF9wcm9sb2d1ZQogICAgYy5tYWtlQ29u bmVjdGlvbih0KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9u CiAgICBzZWxmLmNvbm5lY3Rpb25NYWRlKCkKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0t LQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIs IGxpbmUgNTk0LCBpbiBjb25uZWN0aW9uTWFkZQogICAgc2VsZi5fcmVjb3JkLnNldF9yb2xlX2xl YWRlcigpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBp bnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3RfZm9s bG93ZXJfY29tYmluZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25u ZWN0aW9uKQp0ZXN0X2ZvbGxvd2VyX2NvbWJpbmVkIC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2Vi YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGlu IG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHki LCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigq YSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9j b25uZWN0aW9uLnB5IiwgbGluZSAyNDgsIGluIHRlc3RfZm9sbG93ZXJfY29tYmluZWQKICAgIGMu bWFrZUNvbm5lY3Rpb24odCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9wcm90b2NvbC5weSIsIGxpbmUgNTE0LCBpbiBtYWtlQ29u bmVjdGlvbgogICAgc2VsZi5jb25uZWN0aW9uTWFkZSgpCi0tLSA8ZXhjZXB0aW9uIGNhdWdodCBo ZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rp b24ucHkiLCBsaW5lIDU5NiwgaW4gY29ubmVjdGlvbk1hZGUKICAgIHNlbGYuX3JlY29yZC5zZXRf cm9sZV9mb2xsb3dlcigpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYg ZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNv cmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBs aW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1w bGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVy cm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9S CnRlc3RfaGFzaGFibGUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25u ZWN0aW9uKQp0ZXN0X2hhc2hhYmxlIC4uLiBvawp0ZXN0X25vX3JlbGF5X2ZvbGxvd2VyICh3b3Jt aG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9ub19yZWxh eV9mb2xsb3dlciAuLi4gVW5oYW5kbGVkIEVycm9yClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDE4MywgaW4gdGVzdF9u b19yZWxheV9mb2xsb3dlcgogICAgcmV0dXJuIHNlbGYuX3Rlc3Rfbm9fcmVsYXkoRk9MTE9XRVIp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdGlv bi5weSIsIGxpbmUgNjksIGluIF90ZXN0X25vX3JlbGF5CiAgICBjLm1ha2VDb25uZWN0aW9uKHQp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50 ZXJuZXQvcHJvdG9jb2wucHkiLCBsaW5lIDUxNCwgaW4gbWFrZUNvbm5lY3Rpb24KICAgIHNlbGYu Y29ubmVjdGlvbk1hZGUoKQotLS0gPGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9jb25uZWN0aW9uLnB5IiwgbGluZSA1OTYs IGluIGNvbm5lY3Rpb25NYWRlCiAgICBzZWxmLl9yZWNvcmQuc2V0X3JvbGVfZm9sbG93ZXIoKQog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhv ZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoq a3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4g Y29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1 bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNv ZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUK ICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpCmJ1aWx0aW5zLlR5cGVFcnJvcjogYW4gaW50ZWdlciBp cyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgpFUlJPUgpFUlJPUgp0ZXN0X25vX3JlbGF5X2xl YWRlciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0aW9uLkNvbm5lY3Rpb24pCnRl c3Rfbm9fcmVsYXlfbGVhZGVyIC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdGlvbi5weSIsIGxpbmUgMTgwLCBp biB0ZXN0X25vX3JlbGF5X2xlYWRlcgogICAgcmV0dXJuIHNlbGYuX3Rlc3Rfbm9fcmVsYXkoTEVB REVSKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5l Y3Rpb24ucHkiLCBsaW5lIDY5LCBpbiBfdGVzdF9ub19yZWxheQogICAgYy5tYWtlQ29ubmVjdGlv bih0KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBz ZWxmLmNvbm5lY3Rpb25NYWRlKCkKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIsIGxpbmUg NTk0LCBpbiBjb25uZWN0aW9uTWFkZQogICAgc2VsZi5fcmVjb3JkLnNldF9yb2xlX2xlYWRlcigp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3RfcmVsYXkgKHdv cm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25uZWN0aW9uKQp0ZXN0X3JlbGF5 IC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVy bmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYo KmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdz U3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5IiwgbGluZSAxODgsIGluIHRl c3RfcmVsYXkKICAgIGMubWFrZUNvbm5lY3Rpb24odCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9wcm90b2NvbC5weSIsIGxpbmUg NTE0LCBpbiBtYWtlQ29ubmVjdGlvbgogICAgc2VsZi5jb25uZWN0aW9uTWFkZSgpCi0tLSA8ZXhj ZXB0aW9uIGNhdWdodCBoZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Rp bGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5MSwgaW4gY29ubmVjdGlvbk1hZGUKICAgIGZy YW1lci51c2VfcmVsYXkoc2VsZi5fcmVsYXlfaGFuZHNoYWtlKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIz NCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29y YXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4g ZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2 YWx1ZXMpCmJ1aWx0aW5zLlR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5 cGUgYnl0ZXMpCgpFUlJPUgpFUlJPUgp0ZXN0X3JlbGF5X2JhZF9yZXNwb25zZSAod29ybWhvbGUu dGVzdC5kaWxhdGUudGVzdF9jb25uZWN0aW9uLkNvbm5lY3Rpb24pCnRlc3RfcmVsYXlfYmFkX3Jl c3BvbnNlIC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5IiwgbGluZSAyMjQs IGluIHRlc3RfcmVsYXlfYmFkX3Jlc3BvbnNlCiAgICBjLm1ha2VDb25uZWN0aW9uKHQpCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv cHJvdG9jb2wucHkiLCBsaW5lIDUxNCwgaW4gbWFrZUNvbm5lY3Rpb24KICAgIHNlbGYuY29ubmVj dGlvbk1hZGUoKQotLS0gPGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9jb25uZWN0aW9uLnB5IiwgbGluZSA1OTEsIGluIGNv bm5lY3Rpb25NYWRlCiAgICBmcmFtZXIudXNlX3JlbGF5KHNlbGYuX3JlbGF5X2hhbmRzaGFrZSkK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRo b2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAq Kmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJu IGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlm dW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBj b2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2Rl CiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpidWlsdGlucy5UeXBlRXJyb3I6IGFuIGludGVnZXIg aXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKRVJST1IKRVJST1IKdGVzdF9yZWxheV9qaWx0 ZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25uZWN0aW9uKQp0ZXN0 X3JlbGF5X2ppbHRlZCAuLi4gVW5oYW5kbGVkIEVycm9yClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdGlvbi5weSIsIGxp bmUgMjExLCBpbiB0ZXN0X3JlbGF5X2ppbHRlZAogICAgYy5tYWtlQ29ubmVjdGlvbih0KQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBzZWxmLmNvbm5l Y3Rpb25NYWRlKCkKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIsIGxpbmUgNTkxLCBpbiBj b25uZWN0aW9uTWFkZQogICAgZnJhbWVyLnVzZV9yZWxheShzZWxmLl9yZWxheV9oYW5kc2hha2Up CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3RfY29udHJvbF9j aGFubmVsICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2luYm91bmQuSW5ib3VuZFRlc3QpCnRl c3RfY29udHJvbF9jaGFubmVsIC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOgpGYWlsdXJlOiB3b3JtaG9sZS5fZGlsYXRpb24uaW5ib3VuZC5EdXBs aWNhdGVPcGVuRXJyb3I6IHJlY2VpdmVkIGR1cGxpY2F0ZSBPUEVOIGZvciBiJ3NjaWQnCgpvawp0 ZXN0X29wZW5fZGF0YV9jbG9zZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9pbmJvdW5kLklu Ym91bmRUZXN0KQp0ZXN0X29wZW5fZGF0YV9jbG9zZSAuLi4gVW5oYW5kbGVkIEVycm9yClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKRmFpbHVyZTogd29ybWhvbGUuX2RpbGF0aW9u LmluYm91bmQuRHVwbGljYXRlT3BlbkVycm9yOiByZWNlaXZlZCBkdXBsaWNhdGUgT1BFTiBmb3Ig YidzY2lkJwoKVW5oYW5kbGVkIEVycm9yClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKRmFpbHVyZTogd29ybWhvbGUuX2RpbGF0aW9uLmluYm91bmQuRGF0YUZvck1pc3NpbmdTdWJj aGFubmVsRXJyb3I6IHJlY2VpdmVkIERBVEEgZm9yIG5vbi1leGlzdGVudCBzdWJjaGFubmVsIGIn c2NYWCcKClVuaGFuZGxlZCBFcnJvcgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6 CkZhaWx1cmU6IHdvcm1ob2xlLl9kaWxhdGlvbi5pbmJvdW5kLkNsb3NlRm9yTWlzc2luZ1N1YmNo YW5uZWxFcnJvcjogcmVjZWl2ZWQgQ0xPU0UgZm9yIG5vbi1leGlzdGVudCBzdWJjaGFubmVsIGIn c2NYWCcKCm9rCnRlc3RfcGF1c2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfaW5ib3VuZC5J bmJvdW5kVGVzdCkKdGVzdF9wYXVzZSAuLi4gb2sKdGVzdF9zZXFudW0gKHdvcm1ob2xlLnRlc3Qu ZGlsYXRlLnRlc3RfaW5ib3VuZC5JbmJvdW5kVGVzdCkKdGVzdF9zZXFudW0gLi4uIG9rCnRlc3Rf YnVpbGRfcmVjb3JkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91dGJvdW5k VGVzdCkKdGVzdF9idWlsZF9yZWNvcmQgLi4uIG9rCnRlc3RfY29ubmVjdGlvbl9zZW5kX3F1ZXVl ZF9wYXVzZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuT3V0Ym91bmRUZXN0 KQp0ZXN0X2Nvbm5lY3Rpb25fc2VuZF9xdWV1ZWRfcGF1c2VkIC4uLiBvawp0ZXN0X2Nvbm5lY3Rp b25fc2VuZF9xdWV1ZWRfdW5wYXVzZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91 bmQuT3V0Ym91bmRUZXN0KQp0ZXN0X2Nvbm5lY3Rpb25fc2VuZF9xdWV1ZWRfdW5wYXVzZWQgLi4u IG9rCnRlc3RfZGlzY29ubmVjdCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9vdXRib3VuZC5P dXRib3VuZFRlc3QpCnRlc3RfZGlzY29ubmVjdCAuLi4gb2sKdGVzdF9kdXBsaWNhdGVfcmVnaXN0 ZXJQcm9kdWNlciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9vdXRib3VuZC5PdXRib3VuZFRl c3QpCnRlc3RfZHVwbGljYXRlX3JlZ2lzdGVyUHJvZHVjZXIgLi4uIG9rCnRlc3Rfb3V0Ym91bmRf cXVldWUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuT3V0Ym91bmRUZXN0KQp0 ZXN0X291dGJvdW5kX3F1ZXVlIC4uLiBvawp0ZXN0X3BhdXNlICh3b3JtaG9sZS50ZXN0LmRpbGF0 ZS50ZXN0X291dGJvdW5kLk91dGJvdW5kVGVzdCkKdGVzdF9wYXVzZSAuLi4gb2sKdGVzdF9wcmVt cHRpdmVfYWNrICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91dGJvdW5kVGVz dCkKdGVzdF9wcmVtcHRpdmVfYWNrIC4uLiBvawp0ZXN0X3B1bGxfcHJvZHVjZXIgKHdvcm1ob2xl LnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuT3V0Ym91bmRUZXN0KQp0ZXN0X3B1bGxfcHJvZHVj ZXIgLi4uIG9rCnRlc3RfcmVzdW1lX2Vycm9yICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291 dGJvdW5kLk91dGJvdW5kVGVzdCkKdGVzdF9yZXN1bWVfZXJyb3IgLi4uIDxNb2NrIG5hbWU9J3Ax JyBpZD0nMTQwNzM3MzAxMzIxNjY0Jz4gZmFpbGVkLCBwcm9kdWNpbmcgd2lsbCBiZSBzdG9wcGVk OgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUg ODI1LCBpbiBhZHZhbmNlCiAgICBjYWxsLmZ1bmMoKmNhbGwuYXJncywgKipjYWxsLmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9ldmVudHVhbC5weSIsIGxpbmUgMzEsIGluIF90dXJu CiAgICBmKCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGluZSA2NzEsIGluIF90aWNr CiAgICB0YXNrT2JqLl9vbmVXb3JrVW5pdCgpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUgNTE3LCBpbiBf b25lV29ya1VuaXQKICAgIHJlc3VsdCA9IG5leHQoc2VsZi5faXRlcmF0b3IpCi0tLSA8ZXhjZXB0 aW9uIGNhdWdodCBoZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0 aW9uL291dGJvdW5kLnB5IiwgbGluZSAzNTMsIGluIF9wdWxsCiAgICBzZWxmLl9wcm9kdWNlci5y ZXN1bWVQcm9kdWNpbmcoKQogIEZpbGUgIi9nbnUvc3RvcmUvZHBqdjRseGJ2OHJiZDRpbHBicG03 dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L21vY2svbW9jay5weSIsIGxpbmUgMTA5MiwgaW4gX19jYWxsX18KICAgIHJldHVybiBfbW9ja19z ZWxmLl9tb2NrX2NhbGwoKmFyZ3MsICoqa3dhcmdzKQogIEZpbGUgIi9nbnUvc3RvcmUvZHBqdjRs eGJ2OHJiZDRpbHBicG03dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL21vY2svbW9jay5weSIsIGxpbmUgMTE0MywgaW4gX21vY2tfY2FsbAog ICAgcmFpc2UgZWZmZWN0Cndvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuUHJldGVu ZFJlc3VtcHRpb25FcnJvcjogCgpvawp0ZXN0X3NlbmRfaWZfY29ubmVjdGVkICh3b3JtaG9sZS50 ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91dGJvdW5kVGVzdCkKdGVzdF9zZW5kX2lmX2Nvbm5l Y3RlZCAuLi4gb2sKdGVzdF9zdG9wUHJvZHVjaW5nICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X291dGJvdW5kLk91dGJvdW5kVGVzdCkKdGVzdF9zdG9wUHJvZHVjaW5nIC4uLiBvawp0ZXN0X3N1 YmNoYW5uZWxfY2xvc2VkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91dGJv dW5kVGVzdCkKdGVzdF9zdWJjaGFubmVsX2Nsb3NlZCAuLi4gb2sKdGVzdF90b2xlcmF0ZV9kdXBs aWNhdGVfcGF1c2VfcmVzdW1lICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91 dGJvdW5kVGVzdCkKdGVzdF90b2xlcmF0ZV9kdXBsaWNhdGVfcGF1c2VfcmVzdW1lIC4uLiBvawp0 ZXN0X3R3b19wdWxsX3Byb2R1Y2VycyAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9vdXRib3Vu ZC5PdXRib3VuZFRlc3QpCnRlc3RfdHdvX3B1bGxfcHJvZHVjZXJzIC4uLiBvawp0ZXN0X2Vycm9y ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLlB1c2hQdWxsKQp0ZXN0X2Vycm9y IC4uLiA8TW9jayBpZD0nMTQwNzM3Mjk5OTcyNDAwJz4gZmFpbGVkLCBwcm9kdWNpbmcgd2lsbCBi ZSBzdG9wcGVkOgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5w eSIsIGxpbmUgODI1LCBpbiBhZHZhbmNlCiAgICBjYWxsLmZ1bmMoKmNhbGwuYXJncywgKipjYWxs Lmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9ldmVudHVhbC5weSIsIGxpbmUgMzEs IGluIF90dXJuCiAgICBmKCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGluZSA2NzEs IGluIF90aWNrCiAgICB0YXNrT2JqLl9vbmVXb3JrVW5pdCgpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUg NTE3LCBpbiBfb25lV29ya1VuaXQKICAgIHJlc3VsdCA9IG5leHQoc2VsZi5faXRlcmF0b3IpCi0t LSA8ZXhjZXB0aW9uIGNhdWdodCBoZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2RpbGF0aW9uL291dGJvdW5kLnB5IiwgbGluZSAzNTMsIGluIF9wdWxsCiAgICBzZWxmLl9w cm9kdWNlci5yZXN1bWVQcm9kdWNpbmcoKQogIEZpbGUgIi9nbnUvc3RvcmUvZHBqdjRseGJ2OHJi ZDRpbHBicG03dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL21vY2svbW9jay5weSIsIGxpbmUgMTA5MiwgaW4gX19jYWxsX18KICAgIHJldHVy biBfbW9ja19zZWxmLl9tb2NrX2NhbGwoKmFyZ3MsICoqa3dhcmdzKQogIEZpbGUgIi9nbnUvc3Rv cmUvZHBqdjRseGJ2OHJiZDRpbHBicG03dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL21vY2svbW9jay5weSIsIGxpbmUgMTE0OSwgaW4gX21v Y2tfY2FsbAogICAgcmVzdWx0ID0gZWZmZWN0KCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9vdXRib3VuZC5weSIsIGxpbmUgNTg0 LCBpbiA8bGFtYmRhPgogICAgcC5yZXN1bWVQcm9kdWNpbmcuc2lkZV9lZmZlY3QgPSBsYW1iZGE6 IGFjdGlvbihuZXh0KGl0KSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxh dGUvdGVzdF9vdXRib3VuZC5weSIsIGxpbmUgNTgxLCBpbiBhY3Rpb24KICAgIHJhaXNlIGkKd29y bWhvbGUudGVzdC5kaWxhdGUudGVzdF9vdXRib3VuZC5QcmV0ZW5kUmVzdW1wdGlvbkVycm9yOiAK Cm9rCnRlc3RfZXJyb3JfZHVyaW5nX3VucmVnaXN0ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRl c3Rfb3V0Ym91bmQuUHVzaFB1bGwpCnRlc3RfZXJyb3JfZHVyaW5nX3VucmVnaXN0ZXIgLi4uIDxN b2NrIGlkPScxNDA3MzczMDAwMzY5MTInPiBmYWlsZWQsIHByb2R1Y2luZyB3aWxsIGJlIHN0b3Bw ZWQ6ClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGlu ZSA4MjUsIGluIGFkdmFuY2UKICAgIGNhbGwuZnVuYygqY2FsbC5hcmdzLCAqKmNhbGwua3cpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2V2ZW50dWFsLnB5IiwgbGluZSAzMSwgaW4gX3R1 cm4KICAgIGYoKmFyZ3MsICoqa3dhcmdzKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3Rhc2sucHkiLCBsaW5lIDY3MSwgaW4gX3Rp Y2sKICAgIHRhc2tPYmouX29uZVdvcmtVbml0KCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGluZSA1MTcsIGlu IF9vbmVXb3JrVW5pdAogICAgcmVzdWx0ID0gbmV4dChzZWxmLl9pdGVyYXRvcikKLS0tIDxleGNl cHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGls YXRpb24vb3V0Ym91bmQucHkiLCBsaW5lIDM1MywgaW4gX3B1bGwKICAgIHNlbGYuX3Byb2R1Y2Vy LnJlc3VtZVByb2R1Y2luZygpCiAgRmlsZSAiL2dudS9zdG9yZS9kcGp2NGx4YnY4cmJkNGlscGJw bTd3OGJ6NjBuNGJxcS1weXRob24tbW9jay0zLjAuNS9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvbW9jay9tb2NrLnB5IiwgbGluZSAxMDkyLCBpbiBfX2NhbGxfXwogICAgcmV0dXJuIF9tb2Nr X3NlbGYuX21vY2tfY2FsbCgqYXJncywgKiprd2FyZ3MpCiAgRmlsZSAiL2dudS9zdG9yZS9kcGp2 NGx4YnY4cmJkNGlscGJwbTd3OGJ6NjBuNGJxcS1weXRob24tbW9jay0zLjAuNS9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvbW9jay9tb2NrLnB5IiwgbGluZSAxMTQ5LCBpbiBfbW9ja19jYWxs CiAgICByZXN1bHQgPSBlZmZlY3QoKmFyZ3MsICoqa3dhcmdzKQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X291dGJvdW5kLnB5IiwgbGluZSA1ODQsIGluIDxs YW1iZGE+CiAgICBwLnJlc3VtZVByb2R1Y2luZy5zaWRlX2VmZmVjdCA9IGxhbWJkYTogYWN0aW9u KG5leHQoaXQpKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0 X291dGJvdW5kLnB5IiwgbGluZSA1ODEsIGluIGFjdGlvbgogICAgcmFpc2UgaQp3b3JtaG9sZS50 ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLlByZXRlbmRSZXN1bXB0aW9uRXJyb3I6IAoKPE1vY2sg aWQ9JzE0MDczNzMwMDAzNTEzNic+IGZhaWxlZCB0byB1bnJlZ2lzdGVyIHByb2R1Y2VyOgpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUgODI1LCBp biBhZHZhbmNlCiAgICBjYWxsLmZ1bmMoKmNhbGwuYXJncywgKipjYWxsLmt3KQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9ldmVudHVhbC5weSIsIGxpbmUgMzEsIGluIF90dXJuCiAgICBm KCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGluZSA2NzEsIGluIF90aWNrCiAgICB0 YXNrT2JqLl9vbmVXb3JrVW5pdCgpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUgNTE3LCBpbiBfb25lV29y a1VuaXQKICAgIHJlc3VsdCA9IG5leHQoc2VsZi5faXRlcmF0b3IpCi0tLSA8ZXhjZXB0aW9uIGNh dWdodCBoZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL291 dGJvdW5kLnB5IiwgbGluZSAzNTgsIGluIF9wdWxsCiAgICBzZWxmLl91bnJlZ2lzdGVyKCkKICBG aWxlICIvZ251L3N0b3JlL2RwanY0bHhidjhyYmQ0aWxwYnBtN3c4Yno2MG40YnFxLXB5dGhvbi1t b2NrLTMuMC41L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9tb2NrL21vY2sucHkiLCBsaW5l IDEwOTIsIGluIF9fY2FsbF9fCiAgICByZXR1cm4gX21vY2tfc2VsZi5fbW9ja19jYWxsKCphcmdz LCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL2RwanY0bHhidjhyYmQ0aWxwYnBtN3c4Yno2 MG40YnFxLXB5dGhvbi1tb2NrLTMuMC41L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9tb2Nr L21vY2sucHkiLCBsaW5lIDExNDMsIGluIF9tb2NrX2NhbGwKICAgIHJhaXNlIGVmZmVjdAp3b3Jt aG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLlByZXRlbmRVbnJlZ2lzdGVyRXJyb3I6IAoK b2sKdGVzdF9zdGFydF9wYXVzZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQu UHVzaFB1bGwpCnRlc3Rfc3RhcnRfcGF1c2VkIC4uLiBvawp0ZXN0X3N0YXJ0X3VucGF1c2VkICh3 b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLlB1c2hQdWxsKQp0ZXN0X3N0YXJ0X3Vu cGF1c2VkIC4uLiBvawp0ZXN0X3N0YXJ0X3VucGF1c2VkX3R3b193cml0ZXMgKHdvcm1ob2xlLnRl c3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuUHVzaFB1bGwpCnRlc3Rfc3RhcnRfdW5wYXVzZWRfdHdv X3dyaXRlcyAuLi4gb2sKdGVzdF9zdG9wICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJv dW5kLlB1c2hQdWxsKQp0ZXN0X3N0b3AgLi4uIG9rCnRlc3RfZGlsYXRlX2ZpcnN0ICh3b3JtaG9s ZS50ZXN0LmRpbGF0ZS50ZXN0X21hbmFnZXIuVGVzdERpbGF0b3IpCnRlc3RfZGlsYXRlX2ZpcnN0 IC4uLiBvawp0ZXN0X2RpbGF0ZV9sYXRlciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5h Z2VyLlRlc3REaWxhdG9yKQp0ZXN0X2RpbGF0ZV9sYXRlciAuLi4gb2sKdGVzdF9kaXNqb2ludF92 ZXJzaW9ucyAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3REaWxhdG9yKQp0 ZXN0X2Rpc2pvaW50X3ZlcnNpb25zIC4uLiBFUlJPUgp0ZXN0X3BlZXJfY2Fubm90X2RpbGF0ZSAo d29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3REaWxhdG9yKQp0ZXN0X3BlZXJf Y2Fubm90X2RpbGF0ZSAuLi4gRVJST1IKdGVzdF9zdG9wX2Vhcmx5ICh3b3JtaG9sZS50ZXN0LmRp bGF0ZS50ZXN0X21hbmFnZXIuVGVzdERpbGF0b3IpCnRlc3Rfc3RvcF9lYXJseSAuLi4gb2sKdGVz dF90cmFuc2l0X3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X21hbmFnZXIuVGVzdERp bGF0b3IpCnRlc3RfdHJhbnNpdF9yZWxheSAuLi4gb2sKdGVzdF9jcmVhdGUgKHdvcm1ob2xlLnRl c3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikKdGVzdF9jcmVhdGUgLi4uIG9rCnRl c3RfZm9sbG93ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdl cikKdGVzdF9mb2xsb3dlciAuLi4gRVJST1IKdGVzdF9sZWFkZXIgKHdvcm1ob2xlLnRlc3QuZGls YXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikKdGVzdF9sZWFkZXIgLi4uIEVSUk9SCnRlc3Rf bWFrZV9zaWRlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X21hbmFnZXIuVGVzdE1hbmFnZXIp CnRlc3RfbWFrZV9zaWRlIC4uLiBvawp0ZXN0X21pcnJvciAod29ybWhvbGUudGVzdC5kaWxhdGUu dGVzdF9tYW5hZ2VyLlRlc3RNYW5hZ2VyKQp0ZXN0X21pcnJvciAuLi4gRVJST1IKdGVzdF9waW5n X3BvbmcgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikKdGVz dF9waW5nX3BvbmcgLi4uIFVuaGFuZGxlZCBFcnJvcgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNh bGwgbGFzdCk6CkZhaWx1cmU6IHdvcm1ob2xlLl9kaWxhdGlvbi5tYW5hZ2VyLlVuZXhwZWN0ZWRL Q006IAoKVW5oYW5kbGVkIEVycm9yClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToK RmFpbHVyZTogd29ybWhvbGUuX2RpbGF0aW9uLm1hbmFnZXIuVW5rbm93bk1lc3NhZ2VUeXBlOiBu b3QgcmVjb2duaXplZAoKb2sKdGVzdF9zdWJjaGFubmVsICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50 ZXN0X21hbmFnZXIuVGVzdE1hbmFnZXIpCnRlc3Rfc3ViY2hhbm5lbCAuLi4gb2sKdGVzdF91bmtu b3duX21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdl cikKdGVzdF91bmtub3duX21lc3NhZ2UgLi4uIEVSUk9SCnRlc3RfY3JlYXRlICh3b3JtaG9sZS50 ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuSGFsZkNsb3NlYWJsZSkKdGVzdF9jcmVhdGUgLi4u IEVSUk9SCnRlc3RfbG9jYWxfY2xvc2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hh bm5lbC5IYWxmQ2xvc2VhYmxlKQp0ZXN0X2xvY2FsX2Nsb3NlIC4uLiBFUlJPUgp0ZXN0X3JlbW90 ZV9jbG9zZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9zdWJjaGFubmVsLkhhbGZDbG9zZWFi bGUpCnRlc3RfcmVtb3RlX2Nsb3NlIC4uLiBFUlJPUgp0ZXN0X2Nsb3NlX2JlZm9yZV9vcGVuICh3 b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hhbm5lbEFQSSkKdGVzdF9j bG9zZV9iZWZvcmVfb3BlbiAuLi4gRVJST1IKdGVzdF9jb25zdW1lciAod29ybWhvbGUudGVzdC5k aWxhdGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3RfY29uc3VtZXIgLi4uIEVS Uk9SCnRlc3RfY3JlYXRlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3Vi Q2hhbm5lbEFQSSkKdGVzdF9jcmVhdGUgLi4uIEVSUk9SCnRlc3RfZGF0YSAod29ybWhvbGUudGVz dC5kaWxhdGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3RfZGF0YSAuLi4gRVJS T1IKdGVzdF9kYXRhX2JlZm9yZV9vcGVuICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNo YW5uZWwuU3ViQ2hhbm5lbEFQSSkKdGVzdF9kYXRhX2JlZm9yZV9vcGVuIC4uLiBFUlJPUgp0ZXN0 X2xvY2FsX2Nsb3NlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hh bm5lbEFQSSkKdGVzdF9sb2NhbF9jbG9zZSAuLi4gRVJST1IKdGVzdF9sb2NhbF9kb3VibGVfY2xv c2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0 ZXN0X2xvY2FsX2RvdWJsZV9jbG9zZSAuLi4gRVJST1IKdGVzdF9vbmNlICh3b3JtaG9sZS50ZXN0 LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hhbm5lbEFQSSkKdGVzdF9vbmNlIC4uLiBvawp0 ZXN0X3Byb2R1Y2VyICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hh bm5lbEFQSSkKdGVzdF9wcm9kdWNlciAuLi4gRVJST1IKdGVzdF9yZW1vdGVfY2xvc2UgKHdvcm1o b2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X3JlbW90 ZV9jbG9zZSAuLi4gRVJST1IKdGVzdF93cml0ZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9z dWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3Rfd3JpdGUgLi4uIEVSUk9SCnRlc3Rfd3JpdGVf d2hlbl9jbG9zaW5nICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hh bm5lbEFQSSkKdGVzdF93cml0ZV93aGVuX2Nsb3NpbmcgLi4uIEVSUk9SCnRlc3RfYmFkX2hhbmRz aGFrZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9yZWNvcmQuUmVjb3JkKQp0ZXN0X2JhZF9o YW5kc2hha2UgLi4uIEVSUk9SCnRlc3RfYmFkX21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRl LnRlc3RfcmVjb3JkLlJlY29yZCkKdGVzdF9iYWRfbWVzc2FnZSAuLi4gRVJST1IKdGVzdF9nb29k ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRlc3RfZ29vZCAuLi4g RVJST1IKdGVzdF9nb29kMiAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9yZWNvcmQuUmVjb3Jk KQp0ZXN0X2dvb2QyIC4uLiBFUlJPUgp0ZXN0X3NlbmRfcmVjb3JkICh3b3JtaG9sZS50ZXN0LmRp bGF0ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRlc3Rfc2VuZF9yZWNvcmQgLi4uIEVSUk9SCnRlc3Rf YmFkX3Byb2xvZ3VlX2xlbmd0aCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9mcmFtZXIuRnJh bWVyKQp0ZXN0X2JhZF9wcm9sb2d1ZV9sZW5ndGggLi4uIEVSUk9SCnRlc3RfYmFkX3Byb2xvZ3Vl X25ld2xpbmUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZnJhbWVyLkZyYW1lcikKdGVzdF9i YWRfcHJvbG9ndWVfbmV3bGluZSAuLi4gRVJST1IKdGVzdF9iYWRfcmVsYXkgKHdvcm1ob2xlLnRl c3QuZGlsYXRlLnRlc3RfZnJhbWVyLkZyYW1lcikKdGVzdF9iYWRfcmVsYXkgLi4uIEVSUk9SCnRl c3RfZnJhbWUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZnJhbWVyLkZyYW1lcikKdGVzdF9m cmFtZSAuLi4gRVJST1IKdGVzdF9nb29kX3Byb2xvZ3VlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50 ZXN0X2ZyYW1lci5GcmFtZXIpCnRlc3RfZ29vZF9wcm9sb2d1ZSAuLi4gRVJST1IKdGVzdF9nb29k X3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2ZyYW1lci5GcmFtZXIpCnRlc3RfZ29v ZF9yZWxheSAuLi4gRVJST1IKdGVzdF9lbmRwb2ludHMgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRl c3RfZnVsbC5FbmRwb2ludHMpCnRlc3RfZW5kcG9pbnRzIC4uLiBza2lwcGVkICdub2lzZXByb3Rv Y29sIHVuYXZhaWxhYmxlJwp0ZXN0X2NvbnRyb2wgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rf ZnVsbC5GdWxsKQp0ZXN0X2NvbnRyb2wgLi4uIHNraXBwZWQgJ25vaXNlcHJvdG9jb2wgdW5hdmFp bGFibGUnCnRlc3RfZGF0YV93aGlsZV9vZmZsaW5lICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Z1bGwuUmVjb25uZWN0KQp0ZXN0X2RhdGFfd2hpbGVfb2ZmbGluZSAuLi4gc2tpcHBlZCAnbm9p c2Vwcm90b2NvbCB1bmF2YWlsYWJsZScKdGVzdF9yZWNvbm5lY3QgKHdvcm1ob2xlLnRlc3QuZGls YXRlLnRlc3RfZnVsbC5SZWNvbm5lY3QpCnRlc3RfcmVjb25uZWN0IC4uLiBza2lwcGVkICdub2lz ZXByb3RvY29sIHVuYXZhaWxhYmxlJwp0ZXN0X2NvbXBhcmFibGUgKHdvcm1ob2xlLnRlc3QudGVz dF9oaW50cy5IaW50cykKdGVzdF9jb21wYXJhYmxlIC4uLiBvawp0ZXN0X2Rlc2NyaWJlX2hpbnRf b2JqICh3b3JtaG9sZS50ZXN0LnRlc3RfaGludHMuSGludHMpCnRlc3RfZGVzY3JpYmVfaGludF9v YmogLi4uIG9rCnRlc3RfZW5jb2RlX2hpbnQgKHdvcm1ob2xlLnRlc3QudGVzdF9oaW50cy5IaW50 cykKdGVzdF9lbmNvZGVfaGludCAuLi4gb2sKdGVzdF9lbmRwb2ludF9mcm9tX2hpbnRfb2JqICh3 b3JtaG9sZS50ZXN0LnRlc3RfaGludHMuSGludHMpCnRlc3RfZW5kcG9pbnRfZnJvbV9oaW50X29i aiAuLi4gb2sKdGVzdF9wYXJzZV9oaW50ICh3b3JtaG9sZS50ZXN0LnRlc3RfaGludHMuSGludHMp CnRlc3RfcGFyc2VfaGludCAuLi4gb2sKdGVzdF9wYXJzZV9oaW50X2FyZ3YgKHdvcm1ob2xlLnRl c3QudGVzdF9oaW50cy5IaW50cykKdGVzdF9wYXJzZV9oaW50X2FyZ3YgLi4uIG9rCnRlc3RfcGFy c2VfdGNwX3YxX2hpbnQgKHdvcm1ob2xlLnRlc3QudGVzdF9oaW50cy5IaW50cykKdGVzdF9wYXJz ZV90Y3BfdjFfaGludCAuLi4gb2sKdGVzdF9rYXQgKHdvcm1ob2xlLnRlc3QudGVzdF9oa2RmLlRl c3RLQVQpIC4uLiBvawp0ZXN0X2Vycm9yICh3b3JtaG9sZS50ZXN0LnRlc3RfZXZlbnR1YWwuRXZl bnR1YWwpCnRlc3RfZXJyb3IgLi4uIFVuaGFuZGxlZCBFcnJvcgpUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvdGVzdC90ZXN0X2V2ZW50dWFsLnB5IiwgbGluZSA0NSwgaW4gdGVzdF9lcnJv cgogICAgZXEuZmx1c2hfc3luYygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2V2ZW50 dWFsLnB5IiwgbGluZSA0NCwgaW4gZmx1c2hfc3luYwogICAgc2VsZi5fY2xvY2suYWR2YW5jZSgw KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3Rhc2sucHkiLCBsaW5lIDgyNSwgaW4gYWR2YW5jZQogICAgY2FsbC5mdW5jKCpjYWxs LmFyZ3MsICoqY2FsbC5rdykKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS9ldmVudHVhbC5weSIsIGxpbmUgMzEsIGluIF90dXJuCiAg ICBmKCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL2RwanY0bHhidjhyYmQ0aWxw YnBtN3c4Yno2MG40YnFxLXB5dGhvbi1tb2NrLTMuMC41L2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9tb2NrL21vY2sucHkiLCBsaW5lIDEwOTIsIGluIF9fY2FsbF9fCiAgICByZXR1cm4gX21v Y2tfc2VsZi5fbW9ja19jYWxsKCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL2Rw anY0bHhidjhyYmQ0aWxwYnBtN3c4Yno2MG40YnFxLXB5dGhvbi1tb2NrLTMuMC41L2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9tb2NrL21vY2sucHkiLCBsaW5lIDExNDMsIGluIF9tb2NrX2Nh bGwKICAgIHJhaXNlIGVmZmVjdAp3b3JtaG9sZS50ZXN0LnRlc3RfZXZlbnR1YWwuSW50ZW50aW9u YWxFcnJvcjogCgpvawp0ZXN0X2V2ZW50dWFsbHkgKHdvcm1ob2xlLnRlc3QudGVzdF9ldmVudHVh bC5FdmVudHVhbCkKdGVzdF9ldmVudHVhbGx5IC4uLiBvawp0ZXN0X2ZsdXNoICh3b3JtaG9sZS50 ZXN0LnRlc3RfZXZlbnR1YWwuRXZlbnR1YWwpCnRlc3RfZmx1c2ggLi4uIG9rCnRlc3RfYWxsb2Nh dGVfY29kZSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkRlbGVnYXRlZCkKdGVzdF9hbGxv Y2F0ZV9jb2RlIC4uLiBFUlJPUgp0ZXN0X2RlbGVnYXRlZCAod29ybWhvbGUudGVzdC50ZXN0X3dv cm1ob2xlLkRlbGVnYXRlZCkKdGVzdF9kZWxlZ2F0ZWQgLi4uIEVSUk9SCnRlc3RfaW5wdXRfY29k ZSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkRlbGVnYXRlZCkKdGVzdF9pbnB1dF9jb2Rl IC4uLiBFUlJPUgp0ZXN0X2FsbG9jYXRlX2FuZF9zZXRfY29kZSAod29ybWhvbGUudGVzdC50ZXN0 X3dvcm1ob2xlLkVycm9ycykKdGVzdF9hbGxvY2F0ZV9hbmRfc2V0X2NvZGUgLi4uIEVSUk9SCnRl c3RfZGVyaXZlX2tleV9lYXJseSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkVycm9ycykK dGVzdF9kZXJpdmVfa2V5X2Vhcmx5IC4uLiBFUlJPUgp0ZXN0X211bHRpcGxlX3NldF9jb2RlICh3 b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRXJyb3JzKQp0ZXN0X211bHRpcGxlX3NldF9jb2Rl IC4uLiBFUlJPUgp0ZXN0X2FsbF9kZWZlcnJlZHMgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9s ZS5Jbml0aWFsRmFpbHVyZSkKdGVzdF9hbGxfZGVmZXJyZWRzIC4uLiBFUlJPUgp0ZXN0X2JhZF9k bnMgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Jbml0aWFsRmFpbHVyZSkKdGVzdF9iYWRf ZG5zIC4uLiBFUlJPUgp0ZXN0X25vX2Nvbm5lY3Rpb24gKHdvcm1ob2xlLnRlc3QudGVzdF93b3Jt aG9sZS5Jbml0aWFsRmFpbHVyZSkKdGVzdF9ub19jb25uZWN0aW9uIC4uLiBFUlJPUgp0ZXN0X2Jh c2ljICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuUmVjb25uZWN0aW9uKQp0ZXN0X2Jhc2lj IC4uLiBFUlJPUgp0ZXN0X2Jhc2ljICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuVHJhY2Up CnRlc3RfYmFzaWMgLi4uIEVSUk9SCnRlc3RfZGVsZWdhdGVkICh3b3JtaG9sZS50ZXN0LnRlc3Rf d29ybWhvbGUuVHJhY2UpCnRlc3RfZGVsZWdhdGVkIC4uLiBFUlJPUgp0ZXN0X2FsbG9jYXRlX2Rl ZmF1bHQgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3RfYWxsb2Nh dGVfZGVmYXVsdCAuLi4gRVJST1IKdGVzdF9hbGxvY2F0ZV9tb3JlX3dvcmRzICh3b3JtaG9sZS50 ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2FsbG9jYXRlX21vcmVfd29yZHMgLi4u IEVSUk9SCnRlc3RfYmFzaWMgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMp CnRlc3RfYmFzaWMgLi4uIEVSUk9SCnRlc3RfY2xvc2VkICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29y bWhvbGUuV29ybWhvbGVzKQp0ZXN0X2Nsb3NlZCAuLi4gRVJST1IKdGVzdF9jbG9zZWRfaWRsZSAo d29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9jbG9zZWRfaWRsZSAu Li4gRVJST1IKdGVzdF9lYXJseSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xl cykKdGVzdF9lYXJseSAuLi4gRVJST1IKdGVzdF9maXhlZF9jb2RlICh3b3JtaG9sZS50ZXN0LnRl c3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2ZpeGVkX2NvZGUgLi4uIEVSUk9SCnRlc3RfZ2V0 X2NvZGVfZWFybHkgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3Rf Z2V0X2NvZGVfZWFybHkgLi4uIEVSUk9SCnRlc3RfZ2V0X2NvZGVfbGF0ZSAod29ybWhvbGUudGVz dC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9nZXRfY29kZV9sYXRlIC4uLiBFUlJPUgp0 ZXN0X2lucHV0X2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRl c3RfaW5wdXRfY29kZSAuLi4gRVJST1IKdGVzdF9pbnRlcmxlYXZlZCAod29ybWhvbGUudGVzdC50 ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9pbnRlcmxlYXZlZCAuLi4gRVJST1IKdGVzdF9t dWx0aXBsZV9tZXNzYWdlcyAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykK dGVzdF9tdWx0aXBsZV9tZXNzYWdlcyAuLi4gRVJST1IKdGVzdF9yeF9kZWR1cCAod29ybWhvbGUu dGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9yeF9kZWR1cCAuLi4gRVJST1IKdGVz dF9zYW1lX21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRl c3Rfc2FtZV9tZXNzYWdlIC4uLiBFUlJPUgp0ZXN0X3VuaWRpcmVjdGlvbmFsICh3b3JtaG9sZS50 ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3VuaWRpcmVjdGlvbmFsIC4uLiBFUlJP Ugp0ZXN0X3ZlcmlmaWVyICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0 ZXN0X3ZlcmlmaWVyIC4uLiBFUlJPUgp0ZXN0X3ZlcnNpb25zICh3b3JtaG9sZS50ZXN0LnRlc3Rf d29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3ZlcnNpb25zIC4uLiBFUlJPUgp0ZXN0X3dlbGNvbWUg KHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3Rfd2VsY29tZSAuLi4g RVJST1IKdGVzdF93cm9uZ19wYXNzd29yZCAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldv cm1ob2xlcykKdGVzdF93cm9uZ19wYXNzd29yZCAuLi4gRVJST1IKdGVzdF93cm9uZ19wYXNzd29y ZF93aXRoX2xlYWRpbmdfc3BhY2UgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9s ZXMpCnRlc3Rfd3JvbmdfcGFzc3dvcmRfd2l0aF9sZWFkaW5nX3NwYWNlIC4uLiBFUlJPUgp0ZXN0 X3dyb25nX3Bhc3N3b3JkX3dpdGhfbm9uX251bWVyaWNfbmFtZXBsYXRlICh3b3JtaG9sZS50ZXN0 LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfbm9uX251 bWVyaWNfbmFtZXBsYXRlIC4uLiBFUlJPUgp0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfc3BhY2Vz ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25nX3Bhc3N3 b3JkX3dpdGhfc3BhY2VzIC4uLiBFUlJPUgp0ZXN0X292ZXJyaWRlICh3b3JtaG9sZS50ZXN0LnRl c3RfY2xpLkFwcElEKQp0ZXN0X292ZXJyaWRlIC4uLiBFUlJPUgp0ZXN0X3RleHQgKHdvcm1ob2xl LnRlc3QudGVzdF9jbGkuQ2xlYW51cCkKdGVzdF90ZXh0IC4uLiBVbmhhbmRsZWQgZXJyb3IgaW4g RGVmZXJyZWQ6CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9jbGkucHkiLCBsaW5lIDExOTcsIGluIHRlc3Rf b3ZlcnJpZGUKICAgIHJlY2VpdmVfZCA9IGNtZF9yZWNlaXZlLnJlY2VpdmUoc2VsZi5jZmcpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfcmVjZWl2ZS5weSIsIGxpbmUgNDks IGluIHJlY2VpdmUKICAgIGQgPSByLmdvKCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTYxMywgaW4g dW53aW5kR2VuZXJhdG9yCiAgICByZXR1cm4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdl bikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUyOSwgaW4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJh Y2tzCiAgICBfaW5saW5lQ2FsbGJhY2tzKE5vbmUsIGcsIHN0YXR1cykKLS0tIDxleGNlcHRpb24g Y2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2Fs bGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9jbGkvY21kX3JlY2VpdmUucHkiLCBsaW5lIDgxLCBpbiBnbwogICAgdyA9IGNyZWF0 ZSgKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwg aW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9s ZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19h dHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5 IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2Vy cygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9t YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4g X2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91 cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGlu IF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0 ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVy ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3RfdGV4dF93 cm9uZ19wYXNzd29yZCAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5DbGVhbnVwKQp0ZXN0X3RleHRf d3JvbmdfcGFzc3dvcmQgLi4uIEZBSUwKdGVzdF9vdGhlcl9lcnJvciAod29ybWhvbGUudGVzdC50 ZXN0X2NsaS5EaXNwYXRjaCkKdGVzdF9vdGhlcl9lcnJvciAuLi4gVW5oYW5kbGVkIGVycm9yIGlu IERlZmVycmVkOgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5IiwgbGluZSAxMTA1LCBpbiB0ZXN0 X3RleHQKICAgIHJlY2VpdmVfZCA9IGNtZF9yZWNlaXZlLnJlY2VpdmUoY2ZnKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3JlY2VpdmUucHkiLCBsaW5lIDQ5LCBpbiByZWNl aXZlCiAgICBkID0gci5nbygpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE2MTMsIGluIHVud2luZEdl bmVyYXRvcgogICAgcmV0dXJuIF9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNrcyhnZW4pCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv ZGVmZXIucHkiLCBsaW5lIDE1MjksIGluIF9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNrcwogICAg X2lubGluZUNhbGxiYWNrcyhOb25lLCBnLCBzdGF0dXMpCi0tLSA8ZXhjZXB0aW9uIGNhdWdodCBo ZXJlPiAtLS0KICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwog ICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv Y2xpL2NtZF9yZWNlaXZlLnB5IiwgbGluZSA4MSwgaW4gZ28KICAgIHcgPSBjcmVhdGUoCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0 ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lv bnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9z dF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUg NTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93 b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxm Ll9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhv bGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRf XwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAg ICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFm KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2Fw cGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICBy ZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpCmJ1aWx0aW5zLlR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgpVbmhhbmRsZWQgZXJyb3IgaW4gRGVmZXJyZWQ6CgpU cmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL3Rlc3QvdGVzdF9jbGkucHkiLCBsaW5lIDExMjQsIGluIHRlc3RfdGV4dF93cm9uZ19w YXNzd29yZAogICAgcmVjZWl2ZV9kID0gY21kX3JlY2VpdmUucmVjZWl2ZShyeF9jZmcpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfcmVjZWl2ZS5weSIsIGxpbmUgNDksIGlu IHJlY2VpdmUKICAgIGQgPSByLmdvKCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTYxMywgaW4gdW53 aW5kR2VuZXJhdG9yCiAgICByZXR1cm4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdlbikK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC9kZWZlci5weSIsIGxpbmUgMTUyOSwgaW4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tz CiAgICBfaW5saW5lQ2FsbGJhY2tzKE5vbmUsIGcsIHN0YXR1cykKLS0tIDxleGNlcHRpb24gY2F1 Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJh Y2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9jbGkvY21kX3JlY2VpdmUucHkiLCBsaW5lIDgxLCBpbiBnbwogICAgdyA9IGNyZWF0ZSgK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4g Y3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92 ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdv cm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRy c19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5Iiwg bGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2Vycygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1 aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmws IHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3 b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9f aW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0 X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJl cz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQK ICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3Rfc2VydmVyX2Nv bm5lY3Rpb25fZXJyb3IgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuRGlzcGF0Y2gpCnRlc3Rfc2Vy dmVyX2Nvbm5lY3Rpb25fZXJyb3IgLi4uIG9rCnRlc3Rfc3VjY2VzcyAod29ybWhvbGUudGVzdC50 ZXN0X2NsaS5EaXNwYXRjaCkKdGVzdF9zdWNjZXNzIC4uLiBvawp0ZXN0X3RpbWluZyAod29ybWhv bGUudGVzdC50ZXN0X2NsaS5EaXNwYXRjaCkKdGVzdF90aW1pbmcgLi4uIG9rCnRlc3RfdHJhbnNm ZXJfZXJyb3IgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuRGlzcGF0Y2gpCnRlc3RfdHJhbnNmZXJf ZXJyb3IgLi4uIG9rCnRlc3Rfd2VsY29tZV9lcnJvciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5E aXNwYXRjaCkKdGVzdF93ZWxjb21lX2Vycm9yIC4uLiBvawp0ZXN0X3dyb25nX3Bhc3N3b3JkX2Vy cm9yICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLkRpc3BhdGNoKQp0ZXN0X3dyb25nX3Bhc3N3b3Jk X2Vycm9yIC4uLiBvawp0ZXN0X2ZpbGVuYW1lcyAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5FeHRy YWN0RmlsZSkKdGVzdF9maWxlbmFtZXMgLi4uIG9rCnRlc3RfZGFzaF9kYXNoX2hlbHAgKHdvcm1o b2xlLnRlc3QudGVzdF9jbGkuSGVscCkKdGVzdF9kYXNoX2Rhc2hfaGVscCAuLi4gb2sKdGVzdF9o ZWxwICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLkhlbHApCnRlc3RfaGVscCAuLi4gb2sKdGVzdF9y ZWNlaXZlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Ob1NlcnZlcikKdGVzdF9yZWNlaXZlciAu Li4gRkFJTAp0ZXN0X3NlbmRlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Ob1NlcnZlcikKdGVz dF9zZW5kZXIgLi4uIEZBSUwKdGVzdF9zZW5kZXJfYWxsb2NhdGlvbiAod29ybWhvbGUudGVzdC50 ZXN0X2NsaS5Ob1NlcnZlcikKdGVzdF9zZW5kZXJfYWxsb2NhdGlvbiAuLi4gRkFJTAp0ZXN0X3Jl Y2VpdmVyICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk5vdFdlbGNvbWUpCnRlc3RfcmVjZWl2ZXIg Li4uIEZBSUwKdGVzdF9zZW5kZXIgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuTm90V2VsY29tZSkK dGVzdF9zZW5kZXIgLi4uIEZBSUwKdGVzdF9icm9rZW5fc3ltbGlua19pc19pZ25vcmVkICh3b3Jt aG9sZS50ZXN0LnRlc3RfY2xpLk9mZmVyRGF0YSkKdGVzdF9icm9rZW5fc3ltbGlua19pc19pZ25v cmVkIC4uLiBvawp0ZXN0X2Jyb2tlbl9zeW1saW5rX3JhaXNlc19lcnIgKHdvcm1ob2xlLnRlc3Qu dGVzdF9jbGkuT2ZmZXJEYXRhKQp0ZXN0X2Jyb2tlbl9zeW1saW5rX3JhaXNlc19lcnIgLi4uIG9r CnRlc3RfZGlyZWN0b3J5ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk9mZmVyRGF0YSkKdGVzdF9k aXJlY3RvcnkgLi4uIG9rCnRlc3RfZGlyZWN0b3J5X2FkZHNsYXNoICh3b3JtaG9sZS50ZXN0LnRl c3RfY2xpLk9mZmVyRGF0YSkKdGVzdF9kaXJlY3RvcnlfYWRkc2xhc2ggLi4uIG9rCnRlc3RfZmls ZSAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5PZmZlckRhdGEpCnRlc3RfZmlsZSAuLi4gb2sKL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHk6MjE3OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPF9pby5CdWZmZXJlZFJlYWRl ciBuYW1lPScvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC93b3JtaG9sZS50ZXN0LnRlc3RfY2xpL09mZmVyRGF0YS90ZXN0X2Zp bGUvazI1Y3gybHEvdGVtcC9teSBmaWxlJz4KICByZXN1bHQgPSBmKCphLCAqKmt3KQp0ZXN0X21p c3NpbmdfZmlsZSAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5PZmZlckRhdGEpCnRlc3RfbWlzc2lu Z19maWxlIC4uLiBvawp0ZXN0X3N5bWxpbmsgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuT2ZmZXJE YXRhKQp0ZXN0X3N5bWxpbmsgLi4uIG9rCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5OjIxNzogUmVzb3VyY2VXYXJuaW5nOiB1bmNs b3NlZCBmaWxlIDxfaW8uQnVmZmVyZWRSZWFkZXIgbmFtZT0nL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvd29ybWhvbGUudGVz dC50ZXN0X2NsaS9PZmZlckRhdGEvdGVzdF9zeW1saW5rL3RfNTZyOXFmL3RlbXAvQjIvQy50eHQn PgogIHJlc3VsdCA9IGYoKmEsICoqa3cpCnRlc3Rfc3ltbGlua19jb2xsYXBzZSAod29ybWhvbGUu dGVzdC50ZXN0X2NsaS5PZmZlckRhdGEpCnRlc3Rfc3ltbGlua19jb2xsYXBzZSAuLi4gb2sKL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHk6MjE3OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPF9pby5CdWZmZXJlZFJlYWRl ciBuYW1lPScvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC93b3JtaG9sZS50ZXN0LnRlc3RfY2xpL09mZmVyRGF0YS90ZXN0X3N5 bWxpbmtfY29sbGFwc2UvX2Zxc3VjZjMvdGVtcC9CMi9ELnR4dCc+CiAgcmVzdWx0ID0gZigqYSwg KiprdykKdGVzdF90ZXh0ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk9mZmVyRGF0YSkKdGVzdF90 ZXh0IC4uLiBvawp0ZXN0X3Vua25vd24gKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuT2ZmZXJEYXRh KQp0ZXN0X3Vua25vd24gLi4uIG9rCnRlc3RfZGlyZWN0b3J5ICh3b3JtaG9sZS50ZXN0LnRlc3Rf Y2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZGlyZWN0b3J5IC4uLiBza2lwcGVkICd1bmFibGUg dG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZGlyZWN0b3J5X2FkZHNsYXNoICh3b3JtaG9sZS50 ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZGlyZWN0b3J5X2FkZHNsYXNoIC4u LiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZGlyZWN0b3J5X292 ZXJyaWRlICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZGly ZWN0b3J5X292ZXJyaWRlIC4uLiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUn CnRlc3RfZGlyZWN0b3J5X292ZXJ3cml0ZSAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5QcmVnZW5l cmF0ZWRDb2RlKQp0ZXN0X2RpcmVjdG9yeV9vdmVyd3JpdGUgLi4uIHNraXBwZWQgJ3VuYWJsZSB0 byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF9kaXJlY3Rvcnlfb3ZlcndyaXRlX21vY2tfYWNjZXB0 ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZGlyZWN0b3J5 X292ZXJ3cml0ZV9tb2NrX2FjY2VwdCAuLi4gc2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTgg bG9jYWxlJwp0ZXN0X2VtcHR5X2ZpbGUgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJh dGVkQ29kZSkKdGVzdF9lbXB0eV9maWxlIC4uLiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYt OCBsb2NhbGUnCnRlc3RfZmFpbF9kaXJlY3Rvcnlfbm9jbG9iYmVyICh3b3JtaG9sZS50ZXN0LnRl c3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZmFpbF9kaXJlY3Rvcnlfbm9jbG9iYmVyIC4u LiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZmFpbF9kaXJlY3Rv cnlfdG9vYmlnICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3Rf ZmFpbF9kaXJlY3RvcnlfdG9vYmlnIC4uLiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBs b2NhbGUnCnRlc3RfZmFpbF9maWxlX25vY2xvYmJlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Q cmVnZW5lcmF0ZWRDb2RlKQp0ZXN0X2ZhaWxfZmlsZV9ub2Nsb2JiZXIgLi4uIHNraXBwZWQgJ3Vu YWJsZSB0byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF9mYWlsX2ZpbGVfdG9vYmlnICh3b3JtaG9s ZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZmFpbF9maWxlX3Rvb2JpZyAu Li4gc2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X2ZpbGUgKHdvcm1o b2xlLnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJhdGVkQ29kZSkKdGVzdF9maWxlIC4uLiBza2lwcGVk ICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZmlsZV9vdmVycmlkZSAod29ybWhv bGUudGVzdC50ZXN0X2NsaS5QcmVnZW5lcmF0ZWRDb2RlKQp0ZXN0X2ZpbGVfb3ZlcnJpZGUgLi4u IHNraXBwZWQgJ3VuYWJsZSB0byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF9maWxlX292ZXJ3cml0 ZSAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5QcmVnZW5lcmF0ZWRDb2RlKQp0ZXN0X2ZpbGVfb3Zl cndyaXRlIC4uLiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZmls ZV9vdmVyd3JpdGVfbW9ja19hY2NlcHQgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJh dGVkQ29kZSkKdGVzdF9maWxlX292ZXJ3cml0ZV9tb2NrX2FjY2VwdCAuLi4gc2tpcHBlZCAndW5h YmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X2ZpbGVfdG9yICh3b3JtaG9sZS50ZXN0LnRl c3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZmlsZV90b3IgLi4uIHNraXBwZWQgJ3VuYWJs ZSB0byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF9zbG93X3NlbmRlcl90ZXh0ICh3b3JtaG9sZS50 ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3Rfc2xvd19zZW5kZXJfdGV4dCAuLi4g c2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X3Nsb3dfdGV4dCAod29y bWhvbGUudGVzdC50ZXN0X2NsaS5QcmVnZW5lcmF0ZWRDb2RlKQp0ZXN0X3Nsb3dfdGV4dCAuLi4g c2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X3RleHQgKHdvcm1ob2xl LnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJhdGVkQ29kZSkKdGVzdF90ZXh0IC4uLiBza2lwcGVkICd1 bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfdGV4dF9zdWJwcm9jZXNzICh3b3JtaG9s ZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfdGV4dF9zdWJwcm9jZXNzIC4u LiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfdGV4dF90b3IgKHdv cm1ob2xlLnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJhdGVkQ29kZSkKdGVzdF90ZXh0X3RvciAuLi4g c2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X3RleHRfdmVyaWZ5ICh3 b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfdGV4dF92ZXJpZnkg Li4uIHNraXBwZWQgJ3VuYWJsZSB0byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF92ZXJzaW9uICh3 b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlNjcmlwdFZlcnNpb24pCnRlc3RfdmVyc2lvbiAuLi4gc2tp cHBlZCAidW5hYmxlIHRvIGZpbmQgJ3dvcm1ob2xlJyBpbiAkUEFUSCIKdGVzdF9lbXB0eSAod29y bWhvbGUudGVzdC50ZXN0X2NsaS5XZWxjb21lKQp0ZXN0X2VtcHR5IC4uLiBvawp0ZXN0X21vdGQg KHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuV2VsY29tZSkKdGVzdF9tb3RkIC4uLiBvawp0ZXN0X3Zl cnNpb25fY3VycmVudCAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5XZWxjb21lKQp0ZXN0X3ZlcnNp b25fY3VycmVudCAuLi4gb2sKdGVzdF92ZXJzaW9uX29sZCAod29ybWhvbGUudGVzdC50ZXN0X2Ns aS5XZWxjb21lKQp0ZXN0X3ZlcnNpb25fb2xkIC4uLiBvawp0ZXN0X3ZlcnNpb25fdW5yZWxlYXNl ZCAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5XZWxjb21lKQp0ZXN0X3ZlcnNpb25fdW5yZWxlYXNl ZCAuLi4gb2sKdGVzdF90ZXh0ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlplcm9Nb2RlKQp0ZXN0 X3RleHQgLi4uIEVSUk9SCnRlc3RfZGVyaXZlX2Vycm9ycyAod29ybWhvbGUudGVzdC50ZXN0X2tl eXMuRGVyaXZlKQp0ZXN0X2Rlcml2ZV9lcnJvcnMgLi4uIG9rCnRlc3RfZGVyaXZlX2tleSAod29y bWhvbGUudGVzdC50ZXN0X2tleXMuRGVyaXZlKQp0ZXN0X2Rlcml2ZV9rZXkgLi4uIG9rCnRlc3Rf ZGVyaXZlX3BoYXNlX2tleSAod29ybWhvbGUudGVzdC50ZXN0X2tleXMuRGVyaXZlKQp0ZXN0X2Rl cml2ZV9waGFzZV9rZXkgLi4uIG9rCnRlc3RfZGVjcnlwdCAod29ybWhvbGUudGVzdC50ZXN0X2tl eXMuRW5jcnlwdCkKdGVzdF9kZWNyeXB0IC4uLiBvawp0ZXN0X2VuY3J5cHQgKHdvcm1ob2xlLnRl c3QudGVzdF9rZXlzLkVuY3J5cHQpCnRlc3RfZW5jcnlwdCAuLi4gb2sKdGVzdF9zZXQgKHdvcm1o b2xlLnRlc3QudGVzdF9vYnNlcnZlci5FbXB0eSkKdGVzdF9zZXQgLi4uIG9rCnRlc3RfZXJyb3Jf YWZ0ZXJfZmlyaW5nICh3b3JtaG9sZS50ZXN0LnRlc3Rfb2JzZXJ2ZXIuT25lU2hvdCkKdGVzdF9l cnJvcl9hZnRlcl9maXJpbmcgLi4uIG9rCnRlc3RfZXJyb3JfYmVmb3JlX2ZpcmluZyAod29ybWhv bGUudGVzdC50ZXN0X29ic2VydmVyLk9uZVNob3QpCnRlc3RfZXJyb3JfYmVmb3JlX2ZpcmluZyAu Li4gb2sKdGVzdF9maXJlICh3b3JtaG9sZS50ZXN0LnRlc3Rfb2JzZXJ2ZXIuT25lU2hvdCkKdGVz dF9maXJlIC4uLiBvawp0ZXN0X2ZpcmVfaWZfbm90X2ZpcmVkICh3b3JtaG9sZS50ZXN0LnRlc3Rf b2JzZXJ2ZXIuT25lU2hvdCkKdGVzdF9maXJlX2lmX25vdF9maXJlZCAuLi4gb2sKdGVzdF9lcnJv ciAod29ybWhvbGUudGVzdC50ZXN0X29ic2VydmVyLlNlcXVlbmNlKQp0ZXN0X2Vycm9yIC4uLiBv awp0ZXN0X2ZpcmUgKHdvcm1ob2xlLnRlc3QudGVzdF9vYnNlcnZlci5TZXF1ZW5jZSkKdGVzdF9m aXJlIC4uLiBvawp0ZXN0X2FsbG9jYXRlX2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGlu ZXMuQWxsb2NhdG9yKQp0ZXN0X2FsbG9jYXRlX2ZpcnN0IC4uLiBFUlJPUgp0ZXN0X2Nvbm5lY3Rf Zmlyc3QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5BbGxvY2F0b3IpCnRlc3RfY29ubmVj dF9maXJzdCAuLi4gRVJST1IKdGVzdF9ub19hbGxvY2F0aW9uICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuQWxsb2NhdG9yKQp0ZXN0X25vX2FsbG9jYXRpb24gLi4uIEVSUk9SCnRlc3RfYWxs b2NhdGVfY29kZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfYWxsb2Nh dGVfY29kZSAuLi4gb2sKdGVzdF9iYXNpYyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJv c3MpCnRlc3RfYmFzaWMgLi4uIEVSUk9SCnRlc3RfY2xvc2VfZWFybHkgKHdvcm1ob2xlLnRlc3Qu dGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X2Nsb3NlX2Vhcmx5IC4uLiBFUlJPUgp0ZXN0X2Vycm9y X3doaWxlX2Nsb3NpbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X2Vy cm9yX3doaWxlX2Nsb3NpbmcgLi4uIEVSUk9SCnRlc3RfaW5wdXRfY29kZSAod29ybWhvbGUudGVz dC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfaW5wdXRfY29kZSAuLi4gb2sKdGVzdF9pbnRlcm5h bF9lcnJvciAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfaW50ZXJuYWxf ZXJyb3IgLi4uIEVSUk9SCnRlc3RfbG9uZWx5ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu Qm9zcykKdGVzdF9sb25lbHkgLi4uIEVSUk9SCnRlc3Rfc2NhcnlfcGhhc2UgKHdvcm1ob2xlLnRl c3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X3NjYXJ5X3BoYXNlIC4uLiBFUlJPUgp0ZXN0X3Nj YXJ5X3ZlcnNpb24gKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X3NjYXJ5 X3ZlcnNpb24gLi4uIEVSUk9SCnRlc3Rfc2VydmVyX2Vycm9yICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuQm9zcykKdGVzdF9zZXJ2ZXJfZXJyb3IgLi4uIEVSUk9SCnRlc3Rfc2V0X2NvZGVf YmFkX2Zvcm1hdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3Rfc2V0X2Nv ZGVfYmFkX2Zvcm1hdCAuLi4gb2sKdGVzdF9zZXRfY29kZV90d2ljZSAod29ybWhvbGUudGVzdC50 ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3Rfc2V0X2NvZGVfdHdpY2UgLi4uIG9rCnRlc3RfdW5rbm93 bl9waGFzZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfdW5rbm93bl9w aGFzZSAuLi4gRVJST1IKdGVzdF91bndlbGNvbWUgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5l cy5Cb3NzKQp0ZXN0X3Vud2VsY29tZSAuLi4gRVJST1IKdGVzdF9hbGxvY2F0ZV9jb2RlICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuQ29kZSkKdGVzdF9hbGxvY2F0ZV9jb2RlIC4uLiBFUlJP Ugp0ZXN0X2lucHV0X2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Db2RlKQp0ZXN0 X2lucHV0X2NvZGUgLi4uIEVSUk9SCnRlc3Rfc2V0X2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5Db2RlKQp0ZXN0X3NldF9jb2RlIC4uLiBFUlJPUgp0ZXN0X3NldF9jb2RlX2ludmFs aWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Db2RlKQp0ZXN0X3NldF9jb2RlX2ludmFs aWQgLi4uIEVSUk9SCnRlc3RfYmFkX25hbWVwbGF0ZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hp bmVzLklucHV0KQp0ZXN0X2JhZF9uYW1lcGxhdGUgLi4uIEVSUk9SCnRlc3RfaWdub3JlX2NvbXBs ZXRpb24gKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5JbnB1dCkKdGVzdF9pZ25vcmVfY29t cGxldGlvbiAuLi4gRVJST1IKdGVzdF93aXRoX2NvbXBsZXRpb24gKHdvcm1ob2xlLnRlc3QudGVz dF9tYWNoaW5lcy5JbnB1dCkKdGVzdF93aXRoX2NvbXBsZXRpb24gLi4uIEVSUk9SCnRlc3RfYmFk ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuS2V5KQp0ZXN0X2JhZCAuLi4gRVJST1IKdGVz dF9nb29kICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuS2V5KQp0ZXN0X2dvb2QgLi4uIEVS Uk9SCnRlc3RfcmV2ZXJzZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5LZXkpCnRlc3Rf cmV2ZXJzZWQgLi4uIEVSUk9SCnRlc3RfY29ubmVjdF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0 X21hY2hpbmVzLkxpc3RlcikKdGVzdF9jb25uZWN0X2ZpcnN0IC4uLiBFUlJPUgp0ZXN0X2Nvbm5l Y3RfZmlyc3RfYXNrX3R3aWNlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTGlzdGVyKQp0 ZXN0X2Nvbm5lY3RfZmlyc3RfYXNrX3R3aWNlIC4uLiBFUlJPUgp0ZXN0X3JlY29ubmVjdCAod29y bWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkxpc3RlcikKdGVzdF9yZWNvbm5lY3QgLi4uIEVSUk9S CnRlc3RfcmVmcmVzaF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkxpc3RlcikK dGVzdF9yZWZyZXNoX2ZpcnN0IC4uLiBFUlJPUgp0ZXN0X3VucmVmcmVzaGVkICh3b3JtaG9sZS50 ZXN0LnRlc3RfbWFjaGluZXMuTGlzdGVyKQp0ZXN0X3VucmVmcmVzaGVkIC4uLiBFUlJPUgp0ZXN0 X2Nsb3NlX3doaWxlX2lkbGUgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5NYWlsYm94KQp0 ZXN0X2Nsb3NlX3doaWxlX2lkbGUgLi4uIEVSUk9SCnRlc3RfY2xvc2Vfd2hpbGVfaWRsZV9idXRf Y29ubmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTWFpbGJveCkKdGVzdF9jbG9z ZV93aGlsZV9pZGxlX2J1dF9jb25uZWN0ZWQgLi4uIEVSUk9SCnRlc3RfY2xvc2Vfd2hpbGVfbWFp bGJveF9kaXNjb25uZWN0ZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5NYWlsYm94KQp0 ZXN0X2Nsb3NlX3doaWxlX21haWxib3hfZGlzY29ubmVjdGVkIC4uLiBFUlJPUgp0ZXN0X2Nsb3Nl X3doaWxlX3JlY29ubmVjdGluZyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk1haWxib3gp CnRlc3RfY2xvc2Vfd2hpbGVfcmVjb25uZWN0aW5nIC4uLiBFUlJPUgp0ZXN0X2Nvbm5lY3RfZmly c3QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5NYWlsYm94KQp0ZXN0X2Nvbm5lY3RfZmly c3QgLi4uIEVSUk9SCnRlc3RfbWFpbGJveF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hp bmVzLk1haWxib3gpCnRlc3RfbWFpbGJveF9maXJzdCAuLi4gRVJST1IKdGVzdF9jbG9zZV93aGls ZV9jbGFpbWVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Ns b3NlX3doaWxlX2NsYWltZWQgLi4uIEVSUk9SCnRlc3RfY2xvc2Vfd2hpbGVfY2xhaW1lZF9idXRf ZGlzY29ubmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0 X2Nsb3NlX3doaWxlX2NsYWltZWRfYnV0X2Rpc2Nvbm5lY3RlZCAuLi4gRVJST1IKdGVzdF9jbG9z ZV93aGlsZV9jbGFpbWluZyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkK dGVzdF9jbG9zZV93aGlsZV9jbGFpbWluZyAuLi4gRVJST1IKdGVzdF9jbG9zZV93aGlsZV9jbGFp bWluZ19idXRfZGlzY29ubmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBs YXRlKQp0ZXN0X2Nsb3NlX3doaWxlX2NsYWltaW5nX2J1dF9kaXNjb25uZWN0ZWQgLi4uIEVSUk9S CnRlc3RfY2xvc2Vfd2hpbGVfZG9uZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVw bGF0ZSkKdGVzdF9jbG9zZV93aGlsZV9kb25lIC4uLiBFUlJPUgp0ZXN0X2Nsb3NlX3doaWxlX2Rv bmVfYnV0X2Rpc2Nvbm5lY3RlZCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0 ZSkKdGVzdF9jbG9zZV93aGlsZV9kb25lX2J1dF9kaXNjb25uZWN0ZWQgLi4uIEVSUk9SCnRlc3Rf Y2xvc2Vfd2hpbGVfaWRsZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkK dGVzdF9jbG9zZV93aGlsZV9pZGxlIC4uLiBFUlJPUgp0ZXN0X2Nsb3NlX3doaWxlX2lkbGVfY29u bmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Nsb3Nl X3doaWxlX2lkbGVfY29ubmVjdGVkIC4uLiBFUlJPUgp0ZXN0X2Nsb3NlX3doaWxlX3JlbGVhc2lu ZyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkKdGVzdF9jbG9zZV93aGls ZV9yZWxlYXNpbmcgLi4uIEVSUk9SCnRlc3RfY2xvc2Vfd2hpbGVfcmVsZWFzaW5nX2J1dF9kaXNj b25uZWN0ZWRhICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Ns b3NlX3doaWxlX3JlbGVhc2luZ19idXRfZGlzY29ubmVjdGVkYSAuLi4gRVJST1IKdGVzdF9jbG9z ZV93aGlsZV91bmNsYWltZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUp CnRlc3RfY2xvc2Vfd2hpbGVfdW5jbGFpbWVkIC4uLiBFUlJPUgp0ZXN0X2Nvbm5lY3RfZmlyc3Qg KHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY29ubmVjdF9maXJz dCAuLi4gRVJST1IKdGVzdF9yZWNvbm5lY3Rfd2hpbGVfY2xhaW1lZCAod29ybWhvbGUudGVzdC50 ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkKdGVzdF9yZWNvbm5lY3Rfd2hpbGVfY2xhaW1lZCAuLi4g RVJST1IKdGVzdF9yZWNvbm5lY3Rfd2hpbGVfY2xhaW1pbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfcmVjb25uZWN0X3doaWxlX2NsYWltaW5nIC4uLiBFUlJP Ugp0ZXN0X3JlY29ubmVjdF93aGlsZV9kb25lICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu TmFtZXBsYXRlKQp0ZXN0X3JlY29ubmVjdF93aGlsZV9kb25lIC4uLiBFUlJPUgp0ZXN0X3JlY29u bmVjdF93aGlsZV9yZWxlYXNpbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxh dGUpCnRlc3RfcmVjb25uZWN0X3doaWxlX3JlbGVhc2luZyAuLi4gRVJST1IKdGVzdF9zZXRfZmly c3QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3Rfc2V0X2ZpcnN0 IC4uLiBFUlJPUgp0ZXN0X3NldF9pbnZhbGlkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu TmFtZXBsYXRlKQp0ZXN0X3NldF9pbnZhbGlkIC4uLiBFUlJPUgp0ZXN0X2luX29yZGVyICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuT3JkZXIpCnRlc3RfaW5fb3JkZXIgLi4uIEVSUk9SCnRl c3Rfb3V0X29mX29yZGVyICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuT3JkZXIpCnRlc3Rf b3V0X29mX29yZGVyIC4uLiBFUlJPUgp0ZXN0X2Vhcmx5X2JhZCAod29ybWhvbGUudGVzdC50ZXN0 X21hY2hpbmVzLlJlY2VpdmUpCnRlc3RfZWFybHlfYmFkIC4uLiBFUlJPUgp0ZXN0X2dvb2QgKHdv cm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5SZWNlaXZlKQp0ZXN0X2dvb2QgLi4uIEVSUk9SCnRl c3RfbGF0ZV9iYWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5SZWNlaXZlKQp0ZXN0X2xh dGVfYmFkIC4uLiBFUlJPUgp0ZXN0X2Jhc2ljICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu UmVuZGV6dm91cykKdGVzdF9iYXNpYyAuLi4gRVJST1IKL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19y ZW5kZXp2b3VzLnB5OjExMTogRGVwcmVjYXRpb25XYXJuaW5nOiBQYXNzaW5nIEhvc3RuYW1lRW5k cG9pbnQgYSByZWFjdG9yIHRoYXQgZG9lcyBub3QgcHJvdmlkZSBJUmVhY3RvclBsdWdnYWJsZU5h bWVSZXNvbHZlciAoYnVpbHRpbnMub2JqZWN0KSB3YXMgZGVwcmVjYXRlZCBpbiBUd2lzdGVkIDE3 LjUuMDsgcGxlYXNlIHVzZSBhIHJlYWN0b3IgdGhhdCBwcm92aWRlcyBJUmVhY3RvclBsdWdnYWJs ZU5hbWVSZXNvbHZlciBpbnN0ZWFkCiAgcmV0dXJuIGVuZHBvaW50cy5Ib3N0bmFtZUVuZHBvaW50 KHNlbGYuX3JlYWN0b3IsIHAuaG9zdG5hbWUsIHBvcnQpCnRlc3RfZW5kcG9pbnRzICh3b3JtaG9s ZS50ZXN0LnRlc3RfbWFjaGluZXMuUmVuZGV6dm91cykKdGVzdF9lbmRwb2ludHMgLi4uIEVSUk9S Ci90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weToxMTE6IERlcHJlY2F0aW9uV2Fy bmluZzogUGFzc2luZyBIb3N0bmFtZUVuZHBvaW50IGEgcmVhY3RvciB0aGF0IGRvZXMgbm90IHBy b3ZpZGUgSVJlYWN0b3JQbHVnZ2FibGVOYW1lUmVzb2x2ZXIgKGJ1aWx0aW5zLm9iamVjdCkgd2Fz IGRlcHJlY2F0ZWQgaW4gVHdpc3RlZCAxNy41LjA7IHBsZWFzZSB1c2UgYSByZWFjdG9yIHRoYXQg cHJvdmlkZXMgSVJlYWN0b3JQbHVnZ2FibGVOYW1lUmVzb2x2ZXIgaW5zdGVhZAogIHJldHVybiBl bmRwb2ludHMuSG9zdG5hbWVFbmRwb2ludChzZWxmLl9yZWFjdG9yLCBwLmhvc3RuYW1lLCBwb3J0 KQp0ZXN0X3dlYnNvY2tldF9mYWlsdXJlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuUmVu ZGV6dm91cykKdGVzdF93ZWJzb2NrZXRfZmFpbHVyZSAuLi4gRVJST1IKL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19yZW5kZXp2b3VzLnB5OjExMTogRGVwcmVjYXRpb25XYXJuaW5nOiBQYXNzaW5nIEhv c3RuYW1lRW5kcG9pbnQgYSByZWFjdG9yIHRoYXQgZG9lcyBub3QgcHJvdmlkZSBJUmVhY3RvclBs dWdnYWJsZU5hbWVSZXNvbHZlciAoYnVpbHRpbnMub2JqZWN0KSB3YXMgZGVwcmVjYXRlZCBpbiBU d2lzdGVkIDE3LjUuMDsgcGxlYXNlIHVzZSBhIHJlYWN0b3IgdGhhdCBwcm92aWRlcyBJUmVhY3Rv clBsdWdnYWJsZU5hbWVSZXNvbHZlciBpbnN0ZWFkCiAgcmV0dXJuIGVuZHBvaW50cy5Ib3N0bmFt ZUVuZHBvaW50KHNlbGYuX3JlYWN0b3IsIHAuaG9zdG5hbWUsIHBvcnQpCnRlc3Rfd2Vic29ja2V0 X2xvc3QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5SZW5kZXp2b3VzKQp0ZXN0X3dlYnNv Y2tldF9sb3N0IC4uLiBFUlJPUgovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHk6 MTExOiBEZXByZWNhdGlvbldhcm5pbmc6IFBhc3NpbmcgSG9zdG5hbWVFbmRwb2ludCBhIHJlYWN0 b3IgdGhhdCBkb2VzIG5vdCBwcm92aWRlIElSZWFjdG9yUGx1Z2dhYmxlTmFtZVJlc29sdmVyIChi dWlsdGlucy5vYmplY3QpIHdhcyBkZXByZWNhdGVkIGluIFR3aXN0ZWQgMTcuNS4wOyBwbGVhc2Ug dXNlIGEgcmVhY3RvciB0aGF0IHByb3ZpZGVzIElSZWFjdG9yUGx1Z2dhYmxlTmFtZVJlc29sdmVy IGluc3RlYWQKICByZXR1cm4gZW5kcG9pbnRzLkhvc3RuYW1lRW5kcG9pbnQoc2VsZi5fcmVhY3Rv ciwgcC5ob3N0bmFtZSwgcG9ydCkKdGVzdF9rZXlfZmlyc3QgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5TZW5kKQp0ZXN0X2tleV9maXJzdCAuLi4gRVJST1IKdGVzdF9zZW5kX2ZpcnN0ICh3 b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuU2VuZCkKdGVzdF9zZW5kX2ZpcnN0IC4uLiBFUlJP Ugp0ZXN0X3Rlcm1pbmF0ZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLlRlcm1pbmF0b3Ip CnRlc3RfdGVybWluYXRlIC4uLiBFUlJPUgp0ZXN0X2Nob29zZV93b3JkcyAod29ybWhvbGUudGVz dC50ZXN0X3dvcmRsaXN0LkNob29zZSkKdGVzdF9jaG9vc2Vfd29yZHMgLi4uIG9rCnRlc3RfY29t cGxldGlvbnMgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JkbGlzdC5Db21wbGV0aW9ucykKdGVzdF9j b21wbGV0aW9ucyAuLi4gb2sKdGVzdF9mcmVlX3NwYWNlICh3b3JtaG9sZS50ZXN0LnRlc3RfdXRp bC5TcGFjZSkKdGVzdF9mcmVlX3NwYWNlIC4uLiBvawp0ZXN0X25vX3N0YXR2ZnMgKHdvcm1ob2xl LnRlc3QudGVzdF91dGlsLlNwYWNlKQp0ZXN0X25vX3N0YXR2ZnMgLi4uIG9rCnRlc3RfYnl0ZXNf dG9fZGljdCAod29ybWhvbGUudGVzdC50ZXN0X3V0aWwuVXRpbHMpCnRlc3RfYnl0ZXNfdG9fZGlj dCAuLi4gb2sKdGVzdF9ieXRlc190b19oZXhzdHIgKHdvcm1ob2xlLnRlc3QudGVzdF91dGlsLlV0 aWxzKQp0ZXN0X2J5dGVzX3RvX2hleHN0ciAuLi4gb2sKdGVzdF9kaWN0X3RvX2J5dGVzICh3b3Jt aG9sZS50ZXN0LnRlc3RfdXRpbC5VdGlscykKdGVzdF9kaWN0X3RvX2J5dGVzIC4uLiBvawp0ZXN0 X2hleHN0cl90b19ieXRlcyAod29ybWhvbGUudGVzdC50ZXN0X3V0aWwuVXRpbHMpCnRlc3RfaGV4 c3RyX3RvX2J5dGVzIC4uLiBvawp0ZXN0X3RvX2J5dGVzICh3b3JtaG9sZS50ZXN0LnRlc3RfdXRp bC5VdGlscykKdGVzdF90b19ieXRlcyAuLi4gb2sKdGVzdF9iYWRfaGludCAod29ybWhvbGUudGVz dC50ZXN0X3NzaC5GaW5kUHVia2V5KQp0ZXN0X2JhZF9oaW50IC4uLiBvawp0ZXN0X2ZpbmRfbXVs dGlwbGUgKHdvcm1ob2xlLnRlc3QudGVzdF9zc2guRmluZFB1YmtleSkKdGVzdF9maW5kX211bHRp cGxlIC4uLiBvawp0ZXN0X2ZpbmRfbm9uZSAod29ybWhvbGUudGVzdC50ZXN0X3NzaC5GaW5kUHVi a2V5KQp0ZXN0X2ZpbmRfbm9uZSAuLi4gb2sKdGVzdF9maW5kX29uZSAod29ybWhvbGUudGVzdC50 ZXN0X3NzaC5GaW5kUHVia2V5KQp0ZXN0X2ZpbmRfb25lIC4uLiBvawoKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpF UlJPUjogdGVzdF9tYWtlX2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF94ZmVyX3V0aWwuWGZlcikK dGVzdF9tYWtlX2NvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp0d2lzdGVkLmludGVybmV0LmRlZmVyLlRpbWVv dXRFcnJvcjogPHdvcm1ob2xlLnRlc3QudGVzdF94ZmVyX3V0aWwuWGZlciB0ZXN0TWV0aG9kPXRl c3RfbWFrZV9jb2RlPiAodGVzdF9tYWtlX2NvZGUpIHN0aWxsIHJ1bm5pbmcgYXQgMTIwLjAgc2Vj cwoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9vbl9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rf eGZlcl91dGlsLlhmZXIpCnRlc3Rfb25fY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X3hmZXJfdXRpbC5weSIsIGxpbmUgMzgsIGluIHRlc3Rfb25fY29kZQogICAgc2VuZF9yZXN1 bHQgPSB5aWVsZCBkMQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJh Y2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS94ZmVyX3V0aWwucHkiLCBsaW5lIDExNiwgaW4gc2VuZAogICAgd2ggPSB3b3JtaG9sZS5j cmVhdGUoYXBwaWQsIHJlbGF5X3VybCwgcmVhY3RvciwgdG9yPXRvcikKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0g Qm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50 X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJv c3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAg IHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBz ZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6 dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxm Ll9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVu ZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxm Ll9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24v aW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxm Ll9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxp bmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24o ZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJl dHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAq dmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNv ZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBi eXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfb25fY29kZSAod29ybWhvbGUudGVzdC50 ZXN0X3hmZXJfdXRpbC5YZmVyKQp0ZXN0X29uX2NvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sg KG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9p bmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3hmZXJfdXRpbC5weSIsIGxpbmUgNDYsIGluIHJlY2VpdmUKICAgIHdo ID0gd29ybWhvbGUuY3JlYXRlKGFwcGlkLCByZWxheV91cmwsIHJlYWN0b3IsIHRvcj10b3IpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNy ZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVy c2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3Jt aG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNf cG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxp bmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWls ZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBz ZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29y bWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2lu aXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9f CiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9 ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAg ICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhv ZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoq a3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4g Y29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1 bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNv ZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUK ICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJl ZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3hmZXIgKHdvcm1o b2xlLnRlc3QudGVzdF94ZmVyX3V0aWwuWGZlcikKdGVzdF94ZmVyCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJh Y2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L3Rlc3RfeGZlcl91dGlsLnB5IiwgbGluZSAxOCwgaW4gdGVzdF94ZmVyCiAgICBz ZW5kX3Jlc3VsdCA9IHlpZWxkIGQxCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxp bmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3hmZXJfdXRpbC5weSIsIGxpbmUgMTE2LCBpbiBzZW5kCiAgICB3aCA9IHdv cm1ob2xlLmNyZWF0ZShhcHBpZCwgcmVsYXlfdXJsLCByZWFjdG9yLCB0b3I9dG9yKQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUK ICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25z LCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUu X2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3Rf aW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUy LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29y a2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5f YXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xl Ll9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18K ICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAg ZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBs aWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0 dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2Fs LnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJn cyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlm dW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlv bgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hh bmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICBy ZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9saWJlZGl0ICh3b3JtaG9s ZS50ZXN0LnRlc3Rfcmxjb21wbGV0ZXIuU3luYykKdGVzdF9saWJlZGl0Ci0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAx NDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS94ZmVyX3V0aWwucHkiLCBsaW5lIDExNiwgaW4gc2Vu ZAogICAgd2ggPSB3b3JtaG9sZS5jcmVhdGUoYXBwaWQsIHJlbGF5X3VybCwgcmVhY3RvciwgdG9y PXRvcikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5 MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3Jt aG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYu X19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3Nz LnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29y a2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2Miwg aW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxm Ll91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQg aW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgs IGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9z dF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJG YWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25u ZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFp bHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlz IHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfbGli ZWRpdCAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLlN5bmMpCnRlc3RfbGliZWRpdAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5k KHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUveGZlcl91dGlsLnB5IiwgbGlu ZSA0NiwgaW4gcmVjZWl2ZQogICAgd2ggPSB3b3JtaG9sZS5jcmVhdGUoYXBwaWQsIHJlbGF5X3Vy bCwgcmVhY3RvciwgdG9yPXRvcikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhv bGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91 cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0 dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19p bml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAg c2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3Nz LnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91 c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxh dHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVj dG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18o KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcs IGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5l Y3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDEx MjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0 ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAg ICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBp biBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29k ZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9y OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K RVJST1I6IHRlc3RfbGF0ZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuUmFj ZSkKdGVzdF9sYXRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdG9yLnB5IiwgbGluZSA0 MzQsIGluIHRlc3RfbGF0ZQogICAgYy5hZGRfY2FuZGlkYXRlKHAxKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X29uZV9mb2xsb3dlciAod29ybWhvbGUudGVz dC5kaWxhdGUudGVzdF9jb25uZWN0b3IuUmFjZSkKdGVzdF9vbmVfZm9sbG93ZXIKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBs aW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICBy ZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQs IGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2sp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50 ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAog ICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVz dC9kaWxhdGUvdGVzdF9jb25uZWN0b3IucHkiLCBsaW5lIDQxMSwgaW4gdGVzdF9vbmVfZm9sbG93 ZXIKICAgIGMuYWRkX2NhbmRpZGF0ZShwMSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0 X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg NDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNv cHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpFUlJPUjogdGVzdF9vbmVfbGVhZGVyICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nv bm5lY3Rvci5SYWNlKQp0ZXN0X29uZV9sZWFkZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVE ZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFd LCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJh aXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBs aW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwg KiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25u ZWN0b3IucHkiLCBsaW5lIDM5MCwgaW4gdGVzdF9vbmVfbGVhZGVyCiAgICBjLmFkZF9jYW5kaWRh dGUocDEpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlz IHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfc3Rv cCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuUmFjZSkKdGVzdF9zdG9wCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVy LnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoq a3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3Nl ZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxp bmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJh Y2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdG9yLnB5IiwgbGluZSA0NTYsIGluIHRlc3Rfc3Rv cAogICAgYy5hZGRfY2FuZGlkYXRlKHAxKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRf XwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0 MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29w eWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVF cnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CkVSUk9SOiB0ZXN0X2FkZF9yZWxheSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25u ZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9hZGRfcmVsYXkKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4g bWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19p bmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UK ICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0g ZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVz dF9jb25uZWN0b3IucHkiLCBsaW5lIDMzNywgaW4gdGVzdF9hZGRfcmVsYXkKICAgIGMuYWRkX3Jl bGF5KFtoaW50XSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9iYXNpYyAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3Rv cikKdGVzdF9iYXNpYwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1 bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhX YXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhv bi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndp dGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5X aXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rvci5weSIsIGxpbmUg MTc2LCBpbiB0ZXN0X2Jhc2ljCiAgICBjLmdvdF9oaW50cyhbaGludF0pCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxp bmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24o ZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJl dHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAq dmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNv ZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBi eXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfZW1wdHkgKHdvcm1ob2xlLnRlc3QuZGls YXRlLnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3RfZW1wdHkKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0b3IucHkiLCBsaW5lIDE2NCwgaW4gdGVzdF9lbXB0eQogICAgYy5z dG9wKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9yZWxh eV9kZWxheSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3Rv cikKdGVzdF9yZWxheV9kZWxheQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rvci5weSIs IGxpbmUgMzA1LCBpbiB0ZXN0X3JlbGF5X2RlbGF5CiAgICBjLmdvdF9oaW50cyhbaGludDEsIGhp bnQyLCBoaW50M10pCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3Rfc3RhcnRfbGlzdGVuICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0 Q29ubmVjdG9yKQp0ZXN0X3N0YXJ0X2xpc3RlbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgNjU0LCBpbiBfcnVuQ2Fs bGJhY2tzCiAgICBjdXJyZW50LnJlc3VsdCA9IGNhbGxiYWNrKGN1cnJlbnQucmVzdWx0LCAqYXJn cywgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rv ci5weSIsIGxpbmUgMzA1LCBpbiBfbGlzdGVuaW5nCiAgICBzZWxmLmxpc3RlbmVyX3JlYWR5KGRp cmVjdF9oaW50cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9zdGFydF9zdG9wICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29u bmVjdG9yKQp0ZXN0X3N0YXJ0X3N0b3AKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJl ZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNf aW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4 Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0 bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIx NywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0b3Iu cHkiLCBsaW5lIDE1MywgaW4gdGVzdF9zdGFydF9zdG9wCiAgICBjLnN0b3AoKQogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHki LCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0 aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAg ICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2Vz KSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVy biBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5 cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3Rvcl9ub19tYW5hZ2VyICh3b3Jt aG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X3Rvcl9u b19tYW5hZ2VyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9 IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Nv bXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90 cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhX YXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdG9yLnB5IiwgbGluZSAzNTgs IGluIHRlc3RfdG9yX25vX21hbmFnZXIKICAgIGMuZ290X2hpbnRzKFtoaW50XSkKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF90b3Jfd2l0aF9tYW5hZ2VyICh3 b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X3Rv cl93aXRoX21hbmFnZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0b3IucHkiLCBsaW5l IDM2OCwgaW4gdGVzdF90b3Jfd2l0aF9tYW5hZ2VyCiAgICBjLmdvdF9oaW50cyhbaGludF0pCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYmFkX3Byb2xvZ3Vl ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9i YWRfcHJvbG9ndWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5IiwgbGluZSAz OCwgaW4gdGVzdF9iYWRfcHJvbG9ndWUKICAgIGMubWFrZUNvbm5lY3Rpb24odCkKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9wcm90 b2NvbC5weSIsIGxpbmUgNTE0LCBpbiBtYWtlQ29ubmVjdGlvbgogICAgc2VsZi5jb25uZWN0aW9u TWFkZSgpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9jb25uZWN0aW9u LnB5IiwgbGluZSA1OTQsIGluIGNvbm5lY3Rpb25NYWRlCiAgICBzZWxmLl9yZWNvcmQuc2V0X3Jv bGVfbGVhZGVyKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9iYWRfcHJvbG9ndWUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25u ZWN0aW9uKQp0ZXN0X2JhZF9wcm9sb2d1ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9u L2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5NCwgaW4gY29ubmVjdGlvbk1hZGUKICAgIHNlbGYuX3Jl Y29yZC5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwog ICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwg aW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNv ZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJv cjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CkVSUk9SOiB0ZXN0X2ZvbGxvd2VyX2NvbWJpbmVkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9mb2xsb3dlcl9jb21iaW5lZAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJl cmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwg aW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAg ICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDI0OCwgaW4gdGVzdF9mb2xsb3dlcl9j b21iaW5lZAogICAgYy5tYWtlQ29ubmVjdGlvbih0KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3Byb3RvY29sLnB5IiwgbGluZSA1 MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBzZWxmLmNvbm5lY3Rpb25NYWRlKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5Niwg aW4gY29ubmVjdGlvbk1hZGUKICAgIHNlbGYuX3JlY29yZC5zZXRfcm9sZV9mb2xsb3dlcigpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfZm9sbG93ZXJfY29t YmluZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25uZWN0aW9uKQp0 ZXN0X2ZvbGxvd2VyX2NvbWJpbmVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29u bmVjdGlvbi5weSIsIGxpbmUgNTk2LCBpbiBjb25uZWN0aW9uTWFkZQogICAgc2VsZi5fcmVjb3Jk LnNldF9yb2xlX2ZvbGxvd2VyKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAg IGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGlu IGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2Rl KHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6 IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpF UlJPUjogdGVzdF9ub19yZWxheV9mb2xsb3dlciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9j b25uZWN0aW9uLkNvbm5lY3Rpb24pCnRlc3Rfbm9fcmVsYXlfZm9sbG93ZXIKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5IiwgbGluZSAxODMsIGluIHRlc3Rfbm9fcmVsYXlfZm9s bG93ZXIKICAgIHJldHVybiBzZWxmLl90ZXN0X25vX3JlbGF5KEZPTExPV0VSKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkiLCBsaW5l IDY5LCBpbiBfdGVzdF9ub19yZWxheQogICAgYy5tYWtlQ29ubmVjdGlvbih0KQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3Byb3Rv Y29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBzZWxmLmNvbm5lY3Rpb25N YWRlKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24u cHkiLCBsaW5lIDU5NiwgaW4gY29ubmVjdGlvbk1hZGUKICAgIHNlbGYuX3JlY29yZC5zZXRfcm9s ZV9mb2xsb3dlcigpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3Rfbm9fcmVsYXlfZm9sbG93ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlv bi5Db25uZWN0aW9uKQp0ZXN0X25vX3JlbGF5X2ZvbGxvd2VyCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2Vi YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIsIGxpbmUgNTk2LCBpbiBjb25uZWN0aW9uTWFkZQog ICAgc2VsZi5fcmVjb3JkLnNldF9yb2xlX2ZvbGxvd2VyKCkKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQs IGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0 ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1 bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFs dWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9ub19yZWxheV9sZWFkZXIgKHdvcm1ob2xlLnRlc3Qu ZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25uZWN0aW9uKQp0ZXN0X25vX3JlbGF5X2xlYWRlcgot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAq Kmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNz ZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBs aW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRy YWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDE4MCwgaW4gdGVzdF9u b19yZWxheV9sZWFkZXIKICAgIHJldHVybiBzZWxmLl90ZXN0X25vX3JlbGF5KExFQURFUikKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5 IiwgbGluZSA2OSwgaW4gX3Rlc3Rfbm9fcmVsYXkKICAgIGMubWFrZUNvbm5lY3Rpb24odCkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9wcm90b2NvbC5weSIsIGxpbmUgNTE0LCBpbiBtYWtlQ29ubmVjdGlvbgogICAgc2VsZi5jb25u ZWN0aW9uTWFkZSgpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9jb25u ZWN0aW9uLnB5IiwgbGluZSA1OTQsIGluIGNvbm5lY3Rpb25NYWRlCiAgICBzZWxmLl9yZWNvcmQu c2V0X3JvbGVfbGVhZGVyKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRl ZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRl Y29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRl bXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFu IGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJP UjogdGVzdF9ub19yZWxheV9sZWFkZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVj dGlvbi5Db25uZWN0aW9uKQp0ZXN0X25vX3JlbGF5X2xlYWRlcgotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5NCwgaW4gY29ubmVjdGlvbk1hZGUK ICAgIHNlbGYuX3JlY29yZC5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwg aW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRl ZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVu Y3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1 ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9yZWxheQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0 X2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDE4OCwgaW4gdGVzdF9yZWxheQogICAgYy5tYWtlQ29ubmVj dGlvbih0KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAg ICBzZWxmLmNvbm5lY3Rpb25NYWRlKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Rp bGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5MSwgaW4gY29ubmVjdGlvbk1hZGUKICAgIGZy YW1lci51c2VfcmVsYXkoc2VsZi5fcmVsYXlfaGFuZHNoYWtlKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIz NCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29y YXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4g ZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2 YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMp Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50 ZXN0X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9yZWxheQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5MSwgaW4gY29ubmVjdGlvbk1hZGUK ICAgIGZyYW1lci51c2VfcmVsYXkoc2VsZi5fcmVsYXlfaGFuZHNoYWtlKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBs aW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9u KGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICBy ZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwg KnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBj b2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUg Ynl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlbGF5X2JhZF9yZXNwb25zZSAod29y bWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0aW9uLkNvbm5lY3Rpb24pCnRlc3RfcmVsYXlf YmFkX3Jlc3BvbnNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdGlvbi5weSIsIGxpbmUg MjI0LCBpbiB0ZXN0X3JlbGF5X2JhZF9yZXNwb25zZQogICAgYy5tYWtlQ29ubmVjdGlvbih0KQog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVy bmV0L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBzZWxmLmNv bm5lY3Rpb25NYWRlKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nv bm5lY3Rpb24ucHkiLCBsaW5lIDU5MSwgaW4gY29ubmVjdGlvbk1hZGUKICAgIGZyYW1lci51c2Vf cmVsYXkoc2VsZi5fcmVsYXlfaGFuZHNoYWtlKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X3JlbGF5X2JhZF9yZXNwb25zZSAod29ybWhvbGUudGVzdC5kaWxh dGUudGVzdF9jb25uZWN0aW9uLkNvbm5lY3Rpb24pCnRlc3RfcmVsYXlfYmFkX3Jlc3BvbnNlCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIsIGxpbmUgNTkxLCBp biBjb25uZWN0aW9uTWFkZQogICAgZnJhbWVyLnVzZV9yZWxheShzZWxmLl9yZWxheV9oYW5kc2hh a2UpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJl cXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcmVsYXlf amlsdGVkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikK dGVzdF9yZWxheV9qaWx0ZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNh bGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAg cmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5X aXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1sy XSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9w eXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlv bi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4g cnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5Iiwg bGluZSAyMTEsIGluIHRlc3RfcmVsYXlfamlsdGVkCiAgICBjLm1ha2VDb25uZWN0aW9uKHQpCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvcHJvdG9jb2wucHkiLCBsaW5lIDUxNCwgaW4gbWFrZUNvbm5lY3Rpb24KICAgIHNlbGYuY29u bmVjdGlvbk1hZGUoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29u bmVjdGlvbi5weSIsIGxpbmUgNTkxLCBpbiBjb25uZWN0aW9uTWFkZQogICAgZnJhbWVyLnVzZV9y ZWxheShzZWxmLl9yZWxheV9oYW5kc2hha2UpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dl dF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihj b3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlw ZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KRVJST1I6IHRlc3RfcmVsYXlfamlsdGVkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9yZWxheV9qaWx0ZWQKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpU cmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19kaWxhdGlvbi9jb25uZWN0aW9uLnB5IiwgbGluZSA1OTEsIGluIGNvbm5lY3Rpb25N YWRlCiAgICBmcmFtZXIudXNlX3JlbGF5KHNlbGYuX3JlbGF5X2hhbmRzaGFrZSkKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9kaXNqb2ludF92ZXJzaW9ucyAo d29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3REaWxhdG9yKQp0ZXN0X2Rpc2pv aW50X3ZlcnNpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfbWFuYWdlci5weSIsIGxpbmUgMTU0 LCBpbiB0ZXN0X2Rpc2pvaW50X3ZlcnNpb25zCiAgICBkaWwuZ290X3dvcm1ob2xlX3ZlcnNpb25z KHsiY2FuLWRpbGF0ZSI6IFstMV19KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGls YXRpb24vbWFuYWdlci5weSIsIGxpbmUgNjQxLCBpbiBnb3Rfd29ybWhvbGVfdmVyc2lvbnMKICAg IHNlbGYuX21hbmFnZXIuZ290X3dvcm1ob2xlX3ZlcnNpb25zKHRoZWlyX3dvcm1ob2xlX3ZlcnNp b25zKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vbWFuYWdlci5weSIs IGxpbmUgMTkzLCBpbiBnb3Rfd29ybWhvbGVfdmVyc2lvbnMKICAgIHNlbGYuc3RhcnQoKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAo Z290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3BlZXJfY2Fubm90X2Rp bGF0ZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3REaWxhdG9yKQp0ZXN0 X3BlZXJfY2Fubm90X2RpbGF0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X21hbmFnZXIucHkiLCBs aW5lIDE0NCwgaW4gdGVzdF9wZWVyX2Nhbm5vdF9kaWxhdGUKICAgIGRpbC5nb3Rfd29ybWhvbGVf dmVyc2lvbnMoe30pICAjIG1pc3NpbmcgImNhbi1kaWxhdGUiCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19kaWxhdGlvbi9tYW5hZ2VyLnB5IiwgbGluZSA2NDEsIGluIGdvdF93b3JtaG9s ZV92ZXJzaW9ucwogICAgc2VsZi5fbWFuYWdlci5nb3Rfd29ybWhvbGVfdmVyc2lvbnModGhlaXJf d29ybWhvbGVfdmVyc2lvbnMpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlv bi9tYW5hZ2VyLnB5IiwgbGluZSAxOTMsIGluIGdvdF93b3JtaG9sZV92ZXJzaW9ucwogICAgc2Vs Zi5zdGFydCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1 dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IK ICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMy LCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5f X2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBp biBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rf Zm9sbG93ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikK dGVzdF9mb2xsb3dlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1 bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhX YXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhv bi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndp dGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5X aXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X21hbmFnZXIucHkiLCBsaW5lIDQ0 NCwgaW4gdGVzdF9mb2xsb3dlcgogICAgbS5nb3Rfd29ybWhvbGVfdmVyc2lvbnMoeyJjYW4tZGls YXRlIjogWyIxIl19KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vbWFu YWdlci5weSIsIGxpbmUgMTkzLCBpbiBnb3Rfd29ybWhvbGVfdmVyc2lvbnMKICAgIHNlbGYuc3Rh cnQoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2xlYWRl ciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3RNYW5hZ2VyKQp0ZXN0X2xl YWRlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCph cmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQu cHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2Vi YWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fybmlu Z3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X21hbmFnZXIucHkiLCBsaW5lIDI0NSwgaW4gdGVz dF9sZWFkZXIKICAgIG0uZ290X3dvcm1ob2xlX3ZlcnNpb25zKHsiY2FuLWRpbGF0ZSI6IFsiMSJd fSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL21hbmFnZXIucHkiLCBs aW5lIDE5MywgaW4gZ290X3dvcm1ob2xlX3ZlcnNpb25zCiAgICBzZWxmLnN0YXJ0KCkKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2Fs LnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJn cyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlm dW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlv bgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hh bmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICBy ZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9taXJyb3IgKHdvcm1ob2xl LnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikKdGVzdF9taXJyb3IKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHki LCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAg ICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0 NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJh Y2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3Nl ZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC9kaWxhdGUvdGVzdF9tYW5hZ2VyLnB5IiwgbGluZSA1NDksIGluIHRlc3RfbWlycm9yCiAg ICBtLnN0YXJ0KCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF91bmtub3duX21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0 TWFuYWdlcikKdGVzdF91bmtub3duX21lc3NhZ2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVE ZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFd LCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJh aXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBs aW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwg KiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9tYW5h Z2VyLnB5IiwgbGluZSA2MjEsIGluIHRlc3RfdW5rbm93bl9tZXNzYWdlCiAgICBtLnN0YXJ0KCkK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRo b2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAq Kmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJu IGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlm dW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBj b2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2Rl CiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWly ZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jcmVhdGUgKHdv cm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5IYWxmQ2xvc2VhYmxlKQp0ZXN0X2Ny ZWF0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCph cmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQu cHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2Vi YWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fybmlu Z3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDE1OCwgaW4g dGVzdF9jcmVhdGUKICAgIHNjLCBtLCBzY2lkLCBob3N0YWRkciwgcGVlcmFkZHIsIHAgPSBtYWtl X3NjKGhhbGZfY2xvc2VhYmxlPVRydWUpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNj Ll9zZXRfcHJvdG9jb2wocCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9u L3N1YmNoYW5uZWwucHkiLCBsaW5lIDI1MSwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25u ZWN0X3Byb3RvY29sX2hhbGYoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAg ZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4g ZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUo dGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjog YW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVS Uk9SOiB0ZXN0X2xvY2FsX2Nsb3NlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5u ZWwuSGFsZkNsb3NlYWJsZSkKdGVzdF9sb2NhbF9jbG9zZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0 X3N1YmNoYW5uZWwucHkiLCBsaW5lIDE2NSwgaW4gdGVzdF9sb2NhbF9jbG9zZQogICAgc2MsIG0s IHNjaWQsIGhvc3RhZGRyLCBwZWVyYWRkciwgcCA9IG1ha2Vfc2MoaGFsZl9jbG9zZWFibGU9VHJ1 ZSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFu bmVsLnB5IiwgbGluZSAyNCwgaW4gbWFrZV9zYwogICAgc2MuX3NldF9wcm90b2NvbChwKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vc3ViY2hhbm5lbC5weSIsIGxpbmUg MjUxLCBpbiBfc2V0X3Byb3RvY29sCiAgICBzZWxmLmNvbm5lY3RfcHJvdG9jb2xfaGFsZigpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcmVtb3RlX2Nsb3Nl ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuSGFsZkNsb3NlYWJsZSkKdGVz dF9yZW1vdGVfY2xvc2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFubmVsLnB5IiwgbGlu ZSAyMTIsIGluIHRlc3RfcmVtb3RlX2Nsb3NlCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBl ZXJhZGRyLCBwID0gbWFrZV9zYyhoYWxmX2Nsb3NlYWJsZT1UcnVlKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDI0LCBp biBtYWtlX3NjCiAgICBzYy5fc2V0X3Byb3RvY29sKHApCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5IiwgbGluZSAyNTEsIGluIF9zZXRfcHJvdG9j b2wKICAgIHNlbGYuY29ubmVjdF9wcm90b2NvbF9oYWxmKCkKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQs IGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0 ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1 bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFs dWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV9iZWZvcmVfb3BlbiAod29ybWhvbGUudGVz dC5kaWxhdGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3RfY2xvc2VfYmVmb3Jl X29wZW4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigq YXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0 LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNl YmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFubmVsLnB5IiwgbGluZSAxMjksIGlu IHRlc3RfY2xvc2VfYmVmb3JlX29wZW4KICAgIHNjLnJlbW90ZV9jbG9zZSgpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIs IGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJv c3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rp b24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAg IHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMp LCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJu IGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlw ZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY29uc3VtZXIgKHdvcm1ob2xlLnRl c3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X2NvbnN1bWVyCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVy LnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoq a3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3Nl ZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxp bmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJh Y2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMTQ5LCBpbiB0ZXN0X2Nv bnN1bWVyCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBlZXJhZGRyLCBwID0gbWFrZV9zYygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5l bC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNjLl9zZXRfcHJvdG9jb2wocCkKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwucHkiLCBsaW5lIDI1 NCwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25uZWN0X3Byb3RvY29sX2Z1bGwoKTsKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2Rp Y2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3 YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNv cHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5j dGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2Rl Y2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAg ICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQg KGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jcmVhdGUgKHdvcm1o b2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X2NyZWF0 ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdz LCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHki LCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNr KHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDM2LCBpbiB0ZXN0 X2NyZWF0ZQogICAgc2MsIG0sIHNjaWQsIGhvc3RhZGRyLCBwZWVyYWRkciwgcCA9IG1ha2Vfc2Mo KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5u ZWwucHkiLCBsaW5lIDI0LCBpbiBtYWtlX3NjCiAgICBzYy5fc2V0X3Byb3RvY29sKHApCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5IiwgbGluZSAy NTQsIGluIF9zZXRfcHJvdG9jb2wKICAgIHNlbGYuY29ubmVjdF9wcm90b2NvbF9mdWxsKCk7CiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfZGF0YSAod29ybWhv bGUudGVzdC5kaWxhdGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3RfZGF0YQot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAq Kmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNz ZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBs aW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRy YWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDEwNCwgaW4gdGVzdF9k YXRhCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBlZXJhZGRyLCBwID0gbWFrZV9zYygpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5w eSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNjLl9zZXRfcHJvdG9jb2wocCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwucHkiLCBsaW5lIDI1NCwg aW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25uZWN0X3Byb3RvY29sX2Z1bGwoKTsKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2Fs LnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJn cyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlm dW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlv bgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hh bmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICBy ZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9kYXRhX2JlZm9yZV9vcGVu ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hhbm5lbEFQSSkKdGVz dF9kYXRhX2JlZm9yZV9vcGVuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAg IHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9b Ml0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv cHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRp b24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGlu IHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIs IGxpbmUgMTE2LCBpbiB0ZXN0X2RhdGFfYmVmb3JlX29wZW4KICAgIHNjLnJlbW90ZV9kYXRhKGIi ZGF0YTEiKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQo KmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAg ICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwg aW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19j b2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4g Y29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBp cyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2xv Y2FsX2Nsb3NlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hhbm5l bEFQSSkKdGVzdF9sb2NhbF9jbG9zZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNl bnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVk CiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGlu IHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19p bmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhj ZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3 LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwu cHkiLCBsaW5lIDY0LCBpbiB0ZXN0X2xvY2FsX2Nsb3NlCiAgICBzYywgbSwgc2NpZCwgaG9zdGFk ZHIsIHBlZXJhZGRyLCBwID0gbWFrZV9zYygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAg IHNjLl9zZXRfcHJvdG9jb2wocCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0 aW9uL3N1YmNoYW5uZWwucHkiLCBsaW5lIDI1NCwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5j b25uZWN0X3Byb3RvY29sX2Z1bGwoKTsKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18K ICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAs IGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHlj b2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJy b3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpFUlJPUjogdGVzdF9sb2NhbF9kb3VibGVfY2xvc2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRl c3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X2xvY2FsX2RvdWJsZV9jbG9zZQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3 KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5l IDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNl YmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDc5LCBpbiB0ZXN0X2xvY2Fs X2RvdWJsZV9jbG9zZQogICAgc2MsIG0sIHNjaWQsIGhvc3RhZGRyLCBwZWVyYWRkciwgcCA9IG1h a2Vfc2MoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1 YmNoYW5uZWwucHkiLCBsaW5lIDI0LCBpbiBtYWtlX3NjCiAgICBzYy5fc2V0X3Byb3RvY29sKHAp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5Iiwg bGluZSAyNTQsIGluIF9zZXRfcHJvdG9jb2wKICAgIHNlbGYuY29ubmVjdF9wcm90b2NvbF9mdWxs KCk7CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJl cXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcHJvZHVj ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0 ZXN0X3Byb2R1Y2VyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUg MTM2LCBpbiB0ZXN0X3Byb2R1Y2VyCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBlZXJhZGRy LCBwID0gbWFrZV9zYygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRl L3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNjLl9zZXRfcHJv dG9jb2wocCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5u ZWwucHkiLCBsaW5lIDI1NCwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25uZWN0X3Byb3Rv Y29sX2Z1bGwoKTsKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9yZW1vdGVfY2xvc2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJD aGFubmVsQVBJKQp0ZXN0X3JlbW90ZV9jbG9zZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURl ZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAy MjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0s IGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFp c2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxp bmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAq Kmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNo YW5uZWwucHkiLCBsaW5lIDk3LCBpbiB0ZXN0X3JlbW90ZV9jbG9zZQogICAgc2MsIG0sIHNjaWQs IGhvc3RhZGRyLCBwZWVyYWRkciwgcCA9IG1ha2Vfc2MoKQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDI0LCBpbiBtYWtl X3NjCiAgICBzYy5fc2V0X3Byb3RvY29sKHApCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L19kaWxhdGlvbi9zdWJjaGFubmVsLnB5IiwgbGluZSAyNTQsIGluIF9zZXRfcHJvdG9jb2wKICAg IHNlbGYuY29ubmVjdF9wcm90b2NvbF9mdWxsKCk7CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBf X2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBs aW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJv c3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlv bihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykK VHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KRVJST1I6IHRlc3Rfd3JpdGUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3Vi Y2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X3dyaXRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNr IChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1h eWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBs aW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5m b1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAg ICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5 IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYo KmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5k cnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rf c3ViY2hhbm5lbC5weSIsIGxpbmUgNDMsIGluIHRlc3Rfd3JpdGUKICAgIHNjLCBtLCBzY2lkLCBo b3N0YWRkciwgcGVlcmFkZHIsIHAgPSBtYWtlX3NjKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFubmVsLnB5IiwgbGluZSAyNCwgaW4gbWFrZV9z YwogICAgc2MuX3NldF9wcm90b2NvbChwKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9f ZGlsYXRpb24vc3ViY2hhbm5lbC5weSIsIGxpbmUgMjU0LCBpbiBfc2V0X3Byb3RvY29sCiAgICBz ZWxmLmNvbm5lY3RfcHJvdG9jb2xfZnVsbCgpOwogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X3dyaXRlX3doZW5fY2xvc2luZyAod29ybWhvbGUudGVzdC5kaWxh dGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3Rfd3JpdGVfd2hlbl9jbG9zaW5n Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2Rl ZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3Ms ICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJl c3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIs IGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2so dHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgNTIsIGluIHRlc3Rf d3JpdGVfd2hlbl9jbG9zaW5nCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBlZXJhZGRyLCBw ID0gbWFrZV9zYygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rl c3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNjLl9zZXRfcHJvdG9j b2wocCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwu cHkiLCBsaW5lIDI1NCwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25uZWN0X3Byb3RvY29s X2Z1bGwoKTsKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0 KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgog ICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIs IGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9f Y29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGlu IGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIg aXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9i YWRfaGFuZHNoYWtlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRl c3RfYmFkX2hhbmRzaGFrZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICBy ZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJd KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5 dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9u LndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBy dW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3JlY29yZC5weSIsIGxpbmUg ODYsIGluIHRlc3RfYmFkX2hhbmRzaGFrZQogICAgci5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwu cHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdz KToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1 bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9u CiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFu Z2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJl dHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290 IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2JhZF9tZXNzYWdlICh3b3Jt aG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRlc3RfYmFkX21lc3NhZ2UKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIu cHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKipr dykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2Vk CiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGlu ZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFj ZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJl c3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvdGVzdC9kaWxhdGUvdGVzdF9yZWNvcmQucHkiLCBsaW5lIDExMSwgaW4gdGVzdF9iYWRfbWVz c2FnZQogICAgci5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X2dvb2QgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfcmVjb3Jk LlJlY29yZCkKdGVzdF9nb29kCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAg IHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9b Ml0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv cHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRp b24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGlu IHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcmVjb3JkLnB5IiwgbGlu ZSAxOTAsIGluIHRlc3RfZ29vZAogICAgciwgZiwgbiA9IG1ha2VfcmVjb3JkKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9yZWNvcmQucHkiLCBsaW5lIDE3 LCBpbiBtYWtlX3JlY29yZAogICAgci5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2dvb2QyICh3b3JtaG9sZS50ZXN0LmRpbGF0 ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRlc3RfZ29vZDIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sg KG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5 YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxp bmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZv WzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAg IHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHki LCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigq YSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9y ZWNvcmQucHkiLCBsaW5lIDM2LCBpbiB0ZXN0X2dvb2QyCiAgICByLnNldF9yb2xlX2xlYWRlcigp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVp cmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfc2VuZF9yZWNv cmQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfcmVjb3JkLlJlY29yZCkKdGVzdF9zZW5kX3Jl Y29yZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCph cmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQu cHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2Vi YWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fybmlu Z3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3JlY29yZC5weSIsIGxpbmUgMTMzLCBpbiB0ZXN0 X3NlbmRfcmVjb3JkCiAgICByLnNldF9yb2xlX2xlYWRlcigpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYmFkX3Byb2xvZ3VlX2xlbmd0aCAod29ybWhvbGUu dGVzdC5kaWxhdGUudGVzdF9mcmFtZXIuRnJhbWVyKQp0ZXN0X2JhZF9wcm9sb2d1ZV9sZW5ndGgK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVm ZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywg KiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5Iiwg bGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0 cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3Vw cHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9mcmFtZXIucHkiLCBsaW5lIDIxLCBpbiB0ZXN0X2JhZF9w cm9sb2d1ZV9sZW5ndGgKICAgIGYuY29ubmVjdGlvbk1hZGUoKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIz NCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29y YXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4g ZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2 YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMp Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2JhZF9wcm9sb2d1ZV9uZXdsaW5lICh3b3JtaG9s ZS50ZXN0LmRpbGF0ZS50ZXN0X2ZyYW1lci5GcmFtZXIpCnRlc3RfYmFkX3Byb2xvZ3VlX25ld2xp bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv ZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJn cywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5 IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFj ayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdz U3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9mcmFtZXIucHkiLCBsaW5lIDM5LCBpbiB0ZXN0X2Jh ZF9wcm9sb2d1ZV9uZXdsaW5lCiAgICBmLmNvbm5lY3Rpb25NYWRlKCkKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGlu ZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihk ZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0 dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2 YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29k ZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5 dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9iYWRfcmVsYXkgKHdvcm1ob2xlLnRlc3Qu ZGlsYXRlLnRlc3RfZnJhbWVyLkZyYW1lcikKdGVzdF9iYWRfcmVsYXkKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpU cmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0 bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1 MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGls cy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNl KGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJl cmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv dXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVz dWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxh dGUvdGVzdF9mcmFtZXIucHkiLCBsaW5lIDcyLCBpbiB0ZXN0X2JhZF9yZWxheQogICAgZi51c2Vf cmVsYXkoYiJyZWxheSBoYW5kc2hha2VcbiIpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dl dF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihj b3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlw ZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KRVJST1I6IHRlc3RfZnJhbWUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZnJhbWVy LkZyYW1lcikKdGVzdF9mcmFtZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2ZyYW1lci5weSIsIGxp bmUgMTAxLCBpbiB0ZXN0X2ZyYW1lCiAgICBmLmNvbm5lY3Rpb25NYWRlKCkKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5Iiwg bGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlv bihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAg cmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyks ICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4g Y29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBl IGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9nb29kX3Byb2xvZ3VlICh3b3JtaG9s ZS50ZXN0LmRpbGF0ZS50ZXN0X2ZyYW1lci5GcmFtZXIpCnRlc3RfZ29vZF9wcm9sb2d1ZQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3 KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5l IDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNl YmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L2RpbGF0ZS90ZXN0X2ZyYW1lci5weSIsIGxpbmUgNTcsIGluIHRlc3RfZ29vZF9wcm9s b2d1ZQogICAgZi5jb25uZWN0aW9uTWFkZSgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dl dF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihj b3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlw ZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KRVJST1I6IHRlc3RfZ29vZF9yZWxheSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9m cmFtZXIuRnJhbWVyKQp0ZXN0X2dvb2RfcmVsYXkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVE ZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFd LCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJh aXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBs aW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwg KiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9mcmFt ZXIucHkiLCBsaW5lIDg3LCBpbiB0ZXN0X2dvb2RfcmVsYXkKICAgIGYudXNlX3JlbGF5KGIicmVs YXkgaGFuZHNoYWtlXG4iKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVm IGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVj b3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVt cGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4g aW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9S OiB0ZXN0X2FsbG9jYXRlX2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5EZWxlZ2F0 ZWQpCnRlc3RfYWxsb2NhdGVfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNl bnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxi YWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSAxMDQsIGluIHRlc3RfYWxsb2NhdGVf Y29kZQogICAgdzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0 b3IsIGRlbGVnYXRlPWRnKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5w eSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwg YXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMg Z2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRf XwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxm Ll9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHki LCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29u bmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJz IGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+ IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4g X19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVk KGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywg aW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChm YWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRl ZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRl Y29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRl bXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFu IGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJP UjogdGVzdF9kZWxlZ2F0ZWQgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5EZWxlZ2F0ZWQp CnRlc3RfZGVsZWdhdGVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAg ICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDcxLCBpbiB0ZXN0X2RlbGVnYXRlZAogICAgdzEg PSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IsIGRlbGVnYXRl PWRnKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkw LCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1o b2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGlu aXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5f X2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3Mu cHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3Jr ZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBp biBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYu X3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwg aW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0 X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZh aWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5l Y3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9pbnB1 dF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRGVsZWdhdGVkKQp0ZXN0X2lucHV0 X2NvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9 IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93 b3JtaG9sZS5weSIsIGxpbmUgMTEyLCBpbiB0ZXN0X2lucHV0X2NvZGUKICAgIHcxID0gd29ybWhv bGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yLCBkZWxlZ2F0ZT1kZykKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3Jl YXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJz aW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1o b2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19w b3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGlu ZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxk X3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNl bGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3Jt aG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5p dF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18K ICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1m YWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv YXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAg IHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsb2NhdGVfYW5k X3NldF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRXJyb3JzKQp0ZXN0X2FsbG9j YXRlX2FuZF9zZXRfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwog ICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA2MTMsIGluIHRlc3RfYWxsb2NhdGVfYW5kX3Nl dF9jb2RlCiAgICB3ID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFj dG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkw LCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1o b2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGlu aXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5f X2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3Mu cHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3Jr ZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBp biBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYu X3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwg aW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0 X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZh aWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5l Y3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9kZXJp dmVfa2V5X2Vhcmx5ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRXJyb3JzKQp0ZXN0X2Rl cml2ZV9rZXlfZWFybHkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAg IHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUgNTk2LCBpbiB0ZXN0X2Rlcml2ZV9rZXlfZWFybHkK ICAgIHcgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNy ZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVy c2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3Jt aG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNf cG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxp bmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWls ZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBz ZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29y bWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2lu aXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9f CiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9 ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAg ICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhv ZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoq a3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4g Y29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1 bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNv ZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUK ICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJl ZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X211bHRpcGxlX3Nl dF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRXJyb3JzKQp0ZXN0X211bHRpcGxl X3NldF9jb2RlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1 bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3Rfd29ybWhvbGUucHkiLCBsaW5lIDYwNCwgaW4gdGVzdF9tdWx0aXBsZV9zZXRfY29kZQogICAg dyA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvcikKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRl CiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9u cywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xl Ll9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0 X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5k cnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1 MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dv cmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYu X2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9f CiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAg IGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBw bGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJl dHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNh bC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2Fy Z3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5 ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rp b24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNo YW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAg cmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChn b3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsX2RlZmVycmVkcyAo d29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkluaXRpYWxGYWlsdXJlKQp0ZXN0X2FsbF9kZWZl cnJlZHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9 IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93 b3JtaG9sZS5weSIsIGxpbmUgNzI0LCBpbiB0ZXN0X2FsbF9kZWZlcnJlZHMKICAgIHcgPSB3b3Jt aG9sZS5jcmVhdGUoQVBQSUQsICJ3czovLzEyNy4wLjAuMTolZC92MSIgJSBwb3J0LCByZWFjdG9y KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBp biBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xl X3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQg d29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0 dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHki LCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJz KCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBf YnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3Vy bCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4g X19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2lu aXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1 cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3Rl ZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19t ZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdz LCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0 dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNv cHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9f LCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHlj b2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVx dWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9iYWRfZG5z ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuSW5pdGlhbEZhaWx1cmUpCnRlc3RfYmFkX2Ru cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5z ZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1o b2xlLnB5IiwgbGluZSA2ODMsIGluIHRlc3RfYmFkX2RucwogICAgdyA9IHdvcm1ob2xlLmNyZWF0 ZSgKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwg aW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9s ZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19h dHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5 IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2Vy cygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9t YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4g X2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91 cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGlu IF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0 ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVy ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJl cXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfbm9fY29u bmVjdGlvbiAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkluaXRpYWxGYWlsdXJlKQp0ZXN0 X25vX2Nvbm5lY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAg IHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUgNzA3LCBpbiB0ZXN0X25vX2Nvbm5lY3Rpb24KICAg IHcgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsICJ3czovLzEyNy4wLjAuMTolZC92MSIgJSBwb3J0 LCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxp bmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQs IHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJh dGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAg c2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv X2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWls ZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5l IDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9y KHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVy YXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGlu ZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRy c19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxB ZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hl bkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0 ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9iYXNpYyAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLlJlY29ubmVjdGlvbikKdGVzdF9i YXNpYwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0g Zy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dv cm1ob2xlLnB5IiwgbGluZSA2MjQsIGluIHRlc3RfYmFzaWMKICAgIHcxID0gd29ybWhvbGUuY3Jl YXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcs IHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lv biwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBs aW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bv c3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5f UkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3Np ZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJl bmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRy c19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3Vz LnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5l Y3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5l dC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hp bmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQs IGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0 ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1 bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFs dWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9iYXNpYyAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1o b2xlLlRyYWNlKQp0ZXN0X2Jhc2ljCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQK ICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4g cnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2lu Zm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNl cHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcs IGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUg NzQxLCBpbiB0ZXN0X2Jhc2ljCiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgIndzOi8v bG9jYWxob3N0OjEiLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3Jt aG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5 X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8 YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBf X2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAg ICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jv c3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2 b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAi PGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25u ZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRf XygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9t YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4 NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29u bmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUg MTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5l Y3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18K ICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAs IGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHlj b2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJy b3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpFUlJPUjogdGVzdF9kZWxlZ2F0ZWQgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5UcmFj ZSkKdGVzdF9kZWxlZ2F0ZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNh bGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAg cmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5X aXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1sy XSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9w eXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlv bi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4g cnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA3NjQs IGluIHRlc3RfZGVsZWdhdGVkCiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgIndzOi8v bG9jYWxob3N0OjEiLCByZWFjdG9yLCBkZWxlZ2F0ZT1kZykKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3 LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNp b24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+Iiwg bGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19w b3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYu X1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9z aWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5S ZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0 cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91 cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25u ZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJu ZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNo aW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsb2NhdGVfZGVmYXVsdCAod29ybWhvbGUudGVz dC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9hbGxvY2F0ZV9kZWZhdWx0Ci0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5Iiwg bGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBs aW5lIDEzMywgaW4gdGVzdF9hbGxvY2F0ZV9kZWZhdWx0CiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0 ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvcikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBz aWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24s CiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGlu ZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0 X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JD ID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRl LAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5k ZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNf cG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5w eSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0 b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQu cHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5l LndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBp biBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVk LAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5j dGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJv c3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVl cykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsb2NhdGVfbW9yZV93b3JkcyAod29ybWhvbGUudGVz dC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9hbGxvY2F0ZV9tb3JlX3dvcmRzCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5 IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVz dWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHki LCBsaW5lIDE0MywgaW4gdGVzdF9hbGxvY2F0ZV9tb3JlX3dvcmRzCiAgICB3MSA9IHdvcm1ob2xl LmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvcikKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9z cyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3Zl cnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+ IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRy c19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNl bGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxm Ll9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91 cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9f YXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6 dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9j b25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50 ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9t YWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUg MjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVj b3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVy biBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFs dWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUo KnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRl cykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYmFzaWMgKHdvcm1ob2xlLnRlc3QudGVzdF93 b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3RfYmFzaWMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxp bmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUgMTUyLCBpbiB0ZXN0X2Jh c2ljCiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3Rv cikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwg aW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9s ZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19h dHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5 IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2Vy cygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9t YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4g X2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91 cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGlu IF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0 ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVy ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJl cXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vk ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2Nsb3NlZAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJl c3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5 IiwgbGluZSAzNDIsIGluIHRlc3RfY2xvc2VkCiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJ RCwgc2VsZi5yZWxheXVybCwgcmVhY3RvciwgX2V2ZW50dWFsX3F1ZXVlPWVxKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAg IGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBj bGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jv c3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5p dF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBp biBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2Vy cwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBw aWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9y ZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAg IHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9 IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNh dGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJu IHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZWRfaWRsZSAod29ybWhv bGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9jbG9zZWRfaWRsZQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIs IGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3Vs dCkKU3RvcEl0ZXJhdGlvbgoKRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24s IGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAg ICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDM2NiwgaW4gdGVzdF9jbG9zZWRfaWRsZQogICAg dzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0 ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lv bnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9z dF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUg NTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93 b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxm Ll9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhv bGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRf XwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAg ICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFm KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2Fw cGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICBy ZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAo Z290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Vhcmx5ICh3b3JtaG9s ZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2Vhcmx5Ci0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAx NDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDI3 MywgaW4gdGVzdF9lYXJseQogICAgdzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVs YXl1cmwsIHJlYWN0b3IpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5 IiwgbGluZSAyOTAsIGluIGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBh cHBpZCwgd29ybWhvbGVfdmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBn ZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9f CiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYm9zcy5weSIsIGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYu X2J1aWxkX3dvcmtlcnMoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIs IGxpbmUgNjIsIGluIF9idWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25u ZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMg Z2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4i LCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBf X2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQo ZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBp biB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZh aWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVm IGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVj b3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVt cGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4g aW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9S OiB0ZXN0X2ZpeGVkX2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMp CnRlc3RfZml4ZWRfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwog ICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSAyODYsIGluIHRlc3RfZml4ZWRfY29kZQogICAg dzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0 ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lv bnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9z dF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUg NTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93 b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxm Ll9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhv bGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRf XwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAg ICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFm KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2Fw cGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICBy ZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAo Z290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2dldF9jb2RlX2Vhcmx5 ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2dldF9jb2RlX2Vh cmx5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBn LnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29y bWhvbGUucHkiLCBsaW5lIDIwMywgaW4gdGVzdF9nZXRfY29kZV9lYXJseQogICAgdzEgPSB3b3Jt aG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IsIF9ldmVudHVhbF9xdWV1 ZT1lcSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5 MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3Jt aG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYu X19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3Nz LnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29y a2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2Miwg aW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxm Ll91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQg aW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgs IGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9z dF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJG YWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25u ZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFp bHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlz IHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfZ2V0 X2NvZGVfbGF0ZSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9n ZXRfY29kZV9sYXRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICBy ZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDIxNCwgaW4gdGVzdF9nZXRfY29kZV9sYXRlCiAgICB3 MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvciwgX2V2ZW50 dWFsX3F1ZXVlPWVxKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIs IGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBw aWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2Vu ZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwog ICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9i dWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBs aW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVj dG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdl bmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+Iiwg bGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZh aWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4g d2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWls QWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBk b0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29y YXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBs YXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGlu dGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjog dGVzdF9pbnB1dF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0 ZXN0X2lucHV0X2NvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAg IHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUgMzAwLCBpbiB0ZXN0X2lucHV0X2NvZGUKICAgIHcx ID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUK ICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25z LCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUu X2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3Rf aW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUy LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29y a2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5f YXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xl Ll9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18K ICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAg ZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBs aWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0 dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2Fs LnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJn cyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlm dW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlv bgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hh bmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICBy ZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9pbnRlcmxlYXZlZCAod29y bWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9pbnRlcmxlYXZlZAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJl c3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5 IiwgbGluZSAyNDMsIGluIHRlc3RfaW50ZXJsZWF2ZWQKICAgIHcxID0gd29ybWhvbGUuY3JlYXRl KEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNp ZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5l IDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3Rf aW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMg PSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUs CiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRl enZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19w b3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5 IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rv ci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5w eSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUu d2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9tdWx0aXBsZV9tZXNzYWdlcyAod29ybWhvbGUudGVzdC50 ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9tdWx0aXBsZV9tZXNzYWdlcwotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGlu ZSAzMjIsIGluIHRlc3RfbXVsdGlwbGVfbWVzc2FnZXMKICAgIHcxID0gd29ybWhvbGUuY3JlYXRl KEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNp ZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5l IDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3Rf aW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMg PSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUs CiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRl enZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19w b3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5 IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rv ci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5w eSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUu d2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9yeF9kZWR1cCAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1o b2xlLldvcm1ob2xlcykKdGVzdF9yeF9kZWR1cAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGlu ZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA1NjgsIGluIHRlc3Rfcnhf ZGVkdXAKICAgIHcxID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFj dG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkw LCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1o b2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGlu aXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5f X2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3Mu cHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3Jr ZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBp biBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYu X3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwg aW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0 X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZh aWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5l Y3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9zYW1l X21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3Rfc2Ft ZV9tZXNzYWdlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1 bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3Rfd29ybWhvbGUucHkiLCBsaW5lIDIyNywgaW4gdGVzdF9zYW1lX21lc3NhZ2UKICAgIHcxID0g d29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAg IGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBj bGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jv c3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5p dF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBp biBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2Vy cwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBw aWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9y ZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAg IHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9 IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNh dGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJu IHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF91bmlkaXJlY3Rpb25hbCAod29y bWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF91bmlkaXJlY3Rpb25hbAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5k KHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xl LnB5IiwgbGluZSAyNjAsIGluIHRlc3RfdW5pZGlyZWN0aW9uYWwKICAgIHcxID0gd29ybWhvbGUu Y3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3Nz KHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVy c2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4i LCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJz X3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2Vs Zi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYu X3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3Vz LlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19h dHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2 b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nv bm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRl cm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21h Y2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAy MzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNv cmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJu IGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1 ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgq dmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVz KQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF92ZXJpZmllciAod29ybWhvbGUudGVzdC50ZXN0 X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF92ZXJpZmllcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4g X2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA1MTMsIGluIHRl c3RfdmVyaWZpZXIKICAgIHcxID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJs LCByZWFjdG9yLCBfZXZlbnR1YWxfcXVldWU9ZXEpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lk ZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAog IEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUg MjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9 IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6 dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bv c3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHki LCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9y LndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5 IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53 aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4g X19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rp b24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMp ClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CkVSUk9SOiB0ZXN0X3ZlcnNpb25zICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhv bGUuV29ybWhvbGVzKQp0ZXN0X3ZlcnNpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0 IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5l Q2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDU0MSwgaW4gdGVzdF92ZXJz aW9ucwogICAgdzEgPSB3b3JtaG9sZS5jcmVhdGUoCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lk ZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAog IEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUg MjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9 IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6 dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bv c3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHki LCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9y LndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5 IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53 aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4g X19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rp b24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMp ClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CkVSUk9SOiB0ZXN0X3dlbGNvbWUgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9s ZS5Xb3JtaG9sZXMpCnRlc3Rfd2VsY29tZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNh bGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA0OTMsIGluIHRlc3Rfd2VsY29t ZQogICAgdzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3Ip CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGlu IGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVf dmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3 b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0 cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIs IGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMo KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9i dWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJs LCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQg d29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBf X2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5p dF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVy ZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVk CiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21l dGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3Ms ICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1 cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29w eWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18s IGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNv ZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1 aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3dyb25nX3Bh c3N3b3JkICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25n X3Bhc3N3b3JkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1 bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3Rfd29ybWhvbGUucHkiLCBsaW5lIDM4OSwgaW4gdGVzdF93cm9uZ19wYXNzd29yZAogICAgdzEg PSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IsIF9ldmVudHVh bF9xdWV1ZT1lcSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBs aW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlk LCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVy YXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAg IHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVp bGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGlu ZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3Rv cihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5l cmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxp bmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0 cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWls QWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdo ZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFm dGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3Rfd3JvbmdfcGFzc3dvcmRfd2l0aF9sZWFkaW5nX3NwYWNlICh3b3JtaG9sZS50ZXN0LnRlc3Rf d29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfbGVhZGluZ19zcGFj ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5z ZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1o b2xlLnB5IiwgbGluZSA0NzMsIGluIHRlc3Rfd3JvbmdfcGFzc3dvcmRfd2l0aF9sZWFkaW5nX3Nw YWNlCiAgICB3ID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9y KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBp biBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xl X3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQg d29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0 dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHki LCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJz KCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBf YnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3Vy bCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4g X19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2lu aXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1 cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3Rl ZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19t ZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdz LCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0 dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNv cHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9f LCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHlj b2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVx dWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF93cm9uZ19w YXNzd29yZF93aXRoX25vbl9udW1lcmljX25hbWVwbGF0ZSAod29ybWhvbGUudGVzdC50ZXN0X3dv cm1ob2xlLldvcm1ob2xlcykKdGVzdF93cm9uZ19wYXNzd29yZF93aXRoX25vbl9udW1lcmljX25h bWVwbGF0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0 ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0 X3dvcm1ob2xlLnB5IiwgbGluZSA0ODMsIGluIHRlc3Rfd3JvbmdfcGFzc3dvcmRfd2l0aF9ub25f bnVtZXJpY19uYW1lcGxhdGUKICAgIHcgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVs YXl1cmwsIHJlYWN0b3IpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5 IiwgbGluZSAyOTAsIGluIGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBh cHBpZCwgd29ybWhvbGVfdmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBn ZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9f CiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYm9zcy5weSIsIGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYu X2J1aWxkX3dvcmtlcnMoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIs IGxpbmUgNjIsIGluIF9idWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25u ZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMg Z2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4i LCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBf X2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQo ZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBp biB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZh aWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVm IGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVj b3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVt cGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4g aW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9S OiB0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfc3BhY2VzICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29y bWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfc3BhY2VzCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5Iiwg bGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBs aW5lIDQ2MywgaW4gdGVzdF93cm9uZ19wYXNzd29yZF93aXRoX3NwYWNlcwogICAgdyA9IHdvcm1o b2xlLmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvcikKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0g Qm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50 X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJv c3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAg IHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBz ZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6 dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxm Ll9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVu ZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxm Ll9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24v aW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxm Ll9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxp bmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24o ZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJl dHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAq dmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNv ZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBi eXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfb3ZlcnJpZGUgKHdvcm1ob2xlLnRlc3Qu dGVzdF9jbGkuQXBwSUQpCnRlc3Rfb3ZlcnJpZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3Qv dGVzdF9jbGkucHkiLCBsaW5lIDExOTksIGluIHRlc3Rfb3ZlcnJpZGUKICAgIHlpZWxkIHNlbmRf ZAogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1 bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21k X3NlbmQucHkiLCBsaW5lIDY2LCBpbiBnbwogICAgdyA9IGNyZWF0ZSgKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0g Qm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50 X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJv c3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAg IHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBz ZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6 dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxm Ll9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVu ZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxm Ll9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24v aW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxm Ll9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxp bmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24o ZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJl dHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAq dmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNv ZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBi eXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfdGV4dCAod29ybWhvbGUudGVzdC50ZXN0 X2NsaS5DbGVhbnVwKQp0ZXN0X3RleHQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9j bGkucHkiLCBsaW5lIDExMDcsIGluIHRlc3RfdGV4dAogICAgeWllbGQgc2VuZF9kCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVm ZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2Vu ZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5k cnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfc2VuZC5weSIs IGxpbmUgNjYsIGluIGdvCiAgICB3ID0gY3JlYXRlKAogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNp ZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5l IDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3Rf aW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMg PSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUs CiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRl enZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19w b3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5 IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rv ci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5w eSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUu d2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF90ZXh0ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLkNsZWFu dXApCnRlc3RfdGV4dAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAg cmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xp L2NtZF9yZWNlaXZlLnB5IiwgbGluZSA4MSwgaW4gZ28KICAgIHcgPSBjcmVhdGUoCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0ZQog ICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lvbnMs IGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5f Ym9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9p bml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNTIs IGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93b3Jr ZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9h cHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUu X3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRfXwog ICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBk ID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxp Y2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICByZXR1 cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwu cHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdz KToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1 bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9u CiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFu Z2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJl dHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290 IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X290aGVyX2Vycm9yICh3b3Jt aG9sZS50ZXN0LnRlc3RfY2xpLkRpc3BhdGNoKQp0ZXN0X290aGVyX2Vycm9yCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGlu ZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3JlY2VpdmUucHkiLCBsaW5lIDgx LCBpbiBnbwogICAgdyA9IGNyZWF0ZSgKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29y bWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxh eV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAi PGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4g X19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwog ICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19i b3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6 dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUg IjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29u bmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0 X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUg ODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNv bm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5l IDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25u ZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9f CiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQw LCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5 Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVy cm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KRVJST1I6IHRlc3Rfb3RoZXJfZXJyb3IgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuRGlzcGF0 Y2gpCnRlc3Rfb3RoZXJfZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFj a3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL2NsaS9jbWRfcmVjZWl2ZS5weSIsIGxpbmUgODEsIGluIGdvCiAgICB3ID0gY3JlYXRlKAog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBj cmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3Zl cnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29y bWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJz X3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBs aW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVp bGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwg c2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdv cm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19p bml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRf XwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVz PWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAog ICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRo b2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAq Kmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJu IGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlm dW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBj b2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2Rl CiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWly ZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF90ZXh0ICh3b3Jt aG9sZS50ZXN0LnRlc3RfY2xpLlplcm9Nb2RlKQp0ZXN0X3RleHQKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvdGVzdF9jbGkucHkiLCBsaW5lIDk2OSwgaW4gdGVzdF90ZXh0CiAgICB5aWVsZCBn YXRoZXJSZXN1bHRzKFtzZW5kX2QsIHJlY2VpdmVfZF0sIFRydWUpCnR3aXN0ZWQuaW50ZXJuZXQu ZGVmZXIuRmlyc3RFcnJvcjogRmlyc3RFcnJvclsjMCwgW0ZhaWx1cmUgaW5zdGFuY2U6IFRyYWNl YmFjazogPGNsYXNzICdUeXBlRXJyb3InPjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5 cGUgYnl0ZXMpCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5Ojk2Njp0ZXN0 X3RleHQKL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfc2VuZC5weTozODpzZW5kCi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5 OjE2MTM6dW53aW5kR2VuZXJhdG9yCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5OjE1Mjk6X2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJh Y2tzCi0tLSA8ZXhjZXB0aW9uIGNhdWdodCBoZXJlPiAtLS0KL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHk6MTQxODpfaW5saW5lQ2Fs bGJhY2tzCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3NlbmQucHk6NjY6Z28KL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5OjI5MDpjcmVhdGUKPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+OjIzOl9faW5pdF9fCi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS9fYm9zcy5weTo1MjpfX2F0dHJzX3Bvc3RfaW5pdF9fCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9f Ym9zcy5weTo2MjpfYnVpbGRfd29ya2Vycwo8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUu X3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj46MTg6X19pbml0X18KL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5Ojg3Ol9fYXR0cnNfcG9zdF9pbml0X18KL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQu cHk6MTEyNzp3aGVuQ29ubmVjdGVkCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX21ldGhvZGljYWwucHk6MjM0Ol9fZ2V0X18KL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weTo0MDpkZWNvcmF0b3IKL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eTozMjpjb3B5ZnVuY3Rpb24KL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weToyMDpjb3B5Y29kZQpdXQoKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJP UjogdGVzdF9hbGxvY2F0ZV9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkFsbG9j YXRvcikKdGVzdF9hbGxvY2F0ZV9maXJzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVy cmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEs IGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4 Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2Ug ZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBs aW5lIDYxMCwgaW4gdGVzdF9hbGxvY2F0ZV9maXJzdAogICAgYS5hbGxvY2F0ZSgyLCBGYWtlV29y ZExpc3QoKSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0 KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgog ICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIs IGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9f Y29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGlu IGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIg aXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9j b25uZWN0X2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuQWxsb2NhdG9yKQp0ZXN0 X2Nvbm5lY3RfZmlyc3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA2MjgsIGlu IHRlc3RfY29ubmVjdF9maXJzdAogICAgYS5jb25uZWN0ZWQoKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIz NCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29y YXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4g ZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2 YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMp Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X25vX2FsbG9jYXRpb24gKHdvcm1ob2xlLnRlc3Qu dGVzdF9tYWNoaW5lcy5BbGxvY2F0b3IpCnRlc3Rfbm9fYWxsb2NhdGlvbgotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUg MTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0 aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFp c2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4g cmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICBy ZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3RfbWFjaGluZXMucHkiLCBsaW5lIDYwNSwgaW4gdGVzdF9ub19hbGxvY2F0aW9uCiAgICBhLmNv bm5lY3RlZCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1 dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IK ICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMy LCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5f X2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBp biBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rf YmFzaWMgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X2Jhc2ljCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5 IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50 ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAog ICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUg NDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2Vi YWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNz ZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTMzMywgaW4gdGVzdF9iYXNpYwogICAgYi5n b3RfY29kZSgiMS1jb2RlIikKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRl ZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRl Y29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRl bXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFu IGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJP UjogdGVzdF9jbG9zZV9lYXJseSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRl c3RfY2xvc2VfZWFybHkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxNDMxLCBp biB0ZXN0X2Nsb3NlX2Vhcmx5CiAgICBiLmNsb3NlKCkgICMgYmVmb3JlIGV2ZW4gdy5nb3RfY29k ZQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21l dGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3Ms ICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1 cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29w eWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18s IGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNv ZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1 aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Vycm9yX3do aWxlX2Nsb3NpbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X2Vycm9y X3doaWxlX2Nsb3NpbmcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxNDQ2LCBp biB0ZXN0X2Vycm9yX3doaWxlX2Nsb3NpbmcKICAgIGIuY2xvc2UoKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2ludGVybmFsX2Vycm9yICh3b3JtaG9sZS50 ZXN0LnRlc3RfbWFjaGluZXMuQm9zcykKdGVzdF9pbnRlcm5hbF9lcnJvcgotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUg MTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0 aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFp c2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4g cmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICBy ZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3RfbWFjaGluZXMucHkiLCBsaW5lIDE0MTksIGluIHRlc3RfaW50ZXJuYWxfZXJyb3IKICAgIGIu ZXJyb3IoVmFsdWVFcnJvcigiY2F0Y2ggbWUiKSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9f Z2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9u KGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpU eXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpFUlJPUjogdGVzdF9sb25lbHkgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5C b3NzKQp0ZXN0X2xvbmVseQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICBy ZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJd KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5 dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9u LndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBy dW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDEzODMs IGluIHRlc3RfbG9uZWx5CiAgICBiLmdvdF9jb2RlKCIxLWNvZGUiKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3NjYXJ5X3BoYXNlICh3b3JtaG9sZS50ZXN0 LnRlc3RfbWFjaGluZXMuQm9zcykKdGVzdF9zY2FyeV9waGFzZQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBp biBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5 IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhj X2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlz ZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGls cy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQg PSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFj aGluZXMucHkiLCBsaW5lIDE0ODAsIGluIHRlc3Rfc2NhcnlfcGhhc2UKICAgIGIuZ290X2NvZGUo IjEtY29kZSIpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1 dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IK ICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMy LCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5f X2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBp biBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rf c2NhcnlfdmVyc2lvbiAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3Rfc2Nh cnlfdmVyc2lvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQg PSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9j b21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhf dHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDE0NjEsIGluIHRl c3Rfc2NhcnlfdmVyc2lvbgogICAgYi5nb3RfY29kZSgiMS1jb2RlIikKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGlu ZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihk ZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0 dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2 YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29k ZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5 dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9zZXJ2ZXJfZXJyb3IgKHdvcm1ob2xlLnRl c3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X3NlcnZlcl9lcnJvcgotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRy YWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUx LCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxz LnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2Uo ZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVy YWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1 bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rf bWFjaGluZXMucHkiLCBsaW5lIDE0MDMsIGluIHRlc3Rfc2VydmVyX2Vycm9yCiAgICBiLnJ4X2Vy cm9yKCJzZXJ2ZXItZXJyb3ItbXNnIiwgb3JpZykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9f Z2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9u KGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpU eXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpFUlJPUjogdGVzdF91bmtub3duX3BoYXNlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFj aGluZXMuQm9zcykKdGVzdF91bmtub3duX3BoYXNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJl RGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5l IDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sx XSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICBy YWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEs ICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5w eSIsIGxpbmUgMTUwMSwgaW4gdGVzdF91bmtub3duX3BoYXNlCiAgICBiLmdvdF9jb2RlKCIxLWNv ZGUiKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3Vud2Vs Y29tZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfdW53ZWxjb21lCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgMjI5LCBpbiByeF93ZWxjb21lCiAg ICByYWlzZSBXZWxjb21lRXJyb3Iod2VsY29tZVsiZXJyb3IiXSkKd29ybWhvbGUuZXJyb3JzLldl bGNvbWVFcnJvcjogZ28gYXdheQoKRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRp b24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAg IHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9b Ml0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv cHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRp b24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGlu IHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTM3 NCwgaW4gdGVzdF91bndlbGNvbWUKICAgIGIucnhfd2VsY29tZSh1bndlbGNvbWUpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSAyMzgsIGluIHJ4X3dlbGNvbWUK ICAgIHNlbGYucnhfdW53ZWxjb21lKHdlbGNvbWVfZXJyb3IpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsb2NhdGVfY29kZSAod29ybWhvbGUudGVzdC50 ZXN0X21hY2hpbmVzLkNvZGUpCnRlc3RfYWxsb2NhdGVfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBp biBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5 IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhj X2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlz ZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGls cy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQg PSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFj aGluZXMucHkiLCBsaW5lIDM2NSwgaW4gdGVzdF9hbGxvY2F0ZV9jb2RlCiAgICBjLmFsbG9jYXRl X2NvZGUoMiwgd2wpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3RfaW5wdXRfY29kZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkNvZGUpCnRlc3RfaW5w dXRfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBm KCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5n c1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21w YXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJh Y2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDM3NywgaW4gdGVzdF9p bnB1dF9jb2RlCiAgICBjLmlucHV0X2NvZGUoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X3NldF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu Q29kZSkKdGVzdF9zZXRfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDMz MywgaW4gdGVzdF9zZXRfY29kZQogICAgYy5zZXRfY29kZSh1IjEtY29kZSIpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL19jb2RlLnB5IiwgbGluZSA2OCwgaW4gc2V0X2NvZGUKICAgIHNl bGYuX3NldF9jb2RlKGNvZGUpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBk ZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBk ZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0 ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBs aW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBh biBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJS T1I6IHRlc3Rfc2V0X2NvZGVfaW52YWxpZCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkNv ZGUpCnRlc3Rfc2V0X2NvZGVfaW52YWxpZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVy cmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEs IGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4 Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2Ug ZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBs aW5lIDM1NSwgaW4gdGVzdF9zZXRfY29kZV9pbnZhbGlkCiAgICBjLnNldF9jb2RlKHUiMS1jb2Rl IikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2NvZGUucHkiLCBsaW5lIDY4LCBpbiBz ZXRfY29kZQogICAgc2VsZi5fc2V0X2NvZGUoY29kZSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9iYWRfbmFtZXBsYXRlICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuSW5wdXQpCnRlc3RfYmFkX25hbWVwbGF0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGlu ZXMucHkiLCBsaW5lIDQyMSwgaW4gdGVzdF9iYWRfbmFtZXBsYXRlCiAgICBoZWxwZXIgPSBpLnN0 YXJ0KCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9pZ25v cmVfY29tcGxldGlvbiAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLklucHV0KQp0ZXN0X2ln bm9yZV9jb21wbGV0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJl c3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0p CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0 aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24u d2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgNDAzLCBp biB0ZXN0X2lnbm9yZV9jb21wbGV0aW9uCiAgICBoZWxwZXIgPSBpLnN0YXJ0KCkKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF93aXRoX2NvbXBsZXRpb24gKHdv cm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5JbnB1dCkKdGVzdF93aXRoX2NvbXBsZXRpb24KLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIu cHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKipr dykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2Vk CiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGlu ZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFj ZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJl c3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA0NDIsIGluIHRlc3Rfd2l0aF9jb21wbGV0 aW9uCiAgICBoZWxwZXIgPSBpLnN0YXJ0KCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0 X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg NDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNv cHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpFUlJPUjogdGVzdF9iYWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5LZXkpCnRl c3RfYmFkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVy bmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYo KmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdz U3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBh dC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFj ZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMjc5LCBpbiB0ZXN0X2Jh ZAogICAgay5nb3RfY29kZShjb2RlKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwog ICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwg aW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNv ZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJv cjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CkVSUk9SOiB0ZXN0X2dvb2QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5LZXkpCnRlc3Rf Z29vZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCph cmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQu cHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2Vi YWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fybmlu Z3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDI1OSwgaW4gdGVzdF9nb29k CiAgICBrLmdvdF9jb2RlKGNvZGUpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAg ICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBp biBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29k ZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9y OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K RVJST1I6IHRlc3RfcmV2ZXJzZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5LZXkpCnRl c3RfcmV2ZXJzZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAzMDQsIGluIHRl c3RfcmV2ZXJzZWQKICAgIGsuZ290X3Bha2UobXNnMikKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9jb25uZWN0X2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuTGlzdGVyKQp0ZXN0X2Nvbm5lY3RfZmlyc3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4g bWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19p bmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UK ICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0g ZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hp bmVzLnB5IiwgbGluZSA1MDUsIGluIHRlc3RfY29ubmVjdF9maXJzdAogICAgbC5jb25uZWN0ZWQo KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21l dGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3Ms ICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1 cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29w eWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18s IGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNv ZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1 aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nvbm5lY3Rf Zmlyc3RfYXNrX3R3aWNlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTGlzdGVyKQp0ZXN0 X2Nvbm5lY3RfZmlyc3RfYXNrX3R3aWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJy ZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwg aW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhj X2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBl eGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAy MTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxp bmUgNTMyLCBpbiB0ZXN0X2Nvbm5lY3RfZmlyc3RfYXNrX3R3aWNlCiAgICBsLmNvbm5lY3RlZCgp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVp cmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcmVjb25uZWN0 ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTGlzdGVyKQp0ZXN0X3JlY29ubmVjdAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3 KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5l IDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNl YmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDU1NiwgaW4gdGVzdF9yZWNvbm5lY3QKICAg IGwucmVmcmVzaCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3RfcmVmcmVzaF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkxpc3RlcikKdGVz dF9yZWZyZXNoX2ZpcnN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJl c3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0p CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0 aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24u d2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgNTcwLCBp biB0ZXN0X3JlZnJlc2hfZmlyc3QKICAgIGwucmVmcmVzaCgpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfdW5yZWZyZXNoZWQgKHdvcm1ob2xlLnRlc3QudGVz dF9tYWNoaW5lcy5MaXN0ZXIpCnRlc3RfdW5yZWZyZXNoZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4g bWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19p bmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UK ICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0g ZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hp bmVzLnB5IiwgbGluZSA1ODYsIGluIHRlc3RfdW5yZWZyZXNoZWQKICAgIGwuY29ubmVjdGVkKCkK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRo b2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAq Kmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJu IGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlm dW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBj b2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2Rl CiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWly ZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV93aGls ZV9pZGxlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTWFpbGJveCkKdGVzdF9jbG9zZV93 aGlsZV9pZGxlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9 IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Nv bXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90 cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhX YXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTE3OSwgaW4gdGVz dF9jbG9zZV93aGlsZV9pZGxlCiAgICBtLmNsb3NlKCJoYXBweSIpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUg MjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVj b3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVy biBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFs dWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUo KnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRl cykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfaWRsZV9idXRfY29ubmVj dGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTWFpbGJveCkKdGVzdF9jbG9zZV93aGls ZV9pZGxlX2J1dF9jb25uZWN0ZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAog ICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBy dW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5m b1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2Vw dGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywg aW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAx MTg0LCBpbiB0ZXN0X2Nsb3NlX3doaWxlX2lkbGVfYnV0X2Nvbm5lY3RlZAogICAgbS5jb25uZWN0 ZWQoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nsb3Nl X3doaWxlX21haWxib3hfZGlzY29ubmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu TWFpbGJveCkKdGVzdF9jbG9zZV93aGlsZV9tYWlsYm94X2Rpc2Nvbm5lY3RlZAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJl cmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwg aW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAg ICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDExOTAsIGluIHRlc3RfY2xvc2Vfd2hpbGVfbWFpbGJv eF9kaXNjb25uZWN0ZWQKICAgIG0uZ290X21haWxib3goIm1ib3gxIikKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGlu ZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihk ZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0 dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2 YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29k ZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5 dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV93aGlsZV9yZWNvbm5lY3Rpbmcg KHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5NYWlsYm94KQp0ZXN0X2Nsb3NlX3doaWxlX3Jl Y29ubmVjdGluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQg PSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9j b21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhf dHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDExOTYsIGluIHRl c3RfY2xvc2Vfd2hpbGVfcmVjb25uZWN0aW5nCiAgICBtLmdvdF9tYWlsYm94KCJtYm94MSIpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY29ubmVjdF9maXJz dCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk1haWxib3gpCnRlc3RfY29ubmVjdF9maXJz dAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdz LCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHki LCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNr KHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDEwNzAsIGluIHRlc3RfY29ubmVj dF9maXJzdAogICAgbS5hZGRfbWVzc2FnZSgicGhhc2UxIiwgYiJtc2cxIikKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5Iiwg bGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlv bihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAg cmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyks ICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4g Y29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBl IGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9tYWlsYm94X2ZpcnN0ICh3b3JtaG9s ZS50ZXN0LnRlc3RfbWFjaGluZXMuTWFpbGJveCkKdGVzdF9tYWlsYm94X2ZpcnN0Ci0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5Iiwg bGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0 bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0 LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNr KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTE2MywgaW4gdGVzdF9tYWlsYm94X2ZpcnN0CiAg ICBtLmFkZF9tZXNzYWdlKCJwaGFzZTEiLCBiIm1zZzEiKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwg aW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRl ZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVu Y3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1 ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nsb3NlX3doaWxlX2NsYWltZWQgKHdvcm1ob2xlLnRl c3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hpbGVfY2xhaW1lZAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3 KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5l IDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNl YmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDg3NiwgaW4gdGVzdF9jbG9zZV93aGlsZV9j bGFpbWVkCiAgICBuLnNldF9uYW1lcGxhdGUoIjEiKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fbmFtZXBsYXRlLnB5IiwgbGluZSA5NSwgaW4gc2V0X25hbWVwbGF0ZQogICAgc2VsZi5f c2V0X25hbWVwbGF0ZShuYW1lcGxhdGUpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9f CiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQw LCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5 Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVy cm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfY2xhaW1lZF9idXRfZGlzY29ubmVjdGVkICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Nsb3NlX3doaWxlX2NsYWlt ZWRfYnV0X2Rpc2Nvbm5lY3RlZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDkw MSwgaW4gdGVzdF9jbG9zZV93aGlsZV9jbGFpbWVkX2J1dF9kaXNjb25uZWN0ZWQKICAgIG4uc2V0 X25hbWVwbGF0ZSgiMSIpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19uYW1lcGxhdGUu cHkiLCBsaW5lIDk1LCBpbiBzZXRfbmFtZXBsYXRlCiAgICBzZWxmLl9zZXRfbmFtZXBsYXRlKG5h bWVwbGF0ZSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0 KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgog ICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIs IGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9f Y29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGlu IGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIg aXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9j bG9zZV93aGlsZV9jbGFpbWluZyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0 ZSkKdGVzdF9jbG9zZV93aGlsZV9jbGFpbWluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURl ZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAy MjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0s IGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFp c2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxp bmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAq Kmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHki LCBsaW5lIDg0MiwgaW4gdGVzdF9jbG9zZV93aGlsZV9jbGFpbWluZwogICAgbi5zZXRfbmFtZXBs YXRlKCIxIikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX25hbWVwbGF0ZS5weSIsIGxp bmUgOTUsIGluIHNldF9uYW1lcGxhdGUKICAgIHNlbGYuX3NldF9uYW1lcGxhdGUobmFtZXBsYXRl KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21l dGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3Ms ICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1 cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29w eWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18s IGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNv ZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1 aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nsb3NlX3do aWxlX2NsYWltaW5nX2J1dF9kaXNjb25uZWN0ZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5l cy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hpbGVfY2xhaW1pbmdfYnV0X2Rpc2Nvbm5lY3RlZAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAq Kmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNz ZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBs aW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRy YWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDg1NywgaW4gdGVzdF9jbG9zZV93aGls ZV9jbGFpbWluZ19idXRfZGlzY29ubmVjdGVkCiAgICBuLnNldF9uYW1lcGxhdGUoIjEiKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fbmFtZXBsYXRlLnB5IiwgbGluZSA5NSwgaW4gc2V0 X25hbWVwbGF0ZQogICAgc2VsZi5fc2V0X25hbWVwbGF0ZShuYW1lcGxhdGUpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIs IGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJv c3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rp b24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAg IHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMp LCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJu IGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlw ZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfZG9uZSAod29y bWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkKdGVzdF9jbG9zZV93aGlsZV9kb25l Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2Rl ZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3Ms ICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJl c3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIs IGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2so dHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgOTg4LCBpbiB0ZXN0X2Nsb3NlX3do aWxlX2RvbmUKICAgIG4uY29ubmVjdGVkKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0 X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg NDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNv cHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpFUlJPUjogdGVzdF9jbG9zZV93aGlsZV9kb25lX2J1dF9kaXNjb25uZWN0ZWQgKHdvcm1o b2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hpbGVfZG9uZV9i dXRfZGlzY29ubmVjdGVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJl c3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0p CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0 aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24u d2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTAxOCwg aW4gdGVzdF9jbG9zZV93aGlsZV9kb25lX2J1dF9kaXNjb25uZWN0ZWQKICAgIG4uY29ubmVjdGVk KCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19t ZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdz LCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0 dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNv cHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9f LCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHlj b2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVx dWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV93 aGlsZV9pZGxlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Ns b3NlX3doaWxlX2lkbGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA4MjQsIGlu IHRlc3RfY2xvc2Vfd2hpbGVfaWRsZQogICAgbi5jbG9zZSgpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfaWRsZV9jb25uZWN0ZWQgKHdv cm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hpbGVfaWRs ZV9jb25uZWN0ZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA4MjksIGluIHRl c3RfY2xvc2Vfd2hpbGVfaWRsZV9jb25uZWN0ZWQKICAgIG4uY29ubmVjdGVkKCkKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV93aGlsZV9yZWxlYXNp bmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hp bGVfcmVsZWFzaW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgOTI4LCBpbiB0 ZXN0X2Nsb3NlX3doaWxlX3JlbGVhc2luZwogICAgbi5zZXRfbmFtZXBsYXRlKCIxIikKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX25hbWVwbGF0ZS5weSIsIGxpbmUgOTUsIGluIHNldF9u YW1lcGxhdGUKICAgIHNlbGYuX3NldF9uYW1lcGxhdGUobmFtZXBsYXRlKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBs aW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9u KGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICBy ZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwg KnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBj b2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUg Ynl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nsb3NlX3doaWxlX3JlbGVhc2luZ19i dXRfZGlzY29ubmVjdGVkYSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkK dGVzdF9jbG9zZV93aGlsZV9yZWxlYXNpbmdfYnV0X2Rpc2Nvbm5lY3RlZGEKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA5NTQsIGluIHRlc3RfY2xvc2Vfd2hpbGVfcmVsZWFzaW5n X2J1dF9kaXNjb25uZWN0ZWRhCiAgICBuLnNldF9uYW1lcGxhdGUoIjEiKQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9fbmFtZXBsYXRlLnB5IiwgbGluZSA5NSwgaW4gc2V0X25hbWVwbGF0 ZQogICAgc2VsZi5fc2V0X25hbWVwbGF0ZShuYW1lcGxhdGUpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfdW5jbGFpbWVkICh3b3JtaG9s ZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Nsb3NlX3doaWxlX3VuY2xhaW1l ZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdz LCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHki LCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNr KHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDgzNiwgaW4gdGVzdF9jbG9zZV93 aGlsZV91bmNsYWltZWQKICAgIG4uc2V0X25hbWVwbGF0ZSgiMSIpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19uYW1lcGxhdGUucHkiLCBsaW5lIDk1LCBpbiBzZXRfbmFtZXBsYXRlCiAg ICBzZWxmLl9zZXRfbmFtZXBsYXRlKG5hbWVwbGF0ZSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9jb25uZWN0X2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Nvbm5lY3RfZmlyc3QKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwg aW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4 Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFp c2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRp bHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0 ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21h Y2hpbmVzLnB5IiwgbGluZSA3MDQsIGluIHRlc3RfY29ubmVjdF9maXJzdAogICAgbi5jb25uZWN0 ZWQoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlY29u bmVjdF93aGlsZV9jbGFpbWVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRl KQp0ZXN0X3JlY29ubmVjdF93aGlsZV9jbGFpbWVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJl RGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5l IDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sx XSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICBy YWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEs ICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5w eSIsIGxpbmUgNzQ0LCBpbiB0ZXN0X3JlY29ubmVjdF93aGlsZV9jbGFpbWVkCiAgICBuLmNvbm5l Y3RlZCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlz IHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcmVj b25uZWN0X3doaWxlX2NsYWltaW5nICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBs YXRlKQp0ZXN0X3JlY29ubmVjdF93aGlsZV9jbGFpbWluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGlu ZXMucHkiLCBsaW5lIDczMCwgaW4gdGVzdF9yZWNvbm5lY3Rfd2hpbGVfY2xhaW1pbmcKICAgIG4u Y29ubmVjdGVkKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9yZWNvbm5lY3Rfd2hpbGVfZG9uZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVw bGF0ZSkKdGVzdF9yZWNvbm5lY3Rfd2hpbGVfZG9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAo bW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXli ZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGlu ZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9b MV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAg cmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCph LCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMu cHkiLCBsaW5lIDc5NCwgaW4gdGVzdF9yZWNvbm5lY3Rfd2hpbGVfZG9uZQogICAgbi5jb25uZWN0 ZWQoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlY29u bmVjdF93aGlsZV9yZWxlYXNpbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxh dGUpCnRlc3RfcmVjb25uZWN0X3doaWxlX3JlbGVhc2luZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGlu ZXMucHkiLCBsaW5lIDc2NywgaW4gdGVzdF9yZWNvbm5lY3Rfd2hpbGVfcmVsZWFzaW5nCiAgICBu LmNvbm5lY3RlZCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3Rfc2V0X2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0 X3NldF9maXJzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQg PSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9j b21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhf dHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDY3OSwgaW4gdGVz dF9zZXRfZmlyc3QKICAgIG4uc2V0X25hbWVwbGF0ZSgiMSIpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19uYW1lcGxhdGUucHkiLCBsaW5lIDk1LCBpbiBzZXRfbmFtZXBsYXRlCiAgICBz ZWxmLl9zZXRfbmFtZXBsYXRlKG5hbWVwbGF0ZSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9f Z2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9u KGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpU eXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpFUlJPUjogdGVzdF9zZXRfaW52YWxpZCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hp bmVzLk5hbWVwbGF0ZSkKdGVzdF9zZXRfaW52YWxpZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAo bW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXli ZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGlu ZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9b MV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAg cmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCph LCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMu cHkiLCBsaW5lIDY3MSwgaW4gdGVzdF9zZXRfaW52YWxpZAogICAgbi5zZXRfbmFtZXBsYXRlKCIx IikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX25hbWVwbGF0ZS5weSIsIGxpbmUgOTUs IGluIHNldF9uYW1lcGxhdGUKICAgIHNlbGYuX3NldF9uYW1lcGxhdGUobmFtZXBsYXRlKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAo Z290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2luX29yZGVyICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuT3JkZXIpCnRlc3RfaW5fb3JkZXIKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxMjIsIGluIHRlc3RfaW5fb3JkZXIKICAgIG8uZ290X21l c3NhZ2UodSJzaWRlIiwgdSJwYWtlIiwgYiJib2R5IikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX29yZGVyLnB5IiwgbGluZSA0MiwgaW4gZ290X21lc3NhZ2UKICAgIHNlbGYuZ290X3Bh a2Uoc2lkZSwgcGhhc2UsIGJvZHkpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAg ICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBp biBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29k ZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9y OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K RVJST1I6IHRlc3Rfb3V0X29mX29yZGVyICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuT3Jk ZXIpCnRlc3Rfb3V0X29mX29yZGVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQK ICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4g cnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2lu Zm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNl cHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcs IGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUg MTM0LCBpbiB0ZXN0X291dF9vZl9vcmRlcgogICAgby5nb3RfbWVzc2FnZSh1InNpZGUiLCB1InZl cnNpb24iLCBiImJvZHkiKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fb3JkZXIucHki LCBsaW5lIDQ0LCBpbiBnb3RfbWVzc2FnZQogICAgc2VsZi5nb3Rfbm9uX3Bha2Uoc2lkZSwgcGhh c2UsIGJvZHkpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1 dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IK ICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMy LCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5f X2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBp biBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rf ZWFybHlfYmFkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuUmVjZWl2ZSkKdGVzdF9lYXJs eV9iYWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigq YXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0 LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNl YmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxODksIGluIHRlc3RfZWFy bHlfYmFkCiAgICByLmdvdF9rZXkoa2V5KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRf XwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0 MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29w eWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVF cnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CkVSUk9SOiB0ZXN0X2dvb2QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5SZWNlaXZl KQp0ZXN0X2dvb2QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxNjAsIGluIHRl c3RfZ29vZAogICAgci5nb3Rfa2V5KGtleSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0 X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg NDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNv cHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpFUlJPUjogdGVzdF9sYXRlX2JhZCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLlJl Y2VpdmUpCnRlc3RfbGF0ZV9iYWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAog ICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBy dW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5m b1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2Vw dGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywg aW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAy MTAsIGluIHRlc3RfbGF0ZV9iYWQKICAgIHIuZ290X2tleShrZXkpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUg MjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVj b3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVy biBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFs dWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUo KnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRl cykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYmFzaWMgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5SZW5kZXp2b3VzKQp0ZXN0X2Jhc2ljCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJl RGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5l IDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sx XSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICBy YWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEs ICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5w eSIsIGxpbmUgMTU2NSwgaW4gdGVzdF9iYXNpYwogICAgcmMsIGV2ZW50cyA9IHNlbGYuYnVpbGQo KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBs aW5lIDE1NTIsIGluIGJ1aWxkCiAgICByYyA9IF9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0 b3IoCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJl bmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRy c19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3Vz LnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5l Y3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5l dC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hp bmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQs IGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0 ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1 bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFs dWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9lbmRwb2ludHMgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5SZW5kZXp2b3VzKQp0ZXN0X2VuZHBvaW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGlu ZXMucHkiLCBsaW5lIDE2MzEsIGluIHRlc3RfZW5kcG9pbnRzCiAgICByYyA9IF9yZW5kZXp2b3Vz LlJlbmRlenZvdXNDb25uZWN0b3IoCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1o b2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0 X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwog ICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZh ZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9h cHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAg cmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2Rp Y2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3 YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNv cHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5j dGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2Rl Y2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAg ICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQg KGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF93ZWJzb2NrZXRfZmFp bHVyZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLlJlbmRlenZvdXMpCnRlc3Rfd2Vic29j a2V0X2ZhaWx1cmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxNTcyLCBpbiB0 ZXN0X3dlYnNvY2tldF9mYWlsdXJlCiAgICByYywgZXZlbnRzID0gc2VsZi5idWlsZCgpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTU1 MiwgaW4gYnVpbGQKICAgIHJjID0gX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3RvcigKICBG aWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91 c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3Rf aW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBs aW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndo ZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5Iiwg bGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVu Q29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X3dlYnNvY2tldF9sb3N0ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFj aGluZXMuUmVuZGV6dm91cykKdGVzdF93ZWJzb2NrZXRfbG9zdAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBp biBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5 IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhj X2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlz ZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGls cy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQg PSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFj aGluZXMucHkiLCBsaW5lIDE1ODQsIGluIHRlc3Rfd2Vic29ja2V0X2xvc3QKICAgIHJjLCBldmVu dHMgPSBzZWxmLmJ1aWxkKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0 X21hY2hpbmVzLnB5IiwgbGluZSAxNTUyLCBpbiBidWlsZAogICAgcmMgPSBfcmVuZGV6dm91cy5S ZW5kZXp2b3VzQ29ubmVjdG9yKAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9f CiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAg IGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBw bGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJl dHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNh bC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2Fy Z3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5 ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rp b24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNo YW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAg cmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChn b3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfa2V5X2ZpcnN0ICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuU2VuZCkKdGVzdF9rZXlfZmlyc3QKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA4OSwgaW4gdGVzdF9rZXlfZmlyc3QKICAgIHMuZ290X3Zl cmlmaWVkX2tleShrZXkpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYg ZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNv cmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBs aW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1w bGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBp bnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6 IHRlc3Rfc2VuZF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLlNlbmQpCnRlc3Rf c2VuZF9maXJzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQg PSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9j b21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhf dHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDYzLCBpbiB0ZXN0 X3NlbmRfZmlyc3QKICAgIHMuc2VuZCgicGhhc2UxIiwgYiJtc2ciKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3Rlcm1pbmF0ZSAod29ybWhvbGUudGVzdC50 ZXN0X21hY2hpbmVzLlRlcm1pbmF0b3IpCnRlc3RfdGVybWluYXRlCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJh Y2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEs IGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShl eGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJh aXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0 aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3Vs dCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9t YWNoaW5lcy5weSIsIGxpbmUgMTI4NiwgaW4gdGVzdF90ZXJtaW5hdGUKICAgIHNlbGYuX2RvX3Rl c3QoIm1haWxib3giLCAibmFtZXBsYXRlIiwgInJjIikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxMjQ2LCBpbiBfZG9fdGVzdAogICAg aW5wdXRfZXZlbnRzW2V2MV0oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3RfbWFjaGluZXMucHkiLCBsaW5lIDEyMzIsIGluIDxsYW1iZGE+CiAgICAibWFpbGJveCI6IGxh bWJkYTogdC5tYWlsYm94X2RvbmUoKSwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18K ICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAs IGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHlj b2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJy b3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpGQUlMOiB0ZXN0X3N0YXJ0X2xpc3RlbiAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25u ZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9zdGFydF9saXN0ZW4KLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwg aW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4 Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFp c2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRp bHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0 ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUv dGVzdF9jb25uZWN0b3IucHkiLCBsaW5lIDIyMCwgaW4gdGVzdF9zdGFydF9saXN0ZW4KICAgIHNl bGYuYXNzZXJ0RXF1YWwoaC5tYW5hZ2VyLm1vY2tfY2FsbHMsCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdHJpYWwvX3N5bmN0ZXN0LnB5IiwgbGlu ZSA0MzIsIGluIGFzc2VydEVxdWFsCiAgICBzdXBlcihfQXNzZXJ0aW9ucywgc2VsZikuYXNzZXJ0 RXF1YWwoZmlyc3QsIHNlY29uZCwgbXNnKQogIEZpbGUgIi9nbnUvc3RvcmUvcTlybThoOWltYXpz cTJjNHFpdjJ5anB2bHZsaXl3cWItcHl0aG9uLTMuOC4yL2xpYi9weXRob24zLjgvdW5pdHRlc3Qv Y2FzZS5weSIsIGxpbmUgOTEyLCBpbiBhc3NlcnRFcXVhbAogICAgYXNzZXJ0aW9uX2Z1bmMoZmly c3QsIHNlY29uZCwgbXNnPW1zZykKICBGaWxlICIvZ251L3N0b3JlL3E5cm04aDlpbWF6c3EyYzRx aXYyeWpwdmx2bGl5d3FiLXB5dGhvbi0zLjguMi9saWIvcHl0aG9uMy44L3VuaXR0ZXN0L2Nhc2Uu cHkiLCBsaW5lIDkwNSwgaW4gX2Jhc2VBc3NlcnRFcXVhbAogICAgcmFpc2Ugc2VsZi5mYWlsdXJl RXhjZXB0aW9uKG1zZykKdHdpc3RlZC50cmlhbC51bml0dGVzdC5GYWlsVGVzdDogW10gIT0gW2Nh bGwuc2VuZF9oaW50cyhbeyd0eXBlJzogJ2RpcmVjdC10Y3AtdjEnWzEzMCBjaGFyc10wfV0pXQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpGQUlMOiB0ZXN0X3RleHRfd3JvbmdfcGFzc3dvcmQgKHdvcm1ob2xlLnRl c3QudGVzdF9jbGkuQ2xlYW51cCkKdGVzdF90ZXh0X3dyb25nX3Bhc3N3b3JkCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5IiwgbGluZSAxMTI3LCBpbiB0ZXN0X3RleHRfd3Jv bmdfcGFzc3dvcmQKICAgIHlpZWxkIHNlbGYuYXNzZXJ0RmFpbHVyZShzZW5kX2QsIFdyb25nUGFz c3dvcmRFcnJvcikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgNjU0LCBpbiBfcnVuQ2FsbGJhY2tzCiAg ICBjdXJyZW50LnJlc3VsdCA9IGNhbGxiYWNrKGN1cnJlbnQucmVzdWx0LCAqYXJncywgKiprdykK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90cmlh bC9fYXN5bmN0ZXN0LnB5IiwgbGluZSA3NSwgaW4gX2ViCiAgICByYWlzZSBzZWxmLmZhaWx1cmVF eGNlcHRpb24ob3V0cHV0KQp0d2lzdGVkLnRyaWFsLnVuaXR0ZXN0LkZhaWxUZXN0OiAKRXhwZWN0 ZWQ6ICg8Y2xhc3MgJ3dvcm1ob2xlLmVycm9ycy5Xcm9uZ1Bhc3N3b3JkRXJyb3InPiwpCkdvdDoK W0ZhaWx1cmUgaW5zdGFuY2U6IFRyYWNlYmFjazogPGNsYXNzICdUeXBlRXJyb3InPjogYW4gaW50 ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3RfY2xpLnB5OjExMjA6dGVzdF90ZXh0X3dyb25nX3Bhc3N3b3JkCi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS9jbGkvY21kX3NlbmQucHk6Mzg6c2VuZAovZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNjEzOnVud2luZEdlbmVy YXRvcgovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weToxNTI5Ol9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNrcwotLS0gPGV4Y2VwdGlv biBjYXVnaHQgaGVyZT4gLS0tCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5OjE0MTg6X2lubGluZUNhbGxiYWNrcwovdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvY2xpL2NtZF9zZW5kLnB5OjY2OmdvCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93 b3JtaG9sZS5weToyOTA6Y3JlYXRlCjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9z cy5Cb3NzPjoyMzpfX2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHk6NTI6X19h dHRyc19wb3N0X2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHk6NjI6X2J1aWxk X3dvcmtlcnMKPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRl enZvdXNDb25uZWN0b3I+OjE4Ol9faW5pdF9fCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6 dm91cy5weTo4NzpfX2F0dHJzX3Bvc3RfaW5pdF9fCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5OjExMjc6d2hlbkNvbm5l Y3RlZAovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2Rp Y2FsLnB5OjIzNDpfX2dldF9fCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6NDA6ZGVjb3JhdG9yCi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6MzI6Y29weWZ1bmN0aW9u Ci9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHk6MjA6Y29weWNvZGUKXQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGQUlMOiB0ZXN0X3JlY2VpdmVyICh3 b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk5vU2VydmVyKQp0ZXN0X3JlY2VpdmVyCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGlu ZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQpT dG9wSXRlcmF0aW9uCgpEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5v dGhlciBleGNlcHRpb24gb2NjdXJyZWQ6CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJl c3VsdCA9IGcuc2VuZChyZXN1bHQpClN0b3BJdGVyYXRpb24KCkR1cmluZyBoYW5kbGluZyBvZiB0 aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X2NsaS5weSIsIGxpbmUgMTA4MSwgaW4gdGVzdF9yZWNlaXZlcgogICAgZSA9IHlp ZWxkIHNlbGYuYXNzZXJ0RmFpbHVyZShyZWNlaXZlX2QsIFNlcnZlckNvbm5lY3Rpb25FcnJvcikK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC9kZWZlci5weSIsIGxpbmUgNjU0LCBpbiBfcnVuQ2FsbGJhY2tzCiAgICBjdXJyZW50LnJl c3VsdCA9IGNhbGxiYWNrKGN1cnJlbnQucmVzdWx0LCAqYXJncywgKiprdykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90cmlhbC9fYXN5bmN0ZXN0 LnB5IiwgbGluZSA3NSwgaW4gX2ViCiAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24ob3V0 cHV0KQp0d2lzdGVkLnRyaWFsLnVuaXR0ZXN0LkZhaWxUZXN0OiAKRXhwZWN0ZWQ6ICg8Y2xhc3Mg J3dvcm1ob2xlLmVycm9ycy5TZXJ2ZXJDb25uZWN0aW9uRXJyb3InPiwpCkdvdDoKW0ZhaWx1cmUg aW5zdGFuY2U6IFRyYWNlYmFjazogPGNsYXNzICdUeXBlRXJyb3InPjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rf Y2xpLnB5OjEwODA6dGVzdF9yZWNlaXZlcgovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9y ZWNlaXZlLnB5OjQ5OnJlY2VpdmUKL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHk6MTYxMzp1bndpbmRHZW5lcmF0b3IKL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHk6MTUy OTpfY2FuY2VsbGFibGVJbmxpbmVDYWxsYmFja3MKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+ IC0tLQovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weToxNDE4Ol9pbmxpbmVDYWxsYmFja3MKL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2Ns aS9jbWRfcmVjZWl2ZS5weTo4MTpnbwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHk6 MjkwOmNyZWF0ZQo8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz46MjM6 X19pbml0X18KL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5OjUyOl9fYXR0cnNfcG9zdF9p bml0X18KL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5OjYyOl9idWlsZF93b3JrZXJzCjxh dHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVj dG9yPjoxODpfX2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHk6ODc6 X19hdHRyc19wb3N0X2luaXRfXwovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weToxMTI3OndoZW5Db25uZWN0ZWQKL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weToyMzQ6 X19nZXRfXwovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5OjQwOmRlY29yYXRvcgovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5OjMyOmNvcHlmdW5jdGlvbgovZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5OjIwOmNv cHljb2RlCl0KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KRkFJTDogdGVzdF9zZW5kZXIgKHdvcm1ob2xlLnRlc3Qu dGVzdF9jbGkuTm9TZXJ2ZXIpCnRlc3Rfc2VuZGVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5s aW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQpTdG9wSXRlcmF0aW9uCgpE dXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24g b2NjdXJyZWQ6CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIu cHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChy ZXN1bHQpClN0b3BJdGVyYXRpb24KCkR1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0 aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2NsaS5w eSIsIGxpbmUgMTA0OSwgaW4gdGVzdF9zZW5kZXIKICAgIGUgPSB5aWVsZCBzZWxmLmFzc2VydEZh aWx1cmUoc2VuZF9kLCBTZXJ2ZXJDb25uZWN0aW9uRXJyb3IpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDY1NCwgaW4gX3J1bkNhbGxiYWNrcwogICAgY3VycmVudC5yZXN1bHQgPSBjYWxsYmFjayhjdXJy ZW50LnJlc3VsdCwgKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvdHJpYWwvX2FzeW5jdGVzdC5weSIsIGxpbmUgNzUsIGluIF9l YgogICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKG91dHB1dCkKdHdpc3RlZC50cmlhbC51 bml0dGVzdC5GYWlsVGVzdDogCkV4cGVjdGVkOiAoPGNsYXNzICd3b3JtaG9sZS5lcnJvcnMuU2Vy dmVyQ29ubmVjdGlvbkVycm9yJz4sKQpHb3Q6CltGYWlsdXJlIGluc3RhbmNlOiBUcmFjZWJhY2s6 IDxjbGFzcyAnVHlwZUVycm9yJz46IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5 dGVzKQovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2NsaS5weToxMDQ4OnRlc3Rfc2Vu ZGVyCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3NlbmQucHk6Mzg6c2VuZAovZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weTox NjEzOnVud2luZEdlbmVyYXRvcgovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNTI5Ol9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNr cwotLS0gPGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5OjE0MTg6X2lubGluZUNhbGxi YWNrcwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9zZW5kLnB5OjY2OmdvCi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS93b3JtaG9sZS5weToyOTA6Y3JlYXRlCjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fYm9zcy5Cb3NzPjoyMzpfX2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv X2Jvc3MucHk6NTI6X19hdHRyc19wb3N0X2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jv c3MucHk6NjI6X2J1aWxkX3dvcmtlcnMKPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9y ZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+OjE4Ol9faW5pdF9fCi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fcmVuZGV6dm91cy5weTo4NzpfX2F0dHJzX3Bvc3RfaW5pdF9fCi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5 OjExMjc6d2hlbkNvbm5lY3RlZAovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5OjIzNDpfX2dldF9fCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6NDA6ZGVjb3JhdG9yCi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6 MzI6Y29weWZ1bmN0aW9uCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHk6MjA6Y29weWNvZGUKXQoKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGQUlMOiB0 ZXN0X3NlbmRlcl9hbGxvY2F0aW9uICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk5vU2VydmVyKQp0 ZXN0X3NlbmRlcl9hbGxvY2F0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJh Y2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQpTdG9wSXRlcmF0aW9uCgpEdXJpbmcgaGFu ZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6 CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpClN0 b3BJdGVyYXRpb24KCkR1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90 aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2NsaS5weSIsIGxpbmUg MTA2NSwgaW4gdGVzdF9zZW5kZXJfYWxsb2NhdGlvbgogICAgZSA9IHlpZWxkIHNlbGYuYXNzZXJ0 RmFpbHVyZShzZW5kX2QsIFNlcnZlckNvbm5lY3Rpb25FcnJvcikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgNjU0LCBpbiBfcnVuQ2FsbGJhY2tzCiAgICBjdXJyZW50LnJlc3VsdCA9IGNhbGxiYWNrKGN1 cnJlbnQucmVzdWx0LCAqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90cmlhbC9fYXN5bmN0ZXN0LnB5IiwgbGluZSA3NSwgaW4g X2ViCiAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24ob3V0cHV0KQp0d2lzdGVkLnRyaWFs LnVuaXR0ZXN0LkZhaWxUZXN0OiAKRXhwZWN0ZWQ6ICg8Y2xhc3MgJ3dvcm1ob2xlLmVycm9ycy5T ZXJ2ZXJDb25uZWN0aW9uRXJyb3InPiwpCkdvdDoKW0ZhaWx1cmUgaW5zdGFuY2U6IFRyYWNlYmFj azogPGNsYXNzICdUeXBlRXJyb3InPjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUg Ynl0ZXMpCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5OjEwNjQ6dGVzdF9z ZW5kZXJfYWxsb2NhdGlvbgovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9zZW5kLnB5OjM4 OnNlbmQKL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHk6MTYxMzp1bndpbmRHZW5lcmF0b3IKL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHk6MTUyOTpfY2FuY2VsbGFibGVJ bmxpbmVDYWxsYmFja3MKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQovZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNDE4 Ol9pbmxpbmVDYWxsYmFja3MKL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5k cnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfc2VuZC5weTo2 NjpnbwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHk6MjkwOmNyZWF0ZQo8YXR0cnMg Z2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz46MjM6X19pbml0X18KL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19ib3NzLnB5OjUyOl9fYXR0cnNfcG9zdF9pbml0X18KL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19ib3NzLnB5OjYyOl9idWlsZF93b3JrZXJzCjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPjoxODpfX2luaXRfXwov dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHk6ODc6X19hdHRyc19wb3N0X2luaXRf XwovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlv bi9pbnRlcm5ldC5weToxMTI3OndoZW5Db25uZWN0ZWQKL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weToyMzQ6X19nZXRfXwovZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5OjQwOmRl Y29yYXRvcgovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5OjMyOmNvcHlmdW5jdGlvbgovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5OjIwOmNvcHljb2RlCl0KCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KRkFJTDogdGVzdF9yZWNlaXZlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Ob3RXZWxj b21lKQp0ZXN0X3JlY2VpdmVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5 IiwgbGluZSAxMDI1LCBpbiB0ZXN0X3JlY2VpdmVyCiAgICBmID0geWllbGQgc2VsZi5hc3NlcnRG YWlsdXJlKHJlY2VpdmVfZCwgV2VsY29tZUVycm9yKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSA2NTQs IGluIF9ydW5DYWxsYmFja3MKICAgIGN1cnJlbnQucmVzdWx0ID0gY2FsbGJhY2soY3VycmVudC5y ZXN1bHQsICphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3RyaWFsL19hc3luY3Rlc3QucHkiLCBsaW5lIDc1LCBpbiBfZWIKICAg IHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihvdXRwdXQpCnR3aXN0ZWQudHJpYWwudW5pdHRl c3QuRmFpbFRlc3Q6IApFeHBlY3RlZDogKDxjbGFzcyAnd29ybWhvbGUuZXJyb3JzLldlbGNvbWVF cnJvcic+LCkKR290OgpbRmFpbHVyZSBpbnN0YW5jZTogVHJhY2ViYWNrOiA8Y2xhc3MgJ1R5cGVF cnJvcic+OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9jbGkucHk6MTAyNDp0ZXN0X3JlY2VpdmVyCi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9jbGkvY21kX3JlY2VpdmUucHk6NDk6cmVjZWl2ZQovZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNjEzOnVu d2luZEdlbmVyYXRvcgovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weToxNTI5Ol9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNrcwotLS0g PGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5OjE0MTg6X2lubGluZUNhbGxiYWNrcwov dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9yZWNlaXZlLnB5OjgxOmdvCi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS93b3JtaG9sZS5weToyOTA6Y3JlYXRlCjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3 b3JtaG9sZS5fYm9zcy5Cb3NzPjoyMzpfX2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jv c3MucHk6NTI6X19hdHRyc19wb3N0X2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3Mu cHk6NjI6X2J1aWxkX3dvcmtlcnMKPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5k ZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+OjE4Ol9faW5pdF9fCi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fcmVuZGV6dm91cy5weTo4NzpfX2F0dHJzX3Bvc3RfaW5pdF9fCi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5OjEx Mjc6d2hlbkNvbm5lY3RlZAovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19tZXRob2RpY2FsLnB5OjIzNDpfX2dldF9fCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6NDA6ZGVjb3JhdG9yCi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6MzI6 Y29weWZ1bmN0aW9uCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHk6MjA6Y29weWNvZGUKXQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGQUlMOiB0ZXN0 X3NlbmRlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Ob3RXZWxjb21lKQp0ZXN0X3NlbmRlcgot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2NsaS5weSIsIGxpbmUgMTAxNywgaW4gdGVz dF9zZW5kZXIKICAgIGYgPSB5aWVsZCBzZWxmLmFzc2VydEZhaWx1cmUoc2VuZF9kLCBXZWxjb21l RXJyb3IpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDY1NCwgaW4gX3J1bkNhbGxiYWNrcwogICAgY3Vy cmVudC5yZXN1bHQgPSBjYWxsYmFjayhjdXJyZW50LnJlc3VsdCwgKmFyZ3MsICoqa3cpCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdHJpYWwvX2Fz eW5jdGVzdC5weSIsIGxpbmUgNzUsIGluIF9lYgogICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0 aW9uKG91dHB1dCkKdHdpc3RlZC50cmlhbC51bml0dGVzdC5GYWlsVGVzdDogCkV4cGVjdGVkOiAo PGNsYXNzICd3b3JtaG9sZS5lcnJvcnMuV2VsY29tZUVycm9yJz4sKQpHb3Q6CltGYWlsdXJlIGlu c3RhbmNlOiBUcmFjZWJhY2s6IDxjbGFzcyAnVHlwZUVycm9yJz46IGFuIGludGVnZXIgaXMgcmVx dWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2Ns aS5weToxMDE2OnRlc3Rfc2VuZGVyCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3NlbmQu cHk6Mzg6c2VuZAovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weToxNjEzOnVud2luZEdlbmVyYXRvcgovZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNTI5Ol9jYW5jZWxs YWJsZUlubGluZUNhbGxiYWNrcwotLS0gPGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5 OjE0MTg6X2lubGluZUNhbGxiYWNrcwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9zZW5k LnB5OjY2OmdvCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weToyOTA6Y3JlYXRlCjxh dHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPjoyMzpfX2luaXRfXwovdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHk6NTI6X19hdHRyc19wb3N0X2luaXRfXwovdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvX2Jvc3MucHk6NjI6X2J1aWxkX3dvcmtlcnMKPGF0dHJzIGdlbmVyYXRl ZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+OjE4Ol9faW5p dF9fCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weTo4NzpfX2F0dHJzX3Bvc3Rf aW5pdF9fCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxp Y2F0aW9uL2ludGVybmV0LnB5OjExMjc6d2hlbkNvbm5lY3RlZAovZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5OjIzNDpfX2dldF9fCi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6 NDA6ZGVjb3JhdG9yCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHk6MzI6Y29weWZ1bmN0aW9uCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6MjA6Y29weWNvZGUKXQoKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpSYW4gNDQ3IHRlc3RzIGluIDEyNi4wNjZzCgpGQUlMRUQgKGZhaWx1cmVzPTcs IGVycm9ycz0xNjcsIHNraXBwZWQ9MjgpClRlc3QgZmFpbGVkOiA8dW5pdHRlc3QucnVubmVyLlRl eHRUZXN0UmVzdWx0IHJ1bj00NDcgZXJyb3JzPTE2NyBmYWlsdXJlcz03PgplcnJvcjogVGVzdCBm YWlsZWQ6IDx1bml0dGVzdC5ydW5uZXIuVGV4dFRlc3RSZXN1bHQgcnVuPTQ0NyBlcnJvcnM9MTY3 IGZhaWx1cmVzPTc+CmNvbW1hbmQgInB5dGhvbiIgIi1jIiAiaW1wb3J0IHNldHVwdG9vbHMsIHRv a2VuaXplO19fZmlsZV9fPSdzZXR1cC5weSc7Zj1nZXRhdHRyKHRva2VuaXplLCAnb3BlbicsIG9w ZW4pKF9fZmlsZV9fKTtjb2RlPWYucmVhZCgpLnJlcGxhY2UoJ1xcclxcbicsICdcXG4nKTtmLmNs b3NlKCk7ZXhlYyhjb21waWxlKGNvZGUsIF9fZmlsZV9fLCAnZXhlYycpKSIgInRlc3QiIGZhaWxl ZCB3aXRoIHN0YXR1cyAxCg== --000000000000b2c9ee05a5911b7d-- From unknown Tue Aug 19 23:13:09 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Mikhail Tsykalov Subject: bug#41249: closed (Re: bug#41249: magic-wormhole fails to build) Message-ID: References: <87zhaatx0a.fsf@devup.no> X-Gnu-PR-Message: they-closed 41249 X-Gnu-PR-Package: guix Reply-To: 41249@debbugs.gnu.org Date: Thu, 14 May 2020 14:25:03 +0000 Content-Type: multipart/mixed; boundary="----------=_1589466303-20386-1" This is a multi-part message in MIME format... ------------=_1589466303-20386-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #41249: magic-wormhole fails to build which was filed against the guix package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 41249@debbugs.gnu.org. --=20 41249: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D41249 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1589466303-20386-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 41249-done) by debbugs.gnu.org; 14 May 2020 14:24:47 +0000 Received: from localhost ([127.0.0.1]:34338 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jZEn1-0005Hv-72 for submit@debbugs.gnu.org; Thu, 14 May 2020 10:24:47 -0400 Received: from out4-smtp.messagingengine.com ([66.111.4.28]:39881) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jZEmy-0005HR-O2 for 41249-done@debbugs.gnu.org; Thu, 14 May 2020 10:24:45 -0400 Received: from compute4.internal (compute4.nyi.internal [10.202.2.44]) by mailout.nyi.internal (Postfix) with ESMTP id 6B9CD5C0199; Thu, 14 May 2020 10:24:39 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute4.internal (MEProxy); Thu, 14 May 2020 10:24:39 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.com; h= from:to:subject:in-reply-to:references:date:message-id :mime-version:content-type; s=fm2; bh=KqRKtvo9MUzjLLi4DBqv/MJopS vGuSs/rcWpOLD/w7g=; b=XYVvNf9QJEj0UphuxsYSUbMjZNIcxYox40XRxYzDSi 1kqJ/3x24l4JXGnnvo2hOHz17N7MOiJDVvjw8S0hpBn0PkQeGbXWY1sTXtDI7lQ0 9AOlUfBIagqF7YlA1RrP78yeT6Q8f21vcJyKj7zEWqWJrGDWCudDYEJsqAhwUcXq b1HKW3bteYsbplgACZrVPOZ+HgeO/FjzLvLFaUkwYeLcQEOClwzDoUD6CnUcKm5J 63TbPjb8+gLcY7HHszpcYG6j+XdI9O0xmZnIAoN6oR/Y+dueJy+/W0oC9A7VyFBy fpk+0A3yQrojYyH9E4W0zVJH7mH164Vcx2bxpLI5v5jQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=KqRKtv o9MUzjLLi4DBqv/MJopSvGuSs/rcWpOLD/w7g=; b=UnBgADrJk3+UOBVF0YQwjC 4ZyJaInG0LM/tjTbdR+pTIokM+0f5bTCJiF33jsIKFFoGPNqbyjFzwq4e8ruTEyY JVG//jAFvb6pEm5jlTvEUMzbW5zhtxGY+BcS7vk91lxBLxDgJNek9LG7OTnCQJsF WzQ9hTp1EuxOAkUtc+uQuUOHGhOd+3RYjlzqjcXZ1lJ9BlWLPEUbY/bTWMGqnTCa 1PgKzLJF1l0t6Y2UoHx675TH/qvh9/N9be6W+QpM0I0iyENu+URKkRiLRtMtqcSj 9Hu1y9S8+MspLdv/igF0uAWIl+Xn2/esTnGaucfroxE59h4nvNz9c1Wd+4NefajA == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduhedrleeigdejudcutefuodetggdotefrodftvf curfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfghnecu uegrihhlohhuthemuceftddtnecunecujfgurhephffvufgjfhgffffkgggtsehgtderre dtredtnecuhfhrohhmpeforghrihhushcuuegrkhhkvgcuoehmsggrkhhkvgesfhgrshht mhgrihhlrdgtohhmqeenucggtffrrghtthgvrhhnpedtvdfggeevgeeivdffueejiedtte dvkedtudfggfdtgeefiedtieekffdugfeuffenucfkphepkeegrddvtddvrdeikedrjeeh necuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepmhgsrg hkkhgvsehfrghsthhmrghilhdrtghomh X-ME-Proxy: Received: from localhost (ti0006q161-2604.bb.online.no [84.202.68.75]) by mail.messagingengine.com (Postfix) with ESMTPA id D79953060EF2; Thu, 14 May 2020 10:24:38 -0400 (EDT) From: Marius Bakke To: Mikhail Tsykalov , 41249-done@debbugs.gnu.org Subject: Re: bug#41249: magic-wormhole fails to build In-Reply-To: References: User-Agent: Notmuch/0.29.3 (https://notmuchmail.org) Emacs/26.3 (x86_64-pc-linux-gnu) Date: Thu, 14 May 2020 16:24:37 +0200 Message-ID: <87zhaatx0a.fsf@devup.no> MIME-Version: 1.0 Content-Type: multipart/signed; boundary="=-=-="; micalg=pgp-sha512; protocol="application/pgp-signature" X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 41249-done X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) --=-=-= Content-Type: text/plain Mikhail Tsykalov writes: > magic-wormhole fails in test stage with errors similar to following: > > Expected: (,) > Got: [Failure instance: Traceback: : an integer is > required (got type bytes) Fixed in f227dd489b0a1e6905801b1e73f85dde852b5713, thanks! --=-=-= Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEu7At3yzq9qgNHeZDoqBt8qM6VPoFAl69VKUACgkQoqBt8qM6 VPrcRQf+Py7aeyI/SdSQ+HKrFeCZbylCmADSoF+5Msbm4SHEVzW3kVErf4aky7UW W8MwketbUpNZmsUaIzYyQd0IqDFUGtDkV7O9qFWrK8MZCoVlHgFOc9Qy8KcUYlry mRwlPMR8fQpF9p+gG9lPM6t0kZhBRWYmknslIivEwmEoUk0GJ6hLZvew+ATaZVJ1 CKI1YcQr0N+yqDHBj1+7PJwTVnnaGlCN4sLqiUmAlHeBBQs7V15ojF1VHvD6KVXY BOP6EjZ4owHl5qTd9ImGpjvObhz7bJu2Tj+/gX4iEbnVFf1JiGfBeocvPNCcIBVQ +/+kxc3do0W0DcKPmI6K3fkJT47TvQ== =FYpU -----END PGP SIGNATURE----- --=-=-=-- ------------=_1589466303-20386-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 14 May 2020 00:52:48 +0000 Received: from localhost ([127.0.0.1]:59896 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jZ27E-0007Er-9W for submit@debbugs.gnu.org; Wed, 13 May 2020 20:52:48 -0400 Received: from lists.gnu.org ([209.51.188.17]:47016) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jZ27C-0007Eh-9p for submit@debbugs.gnu.org; Wed, 13 May 2020 20:52:46 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:57906) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jZ27C-0003t5-01 for bug-guix@gnu.org; Wed, 13 May 2020 20:52:46 -0400 Received: from mail-qt1-x82f.google.com ([2607:f8b0:4864:20::82f]:41236) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jZ26k-0007B7-Mk for bug-guix@gnu.org; Wed, 13 May 2020 20:52:45 -0400 Received: by mail-qt1-x82f.google.com with SMTP id m44so55542qtm.8 for ; Wed, 13 May 2020 17:52:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=qYD+LznimRkKDCSxFCEbuhSx6SRqf5WWdrNIU3Tf8a0=; b=CbAE4ZY69Q4ItbpuSo8/xQWtfjNaKxk5MSXG5bFsKbcq3DT16vxBl2yKZnNoyGhdMM dIXs59ydQ0tx5C1wKDcusULQUAJrGIfLLVKUqDYqb86trWkz135GnLU+oKvCkuzy0fXj im9oSgrQmczgEg0I2+mSR3pYzNcEeevI0P4dxCH/maIdZEYZ/5QbVZe41hzuAmQmuAsS +K6nItNsk+8uyyiCa+DnRYhPzml3A6GneuVtl8EWu5dTt48SBf3JdtlNCRCL2Ld2mkFl vDKf2CAzC7wfik8zW5/zcCgqCYjbkbW3Do8146V12zoGA4SbB2SuKtrsG+KLBDSomcIL QfyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=qYD+LznimRkKDCSxFCEbuhSx6SRqf5WWdrNIU3Tf8a0=; b=aOK7pl/M9sS7TL7jqlMxVIn33ypyE++qOgLRxXHH2u8fVO9LFXfcsTsbuNIVmT9jwi hUTrRijXfNR7jrCuNg2hz6WG7FDh4nP1wyUPKW5nVIi/57OFqq36JJ8BYHZboJKyBAo1 xxhZZ0ch99ktyVqiBo26aGgANiJxzEJm1+DEqxH7H1UJmPuzY1qhhjUU6uysQ66zmnzB 7JP3hNFITFvCr/opgYu4oqAIa74z6b1yBgfZyJLKf+Vmb9ypQRT5UI1b0XItfzmV2nQ0 qcxFppp1OzVUFPA9LwusvXe9ZOcSNQ3tUUQIV+QHFHiZXxK8Mnzsm/s+84F8U1ETYXtW Ppyg== X-Gm-Message-State: AOAM530Yfq3f2y/w5bn3WTuMIk/yHTdIx3tbthEftbndBKhP8qdzFaA3 FXsJvlJYAlqGyRvuZK7/rsvOHIEjHBc2nzqZ3DFRHAN0NJk= X-Google-Smtp-Source: ABdhPJyiuA9Oh0JUTYUYKFC1FwWeE59MaWd3i0EoXsRrIyzzQx5WEMWpnAgl7/qvkj9x9peFfaK1DOuMcZrzoSSU+rQ= X-Received: by 2002:ac8:2c78:: with SMTP id e53mr1935584qta.365.1589417537076; Wed, 13 May 2020 17:52:17 -0700 (PDT) MIME-Version: 1.0 From: Mikhail Tsykalov Date: Thu, 14 May 2020 03:52:05 +0300 Message-ID: Subject: magic-wormhole fails to build To: bug-guix@gnu.org Content-Type: multipart/mixed; boundary="000000000000b2c9ee05a5911b7d" Received-SPF: pass client-ip=2607:f8b0:4864:20::82f; envelope-from=tsymsh@gmail.com; helo=mail-qt1-x82f.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" --000000000000b2c9ee05a5911b7d Content-Type: text/plain; charset="UTF-8" magic-wormhole fails in test stage with errors similar to following: Expected: (,) Got: [Failure instance: Traceback: : an integer is required (got type bytes) Attaching build log. commit: 8ba4d8a347fbdf9fe09e8ac801b4ac0586ac382a --000000000000b2c9ee05a5911b7d Content-Type: text/plain; charset="US-ASCII"; name="magic-wormhole-buildlog.txt" Content-Disposition: attachment; filename="magic-wormhole-buildlog.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_ka6254kn0 c3RhcnRpbmcgcGhhc2UgYHNldC1TT1VSQ0UtREFURS1FUE9DSCcKcGhhc2UgYHNldC1TT1VSQ0Ut REFURS1FUE9DSCcgc3VjY2VlZGVkIGFmdGVyIDAuMCBzZWNvbmRzCnN0YXJ0aW5nIHBoYXNlIGBz ZXQtcGF0aHMnCmVudmlyb25tZW50IHZhcmlhYmxlIGBQQVRIJyBzZXQgdG8gYC9nbnUvc3RvcmUv d2M0eGg5d2o0OXJsYnlpdnhpNGxzd3M2d2hoeng0YWItcHl0aG9uLXdyYXBwZXItMy44LjIvYmlu Oi9nbnUvc3RvcmUvNGZzMW1wY2o4ZzdmaGcyM3I4Z2Z5ODQ1MzVhODZrZ2ItcHl0aG9uLXRxZG0t NC40My4wL2JpbjovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9iaW46L2dudS9zdG9yZS92NmY0NHpjY3doOXo1emszcGpseXdq eWJiaThuMmhqaC10YXItMS4zMi9iaW46L2dudS9zdG9yZS9uY3lkZ3Eyem5tczVuMWQyazV5cXNo aGY1OG5zaXh3di1nemlwLTEuMTAvYmluOi9nbnUvc3RvcmUvaThoMnBjeHFkcTA3aWptM2lia2th OGY0c21uMXc0OHYtYnppcDItMS4wLjgvYmluOi9nbnUvc3RvcmUvOTg2MGYxYWJxajh3ampud2w4 YTl2NTRwZGNjM2JoZ2YteHotNS4yLjQvYmluOi9nbnUvc3RvcmUvNjBnN3IzbDAxZmQ3YzU4eWpi bTZrcmdjd2oxamtwd2ctZmlsZS01LjM4L2JpbjovZ251L3N0b3JlL240bjU2MHBmdnZ3NTBhOTM2 OWF4dzV2ajVycnFmajFuLWRpZmZ1dGlscy0zLjcvYmluOi9nbnUvc3RvcmUvY2Q1cWYza2NubHEz NXA5azM5MnBqZHBkenBzbmRzNzAtcGF0Y2gtMi43LjYvYmluOi9nbnUvc3RvcmUvaGljN3NuaGF5 Zmw3bTZjcGZxcXI3M25tbTE5YnBxa2ctZmluZHV0aWxzLTQuNy4wL2JpbjovZ251L3N0b3JlL3N3 cWR2d3JpOWRidjZ6c3NnNnYwYnk3bDA1aGQ2d3hwLWdhd2stNS4wLjEvYmluOi9nbnUvc3RvcmUv aXNoazdmc3djczRna3djcDhtaDc4OHo0bXZ2bDlieGgtc2VkLTQuOC9iaW46L2dudS9zdG9yZS9i aHM0cmo1OHY4ajFuYXJiMjQ1NHJhYW4ycHMzOHhkOC1ncmVwLTMuNC9iaW46L2dudS9zdG9yZS81 N3hqNWdjeTFqYmw5YWkybG5ycW5wcjBkYWxkOWk2NS1jb3JldXRpbHMtOC4zMi9iaW46L2dudS9z dG9yZS9obTQwYnhudjhqeG1iYzFscGI3emZpbWlpNHhtOW04MS1tYWtlLTQuMy9iaW46L2dudS9z dG9yZS9wd2NwMjM5a2pmN2xuajVpNGxrZHpjZmN4d2NmeWs3Mi1iYXNoLW1pbmltYWwtNS4wLjE2 L2JpbjovZ251L3N0b3JlL21wYTA0YXE4bGJsYmN2aXl4eXd4Y3NiMXpiaTBtZjM5LWxkLXdyYXBw ZXItMC9iaW46L2dudS9zdG9yZS9tMXo3Y2RicXNxeXA5eG5qdzVjdmxiNGE3Z2tjZzNtNC1iaW51 dGlscy0yLjM0L2JpbjovZ251L3N0b3JlL3JuNzVmbTdhZGd4M3B3NWo4cGczYmN6ZnFxMXkxN2xr LWdjYy03LjUuMC9iaW46L2dudS9zdG9yZS9mYTZ3ajVieGtqNWxsMWQ3MjkyYTcwa25teWw3YTBj ci1nbGliYy0yLjMxL2JpbjovZ251L3N0b3JlL2ZhNndqNWJ4a2o1bGwxZDcyOTJhNzBrbm15bDdh MGNyLWdsaWJjLTIuMzEvc2JpbjovZ251L3N0b3JlL3E5cm04aDlpbWF6c3EyYzRxaXYyeWpwdmx2 bGl5d3FiLXB5dGhvbi0zLjguMi9iaW46L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9iaW46L2dudS9zdG9yZS84YW12Y3FrNzJs amYwMjBkdngyZGMweHdsNzZsNmM0NC1weXRob24tY2hhcmRldC0zLjAuNC9iaW4nCmVudmlyb25t ZW50IHZhcmlhYmxlIGBQWVRIT05QQVRIJyBzZXQgdG8gYC9nbnUvc3RvcmUvZHBqdjRseGJ2OHJi ZDRpbHBicG03dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzOi9nbnUvc3RvcmUvc2lsbnFhYjMyNTdrcjI4MnFnMjIzd2R2djY4Nnp6d2ctbWFn aWMtd29ybWhvbGUtbWFpbGJveC1zZXJ2ZXItMC40LjEvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzOi9nbnUvc3RvcmUvYm04NmEyZmhiamp2c2k2amE0bXljNnhjdjR5c3BnemctbWFnaWMtd29y bWhvbGUtdHJhbnNpdC1yZWxheS0wLjIuMS9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2du dS9zdG9yZS9zbHl2MzB5NHlwem14MnZqYWQ2NG5pOHg3NjdtNnliZi1weXRob24tYXV0b2JhaG4t MTkuMi4xL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL2ZrZngwazM3ejVk cGN2bnF4eGFsNng3bGRrcjd6cm40LXB5dGhvbi1jbGljay03LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzOi9nbnUvc3RvcmUvOWs0bG0zcmMyMzU3eWp3MDQxaHNueTJoOHhra2t4N20tcHl0 aG9uLWhrZGYtMC4wLjMvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvemc5 ZjBuanZyNDl3bG5uMXZtNXZxa3kxN3E3czZsaWctcHl0aG9uLWh1bWFuaXplLTAuNS4xL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL3o5emkwbmhqbTk1enByOW54ejc3amNs ZDFxcmpwYm5mLXB5dGhvbi1weW5hY2wtMS4zLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz Oi9nbnUvc3RvcmUvd2M4cW1iMzdwMTN3YXlwcml6YndndjJqNzB4NHN5eDUtcHl0aG9uLXNwYWtl Mi0wLjgvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvNGZzMW1wY2o4Zzdm aGcyM3I4Z2Z5ODQ1MzVhODZrZ2ItcHl0aG9uLXRxZG0tNC40My4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlczovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9y ZS93Y2d2aGd4a3JsYnpwencxdjJhZmN5cTNoejQ0M2t4bi1weXRob24tdHh0b3Jjb24tMTkuMC4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL3E5cm04aDlpbWF6c3EyYzRx aXYyeWpwdmx2bGl5d3FiLXB5dGhvbi0zLjguMi9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6 L2dudS9zdG9yZS9iMHN2c2Z6MnZ3MnF3bGZzaTU2azhmd2J4NGZ6Y2Zoay1weXRob24tc2l4LTEu MTQuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS9wZ3kyM2FyNmM2M2gx eGdyanJwcTM4dzA0NG5qNGxkOC1weXRob24tdHJlcS0xOC42LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzOi9nbnUvc3RvcmUvd3BqcnNhZ3p4NzExMjNsNnE4cGpsMHF5M3ByMzM0eTctcHl0 aG9uLXNlcnZpY2UtaWRlbnRpdHktMTguMS4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczov Z251L3N0b3JlL3FuemZ6a3p4OWE5c2ZxZGw1MXdheGZqc3gyZjUwOTZsLXB5dGhvbi1pZG5hLTIu OC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS8ybmcxNTg4cXNzN2Nudnpr MmdjaXM3Z240cGI0aXpzYS1weXRob24tYXR0cnMtMTkuMy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlczovZ251L3N0b3JlL2d6Z2F2bTlwMndhNnkyNDNrenpqODYxOHl3cnNobTFzLXB5dGhv bi10eGFpby0xOC44LjEvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvZzFt aGF2c21kN2ZsZGs0OWQ5NWlzcmE0bjl3bTRqdnMtcHl0aG9uLWNmZmktMS4xMy4yL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczov Z251L3N0b3JlL3BwYjU4a3FpYng4dzN6MGd4YTQ2enh6cXM3cnZybmxzLXB5dGhvbi1jb25zdGFu dGx5LTE1LjEuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS9kczY3OXY4 aG1rOHE1OXA0NmtrbDRsbXkxbndpcXhjei1weXRob24taHlwZXJsaW5rLTE5LjAuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS82ejZ3N2g5OGRuZjZuOGZmeThkbjQyM3F6 djJ2eGs3NC1weXRob24taW5jcmVtZW50YWwtMTcuNS4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlczovZ251L3N0b3JlLzZ4MzMwY2Z4MGdtYWRsbjBnM2psc2JoajRua2l4NzN2LXB5dGhvbi1w eWhhbWNyZXN0LTEuOS4wLTAuMjVmZGM1Zi9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2du dS9zdG9yZS9kaWI5M2t4bjRoYXlocDd2YWY0NThpd2wxcHg3eHI4Yi1weXRob24tem9wZS1pbnRl cmZhY2UtNC43LjIvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvcWc0OGpk enppMTV4cG0zajY0YWp4MjU5YXJxbHg5OG4tcHl0aG9uLWlwYWRkcmVzcy0xLjAuMjIvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvdjA4ajBjbG13MzFydmMwYWF6amY4ZmZp N3BpcXB2MXAtcHl0aG9uLXJlcXVlc3RzLTIuMjIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXM6L2dudS9zdG9yZS9obHNjbDlhcnluczI1YWFzeWxnMHB5YTRqa2Fjc2tycC1weXRob24tcHlv cGVuc3NsLTE5LjAuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS96aGxr MWEwenhmcjFuc2pwYTg4NmIwaXlqMWE2NjRoaS1weXRob24tcHlhc24xLW1vZHVsZXMtMC4yLjIv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvajlzZms1aWpsc2NxbWtxZ2Q1 bjJybXpraW15bmdiYWotcHl0aG9uLXB5YXNuMS0wLjQuOC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXM6L2dudS9zdG9yZS9hcmhxaXBxMW5saXFrNDVxY2tuM3hxeGY5OGk2OWI5NC1weXRob24t cHljcGFyc2VyLTIuMTkvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzOi9nbnUvc3RvcmUvMDRw a2ZqYTR2NmNxa2tuYjF5d2ZwYTVjbno2d3l4MHgtcHl0aG9uLXVybGxpYjMtMS4yNS4zL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlLzhhbXZjcWs3MmxqZjAyMGR2eDJkYzB4 d2w3Nmw2YzQ0LXB5dGhvbi1jaGFyZGV0LTMuMC40L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl czovZ251L3N0b3JlLzNkYW43NmduczgycmZhaHMxeDJpdzF3N2RycXA3Ymk4LXB5dGhvbi1jZXJ0 aWZpLTIwMTkuMy45L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL2N6cjFo NTFqeXp6ZmIyczM2MHFnaGcwdjN5M3czemNoLXB5dGhvbi1jcnlwdG9ncmFwaHktMi43L2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlczovZ251L3N0b3JlL25scDh3d3kxbWc3MjgzcXNrOTZ5a2xm YzhuMWcybTBwLXB5dGhvbi1weXNvY2tzLTEuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl czovZ251L3N0b3JlL3I2bmdyMXNtd2FoMzgzcmRqYjMyNDBwNHAwNHlkaWNwLXB5dGhvbi1pc284 NjAxLTAuMS4xMi9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXM6L2dudS9zdG9yZS95eWszOHhn N3FrOHh5cng3NHdoOWQzbWNpcXkwNzlpay1weXRob24tYXNuMWNyeXB0by0wLjI0LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzJwplbnZpcm9ubWVudCB2YXJpYWJsZSBgQkFTSF9MT0FEQUJM RVNfUEFUSCcgdW5zZXQKZW52aXJvbm1lbnQgdmFyaWFibGUgYENfSU5DTFVERV9QQVRIJyBzZXQg dG8gYC9nbnUvc3RvcmUvaThoMnBjeHFkcTA3aWptM2lia2thOGY0c21uMXc0OHYtYnppcDItMS4w LjgvaW5jbHVkZTovZ251L3N0b3JlLzk4NjBmMWFicWo4d2pqbndsOGE5djU0cGRjYzNiaGdmLXh6 LTUuMi40L2luY2x1ZGU6L2dudS9zdG9yZS82MGc3cjNsMDFmZDdjNTh5amJtNmtyZ2N3ajFqa3B3 Zy1maWxlLTUuMzgvaW5jbHVkZTovZ251L3N0b3JlL3N3cWR2d3JpOWRidjZ6c3NnNnYwYnk3bDA1 aGQ2d3hwLWdhd2stNS4wLjEvaW5jbHVkZTovZ251L3N0b3JlL2htNDBieG52OGp4bWJjMWxwYjd6 ZmltaWk0eG05bTgxLW1ha2UtNC4zL2luY2x1ZGU6L2dudS9zdG9yZS9tMXo3Y2RicXNxeXA5eG5q dzVjdmxiNGE3Z2tjZzNtNC1iaW51dGlscy0yLjM0L2luY2x1ZGU6L2dudS9zdG9yZS9ybjc1Zm03 YWRneDNwdzVqOHBnM2JjemZxcTF5MTdsay1nY2MtNy41LjAvaW5jbHVkZTovZ251L3N0b3JlL2Zh NndqNWJ4a2o1bGwxZDcyOTJhNzBrbm15bDdhMGNyLWdsaWJjLTIuMzEvaW5jbHVkZTovZ251L3N0 b3JlL3E5cm04aDlpbWF6c3EyYzRxaXYyeWpwdmx2bGl5d3FiLXB5dGhvbi0zLjguMi9pbmNsdWRl Oi9nbnUvc3RvcmUvczU0YzZyYmw0MDQxNmxsMGtycnI1Mm0zeWl2eGNsM3gtbGlic29kaXVtLTEu MC4xOC9pbmNsdWRlOi9nbnUvc3RvcmUvZ2ZhcGtrNWM2aHZsMWQ5NG00c3FuaG43ZjlsNWdxeWgt bGludXgtbGlicmUtaGVhZGVycy01LjQuMjAvaW5jbHVkZScKZW52aXJvbm1lbnQgdmFyaWFibGUg YENQTFVTX0lOQ0xVREVfUEFUSCcgc2V0IHRvIGAvZ251L3N0b3JlL2k4aDJwY3hxZHEwN2lqbTNp YmtrYThmNHNtbjF3NDh2LWJ6aXAyLTEuMC44L2luY2x1ZGU6L2dudS9zdG9yZS85ODYwZjFhYnFq OHdqam53bDhhOXY1NHBkY2MzYmhnZi14ei01LjIuNC9pbmNsdWRlOi9nbnUvc3RvcmUvNjBnN3Iz bDAxZmQ3YzU4eWpibTZrcmdjd2oxamtwd2ctZmlsZS01LjM4L2luY2x1ZGU6L2dudS9zdG9yZS9z d3FkdndyaTlkYnY2enNzZzZ2MGJ5N2wwNWhkNnd4cC1nYXdrLTUuMC4xL2luY2x1ZGU6L2dudS9z dG9yZS9obTQwYnhudjhqeG1iYzFscGI3emZpbWlpNHhtOW04MS1tYWtlLTQuMy9pbmNsdWRlOi9n bnUvc3RvcmUvbTF6N2NkYnFzcXlwOXhuanc1Y3ZsYjRhN2drY2czbTQtYmludXRpbHMtMi4zNC9p bmNsdWRlOi9nbnUvc3RvcmUvcm43NWZtN2FkZ3gzcHc1ajhwZzNiY3pmcXExeTE3bGstZ2NjLTcu NS4wL2luY2x1ZGUvYysrOi9nbnUvc3RvcmUvcm43NWZtN2FkZ3gzcHc1ajhwZzNiY3pmcXExeTE3 bGstZ2NjLTcuNS4wL2luY2x1ZGU6L2dudS9zdG9yZS9mYTZ3ajVieGtqNWxsMWQ3MjkyYTcwa25t eWw3YTBjci1nbGliYy0yLjMxL2luY2x1ZGU6L2dudS9zdG9yZS9xOXJtOGg5aW1henNxMmM0cWl2 MnlqcHZsdmxpeXdxYi1weXRob24tMy44LjIvaW5jbHVkZTovZ251L3N0b3JlL3M1NGM2cmJsNDA0 MTZsbDBrcnJyNTJtM3lpdnhjbDN4LWxpYnNvZGl1bS0xLjAuMTgvaW5jbHVkZTovZ251L3N0b3Jl L2dmYXBrazVjNmh2bDFkOTRtNHNxbmhuN2Y5bDVncXloLWxpbnV4LWxpYnJlLWhlYWRlcnMtNS40 LjIwL2luY2x1ZGUnCmVudmlyb25tZW50IHZhcmlhYmxlIGBMSUJSQVJZX1BBVEgnIHNldCB0byBg L2dudS9zdG9yZS9kcGp2NGx4YnY4cmJkNGlscGJwbTd3OGJ6NjBuNGJxcS1weXRob24tbW9jay0z LjAuNS9saWI6L2dudS9zdG9yZS9zaWxucWFiMzI1N2tyMjgycWcyMjN3ZHZ2Njg2enp3Zy1tYWdp Yy13b3JtaG9sZS1tYWlsYm94LXNlcnZlci0wLjQuMS9saWI6L2dudS9zdG9yZS9ibTg2YTJmaGJq anZzaTZqYTRteWM2eGN2NHlzcGd6Zy1tYWdpYy13b3JtaG9sZS10cmFuc2l0LXJlbGF5LTAuMi4x L2xpYjovZ251L3N0b3JlL3NseXYzMHk0eXB6bXgydmphZDY0bmk4eDc2N202eWJmLXB5dGhvbi1h dXRvYmFobi0xOS4yLjEvbGliOi9nbnUvc3RvcmUvZmtmeDBrMzd6NWRwY3ZucXh4YWw2eDdsZGty N3pybjQtcHl0aG9uLWNsaWNrLTcuMC9saWI6L2dudS9zdG9yZS85azRsbTNyYzIzNTd5ancwNDFo c255Mmg4eGtra3g3bS1weXRob24taGtkZi0wLjAuMy9saWI6L2dudS9zdG9yZS96ZzlmMG5qdnI0 OXdsbm4xdm01dnFreTE3cTdzNmxpZy1weXRob24taHVtYW5pemUtMC41LjEvbGliOi9nbnUvc3Rv cmUvejl6aTBuaGptOTV6cHI5bnh6NzdqY2xkMXFyanBibmYtcHl0aG9uLXB5bmFjbC0xLjMuMC9s aWI6L2dudS9zdG9yZS93YzhxbWIzN3AxM3dheXByaXpid2d2Mmo3MHg0c3l4NS1weXRob24tc3Bh a2UyLTAuOC9saWI6L2dudS9zdG9yZS80ZnMxbXBjajhnN2ZoZzIzcjhnZnk4NDUzNWE4NmtnYi1w eXRob24tdHFkbS00LjQzLjAvbGliOi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYjovZ251L3N0b3JlL3djZ3ZoZ3hrcmxi enB6dzF2MmFmY3lxM2h6NDQza3huLXB5dGhvbi10eHRvcmNvbi0xOS4wLjAvbGliOi9nbnUvc3Rv cmUvaThoMnBjeHFkcTA3aWptM2lia2thOGY0c21uMXc0OHYtYnppcDItMS4wLjgvbGliOi9nbnUv c3RvcmUvOTg2MGYxYWJxajh3ampud2w4YTl2NTRwZGNjM2JoZ2YteHotNS4yLjQvbGliOi9nbnUv c3RvcmUvNjBnN3IzbDAxZmQ3YzU4eWpibTZrcmdjd2oxamtwd2ctZmlsZS01LjM4L2xpYjovZ251 L3N0b3JlL3N3cWR2d3JpOWRidjZ6c3NnNnYwYnk3bDA1aGQ2d3hwLWdhd2stNS4wLjEvbGliOi9n bnUvc3RvcmUvbTF6N2NkYnFzcXlwOXhuanc1Y3ZsYjRhN2drY2czbTQtYmludXRpbHMtMi4zNC9s aWI6L2dudS9zdG9yZS9mYTZ3ajVieGtqNWxsMWQ3MjkyYTcwa25teWw3YTBjci1nbGliYy0yLjMx L2xpYjovZ251L3N0b3JlL3MzZGNxendxYWFrdjF5eDM3Ynk5Y2hrc2Ria2dpaDE3LWdsaWJjLTIu MzEtc3RhdGljL2xpYjovZ251L3N0b3JlL2h3Y2t5NzQ0NnM5NTJ3MG13Y2hobW0yMTFsbDA3enJx LWdsaWJjLXV0ZjgtbG9jYWxlcy0yLjMxL2xpYjovZ251L3N0b3JlL3E5cm04aDlpbWF6c3EyYzRx aXYyeWpwdmx2bGl5d3FiLXB5dGhvbi0zLjguMi9saWI6L2dudS9zdG9yZS9iMHN2c2Z6MnZ3MnF3 bGZzaTU2azhmd2J4NGZ6Y2Zoay1weXRob24tc2l4LTEuMTQuMC9saWI6L2dudS9zdG9yZS9wZ3ky M2FyNmM2M2gxeGdyanJwcTM4dzA0NG5qNGxkOC1weXRob24tdHJlcS0xOC42LjAvbGliOi9nbnUv c3RvcmUvd3BqcnNhZ3p4NzExMjNsNnE4cGpsMHF5M3ByMzM0eTctcHl0aG9uLXNlcnZpY2UtaWRl bnRpdHktMTguMS4wL2xpYjovZ251L3N0b3JlL3FuemZ6a3p4OWE5c2ZxZGw1MXdheGZqc3gyZjUw OTZsLXB5dGhvbi1pZG5hLTIuOC9saWI6L2dudS9zdG9yZS8ybmcxNTg4cXNzN2NudnprMmdjaXM3 Z240cGI0aXpzYS1weXRob24tYXR0cnMtMTkuMy4wL2xpYjovZ251L3N0b3JlL2d6Z2F2bTlwMndh NnkyNDNrenpqODYxOHl3cnNobTFzLXB5dGhvbi10eGFpby0xOC44LjEvbGliOi9nbnUvc3RvcmUv ZzFtaGF2c21kN2ZsZGs0OWQ5NWlzcmE0bjl3bTRqdnMtcHl0aG9uLWNmZmktMS4xMy4yL2xpYjov Z251L3N0b3JlL3M1NGM2cmJsNDA0MTZsbDBrcnJyNTJtM3lpdnhjbDN4LWxpYnNvZGl1bS0xLjAu MTgvbGliOi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliOi9nbnUvc3RvcmUvcHBiNThrcWlieDh3M3owZ3hhNDZ6eHpxczdy dnJubHMtcHl0aG9uLWNvbnN0YW50bHktMTUuMS4wL2xpYjovZ251L3N0b3JlL2RzNjc5djhobWs4 cTU5cDQ2a2tsNGxteTFud2lxeGN6LXB5dGhvbi1oeXBlcmxpbmstMTkuMC4wL2xpYjovZ251L3N0 b3JlLzZ6Nnc3aDk4ZG5mNm44ZmZ5OGRuNDIzcXp2MnZ4azc0LXB5dGhvbi1pbmNyZW1lbnRhbC0x Ny41LjAvbGliOi9nbnUvc3RvcmUvNngzMzBjZngwZ21hZGxuMGczamxzYmhqNG5raXg3M3YtcHl0 aG9uLXB5aGFtY3Jlc3QtMS45LjAtMC4yNWZkYzVmL2xpYjovZ251L3N0b3JlL2RpYjkza3huNGhh eWhwN3ZhZjQ1OGl3bDFweDd4cjhiLXB5dGhvbi16b3BlLWludGVyZmFjZS00LjcuMi9saWI6L2du dS9zdG9yZS9xZzQ4amR6emkxNXhwbTNqNjRhangyNTlhcnFseDk4bi1weXRob24taXBhZGRyZXNz LTEuMC4yMi9saWI6L2dudS9zdG9yZS92MDhqMGNsbXczMXJ2YzBhYXpqZjhmZmk3cGlxcHYxcC1w eXRob24tcmVxdWVzdHMtMi4yMi4wL2xpYjovZ251L3N0b3JlL2hsc2NsOWFyeW5zMjVhYXN5bGcw cHlhNGprYWNza3JwLXB5dGhvbi1weW9wZW5zc2wtMTkuMC4wL2xpYjovZ251L3N0b3JlL3pobGsx YTB6eGZyMW5zanBhODg2YjBpeWoxYTY2NGhpLXB5dGhvbi1weWFzbjEtbW9kdWxlcy0wLjIuMi9s aWI6L2dudS9zdG9yZS9qOXNmazVpamxzY3Fta3FnZDVuMnJtemtpbXluZ2Jhai1weXRob24tcHlh c24xLTAuNC44L2xpYjovZ251L3N0b3JlL2FyaHFpcHExbmxpcWs0NXFja24zeHF4Zjk4aTY5Yjk0 LXB5dGhvbi1weWNwYXJzZXItMi4xOS9saWI6L2dudS9zdG9yZS8wNHBrZmphNHY2Y3Fra25iMXl3 ZnBhNWNuejZ3eXgweC1weXRob24tdXJsbGliMy0xLjI1LjMvbGliOi9nbnUvc3RvcmUvOGFtdmNx azcybGpmMDIwZHZ4MmRjMHh3bDc2bDZjNDQtcHl0aG9uLWNoYXJkZXQtMy4wLjQvbGliOi9nbnUv c3RvcmUvM2Rhbjc2Z25zODJyZmFoczF4Mml3MXc3ZHJxcDdiaTgtcHl0aG9uLWNlcnRpZmktMjAx OS4zLjkvbGliOi9nbnUvc3RvcmUvY3pyMWg1MWp5enpmYjJzMzYwcWdoZzB2M3kzdzN6Y2gtcHl0 aG9uLWNyeXB0b2dyYXBoeS0yLjcvbGliOi9nbnUvc3RvcmUvbmxwOHd3eTFtZzcyODNxc2s5Nnlr bGZjOG4xZzJtMHAtcHl0aG9uLXB5c29ja3MtMS43LjAvbGliOi9nbnUvc3RvcmUvcjZuZ3Ixc213 YWgzODNyZGpiMzI0MHA0cDA0eWRpY3AtcHl0aG9uLWlzbzg2MDEtMC4xLjEyL2xpYjovZ251L3N0 b3JlL3l5azM4eGc3cWs4eHlyeDc0d2g5ZDNtY2lxeTA3OWlrLXB5dGhvbi1hc24xY3J5cHRvLTAu MjQuMC9saWInCmVudmlyb25tZW50IHZhcmlhYmxlIGBHVUlYX0xPQ1BBVEgnIHNldCB0byBgL2du dS9zdG9yZS9od2NreTc0NDZzOTUydzBtd2NoaG1tMjExbGwwN3pycS1nbGliYy11dGY4LWxvY2Fs ZXMtMi4zMS9saWIvbG9jYWxlJwpwaGFzZSBgc2V0LXBhdGhzJyBzdWNjZWVkZWQgYWZ0ZXIgMC4x IHNlY29uZHMKc3RhcnRpbmcgcGhhc2UgYGluc3RhbGwtbG9jYWxlJwp1c2luZyAnZW5fVVMudXRm OCcgbG9jYWxlIGZvciBjYXRlZ29yeSAiTENfQUxMIgpwaGFzZSBgaW5zdGFsbC1sb2NhbGUnIHN1 Y2NlZWRlZCBhZnRlciAwLjAgc2Vjb25kcwpzdGFydGluZyBwaGFzZSBgdW5wYWNrJwptYWdpYy13 b3JtaG9sZS0wLjEyLjAvCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zZXR1cC5jZmcKbWFnaWMtd29y bWhvbGUtMC4xMi4wL21pc2MvCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9taXNjL3dlYi8KbWFnaWMt d29ybWhvbGUtMC4xMi4wL21pc2Mvd2ViL3RpbWVsaW5lLmNzcwptYWdpYy13b3JtaG9sZS0wLjEy LjAvbWlzYy93ZWIvdGltZWxpbmUuaHRtbAptYWdpYy13b3JtaG9sZS0wLjEyLjAvbWlzYy93ZWIv dGltZWxpbmUuanMKbWFnaWMtd29ybWhvbGUtMC4xMi4wL21pc2MvZHVtcC1zdGF0cy5weQptYWdp Yy13b3JtaG9sZS0wLjEyLjAvbWlzYy9kZW1vLWpvdXJuYWwucHkKbWFnaWMtd29ybWhvbGUtMC4x Mi4wL21pc2Mvd2luZG93cy1idWlsZC5jbWQKbWFnaWMtd29ybWhvbGUtMC4xMi4wL21pc2MvZHVt cC10aW1pbmcucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL1JFQURNRS5tZAptYWdpYy13b3JtaG9s ZS0wLjEyLjAvTElDRU5TRQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc2V0dXAucHkKbWFnaWMtd29y bWhvbGUtMC4xMi4wL2RvY3MvCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3cuZG90Cm1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9kb2NzL3dlbGNvbWUubWQKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2Rv Y3MvYXBpLm1kCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3N0YXRlLW1hY2hpbmVzLwptYWdp Yy13b3JtaG9sZS0wLjEyLjAvZG9jcy9zdGF0ZS1tYWNoaW5lcy9tYWNoaW5lcy5kb3QKbWFnaWMt d29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUtbWFjaGluZXMvdGVybWluYXRvci5kb3QKbWFnaWMt d29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUtbWFjaGluZXMvaW5wdXQuZG90Cm1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9kb2NzL3N0YXRlLW1hY2hpbmVzL2xpc3Rlci5kb3QKbWFnaWMtd29ybWhvbGUt MC4xMi4wL2RvY3Mvc3RhdGUtbWFjaGluZXMvZGlsYXRpb24uZG90Cm1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9kb2NzL3N0YXRlLW1hY2hpbmVzL19jb25uZWN0aW9uLmRvdAptYWdpYy13b3JtaG9sZS0w LjEyLjAvZG9jcy9zdGF0ZS1tYWNoaW5lcy9ib3NzLmRvdAptYWdpYy13b3JtaG9sZS0wLjEyLjAv ZG9jcy9zdGF0ZS1tYWNoaW5lcy9vcmRlci5kb3QKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mv c3RhdGUtbWFjaGluZXMvc2VuZC5kb3QKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUt bWFjaGluZXMvbWFpbGJveC5kb3QKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUtbWFj aGluZXMvYWxsb2NhdG9yLmRvdAptYWdpYy13b3JtaG9sZS0wLjEyLjAvZG9jcy9zdGF0ZS1tYWNo aW5lcy9yZWNlaXZlLmRvdAptYWdpYy13b3JtaG9sZS0wLjEyLjAvZG9jcy9zdGF0ZS1tYWNoaW5l cy9NYWtlZmlsZQptYWdpYy13b3JtaG9sZS0wLjEyLjAvZG9jcy9zdGF0ZS1tYWNoaW5lcy9rZXku ZG90Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3N0YXRlLW1hY2hpbmVzL25hbWVwbGF0ZS5k b3QKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mvc3RhdGUtbWFjaGluZXMvY29kZS5kb3QKbWFn aWMtd29ybWhvbGUtMC4xMi4wL2RvY3MvY2xpZW50LXByb3RvY29sLm1kCm1hZ2ljLXdvcm1ob2xl LTAuMTIuMC9kb2NzL2RpbGF0aW9uLXByb3RvY29sLm1kCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9k b2NzL2F0dGFja3MubWQKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3MvaW5kZXgucnN0Cm1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9kb2NzL2NvbmYucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3Mv dHJhbnNpdC5tZAptYWdpYy13b3JtaG9sZS0wLjEyLjAvZG9jcy9maWxlLXRyYW5zZmVyLXByb3Rv Y29sLm1kCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL2pvdXJuYWwubWQKbWFnaWMtd29ybWhv bGUtMC4xMi4wL2RvY3MvdG9yLm1kCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3dvcm1ob2xl LjEKbWFnaWMtd29ybWhvbGUtMC4xMi4wL2RvY3MvaW50cm9kdWN0aW9uLm1kCm1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9kb2NzL01ha2VmaWxlCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9kb2NzL3NlcnZl ci1wcm90b2NvbC5tZAptYWdpYy13b3JtaG9sZS0wLjEyLjAvTkVXUy5tZAptYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjLwptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL21hZ2ljX3dvcm1ob2xlLmVn Zy1pbmZvLwptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL21hZ2ljX3dvcm1ob2xlLmVnZy1pbmZv L1NPVVJDRVMudHh0Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvbWFnaWNfd29ybWhvbGUuZWdn LWluZm8vcmVxdWlyZXMudHh0Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvbWFnaWNfd29ybWhv bGUuZWdnLWluZm8vdG9wX2xldmVsLnR4dAptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL21hZ2lj X3dvcm1ob2xlLmVnZy1pbmZvL2VudHJ5X3BvaW50cy50eHQKbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9kZXBlbmRlbmN5X2xpbmtzLnR4dAptYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL21hZ2ljX3dvcm1ob2xlLmVnZy1pbmZvL1BLRy1JTkZPCm1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvaXBhZGRycy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19i b3NzLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX25hbWVwbGF0ZS5weQpt YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS8KbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9jbGkvX19pbml0X18ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS9jbGkvcHVibGljX3JlbGF5LnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvY2xpL3dlbGNvbWUucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS9jbGkvY21kX3NlbmQucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkv Y21kX3JlY2VpdmUucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21k X3NzaC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbGkucHkKbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fa2V5LnB5Cm1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvX19pbml0X18ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9vYnNlcnZlci5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3hm ZXJfdXRpbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19pbnB1dC5weQpt YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZWNlaXZlLnB5Cm1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JsY29tcGxldGVyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvX2NvZGUucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYWxsb2NhdG9yLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX29y ZGVyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC8KbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfaGludHMucHkKbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfdXRpbC5weQptYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvX19pbml0X18ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS90ZXN0L3J1bl90cmlhbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL3Rlc3QvdGVzdF9rZXlzLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC9jb21tb24ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3RfdG9yX21hbmFnZXIucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L3Rlc3Rfb2JzZXJ2ZXIucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L3Rlc3RfaXBhZGRycy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L3Rlc3QvdGVzdF9zc2gucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L3Rlc3RfZXZlbnR1YWwucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L3Rlc3RfeGZlcl91dGlsLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVz dC90ZXN0X3JsY29tcGxldGVyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X3RyYW5zaXQucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3Rfam91cm5hbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF93b3JtaG9sZS5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF9hcmdzLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X2hrZGYucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0 ZS8KbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X291 dGJvdW5kLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUv dGVzdF9wYXJzZS5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGls YXRlL19faW5pdF9fLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvdGVzdC9kaWxhdGUvY29tbW9uLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvdGVzdC9kaWxhdGUvdGVzdF9lbmNvZGluZy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfaW5ib3VuZC5weQptYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weQptYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcmVjb3JkLnB5Cm1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9lbmRwb2ludHMu cHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nv bm5lY3QucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90 ZXN0X2Nvbm5lY3Rvci5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3Qv ZGlsYXRlL3Rlc3RfZnVsbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvZGlsYXRlL3Rlc3RfbWFuYWdlci5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZnJhbWVyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvdGVzdC90ZXN0X2NsaS5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvdGVzdF93b3JkbGlzdC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3dvcm1ob2xlLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3dvcmRs aXN0LnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkK bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fc2VuZC5weQptYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi8KbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS9fZGlsYXRpb24vcm9sZXMucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fZGlsYXRpb24vX25vaXNlLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2RpbGF0aW9uL19faW5pdF9fLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fZGlsYXRpb24vb3V0Ym91bmQucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdG9yLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX2RpbGF0aW9uL2VuY29kZS5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX2RpbGF0aW9uL2luYm91bmQucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fZGlsYXRpb24vbWFuYWdlci5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL3Rvcl9tYW5hZ2VyLnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv am91cm5hbC5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2Vycm9ycy5weQpt YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL190ZXJtaW5hdG9yLnB5Cm1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2xpc3Rlci5weQptYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3RpbWluZy5weQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3V0aWwucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fX21haW5fXy5w eQptYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19oaW50cy5weQptYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19tYWlsYm94LnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvX3ZlcnNpb24ucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90cmFuc2l0LnB5Cm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvZXZlbnR1 YWwucHkKbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9faW50ZXJmYWNlcy5weQpt YWdpYy13b3JtaG9sZS0wLjEyLjAvc25hcGNyYWZ0LnlhbWwKbWFnaWMtd29ybWhvbGUtMC4xMi4w Ly5jb3ZlcmFnZXJjCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC92ZXJzaW9uZWVyLnB5Cm1hZ2ljLXdv cm1ob2xlLTAuMTIuMC90b3guaW5pCm1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9weWkvCm1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9weWkvd29ybWhvbGUuZXhlLnNwZWMKbWFnaWMtd29ybWhvbGUtMC4xMi4w L3B5aS9idWlsZC1leGUKbWFnaWMtd29ybWhvbGUtMC4xMi4wL1BLRy1JTkZPCm1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9NQU5JRkVTVC5pbgpwaGFzZSBgdW5wYWNrJyBzdWNjZWVkZWQgYWZ0ZXIgMC4x IHNlY29uZHMKc3RhcnRpbmcgcGhhc2UgYGVuc3VyZS1uby1tdGltZXMtcHJlLTE5ODAnCnBoYXNl IGBlbnN1cmUtbm8tbXRpbWVzLXByZS0xOTgwJyBzdWNjZWVkZWQgYWZ0ZXIgMC4wIHNlY29uZHMK c3RhcnRpbmcgcGhhc2UgYGVuYWJsZS1ieXRlY29kZS1kZXRlcm1pbmlzbScKcGhhc2UgYGVuYWJs ZS1ieXRlY29kZS1kZXRlcm1pbmlzbScgc3VjY2VlZGVkIGFmdGVyIDAuMCBzZWNvbmRzCnN0YXJ0 aW5nIHBoYXNlIGBwYXRjaC11c3ItYmluLWZpbGUnCnBoYXNlIGBwYXRjaC11c3ItYmluLWZpbGUn IHN1Y2NlZWRlZCBhZnRlciAwLjAgc2Vjb25kcwpzdGFydGluZyBwaGFzZSBgcGF0Y2gtc291cmNl LXNoZWJhbmdzJwpwYXRjaC1zaGViYW5nOiAuL3B5aS9idWlsZC1leGU6IGNoYW5naW5nIGAvYmlu L3NoJyB0byBgL2dudS9zdG9yZS9wd2NwMjM5a2pmN2xuajVpNGxrZHpjZmN4d2NmeWs3Mi1iYXNo LW1pbmltYWwtNS4wLjE2L2Jpbi9zaCcKcGhhc2UgYHBhdGNoLXNvdXJjZS1zaGViYW5ncycgc3Vj Y2VlZGVkIGFmdGVyIDAuMCBzZWNvbmRzCnN0YXJ0aW5nIHBoYXNlIGBwYXRjaC1nZW5lcmF0ZWQt ZmlsZS1zaGViYW5ncycKcGhhc2UgYHBhdGNoLWdlbmVyYXRlZC1maWxlLXNoZWJhbmdzJyBzdWNj ZWVkZWQgYWZ0ZXIgMC4wIHNlY29uZHMKc3RhcnRpbmcgcGhhc2UgYGJ1aWxkJwpydW5uaW5nICJw eXRob24gc2V0dXAucHkiIHdpdGggY29tbWFuZCAiYnVpbGQiIGFuZCBwYXJhbWV0ZXJzICgpCnJ1 bm5pbmcgYnVpbGQKcnVubmluZyBidWlsZF9weQpjcmVhdGluZyBidWlsZApjcmVhdGluZyBidWls ZC9saWIKY3JlYXRpbmcgYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL19y ZWNlaXZlLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9fX2lu aXRfXy5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvdXRpbC5w eSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX3JsY29tcGxldGVy LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9ldmVudHVhbC5w eSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX2tleS5weSAtPiBi dWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX2FsbG9jYXRvci5weSAtPiBi dWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX29yZGVyLnB5IC0+IGJ1aWxk L2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9faGludHMucHkgLT4gYnVpbGQvbGli L3dvcm1ob2xlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL190ZXJtaW5hdG9yLnB5IC0+IGJ1aWxkL2xp Yi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9qb3VybmFsLnB5IC0+IGJ1aWxkL2xpYi93 b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9lcnJvcnMucHkgLT4gYnVpbGQvbGliL3dvcm1o b2xlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL29ic2VydmVyLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9s ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9faW50ZXJmYWNlcy5weSAtPiBidWlsZC9saWIvd29ybWhv bGUKY29weWluZyBzcmMvd29ybWhvbGUveGZlcl91dGlsLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9s ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS93b3JtaG9sZS5weSAtPiBidWlsZC9saWIvd29ybWhvbGUK Y29weWluZyBzcmMvd29ybWhvbGUvaXBhZGRycy5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29w eWluZyBzcmMvd29ybWhvbGUvX2Jvc3MucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcg c3JjL3dvcm1ob2xlL193b3JkbGlzdC5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBz cmMvd29ybWhvbGUvdG9yX21hbmFnZXIucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcg c3JjL3dvcm1ob2xlL19uYW1lcGxhdGUucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcg c3JjL3dvcm1ob2xlL19zZW5kLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93 b3JtaG9sZS90cmFuc2l0LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3Jt aG9sZS9fX21haW5fXy5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhv bGUvX2lucHV0LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9f bWFpbGJveC5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX2Nv ZGUucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL19yZW5kZXp2 b3VzLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZQpjb3B5aW5nIHNyYy93b3JtaG9sZS9fdmVyc2lv bi5weSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvX2xpc3Rlci5w eSAtPiBidWlsZC9saWIvd29ybWhvbGUKY29weWluZyBzcmMvd29ybWhvbGUvdGltaW5nLnB5IC0+ IGJ1aWxkL2xpYi93b3JtaG9sZQpjcmVhdGluZyBidWlsZC9saWIvd29ybWhvbGUvY2xpCmNvcHlp bmcgc3JjL3dvcm1ob2xlL2NsaS9jbWRfc3NoLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9jbGkK Y29weWluZyBzcmMvd29ybWhvbGUvY2xpL19faW5pdF9fLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9s ZS9jbGkKY29weWluZyBzcmMvd29ybWhvbGUvY2xpL3dlbGNvbWUucHkgLT4gYnVpbGQvbGliL3dv cm1ob2xlL2NsaQpjb3B5aW5nIHNyYy93b3JtaG9sZS9jbGkvcHVibGljX3JlbGF5LnB5IC0+IGJ1 aWxkL2xpYi93b3JtaG9sZS9jbGkKY29weWluZyBzcmMvd29ybWhvbGUvY2xpL2NtZF9zZW5kLnB5 IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9jbGkKY29weWluZyBzcmMvd29ybWhvbGUvY2xpL2NtZF9y ZWNlaXZlLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9jbGkKY29weWluZyBzcmMvd29ybWhvbGUv Y2xpL2NsaS5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvY2xpCmNyZWF0aW5nIGJ1aWxkL2xpYi93 b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL19faW5pdF9f LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBzcmMvd29ybWhvbGUv X2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL19kaWxhdGlvbgpj b3B5aW5nIHNyYy93b3JtaG9sZS9fZGlsYXRpb24vX25vaXNlLnB5IC0+IGJ1aWxkL2xpYi93b3Jt aG9sZS9fZGlsYXRpb24KY29weWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwu cHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL19kaWxhdGlvbgpjb3B5aW5nIHNyYy93b3JtaG9sZS9f ZGlsYXRpb24vY29ubmVjdG9yLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9fZGlsYXRpb24KY29w eWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL3JvbGVzLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9s ZS9fZGlsYXRpb24KY29weWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL2VuY29kZS5weSAtPiBi dWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uCmNvcHlpbmcgc3JjL3dvcm1ob2xlL19kaWxhdGlv bi9vdXRib3VuZC5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uCmNvcHlpbmcgc3Jj L3dvcm1ob2xlL19kaWxhdGlvbi9pbmJvdW5kLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS9fZGls YXRpb24KY29weWluZyBzcmMvd29ybWhvbGUvX2RpbGF0aW9uL21hbmFnZXIucHkgLT4gYnVpbGQv bGliL3dvcm1ob2xlL19kaWxhdGlvbgpjcmVhdGluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdApj b3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L3Rlc3RfaXBhZGRycy5weSAtPiBidWlsZC9saWIvd29y bWhvbGUvdGVzdApjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L19faW5pdF9fLnB5IC0+IGJ1aWxk L2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF90cmFuc2l0 LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3Qv dGVzdF94ZmVyX3V0aWwucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QKY29weWluZyBzcmMv d29ybWhvbGUvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90 ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvcnVuX3RyaWFsLnB5IC0+IGJ1aWxkL2xpYi93 b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9hcmdzLnB5IC0+IGJ1 aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9qb3Vy bmFsLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF90b3JfbWFuYWdlci5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvdGVzdApjb3B5aW5n IHNyYy93b3JtaG9sZS90ZXN0L3Rlc3RfaGludHMucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rl c3QKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC90ZXN0X2hrZGYucHkgLT4gYnVpbGQvbGliL3dv cm1ob2xlL3Rlc3QKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC90ZXN0X2V2ZW50dWFsLnB5IC0+ IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93 b3JtaG9sZS5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvdGVzdApjb3B5aW5nIHNyYy93b3JtaG9s ZS90ZXN0L3Rlc3RfY2xpLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3Jj L3dvcm1ob2xlL3Rlc3QvdGVzdF9rZXlzLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNv cHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9vYnNlcnZlci5weSAtPiBidWlsZC9saWIvd29y bWhvbGUvdGVzdApjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkgLT4g YnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9jb21tb24u cHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC90 ZXN0X3dvcmRsaXN0LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlpbmcgc3JjL3dv cm1ob2xlL3Rlc3QvdGVzdF91dGlsLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0CmNvcHlp bmcgc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9zc2gucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rl c3QKY3JlYXRpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgc3JjL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL19faW5pdF9fLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0 L2RpbGF0ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3BhcnNlLnB5IC0+ IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0 L2RpbGF0ZS90ZXN0X2VuY29kaW5nLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0 ZQpjb3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2VuZHBvaW50cy5weSAtPiBi dWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0b3IucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRl CmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdC5weSAtPiBidWls ZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9kaWxh dGUvdGVzdF9jb25uZWN0aW9uLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpj b3B5aW5nIHNyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2luYm91bmQucHkgLT4gYnVpbGQv bGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRl L3Rlc3Rfb3V0Ym91bmQucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlp bmcgc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfbWFuYWdlci5weSAtPiBidWlsZC9saWIv d29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVz dF9zdWJjaGFubmVsLnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5n IHNyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS9jb21tb24ucHkgLT4gYnVpbGQvbGliL3dvcm1ob2xl L3Rlc3QvZGlsYXRlCmNvcHlpbmcgc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcmVjb3Jk LnB5IC0+IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5nIHNyYy93b3JtaG9s ZS90ZXN0L2RpbGF0ZS90ZXN0X2ZyYW1lci5weSAtPiBidWlsZC9saWIvd29ybWhvbGUvdGVzdC9k aWxhdGUKY29weWluZyBzcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9mdWxsLnB5IC0+IGJ1 aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZQpVUERBVElORyBidWlsZC9saWIvd29ybWhvbGUv X3ZlcnNpb24ucHkKc2V0IGJ1aWxkL2xpYi93b3JtaG9sZS9fdmVyc2lvbi5weSB0byAnMC4xMi4w JwpwaGFzZSBgYnVpbGQnIHN1Y2NlZWRlZCBhZnRlciAzLjMgc2Vjb25kcwpzdGFydGluZyBwaGFz ZSBgaW5zdGFsbCcKcnVubmluZyAicHl0aG9uIHNldHVwLnB5IiB3aXRoIGNvbW1hbmQgImluc3Rh bGwiIGFuZCBwYXJhbWV0ZXJzICgiLS1wcmVmaXg9L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAiICItLXNpbmdsZS12ZXJzaW9u LWV4dGVybmFsbHktbWFuYWdlZCIgIi0tcm9vdD0vIikKcnVubmluZyBpbnN0YWxsCnJ1bm5pbmcg YnVpbGQKcnVubmluZyBidWlsZF9weQpVUERBVElORyBidWlsZC9saWIvd29ybWhvbGUvX3ZlcnNp b24ucHkKc2V0IGJ1aWxkL2xpYi93b3JtaG9sZS9fdmVyc2lvbi5weSB0byAnMC4xMi4wJwpydW5u aW5nIGluc3RhbGxfbGliCmNyZWF0aW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNq bGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wCmNyZWF0aW5nIC9nbnUvc3RvcmUvM3g4 cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYgpj cmVhdGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44CmNyZWF0aW5nIC9nbnUvc3RvcmUvM3g4cTEy eWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcwpjcmVhdGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUKY3JlYXRpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4 c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3dvcm1ob2xlL2NsaQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9jbGkvY21kX3Nz aC5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xp CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL2NsaS9fX2luaXRfXy5weSAtPiAvZ251L3N0b3Jl LzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xpCmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL2NsaS93ZWxjb21lLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS9jbGkKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvY2xpL3B1Ymxp Y19yZWxheS5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJm LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhv bGUvY2xpCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL2NsaS9jbWRfc2VuZC5weSAtPiAvZ251 L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xpCmNvcHlpbmcgYnVp bGQvbGliL3dvcm1ob2xlL2NsaS9jbWRfcmVjZWl2ZS5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xpCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xl L2NsaS9jbGkucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpy Zi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1o b2xlL2NsaQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9fcmVjZWl2ZS5weSAtPiAvZ251L3N0 b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIv d29ybWhvbGUvX19pbml0X18ucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2ps YnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3V0aWwucHkgLT4gL2dudS9z dG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEy LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL19ybGNvbXBsZXRlci5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvZXZlbnR1YWwucHkg LT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3Jt aG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcg YnVpbGQvbGliL3dvcm1ob2xlL19rZXkucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL19hbGxvY2F0b3Iu cHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13 b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlp bmcgYnVpbGQvbGliL3dvcm1ob2xlL19vcmRlci5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdi eHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX2hpbnRz LnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMt d29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZQpjb3B5 aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9fdGVybWluYXRvci5weSAtPiAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUv am91cm5hbC5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJm LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhv bGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvZXJyb3JzLnB5IC0+IC9nbnUvc3RvcmUvM3g4 cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9s ZS9vYnNlcnZlci5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFt enJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29y bWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX2ludGVyZmFjZXMucHkgLT4gL2dudS9z dG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEy LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL3hmZXJfdXRpbC5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhz amxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvd29ybWhvbGUucHkgLT4g L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9s ZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNyZWF0aW5nIC9n bnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUt MC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29w eWluZyBidWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uL19faW5pdF9fLnB5IC0+IC9nbnUvc3Rv cmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBi dWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkgLT4gL2dudS9zdG9yZS8z eDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbgpjb3B5aW5nIGJ1aWxk L2xpYi93b3JtaG9sZS9fZGlsYXRpb24vX25vaXNlLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBidWlsZC9saWIvd29y bWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6 NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbgpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9s ZS9fZGlsYXRpb24vY29ubmVjdG9yLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX2Rp bGF0aW9uL3JvbGVzLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0 YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93 b3JtaG9sZS9fZGlsYXRpb24KY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uL2Vu Y29kZS5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUv X2RpbGF0aW9uCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL19kaWxhdGlvbi9vdXRib3VuZC5w eSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvX2RpbGF0 aW9uCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL19kaWxhdGlvbi9pbmJvdW5kLnB5IC0+IC9n bnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUt MC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24KY29w eWluZyBidWlsZC9saWIvd29ybWhvbGUvX2RpbGF0aW9uL21hbmFnZXIucHkgLT4gL2dudS9zdG9y ZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbgpjb3B5aW5nIGJ1 aWxkL2xpYi93b3JtaG9sZS9pcGFkZHJzLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZj cm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy93b3JtaG9sZQpjcmVhdGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L3Rl c3RfaXBhZGRycy5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFt enJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29y bWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L19faW5pdF9fLnB5IC0+ IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhv bGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlp bmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF90cmFuc2l0LnB5IC0+IC9nbnUvc3RvcmUv M3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL3Rlc3QvdGVzdF94ZmVyX3V0aWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUv dGVzdC90ZXN0X3JsY29tcGxldGVyLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvcnVu X3RyaWFsLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYt bWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9s ZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF9hcmdzLnB5IC0+IC9n bnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUt MC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcg YnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF9qb3VybmFsLnB5IC0+IC9nbnUvc3RvcmUvM3g4 cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dv cm1ob2xlL3Rlc3QvdGVzdF90b3JfbWFuYWdlci5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdi eHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdApjcmVhdGluZyAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBidWlsZC9saWIv d29ybWhvbGUvdGVzdC9kaWxhdGUvX19pbml0X18ucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcGFyc2UucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZW5jb2RpbmcucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5 ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGli L3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZW5kcG9pbnRzLnB5IC0+IC9nbnUvc3RvcmUvM3g4 cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5nIGJ1aWxk L2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rvci5weSAtPiAvZ251L3N0b3Jl LzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUKY29weWluZyBi dWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0LnB5IC0+IC9nbnUvc3Rv cmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2RpbGF0ZQpjb3B5aW5n IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkgLT4gL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlCmNv cHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfaW5ib3VuZC5weSAtPiAv Z251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUK Y29weWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9vdXRib3VuZC5weSAt PiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxh dGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9tYW5hZ2VyLnB5 IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29y bWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2Rp bGF0ZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5u ZWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rl c3QvZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL2NvbW1vbi5w eSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9k aWxhdGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9yZWNvcmQu cHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13 b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3Qv ZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZnJhbWVy LnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMt d29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0 L2RpbGF0ZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Z1bGwu cHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13 b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3Qv ZGlsYXRlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF9oaW50cy5weSAtPiAv Z251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdApjb3B5aW5n IGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L3Rlc3RfaGtkZi5weSAtPiAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3Jt aG9sZS90ZXN0L3Rlc3RfZXZlbnR1YWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC90 ZXN0X3dvcm1ob2xlLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0 YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93 b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rlc3QvdGVzdF9jbGkucHkg LT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3Jt aG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29w eWluZyBidWlsZC9saWIvd29ybWhvbGUvdGVzdC90ZXN0X2tleXMucHkgLT4gL2dudS9zdG9yZS8z eDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWlsZC9saWIv d29ybWhvbGUvdGVzdC90ZXN0X29ic2VydmVyLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4 ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0CmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3Rl c3QvdGVzdF9tYWNoaW5lcy5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxi c3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvd29ybWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L2NvbW1vbi5w eSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdApj b3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90ZXN0L3Rlc3Rfd29yZGxpc3QucHkgLT4gL2dudS9z dG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEy LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWls ZC9saWIvd29ybWhvbGUvdGVzdC90ZXN0X3V0aWwucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUv dGVzdC90ZXN0X3NzaC5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5 NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv d29ybWhvbGUvdGVzdApjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9fYm9zcy5weSAtPiAvZ251 L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9s aWIvd29ybWhvbGUvX3dvcmRsaXN0LnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90b3JfbWFuYWdlci5w eSAtPiAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWlu ZyBidWlsZC9saWIvd29ybWhvbGUvX25hbWVwbGF0ZS5weSAtPiAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhvbGUvX3Nl bmQucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNv cHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL3RyYW5zaXQucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5 ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL19f bWFpbl9fLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYt bWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9s ZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9faW5wdXQucHkgLT4gL2dudS9zdG9yZS8zeDhx MTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xl L19tYWlsYm94LnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16 cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3Jt aG9sZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS9fY29kZS5weSAtPiAvZ251L3N0b3JlLzN4 OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUKY29weWluZyBidWlsZC9saWIvd29ybWhv bGUvX3JlbmRlenZvdXMucHkgLT4gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2 eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3dvcm1ob2xlCmNvcHlpbmcgYnVpbGQvbGliL3dvcm1ob2xlL192ZXJzaW9uLnB5IC0+IC9nbnUv c3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4x Mi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZQpjb3B5aW5nIGJ1aWxkL2xp Yi93b3JtaG9sZS9fbGlzdGVyLnB5IC0+IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNq bGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy93b3JtaG9sZQpjb3B5aW5nIGJ1aWxkL2xpYi93b3JtaG9sZS90aW1pbmcucHkgLT4gL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlCmJ5dGUtY29tcGlsaW5n IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhv bGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9jbGkvY21kX3Nz aC5weSB0byBjbWRfc3NoLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUv M3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9jbGkvX19pbml0X18ucHkgdG8gX19p bml0X18uY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL2NsaS93ZWxjb21lLnB5IHRvIHdlbGNvbWUuY3B5dGhv bi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2ps YnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3dvcm1ob2xlL2NsaS9wdWJsaWNfcmVsYXkucHkgdG8gcHVibGljX3JlbGF5LmNweXRob24t MzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJz dnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy93b3JtaG9sZS9jbGkvY21kX3NlbmQucHkgdG8gY21kX3NlbmQuY3B5dGhvbi0zOC5weWMKYnl0 ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1t YWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xl L2NsaS9jbWRfcmVjZWl2ZS5weSB0byBjbWRfcmVjZWl2ZS5jcHl0aG9uLTM4LnB5YwpieXRlLWNv bXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvY2xp L2NsaS5weSB0byBjbGkuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8z eDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19yZWNlaXZlLnB5IHRvIF9yZWNlaXZl LmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZj cm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy93b3JtaG9sZS9fX2luaXRfXy5weSB0byBfX2luaXRfXy5jcHl0aG9uLTM4LnB5 YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFt enJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29y bWhvbGUvdXRpbC5weSB0byB1dGlsLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUv c3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4x Mi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fcmxjb21wbGV0ZXIucHkg dG8gX3JsY29tcGxldGVyLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUv M3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9ldmVudHVhbC5weSB0byBldmVudHVh bC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2 Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvd29ybWhvbGUvX2tleS5weSB0byBfa2V5LmNweXRob24tMzgucHljCmJ5dGUt Y29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFn aWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9f YWxsb2NhdG9yLnB5IHRvIF9hbGxvY2F0b3IuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcg L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9s ZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19vcmRlci5weSB0 byBfb3JkZXIuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5 ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19oaW50cy5weSB0byBfaGludHMuY3B5dGhvbi0z OC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2 eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3dvcm1ob2xlL190ZXJtaW5hdG9yLnB5IHRvIF90ZXJtaW5hdG9yLmNweXRob24tMzgucHljCmJ5 dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYt bWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9s ZS9qb3VybmFsLnB5IHRvIGpvdXJuYWwuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL2Vycm9ycy5weSB0byBl cnJvcnMuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHln Ynh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL29ic2VydmVyLnB5IHRvIG9ic2VydmVyLmNweXRob24t MzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJz dnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy93b3JtaG9sZS9faW50ZXJmYWNlcy5weSB0byBfaW50ZXJmYWNlcy5jcHl0aG9uLTM4LnB5Ywpi eXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJm LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhv bGUveGZlcl91dGlsLnB5IHRvIHhmZXJfdXRpbC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGlu ZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvd29ybWhvbGUu cHkgdG8gd29ybWhvbGUuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8z eDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbi9fX2luaXRfXy5weSB0 byBfX2luaXRfXy5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkgdG8g Y29ubmVjdGlvbi5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvX2RpbGF0aW9uL19ub2lzZS5weSB0byBfbm9p c2UuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6 NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5IHRvIHN1YmNoYW5u ZWwuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6 NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlvbi9jb25uZWN0b3IucHkgdG8gY29ubmVjdG9y LmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZj cm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy93b3JtaG9sZS9fZGlsYXRpb24vcm9sZXMucHkgdG8gcm9sZXMuY3B5dGhvbi0z OC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2 eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3dvcm1ob2xlL19kaWxhdGlvbi9lbmNvZGUucHkgdG8gZW5jb2RlLmNweXRob24tMzgucHljCmJ5 dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYt bWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9s ZS9fZGlsYXRpb24vb3V0Ym91bmQucHkgdG8gb3V0Ym91bmQuY3B5dGhvbi0zOC5weWMKYnl0ZS1j b21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19k aWxhdGlvbi9pbmJvdW5kLnB5IHRvIGluYm91bmQuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxp bmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3Jt aG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19kaWxhdGlv bi9tYW5hZ2VyLnB5IHRvIG1hbmFnZXIuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL2lwYWRkcnMucHkgdG8g aXBhZGRycy5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC90ZXN0X2lwYWRkcnMucHkgdG8gdGVzdF9p cGFkZHJzLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L19faW5pdF9fLnB5IHRvIF9faW5pdF9fLmNw eXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS90ZXN0L3Rlc3RfdHJhbnNpdC5weSB0byB0ZXN0X3RyYW5zaXQuY3B5 dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4 c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF94ZmVyX3V0aWwucHkgdG8gdGVzdF94ZmVyX3V0aWwu Y3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weSB0byB0ZXN0X3JsY29t cGxldGVyLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L3J1bl90cmlhbC5weSB0byBydW5fdHJpYWwu Y3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNy bnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9hcmdzLnB5IHRvIHRlc3RfYXJncy5jcHl0aG9u LTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxi c3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvd29ybWhvbGUvdGVzdC90ZXN0X2pvdXJuYWwucHkgdG8gdGVzdF9qb3VybmFsLmNweXRob24t MzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJz dnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy93b3JtaG9sZS90ZXN0L3Rlc3RfdG9yX21hbmFnZXIucHkgdG8gdGVzdF90b3JfbWFuYWdlci5j cHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvX19pbml0X18ucHkgdG8gX19pbml0X18uY3B5 dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4 c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcGFyc2UucHkgdG8gdGVzdF9wYXJzZS5j cHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Ju cnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9lbmNvZGluZy5weSB0byB0ZXN0X2Vu Y29kaW5nLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2VuZHBvaW50cy5weSB0 byB0ZXN0X2VuZHBvaW50cy5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3Jl LzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25u ZWN0b3IucHkgdG8gdGVzdF9jb25uZWN0b3IuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcg L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9s ZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRl L3Rlc3RfY29ubmVjdC5weSB0byB0ZXN0X2Nvbm5lY3QuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21w aWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13 b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3Qv ZGlsYXRlL3Rlc3RfY29ubmVjdGlvbi5weSB0byB0ZXN0X2Nvbm5lY3Rpb24uY3B5dGhvbi0zOC5w eWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRh bXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfaW5ib3VuZC5weSB0byB0ZXN0X2luYm91bmQuY3B5dGhv bi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2ps YnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfb3V0Ym91bmQucHkgdG8gdGVzdF9vdXRib3Vu ZC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2 Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9tYW5hZ2VyLnB5IHRvIHRlc3Rf bWFuYWdlci5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFubmVsLnB5 IHRvIHRlc3Rfc3ViY2hhbm5lbC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0 b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvY29tbW9u LnB5IHRvIGNvbW1vbi5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4 OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9yZWNvcmQu cHkgdG8gdGVzdF9yZWNvcmQuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9y ZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfZnJh bWVyLnB5IHRvIHRlc3RfZnJhbWVyLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUv c3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4x Mi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0 X2Z1bGwucHkgdG8gdGVzdF9mdWxsLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUv c3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4x Mi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L3Rlc3RfaGludHMu cHkgdG8gdGVzdF9oaW50cy5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3Jl LzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC90ZXN0X2hrZGYucHkgdG8g dGVzdF9oa2RmLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEy eWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS90ZXN0L3Rlc3RfZXZlbnR1YWwucHkgdG8gdGVz dF9ldmVudHVhbC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHEx MnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IHRvIHRl c3Rfd29ybWhvbGUuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhx MTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9jbGkucHkgdG8gdGVzdF9j bGkuY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6 NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9rZXlzLnB5IHRvIHRlc3Rfa2V5cy5jcHl0 aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhz amxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvd29ybWhvbGUvdGVzdC90ZXN0X29ic2VydmVyLnB5IHRvIHRlc3Rfb2JzZXJ2ZXIuY3B5 dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4 c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSB0byB0ZXN0X21hY2hpbmVzLmNw eXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS90ZXN0L2NvbW1vbi5weSB0byBjb21tb24uY3B5dGhvbi0zOC5weWMK Ynl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpy Zi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1o b2xlL3Rlc3QvdGVzdF93b3JkbGlzdC5weSB0byB0ZXN0X3dvcmRsaXN0LmNweXRob24tMzgucHlj CmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16 cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3Jt aG9sZS90ZXN0L3Rlc3RfdXRpbC5weSB0byB0ZXN0X3V0aWwuY3B5dGhvbi0zOC5weWMKYnl0ZS1j b21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL3Rl c3QvdGVzdF9zc2gucHkgdG8gdGVzdF9zc2guY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcg L2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9s ZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19ib3NzLnB5IHRv IF9ib3NzLmNweXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5 Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fd29yZGxpc3QucHkgdG8gX3dvcmRsaXN0LmNweXRo b24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNq bGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy93b3JtaG9sZS90b3JfbWFuYWdlci5weSB0byB0b3JfbWFuYWdlci5jcHl0aG9uLTM4LnB5 YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFt enJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29y bWhvbGUvX25hbWVwbGF0ZS5weSB0byBfbmFtZXBsYXRlLmNweXRob24tMzgucHljCmJ5dGUtY29t cGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0YW16cmYtbWFnaWMt d29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93b3JtaG9sZS9fc2Vu ZC5weSB0byBfc2VuZC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4 OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdHJhbnNpdC5weSB0byB0cmFuc2l0LmNw eXRob24tMzgucHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5y eHNqbGJzdnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy93b3JtaG9sZS9fX21haW5fXy5weSB0byBfX21haW5fXy5jcHl0aG9uLTM4LnB5Ywpi eXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJm LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhv bGUvX2lucHV0LnB5IHRvIF9pbnB1dC5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251 L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvX21haWxib3gucHkgdG8g X21haWxib3guY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2dudS9zdG9yZS8zeDhxMTJ5 ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19jb2RlLnB5IHRvIF9jb2RlLmNweXRob24tMzgu cHljCmJ5dGUtY29tcGlsaW5nIC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJzdnk0 YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy93 b3JtaG9sZS9fcmVuZGV6dm91cy5weSB0byBfcmVuZGV6dm91cy5jcHl0aG9uLTM4LnB5YwpieXRl LWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUv X3ZlcnNpb24ucHkgdG8gX3ZlcnNpb24uY3B5dGhvbi0zOC5weWMKYnl0ZS1jb21waWxpbmcgL2du dS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdpYy13b3JtaG9sZS0w LjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3dvcm1ob2xlL19saXN0ZXIucHkgdG8g X2xpc3Rlci5jcHl0aG9uLTM4LnB5YwpieXRlLWNvbXBpbGluZyAvZ251L3N0b3JlLzN4OHExMnlk eWdieHo2Y3Jucnhzamxic3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvd29ybWhvbGUvdGltaW5nLnB5IHRvIHRpbWluZy5jcHl0aG9uLTM4 LnB5YwpydW5uaW5nIGluc3RhbGxfZWdnX2luZm8KcnVubmluZyBlZ2dfaW5mbwp3cml0aW5nIHNy Yy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9QS0ctSU5GTwp3cml0aW5nIGRlcGVuZGVuY3lfbGlu a3MgdG8gc3JjL21hZ2ljX3dvcm1ob2xlLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0Cndy aXRpbmcgZW50cnkgcG9pbnRzIHRvIHNyYy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9lbnRyeV9w b2ludHMudHh0CndyaXRpbmcgcmVxdWlyZW1lbnRzIHRvIHNyYy9tYWdpY193b3JtaG9sZS5lZ2ct aW5mby9yZXF1aXJlcy50eHQKd3JpdGluZyB0b3AtbGV2ZWwgbmFtZXMgdG8gc3JjL21hZ2ljX3dv cm1ob2xlLmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKcmVhZGluZyBtYW5pZmVzdCBmaWxlICdzcmMv bWFnaWNfd29ybWhvbGUuZWdnLWluZm8vU09VUkNFUy50eHQnCnJlYWRpbmcgbWFuaWZlc3QgdGVt cGxhdGUgJ01BTklGRVNULmluJwp3cml0aW5nIG1hbmlmZXN0IGZpbGUgJ3NyYy9tYWdpY193b3Jt aG9sZS5lZ2ctaW5mby9TT1VSQ0VTLnR4dCcKQ29weWluZyBzcmMvbWFnaWNfd29ybWhvbGUuZWdn LWluZm8gdG8gL2dudS9zdG9yZS8zeDhxMTJ5ZHlnYnh6NmNybnJ4c2psYnN2eTRhbXpyZi1tYWdp Yy13b3JtaG9sZS0wLjEyLjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL21hZ2ljX3dvcm1o b2xlLTAuMTIuMC1weTMuOC5lZ2ctaW5mbwpydW5uaW5nIGluc3RhbGxfc2NyaXB0cwpJbnN0YWxs aW5nIHdvcm1ob2xlIHNjcmlwdCB0byAvZ251L3N0b3JlLzN4OHExMnlkeWdieHo2Y3Jucnhzamxi c3Z5NGFtenJmLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC9iaW4KcGhhc2UgYGluc3RhbGwnIHN1Y2Nl ZWRlZCBhZnRlciAxLjQgc2Vjb25kcwpzdGFydGluZyBwaGFzZSBgaW5zdGFsbC1kb2NzJwpwaGFz ZSBgaW5zdGFsbC1kb2NzJyBzdWNjZWVkZWQgYWZ0ZXIgMC4wIHNlY29uZHMKc3RhcnRpbmcgcGhh c2UgYHdyYXAnCmZpbmQtZmlsZXM6IC9nbnUvc3RvcmUvM3g4cTEyeWR5Z2J4ejZjcm5yeHNqbGJz dnk0YW16cmYtbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NiaW46IE5vIHN1Y2ggZmlsZSBvciBkaXJl Y3RvcnkKcGhhc2UgYHdyYXAnIHN1Y2NlZWRlZCBhZnRlciAwLjAgc2Vjb25kcwpzdGFydGluZyBw aGFzZSBgY2hlY2snCnJ1bm5pbmcgInB5dGhvbiBzZXR1cC5weSIgd2l0aCBjb21tYW5kICJ0ZXN0 IiBhbmQgcGFyYW1ldGVycyAoKQpydW5uaW5nIHRlc3QKcnVubmluZyBlZ2dfaW5mbwp3cml0aW5n IHNyYy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9QS0ctSU5GTwp3cml0aW5nIGRlcGVuZGVuY3lf bGlua3MgdG8gc3JjL21hZ2ljX3dvcm1ob2xlLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0 CndyaXRpbmcgZW50cnkgcG9pbnRzIHRvIHNyYy9tYWdpY193b3JtaG9sZS5lZ2ctaW5mby9lbnRy eV9wb2ludHMudHh0CndyaXRpbmcgcmVxdWlyZW1lbnRzIHRvIHNyYy9tYWdpY193b3JtaG9sZS5l Z2ctaW5mby9yZXF1aXJlcy50eHQKd3JpdGluZyB0b3AtbGV2ZWwgbmFtZXMgdG8gc3JjL21hZ2lj X3dvcm1ob2xlLmVnZy1pbmZvL3RvcF9sZXZlbC50eHQKcmVhZGluZyBtYW5pZmVzdCBmaWxlICdz cmMvbWFnaWNfd29ybWhvbGUuZWdnLWluZm8vU09VUkNFUy50eHQnCnJlYWRpbmcgbWFuaWZlc3Qg dGVtcGxhdGUgJ01BTklGRVNULmluJwp3cml0aW5nIG1hbmlmZXN0IGZpbGUgJ3NyYy9tYWdpY193 b3JtaG9sZS5lZ2ctaW5mby9TT1VSQ0VTLnR4dCcKcnVubmluZyBidWlsZF9leHQKdGVzdF9saXN0 ICh3b3JtaG9sZS50ZXN0LnRlc3RfaXBhZGRycy5MaXN0QWRkcmVzc2VzKQp0ZXN0X2xpc3QgLi4u IG9rCnRlc3RfbGlzdF9tb2NrX2N5Z3dpbiAod29ybWhvbGUudGVzdC50ZXN0X2lwYWRkcnMuTGlz dEFkZHJlc3NlcykKdGVzdF9saXN0X21vY2tfY3lnd2luIC4uLiBvawp0ZXN0X2xpc3RfbW9ja19p ZmNvbmZpZyAod29ybWhvbGUudGVzdC50ZXN0X2lwYWRkcnMuTGlzdEFkZHJlc3NlcykKdGVzdF9s aXN0X21vY2tfaWZjb25maWcgLi4uIG9rCnRlc3RfbGlzdF9tb2NrX2lwX2FkZHIgKHdvcm1ob2xl LnRlc3QudGVzdF9pcGFkZHJzLkxpc3RBZGRyZXNzZXMpCnRlc3RfbGlzdF9tb2NrX2lwX2FkZHIg Li4uIG9rCnRlc3RfbGlzdF9tb2NrX3JvdXRlICh3b3JtaG9sZS50ZXN0LnRlc3RfaXBhZGRycy5M aXN0QWRkcmVzc2VzKQp0ZXN0X2xpc3RfbW9ja19yb3V0ZSAuLi4gb2sKdGVzdF9hYmlsaXRpZXMg KHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkJhc2ljKQp0ZXN0X2FiaWxpdGllcyAuLi4gb2sK dGVzdF9jb25uZWN0aW9uX3JlYWR5ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5CYXNpYykK dGVzdF9jb25uZWN0aW9uX3JlYWR5IC4uLiBvawp0ZXN0X2lnbm9yZV9iYWRfaGludHMgKHdvcm1o b2xlLnRlc3QudGVzdF90cmFuc2l0LkJhc2ljKQp0ZXN0X2lnbm9yZV9iYWRfaGludHMgLi4uIG9r CnRlc3RfaWdub3JlX2xvY2FsaG9zdF9oaW50ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5C YXNpYykKdGVzdF9pZ25vcmVfbG9jYWxob3N0X2hpbnQgLi4uIG9rCnRlc3RfaWdub3JlX2xvY2Fs aG9zdF9oaW50X29yaWcgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkJhc2ljKQp0ZXN0X2ln bm9yZV9sb2NhbGhvc3RfaGludF9vcmlnIC4uLiBvawp0ZXN0X2tlZXBfb25seV9sb2NhbGhvc3Rf aGludCAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQmFzaWMpCnRlc3Rfa2VlcF9vbmx5X2xv Y2FsaG9zdF9oaW50IC4uLiBvawp0ZXN0X25vX3JlbGF5X2hpbnRzICh3b3JtaG9sZS50ZXN0LnRl c3RfdHJhbnNpdC5CYXNpYykKdGVzdF9ub19yZWxheV9oaW50cyAuLi4gb2sKdGVzdF9yZWxheV9o aW50cyAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQmFzaWMpCnRlc3RfcmVsYXlfaGludHMg Li4uIG9rCnRlc3RfdHJhbnNpdF9rZXlfYWxyZWFkeV9zZXQgKHdvcm1ob2xlLnRlc3QudGVzdF90 cmFuc2l0LkJhc2ljKQp0ZXN0X3RyYW5zaXRfa2V5X2FscmVhZHlfc2V0IC4uLiBvawp0ZXN0X3Ry YW5zaXRfa2V5X3dhaXQgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkJhc2ljKQp0ZXN0X3Ry YW5zaXRfa2V5X3dhaXQgLi4uIG9rCnRlc3RfdHJhbnNpdF9rZXlzICh3b3JtaG9sZS50ZXN0LnRl c3RfdHJhbnNpdC5CYXNpYykKdGVzdF90cmFuc2l0X2tleXMgLi4uIG9rCnRlc3RfY2FuY2VsICh3 b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X2NhbmNlbCAuLi4gb2sK dGVzdF9jaGVja19hbmRfcmVtb3ZlICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0 aW9uKQp0ZXN0X2NoZWNrX2FuZF9yZW1vdmUgLi4uIG9rCnRlc3RfY29ubmVjdENvbnN1bWVyICh3 b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X2Nvbm5lY3RDb25zdW1l ciAuLi4gb2sKdGVzdF9jb25uZWN0Q29uc3VtZXJfZW1wdHkgKHdvcm1ob2xlLnRlc3QudGVzdF90 cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfY29ubmVjdENvbnN1bWVyX2VtcHR5IC4uLiBvawp0ZXN0 X2NvbnN1bWVyICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X2Nv bnN1bWVyIC4uLiBvawp0ZXN0X2Rlc2NyaWJlICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5D b25uZWN0aW9uKQp0ZXN0X2Rlc2NyaWJlIC4uLiBvawp0ZXN0X2hhbmRzaGFrZV9iYWRfc3RhdGUg KHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfaGFuZHNoYWtlX2Jh ZF9zdGF0ZSAuLi4gb2sKdGVzdF9oYW5kc2hha2Vfb3RoZXJfZXJyb3IgKHdvcm1ob2xlLnRlc3Qu dGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfaGFuZHNoYWtlX290aGVyX2Vycm9yIC4uLiBv awp0ZXN0X291dF9vZl9vcmRlcl9ub25jZSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQ29u bmVjdGlvbikKdGVzdF9vdXRfb2Zfb3JkZXJfbm9uY2UgLi4uIG9rCnRlc3RfcHJvZHVjZXIgKHdv cm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfcHJvZHVjZXIgLi4uIG9r CnRlc3RfcmVjZWl2ZV9xdWV1ZSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQ29ubmVjdGlv bikKdGVzdF9yZWNlaXZlX3F1ZXVlIC4uLiBvawp0ZXN0X3JlY2VpdmVyX2FjY2VwdGVkICh3b3Jt aG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X3JlY2VpdmVyX2FjY2VwdGVk IC4uLiBvawp0ZXN0X3JlY2VpdmVyX3JlamVjdGVkX3BvbGl0ZWx5ICh3b3JtaG9sZS50ZXN0LnRl c3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X3JlY2VpdmVyX3JlamVjdGVkX3BvbGl0ZWx5IC4u LiBvawp0ZXN0X3JlY2VpdmVyX3JlamVjdGVkX3J1ZGVseSAod29ybWhvbGUudGVzdC50ZXN0X3Ry YW5zaXQuQ29ubmVjdGlvbikKdGVzdF9yZWNlaXZlcl9yZWplY3RlZF9ydWRlbHkgLi4uIG9rCnRl c3RfcmVjb3Jkc19jb3JydXB0ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9u KQp0ZXN0X3JlY29yZHNfY29ycnVwdCAuLi4gb2sKdGVzdF9yZWNvcmRzX2dvb2QgKHdvcm1ob2xl LnRlc3QudGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3RfcmVjb3Jkc19nb29kIC4uLiBvawp0 ZXN0X3JlY29yZHNfbm90X2JpbmFyeSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQ29ubmVj dGlvbikKdGVzdF9yZWNvcmRzX25vdF9iaW5hcnkgLi4uIG9rCnRlc3RfcmVsYXlfaGFuZHNoYWtl ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X3JlbGF5X2hhbmRz aGFrZSAuLi4gb2sKdGVzdF9yZWxheV9oYW5kc2hha2VfYmFkICh3b3JtaG9sZS50ZXN0LnRlc3Rf dHJhbnNpdC5Db25uZWN0aW9uKQp0ZXN0X3JlbGF5X2hhbmRzaGFrZV9iYWQgLi4uIG9rCnRlc3Rf c2VuZGVyX2FjY2VwdGluZyAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuQ29ubmVjdGlvbikK dGVzdF9zZW5kZXJfYWNjZXB0aW5nIC4uLiBvawp0ZXN0X3NlbmRlcl9yZWplY3RpbmcgKHdvcm1o b2xlLnRlc3QudGVzdF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3Rfc2VuZGVyX3JlamVjdGluZyAu Li4gb2sKdGVzdF90aW1lb3V0ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5Db25uZWN0aW9u KQp0ZXN0X3RpbWVvdXQgLi4uIG9rCnRlc3Rfd3JpdGVUb0ZpbGUgKHdvcm1ob2xlLnRlc3QudGVz dF90cmFuc2l0LkNvbm5lY3Rpb24pCnRlc3Rfd3JpdGVUb0ZpbGUgLi4uIG9rCnRlc3RfYmFzaWMg KHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkZpbGVDb25zdW1lcikKdGVzdF9iYXNpYyAuLi4g b2sKdGVzdF9oYXNoZXIgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkZpbGVDb25zdW1lcikK dGVzdF9oYXNoZXIgLi4uIG9rCnRlc3Rfbm90X2ZvcmV2ZXJfY2FuY2VsX2Vhcmx5ICh3b3JtaG9s ZS50ZXN0LnRlc3RfdHJhbnNpdC5Gb3JldmVyKQp0ZXN0X25vdF9mb3JldmVyX2NhbmNlbF9lYXJs eSAuLi4gb2sKdGVzdF9ub3RfZm9yZXZlcl9lcnJzICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNp dC5Gb3JldmVyKQp0ZXN0X25vdF9mb3JldmVyX2VycnMgLi4uIG9rCnRlc3Rfbm90X2ZvcmV2ZXJf ZmlyZXMgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkZvcmV2ZXIpCnRlc3Rfbm90X2ZvcmV2 ZXJfZmlyZXMgLi4uIG9rCnRlc3Rfbm90X2ZvcmV2ZXJfdGltZW91dCAod29ybWhvbGUudGVzdC50 ZXN0X3RyYW5zaXQuRm9yZXZlcikKdGVzdF9ub3RfZm9yZXZlcl90aW1lb3V0IC4uLiBvawp0ZXN0 X2RpcmVjdCAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuRnVsbCkKdGVzdF9kaXJlY3QgLi4u IG9rCnRlc3RfcmVsYXkgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkZ1bGwpCnRlc3RfcmVs YXkgLi4uIG9rCnRlc3RfY2FuY2VsX2FmdGVyX29uZV9mYWlsdXJlICh3b3JtaG9sZS50ZXN0LnRl c3RfdHJhbnNpdC5IaWdobGFuZGVyKQp0ZXN0X2NhbmNlbF9hZnRlcl9vbmVfZmFpbHVyZSAuLi4g b2sKdGVzdF9jYW5jZWxfZWFybHkgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkhpZ2hsYW5k ZXIpCnRlc3RfY2FuY2VsX2Vhcmx5IC4uLiBvawp0ZXN0X29uZV93aW5uZXIgKHdvcm1ob2xlLnRl c3QudGVzdF90cmFuc2l0LkhpZ2hsYW5kZXIpCnRlc3Rfb25lX3dpbm5lciAuLi4gb2sKdGVzdF90 aGVyZV9taWdodF9hbHNvX2JlX25vbmUgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LkhpZ2hs YW5kZXIpCnRlc3RfdGhlcmVfbWlnaHRfYWxzb19iZV9ub25lIC4uLiBvawp0ZXN0X2NhbmNlbCAo d29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuSW5ib3VuZENvbm5lY3Rpb25GYWN0b3J5KQp0ZXN0 X2NhbmNlbCAuLi4gb2sKdGVzdF9kZXNjcmliZSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQu SW5ib3VuZENvbm5lY3Rpb25GYWN0b3J5KQp0ZXN0X2Rlc2NyaWJlIC4uLiBvawp0ZXN0X2ZpcnN0 X3N1Y2Nlc3Nfd2lucyAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuSW5ib3VuZENvbm5lY3Rp b25GYWN0b3J5KQp0ZXN0X2ZpcnN0X3N1Y2Nlc3Nfd2lucyAuLi4gb2sKdGVzdF9sb2dfb3RoZXJf ZXJyb3JzICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5JbmJvdW5kQ29ubmVjdGlvbkZhY3Rv cnkpCnRlc3RfbG9nX290aGVyX2Vycm9ycyAuLi4gVW5oYW5kbGVkIGVycm9yIGluIERlZmVycmVk OgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotLS0gPGV4Y2VwdGlvbiBjYXVn aHQgaGVyZT4gLS0tCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDY1NCwgaW4gX3J1bkNhbGxiYWNrcwog ICAgY3VycmVudC5yZXN1bHQgPSBjYWxsYmFjayhjdXJyZW50LnJlc3VsdCwgKmFyZ3MsICoqa3cp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3RyYW5zaXQucHkiLCBsaW5lIDQ3NCwgaW4g X3Byb3RvX2ZhaWxlZAogICAgZi50cmFwKEJhZEhhbmRzaGFrZSwgZGVmZXIuQ2FuY2VsbGVkRXJy b3IpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv cHl0aG9uL2ZhaWx1cmUucHkiLCBsaW5lIDQ2MCwgaW4gdHJhcAogICAgc2VsZi5yYWlzZUV4Y2Vw dGlvbigpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvcHl0aG9uL2ZhaWx1cmUucHkiLCBsaW5lIDQ4OCwgaW4gcmFpc2VFeGNlcHRpb24KICAgIHJh aXNlIHNlbGYudmFsdWUud2l0aF90cmFjZWJhY2soc2VsZi50YikKd29ybWhvbGUudGVzdC50ZXN0 X3RyYW5zaXQuUmFuZG9tRXJyb3I6IGJvb20xCgpvawp0ZXN0X29uZV9mYWlsX29uZV9zdWNjZXNz ICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5JbmJvdW5kQ29ubmVjdGlvbkZhY3RvcnkpCnRl c3Rfb25lX2ZhaWxfb25lX3N1Y2Nlc3MgLi4uIG9rCnRlc3Rfc3VjY2VzcyAod29ybWhvbGUudGVz dC50ZXN0X3RyYW5zaXQuSW5ib3VuZENvbm5lY3Rpb25GYWN0b3J5KQp0ZXN0X3N1Y2Nlc3MgLi4u IG9rCnRlc3RfZ2V0X2RpcmVjdF9oaW50cyAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuTGlz dGVuZXIpCnRlc3RfZ2V0X2RpcmVjdF9oaW50cyAuLi4gb2sKdGVzdF9saXN0ZW5lciAod29ybWhv bGUudGVzdC50ZXN0X3RyYW5zaXQuTGlzdGVuZXIpCnRlc3RfbGlzdGVuZXIgLi4uIG9rCnRlc3Rf YWxsb2NhdGVfcG9ydCAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuTWlzYykKdGVzdF9hbGxv Y2F0ZV9wb3J0IC4uLiBvawp0ZXN0X2FsbG9jYXRlX3BvcnRfbm9fcmV1c2VhZGRyICh3b3JtaG9s ZS50ZXN0LnRlc3RfdHJhbnNpdC5NaXNjKQp0ZXN0X2FsbG9jYXRlX3BvcnRfbm9fcmV1c2VhZGRy IC4uLiBvawp0ZXN0X3N1Y2Nlc3MgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0Lk91dGJvdW5k Q29ubmVjdGlvbkZhY3RvcnkpCnRlc3Rfc3VjY2VzcyAuLi4gb2sKdGVzdF9uZXcgKHdvcm1ob2xl LnRlc3QudGVzdF90cmFuc2l0LlJlbGF5SGFuZHNoYWtlKQp0ZXN0X25ldyAuLi4gb2sKdGVzdF9v bGQgKHdvcm1ob2xlLnRlc3QudGVzdF90cmFuc2l0LlJlbGF5SGFuZHNoYWtlKQp0ZXN0X29sZCAu Li4gb2sKdGVzdF9ub19jb250ZW5kZXJzICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5UcmFu c2l0KQp0ZXN0X25vX2NvbnRlbmRlcnMgLi4uIG9rCnRlc3Rfbm9fZGlyZWN0X2hpbnRzICh3b3Jt aG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5UcmFuc2l0KQp0ZXN0X25vX2RpcmVjdF9oaW50cyAuLi4g b2sKdGVzdF9wcmlvcml0aWVzICh3b3JtaG9sZS50ZXN0LnRlc3RfdHJhbnNpdC5UcmFuc2l0KQp0 ZXN0X3ByaW9yaXRpZXMgLi4uIG9rCnRlc3Rfc3VjY2Vzc19kaXJlY3QgKHdvcm1ob2xlLnRlc3Qu dGVzdF90cmFuc2l0LlRyYW5zaXQpCnRlc3Rfc3VjY2Vzc19kaXJlY3QgLi4uIG9rCi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9faGludHMucHk6OTE6IERlcHJlY2F0aW9uV2FybmluZzogUGFzc2luZyBI b3N0bmFtZUVuZHBvaW50IGEgcmVhY3RvciB0aGF0IGRvZXMgbm90IHByb3ZpZGUgSVJlYWN0b3JQ bHVnZ2FibGVOYW1lUmVzb2x2ZXIgKG1vY2subW9jay5Nb2NrKSB3YXMgZGVwcmVjYXRlZCBpbiBU d2lzdGVkIDE3LjUuMDsgcGxlYXNlIHVzZSBhIHJlYWN0b3IgdGhhdCBwcm92aWRlcyBJUmVhY3Rv clBsdWdnYWJsZU5hbWVSZXNvbHZlciBpbnN0ZWFkCiAgcmV0dXJuIEhvc3RuYW1lRW5kcG9pbnQo cmVhY3RvciwgaGludC5ob3N0bmFtZSwgaGludC5wb3J0KQp0ZXN0X3N1Y2Nlc3NfZGlyZWN0X3Rv ciAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuVHJhbnNpdCkKdGVzdF9zdWNjZXNzX2RpcmVj dF90b3IgLi4uIG9rCnRlc3Rfc3VjY2Vzc19kaXJlY3RfdG9yX3JlbGF5ICh3b3JtaG9sZS50ZXN0 LnRlc3RfdHJhbnNpdC5UcmFuc2l0KQp0ZXN0X3N1Y2Nlc3NfZGlyZWN0X3Rvcl9yZWxheSAuLi4g b2sKdGVzdF93YWl0X2Zvcl9yZWxheSAod29ybWhvbGUudGVzdC50ZXN0X3RyYW5zaXQuVHJhbnNp dCkKdGVzdF93YWl0X2Zvcl9yZWxheSAuLi4gb2sKdGVzdF9tYWtlX2NvZGUgKHdvcm1ob2xlLnRl c3QudGVzdF94ZmVyX3V0aWwuWGZlcikKdGVzdF9tYWtlX2NvZGUgLi4uIEVSUk9SCnRlc3Rfb25f Y29kZSAod29ybWhvbGUudGVzdC50ZXN0X3hmZXJfdXRpbC5YZmVyKQp0ZXN0X29uX2NvZGUgLi4u IFVuaGFuZGxlZCBlcnJvciBpbiBEZWZlcnJlZDoKClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwog ICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X3hmZXJfdXRpbC5weSIsIGxpbmUgMzYsIGluIHRlc3Rfb25fY29kZQogICAgZDIg PSB4ZmVyX3V0aWwucmVjZWl2ZSgKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTYxMywgaW4gdW53aW5k R2VuZXJhdG9yCiAgICByZXR1cm4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdlbikKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUyOSwgaW4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzCiAg ICBfaW5saW5lQ2FsbGJhY2tzKE5vbmUsIGcsIHN0YXR1cykKLS0tIDxleGNlcHRpb24gY2F1Z2h0 IGhlcmU+IC0tLQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tz CiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS94ZmVyX3V0aWwucHkiLCBsaW5lIDQ2LCBpbiByZWNlaXZlCiAgICB3aCA9IHdvcm1ob2xlLmNy ZWF0ZShhcHBpZCwgcmVsYXlfdXJsLCByZWFjdG9yLCB0b3I9dG9yKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBC b3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRf dmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9z cz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0 dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAg c2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNl bGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2 b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYu X19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5k ZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYu X2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9p bnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYu X21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGlu ZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihk ZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0 dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2 YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29k ZSgqdmFsdWVzKQpidWlsdGlucy5UeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKRVJST1IKRVJST1IKdGVzdF94ZmVyICh3b3JtaG9sZS50ZXN0LnRlc3Rf eGZlcl91dGlsLlhmZXIpCnRlc3RfeGZlciAuLi4gRVJST1IKdGVzdF9idWlsZF9jb21wbGV0aW9u cyAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLkNvbXBsZXRpb24pCnRlc3RfYnVpbGRf Y29tcGxldGlvbnMgLi4uIG9rCnRlc3RfY2FsbCAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxl dGVyLkNvbXBsZXRpb24pCnRlc3RfY2FsbCAuLi4gb2sKdGVzdF9pbmNvbXBsZXRlX2NvZGUgKHdv cm1ob2xlLnRlc3QudGVzdF9ybGNvbXBsZXRlci5Db21wbGV0aW9uKQp0ZXN0X2luY29tcGxldGVf Y29kZSAuLi4gb2sKdGVzdF9yb2xsYmFja19uYW1lcGxhdGVfZHVyaW5nX2NvbXBsZXRpb24gKHdv cm1ob2xlLnRlc3QudGVzdF9ybGNvbXBsZXRlci5Db21wbGV0aW9uKQp0ZXN0X3JvbGxiYWNrX25h bWVwbGF0ZV9kdXJpbmdfY29tcGxldGlvbiAuLi4gb2sKdGVzdF9yb2xsYmFja19uYW1lcGxhdGVf ZHVyaW5nX2ZpbmlzaCAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLkNvbXBsZXRpb24p CnRlc3Rfcm9sbGJhY2tfbmFtZXBsYXRlX2R1cmluZ19maW5pc2ggLi4uIG9rCnRlc3Rfc2ltcGxl ICh3b3JtaG9sZS50ZXN0LnRlc3Rfcmxjb21wbGV0ZXIuQ29tcGxldGlvbikKdGVzdF9zaW1wbGUg Li4uIG9rCnRlc3Rfd2Fybl9yZWFkbGluZSAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVy LkNvbXBsZXRpb24pCnRlc3Rfd2Fybl9yZWFkbGluZSAuLi4gb2sKdGVzdF93cmFwX2Vycm9yICh3 b3JtaG9sZS50ZXN0LnRlc3Rfcmxjb21wbGV0ZXIuQ29tcGxldGlvbikKdGVzdF93cmFwX2Vycm9y IC4uLiBvawp0ZXN0X3dyYXBwZXIgKHdvcm1ob2xlLnRlc3QudGVzdF9ybGNvbXBsZXRlci5JbnB1 dCkKdGVzdF93cmFwcGVyIC4uLiBvawp0ZXN0X2J5dGVzICh3b3JtaG9sZS50ZXN0LnRlc3Rfcmxj b21wbGV0ZXIuU3luYykKdGVzdF9ieXRlcyAuLi4gb2sKdGVzdF9saWJlZGl0ICh3b3JtaG9sZS50 ZXN0LnRlc3Rfcmxjb21wbGV0ZXIuU3luYykKdGVzdF9saWJlZGl0IC4uLiBVbmhhbmRsZWQgZXJy b3IgaW4gRGVmZXJyZWQ6CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv ZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcu c2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF94ZmVy X3V0aWwucHkiLCBsaW5lIDQ5LCBpbiB0ZXN0X21ha2VfY29kZQogICAgZDEgPSB4ZmVyX3V0aWwu c2VuZCgKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTYxMywgaW4gdW53aW5kR2VuZXJhdG9yCiAgICBy ZXR1cm4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdlbikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgMTUyOSwgaW4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzCiAgICBfaW5saW5lQ2FsbGJh Y2tzKE5vbmUsIGcsIHN0YXR1cykKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBn LnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS94ZmVyX3V0aWwucHki LCBsaW5lIDExNiwgaW4gc2VuZAogICAgd2ggPSB3b3JtaG9sZS5jcmVhdGUoYXBwaWQsIHJlbGF5 X3VybCwgcmVhY3RvciwgdG9yPXRvcikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29y bWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxh eV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAi PGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4g X19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwog ICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19i b3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6 dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUg IjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29u bmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0 X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUg ODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNv bm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5l IDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25u ZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9f CiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQw LCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5 Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRp bnMuVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKClVu aGFuZGxlZCBlcnJvciBpbiBEZWZlcnJlZDoKClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAg cmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVz dC90ZXN0X3hmZXJfdXRpbC5weSIsIGxpbmUgMTcsIGluIHRlc3RfeGZlcgogICAgZDIgPSB4ZmVy X3V0aWwucmVjZWl2ZShyZWFjdG9yLCBBUFBJRCwgc2VsZi5yZWxheXVybCwgY29kZSkKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTYxMywgaW4gdW53aW5kR2VuZXJhdG9yCiAgICByZXR1cm4gX2NhbmNl bGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdlbikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUyOSwgaW4g X2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzCiAgICBfaW5saW5lQ2FsbGJhY2tzKE5vbmUsIGcs IHN0YXR1cykKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5Iiwg bGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS94ZmVyX3V0aWwucHkiLCBsaW5lIDQ2LCBp biByZWNlaXZlCiAgICB3aCA9IHdvcm1ob2xlLmNyZWF0ZShhcHBpZCwgcmVsYXlfdXJsLCByZWFj dG9yLCB0b3I9dG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIs IGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBw aWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2Vu ZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwog ICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9i dWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBs aW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVj dG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdl bmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+Iiwg bGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZh aWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4g d2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWls QWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBk b0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29y YXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBs YXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpidWlsdGlucy5UeXBlRXJy b3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKRVJST1IKRVJST1IK dGVzdF9ub19yZWFkbGluZSAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLlN5bmMpCnRl c3Rfbm9fcmVhZGxpbmUgLi4uIG9rCnRlc3RfcmVhZGxpbmUgKHdvcm1ob2xlLnRlc3QudGVzdF9y bGNvbXBsZXRlci5TeW5jKQp0ZXN0X3JlYWRsaW5lIC4uLiBvawp0ZXN0X3JlYWRsaW5lX25vX2Rv Y3N0cmluZyAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLlN5bmMpCnRlc3RfcmVhZGxp bmVfbm9fZG9jc3RyaW5nIC4uLiBvawp0ZXN0X3JlY2VpdmUgKHdvcm1ob2xlLnRlc3QudGVzdF9h cmdzLkNvbmZpZykKdGVzdF9yZWNlaXZlIC4uLiBvawp0ZXN0X3NlbmQgKHdvcm1ob2xlLnRlc3Qu dGVzdF9hcmdzLkNvbmZpZykKdGVzdF9zZW5kIC4uLiBvawp0ZXN0X2FjY2VwdF9maWxlICh3b3Jt aG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X2FjY2VwdF9maWxlIC4uLiBvawp0ZXN0 X2FwcGlkICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X2FwcGlkIC4uLiBv awp0ZXN0X2Jhc2VsaW5lICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X2Jh c2VsaW5lIC4uLiBvawp0ZXN0X2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlJlY2VpdmUp CnRlc3RfY29kZSAuLi4gb2sKdGVzdF9jb2RlX2xlbmd0aCAod29ybWhvbGUudGVzdC50ZXN0X2Fy Z3MuUmVjZWl2ZSkKdGVzdF9jb2RlX2xlbmd0aCAuLi4gb2sKdGVzdF9kdW1wX3RpbWluZyAod29y bWhvbGUudGVzdC50ZXN0X2FyZ3MuUmVjZWl2ZSkKdGVzdF9kdW1wX3RpbWluZyAuLi4gb2sKdGVz dF9oaWRlX3Byb2dyZXNzICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X2hp ZGVfcHJvZ3Jlc3MgLi4uIG9rCnRlc3Rfbm9saXN0ZW4gKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdz LlJlY2VpdmUpCnRlc3Rfbm9saXN0ZW4gLi4uIG9rCnRlc3Rfb25seV90ZXh0ICh3b3JtaG9sZS50 ZXN0LnRlc3RfYXJncy5SZWNlaXZlKQp0ZXN0X29ubHlfdGV4dCAuLi4gb2sKdGVzdF9vdXRwdXRf ZmlsZSAod29ybWhvbGUudGVzdC50ZXN0X2FyZ3MuUmVjZWl2ZSkKdGVzdF9vdXRwdXRfZmlsZSAu Li4gb2sKdGVzdF9yZWxheV9lbnZfdmFyICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5SZWNlaXZl KQp0ZXN0X3JlbGF5X2Vudl92YXIgLi4uIG9rCnRlc3RfdG9yICh3b3JtaG9sZS50ZXN0LnRlc3Rf YXJncy5SZWNlaXZlKQp0ZXN0X3RvciAuLi4gb2sKdGVzdF90cmFuc2l0X2Vudl92YXIgKHdvcm1o b2xlLnRlc3QudGVzdF9hcmdzLlJlY2VpdmUpCnRlc3RfdHJhbnNpdF9lbnZfdmFyIC4uLiBvawp0 ZXN0X3ZlcmlmeSAod29ybWhvbGUudGVzdC50ZXN0X2FyZ3MuUmVjZWl2ZSkKdGVzdF92ZXJpZnkg Li4uIG9rCnRlc3RfemVyb21vZGUgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlJlY2VpdmUpCnRl c3RfemVyb21vZGUgLi4uIG9rCnRlc3RfYXBwaWQgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlNl bmQpCnRlc3RfYXBwaWQgLi4uIG9rCnRlc3RfYmFzZWxpbmUgKHdvcm1ob2xlLnRlc3QudGVzdF9h cmdzLlNlbmQpCnRlc3RfYmFzZWxpbmUgLi4uIG9rCnRlc3RfY29kZSAod29ybWhvbGUudGVzdC50 ZXN0X2FyZ3MuU2VuZCkKdGVzdF9jb2RlIC4uLiBvawp0ZXN0X2NvZGVfbGVuZ3RoICh3b3JtaG9s ZS50ZXN0LnRlc3RfYXJncy5TZW5kKQp0ZXN0X2NvZGVfbGVuZ3RoIC4uLiBvawp0ZXN0X2R1bXBf dGltaW5nICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5TZW5kKQp0ZXN0X2R1bXBfdGltaW5nIC4u LiBvawp0ZXN0X2ZpbGUgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlNlbmQpCnRlc3RfZmlsZSAu Li4gb2sKdGVzdF9oaWRlX3Byb2dyZXNzICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5TZW5kKQp0 ZXN0X2hpZGVfcHJvZ3Jlc3MgLi4uIG9rCnRlc3Rfbm9saXN0ZW4gKHdvcm1ob2xlLnRlc3QudGVz dF9hcmdzLlNlbmQpCnRlc3Rfbm9saXN0ZW4gLi4uIG9rCnRlc3RfcmVsYXlfZW52X3ZhciAod29y bWhvbGUudGVzdC50ZXN0X2FyZ3MuU2VuZCkKdGVzdF9yZWxheV9lbnZfdmFyIC4uLiBvawp0ZXN0 X3RleHQgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlNlbmQpCnRlc3RfdGV4dCAuLi4gb2sKdGVz dF90b3IgKHdvcm1ob2xlLnRlc3QudGVzdF9hcmdzLlNlbmQpCnRlc3RfdG9yIC4uLiBvawp0ZXN0 X3RyYW5zaXRfZW52X3ZhciAod29ybWhvbGUudGVzdC50ZXN0X2FyZ3MuU2VuZCkKdGVzdF90cmFu c2l0X2Vudl92YXIgLi4uIG9rCnRlc3RfdmVyaWZ5ICh3b3JtaG9sZS50ZXN0LnRlc3RfYXJncy5T ZW5kKQp0ZXN0X3ZlcmlmeSAuLi4gb2sKdGVzdF96ZXJvbW9kZSAod29ybWhvbGUudGVzdC50ZXN0 X2FyZ3MuU2VuZCkKdGVzdF96ZXJvbW9kZSAuLi4gb2sKdGVzdF9pbW1lZGlhdGUgKHdvcm1ob2xl LnRlc3QudGVzdF9qb3VybmFsLkpvdXJuYWwpCnRlc3RfaW1tZWRpYXRlIC4uLiBvawp0ZXN0X2pv dXJuYWwgKHdvcm1ob2xlLnRlc3QudGVzdF9qb3VybmFsLkpvdXJuYWwpCnRlc3Rfam91cm5hbCAu Li4gb2sKdGVzdF90b3IgKHdvcm1ob2xlLnRlc3QudGVzdF90b3JfbWFuYWdlci5Tb2Nrc09ubHkp CnRlc3RfdG9yIC4uLiBvawp0ZXN0X2JhZF9hcmdzICh3b3JtaG9sZS50ZXN0LnRlc3RfdG9yX21h bmFnZXIuVG9yKQp0ZXN0X2JhZF9hcmdzIC4uLiBvawp0ZXN0X2Nvbm5lY3QgKHdvcm1ob2xlLnRl c3QudGVzdF90b3JfbWFuYWdlci5Ub3IpCnRlc3RfY29ubmVjdCAuLi4gb2sKdGVzdF9jb25uZWN0 X2N1c3RvbV9jb250cm9sX3BvcnQgKHdvcm1ob2xlLnRlc3QudGVzdF90b3JfbWFuYWdlci5Ub3Ip CnRlc3RfY29ubmVjdF9jdXN0b21fY29udHJvbF9wb3J0IC4uLiBvawp0ZXN0X2Nvbm5lY3RfY3Vz dG9tX2NvbnRyb2xfcG9ydF9mYWlscyAod29ybWhvbGUudGVzdC50ZXN0X3Rvcl9tYW5hZ2VyLlRv cikKdGVzdF9jb25uZWN0X2N1c3RvbV9jb250cm9sX3BvcnRfZmFpbHMgLi4uIG9rCnRlc3RfY29u bmVjdF9mYWlscyAod29ybWhvbGUudGVzdC50ZXN0X3Rvcl9tYW5hZ2VyLlRvcikKdGVzdF9jb25u ZWN0X2ZhaWxzIC4uLiBvawp0ZXN0X2xhdW5jaCAod29ybWhvbGUudGVzdC50ZXN0X3Rvcl9tYW5h Z2VyLlRvcikKdGVzdF9sYXVuY2ggLi4uIG9rCnRlc3Rfbm9fdHh0b3Jjb24gKHdvcm1ob2xlLnRl c3QudGVzdF90b3JfbWFuYWdlci5Ub3IpCnRlc3Rfbm9fdHh0b3Jjb24gLi4uIG9rCnRlc3RfZW5j b2RlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3BhcnNlLlBhcnNlKQp0ZXN0X2VuY29kZSAu Li4gb2sKdGVzdF9wYXJzZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9wYXJzZS5QYXJzZSkK dGVzdF9wYXJzZSAuLi4gb2sKdGVzdF9iZTQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5j b2RpbmcuRW5jb2RpbmcpCnRlc3RfYmU0IC4uLiBvawp0ZXN0X2Vhcmx5X2ZhaWwgKHdvcm1ob2xl LnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9pbnRzLkNvbm5lY3RvcikKdGVzdF9lYXJseV9mYWlsIC4u LiBvawp0ZXN0X2Vhcmx5X3N1Y2NlZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9p bnRzLkNvbm5lY3RvcikKdGVzdF9lYXJseV9zdWNjZWVkIC4uLiBvawp0ZXN0X2xhdGVfZmFpbCAo d29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9lbmRwb2ludHMuQ29ubmVjdG9yKQp0ZXN0X2xhdGVf ZmFpbCAuLi4gb2sKdGVzdF9sYXRlX3N1Y2NlZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rf ZW5kcG9pbnRzLkNvbm5lY3RvcikKdGVzdF9sYXRlX3N1Y2NlZWQgLi4uIG9rCnRlc3RfZWFybHlf ZmFpbCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9lbmRwb2ludHMuQ29udHJvbCkKdGVzdF9l YXJseV9mYWlsIC4uLiBvawp0ZXN0X2Vhcmx5X3N1Y2NlZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRl LnRlc3RfZW5kcG9pbnRzLkNvbnRyb2wpCnRlc3RfZWFybHlfc3VjY2VlZCAuLi4gb2sKdGVzdF9s YXRlX2ZhaWwgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9pbnRzLkNvbnRyb2wpCnRl c3RfbGF0ZV9mYWlsIC4uLiBvawp0ZXN0X2xhdGVfc3VjY2VlZCAod29ybWhvbGUudGVzdC5kaWxh dGUudGVzdF9lbmRwb2ludHMuQ29udHJvbCkKdGVzdF9sYXRlX3N1Y2NlZWQgLi4uIG9rCnJ1blRl c3QgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9pbnRzLkVuZHBvaW50cykKSWYgbm8g Q3ttZXRob2ROYW1lfSBhcmd1bWVudCBpcyBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLCBMe3J1 bn0gd2lsbCAuLi4gb2sKdGVzdF9lYXJseV9mYWlsICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2VuZHBvaW50cy5MaXN0ZW5lcikKdGVzdF9lYXJseV9mYWlsIC4uLiBvawp0ZXN0X2Vhcmx5X3N1 Y2NlZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZW5kcG9pbnRzLkxpc3RlbmVyKQp0ZXN0 X2Vhcmx5X3N1Y2NlZWQgLi4uIG9rCnRlc3RfbGF0ZV9mYWlsICh3b3JtaG9sZS50ZXN0LmRpbGF0 ZS50ZXN0X2VuZHBvaW50cy5MaXN0ZW5lcikKdGVzdF9sYXRlX2ZhaWwgLi4uIG9rCnRlc3RfbGF0 ZV9zdWNjZWVkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2VuZHBvaW50cy5MaXN0ZW5lcikK dGVzdF9sYXRlX3N1Y2NlZWQgLi4uIG9rCnRlc3RfZGVzY3JpYmVfaW5ib3VuZCAod29ybWhvbGUu dGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuRGVzY3JpYmUpCnRlc3RfZGVzY3JpYmVfaW5ib3Vu ZCAuLi4gb2sKdGVzdF9idWlsZCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3Iu SGFuZHNoYWtlKQp0ZXN0X2J1aWxkIC4uLiBvawp0ZXN0X2J1aWxkICh3b3JtaG9sZS50ZXN0LmRp bGF0ZS50ZXN0X2Nvbm5lY3Rvci5JbmJvdW5kKQp0ZXN0X2J1aWxkIC4uLiBvawp0ZXN0X25vX3Jl bGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5PdXRib3VuZCkKdGVzdF9u b19yZWxheSAuLi4gb2sKdGVzdF93aXRoX3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Nvbm5lY3Rvci5PdXRib3VuZCkKdGVzdF93aXRoX3JlbGF5IC4uLiBvawp0ZXN0X2xhdGUgKHdv cm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlJhY2UpCnRlc3RfbGF0ZSAuLi4gRVJS T1IKdGVzdF9vbmVfZm9sbG93ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9y LlJhY2UpCnRlc3Rfb25lX2ZvbGxvd2VyIC4uLiBFUlJPUgp0ZXN0X29uZV9sZWFkZXIgKHdvcm1o b2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlJhY2UpCnRlc3Rfb25lX2xlYWRlciAuLi4g RVJST1IKdGVzdF9zdG9wICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5SYWNl KQp0ZXN0X3N0b3AgLi4uIEVSUk9SCnRlc3RfYWRkX3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0 ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X2FkZF9yZWxheSAuLi4gRVJST1IK dGVzdF9iYXNpYyAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5l Y3RvcikKdGVzdF9iYXNpYyAuLi4gRVJST1IKdGVzdF9idWlsZCAod29ybWhvbGUudGVzdC5kaWxh dGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9idWlsZCAuLi4gb2sKdGVzdF9i dWlsZF9ub2lzZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5l Y3RvcikKdGVzdF9idWlsZF9ub2lzZSAuLi4gc2tpcHBlZCAnbm9pc2Vwcm90b2NvbCB1bmF2YWls YWJsZScKdGVzdF9idWlsZF9wcm90b2NvbF9mb2xsb3dlciAod29ybWhvbGUudGVzdC5kaWxhdGUu dGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9idWlsZF9wcm90b2NvbF9mb2xsb3dl ciAuLi4gb2sKdGVzdF9idWlsZF9wcm90b2NvbF9sZWFkZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRl LnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3RfYnVpbGRfcHJvdG9jb2xfbGVhZGVy IC4uLiBvawp0ZXN0X2Nvbm5lY3Rpb25fYWJpbGl0aWVzICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50 ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X2Nvbm5lY3Rpb25fYWJpbGl0aWVzIC4u LiBvawp0ZXN0X2VtcHR5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0 Q29ubmVjdG9yKQp0ZXN0X2VtcHR5IC4uLiBFUlJPUgp0ZXN0X2luaXRpYWxfcmVsYXkgKHdvcm1o b2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3RfaW5pdGlh bF9yZWxheSAuLi4gb2sKdGVzdF9saXN0ZW4gKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29u bmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3RfbGlzdGVuIC4uLiBvawp0ZXN0X2xpc3Rlbl9hZGRy ZXNzZXMgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3Ip CnRlc3RfbGlzdGVuX2FkZHJlc3NlcyAuLi4gb2sKdGVzdF9saXN0ZW5fYnV0X3RvciAod29ybWhv bGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9saXN0ZW5f YnV0X3RvciAuLi4gb2sKdGVzdF9ub19saXN0ZW4gKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rf Y29ubmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3Rfbm9fbGlzdGVuIC4uLiBvawp0ZXN0X3ByaW9y aXRpZXMgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3Ip CnRlc3RfcHJpb3JpdGllcyAuLi4gb2sKdGVzdF9yZWxheV9kZWxheSAod29ybWhvbGUudGVzdC5k aWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9yZWxheV9kZWxheSAuLi4g RVJST1IKdGVzdF9zY2hlZHVsZV9jb25uZWN0aW9uX25vX3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRp bGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X3NjaGVkdWxlX2Nvbm5lY3Rp b25fbm9fcmVsYXkgLi4uIG9rCnRlc3Rfc2NoZWR1bGVfY29ubmVjdGlvbl9yZWxheSAod29ybWhv bGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9zY2hlZHVs ZV9jb25uZWN0aW9uX3JlbGF5IC4uLiBvawp0ZXN0X3N0YXJ0X2xpc3RlbiAod29ybWhvbGUudGVz dC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9zdGFydF9saXN0ZW4g Li4uIFVuaGFuZGxlZCBFcnJvcgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0b3IucHkiLCBsaW5lIDIxOSwgaW4gdGVzdF9zdGFydF9saXN0ZW4K ICAgIGQuY2FsbGJhY2sobHApCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDQ2MCwgaW4gY2FsbGJhY2sK ICAgIHNlbGYuX3N0YXJ0UnVuQ2FsbGJhY2tzKHJlc3VsdCkKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUg NTY4LCBpbiBfc3RhcnRSdW5DYWxsYmFja3MKICAgIHNlbGYuX3J1bkNhbGxiYWNrcygpCi0tLSA8 ZXhjZXB0aW9uIGNhdWdodCBoZXJlPiAtLS0KICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgNjU0LCBpbiBf cnVuQ2FsbGJhY2tzCiAgICBjdXJyZW50LnJlc3VsdCA9IGNhbGxiYWNrKGN1cnJlbnQucmVzdWx0 LCAqYXJncywgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nv bm5lY3Rvci5weSIsIGxpbmUgMzA1LCBpbiBfbGlzdGVuaW5nCiAgICBzZWxmLmxpc3RlbmVyX3Jl YWR5KGRpcmVjdF9oaW50cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRl ZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRl Y29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRl bXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpidWlsdGlucy5UeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKRkFJTApFUlJP Ugp0ZXN0X3N0YXJ0X3N0b3AgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdG9yLlRl c3RDb25uZWN0b3IpCnRlc3Rfc3RhcnRfc3RvcCAuLi4gRVJST1IKdGVzdF90b3Jfbm9fbWFuYWdl ciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3RvcikKdGVz dF90b3Jfbm9fbWFuYWdlciAuLi4gRVJST1IKdGVzdF90b3Jfd2l0aF9tYW5hZ2VyICh3b3JtaG9s ZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X3Rvcl93aXRo X21hbmFnZXIgLi4uIEVSUk9SCnRlc3QxICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5l Y3QuQ29ubmVjdCkKdGVzdDEgLi4uIHNraXBwZWQgJ25vaXNlcHJvdG9jb2wgdW5hdmFpbGFibGUn CnRlc3RfYmFkX3Byb2xvZ3VlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rpb24u Q29ubmVjdGlvbikKdGVzdF9iYWRfcHJvbG9ndWUgLi4uIFVuaGFuZGxlZCBFcnJvcgpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4g bWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCph LCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nv bm5lY3Rpb24ucHkiLCBsaW5lIDM4LCBpbiB0ZXN0X2JhZF9wcm9sb2d1ZQogICAgYy5tYWtlQ29u bmVjdGlvbih0KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9u CiAgICBzZWxmLmNvbm5lY3Rpb25NYWRlKCkKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0t LQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIs IGxpbmUgNTk0LCBpbiBjb25uZWN0aW9uTWFkZQogICAgc2VsZi5fcmVjb3JkLnNldF9yb2xlX2xl YWRlcigpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBp bnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3RfZm9s bG93ZXJfY29tYmluZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25u ZWN0aW9uKQp0ZXN0X2ZvbGxvd2VyX2NvbWJpbmVkIC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2Vi YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGlu IG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHki LCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigq YSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9j b25uZWN0aW9uLnB5IiwgbGluZSAyNDgsIGluIHRlc3RfZm9sbG93ZXJfY29tYmluZWQKICAgIGMu bWFrZUNvbm5lY3Rpb24odCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9wcm90b2NvbC5weSIsIGxpbmUgNTE0LCBpbiBtYWtlQ29u bmVjdGlvbgogICAgc2VsZi5jb25uZWN0aW9uTWFkZSgpCi0tLSA8ZXhjZXB0aW9uIGNhdWdodCBo ZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rp b24ucHkiLCBsaW5lIDU5NiwgaW4gY29ubmVjdGlvbk1hZGUKICAgIHNlbGYuX3JlY29yZC5zZXRf cm9sZV9mb2xsb3dlcigpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYg ZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNv cmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBs aW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1w bGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVy cm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9S CnRlc3RfaGFzaGFibGUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25u ZWN0aW9uKQp0ZXN0X2hhc2hhYmxlIC4uLiBvawp0ZXN0X25vX3JlbGF5X2ZvbGxvd2VyICh3b3Jt aG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9ub19yZWxh eV9mb2xsb3dlciAuLi4gVW5oYW5kbGVkIEVycm9yClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDE4MywgaW4gdGVzdF9u b19yZWxheV9mb2xsb3dlcgogICAgcmV0dXJuIHNlbGYuX3Rlc3Rfbm9fcmVsYXkoRk9MTE9XRVIp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdGlv bi5weSIsIGxpbmUgNjksIGluIF90ZXN0X25vX3JlbGF5CiAgICBjLm1ha2VDb25uZWN0aW9uKHQp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50 ZXJuZXQvcHJvdG9jb2wucHkiLCBsaW5lIDUxNCwgaW4gbWFrZUNvbm5lY3Rpb24KICAgIHNlbGYu Y29ubmVjdGlvbk1hZGUoKQotLS0gPGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9jb25uZWN0aW9uLnB5IiwgbGluZSA1OTYs IGluIGNvbm5lY3Rpb25NYWRlCiAgICBzZWxmLl9yZWNvcmQuc2V0X3JvbGVfZm9sbG93ZXIoKQog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhv ZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoq a3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4g Y29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1 bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNv ZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUK ICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpCmJ1aWx0aW5zLlR5cGVFcnJvcjogYW4gaW50ZWdlciBp cyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgpFUlJPUgpFUlJPUgp0ZXN0X25vX3JlbGF5X2xl YWRlciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0aW9uLkNvbm5lY3Rpb24pCnRl c3Rfbm9fcmVsYXlfbGVhZGVyIC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdGlvbi5weSIsIGxpbmUgMTgwLCBp biB0ZXN0X25vX3JlbGF5X2xlYWRlcgogICAgcmV0dXJuIHNlbGYuX3Rlc3Rfbm9fcmVsYXkoTEVB REVSKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5l Y3Rpb24ucHkiLCBsaW5lIDY5LCBpbiBfdGVzdF9ub19yZWxheQogICAgYy5tYWtlQ29ubmVjdGlv bih0KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBz ZWxmLmNvbm5lY3Rpb25NYWRlKCkKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIsIGxpbmUg NTk0LCBpbiBjb25uZWN0aW9uTWFkZQogICAgc2VsZi5fcmVjb3JkLnNldF9yb2xlX2xlYWRlcigp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3RfcmVsYXkgKHdv cm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25uZWN0aW9uKQp0ZXN0X3JlbGF5 IC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVy bmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYo KmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdz U3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5IiwgbGluZSAxODgsIGluIHRl c3RfcmVsYXkKICAgIGMubWFrZUNvbm5lY3Rpb24odCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9wcm90b2NvbC5weSIsIGxpbmUg NTE0LCBpbiBtYWtlQ29ubmVjdGlvbgogICAgc2VsZi5jb25uZWN0aW9uTWFkZSgpCi0tLSA8ZXhj ZXB0aW9uIGNhdWdodCBoZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Rp bGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5MSwgaW4gY29ubmVjdGlvbk1hZGUKICAgIGZy YW1lci51c2VfcmVsYXkoc2VsZi5fcmVsYXlfaGFuZHNoYWtlKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIz NCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29y YXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4g ZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2 YWx1ZXMpCmJ1aWx0aW5zLlR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5 cGUgYnl0ZXMpCgpFUlJPUgpFUlJPUgp0ZXN0X3JlbGF5X2JhZF9yZXNwb25zZSAod29ybWhvbGUu dGVzdC5kaWxhdGUudGVzdF9jb25uZWN0aW9uLkNvbm5lY3Rpb24pCnRlc3RfcmVsYXlfYmFkX3Jl c3BvbnNlIC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5IiwgbGluZSAyMjQs IGluIHRlc3RfcmVsYXlfYmFkX3Jlc3BvbnNlCiAgICBjLm1ha2VDb25uZWN0aW9uKHQpCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv cHJvdG9jb2wucHkiLCBsaW5lIDUxNCwgaW4gbWFrZUNvbm5lY3Rpb24KICAgIHNlbGYuY29ubmVj dGlvbk1hZGUoKQotLS0gPGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9jb25uZWN0aW9uLnB5IiwgbGluZSA1OTEsIGluIGNv bm5lY3Rpb25NYWRlCiAgICBmcmFtZXIudXNlX3JlbGF5KHNlbGYuX3JlbGF5X2hhbmRzaGFrZSkK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRo b2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAq Kmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJu IGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlm dW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBj b2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2Rl CiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpidWlsdGlucy5UeXBlRXJyb3I6IGFuIGludGVnZXIg aXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKRVJST1IKRVJST1IKdGVzdF9yZWxheV9qaWx0 ZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25uZWN0aW9uKQp0ZXN0 X3JlbGF5X2ppbHRlZCAuLi4gVW5oYW5kbGVkIEVycm9yClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdGlvbi5weSIsIGxp bmUgMjExLCBpbiB0ZXN0X3JlbGF5X2ppbHRlZAogICAgYy5tYWtlQ29ubmVjdGlvbih0KQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBzZWxmLmNvbm5l Y3Rpb25NYWRlKCkKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIsIGxpbmUgNTkxLCBpbiBj b25uZWN0aW9uTWFkZQogICAgZnJhbWVyLnVzZV9yZWxheShzZWxmLl9yZWxheV9oYW5kc2hha2Up CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3RfY29udHJvbF9j aGFubmVsICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2luYm91bmQuSW5ib3VuZFRlc3QpCnRl c3RfY29udHJvbF9jaGFubmVsIC4uLiBVbmhhbmRsZWQgRXJyb3IKVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOgpGYWlsdXJlOiB3b3JtaG9sZS5fZGlsYXRpb24uaW5ib3VuZC5EdXBs aWNhdGVPcGVuRXJyb3I6IHJlY2VpdmVkIGR1cGxpY2F0ZSBPUEVOIGZvciBiJ3NjaWQnCgpvawp0 ZXN0X29wZW5fZGF0YV9jbG9zZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9pbmJvdW5kLklu Ym91bmRUZXN0KQp0ZXN0X29wZW5fZGF0YV9jbG9zZSAuLi4gVW5oYW5kbGVkIEVycm9yClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKRmFpbHVyZTogd29ybWhvbGUuX2RpbGF0aW9u LmluYm91bmQuRHVwbGljYXRlT3BlbkVycm9yOiByZWNlaXZlZCBkdXBsaWNhdGUgT1BFTiBmb3Ig YidzY2lkJwoKVW5oYW5kbGVkIEVycm9yClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKRmFpbHVyZTogd29ybWhvbGUuX2RpbGF0aW9uLmluYm91bmQuRGF0YUZvck1pc3NpbmdTdWJj aGFubmVsRXJyb3I6IHJlY2VpdmVkIERBVEEgZm9yIG5vbi1leGlzdGVudCBzdWJjaGFubmVsIGIn c2NYWCcKClVuaGFuZGxlZCBFcnJvcgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6 CkZhaWx1cmU6IHdvcm1ob2xlLl9kaWxhdGlvbi5pbmJvdW5kLkNsb3NlRm9yTWlzc2luZ1N1YmNo YW5uZWxFcnJvcjogcmVjZWl2ZWQgQ0xPU0UgZm9yIG5vbi1leGlzdGVudCBzdWJjaGFubmVsIGIn c2NYWCcKCm9rCnRlc3RfcGF1c2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfaW5ib3VuZC5J bmJvdW5kVGVzdCkKdGVzdF9wYXVzZSAuLi4gb2sKdGVzdF9zZXFudW0gKHdvcm1ob2xlLnRlc3Qu ZGlsYXRlLnRlc3RfaW5ib3VuZC5JbmJvdW5kVGVzdCkKdGVzdF9zZXFudW0gLi4uIG9rCnRlc3Rf YnVpbGRfcmVjb3JkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91dGJvdW5k VGVzdCkKdGVzdF9idWlsZF9yZWNvcmQgLi4uIG9rCnRlc3RfY29ubmVjdGlvbl9zZW5kX3F1ZXVl ZF9wYXVzZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuT3V0Ym91bmRUZXN0 KQp0ZXN0X2Nvbm5lY3Rpb25fc2VuZF9xdWV1ZWRfcGF1c2VkIC4uLiBvawp0ZXN0X2Nvbm5lY3Rp b25fc2VuZF9xdWV1ZWRfdW5wYXVzZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91 bmQuT3V0Ym91bmRUZXN0KQp0ZXN0X2Nvbm5lY3Rpb25fc2VuZF9xdWV1ZWRfdW5wYXVzZWQgLi4u IG9rCnRlc3RfZGlzY29ubmVjdCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9vdXRib3VuZC5P dXRib3VuZFRlc3QpCnRlc3RfZGlzY29ubmVjdCAuLi4gb2sKdGVzdF9kdXBsaWNhdGVfcmVnaXN0 ZXJQcm9kdWNlciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9vdXRib3VuZC5PdXRib3VuZFRl c3QpCnRlc3RfZHVwbGljYXRlX3JlZ2lzdGVyUHJvZHVjZXIgLi4uIG9rCnRlc3Rfb3V0Ym91bmRf cXVldWUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuT3V0Ym91bmRUZXN0KQp0 ZXN0X291dGJvdW5kX3F1ZXVlIC4uLiBvawp0ZXN0X3BhdXNlICh3b3JtaG9sZS50ZXN0LmRpbGF0 ZS50ZXN0X291dGJvdW5kLk91dGJvdW5kVGVzdCkKdGVzdF9wYXVzZSAuLi4gb2sKdGVzdF9wcmVt cHRpdmVfYWNrICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91dGJvdW5kVGVz dCkKdGVzdF9wcmVtcHRpdmVfYWNrIC4uLiBvawp0ZXN0X3B1bGxfcHJvZHVjZXIgKHdvcm1ob2xl LnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuT3V0Ym91bmRUZXN0KQp0ZXN0X3B1bGxfcHJvZHVj ZXIgLi4uIG9rCnRlc3RfcmVzdW1lX2Vycm9yICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291 dGJvdW5kLk91dGJvdW5kVGVzdCkKdGVzdF9yZXN1bWVfZXJyb3IgLi4uIDxNb2NrIG5hbWU9J3Ax JyBpZD0nMTQwNzM3MzAxMzIxNjY0Jz4gZmFpbGVkLCBwcm9kdWNpbmcgd2lsbCBiZSBzdG9wcGVk OgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUg ODI1LCBpbiBhZHZhbmNlCiAgICBjYWxsLmZ1bmMoKmNhbGwuYXJncywgKipjYWxsLmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9ldmVudHVhbC5weSIsIGxpbmUgMzEsIGluIF90dXJu CiAgICBmKCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGluZSA2NzEsIGluIF90aWNr CiAgICB0YXNrT2JqLl9vbmVXb3JrVW5pdCgpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUgNTE3LCBpbiBf b25lV29ya1VuaXQKICAgIHJlc3VsdCA9IG5leHQoc2VsZi5faXRlcmF0b3IpCi0tLSA8ZXhjZXB0 aW9uIGNhdWdodCBoZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0 aW9uL291dGJvdW5kLnB5IiwgbGluZSAzNTMsIGluIF9wdWxsCiAgICBzZWxmLl9wcm9kdWNlci5y ZXN1bWVQcm9kdWNpbmcoKQogIEZpbGUgIi9nbnUvc3RvcmUvZHBqdjRseGJ2OHJiZDRpbHBicG03 dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L21vY2svbW9jay5weSIsIGxpbmUgMTA5MiwgaW4gX19jYWxsX18KICAgIHJldHVybiBfbW9ja19z ZWxmLl9tb2NrX2NhbGwoKmFyZ3MsICoqa3dhcmdzKQogIEZpbGUgIi9nbnUvc3RvcmUvZHBqdjRs eGJ2OHJiZDRpbHBicG03dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL21vY2svbW9jay5weSIsIGxpbmUgMTE0MywgaW4gX21vY2tfY2FsbAog ICAgcmFpc2UgZWZmZWN0Cndvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuUHJldGVu ZFJlc3VtcHRpb25FcnJvcjogCgpvawp0ZXN0X3NlbmRfaWZfY29ubmVjdGVkICh3b3JtaG9sZS50 ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91dGJvdW5kVGVzdCkKdGVzdF9zZW5kX2lmX2Nvbm5l Y3RlZCAuLi4gb2sKdGVzdF9zdG9wUHJvZHVjaW5nICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X291dGJvdW5kLk91dGJvdW5kVGVzdCkKdGVzdF9zdG9wUHJvZHVjaW5nIC4uLiBvawp0ZXN0X3N1 YmNoYW5uZWxfY2xvc2VkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91dGJv dW5kVGVzdCkKdGVzdF9zdWJjaGFubmVsX2Nsb3NlZCAuLi4gb2sKdGVzdF90b2xlcmF0ZV9kdXBs aWNhdGVfcGF1c2VfcmVzdW1lICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLk91 dGJvdW5kVGVzdCkKdGVzdF90b2xlcmF0ZV9kdXBsaWNhdGVfcGF1c2VfcmVzdW1lIC4uLiBvawp0 ZXN0X3R3b19wdWxsX3Byb2R1Y2VycyAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9vdXRib3Vu ZC5PdXRib3VuZFRlc3QpCnRlc3RfdHdvX3B1bGxfcHJvZHVjZXJzIC4uLiBvawp0ZXN0X2Vycm9y ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLlB1c2hQdWxsKQp0ZXN0X2Vycm9y IC4uLiA8TW9jayBpZD0nMTQwNzM3Mjk5OTcyNDAwJz4gZmFpbGVkLCBwcm9kdWNpbmcgd2lsbCBi ZSBzdG9wcGVkOgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5w eSIsIGxpbmUgODI1LCBpbiBhZHZhbmNlCiAgICBjYWxsLmZ1bmMoKmNhbGwuYXJncywgKipjYWxs Lmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9ldmVudHVhbC5weSIsIGxpbmUgMzEs IGluIF90dXJuCiAgICBmKCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGluZSA2NzEs IGluIF90aWNrCiAgICB0YXNrT2JqLl9vbmVXb3JrVW5pdCgpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUg NTE3LCBpbiBfb25lV29ya1VuaXQKICAgIHJlc3VsdCA9IG5leHQoc2VsZi5faXRlcmF0b3IpCi0t LSA8ZXhjZXB0aW9uIGNhdWdodCBoZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2RpbGF0aW9uL291dGJvdW5kLnB5IiwgbGluZSAzNTMsIGluIF9wdWxsCiAgICBzZWxmLl9w cm9kdWNlci5yZXN1bWVQcm9kdWNpbmcoKQogIEZpbGUgIi9nbnUvc3RvcmUvZHBqdjRseGJ2OHJi ZDRpbHBicG03dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL21vY2svbW9jay5weSIsIGxpbmUgMTA5MiwgaW4gX19jYWxsX18KICAgIHJldHVy biBfbW9ja19zZWxmLl9tb2NrX2NhbGwoKmFyZ3MsICoqa3dhcmdzKQogIEZpbGUgIi9nbnUvc3Rv cmUvZHBqdjRseGJ2OHJiZDRpbHBicG03dzhiejYwbjRicXEtcHl0aG9uLW1vY2stMy4wLjUvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL21vY2svbW9jay5weSIsIGxpbmUgMTE0OSwgaW4gX21v Y2tfY2FsbAogICAgcmVzdWx0ID0gZWZmZWN0KCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9vdXRib3VuZC5weSIsIGxpbmUgNTg0 LCBpbiA8bGFtYmRhPgogICAgcC5yZXN1bWVQcm9kdWNpbmcuc2lkZV9lZmZlY3QgPSBsYW1iZGE6 IGFjdGlvbihuZXh0KGl0KSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxh dGUvdGVzdF9vdXRib3VuZC5weSIsIGxpbmUgNTgxLCBpbiBhY3Rpb24KICAgIHJhaXNlIGkKd29y bWhvbGUudGVzdC5kaWxhdGUudGVzdF9vdXRib3VuZC5QcmV0ZW5kUmVzdW1wdGlvbkVycm9yOiAK Cm9rCnRlc3RfZXJyb3JfZHVyaW5nX3VucmVnaXN0ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRl c3Rfb3V0Ym91bmQuUHVzaFB1bGwpCnRlc3RfZXJyb3JfZHVyaW5nX3VucmVnaXN0ZXIgLi4uIDxN b2NrIGlkPScxNDA3MzczMDAwMzY5MTInPiBmYWlsZWQsIHByb2R1Y2luZyB3aWxsIGJlIHN0b3Bw ZWQ6ClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGlu ZSA4MjUsIGluIGFkdmFuY2UKICAgIGNhbGwuZnVuYygqY2FsbC5hcmdzLCAqKmNhbGwua3cpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2V2ZW50dWFsLnB5IiwgbGluZSAzMSwgaW4gX3R1 cm4KICAgIGYoKmFyZ3MsICoqa3dhcmdzKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3Rhc2sucHkiLCBsaW5lIDY3MSwgaW4gX3Rp Y2sKICAgIHRhc2tPYmouX29uZVdvcmtVbml0KCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGluZSA1MTcsIGlu IF9vbmVXb3JrVW5pdAogICAgcmVzdWx0ID0gbmV4dChzZWxmLl9pdGVyYXRvcikKLS0tIDxleGNl cHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGls YXRpb24vb3V0Ym91bmQucHkiLCBsaW5lIDM1MywgaW4gX3B1bGwKICAgIHNlbGYuX3Byb2R1Y2Vy LnJlc3VtZVByb2R1Y2luZygpCiAgRmlsZSAiL2dudS9zdG9yZS9kcGp2NGx4YnY4cmJkNGlscGJw bTd3OGJ6NjBuNGJxcS1weXRob24tbW9jay0zLjAuNS9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvbW9jay9tb2NrLnB5IiwgbGluZSAxMDkyLCBpbiBfX2NhbGxfXwogICAgcmV0dXJuIF9tb2Nr X3NlbGYuX21vY2tfY2FsbCgqYXJncywgKiprd2FyZ3MpCiAgRmlsZSAiL2dudS9zdG9yZS9kcGp2 NGx4YnY4cmJkNGlscGJwbTd3OGJ6NjBuNGJxcS1weXRob24tbW9jay0zLjAuNS9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvbW9jay9tb2NrLnB5IiwgbGluZSAxMTQ5LCBpbiBfbW9ja19jYWxs CiAgICByZXN1bHQgPSBlZmZlY3QoKmFyZ3MsICoqa3dhcmdzKQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X291dGJvdW5kLnB5IiwgbGluZSA1ODQsIGluIDxs YW1iZGE+CiAgICBwLnJlc3VtZVByb2R1Y2luZy5zaWRlX2VmZmVjdCA9IGxhbWJkYTogYWN0aW9u KG5leHQoaXQpKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0 X291dGJvdW5kLnB5IiwgbGluZSA1ODEsIGluIGFjdGlvbgogICAgcmFpc2UgaQp3b3JtaG9sZS50 ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLlByZXRlbmRSZXN1bXB0aW9uRXJyb3I6IAoKPE1vY2sg aWQ9JzE0MDczNzMwMDAzNTEzNic+IGZhaWxlZCB0byB1bnJlZ2lzdGVyIHByb2R1Y2VyOgpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUgODI1LCBp biBhZHZhbmNlCiAgICBjYWxsLmZ1bmMoKmNhbGwuYXJncywgKipjYWxsLmt3KQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9ldmVudHVhbC5weSIsIGxpbmUgMzEsIGluIF90dXJuCiAgICBm KCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC90YXNrLnB5IiwgbGluZSA2NzEsIGluIF90aWNrCiAgICB0 YXNrT2JqLl9vbmVXb3JrVW5pdCgpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdGFzay5weSIsIGxpbmUgNTE3LCBpbiBfb25lV29y a1VuaXQKICAgIHJlc3VsdCA9IG5leHQoc2VsZi5faXRlcmF0b3IpCi0tLSA8ZXhjZXB0aW9uIGNh dWdodCBoZXJlPiAtLS0KICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL291 dGJvdW5kLnB5IiwgbGluZSAzNTgsIGluIF9wdWxsCiAgICBzZWxmLl91bnJlZ2lzdGVyKCkKICBG aWxlICIvZ251L3N0b3JlL2RwanY0bHhidjhyYmQ0aWxwYnBtN3c4Yno2MG40YnFxLXB5dGhvbi1t b2NrLTMuMC41L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9tb2NrL21vY2sucHkiLCBsaW5l IDEwOTIsIGluIF9fY2FsbF9fCiAgICByZXR1cm4gX21vY2tfc2VsZi5fbW9ja19jYWxsKCphcmdz LCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL2RwanY0bHhidjhyYmQ0aWxwYnBtN3c4Yno2 MG40YnFxLXB5dGhvbi1tb2NrLTMuMC41L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9tb2Nr L21vY2sucHkiLCBsaW5lIDExNDMsIGluIF9tb2NrX2NhbGwKICAgIHJhaXNlIGVmZmVjdAp3b3Jt aG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLlByZXRlbmRVbnJlZ2lzdGVyRXJyb3I6IAoK b2sKdGVzdF9zdGFydF9wYXVzZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQu UHVzaFB1bGwpCnRlc3Rfc3RhcnRfcGF1c2VkIC4uLiBvawp0ZXN0X3N0YXJ0X3VucGF1c2VkICh3 b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJvdW5kLlB1c2hQdWxsKQp0ZXN0X3N0YXJ0X3Vu cGF1c2VkIC4uLiBvawp0ZXN0X3N0YXJ0X3VucGF1c2VkX3R3b193cml0ZXMgKHdvcm1ob2xlLnRl c3QuZGlsYXRlLnRlc3Rfb3V0Ym91bmQuUHVzaFB1bGwpCnRlc3Rfc3RhcnRfdW5wYXVzZWRfdHdv X3dyaXRlcyAuLi4gb2sKdGVzdF9zdG9wICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X291dGJv dW5kLlB1c2hQdWxsKQp0ZXN0X3N0b3AgLi4uIG9rCnRlc3RfZGlsYXRlX2ZpcnN0ICh3b3JtaG9s ZS50ZXN0LmRpbGF0ZS50ZXN0X21hbmFnZXIuVGVzdERpbGF0b3IpCnRlc3RfZGlsYXRlX2ZpcnN0 IC4uLiBvawp0ZXN0X2RpbGF0ZV9sYXRlciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5h Z2VyLlRlc3REaWxhdG9yKQp0ZXN0X2RpbGF0ZV9sYXRlciAuLi4gb2sKdGVzdF9kaXNqb2ludF92 ZXJzaW9ucyAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3REaWxhdG9yKQp0 ZXN0X2Rpc2pvaW50X3ZlcnNpb25zIC4uLiBFUlJPUgp0ZXN0X3BlZXJfY2Fubm90X2RpbGF0ZSAo d29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3REaWxhdG9yKQp0ZXN0X3BlZXJf Y2Fubm90X2RpbGF0ZSAuLi4gRVJST1IKdGVzdF9zdG9wX2Vhcmx5ICh3b3JtaG9sZS50ZXN0LmRp bGF0ZS50ZXN0X21hbmFnZXIuVGVzdERpbGF0b3IpCnRlc3Rfc3RvcF9lYXJseSAuLi4gb2sKdGVz dF90cmFuc2l0X3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X21hbmFnZXIuVGVzdERp bGF0b3IpCnRlc3RfdHJhbnNpdF9yZWxheSAuLi4gb2sKdGVzdF9jcmVhdGUgKHdvcm1ob2xlLnRl c3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikKdGVzdF9jcmVhdGUgLi4uIG9rCnRl c3RfZm9sbG93ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdl cikKdGVzdF9mb2xsb3dlciAuLi4gRVJST1IKdGVzdF9sZWFkZXIgKHdvcm1ob2xlLnRlc3QuZGls YXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikKdGVzdF9sZWFkZXIgLi4uIEVSUk9SCnRlc3Rf bWFrZV9zaWRlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X21hbmFnZXIuVGVzdE1hbmFnZXIp CnRlc3RfbWFrZV9zaWRlIC4uLiBvawp0ZXN0X21pcnJvciAod29ybWhvbGUudGVzdC5kaWxhdGUu dGVzdF9tYW5hZ2VyLlRlc3RNYW5hZ2VyKQp0ZXN0X21pcnJvciAuLi4gRVJST1IKdGVzdF9waW5n X3BvbmcgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikKdGVz dF9waW5nX3BvbmcgLi4uIFVuaGFuZGxlZCBFcnJvcgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNh bGwgbGFzdCk6CkZhaWx1cmU6IHdvcm1ob2xlLl9kaWxhdGlvbi5tYW5hZ2VyLlVuZXhwZWN0ZWRL Q006IAoKVW5oYW5kbGVkIEVycm9yClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToK RmFpbHVyZTogd29ybWhvbGUuX2RpbGF0aW9uLm1hbmFnZXIuVW5rbm93bk1lc3NhZ2VUeXBlOiBu b3QgcmVjb2duaXplZAoKb2sKdGVzdF9zdWJjaGFubmVsICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50 ZXN0X21hbmFnZXIuVGVzdE1hbmFnZXIpCnRlc3Rfc3ViY2hhbm5lbCAuLi4gb2sKdGVzdF91bmtu b3duX21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdl cikKdGVzdF91bmtub3duX21lc3NhZ2UgLi4uIEVSUk9SCnRlc3RfY3JlYXRlICh3b3JtaG9sZS50 ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuSGFsZkNsb3NlYWJsZSkKdGVzdF9jcmVhdGUgLi4u IEVSUk9SCnRlc3RfbG9jYWxfY2xvc2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hh bm5lbC5IYWxmQ2xvc2VhYmxlKQp0ZXN0X2xvY2FsX2Nsb3NlIC4uLiBFUlJPUgp0ZXN0X3JlbW90 ZV9jbG9zZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9zdWJjaGFubmVsLkhhbGZDbG9zZWFi bGUpCnRlc3RfcmVtb3RlX2Nsb3NlIC4uLiBFUlJPUgp0ZXN0X2Nsb3NlX2JlZm9yZV9vcGVuICh3 b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hhbm5lbEFQSSkKdGVzdF9j bG9zZV9iZWZvcmVfb3BlbiAuLi4gRVJST1IKdGVzdF9jb25zdW1lciAod29ybWhvbGUudGVzdC5k aWxhdGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3RfY29uc3VtZXIgLi4uIEVS Uk9SCnRlc3RfY3JlYXRlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3Vi Q2hhbm5lbEFQSSkKdGVzdF9jcmVhdGUgLi4uIEVSUk9SCnRlc3RfZGF0YSAod29ybWhvbGUudGVz dC5kaWxhdGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3RfZGF0YSAuLi4gRVJS T1IKdGVzdF9kYXRhX2JlZm9yZV9vcGVuICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNo YW5uZWwuU3ViQ2hhbm5lbEFQSSkKdGVzdF9kYXRhX2JlZm9yZV9vcGVuIC4uLiBFUlJPUgp0ZXN0 X2xvY2FsX2Nsb3NlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hh bm5lbEFQSSkKdGVzdF9sb2NhbF9jbG9zZSAuLi4gRVJST1IKdGVzdF9sb2NhbF9kb3VibGVfY2xv c2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0 ZXN0X2xvY2FsX2RvdWJsZV9jbG9zZSAuLi4gRVJST1IKdGVzdF9vbmNlICh3b3JtaG9sZS50ZXN0 LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hhbm5lbEFQSSkKdGVzdF9vbmNlIC4uLiBvawp0 ZXN0X3Byb2R1Y2VyICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hh bm5lbEFQSSkKdGVzdF9wcm9kdWNlciAuLi4gRVJST1IKdGVzdF9yZW1vdGVfY2xvc2UgKHdvcm1o b2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X3JlbW90 ZV9jbG9zZSAuLi4gRVJST1IKdGVzdF93cml0ZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9z dWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3Rfd3JpdGUgLi4uIEVSUk9SCnRlc3Rfd3JpdGVf d2hlbl9jbG9zaW5nICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hh bm5lbEFQSSkKdGVzdF93cml0ZV93aGVuX2Nsb3NpbmcgLi4uIEVSUk9SCnRlc3RfYmFkX2hhbmRz aGFrZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9yZWNvcmQuUmVjb3JkKQp0ZXN0X2JhZF9o YW5kc2hha2UgLi4uIEVSUk9SCnRlc3RfYmFkX21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRl LnRlc3RfcmVjb3JkLlJlY29yZCkKdGVzdF9iYWRfbWVzc2FnZSAuLi4gRVJST1IKdGVzdF9nb29k ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRlc3RfZ29vZCAuLi4g RVJST1IKdGVzdF9nb29kMiAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9yZWNvcmQuUmVjb3Jk KQp0ZXN0X2dvb2QyIC4uLiBFUlJPUgp0ZXN0X3NlbmRfcmVjb3JkICh3b3JtaG9sZS50ZXN0LmRp bGF0ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRlc3Rfc2VuZF9yZWNvcmQgLi4uIEVSUk9SCnRlc3Rf YmFkX3Byb2xvZ3VlX2xlbmd0aCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9mcmFtZXIuRnJh bWVyKQp0ZXN0X2JhZF9wcm9sb2d1ZV9sZW5ndGggLi4uIEVSUk9SCnRlc3RfYmFkX3Byb2xvZ3Vl X25ld2xpbmUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZnJhbWVyLkZyYW1lcikKdGVzdF9i YWRfcHJvbG9ndWVfbmV3bGluZSAuLi4gRVJST1IKdGVzdF9iYWRfcmVsYXkgKHdvcm1ob2xlLnRl c3QuZGlsYXRlLnRlc3RfZnJhbWVyLkZyYW1lcikKdGVzdF9iYWRfcmVsYXkgLi4uIEVSUk9SCnRl c3RfZnJhbWUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZnJhbWVyLkZyYW1lcikKdGVzdF9m cmFtZSAuLi4gRVJST1IKdGVzdF9nb29kX3Byb2xvZ3VlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50 ZXN0X2ZyYW1lci5GcmFtZXIpCnRlc3RfZ29vZF9wcm9sb2d1ZSAuLi4gRVJST1IKdGVzdF9nb29k X3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2ZyYW1lci5GcmFtZXIpCnRlc3RfZ29v ZF9yZWxheSAuLi4gRVJST1IKdGVzdF9lbmRwb2ludHMgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRl c3RfZnVsbC5FbmRwb2ludHMpCnRlc3RfZW5kcG9pbnRzIC4uLiBza2lwcGVkICdub2lzZXByb3Rv Y29sIHVuYXZhaWxhYmxlJwp0ZXN0X2NvbnRyb2wgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rf ZnVsbC5GdWxsKQp0ZXN0X2NvbnRyb2wgLi4uIHNraXBwZWQgJ25vaXNlcHJvdG9jb2wgdW5hdmFp bGFibGUnCnRlc3RfZGF0YV93aGlsZV9vZmZsaW5lICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Z1bGwuUmVjb25uZWN0KQp0ZXN0X2RhdGFfd2hpbGVfb2ZmbGluZSAuLi4gc2tpcHBlZCAnbm9p c2Vwcm90b2NvbCB1bmF2YWlsYWJsZScKdGVzdF9yZWNvbm5lY3QgKHdvcm1ob2xlLnRlc3QuZGls YXRlLnRlc3RfZnVsbC5SZWNvbm5lY3QpCnRlc3RfcmVjb25uZWN0IC4uLiBza2lwcGVkICdub2lz ZXByb3RvY29sIHVuYXZhaWxhYmxlJwp0ZXN0X2NvbXBhcmFibGUgKHdvcm1ob2xlLnRlc3QudGVz dF9oaW50cy5IaW50cykKdGVzdF9jb21wYXJhYmxlIC4uLiBvawp0ZXN0X2Rlc2NyaWJlX2hpbnRf b2JqICh3b3JtaG9sZS50ZXN0LnRlc3RfaGludHMuSGludHMpCnRlc3RfZGVzY3JpYmVfaGludF9v YmogLi4uIG9rCnRlc3RfZW5jb2RlX2hpbnQgKHdvcm1ob2xlLnRlc3QudGVzdF9oaW50cy5IaW50 cykKdGVzdF9lbmNvZGVfaGludCAuLi4gb2sKdGVzdF9lbmRwb2ludF9mcm9tX2hpbnRfb2JqICh3 b3JtaG9sZS50ZXN0LnRlc3RfaGludHMuSGludHMpCnRlc3RfZW5kcG9pbnRfZnJvbV9oaW50X29i aiAuLi4gb2sKdGVzdF9wYXJzZV9oaW50ICh3b3JtaG9sZS50ZXN0LnRlc3RfaGludHMuSGludHMp CnRlc3RfcGFyc2VfaGludCAuLi4gb2sKdGVzdF9wYXJzZV9oaW50X2FyZ3YgKHdvcm1ob2xlLnRl c3QudGVzdF9oaW50cy5IaW50cykKdGVzdF9wYXJzZV9oaW50X2FyZ3YgLi4uIG9rCnRlc3RfcGFy c2VfdGNwX3YxX2hpbnQgKHdvcm1ob2xlLnRlc3QudGVzdF9oaW50cy5IaW50cykKdGVzdF9wYXJz ZV90Y3BfdjFfaGludCAuLi4gb2sKdGVzdF9rYXQgKHdvcm1ob2xlLnRlc3QudGVzdF9oa2RmLlRl c3RLQVQpIC4uLiBvawp0ZXN0X2Vycm9yICh3b3JtaG9sZS50ZXN0LnRlc3RfZXZlbnR1YWwuRXZl bnR1YWwpCnRlc3RfZXJyb3IgLi4uIFVuaGFuZGxlZCBFcnJvcgpUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvdGVzdC90ZXN0X2V2ZW50dWFsLnB5IiwgbGluZSA0NSwgaW4gdGVzdF9lcnJv cgogICAgZXEuZmx1c2hfc3luYygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2V2ZW50 dWFsLnB5IiwgbGluZSA0NCwgaW4gZmx1c2hfc3luYwogICAgc2VsZi5fY2xvY2suYWR2YW5jZSgw KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3Rhc2sucHkiLCBsaW5lIDgyNSwgaW4gYWR2YW5jZQogICAgY2FsbC5mdW5jKCpjYWxs LmFyZ3MsICoqY2FsbC5rdykKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS9ldmVudHVhbC5weSIsIGxpbmUgMzEsIGluIF90dXJuCiAg ICBmKCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL2RwanY0bHhidjhyYmQ0aWxw YnBtN3c4Yno2MG40YnFxLXB5dGhvbi1tb2NrLTMuMC41L2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9tb2NrL21vY2sucHkiLCBsaW5lIDEwOTIsIGluIF9fY2FsbF9fCiAgICByZXR1cm4gX21v Y2tfc2VsZi5fbW9ja19jYWxsKCphcmdzLCAqKmt3YXJncykKICBGaWxlICIvZ251L3N0b3JlL2Rw anY0bHhidjhyYmQ0aWxwYnBtN3c4Yno2MG40YnFxLXB5dGhvbi1tb2NrLTMuMC41L2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9tb2NrL21vY2sucHkiLCBsaW5lIDExNDMsIGluIF9tb2NrX2Nh bGwKICAgIHJhaXNlIGVmZmVjdAp3b3JtaG9sZS50ZXN0LnRlc3RfZXZlbnR1YWwuSW50ZW50aW9u YWxFcnJvcjogCgpvawp0ZXN0X2V2ZW50dWFsbHkgKHdvcm1ob2xlLnRlc3QudGVzdF9ldmVudHVh bC5FdmVudHVhbCkKdGVzdF9ldmVudHVhbGx5IC4uLiBvawp0ZXN0X2ZsdXNoICh3b3JtaG9sZS50 ZXN0LnRlc3RfZXZlbnR1YWwuRXZlbnR1YWwpCnRlc3RfZmx1c2ggLi4uIG9rCnRlc3RfYWxsb2Nh dGVfY29kZSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkRlbGVnYXRlZCkKdGVzdF9hbGxv Y2F0ZV9jb2RlIC4uLiBFUlJPUgp0ZXN0X2RlbGVnYXRlZCAod29ybWhvbGUudGVzdC50ZXN0X3dv cm1ob2xlLkRlbGVnYXRlZCkKdGVzdF9kZWxlZ2F0ZWQgLi4uIEVSUk9SCnRlc3RfaW5wdXRfY29k ZSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkRlbGVnYXRlZCkKdGVzdF9pbnB1dF9jb2Rl IC4uLiBFUlJPUgp0ZXN0X2FsbG9jYXRlX2FuZF9zZXRfY29kZSAod29ybWhvbGUudGVzdC50ZXN0 X3dvcm1ob2xlLkVycm9ycykKdGVzdF9hbGxvY2F0ZV9hbmRfc2V0X2NvZGUgLi4uIEVSUk9SCnRl c3RfZGVyaXZlX2tleV9lYXJseSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkVycm9ycykK dGVzdF9kZXJpdmVfa2V5X2Vhcmx5IC4uLiBFUlJPUgp0ZXN0X211bHRpcGxlX3NldF9jb2RlICh3 b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRXJyb3JzKQp0ZXN0X211bHRpcGxlX3NldF9jb2Rl IC4uLiBFUlJPUgp0ZXN0X2FsbF9kZWZlcnJlZHMgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9s ZS5Jbml0aWFsRmFpbHVyZSkKdGVzdF9hbGxfZGVmZXJyZWRzIC4uLiBFUlJPUgp0ZXN0X2JhZF9k bnMgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Jbml0aWFsRmFpbHVyZSkKdGVzdF9iYWRf ZG5zIC4uLiBFUlJPUgp0ZXN0X25vX2Nvbm5lY3Rpb24gKHdvcm1ob2xlLnRlc3QudGVzdF93b3Jt aG9sZS5Jbml0aWFsRmFpbHVyZSkKdGVzdF9ub19jb25uZWN0aW9uIC4uLiBFUlJPUgp0ZXN0X2Jh c2ljICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuUmVjb25uZWN0aW9uKQp0ZXN0X2Jhc2lj IC4uLiBFUlJPUgp0ZXN0X2Jhc2ljICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuVHJhY2Up CnRlc3RfYmFzaWMgLi4uIEVSUk9SCnRlc3RfZGVsZWdhdGVkICh3b3JtaG9sZS50ZXN0LnRlc3Rf d29ybWhvbGUuVHJhY2UpCnRlc3RfZGVsZWdhdGVkIC4uLiBFUlJPUgp0ZXN0X2FsbG9jYXRlX2Rl ZmF1bHQgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3RfYWxsb2Nh dGVfZGVmYXVsdCAuLi4gRVJST1IKdGVzdF9hbGxvY2F0ZV9tb3JlX3dvcmRzICh3b3JtaG9sZS50 ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2FsbG9jYXRlX21vcmVfd29yZHMgLi4u IEVSUk9SCnRlc3RfYmFzaWMgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMp CnRlc3RfYmFzaWMgLi4uIEVSUk9SCnRlc3RfY2xvc2VkICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29y bWhvbGUuV29ybWhvbGVzKQp0ZXN0X2Nsb3NlZCAuLi4gRVJST1IKdGVzdF9jbG9zZWRfaWRsZSAo d29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9jbG9zZWRfaWRsZSAu Li4gRVJST1IKdGVzdF9lYXJseSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xl cykKdGVzdF9lYXJseSAuLi4gRVJST1IKdGVzdF9maXhlZF9jb2RlICh3b3JtaG9sZS50ZXN0LnRl c3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2ZpeGVkX2NvZGUgLi4uIEVSUk9SCnRlc3RfZ2V0 X2NvZGVfZWFybHkgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3Rf Z2V0X2NvZGVfZWFybHkgLi4uIEVSUk9SCnRlc3RfZ2V0X2NvZGVfbGF0ZSAod29ybWhvbGUudGVz dC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9nZXRfY29kZV9sYXRlIC4uLiBFUlJPUgp0 ZXN0X2lucHV0X2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRl c3RfaW5wdXRfY29kZSAuLi4gRVJST1IKdGVzdF9pbnRlcmxlYXZlZCAod29ybWhvbGUudGVzdC50 ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9pbnRlcmxlYXZlZCAuLi4gRVJST1IKdGVzdF9t dWx0aXBsZV9tZXNzYWdlcyAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykK dGVzdF9tdWx0aXBsZV9tZXNzYWdlcyAuLi4gRVJST1IKdGVzdF9yeF9kZWR1cCAod29ybWhvbGUu dGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9yeF9kZWR1cCAuLi4gRVJST1IKdGVz dF9zYW1lX21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRl c3Rfc2FtZV9tZXNzYWdlIC4uLiBFUlJPUgp0ZXN0X3VuaWRpcmVjdGlvbmFsICh3b3JtaG9sZS50 ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3VuaWRpcmVjdGlvbmFsIC4uLiBFUlJP Ugp0ZXN0X3ZlcmlmaWVyICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0 ZXN0X3ZlcmlmaWVyIC4uLiBFUlJPUgp0ZXN0X3ZlcnNpb25zICh3b3JtaG9sZS50ZXN0LnRlc3Rf d29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3ZlcnNpb25zIC4uLiBFUlJPUgp0ZXN0X3dlbGNvbWUg KHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3Rfd2VsY29tZSAuLi4g RVJST1IKdGVzdF93cm9uZ19wYXNzd29yZCAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldv cm1ob2xlcykKdGVzdF93cm9uZ19wYXNzd29yZCAuLi4gRVJST1IKdGVzdF93cm9uZ19wYXNzd29y ZF93aXRoX2xlYWRpbmdfc3BhY2UgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9s ZXMpCnRlc3Rfd3JvbmdfcGFzc3dvcmRfd2l0aF9sZWFkaW5nX3NwYWNlIC4uLiBFUlJPUgp0ZXN0 X3dyb25nX3Bhc3N3b3JkX3dpdGhfbm9uX251bWVyaWNfbmFtZXBsYXRlICh3b3JtaG9sZS50ZXN0 LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfbm9uX251 bWVyaWNfbmFtZXBsYXRlIC4uLiBFUlJPUgp0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfc3BhY2Vz ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25nX3Bhc3N3 b3JkX3dpdGhfc3BhY2VzIC4uLiBFUlJPUgp0ZXN0X292ZXJyaWRlICh3b3JtaG9sZS50ZXN0LnRl c3RfY2xpLkFwcElEKQp0ZXN0X292ZXJyaWRlIC4uLiBFUlJPUgp0ZXN0X3RleHQgKHdvcm1ob2xl LnRlc3QudGVzdF9jbGkuQ2xlYW51cCkKdGVzdF90ZXh0IC4uLiBVbmhhbmRsZWQgZXJyb3IgaW4g RGVmZXJyZWQ6CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9jbGkucHkiLCBsaW5lIDExOTcsIGluIHRlc3Rf b3ZlcnJpZGUKICAgIHJlY2VpdmVfZCA9IGNtZF9yZWNlaXZlLnJlY2VpdmUoc2VsZi5jZmcpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfcmVjZWl2ZS5weSIsIGxpbmUgNDks IGluIHJlY2VpdmUKICAgIGQgPSByLmdvKCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTYxMywgaW4g dW53aW5kR2VuZXJhdG9yCiAgICByZXR1cm4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdl bikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUyOSwgaW4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJh Y2tzCiAgICBfaW5saW5lQ2FsbGJhY2tzKE5vbmUsIGcsIHN0YXR1cykKLS0tIDxleGNlcHRpb24g Y2F1Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2Fs bGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9jbGkvY21kX3JlY2VpdmUucHkiLCBsaW5lIDgxLCBpbiBnbwogICAgdyA9IGNyZWF0 ZSgKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwg aW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9s ZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19h dHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5 IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2Vy cygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9t YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4g X2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91 cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGlu IF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0 ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVy ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3RfdGV4dF93 cm9uZ19wYXNzd29yZCAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5DbGVhbnVwKQp0ZXN0X3RleHRf d3JvbmdfcGFzc3dvcmQgLi4uIEZBSUwKdGVzdF9vdGhlcl9lcnJvciAod29ybWhvbGUudGVzdC50 ZXN0X2NsaS5EaXNwYXRjaCkKdGVzdF9vdGhlcl9lcnJvciAuLi4gVW5oYW5kbGVkIGVycm9yIGlu IERlZmVycmVkOgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5IiwgbGluZSAxMTA1LCBpbiB0ZXN0 X3RleHQKICAgIHJlY2VpdmVfZCA9IGNtZF9yZWNlaXZlLnJlY2VpdmUoY2ZnKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3JlY2VpdmUucHkiLCBsaW5lIDQ5LCBpbiByZWNl aXZlCiAgICBkID0gci5nbygpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE2MTMsIGluIHVud2luZEdl bmVyYXRvcgogICAgcmV0dXJuIF9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNrcyhnZW4pCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv ZGVmZXIucHkiLCBsaW5lIDE1MjksIGluIF9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNrcwogICAg X2lubGluZUNhbGxiYWNrcyhOb25lLCBnLCBzdGF0dXMpCi0tLSA8ZXhjZXB0aW9uIGNhdWdodCBo ZXJlPiAtLS0KICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwog ICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv Y2xpL2NtZF9yZWNlaXZlLnB5IiwgbGluZSA4MSwgaW4gZ28KICAgIHcgPSBjcmVhdGUoCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0 ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lv bnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9z dF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUg NTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93 b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxm Ll9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhv bGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRf XwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAg ICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFm KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2Fw cGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICBy ZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpCmJ1aWx0aW5zLlR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgpVbmhhbmRsZWQgZXJyb3IgaW4gRGVmZXJyZWQ6CgpU cmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL3Rlc3QvdGVzdF9jbGkucHkiLCBsaW5lIDExMjQsIGluIHRlc3RfdGV4dF93cm9uZ19w YXNzd29yZAogICAgcmVjZWl2ZV9kID0gY21kX3JlY2VpdmUucmVjZWl2ZShyeF9jZmcpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfcmVjZWl2ZS5weSIsIGxpbmUgNDksIGlu IHJlY2VpdmUKICAgIGQgPSByLmdvKCkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTYxMywgaW4gdW53 aW5kR2VuZXJhdG9yCiAgICByZXR1cm4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tzKGdlbikK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC9kZWZlci5weSIsIGxpbmUgMTUyOSwgaW4gX2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJhY2tz CiAgICBfaW5saW5lQ2FsbGJhY2tzKE5vbmUsIGcsIHN0YXR1cykKLS0tIDxleGNlcHRpb24gY2F1 Z2h0IGhlcmU+IC0tLQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJh Y2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9jbGkvY21kX3JlY2VpdmUucHkiLCBsaW5lIDgxLCBpbiBnbwogICAgdyA9IGNyZWF0ZSgK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4g Y3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92 ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdv cm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRy c19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5Iiwg bGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2Vycygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1 aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmws IHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3 b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9f aW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0 X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJl cz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQK ICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKYnVpbHRpbnMuVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCkVSUk9SCkVSUk9SCnRlc3Rfc2VydmVyX2Nv bm5lY3Rpb25fZXJyb3IgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuRGlzcGF0Y2gpCnRlc3Rfc2Vy dmVyX2Nvbm5lY3Rpb25fZXJyb3IgLi4uIG9rCnRlc3Rfc3VjY2VzcyAod29ybWhvbGUudGVzdC50 ZXN0X2NsaS5EaXNwYXRjaCkKdGVzdF9zdWNjZXNzIC4uLiBvawp0ZXN0X3RpbWluZyAod29ybWhv bGUudGVzdC50ZXN0X2NsaS5EaXNwYXRjaCkKdGVzdF90aW1pbmcgLi4uIG9rCnRlc3RfdHJhbnNm ZXJfZXJyb3IgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuRGlzcGF0Y2gpCnRlc3RfdHJhbnNmZXJf ZXJyb3IgLi4uIG9rCnRlc3Rfd2VsY29tZV9lcnJvciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5E aXNwYXRjaCkKdGVzdF93ZWxjb21lX2Vycm9yIC4uLiBvawp0ZXN0X3dyb25nX3Bhc3N3b3JkX2Vy cm9yICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLkRpc3BhdGNoKQp0ZXN0X3dyb25nX3Bhc3N3b3Jk X2Vycm9yIC4uLiBvawp0ZXN0X2ZpbGVuYW1lcyAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5FeHRy YWN0RmlsZSkKdGVzdF9maWxlbmFtZXMgLi4uIG9rCnRlc3RfZGFzaF9kYXNoX2hlbHAgKHdvcm1o b2xlLnRlc3QudGVzdF9jbGkuSGVscCkKdGVzdF9kYXNoX2Rhc2hfaGVscCAuLi4gb2sKdGVzdF9o ZWxwICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLkhlbHApCnRlc3RfaGVscCAuLi4gb2sKdGVzdF9y ZWNlaXZlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Ob1NlcnZlcikKdGVzdF9yZWNlaXZlciAu Li4gRkFJTAp0ZXN0X3NlbmRlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Ob1NlcnZlcikKdGVz dF9zZW5kZXIgLi4uIEZBSUwKdGVzdF9zZW5kZXJfYWxsb2NhdGlvbiAod29ybWhvbGUudGVzdC50 ZXN0X2NsaS5Ob1NlcnZlcikKdGVzdF9zZW5kZXJfYWxsb2NhdGlvbiAuLi4gRkFJTAp0ZXN0X3Jl Y2VpdmVyICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk5vdFdlbGNvbWUpCnRlc3RfcmVjZWl2ZXIg Li4uIEZBSUwKdGVzdF9zZW5kZXIgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuTm90V2VsY29tZSkK dGVzdF9zZW5kZXIgLi4uIEZBSUwKdGVzdF9icm9rZW5fc3ltbGlua19pc19pZ25vcmVkICh3b3Jt aG9sZS50ZXN0LnRlc3RfY2xpLk9mZmVyRGF0YSkKdGVzdF9icm9rZW5fc3ltbGlua19pc19pZ25v cmVkIC4uLiBvawp0ZXN0X2Jyb2tlbl9zeW1saW5rX3JhaXNlc19lcnIgKHdvcm1ob2xlLnRlc3Qu dGVzdF9jbGkuT2ZmZXJEYXRhKQp0ZXN0X2Jyb2tlbl9zeW1saW5rX3JhaXNlc19lcnIgLi4uIG9r CnRlc3RfZGlyZWN0b3J5ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk9mZmVyRGF0YSkKdGVzdF9k aXJlY3RvcnkgLi4uIG9rCnRlc3RfZGlyZWN0b3J5X2FkZHNsYXNoICh3b3JtaG9sZS50ZXN0LnRl c3RfY2xpLk9mZmVyRGF0YSkKdGVzdF9kaXJlY3RvcnlfYWRkc2xhc2ggLi4uIG9rCnRlc3RfZmls ZSAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5PZmZlckRhdGEpCnRlc3RfZmlsZSAuLi4gb2sKL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHk6MjE3OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPF9pby5CdWZmZXJlZFJlYWRl ciBuYW1lPScvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC93b3JtaG9sZS50ZXN0LnRlc3RfY2xpL09mZmVyRGF0YS90ZXN0X2Zp bGUvazI1Y3gybHEvdGVtcC9teSBmaWxlJz4KICByZXN1bHQgPSBmKCphLCAqKmt3KQp0ZXN0X21p c3NpbmdfZmlsZSAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5PZmZlckRhdGEpCnRlc3RfbWlzc2lu Z19maWxlIC4uLiBvawp0ZXN0X3N5bWxpbmsgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuT2ZmZXJE YXRhKQp0ZXN0X3N5bWxpbmsgLi4uIG9rCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5OjIxNzogUmVzb3VyY2VXYXJuaW5nOiB1bmNs b3NlZCBmaWxlIDxfaW8uQnVmZmVyZWRSZWFkZXIgbmFtZT0nL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvd29ybWhvbGUudGVz dC50ZXN0X2NsaS9PZmZlckRhdGEvdGVzdF9zeW1saW5rL3RfNTZyOXFmL3RlbXAvQjIvQy50eHQn PgogIHJlc3VsdCA9IGYoKmEsICoqa3cpCnRlc3Rfc3ltbGlua19jb2xsYXBzZSAod29ybWhvbGUu dGVzdC50ZXN0X2NsaS5PZmZlckRhdGEpCnRlc3Rfc3ltbGlua19jb2xsYXBzZSAuLi4gb2sKL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHk6MjE3OiBSZXNvdXJjZVdhcm5pbmc6IHVuY2xvc2VkIGZpbGUgPF9pby5CdWZmZXJlZFJlYWRl ciBuYW1lPScvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC93b3JtaG9sZS50ZXN0LnRlc3RfY2xpL09mZmVyRGF0YS90ZXN0X3N5 bWxpbmtfY29sbGFwc2UvX2Zxc3VjZjMvdGVtcC9CMi9ELnR4dCc+CiAgcmVzdWx0ID0gZigqYSwg KiprdykKdGVzdF90ZXh0ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk9mZmVyRGF0YSkKdGVzdF90 ZXh0IC4uLiBvawp0ZXN0X3Vua25vd24gKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuT2ZmZXJEYXRh KQp0ZXN0X3Vua25vd24gLi4uIG9rCnRlc3RfZGlyZWN0b3J5ICh3b3JtaG9sZS50ZXN0LnRlc3Rf Y2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZGlyZWN0b3J5IC4uLiBza2lwcGVkICd1bmFibGUg dG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZGlyZWN0b3J5X2FkZHNsYXNoICh3b3JtaG9sZS50 ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZGlyZWN0b3J5X2FkZHNsYXNoIC4u LiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZGlyZWN0b3J5X292 ZXJyaWRlICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZGly ZWN0b3J5X292ZXJyaWRlIC4uLiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUn CnRlc3RfZGlyZWN0b3J5X292ZXJ3cml0ZSAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5QcmVnZW5l cmF0ZWRDb2RlKQp0ZXN0X2RpcmVjdG9yeV9vdmVyd3JpdGUgLi4uIHNraXBwZWQgJ3VuYWJsZSB0 byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF9kaXJlY3Rvcnlfb3ZlcndyaXRlX21vY2tfYWNjZXB0 ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZGlyZWN0b3J5 X292ZXJ3cml0ZV9tb2NrX2FjY2VwdCAuLi4gc2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTgg bG9jYWxlJwp0ZXN0X2VtcHR5X2ZpbGUgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJh dGVkQ29kZSkKdGVzdF9lbXB0eV9maWxlIC4uLiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYt OCBsb2NhbGUnCnRlc3RfZmFpbF9kaXJlY3Rvcnlfbm9jbG9iYmVyICh3b3JtaG9sZS50ZXN0LnRl c3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZmFpbF9kaXJlY3Rvcnlfbm9jbG9iYmVyIC4u LiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZmFpbF9kaXJlY3Rv cnlfdG9vYmlnICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3Rf ZmFpbF9kaXJlY3RvcnlfdG9vYmlnIC4uLiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBs b2NhbGUnCnRlc3RfZmFpbF9maWxlX25vY2xvYmJlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Q cmVnZW5lcmF0ZWRDb2RlKQp0ZXN0X2ZhaWxfZmlsZV9ub2Nsb2JiZXIgLi4uIHNraXBwZWQgJ3Vu YWJsZSB0byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF9mYWlsX2ZpbGVfdG9vYmlnICh3b3JtaG9s ZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZmFpbF9maWxlX3Rvb2JpZyAu Li4gc2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X2ZpbGUgKHdvcm1o b2xlLnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJhdGVkQ29kZSkKdGVzdF9maWxlIC4uLiBza2lwcGVk ICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZmlsZV9vdmVycmlkZSAod29ybWhv bGUudGVzdC50ZXN0X2NsaS5QcmVnZW5lcmF0ZWRDb2RlKQp0ZXN0X2ZpbGVfb3ZlcnJpZGUgLi4u IHNraXBwZWQgJ3VuYWJsZSB0byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF9maWxlX292ZXJ3cml0 ZSAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5QcmVnZW5lcmF0ZWRDb2RlKQp0ZXN0X2ZpbGVfb3Zl cndyaXRlIC4uLiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfZmls ZV9vdmVyd3JpdGVfbW9ja19hY2NlcHQgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJh dGVkQ29kZSkKdGVzdF9maWxlX292ZXJ3cml0ZV9tb2NrX2FjY2VwdCAuLi4gc2tpcHBlZCAndW5h YmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X2ZpbGVfdG9yICh3b3JtaG9sZS50ZXN0LnRl c3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfZmlsZV90b3IgLi4uIHNraXBwZWQgJ3VuYWJs ZSB0byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF9zbG93X3NlbmRlcl90ZXh0ICh3b3JtaG9sZS50 ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3Rfc2xvd19zZW5kZXJfdGV4dCAuLi4g c2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X3Nsb3dfdGV4dCAod29y bWhvbGUudGVzdC50ZXN0X2NsaS5QcmVnZW5lcmF0ZWRDb2RlKQp0ZXN0X3Nsb3dfdGV4dCAuLi4g c2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X3RleHQgKHdvcm1ob2xl LnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJhdGVkQ29kZSkKdGVzdF90ZXh0IC4uLiBza2lwcGVkICd1 bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfdGV4dF9zdWJwcm9jZXNzICh3b3JtaG9s ZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfdGV4dF9zdWJwcm9jZXNzIC4u LiBza2lwcGVkICd1bmFibGUgdG8gZmluZCBVVEYtOCBsb2NhbGUnCnRlc3RfdGV4dF90b3IgKHdv cm1ob2xlLnRlc3QudGVzdF9jbGkuUHJlZ2VuZXJhdGVkQ29kZSkKdGVzdF90ZXh0X3RvciAuLi4g c2tpcHBlZCAndW5hYmxlIHRvIGZpbmQgVVRGLTggbG9jYWxlJwp0ZXN0X3RleHRfdmVyaWZ5ICh3 b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlByZWdlbmVyYXRlZENvZGUpCnRlc3RfdGV4dF92ZXJpZnkg Li4uIHNraXBwZWQgJ3VuYWJsZSB0byBmaW5kIFVURi04IGxvY2FsZScKdGVzdF92ZXJzaW9uICh3 b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlNjcmlwdFZlcnNpb24pCnRlc3RfdmVyc2lvbiAuLi4gc2tp cHBlZCAidW5hYmxlIHRvIGZpbmQgJ3dvcm1ob2xlJyBpbiAkUEFUSCIKdGVzdF9lbXB0eSAod29y bWhvbGUudGVzdC50ZXN0X2NsaS5XZWxjb21lKQp0ZXN0X2VtcHR5IC4uLiBvawp0ZXN0X21vdGQg KHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuV2VsY29tZSkKdGVzdF9tb3RkIC4uLiBvawp0ZXN0X3Zl cnNpb25fY3VycmVudCAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5XZWxjb21lKQp0ZXN0X3ZlcnNp b25fY3VycmVudCAuLi4gb2sKdGVzdF92ZXJzaW9uX29sZCAod29ybWhvbGUudGVzdC50ZXN0X2Ns aS5XZWxjb21lKQp0ZXN0X3ZlcnNpb25fb2xkIC4uLiBvawp0ZXN0X3ZlcnNpb25fdW5yZWxlYXNl ZCAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5XZWxjb21lKQp0ZXN0X3ZlcnNpb25fdW5yZWxlYXNl ZCAuLi4gb2sKdGVzdF90ZXh0ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLlplcm9Nb2RlKQp0ZXN0 X3RleHQgLi4uIEVSUk9SCnRlc3RfZGVyaXZlX2Vycm9ycyAod29ybWhvbGUudGVzdC50ZXN0X2tl eXMuRGVyaXZlKQp0ZXN0X2Rlcml2ZV9lcnJvcnMgLi4uIG9rCnRlc3RfZGVyaXZlX2tleSAod29y bWhvbGUudGVzdC50ZXN0X2tleXMuRGVyaXZlKQp0ZXN0X2Rlcml2ZV9rZXkgLi4uIG9rCnRlc3Rf ZGVyaXZlX3BoYXNlX2tleSAod29ybWhvbGUudGVzdC50ZXN0X2tleXMuRGVyaXZlKQp0ZXN0X2Rl cml2ZV9waGFzZV9rZXkgLi4uIG9rCnRlc3RfZGVjcnlwdCAod29ybWhvbGUudGVzdC50ZXN0X2tl eXMuRW5jcnlwdCkKdGVzdF9kZWNyeXB0IC4uLiBvawp0ZXN0X2VuY3J5cHQgKHdvcm1ob2xlLnRl c3QudGVzdF9rZXlzLkVuY3J5cHQpCnRlc3RfZW5jcnlwdCAuLi4gb2sKdGVzdF9zZXQgKHdvcm1o b2xlLnRlc3QudGVzdF9vYnNlcnZlci5FbXB0eSkKdGVzdF9zZXQgLi4uIG9rCnRlc3RfZXJyb3Jf YWZ0ZXJfZmlyaW5nICh3b3JtaG9sZS50ZXN0LnRlc3Rfb2JzZXJ2ZXIuT25lU2hvdCkKdGVzdF9l cnJvcl9hZnRlcl9maXJpbmcgLi4uIG9rCnRlc3RfZXJyb3JfYmVmb3JlX2ZpcmluZyAod29ybWhv bGUudGVzdC50ZXN0X29ic2VydmVyLk9uZVNob3QpCnRlc3RfZXJyb3JfYmVmb3JlX2ZpcmluZyAu Li4gb2sKdGVzdF9maXJlICh3b3JtaG9sZS50ZXN0LnRlc3Rfb2JzZXJ2ZXIuT25lU2hvdCkKdGVz dF9maXJlIC4uLiBvawp0ZXN0X2ZpcmVfaWZfbm90X2ZpcmVkICh3b3JtaG9sZS50ZXN0LnRlc3Rf b2JzZXJ2ZXIuT25lU2hvdCkKdGVzdF9maXJlX2lmX25vdF9maXJlZCAuLi4gb2sKdGVzdF9lcnJv ciAod29ybWhvbGUudGVzdC50ZXN0X29ic2VydmVyLlNlcXVlbmNlKQp0ZXN0X2Vycm9yIC4uLiBv awp0ZXN0X2ZpcmUgKHdvcm1ob2xlLnRlc3QudGVzdF9vYnNlcnZlci5TZXF1ZW5jZSkKdGVzdF9m aXJlIC4uLiBvawp0ZXN0X2FsbG9jYXRlX2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGlu ZXMuQWxsb2NhdG9yKQp0ZXN0X2FsbG9jYXRlX2ZpcnN0IC4uLiBFUlJPUgp0ZXN0X2Nvbm5lY3Rf Zmlyc3QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5BbGxvY2F0b3IpCnRlc3RfY29ubmVj dF9maXJzdCAuLi4gRVJST1IKdGVzdF9ub19hbGxvY2F0aW9uICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuQWxsb2NhdG9yKQp0ZXN0X25vX2FsbG9jYXRpb24gLi4uIEVSUk9SCnRlc3RfYWxs b2NhdGVfY29kZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfYWxsb2Nh dGVfY29kZSAuLi4gb2sKdGVzdF9iYXNpYyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJv c3MpCnRlc3RfYmFzaWMgLi4uIEVSUk9SCnRlc3RfY2xvc2VfZWFybHkgKHdvcm1ob2xlLnRlc3Qu dGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X2Nsb3NlX2Vhcmx5IC4uLiBFUlJPUgp0ZXN0X2Vycm9y X3doaWxlX2Nsb3NpbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X2Vy cm9yX3doaWxlX2Nsb3NpbmcgLi4uIEVSUk9SCnRlc3RfaW5wdXRfY29kZSAod29ybWhvbGUudGVz dC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfaW5wdXRfY29kZSAuLi4gb2sKdGVzdF9pbnRlcm5h bF9lcnJvciAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfaW50ZXJuYWxf ZXJyb3IgLi4uIEVSUk9SCnRlc3RfbG9uZWx5ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu Qm9zcykKdGVzdF9sb25lbHkgLi4uIEVSUk9SCnRlc3Rfc2NhcnlfcGhhc2UgKHdvcm1ob2xlLnRl c3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X3NjYXJ5X3BoYXNlIC4uLiBFUlJPUgp0ZXN0X3Nj YXJ5X3ZlcnNpb24gKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X3NjYXJ5 X3ZlcnNpb24gLi4uIEVSUk9SCnRlc3Rfc2VydmVyX2Vycm9yICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuQm9zcykKdGVzdF9zZXJ2ZXJfZXJyb3IgLi4uIEVSUk9SCnRlc3Rfc2V0X2NvZGVf YmFkX2Zvcm1hdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3Rfc2V0X2Nv ZGVfYmFkX2Zvcm1hdCAuLi4gb2sKdGVzdF9zZXRfY29kZV90d2ljZSAod29ybWhvbGUudGVzdC50 ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3Rfc2V0X2NvZGVfdHdpY2UgLi4uIG9rCnRlc3RfdW5rbm93 bl9waGFzZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfdW5rbm93bl9w aGFzZSAuLi4gRVJST1IKdGVzdF91bndlbGNvbWUgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5l cy5Cb3NzKQp0ZXN0X3Vud2VsY29tZSAuLi4gRVJST1IKdGVzdF9hbGxvY2F0ZV9jb2RlICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuQ29kZSkKdGVzdF9hbGxvY2F0ZV9jb2RlIC4uLiBFUlJP Ugp0ZXN0X2lucHV0X2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Db2RlKQp0ZXN0 X2lucHV0X2NvZGUgLi4uIEVSUk9SCnRlc3Rfc2V0X2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5Db2RlKQp0ZXN0X3NldF9jb2RlIC4uLiBFUlJPUgp0ZXN0X3NldF9jb2RlX2ludmFs aWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Db2RlKQp0ZXN0X3NldF9jb2RlX2ludmFs aWQgLi4uIEVSUk9SCnRlc3RfYmFkX25hbWVwbGF0ZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hp bmVzLklucHV0KQp0ZXN0X2JhZF9uYW1lcGxhdGUgLi4uIEVSUk9SCnRlc3RfaWdub3JlX2NvbXBs ZXRpb24gKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5JbnB1dCkKdGVzdF9pZ25vcmVfY29t cGxldGlvbiAuLi4gRVJST1IKdGVzdF93aXRoX2NvbXBsZXRpb24gKHdvcm1ob2xlLnRlc3QudGVz dF9tYWNoaW5lcy5JbnB1dCkKdGVzdF93aXRoX2NvbXBsZXRpb24gLi4uIEVSUk9SCnRlc3RfYmFk ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuS2V5KQp0ZXN0X2JhZCAuLi4gRVJST1IKdGVz dF9nb29kICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuS2V5KQp0ZXN0X2dvb2QgLi4uIEVS Uk9SCnRlc3RfcmV2ZXJzZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5LZXkpCnRlc3Rf cmV2ZXJzZWQgLi4uIEVSUk9SCnRlc3RfY29ubmVjdF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0 X21hY2hpbmVzLkxpc3RlcikKdGVzdF9jb25uZWN0X2ZpcnN0IC4uLiBFUlJPUgp0ZXN0X2Nvbm5l Y3RfZmlyc3RfYXNrX3R3aWNlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTGlzdGVyKQp0 ZXN0X2Nvbm5lY3RfZmlyc3RfYXNrX3R3aWNlIC4uLiBFUlJPUgp0ZXN0X3JlY29ubmVjdCAod29y bWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkxpc3RlcikKdGVzdF9yZWNvbm5lY3QgLi4uIEVSUk9S CnRlc3RfcmVmcmVzaF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkxpc3RlcikK dGVzdF9yZWZyZXNoX2ZpcnN0IC4uLiBFUlJPUgp0ZXN0X3VucmVmcmVzaGVkICh3b3JtaG9sZS50 ZXN0LnRlc3RfbWFjaGluZXMuTGlzdGVyKQp0ZXN0X3VucmVmcmVzaGVkIC4uLiBFUlJPUgp0ZXN0 X2Nsb3NlX3doaWxlX2lkbGUgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5NYWlsYm94KQp0 ZXN0X2Nsb3NlX3doaWxlX2lkbGUgLi4uIEVSUk9SCnRlc3RfY2xvc2Vfd2hpbGVfaWRsZV9idXRf Y29ubmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTWFpbGJveCkKdGVzdF9jbG9z ZV93aGlsZV9pZGxlX2J1dF9jb25uZWN0ZWQgLi4uIEVSUk9SCnRlc3RfY2xvc2Vfd2hpbGVfbWFp bGJveF9kaXNjb25uZWN0ZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5NYWlsYm94KQp0 ZXN0X2Nsb3NlX3doaWxlX21haWxib3hfZGlzY29ubmVjdGVkIC4uLiBFUlJPUgp0ZXN0X2Nsb3Nl X3doaWxlX3JlY29ubmVjdGluZyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk1haWxib3gp CnRlc3RfY2xvc2Vfd2hpbGVfcmVjb25uZWN0aW5nIC4uLiBFUlJPUgp0ZXN0X2Nvbm5lY3RfZmly c3QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5NYWlsYm94KQp0ZXN0X2Nvbm5lY3RfZmly c3QgLi4uIEVSUk9SCnRlc3RfbWFpbGJveF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hp bmVzLk1haWxib3gpCnRlc3RfbWFpbGJveF9maXJzdCAuLi4gRVJST1IKdGVzdF9jbG9zZV93aGls ZV9jbGFpbWVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Ns b3NlX3doaWxlX2NsYWltZWQgLi4uIEVSUk9SCnRlc3RfY2xvc2Vfd2hpbGVfY2xhaW1lZF9idXRf ZGlzY29ubmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0 X2Nsb3NlX3doaWxlX2NsYWltZWRfYnV0X2Rpc2Nvbm5lY3RlZCAuLi4gRVJST1IKdGVzdF9jbG9z ZV93aGlsZV9jbGFpbWluZyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkK dGVzdF9jbG9zZV93aGlsZV9jbGFpbWluZyAuLi4gRVJST1IKdGVzdF9jbG9zZV93aGlsZV9jbGFp bWluZ19idXRfZGlzY29ubmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBs YXRlKQp0ZXN0X2Nsb3NlX3doaWxlX2NsYWltaW5nX2J1dF9kaXNjb25uZWN0ZWQgLi4uIEVSUk9S CnRlc3RfY2xvc2Vfd2hpbGVfZG9uZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVw bGF0ZSkKdGVzdF9jbG9zZV93aGlsZV9kb25lIC4uLiBFUlJPUgp0ZXN0X2Nsb3NlX3doaWxlX2Rv bmVfYnV0X2Rpc2Nvbm5lY3RlZCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0 ZSkKdGVzdF9jbG9zZV93aGlsZV9kb25lX2J1dF9kaXNjb25uZWN0ZWQgLi4uIEVSUk9SCnRlc3Rf Y2xvc2Vfd2hpbGVfaWRsZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkK dGVzdF9jbG9zZV93aGlsZV9pZGxlIC4uLiBFUlJPUgp0ZXN0X2Nsb3NlX3doaWxlX2lkbGVfY29u bmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Nsb3Nl X3doaWxlX2lkbGVfY29ubmVjdGVkIC4uLiBFUlJPUgp0ZXN0X2Nsb3NlX3doaWxlX3JlbGVhc2lu ZyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkKdGVzdF9jbG9zZV93aGls ZV9yZWxlYXNpbmcgLi4uIEVSUk9SCnRlc3RfY2xvc2Vfd2hpbGVfcmVsZWFzaW5nX2J1dF9kaXNj b25uZWN0ZWRhICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Ns b3NlX3doaWxlX3JlbGVhc2luZ19idXRfZGlzY29ubmVjdGVkYSAuLi4gRVJST1IKdGVzdF9jbG9z ZV93aGlsZV91bmNsYWltZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUp CnRlc3RfY2xvc2Vfd2hpbGVfdW5jbGFpbWVkIC4uLiBFUlJPUgp0ZXN0X2Nvbm5lY3RfZmlyc3Qg KHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY29ubmVjdF9maXJz dCAuLi4gRVJST1IKdGVzdF9yZWNvbm5lY3Rfd2hpbGVfY2xhaW1lZCAod29ybWhvbGUudGVzdC50 ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkKdGVzdF9yZWNvbm5lY3Rfd2hpbGVfY2xhaW1lZCAuLi4g RVJST1IKdGVzdF9yZWNvbm5lY3Rfd2hpbGVfY2xhaW1pbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfcmVjb25uZWN0X3doaWxlX2NsYWltaW5nIC4uLiBFUlJP Ugp0ZXN0X3JlY29ubmVjdF93aGlsZV9kb25lICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu TmFtZXBsYXRlKQp0ZXN0X3JlY29ubmVjdF93aGlsZV9kb25lIC4uLiBFUlJPUgp0ZXN0X3JlY29u bmVjdF93aGlsZV9yZWxlYXNpbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxh dGUpCnRlc3RfcmVjb25uZWN0X3doaWxlX3JlbGVhc2luZyAuLi4gRVJST1IKdGVzdF9zZXRfZmly c3QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3Rfc2V0X2ZpcnN0 IC4uLiBFUlJPUgp0ZXN0X3NldF9pbnZhbGlkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu TmFtZXBsYXRlKQp0ZXN0X3NldF9pbnZhbGlkIC4uLiBFUlJPUgp0ZXN0X2luX29yZGVyICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuT3JkZXIpCnRlc3RfaW5fb3JkZXIgLi4uIEVSUk9SCnRl c3Rfb3V0X29mX29yZGVyICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuT3JkZXIpCnRlc3Rf b3V0X29mX29yZGVyIC4uLiBFUlJPUgp0ZXN0X2Vhcmx5X2JhZCAod29ybWhvbGUudGVzdC50ZXN0 X21hY2hpbmVzLlJlY2VpdmUpCnRlc3RfZWFybHlfYmFkIC4uLiBFUlJPUgp0ZXN0X2dvb2QgKHdv cm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5SZWNlaXZlKQp0ZXN0X2dvb2QgLi4uIEVSUk9SCnRl c3RfbGF0ZV9iYWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5SZWNlaXZlKQp0ZXN0X2xh dGVfYmFkIC4uLiBFUlJPUgp0ZXN0X2Jhc2ljICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu UmVuZGV6dm91cykKdGVzdF9iYXNpYyAuLi4gRVJST1IKL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19y ZW5kZXp2b3VzLnB5OjExMTogRGVwcmVjYXRpb25XYXJuaW5nOiBQYXNzaW5nIEhvc3RuYW1lRW5k cG9pbnQgYSByZWFjdG9yIHRoYXQgZG9lcyBub3QgcHJvdmlkZSBJUmVhY3RvclBsdWdnYWJsZU5h bWVSZXNvbHZlciAoYnVpbHRpbnMub2JqZWN0KSB3YXMgZGVwcmVjYXRlZCBpbiBUd2lzdGVkIDE3 LjUuMDsgcGxlYXNlIHVzZSBhIHJlYWN0b3IgdGhhdCBwcm92aWRlcyBJUmVhY3RvclBsdWdnYWJs ZU5hbWVSZXNvbHZlciBpbnN0ZWFkCiAgcmV0dXJuIGVuZHBvaW50cy5Ib3N0bmFtZUVuZHBvaW50 KHNlbGYuX3JlYWN0b3IsIHAuaG9zdG5hbWUsIHBvcnQpCnRlc3RfZW5kcG9pbnRzICh3b3JtaG9s ZS50ZXN0LnRlc3RfbWFjaGluZXMuUmVuZGV6dm91cykKdGVzdF9lbmRwb2ludHMgLi4uIEVSUk9S Ci90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weToxMTE6IERlcHJlY2F0aW9uV2Fy bmluZzogUGFzc2luZyBIb3N0bmFtZUVuZHBvaW50IGEgcmVhY3RvciB0aGF0IGRvZXMgbm90IHBy b3ZpZGUgSVJlYWN0b3JQbHVnZ2FibGVOYW1lUmVzb2x2ZXIgKGJ1aWx0aW5zLm9iamVjdCkgd2Fz IGRlcHJlY2F0ZWQgaW4gVHdpc3RlZCAxNy41LjA7IHBsZWFzZSB1c2UgYSByZWFjdG9yIHRoYXQg cHJvdmlkZXMgSVJlYWN0b3JQbHVnZ2FibGVOYW1lUmVzb2x2ZXIgaW5zdGVhZAogIHJldHVybiBl bmRwb2ludHMuSG9zdG5hbWVFbmRwb2ludChzZWxmLl9yZWFjdG9yLCBwLmhvc3RuYW1lLCBwb3J0 KQp0ZXN0X3dlYnNvY2tldF9mYWlsdXJlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuUmVu ZGV6dm91cykKdGVzdF93ZWJzb2NrZXRfZmFpbHVyZSAuLi4gRVJST1IKL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19yZW5kZXp2b3VzLnB5OjExMTogRGVwcmVjYXRpb25XYXJuaW5nOiBQYXNzaW5nIEhv c3RuYW1lRW5kcG9pbnQgYSByZWFjdG9yIHRoYXQgZG9lcyBub3QgcHJvdmlkZSBJUmVhY3RvclBs dWdnYWJsZU5hbWVSZXNvbHZlciAoYnVpbHRpbnMub2JqZWN0KSB3YXMgZGVwcmVjYXRlZCBpbiBU d2lzdGVkIDE3LjUuMDsgcGxlYXNlIHVzZSBhIHJlYWN0b3IgdGhhdCBwcm92aWRlcyBJUmVhY3Rv clBsdWdnYWJsZU5hbWVSZXNvbHZlciBpbnN0ZWFkCiAgcmV0dXJuIGVuZHBvaW50cy5Ib3N0bmFt ZUVuZHBvaW50KHNlbGYuX3JlYWN0b3IsIHAuaG9zdG5hbWUsIHBvcnQpCnRlc3Rfd2Vic29ja2V0 X2xvc3QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5SZW5kZXp2b3VzKQp0ZXN0X3dlYnNv Y2tldF9sb3N0IC4uLiBFUlJPUgovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHk6 MTExOiBEZXByZWNhdGlvbldhcm5pbmc6IFBhc3NpbmcgSG9zdG5hbWVFbmRwb2ludCBhIHJlYWN0 b3IgdGhhdCBkb2VzIG5vdCBwcm92aWRlIElSZWFjdG9yUGx1Z2dhYmxlTmFtZVJlc29sdmVyIChi dWlsdGlucy5vYmplY3QpIHdhcyBkZXByZWNhdGVkIGluIFR3aXN0ZWQgMTcuNS4wOyBwbGVhc2Ug dXNlIGEgcmVhY3RvciB0aGF0IHByb3ZpZGVzIElSZWFjdG9yUGx1Z2dhYmxlTmFtZVJlc29sdmVy IGluc3RlYWQKICByZXR1cm4gZW5kcG9pbnRzLkhvc3RuYW1lRW5kcG9pbnQoc2VsZi5fcmVhY3Rv ciwgcC5ob3N0bmFtZSwgcG9ydCkKdGVzdF9rZXlfZmlyc3QgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5TZW5kKQp0ZXN0X2tleV9maXJzdCAuLi4gRVJST1IKdGVzdF9zZW5kX2ZpcnN0ICh3 b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuU2VuZCkKdGVzdF9zZW5kX2ZpcnN0IC4uLiBFUlJP Ugp0ZXN0X3Rlcm1pbmF0ZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLlRlcm1pbmF0b3Ip CnRlc3RfdGVybWluYXRlIC4uLiBFUlJPUgp0ZXN0X2Nob29zZV93b3JkcyAod29ybWhvbGUudGVz dC50ZXN0X3dvcmRsaXN0LkNob29zZSkKdGVzdF9jaG9vc2Vfd29yZHMgLi4uIG9rCnRlc3RfY29t cGxldGlvbnMgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JkbGlzdC5Db21wbGV0aW9ucykKdGVzdF9j b21wbGV0aW9ucyAuLi4gb2sKdGVzdF9mcmVlX3NwYWNlICh3b3JtaG9sZS50ZXN0LnRlc3RfdXRp bC5TcGFjZSkKdGVzdF9mcmVlX3NwYWNlIC4uLiBvawp0ZXN0X25vX3N0YXR2ZnMgKHdvcm1ob2xl LnRlc3QudGVzdF91dGlsLlNwYWNlKQp0ZXN0X25vX3N0YXR2ZnMgLi4uIG9rCnRlc3RfYnl0ZXNf dG9fZGljdCAod29ybWhvbGUudGVzdC50ZXN0X3V0aWwuVXRpbHMpCnRlc3RfYnl0ZXNfdG9fZGlj dCAuLi4gb2sKdGVzdF9ieXRlc190b19oZXhzdHIgKHdvcm1ob2xlLnRlc3QudGVzdF91dGlsLlV0 aWxzKQp0ZXN0X2J5dGVzX3RvX2hleHN0ciAuLi4gb2sKdGVzdF9kaWN0X3RvX2J5dGVzICh3b3Jt aG9sZS50ZXN0LnRlc3RfdXRpbC5VdGlscykKdGVzdF9kaWN0X3RvX2J5dGVzIC4uLiBvawp0ZXN0 X2hleHN0cl90b19ieXRlcyAod29ybWhvbGUudGVzdC50ZXN0X3V0aWwuVXRpbHMpCnRlc3RfaGV4 c3RyX3RvX2J5dGVzIC4uLiBvawp0ZXN0X3RvX2J5dGVzICh3b3JtaG9sZS50ZXN0LnRlc3RfdXRp bC5VdGlscykKdGVzdF90b19ieXRlcyAuLi4gb2sKdGVzdF9iYWRfaGludCAod29ybWhvbGUudGVz dC50ZXN0X3NzaC5GaW5kUHVia2V5KQp0ZXN0X2JhZF9oaW50IC4uLiBvawp0ZXN0X2ZpbmRfbXVs dGlwbGUgKHdvcm1ob2xlLnRlc3QudGVzdF9zc2guRmluZFB1YmtleSkKdGVzdF9maW5kX211bHRp cGxlIC4uLiBvawp0ZXN0X2ZpbmRfbm9uZSAod29ybWhvbGUudGVzdC50ZXN0X3NzaC5GaW5kUHVi a2V5KQp0ZXN0X2ZpbmRfbm9uZSAuLi4gb2sKdGVzdF9maW5kX29uZSAod29ybWhvbGUudGVzdC50 ZXN0X3NzaC5GaW5kUHVia2V5KQp0ZXN0X2ZpbmRfb25lIC4uLiBvawoKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpF UlJPUjogdGVzdF9tYWtlX2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF94ZmVyX3V0aWwuWGZlcikK dGVzdF9tYWtlX2NvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp0d2lzdGVkLmludGVybmV0LmRlZmVyLlRpbWVv dXRFcnJvcjogPHdvcm1ob2xlLnRlc3QudGVzdF94ZmVyX3V0aWwuWGZlciB0ZXN0TWV0aG9kPXRl c3RfbWFrZV9jb2RlPiAodGVzdF9tYWtlX2NvZGUpIHN0aWxsIHJ1bm5pbmcgYXQgMTIwLjAgc2Vj cwoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9vbl9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rf eGZlcl91dGlsLlhmZXIpCnRlc3Rfb25fY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X3hmZXJfdXRpbC5weSIsIGxpbmUgMzgsIGluIHRlc3Rfb25fY29kZQogICAgc2VuZF9yZXN1 bHQgPSB5aWVsZCBkMQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJh Y2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS94ZmVyX3V0aWwucHkiLCBsaW5lIDExNiwgaW4gc2VuZAogICAgd2ggPSB3b3JtaG9sZS5j cmVhdGUoYXBwaWQsIHJlbGF5X3VybCwgcmVhY3RvciwgdG9yPXRvcikKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0g Qm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50 X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJv c3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAg IHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBz ZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6 dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxm Ll9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVu ZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxm Ll9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24v aW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxm Ll9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxp bmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24o ZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJl dHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAq dmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNv ZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBi eXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfb25fY29kZSAod29ybWhvbGUudGVzdC50 ZXN0X3hmZXJfdXRpbC5YZmVyKQp0ZXN0X29uX2NvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sg KG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9p bmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3hmZXJfdXRpbC5weSIsIGxpbmUgNDYsIGluIHJlY2VpdmUKICAgIHdo ID0gd29ybWhvbGUuY3JlYXRlKGFwcGlkLCByZWxheV91cmwsIHJlYWN0b3IsIHRvcj10b3IpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNy ZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVy c2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3Jt aG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNf cG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxp bmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWls ZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBz ZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29y bWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2lu aXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9f CiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9 ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAg ICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhv ZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoq a3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4g Y29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1 bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNv ZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUK ICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJl ZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3hmZXIgKHdvcm1o b2xlLnRlc3QudGVzdF94ZmVyX3V0aWwuWGZlcikKdGVzdF94ZmVyCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJh Y2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L3Rlc3RfeGZlcl91dGlsLnB5IiwgbGluZSAxOCwgaW4gdGVzdF94ZmVyCiAgICBz ZW5kX3Jlc3VsdCA9IHlpZWxkIGQxCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxp bmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3hmZXJfdXRpbC5weSIsIGxpbmUgMTE2LCBpbiBzZW5kCiAgICB3aCA9IHdv cm1ob2xlLmNyZWF0ZShhcHBpZCwgcmVsYXlfdXJsLCByZWFjdG9yLCB0b3I9dG9yKQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUK ICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25z LCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUu X2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3Rf aW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUy LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29y a2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5f YXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xl Ll9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18K ICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAg ZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBs aWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0 dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2Fs LnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJn cyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlm dW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlv bgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hh bmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICBy ZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9saWJlZGl0ICh3b3JtaG9s ZS50ZXN0LnRlc3Rfcmxjb21wbGV0ZXIuU3luYykKdGVzdF9saWJlZGl0Ci0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAx NDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS94ZmVyX3V0aWwucHkiLCBsaW5lIDExNiwgaW4gc2Vu ZAogICAgd2ggPSB3b3JtaG9sZS5jcmVhdGUoYXBwaWQsIHJlbGF5X3VybCwgcmVhY3RvciwgdG9y PXRvcikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5 MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3Jt aG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYu X19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3Nz LnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29y a2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2Miwg aW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxm Ll91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQg aW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgs IGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9z dF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJG YWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25u ZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFp bHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlz IHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfbGli ZWRpdCAod29ybWhvbGUudGVzdC50ZXN0X3JsY29tcGxldGVyLlN5bmMpCnRlc3RfbGliZWRpdAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5k KHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUveGZlcl91dGlsLnB5IiwgbGlu ZSA0NiwgaW4gcmVjZWl2ZQogICAgd2ggPSB3b3JtaG9sZS5jcmVhdGUoYXBwaWQsIHJlbGF5X3Vy bCwgcmVhY3RvciwgdG9yPXRvcikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhv bGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91 cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0 dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19p bml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAg c2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3Nz LnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91 c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxh dHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVj dG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18o KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcs IGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5l Y3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDEx MjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0 ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAg ICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBp biBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29k ZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9y OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K RVJST1I6IHRlc3RfbGF0ZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuUmFj ZSkKdGVzdF9sYXRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdG9yLnB5IiwgbGluZSA0 MzQsIGluIHRlc3RfbGF0ZQogICAgYy5hZGRfY2FuZGlkYXRlKHAxKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X29uZV9mb2xsb3dlciAod29ybWhvbGUudGVz dC5kaWxhdGUudGVzdF9jb25uZWN0b3IuUmFjZSkKdGVzdF9vbmVfZm9sbG93ZXIKLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBs aW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICBy ZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQs IGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2sp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50 ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAog ICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVz dC9kaWxhdGUvdGVzdF9jb25uZWN0b3IucHkiLCBsaW5lIDQxMSwgaW4gdGVzdF9vbmVfZm9sbG93 ZXIKICAgIGMuYWRkX2NhbmRpZGF0ZShwMSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0 X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg NDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNv cHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpFUlJPUjogdGVzdF9vbmVfbGVhZGVyICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nv bm5lY3Rvci5SYWNlKQp0ZXN0X29uZV9sZWFkZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVE ZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFd LCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJh aXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBs aW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwg KiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25u ZWN0b3IucHkiLCBsaW5lIDM5MCwgaW4gdGVzdF9vbmVfbGVhZGVyCiAgICBjLmFkZF9jYW5kaWRh dGUocDEpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlz IHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfc3Rv cCAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuUmFjZSkKdGVzdF9zdG9wCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVy LnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoq a3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3Nl ZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxp bmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJh Y2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdG9yLnB5IiwgbGluZSA0NTYsIGluIHRlc3Rfc3Rv cAogICAgYy5hZGRfY2FuZGlkYXRlKHAxKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRf XwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0 MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29w eWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVF cnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CkVSUk9SOiB0ZXN0X2FkZF9yZWxheSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25u ZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9hZGRfcmVsYXkKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4g bWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19p bmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UK ICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0g ZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVz dF9jb25uZWN0b3IucHkiLCBsaW5lIDMzNywgaW4gdGVzdF9hZGRfcmVsYXkKICAgIGMuYWRkX3Jl bGF5KFtoaW50XSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9iYXNpYyAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3Rv cikKdGVzdF9iYXNpYwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1 bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhX YXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhv bi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndp dGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5X aXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rvci5weSIsIGxpbmUg MTc2LCBpbiB0ZXN0X2Jhc2ljCiAgICBjLmdvdF9oaW50cyhbaGludF0pCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxp bmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24o ZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJl dHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAq dmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNv ZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBi eXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfZW1wdHkgKHdvcm1ob2xlLnRlc3QuZGls YXRlLnRlc3RfY29ubmVjdG9yLlRlc3RDb25uZWN0b3IpCnRlc3RfZW1wdHkKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0b3IucHkiLCBsaW5lIDE2NCwgaW4gdGVzdF9lbXB0eQogICAgYy5z dG9wKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9yZWxh eV9kZWxheSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0b3IuVGVzdENvbm5lY3Rv cikKdGVzdF9yZWxheV9kZWxheQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rvci5weSIs IGxpbmUgMzA1LCBpbiB0ZXN0X3JlbGF5X2RlbGF5CiAgICBjLmdvdF9oaW50cyhbaGludDEsIGhp bnQyLCBoaW50M10pCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3Rfc3RhcnRfbGlzdGVuICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0 Q29ubmVjdG9yKQp0ZXN0X3N0YXJ0X2xpc3RlbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgNjU0LCBpbiBfcnVuQ2Fs bGJhY2tzCiAgICBjdXJyZW50LnJlc3VsdCA9IGNhbGxiYWNrKGN1cnJlbnQucmVzdWx0LCAqYXJn cywgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rv ci5weSIsIGxpbmUgMzA1LCBpbiBfbGlzdGVuaW5nCiAgICBzZWxmLmxpc3RlbmVyX3JlYWR5KGRp cmVjdF9oaW50cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9zdGFydF9zdG9wICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29u bmVjdG9yKQp0ZXN0X3N0YXJ0X3N0b3AKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJl ZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNf aW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4 Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0 bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIx NywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0b3Iu cHkiLCBsaW5lIDE1MywgaW4gdGVzdF9zdGFydF9zdG9wCiAgICBjLnN0b3AoKQogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHki LCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0 aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAg ICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2Vz KSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVy biBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5 cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3Rvcl9ub19tYW5hZ2VyICh3b3Jt aG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X3Rvcl9u b19tYW5hZ2VyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9 IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Nv bXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90 cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhX YXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdG9yLnB5IiwgbGluZSAzNTgs IGluIHRlc3RfdG9yX25vX21hbmFnZXIKICAgIGMuZ290X2hpbnRzKFtoaW50XSkKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF90b3Jfd2l0aF9tYW5hZ2VyICh3 b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rvci5UZXN0Q29ubmVjdG9yKQp0ZXN0X3Rv cl93aXRoX21hbmFnZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0b3IucHkiLCBsaW5l IDM2OCwgaW4gdGVzdF90b3Jfd2l0aF9tYW5hZ2VyCiAgICBjLmdvdF9oaW50cyhbaGludF0pCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYmFkX3Byb2xvZ3Vl ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9i YWRfcHJvbG9ndWUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5IiwgbGluZSAz OCwgaW4gdGVzdF9iYWRfcHJvbG9ndWUKICAgIGMubWFrZUNvbm5lY3Rpb24odCkKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9wcm90 b2NvbC5weSIsIGxpbmUgNTE0LCBpbiBtYWtlQ29ubmVjdGlvbgogICAgc2VsZi5jb25uZWN0aW9u TWFkZSgpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9jb25uZWN0aW9u LnB5IiwgbGluZSA1OTQsIGluIGNvbm5lY3Rpb25NYWRlCiAgICBzZWxmLl9yZWNvcmQuc2V0X3Jv bGVfbGVhZGVyKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9iYWRfcHJvbG9ndWUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25u ZWN0aW9uKQp0ZXN0X2JhZF9wcm9sb2d1ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9u L2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5NCwgaW4gY29ubmVjdGlvbk1hZGUKICAgIHNlbGYuX3Jl Y29yZC5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwog ICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwg aW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNv ZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJv cjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CkVSUk9SOiB0ZXN0X2ZvbGxvd2VyX2NvbWJpbmVkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9mb2xsb3dlcl9jb21iaW5lZAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJl cmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwg aW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAg ICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDI0OCwgaW4gdGVzdF9mb2xsb3dlcl9j b21iaW5lZAogICAgYy5tYWtlQ29ubmVjdGlvbih0KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3Byb3RvY29sLnB5IiwgbGluZSA1 MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBzZWxmLmNvbm5lY3Rpb25NYWRlKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5Niwg aW4gY29ubmVjdGlvbk1hZGUKICAgIHNlbGYuX3JlY29yZC5zZXRfcm9sZV9mb2xsb3dlcigpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfZm9sbG93ZXJfY29t YmluZWQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25uZWN0aW9uKQp0 ZXN0X2ZvbGxvd2VyX2NvbWJpbmVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29u bmVjdGlvbi5weSIsIGxpbmUgNTk2LCBpbiBjb25uZWN0aW9uTWFkZQogICAgc2VsZi5fcmVjb3Jk LnNldF9yb2xlX2ZvbGxvd2VyKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAg IGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGlu IGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2Rl KHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6 IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpF UlJPUjogdGVzdF9ub19yZWxheV9mb2xsb3dlciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9j b25uZWN0aW9uLkNvbm5lY3Rpb24pCnRlc3Rfbm9fcmVsYXlfZm9sbG93ZXIKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9k aWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5IiwgbGluZSAxODMsIGluIHRlc3Rfbm9fcmVsYXlfZm9s bG93ZXIKICAgIHJldHVybiBzZWxmLl90ZXN0X25vX3JlbGF5KEZPTExPV0VSKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkiLCBsaW5l IDY5LCBpbiBfdGVzdF9ub19yZWxheQogICAgYy5tYWtlQ29ubmVjdGlvbih0KQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3Byb3Rv Y29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBzZWxmLmNvbm5lY3Rpb25N YWRlKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24u cHkiLCBsaW5lIDU5NiwgaW4gY29ubmVjdGlvbk1hZGUKICAgIHNlbGYuX3JlY29yZC5zZXRfcm9s ZV9mb2xsb3dlcigpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3Rfbm9fcmVsYXlfZm9sbG93ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVjdGlv bi5Db25uZWN0aW9uKQp0ZXN0X25vX3JlbGF5X2ZvbGxvd2VyCi0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2Vi YWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIsIGxpbmUgNTk2LCBpbiBjb25uZWN0aW9uTWFkZQog ICAgc2VsZi5fcmVjb3JkLnNldF9yb2xlX2ZvbGxvd2VyKCkKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQs IGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0 ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1 bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFs dWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9ub19yZWxheV9sZWFkZXIgKHdvcm1ob2xlLnRlc3Qu ZGlsYXRlLnRlc3RfY29ubmVjdGlvbi5Db25uZWN0aW9uKQp0ZXN0X25vX3JlbGF5X2xlYWRlcgot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAq Kmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNz ZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBs aW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRy YWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDE4MCwgaW4gdGVzdF9u b19yZWxheV9sZWFkZXIKICAgIHJldHVybiBzZWxmLl90ZXN0X25vX3JlbGF5KExFQURFUikKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5 IiwgbGluZSA2OSwgaW4gX3Rlc3Rfbm9fcmVsYXkKICAgIGMubWFrZUNvbm5lY3Rpb24odCkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9wcm90b2NvbC5weSIsIGxpbmUgNTE0LCBpbiBtYWtlQ29ubmVjdGlvbgogICAgc2VsZi5jb25u ZWN0aW9uTWFkZSgpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9jb25u ZWN0aW9uLnB5IiwgbGluZSA1OTQsIGluIGNvbm5lY3Rpb25NYWRlCiAgICBzZWxmLl9yZWNvcmQu c2V0X3JvbGVfbGVhZGVyKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRl ZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRl Y29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRl bXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFu IGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJP UjogdGVzdF9ub19yZWxheV9sZWFkZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfY29ubmVj dGlvbi5Db25uZWN0aW9uKQp0ZXN0X25vX3JlbGF5X2xlYWRlcgotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5NCwgaW4gY29ubmVjdGlvbk1hZGUK ICAgIHNlbGYuX3JlY29yZC5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwg aW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRl ZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVu Y3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1 ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9yZWxheQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0 X2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDE4OCwgaW4gdGVzdF9yZWxheQogICAgYy5tYWtlQ29ubmVj dGlvbih0KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAg ICBzZWxmLmNvbm5lY3Rpb25NYWRlKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Rp bGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5MSwgaW4gY29ubmVjdGlvbk1hZGUKICAgIGZy YW1lci51c2VfcmVsYXkoc2VsZi5fcmVsYXlfaGFuZHNoYWtlKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIz NCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29y YXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4g ZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2 YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMp Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlbGF5ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50 ZXN0X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9yZWxheQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2RpbGF0aW9uL2Nvbm5lY3Rpb24ucHkiLCBsaW5lIDU5MSwgaW4gY29ubmVjdGlvbk1hZGUK ICAgIGZyYW1lci51c2VfcmVsYXkoc2VsZi5fcmVsYXlfaGFuZHNoYWtlKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBs aW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9u KGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICBy ZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwg KnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBj b2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUg Ynl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlbGF5X2JhZF9yZXNwb25zZSAod29y bWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25uZWN0aW9uLkNvbm5lY3Rpb24pCnRlc3RfcmVsYXlf YmFkX3Jlc3BvbnNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfY29ubmVjdGlvbi5weSIsIGxpbmUg MjI0LCBpbiB0ZXN0X3JlbGF5X2JhZF9yZXNwb25zZQogICAgYy5tYWtlQ29ubmVjdGlvbih0KQog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVy bmV0L3Byb3RvY29sLnB5IiwgbGluZSA1MTQsIGluIG1ha2VDb25uZWN0aW9uCiAgICBzZWxmLmNv bm5lY3Rpb25NYWRlKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL2Nv bm5lY3Rpb24ucHkiLCBsaW5lIDU5MSwgaW4gY29ubmVjdGlvbk1hZGUKICAgIGZyYW1lci51c2Vf cmVsYXkoc2VsZi5fcmVsYXlfaGFuZHNoYWtlKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X3JlbGF5X2JhZF9yZXNwb25zZSAod29ybWhvbGUudGVzdC5kaWxh dGUudGVzdF9jb25uZWN0aW9uLkNvbm5lY3Rpb24pCnRlc3RfcmVsYXlfYmFkX3Jlc3BvbnNlCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29ubmVjdGlvbi5weSIsIGxpbmUgNTkxLCBp biBjb25uZWN0aW9uTWFkZQogICAgZnJhbWVyLnVzZV9yZWxheShzZWxmLl9yZWxheV9oYW5kc2hh a2UpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJl cXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcmVsYXlf amlsdGVkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikK dGVzdF9yZWxheV9qaWx0ZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNh bGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAg cmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5X aXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1sy XSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9w eXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlv bi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4g cnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9jb25uZWN0aW9uLnB5Iiwg bGluZSAyMTEsIGluIHRlc3RfcmVsYXlfamlsdGVkCiAgICBjLm1ha2VDb25uZWN0aW9uKHQpCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvcHJvdG9jb2wucHkiLCBsaW5lIDUxNCwgaW4gbWFrZUNvbm5lY3Rpb24KICAgIHNlbGYuY29u bmVjdGlvbk1hZGUoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vY29u bmVjdGlvbi5weSIsIGxpbmUgNTkxLCBpbiBjb25uZWN0aW9uTWFkZQogICAgZnJhbWVyLnVzZV9y ZWxheShzZWxmLl9yZWxheV9oYW5kc2hha2UpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dl dF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihj b3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlw ZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KRVJST1I6IHRlc3RfcmVsYXlfamlsdGVkICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0 X2Nvbm5lY3Rpb24uQ29ubmVjdGlvbikKdGVzdF9yZWxheV9qaWx0ZWQKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpU cmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19kaWxhdGlvbi9jb25uZWN0aW9uLnB5IiwgbGluZSA1OTEsIGluIGNvbm5lY3Rpb25N YWRlCiAgICBmcmFtZXIudXNlX3JlbGF5KHNlbGYuX3JlbGF5X2hhbmRzaGFrZSkKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9kaXNqb2ludF92ZXJzaW9ucyAo d29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3REaWxhdG9yKQp0ZXN0X2Rpc2pv aW50X3ZlcnNpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfbWFuYWdlci5weSIsIGxpbmUgMTU0 LCBpbiB0ZXN0X2Rpc2pvaW50X3ZlcnNpb25zCiAgICBkaWwuZ290X3dvcm1ob2xlX3ZlcnNpb25z KHsiY2FuLWRpbGF0ZSI6IFstMV19KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGls YXRpb24vbWFuYWdlci5weSIsIGxpbmUgNjQxLCBpbiBnb3Rfd29ybWhvbGVfdmVyc2lvbnMKICAg IHNlbGYuX21hbmFnZXIuZ290X3dvcm1ob2xlX3ZlcnNpb25zKHRoZWlyX3dvcm1ob2xlX3ZlcnNp b25zKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vbWFuYWdlci5weSIs IGxpbmUgMTkzLCBpbiBnb3Rfd29ybWhvbGVfdmVyc2lvbnMKICAgIHNlbGYuc3RhcnQoKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAo Z290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3BlZXJfY2Fubm90X2Rp bGF0ZSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3REaWxhdG9yKQp0ZXN0 X3BlZXJfY2Fubm90X2RpbGF0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X21hbmFnZXIucHkiLCBs aW5lIDE0NCwgaW4gdGVzdF9wZWVyX2Nhbm5vdF9kaWxhdGUKICAgIGRpbC5nb3Rfd29ybWhvbGVf dmVyc2lvbnMoe30pICAjIG1pc3NpbmcgImNhbi1kaWxhdGUiCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19kaWxhdGlvbi9tYW5hZ2VyLnB5IiwgbGluZSA2NDEsIGluIGdvdF93b3JtaG9s ZV92ZXJzaW9ucwogICAgc2VsZi5fbWFuYWdlci5nb3Rfd29ybWhvbGVfdmVyc2lvbnModGhlaXJf d29ybWhvbGVfdmVyc2lvbnMpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlv bi9tYW5hZ2VyLnB5IiwgbGluZSAxOTMsIGluIGdvdF93b3JtaG9sZV92ZXJzaW9ucwogICAgc2Vs Zi5zdGFydCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1 dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IK ICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMy LCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5f X2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBp biBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rf Zm9sbG93ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikK dGVzdF9mb2xsb3dlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1 bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhX YXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhv bi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndp dGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5X aXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X21hbmFnZXIucHkiLCBsaW5lIDQ0 NCwgaW4gdGVzdF9mb2xsb3dlcgogICAgbS5nb3Rfd29ybWhvbGVfdmVyc2lvbnMoeyJjYW4tZGls YXRlIjogWyIxIl19KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vbWFu YWdlci5weSIsIGxpbmUgMTkzLCBpbiBnb3Rfd29ybWhvbGVfdmVyc2lvbnMKICAgIHNlbGYuc3Rh cnQoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2xlYWRl ciAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9tYW5hZ2VyLlRlc3RNYW5hZ2VyKQp0ZXN0X2xl YWRlcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCph cmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQu cHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2Vi YWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fybmlu Z3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X21hbmFnZXIucHkiLCBsaW5lIDI0NSwgaW4gdGVz dF9sZWFkZXIKICAgIG0uZ290X3dvcm1ob2xlX3ZlcnNpb25zKHsiY2FuLWRpbGF0ZSI6IFsiMSJd fSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL21hbmFnZXIucHkiLCBs aW5lIDE5MywgaW4gZ290X3dvcm1ob2xlX3ZlcnNpb25zCiAgICBzZWxmLnN0YXJ0KCkKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2Fs LnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJn cyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlm dW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlv bgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hh bmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICBy ZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9taXJyb3IgKHdvcm1ob2xl LnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0TWFuYWdlcikKdGVzdF9taXJyb3IKLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHki LCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAg ICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0 NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJh Y2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3Nl ZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC9kaWxhdGUvdGVzdF9tYW5hZ2VyLnB5IiwgbGluZSA1NDksIGluIHRlc3RfbWlycm9yCiAg ICBtLnN0YXJ0KCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF91bmtub3duX21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfbWFuYWdlci5UZXN0 TWFuYWdlcikKdGVzdF91bmtub3duX21lc3NhZ2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVE ZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFd LCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJh aXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBs aW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwg KiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9tYW5h Z2VyLnB5IiwgbGluZSA2MjEsIGluIHRlc3RfdW5rbm93bl9tZXNzYWdlCiAgICBtLnN0YXJ0KCkK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRo b2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAq Kmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJu IGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlm dW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBj b2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2Rl CiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWly ZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jcmVhdGUgKHdv cm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5IYWxmQ2xvc2VhYmxlKQp0ZXN0X2Ny ZWF0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCph cmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQu cHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2Vi YWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fybmlu Z3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDE1OCwgaW4g dGVzdF9jcmVhdGUKICAgIHNjLCBtLCBzY2lkLCBob3N0YWRkciwgcGVlcmFkZHIsIHAgPSBtYWtl X3NjKGhhbGZfY2xvc2VhYmxlPVRydWUpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNj Ll9zZXRfcHJvdG9jb2wocCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9u L3N1YmNoYW5uZWwucHkiLCBsaW5lIDI1MSwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25u ZWN0X3Byb3RvY29sX2hhbGYoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAg ZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4g ZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUo dGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjog YW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVS Uk9SOiB0ZXN0X2xvY2FsX2Nsb3NlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5u ZWwuSGFsZkNsb3NlYWJsZSkKdGVzdF9sb2NhbF9jbG9zZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0 X3N1YmNoYW5uZWwucHkiLCBsaW5lIDE2NSwgaW4gdGVzdF9sb2NhbF9jbG9zZQogICAgc2MsIG0s IHNjaWQsIGhvc3RhZGRyLCBwZWVyYWRkciwgcCA9IG1ha2Vfc2MoaGFsZl9jbG9zZWFibGU9VHJ1 ZSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFu bmVsLnB5IiwgbGluZSAyNCwgaW4gbWFrZV9zYwogICAgc2MuX3NldF9wcm90b2NvbChwKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fZGlsYXRpb24vc3ViY2hhbm5lbC5weSIsIGxpbmUg MjUxLCBpbiBfc2V0X3Byb3RvY29sCiAgICBzZWxmLmNvbm5lY3RfcHJvdG9jb2xfaGFsZigpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcmVtb3RlX2Nsb3Nl ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuSGFsZkNsb3NlYWJsZSkKdGVz dF9yZW1vdGVfY2xvc2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFubmVsLnB5IiwgbGlu ZSAyMTIsIGluIHRlc3RfcmVtb3RlX2Nsb3NlCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBl ZXJhZGRyLCBwID0gbWFrZV9zYyhoYWxmX2Nsb3NlYWJsZT1UcnVlKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDI0LCBp biBtYWtlX3NjCiAgICBzYy5fc2V0X3Byb3RvY29sKHApCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5IiwgbGluZSAyNTEsIGluIF9zZXRfcHJvdG9j b2wKICAgIHNlbGYuY29ubmVjdF9wcm90b2NvbF9oYWxmKCkKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQs IGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0 ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1 bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFs dWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV9iZWZvcmVfb3BlbiAod29ybWhvbGUudGVz dC5kaWxhdGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3RfY2xvc2VfYmVmb3Jl X29wZW4KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigq YXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0 LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNl YmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFubmVsLnB5IiwgbGluZSAxMjksIGlu IHRlc3RfY2xvc2VfYmVmb3JlX29wZW4KICAgIHNjLnJlbW90ZV9jbG9zZSgpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIs IGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJv c3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rp b24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAg IHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMp LCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJu IGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlw ZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY29uc3VtZXIgKHdvcm1ob2xlLnRl c3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X2NvbnN1bWVyCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVy LnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoq a3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3Nl ZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxp bmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJh Y2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMTQ5LCBpbiB0ZXN0X2Nv bnN1bWVyCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBlZXJhZGRyLCBwID0gbWFrZV9zYygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5l bC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNjLl9zZXRfcHJvdG9jb2wocCkKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwucHkiLCBsaW5lIDI1 NCwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25uZWN0X3Byb3RvY29sX2Z1bGwoKTsKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2Rp Y2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3 YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNv cHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5j dGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2Rl Y2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAg ICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQg KGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jcmVhdGUgKHdvcm1o b2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X2NyZWF0 ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdz LCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHki LCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNr KHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDM2LCBpbiB0ZXN0 X2NyZWF0ZQogICAgc2MsIG0sIHNjaWQsIGhvc3RhZGRyLCBwZWVyYWRkciwgcCA9IG1ha2Vfc2Mo KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5u ZWwucHkiLCBsaW5lIDI0LCBpbiBtYWtlX3NjCiAgICBzYy5fc2V0X3Byb3RvY29sKHApCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5IiwgbGluZSAy NTQsIGluIF9zZXRfcHJvdG9jb2wKICAgIHNlbGYuY29ubmVjdF9wcm90b2NvbF9mdWxsKCk7CiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfZGF0YSAod29ybWhv bGUudGVzdC5kaWxhdGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3RfZGF0YQot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAq Kmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNz ZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBs aW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRy YWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDEwNCwgaW4gdGVzdF9k YXRhCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBlZXJhZGRyLCBwID0gbWFrZV9zYygpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5w eSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNjLl9zZXRfcHJvdG9jb2wocCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwucHkiLCBsaW5lIDI1NCwg aW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25uZWN0X3Byb3RvY29sX2Z1bGwoKTsKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2Fs LnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJn cyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlm dW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlv bgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hh bmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICBy ZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9kYXRhX2JlZm9yZV9vcGVu ICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hhbm5lbEFQSSkKdGVz dF9kYXRhX2JlZm9yZV9vcGVuCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAg IHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9b Ml0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv cHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRp b24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGlu IHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIs IGxpbmUgMTE2LCBpbiB0ZXN0X2RhdGFfYmVmb3JlX29wZW4KICAgIHNjLnJlbW90ZV9kYXRhKGIi ZGF0YTEiKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQo KmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAg ICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwg aW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19j b2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4g Y29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBp cyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2xv Y2FsX2Nsb3NlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3N1YmNoYW5uZWwuU3ViQ2hhbm5l bEFQSSkKdGVzdF9sb2NhbF9jbG9zZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNl bnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVk CiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGlu IHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19p bmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhj ZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3 LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwu cHkiLCBsaW5lIDY0LCBpbiB0ZXN0X2xvY2FsX2Nsb3NlCiAgICBzYywgbSwgc2NpZCwgaG9zdGFk ZHIsIHBlZXJhZGRyLCBwID0gbWFrZV9zYygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAg IHNjLl9zZXRfcHJvdG9jb2wocCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0 aW9uL3N1YmNoYW5uZWwucHkiLCBsaW5lIDI1NCwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5j b25uZWN0X3Byb3RvY29sX2Z1bGwoKTsKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18K ICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAs IGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHlj b2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJy b3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpFUlJPUjogdGVzdF9sb2NhbF9kb3VibGVfY2xvc2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRl c3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X2xvY2FsX2RvdWJsZV9jbG9zZQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3 KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5l IDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNl YmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDc5LCBpbiB0ZXN0X2xvY2Fs X2RvdWJsZV9jbG9zZQogICAgc2MsIG0sIHNjaWQsIGhvc3RhZGRyLCBwZWVyYWRkciwgcCA9IG1h a2Vfc2MoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1 YmNoYW5uZWwucHkiLCBsaW5lIDI0LCBpbiBtYWtlX3NjCiAgICBzYy5fc2V0X3Byb3RvY29sKHAp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19kaWxhdGlvbi9zdWJjaGFubmVsLnB5Iiwg bGluZSAyNTQsIGluIF9zZXRfcHJvdG9jb2wKICAgIHNlbGYuY29ubmVjdF9wcm90b2NvbF9mdWxs KCk7CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJl cXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcHJvZHVj ZXIgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0 ZXN0X3Byb2R1Y2VyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUg MTM2LCBpbiB0ZXN0X3Byb2R1Y2VyCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBlZXJhZGRy LCBwID0gbWFrZV9zYygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRl L3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNjLl9zZXRfcHJv dG9jb2wocCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5u ZWwucHkiLCBsaW5lIDI1NCwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25uZWN0X3Byb3Rv Y29sX2Z1bGwoKTsKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9yZW1vdGVfY2xvc2UgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3ViY2hhbm5lbC5TdWJD aGFubmVsQVBJKQp0ZXN0X3JlbW90ZV9jbG9zZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURl ZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAy MjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0s IGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFp c2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxp bmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAq Kmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNo YW5uZWwucHkiLCBsaW5lIDk3LCBpbiB0ZXN0X3JlbW90ZV9jbG9zZQogICAgc2MsIG0sIHNjaWQs IGhvc3RhZGRyLCBwZWVyYWRkciwgcCA9IG1ha2Vfc2MoKQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3N1YmNoYW5uZWwucHkiLCBsaW5lIDI0LCBpbiBtYWtl X3NjCiAgICBzYy5fc2V0X3Byb3RvY29sKHApCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L19kaWxhdGlvbi9zdWJjaGFubmVsLnB5IiwgbGluZSAyNTQsIGluIF9zZXRfcHJvdG9jb2wKICAg IHNlbGYuY29ubmVjdF9wcm90b2NvbF9mdWxsKCk7CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBf X2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBs aW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJv c3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlv bihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykK VHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KRVJST1I6IHRlc3Rfd3JpdGUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3Rfc3Vi Y2hhbm5lbC5TdWJDaGFubmVsQVBJKQp0ZXN0X3dyaXRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNr IChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1h eWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBs aW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5m b1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAg ICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5 IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYo KmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5k cnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rf c3ViY2hhbm5lbC5weSIsIGxpbmUgNDMsIGluIHRlc3Rfd3JpdGUKICAgIHNjLCBtLCBzY2lkLCBo b3N0YWRkciwgcGVlcmFkZHIsIHAgPSBtYWtlX3NjKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9zdWJjaGFubmVsLnB5IiwgbGluZSAyNCwgaW4gbWFrZV9z YwogICAgc2MuX3NldF9wcm90b2NvbChwKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9f ZGlsYXRpb24vc3ViY2hhbm5lbC5weSIsIGxpbmUgMjU0LCBpbiBfc2V0X3Byb3RvY29sCiAgICBz ZWxmLmNvbm5lY3RfcHJvdG9jb2xfZnVsbCgpOwogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X3dyaXRlX3doZW5fY2xvc2luZyAod29ybWhvbGUudGVzdC5kaWxh dGUudGVzdF9zdWJjaGFubmVsLlN1YkNoYW5uZWxBUEkpCnRlc3Rfd3JpdGVfd2hlbl9jbG9zaW5n Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2Rl ZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3Ms ICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJl c3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIs IGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2so dHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgNTIsIGluIHRlc3Rf d3JpdGVfd2hlbl9jbG9zaW5nCiAgICBzYywgbSwgc2NpZCwgaG9zdGFkZHIsIHBlZXJhZGRyLCBw ID0gbWFrZV9zYygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rl c3Rfc3ViY2hhbm5lbC5weSIsIGxpbmUgMjQsIGluIG1ha2Vfc2MKICAgIHNjLl9zZXRfcHJvdG9j b2wocCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2RpbGF0aW9uL3N1YmNoYW5uZWwu cHkiLCBsaW5lIDI1NCwgaW4gX3NldF9wcm90b2NvbAogICAgc2VsZi5jb25uZWN0X3Byb3RvY29s X2Z1bGwoKTsKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0 KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgog ICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIs IGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9f Y29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGlu IGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIg aXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9i YWRfaGFuZHNoYWtlICh3b3JtaG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRl c3RfYmFkX2hhbmRzaGFrZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICBy ZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJd KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5 dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9u LndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBy dW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3JlY29yZC5weSIsIGxpbmUg ODYsIGluIHRlc3RfYmFkX2hhbmRzaGFrZQogICAgci5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwu cHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdz KToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1 bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9u CiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFu Z2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJl dHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290 IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2JhZF9tZXNzYWdlICh3b3Jt aG9sZS50ZXN0LmRpbGF0ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRlc3RfYmFkX21lc3NhZ2UKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIu cHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKipr dykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2Vk CiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGlu ZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFj ZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJl c3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvdGVzdC9kaWxhdGUvdGVzdF9yZWNvcmQucHkiLCBsaW5lIDExMSwgaW4gdGVzdF9iYWRfbWVz c2FnZQogICAgci5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X2dvb2QgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfcmVjb3Jk LlJlY29yZCkKdGVzdF9nb29kCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAg IHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9b Ml0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv cHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRp b24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGlu IHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvZGlsYXRlL3Rlc3RfcmVjb3JkLnB5IiwgbGlu ZSAxOTAsIGluIHRlc3RfZ29vZAogICAgciwgZiwgbiA9IG1ha2VfcmVjb3JkKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9yZWNvcmQucHkiLCBsaW5lIDE3 LCBpbiBtYWtlX3JlY29yZAogICAgci5zZXRfcm9sZV9sZWFkZXIoKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2dvb2QyICh3b3JtaG9sZS50ZXN0LmRpbGF0 ZS50ZXN0X3JlY29yZC5SZWNvcmQpCnRlc3RfZ29vZDIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sg KG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5 YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxp bmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZv WzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAg IHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHki LCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigq YSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9y ZWNvcmQucHkiLCBsaW5lIDM2LCBpbiB0ZXN0X2dvb2QyCiAgICByLnNldF9yb2xlX2xlYWRlcigp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVp cmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfc2VuZF9yZWNv cmQgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfcmVjb3JkLlJlY29yZCkKdGVzdF9zZW5kX3Jl Y29yZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCph cmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQu cHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2Vi YWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fybmlu Z3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X3JlY29yZC5weSIsIGxpbmUgMTMzLCBpbiB0ZXN0 X3NlbmRfcmVjb3JkCiAgICByLnNldF9yb2xlX2xlYWRlcigpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYmFkX3Byb2xvZ3VlX2xlbmd0aCAod29ybWhvbGUu dGVzdC5kaWxhdGUudGVzdF9mcmFtZXIuRnJhbWVyKQp0ZXN0X2JhZF9wcm9sb2d1ZV9sZW5ndGgK LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVm ZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywg KiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5Iiwg bGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0 cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3Vw cHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9mcmFtZXIucHkiLCBsaW5lIDIxLCBpbiB0ZXN0X2JhZF9w cm9sb2d1ZV9sZW5ndGgKICAgIGYuY29ubmVjdGlvbk1hZGUoKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIz NCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29y YXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4g ZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2 YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMp Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2JhZF9wcm9sb2d1ZV9uZXdsaW5lICh3b3JtaG9s ZS50ZXN0LmRpbGF0ZS50ZXN0X2ZyYW1lci5GcmFtZXIpCnRlc3RfYmFkX3Byb2xvZ3VlX25ld2xp bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv ZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJn cywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5 IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFj ayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdz U3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9mcmFtZXIucHkiLCBsaW5lIDM5LCBpbiB0ZXN0X2Jh ZF9wcm9sb2d1ZV9uZXdsaW5lCiAgICBmLmNvbm5lY3Rpb25NYWRlKCkKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGlu ZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihk ZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0 dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2 YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29k ZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5 dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9iYWRfcmVsYXkgKHdvcm1ob2xlLnRlc3Qu ZGlsYXRlLnRlc3RfZnJhbWVyLkZyYW1lcikKdGVzdF9iYWRfcmVsYXkKLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpU cmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0 bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1 MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGls cy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNl KGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJl cmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQv dXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVz dWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxh dGUvdGVzdF9mcmFtZXIucHkiLCBsaW5lIDcyLCBpbiB0ZXN0X2JhZF9yZWxheQogICAgZi51c2Vf cmVsYXkoYiJyZWxheSBoYW5kc2hha2VcbiIpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dl dF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihj b3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlw ZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KRVJST1I6IHRlc3RfZnJhbWUgKHdvcm1ob2xlLnRlc3QuZGlsYXRlLnRlc3RfZnJhbWVy LkZyYW1lcikKdGVzdF9mcmFtZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L2RpbGF0ZS90ZXN0X2ZyYW1lci5weSIsIGxp bmUgMTAxLCBpbiB0ZXN0X2ZyYW1lCiAgICBmLmNvbm5lY3Rpb25NYWRlKCkKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5Iiwg bGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlv bihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAg cmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyks ICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4g Y29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBl IGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9nb29kX3Byb2xvZ3VlICh3b3JtaG9s ZS50ZXN0LmRpbGF0ZS50ZXN0X2ZyYW1lci5GcmFtZXIpCnRlc3RfZ29vZF9wcm9sb2d1ZQotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3 KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5l IDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNl YmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L2RpbGF0ZS90ZXN0X2ZyYW1lci5weSIsIGxpbmUgNTcsIGluIHRlc3RfZ29vZF9wcm9s b2d1ZQogICAgZi5jb25uZWN0aW9uTWFkZSgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dl dF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihj b3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlw ZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KRVJST1I6IHRlc3RfZ29vZF9yZWxheSAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9m cmFtZXIuRnJhbWVyKQp0ZXN0X2dvb2RfcmVsYXkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVE ZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFd LCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJh aXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBs aW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwg KiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUvdGVzdF9mcmFt ZXIucHkiLCBsaW5lIDg3LCBpbiB0ZXN0X2dvb2RfcmVsYXkKICAgIGYudXNlX3JlbGF5KGIicmVs YXkgaGFuZHNoYWtlXG4iKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVm IGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVj b3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVt cGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4g aW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9S OiB0ZXN0X2FsbG9jYXRlX2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5EZWxlZ2F0 ZWQpCnRlc3RfYWxsb2NhdGVfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNl bnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxi YWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSAxMDQsIGluIHRlc3RfYWxsb2NhdGVf Y29kZQogICAgdzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0 b3IsIGRlbGVnYXRlPWRnKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5w eSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwg YXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMg Z2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRf XwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxm Ll9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHki LCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29u bmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJz IGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+ IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4g X19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVk KGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywg aW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChm YWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRl ZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRl Y29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRl bXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFu IGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJP UjogdGVzdF9kZWxlZ2F0ZWQgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5EZWxlZ2F0ZWQp CnRlc3RfZGVsZWdhdGVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAg ICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDcxLCBpbiB0ZXN0X2RlbGVnYXRlZAogICAgdzEg PSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IsIGRlbGVnYXRl PWRnKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkw LCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1o b2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGlu aXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5f X2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3Mu cHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3Jr ZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBp biBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYu X3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwg aW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0 X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZh aWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5l Y3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9pbnB1 dF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRGVsZWdhdGVkKQp0ZXN0X2lucHV0 X2NvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9 IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93 b3JtaG9sZS5weSIsIGxpbmUgMTEyLCBpbiB0ZXN0X2lucHV0X2NvZGUKICAgIHcxID0gd29ybWhv bGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yLCBkZWxlZ2F0ZT1kZykKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3Jl YXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJz aW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1o b2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19w b3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGlu ZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxk X3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNl bGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3Jt aG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5p dF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18K ICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1m YWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv YXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAg IHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsb2NhdGVfYW5k X3NldF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRXJyb3JzKQp0ZXN0X2FsbG9j YXRlX2FuZF9zZXRfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwog ICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA2MTMsIGluIHRlc3RfYWxsb2NhdGVfYW5kX3Nl dF9jb2RlCiAgICB3ID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFj dG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkw LCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1o b2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGlu aXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5f X2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3Mu cHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3Jr ZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBp biBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYu X3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwg aW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0 X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZh aWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5l Y3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9kZXJp dmVfa2V5X2Vhcmx5ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRXJyb3JzKQp0ZXN0X2Rl cml2ZV9rZXlfZWFybHkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAg IHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUgNTk2LCBpbiB0ZXN0X2Rlcml2ZV9rZXlfZWFybHkK ICAgIHcgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNy ZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVy c2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3Jt aG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNf cG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxp bmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWls ZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBz ZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29y bWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2lu aXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9f CiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9 ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAg ICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhv ZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoq a3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4g Y29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1 bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNv ZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUK ICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJl ZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X211bHRpcGxlX3Nl dF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuRXJyb3JzKQp0ZXN0X211bHRpcGxl X3NldF9jb2RlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1 bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3Rfd29ybWhvbGUucHkiLCBsaW5lIDYwNCwgaW4gdGVzdF9tdWx0aXBsZV9zZXRfY29kZQogICAg dyA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvcikKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRl CiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9u cywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xl Ll9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0 X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5k cnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1 MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dv cmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYu X2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9f CiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAg IGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBw bGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJl dHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNh bC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2Fy Z3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5 ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rp b24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNo YW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAg cmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChn b3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsX2RlZmVycmVkcyAo d29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkluaXRpYWxGYWlsdXJlKQp0ZXN0X2FsbF9kZWZl cnJlZHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9 IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93 b3JtaG9sZS5weSIsIGxpbmUgNzI0LCBpbiB0ZXN0X2FsbF9kZWZlcnJlZHMKICAgIHcgPSB3b3Jt aG9sZS5jcmVhdGUoQVBQSUQsICJ3czovLzEyNy4wLjAuMTolZC92MSIgJSBwb3J0LCByZWFjdG9y KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBp biBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xl X3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQg d29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0 dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHki LCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJz KCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBf YnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3Vy bCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4g X19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2lu aXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1 cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3Rl ZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19t ZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdz LCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0 dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNv cHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9f LCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHlj b2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVx dWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9iYWRfZG5z ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuSW5pdGlhbEZhaWx1cmUpCnRlc3RfYmFkX2Ru cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5z ZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1o b2xlLnB5IiwgbGluZSA2ODMsIGluIHRlc3RfYmFkX2RucwogICAgdyA9IHdvcm1ob2xlLmNyZWF0 ZSgKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwg aW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9s ZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19h dHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5 IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2Vy cygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9t YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4g X2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91 cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGlu IF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0 ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVy ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJl cXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfbm9fY29u bmVjdGlvbiAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLkluaXRpYWxGYWlsdXJlKQp0ZXN0 X25vX2Nvbm5lY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAg IHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUgNzA3LCBpbiB0ZXN0X25vX2Nvbm5lY3Rpb24KICAg IHcgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsICJ3czovLzEyNy4wLjAuMTolZC92MSIgJSBwb3J0 LCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxp bmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQs IHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJh dGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAg c2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv X2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWls ZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5l IDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9y KHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVy YXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGlu ZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRy c19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxB ZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hl bkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0 ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9iYXNpYyAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLlJlY29ubmVjdGlvbikKdGVzdF9i YXNpYwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0g Zy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dv cm1ob2xlLnB5IiwgbGluZSA2MjQsIGluIHRlc3RfYmFzaWMKICAgIHcxID0gd29ybWhvbGUuY3Jl YXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcs IHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lv biwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBs aW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bv c3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5f UkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3Np ZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJl bmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRy c19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3Vz LnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5l Y3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5l dC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hp bmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQs IGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0 ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1 bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFs dWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9iYXNpYyAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1o b2xlLlRyYWNlKQp0ZXN0X2Jhc2ljCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQK ICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4g cnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2lu Zm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNl cHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcs IGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUg NzQxLCBpbiB0ZXN0X2Jhc2ljCiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgIndzOi8v bG9jYWxob3N0OjEiLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3Jt aG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5 X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8 YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBf X2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAg ICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jv c3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2 b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAi PGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25u ZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRf XygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9t YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4 NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29u bmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUg MTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5l Y3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18K ICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAs IGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHlj b2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJy b3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpFUlJPUjogdGVzdF9kZWxlZ2F0ZWQgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5UcmFj ZSkKdGVzdF9kZWxlZ2F0ZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNh bGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAg cmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5X aXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1sy XSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9w eXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlv bi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4g cnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA3NjQs IGluIHRlc3RfZGVsZWdhdGVkCiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgIndzOi8v bG9jYWxob3N0OjEiLCByZWFjdG9yLCBkZWxlZ2F0ZT1kZykKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3 LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNp b24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+Iiwg bGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19w b3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYu X1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9z aWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5S ZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0 cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91 cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25u ZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJu ZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNo aW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsb2NhdGVfZGVmYXVsdCAod29ybWhvbGUudGVz dC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9hbGxvY2F0ZV9kZWZhdWx0Ci0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5Iiwg bGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBs aW5lIDEzMywgaW4gdGVzdF9hbGxvY2F0ZV9kZWZhdWx0CiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0 ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvcikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBz aWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24s CiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGlu ZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0 X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JD ID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRl LAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5k ZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNf cG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5w eSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0 b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQu cHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5l LndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBp biBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVk LAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5j dGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJv c3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVl cykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsb2NhdGVfbW9yZV93b3JkcyAod29ybWhvbGUudGVz dC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9hbGxvY2F0ZV9tb3JlX3dvcmRzCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5 IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVz dWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHki LCBsaW5lIDE0MywgaW4gdGVzdF9hbGxvY2F0ZV9tb3JlX3dvcmRzCiAgICB3MSA9IHdvcm1ob2xl LmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvcikKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9z cyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3Zl cnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+ IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRy c19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNl bGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxm Ll9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91 cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9f YXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6 dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9j b25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50 ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9t YWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUg MjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVj b3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVy biBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFs dWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUo KnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRl cykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYmFzaWMgKHdvcm1ob2xlLnRlc3QudGVzdF93 b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3RfYmFzaWMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxp bmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUgMTUyLCBpbiB0ZXN0X2Jh c2ljCiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3Rv cikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwg aW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9s ZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19h dHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5 IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2Vy cygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9t YWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4g X2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91 cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGlu IF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0 ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVy ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f bWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJn cywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJl dHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBj b3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVf XywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5 Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJl cXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vk ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2Nsb3NlZAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJl c3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5 IiwgbGluZSAzNDIsIGluIHRlc3RfY2xvc2VkCiAgICB3MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJ RCwgc2VsZi5yZWxheXVybCwgcmVhY3RvciwgX2V2ZW50dWFsX3F1ZXVlPWVxKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAg IGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBj bGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jv c3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5p dF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBp biBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2Vy cwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBw aWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9y ZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAg IHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9 IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNh dGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJu IHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZWRfaWRsZSAod29ybWhv bGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9jbG9zZWRfaWRsZQotLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIs IGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3Vs dCkKU3RvcEl0ZXJhdGlvbgoKRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24s IGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAg ICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDM2NiwgaW4gdGVzdF9jbG9zZWRfaWRsZQogICAg dzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0 ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lv bnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9z dF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUg NTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93 b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxm Ll9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhv bGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRf XwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAg ICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFm KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2Fw cGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICBy ZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAo Z290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Vhcmx5ICh3b3JtaG9s ZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2Vhcmx5Ci0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAx NDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDI3 MywgaW4gdGVzdF9lYXJseQogICAgdzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVs YXl1cmwsIHJlYWN0b3IpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5 IiwgbGluZSAyOTAsIGluIGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBh cHBpZCwgd29ybWhvbGVfdmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBn ZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9f CiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYm9zcy5weSIsIGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYu X2J1aWxkX3dvcmtlcnMoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIs IGxpbmUgNjIsIGluIF9idWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25u ZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMg Z2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4i LCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBf X2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQo ZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBp biB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZh aWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVm IGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVj b3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVt cGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4g aW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9S OiB0ZXN0X2ZpeGVkX2NvZGUgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMp CnRlc3RfZml4ZWRfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwog ICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSAyODYsIGluIHRlc3RfZml4ZWRfY29kZQogICAg dzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0 ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lv bnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9z dF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUg NTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93 b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxm Ll9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhv bGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRf XwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAg ICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFm KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2Fw cGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICBy ZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAo Z290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2dldF9jb2RlX2Vhcmx5 ICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X2dldF9jb2RlX2Vh cmx5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBn LnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29y bWhvbGUucHkiLCBsaW5lIDIwMywgaW4gdGVzdF9nZXRfY29kZV9lYXJseQogICAgdzEgPSB3b3Jt aG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IsIF9ldmVudHVhbF9xdWV1 ZT1lcSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5 MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3Jt aG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYu X19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3Nz LnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29y a2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2Miwg aW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxm Ll91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQg aW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgs IGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9z dF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJG YWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25u ZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFp bHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlz IHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfZ2V0 X2NvZGVfbGF0ZSAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9n ZXRfY29kZV9sYXRlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICBy ZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDIxNCwgaW4gdGVzdF9nZXRfY29kZV9sYXRlCiAgICB3 MSA9IHdvcm1ob2xlLmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvciwgX2V2ZW50 dWFsX3F1ZXVlPWVxKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIs IGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBw aWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2Vu ZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwog ICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9i dWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBs aW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVj dG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdl bmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+Iiwg bGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZh aWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4g d2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWls QWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBk b0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29y YXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBs YXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGlu dGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjog dGVzdF9pbnB1dF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0 ZXN0X2lucHV0X2NvZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAg IHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF93b3JtaG9sZS5weSIsIGxpbmUgMzAwLCBpbiB0ZXN0X2lucHV0X2NvZGUKICAgIHcx ID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUK ICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25z LCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUu X2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3Rf aW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUy LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29y a2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5f YXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xl Ll9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18K ICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAg ZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBs aWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0 dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2Fs LnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJn cyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlm dW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlv bgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hh bmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICBy ZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdv dCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9pbnRlcmxlYXZlZCAod29y bWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9pbnRlcmxlYXZlZAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJl c3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5 IiwgbGluZSAyNDMsIGluIHRlc3RfaW50ZXJsZWF2ZWQKICAgIHcxID0gd29ybWhvbGUuY3JlYXRl KEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNp ZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5l IDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3Rf aW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMg PSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUs CiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRl enZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19w b3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5 IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rv ci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5w eSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUu d2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9tdWx0aXBsZV9tZXNzYWdlcyAod29ybWhvbGUudGVzdC50 ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF9tdWx0aXBsZV9tZXNzYWdlcwotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGlu ZSAzMjIsIGluIHRlc3RfbXVsdGlwbGVfbWVzc2FnZXMKICAgIHcxID0gd29ybWhvbGUuY3JlYXRl KEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNp ZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5l IDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3Rf aW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMg PSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUs CiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRl enZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19w b3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5 IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rv ci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5w eSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUu d2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9yeF9kZWR1cCAod29ybWhvbGUudGVzdC50ZXN0X3dvcm1o b2xlLldvcm1ob2xlcykKdGVzdF9yeF9kZWR1cAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGlu ZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA1NjgsIGluIHRlc3Rfcnhf ZGVkdXAKICAgIHcxID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFj dG9yKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkw LCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1o b2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGlu aXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5f X2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3Mu cHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3Jr ZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBp biBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYu X3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwg aW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0 X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZh aWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5l Y3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWls dXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9zYW1l X21lc3NhZ2UgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9sZS5Xb3JtaG9sZXMpCnRlc3Rfc2Ft ZV9tZXNzYWdlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1 bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3Rfd29ybWhvbGUucHkiLCBsaW5lIDIyNywgaW4gdGVzdF9zYW1lX21lc3NhZ2UKICAgIHcxID0g d29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAg IGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBj bGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jv c3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5p dF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0w L21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBp biBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2Vy cwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBw aWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9y ZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAg IHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9 IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNh dGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJu IHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF91bmlkaXJlY3Rpb25hbCAod29y bWhvbGUudGVzdC50ZXN0X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF91bmlkaXJlY3Rpb25hbAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5k KHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xl LnB5IiwgbGluZSAyNjAsIGluIHRlc3RfdW5pZGlyZWN0aW9uYWwKICAgIHcxID0gd29ybWhvbGUu Y3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9yKQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3Nz KHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVy c2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4i LCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJz X3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2Vs Zi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYu X3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3Vz LlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19h dHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xl LTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2 b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nv bm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRl cm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21h Y2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAy MzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNv cmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJu IGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1 ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgq dmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVz KQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF92ZXJpZmllciAod29ybWhvbGUudGVzdC50ZXN0 X3dvcm1ob2xlLldvcm1ob2xlcykKdGVzdF92ZXJpZmllcgotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4g X2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA1MTMsIGluIHRl c3RfdmVyaWZpZXIKICAgIHcxID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJs LCByZWFjdG9yLCBfZXZlbnR1YWxfcXVldWU9ZXEpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lk ZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAog IEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUg MjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9 IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6 dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bv c3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHki LCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9y LndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5 IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53 aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4g X19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rp b24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMp ClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CkVSUk9SOiB0ZXN0X3ZlcnNpb25zICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhv bGUuV29ybWhvbGVzKQp0ZXN0X3ZlcnNpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0 IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5l Q2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBsaW5lIDU0MSwgaW4gdGVzdF92ZXJz aW9ucwogICAgdzEgPSB3b3JtaG9sZS5jcmVhdGUoCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lk ZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAog IEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUg MjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9p bml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9 IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6 dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bv c3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHki LCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9y LndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5 IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53 aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4g X19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rp b24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMp ClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CkVSUk9SOiB0ZXN0X3dlbGNvbWUgKHdvcm1ob2xlLnRlc3QudGVzdF93b3JtaG9s ZS5Xb3JtaG9sZXMpCnRlc3Rfd2VsY29tZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNh bGxiYWNrcwogICAgcmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVp bGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMv d29ybWhvbGUvdGVzdC90ZXN0X3dvcm1ob2xlLnB5IiwgbGluZSA0OTMsIGluIHRlc3Rfd2VsY29t ZQogICAgdzEgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3Ip CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGlu IGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVf dmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3 b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0 cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIs IGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMo KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9i dWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJs LCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQg d29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBf X2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5p dF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVy ZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVk CiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21l dGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3Ms ICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1 cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29w eWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18s IGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNv ZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1 aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3dyb25nX3Bh c3N3b3JkICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25n X3Bhc3N3b3JkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1 bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3Rfd29ybWhvbGUucHkiLCBsaW5lIDM4OSwgaW4gdGVzdF93cm9uZ19wYXNzd29yZAogICAgdzEg PSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVsYXl1cmwsIHJlYWN0b3IsIF9ldmVudHVh bF9xdWV1ZT1lcSkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBs aW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlk LCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVy YXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAg IHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVp bGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGlu ZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3Rv cihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5l cmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxp bmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0 cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWls QWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdo ZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFm dGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3Rfd3JvbmdfcGFzc3dvcmRfd2l0aF9sZWFkaW5nX3NwYWNlICh3b3JtaG9sZS50ZXN0LnRlc3Rf d29ybWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfbGVhZGluZ19zcGFj ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0ID0gZy5z ZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X3dvcm1o b2xlLnB5IiwgbGluZSA0NzMsIGluIHRlc3Rfd3JvbmdfcGFzc3dvcmRfd2l0aF9sZWFkaW5nX3Nw YWNlCiAgICB3ID0gd29ybWhvbGUuY3JlYXRlKEFQUElELCBzZWxmLnJlbGF5dXJsLCByZWFjdG9y KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBp biBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xl X3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQg d29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0 dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHki LCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJz KCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBf YnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3Vy bCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0 IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4g X19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2lu aXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1 cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3Rl ZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19t ZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdz LCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0 dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNv cHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9f LCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHlj b2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVx dWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF93cm9uZ19w YXNzd29yZF93aXRoX25vbl9udW1lcmljX25hbWVwbGF0ZSAod29ybWhvbGUudGVzdC50ZXN0X3dv cm1ob2xlLldvcm1ob2xlcykKdGVzdF93cm9uZ19wYXNzd29yZF93aXRoX25vbl9udW1lcmljX25h bWVwbGF0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAgcmVzdWx0 ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0 X3dvcm1ob2xlLnB5IiwgbGluZSA0ODMsIGluIHRlc3Rfd3JvbmdfcGFzc3dvcmRfd2l0aF9ub25f bnVtZXJpY19uYW1lcGxhdGUKICAgIHcgPSB3b3JtaG9sZS5jcmVhdGUoQVBQSUQsIHNlbGYucmVs YXl1cmwsIHJlYWN0b3IpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5 IiwgbGluZSAyOTAsIGluIGNyZWF0ZQogICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBh cHBpZCwgd29ybWhvbGVfdmVyc2lvbnMsIGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBn ZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9f CiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fYm9zcy5weSIsIGxpbmUgNTIsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYu X2J1aWxkX3dvcmtlcnMoKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIs IGxpbmUgNjIsIGluIF9idWlsZF93b3JrZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25u ZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9hcHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMg Z2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4i LCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBf X2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQo ZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBp biB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZh aWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVm IGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVj b3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5Iiwg bGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVt cGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4g aW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9S OiB0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfc3BhY2VzICh3b3JtaG9sZS50ZXN0LnRlc3Rfd29y bWhvbGUuV29ybWhvbGVzKQp0ZXN0X3dyb25nX3Bhc3N3b3JkX3dpdGhfc3BhY2VzCi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5Iiwg bGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rfd29ybWhvbGUucHkiLCBs aW5lIDQ2MywgaW4gdGVzdF93cm9uZ19wYXNzd29yZF93aXRoX3NwYWNlcwogICAgdyA9IHdvcm1o b2xlLmNyZWF0ZShBUFBJRCwgc2VsZi5yZWxheXVybCwgcmVhY3RvcikKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0g Qm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50 X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJv c3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAg IHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBz ZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6 dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxm Ll9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVu ZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxm Ll9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24v aW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxm Ll9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxp bmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24o ZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJl dHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAq dmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNv ZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBi eXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfb3ZlcnJpZGUgKHdvcm1ob2xlLnRlc3Qu dGVzdF9jbGkuQXBwSUQpCnRlc3Rfb3ZlcnJpZGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1v c3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1o b2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3Qv dGVzdF9jbGkucHkiLCBsaW5lIDExOTksIGluIHRlc3Rfb3ZlcnJpZGUKICAgIHlpZWxkIHNlbmRf ZAogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1 bHQgPSBnLnNlbmQocmVzdWx0KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21k X3NlbmQucHkiLCBsaW5lIDY2LCBpbiBnbwogICAgdyA9IGNyZWF0ZSgKICBGaWxlICIvdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0g Qm9zcyh3LCBzaWRlLCByZWxheV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50 X3ZlcnNpb24sCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJv c3M+IiwgbGluZSAyMywgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19h dHRyc19wb3N0X2luaXRfXwogICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAg IHNlbGYuX1JDID0gUmVuZGV6dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBz ZWxmLl9zaWRlLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6 dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxm Ll9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVu ZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxm Ll9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24v aW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxm Ll9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxp bmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3Bl Y3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24o ZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJl dHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAq dmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNv ZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBi eXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfdGV4dCAod29ybWhvbGUudGVzdC50ZXN0 X2NsaS5DbGVhbnVwKQp0ZXN0X3RleHQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVj ZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9j bGkucHkiLCBsaW5lIDExMDcsIGluIHRlc3RfdGV4dAogICAgeWllbGQgc2VuZF9kCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVm ZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2Vu ZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5k cnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfc2VuZC5weSIs IGxpbmUgNjYsIGluIGdvCiAgICB3ID0gY3JlYXRlKAogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBjcmVhdGUKICAgIGIgPSBCb3NzKHcsIHNp ZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3ZlcnNpb25zLCBjbGllbnRfdmVyc2lvbiwK ICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5l IDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3Rf aW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVpbGRfd29ya2VycwogICAgc2VsZi5fUkMg PSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwgc2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUs CiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRl enZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRyc19w b3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIu MC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5 IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rv ci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5w eSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hpbmUu d2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF90ZXh0ICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLkNsZWFu dXApCnRlc3RfdGV4dAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBs YXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTQxOCwgaW4gX2lubGluZUNhbGxiYWNrcwogICAg cmVzdWx0ID0gZy5zZW5kKHJlc3VsdCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xp L2NtZF9yZWNlaXZlLnB5IiwgbGluZSA4MSwgaW4gZ28KICAgIHcgPSBjcmVhdGUoCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5IiwgbGluZSAyOTAsIGluIGNyZWF0ZQog ICAgYiA9IEJvc3Modywgc2lkZSwgcmVsYXlfdXJsLCBhcHBpZCwgd29ybWhvbGVfdmVyc2lvbnMs IGNsaWVudF92ZXJzaW9uLAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5f Ym9zcy5Cb3NzPiIsIGxpbmUgMjMsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9p bml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNTIs IGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIHNlbGYuX2J1aWxkX3dvcmtlcnMoKQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgNjIsIGluIF9idWlsZF93b3Jr ZXJzCiAgICBzZWxmLl9SQyA9IFJlbmRlenZvdXNDb25uZWN0b3Ioc2VsZi5fdXJsLCBzZWxmLl9h cHBpZCwgc2VsZi5fc2lkZSwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUu X3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRfXwog ICAgc2VsZi5fX2F0dHJzX3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvX3JlbmRlenZvdXMucHkiLCBsaW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBk ID0gc2VsZi5fY29ubmVjdG9yLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxp Y2F0aW9uL2ludGVybmV0LnB5IiwgbGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICByZXR1 cm4gc2VsZi5fbWFjaGluZS53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwu cHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdz KToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1 bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9u CiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFu Z2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJl dHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290 IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X290aGVyX2Vycm9yICh3b3Jt aG9sZS50ZXN0LnRlc3RfY2xpLkRpc3BhdGNoKQp0ZXN0X290aGVyX2Vycm9yCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGlu ZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3JlY2VpdmUucHkiLCBsaW5lIDgx LCBpbiBnbwogICAgdyA9IGNyZWF0ZSgKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29y bWhvbGUucHkiLCBsaW5lIDI5MCwgaW4gY3JlYXRlCiAgICBiID0gQm9zcyh3LCBzaWRlLCByZWxh eV91cmwsIGFwcGlkLCB3b3JtaG9sZV92ZXJzaW9ucywgY2xpZW50X3ZlcnNpb24sCiAgRmlsZSAi PGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+IiwgbGluZSAyMywgaW4g X19pbml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSA1MiwgaW4gX19hdHRyc19wb3N0X2luaXRfXwog ICAgc2VsZi5fYnVpbGRfd29ya2VycygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19i b3NzLnB5IiwgbGluZSA2MiwgaW4gX2J1aWxkX3dvcmtlcnMKICAgIHNlbGYuX1JDID0gUmVuZGV6 dm91c0Nvbm5lY3RvcihzZWxmLl91cmwsIHNlbGYuX2FwcGlkLCBzZWxmLl9zaWRlLAogIEZpbGUg IjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29u bmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9fCiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0 X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUg ODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAgIGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNv bm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5l IDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJldHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25u ZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9f CiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQw LCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5 Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVy cm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KRVJST1I6IHRlc3Rfb3RoZXJfZXJyb3IgKHdvcm1ob2xlLnRlc3QudGVzdF9jbGkuRGlzcGF0 Y2gpCnRlc3Rfb3RoZXJfZXJyb3IKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFj a3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL2NsaS9jbWRfcmVjZWl2ZS5weSIsIGxpbmUgODEsIGluIGdvCiAgICB3ID0gY3JlYXRlKAog IEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weSIsIGxpbmUgMjkwLCBpbiBj cmVhdGUKICAgIGIgPSBCb3NzKHcsIHNpZGUsIHJlbGF5X3VybCwgYXBwaWQsIHdvcm1ob2xlX3Zl cnNpb25zLCBjbGllbnRfdmVyc2lvbiwKICBGaWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29y bWhvbGUuX2Jvc3MuQm9zcz4iLCBsaW5lIDIzLCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJz X3Bvc3RfaW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBs aW5lIDUyLCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBzZWxmLl9idWlsZF93b3JrZXJzKCkK ICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2lj LXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHkiLCBsaW5lIDYyLCBpbiBfYnVp bGRfd29ya2VycwogICAgc2VsZi5fUkMgPSBSZW5kZXp2b3VzQ29ubmVjdG9yKHNlbGYuX3VybCwg c2VsZi5fYXBwaWQsIHNlbGYuX3NpZGUsCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdv cm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19p bml0X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRf XwogICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVz PWZhZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAog ICAgcmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRo b2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAq Kmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJu IGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlm dW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBj b2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2Rl CiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWly ZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF90ZXh0ICh3b3Jt aG9sZS50ZXN0LnRlc3RfY2xpLlplcm9Nb2RlKQp0ZXN0X3RleHQKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1h Z2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1o b2xlL3Rlc3QvdGVzdF9jbGkucHkiLCBsaW5lIDk2OSwgaW4gdGVzdF90ZXh0CiAgICB5aWVsZCBn YXRoZXJSZXN1bHRzKFtzZW5kX2QsIHJlY2VpdmVfZF0sIFRydWUpCnR3aXN0ZWQuaW50ZXJuZXQu ZGVmZXIuRmlyc3RFcnJvcjogRmlyc3RFcnJvclsjMCwgW0ZhaWx1cmUgaW5zdGFuY2U6IFRyYWNl YmFjazogPGNsYXNzICdUeXBlRXJyb3InPjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5 cGUgYnl0ZXMpCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5Ojk2Njp0ZXN0 X3RleHQKL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfc2VuZC5weTozODpzZW5kCi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5 OjE2MTM6dW53aW5kR2VuZXJhdG9yCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5OjE1Mjk6X2NhbmNlbGxhYmxlSW5saW5lQ2FsbGJh Y2tzCi0tLSA8ZXhjZXB0aW9uIGNhdWdodCBoZXJlPiAtLS0KL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHk6MTQxODpfaW5saW5lQ2Fs bGJhY2tzCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3NlbmQucHk6NjY6Z28KL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3dvcm1ob2xlLnB5OjI5MDpjcmVhdGUKPGF0dHJzIGdlbmVyYXRlZCBp bml0IHdvcm1ob2xlLl9ib3NzLkJvc3M+OjIzOl9faW5pdF9fCi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS9fYm9zcy5weTo1MjpfX2F0dHJzX3Bvc3RfaW5pdF9fCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9f Ym9zcy5weTo2MjpfYnVpbGRfd29ya2Vycwo8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUu X3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3Rvcj46MTg6X19pbml0X18KL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19yZW5kZXp2b3VzLnB5Ojg3Ol9fYXR0cnNfcG9zdF9pbml0X18KL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBwbGljYXRpb24vaW50ZXJuZXQu cHk6MTEyNzp3aGVuQ29ubmVjdGVkCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX21ldGhvZGljYWwucHk6MjM0Ol9fZ2V0X18KL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weTo0MDpkZWNvcmF0b3IKL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eTozMjpjb3B5ZnVuY3Rpb24KL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weToyMDpjb3B5Y29kZQpdXQoKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJP UjogdGVzdF9hbGxvY2F0ZV9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkFsbG9j YXRvcikKdGVzdF9hbGxvY2F0ZV9maXJzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVy cmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEs IGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4 Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2Ug ZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBs aW5lIDYxMCwgaW4gdGVzdF9hbGxvY2F0ZV9maXJzdAogICAgYS5hbGxvY2F0ZSgyLCBGYWtlV29y ZExpc3QoKSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0 KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgog ICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIs IGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9f Y29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGlu IGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIg aXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9j b25uZWN0X2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuQWxsb2NhdG9yKQp0ZXN0 X2Nvbm5lY3RfZmlyc3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA2MjgsIGlu IHRlc3RfY29ubmVjdF9maXJzdAogICAgYS5jb25uZWN0ZWQoKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIz NCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29y YXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4g ZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVl cykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2 YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMp Cgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X25vX2FsbG9jYXRpb24gKHdvcm1ob2xlLnRlc3Qu dGVzdF9tYWNoaW5lcy5BbGxvY2F0b3IpCnRlc3Rfbm9fYWxsb2NhdGlvbgotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUg MTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0 aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFp c2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4g cmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICBy ZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3RfbWFjaGluZXMucHkiLCBsaW5lIDYwNSwgaW4gdGVzdF9ub19hbGxvY2F0aW9uCiAgICBhLmNv bm5lY3RlZCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1 dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IK ICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMy LCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5f X2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBp biBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rf YmFzaWMgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X2Jhc2ljCi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5 IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50 ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAog ICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUg NDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2Vi YWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNz ZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2lj LXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xl L3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTMzMywgaW4gdGVzdF9iYXNpYwogICAgYi5n b3RfY29kZSgiMS1jb2RlIikKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRl ZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRl Y29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRl bXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFu IGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJP UjogdGVzdF9jbG9zZV9lYXJseSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRl c3RfY2xvc2VfZWFybHkKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxNDMxLCBp biB0ZXN0X2Nsb3NlX2Vhcmx5CiAgICBiLmNsb3NlKCkgICMgYmVmb3JlIGV2ZW4gdy5nb3RfY29k ZQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21l dGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3Ms ICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1 cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29w eWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18s IGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNv ZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1 aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Vycm9yX3do aWxlX2Nsb3NpbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X2Vycm9y X3doaWxlX2Nsb3NpbmcKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxNDQ2LCBp biB0ZXN0X2Vycm9yX3doaWxlX2Nsb3NpbmcKICAgIGIuY2xvc2UoKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2ludGVybmFsX2Vycm9yICh3b3JtaG9sZS50 ZXN0LnRlc3RfbWFjaGluZXMuQm9zcykKdGVzdF9pbnRlcm5hbF9lcnJvcgotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t ClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUg MTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0 aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFp c2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4g cmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICBy ZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3RfbWFjaGluZXMucHkiLCBsaW5lIDE0MTksIGluIHRlc3RfaW50ZXJuYWxfZXJyb3IKICAgIGIu ZXJyb3IoVmFsdWVFcnJvcigiY2F0Y2ggbWUiKSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9f Z2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9u KGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpU eXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpFUlJPUjogdGVzdF9sb25lbHkgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5C b3NzKQp0ZXN0X2xvbmVseQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICBy ZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJd KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5 dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9u LndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBy dW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUg Ii90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhv bGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDEzODMs IGluIHRlc3RfbG9uZWx5CiAgICBiLmdvdF9jb2RlKCIxLWNvZGUiKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3NjYXJ5X3BoYXNlICh3b3JtaG9sZS50ZXN0 LnRlc3RfbWFjaGluZXMuQm9zcykKdGVzdF9zY2FyeV9waGFzZQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBp biBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5 IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhj X2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlz ZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGls cy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQg PSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFj aGluZXMucHkiLCBsaW5lIDE0ODAsIGluIHRlc3Rfc2NhcnlfcGhhc2UKICAgIGIuZ290X2NvZGUo IjEtY29kZSIpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1 dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IK ICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMy LCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5f X2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBp biBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rf c2NhcnlfdmVyc2lvbiAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3Rfc2Nh cnlfdmVyc2lvbgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQg PSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9j b21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhf dHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDE0NjEsIGluIHRl c3Rfc2NhcnlfdmVyc2lvbgogICAgYi5nb3RfY29kZSgiMS1jb2RlIikKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGlu ZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihk ZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0 dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2 YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29k ZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5 dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9zZXJ2ZXJfZXJyb3IgKHdvcm1ob2xlLnRl c3QudGVzdF9tYWNoaW5lcy5Cb3NzKQp0ZXN0X3NlcnZlcl9lcnJvcgotLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRy YWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRt aWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUx LCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxz LnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2Uo ZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVy YWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1 bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rf bWFjaGluZXMucHkiLCBsaW5lIDE0MDMsIGluIHRlc3Rfc2VydmVyX2Vycm9yCiAgICBiLnJ4X2Vy cm9yKCJzZXJ2ZXItZXJyb3ItbXNnIiwgb3JpZykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9f Z2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9u KGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpU eXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpFUlJPUjogdGVzdF91bmtub3duX3BoYXNlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFj aGluZXMuQm9zcykKdGVzdF91bmtub3duX3BoYXNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJl RGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5l IDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sx XSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICBy YWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEs ICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5w eSIsIGxpbmUgMTUwMSwgaW4gdGVzdF91bmtub3duX3BoYXNlCiAgICBiLmdvdF9jb2RlKCIxLWNv ZGUiKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3Vud2Vs Y29tZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkJvc3MpCnRlc3RfdW53ZWxjb21lCi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90 bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUt MC4xMi4wL3NyYy93b3JtaG9sZS9fYm9zcy5weSIsIGxpbmUgMjI5LCBpbiByeF93ZWxjb21lCiAg ICByYWlzZSBXZWxjb21lRXJyb3Iod2VsY29tZVsiZXJyb3IiXSkKd29ybWhvbGUuZXJyb3JzLldl bGNvbWVFcnJvcjogZ28gYXdheQoKRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRp b24sIGFub3RoZXIgZXhjZXB0aW9uIG9jY3VycmVkOgoKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAg IHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9b Ml0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv cHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRp b24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4 djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGlu IHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTM3 NCwgaW4gdGVzdF91bndlbGNvbWUKICAgIGIucnhfd2VsY29tZSh1bndlbGNvbWUpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5IiwgbGluZSAyMzgsIGluIHJ4X3dlbGNvbWUK ICAgIHNlbGYucnhfdW53ZWxjb21lKHdlbGNvbWVfZXJyb3IpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYWxsb2NhdGVfY29kZSAod29ybWhvbGUudGVzdC50 ZXN0X21hY2hpbmVzLkNvZGUpCnRlc3RfYWxsb2NhdGVfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBp biBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5 IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhj X2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlz ZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGls cy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQg PSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFj aGluZXMucHkiLCBsaW5lIDM2NSwgaW4gdGVzdF9hbGxvY2F0ZV9jb2RlCiAgICBjLmFsbG9jYXRl X2NvZGUoMiwgd2wpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3RfaW5wdXRfY29kZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkNvZGUpCnRlc3RfaW5w dXRfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBm KCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5n c1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21w YXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJh Y2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDM3NywgaW4gdGVzdF9p bnB1dF9jb2RlCiAgICBjLmlucHV0X2NvZGUoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X3NldF9jb2RlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu Q29kZSkKdGVzdF9zZXRfY29kZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDMz MywgaW4gdGVzdF9zZXRfY29kZQogICAgYy5zZXRfY29kZSh1IjEtY29kZSIpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL19jb2RlLnB5IiwgbGluZSA2OCwgaW4gc2V0X2NvZGUKICAgIHNl bGYuX3NldF9jb2RlKGNvZGUpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBk ZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBk ZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0 ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBs aW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBh biBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJS T1I6IHRlc3Rfc2V0X2NvZGVfaW52YWxpZCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkNv ZGUpCnRlc3Rfc2V0X2NvZGVfaW52YWxpZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCBy ZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVy cmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEs IGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4 Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2Ug ZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUg MjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3 KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBs aW5lIDM1NSwgaW4gdGVzdF9zZXRfY29kZV9pbnZhbGlkCiAgICBjLnNldF9jb2RlKHUiMS1jb2Rl IikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2NvZGUucHkiLCBsaW5lIDY4LCBpbiBz ZXRfY29kZQogICAgc2VsZi5fc2V0X2NvZGUoY29kZSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9iYWRfbmFtZXBsYXRlICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuSW5wdXQpCnRlc3RfYmFkX25hbWVwbGF0ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGlu ZXMucHkiLCBsaW5lIDQyMSwgaW4gdGVzdF9iYWRfbmFtZXBsYXRlCiAgICBoZWxwZXIgPSBpLnN0 YXJ0KCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCph cmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAg cmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGlu IGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29k ZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNv cHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMg cmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9pZ25v cmVfY29tcGxldGlvbiAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLklucHV0KQp0ZXN0X2ln bm9yZV9jb21wbGV0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJl c3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0p CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0 aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24u d2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgNDAzLCBp biB0ZXN0X2lnbm9yZV9jb21wbGV0aW9uCiAgICBoZWxwZXIgPSBpLnN0YXJ0KCkKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF93aXRoX2NvbXBsZXRpb24gKHdv cm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5JbnB1dCkKdGVzdF93aXRoX2NvbXBsZXRpb24KLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIu cHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKipr dykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2Vk CiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGlu ZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFj ZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJl c3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFn aWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhv bGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA0NDIsIGluIHRlc3Rfd2l0aF9jb21wbGV0 aW9uCiAgICBoZWxwZXIgPSBpLnN0YXJ0KCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0 X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg NDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNv cHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpFUlJPUjogdGVzdF9iYWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5LZXkpCnRl c3RfYmFkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgog IEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVy bmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYo KmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdz U3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBh dC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFj ZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMjc5LCBpbiB0ZXN0X2Jh ZAogICAgay5nb3RfY29kZShjb2RlKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwog ICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwg aW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNv ZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJv cjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CkVSUk9SOiB0ZXN0X2dvb2QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5LZXkpCnRlc3Rf Z29vZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCph cmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9n bnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQt MTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQu cHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2Vi YWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncy NHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2Fybmlu Z3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDI1OSwgaW4gdGVzdF9nb29k CiAgICBrLmdvdF9jb2RlKGNvZGUpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAg ICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBp biBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29k ZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9y OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K RVJST1I6IHRlc3RfcmV2ZXJzZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5LZXkpCnRl c3RfcmV2ZXJzZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAzMDQsIGluIHRl c3RfcmV2ZXJzZWQKICAgIGsuZ290X3Bha2UobXNnMikKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9jb25uZWN0X2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuTGlzdGVyKQp0ZXN0X2Nvbm5lY3RfZmlyc3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4g bWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19p bmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UK ICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0g ZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hp bmVzLnB5IiwgbGluZSA1MDUsIGluIHRlc3RfY29ubmVjdF9maXJzdAogICAgbC5jb25uZWN0ZWQo KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21l dGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3Ms ICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1 cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29w eWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18s IGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNv ZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1 aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nvbm5lY3Rf Zmlyc3RfYXNrX3R3aWNlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTGlzdGVyKQp0ZXN0 X2Nvbm5lY3RfZmlyc3RfYXNrX3R3aWNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJl Y2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJy ZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwg aW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhj X2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFu Z3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3 aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBl eGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAy MTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cp CiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxp bmUgNTMyLCBpbiB0ZXN0X2Nvbm5lY3RfZmlyc3RfYXNrX3R3aWNlCiAgICBsLmNvbm5lY3RlZCgp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0 aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywg Kiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVy biBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5 ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywg Y29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29k ZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVp cmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcmVjb25uZWN0 ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTGlzdGVyKQp0ZXN0X3JlY29ubmVjdAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3 KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5l IDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNl YmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDU1NiwgaW4gdGVzdF9yZWNvbm5lY3QKICAg IGwucmVmcmVzaCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3RfcmVmcmVzaF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLkxpc3RlcikKdGVz dF9yZWZyZXNoX2ZpcnN0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJl c3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0p CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0 aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24u d2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgNTcwLCBp biB0ZXN0X3JlZnJlc2hfZmlyc3QKICAgIGwucmVmcmVzaCgpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfdW5yZWZyZXNoZWQgKHdvcm1ob2xlLnRlc3QudGVz dF9tYWNoaW5lcy5MaXN0ZXIpCnRlc3RfdW5yZWZyZXNoZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJh Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4g bWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19p bmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UK ICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0g ZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hp bmVzLnB5IiwgbGluZSA1ODYsIGluIHRlc3RfdW5yZWZyZXNoZWQKICAgIGwuY29ubmVjdGVkKCkK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRo b2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAq Kmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJu IGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlm dW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBj b2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2Rl CiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWly ZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV93aGls ZV9pZGxlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTWFpbGJveCkKdGVzdF9jbG9zZV93 aGlsZV9pZGxlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3Qp OgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9 IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2Nv bXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90 cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhX YXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9n dWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEy LjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTE3OSwgaW4gdGVz dF9jbG9zZV93aGlsZV9pZGxlCiAgICBtLmNsb3NlKCJoYXBweSIpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUg MjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVj b3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVy biBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFs dWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUo KnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRl cykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfaWRsZV9idXRfY29ubmVj dGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTWFpbGJveCkKdGVzdF9jbG9zZV93aGls ZV9pZGxlX2J1dF9jb25uZWN0ZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAog ICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBy dW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5m b1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2Vw dGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywg aW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAx MTg0LCBpbiB0ZXN0X2Nsb3NlX3doaWxlX2lkbGVfYnV0X2Nvbm5lY3RlZAogICAgbS5jb25uZWN0 ZWQoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nsb3Nl X3doaWxlX21haWxib3hfZGlzY29ubmVjdGVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMu TWFpbGJveCkKdGVzdF9jbG9zZV93aGlsZV9tYWlsYm94X2Rpc2Nvbm5lY3RlZAotLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0 L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJl cmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwg aW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAg ICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3Jt aG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0 L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDExOTAsIGluIHRlc3RfY2xvc2Vfd2hpbGVfbWFpbGJv eF9kaXNjb25uZWN0ZWQKICAgIG0uZ290X21haWxib3goIm1ib3gxIikKICBGaWxlICIvZ251L3N0 b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGlu ZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihk ZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0 dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2 YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29k ZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5 dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV93aGlsZV9yZWNvbm5lY3Rpbmcg KHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5NYWlsYm94KQp0ZXN0X2Nsb3NlX3doaWxlX3Jl Y29ubmVjdGluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQg PSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9j b21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhf dHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDExOTYsIGluIHRl c3RfY2xvc2Vfd2hpbGVfcmVjb25uZWN0aW5nCiAgICBtLmdvdF9tYWlsYm94KCJtYm94MSIpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9k aWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKipr d2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBj b3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVu Y3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29k ZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQog ICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVk IChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY29ubmVjdF9maXJz dCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk1haWxib3gpCnRlc3RfY29ubmVjdF9maXJz dAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdz LCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHki LCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNr KHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDEwNzAsIGluIHRlc3RfY29ubmVj dF9maXJzdAogICAgbS5hZGRfbWVzc2FnZSgicGhhc2UxIiwgYiJtc2cxIikKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5Iiwg bGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlv bihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAg cmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyks ICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4g Y29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBl IGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9tYWlsYm94X2ZpcnN0ICh3b3JtaG9s ZS50ZXN0LnRlc3RfbWFjaGluZXMuTWFpbGJveCkKdGVzdF9tYWlsYm94X2ZpcnN0Ci0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5Iiwg bGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0 bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0 LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNr KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rl c3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTE2MywgaW4gdGVzdF9tYWlsYm94X2ZpcnN0CiAg ICBtLmFkZF9tZXNzYWdlKCJwaGFzZTEiLCBiIm1zZzEiKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwg aW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251 L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAu Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5 IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRl ZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19p bnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVu Y3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykK ICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1 ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nsb3NlX3doaWxlX2NsYWltZWQgKHdvcm1ob2xlLnRl c3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hpbGVfY2xhaW1lZAotLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5w eSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3 KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0 aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2lu dGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQK ICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5l IDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNl YmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVz c2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdp Yy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9s ZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDg3NiwgaW4gdGVzdF9jbG9zZV93aGlsZV9j bGFpbWVkCiAgICBuLnNldF9uYW1lcGxhdGUoIjEiKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fbmFtZXBsYXRlLnB5IiwgbGluZSA5NSwgaW4gc2V0X25hbWVwbGF0ZQogICAgc2VsZi5f c2V0X25hbWVwbGF0ZShuYW1lcGxhdGUpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9f CiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQw LCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5 Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVy cm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfY2xhaW1lZF9idXRfZGlzY29ubmVjdGVkICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Nsb3NlX3doaWxlX2NsYWlt ZWRfYnV0X2Rpc2Nvbm5lY3RlZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAg ICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZv WzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0 aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBp biBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDkw MSwgaW4gdGVzdF9jbG9zZV93aGlsZV9jbGFpbWVkX2J1dF9kaXNjb25uZWN0ZWQKICAgIG4uc2V0 X25hbWVwbGF0ZSgiMSIpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19uYW1lcGxhdGUu cHkiLCBsaW5lIDk1LCBpbiBzZXRfbmFtZXBsYXRlCiAgICBzZWxmLl9zZXRfbmFtZXBsYXRlKG5h bWVwbGF0ZSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0 KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgog ICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIs IGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9f Y29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcx cWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGlu IGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIg aXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9j bG9zZV93aGlsZV9jbGFpbWluZyAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0 ZSkKdGVzdF9jbG9zZV93aGlsZV9jbGFpbWluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9z dCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURl ZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAy MjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0s IGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFp c2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxp bmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAq Kmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAv bWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHki LCBsaW5lIDg0MiwgaW4gdGVzdF9jbG9zZV93aGlsZV9jbGFpbWluZwogICAgbi5zZXRfbmFtZXBs YXRlKCIxIikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX25hbWVwbGF0ZS5weSIsIGxp bmUgOTUsIGluIHNldF9uYW1lcGxhdGUKICAgIHNlbGYuX3NldF9uYW1lcGxhdGUobmFtZXBsYXRl KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21l dGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3Ms ICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1 cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29w eWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18s IGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNv ZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1 aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nsb3NlX3do aWxlX2NsYWltaW5nX2J1dF9kaXNjb25uZWN0ZWQgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5l cy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hpbGVfY2xhaW1pbmdfYnV0X2Rpc2Nvbm5lY3RlZAot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZl ci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAq Kmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNz ZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBs aW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRy YWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5n djJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdp c3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBw cmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDg1NywgaW4gdGVzdF9jbG9zZV93aGls ZV9jbGFpbWluZ19idXRfZGlzY29ubmVjdGVkCiAgICBuLnNldF9uYW1lcGxhdGUoIjEiKQogIEZp bGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fbmFtZXBsYXRlLnB5IiwgbGluZSA5NSwgaW4gc2V0 X25hbWVwbGF0ZQogICAgc2VsZi5fc2V0X25hbWVwbGF0ZShuYW1lcGxhdGUpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIs IGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgog IEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9u LWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJv c3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rp b24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRh dmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAg IHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMp LCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJu IGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlw ZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfZG9uZSAod29y bWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkKdGVzdF9jbG9zZV93aGlsZV9kb25l Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2Rl ZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3Ms ICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJl c3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9z dG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIs IGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2so dHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1 cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgOTg4LCBpbiB0ZXN0X2Nsb3NlX3do aWxlX2RvbmUKICAgIG4uY29ubmVjdGVkKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0 X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg NDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNv cHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpFUlJPUjogdGVzdF9jbG9zZV93aGlsZV9kb25lX2J1dF9kaXNjb25uZWN0ZWQgKHdvcm1o b2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hpbGVfZG9uZV9i dXRfZGlzY29ubmVjdGVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxs IGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJl c3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0p CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0 aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24u d2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1 bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAi L3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9s ZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTAxOCwg aW4gdGVzdF9jbG9zZV93aGlsZV9kb25lX2J1dF9kaXNjb25uZWN0ZWQKICAgIG4uY29ubmVjdGVk KCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5 dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19t ZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdz LCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0 dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWti c3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNv cHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9f LCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHlj b2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVx dWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV93 aGlsZV9pZGxlICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Ns b3NlX3doaWxlX2lkbGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVz dWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRo b24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53 aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVu V2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA4MjQsIGlu IHRlc3RfY2xvc2Vfd2hpbGVfaWRsZQogICAgbi5jbG9zZSgpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfaWRsZV9jb25uZWN0ZWQgKHdv cm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hpbGVfaWRs ZV9jb25uZWN0ZWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA4MjksIGluIHRl c3RfY2xvc2Vfd2hpbGVfaWRsZV9jb25uZWN0ZWQKICAgIG4uY29ubmVjdGVkKCkKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5 IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6 CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5j dGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgog ICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdl cyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1 cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0 eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9jbG9zZV93aGlsZV9yZWxlYXNp bmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxhdGUpCnRlc3RfY2xvc2Vfd2hp bGVfcmVsZWFzaW5nCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxh c3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2Mngt cHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVk L2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3Vs dCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6 eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdh cm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9u L2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0 aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldp dGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3Rt cC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0w LjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgOTI4LCBpbiB0 ZXN0X2Nsb3NlX3doaWxlX3JlbGVhc2luZwogICAgbi5zZXRfbmFtZXBsYXRlKCIxIikKICBGaWxl ICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1o b2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX25hbWVwbGF0ZS5weSIsIGxpbmUgOTUsIGluIHNldF9u YW1lcGxhdGUKICAgIHNlbGYuX3NldF9uYW1lcGxhdGUobmFtZXBsYXRlKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBs aW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9u KGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICBy ZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwg KnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBj b2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUg Ynl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2Nsb3NlX3doaWxlX3JlbGVhc2luZ19i dXRfZGlzY29ubmVjdGVkYSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVwbGF0ZSkK dGVzdF9jbG9zZV93aGlsZV9yZWxlYXNpbmdfYnV0X2Rpc2Nvbm5lY3RlZGEKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA5NTQsIGluIHRlc3RfY2xvc2Vfd2hpbGVfcmVsZWFzaW5n X2J1dF9kaXNjb25uZWN0ZWRhCiAgICBuLnNldF9uYW1lcGxhdGUoIjEiKQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS9fbmFtZXBsYXRlLnB5IiwgbGluZSA5NSwgaW4gc2V0X25hbWVwbGF0 ZQogICAgc2VsZi5fc2V0X25hbWVwbGF0ZShuYW1lcGxhdGUpCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0 LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3Jh dGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBm dW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVz KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0 aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2lu dHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZh bHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykK Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfY2xvc2Vfd2hpbGVfdW5jbGFpbWVkICh3b3JtaG9s ZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Nsb3NlX3doaWxlX3VuY2xhaW1l ZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9k ZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdz LCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2 MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lz dGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHBy ZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHki LCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNr KHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDgzNiwgaW4gdGVzdF9jbG9zZV93 aGlsZV91bmNsYWltZWQKICAgIG4uc2V0X25hbWVwbGF0ZSgiMSIpCiAgRmlsZSAiL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19uYW1lcGxhdGUucHkiLCBsaW5lIDk1LCBpbiBzZXRfbmFtZXBsYXRlCiAg ICBzZWxmLl9zZXRfbmFtZXBsYXRlKG5hbWVwbGF0ZSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZt NzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGlu IF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIs IGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQs CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0 aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVz KQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQpFUlJPUjogdGVzdF9jb25uZWN0X2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3Rf bWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0X2Nvbm5lY3RfZmlyc3QKLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwg aW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4 Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFp c2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRp bHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0 ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21h Y2hpbmVzLnB5IiwgbGluZSA3MDQsIGluIHRlc3RfY29ubmVjdF9maXJzdAogICAgbi5jb25uZWN0 ZWQoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlY29u bmVjdF93aGlsZV9jbGFpbWVkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRl KQp0ZXN0X3JlY29ubmVjdF93aGlsZV9jbGFpbWVkCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJl RGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5l IDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sx XSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICBy YWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEs ICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5w eSIsIGxpbmUgNzQ0LCBpbiB0ZXN0X3JlY29ubmVjdF93aGlsZV9jbGFpbWVkCiAgICBuLmNvbm5l Y3RlZCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgq YXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAg IHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBp biBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2Nv ZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBj b3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlz IHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfcmVj b25uZWN0X3doaWxlX2NsYWltaW5nICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBs YXRlKQp0ZXN0X3JlY29ubmVjdF93aGlsZV9jbGFpbWluZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGlu ZXMucHkiLCBsaW5lIDczMCwgaW4gdGVzdF9yZWNvbm5lY3Rfd2hpbGVfY2xhaW1pbmcKICAgIG4u Y29ubmVjdGVkKCkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lu cHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRv cgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg MzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRl Ll9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAs IGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVn ZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVz dF9yZWNvbm5lY3Rfd2hpbGVfZG9uZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLk5hbWVw bGF0ZSkKdGVzdF9yZWNvbm5lY3Rfd2hpbGVfZG9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAo bW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXli ZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGlu ZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9b MV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAg cmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCph LCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMu cHkiLCBsaW5lIDc5NCwgaW4gdGVzdF9yZWNvbm5lY3Rfd2hpbGVfZG9uZQogICAgbi5jb25uZWN0 ZWQoKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFy Z3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0 YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICBy ZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4g Y29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2Rl X18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29w eWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3JlY29u bmVjdF93aGlsZV9yZWxlYXNpbmcgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5OYW1lcGxh dGUpCnRlc3RfcmVjb25uZWN0X3doaWxlX3JlbGVhc2luZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGlu ZXMucHkiLCBsaW5lIDc2NywgaW4gdGVzdF9yZWNvbm5lY3Rfd2hpbGVfcmVsZWFzaW5nCiAgICBu LmNvbm5lY3RlZCgpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2 anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv YXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9J bnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0 b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0 ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIw LCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRl Z2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRl c3Rfc2V0X2ZpcnN0ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuTmFtZXBsYXRlKQp0ZXN0 X3NldF9maXJzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQg PSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9j b21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhf dHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDY3OSwgaW4gdGVz dF9zZXRfZmlyc3QKICAgIG4uc2V0X25hbWVwbGF0ZSgiMSIpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19uYW1lcGxhdGUucHkiLCBsaW5lIDk1LCBpbiBzZXRfbmFtZXBsYXRlCiAgICBz ZWxmLl9zZXRfbmFtZXBsYXRlKG5hbWVwbGF0ZSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9f Z2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxp bmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAg RmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24t YXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9z cGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9u KGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpU eXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQpFUlJPUjogdGVzdF9zZXRfaW52YWxpZCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hp bmVzLk5hbWVwbGF0ZSkKdGVzdF9zZXRfaW52YWxpZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAo bW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXli ZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGlu ZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9b MV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAg cmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIs IGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCph LCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2 LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMu cHkiLCBsaW5lIDY3MSwgaW4gdGVzdF9zZXRfaW52YWxpZAogICAgbi5zZXRfbmFtZXBsYXRlKCIx IikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX25hbWVwbGF0ZS5weSIsIGxpbmUgOTUs IGluIHNldF9uYW1lcGxhdGUKICAgIHNlbGYuX3NldF9uYW1lcGxhdGUobmFtZXBsYXRlKQogIEZp bGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1 dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGlj YWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dh cmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29w eWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0 aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVj aGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAg IHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAo Z290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X2luX29yZGVyICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuT3JkZXIpCnRlc3RfaW5fb3JkZXIKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxMjIsIGluIHRlc3RfaW5fb3JkZXIKICAgIG8uZ290X21l c3NhZ2UodSJzaWRlIiwgdSJwYWtlIiwgYiJib2R5IikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvX29yZGVyLnB5IiwgbGluZSA0MiwgaW4gZ290X21lc3NhZ2UKICAgIHNlbGYuZ290X3Bh a2Uoc2lkZSwgcGhhc2UsIGJvZHkpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAg ICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBp biBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9n bnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQt MC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24u cHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29k ZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHki LCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9y OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K RVJST1I6IHRlc3Rfb3V0X29mX29yZGVyICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuT3Jk ZXIpCnRlc3Rfb3V0X29mX29yZGVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJlRGVmZXJyZWQK ICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2 NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIyMSwgaW4g cnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sxXSwgZXhjX2lu Zm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICByYWlzZSBleGNl cHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMTcs IGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEsICoqa3cpCiAg RmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUg MTM0LCBpbiB0ZXN0X291dF9vZl9vcmRlcgogICAgby5nb3RfbWVzc2FnZSh1InNpZGUiLCB1InZl cnNpb24iLCBiImJvZHkiKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fb3JkZXIucHki LCBsaW5lIDQ0LCBpbiBnb3RfbWVzc2FnZQogICAgc2VsZi5nb3Rfbm9uX3Bha2Uoc2lkZSwgcGhh c2UsIGJvZHkpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlx Mm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0 b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1 dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IK ICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0 Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5 dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMy LCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5f X2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03 MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBp biBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2Vy IGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rf ZWFybHlfYmFkICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuUmVjZWl2ZSkKdGVzdF9lYXJs eV9iYWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigq YXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NT dXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0 LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNl YmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5p bmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxODksIGluIHRlc3RfZWFy bHlfYmFkCiAgICByLmdvdF9rZXkoa2V5KQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19nZXRf XwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSA0 MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24oY29w eWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxlICIv Z251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0 LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9u LnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5cGVF cnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CkVSUk9SOiB0ZXN0X2dvb2QgKHdvcm1ob2xlLnRlc3QudGVzdF9tYWNoaW5lcy5SZWNlaXZl KQp0ZXN0X2dvb2QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxNjAsIGluIHRl c3RfZ29vZAogICAgci5nb3Rfa2V5KGtleSkKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2Jz cTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0 X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9r dzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUg NDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVj dGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNv cHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBl RXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQpFUlJPUjogdGVzdF9sYXRlX2JhZCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLlJl Y2VpdmUpCnRlc3RfbGF0ZV9iYWQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50 IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAog ICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBy dW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5m b1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2Vw dGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywg aW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBG aWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAy MTAsIGluIHRlc3RfbGF0ZV9iYWQKICAgIHIuZ290X2tleShrZXkpCiAgRmlsZSAiL2dudS9zdG9y ZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUg MjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUg Ii9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVj b3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVy biBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFs dWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUo KnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRl cykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3RfYmFzaWMgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5SZW5kZXp2b3VzKQp0ZXN0X2Jhc2ljCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEsIGluIG1heWJl RGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5l IDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShleGNfaW5mb1sx XSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3 MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJhaXNlCiAgICBy YWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3VsdCA9IGYoKmEs ICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYt MC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5w eSIsIGxpbmUgMTU2NSwgaW4gdGVzdF9iYXNpYwogICAgcmMsIGV2ZW50cyA9IHNlbGYuYnVpbGQo KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBs aW5lIDE1NTIsIGluIGJ1aWxkCiAgICByYyA9IF9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0 b3IoCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJl bmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0X18KICAgIHNlbGYuX19hdHRy c19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19yZW5kZXp2b3Vz LnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwogICAgZCA9IHNlbGYuX2Nvbm5l Y3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZhZikKICBGaWxlICIvZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5l dC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAgcmV0dXJuIHNlbGYuX21hY2hp bmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBGaWxlICIvZ251L3N0b3JlL2t3 NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQs IGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0 ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1w eXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9f aW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1 bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMp CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRo b24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50 cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFs dWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpFUlJPUjogdGVzdF9lbmRwb2ludHMgKHdvcm1ob2xlLnRlc3QudGVzdF9t YWNoaW5lcy5SZW5kZXp2b3VzKQp0ZXN0X2VuZHBvaW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBt YXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3Rv cmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4w L2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5Iiwg bGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2lu Zm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQog ICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBm KCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGlu ZXMucHkiLCBsaW5lIDE2MzEsIGluIHRlc3RfZW5kcG9pbnRzCiAgICByYyA9IF9yZW5kZXp2b3Vz LlJlbmRlenZvdXNDb25uZWN0b3IoCiAgRmlsZSAiPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1o b2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+IiwgbGluZSAxOCwgaW4gX19pbml0 X18KICAgIHNlbGYuX19hdHRyc19wb3N0X2luaXRfXygpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxk LW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dv cm1ob2xlL19yZW5kZXp2b3VzLnB5IiwgbGluZSA4NywgaW4gX19hdHRyc19wb3N0X2luaXRfXwog ICAgZCA9IHNlbGYuX2Nvbm5lY3Rvci53aGVuQ29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzPWZh ZikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9h cHBsaWNhdGlvbi9pbnRlcm5ldC5weSIsIGxpbmUgMTEyNywgaW4gd2hlbkNvbm5lY3RlZAogICAg cmV0dXJuIHNlbGYuX21hY2hpbmUud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcykKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2Rp Y2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18KICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3 YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1j Zy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21h dC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAsIGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNv cHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNk OHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5j dGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHljb2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2Rl Y2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFk bHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAg ICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJyb3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQg KGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpFUlJPUjogdGVzdF93ZWJzb2NrZXRfZmFp bHVyZSAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLlJlbmRlenZvdXMpCnRlc3Rfd2Vic29j a2V0X2ZhaWx1cmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0 ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4 cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFj a2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2Fy bmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBG aWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24v Y29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRo X3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmli anN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0 aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxNTcyLCBpbiB0 ZXN0X3dlYnNvY2tldF9mYWlsdXJlCiAgICByYywgZXZlbnRzID0gc2VsZi5idWlsZCgpCiAgRmls ZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3Jt aG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9tYWNoaW5lcy5weSIsIGxpbmUgMTU1 MiwgaW4gYnVpbGQKICAgIHJjID0gX3JlbmRlenZvdXMuUmVuZGV6dm91c0Nvbm5lY3RvcigKICBG aWxlICI8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX3JlbmRlenZvdXMuUmVuZGV6dm91 c0Nvbm5lY3Rvcj4iLCBsaW5lIDE4LCBpbiBfX2luaXRfXwogICAgc2VsZi5fX2F0dHJzX3Bvc3Rf aW5pdF9fKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHkiLCBs aW5lIDg3LCBpbiBfX2F0dHJzX3Bvc3RfaW5pdF9fCiAgICBkID0gc2VsZi5fY29ubmVjdG9yLndo ZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXM9ZmFmKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5Iiwg bGluZSAxMTI3LCBpbiB3aGVuQ29ubmVjdGVkCiAgICByZXR1cm4gc2VsZi5fbWFjaGluZS53aGVu Q29ubmVjdGVkKGZhaWxBZnRlckZhaWx1cmVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5lIDIzNCwgaW4gX19n ZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxlICIvZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGlu ZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRlY29yYXRlZCwKICBG aWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3Nw ZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1cm4gZnVuY3Rpb24o Y29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZhbHVlcykKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2RlKCp2YWx1ZXMpClR5 cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCgo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CkVSUk9SOiB0ZXN0X3dlYnNvY2tldF9sb3N0ICh3b3JtaG9sZS50ZXN0LnRlc3RfbWFj aGluZXMuUmVuZGV6dm91cykKdGVzdF93ZWJzb2NrZXRfbG9zdAotLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNl YmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBp biBtYXliZURlZmVycmVkCiAgICByZXN1bHQgPSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5 IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhj X2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9jb21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlz ZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIv Z251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVk LTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGls cy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQg PSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFj aGluZXMucHkiLCBsaW5lIDE1ODQsIGluIHRlc3Rfd2Vic29ja2V0X2xvc3QKICAgIHJjLCBldmVu dHMgPSBzZWxmLmJ1aWxkKCkKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0 X21hY2hpbmVzLnB5IiwgbGluZSAxNTUyLCBpbiBidWlsZAogICAgcmMgPSBfcmVuZGV6dm91cy5S ZW5kZXp2b3VzQ29ubmVjdG9yKAogIEZpbGUgIjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9s ZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPiIsIGxpbmUgMTgsIGluIF9faW5pdF9f CiAgICBzZWxmLl9fYXR0cnNfcG9zdF9pbml0X18oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fcmVuZGV6dm91cy5weSIsIGxpbmUgODcsIGluIF9fYXR0cnNfcG9zdF9pbml0X18KICAg IGQgPSBzZWxmLl9jb25uZWN0b3Iud2hlbkNvbm5lY3RlZChmYWlsQWZ0ZXJGYWlsdXJlcz1mYWYp CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRo b24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvYXBw bGljYXRpb24vaW50ZXJuZXQucHkiLCBsaW5lIDExMjcsIGluIHdoZW5Db25uZWN0ZWQKICAgIHJl dHVybiBzZWxmLl9tYWNoaW5lLndoZW5Db25uZWN0ZWQoZmFpbEFmdGVyRmFpbHVyZXMpCiAgRmls ZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0 b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNh bC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYgZG9JbnB1dCgqYXJncywgKiprd2Fy Z3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNvcmF0b3IKICAgIHJldHVybiBjb3B5 ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhx ZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBh Y2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDMyLCBpbiBjb3B5ZnVuY3Rp b24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1wbGF0ZS5fX2NvZGVfXywgY29kZWNo YW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6 ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2th Z2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDIwLCBpbiBjb3B5Y29kZQogICAg cmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChn b3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6IHRlc3Rfa2V5X2ZpcnN0ICh3b3Jt aG9sZS50ZXN0LnRlc3RfbWFjaGluZXMuU2VuZCkKdGVzdF9rZXlfZmlyc3QKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE1MSwgaW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxl ICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91 dGlscy5weSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJh aXNlKGV4Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGlu IHJlcmFpc2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAg RmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvdXRpbHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAg cmVzdWx0ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90 ZXN0X21hY2hpbmVzLnB5IiwgbGluZSA4OSwgaW4gdGVzdF9rZXlfZmlyc3QKICAgIHMuZ290X3Zl cmlmaWVkX2tleShrZXkpCiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpq NGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2Fn ZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weSIsIGxpbmUgMjM0LCBpbiBfX2dldF9fCiAgICBkZWYg ZG9JbnB1dCgqYXJncywgKiprd2FyZ3MpOgogIEZpbGUgIi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5lIDQwLCBpbiBkZWNv cmF0b3IKICAgIHJldHVybiBjb3B5ZnVuY3Rpb24oZGVjb3JhdGVkLAogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBs aW5lIDMyLCBpbiBjb3B5ZnVuY3Rpb24KICAgIHJldHVybiBmdW5jdGlvbihjb3B5Y29kZSh0ZW1w bGF0ZS5fX2NvZGVfXywgY29kZWNoYW5nZXMpLCAqdmFsdWVzKQogIEZpbGUgIi9nbnUvc3RvcmUv a3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHkiLCBsaW5l IDIwLCBpbiBjb3B5Y29kZQogICAgcmV0dXJuIGNvZGUoKnZhbHVlcykKVHlwZUVycm9yOiBhbiBp bnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKCj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KRVJST1I6 IHRlc3Rfc2VuZF9maXJzdCAod29ybWhvbGUudGVzdC50ZXN0X21hY2hpbmVzLlNlbmQpCnRlc3Rf c2VuZF9maXJzdAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weSIsIGxpbmUgMTUxLCBpbiBtYXliZURlZmVycmVkCiAgICByZXN1bHQg PSBmKCphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhy dzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy90d2lzdGVkL2ludGVybmV0L3V0aWxzLnB5IiwgbGluZSAyMjEsIGluIHJ1bldpdGhXYXJu aW5nc1N1cHByZXNzZWQKICAgIHJlcmFpc2UoZXhjX2luZm9bMV0sIGV4Y19pbmZvWzJdKQogIEZp bGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3 aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL3B5dGhvbi9j b21wYXQucHkiLCBsaW5lIDQ2NCwgaW4gcmVyYWlzZQogICAgcmFpc2UgZXhjZXB0aW9uLndpdGhf dHJhY2ViYWNrKHRyYWNlYmFjaykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJq c3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUt cGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5weSIsIGxpbmUgMjE3LCBpbiBydW5XaXRo V2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXN1bHQgPSBmKCphLCAqKmt3KQogIEZpbGUgIi90bXAv Z3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4x Mi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfbWFjaGluZXMucHkiLCBsaW5lIDYzLCBpbiB0ZXN0 X3NlbmRfZmlyc3QKICAgIHMuc2VuZCgicGhhc2UxIiwgYiJtc2ciKQogIEZpbGUgIi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX21ldGhvZGljYWwucHkiLCBsaW5l IDIzNCwgaW4gX19nZXRfXwogICAgZGVmIGRvSW5wdXQoKmFyZ3MsICoqa3dhcmdzKToKICBGaWxl ICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRv bWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0 aW9uLnB5IiwgbGluZSA0MCwgaW4gZGVjb3JhdG9yCiAgICByZXR1cm4gY29weWZ1bmN0aW9uKGRl Y29yYXRlZCwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAzMiwgaW4gY29weWZ1bmN0aW9uCiAgICByZXR1 cm4gZnVuY3Rpb24oY29weWNvZGUodGVtcGxhdGUuX19jb2RlX18sIGNvZGVjaGFuZ2VzKSwgKnZh bHVlcykKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNn LXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0 L19pbnRyb3NwZWN0aW9uLnB5IiwgbGluZSAyMCwgaW4gY29weWNvZGUKICAgIHJldHVybiBjb2Rl KCp2YWx1ZXMpClR5cGVFcnJvcjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0 ZXMpCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09CkVSUk9SOiB0ZXN0X3Rlcm1pbmF0ZSAod29ybWhvbGUudGVzdC50 ZXN0X21hY2hpbmVzLlRlcm1pbmF0b3IpCnRlc3RfdGVybWluYXRlCi0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJh Y2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNTEs IGluIG1heWJlRGVmZXJyZWQKICAgIHJlc3VsdCA9IGYoKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRpbHMu cHkiLCBsaW5lIDIyMSwgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVyYWlzZShl eGNfaW5mb1sxXSwgZXhjX2luZm9bMl0pCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvcHl0aG9uL2NvbXBhdC5weSIsIGxpbmUgNDY0LCBpbiByZXJh aXNlCiAgICByYWlzZSBleGNlcHRpb24ud2l0aF90cmFjZWJhY2sodHJhY2ViYWNrKQogIEZpbGUg Ii9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0 ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L3V0 aWxzLnB5IiwgbGluZSAyMTcsIGluIHJ1bldpdGhXYXJuaW5nc1N1cHByZXNzZWQKICAgIHJlc3Vs dCA9IGYoKmEsICoqa3cpCiAgRmlsZSAiL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAu MTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9t YWNoaW5lcy5weSIsIGxpbmUgMTI4NiwgaW4gdGVzdF90ZXJtaW5hdGUKICAgIHNlbGYuX2RvX3Rl c3QoIm1haWxib3giLCAibmFtZXBsYXRlIiwgInJjIikKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQt bWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29y bWhvbGUvdGVzdC90ZXN0X21hY2hpbmVzLnB5IiwgbGluZSAxMjQ2LCBpbiBfZG9fdGVzdAogICAg aW5wdXRfZXZlbnRzW2V2MV0oKQogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rl c3RfbWFjaGluZXMucHkiLCBsaW5lIDEyMzIsIGluIDxsYW1iZGE+CiAgICAibWFpbGJveCI6IGxh bWJkYTogdC5tYWlsYm94X2RvbmUoKSwKICBGaWxlICIvZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFq M2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5IiwgbGluZSAyMzQsIGluIF9fZ2V0X18K ICAgIGRlZiBkb0lucHV0KCphcmdzLCAqKmt3YXJncyk6CiAgRmlsZSAiL2dudS9zdG9yZS9rdzQ2 bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0 aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5weSIsIGxpbmUgNDAs IGluIGRlY29yYXRvcgogICAgcmV0dXJuIGNvcHlmdW5jdGlvbihkZWNvcmF0ZWQsCiAgRmlsZSAi L2dudS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21h dC0wLjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlv bi5weSIsIGxpbmUgMzIsIGluIGNvcHlmdW5jdGlvbgogICAgcmV0dXJuIGZ1bmN0aW9uKGNvcHlj b2RlKHRlbXBsYXRlLl9fY29kZV9fLCBjb2RlY2hhbmdlcyksICp2YWx1ZXMpCiAgRmlsZSAiL2du dS9zdG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0w LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9faW50cm9zcGVjdGlvbi5w eSIsIGxpbmUgMjAsIGluIGNvcHljb2RlCiAgICByZXR1cm4gY29kZSgqdmFsdWVzKQpUeXBlRXJy b3I6IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQoKPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQpGQUlMOiB0ZXN0X3N0YXJ0X2xpc3RlbiAod29ybWhvbGUudGVzdC5kaWxhdGUudGVzdF9jb25u ZWN0b3IuVGVzdENvbm5lY3RvcikKdGVzdF9zdGFydF9saXN0ZW4KLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpUcmFj ZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlh aXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhv bjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE1MSwg aW4gbWF5YmVEZWZlcnJlZAogICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC91dGlscy5w eSIsIGxpbmUgMjIxLCBpbiBydW5XaXRoV2FybmluZ3NTdXBwcmVzc2VkCiAgICByZXJhaXNlKGV4 Y19pbmZvWzFdLCBleGNfaW5mb1syXSkKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2 aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvdHdpc3RlZC9weXRob24vY29tcGF0LnB5IiwgbGluZSA0NjQsIGluIHJlcmFp c2UKICAgIHJhaXNlIGV4Y2VwdGlvbi53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2spCiAgRmlsZSAi L2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3Rl ZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvdXRp bHMucHkiLCBsaW5lIDIxNywgaW4gcnVuV2l0aFdhcm5pbmdzU3VwcHJlc3NlZAogICAgcmVzdWx0 ID0gZigqYSwgKiprdykKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC9kaWxhdGUv dGVzdF9jb25uZWN0b3IucHkiLCBsaW5lIDIyMCwgaW4gdGVzdF9zdGFydF9saXN0ZW4KICAgIHNl bGYuYXNzZXJ0RXF1YWwoaC5tYW5hZ2VyLm1vY2tfY2FsbHMsCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdHJpYWwvX3N5bmN0ZXN0LnB5IiwgbGlu ZSA0MzIsIGluIGFzc2VydEVxdWFsCiAgICBzdXBlcihfQXNzZXJ0aW9ucywgc2VsZikuYXNzZXJ0 RXF1YWwoZmlyc3QsIHNlY29uZCwgbXNnKQogIEZpbGUgIi9nbnUvc3RvcmUvcTlybThoOWltYXpz cTJjNHFpdjJ5anB2bHZsaXl3cWItcHl0aG9uLTMuOC4yL2xpYi9weXRob24zLjgvdW5pdHRlc3Qv Y2FzZS5weSIsIGxpbmUgOTEyLCBpbiBhc3NlcnRFcXVhbAogICAgYXNzZXJ0aW9uX2Z1bmMoZmly c3QsIHNlY29uZCwgbXNnPW1zZykKICBGaWxlICIvZ251L3N0b3JlL3E5cm04aDlpbWF6c3EyYzRx aXYyeWpwdmx2bGl5d3FiLXB5dGhvbi0zLjguMi9saWIvcHl0aG9uMy44L3VuaXR0ZXN0L2Nhc2Uu cHkiLCBsaW5lIDkwNSwgaW4gX2Jhc2VBc3NlcnRFcXVhbAogICAgcmFpc2Ugc2VsZi5mYWlsdXJl RXhjZXB0aW9uKG1zZykKdHdpc3RlZC50cmlhbC51bml0dGVzdC5GYWlsVGVzdDogW10gIT0gW2Nh bGwuc2VuZF9oaW50cyhbeyd0eXBlJzogJ2RpcmVjdC10Y3AtdjEnWzEzMCBjaGFyc10wfV0pXQoK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQpGQUlMOiB0ZXN0X3RleHRfd3JvbmdfcGFzc3dvcmQgKHdvcm1ob2xlLnRl c3QudGVzdF9jbGkuQ2xlYW51cCkKdGVzdF90ZXh0X3dyb25nX3Bhc3N3b3JkCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5IiwgbGluZSAxMTI3LCBpbiB0ZXN0X3RleHRfd3Jv bmdfcGFzc3dvcmQKICAgIHlpZWxkIHNlbGYuYXNzZXJ0RmFpbHVyZShzZW5kX2QsIFdyb25nUGFz c3dvcmRFcnJvcikKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxpbmUgNjU0LCBpbiBfcnVuQ2FsbGJhY2tzCiAg ICBjdXJyZW50LnJlc3VsdCA9IGNhbGxiYWNrKGN1cnJlbnQucmVzdWx0LCAqYXJncywgKiprdykK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90cmlh bC9fYXN5bmN0ZXN0LnB5IiwgbGluZSA3NSwgaW4gX2ViCiAgICByYWlzZSBzZWxmLmZhaWx1cmVF eGNlcHRpb24ob3V0cHV0KQp0d2lzdGVkLnRyaWFsLnVuaXR0ZXN0LkZhaWxUZXN0OiAKRXhwZWN0 ZWQ6ICg8Y2xhc3MgJ3dvcm1ob2xlLmVycm9ycy5Xcm9uZ1Bhc3N3b3JkRXJyb3InPiwpCkdvdDoK W0ZhaWx1cmUgaW5zdGFuY2U6IFRyYWNlYmFjazogPGNsYXNzICdUeXBlRXJyb3InPjogYW4gaW50 ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90 ZXN0L3Rlc3RfY2xpLnB5OjExMjA6dGVzdF90ZXh0X3dyb25nX3Bhc3N3b3JkCi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS9jbGkvY21kX3NlbmQucHk6Mzg6c2VuZAovZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNjEzOnVud2luZEdlbmVy YXRvcgovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weToxNTI5Ol9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNrcwotLS0gPGV4Y2VwdGlv biBjYXVnaHQgaGVyZT4gLS0tCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVx bmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90 d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5OjE0MTg6X2lubGluZUNhbGxiYWNrcwovdG1wL2d1aXgt YnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9z cmMvd29ybWhvbGUvY2xpL2NtZF9zZW5kLnB5OjY2OmdvCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13 b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93 b3JtaG9sZS5weToyOTA6Y3JlYXRlCjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9z cy5Cb3NzPjoyMzpfX2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHk6NTI6X19h dHRyc19wb3N0X2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHk6NjI6X2J1aWxk X3dvcmtlcnMKPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRl enZvdXNDb25uZWN0b3I+OjE4Ol9faW5pdF9fCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9s ZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6 dm91cy5weTo4NzpfX2F0dHJzX3Bvc3RfaW5pdF9fCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5OjExMjc6d2hlbkNvbm5l Y3RlZAovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1h dXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2Rp Y2FsLnB5OjIzNDpfX2dldF9fCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5 cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1 dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6NDA6ZGVjb3JhdG9yCi9nbnUvc3RvcmUva3c0Nm03MXFr YnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMu OC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6MzI6Y29weWZ1bmN0aW9u Ci9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9t YXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rp b24ucHk6MjA6Y29weWNvZGUKXQoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGQUlMOiB0ZXN0X3JlY2VpdmVyICh3 b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk5vU2VydmVyKQp0ZXN0X3JlY2VpdmVyCi0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGlu ZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQpT dG9wSXRlcmF0aW9uCgpEdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5v dGhlciBleGNlcHRpb24gb2NjdXJyZWQ6CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz dCk6CiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1w eXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQv aW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJl c3VsdCA9IGcuc2VuZChyZXN1bHQpClN0b3BJdGVyYXRpb24KCkR1cmluZyBoYW5kbGluZyBvZiB0 aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKClRyYWNlYmFj ayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv dGVzdC90ZXN0X2NsaS5weSIsIGxpbmUgMTA4MSwgaW4gdGVzdF9yZWNlaXZlcgogICAgZSA9IHlp ZWxkIHNlbGYuYXNzZXJ0RmFpbHVyZShyZWNlaXZlX2QsIFNlcnZlckNvbm5lY3Rpb25FcnJvcikK ICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhv bi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRl cm5ldC9kZWZlci5weSIsIGxpbmUgNjU0LCBpbiBfcnVuQ2FsbGJhY2tzCiAgICBjdXJyZW50LnJl c3VsdCA9IGNhbGxiYWNrKGN1cnJlbnQucmVzdWx0LCAqYXJncywgKiprdykKICBGaWxlICIvZ251 L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5 LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90cmlhbC9fYXN5bmN0ZXN0 LnB5IiwgbGluZSA3NSwgaW4gX2ViCiAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24ob3V0 cHV0KQp0d2lzdGVkLnRyaWFsLnVuaXR0ZXN0LkZhaWxUZXN0OiAKRXhwZWN0ZWQ6ICg8Y2xhc3Mg J3dvcm1ob2xlLmVycm9ycy5TZXJ2ZXJDb25uZWN0aW9uRXJyb3InPiwpCkdvdDoKW0ZhaWx1cmUg aW5zdGFuY2U6IFRyYWNlYmFjazogPGNsYXNzICdUeXBlRXJyb3InPjogYW4gaW50ZWdlciBpcyBy ZXF1aXJlZCAoZ290IHR5cGUgYnl0ZXMpCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0w LjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3Rf Y2xpLnB5OjEwODA6dGVzdF9yZWNlaXZlcgovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUt MC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9y ZWNlaXZlLnB5OjQ5OnJlY2VpdmUKL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3 NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2Vz L3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHk6MTYxMzp1bndpbmRHZW5lcmF0b3IKL2dudS9zdG9y ZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHk6MTUy OTpfY2FuY2VsbGFibGVJbmxpbmVDYWxsYmFja3MKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+ IC0tLQovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10 d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5l dC9kZWZlci5weToxNDE4Ol9pbmxpbmVDYWxsYmFja3MKL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdv cm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2Ns aS9jbWRfcmVjZWl2ZS5weTo4MTpnbwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHk6 MjkwOmNyZWF0ZQo8YXR0cnMgZ2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz46MjM6 X19pbml0X18KL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdp Yy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5OjUyOl9fYXR0cnNfcG9zdF9p bml0X18KL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13 b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL19ib3NzLnB5OjYyOl9idWlsZF93b3JrZXJzCjxh dHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVj dG9yPjoxODpfX2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHk6ODc6 X19hdHRyc19wb3N0X2luaXRfXwovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9hcHBsaWNhdGlvbi9pbnRlcm5ldC5weToxMTI3OndoZW5Db25uZWN0ZWQKL2dudS9z dG9yZS9rdzQ2bTcxcWtic3ExajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weToyMzQ6 X19nZXRfXwovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5OjQwOmRlY29yYXRvcgovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRs emo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNr YWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5OjMyOmNvcHlmdW5jdGlvbgovZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5OjIwOmNv cHljb2RlCl0KCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KRkFJTDogdGVzdF9zZW5kZXIgKHdvcm1ob2xlLnRlc3Qu dGVzdF9jbGkuTm9TZXJ2ZXIpCnRlc3Rfc2VuZGVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrICht b3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZp YmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0 ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5s aW5lQ2FsbGJhY2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQpTdG9wSXRlcmF0aW9uCgpE dXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24g b2NjdXJyZWQ6CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2du dS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0x OS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIu cHkiLCBsaW5lIDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChy ZXN1bHQpClN0b3BJdGVyYXRpb24KCkR1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0 aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKClRyYWNlYmFjayAobW9zdCByZWNlbnQg Y2FsbCBsYXN0KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4w LmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2NsaS5w eSIsIGxpbmUgMTA0OSwgaW4gdGVzdF9zZW5kZXIKICAgIGUgPSB5aWVsZCBzZWxmLmFzc2VydEZh aWx1cmUoc2VuZF9kLCBTZXJ2ZXJDb25uZWN0aW9uRXJyb3IpCiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDY1NCwgaW4gX3J1bkNhbGxiYWNrcwogICAgY3VycmVudC5yZXN1bHQgPSBjYWxsYmFjayhjdXJy ZW50LnJlc3VsdCwgKmFyZ3MsICoqa3cpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvdHJpYWwvX2FzeW5jdGVzdC5weSIsIGxpbmUgNzUsIGluIF9l YgogICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0aW9uKG91dHB1dCkKdHdpc3RlZC50cmlhbC51 bml0dGVzdC5GYWlsVGVzdDogCkV4cGVjdGVkOiAoPGNsYXNzICd3b3JtaG9sZS5lcnJvcnMuU2Vy dmVyQ29ubmVjdGlvbkVycm9yJz4sKQpHb3Q6CltGYWlsdXJlIGluc3RhbmNlOiBUcmFjZWJhY2s6 IDxjbGFzcyAnVHlwZUVycm9yJz46IGFuIGludGVnZXIgaXMgcmVxdWlyZWQgKGdvdCB0eXBlIGJ5 dGVzKQovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2NsaS5weToxMDQ4OnRlc3Rfc2Vu ZGVyCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3NlbmQucHk6Mzg6c2VuZAovZ251L3N0 b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5Ljcu MC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weTox NjEzOnVud2luZEdlbmVyYXRvcgovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1 cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMv dHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNTI5Ol9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNr cwotLS0gPGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRk aTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgv c2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5OjE0MTg6X2lubGluZUNhbGxi YWNrcwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9zZW5kLnB5OjY2OmdvCi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS93b3JtaG9sZS5weToyOTA6Y3JlYXRlCjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fYm9zcy5Cb3NzPjoyMzpfX2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMt d29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUv X2Jvc3MucHk6NTI6X19hdHRyc19wb3N0X2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jv c3MucHk6NjI6X2J1aWxkX3dvcmtlcnMKPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9y ZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+OjE4Ol9faW5pdF9fCi90bXAvZ3VpeC1idWls ZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93 b3JtaG9sZS9fcmVuZGV6dm91cy5weTo4NzpfX2F0dHJzX3Bvc3RfaW5pdF9fCi9nbnUvc3RvcmUv cm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5 OjExMjc6d2hlbkNvbm5lY3RlZAovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZq eXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9h dXRvbWF0L19tZXRob2RpY2FsLnB5OjIzNDpfX2dldF9fCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6NDA6ZGVjb3JhdG9yCi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6 MzI6Y29weWZ1bmN0aW9uCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJt Y2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9t YXQvX2ludHJvc3BlY3Rpb24ucHk6MjA6Y29weWNvZGUKXQoKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGQUlMOiB0 ZXN0X3NlbmRlcl9hbGxvY2F0aW9uICh3b3JtaG9sZS50ZXN0LnRlc3RfY2xpLk5vU2VydmVyKQp0 ZXN0X3NlbmRlcl9hbGxvY2F0aW9uCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2Vu dCBjYWxsIGxhc3QpOgogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0 dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdl cy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSAxNDE4LCBpbiBfaW5saW5lQ2FsbGJh Y2tzCiAgICByZXN1bHQgPSBnLnNlbmQocmVzdWx0KQpTdG9wSXRlcmF0aW9uCgpEdXJpbmcgaGFu ZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2NjdXJyZWQ6 CgpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2dudS9zdG9yZS9y bXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGli L3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5l IDE0MTgsIGluIF9pbmxpbmVDYWxsYmFja3MKICAgIHJlc3VsdCA9IGcuc2VuZChyZXN1bHQpClN0 b3BJdGVyYXRpb24KCkR1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90 aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDoKClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0 KToKICBGaWxlICIvdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21h Z2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2NsaS5weSIsIGxpbmUg MTA2NSwgaW4gdGVzdF9zZW5kZXJfYWxsb2NhdGlvbgogICAgZSA9IHlpZWxkIHNlbGYuYXNzZXJ0 RmFpbHVyZShzZW5kX2QsIFNlcnZlckNvbm5lY3Rpb25FcnJvcikKICBGaWxlICIvZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weSIsIGxp bmUgNjU0LCBpbiBfcnVuQ2FsbGJhY2tzCiAgICBjdXJyZW50LnJlc3VsdCA9IGNhbGxiYWNrKGN1 cnJlbnQucmVzdWx0LCAqYXJncywgKiprdykKICBGaWxlICIvZ251L3N0b3JlL3JtcjRtaWFpeHY0 ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44 L3NpdGUtcGFja2FnZXMvdHdpc3RlZC90cmlhbC9fYXN5bmN0ZXN0LnB5IiwgbGluZSA3NSwgaW4g X2ViCiAgICByYWlzZSBzZWxmLmZhaWx1cmVFeGNlcHRpb24ob3V0cHV0KQp0d2lzdGVkLnRyaWFs LnVuaXR0ZXN0LkZhaWxUZXN0OiAKRXhwZWN0ZWQ6ICg8Y2xhc3MgJ3dvcm1ob2xlLmVycm9ycy5T ZXJ2ZXJDb25uZWN0aW9uRXJyb3InPiwpCkdvdDoKW0ZhaWx1cmUgaW5zdGFuY2U6IFRyYWNlYmFj azogPGNsYXNzICdUeXBlRXJyb3InPjogYW4gaW50ZWdlciBpcyByZXF1aXJlZCAoZ290IHR5cGUg Ynl0ZXMpCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMt d29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5OjEwNjQ6dGVzdF9z ZW5kZXJfYWxsb2NhdGlvbgovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRy di0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9zZW5kLnB5OjM4 OnNlbmQKL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24t dHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJu ZXQvZGVmZXIucHk6MTYxMzp1bndpbmRHZW5lcmF0b3IKL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRp NmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL3R3aXN0ZWQvaW50ZXJuZXQvZGVmZXIucHk6MTUyOTpfY2FuY2VsbGFibGVJ bmxpbmVDYWxsYmFja3MKLS0tIDxleGNlcHRpb24gY2F1Z2h0IGhlcmU+IC0tLQovZ251L3N0b3Jl L3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9s aWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNDE4 Ol9pbmxpbmVDYWxsYmFja3MKL3RtcC9ndWl4LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5k cnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3JjL3dvcm1ob2xlL2NsaS9jbWRfc2VuZC5weTo2 NjpnbwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdv cm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvd29ybWhvbGUucHk6MjkwOmNyZWF0ZQo8YXR0cnMg Z2VuZXJhdGVkIGluaXQgd29ybWhvbGUuX2Jvc3MuQm9zcz46MjM6X19pbml0X18KL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL19ib3NzLnB5OjUyOl9fYXR0cnNfcG9zdF9pbml0X18KL3RtcC9ndWl4LWJ1 aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAvc3Jj L3dvcm1ob2xlL19ib3NzLnB5OjYyOl9idWlsZF93b3JrZXJzCjxhdHRycyBnZW5lcmF0ZWQgaW5p dCB3b3JtaG9sZS5fcmVuZGV6dm91cy5SZW5kZXp2b3VzQ29ubmVjdG9yPjoxODpfX2luaXRfXwov dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvX3JlbmRlenZvdXMucHk6ODc6X19hdHRyc19wb3N0X2luaXRf XwovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lz dGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9hcHBsaWNhdGlv bi9pbnRlcm5ldC5weToxMTI3OndoZW5Db25uZWN0ZWQKL2dudS9zdG9yZS9rdzQ2bTcxcWtic3Ex ajNkOHFkbHpqNGF2anlxMm1jZy1weXRob24tYXV0b21hdC0wLjcuMC9saWIvcHl0aG9uMy44L3Np dGUtcGFja2FnZXMvYXV0b21hdC9fbWV0aG9kaWNhbC5weToyMzQ6X19nZXRfXwovZ251L3N0b3Jl L2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xp Yi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5OjQwOmRl Y29yYXRvcgovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhv bi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19pbnRy b3NwZWN0aW9uLnB5OjMyOmNvcHlmdW5jdGlvbgovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4 cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy9hdXRvbWF0L19pbnRyb3NwZWN0aW9uLnB5OjIwOmNvcHljb2RlCl0KCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KRkFJTDogdGVzdF9yZWNlaXZlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Ob3RXZWxj b21lKQp0ZXN0X3JlY2VpdmVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOgogIEZpbGUgIi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAu ZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS90ZXN0L3Rlc3RfY2xpLnB5 IiwgbGluZSAxMDI1LCBpbiB0ZXN0X3JlY2VpdmVyCiAgICBmID0geWllbGQgc2VsZi5hc3NlcnRG YWlsdXJlKHJlY2VpdmVfZCwgV2VsY29tZUVycm9yKQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1p YWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRo b24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5IiwgbGluZSA2NTQs IGluIF9ydW5DYWxsYmFja3MKICAgIGN1cnJlbnQucmVzdWx0ID0gY2FsbGJhY2soY3VycmVudC5y ZXN1bHQsICphcmdzLCAqKmt3KQogIEZpbGUgIi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL3RyaWFsL19hc3luY3Rlc3QucHkiLCBsaW5lIDc1LCBpbiBfZWIKICAg IHJhaXNlIHNlbGYuZmFpbHVyZUV4Y2VwdGlvbihvdXRwdXQpCnR3aXN0ZWQudHJpYWwudW5pdHRl c3QuRmFpbFRlc3Q6IApFeHBlY3RlZDogKDxjbGFzcyAnd29ybWhvbGUuZXJyb3JzLldlbGNvbWVF cnJvcic+LCkKR290OgpbRmFpbHVyZSBpbnN0YW5jZTogVHJhY2ViYWNrOiA8Y2xhc3MgJ1R5cGVF cnJvcic+OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkIChnb3QgdHlwZSBieXRlcykKL3RtcC9ndWl4 LWJ1aWxkLW1hZ2ljLXdvcm1ob2xlLTAuMTIuMC5kcnYtMC9tYWdpYy13b3JtaG9sZS0wLjEyLjAv c3JjL3dvcm1ob2xlL3Rlc3QvdGVzdF9jbGkucHk6MTAyNDp0ZXN0X3JlY2VpdmVyCi90bXAvZ3Vp eC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4w L3NyYy93b3JtaG9sZS9jbGkvY21kX3JlY2VpdmUucHk6NDk6cmVjZWl2ZQovZ251L3N0b3JlL3Jt cjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIv cHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNjEzOnVu d2luZEdlbmVyYXRvcgovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4 LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3Rl ZC9pbnRlcm5ldC9kZWZlci5weToxNTI5Ol9jYW5jZWxsYWJsZUlubGluZUNhbGxiYWNrcwotLS0g PGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpz enhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1w YWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5OjE0MTg6X2lubGluZUNhbGxiYWNrcwov dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9yZWNlaXZlLnB5OjgxOmdvCi90bXAvZ3VpeC1i dWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3Ny Yy93b3JtaG9sZS93b3JtaG9sZS5weToyOTA6Y3JlYXRlCjxhdHRycyBnZW5lcmF0ZWQgaW5pdCB3 b3JtaG9sZS5fYm9zcy5Cb3NzPjoyMzpfX2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29y bWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jv c3MucHk6NTI6X19hdHRyc19wb3N0X2luaXRfXwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhv bGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvX2Jvc3Mu cHk6NjI6X2J1aWxkX3dvcmtlcnMKPGF0dHJzIGdlbmVyYXRlZCBpbml0IHdvcm1ob2xlLl9yZW5k ZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+OjE4Ol9faW5pdF9fCi90bXAvZ3VpeC1idWlsZC1t YWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3Jt aG9sZS9fcmVuZGV6dm91cy5weTo4NzpfX2F0dHJzX3Bvc3RfaW5pdF9fCi9nbnUvc3RvcmUvcm1y NG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTkuNy4wL2xpYi9w eXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxpY2F0aW9uL2ludGVybmV0LnB5OjEx Mjc6d2hlbkNvbm5lY3RlZAovZ251L3N0b3JlL2t3NDZtNzFxa2JzcTFqM2Q4cWRsemo0YXZqeXEy bWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy9hdXRv bWF0L19tZXRob2RpY2FsLnB5OjIzNDpfX2dldF9fCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWoz ZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRl LXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6NDA6ZGVjb3JhdG9yCi9nbnUvc3Rv cmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAv bGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6MzI6 Y29weWZ1bmN0aW9uCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHk6MjA6Y29weWNvZGUKXQoKPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpGQUlMOiB0ZXN0 X3NlbmRlciAod29ybWhvbGUudGVzdC50ZXN0X2NsaS5Ob3RXZWxjb21lKQp0ZXN0X3NlbmRlcgot LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICBGaWxlICIv dG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xl LTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2NsaS5weSIsIGxpbmUgMTAxNywgaW4gdGVz dF9zZW5kZXIKICAgIGYgPSB5aWVsZCBzZWxmLmFzc2VydEZhaWx1cmUoc2VuZF9kLCBXZWxjb21l RXJyb3IpCiAgRmlsZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3Yy eC1weXRob24tdHdpc3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0 ZWQvaW50ZXJuZXQvZGVmZXIucHkiLCBsaW5lIDY1NCwgaW4gX3J1bkNhbGxiYWNrcwogICAgY3Vy cmVudC5yZXN1bHQgPSBjYWxsYmFjayhjdXJyZW50LnJlc3VsdCwgKmFyZ3MsICoqa3cpCiAgRmls ZSAiL2dudS9zdG9yZS9ybXI0bWlhaXh2NGRpNmlianN6eHJ3MjR3NXFuZ3YyeC1weXRob24tdHdp c3RlZC0xOS43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL3R3aXN0ZWQvdHJpYWwvX2Fz eW5jdGVzdC5weSIsIGxpbmUgNzUsIGluIF9lYgogICAgcmFpc2Ugc2VsZi5mYWlsdXJlRXhjZXB0 aW9uKG91dHB1dCkKdHdpc3RlZC50cmlhbC51bml0dGVzdC5GYWlsVGVzdDogCkV4cGVjdGVkOiAo PGNsYXNzICd3b3JtaG9sZS5lcnJvcnMuV2VsY29tZUVycm9yJz4sKQpHb3Q6CltGYWlsdXJlIGlu c3RhbmNlOiBUcmFjZWJhY2s6IDxjbGFzcyAnVHlwZUVycm9yJz46IGFuIGludGVnZXIgaXMgcmVx dWlyZWQgKGdvdCB0eXBlIGJ5dGVzKQovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvdGVzdC90ZXN0X2Ns aS5weToxMDE2OnRlc3Rfc2VuZGVyCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEy LjAuZHJ2LTAvbWFnaWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9jbGkvY21kX3NlbmQu cHk6Mzg6c2VuZAovZ251L3N0b3JlL3JtcjRtaWFpeHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5 dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9p bnRlcm5ldC9kZWZlci5weToxNjEzOnVud2luZEdlbmVyYXRvcgovZ251L3N0b3JlL3JtcjRtaWFp eHY0ZGk2aWJqc3p4cncyNHc1cW5ndjJ4LXB5dGhvbi10d2lzdGVkLTE5LjcuMC9saWIvcHl0aG9u My44L3NpdGUtcGFja2FnZXMvdHdpc3RlZC9pbnRlcm5ldC9kZWZlci5weToxNTI5Ol9jYW5jZWxs YWJsZUlubGluZUNhbGxiYWNrcwotLS0gPGV4Y2VwdGlvbiBjYXVnaHQgaGVyZT4gLS0tCi9nbnUv c3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9uLXR3aXN0ZWQtMTku Ny4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2ludGVybmV0L2RlZmVyLnB5 OjE0MTg6X2lubGluZUNhbGxiYWNrcwovdG1wL2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4x Mi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIuMC9zcmMvd29ybWhvbGUvY2xpL2NtZF9zZW5k LnB5OjY2OmdvCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFn aWMtd29ybWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS93b3JtaG9sZS5weToyOTA6Y3JlYXRlCjxh dHRycyBnZW5lcmF0ZWQgaW5pdCB3b3JtaG9sZS5fYm9zcy5Cb3NzPjoyMzpfX2luaXRfXwovdG1w L2d1aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAu MTIuMC9zcmMvd29ybWhvbGUvX2Jvc3MucHk6NTI6X19hdHRyc19wb3N0X2luaXRfXwovdG1wL2d1 aXgtYnVpbGQtbWFnaWMtd29ybWhvbGUtMC4xMi4wLmRydi0wL21hZ2ljLXdvcm1ob2xlLTAuMTIu MC9zcmMvd29ybWhvbGUvX2Jvc3MucHk6NjI6X2J1aWxkX3dvcmtlcnMKPGF0dHJzIGdlbmVyYXRl ZCBpbml0IHdvcm1ob2xlLl9yZW5kZXp2b3VzLlJlbmRlenZvdXNDb25uZWN0b3I+OjE4Ol9faW5p dF9fCi90bXAvZ3VpeC1idWlsZC1tYWdpYy13b3JtaG9sZS0wLjEyLjAuZHJ2LTAvbWFnaWMtd29y bWhvbGUtMC4xMi4wL3NyYy93b3JtaG9sZS9fcmVuZGV6dm91cy5weTo4NzpfX2F0dHJzX3Bvc3Rf aW5pdF9fCi9nbnUvc3RvcmUvcm1yNG1pYWl4djRkaTZpYmpzenhydzI0dzVxbmd2MngtcHl0aG9u LXR3aXN0ZWQtMTkuNy4wL2xpYi9weXRob24zLjgvc2l0ZS1wYWNrYWdlcy90d2lzdGVkL2FwcGxp Y2F0aW9uL2ludGVybmV0LnB5OjExMjc6d2hlbkNvbm5lY3RlZAovZ251L3N0b3JlL2t3NDZtNzFx a2JzcTFqM2Q4cWRsemo0YXZqeXEybWNnLXB5dGhvbi1hdXRvbWF0LTAuNy4wL2xpYi9weXRob24z Ljgvc2l0ZS1wYWNrYWdlcy9hdXRvbWF0L19tZXRob2RpY2FsLnB5OjIzNDpfX2dldF9fCi9nbnUv c3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43 LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6 NDA6ZGVjb3JhdG9yCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNxMWozZDhxZGx6ajRhdmp5cTJtY2ct cHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9zaXRlLXBhY2thZ2VzL2F1dG9tYXQv X2ludHJvc3BlY3Rpb24ucHk6MzI6Y29weWZ1bmN0aW9uCi9nbnUvc3RvcmUva3c0Nm03MXFrYnNx MWozZDhxZGx6ajRhdmp5cTJtY2ctcHl0aG9uLWF1dG9tYXQtMC43LjAvbGliL3B5dGhvbjMuOC9z aXRlLXBhY2thZ2VzL2F1dG9tYXQvX2ludHJvc3BlY3Rpb24ucHk6MjA6Y29weWNvZGUKXQoKLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQpSYW4gNDQ3IHRlc3RzIGluIDEyNi4wNjZzCgpGQUlMRUQgKGZhaWx1cmVzPTcs IGVycm9ycz0xNjcsIHNraXBwZWQ9MjgpClRlc3QgZmFpbGVkOiA8dW5pdHRlc3QucnVubmVyLlRl eHRUZXN0UmVzdWx0IHJ1bj00NDcgZXJyb3JzPTE2NyBmYWlsdXJlcz03PgplcnJvcjogVGVzdCBm YWlsZWQ6IDx1bml0dGVzdC5ydW5uZXIuVGV4dFRlc3RSZXN1bHQgcnVuPTQ0NyBlcnJvcnM9MTY3 IGZhaWx1cmVzPTc+CmNvbW1hbmQgInB5dGhvbiIgIi1jIiAiaW1wb3J0IHNldHVwdG9vbHMsIHRv a2VuaXplO19fZmlsZV9fPSdzZXR1cC5weSc7Zj1nZXRhdHRyKHRva2VuaXplLCAnb3BlbicsIG9w ZW4pKF9fZmlsZV9fKTtjb2RlPWYucmVhZCgpLnJlcGxhY2UoJ1xcclxcbicsICdcXG4nKTtmLmNs b3NlKCk7ZXhlYyhjb21waWxlKGNvZGUsIF9fZmlsZV9fLCAnZXhlYycpKSIgInRlc3QiIGZhaWxl ZCB3aXRoIHN0YXR1cyAxCg== --000000000000b2c9ee05a5911b7d-- ------------=_1589466303-20386-1--