From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Frederic Pouyet Newsgroups: gmane.emacs.bugs Subject: bug#14458: 24.3; specman-mode_v1.22.el not compatible with emacs 24.x Date: Fri, 24 May 2013 09:33:40 +0200 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="_007_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_" X-Trace: ger.gmane.org 1369380993 21289 80.91.229.3 (24 May 2013 07:36:33 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 24 May 2013 07:36:33 +0000 (UTC) Cc: Avi Farjoun , Patrick Oury , Mahesh Soni , Orit Greengrass To: 14458@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri May 24 09:36:32 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UfmY9-0003Ff-Uj for geb-bug-gnu-emacs@m.gmane.org; Fri, 24 May 2013 09:36:30 +0200 Original-Received: from localhost ([::1]:35816 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfmY9-0005R3-Cv for geb-bug-gnu-emacs@m.gmane.org; Fri, 24 May 2013 03:36:29 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:47615) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfmXw-0005Qh-Lq for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 03:36:23 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UfmXq-0005rp-3b for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 03:36:16 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:42889) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfmXp-0005re-Mx for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 03:36:09 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1UfmYg-00059o-RQ for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 03:37:03 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Frederic Pouyet Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 24 May 2013 07:37:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 14458 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: "bug-gnu-emacs@gnu.org" Original-Received: via spool by submit@debbugs.gnu.org id=B.136938101119784 (code B ref -1); Fri, 24 May 2013 07:37:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 24 May 2013 07:36:51 +0000 Original-Received: from localhost ([127.0.0.1]:59481 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UfmYU-000590-CZ for submit@debbugs.gnu.org; Fri, 24 May 2013 03:36:50 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:35580) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1UfmXA-000540-ID for submit@debbugs.gnu.org; Fri, 24 May 2013 03:35:28 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UfmW5-00059f-0L for submit@debbugs.gnu.org; Fri, 24 May 2013 03:34:28 -0400 Original-Received: from lists.gnu.org ([208.118.235.17]:45349) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfmW4-00059V-LU for submit@debbugs.gnu.org; Fri, 24 May 2013 03:34:20 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:46786) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfmVt-0005DE-9A for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 03:34:20 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UfmVm-00052z-Tl for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 03:34:09 -0400 Original-Received: from mx-sanjose.cadence.com ([158.140.2.60]:57402) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UfmVm-00052K-0X for bug-gnu-emacs@gnu.org; Fri, 24 May 2013 03:34:02 -0400 Original-Received: from exowa01eu.global.cadence.com (exowa01eu.Cadence.COM [139.99.37.27]) by mx-sanjose.cadence.com (8.14.4/8.14.4) with ESMTP id r4O7VOUD015388 (version=TLSv1/SSLv3 cipher=RC4-MD5 bits=128 verify=FAIL) for ; Fri, 24 May 2013 00:31:28 -0700 (PDT) Original-Received: from MAILEU2.global.cadence.com ([139.99.37.20]) by exowa01eu.global.cadence.com ([139.99.37.27]) with mapi; Fri, 24 May 2013 09:33:48 +0200 Thread-Topic: 24.3; specman-mode_v1.22.el not compatible with emacs 24.x Thread-Index: Ac5YUQKJ2C5n0eydTC6KVHRetVkCCg== Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-cr-puzzleid: {5E94433B-93FB-49ED-9321-D26C37CBE331} x-cr-hashedpuzzle: BdIi DaZq EWH3 EWMK Fg66 F/fw GeQt G395 HRtW H000 I++m JGmi JoM0 KBzS KSjR K+sL; 1; YgB1AGcALQBnAG4AdQAtAGUAbQBhAGMAcwBAAGcAbgB1AC4AbwByAGcA; Sosha1_v1; 7; {5E94433B-93FB-49ED-9321-D26C37CBE331}; cABvAHUAeQBlAHQAQABjAGEAZABlAG4AYwBlAC4AYwBvAG0A; Fri, 24 May 2013 07:33:40 GMT; MgA0AC4AMwA7ACAAcwBwAGUAYwBtAGEAbgAtAG0AbwBkAGUAXwB2ADEALgAyADIALgBlAGwAIABuAG8AdAAgAGMAbwBtAHAAYQB0AGkAYgBsAGUAIAB3AGkAdABoACAAZQBtAGEAYwBzACAAMgA0AC4AeAA= acceptlanguage: en-US X-Received: by mx-sanjose.cadence.com as r4O7VOUD015388 at Fri May 24 00:31:28 2013 X-detected-operating-system: by eggs.gnu.org: Solaris 10 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Mailman-Approved-At: Fri, 24 May 2013 03:36:48 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:74519 Archived-At: --_007_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: multipart/related; boundary="_006_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_"; type="multipart/alternative" --_006_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: multipart/alternative; boundary="_000_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_" --_000_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello Emacs support team. I am working for an EDA company called Cadence that license a software call= ed specman. Its associated language is called "e". Until emacs 24.x, we were able to have syntax highlighting thanks to specm= an-mode.el (latest version is v1.22 see below) available on website http://= specman-mode.com which is no longer maintained. Although it does not crash or give an error, the specman-mode.el does not w= ork functionally: it does not perform highlighting syntax any longer. This was working on emacs versions prior t= o 24.x. Please advise, I attach specman-mode.el version 1.22 Best regards, Fred [cid:image002.jpg@01CE5861.C60EE520] Frederic Pouyet | Principal Application engineer. System Design and Ver= ification P: 46.856612318 M: 46.730605655 www.cadence.com --_000_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hello Emacs supp= ort team.

 

I am working for an EDA company called Cadence that license a= software called specman. Its associated language is called "e".<= o:p>

Until emacs 24.x, we were able to have = syntax highlighting thanks to  specman-mode.el (latest version is v1.2= 2 see below) available on website http://specman-mode.com which is no longe= r maintained.

 

Although it does not crash or give an error, the specman-m= ode.el does not work functionally: it does not perform

highlighting syntax any longer. This was working on emacs v= ersions prior  to 24.x.

 =

Please advise,

 

I attach sp= ecman-mode.el version 1.22

Best r= egards,

Fred

 

 

=

3D"http://www.cadence.com/m=

3D"ht=

=

 

Frederic Pouyet   = |   Principal Application engineer. Sy= stem Design and Verification

P: 46.856612318   M: 46.73= 0605655   www.cadence.com

 <= /span>

3D"http://www.cadence.com/mail=

<= span style=3D'font-size:10.0pt;font-family:"Times New Roman","serif"'> = ;

 

<= /body>= --_000_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_-- --_006_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: image/gif; name="image001.gif" Content-Description: image001.gif Content-Disposition: inline; filename="image001.gif"; size=64; creation-date="Fri, 24 May 2013 07:33:47 GMT"; modification-date="Fri, 24 May 2013 07:33:47 GMT" Content-ID: Content-Transfer-Encoding: base64 R0lGODlhgAIBAIAAANbW1gAAACH5BAAAAAAALAAAAACAAgEAAAIXhI+py+0Po5y02ouz3rz7D4bi SJbm6RQAOw== --_006_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: image/jpeg; name="image002.jpg" Content-Description: image002.jpg Content-Disposition: inline; filename="image002.jpg"; size=2688; creation-date="Fri, 24 May 2013 07:33:47 GMT"; modification-date="Fri, 24 May 2013 07:33:47 GMT" Content-ID: Content-Transfer-Encoding: base64 /9j/4AAQSkZJRgABAgAAZABkAAD/7AARRHVja3kAAQAEAAAAUAAA/+4AJkFkb2JlAGTAAAAAAQMA FQQDBgoNAAADZwAABlIAAAhiAAAKfv/bAIQAAgICAgICAgICAgMCAgIDBAMCAgMEBQQEBAQEBQYF BQUFBQUGBgcHCAcHBgkJCgoJCQwMDAwMDAwMDAwMDAwMDAEDAwMFBAUJBgYJDQsJCw0PDg4ODg8P DAwMDAwPDwwMDAwMDA8MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM/8IAEQgARwClAwERAAIR AQMRAf/EANQAAQADAQEBAQAAAAAAAAAAAAAFBwgGBAEDAQEBAQEBAQAAAAAAAAAAAAAAAQIDBQQQ AAEEAgAFBAMBAAAAAAAAAAUBAwQGAgcAIFBgEUASFjYwFDQXEQABAwIEBAMCCQ0BAAAAAAABAgME EQUAITESQVEyE2EUBnFCIDCBocEigjMVEFBg0VJysnODszREdDUSAAAEBwAAAAAAAAAAAAAAAAAh MQJAUGBwARESEwEBAAIBAwIHAAMBAAAAAAABEQAhMRBBYSBRMEBQYHGRofDB0fH/2gAMAwEAAhED EQAAAd/AAAAAAAAAAAAAAAAAAAAAAA4Dl7PU786W18/lPUAAACCJ0AAFNnelJZ73ZeVY3NUrotOb JgrVdKpndbuSkVuROmAABj9dfJh5bnSvV+niOuPxOPNKpXCxhxBs5AAAKRLJKKW304s9JPkWSBEl umc1vBKdNBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9oACAEBAAEFAunSLQBiPwp0UjH4weZc y/A2SgvSuayXKGAkB57pQcctajJIafCJjT94aDlNZyMJZyxWOHW4dfuDZmdarJhVx8PY7Tk9VREb 2E1NJkiMUTBG7CZmT2BMOPM5g/ty2oq+EklT9vHa0+o1v2f6Xr1ESy7C/dW1DKxaPlW2vrewf5bS r2Nc1gkf4ltZXPi7tYuR1jnsdJinZoiA6NHv63aR2uA8a6KOUlgqUrFQStybJWYNmiAa3OESLTXG 7QPPVFo61ljjnjF15iNIFBkQxBE0iWKf7E//2gAIAQIAAQUC6d704RfPpPHfX//aAAgBAwABBQLp 2A9/NHWsmsvRo5knCqq98//aAAgBAgIGPwK3v//aAAgBAwIGPwKXbw0hy5YRQdc//9oACAEBAQY/ Avzc7GkXBLbzKtrqNizQ/InCZUN3vsLqEuAEaZHWn5FpbdQ4pvrSlQJHt+JchNyErlNdbWfDXw+G xARFdud1k5twGNaHSpzxHmvwnLc69u3w3epG1RTnkOWJiz6OflwYjmyTdFJCUk8SPqnLxxFn29Oy LJTuQim3bzBA5HDVnh2168XAp3yGWPcTryNTTPHq6U2kpRJcS4lKslAKW4c8IkyUrfefX24cNvrd XyGJNpl256z3WMnueTf95HMZDnhqeuIqYlx4M9tKtlKgmtaHliFCudjlWhNwIEeQ6apJVkPdTlgk mgGpx5K0WaVc4iHksv3JvoTuNN2hyxIuE1ztxoydziuPgB4nEGJNtEm1MXX/AMuY90u8BwGuHZzS VB52tRX6orrQfDvnmfvksHye791vT7OCToNcep5zNxTbLHbUuNpgIbClvAJrRajpUYgfzHv7hx6p 7/8Akdtfl6/s1R9GPWwAoBI0/quY9JJiONtOf6a5H3Qe7g1+bEX1FepcFztNKZdEbcCU7SBltHPE b/ub/gXj0MePcGfyNYvhYr3RCe2016TX5sRezTeXnvNU137uP2aYTs6TMa7vsor6aYsLkmdazDt5 afhdnckhFE00RyHxDN1YnPWm6sAATGM6gaVFRmPbhiE/NcuTrW7uTHute5ROevPFw/Db7LtcO5Em TAQNyDXhqMsNWtEgyksqWoOqTtP1zXTDd6h3KRZ7klOxyRH98AU8OGWLjK/E3Lg7ctveLiAk7gSa 1qda4bjy1LZdjq3xJbfW2r9RwZEz1HMvA7XaaYeyQnMZ9Ss8sN29yUqIlt5L3cSndoCKUy54srS5 q4/4MoKQQgK39OueXThSFgKQsUUk8QceZtV+mW+Cp5LrttR0q2mu3duGXDTEi3Tm+5GkiixxHEEe IxF2eqZztuhuBbVtOScvdJ3afJ+gv//aAAgBAQMBPyH6c4A2qnkqGBLVQBfAVz0fOUYHwHXwTLgp lGnKVLuPrHdpxmwpRYwBfwZ74WBuQcmxrhxlcgtkFN6eTgeovKVTWBBHCjwaixrpewSBN4X7v9Bo 7Jd5zQRSz9Ad3/aGWJ5JXRsrSGTjZkw48pb8w3PY+ALHYU2WYCYVTQB3clh20kyDV5qlM0TrhV2B 3Rge+c8uUNnwlQEXafnPd6o5uvJ/NyX1pl0HwBc/y47XA1IKvBjZF0KuQdwnvA10y/7MD2f64TgG DQYuxKpqwLq/5MtJ3Drbyd7b6K/xTzs1bFBxHE/bAJvryOfn/GYQqnz55fE4VOzi0IYOrx8AbSFV zdGGqDWm57gOiO4uGhvjFI4BCu99synGrhT+mNWYXi4BRsR0BSofJs7ZPrFeD2LKeasDZo5l5gU8 HcwrTWhimrTguGTSma78cQlugYh5DF2qDqAiJ5xTvicA3HYckzvmjoMYg0+yFHJ+YVcdBIfcAPsX /9oACAECAwE/IfpyPfAFPlI++v/aAAgBAwMBPyH6cRuXGz/uRjP8e3yg0H+3HKq9H0TpOk+G9HqY dHD4d+Dfsf8A/9oADAMBAAIRAxEAABAAAAAAAAAAAAAAAAAAAAAAAA8AAAACAAAUfmEkQAQAAACU QCUwAAAAUQ022iQgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/aAAgBAQMBPxD6c/dkO1VfzwuE HvRqhKwJs6bUsPKSPLom/gl/NkFiGUQAid+H1xXJvUBkTpoCpBRoMb9UKKHaGjOKOMewsoAj4x3/ ALsnNsQKKUU3jDtIRUBRNQQnaBFedhcdTSC84RtRICsW7BoZQBQBxE85aoAIXNRLIdk3h7FQsk75 crlwMnEsvsFJvHAKfAFUdAHLgV+lnqtLRKoWBvKQO5RAPEl3yM7VV/PoQDAWB0mAIHQlgidKrFSo Uvqj6c8j8wLn+C41FLmQKuP8638YMkUQeROJbtgGHaP9FX4/zwSyRgHCBxl4VEDwe3ZcFxqSKryK sCp4h7dNpNXQnYrO+eQxyn9fIkbpTWbN2saS0ezFwfc7LxJn/sJkDKDPcrwMHYN/AFUBClAqwhzs AQPMOmuUMgxVAGVJGHgNYkgiLYYRmv0KsfZFu8JW4W0PGdiQAOlxj1oYoQWK45VyQACWhKctBAcH wCTWEwRBJpffBvRB/wAxo229scgIIc0dicXnxh6w9Ki7SBRHLYpyOCgo2cdVjmiYLaNZabSbE1iu B8Vxoi8iex9i/wD/2gAIAQIDAT8Q+nOo7H5ygKfKKdjADR98/wD/2gAIAQMDAT8Q+nL/AA1Ro94h xhDRSjyU2k48/JBccCAhwAB/cRoTutf24HQFxMC+oX1vHSTOWPHQcZSZy6DOWcsofAGY9C3Bxbgz FwZgz0F+xf/Z --_006_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_-- --_007_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_ Content-Type: application/octet-stream; name="specman-modev122.el" Content-Description: specman-modev122.el Content-Disposition: attachment; filename="specman-modev122.el"; size=190139; creation-date="Wed, 22 May 2013 14:06:18 GMT"; modification-date="Wed, 22 May 2013 14:05:38 GMT" Content-Transfer-Encoding: base64 OzsgQCgjKSBzcGVjbWFuLW1vZGUuZWwgLS0gTW9kZSBmb3IgZWRpdGluZyBzcGVjbWFuIGZpbGVz Cjs7IEAoIykgJElkOiBzcGVjbWFuLW1vZGUuZWwsdiAxLjIyIDIwMDUvMDgvMDggMTQ6Mzk6MTMg dXJpbSBFeHAgJAo7OyBAKCMpICRLZXl3b3JkczogdG9vbHMgJAo7OyAkS25vd25Db21wYXRpYmls aXR5OiAxOS4yOCAkCgo7OyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgRW1hY3MKCgo7OyBDb3B5 cmlnaHQgKEMpIDIwMDYgQ2FkZW5jZSBEZXNpZ24gU3lzdGVtcywgSW5jLgo7OyBBdXRob3JzOiAg ICAgIFVyaSBNYW96IDx1cmltQGNhZGVuY2UuY29tPgo7OyAgICAgICAgICAgICAgIE1pY2hhZWwg TWNOYW1hcmEgPG1hY0BjYWRlbmNlLmNvbT4KOzsgICAgICAgICAgICAgICBZYXJvbiBQZXJpIDx5 cGVyaUBjYWRlbmNlLmNvbT4KOzsgTWFpbnRhaW5lcjogICAKOzsgQ3JlYXRlZDogICAgICBNYXkg NSAyMDAwCgoKOzsgTENEIEFyY2hpdmUgRW50cnk6Cjs7IHNwZWNtYW4tbW9kZXxNaWNoYWVsIE1j TmFtYXJhfG1hY0B2ZXJpc2l0eS5jb218Cjs7IFNwZWNtYW4gTWFqb3IgbW9kZS4gYXV0byBpbmRl bnRzLCBjb2xvcml6ZXMsIGNvZGUgaW4gdGhlICdlIGxhbmd1YWdlfAo7OyAwNS1NYXktMjAwMHwk UmV2aXNpb246IDEuMjIgJHx+L21pc2Mvc3BlY21hbi1tb2RlLmVsLlp8Cgo7OyBDT1BZUklHSFQg Tk9USUNFCjs7Cjs7IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz dHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Cjs7IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlCjs7IFNvZnR3 YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5 b3VyIG9wdGlvbikKOzsgYW55IGxhdGVyIHZlcnNpb24uCjs7Cjs7IFRoaXMgcHJvZ3JhbSBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKOzsgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBN RVJDSEFOVEFCSUxJVFkKOzsgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGZvciBtb3JlIGRldGFpbHMuCjs7 Cjs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFsb25nCjs7IHdpdGggR05VIEVtYWNzLiAgSWYgeW91IGRpZCBub3QsIHdy aXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCjs7IEluYy4sIDY3NSBNYXNzIEF2 ZS4sIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KCjs7Cjs7ID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Cjs7IFNQRUNNQU4gTU9ERSAtIEEgTWFqb3IgbW9kZSBmb3Igd3JpdGluZyBpbiAnZScKOzsgPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KOzsKCjs7IC4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4u Li4uLi4uLi4uLi4uLi4uLi4uLi4uLi4gJnQtaW5zdGFsbCAuLi4KOzsgUHV0IHRoaXMgZmlsZSBv biB5b3VyIEVtYWNzLUxpc3AgbG9hZCBwYXRoLCBhZGQgZm9sbG93aW5nIGludG8geW91cgo7OyB+ Ly5lbWFjcyBzdGFydHVwIGZpbGUKOzsKOzsgICAocmVxdWlyZSAnc3BlY21hbi1tb2RlKQo7Owo7 OyBPciBhZGQgdGhlIGZvbGxvd2luZyBjb2RlIHRvIHlvdXIgLmVtYWNzOgo7OyAgCjs7IChhdXRv bG9hZCAnc3BlY21hbi1tb2RlICJzcGVjbWFuLW1vZGUiICJTcGVjbWFuIGNvZGUgZWRpdGluZyBt b2RlIiB0KSAKOzsKOzsgKHNldHEgYXV0by1tb2RlLWFsaXN0IAo7OyAgICAgICAocmVtb3ZlLWR1 cGxpY2F0ZXMKOzsgICAgICAgIChhcHBlbmQgKGxpc3QgCjs7ICAgICAgICAgICAgICAgICAoY29u cyAiXFwuZVxcJyIgJ3NwZWNtYW4tbW9kZSkKOzsgICAgICAgICAgICAgICAgIChjb25zICJcXC5l Y29tXFwnIiAnc3BlY21hbi1tb2RlKQo7OyAgICAgICAgICAgICAgICAgKGNvbnMgIlxcLmVybGRc XCciICdzcGVjbWFuLW1vZGUpKQo7OyAgICAgICAgICAgICAgICBhdXRvLW1vZGUtYWxpc3QpKSkK OzsgCjs7Cjs7OyBDb21tZXRhcnk6Cjs7Cjs7ICBzcGVjbWFuLW1vZGUgaXMgYSBtYWpvciBtb2Rl IGZvciBlZGl0aW5nIGNvZGUgd3JpdHRlbiBpbiB0aGUgJ2UnIGxhbmd1YWdlCjs7CgooZGVmY29u c3Qgc3BlY21hbi1tb2RlLXZlcnNpb24gIiQkUmV2aXNpb246IDEuMjIgJCQiCiAgIlZlcnNpb24g b2YgdGhpcyBTcGVjbWFuIG1vZGUuIikKCihkZWZ1biBzcGVjbWFuLXZlcnNpb24gKCkKICAiSW5m b3JtIGNhbGxlciBvZiB0aGUgdmVyc2lvbiBvZiB0aGlzIGZpbGUiCiAgKGludGVyYWN0aXZlKQog IChtZXNzYWdlIChjb25jYXQgIlVzaW5nIHNwZWNtYW4tbW9kZSB2ZXJzaW9uICIgCgkJICAgKHN1 YnN0cmluZyBzcGVjbWFuLW1vZGUtdmVyc2lvbiAxMiAtMyApKSApCiAgKQoKKGF1dG9sb2FkICdz cGVjbWFuLW1vZGUgInNwZWNtYW4tbW9kZSIgIlNwZWNtYW4gY29kZSBlZGl0aW5nIG1vZGUiIHQp IAoKKHNldHEgYXV0by1tb2RlLWFsaXN0IAogICAgICAocmVtb3ZlLWR1cGxpY2F0ZXMKICAgICAg IChhcHBlbmQgKGxpc3QgCiAgICAgICAgICAgICAgICAoY29ucyAiXFwuZVxcJyIgJ3NwZWNtYW4t bW9kZSkKICAgICAgICAgICAgICAgIChjb25zICJcXC5lY29tXFwnIiAnc3BlY21hbi1tb2RlKQog ICAgICAgICAgICAgICAgKGNvbnMgIlxcLmVybGRcXCciICdzcGVjbWFuLW1vZGUpKQogICAgICAg ICAgICAgICBhdXRvLW1vZGUtYWxpc3QpKSkKCihhZGQtaG9vayAnc3BlY21hbi1tb2RlLWhvb2sK CSAgKGxhbWJkYSAoKQogICAgICAgICAgICAodHVybi1vbi1mb250LWxvY2spCgkgICAgKHNldHEg aW5kZW50LXRhYnMtbW9kZSBuaWwpCgkgICAgKHNldHEgd3JpdGUtZmlsZS1ob29rcyBuaWwpKSkK CihhZGQtaG9vayAnc3BlZWRiYXItbG9hZC1ob29rCiAgICAgICAgICAobGFtYmRhICgpCiAgICAg ICAgICAgIChzcGVlZGJhci1hZGQtc3VwcG9ydGVkLWV4dGVuc2lvbiAiLmUiKSkpCgooZGVmbWFj cm8gc3BlY21hbi1zYWZlICgmcmVzdCBib2R5KQogICJTYWZlbHkgZXhlY3V0ZSBCT0RZLCByZXR1 cm4gbmlsIGlmIGFuIGVycm9yIG9jY3VycmVkLiIKICBgKGNvbmRpdGlvbi1jYXNlIG5pbAogICAg ICAgKHByb2duICxAYm9keSkKICAgICAoZXJyb3IgbmlsKSkpCgooaWYgKGZib3VuZHAgJ2V2YWwt d2hlbi1jb21waWxlKQogICAgKGV2YWwtd2hlbi1jb21waWxlCiAgICAgIChjb25kaXRpb24tY2Fz ZSBuaWwKICAgICAgICAgIChyZXF1aXJlICdjbCkJOzsgRlNGIGVtYWNzJ3MgaW1lbnUgbmVlZHMg Y2wsIGJ1dCBkb2Vzbid0IChyZXF1aXJlICdjbCkKICAgICAgICAoZXJyb3IgbmlsKSkKICAgICAg KGNvbmRpdGlvbi1jYXNlIG5pbAogICAgICAgICAgKHJlcXVpcmUgJ2ltZW51KQogICAgICAgIChl cnJvciBuaWwpKQogICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCgkgICh1bmxlc3MgKGZib3VuZHAg J2ltZW51LWFkZC10by1tZW51YmFyKQoJICAgIChkZWZ1biBpbWVudS1hZGQtdG8tbWVudWJhciAo YSkgKSkKCShlcnJvciBuaWwpKQogICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCgkgIChyZXF1aXJl ICdyZXBvcnRlcikKICAgICAgICAoZXJyb3IgbmlsKSkKICAgICAgKGNvbmRpdGlvbi1jYXNlIG5p bAoJICAoaWYgKGJvdW5kcCAnY3VycmVudC1tZW51YmFyKQoJICAgICAgbmlsIDs7IGdyZWF0Cgkg ICAgKGRlZm1hY3JvIHNldC1idWZmZXItbWVudWJhciAoJnJlc3QgYXJncykgbmlsKQoJICAgIChk ZWZtYWNybyBhZGQtc3VibWVudSAoJnJlc3QgYXJncykgbmlsKSkKCShlcnJvciBuaWwpKQogICAg ICAoY29uZGl0aW9uLWNhc2UgbmlsCgkgIChyZXF1aXJlICdmdW5jLW1lbnUpCgkoZXJyb3Igbmls KSkKICAgICAgKGNvbmRpdGlvbi1jYXNlIG5pbAoJICAodW5sZXNzIChmYm91bmRwICdjaGFyPSkK CSAgICAoZGVmdW4gY2hhcj0gKGEgYikKCSAgICAgICg9IGEgYikpKQoJKGVycm9yIG5pbCkpCiAg ICAgIChpZiAoYW5kIChmZWF0dXJlcCAnY3VzdG9tKSAoZmJvdW5kcCAnY3VzdG9tLWRlY2xhcmUt dmFyaWFibGUpKQoJICBuaWwgOzsgV2UndmUgZ290IHdoYXQgd2UgbmVlZGVkCgk7OyBXZSBoYXZl IHRoZSBvbGQgY3VzdG9tLWxpYnJhcnksIGhhY2sgYXJvdW5kIGl0IQoJKGRlZm1hY3JvIGRlZmdy b3VwICgmcmVzdCBhcmdzKSAgbmlsKQoJKGRlZm1hY3JvIGN1c3RvbWl6ZSAoJnJlc3QgYXJncykK CSAgKG1lc3NhZ2UgIlNvcnJ5LCBDdXN0b21pemUgaXMgbm90IGF2YWlsYWJsZSB3aXRoIHRoaXMg dmVyc2lvbiBvZiBlbWFjcyIpKQoJKGRlZm1hY3JvIGRlZmN1c3RvbSAodmFyIHZhbHVlIGRvYyAm cmVzdCBhcmdzKQoJICAoYCAoZGVmdmFyICgsIHZhcikgKCwgdmFsdWUpICgsIGRvYykpKSkKCSkK ICAgICAgKGlmIChmYm91bmRwICdkZWZmYWNlKQoJICBuaWwgOzsgZ3JlYXQhCgkoZGVmbWFjcm8g ZGVmZmFjZSAodmFyIHZhbHVlIGRvYyAmcmVzdCBhcmdzKQoJICAoYCAobWFrZS1mYWNlICgsIHZh cikpKSkKCSkKICAgICAgKGlmIChhbmQgKGZlYXR1cmVwICdjdXN0b20pIChmYm91bmRwICdjdXN0 b21pemUtZ3JvdXApKQoJICBuaWwgOzsgV2UndmUgZ290IHdoYXQgd2UgbmVlZGVkCgk7OyBXZSBo YXZlIGFuIGludGVybWVkaWF0ZSBjdXN0b20tbGlicmFyeSwgaGFjayBhcm91bmQgaXQhCgkoZGVm bWFjcm8gY3VzdG9taXplLWdyb3VwICh2YXIgJnJlc3QgYXJncykKCSAgKGAoY3VzdG9taXplICgs IHZhcikgKSkpCgkpCiAgICAgIChpZiAoYW5kIChmZWF0dXJlcCAnY3VzdG9tKSAoZmJvdW5kcCAn Y3VzdG9tLWRlY2xhcmUtdmFyaWFibGUpKQoJICBuaWwgOzsgV2UndmUgZ290IHdoYXQgd2UgbmVl ZGVkCgk7OyBXZSBoYXZlIHRoZSBvbGQgY3VzdG9tLWxpYnJhcnksIGhhY2sgYXJvdW5kIGl0IQoJ KGRlZm1hY3JvIGRlZmdyb3VwICgmcmVzdCBhcmdzKSAgbmlsKQoJKGRlZm1hY3JvIGN1c3RvbWl6 ZSAoJnJlc3QgYXJncykKCSAgKG1lc3NhZ2UgIlNvcnJ5LCBDdXN0b21pemUgaXMgbm90IGF2YWls YWJsZSB3aXRoIHRoaXMgdmVyc2lvbiBvZiBlbWFjcyIpKQoJKGRlZm1hY3JvIGRlZmN1c3RvbSAo dmFyIHZhbHVlIGRvYyAmcmVzdCBhcmdzKQoJICAoYCAoZGVmdmFyICgsIHZhcikgKCwgdmFsdWUp ICgsIGRvYykpKSkKCSkKICAgICAgCiAgICAgIChpZiAoYW5kIChmZWF0dXJlcCAnY3VzdG9tKSAo ZmJvdW5kcCAnY3VzdG9taXplLWdyb3VwKSkKCSAgbmlsIDs7IFdlJ3ZlIGdvdCB3aGF0IHdlIG5l ZWRlZAoJOzsgV2UgaGF2ZSBhbiBpbnRlcm1lZGlhdGUgY3VzdG9tLWxpYnJhcnksIGhhY2sgYXJv dW5kIGl0IQoJKGRlZm1hY3JvIGN1c3RvbWl6ZS1ncm91cCAodmFyICZyZXN0IGFyZ3MpCgkgIChg KGN1c3RvbWl6ZSAoLCB2YXIpICkpKQoJKQogICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCiAgICAg ICAgICAocmVxdWlyZSAnZWFzeW1lbnUpCiAgICAgICAgKGVycm9yIG5pbCkpKSkKCjs7IElmIHlv dSBpbnN0YWxsIHhlbWFjcy1kZXZlbCwgeW91IHdpbGwgZ2V0IGEgMTAtMjAlIHNwZWVkdXAuCjs7 IGlmIG5vdCwgeW91IGdldCB0aGlzOgoodW5sZXNzIChmYm91bmRwICdyZWdleHAtb3B0KQogIChk ZWZ1biByZWdleHAtb3B0IChzdHJpbmdzICZvcHRpb25hbCBwYXJlbikKICAgIChsZXQgKChvcGVu IChpZiBwYXJlbiAiXFwoIiAiIikpCiAgICAgICAgICAoY2xvc2UgKGlmIHBhcmVuICJcXCkiICIi KSkKICAgICAgICAgICkKICAgICAgKGNvbmNhdCBvcGVuIChtYXBjb25jYXQgJ3JlZ2V4cC1xdW90 ZSBzdHJpbmdzICJcXHwiKSBjbG9zZSkpKSkKCjs7IFRPRE86IHRoaXMgaXMgYWxzbyBkZWZpbmVk IGFib3ZlLCBub3Qgc3VyZSB3aHkKKHVubGVzcyAoZmJvdW5kcCAnY2hhcj0pCiAgKGRlZnVuIGNo YXI9IChhIGIpCiAgICAoPSBhIGIpKSkKCihpZiAobm90IChib3VuZHAgJ2ltZW51LWdlbmVyaWMt ZXhwcmVzc2lvbikpCiAgICAoZGVmdmFyIGltZW51LWdlbmVyaWMtZXhwcmVzc2lvbikpCgoodW5s ZXNzIChib3VuZHAgJ2ZvbnQtbG9jay1jb25zdGFudC1mYWNlKQogIChtYWtlLWZhY2UgJ2ZvbnQt bG9jay1jb25zdGFudC1mYWNlKQogIChzZXQtZmFjZS1mb3JlZ3JvdW5kICdmb250LWxvY2stY29u c3RhbnQtZmFjZSAiQ2FkZXRCbHVlIikpCgooaWYgKDwgbWF4LXNwZWNwZGwtc2l6ZSAzMDAwKSAK ICAgIChzZXRxIG1heC1zcGVjcGRsLXNpemUgMzAwMCkpCgoKOzsgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7OyBTUEVDTUFOIENVU1RPTUlaQUJMRSBW QVJTCjs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K Ozs7IC0gQ3VzdG9taXphYmxlIHZhcmlhYmxlcwoKKGRlZmdyb3VwIHNwZWNtYW4tbW9kZSBuaWwK ICAiRmFjaWxpdGF0ZXMgZWFzeSBlZGl0aW5nIG9mIFNwZWNtYW4gc291cmNlIHRleHQiCiAgOmdy b3VwICdsYW5ndWFnZXMKICApCgooZGVmY3VzdG9tIHNwZWNtYW4tYmFzaWMtb2Zmc2V0IDMKICAi KkluZGVudGF0aW9uIG9mIFNwZWNtYW4gc3RhdGVtZW50cyB3aXRoIHJlc3BlY3QgdG8gY29udGFp bmluZyBibG9jay4iCiAgOmdyb3VwICdzcGVjbWFuLW1vZGUKICA6dHlwZSAnaW50ZWdlcgogICkK CihkZWZjb25zdCBzcGVjbWFuLXRhYi13aWR0aCBzcGVjbWFuLWJhc2ljLW9mZnNldAogICIqVGFi IHN0b3Agd2lkdGgiCiAgKQoKKGRlZmN1c3RvbSBzcGVjbWFuLWNvbnRpbnVlZC1saW5lLW9mZnNl dCAyCiAgIipJbmRlbnRhdGlvbiBvZiBjb250aW51ZWQgU3BlY21hbiBzdGF0ZW1lbnRzIHdpdGgg cmVzcGVjdCB0byBmaXJzdCBsaW5lIG9mIHN0YXRlbWVudC4iCiAgOmdyb3VwICdzcGVjbWFuLW1v ZGUKICA6dHlwZSAnaW50ZWdlcgogICkKCihkZWZjdXN0b20gc3BlY21hbi1hdXRvLW5ld2xpbmUg bmlsCiAgIipPTiAob3Igbm9uIG5pbCkgbWVhbnMgdG8gYXV0b21hdGljYWxseSBuZXdsaW5lIGFm dGVyIGluc2VydGluZyBhIHNlbWljb2xvbi4iCiAgOmdyb3VwICdzcGVjbWFuLW1vZGUKICA6dHlw ZSAnYm9vbGVhbgogICkKCihkZWZjdXN0b20gc3BlY21hbi1hdXRvLWVuZGNvbW1lbnRzIG5pbAog ICIqT04gKG9yIG5vbiBuaWwpIG1lYW5zIHRvIGF1dG9tYXRpY2FsbHkgYWRkIGEgY29tbWVudCB3 aGVuIGNsb3NpbmcgYSBjb2RlIGJsb2NrLiIKICA6Z3JvdXAgJ3NwZWNtYW4tbW9kZQogIDp0eXBl ICdib29sZWFuCiAgKQoKKGRlZmN1c3RvbSBzcGVjbWFuLWF1dG8tZW5kY29tbWVudHMtZm9yLW1h am9yLXNjb3Blcy1vbmx5IHQKICAiKk9OIChvciBub24gbmlsKSBtZWFucyB0aGF0IGVuZC1jb21t ZW50cyBhcmUgb25seSBhcHBsaWVkIHRvIHN0cnVjdCBhbmQgbWV0aG9kIHNjb3Blcy4iCiAgOmdy b3VwICdzcGVjbWFuLW1vZGUKICA6dHlwZSAnYm9vbGVhbgogICkKCihkZWZjdXN0b20gc3BlY21h bi1hdXRvLWVuZGNvbW1lbnRzLWtpbGwtZXhpc3RpbmctY29tbWVudCB0CiAgIipPTiAob3Igbm9u IG5pbCkgbWVhbnMgdGhhdCByZWRvaW5nIGFuIGVuZC1jb21tZW50IHJlcGxhY2VzIGFuIGV4aXN0 aW5nIGVuZC1jb21tZW50LiIKICA6Z3JvdXAgJ3NwZWNtYW4tbW9kZQogIDp0eXBlICdib29sZWFu CiAgKQoKKGRlZmN1c3RvbSBzcGVjbWFuLW1heC1saW5lLWxlbmd0aCAxNTAKICAiKlRoZSBtYXhp bXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGJlIGluIGEgbGluZS4iCiAgOmdy b3VwICdzcGVjbWFuLW1vZGUKICA6dHlwZSAnaW50ZWdlcgogICkKCihkZWZjdXN0b20gc3BlY21h bi1oaWdobGlnaHQtYmV5b25kLW1heC1saW5lLWxlbmd0aCB0CiAgIipPTiAob3Igbm9uIG5pbCkg bWVhbnMgdG8gaGlnaGxpZ2h0IHRleHQgYmV5b25kIHNwZWNtYW4tbWF4LWxpbmUtbGVuZ3RoLiIK ICA6Z3JvdXAgJ3NwZWNtYW4tbW9kZQogIDp0eXBlICdib29sZWFuCiAgKQoKKGRlZmZhY2Ugc3Bl Y21hbi1oaWdobGlnaHQtYmV5b25kLW1heC1saW5lLWxlbmd0aC1mYWNlCiAgJygodCAoOnVuZGVy bGluZSB0KSkpCiAgIkZhY2UgdXNlZCB0byBoaWdobGlnaHQgdGV4dCBiZXlvbmQgdGhlIGRlZmlu ZWQgbWF4aW11bSBsaW5lIGxlbmd0aC4iCiAgOmdyb3VwICdzcGVjbWFuLW1vZGUKICApCgooZGVm Y3VzdG9tIHNwZWNtYW4taGlnaGxpZ2h0LXB1bmN0dWF0aW9uIHQKICAiKk9OIChvciBub24gbmls KSBtZWFucyB0byBoaWdobGlnaHQgcHVuY3R1YXRpb24gc3ltYm9scy4iCiAgOmdyb3VwICdzcGVj bWFuLW1vZGUKICA6dHlwZSAnYm9vbGVhbgogICkKCihkZWZmYWNlIHNwZWNtYW4tcHVuY3R1YXRp b24tZmFjZQogICcoKHQgKDpmb3JlZ3JvdW5kICJTdGVlbEJsdWUiKSkpCiAgIkZhY2UgdXNlZCB0 byBoaWdobGlnaHQgcHVuY3R1YXRpb24gc3ltYm9scyAtIHNpZ25pZmljYW50IGJlY2F1c2UgdGhl eSBhcmUgbW9zdGx5IGEgc2luZ2xlIGNoYXIuIgogIDpncm91cCAnc3BlY21hbi1tb2RlCiAgKQoK KGRlZmN1c3RvbSBzcGVjbWFuLWNvbXBpbGUtY29tbWFuZCAiJHtTUEVDTUFOX0hPTUV9L2Jpbi9z bl9jb21waWxlLnNoICIKICAiU3RyaW5nIHVzZWQgdG8gY29tcGlsZSBlIGZpbGVzLiIKICA6Z3Jv dXAgJ3NwZWNtYW4tbW9kZQogICkKCihkZWZjdXN0b20gc3BlY21hbi1tYWtlLWNvbW1hbmQgIi91 c3IvYmluL21ha2UgIgogICJTdHJpbmcgdXNlZCB0byBpbnZva2UgbWFrZSIKICA6Z3JvdXAgJ3Nw ZWNtYW4tbW9kZQogICkKCihkZWZjdXN0b20gc3BlY21hbi1pbmRleC1tZW51LWFjdGl2ZSB0CiAg IipPTiAob3Igbm9uIG5pbCkgbWVhbnMgdGhhdCB0aGUgJ1NwZWNtYW4tSW5kZXgnIG1lbnUgaXMg YWN0aXZlLiIKICA6Z3JvdXAgJ3NwZWNtYW4tbW9kZQogIDp0eXBlICdib29sZWFuCiAgKQoKKGRl ZmN1c3RvbSBzcGVjbWFuLWRhdGUtc2NpZW50aWZpYy1mb3JtYXQgbmlsCiAgIipJZiBub24tbmls LCBkYXRlcyBhcmUgd3JpdHRlbiBpbiBzY2llbnRpZmljIGZvcm1hdCAoZS5nLiAxOTk3LzA5LzE3 KSwKaW4gZXVyb3BlYW4gZm9ybWF0IG90aGVyd2lzZSAoZS5nLiAxNy4wOS4xOTk3KS4gVGhlIGJy YWluZGVhZCBhbWVyaWNhbgpmb3JtYXQgKGUuZy4gMDkvMTcvMTk5NykgaXMgbm90IHN1cHBvcnRl ZC4iCiAgOmdyb3VwICdzcGVjbWFuLW1vZGUKICA6dHlwZSAnYm9vbGVhbgogICkKCihkZWZjdXN0 b20gc3BlY21hbi1jb21wYW55ICJBQ01FIENvbXBhbnkiCiAgIipEZWZhdWx0IG5hbWUgb2YgQ29t cGFueSBmb3Igc3BlY21hbiBoZWFkZXIuIElmIHNldCB3aWxsIGJlY29tZSBidWZmZXIgbG9jYWwu ICIKICA6Z3JvdXAgJ3NwZWNtYW4tbW9kZQogIDp0eXBlICdzdHJpbmcgIAogICkKCihkZWZjdXN0 b20gc3BlY21hbi1wcm9qZWN0ICJSb2FkcnVubmVyIgogICIqRGVmYXVsdCBuYW1lIG9mIFByb2pl Y3QgZm9yIHNwZWNtYW4gaGVhZGVyLiBJZiBzZXQgd2lsbCBiZWNvbWUgYnVmZmVyIGxvY2FsLiIK ICA6Z3JvdXAgJ3NwZWNtYW4tbW9kZQogIDp0eXBlICdzdHJpbmcgIAogICkKCgo7OyA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cjs7IFNQRUNNQU4gUkVH VUxBUiBFWFBSRVNTSU9OUwo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CgooZGVmY29uc3Qgc3BlY21hbi1leC1jb2RlLXJlZ2V4cCAiXlxcKD86XFwo Jz5cXClcXHxcXCg8J1xcKVxcKSIgCiAgIlJlZ3VsYXIgRXhwcmVzc2lvbiB0aGF0IG1hdGNoZXMg ZXgtY29kZSB0b2tlbnMiKQoKOzsgTWF0dGhldyBMb3ZlbGwgPGxvdmVsbEBmYy5ocC5jb20+Cjs7 ICAgVXAgdG8gb25lIGxldmVsIG9mIHBhcmVudGhlc2VzIGlzIGFsbG93ZWQgaW4gdGhlIHBhcmFt ZXRlcgo7OyAgIGxpc3QgdG8gYSBtZXRob2QuICBUaGUgcmVnZXggcGF0dGVybiBmb3IgdGhhdCBw b3J0aW9uIGlmCjs7ICAgZnJvbSBKLiBGcmllZGwncyAiTWFzdGVyaW5nIFJlZ3VsYXIgRXhwcmVz c2lvbnMiCgooZGVmY29uc3Qgc3BlY21hbi1sZWdhbC1uYW1lLXJlZ2V4cCAiXFwoPzpbYS16QS1a XVthLXpBLVowLTlfXSpcXCkiCiAgImUgbGVnYWwgbmFtZSIpCgooZGVmY29uc3Qgc3BlY21hbi1t ZXRob2QtZGVmaW5pdGlvbi1yZWdleHAKICAiXFwoPzpcXCg/OnByaXZhdGVcXHxwYWNrYWdlXFx8 cHJvdGVjdGVkXFwpWyBcdFxuXStcXCk/XFwoW0EtWmEtejAtOV9dK1xcKVsgXHRcbl0qKFteKCld KlxcKD86KFteKCldKilbXigpXSpcXCkqKVteLS87XSo/WyBcdFxuXStpc1thLXogXHRcbl0qeyIK ICAiUmVnZXhwIHRoYXQgaWRlbnRpZmllcyBtZXRob2RzIChhcmcgMSkiKQoKKGRlZmNvbnN0IHNw ZWNtYW4tb24tZXZlbnQtbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwCiAgIlxcKG9uWyBcdFxuXStb QS1aYS16MC05X10rXFwpWyBcdFxuXSp7IgogICJSZWdleHAgdGhhdCBpZGVudGlmaWVzIG9uLWV2 ZW50IG1ldGhvZHMgKGFyZyAxKSIpCgooZGVmY29uc3Qgc3BlY21hbi1jbGFzcy1kZWZpbml0aW9u LXJlZ2V4cAogIChjb25jYXQKICAgIlxcKCIKICAgIlxcKD86XFwoPzpwYWNrYWdlWyBcdFxuXSpc XCk/c3RydWN0WyBcdFxuXStbQS1aYS16MC05X10rXFwpIgogICAiXFx8IgogICAiXFwoPzpleHRl bmRbIFx0XG5dK1tee10rXFwpIgogICAiXFx8IgogICAiXFwoPzpcXCg/OnBhY2thZ2VbIFx0XG5d KlxcKT91bml0WyBcdFxuXStbQS1aYS16MC05X10rXFwpIgogICAiXFwpIikKICAiUmVnZXhwIHRo YXQgaWRlbnRpZmllcyBtYWpvciBjbGFzcyBzY29wZXMgKGFyZyAxKSIpCgooZGVmY29uc3Qgc3Bl Y21hbi13aGVuLXN1YnR5cGUtZGVmaW5pdGlvbi1yZWdleHAKICAiXFwod2hlblsgXHRcbl0rW157 XStcXCkiCiAgIlJlZ2V4cCB0aGF0IGlkZW50aWZpZXMgd2hlbiBzdWJ0eXBlcyAoYXJnIDEpIikK CihkZWZjb25zdCBzcGVjbWFuLWRlZmluZS1yZWdleHAKICAiXFwoZGVmaW5lWyBcdF0qPFtePl0r PlxcKSIKICAiUmVnZXhwIHRoYXQgaWRlbnRpZmllcyBkZWZpbmUgc2NvcGVzIChhcmcgMSkiKQoK KGRlZmNvbnN0IHNwZWNtYW4tbWFjcm8tYW5kLWRlZmluZS1yZWdleHAKICAgIlxcKFxcKD86Iz9k ZWZpbmVcXHwjaWZuP2RlZlxcfCNlbHNlXFwpWyBcdFxuXStbXiBcdFxuXStcXCkiCiAgIlJlZ2V4 cCB0aGF0IGlkZW50aWZpZXMgbWFjcm8gYW5kIGRlZmluZSBzY29wZXMgKGFyZyAxKSIpCgooZGVm Y29uc3Qgc3BlY21hbi10b3AtbGV2ZWwtY29udGFpbmVyLWRlZmluaXRpb24tcmVnZXhwCiAgKGNv bmNhdAogICAiXFwoIgogICAiXFwoPzpcXCg/OnBhY2thZ2VbIFx0XG5dKlxcKT9zdHJ1Y3RbIFx0 XG5dK1tBLVphLXowLTlfXStcXCkiCiAgICJcXHwiCiAgICJcXCg/OmV4dGVuZFsgXHRcbl0rW157 XStcXCkiCiAgICJcXHwiCiAgICJcXCg/OlxcKD86cGFja2FnZVsgXHRcbl0qXFwpP3VuaXRbIFx0 XG5dK1tBLVphLXowLTlfXStcXCkiCiAgICJcXHwiCiAgICJcXCg/OlxcKD86Iz9kZWZpbmVcXHwj aWZuP2RlZlxcfCNlbHNlXFwpWyBcdFxuXStbXiBcdFxuXStcXCkiCiAgICJcXCkiKQogICJSZWdl eHAgdGhhdCBpZGVudGlmaWVzIGFsbCBzcGVjbWFuIGNvbnRhaW5lciBzY29wZXMgKGFyZyAxKSIp CgooZGVmY29uc3Qgc3BlY21hbi1jb250YWluZXItc2NvcGUtZGVmaW5pdGlvbi1yZWdleHAKICAo Y29uY2F0CiAgICJcXCgiCiAgICJcXCg/OlxcKD86cGFja2FnZVsgXHRcbl0qXFwpP3N0cnVjdFsg XHRcbl0rW0EtWmEtejAtOV9dK1xcKSIKICAgIlxcfCIKICAgIlxcKD86ZXh0ZW5kWyBcdFxuXStb XntdK1xcKSIKICAgIlxcfCIKICAgIlxcKD86XFwoPzpwYWNrYWdlWyBcdFxuXSpcXCk/dW5pdFsg XHRcbl0rW0EtWmEtejAtOV9dK1xcKSIKICAgIlxcfCIKICAgIlxcKD86XFwoPzojP2RlZmluZVxc fCNpZm4/ZGVmXFx8I2Vsc2VcXClbIFx0XG5dK1teIFx0XG5dK1xcKSIKICAgIlxcfCIKICAgIlxc KD86d2hlblsgXHRcbl0rW157XStcXCkiCiAgICJcXCkiKQogICJSZWdleHAgdGhhdCBpZGVudGlm aWVzIGFsbCBzcGVjbWFuIGNvbnRhaW5lciBzY29wZXMgKGFyZyAxKSIpCgoKKGRlZmNvbnN0IHNw ZWNtYW4tZmllbGQtZGVmaW5pdGlvbi1yZWdleHAKICAiXFwoPzpcXCg/OnByaXZhdGVcXHxwYWNr YWdlXFx8cHJvdGVjdGVkXFwpWyBcdFxuXStcXCk/XFwoW0EtWmEtejAtOV9dK1xcKVsgXHRcbl0q OlsgXHRcbl0qXFwoPzpcXCo/W0EtWmEtejAtOV9dK1xcfFxcW1teXFxbXSpcXF1cXCkiCiAgIlJl Z2V4cCB0aGF0IGlkZW50aWZpZXMgZmllbGQgZGVmaW5pdGlvbnMgKGFyZyAxKSIpCgooZGVmY29u c3Qgc3BlY21hbi12YXJpYWJsZS1kZWZpbml0aW9uLXJlZ2V4cAogICJ2YXJbIFx0XG5dK1xcKFtB LVphLXowLTlfXStcXClbIFx0XG5dKjo9P1sgXHRcbl0qW3sqKy1dP1sgXHRcbl0qXFwoW0EtWmEt ejAtOV9dK1xcKSIKICAiUmVnZXhwIHRoYXQgaWRlbnRpZmllcyB2YXJpYWJsZSBkZWZpbml0aW9u cyAoYXJnIDEpIikKCihkZWZjb25zdCBzcGVjbWFuLWV2ZW50LWRlZmluaXRpb24tcmVnZXhwCiAg IlxcKD86XFwoPzpwcml2YXRlXFx8cGFja2FnZVxcfHByb3RlY3RlZFxcKVsgXHRcbl0rXFwpP2V2 ZW50WyBcdFxuXStcXChbQS1aYS16MC05X10rXFwpIgogICJSZWdleHAgdGhhdCBpZGVudGlmaWVz IGV2ZW50IGRlZmluaXRpb25zIChhcmcgMSkiKQoKKGRlZmNvbnN0IHNwZWNtYW4tdHlwZS1kZWZp bml0aW9uLXJlZ2V4cAogICJcXCg/OnBhY2thZ2VbIFx0XG5dKlxcKT9cXCg/Om1ldGhvZF9cXCk/ dHlwZVsgXHRcbl0rXFwoW0EtWmEtejAtOV9dK1xcKVsgXHRcbl0qOlsgXHRcbl0qXFxbIgogICJS ZWdleHAgdGhhdCBpZGVudGlmaWVzIHR5cGUgZGVmaW5pdGlvbnMgKGFyZyAxKSIpCgooZGVmY29u c3Qgc3BlY21hbi1jb3Zlci1kZWZpbml0aW9uLXJlZ2V4cAogICJjb3ZlclsgXHRcbl0rXFwoW0Et WmEtejAtOV9dK1xcKVsgXHRcbl0raXMiCiAgIlJlZ2V4cCB0aGF0IGlkZW50aWZpZXMgY292ZXIg ZGVmaW5pdGlvbnMgKGFyZyAxKSIpCgooZGVmY29uc3Qgc3BlY21hbi1zeW1ib2wtYmVnaW4tcmVn ZXhwCiAgIlxcPCIKICAiUmVnZXhwIHRoYXQgaWRlbnRpZmllcyB0aGUgYmVnaW5uaW5nIG9mIGEg c3ltYm9sIikKCihkZWZjb25zdCBzcGVjbWFuLXN5bWJvbC1lbmQtcmVnZXhwCiAgIlxcPiIKICAi UmVnZXhwIHRoYXQgaWRlbnRpZmllcyB0aGUgZW5kIG9mIGEgc3ltYm9sIikKCihkZWZjb25zdCBz cGVjbWFuLW51bWJlci1yZWdleHAKICAoY29uY2F0CiAgICJcXCgiCgogICA7OyB0aGlzIGlzIHVn bHksIGJ1dCB0aGUgb25seSB3YXkgSSBjb3VsZCBmaW5kIHRvIGNvdW50ICsgYW5kIC0gYXMKICAg OzsgbnVtYmVyIHN5bWJvbHMgYnV0IG1haW50YWluaW5nIHRoYXQgbnVtYmVycyBoYXZlIHRvIGNv bWUgYWZ0ZXIKICAgOzsgYSBzeW1ib2wgYmVnaW5uaW5nCiAgICJcXCg/OiIKICAgIlsrLV0iCiAg ICJcXHwiCiAgIHNwZWNtYW4tc3ltYm9sLWJlZ2luLXJlZ2V4cAogICAiXFwpIgogICAKICAgIlxc KD86IgogICAiWzAtOV0rIgogICAiXFx8IgogICAiMGJbMDFdKyIKICAgIlxcfCIKICAgIjBvWzAt N10rIgogICAiXFx8IgogICAiMFt4aF1bMC05YS1mQS1GXSsiCiAgICJcXCkiCiAgIAogICAiW2tL bU1dPyIKICAgIlxcKSIKICAgc3BlY21hbi1zeW1ib2wtZW5kLXJlZ2V4cCkKICAiUmVnZXhwIHRo YXQgaWRlbnRpZmllcyBudW1iZXJzIChhcmcxKSIpCgoKKGRlZmNvbnN0IHNwZWNtYW4tbWV0aG9k LWRlZmluaXRpb24tcmVnZXhwLWZ1bGwKICAoY29uY2F0ICJeWyBcdF0qIiBzcGVjbWFuLW1ldGhv ZC1kZWZpbml0aW9uLXJlZ2V4cCkpCgooZGVmY29uc3Qgc3BlY21hbi1vbi1ldmVudC1tZXRob2Qt ZGVmaW5pdGlvbi1yZWdleHAtZnVsbAogIChjb25jYXQgIl5bIFx0XSoiIHNwZWNtYW4tb24tZXZl bnQtbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwKSkKCihkZWZjb25zdCBzcGVjbWFuLWNsYXNzLWRl ZmluaXRpb24tcmVnZXhwLWZ1bGwKICAoY29uY2F0ICJeWyBcdF0qIiBzcGVjbWFuLWNsYXNzLWRl ZmluaXRpb24tcmVnZXhwKSkKCihkZWZjb25zdCBzcGVjbWFuLXdoZW4tc3VidHlwZS1kZWZpbml0 aW9uLXJlZ2V4cC1mdWxsCiAgKGNvbmNhdCAiXlsgXHRdKiIgc3BlY21hbi13aGVuLXN1YnR5cGUt ZGVmaW5pdGlvbi1yZWdleHApKQoKKGRlZmNvbnN0IHNwZWNtYW4tZGVmaW5lLXJlZ2V4cC1mdWxs CiAgKGNvbmNhdCAiXlsgXHRdKiIgc3BlY21hbi1kZWZpbmUtcmVnZXhwKSkKCihkZWZjb25zdCBz cGVjbWFuLW1hY3JvLWFuZC1kZWZpbmUtcmVnZXhwLWZ1bGwKICAoY29uY2F0ICJeWyBcdF0qIiBz cGVjbWFuLW1hY3JvLWFuZC1kZWZpbmUtcmVnZXhwKSkKCihkZWZjb25zdCBzcGVjbWFuLWNvbnRh aW5lci1zY29wZS1kZWZpbml0aW9uLXJlZ2V4cC1mdWxsCiAgKGNvbmNhdCAiXlsgXHRdKiIgc3Bl Y21hbi1jb250YWluZXItc2NvcGUtZGVmaW5pdGlvbi1yZWdleHApKQoKKGRlZmNvbnN0IHNwZWNt YW4tZmllbGQtZGVmaW5pdGlvbi1yZWdleHAtZnVsbAogIChjb25jYXQgIl5bIFx0XSoiIHNwZWNt YW4tZmllbGQtZGVmaW5pdGlvbi1yZWdleHApKQoKKGRlZmNvbnN0IHNwZWNtYW4tdmFyaWFibGUt ZGVmaW5pdGlvbi1yZWdleHAtZnVsbAogIChjb25jYXQgIl5bIFx0XSoiIHNwZWNtYW4tdmFyaWFi bGUtZGVmaW5pdGlvbi1yZWdleHApKQoKKGRlZmNvbnN0IHNwZWNtYW4tZXZlbnQtZGVmaW5pdGlv bi1yZWdleHAtZnVsbAogIChjb25jYXQgIl5bIFx0XSoiIHNwZWNtYW4tZXZlbnQtZGVmaW5pdGlv bi1yZWdleHApKQoKKGRlZmNvbnN0IHNwZWNtYW4tdHlwZS1kZWZpbml0aW9uLXJlZ2V4cC1mdWxs CiAgKGNvbmNhdCAiXlsgXHRdKiIgc3BlY21hbi10eXBlLWRlZmluaXRpb24tcmVnZXhwKSkKCihk ZWZjb25zdCBzcGVjbWFuLWNvdmVyLWRlZmluaXRpb24tcmVnZXhwLWZ1bGwKICAoY29uY2F0ICJe WyBcdF0qIiBzcGVjbWFuLWNvdmVyLWRlZmluaXRpb24tcmVnZXhwKSkKCgo7OyA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cjs7IFNQRUNNQU4gU0VBUkNI RVMgQU5EIFFVRVJJRVMKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQoKKGRlZnN1YnN0IHNwZWNtYW4tcmUtc2VhcmNoLWZvcndhcmQgKFJFR0VYUCBC T1VORCBOT0VSUk9SICZvcHRpb25hbCB3aXRoaW4tY29kZS1yZWdpb24pCiAgIkxpa2UgcmUtc2Vh cmNoLWZvcndhcmQsIGJ1dCBza2lwcyBvdmVyIG1hdGNoZXMgaW4gY29tbWVudHMgb3Igc3RyaW5n cyIKICAobGV0ICgoc3RhcnQtcG9zCiAgICAgICAgIChwb2ludCkpCiAgICAgICAgKGZ1bGwtcmVn ZXhwCiAgICAgICAgIChjb25jYXQKICAgICAgICAgICJcXCgvL1xcfC0tXFwpXFx8XFwoXic+XFwp XFx8XFwoXCJcXClcXHxcXCgvXFwqXFwpXFx8XFwoIgogICAgICAgICAgUkVHRVhQCiAgICAgICAg ICAiXFwpIikpCiAgICAgICAgKQogICAgCiAgICAodW5sZXNzIHdpdGhpbi1jb2RlLXJlZ2lvbgog ICAgICAoc3BlY21hbi1za2lwLWZvcndhcmQtY29tbWVudC1vci1zdHJpbmcpKQogICAgCiAgICAo c3RvcmUtbWF0Y2gtZGF0YSAnKG5pbCBuaWwpKQogICAgKHdoaWxlIChhbmQgKGlmIEJPVU5ECiAg ICAgICAgICAgICAgICAgICAgKDw9IChwb2ludCkgQk9VTkQpCiAgICAgICAgICAgICAgICAgIHQp CiAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgZnVsbC1yZWdleHAgQk9VTkQgTk9F UlJPUikKICAgICAgICAgICAgICAgIChjb25kCiAgICAgICAgICAgICAgICAgKDs7IGUgbGluZSBj b21tZW50CiAgICAgICAgICAgICAgICAgIChtYXRjaC1iZWdpbm5pbmcgMSkKICAgICAgICAgICAg ICAgICAgCiAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgIChmb3J3 YXJkLWxpbmUgMSkKICAgICAgICAgICAgICAgICAgICB0KQogICAgICAgICAgICAgICAgICApCiAg ICAgICAgICAgICAgICAgKDs7IGV4LWNvZGUgcmVnaW9uCiAgICAgICAgICAgICAgICAgIChtYXRj aC1iZWdpbm5pbmcgMikKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIChwcm9n bgogICAgICAgICAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiXjwnIiBCT1VORCAnbW92 ZSkKICAgICAgICAgICAgICAgICAgICB0KQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAg ICAgICAgKDs7IHN0cmluZwogICAgICAgICAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5nIDMpCiAg ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAg ICAgICA7OyB0byBhbHNvIGNvbnNpZGVyIHRoZSBuZXh0IGNoYXJhY3RlciwgZm9yICIiCiAgICAg ICAgICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDMpKQogICAgICAgICAg ICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiXFwoPzpbXlxcXVxcfFtcXF1bXFxdXFwpXCIi IEJPVU5EICdtb3ZlKQogICAgICAgICAgICAgICAgICAgIHQpCiAgICAgICAgICAgICAgICAgICkK ICAgICAgICAgICAgICAgICAoOzsgYyBtdWx0aS1saW5lIGNvbW1lbnQKICAgICAgICAgICAgICAg ICAgKG1hdGNoLWJlZ2lubmluZyA0KQoKICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAg ICAgICAgICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkICJcXCovIiBCT1VORCAnbW92ZSkKICAgICAg ICAgICAgICAgICAgICB0KQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgKDs7 IHRoZSByZWdleHAKICAgICAgICAgICAgICAgICAgKG1hdGNoLWJlZ2lubmluZyA1KQoKICAgICAg ICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gt YmVnaW5uaW5nIDUpKQogICAgICAgICAgICAgICAgICAgIChsb29raW5nLWF0IFJFR0VYUCkgIDs7 IHRvIHJlc2V0IG1hdGNoLWRhdGEKICAgICAgICAgICAgICAgICAgICBuaWwpCiAgICAgICAgICAg ICAgICAgICkKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAocHJvZ24KICAgICAg ICAgICAgICAgICAgKHN0b3JlLW1hdGNoLWRhdGEgJyhuaWwgbmlsKSkKICAgICAgICAgICAgICAg ICAgKGlmIEJPVU5ECiAgICAgICAgICAgICAgICAgICAgICAoPCAocG9pbnQpIEJPVU5EKQogICAg ICAgICAgICAgICAgICAgIHQpKQogICAgICAgICAgICAgICAgKSkKICAgIChnb3RvLWNoYXIgKGlm IChtYXRjaC1lbmQgMCkKICAgICAgICAgICAgICAgICAgIChtYXRjaC1lbmQgMCkKICAgICAgICAg ICAgICAgICBzdGFydC1wb3MpKQogICAgKG1hdGNoLWVuZCAwKSkpCgooZGVmc3Vic3Qgc3BlY21h bi1yZS1zZWFyY2gtYmFja3dhcmQgKFJFR0VYUCBCT1VORCBOT0VSUk9SICZvcHRpb25hbCB3aXRo aW4tY29kZS1yZWdpb24pCiAgIkxpa2UgcmUtc2VhcmNoLWJhY2t3YXJkLCBidXQgc2tpcHMgb3Zl ciBtYXRjaGVzIGluIGNvbW1lbnRzIG9yIHN0cmluZ3MiCiAgKGxldCAoKHN0YXJ0LXBvcwogICAg ICAgICAocG9pbnQpKQogICAgICAgIChmdWxsLXJlZ2V4cAogICAgICAgICAoY29uY2F0CiAgICAg ICAgICAiXFwoXjwnXFwpXFx8XFwoXCJcXClcXHxcXChcXCovXFwpXFx8XFwoIgogICAgICAgICAg UkVHRVhQCiAgICAgICAgICAiXFwpIikpCiAgICAgICAgKQoKICAgICh1bmxlc3Mgd2l0aGluLWNv ZGUtcmVnaW9uCiAgICAgIChzcGVjbWFuLXNraXAtYmFja3dhcmQtY29tbWVudC1vci1zdHJpbmcp KQogICAgCiAgICAoc3RvcmUtbWF0Y2gtZGF0YSAnKG5pbCBuaWwpKQogICAgKHdoaWxlIChhbmQg KGlmIEJPVU5ECiAgICAgICAgICAgICAgICAgICAgKD49IChwb2ludCkgQk9VTkQpCiAgICAgICAg ICAgICAgICAgIHQpCiAgICAgICAgICAgICAgICAocmUtc2VhcmNoLWJhY2t3YXJkIGZ1bGwtcmVn ZXhwIEJPVU5EIE5PRVJST1IpCiAgICAgICAgICAgICAgICAoY29uZAogICAgICAgICAgICAgICAg ICg7OyBleC1jb2RlIHJlZ2lvbgogICAgICAgICAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5nIDEp CiAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAg ICAgICAgICAocmUtc2VhcmNoLWJhY2t3YXJkICJeJz4iIEJPVU5EICdtb3ZlKQogICAgICAgICAg ICAgICAgICAgIHQpCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAoOzsgc3Ry aW5nCiAgICAgICAgICAgICAgICAgIChtYXRjaC1iZWdpbm5pbmcgMikKICAgICAgICAgICAgICAg ICAgCiAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgIDs7IE5PVEU6 IHRoaXMgYXBwcm9hY2ggaXMgbW9yZSBlbGVnYW50LCBidXQgc2xvd2VyIHRoYW4gdGhlIGNvZGUg YmVsb3cKICAgICAgICAgICAgICAgICAgICA7OyhpZiAoc3BlY21hbi13aXRoaW4tc3RyaW5nLXAp CiAgICAgICAgICAgICAgICAgICAgOzsgICAgKHJlLXNlYXJjaC1iYWNrd2FyZCAiW15cXF1cIiIg Qk9VTkQgJ21vdmUpCiAgICAgICAgICAgICAgICAgICAgOzsgIChyZS1zZWFyY2gtYmFja3dhcmQg Ii8vXFx8LS0iIChzcGVjbWFuLWJlZy1vZi1saW5lLXBvcykgJ21vdmUpKQogICAgICAgICAgICAg ICAgICAgICh3aGVuIChzYXZlLW1hdGNoLWRhdGEKICAgICAgICAgICAgICAgICAgICAgICAgICAg KGJhY2stdG8taW5kZW50YXRpb24pCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZS1zZWFy Y2gtZm9yd2FyZCAiXFwoLy9cXHwtLVxcKVxcfFxcKFteXFxdXCJcXCkiIChtYXRjaC1iZWdpbm5p bmcgMikgJ21vdmUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAobWF0Y2gtYmVnaW5u aW5nIDEpICA7OyBhIGNvbW1lbnQgYW5kIG5vdCBhIHN0cmluZwogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgKG1hdGNoLWJlZ2lubmluZyAxKSkgOzsgZ28gdG8gdGhlIGNvbW1lbnQgYmVnaW5uaW5n CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5pbCkgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOzsgYW5kIGZhaWwsIHN0YXlpbmcgdGhlcmUKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0KSkKICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lu bmluZyAyKSkgICAgICAgICAgICA7OyByZXR1cm4gdG8gdGhlIHN0cmluZwogICAgICAgICAgICAg ICAgICAgICAgKHdoZW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGFu ZCBmaW5kIHRoZSBzdHJpbmcgb3BlbmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlLXNl YXJjaC1iYWNrd2FyZCAiXFwoPzpbXlxcXVxcfFtcXF1bXFxdXFwpXFwoXCJcXCkiIEJPVU5EICdt b3ZlKQogICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcg MSkpKSkKICAgICAgICAgICAgICAgICAgICB0KQogICAgICAgICAgICAgICAgICApCiAgICAgICAg ICAgICAgICAgKDs7IGMgbXVsdGktbGluZSBjb21tZW50CiAgICAgICAgICAgICAgICAgIChtYXRj aC1iZWdpbm5pbmcgMykKCiAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAg ICAgIChyZS1zZWFyY2gtYmFja3dhcmQgIi9cXCoiIEJPVU5EICdtb3ZlKQogICAgICAgICAgICAg ICAgICAgIHQpCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAoOzsgdGhlIHJl Z2V4cAogICAgICAgICAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5nIDQpCgogICAgICAgICAgICAg ICAgICAobGV0ICgoZmFpbGVkLW1hdGNoIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgKQog ICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyA0KSkKICAgICAg ICAgICAgICAgICAgICAobG9va2luZy1hdCBSRUdFWFApICA7OyB0byByZXNldCBtYXRjaC1kYXRh CiAgICAgICAgICAgICAgICAgICAgKHNhdmUtbWF0Y2gtZGF0YQogICAgICAgICAgICAgICAgICAg ICAgOzsgaWYgYSBjb21tZW50IGlzIG5vdCBmb3VuZCB0aGVuIHBvaW50IGlzIGxlZnQgb24gdGhl CiAgICAgICAgICAgICAgICAgICAgICA7OyBiZWdpbm5pbmcgb2YgdGhlIGxpbmUgYnV0IHRoZSBn b3RvLWNoYXIgYmVsb3cgZml4ZXMgdGhpcy4KICAgICAgICAgICAgICAgICAgICAgIDs7IG5vdGU6 IHRoZSB3aGlsZSBjaGVja3MgdGhhdCB0aGUgY29tbWVudCBwcmVmaXggaXMgbm90IGluIGEgc3Ry aW5nCiAgICAgICAgICAgICAgICAgICAgICAod2hpbGUgKGFuZCAocmUtc2VhcmNoLWJhY2t3YXJk ICIvL1xcfC0tIiAoc3BlY21hbi1iZWctb2YtbGluZS1wb3MpICdtb3ZlKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKGlmIChzcGVjbWFuLXdpdGhpbi1zdHJpbmctcCkKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChzZXRxIGZhaWxlZC1tYXRjaCB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5pbCkpKSkpCiAgICAgICAgICAgICAgICAgICAgZmFpbGVkLW1hdGNoCiAgICAgICAgICAg ICAgICAgICAgKQogICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgIChzdG9yZS1tYXRjaC1kYXRhICcobmls IG5pbCkpCiAgICAgICAgICAgICAgICAgIChpZiBCT1VORAogICAgICAgICAgICAgICAgICAgICAg KD4gKHBvaW50KSBCT1VORCkKICAgICAgICAgICAgICAgICAgICB0KSkKICAgICAgICAgICAgICAg ICkpCiAgICAoZ290by1jaGFyIChpZiAobWF0Y2gtYmVnaW5uaW5nIDApCiAgICAgICAgICAgICAg ICAgICAobWF0Y2gtYmVnaW5uaW5nIDApCiAgICAgICAgICAgICAgICAgc3RhcnQtcG9zKSkKICAg IChtYXRjaC1iZWdpbm5pbmcgMCkpKQoKKGRlZnN1YnN0IHNwZWNtYW4tYmVnLW9mLWxpbmUtcG9z ICgpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAocG9pbnQp KSkKCihkZWZzdWJzdCBzcGVjbWFuLWVuZC1vZi1saW5lLXBvcyAoKQogIChzYXZlLWV4Y3Vyc2lv bgogICAgKGVuZC1vZi1saW5lKQogICAgKHBvaW50KSkpCgooZGVmc3Vic3Qgc3BlY21hbi13aXRo aW4tY29tbWVudC1wICgpCiAgKG9yIChzcGVjbWFuLXdpdGhpbi1saW5lLWNvbW1lbnQtcCkKICAg ICAgKHNwZWNtYW4td2l0aGluLXJlZ2lvbi1jb21tZW50LXApKQogICkKCihkZWZzdWJzdCBzcGVj bWFuLWVtcHR5LWxpbmUtcCAoKQogIChsb29raW5nLWF0ICJeWyBcdF0qJCIpKQoKKGRlZnVuIHNw ZWNtYW4td2l0aGluLXN0cmluZy1wICgpCiAgKHNhdmUtZXhjdXJzaW9uCiAgICAobnRoIDMgKHBh cnNlLXBhcnRpYWwtc2V4cCAocG9pbnQtbWluKSAocG9pbnQpKSkpKQoKKGRlZnN1YnN0IHNwZWNt YW4tbGluZS13aXRoaW4tc3RyaW5nLXAgKCkKICAoc2F2ZS1leGN1cnNpb24KICAgIChiZWdpbm5p bmctb2YtbGluZSkKICAgIChzcGVjbWFuLXdpdGhpbi1zdHJpbmctcCkpKQoKKGRlZnN1YnN0IHNw ZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmluZyAoYmVnIGVuZCkKICAiUmVtb3ZlIGV4dHJh IHNwYWNlcyBhbmQgbmV3LWxpbmVzIGZyb20gc3RyaW5ncy4iCiAgKHNhdmUtbWF0Y2gtZGF0YQog ICAgKGlmIChlcSBlbWFjcy1raW5kICdlbWFjcykKICAgICAgICAocmVwbGFjZS1yZWdleHAtaW4t c3RyaW5nICJbIFx0XG5dKyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXBsYWNlLXJlZ2V4cC1pbi1z dHJpbmcgIl5bIFx0XG5dK1xcfFsgXHRcbl0rJCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3Ry aW5nIGJlZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkpKQogICAgICAocmVwbGFjZS1pbi1z dHJpbmcgKHJlcGxhY2UtaW4tc3RyaW5nIChidWZmZXItc3Vic3RyaW5nIGJlZwogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZCkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXlsgXHRcbl0rXFx8 WyBcdFxuXSskIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIi KQogICAgICAgICAgICAgICAgICAgICAgICAgIlsgXHRcbl0rIgogICAgICAgICAgICAgICAgICAg ICAgICAgIiAiKSkpKQoKCjs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KOzsgU1BFQ01BTiBTQ09QRSBRVUVSSUVTCjs7ID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCihkZWZ2YXIgZ2xvYmFsLXNjb3BlLWlu ZGV4IG5pbAogICJVc2VkIGFzIGEgZ2xvYmFsIHJlZmVyZW5jZSBmb3IgY2FjaGVkIHJlZnMgdG8g c2NvcGVzIGZvciBwZXJmb3JtYW5jZS4KSW5pdGlhbGl6ZWQgZm9yIHBlcmZvcm1hY2UgaW50ZW5z aXZlIG9wZXJhdGlvbnMgd2l0aG91dCB1c2VyIGludGVyYWN0aW9uCihlLmcuIHJlZ2lvbiBpbmRl bnRhdGlvbikgYW5kIG11c3QgYmUgY2xlYXJlZCBhZnRlcndhcmRzLiIpCihtYWtlLXZhcmlhYmxl LWJ1ZmZlci1sb2NhbCAnZ2xvYmFsLXNjb3BlLWluZGV4KQoKKGRlZnN0cnVjdCBzY29wZS1kZXNj cmlwdG9yIHBhcmVuIG1hdGNoIHBhcmVudCBwYXJlbi1wYXJlbnQpCgooZGVmdW4gc3BlY21hbi1j cmVhdGUtc2NvcGUtaW5kZXggKCkKICAiQ3JlYXRlIGEgbGlzdCBvZiBzY29wZSBkZXNjcmlwdG9y cywgZWFjaCBvZiB3aGljaCBpcyBhIGxpc3Qgb2YgMyBtZW1iZXJzOgpzY29wZSwgbWF0Y2hpbmct c2NvcGUgYW5kIHBhcmVudC1zY29wZS1vcGVuZXIiCgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKHNh dmUtbWF0Y2gtZGF0YQogICAgICAobGV0ICgoc2NvcGUtaW5kZXgKICAgICAgICAgICAgIG5pbAog ICAgICAgICAgICAgKQogICAgICAgICAgICAoc2NvcGUtc3RhY2sKICAgICAgICAgICAgIG5pbAog ICAgICAgICAgICAgKQogICAgICAgICAgICAocGFyZW4tc3RhY2sKICAgICAgICAgICAgIG5pbAog ICAgICAgICAgICAgKQogICAgICAgICAgICAoYnVmZmVyLWVuZAogICAgICAgICAgICAgKHBvaW50 LW1heCkKICAgICAgICAgICAgICkKICAgICAgICAgICAgKHRvcC1zY29wZS1vcGVuZXIKICAgICAg ICAgICAgIChwb2ludC1taW4tbWFya2VyKQogICAgICAgICAgICAgKQogICAgICAgICAgICAoZW5k LXNjb3BlLWNsb3NlcgogICAgICAgICAgICAgKHBvaW50LW1heC1tYXJrZXIpCiAgICAgICAgICAg ICApCiAgICAgICAgICAgIChzZWFyY2gtcmVnZXhwCiAgICAgICAgICAgICAoY29uY2F0ICAgICAg ICAgICAgICAgICAgICAgICJcXCgiCiAgICAgICAgICAgICAgICAgICAgICJ7XFx8KCIgICAgICAg ICAgICAgICJcXClcXHxcXCgiCiAgICAgICAgICAgICAgICAgICAgICJ9XFx8KSIgICAgICAgICAg ICAgICJcXClcXHxcXCgiCiAgICAgICAgICAgICAgICAgICAgICIvL1xcfC0tIiAgICAgICAgICAg ICJcXClcXHxcXCgiCiAgICAgICAgICAgICAgICAgICAgICJeJz4iICAgICAgICAgICAgICAgICJc XClcXHxcXCgiCiAgICAgICAgICAgICAgICAgICAgICJcIiIgICAgICAgICAgICAgICAgICJcXClc XHxcXCgiCiAgICAgICAgICAgICAgICAgICAgICIvXFwqIiAgICAgICAgICAgICAgICJcXCkiKQog ICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgCiAgICAgIChnb3RvLWNoYXIgKHBv aW50LW1pbikpCgogICAgICA7OyBmb3IgY29tcGxldGVuZXNzIC0gaGF2ZSBhIHRvcCBwc2V1ZG8t c2NvcGUgZm9yIHRoZSB3aG9sZSBmaWxlCiAgICAgIChzZXQtbWFya2VyLWluc2VydGlvbi10eXBl IHRvcC1zY29wZS1vcGVuZXIgdCkKICAgICAgKHNldC1tYXJrZXItaW5zZXJ0aW9uLXR5cGUgZW5k LXNjb3BlLWNsb3NlciB0KQogICAgICAocHVzaCAoY29ucyB0b3Atc2NvcGUtb3BlbmVyCiAgICAg ICAgICAgICAgICAgIChtYWtlLXNjb3BlLWRlc2NyaXB0b3IKICAgICAgICAgICAgICAgICAgIDpw YXJlbiAgdG9wLXNjb3BlLW9wZW5lcgogICAgICAgICAgICAgICAgICAgOm1hdGNoICBlbmQtc2Nv cGUtY2xvc2VyCiAgICAgICAgICAgICAgICAgICA6cGFyZW50IHRvcC1zY29wZS1vcGVuZXIKICAg ICAgICAgICAgICAgICAgIDpwYXJlbi1wYXJlbnQgbmlsKSkKICAgICAgICAgICAgc2NvcGUtaW5k ZXgpCiAgICAgIAogICAgICAod2hlbiAocmUtc2VhcmNoLWZvcndhcmQgIl48JyIgYnVmZmVyLWVu ZCBuaWwpCiAgICAgICAgKHdoaWxlIChhbmQgKDwgKHBvaW50KSBidWZmZXItZW5kKQogICAgICAg ICAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCBzZWFyY2gtcmVnZXhwIGJ1ZmZlci1lbmQg J21vdmUpKQogICAgICAgICAgCiAgICAgICAgICAoY29uZAogICAgICAgICAgIDs7IG5ldyBzY29w ZQogICAgICAgICAgICgobWF0Y2gtYmVnaW5uaW5nIDEpCgogICAgICAgICAgICAoc2F2ZS1leGN1 cnNpb24KICAgICAgICAgICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMSkpCiAgICAg ICAgICAgICAgCiAgICAgICAgICAgICAgKGxldCogKChwb2ludC1tYXJrZXIKICAgICAgICAgICAg ICAgICAgICAgIChwb2ludC1tYXJrZXIpCiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAg ICAgICAgICAgICAgIChpcy1zY29wZQogICAgICAgICAgICAgICAgICAgICAgKGxvb2tpbmctYXQg InsiKQogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAocGFyZW50 CiAgICAgICAgICAgICAgICAgICAgICAoaWYgc2NvcGUtc3RhY2sKICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2NvcGUtZGVzY3JpcHRvci1wYXJlbiAoY2FyIHNjb3BlLXN0YWNrKSkKICAgICAg ICAgICAgICAgICAgICAgICAgdG9wLXNjb3BlLW9wZW5lcikKICAgICAgICAgICAgICAgICAgICAg ICkKICAgICAgICAgICAgICAgICAgICAgKHBhcmVuLXBhcmVudAogICAgICAgICAgICAgICAgICAg ICAgKGlmIHBhcmVuLXN0YWNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjb3BlLWRlc2Ny aXB0b3ItcGFyZW4gKGNhciBwYXJlbi1zdGFjaykpCiAgICAgICAgICAgICAgICAgICAgICAgIG5p bCkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgKHBvaW50LWRl c2NyaXB0b3IKICAgICAgICAgICAgICAgICAgICAgIChtYWtlLXNjb3BlLWRlc2NyaXB0b3IKICAg ICAgICAgICAgICAgICAgICAgICA6cGFyZW4gIHBvaW50LW1hcmtlcgogICAgICAgICAgICAgICAg ICAgICAgIDptYXRjaCAgZW5kLXNjb3BlLWNsb3NlciA7OyBwbGFjZSBob2xkZXIgdW50aWwgdGhl IGNsb3NlciBpcyBmb3VuZAogICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbnQgcGFyZW50CiAg ICAgICAgICAgICAgICAgICAgICAgOnBhcmVuLXBhcmVudCBwYXJlbi1wYXJlbnQpCiAgICAgICAg ICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIChz ZXQtbWFya2VyLWluc2VydGlvbi10eXBlIHBvaW50LW1hcmtlciB0KQogICAgICAgICAgICAKICAg ICAgICAgICAgICAgIChwdXNoIChjb25zIHBvaW50LW1hcmtlcgogICAgICAgICAgICAgICAgICAg ICAgICAgICAgcG9pbnQtZGVzY3JpcHRvcikKICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLWlu ZGV4KQogICAgICAgICAgICAgICAgKGlmIGlzLXNjb3BlCiAgICAgICAgICAgICAgICAgICAgKHB1 c2ggcG9pbnQtZGVzY3JpcHRvciBzY29wZS1zdGFjaykKICAgICAgICAgICAgICAgICAgKHB1c2gg cG9pbnQtZGVzY3JpcHRvciBwYXJlbi1zdGFjaykpKSkKICAgICAgICAgICAgKQogICAgICAgICAg IDs7IGNsb3NlIHNjb3BlCiAgICAgICAgICAgKChtYXRjaC1iZWdpbm5pbmcgMikKCiAgICAgICAg ICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lu bmluZyAyKSkKICAgICAgICAgICAgICAKICAgICAgICAgICAgICAobGV0KiAoKHBvaW50LW1hcmtl cgogICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1hcmtlcikKICAgICAgICAgICAgICAgICAg ICAgICkKICAgICAgICAgICAgICAgICAgICAgKGlzLXNjb3BlCiAgICAgICAgICAgICAgICAgICAg ICAobG9va2luZy1hdCAifSIpCiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAg ICAgICAgIChoYXMtbWF0Y2gKICAgICAgICAgICAgICAgICAgICAgIChpZiBpcy1zY29wZQogICAg ICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLXN0YWNrCiAgICAgICAgICAgICAgICAgICAgICAg IHBhcmVuLXN0YWNrKQogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAg ICAobWF0Y2gKICAgICAgICAgICAgICAgICAgICAgICh3aGVuIGhhcy1tYXRjaAogICAgICAgICAg ICAgICAgICAgICAgICAoaWYgaXMtc2NvcGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChw b3Agc2NvcGUtc3RhY2spCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcCBwYXJlbi1zdGFj aykpKQogICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAocGFyZW50 CiAgICAgICAgICAgICAgICAgICAgICAoaWYgc2NvcGUtc3RhY2sKICAgICAgICAgICAgICAgICAg ICAgICAgICAoc2NvcGUtZGVzY3JpcHRvci1wYXJlbiAoY2FyIHNjb3BlLXN0YWNrKSkKICAgICAg ICAgICAgICAgICAgICAgICAgdG9wLXNjb3BlLW9wZW5lcikKICAgICAgICAgICAgICAgICAgICAg ICkKICAgICAgICAgICAgICAgICAgICAgKHBhcmVuLXBhcmVudAogICAgICAgICAgICAgICAgICAg ICAgKGlmIHBhcmVuLXN0YWNrCiAgICAgICAgICAgICAgICAgICAgICAgICAgKHNjb3BlLWRlc2Ny aXB0b3ItcGFyZW4gKGNhciBwYXJlbi1zdGFjaykpCiAgICAgICAgICAgICAgICAgICAgICAgIG5p bCkKICAgICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgICAgKHNldC1tYXJrZXItaW5zZXJ0aW9uLXR5cGUgcG9pbnQtbWFya2VyIHQpCiAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgKGlmIGhhcy1tYXRjaAogICAgICAgICAgICAgICAgICAg IChsZXQgKChwb2ludC1kZXNjcmlwdG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYWtl LXNjb3BlLWRlc2NyaXB0b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbiAgcG9p bnQtbWFya2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6bWF0Y2ggIChzY29wZS1kZXNj cmlwdG9yLXBhcmVuIG1hdGNoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBhcmVudCBw YXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDpwYXJlbi1wYXJlbnQgcGFyZW4tcGFy ZW50KQogICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAg ICAgKQogICAgICAgICAgICAgICAgICAgICAgKHNldGYgKHNjb3BlLWRlc2NyaXB0b3ItbWF0Y2gg bWF0Y2gpIHBvaW50LW1hcmtlcikKICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAg ICAgICAgICAgKHB1c2ggKGNvbnMgcG9pbnQtbWFya2VyCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwb2ludC1kZXNjcmlwdG9yKQogICAgICAgICAgICAgICAgICAgICAgICAgICAg c2NvcGUtaW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgIDs7 IGN1cnJlbnRseSBubyBlcnJvciBjaGVja2luZyBmb3IgdW5tYXRjaGVkIHNjb3BlcyAtIGhlcmUg Zm9yIGNsb3Npbmcgc2NvcGUKICAgICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAg ICAgICAgKHB1c2ggKGNvbnMgcG9pbnQtbWFya2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1ha2Utc2NvcGUtZGVzY3JpcHRvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICA6cGFyZW4gIHBvaW50LW1hcmtlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA6bWF0Y2ggIHRvcC1zY29wZS1vcGVuZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgOnBhcmVudCBwYXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOnBhcmVu LXBhcmVudCBwYXJlbi1wYXJlbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLWlu ZGV4KSkKICAgICAgICAgICAgICAgICAgKQoKOzsgVE9ETzogY2xlYXIgYW55IGRhbmdsaW5nIG9w ZW4gcGFyZW5zIHdoaWNoIGFyZW4ndCBjbG9zZWQgd2l0aGluIHRoZQo7OyBzY29wZSBiZWluZyBj bG9zZWQgbm93LiAgbmljZSBpZGVhLCBtYXliZSBzaG91bGQgYmUgZXhwbG9yZWQgbW9yZSwKOzsg YnV0IGRvZXNuJ3Qgd29yayBmb3Igbm93LgogICAgICAgICAgICAgICAgCjs7ICAgICAgICAgICAg ICAgICAod2hlbiBtYXRjaAo7OyAgICAgICAgICAgICAgICAgICAobGV0ICgoY2xvc2UtdG8tcG9p bnQKOzsgICAgICAgICAgICAgICAgICAgICAgICAgIChzY29wZS1kZXNjcmlwdG9yLXBhcmVuIG1h dGNoKQo7OyAgICAgICAgICAgICAgICAgICAgICAgICAgKQo7OyAgICAgICAgICAgICAgICAgICAg ICAgICAoc3RhY2stdG8tY2xlYXIKOzsgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBpcy1z Y29wZQo7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVuLXN0YWNrCjs7ICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLXN0YWNrKQo7OyAgICAgICAgICAgICAgICAgICAg ICAgICAgKQo7OyAgICAgICAgICAgICAgICAgICAgICAgICAoY29udGludWUKOzsgICAgICAgICAg ICAgICAgICAgICAgICAgIHQKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICkKOzsgICAgICAg ICAgICAgICAgICAgICAgICAgKQo7OyAgICAgICAgICAgICAgICAgICAgICh3aGlsZSAoYW5kIGNv bnRpbnVlCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2stdG8tY2xlYXIp Cjs7ICAgICAgICAgICAgICAgICAgICAgICAoaWYgKDwgY2xvc2UtdG8tcG9pbnQKOzsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2NvcGUtZGVzY3JpcHRvci1wYXJlbiAoY2FyIHN0YWNr LXRvLWNsZWFyKSkpCjs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvcCBzdGFjay10by1j bGVhcikKOzsgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgY29udGludWUgbmlsKSkpCjs7 ICAgICAgICAgICAgICAgICAgICAgKSkKICAgICAgICAgICAgICAgICkpCiAgICAgICAgICAgICkK ICAgICAgICAgICA7OyBjb21tZW50CiAgICAgICAgICAgKChtYXRjaC1iZWdpbm5pbmcgMykKICAg ICAgICAgICAgCiAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkKICAgICAgICAgICAgKQogICAg ICAgICAgIDs7IGVuZCBlLWNvZGUgcmVnaW9uCiAgICAgICAgICAgKChtYXRjaC1iZWdpbm5pbmcg NCkKICAgICAgICAgICAgCiAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiXjwnIiBidWZm ZXItZW5kICdtb3ZlKQogICAgICAgICAgICApCiAgICAgICAgICAgOzsgc3RyaW5nCiAgICAgICAg ICAgKChtYXRjaC1iZWdpbm5pbmcgNSkKCiAgICAgICAgICAgIDs7IHRvIGFsc28gY29uc2lkZXIg dGhlIG5leHQgY2hhcmFjdGVyLCBmb3IgIiIKICAgICAgICAgICAgKGdvdG8tY2hhciAobWF0Y2gt YmVnaW5uaW5nIDApKQogICAgICAgICAgICAKICAgICAgICAgICAgKHJlLXNlYXJjaC1mb3J3YXJk ICJcXCg/OlteXFxdXFx8W1xcXVtcXF1cXClcIiIgYnVmZmVyLWVuZCAnbW92ZSkKICAgICAgICAg ICAgKQogICAgICAgICAgIDs7IGMgbXVsdGktbGluZSBjb21tZW50CiAgICAgICAgICAgKChtYXRj aC1iZWdpbm5pbmcgNikKCiAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiXFwqLyIgYnVm ZmVyLWVuZCAnbW92ZSkKICAgICAgICAgICAgKQogICAgICAgICAgICkKICAgICAgICAgICkKICAg ICAgICA7OyBjdXJyZW50bHkgbm8gZXJyb3IgY2hlY2tpbmcgZm9yIHVubWF0Y2hlZCBzY29wZXMg LSBoZXJlIGZvciBvcGVuaW5nIHNjb3BlCiAgICAgICAgKQoKICAgICAgOzsgZm9yIGFlc3RoZXRp YyByZWFzb25zIC0gdGhlIGxpc3QgaXMgYXJyYW5nZWQgYXMgYSBzdGFjaywgc28gaXQgaXMgYmFj a3dhcmQKICAgICAgKHJldmVyc2Ugc2NvcGUtaW5kZXgpCiAgICAgICkpKSkKCihkZWZ1biBzcGVj bWFuLWNsZWFyLXNjb3BlLWRlc2NyaXB0b3ItYW5kLWtleSAoa2V5IHZhbHVlKQogICJDbGVhciBh IHNjb3BlIGluZGV4IGVudHJ5LiAgSW50ZW5kZWQgZm9yIHVzZSB3aXRoIG1hcGhhc2guIgogICAg KGxldCAoKG9wZW5lcgogICAgICAgICAgIChzY29wZS1kZXNjcmlwdG9yLXBhcmVuIHZhbHVlKSkK ICAgICAgICAgIChjbG9zZXIKICAgICAgICAgICAoc2NvcGUtZGVzY3JpcHRvci1tYXRjaCB2YWx1 ZSkpCiAgICAgICAgICAocGFyZW50CiAgICAgICAgICAgKHNjb3BlLWRlc2NyaXB0b3ItcGFyZW50 IHZhbHVlKSkKICAgICAgICAgICkKICAgICAgOzsgc29tZSBzY29wZSBtYXJrZXJzIGNhbiBiZSBu aWwKICAgICAgKHdoZW4ga2V5CiAgICAgICAgKHNldC1tYXJrZXIga2V5IG5pbCkpCiAgICAgICh3 aGVuIG9wZW5lcgogICAgICAgIChzZXQtbWFya2VyIG9wZW5lciBuaWwpKQogICAgICAod2hlbiBj bG9zZXIKICAgICAgICAoc2V0LW1hcmtlciBjbG9zZXIgbmlsKSkKICAgICAgKHdoZW4gcGFyZW50 CiAgICAgICAgKHNldC1tYXJrZXIgcGFyZW50IG5pbCkpKSkKICAKCihkZWZ1biBzcGVjbWFuLWNs ZWFyLXNjb3BlLWluZGV4IChzY29wZS1pbmRleCkKICAiQ2xlYXIgYSBzY29wZSBpbmRleCBieSBz ZXR0aW5nIGFsbCBtYXJrZXJzIHRvIG5pbCwgc28gdGhleSBubyBsb25nZXIKaGF2ZSBhbiB1cGRh dGluZyBjb3N0IGFuZCB0aGUgaW5kZXggaXRzZWxmIHRvIG5pbC4iCiAgKHdoaWxlIHNjb3BlLWlu ZGV4CiAgICAoc3BlY21hbi1jbGVhci1zY29wZS1kZXNjcmlwdG9yLWFuZC1rZXkgKGNhYXIgc2Nv cGUtaW5kZXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNk YXIgc2NvcGUtaW5kZXgpKQogICAgKHNldHEgc2NvcGUtaW5kZXgKICAgICAgICAgIChjZHIgc2Nv cGUtaW5kZXgpKSkpCgooZGVmdW4gc3BlY21hbi1mb3JtYXQtc2NvcGUtZGVzY3JpcHRvci1hbmQt a2V5IChrZXkgdmFsdWUpCiAgImZvcm1hdCBhIHNjb3BlIGluZGV4IGVudHJ5LiAgSW50ZW5kZWQg Zm9yIHVzZSB3aXRoIG1hcGhhc2guIgogIChmb3JtYXQgIiVkID0+IDwlZCAlZD4gJWReXG4iCiAg ICAgICAgICAobWFya2VyLXBvc2l0aW9uIGtleSkKICAgICAgICAgIChtYXJrZXItcG9zaXRpb24g KHNjb3BlLWRlc2NyaXB0b3ItcGFyZW4gdmFsdWUpKQogICAgICAgICAgKG1hcmtlci1wb3NpdGlv biAoc2NvcGUtZGVzY3JpcHRvci1tYXRjaCB2YWx1ZSkpCiAgICAgICAgICAobWFya2VyLXBvc2l0 aW9uIChzY29wZS1kZXNjcmlwdG9yLXBhcmVudCB2YWx1ZSkpKSkKCihkZWZ1biBzcGVjbWFuLXBy aW50LXNjb3BlLWluZGV4IChzY29wZS1pbmRleCkKICAiUHJpbnQgYSBzY29wZSBpbmRleC4iCiAg KGlmIHNjb3BlLWluZGV4CiAgICAgICh3aGlsZSBzY29wZS1pbmRleAogICAgICAgIChzcGVjbWFu LWZvcm1hdC1zY29wZS1kZXNjcmlwdG9yLWFuZC1rZXkgKGNhYXIgc2NvcGUtaW5kZXgpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2RhciBzY29wZS1p bmRleCkpCiAgICAgICAgKHNldHEgc2NvcGUtaW5kZXgKICAgICAgICAgICAgICAoY2RyIHNjb3Bl LWluZGV4KSkpCiAgICAobWVzc2FnZSAiVHJ5aW5nIHRvIHByaW50IGFuIGVtcHR5IHNjb3BlLWlu ZGV4LiIpKSkKCihkZWZ1biBzcGVjbWFuLXNjb3BlLWluZGV4LXVwLWxpc3QgKHNjb3BlLWluZGV4 ICZvcHRpb25hbCB3aXRoaW4tY29kZS1yZWdpb24pCiAgKGxldCAoKHJlc3VsdAogICAgICAgICBu aWwpCiAgICAgICAgKQogICAgKHdoZW4gKHNwZWNtYW4tcmUtc2VhcmNoLWJhY2t3YXJkICJcXCgo XFwpXFx8XFwoKVxcfHtcXHx9XFwpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5pbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4tY29kZS1yZWdpb24pCiAgICAgIDs7 IGF0IG1hdGNoLWJlZ2lubmluZyAxIHdlJ3JlIGRvbmUsIG90aGVyd2lzZToKICAgICAgKGlmICht YXRjaC1iZWdpbm5pbmcgMikKICAgICAgICAgIChsZXQqICgocG9pbnQtbWFya2VyCiAgICAgICAg ICAgICAgICAgIChwb2ludC1tYXJrZXIpKQogICAgICAgICAgICAgICAgIChzY29wZS1kZXNjcmlw dG9yCiAgICAgICAgICAgICAgICAgIChhc3NvYyBwb2ludC1tYXJrZXIKICAgICAgICAgICAgICAg ICAgICAgICAgIHNjb3BlLWluZGV4KSkKICAgICAgICAgICAgICAgICAocGFyZW50LW9wZW5lcgog ICAgICAgICAgICAgICAgICAod2hlbiBzY29wZS1kZXNjcmlwdG9yCiAgICAgICAgICAgICAgICAg ICAgKHNjb3BlLWRlc2NyaXB0b3ItcGFyZW4tcGFyZW50IChjZHIgc2NvcGUtZGVzY3JpcHRvcikp KSkKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIChzZXQtbWFya2VyIHBvaW50LW1hcmtl ciBuaWwpCiAgICAgICAgICAgICh3aGVuIHBhcmVudC1vcGVuZXIKICAgICAgICAgICAgICAoc2V0 cSByZXN1bHQgKG1hcmtlci1wb3NpdGlvbiBwYXJlbnQtb3BlbmVyKSkpKQogICAgICAgIChzZXRx IHJlc3VsdCAocG9pbnQpKQogICAgICAgICkpCiAgICAod2hlbiByZXN1bHQKICAgICAgKGdvdG8t Y2hhciByZXN1bHQpKQogICAgcmVzdWx0KSkKCihkZWZ1biBzcGVjbWFuLXNjb3BlLWluZGV4LXVw LXNjb3BlIChzY29wZS1pbmRleCAmb3B0aW9uYWwgd2l0aGluLWNvZGUtcmVnaW9uKQogIChpZiAo c3BlY21hbi1yZS1zZWFyY2gtYmFja3dhcmQgIlxcKHtcXClcXHxcXCh9XFx8KFxcfClcXCkiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhpbi1j b2RlLXJlZ2lvbikKICAgICAgOzsgYXQgbWF0Y2gtYmVnaW5uaW5nIDEgd2UncmUgZG9uZSwgb3Ro ZXJ3aXNlOgogICAgICAod2hlbiAobWF0Y2gtYmVnaW5uaW5nIDIpCiAgICAgICAgKGxldCogKChw b2ludC1tYXJrZXIKICAgICAgICAgICAgICAgIChwb2ludC1tYXJrZXIpKQogICAgICAgICAgICAg ICAoc2NvcGUtZGVzY3JpcHRvcgogICAgICAgICAgICAgICAgKGFzc29jIHBvaW50LW1hcmtlcgog ICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLWluZGV4KSkKICAgICAgICAgICAgICAgKHBhcmVu dC1vcGVuZXIKICAgICAgICAgICAgICAgICh3aGVuIHNjb3BlLWRlc2NyaXB0b3IKICAgICAgICAg ICAgICAgICAgKHNjb3BlLWRlc2NyaXB0b3ItcGFyZW50IChjZHIgc2NvcGUtZGVzY3JpcHRvcikp KSkKICAgICAgICAgICAgICAgKQogICAgICAgICAgKHVubGVzcyBwYXJlbnQtb3BlbmVyCiAgICAg ICAgICAgIChlcnJvciAocHJpbnQgKGZvcm1hdCAic2NvcGUgLSAlZCAlZCIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChwb2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChpZiBwYXJlbnQtb3BlbmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKG1hcmtlci1wb3NpdGlvbiBwYXJlbnQtb3BlbmVyKQogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAtMSkpKSkpCiAgICAgICAgOzsoYXNzZXJ0IHBhcmVudC1vcGVuZXIp CiAgICAgICAgKGdvdG8tY2hhciBwYXJlbnQtb3BlbmVyKQogICAgICAgIChzZXQtbWFya2VyIHBv aW50LW1hcmtlciBuaWwpKSkKICAgIChnb3RvLWNoYXIgKHBvaW50LW1pbikpKQogIChwb2ludCkp CgooZGVmdW4gc3BlY21hbi1zY29wZS1pbmRleC1kb3duLXNjb3BlIChzY29wZS1pbmRleCAmb3B0 aW9uYWwgd2l0aGluLWNvZGUtcmVnaW9uKQogIChpZiAoc3BlY21hbi1yZS1zZWFyY2gtZm9yd2Fy ZCAiXFwoe1xcfChcXHwpXFwpXFx8XFwofVxcKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHBvaW50LW1heCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoaW4tY29kZS1yZWdpb24pCiAgICAgIChw cm9nbgogICAgICAgIChiYWNrd2FyZC1jaGFyKSAgOzsgdG8gYmUgZXhhY3RseSBvbiB0aGUgcGFy ZW4KICAgICAgICA7OyBhdCBtYXRjaC1iZWdpbm5pbmcgMiB3ZSdyZSBkb25lLCBvdGhlcndpc2U6 CiAgICAgICAgKHdoZW4gKG1hdGNoLWJlZ2lubmluZyAxKQogICAgICAgICAgKGxldCogKChwb2lu dC1tYXJrZXIKICAgICAgICAgICAgICAgICAgKHBvaW50LW1hcmtlcikpCiAgICAgICAgICAgICAg ICAgKHNjb3BlLWRlc2NyaXB0b3IKICAgICAgICAgICAgICAgICAgbmlsKQogICAgICAgICAgICAg ICAgIChwYXJlbnQtb3BlbmVyCiAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAg ICAgICAgIChzZXRxIHNjb3BlLWRlc2NyaXB0b3IKICAgICAgICAgICAgICAgICAgICAgICAgICAo YXNzb2MgcG9pbnQtbWFya2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3Bl LWluZGV4KSkKICAgICAgICAgICAgICAgICAgICAod2hlbiBzY29wZS1kZXNjcmlwdG9yCiAgICAg ICAgICAgICAgICAgICAgICAgIChzY29wZS1kZXNjcmlwdG9yLXBhcmVudCAoY2RyIHNjb3BlLWRl c2NyaXB0b3IpKSkpKQogICAgICAgICAgICAgICAgIChwYXJlbnQtY2xvc2VyCiAgICAgICAgICAg ICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICh3aGVuIHBhcmVudC1vcGVuZXIKICAg ICAgICAgICAgICAgICAgICAgIChzZXRxIHNjb3BlLWRlc2NyaXB0b3IKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChhc3NvYyBwYXJlbnQtb3BlbmVyCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgc2NvcGUtaW5kZXgpKQogICAgICAgICAgICAgICAgICAgICAgKHdoZW4gc2Nv cGUtZGVzY3JpcHRvcgogICAgICAgICAgICAgICAgICAgICAgICAoc2NvcGUtZGVzY3JpcHRvci1t YXRjaCAoY2RyIHNjb3BlLWRlc2NyaXB0b3IpKSkpKSkKICAgICAgICAgICAgICAgICApCiAgICAg ICAgICAgIChnb3RvLWNoYXIgKGlmIHBhcmVudC1jbG9zZXIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFyZW50LWNsb3NlcgogICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1heCkp KQogICAgICAgICAgICAoc2V0LW1hcmtlciBwb2ludC1tYXJrZXIgbmlsKSkpKQogICAgKGdvdG8t Y2hhciAocG9pbnQtbWF4KSkpCiAgKHBvaW50KSkKCjs7IGZpbmQgdGhlIHRvcCBjb250YWluaW5n IHNjb3BlIC0gZm9yIHNwZWNtYW4tYmVnLW9mLWRlZnVuCjs7IHRoZSBwcm9ibGVtIGlzIHRoYXQg aXQgaGFzIHdvcnNlIHBlcmZvcm1hbmNlIHRoYW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24u Cjs7IHRoaXMgY2FuIGJlIHNvbHZlZCBieSBoYXZpbmcgdGhlIHNjb3BlIGluZGV4IHJlZmVyIHRv IHNjb3BlLWRlc2NyaXB0b3JzCjs7IGluc3RlYWQgb2YgbWFya2VycywgYXMgaXQgZG9lcyBub3cu ICB0aGlzIHdpbGwgYWxsb3cgZmFzdCB0cmF2ZXJzYWwgb2YgdGhlCjs7IHNjb3BlIGluZGV4Lgo7 OyBUT0RPOiBvbmUgZGF5Li4uCjs7Cjs7IChkZWZ1biBzcGVjbWFuLXNjb3BlLWluZGV4LXRvcC1z Y29wZSAoc2NvcGUtaW5kZXggJm9wdGlvbmFsIHdpdGhpbi1jb2RlLXJlZ2lvbikKOzsgICAiRmlu ZCB0aGUgdG9wbW9zdCBzY29wZSBwb2ludCBpcyBjb250YWluZWQgaW4uIgo7OyAgIChpZiAoc3Bl Y21hbi1yZS1zZWFyY2gtYmFja3dhcmQgIlxcKHtcXClcXHxcXCh9XFx8KFxcfClcXCkiCjs7ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwKOzsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHQKOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp dGhpbi1jb2RlLXJlZ2lvbikKCjs7ICAgICAgIChsZXQgKChjb250aW51ZQo7OyAgICAgICAgICAg ICAgdCkKOzsgICAgICAgICAgICAgKG9wZW5lci1wb3NpdGlvbgo7OyAgICAgICAgICAgICAgKG1h dGNoLWJlZ2lubmluZyAxKSkKOzsgICAgICAgICAgICAgKHRvcC1zY29wZQo7OyAgICAgICAgICAg ICAgKHBvaW50LW1pbikpCjs7ICAgICAgICAgICAgICkKOzsgICAgICAgICAod2hpbGUgY29udGlu dWUKOzsgICAgICAgICAgIChsZXQqICgocG9pbnQtbWFya2VyCjs7ICAgICAgICAgICAgICAgICAg IChwb2ludC1tYXJrZXIpKQo7OyAgICAgICAgICAgICAgICAgIChzY29wZS1kZXNjcmlwdG9yCjs7 ICAgICAgICAgICAgICAgICAgIChhc3NvYyBwb2ludC1tYXJrZXIKOzsgICAgICAgICAgICAgICAg ICAgICAgICAgIHNjb3BlLWluZGV4KSkKOzsgICAgICAgICAgICAgICAgICAoY3VycmVudC1vcGVu ZXIKOzsgICAgICAgICAgICAgICAgICAgKHdoZW4gc2NvcGUtZGVzY3JpcHRvcgo7OyAgICAgICAg ICAgICAgICAgICAgIChpZiBvcGVuZXItcG9zaXRpb24KOzsgICAgICAgICAgICAgICAgICAgICAg ICAgKHNjb3BlLWRlc2NyaXB0b3ItcGFyZW4gKGNkciBzY29wZS1kZXNjcmlwdG9yKSkKOzsgICAg ICAgICAgICAgICAgICAgICAgIChzY29wZS1kZXNjcmlwdG9yLXBhcmVudCAoY2RyIHNjb3BlLWRl c2NyaXB0b3IpKSkpKQo7OyAgICAgICAgICAgICAgICAgIChwYXJlbnQtZGVzY3JpcHRvcgo7OyAg ICAgICAgICAgICAgICAgICAod2hlbiBjdXJyZW50LW9wZW5lcgo7OyAgICAgICAgICAgICAgICAg ICAgIChhc3NvYyBjdXJyZW50LW9wZW5lcgo7OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBz Y29wZS1pbmRleCkpKQo7OyAgICAgICAgICAgICAgICAgIChwYXJlbnQtb3BlbmVyCjs7ICAgICAg ICAgICAgICAgICAgICh3aGVuIHBhcmVudC1kZXNjcmlwdG9yCjs7ICAgICAgICAgICAgICAgICAg ICAgKHNjb3BlLWRlc2NyaXB0b3ItcGFyZW50IChjZHIgcGFyZW50LWRlc2NyaXB0b3IpKSkpCjs7 ICAgICAgICAgICAgICAgICAgKQoKOzsgICAgICAgICAgICAgKHNldHEgb3BlbmVyLXBvc2l0aW9u IHQpCjs7ICAgICAgICAgICAgIChzZXQtbWFya2VyIHBvaW50LW1hcmtlciBuaWwpCiAgICAgICAg ICAKOzsgICAgICAgICAgICAgKHVubGVzcyBwYXJlbnQtb3BlbmVyCjs7IDs7ICAgICAgICAgICAg ICAgKGVycm9yIChwcmludCAoZm9ybWF0ICJzY29wZSAtICVkICVkIgo7OyA7OyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpCjs7IDs7ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpZiBjdXJyZW50LW9wZW5lcgo7OyA7OyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hcmtlci1wb3NpdGlvbiBjdXJyZW50LW9wZW5l cikKOzsgOzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSkpKSkpCjs7 ICAgICAgICAgICAgICAgKHNldHEgY29udGludWUgbmlsKQo7OyAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgKHBvaW50LW1pbikpKQoKOzsgICAgICAgICAgICAgKHNldHEgdG9wLXNjb3BlIGN1cnJl bnQtb3BlbmVyKQo7OyAgICAgICAgICAgICAoZ290by1jaGFyIHBhcmVudC1vcGVuZXIpCjs7ICAg ICAgICAgICAgICh3aGVuIChlcXVhbCAocG9pbnQpCjs7ICAgICAgICAgICAgICAgICAgICAgICAg ICAocG9pbnQtbWluKSkKOzsgICAgICAgICAgICAgICAoc2V0cSBjb250aW51ZSBuaWwpKSkpCgo7 OyAgICAgICAgIChnb3RvLWNoYXIgdG9wLXNjb3BlKSkKICAgIAo7OyAgICAgKGdvdG8tY2hhciAo cG9pbnQtbWluKSkpCgo7OyAgIChwb2ludCkKOzsgICApCgooZGVmdW4gc3BlY21hbi1jcmVhdGUt Z2xvYmFsLXNjb3BlLWluZGV4ICgpCiAgKHNldHEgZ2xvYmFsLXNjb3BlLWluZGV4IChzcGVjbWFu LWNyZWF0ZS1zY29wZS1pbmRleCkpKQoKKGRlZnVuIHNwZWNtYW4tY2xlYXItZ2xvYmFsLXNjb3Bl LWluZGV4ICgpCiAgKHNwZWNtYW4tY2xlYXItc2NvcGUtaW5kZXggZ2xvYmFsLXNjb3BlLWluZGV4 KQogIChzZXRxIGdsb2JhbC1zY29wZS1pbmRleCBuaWwpKQoKKGRlZnVuIHNwZWNtYW4tcHJpbnQt Z2xvYmFsLXNjb3BlLWluZGV4ICgpCiAgKHNwZWNtYW4tcHJpbnQtc2NvcGUtaW5kZXggZ2xvYmFs LXNjb3BlLWluZGV4KSkKCgo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Cjs7IFNQRUNNQU4gU1lOVEFYIFRBQkxFCjs7ID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCihkZWZjb25zdCBzcGVjbWFuLWVtYWNz LWZlYXR1cmVzCiAgKGxldCAoKG1ham9yIChhbmQgKGJvdW5kcCAnZW1hY3MtbWFqb3ItdmVyc2lv bikKCQkgICAgZW1hY3MtbWFqb3ItdmVyc2lvbikpCgkobWlub3IgKGFuZCAoYm91bmRwICdlbWFj cy1taW5vci12ZXJzaW9uKQoJCSAgICBlbWFjcy1taW5vci12ZXJzaW9uKSkKCWZsYXZvciBjb21t ZW50cyApCiAgICA7OyBmaWd1cmUgb3V0IHZlcnNpb24gbnVtYmVycyBpZiBub3QgYWxyZWFkeSBk aXNjb3ZlcmVkCiAgICAoYW5kIChvciAobm90IG1ham9yKSAobm90IG1pbm9yKSkKCSAoc3RyaW5n LW1hdGNoICJcXChbMC05XStcXCkuXFwoWzAtOV0rXFwpIiBlbWFjcy12ZXJzaW9uKQoJIChzZXRx IG1ham9yIChzdHJpbmctdG8taW50IChzdWJzdHJpbmcgZW1hY3MtdmVyc2lvbgoJCQkJCSAgICAg ICAobWF0Y2gtYmVnaW5uaW5nIDEpCgkJCQkJICAgICAgIChtYXRjaC1lbmQgMSkpKQoJICAgICAg IG1pbm9yIChzdHJpbmctdG8taW50IChzdWJzdHJpbmcgZW1hY3MtdmVyc2lvbgoJCQkJCSAgICAg ICAobWF0Y2gtYmVnaW5uaW5nIDIpCgkJCQkJICAgICAgIChtYXRjaC1lbmQgMikpKSkpCiAgICAo aWYgKG5vdCAoYW5kIG1ham9yIG1pbm9yKSkKCShlcnJvciAiQ2Fubm90IGZpZ3VyZSBvdXQgdGhl IG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIG51bWJlcnMuIikpCiAgICA7OyBjYWxjdWxhdGUgdGhl IG1ham9yIHZlcnNpb24KICAgIChjb25kCiAgICAgKCg9IG1ham9yIDQpICAoc2V0cSBtYWpvciAn djE4KSkJO0Vwb2NoIDQKICAgICAoKD0gbWFqb3IgMTgpIChzZXRxIG1ham9yICd2MTgpKQk7RW1h Y3MgMTgKICAgICAoKD0gbWFqb3IgMTkpIChzZXRxIG1ham9yICd2MTkJO0VtYWNzIDE5CgkJCSBm bGF2b3IgKGlmIChvciAoc3RyaW5nLW1hdGNoICJMdWNpZCIgZW1hY3MtdmVyc2lvbikKCQkJCQko c3RyaW5nLW1hdGNoICJYRW1hY3MiIGVtYWNzLXZlcnNpb24pKQoJCQkJICAgICdYRW1hY3MgJ0ZT RikpKQogICAgICgoPiBtYWpvciAxOSkgKHNldHEgbWFqb3IgJ3YyMAoJCQkgZmxhdm9yIChpZiAo b3IgKHN0cmluZy1tYXRjaCAiTHVjaWQiIGVtYWNzLXZlcnNpb24pCgkJCQkJKHN0cmluZy1tYXRj aCAiWEVtYWNzIiBlbWFjcy12ZXJzaW9uKSkKCQkJCSAgICAnWEVtYWNzICdGU0YpKSkKICAgICA7 OyBJIGRvbid0IGtub3cKICAgICAodCAoZXJyb3IgIkNhbm5vdCByZWNvZ25pemUgbWFqb3IgdmVy c2lvbiBudW1iZXI6ICVzIiBtYWpvcikpKQogICAgOzsgWEVtYWNzIDE5IHVzZXMgOC1iaXQgbW9k aWZ5LXN5bnRheC1lbnRyeSBmbGFncywgYXMgZG8gYWxsCiAgICA7OyBwYXRjaGVkIEVtYWNzIDE5 LCBFbWFjcyAxOCwgRXBvY2ggNCdzLiAgT25seSBFbWFjcyAxOSB1c2VzIGEKICAgIDs7IDEtYml0 IGZsYWcuICBMZXQncyBiZSBhcyBzbWFydCBhcyB3ZSBjYW4gYWJvdXQgZmlndXJpbmcgdGhpcwog ICAgOzsgb3V0LgogICAgKGlmIChvciAoZXEgbWFqb3IgJ3YyMCkgKGVxIG1ham9yICd2MTkpKQoJ KGxldCAoKHRhYmxlIChjb3B5LXN5bnRheC10YWJsZSkpKQoJICAobW9kaWZ5LXN5bnRheC1lbnRy eSA/YSAiLiAxMjM0NTY3OCIgdGFibGUpCgkgIChjb25kCgkgICA7OyBYRW1hY3MgcHJlIDIwIGFu ZCBFbWFjcyBwcmUgMTkuMzAgdXNlIHZlY3RvcnMgZm9yIHN5bnRheCB0YWJsZXMuCgkgICAoKHZl Y3RvcnAgdGFibGUpCgkgICAgKGlmICg9IChsb2dhbmQgKGxzaCAoYXJlZiB0YWJsZSA/YSkgLTE2 KSAyNTUpIDI1NSkKCQkoc2V0cSBjb21tZW50cyAnOC1iaXQpCgkgICAgICAoc2V0cSBjb21tZW50 cyAnMS1iaXQpKSkKCSAgIDs7IFhFbWFjcyAyMCBpcyBrbm93biB0byBiZSA4LWJpdAoJICAgKChl cSBmbGF2b3IgJ1hFbWFjcykgKHNldHEgY29tbWVudHMgJzgtYml0KSkKCSAgIDs7IEVtYWNzIDE5 LjMwIGFuZCBiZXlvbmQgYXJlIGtub3duIHRvIGJlIDEtYml0CgkgICAoKGVxIGZsYXZvciAnRlNG KSAoc2V0cSBjb21tZW50cyAnMS1iaXQpKQoJICAgOzsgRG9uJ3Qga25vdyB3aGF0IHRoaXMgaXMK CSAgICh0IChlcnJvciAiQ291bGRuJ3QgZmlndXJlIG91dCBzeW50YXggdGFibGUgZm9ybWF0LiIp KQoJICAgKSkKICAgICAgOzsgRW1hY3MgMTggaGFzIG5vIHN1cHBvcnQgZm9yIGR1YWwgY29tbWVu dHMKICAgICAgKHNldHEgY29tbWVudHMgJ25vLWR1YWwtY29tbWVudHMpKQogICAgOzsgbGV0cyBk byBzb21lIG1pbmltYWwgc2FuaXR5IGNoZWNraW5nLgogICAgKGlmIChvcgoJIDs7IExlbWFjcyBi ZWZvcmUgMTkuNiBoYWQgYnVncwoJIChhbmQgKGVxIG1ham9yICd2MTkpIChlcSBmbGF2b3IgJ1hF bWFjcykgKDwgbWlub3IgNikpCgkgOzsgRW1hY3MgMTkgYmVmb3JlIDE5LjIxIGhhcyBrbm93biBi dWdzCgkgKGFuZCAoZXEgbWFqb3IgJ3YxOSkgKGVxIGZsYXZvciAnRlNGKSAoPCBtaW5vciAyMSkp CgkgKQoJKHdpdGgtb3V0cHV0LXRvLXRlbXAtYnVmZmVyICIqc3BlY21hbi1tb2RlIHdhcm5pbmdz KiIKCSAgKHByaW50IChmb3JtYXQKCQkgICJUaGUgdmVyc2lvbiBvZiBFbWFjcyB0aGF0IHlvdSBh cmUgcnVubmluZywgJXMsCmhhcyBrbm93biBidWdzIGluIGl0cyBzeW50YXggcGFyc2luZyByb3V0 aW5lcyB3aGljaCB3aWxsIGFmZmVjdCB0aGUKcGVyZm9ybWFuY2Ugb2Ygc3BlY21hbi1tb2RlLiBZ b3Ugc2hvdWxkIHN0cm9uZ2x5IGNvbnNpZGVyIHVwZ3JhZGluZyB0byB0aGUKbGF0ZXN0IGF2YWls YWJsZSB2ZXJzaW9uLiAgU3BlY21hbi1tb2RlIG1heSBjb250aW51ZSB0byB3b3JrLCBhZnRlciBh CmZhc2hpb24sIGJ1dCBzdHJhbmdlIGluZGVudGF0aW9uIGVycm9ycyBjb3VsZCBiZSBlbmNvdW50 ZXJlZC4iCgkJICBlbWFjcy12ZXJzaW9uKSkpKQogICAgOzsgRW1hY3MgMTgsIHdpdGggbm8gcGF0 Y2ggaXMgbm90IHRvbyBnb29kCiAgICAoaWYgKGFuZCAoZXEgbWFqb3IgJ3YxOCkgKGVxIGNvbW1l bnRzICduby1kdWFsLWNvbW1lbnRzKSkKCSh3aXRoLW91dHB1dC10by10ZW1wLWJ1ZmZlciAiKnNw ZWNtYW4tbW9kZSB3YXJuaW5ncyoiCgkgIChwcmludCAoZm9ybWF0CgkJICAiVGhlIHZlcnNpb24g b2YgRW1hY3MgMTggeW91IGFyZSBydW5uaW5nLCAlcywKaGFzIGtub3duIGRlZmljaWVuY2llcyBp biBpdHMgYWJpbGl0eSB0byBoYW5kbGUgdGhlIGR1YWwgc3BlY21hbgpjb21tZW50cywgW2UuZy4g dGhlIC8vIGFuZCAtLSBjb21tZW50c10uIFlvdSByZWFsbHkgc2hvdWxkIHN0cm9uZ2x5CmNvbnNp ZGVyIHVwZ3JhZGluZyB0byBvbmUgb2YgdGhlIGxhdGVzdCBFbWFjcyAxOVwncy4gIEluIEVtYWNz IDE4LCB5b3UKbWF5IGFsc28gZXhwZXJpZW5jZSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbnMuICBF bWFjcyAxOSBoYXMgc29tZSBuZXcKYnVpbHQtaW4gcm91dGluZXMgd2hpY2ggd2lsbCBzcGVlZCB0 aGluZ3MgdXAgZm9yIHlvdS4gIEJlY2F1c2Ugb2YKdGhlc2UgaW5oZXJlbnQgcHJvYmxlbXMsIHNw ZWNtYW4tbW9kZSBpcyBub3Qgc3VwcG9ydGVkIG9uIGVtYWNzLTE4LiIKCQkgIGVtYWNzLXZlcnNp b24pKSkpCiAgICA7OyBFbWFjcyAxOCB3aXRoIHRoZSBzeW50YXggcGF0Y2hlcyBhcmUgbm8gbG9u Z2VyIHN1cHBvcnRlZAogICAgKGlmIChhbmQgKGVxIG1ham9yICd2MTgpIChub3QgKGVxIGNvbW1l bnRzICduby1kdWFsLWNvbW1lbnRzKSkpCgkod2l0aC1vdXRwdXQtdG8tdGVtcC1idWZmZXIgIipz cGVjbWFuLW1vZGUgd2FybmluZ3MqIgoJICAocHJpbnQgKGZvcm1hdAogICJZb3UgYXJlIHJ1bm5p bmcgYSBzeW50YXggcGF0Y2hlZCBFbWFjcyAxOCB2YXJpYW50LiAgV2hpbGUgdGhpcyBzaG91bGQK d29yayBmb3IgeW91LCB5b3UgbWF5IHdhbnQgdG8gY29uc2lkZXIgdXBncmFkaW5nIHRvIEVtYWNz IDE5LgpUaGUgc3ludGF4IHBhdGNoZXMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgZWl0aGVyIGZv ciBzcGVjbWFuLW1vZGUuIikpKSkKICAgIChsaXN0IG1ham9yIGNvbW1lbnRzICkpCiAgIkEgbGlz dCBvZiBmZWF0dXJlcyBleHRhbnQgaW4gdGhlIEVtYWNzIHlvdSBhcmUgdXNpbmcuClRoZXJlIGFy ZSBtYW55IGZsYXZvcnMgb2YgRW1hY3Mgb3V0IHRoZXJlLCBlYWNoIHdpdGggZGlmZmVyZW50CmZl YXR1cmVzIHN1cHBvcnRpbmcgdGhvc2UgbmVlZGVkIGJ5IHNwZWNtYW4tbW9kZS4gIEhlcmUncyB0 aGUgY3VycmVudApzdXBwb3J0ZWQgbGlzdCwgYWxvbmcgd2l0aCB0aGUgdmFsdWVzIGZvciB0aGlz IHZhcmlhYmxlOgoKIFZhbmlsbGEgRW1hY3MgMTgvRXBvY2ggNDogICAodjE4IG5vLWR1YWwtY29t bWVudHMgZmxvY2stc3ludGF4LWJlZm9yZS0xOTMwKQogRW1hY3MgMTgvRXBvY2ggNCAocGF0Y2gy KTogICh2MTggOC1iaXQgZmxvY2stc3ludGF4LWFmdGVyLTE5MzApCiBYRW1hY3MgKGZvcm1lcmx5 IEx1Y2lkKSAxOTogKHYxOSA4LWJpdCBmbG9jay1zeW50YXgtYWZ0ZXItMTkzMCkKIFhFbWFjcyA+ PSAyMDogICAgICAgICAgICAgICAodjIwIDgtYml0IGZsb2NrLXN5bnRheC1hZnRlci0xOTMwKQog RW1hY3MgMTkuMS0xOS4zMDogICAgICAgICAgICh2MTkgOC1iaXQgZmxvY2stc3ludGF4LWJlZm9y ZS0xOTMwKQogRW1hY3MgMTkuMzEtMTkueHg6ICAgICAgICAgICh2MTkgOC1iaXQgZmxvY2stc3lu dGF4LWFmdGVyLTE5MzApCiBFbWFjcyA+PTIwOiAgICAgICAgICAgICAgICAgKHYyMCAxLWJpdCBm bG9jay1zeW50YXgtYWZ0ZXItMTkzMCkuIgogICkKCihkZWZ1biBzcGVjbWFuLXBvcHVsYXRlLXN5 bnRheC10YWJsZSAodGFibGUpCiAgKG1vZGlmeS1zeW50YXgtZW50cnkgP18gICJ3IiAgICAgICAg dGFibGUpICA7OyB1bmRlcnNjb3JlIGlzIGEgcGFydCBvZiB3b3JkcwogIChtb2RpZnktc3ludGF4 LWVudHJ5ID97ICAiKH0iICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID99ICAi KXsiICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cKCAiKCkiICAgICAgIHRh YmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cKSAiKSgiICAgICAgIHRhYmxlKQogIChtb2Rp Znktc3ludGF4LWVudHJ5ID9cWyAiKF0iICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVu dHJ5ID9cXSAiKVsiICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cJSAiLiIg ICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cQCAiLiIgICAgICAgIHRhYmxl KSAgOzsgZm9yIGV2ZW50cwogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cJyAiLiIgICAgICAgIHRh YmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cPCAiLiIgICAgICAgIHRhYmxlKQogIChtb2Rp Znktc3ludGF4LWVudHJ5ID9cPiAiLiIgICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVu dHJ5ID9cXCAiXFwiICAgICAgIHRhYmxlKQogIChtb2RpZnktc3ludGF4LWVudHJ5ID9cbiAiLiIg ICAgICAgIHRhYmxlKQogIHRhYmxlCiAgKQoKKGRlZnVuIHNwZWNtYW4tc2V0dXAtZHVhbC1jb21t ZW50cyAodGFibGUpCiAgOzsgU2V0IHVwIFRBQkxFIHRvIGhhbmRsZSBjb21tZW50cwogIDs7IHVu Zm9ydHVuYXRlbHksIGVtYWNzIGNhbid0IGhhbmRsZSAyIHN0eWxlcyBvZiBkdWFsIGNvbW1lbnRz CiAgOzsgcHJvcGVybHksIHNvIG9ubHkgLy8gaXMgZGVmaW5lZCBoZXJlLiAgLS0gaXMgaGFuZGxl ZAogIDs7IHNlcGFyYXRlbHkuICB4ZW1hY3MgY2FuLCBidXQgd2UgbXVzdCB1c2Ugc29tZXRoaW5n IHdoaWNoCiAgOzsgaXMgY29tcGF0aWJsZSBmb3IgYm90aCBlbWFjc2VuLgogIDs7IGluc3RlYWQs IHRoZSBzZWNvbmQgY29tbWVudCBzdHlsZSAvKi4uLiovIGlzIHVzZWQsIGFsdGhvdWdoCiAgOzsg aXQgaXMgb25seSBhIHZhbGlkIHN5bnRheCBpbiB0aGUgY29udGV4dCBvZiBjIHJvdXRpbmVzLgog IAogIChjb25kCiAgICgobWVtcSAnOC1iaXQgc3BlY21hbi1lbWFjcy1mZWF0dXJlcykKICAgIDs7 IFhFbWFjcyAoZm9ybWVybHkgTHVjaWQpIGhhcyB0aGUgYmVzdCBpbXBsZW1lbnRhdGlvbgogICAg Cjs7ICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID8vICAiLiAxMiIgdGFibGUpCjs7ICAgIChtb2Rp Znktc3ludGF4LWVudHJ5ID8tICAiLiA1NiIgdGFibGUpCjs7ICAgIChtb2RpZnktc3ludGF4LWVu dHJ5ID9cbiAiPiAzNyIgdGFibGUpCjs7ICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID9cZiAiPiAz NyIgdGFibGUpCiAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/LyAgIi4gMTI1OCIgdGFibGUpCiAg ICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/KiAgIi4gNjciIHRhYmxlKQogICAgKG1vZGlmeS1zeW50 YXgtZW50cnkgP1xuICI+IDMiIHRhYmxlKQogICAgKG1vZGlmeS1zeW50YXgtZW50cnkgP1xmICI+ IDMiIHRhYmxlKQogICAgKQogICAoKG1lbXEgJzEtYml0IHNwZWNtYW4tZW1hY3MtZmVhdHVyZXMp CiAgICA7OyBFbWFjcyAxOSBkb2VzIHRoaW5ncyBkaWZmZXJlbnRseSwgYnV0IHdlIGNhbiB3b3Jr IHdpdGggaXQKICAgIAo7OyAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/LyAgIi4gMTIiIHRhYmxl KQo7OyAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/XG4gIj4iICAgIHRhYmxlKQo7OyAgICAobW9k aWZ5LXN5bnRheC1lbnRyeSA/XGYgIj4iICAgIHRhYmxlKQo7OyAgICAobW9kaWZ5LXN5bnRheC1l bnRyeSA/LSAgIjwgMTJiIiB0YWJsZSkKOzsgICAgKG1vZGlmeS1zeW50YXgtZW50cnkgP1xuICI+ IGIiICAgIHRhYmxlKQo7OyAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/XGYgIj4gYiIgICAgdGFi bGUpCiAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA/LyAgIi4gMTI0IiB0YWJsZSkKICAgIChtb2Rp Znktc3ludGF4LWVudHJ5ID8qICAiLiAyM2IiIHRhYmxlKQogICAgKG1vZGlmeS1zeW50YXgtZW50 cnkgP1xuICI+IiAgICB0YWJsZSkKICAgIChtb2RpZnktc3ludGF4LWVudHJ5ID9cZiAiPiIgICAg dGFibGUpCiAgICApKQogICkKCihkZWZ2YXIgZW1hY3Mta2luZCBuaWwpCgo7OyBlbWFjcyBvciB4 ZW1hY3MKKGlmIChvciAoc3RyaW5nLW1hdGNoICJMdWNpZCIgZW1hY3MtdmVyc2lvbikKICAgICAg ICAoc3RyaW5nLW1hdGNoICJYRW1hY3MiIGVtYWNzLXZlcnNpb24pKQogICAgKHNldHEgc3BlY21h bi1lbWFjcy1raW5kICd4ZW1hY3MpCiAgKHNldHEgc3BlY21hbi1lbWFjcy1raW5kICdlbWFjcykp CgoKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7 OyBTUEVDTUFOIElNRU5VIEZFQVRVUkUKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQoKKGRlZnVuIHNwZWNtYW4taW1lbnUtc3BsaXQtbWVudSAoaW5k ZXgtYWxpc3QgbWF4LWl0ZW1zKQogIAogIChsZXQgKChyZXN1bHQtYWxpc3QKICAgICAgICAgbmls KQogICAgICAgIChzdWItYWxpc3QKICAgICAgICAgbmlsKQogICAgICAgIChjb3VudGVyCiAgICAg ICAgIG1heC1pdGVtcykKICAgICAgICApCiAgICA7OyBicmVhayB0aGUgaW5kZXggbGlzdCBpbnRv IHN1Yi1saXN0cyBpbiB0aGUgcmVzdWx0IGxpc3QKICAgICh3aGlsZSBpbmRleC1hbGlzdAogICAg ICAoaWYgKD4gY291bnRlciAwKQogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChzZXRxIGNv dW50ZXIgKDEtIGNvdW50ZXIpKQogICAgICAgICAgICAocHVzaCAoY2FyIGluZGV4LWFsaXN0KQog ICAgICAgICAgICAgICAgICBzdWItYWxpc3QpCiAgICAgICAgICAgIChzZXRxIGluZGV4LWFsaXN0 IChjZHIgaW5kZXgtYWxpc3QpKSkKICAgICAgICAocHJvZ24KICAgICAgICAgIChzZXRxIGNvdW50 ZXIgbWF4LWl0ZW1zKQogICAgICAgICAgKHNldHEgc3ViLWFsaXN0IChyZXZlcnNlIHN1Yi1hbGlz dCkpCiAgICAgICAgICAocHVzaCAoY29ucyAoZm9ybWF0ICJGcm9tOiAlcyIgKGNhYXIgc3ViLWFs aXN0KSkKICAgICAgICAgICAgICAgICAgICAgIHN1Yi1hbGlzdCkKICAgICAgICAgICAgICAgIHJl c3VsdC1hbGlzdCkKICAgICAgICAgIChzZXRxIHN1Yi1hbGlzdCBuaWwpKSkpCgogICAgOzsgaGFu ZGxlIHdoYXQgaXMgbGVmdCBpbiB0aGUgc3ViLWxpc3QKICAgIChpZiByZXN1bHQtYWxpc3QKICAg ICAgICAocHJvZ24KICAgICAgICAgIChzZXRxIHN1Yi1hbGlzdCAocmV2ZXJzZSBzdWItYWxpc3Qp KQogICAgICAgICAgKHB1c2ggKGNvbnMgKGZvcm1hdCAiRnJvbTogJXMiIChjYWFyIHN1Yi1hbGlz dCkpCiAgICAgICAgICAgICAgICAgICAgICBzdWItYWxpc3QpCiAgICAgICAgICAgICAgICByZXN1 bHQtYWxpc3QpKQogICAgICAoc2V0cSByZXN1bHQtYWxpc3Qgc3ViLWFsaXN0KSkKCiAgICAoc2V0 cSBpbmRleC1hbGlzdCAocmV2ZXJzZSByZXN1bHQtYWxpc3QpKQoKICAgIDs7IHJldHVybiByZXN1 bHQKICAgIGluZGV4LWFsaXN0KSkKCihkZWZ1biBzcGVjbWFuLWltZW51LWNyZWF0ZS1tZW51LWZv ci1yZWdpb24gKHJlZy1zdGFydCByZWctZW5kIHNjb3BlLWluZGV4LXBhcmFtKQogIDs7IGZ1bmN0 aW9uIGFjY2VwdHMgYSByZWdpb24gYmVjYXVzZSBpdCBpcyB1c2VkIHJlY3Vyc2l2ZWx5CgogIChs ZXQgKChzY29wZS1yZWdleHAKICAgICAgICAgc3BlY21hbi1jb250YWluZXItc2NvcGUtZGVmaW5p dGlvbi1yZWdleHApCiAgICAgICAgKG1ldGhvZC1yZWdleHAKICAgICAgICBzcGVjbWFuLW1ldGhv ZC1kZWZpbml0aW9uLXJlZ2V4cCkKICAgICAgICAob24tZXZlbnQtcmVnZXhwCiAgICAgICAgc3Bl Y21hbi1vbi1ldmVudC1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHApCiAgICAgICAgKGV2ZW50LXJl Z2V4cAogICAgICAgIHNwZWNtYW4tZXZlbnQtZGVmaW5pdGlvbi1yZWdleHApCiAgICAgICAgKHR5 cGUtcmVnZXhwCiAgICAgICAgc3BlY21hbi10eXBlLWRlZmluaXRpb24tcmVnZXhwKQogICAgICAg IChjb3Zlci1yZWdleHAKICAgICAgICBzcGVjbWFuLWNvdmVyLWRlZmluaXRpb24tcmVnZXhwKQog ICAgICAgIChmaWVsZC1yZWdleHAKICAgICAgICBzcGVjbWFuLWZpZWxkLWRlZmluaXRpb24tcmVn ZXhwKQoKICAgICAgICA7OyB0aGVzZSBhcmUgdXNlZCB0byBhdm9pZCBwb3NzaWJsZSBwYXJzaW5n IGVycm9ycyBvbiB0aGUgYmxvY2tzIHRoZXkgc3RhcnQKICAgICAgICAoa2VlcC1zb2Z0LXNlbGVj dC1yZWdleHAKICAgICAgICAiXFwoa2VlcFsgXHRcbl0rc29mdFsgXHRcbl0rW147XSs9PVsgXHRc bl0rc2VsZWN0WyBcdFxuXSp7XFwpIikKICAgICAgICAoZ2VuLWtlZXBpbmctcmVnZXhwCiAgICAg ICAgImdlblsgXHRcbl0qXFwoW0EtWmEtejAtOV9dK1xcKVsgXHRcbl0qa2VlcGluZ1sgXHRcbl0q eyIpCiAgICAgICAgIAogICAgICAgIChpbmRleC1hbGlzdAogICAgICAgIG5pbCkKICAgICAgICAo ZXZlbnQtYWxpc3QKICAgICAgICBuaWwpCiAgICAgICAgKHR5cGUtYWxpc3QKICAgICAgICBuaWwp CiAgICAgICAgKGNvdmVyLWFsaXN0CiAgICAgICAgbmlsKQogICAgICAgIChmaWVsZC1hbGlzdAog ICAgICAgIG5pbCkKCiAgICAgICAgKHNjb3BlLWluZGV4CiAgICAgICAgIHNjb3BlLWluZGV4LXBh cmFtKQogICAgICAgICkKICAgIAogICAgKGxldCAoKGNvbW1vbi1yZWdleHAKICAgICAgICAgICAo Y29uY2F0CiAgICAgICAgICAgICJeWyBcdF0qIgogICAgICAgICAgICAiXFwoPzoiCiAgICAgICAg ICAgCiAgICAgICAgICAgICJcXCg/OiIKICAgICAgICAgICAgc2NvcGUtcmVnZXhwCiAgICAgICAg ICAgICJcXClcXHxcXCg/OiIKICAgICAgICAgICAgbWV0aG9kLXJlZ2V4cAogICAgICAgICAgICAi XFwpXFx8XFwoPzoiCiAgICAgICAgICAgIG9uLWV2ZW50LXJlZ2V4cAogICAgICAgICAgICAiXFwp XFx8XFwoPzoiCiAgICAgICAgICAgIGV2ZW50LXJlZ2V4cAogICAgICAgICAgICAiXFwpXFx8XFwo PzoiCiAgICAgICAgICAgIHR5cGUtcmVnZXhwCiAgICAgICAgICAgICJcXClcXHxcXCg/OiIKICAg ICAgICAgICAgY292ZXItcmVnZXhwCiAgICAgICAgICAgICJcXClcXHxcXCg/OiIKICAgICAgICAg ICAgZmllbGQtcmVnZXhwCiAgICAgICAgICAgICJcXClcXHxcXCg/OiIKICAgICAgICAgICAga2Vl cC1zb2Z0LXNlbGVjdC1yZWdleHAKICAgICAgICAgICAgIlxcKVxcfFxcKD86IgogICAgICAgICAg ICBnZW4ta2VlcGluZy1yZWdleHAKICAgICAgICAgICAgIlxcKSIKICAgICAgICAgICAKICAgICAg ICAgICAgIlxcKSIpKQogICAgICAgICAgKQoKICAgICAgKHVubGVzcyBzY29wZS1pbmRleC1wYXJh bQogICAgICAgIChzcGVjbWFuLWNyZWF0ZS1nbG9iYWwtc2NvcGUtaW5kZXgpCiAgICAgICAgKHNl dHEgc2NvcGUtaW5kZXggZ2xvYmFsLXNjb3BlLWluZGV4KSkKICAgIAogICAgICA7OyBjb250YWlu ZXJzIGFuZCBtZXRob2RzIGFyZSBpbnNlcnRlZCBhcyB0aGV5IG9jY3VyIGludG8gdGhlIG1haW4g bGlzdCwKICAgICAgOzsgYWxsIG90aGVyIHR5cGVzIGdldCB0aGVpciBvd24gc3ViLW1lbnVzLgog ICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAoZ290by1jaGFyIHJlZy1zdGFydCkKICAgICAg ICAoc3BlY21hbi1za2lwLWZvcndhcmQtY29tbWVudC1vci1zdHJpbmcpCiAgICAgICAgKHdoaWxl IChzcGVjbWFuLXJlLXNlYXJjaC1mb3J3YXJkIGNvbW1vbi1yZWdleHAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnLWVuZAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHQpCiAgICAgICAgICAoY29uZAogICAgICAgICAgICg7OyAgY29udGFpbmVyCiAgICAg ICAgICAgIChtYXRjaC1iZWdpbm5pbmcgMSkKICAgICAgICAgIAogICAgICAgICAgICAocHJvZ24K ICAgICAgICAgICAgICAoc2F2ZS1tYXRjaC1kYXRhCiAgICAgICAgICAgICAgICAoc3BlY21hbi1y ZS1zZWFyY2gtZm9yd2FyZCAieyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwb2ludC1tYXgpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KSkKICAg ICAgICAgICAgICAocHVzaCAoY29ucyAoc3BlY21hbi1wcmVwYXJlZC1idWZmZXItc3Vic3RyaW5n IChtYXRjaC1iZWdpbm5pbmcgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1lbmQgMSkpCiAgICAgICAgICAgICAgICAg ICAgICAgICAgKGNvbnMgKGNvbnMgIj09ICBERUZJTklUSU9OICA9PSIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoY29weS1tYXJrZXIgKG1hdGNoLWJlZ2lubmluZyAxKSkp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4taW1lbnUtY3JlYXRlLW1l bnUtZm9yLXJlZ2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLXNjb3BlLWluZGV4LWRvd24tc2NvcGUg c2NvcGUtaW5kZXggdCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlLWlu ZGV4KSkpCiAgICAgICAgICAgICAgICAgICAgaW5kZXgtYWxpc3QpCgogICAgICAgICAgICAgIChz cGVjbWFuLXNjb3BlLWluZGV4LWRvd24tc2NvcGUgc2NvcGUtaW5kZXggdCkKICAgICAgICAgICAg ICApCiAgICAgICAgICAgICkKICAgICAgICAgICAoOzsgIG1ldGhvZAogICAgICAgICAgICAobWF0 Y2gtYmVnaW5uaW5nIDIpCiAgICAgICAgICAKICAgICAgICAgICAgKHB1c2ggKGNvbnMgKGNvbmNh dAogICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0 cmluZyAobWF0Y2gtYmVnaW5uaW5nIDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1lbmQgMikpCiAgICAgICAgICAgICAg ICAgICAgICAgICAiKCkiKQogICAgICAgICAgICAgICAgICAgICAgICAoY29weS1tYXJrZXIgKG1h dGNoLWJlZ2lubmluZyAyKSkpCiAgICAgICAgICAgICAgICAgIGluZGV4LWFsaXN0KQogICAgICAg ICAgICApCiAgICAgICAgICAgKDs7ICBvbiBldmVudCBtZXRob2QKICAgICAgICAgICAgKG1hdGNo LWJlZ2lubmluZyAzKQoKICAgICAgICAgICAgKHB1c2ggKGNvbnMgKHNwZWNtYW4tcHJlcGFyZWQt YnVmZmVyLXN1YnN0cmluZyAobWF0Y2gtYmVnaW5uaW5nIDMpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWVuZCAzKSkKICAg ICAgICAgICAgICAgICAgICAgICAgKGNvcHktbWFya2VyIChtYXRjaC1iZWdpbm5pbmcgMykpKQog ICAgICAgICAgICAgICAgICBpbmRleC1hbGlzdCkKICAgICAgICAgICAgKQogICAgICAgICAgICg7 OyAgZXZlbnQKICAgICAgICAgICAgKG1hdGNoLWJlZ2lubmluZyA0KQoKICAgICAgICAgICAgKHB1 c2ggKGNvbnMgKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmluZyAobWF0Y2gtYmVnaW5u aW5nIDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKG1hdGNoLWVuZCA0KSkKICAgICAgICAgICAgICAgICAgICAgICAgKGNvcHktbWFy a2VyIChtYXRjaC1iZWdpbm5pbmcgNCkpKQogICAgICAgICAgICAgICAgICBldmVudC1hbGlzdCkK ICAgICAgICAgICAgKQogICAgICAgICAgICg7OyAgdHlwZQogICAgICAgICAgICAobWF0Y2gtYmVn aW5uaW5nIDUpCgogICAgICAgICAgICAocHVzaCAoY29ucyAoc3BlY21hbi1wcmVwYXJlZC1idWZm ZXItc3Vic3RyaW5nIChtYXRjaC1iZWdpbm5pbmcgNSkKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDUpKQogICAgICAg ICAgICAgICAgICAgICAgICAoY29weS1tYXJrZXIgKG1hdGNoLWJlZ2lubmluZyA1KSkpCiAgICAg ICAgICAgICAgICAgIHR5cGUtYWxpc3QpCiAgICAgICAgICAgICkKICAgICAgICAgICAoOzsgIGNv dmVyIGdyb3VwCiAgICAgICAgICAgIChtYXRjaC1iZWdpbm5pbmcgNikKCiAgICAgICAgICAgIChw cm9nbgogICAgICAgICAgICAgIChwdXNoIChjb25zIChzcGVjbWFuLXByZXBhcmVkLWJ1ZmZlci1z dWJzdHJpbmcgKG1hdGNoLWJlZ2lubmluZyA2KQogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWVuZCA2KSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAoY29weS1tYXJrZXIgKG1hdGNoLWJlZ2lubmluZyA2KSkpCiAgICAg ICAgICAgICAgICAgICAgY292ZXItYWxpc3QpCiAgICAgICAgICAgIAogICAgICAgICAgICAgIDs7 IGF2b2lkIHBhcnNpbmcgdGhlIGNvdmVyIGdyb3VwCiAgICAgICAgICAgICAgKHNwZWNtYW4tcmUt c2VhcmNoLWZvcndhcmQgInsiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKHBvaW50LW1heCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkKICAgICAgICAgICAg ICAoc3BlY21hbi1zY29wZS1pbmRleC1kb3duLXNjb3BlIHNjb3BlLWluZGV4IHQpKQogICAgICAg ICAgICApCiAgICAgICAgICAgKDs7ICBmaWVsZAogICAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5n IDcpCgogICAgICAgICAgICAocHVzaCAoY29ucyAoc3BlY21hbi1wcmVwYXJlZC1idWZmZXItc3Vi c3RyaW5nIChtYXRjaC1iZWdpbm5pbmcgNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDcpKQogICAgICAgICAgICAg ICAgICAgICAgICAoY29weS1tYXJrZXIgKG1hdGNoLWJlZ2lubmluZyA3KSkpCiAgICAgICAgICAg ICAgICAgIGZpZWxkLWFsaXN0KQogICAgICAgICAgICApCiAgICAgICAgICAgKDs7ICBrZWVwIC0g dXNlZCB0byBza2lwIHNvZnQgc2VsZWN0cywgd2hlcmUgdGhlIHdlaWdodHMgbG9vayBsaWtlIGZp ZWxkcwogICAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5nIDgpCgogICAgICAgICAgICA7OyBwb2lu dCBpcyBhbHJlYWR5IGJleW9uZCB0aGUgb3BlbmluZyBwYXJlbgogICAgICAgICAgICAoc3BlY21h bi1zY29wZS1pbmRleC1kb3duLXNjb3BlIHNjb3BlLWluZGV4IHQpCiAgICAgICAgICAgICkKICAg ICAgICAgICAoOzsgIGdlbiBrZWVwaW5nIC0gc2tpcCB0aGUgc2NvcGUgdG8gYXZvaWQgY29uZnVz aW9uCiAgICAgICAgICAgIChtYXRjaC1iZWdpbm5pbmcgOSkKCiAgICAgICAgICAgIDs7IHBvaW50 IGlzIGFscmVhZHkgYmV5b25kIHRoZSBvcGVuaW5nIHBhcmVuCiAgICAgICAgICAgIChzcGVjbWFu LXNjb3BlLWluZGV4LWRvd24tc2NvcGUgc2NvcGUtaW5kZXggdCkKICAgICAgICAgICAgKQogICAg ICAgICAgICkKICAgICAgICAgICkKCiAgICAgICAgOzsgb3JkZXIgYW5kIGNvbGxlY3QgYWxsIGVu dHJpZXMKICAgICAgCiAgICAgICAgKHdoZW4gaW5kZXgtYWxpc3QKICAgICAgICAgIChzZXRxIGlu ZGV4LWFsaXN0CiAgICAgICAgICAoc3BlY21hbi1pbWVudS1zcGxpdC1tZW51IChyZXZlcnNlIGlu ZGV4LWFsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWVudS1tYXgt aXRlbXMpKSkKICAgICAgICAod2hlbiBjb3Zlci1hbGlzdAogICAgICAgICAgKHB1c2ggKGNvbnMg IiogQ292ZXIgR3JvdXBzICoiCiAgICAgICAgICAgICAgICAgICAgICAoc3BlY21hbi1pbWVudS1z cGxpdC1tZW51IChyZXZlcnNlIGNvdmVyLWFsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbWVudS1tYXgtaXRlbXMpKQogICAgICAgICAgaW5kZXgt YWxpc3QpKQogICAgICAgICh3aGVuIGV2ZW50LWFsaXN0CiAgICAgICAgICAocHVzaCAoY29ucyAi KiBFdmVudHMgKiIKICAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLWltZW51LXNwbGl0LW1l bnUgKHJldmVyc2UgZXZlbnQtYWxpc3QpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGltZW51LW1heC1pdGVtcykpCiAgICAgICAgICBpbmRleC1hbGlzdCkp CiAgICAgICAgKHdoZW4gZmllbGQtYWxpc3QKICAgICAgICAgIChwdXNoIChjb25zICIqIEZpZWxk cyAqIgogICAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4taW1lbnUtc3BsaXQtbWVudSAocmV2 ZXJzZSBmaWVsZC1hbGlzdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgaW1lbnUtbWF4LWl0ZW1zKSkKICAgICAgICAgIGluZGV4LWFsaXN0KSkKICAgICAg ICAod2hlbiB0eXBlLWFsaXN0CiAgICAgICAgICAocHVzaCAoY29ucyAiKiBUeXBlcyAqIgogICAg ICAgICAgICAgICAgICAgICAgKHNwZWNtYW4taW1lbnUtc3BsaXQtbWVudSAocmV2ZXJzZSB0eXBl LWFsaXN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bWVudS1tYXgtaXRlbXMpKQogICAgICAgICAgaW5kZXgtYWxpc3QpKQogICAgICAgICkKCiAgICAg ICh1bmxlc3Mgc2NvcGUtaW5kZXgtcGFyYW0KICAgICAgICAoc3BlY21hbi1jbGVhci1nbG9iYWwt c2NvcGUtaW5kZXgpKQogICAgICAKICAgICAgaW5kZXgtYWxpc3QKICAgICAgKSkKICApCgooZGVm dmFyIGltZW51LS1zcGxpdC1zdWJtZW51cy1lbmFibGUgdAogICJUb2dnbGUgc3ViLW1lbnUgc3Bs aXR0aW5nIGJlaGF2aW9yIG9mIGltZW51IHdoaWNoIGNhbiBtZXNzIHVwIHByZWZvcm1hdHRlZCBt ZW51cyIpCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnaW1lbnUtLXNwbGl0LXN1Ym1lbnVz LWVuYWJsZSkKCjs7ICBwcmV2ZW50IHRoZSBpbWVudS0tc3BsaXQtc3VibWVudXMgb3BlcmF0aW9u IGluIHNwZWNtYW4tbW9kZSBidWZmZXJzLAo7OyAgYXMgaXQgcmVvcmRlcnMgdGhlIGluZGV4LWFs aXN0IGFuZCBydWlucyB0aGUgcHJlcGFyZWQgb3JkZXIuCihkZWZhZHZpY2UgaW1lbnUtLXNwbGl0 LXN1Ym1lbnVzIChhcm91bmQgc3BlY21hbi1kaXNhYmxlLWltZW51LXNwbGl0LXN1Ym1lbnVzIChB TElTVCkgYWN0aXZhdGUpCiAgImVuYWJsZSB0b2dnbGluZyBpbWVudS0tc3BsaXQtc3VibWVudXMg b24vb2ZmIgogIChpZiBpbWVudS0tc3BsaXQtc3VibWVudXMtZW5hYmxlCiAgICAgIGFkLWRvLWl0 CiAgICAoc2V0cSBhZC1yZXR1cm4tdmFsdWUgQUxJU1QpKSkKCihkZWZ1biBzcGVjbWFuLWltZW51 LWNyZWF0ZS1tZW51ICgpCiAgKGxldCAoaW1lbnUKICAgICAgICApCiAgKG1lc3NhZ2UgIkNyZWF0 aW5nIFNwZWNtYW4tSW5kZXggZm9yIEJ1ZmZlciIpCiAgKHNldHEgaW1lbnUgKHNwZWNtYW4taW1l bnUtY3JlYXRlLW1lbnUtZm9yLXJlZ2lvbiAocG9pbnQtbWluKSAocG9pbnQtbWF4KSBuaWwpKQog IChtZXNzYWdlIG5pbCkKICBpbWVudSkpCgoKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQo7OyBTUEVDTUFOIFVUSUxJVFkKOzsgPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKOzsgTWFjcm9zCihkZWZtYWNy byBpbmMgKG51bSAmb3B0aW9uYWwgdmFsKSAKICAiaW5jcmVtZW50IHRoZSB2YWx1ZSBvZiBudW0i CiAgKHNldHEgbnVtICgrIG51bSAob3IgdmFsIDEpKSkpCgooZGVmbWFjcm8gZm9yICh2YXIgZnJv bSBpbml0IHRvIGZpbmFsIGRvICZyZXN0IGJvZHkpCiAgIkV4ZWN1dGUgYSBzaW1wbGUgXCJmb3Jc IiBsb29wLCBlLmcuLAogICAgKGZvciBpIGZyb20gMSB0byAxMCBkbyAocHJpbnQgaSkpLiIKOzsg ICcobGV0ICgoLHZhciAsaW5pdCkpCjs7ICAgICAod2hpbGUgKDw9ICx2YXIgLGZpbmFsKQo7OyAg ICAgICAsKGFwcGVuZCBib2R5Cjs7ICAgICAgICAgICAgICAgIChzZXRxICx2YXIgKCsgMSAsdmFy KSkpKSkpCiAgKGxpc3QgJ2xldCAobGlzdCAobGlzdCB2YXIgaW5pdCkpCiAgICAgICAgKGNvbnMg J3doaWxlIAogICAgICAgICAgICAgIChjb25zIChsaXN0ICc8PSB2YXIgZmluYWwpCiAgICAgICAg ICAgICAgICAgICAgKGFwcGVuZCBib2R5IChsaXN0IChsaXN0ICdzZXRxIHZhciAobGlzdCAnKyAn MSB2YXIpKSkpKSkpKQoKKGRlZnVuIHNhZmUtY2hhcj0gKGEgYikKICAiU2FmZSBleGVjdXRpb24g b2YgY2hhcj0gd2hpY2ggY2FuIGFjY2VwdC1uaWwiCiAgKG9yIChhbmQgYQogICAgICAgICAgIGIK ICAgICAgICAgICAoY2hhcj0gYSBiKSkKICAgICAgKG5vdCAob3IgYQogICAgICAgICAgICAgICBi KSkKICAgICAgKQogICkKCihkZWZ1biBzcGVjbWFuLXNlYXJjaC1mb3J3YXJkLW1pbnVzLWNvbW1l bnQgKGxpbWl0KQogICJMb29rIGZvciBhIC0tIGNvbW1lbnQgYmV0d2VlbiBwb2ludCBhbmQgYSBn aXZlbiBsaW1pdCIKICAobGV0ICgoY29udGludWUKICAgICAgICAgdAogICAgICAgICApCiAgICAg ICAgKHJldHVybi12YWwKICAgICAgICAgbmlsCiAgICAgICAgICkKICAgICAgICApCiAgICAod2hp bGUgKGFuZCBjb250aW51ZQogICAgICAgICAgICAgICAgKDwgKHBvaW50KSBsaW1pdCkKICAgICAg ICAgICAgICAgIChzZWFyY2gtZm9yd2FyZCAiLS0iIGxpbWl0IHQpKQogICAgICAoaWYgKHNwZWNt YW4td2l0aGluLXN0cmluZy1wKQogICAgICAgICAgKG9yIChzZWFyY2gtZm9yd2FyZCAiXCIiIGxp bWl0IHQpCiAgICAgICAgICAgICAgKHNldHEgY29udGludWUgbmlsKSkKICAgICAgICAocHJvZ24K ICAgICAgICAgIChzZXRxIGNvbnRpbnVlIG5pbCkKICAgICAgICAgIChnb3RvLWNoYXIgKG1hdGNo LWJlZ2lubmluZyAwKSkKICAgICAgICAgIChzZXRxIHJldHVybi12YWwgKHBvaW50KSkpKSkKICAg IHJldHVybi12YWwpKQoKCihkZWZ1biBzcGVjbWFuLXNraXAtZm9yd2FyZC1jb21tZW50LW9yLXN0 cmluZyAoKQogIk1vdmUgYmV5b25kIGFuZCByZXR1cm4gdHJ1ZSBpZiBpbiBhIHN0cmluZyBvciBj b21tZW50IgogKGxldCAoKHN0YXRlCgkoc2F2ZS1leGN1cnNpb24KCSAgKHBhcnNlLXBhcnRpYWwt c2V4cCAocG9pbnQtbWluKSAocG9pbnQpKSkKICAgICAgICApCiAgICAgICApCiAgIChzYXZlLW1h dGNoLWRhdGEKICAgICAoY29uZAogICAgICAoOzsgb3V0c2lkZSBlLWNvZGUgYmxvY2sKICAgICAg IChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgIl5cXCg/OlxcKDwn XFwpXFx8XFwoJz5cXClcXCkiIChwb2ludC1tYXgpIHQpCiAgICAgICAgIChub3QgKG1hdGNoLWJl Z2lubmluZyAyKSkpCiAgICAgICAKICAgICAgIChpZiAobWF0Y2gtZW5kIDEpCiAgICAgICAgICAg KGdvdG8tY2hhciAobWF0Y2gtZW5kIDEpKQogICAgICAgICAoZ290by1jaGFyIChwb2ludC1tYXgp KSkKICAgICAgIHQKICAgICAgICkKICAgICAgKDs7IGluc2lkZSBzdHJpbmcKICAgICAgIChudGgg MyBzdGF0ZSkKICAgICAgIAogICAgICAgKHJlLXNlYXJjaC1mb3J3YXJkICJcXCg/OlteXFxdXFx8 W1xcXVtcXF1cXClcIiIpCiAgICAgICAoZ290by1jaGFyIChtYXRjaC1lbmQgMCkpCiAgICAgICB0 CiAgICAgICApCiAgICAgICg7OyBpbnNpZGUgLy8gY29tbWVudCAoLyouLi4qLyBhbHNvKQogICAg ICAgKG50aCA0IHN0YXRlKQoKICAgICAgIChpZiAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAg IChnb3RvLWNoYXIgKG50aCA4IHN0YXRlKSkKICAgICAgICAgICAgIChsb29raW5nLWF0ICIvLyIp KQogICAgICAgICAgIDs7IGluIC8vLi4uIGNvbW1lbnQKICAgICAgICAgICAoZm9yd2FyZC1saW5l IDEpCiAgICAgICAgIDs7IGluIC8qLi4uKi8gY29tbWVudAogICAgICAgICAoc2VhcmNoLWZvcndh cmQgIiovIiAocG9pbnQtbWF4KSB0KSkKICAgICAgIHQKICAgICAgICkKICAgICAgKDs7IHRydWUg aWYgd2UgYXJlIGluIGEgLS0gLi4uIEVPTCByZWdpb24KICAgICAgIChzYXZlLWV4Y3Vyc2lvbgog ICAgICAgICAobGV0ICgoY3VyLXBvc2l0aW9uIChwb2ludCkpCiAgICAgICAgICAgICAgICkKICAg ICAgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikKICAgICAgICAgICAoc3BlY21hbi1zZWFyY2gt Zm9yd2FyZC1taW51cy1jb21tZW50IGN1ci1wb3NpdGlvbikpKQogICAgICAgCiAgICAgICAoZm9y d2FyZC1saW5lIDEpCiAgICAgICB0CiAgICAgICApCiAgICAgICg7OyBkZWZhdWx0CiAgICAgICB0 CiAgICAgICAKICAgICAgIG5pbAogICAgICAgKQogICAgICApCiAgICAgKQogICApCiApCgooZGVm dW4gc3BlY21hbi1za2lwLWJhY2t3YXJkLWNvbW1lbnQtb3Itc3RyaW5nICgpCiAiTW92ZSB0byB0 aGUgYmVnaW5pbmcgYW5kIHJldHVybiB0cnVlIGlmIGluIGEgc3RyaW5nIG9yIGNvbW1lbnQiCiAo bGV0ICgoc3RhdGUKCShzYXZlLWV4Y3Vyc2lvbgoJICAocGFyc2UtcGFydGlhbC1zZXhwIChwb2lu dC1taW4pIChwb2ludCkpKQogICAgICAgICkKICAgICAgICkKICAgKHNhdmUtbWF0Y2gtZGF0YQog ICAgIChjb25kCiAgICAgICg7OyBvdXRzaWRlIGUtY29kZSBibG9jawogICAgICAgKHNhdmUtZXhj dXJzaW9uCiAgICAgICAgIChyZS1zZWFyY2gtYmFja3dhcmQgIl5cXCg/OlxcKDwnXFwpXFx8XFwo Jz5cXClcXCkiIChwb2ludC1taW4pIHQpCiAgICAgICAgIChub3QgKG1hdGNoLWJlZ2lubmluZyAx KSkpCiAgICAgICAKICAgICAgIChpZiAobWF0Y2gtYmVnaW5uaW5nIDIpCiAgICAgICAgICAgKGdv dG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDIpKQogICAgICAgICAoZ290by1jaGFyIChwb2ludC1t aW4pKSkKICAgICAgIHQKICAgICAgICkKICAgICAgKDs7IGluc2lkZSBzdHJpbmcKICAgICAgIChu dGggMyBzdGF0ZSkKICAgICAgIAogICAgICAgKHJlLXNlYXJjaC1iYWNrd2FyZCAiXFwoPzpbXlxc XVxcfFtcXF1bXFxdXFwpXCIiKQogICAgICAgKGdvdG8tY2hhciAobWF0Y2gtYmVnaW5uaW5nIDAp KQogICAgICAgdCkKICAgICAgKDs7IGluc2lkZSAvLyBjb21tZW50ICgvKi4uLiovIGFsc28pCiAg ICAgICAobnRoIDQgc3RhdGUpCiAgICAgICAKICAgICAgIDs7KHNlYXJjaC1iYWNrd2FyZCAiLy8i KQogICAgICAgKGdvdG8tY2hhciAobnRoIDggc3RhdGUpKQogICAgICAgdAogICAgICAgKQogICAg ICAoOzsgdHJ1ZSBpZiB3ZSBhcmUgaW4gYSAtLSAuLi4gRU9MIHJlZ2lvbgogICAgICAgKHNhdmUt ZXhjdXJzaW9uCiAgICAgICAgIChsZXQgKChjdXItcG9zaXRpb24gKHBvaW50KSkKICAgICAgICAg ICAgICAgKQogICAgICAgICAgIChiYWNrLXRvLWluZGVudGF0aW9uKQogICAgICAgICAgIChzcGVj bWFuLXNlYXJjaC1mb3J3YXJkLW1pbnVzLWNvbW1lbnQgY3VyLXBvc2l0aW9uKSkpCiAgICAgICAK ICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkKICAgICAgIHQpCiAgICAgICg7 OyBkZWZhdWx0CiAgICAgICB0CiAgICAgICAKICAgICAgIG5pbCkKICAgICAgKQogICAgICkKICAg KQogKQoKKGRlZnVuIHNwZWNtYW4tZm9yd2FyZC13cyAoJm9wdGlvbmFsIGJvdW5kKQogICJGb3J3 YXJkIHNraXAgb3ZlciBzeW50YWN0aWMgd2hpdGVzcGFjZSIKICAoc2tpcC1jaGFycy1mb3J3YXJk ICIgXHRcbiIpCiAgKHdoaWxlIAogICAgICAoY29uZAogICAgICAgKChsb29raW5nLWF0ICJbIFx0 XG5dIikgKHNraXAtY2hhcnMtZm9yd2FyZCAiWyBcdFxuXSIpKQogICAgICAgKChsb29raW5nLWF0 ICItLSIpICAgICAgKGZvcndhcmQtdG8taW5kZW50YXRpb24gMSkpCiAgICAgICAoKGxvb2tpbmct YXQgIi8vIikgICAgICAoZm9yd2FyZC10by1pbmRlbnRhdGlvbiAxKSkKICAgICAgICgobG9va2lu Zy1hdCAiXic+IikgICAgIChzZWFyY2gtZm9yd2FyZCAiXG48JyIgbmlsIHQpKQogICAgICAgKHQK CW5pbCkpKSkKCihkZWZ1biBzcGVjbWFuLXdpdGhpbi1wYXJlbi1wICgpCQogICJSZXR1cm4gdHJ1 ZSBpZiBpbiBhIHBhcmVudGhldGljYWwgZXhwcmVzc2lvbiIKICAoc2F2ZS1leGN1cnNpb24KICAg IChzcGVjbWFuLXVwLWxpc3QpKSkKCihkZWZ1biBzcGVjbWFuLXdpdGhpbi1saW5lLWNvbW1lbnQt cCAoKQogICJSZXR1cm4gcG9pbnQgaWYgaW4gYSAvLyBvciAtLSBjb21tZW50LiIKICAob3IgKHNh dmUtZXhjdXJzaW9uCiAgICAgICAgKGxldCAoKHN0YXRlCiAgICAgICAgICAgICAgIChwYXJzZS1w YXJ0aWFsLXNleHAgKHBvaW50LW1pbikgKHBvaW50KSkpCiAgICAgICAgICAgICAgKQogICAgICAg ICAgKGFuZCAobnRoIDQgc3RhdGUpCiAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKG50aCA4IHN0 YXRlKSkKICAgICAgICAgICAgICAgKGlmIChsb29raW5nLWF0ICIvLyIpCiAgICAgICAgICAgICAg ICAgICAocG9pbnQpCiAgICAgICAgICAgICAgICAgbmlsKSkpKQogICAgICAoc2F2ZS1leGN1cnNp b24gOzsgdHJ1ZSBpZiB3ZSBhcmUgaW4gYSAtLSAuLi4gRU9MIHJlZ2lvbgogICAgICAgIChsZXQg KChjdXItcG9zaXRpb24KICAgICAgICAgICAgICAgKHBvaW50KSkKICAgICAgICAgICAgICApCiAg ICAgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikKICAgICAgICAgIChpZiAoc3BlY21hbi1zZWFy Y2gtZm9yd2FyZC1taW51cy1jb21tZW50IGN1ci1wb3NpdGlvbikKICAgICAgICAgICAgICAocG9p bnQpCiAgICAgICAgICAgIG5pbCkpKSkpCgooZGVmdW4gc3BlY21hbi1saW5lLXdpdGhpbi1jb21t ZW50LXAgKCkKICAiUmV0dXJuIHRydWUgaWYgdGhlIGN1cnJlbnQgbGluZSBpcyBmdWxseSBjb21t ZW50ZWQtb3V0IGFzIGEgbGluZSBjb21tZW50LiIKICAoc2F2ZS1leGN1cnNpb24KICAgIChiYWNr LXRvLWluZGVudGF0aW9uKQogICAgKGxvb2tpbmctYXQgIi8vXFx8LS0iKSkpCgooZGVmdW4gc3Bl Y21hbi1saW5lLXdpdGhpbi1zdGFyLWNvbW1lbnQtcCAoKQogICJSZXR1cm4gdHJ1ZSBpZiB0aGUg Y3VycmVudCBsaW5lIGlzIGZ1bGx5IGluIGEgc3RhciBjb21tZW50LiIKICAoc2F2ZS1leGN1cnNp b24KICAgIChiYWNrLXRvLWluZGVudGF0aW9uKQogICAgKG50aCA0IChwYXJzZS1wYXJ0aWFsLXNl eHAgKHBvaW50LW1pbikgKHBvaW50KSkpKSkKCihkZWZ1biBzcGVjbWFuLWxpbmUtd2l0aGluLXN0 YXItY29tbWVudC1vci1zdHJpbmctcCAoKQogICJSZXR1cm4gdHJ1ZSBpZiB0aGUgY3VycmVudCBs aW5lIGJlZ2lucyB3aXRoaW4gYSBzdHJpbmcgb3IgYSBzdGFyIGNvbW1lbnQuIgogIChzYXZlLWV4 Y3Vyc2lvbgogICAgKGJhY2stdG8taW5kZW50YXRpb24pCiAgICAobGV0KiAoKHBvaW50LXN0YXR1 cwogICAgICAgICAgICAocGFyc2UtcGFydGlhbC1zZXhwIChwb2ludC1taW4pIChwb2ludCkpCiAg ICAgICAgICAgICkKICAgICAgICAgICAoaW4tc3RyaW5nCiAgICAgICAgICAgIChudGggMyBwb2lu dC1zdGF0dXMpCiAgICAgICAgICAgICkKICAgICAgICAgICAoaW4tc3Rhci1jb21tZW50CiAgICAg ICAgICAgIChudGggNCBwb2ludC1zdGF0dXMpCiAgICAgICAgICAgICkKICAgICAgICAgICApCiAg ICAgIChvciBpbi1zdHJpbmcKICAgICAgICAgIGluLXN0YXItY29tbWVudCkpKQogICkKCihkZWZ1 biBzcGVjbWFuLWluZGVudC1wb3MgKCkKICAoc2F2ZS1leGN1cnNpb24KICAgIChiYWNrLXRvLWlu ZGVudGF0aW9uKQogICAgKHBvaW50KSkpCgooZGVmdW4gc3BlY21hbi1pbmRlbnQtY29sICgpCiAg KHNhdmUtZXhjdXJzaW9uCiAgICAoYmFjay10by1pbmRlbnRhdGlvbikKICAgIChjdXJyZW50LWNv bHVtbikpKQoKCihkZWZ1biBzcGVjbWFuLWluc2VydC10YWIgKCkKICAiQmV0dGVyIHRhYiBpbnNl cnRpb24gLSBub3JtYWwgaW4gc3RyaW5nLCB1c2luZyBzcGFjZXMgdW50aWwgdGFiLXN0b3AKb3Ro ZXJ3aXNlLiIKICAoaW50ZXJhY3RpdmUpCiAgOzsgaWYgd2UgYXJlIGluc2lkZSBhIHN0cmluZywg cHV0IHBsYWluIHRhYgogIChpZiAoc3BlY21hbi13aXRoaW4tc3RyaW5nLXApCiAgICAgIChpbnNl cnQgIlx0IikKICAgIChwcm9nbgogICAgICAoaW5zZXJ0ICIgIikKICAgICAgKHdoaWxlIChub3Qg KGVxICglIChjdXJyZW50LWNvbHVtbikgc3BlY21hbi10YWItd2lkdGgpIDApKQoJKGluc2VydCAi ICIpKSkpKQoKKGRlZnVuIHNwZWNtYW4tcmVtb3ZlLXRhYiAoKQogICJCZXR0ZXIgdGFiIHJlbW92 YWwgLSByZW1vdmUgYSB0YWIgb3Igc3BhY2VzIHVudGlsIHRhYi1zdG9wIGFjY29yZGluZwp0byBj b250ZXh0LiIKICAoaW50ZXJhY3RpdmUpCiAgOzsgaWYgd2UgYXJlIGluc2lkZSBhIHN0cmluZywg ZGVsZXRlIG9uZSBjaGFyCiAgKGxldCAoKHN0YXJ0LXdpdGgtc3BhY2UKICAgICAgICAgKHNhZmUt Y2hhcj0gKGNoYXItYmVmb3JlKSA/XCAgKQogICAgICAgICApCiAgICAgICAgKQogICAgKGRlbGV0 ZS1iYWNrd2FyZC1jaGFyIDEpCiAgICAoaWYgKGFuZCAobm90IChzcGVjbWFuLXdpdGhpbi1zdHJp bmctcCkpCiAgICAgICAgICAgICBzdGFydC13aXRoLXNwYWNlKQoJKHdoaWxlIChhbmQgKG5vdCAo ZXEgKCUgKGN1cnJlbnQtY29sdW1uKSAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz cGVjbWFuLXRhYi13aWR0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKSkKICAgICAg ICAgICAgICAgICAgICAoc2FmZS1jaGFyPSAoY2hhci1iZWZvcmUpID9cICApKQoJICAoZGVsZXRl LWJhY2t3YXJkLWNoYXIgMSkpKSkpCgooZGVmdW4gc3BlY21hbi1raWxsLWVudGlyZS1saW5lICgp CiAgIktpbGwgZW50aXJlIGxpbmUgYW5kIGluZGVudCIKICAoaW50ZXJhY3RpdmUpCiAgKGtpbGwt ZW50aXJlLWxpbmUpCiAgKHNwZWNtYW4tYWN0aXZhdGUtaW5kZW50KQogICkKCjs7ID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsgU1BFQ01BTiBNT0RF IE1BUAo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CihkZWZjb25zdCBzcGVjbWFuLW1vZGUtbWFwIAogIChsZXQgKChtYXAgKG1ha2Utc3BhcnNlLWtl eW1hcCkpKQogICAgKGRlZmluZS1rZXkgbWFwIFsodGFiKV0gICAgICAgICAgICAgICAgICAgICAn c3BlY21hbi1hY3RpdmF0ZS1pbmRlbnQpCiAgICAoZGVmaW5lLWtleSBtYXAgWyhpc28tbGVmdC10 YWIpXSAgICAgICAgICAgICdzcGVjbWFuLWluc2VydC10YWIpCiAgICAoZGVmaW5lLWtleSBtYXAg IlxDLWNcQy10IiAgICAgICAgICAgICAgICAgICdzcGVjbWFuLWluc2VydC10YWIpCiAgICAoZGVm aW5lLWtleSBtYXAgIlxDLWNcQy1hIiAgICAgICAgICAgICAgICAgICdzcGVjbWFuLXJlZG8tZW5k Y29tbWVudHMpCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWNcQy1iIiAgICAgICAgICAgICAgICAg ICdzcGVjbWFuLXN1Ym1pdC1idWctcmVwb3J0KQogICAgKGRlZmluZS1rZXkgbWFwIFsoYmFja3Nw YWNlKV0gICAgICAgICAgICAgICAnc3BlY21hbi1yZW1vdmUtdGFiKQogICAgKGRlZmluZS1rZXkg bWFwICJcciIgICAgICAgICAgICAgICAgICAgICAgICAnc3BlY21hbi1pbnNlcnQtbmV3bGluZSkK ICAgIDsoZGVmaW5lLWtleSBtYXAgIjsiICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjbWFu LWVsZWN0cmljLXNlbWljb2xvbikKCShkZWZpbmUta2V5IG1hcCBbKGNvbnRyb2wgYykgKGNvbnRy b2wgP1w7KV0gJ3NwZWNtYW4taW5zZXJ0LWF1dG8tZW5kY29tbWVudCkKICAgIChkZWZpbmUta2V5 IG1hcCAiXEMtY1xDLWwiICAgICAgICAgICAgICAgICAgJ2V2YWwtZnJvbS1taW5pYnVmZmVyKQog ICAgOyhkZWZpbmUta2V5IG1hcCAiXEMtY0AiICAgICAgICAgICAgICAgICAgICAgJ3NwZWNtYW4t dG9nZ2xlLWhpZGUtY29tbWVudHMpCiAgICA7KGRlZmluZS1rZXkgbWFwICJ7IiAgICAgICAgICAg ICAgICAgICAgICAgICAnc3BlY21hbi1pbnNlcnQtY3VybHktb3BlbmVyKQoJKGRlZmluZS1rZXkg bWFwIFsoY29udHJvbCB7KV0gICAgICAgICAgICAgICAnc3BlY21hbi1vcGVuLWUtY29kZS1ibG9j aykKICAgIChkZWZpbmUta2V5IG1hcCAifSIgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNt YW4taW5zZXJ0LWN1cmx5LWNsb3NlcikKICAgIChkZWZpbmUta2V5IG1hcCAiKCIgICAgICAgICAg ICAgICAgICAgICAgICAgJ3NwZWNtYW4taW5zZXJ0LXBhcmVucy1vcGVuZXIpCiAgICAoZGVmaW5l LWtleSBtYXAgIikiICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjbWFuLWluc2VydC1wYXJl bnMtY2xvc2VyKQogICAgKGRlZmluZS1rZXkgbWFwICJbIiAgICAgICAgICAgICAgICAgICAgICAg ICAnc3BlY21hbi1pbnNlcnQtYnJhY2tldC1vcGVuZXIpCiAgICAoZGVmaW5lLWtleSBtYXAgIl0i ICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjbWFuLWluc2VydC1icmFja2V0LWNsb3NlcikK ICAgIChkZWZpbmUta2V5IG1hcCAiJyIgICAgICAgICAgICAgICAgICAgICAgICAgJ3NwZWNtYW4t aW5zZXJ0LXRpY2spCiAgICAoZGVmaW5lLWtleSBtYXAgIjwiICAgICAgICAgICAgICAgICAgICAg ICAgICdzcGVjbWFuLWluc2VydC1sdCkKICAgIChkZWZpbmUta2V5IG1hcCAiPiIgICAgICAgICAg ICAgICAgICAgICAgICAgJ3NwZWNtYW4taW5zZXJ0LWd0KQogICAgKGRlZmluZS1rZXkgbWFwIFso Y29udHJvbCBjKSAoY29udHJvbCA/LSldICAnc3BlY21hbi1pbnNlcnQtbWludXMtY29tbWVudCkK ICAgIChkZWZpbmUta2V5IG1hcCBbKGNvbnRyb2wgYykgKGNvbnRyb2wgPy8pXSAgJ3NwZWNtYW4t aW5zZXJ0LXNsYXNoLWNvbW1lbnQpCiAgICAoZGVmaW5lLWtleSBtYXAgWyhjb250cm9sIGMpIChj b250cm9sID9fKV0gICdzcGVjbWFuLW1pbm9yLWNvbW1lbnQtc2VwYXJhdG9yKQogICAgKGRlZmlu ZS1rZXkgbWFwIFsoY29udHJvbCBjKSAoY29udHJvbCA/PSldICAnc3BlY21hbi1tYWpvci1jb21t ZW50LXNlcGFyYXRvcikKICAgIChkZWZpbmUta2V5IG1hcCBbKGNvbnRyb2wgYykgP2ZdICAgICAg ICAgICAgJ3NwZWNtYW4tZGV2ZWxvcG1lbnQtZmlsZS1oZWFkZXIpCiAgICAoZGVmaW5lLWtleSBt YXAgWyhjb250cm9sIGMpID9zXSAgICAgICAgICAgICdzcGVjbWFuLXN0cnVjdC1hbmQtZGVmaW5l LWhlYWRlci1jb21wYWN0KQogICAgKGRlZmluZS1rZXkgbWFwIFsoY29udHJvbCBjKSA/bV0gICAg ICAgICAgICAnc3BlY21hbi1tZXRob2QtaGVhZGVyLWNvbXBhY3QpCiAgICAoZGVmaW5lLWtleSBt YXAgWyhjb250cm9sIGMpIChjb250cm9sID88KV0gICdzcGVjbWFuLW9wZW4tZS1jb2RlLXNlY3Rp b24pCiAgICAoZGVmaW5lLWtleSBtYXAgWyhjb250cm9sIGMpIChjb250cm9sID8+KV0gICdzcGVj bWFuLWV4Y2x1ZGUtY29kZS1yZWdpb24pCiAgICAoZGVmaW5lLWtleSBtYXAgWyhjb250cm9sIGMp ID97XSAgICAgICAgICAgICdzcGVjbWFuLW9wZW4tZS1jb2RlLWJsb2NrKQogICAgKGRlZmluZS1r ZXkgbWFwIFsoY29udHJvbCBjKSAoY29udHJvbCBkKV0gICAnc3BlY21hbi1kZXNjcmliZS1jb250 ZXh0KQogICAgKGRlZmluZS1rZXkgbWFwICJcQy1jXEMtYyIgICAgICAgICAgICAgICAgICAnY29t bWVudC1yZWdpb24pCiAgICAoZGVmaW5lLWtleSBtYXAgIlxDLWNcQy11IiAgICAgICAgICAgICAg ICAgICdzcGVjbWFuLXVuY29tbWVudC1yZWdpb24pCiAgICAoZGVmaW5lLWtleSBtYXAgWyhtZXRh IHEpXSAgICAgICAgICAgICAgICAgICdzcGVjbWFuLXJlYWxpZ24tY29tbWVudCkKCShkZWZpbmUt a2V5IG1hcCBbKGNvbnRyb2wgZCldICAgICAgICAgICAgICAgJ3NwZWNtYW4ta2lsbC1lbnRpcmUt bGluZSkKCShkZWZpbmUta2V5IG1hcCBbKHNoaWZ0IGluc2VydCldICAgICAgICAgICAgJ3NwZWNt YW4teWFuaykKICAgIG1hcCkKICAiS2V5bWFwIHVzZWQgaW4gU3BlY21hbiBtb2RlLiIKICApCgo7 OyBUT0RPOiBub3Qgc3VyZSB3aGF0IHRoaXMgaXMgZm9yLCBidXQgaXQncyBkaXNhYmxlZCBhbG9u Zwo7OyAgICAgICB3aXRoIHRoZSByZXN0IG9mIGhpZGUtY29tbWVudHMKOzsoZGVmY29uc3QgaGlk ZS1pZmRlZi1tb2RlLXByZWZpeC1rZXkgWyhjb250cm9sIGMpIEBdCjs7ICAiUHJlZml4IGtleSBm b3IgYWxsIEhpZGUtSWZkZWYgbW9kZSBjb21tYW5kcy4iKQoKCjs7ID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsgU1BFQ01BTiBGT05UTE9DSyBTVVBQ T1JUCjs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K KGRlZnZhciBzcGVjbWFuLW1vZGUtc3ludGF4LXRhYmxlIG5pbAogICJTeW50YXggdGFibGUgdXNl ZCBpbiBzcGVjbWFuLW1vZGUgYnVmZmVycy4iKQoKKGRlZmNvbnN0IHNwZWNtYW4tZm9udC1sb2Nr LWtleXdvcmRzIG5pbAogICJEZWZhdWx0IGhpZ2hsaWdodGluZyBmb3IgU3BlY21hbiBtb2RlLiIp CgooZGVmY29uc3Qgc3BlY21hbi1mb250LWxvY2sta2V5d29yZHMtMSBuaWwKICAiU3ViZHVlZCBs ZXZlbCBoaWdobGlnaHRpbmcgZm9yIFNwZWNtYW4gbW9kZS4iKQoKKGRlZmNvbnN0IHNwZWNtYW4t Zm9udC1sb2NrLWtleXdvcmRzLTIgbmlsCiAgIk1lZGl1bSBsZXZlbCBoaWdobGlnaHRpbmcgZm9y IFNwZWNtYW4gbW9kZS4KU2VlIGFsc28gYHNwZWNtYW4tZm9udC1sb2NrLWV4dHJhLXR5cGVzJy4i KQoKKGRlZmNvbnN0IHNwZWNtYW4tZm9udC1sb2NrLWtleXdvcmRzLTMgbmlsCiAgIkdhdWR5IGxl dmVsIGhpZ2hsaWdodGluZyBmb3IgU3BlY21hbiBtb2RlLgpTZWUgYWxzbyBgc3BlY21hbi1mb250 LWxvY2stZXh0cmEtdHlwZXMnLiIpCgoobGV0IAogICAgKAogICAgIChzcGVjbWFuLXR5cGVzLWtl eXdvcmRzCiAgICAgIChldmFsLXdoZW4tY29tcGlsZQogICAgICAgIChjb25jYXQKICAgICAgICAg c3BlY21hbi1zeW1ib2wtYmVnaW4tcmVnZXhwCiAgICAgICAgICJcXCgiCiAgICAgICAgIChyZWdl eHAtb3B0CiAgICAgICAgICAnKAogICAgICAgICAgICA7OyBwcmVkZWZpbmVkIHR5cGVzCiAgICAg ICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgImJpdCIgImJpdHMiICJib29s IiAiYnl0ZSIgImJ5dGVzIgogICAgICAgICAgICAiaW50IiAidWludCIgImxvbmciICJuaWJibGUi ICJpbmRleCIKICAgICAgICAgICAgImZpbGUiICJzdHJpbmciCiAgICAgICAgICAgICJ0aW1lIiAi ZV90aW1lX3VuaXRzIgogICAgICAgICAgICAic2VtYXBob3JlIiAibWVzc2FnZV9sb2dnZXIiCiAg ICAgICAgICAgICJ1bnR5cGVkIgoKICAgICAgICAgICAgOzsgcG9ydCB0eXBlcwogICAgICAgICAg ICA7OyAtLS0tLS0tLS0tCiAgICAgICAgICAgICJhbnlfcG9ydCIgImFueV9idWZmZXJfcG9ydCIg ImFueV9jYWxsX3BvcnQiICJhbnlfZXZlbnRfcG9ydCIKICAgICAgICAgICAgImFueV9tZXRob2Rf cG9ydCIgImFueV9zaW1wbGVfcG9ydCIKCiAgICAgICAgICAgIDs7IHNlcXVlbmNlIHR5cGVzCiAg ICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICJhbnlfc2VxdWVuY2UiICJh bnlfc2VxdWVuY2VfaXRlbSIgImFueV9zZXF1ZW5jZV9kcml2ZXIiCgogICAgICAgICAgICApKQog ICAgICAgICAiXFwpIgogICAgICAgICBzcGVjbWFuLXN5bWJvbC1lbmQtcmVnZXhwKSkpCgogICAg IChzcGVjbWFuLWNvbnN0YW50LWtleXdvcmRzCiAgICAgIChldmFsLXdoZW4tY29tcGlsZQogICAg ICAgIChjb25jYXQKICAgICAgICAgc3BlY21hbi1zeW1ib2wtYmVnaW4tcmVnZXhwCiAgICAgICAg ICJcXCgiCiAgICAgICAgIChyZWdleHAtb3B0CiAgICAgICAgICAnKAogICAgICAgICAgICA7OyB0 eXBlIGNvbnN0YW50cwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAi VFJVRSIgIkZBTFNFIiAiVU5ERUYiICJOVUxMIiAiTUFYX0lOVCIgIk1JTl9JTlQiICJNQVhfVUlO VCIKCiAgICAgICAgICAgIDs7IGVycm9yIGNvbnN0YW50cwogICAgICAgICAgICA7OyAtLS0tLS0t LS0tLS0tLS0KICAgICAgICAgICAgIkVSUk9SIiAiRVJST1JfQlJFQUtfUlVOIiAiRVJST1JfQVVU T01BVElDIgogICAgICAgICAgICAiRVJST1JfQ09OVElOVUUiICJXQVJOSU5HIiAiSUdOT1JFIgoK ICAgICAgICAgICAgOzsgcmFkaXggY29uc3RhbnRzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0t LS0tLQogICAgICAgICAgICAiQklOIiAiREVDIiAiSEVYIgogICAgICAgICAgICApKQogICAgICAg ICAiXFwpIgogICAgICAgICBzcGVjbWFuLXN5bWJvbC1lbmQtcmVnZXhwKSkpCgogICAgIChzcGVj bWFuLW1hY3JvLWtleXdvcmRzCiAgICAgIChjb25jYXQKICAgICAgICI8Ijs7c3BlY21hbi1zeW1i b2wtYmVnaW4tcmVnZXhwCiAgICAgICAiXFwoIgogICAgICAgCiAgICAgICAiXFwoPzpbXiddK1wn IgogICAgICAgIlxcKCIKICAgICAgICJzdGF0ZW1lbnQiCiAgICAgICAiXFx8IgogICAgICAgImFj dGlvbiIKICAgICAgICJcXHwiCiAgICAgICAiY29tbWFuZCIKICAgICAgICJcXHwiCiAgICAgICAi c3RydWN0X21lbWJlciIKICAgICAgICJcXHwiCiAgICAgICAiZXhwIgogICAgICAgIlxcfCIKICAg ICAgICJ0eXBlIgogICAgICAgIlxcfCIKICAgICAgICJibG9jayIKICAgICAgICJcXHwiCiAgICAg ICAibnVtIgogICAgICAgIlxcfCIKICAgICAgICJmaWxlIgogICAgICAgIlxcKSIKICAgICAgIHNw ZWNtYW4tc3ltYm9sLWVuZC1yZWdleHAKICAgICAgICJcXCkiCiAgICAgICAgIAogICAgICAgIlxc fCIKICAgICAgICAgCiAgICAgICAiXFwoPzpcXCg/OlteJ10rXCdcXCk/IgogICAgICAgIlxcKD86 IgogICAgICAgInN0YXRlbWVudCIgCiAgICAgICAiXFx8IgogICAgICAgImFjdGlvbiIgCiAgICAg ICAiXFx8IgogICAgICAgImNvbW1hbmQiIAogICAgICAgIlxcfCIKICAgICAgICJzdHJ1Y3RfbWVt YmVyIiAKICAgICAgICJcXHwiCiAgICAgICAiZXhwIiAKICAgICAgICJcXHwiCiAgICAgICAibmFt ZSIgCiAgICAgICAiXFx8IgogICAgICAgImZpbGUiIAogICAgICAgIlxcfCIKICAgICAgICJudW0i IAogICAgICAgIlxcfCIKICAgICAgICJibG9jayIgCiAgICAgICAiXFx8IgogICAgICAgIlR5cGUi IAogICAgICAgIlxcfCIKICAgICAgICJhbnkiIAogICAgICAgIlxcKSIKICAgICAgICJcXCg/Onxb QS1aYS16MC05X10rXFwpPyIKICAgICAgICJcXCkiCgogICAgICAgIlxcfCIKCiAgICAgICAiXFwo PzoiCiAgICAgICAiWzAtOV0rIgogICAgICAgIlxcfCIKICAgICAgICJcXD8iCiAgICAgICAiXFwp IgoKICAgICAgICJcXCkiCiAgICAgICAiPiI7O3NwZWNtYW4tc3ltYm9sLWVuZC1yZWdleHAKICAg ICAgICkpCgogICAgIChzcGVjbWFuLWZ1bmN0aW9uLWtleXdvcmRzCiAgICAgIChldmFsLXdoZW4t Y29tcGlsZQoJKGNvbmNhdAogICAgICAgICBzcGVjbWFuLXN5bWJvbC1iZWdpbi1yZWdleHAKICAg ICAgICAgIlxcKCIKICAgICAgICAgKHJlZ2V4cC1vcHQKICAgICAgICAgICcoCiAgICAgICAgICAg IDs7IGxpc3QgcHNldWRvIG1ldGhvZHMKICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0tLS0t LQoKICAgICAgICAgICAgOzsgbGlzdCAtIG1vZGlmeQogICAgICAgICAgICAiYWRkIiAiYWRkMCIg ImNsZWFyIiAiZGVsZXRlIiAiZmFzdF9kZWxldGUiICJpbnNlcnQiICJwb3AiICJwb3AwIgogICAg ICAgICAgICAicHVzaCIgInB1c2gwIiAicmVzaXplIgoKICAgICAgICAgICAgOzsgbGlzdCAtIGdl bmVyYWwKICAgICAgICAgICAgImFwcGx5IiA7OyAiY29weSIgLSBhbHNvIGZvciBhbnlfc3RydWN0 CiAgICAgICAgICAgICJjb3VudCIgImV4aXN0cyIgOzsgImZpZWxkIiAtIGFscmVhZHkgZXhpc3Rz CiAgICAgICAgICAgICJmaXJzdCIgImZpcnN0X2luZGV4IiAiZ2V0X2luZGljZXMiICJoYXMiICJp c19hX3Blcm11dGF0aW9uIiAiaXNfZW1wdHkiCiAgICAgICAgICAgICJsYXN0IiAibGFzdF9pbmRl eCIKICAgICAgICAgICAgIm1heCIgIm1heF9pbmRleCIgIm1heF92YWx1ZSIKICAgICAgICAgICAg Im1pbiIgIm1pbl9pbmRleCIgIm1pbl92YWx1ZSIKICAgICAgICAgICAgInJldmVyc2UiICJzaXpl IiAic29ydCIgInNvcnRfYnlfZmllbGQiICJzcGxpdCIgInRvcCIgInRvcDAiICJ1bmlxdWUiCgog ICAgICAgICAgICA7OyBsaXN0IC0gc3VibGlzdAogICAgICAgICAgICAiYWxsIiAiYWxsX2luZGlj ZXMiCgogICAgICAgICAgICA7OyBsaXN0IC0gbWF0aCBhbmQgbG9naWMKICAgICAgICAgICAgImFu ZF9hbGwiICJhdmVyYWdlIiAib3JfYWxsIiAicHJvZHVjdCIgInN1bSIKCiAgICAgICAgICAgIDs7 IGxpc3QgLSBjcmMKICAgICAgICAgICAgImNyY184IiAiY3JjXzMyIiAiY3JjXzMyX2ZsaXAiCgog ICAgICAgICAgICA7OyBsaXN0IC0ga2V5ZWQgbGlzdAogICAgICAgICAgICAia2V5IiAia2V5X2lu ZGV4IiAia2V5X2V4aXN0cyIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBzdHJpbmcgcHNl dWRvIG1ldGhvZHMKICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogICAgICAg ICAgICA7OyBzdHJpbmcgLSBjb252ZXJ0IHRvIHN0cmluZwogICAgICAgICAgICAiYXBwZW5kIiAi YXBwZW5kZiIgInF1b3RlIiAidG9fc3RyaW5nIgoKICAgICAgICAgICAgOzsgc3RyaW5nIC0gbWFu aXB1bGF0ZSBzdWJzdHJpbmdzCiAgICAgICAgICAgICJzdHJfam9pbiIgInN0cl9zcGxpdCIgInN0 cl9zcGxpdF9hbGwiICJzdHJfc3ViIgoKICAgICAgICAgICAgOzsgc3RyaW5nIC0gbWFuaXB1bGF0 ZSByZWd1bGFyIGV4cHJlc3Npb25zCiAgICAgICAgICAgICJzdHJfbWF0Y2giICJzdHJfcmVwbGFj ZSIgInN0cl9pbnNlbnNpdGl2ZSIKCiAgICAgICAgICAgIDs7IHN0cmluZyAtIGNoYW5nZSB0aGUg cmFkaXggb2YgYSBudW1lcmljIGV4cHJlc3Npb24KICAgICAgICAgICAgImJpbiIgImRlYyIgImhl eCIKCiAgICAgICAgICAgIDs7IHN0cmluZyAtIG1hbmlwdWxhdGUgdGhlIGxlbmd0aCBvZiBhbiBl eHByZXNzaW9uCiAgICAgICAgICAgICJzdHJfY2hvcCIgInN0cl9lbXB0eSIgInN0cl9leGFjdGx5 IiAic3RyX2xlbiIgInN0cl9wYWQiCgogICAgICAgICAgICA7OyBzdHJpbmcgLSB1c2VmdWwgd2l0 aGluIG1hY3JvcwogICAgICAgICAgICAicXVvdGUiICJzdHJfZXhwYW5kX2RvdHMiCgogICAgICAg ICAgICA7OyBzdHJpbmcgLSBtYW5pcHVsYXRlIHRoZSBjYXNlIG9mIGNoYXJhY3RlcnMgd2l0aGlu IGEgc3RyaW5nCiAgICAgICAgICAgICJzdHJfbG93ZXIiICJzdHJfdXBwZXIiICJzdHJfaW5zZW5z aXRpdmUiCgoKICAgICAgICAgICAgOzsgZGVlcCBjb3B5IGFuZCBjb21wYXJlCiAgICAgICAgICAg IDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAiZGVlcF9jb3B5IiAiZGVlcF9j b21wYXJlIiAiZGVlcF9jb21wYXJlX3BoeXNpY2FsIgoKCiAgICAgICAgICAgIDs7IGJpdHdpc2Ug b3BlcmF0aW9ucwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAg ImJpdHdpc2VfYW5kIiAiYml0d2lzZV9vciIgImJpdHdpc2VfeG9yIgogICAgICAgICAgICAiYml0 d2lzZV9uYW5kIiAiYml0d2lzZV9ub3IiICJiaXR3aXNlX3hub3IiCgogICAgICAgICAgICAKICAg ICAgICAgICAgOzsgYXJpdGhtZXRpYwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tCiAgICAgICAg ICAgIDs7ICJtaW4iICJtYXgiIC0gYWxyZWFkeSBpbiBsaXN0CiAgICAgICAgICAgICJhYnMiICJv ZGQiICJldmVuIiAiaWxvZzIiICJpbG9nMTAiICJpcG93IiAiaXNxcnQiICJkaXZfcm91bmRfdXAi CgoKICAgICAgICAgICAgOzsgb3V0cHV0CiAgICAgICAgICAgIDs7IC0tLS0tLQogICAgICAgICAg ICAib3V0IiAib3V0ZiIKCgogICAgICAgICAgICA7OyBjb25maWd1cmF0aW9uIHJvdXRpbmVzCiAg ICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgInNldF9jb25m aWciICJnZXRfY29uZmlnIiAid3JpdGVfY29uZmlnIiAicmVhZF9jb25maWciCiAgICAgICAgICAg ICJzZXRfcmV0YWluX3N0YXRlIiAiZ2V0X3JldGFpbl9zdGF0ZSIKCgogICAgICAgICAgICA7OyBz cGVjbWFuIGNvbW1hbmQKICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAg ICJzcGVjbWFuIgogICAgICAgICAgICAKCiAgICAgICAgICAgIDs7IG9zIGludGVyZmFjZSByb3V0 aW5lcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgInNw YXduIiAic3Bhd25fY2hlY2siICJzeXN0ZW0iICJvdXRwdXRfZnJvbSIgIm91dHB1dF9mcm9tX2No ZWNrIgogICAgICAgICAgICAiZ2V0X3N5bWJvbCIgImRhdGVfdGltZSIgImdldHBpZCIKCgogICAg ICAgICAgICA7OyBTaW11bGF0aW9uLVJlbGF0ZWQgUm91dGluZXMKICAgICAgICAgICAgOzsgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICJzaW11bGF0b3JfY29tbWFuZCIg InN0b3BfcnVuIgoKCiAgICAgICAgICAgIDs7IGxvdyBsZXZlbCBmaWxlIHJvdXRpbmVzCiAgICAg ICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICJmaWxlcy53cml0 ZV9zdHJpbmdfbGlzdCIgImZpbGVzLmFkZF9maWxlX3R5cGUiCiAgICAgICAgICAgICJmaWxlcy5j bG9zZSIgImZpbGVzLmZsdXNoIiAiZmlsZXMub3BlbiIKICAgICAgICAgICAgImZpbGVzLnJlYWQi ICJmaWxlcy5yZWFkX2xvYiIKICAgICAgICAgICAgImZpbGVzLndyaXRlIiAiZmlsZXMud3JpdGVf bG9iIgogICAgICAgICAgICAKICAgICAgICAgICAgCiAgICAgICAgICAgIDs7IHJlYWRpbmcgYW5k IHdyaXRpbmcgc3RydWN0cwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KICAgICAgICAgICAgImZpbGVzLnJlYWRfYXNjaWlfc3RydWN0IiAiZmlsZXMucmVhZF9iaW5h cnlfc3RydWN0IgogICAgICAgICAgICAiZmlsZXMud3JpdGVfYXNjaWlfc3RydWN0IiAiZmlsZXMu d3JpdGVfYmluYXJ5X3N0cnVjdCIKCgogICAgICAgICAgICA7OyBPbi10aGUtRmx5IEdhcmJhZ2Ug Q29sbGVjdGlvbiBSb3V0aW5lCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgImRvX290Zl9nYyIKCiAgICAgICAgICAgIAogICAg ICAgICAgICA7OyBDb25zdHJ1Y3RzIGZvciBQYWNraW5nIGFuZCBVbnBhY2tpbmcKICAgICAgICAg ICAgOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICJw YWNrIiAidW5wYWNrIiAic3dhcCIgImRvX3BhY2siICJkb191bnBhY2siCgoKICAgICAgICAgICAg OzsgZHV0IGVycm9yIHJvdXRpbmVzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLQog ICAgICAgICAgICAiZHV0X2Vycm9yIiAiZHV0X2Vycm9yZiIgInNldF9jaGVjayIKCgogICAgICAg ICAgICA7OyB1c2VyIGVycm9yIHJvdXRpbmVzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0t LS0tLS0KICAgICAgICAgICAgImVycm9yIiAid2FybmluZyIgImZhdGFsIgoKCiAgICAgICAgICAg IDs7IG1lc3NhZ2VzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tCiAgICAgICAgICAgICJtZXNzYWdl IiAibWVzc2FnZWYiCgoKICAgICAgICAgICAgOzsgcHJlZGVmaW5lZCBnbG9iYWwgdGVzdCBwaGFz ZSBtZXRob2RzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQogICAgICAgICAgICAic2V0dXBfdGVzdCIgImdlbmVyYXRlX3Rlc3QiICJzdGFydF90ZXN0 IiAicnVuX3Rlc3QiICJleHRyYWN0X3Rlc3QiCiAgICAgICAgICAgICJjaGVja190ZXN0IiAiZmlu YWxpemVfdGVzdCIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBwcmVkZWZpbmVkIHN5cyBt ZXRob2RzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAg IndhdmVfc2V0dXAiICJzZXR1cCIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBwcmVkZWZp bmVkIGFueV9zdHJ1Y3QgbWV0aG9kcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogICAgICAgICAgICAiaW5pdCIgInByZV9nZW5lcmF0ZSIgInBvc3RfZ2VuZXJh dGUiICJjaGVjayIgImV4dHJhY3QiICJmaW5hbGl6ZSIKICAgICAgICAgICAgInF1aXQiICJydW4i ICJyZXJ1biIgImNvcHkiICJkb19wcmludCIgInByaW50X2xpbmUiCgogICAgICAgICAgICAKICAg ICAgICAgICAgOzsgcHJlZGVmaW5lZCB1bml0LXJlbGF0ZWQgYW55X3N0cnVjdCBtZXRob2RzCiAg ICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICAgICAgICAgICAiZ2V0X3VuaXQiICJnZXRfZW5jbG9zaW5nX3VuaXQiICJ0cnlfZW5jbG9zaW5n X3VuaXQiICJzZXRfdW5pdCIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBwcmVkZWZpbmVk IGFueV91bml0IG1ldGhvZHMKICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCiAgICAgICAgICAgICJoZGxfcGF0aCIgImZ1bGxfaGRsX3BhdGgiICJlX3BhdGgiICJhZ2Vu dCIgImdldF9wYXJlbnRfdW5pdCIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBsYW5ndWFn ZSBwc2V1ZG8tbWV0aG9kcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog ICAgICAgICAgICAiZGVjbGFyZWRfdHlwZSIgInR5cGUiICJmaWVsZCIgInVuc2FmZSIgInNvdXJj ZV9sb2NhdGlvbiIKICAgICAgICAgICAgInNvdXJjZV9tZXRob2QiICJhc19hIiAiYWxsX3ZhbHVl cyIKICAgICAgICAgICAgImluX3NlcXVlbmNlIiAiaW5fdW5pdCIKICAgICAgICAgICAgInVuc2Fm ZSIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBzZW1hcGhvcmUgbWV0aG9kcwogICAgICAg ICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAidXAiICJkb3duIiAidHJ5X3Vw IiAidHJ5X2Rvd24iICJzZXRfdmFsdWUiICJnZXRfdmFsdWUiCiAgICAgICAgICAgICJzZXRfbWF4 X3ZhbHVlIiAiZ2V0X21heF92YWx1ZSIgImxvY2siICJyZWxlYXNlIgoKICAgICAgICAgICAgCiAg ICAgICAgICAgIDs7IHRjbSByZWxhdGVkIG1ldGhvZHMKICAgICAgICAgICAgOzsgLS0tLS0tLS0t LS0tLS0tLS0tLQogICAgICAgICAgICAiZ2V0X2N1cnJlbnRfaGFuZGxlIiAiZ2V0X2hhbmRsZXNf YnlfbmFtZSIgImdldF9oYW5kbGVzX2J5X3R5cGUiCiAgICAgICAgICAgICJraWxsIiAidGVybWlu YXRlX2JyYW5jaCIgInRlcm1pbmF0ZV90aHJlYWQiCgogICAgICAgICAgICAKICAgICAgICAgICAg OzsgY292ZXJhZ2UgbWV0aG9kcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tCiAgICAg ICAgICAgICJzZXRfZXh0ZXJuYWxfY292ZXIiICJ3cml0ZV9jb3Zlcl9maWxlIgoKICAgICAgICAg ICAgImNvdmVycy5pbmNsdWRlX3Rlc3RzIgogICAgICAgICAgICAiY292ZXJzLnNldF93ZWlnaHQi ICJjb3ZlcnMuc2V0X2F0X2xlYXN0IiAiY292ZXJzLnNldF9jb3ZlciIKICAgICAgICAgICAgImNv dmVycy5nZXRfY29udHJpYnV0aW5nX3J1bnMiICJjb3ZlcnMuZ2V0X3VuaXF1ZV9idWNrZXRzIgog ICAgICAgICAgICAiY292ZXJzLmdldF9vdmVyYWxsX2dyYWRlIiAiY292ZXJzLmdldF9lY292X25h bWUiCiAgICAgICAgICAgICJjb3ZlcnMuZ2V0X3Rlc3RfbmFtZSIgImNvdmVycy5nZXRfc2VlZCIK CiAgICAgICAgICAgICJyYW5nZSIKCgogICAgICAgICAgICA7OyBnZW5lcmF0aW9uIG1ldGhvZHMK ICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICJpc19hbGxfaXRl cmF0aW9ucyIgInJlc2V0X3NvZnQiICJzaXplIiAidmFsdWUiICJyZWFkX29ubHkiCiAgICAgICAg ICAgICJnZW5fYmVmb3JlX3N1YnR5cGVzIiAicmVzZXRfZ2VuX2JlZm9yZV9zdWJ0eXBlcyIKCgog ICAgICAgICAgICA7OyB0ZW1wb3JhbCBtZXRob2RzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0t LS0tLS0KICAgICAgICAgICAgInRydWUiICJjaGFuZ2UiICJmYWxsIiAicmlzZSIKCgogICAgICAg ICAgICA7OyBzZXF1ZW5jZSBtZXRob2RzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0K CiAgICAgICAgICAgIDs7IGludGVyZmFjZSAtIGFueV9zZXF1ZW5jZV9pdGVtCiAgICAgICAgICAg ICJnZXRfZGVwdGgiICJnZXRfZHJpdmVyIiAibmljZV9zdHJpbmciCiAgICAgICAgICAgIAogICAg ICAgICAgICA7OyBpbnRlcmZhY2UgLSBhbnlfc2VxdWVuY2UKICAgICAgICAgICAgImdldF9pbmRl eCIgImdyYWIiICJpc19ibG9ja2VkIiAiaXNfcmVsZXZhbnQiCiAgICAgICAgICAgICJzdGFydF9z ZXF1ZW5jZSIgImJvZHkiICJzdG9wIiAidW5ncmFiIgogICAgICAgICAgICAibWlkX2RvIgogICAg ICAgICAgICAicG9zdF9ib2R5IiAicG9zdF9kbyIgInBvc3RfdHJhY2UiCiAgICAgICAgICAgICJw cmVfYm9keSIgInByZV9kbyIKICAgICAgICAgICAgOzsgaW5oZXJpdGVkIGZyb20gYW55X3NlcXVl bmNlX2l0ZW06CiAgICAgICAgICAgIDs7ICJnZXRfZGVwdGgiICJnZXRfZHJpdmVyIiAibmljZV9z dHJpbmciCgogICAgICAgICAgICA7OyBpbnRlcmZhY2UgLSBhbnlfc2VxdWVuY2VfZHJpdmVyCiAg ICAgICAgICAgICJjdXJyZW50X2dyYWJiZXIiICJnZXRfY3VycmVudF9pdGVtIiAiZ2V0X2luZGV4 IiAiZ2V0X2l0ZW1fdHJhY2VfbGlzdCIKICAgICAgICAgICAgImdldF9uZXh0X2l0ZW0iICJnZXRf bnVtX2l0ZW1zX3NlbnQiICJnZXRfc2VxdWVuY2VfdHJhY2VfbGlzdCIKICAgICAgICAgICAgImdl dF90cmFjZV9saXN0IiAiaXNfZ3JhYmJlZCIgOzsgImxhc3QiIC0gYWxzbyBrZXl3b3JkIG9mIGxp c3QKICAgICAgICAgICAgInRyeV9uZXh0X2l0ZW0iICJjaGVja19pc19yZWxldmFudCIgImRlbGF5 X2Nsb2NrIiAiZ2V0X3N1Yl9kcml2ZXJzIgogICAgICAgICAgICAicmVhZCIgInJlZ2VuZXJhdGVf ZGF0YSIgInNlbmRfdG9fYmZtIiAid2FpdF9mb3Jfc2VxdWVuY2VzIiAid3JpdGUiCgoKICAgICAg ICAgICAgOzsgcG9ydCBtZXRob2RzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLQogICAgICAg ICAgICA7OyBUT0RPOiBhZGQgY3ZsIHN0dWZmCiAgICAgICAgICAgICJiaW5kIgogICAgICAgICAg ICAKICAgICAgICAgICAgKSkKICAgICAgICAgIlxcKSIKICAgICAgICAgIlsgXHRdKigiKSA7OyBO T1RFOiBpdCdzIHBvc3NpYmxlIHRvIGFsc28gYWRkIFxuIHRvIHRoZSBzZXBhcmF0b3JzCiAgICAg ICAgICAgICAgICAgICAgOzsgYmVmb3JlIHRoZSBvcGVuaW5nIHBhcmVuLCBidXQgdGhhdCBtZXNz ZXMgdXAgZm9udC1sb2NrLgoKICAgICAgICApKQoKICAgICAoc3BlY21hbi1rZXl3b3JkcwogICAg ICAoZXZhbC13aGVuLWNvbXBpbGUKCShjb25jYXQKICAgICAgICAgc3BlY21hbi1zeW1ib2wtYmVn aW4tcmVnZXhwCiAgICAgICAgICJcXCgiIAogICAgICAgICAocmVnZXhwLW9wdAogICAgICAgICAg JygKICAgICAgICAgICAgOzsgbGFuZ3VhZ2Uga2V5d29yZHMKICAgICAgICAgICAgOzsgLS0tLS0t LS0tLS0tLS0tLS0KICAgICAgICAgICAgOzsgImFsc28iICJvbmx5IiAiaW5saW5lIiAidW5kZWZp bmVkIiAiZW1wdHkiIC0gaGFuZGxlZCB3aGVuIHByZWZpeGVkIGJ5ICJpcyIKICAgICAgICAgICAg ImlzIiAiYSIgImFzIiAiY29tcHV0ZWQiICJ3aXRoIgogICAgICAgICAgICAiYXNzZXJ0IiAiY29t cHV0ZSIgImltcG9ydCIgIm5ldyIgInRyeSIKCiAgICAgICAgICAgICJzdHJ1Y3QiICJleHRlbmQi ICJ1bml0IiAid2hlbiIgImxpa2UiCiAgICAgICAgICAgIDs7IGRlZmluZS9pZmRlZi9ldGMnIC0g aGFuZGxlZCBkaWZmZXJlbnRseQogICAgICAgICAgICAiZGVmX2VyciIKICAgICAgICAgICAgCiAg ICAgICAgICAgICJwcmludCIgInJlcG9ydCIKCiAgICAgICAgICAgICJsaXN0IiAib2YiICJrZXki CgogICAgICAgICAgICAicHJpdmF0ZSIgInBhY2thZ2UiICJwcm90ZWN0ZWQiCgogICAgICAgICAg ICA7OyBoYW5kbGVkIHNlcGVyYXRlbHkgc28gdGhleSBjYW4gaGF2ZSBhIGRpZmZlcmVudCBmYWNl IGZvciBlbXBoYXNpcwogICAgICAgICAgICA7OyAicmVzdWx0IiAicmV0dXJuIiAibWUiICJpdCIg ImluZGV4IiAicHJldiIKCiAgICAgICAgICAgICJyb3V0aW5lIiAidHlwZSIgIm1ldGhvZF90eXBl IiAidmFyIiAiYXR0cmlidXRlIgoKICAgICAgICAgICAgCiAgICAgICAgICAgIDs7IHBhY2tpbmcg a2V5d29yZHMKICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAicGFj a2luZy5sb3ciICJwYWNraW5nLmxvd19iaWdfZW5kaWFuIiAicGFja2luZy5oaWdoIgogICAgICAg ICAgICAicGFja2luZy5oaWdoX2JpZ19lbmRpYW4iICJwYWNraW5nLm5ldHdvcmsiICJwYWNraW5n Lmdsb2JhbF9kZWZhdWx0IiAKICAgICAgICAgICAgCgogICAgICAgICAgICA7OyBsb2dpYyBrZXl3 b3JkcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAiYW5kIiAib3Ii ICJ4b3IiICJub3QiCiAgICAgICAgICAgICJuYW5kIiAibm9yIiAibnhvciIKCgogICAgICAgICAg ICA7OyBjb250cm9sIGZsb3cga2V5d29yZHMKICAgICAgICAgICAgOzsgLS0tLS0tLS0tLS0tLS0t LS0tLS0tCiAgICAgICAgICAgICJpZiIgInRoZW4iICJlbHNlIgogICAgICAgICAgICAiY2FzZSIg ImRlZmF1bHQiCiAgICAgICAgICAgICJ3aGlsZSIgImRvIiAicmVwZWF0IiAidW50aWwiICJjb250 aW51ZSIgImJyZWFrIgogICAgICAgICAgICAiZm9yIiAiZWFjaCIgImluIiAidXNpbmciICJyZXZl cnNlIiA7OyAiaW5kZXgiIC0gYWxzbyBsYW5ndWFnZSBrZXl3b3JkCiAgICAgICAgICAgICJmcm9t IiAidG8iICJzdGVwIiA7OyAiZG93biB0byIgLSBoYW5kbGVkIGRpZmZlcmVudGx5CiAgICAgICAg ICAgICJtYXRjaGluZyIKCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyBnZW5lcmF0aW9uIGtl eXdvcmRzCiAgICAgICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAgICAgICAgImJl Zm9yZSIgImtlZXAiICJrZWVwaW5nIiAic29mdCIgInNlbGVjdCIgImdlbiIKICAgICAgICAgICAg Im90aGVycyIgInBhc3MiICJlZGdlcyIgIm1pbiIgIm1heCIKCiAgICAgICAgICAgIAogICAgICAg ICAgICA7OyBjb3ZlcmFnZSBrZXl3b3JkcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0t LQogICAgICAgICAgICAiY292ZXIiICJpdGVtIiAidHJhbnNpdGlvbiIgImNyb3NzIiA7OyAidXNp bmciIC0gYWxzbyBpbiBjb250cm9sIGZsb3cKICAgICAgICAgICAgImlnbm9yZSIgImlsbGVnYWwi ICJwZXJfaW5zdGFuY2UiICJub19jb2xsZWN0IiAibm9fdHJhY2UiCiAgICAgICAgICAgICJhdF9s ZWFzdCIgInJhbmdlcyIgInJhZGl4IiA7OyAid2hlbiIgLSBhbHNvIGluIGxhbmd1YWdlCiAgICAg ICAgICAgIDs7IG5hbWUsIHRleHQsIHdlaWdodCAtIHRoZXNlIGFyZSBub3QgcHJvcGVyIGtleXdv cmRzIGFuZCBhcmUgdmFsaWQgaW4KICAgICAgICAgICAgOzsgb3RoZXIgY29udGV4dHMgYXMgd2Vs bCwgc28gY29tbWVudGVkIG91dC4KCiAgICAgICAgICAgIAogICAgICAgICAgICA7OyB0ZW1wb3Jh bCBrZXl3b3JkcwogICAgICAgICAgICA7OyAtLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICA7 OyBsb2dpYyAtICJub3QiICJhbmQiICJvciIKICAgICAgICAgICAgImV2ZW50dWFsbHkiICJmYWls IiAiZGV0YWNoIiAiZGVsYXkiICJjeWNsZSIgImNvbnN1bWUiICJleGVjIgogICAgICAgICAgICAi bm93IiA7OyAtIGRlc2NyaWJlZCBhcyBsb2dpYyBpbiB0aGUgZS1yZWYKICAgICAgICAgICAgImFz c3VtZSIgImV4cGVjdCIgIndhaXQiICJzeW5jIiAib24iOzsgImV2ZW50IiAtIGhhbmRsZWQgZGlm ZmVyZW50bHkKICAgICAgICAgICAgImV2ZW50IiAic3RhcnQiICJlbWl0IgoKICAgICAgICAgICAg CiAgICAgICAgICAgIDs7IHByZWRlZmluZWQgZXZlbnRzIC0gbW92ZWQgd2l0aCBnZW5lcmFsIGV2 ZW50cyBleHByZXNzaW9uLCBkb2Vzbid0IHdvcmsgaGVyZQogICAgICAgICAgICA7OyAtLS0tLS0t LS0tLS0tLS0tLQogICAgICAgICAgICA7OyJAYW55IiAiQHRpY2tfc3RhcnQiICJAdGlja19lbmQi ICJAc3RhcnRfb2ZfdGVzdCIKICAgICAgICAgICAgOzsiQGVuZF9vZl90ZXN0IiAiQHF1aXQiICJA bmV3X3RpbWUiCgogICAgICAgICAgICA7OyBwb3J0IGtleXdvcmRzCiAgICAgICAgICAgIDs7IC0t LS0tLS0tLS0tLS0KICAgICAgICAgICAgOzsgVE9ETzogYWRkIGN2bCBzdHVmZgogICAgICAgICAg ICAiZGVlcF9jb3B5IiAiZGVlcF9jb21wYXJlIiAiZGVlcF9jb21wYXJlX3BoeXNpY2FsIiAiZGVl cF9hbGwiCiAgICAgICAgICAgICJub3JtYWwiICJyZWZlcmVuY2UiICJpZ25vcmUiCiAgICAgICAg ICAgICJleHRlcm5hbCIgImVtcHR5IiAidW5kZWZpbmVkIgogICAgICAgICAgICAiZm9yY2UiICJp biIgIm91dCIgImlub3V0IgoKICAgICAgICAgICAgOzsgc2VxdWVuY2VzIGtleXdvcmRzCiAgICAg ICAgICAgIDs7IC0tLS0tLS0tLS0tLS0tLS0tLQoKICAgICAgICAgICAgInNlcXVlbmNlIgogICAg ICAgICAgICAKICAgICAgICAgICAgOzsgLSBhbnlfc2VxdWVuY2VfaXRlbQogICAgICAgICAgICA7 OyBmaWVsZHM6ICJwYXJlbnRfc2VxdWVuY2UiICJkcml2ZXIiCiAgICAgICAgICAgIAogICAgICAg ICAgICA7OyAtIGFueV9zZXF1ZW5jZQogICAgICAgICAgICA7OyBmaWVsZHM6ICJwYXJlbnRfc2Vx dWVuY2UiICJkcml2ZXIiICJraW5kIgogICAgICAgICAgICA7OyBldmVudHM6CiAgICAgICAgICAg IDs7IkBlbmRlZCIgIkBzdGFydGVkIiAgLS0gbW92ZWQgd2l0aCBvdGhlciBldmVudHMKICAgICAg ICAgICAgCiAgICAgICAgICAgIDs7IC0gYW55X3NlcXVlbmNlX2RyaXZlcgogICAgICAgICAgICA7 OyBmaWVsZHM6ICJiZm1faW50ZXJhY3Rpb25fbW9kZSIgIm1heF9yYW5kb21fY291bnQiCiAgICAg ICAgICAgIDs7ICAgICAgICAgIm1heF9yYW5kb21fZGVwdGgiICJudW1fb2ZfbGFzdF9pdGVtcyIK ICAgICAgICAgICAgOzsgICAgICAgICAiZ2VuX2FuZF9zdGFydF9tYWluIgogICAgICAgICAgICA7 OyBldmVudHM6CiAgICAgICAgICAgIDs7IkBjbG9jayIgIkBpdGVtX2RvbmUiICAtLSBtb3ZlZCB3 aXRoIG90aGVyIGV2ZW50cwogICAgICAgICAgICAKICAgICAgICAgICAgKSkKICAgICAgICAgIlxc KSIKICAgICAgICAgc3BlY21hbi1zeW1ib2wtZW5kLXJlZ2V4cCkKICAgICAgICApKQoKICAgICAo c3BlY21hbi1tdWx0aS13b3JkLWtleXdvcmRzCiAgICAgIDs7IFRPRE86IGRvZXMgZXZhbC13aGVu LWNvbXBpbGUgaGVscCBoZXJlPwogICAgICAoZXZhbC13aGVuLWNvbXBpbGUKICAgICAgICAoY29u Y2F0CiAgICAgICAgIHNwZWNtYW4tc3ltYm9sLWJlZ2luLXJlZ2V4cAogICAgICAgICAiXFwoIgog ICAgICAgICAKICAgICAgICAgIlxcKFxcKD86YWxsXFx8Zmlyc3RcXClbIFx0XG5dK29mXFwpXFx8 IgoKICAgICAgICAgIlxcKGNoZWNrWyBcdFxuXSt0aGF0XFwpXFx8IgogICAgICAgICAgIAogICAg ICAgICAiXFwoZWFjaFsgXHRcbl0rXFwoPzpmaWxlXFx8bGluZVxcKVxcKVxcfCIKICAgICAgICAg IlxcKGluWyBcdFxuXStmaWxlXFwpXFx8IgogICAgICAgICAiXFwoZG93blsgXHRcbl0rdG9cXClc XHwiCiAgICAgICAgICAgCiAgICAgICAgICJcXChpblsgXHRcbl0rcmFuZ2VcXClcXHwiCiAgICAg ICAgICAgCiAgICAgICAgICJcXChpc1sgXHRcbl0rXFwoPzpub3RbIFx0XG5dK1xcKT9hbj9cXClc XHwiCiAgICAgICAgICJcXChpc1sgXHRcbl0rIgogICAgICAgICAiXFwoPzoiCiAgICAgICAgICJh bHNvIgogICAgICAgICAiXFx8IgogICAgICAgICAiZmlyc3QiCiAgICAgICAgICJcXHwiCiAgICAg ICAgICJpbmxpbmVcXCg/OlsgXHRcbl0rb25seVxcKT8iCiAgICAgICAgICJcXHwiCiAgICAgICAg ICJvbmx5IgogICAgICAgICAiXFx8IgogICAgICAgICAiXFwoPzpub3RbIFx0XG5dK1xcKT9lbXB0 eSIKICAgICAgICAgIlxcfCIKICAgICAgICAgInVuZGVmaW5lZCIKICAgICAgICAgIlxcfCIKICAg ICAgICAgIltjQ11bIFx0XG5dK3JvdXRpbmUiCiAgICAgICAgICJcXCkiCiAgICAgICAgICJcXClc XHwiCiAgICAgICAgICJcXChpc1sgXHRcbl0raW5zdGFuY2VcXClcXHwiCiAgICAgICAgICAgCiAg ICAgICAgICJcXChzdGF0ZVsgXHRcbl0rbWFjaGluZVxcKVxcfCIKICAgICAgICAgICAgCiAgICAg ICAgICJcXCh2ZXJpbG9nWyBcdFxuXSsiCiAgICAgICAgICJcXCg/OiIKICAgICAgICAgImNvZGUi CiAgICAgICAgICJcXHwiCiAgICAgICAgICJmdW5jdGlvbiIKICAgICAgICAgIlxcfCIKICAgICAg ICAgImltcG9ydCIKICAgICAgICAgIlxcfCIKICAgICAgICAgInNpbXVsYXRvciIKICAgICAgICAg IlxcfCIKICAgICAgICAgInRhc2siCiAgICAgICAgICJcXHwiCiAgICAgICAgICJ0aW1lIgogICAg ICAgICAiXFx8IgogICAgICAgICAidHJhY2UiCiAgICAgICAgICJcXHwiCiAgICAgICAgICJ2YXJp YWJsZSIKICAgICAgICAgIlxcKSIKICAgICAgICAgIlxcKVxcfCIKCiAgICAgICAgICJcXCh2aGRs WyBcdFxuXSsiCiAgICAgICAgICJcXCg/OiIKICAgICAgICAgImNvZGUiCiAgICAgICAgICJcXHwi CiAgICAgICAgICJkcml2ZXIiCiAgICAgICAgICJcXHwiCiAgICAgICAgICJmdW5jdGlvbiIKICAg ICAgICAgIlxcfCIKICAgICAgICAgIm9iamVjdCIKICAgICAgICAgIlxcfCIKICAgICAgICAgInBy b2NlZHVyZSIKICAgICAgICAgIlxcfCIKICAgICAgICAgInNpbXVsYXRvciIKICAgICAgICAgIlxc fCIKICAgICAgICAgInRpbWUiCiAgICAgICAgICJcXCkiCiAgICAgICAgICJcXClcXHwiCiAgICAg ICAgICAgIAogICAgICAgICAiXFwoW2NDXVsgXHRcbl0rZXhwb3J0XFwpXFx8IgoKICAgICAgICAg OzsgY3ZsIGRlY2xhcmF0aW9ucwogICAgICAgICAiXFwoY3ZsWyBcdFxuXStcXCg/Om1ldGhvZFxc fGNhbGxcXCg/OmJhY2tcXCk/XFwpXFwoPzpbIFx0XG5dK2FzeW5jXFwpXFwpIgogICAgICAgICAg ICAKICAgICAgICAgOzsgcG9ydCBkZWNsYXJhdGlvbgogICAgICAgICAiXFwoXFwoPzpcXCg/Omlu XFx8b3V0XFx8aW50b3V0XFwpWyBcdFxuXStcXCk/c2ltcGxlX3BvcnRbIFx0XG5dK29mXFwpIgog ICAgICAgICAiXFwoXFwoPzppblxcfG91dFxcfGludG91dFxcKVsgXHRcbl0rXFwoPzpidWZmZXJc XHxjYWxsXFx8ZXZlbnRcXHxtZXRob2RcXClfcG9ydFsgXHRcbl0rb2ZcXCkiCgogICAgICAgICAi XFwpIgogICAgICAgICBzcGVjbWFuLXN5bWJvbC1lbmQtcmVnZXhwCiAgICAgICAgICkpCiAgICAg ICkKICAgICApCgogIChzZXRxIHNwZWNtYW4tZm9udC1sb2NrLWtleXdvcmRzCgkobGlzdAogICAg ICAgICA7Oyhjb25zICJcXCgvLy4qJFxcKVxcfFxcKC0tLiokXFwpIiAnKDAgZm9udC1sb2NrLWNv bW1lbnQtZmFjZSkpIDs7IG5vdCBuZWVkZWQKICAgICAgICAgOzsgRm9udGlmeSBhbGwgdHlwZXMK ICAgICAgICAgKGNvbnMgc3BlY21hbi10eXBlcy1rZXl3b3JkcwogICAgICAgICAgICAgICAnKDAg J2ZvbnQtbG9jay10eXBlLWZhY2UgYXBwZW5kKSkKICAgICAgICAgOzsgRm9udGlmeSByZXR1cm4g YW5kIHJlc3VsdCBrZXl3b3JkcyBzZXBlcmF0ZWx5IGZvciBlbXBoYXNpcwogICAgICAgICAoY29u cyAoY29uY2F0CiAgICAgICAgICAgICAgICBzcGVjbWFuLXN5bWJvbC1iZWdpbi1yZWdleHAKICAg ICAgICAgICAgICAgICJyZVxcKD86c3VsdFxcfHR1cm5cXCkiCiAgICAgICAgICAgICAgICBzcGVj bWFuLXN5bWJvbC1lbmQtcmVnZXhwKQogICAgICAgICAgICAgICAnKDAgJ2ZvbnQtbG9jay10eXBl LWZhY2UgYXBwZW5kKSkKICAgICAgICAgOzsgRm9udGlmeSBzcGVjaWFsIHZhci9maWVsZHMga2V5 d29yZHMgIm1lIiAiaXQiICJpbmRleCIgInByZXYiIHNlcGVyYXRlbHkgZm9yIGVtcGhhc2lzCiAg ICAgICAgIChjb25zIChjb25jYXQKICAgICAgICAgICAgICAgIHNwZWNtYW4tc3ltYm9sLWJlZ2lu LXJlZ2V4cAogICAgICAgICAgICAgICAgIlxcKD86bWVcXHxpdFxcfGluZGV4XFx8cHJldlxcKSIK ICAgICAgICAgICAgICAgIHNwZWNtYW4tc3ltYm9sLWVuZC1yZWdleHApCiAgICAgICAgICAgICAg ICcoMCAnZm9udC1sb2NrLXR5cGUtZmFjZSBhcHBlbmQpKQoJCSA7OyBGb250aWZ5IGFsbCBjb25z dGFudHMKICAgICAgICAgKGNvbnMgc3BlY21hbi1jb25zdGFudC1rZXl3b3JkcwogICAgICAgICAg ICAgICAnKDAgJ2ZvbnQtbG9jay1jb25zdGFudC1mYWNlIGFwcGVuZCkpCiAgICAgICAgIDs7IEZv bnRpZnkgbWFjcm9zCiAgICAgICAgIChjb25zIChjb25jYXQKICAgICAgICAgICAgICAgICIjIgog ICAgICAgICAgICAgICAgIlxcKCIKICAgICAgICAgICAgICAgICJpZm4/ZGVmIgogICAgICAgICAg ICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICJlbHNlIgogICAgICAgICAgICAgICAgIlxcfCIK ICAgICAgICAgICAgICAgICJ1bmRlZiIKICAgICAgICAgICAgICAgICJcXHwiCiAgICAgICAgICAg ICAgICAiZGVmaW5lIgogICAgICAgICAgICAgICAgIlxcKSIKICAgICAgICAgICAgICAgIHNwZWNt YW4tc3ltYm9sLWVuZC1yZWdleHAKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIlxc fCIKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgc3BlY21hbi1zeW1ib2wtYmVnaW4t cmVnZXhwCiAgICAgICAgICAgICAgICAiZGVmaW5lIgogICAgICAgICAgICAgICAgc3BlY21hbi1z eW1ib2wtZW5kLXJlZ2V4cCkKICAgICAgICAgICAgICAgJygwICdmb250LWxvY2sta2V5d29yZC1m YWNlIGFwcGVuZCkpCiAgICAgICAgIDs7IEZvbnRpZnkgbnVtYmVycwogICAgICAgICAoY29ucyBz cGVjbWFuLW51bWJlci1yZWdleHAKICAgICAgICAgICAgICAgJygxICdmb250LWxvY2stY29uc3Rh bnQtZmFjZSBhcHBlbmQpKQogICAgICAgICA7OyBGb250aWZ5IGFsbCBidWlsdGluIGtleXdvcmRz CiAgICAgICAgIChjb25zIHNwZWNtYW4ta2V5d29yZHMKICAgICAgICAgICAgICAgJygwICdmb250 LWxvY2sta2V5d29yZC1mYWNlIGFwcGVuZCkpCiAgICAgICAgIDs7IEZvbnRpZnkgbXVsdGktd29y ZCBrZXl3b3JkcwogICAgICAgICAoY29ucyBzcGVjbWFuLW11bHRpLXdvcmQta2V5d29yZHMKICAg ICAgICAgICAgICAgJygwICdmb250LWxvY2sta2V5d29yZC1mYWNlIGFwcGVuZCkpKSkKCiAgOzsg Rm9udGlmeSBwdW5jdHVhdGlvbgogICh3aGVuIHNwZWNtYW4taGlnaGxpZ2h0LXB1bmN0dWF0aW9u CiAgICAoc2V0cSBzcGVjbWFuLWZvbnQtbG9jay1rZXl3b3JkcwogICAgICAgICAgKGFwcGVuZCBz cGVjbWFuLWZvbnQtbG9jay1rZXl3b3JkcwogICAgICAgICAgICAgICAgICAobGlzdAogICAgICAg ICAgICAgICAgICAgKGNvbnMgIltdW1wuXCxcO1w6XCpcfFwmXCFcKFwpXHtcfVw9XCRcPFw+XCdc I1wlXC1cK1xAXSIKICAgICAgICAgICAgICAgICAgICAgICAgICcoMCAnc3BlY21hbi1wdW5jdHVh dGlvbi1mYWNlIGFwcGVuZCkpKSkpKQoKCiAgOzsgRm9udGlmeSBjb21tZW50cwogIDs7IC0gJy8v JyBjb21tZW50cyBoYW5kbGVkIGFzIHN5bnRheCBpbiBib3RoIGVtYWNzZW4gYnV0ICctLScgb25s eSBpbgogIDs7ICAgeGVtYWNzLgogIDs7IC0gdGhpcyBoYW5kbGVzICctLScgY29tbWVudHMKICA7 OyAgIC0gdXNpbmcgdGhpcyBldmVuIGluIHhlbWFjcywgd2hpY2ggc2hvdWxkIGJlIGFibGUgdG8g aGFuZGxlIDIgZnVsbHkKICA7OyAgICAgaW5kZXBlbmRlbnQgY29tbWVudCB0eXBlcywgYnV0IGZh aWxzIHRvIGRvIHNvIGluIGUuZy4gdmVyc2lvbiAyMS4xCiAgKHNldHEgc3BlY21hbi1mb250LWxv Y2sta2V5d29yZHMKICAgICAgICAoYXBwZW5kIHNwZWNtYW4tZm9udC1sb2NrLWtleXdvcmRzCiAg ICAgICAgICAgICAgICAobGlzdAogICAgICAgICAgICAgICAgICcoc3BlY21hbi1tYXRjaC1taW51 cy1jb21tZW50cwogICAgICAgICAgICAgICAgICAgKDAgJ2ZvbnQtbG9jay1jb21tZW50LWZhY2Ug dCkpCiAgICAgICAgICAgICAgICAgKSkpCgogIChzZXRxIHNwZWNtYW4tZm9udC1sb2NrLWtleXdv cmRzLTEKICAgICAgICAoYXBwZW5kIHNwZWNtYW4tZm9udC1sb2NrLWtleXdvcmRzCiAgICAgICAg ICAgICAgICAobGlzdAogICAgICAgICAgICAgICAgIDs7IEFkZGl0aW9uYWxseSBmb250aWZ5IHBy ZS1kZWZpbmVkIGZ1bmN0aW9ucwogICAgICAgICAgICAgICAgIDs7IC0gdXNpbmcga2VlcCB0byBw cmV2ZW50IGJvbGQgaGlnaGxpZ2h0IGluIGNvbW1lbnRzCiAgICAgICAgICAgICAgICAgKGNvbnMg c3BlY21hbi1mdW5jdGlvbi1rZXl3b3JkcwogICAgICAgICAgICAgICAgICAgICAgICcoMSAnZm9u dC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSBrZWVwKSkKICAgICAgICAgICAgICAgICApKSkKCiAg KHNldHEgc3BlY21hbi1mb250LWxvY2sta2V5d29yZHMtMgogICAgICAgIChhcHBlbmQgc3BlY21h bi1mb250LWxvY2sta2V5d29yZHMtMSAKICAgICAgICAgICAgICAgIChsaXN0CiAgICAgICAgICAg ICAgICAgOzsgRm9udGlmeSB1c2VyIGRlZmluZWQgbWV0aG9kcwogICAgICAgICAgICAgICAgIChj b25zIHNwZWNtYW4tbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwLWZ1bGwKICAgICAgICAgICAgICAg ICAgICAgICAnKDEgJ2ZvbnQtbG9jay1mdW5jdGlvbi1uYW1lLWZhY2UgcHJlcGVuZCkpCiAgICAg ICAgICAgICAgICAgOzsgRm9udGlmeSB1c2VyIGRlZmluZWQgdmFyaWFibGVzCiAgICAgICAgICAg ICAgICAgKGNvbnMgc3BlY21hbi12YXJpYWJsZS1kZWZpbml0aW9uLXJlZ2V4cC1mdWxsCiAgICAg ICAgICAgICAgICAgICAgICAgJygxICdmb250LWxvY2stdmFyaWFibGUtbmFtZS1mYWNlIHByZXBl bmQpKQogICAgICAgICAgICAgICAgIDs7IEZvbnRpZnkgdXNlciBkZWZpbmVkIGZpZWxkcyAoYW5k IG1vcmUpCiAgICAgICAgICAgICAgICAgOzsgLSBub3QgdXNpbmcgcmVnZXhwLWZ1bGwgc28gbWV0 aG9kIGFyZ3VtZW50cwogICAgICAgICAgICAgICAgIDs7ICAgYW5kIHR5cGUgZGVmaW5pdGlvbnMg YXJlIGFsc28gaGlnaGxpZ2h0ZWQKICAgICAgICAgICAgICAgICA7OyAgIHVzaW5nIHRoaXMgcmVn ZXhwLgogICAgICAgICAgICAgICAgIChjb25zIHNwZWNtYW4tZmllbGQtZGVmaW5pdGlvbi1yZWdl eHAKICAgICAgICAgICAgICAgICAgICAgICAnKDEgJ2ZvbnQtbG9jay12YXJpYWJsZS1uYW1lLWZh Y2UgYXBwZW5kKSkKICAgICAgICAgICAgICAgICA7OyBGb250aWZ5IHVzZXIgZGVmaW5lZCBldmVu dHMKICAgICAgICAgICAgICAgICAoY29ucyBzcGVjbWFuLWV2ZW50LWRlZmluaXRpb24tcmVnZXhw LWZ1bGwKICAgICAgICAgICAgICAgICAgICAgICAnKDEgJ2ZvbnQtbG9jay12YXJpYWJsZS1uYW1l LWZhY2UgYXBwZW5kKSkKICAgICAgICAgICAgICAgICA7OyBGb250aWZ5IHVzZXIgZGVmaW5lZCBj b3ZlciBncm91cHMKICAgICAgICAgICAgICAgICAoY29ucyBzcGVjbWFuLWNvdmVyLWRlZmluaXRp b24tcmVnZXhwLWZ1bGwKICAgICAgICAgICAgICAgICAgICAgICAnKDEgJ2ZvbnQtbG9jay12YXJp YWJsZS1uYW1lLWZhY2UgYXBwZW5kKSkKICAgICAgICAgICAgICAgICA7OyBGb250aWZ5IHVzZXIg ZGVmaW5lZCBvbiBldmVudCBtZXRob2RzCiAgICAgICAgICAgICAgICAgKGNvbnMgc3BlY21hbi1v bi1ldmVudC1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHAtZnVsbAogICAgICAgICAgICAgICAgICAg ICAgICcoMSAnZm9udC1sb2NrLWZ1bmN0aW9uLW5hbWUtZmFjZSBhcHBlbmQpKQogICAgICAgICAg ICAgICAgICkpKQoKICAoc2V0cSBzcGVjbWFuLWZvbnQtbG9jay1rZXl3b3Jkcy0zCiAgICAgICAg KGFwcGVuZCBzcGVjbWFuLWZvbnQtbG9jay1rZXl3b3Jkcy0yICAKICAgICAgICAgICAgICAgIChs aXN0CiAgICAgICAgICAgICAgICAgOzsgRm9udGlmeSBhcyBjb21tZW50cyBhbnl0aGluZyBub3Qg aW4gZS1jb2RlIHNjb3BlCiAgICAgICAgICAgICAgICAgOzsgKGkuZS4gZGVsaW1pdGVkIGJ5IDwn Li4uJz4pCiAgICAgICAgICAgICAgICAgJyhzcGVjbWFuLW1hdGNoLWV4LWNvZGUtcmVnaW9ucyAK ICAgICAgICAgICAgICAgICAgICgwICdmb250LWxvY2stY29tbWVudC1mYWNlIHQpKQogICAgICAg ICAgICAgICAgIDs7IEhpZ2hsaWdodCB0ZXh0IGJleW9uZCBzcGVjbWFuLW1heC1saW5lLWxlbmd0 aAogICAgICAgICAgICAgICAgICcoc3BlY21hbi1tYXRjaC1iZXlvbmQtbWF4LWxpbmUtbGVuZ3Ro CiAgICAgICAgICAgICAgICAgICAoMCAnc3BlY21hbi1oaWdobGlnaHQtYmV5b25kLW1heC1saW5l LWxlbmd0aC1mYWNlIHQpKQogICAgICAgICAgICAgICAgIDs7IEZvbnRpZnkgJ1RPRE8nIGFzIGtl eXdvcmQgKGZvciBUT0RPIGNvbW1lbnRzKQogICAgICAgICAgICAgICAgIChjb25zICJcXDxUT0RP WyBcdF0/WzotXSIKICAgICAgICAgICAgICAgICAgICAgICAnKDAgJ2ZvbnQtbG9jay13YXJuaW5n LWZhY2UgdCkpCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgOzsgRm9udGlmeSBw cmVkZWZpbmVkIGV2ZW50cyBhcyBrZXl3b3JkcwogICAgICAgICAgICAgICAgIChjb25zIChjb25j YXQgIkBcXCgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJhbnkiICAgICAgICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICJ0aWNrX3N0YXJ0IiAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJ0aWNrX2VuZCIgICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJzdGFydF9vZl90ZXN0IiAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJlbmRfb2ZfdGVzdCIgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICJxdWl0IiAgICAgICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJu ZXdfdGltZSIgICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmRl ZCIgICAgICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGFydGVk IiAgICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjbG9jayIgICAg ICAgICAgIlxcfCIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdGVtX2RvbmUiCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJcXCkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjbWFuLXN5bWJvbC1l bmQtcmVnZXhwKQogICAgICAgICAgICAgICAgICAgICAgICcoMCAnZm9udC1sb2NrLWtleXdvcmQt ZmFjZSBhcHBlbmQpKQogICAgICAgICAgICAgICAgIDs7IEZvbnRpZnkgZXZlbnRzIGFzIGNvbnN0 YW50cwogICAgICAgICAgICAgICAgIChjb25zICJAXFwoW2EtekEtWjAtOV8uXStcXCkiCiAgICAg ICAgICAgICAgICAgICAgICAgJygxICdmb250LWxvY2stY29uc3RhbnQtZmFjZSBhcHBlbmQpKQog ICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIDs7IEZvbnRpZnkgbWFjcm8ga2V5d29y ZHMgYXMgY29uc3RhbnRzCiAgICAgICAgICAgICAgICAgKGNvbnMgc3BlY21hbi1tYWNyby1rZXl3 b3JkcwogICAgICAgICAgICAgICAgICAgICAgIDs7JygwICdmb250LWxvY2stY29uc3RhbnQtZmFj ZSBhcHBlbmQpKQogICAgICAgICAgICAgICAgICAgICAgICcoMSAnZm9udC1sb2NrLWNvbnN0YW50 LWZhY2UgYXBwZW5kKSkKICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICBuaWwpKQog ICkKCjs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K OzsgU1BFQ01BTiBVVElMSVRZIEZVTkNUSU9OUwo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CgooZGVmdW4gc3BlY21hbi11cC1saXN0ICgmb3B0aW9u YWwgd2l0aGluLWNvZGUtcmVnaW9uKQogICJNb3ZlIHVwIG9uZSBsaXN0LCBza2lwcGluZyBvdmVy IHNwZWNtYW4ncyBtYW55IGNvbW1lbnQgc3R5bGVzLiAKICAgUmV0dXJuIHBvaW50IG9mIG9wZW5l ciBpZiB3ZSBhcmUgaW4gYSBsaXN0IgogIAogIChpZiBnbG9iYWwtc2NvcGUtaW5kZXgKICAgICAg KHNwZWNtYW4tc2NvcGUtaW5kZXgtdXAtbGlzdCBnbG9iYWwtc2NvcGUtaW5kZXggd2l0aGluLWNv ZGUtcmVnaW9uKQogICAgKGxldCAoCiAgICAgICAgICA7OyB0aGlzIGNhbiBiZSB3cm9uZyB3aGVu IHRoZXJlIGlzIGEgbGlzdCB3aXRoaW4gYQogICAgICAgICAgOzsgcGFyZW5zLCBidXQgdGhlcmUg aXMgYSBjaGVjayBiZWxvdyB0aGF0IHdpbGwgcmVjb3ZlcgogICAgICAgICAgOzsgZnJvbSB0aGF0 IGNhc2UuCiAgICAgICAgICAobGltCiAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAg ICAgICAoc3BlY21hbi1iZWctb2YtZGVmdW4gd2l0aGluLWNvZGUtcmVnaW9uKSkpCiAgICAgICAg ICAobmVzdAogICAgICAgICAgIDEpCiAgICAgICAgICAoc3RhcnQtcG9pbnQKICAgICAgICAgICAo cG9pbnQpKQogICAgICAgICAgdGIKICAgICAgICAgICkKCiAgICAgICh1bmxlc3Mgd2l0aGluLWNv ZGUtcmVnaW9uCiAgICAgICAgKHNwZWNtYW4tc2tpcC1iYWNrd2FyZC1jb21tZW50LW9yLXN0cmlu ZykpCiAgICAKICAgICAgKGNhdGNoICdza2lwCiAgICAgICAgKHdoaWxlIChhbmQgKD4gKHBvaW50 KSBsaW0pCiAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tcmUtc2VhcmNoLWJhY2t3YXJkICJb KCl9XSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlt CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkpCiAgICAgICAgICAo c2V0cSB0YiAoY2hhci1hZnRlcikpCiAgICAgICAgICAoY29uZAogICAgICAgICAgICgoPSB0YiA/ XCggKSAoc2V0cSBuZXN0ICgxLSBuZXN0KSkpCiAgICAgICAgICAgKCg9IHRiID9cKSApIChzZXRx IG5lc3QgKDErIG5lc3QpKSkKICAgICAgICAgCiAgICAgICAgICAgOzsgdGhpcyBza2lwcyB0aGUg YmxvY2sgYW5kIGFsc28gbW92ZXMgcG9pbnQKICAgICAgICAgICAoKD0gdGIgP1x9ICkgKHNldHEg bGltIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo c3BlY21hbi11cC1zY29wZSB0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo aWYgKHNwZWNtYW4tcmUtc2VhcmNoLWJhY2t3YXJkICI7IiBuaWwgdCB0KQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50KQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChwb2ludC1taW4pKSkpKQogICAgICAgICAKICAgICAgICAgICApCiAg ICAgICAgICAoaWYgKD0gMCBuZXN0KQogICAgICAgICAgICAgICh0aHJvdyAnc2tpcCAocG9pbnQp KSkKICAgICAgICAgICkKICAgICAgICA7OyBpZiB3ZSByZWFjaGVkIHRoaXMgcG9pbnQgdGhlbiB0 aGUgc2VhcmNoIGZhaWxlZAogICAgICAgIChnb3RvLWNoYXIgc3RhcnQtcG9pbnQpCiAgICAgICAg bmlsKQogICAgICApCiAgICApKQoKKGRlZnVuIHNwZWNtYW4tdXAtc2NvcGUgKCZvcHRpb25hbCB3 aXRoaW4tY29kZS1yZWdpb24pCiAgIk1vdmUgdXAgb25lIHNjb3BlLCBza2lwcGluZyBvdmVyIHNw ZWNtYW4ncyBtYW55IGNvbW1lbnQgc3R5bGVzLgogICBSZXR1cm4gcG9pbnQgb2Ygb3BlbmVyIGlm IHdlIGFyZSBpbiBhIGxpc3QiCgogIChpZiBnbG9iYWwtc2NvcGUtaW5kZXgKICAgICAgKHNwZWNt YW4tc2NvcGUtaW5kZXgtdXAtc2NvcGUgZ2xvYmFsLXNjb3BlLWluZGV4IHdpdGhpbi1jb2RlLXJl Z2lvbikKICAgIChsZXQgKChsaW0gKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAgICAgKHNw ZWNtYW4tYmVnLW9mLWRlZnVuIHdpdGhpbi1jb2RlLXJlZ2lvbiB0KSkpCiAgICAgICAgICAobmVz dCAxKQogICAgICAgICAgdGIKICAgICAgICAgICkKCiAgICAgICh1bmxlc3Mgd2l0aGluLWNvZGUt cmVnaW9uCiAgICAgICAgKHNwZWNtYW4tc2tpcC1iYWNrd2FyZC1jb21tZW50LW9yLXN0cmluZykp CiAgICAgIAogICAgICAoY2F0Y2ggJ3NraXAKICAgICAgICAod2hpbGUKICAgICAgICAgICAgKGFu ZCAoPiAocG9pbnQpIGxpbSkKICAgICAgICAgICAgICAgICAoc3BlY21hbi1yZS1zZWFyY2gtYmFj a3dhcmQgIlt7fV0iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGxpbQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbW92ZQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KSkKICAgICAgICAg IChzZXRxIHRiIChjaGFyLXN5bnRheCAoY2hhci1hZnRlcikpKQogICAgICAgICAgKGNvbmQKICAg ICAgICAgICAoKD0gdGIgP1woKSAoc2V0cSBuZXN0ICgxLSBuZXN0KSkpCiAgICAgICAgICAgKCg9 IHRiID9cKSkgKHNldHEgbmVzdCAoMSsgbmVzdCkpKQogICAgICAgICAgICkKICAgICAgICAgIChp ZiAoPSAwIG5lc3QpCiAgICAgICAgICAgICAgKHRocm93ICdza2lwIChwb2ludCkpKQogICAgICAg ICAgKQogICAgICAgIDs7IGlmIHdlIHJlYWNoZWQgdGhpcyBwb2ludCB0aGVuIHRoZSBzZWFyY2gg ZmFpbGVkCiAgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAgICAgICAodGhyb3cgJ3Nr aXAgKHBvaW50KSkpCiAgICAgICkKICAgICkpCgooZGVmdW4gc3BlY21hbi1kb3duLXNjb3BlICgm b3B0aW9uYWwgd2l0aGluLWNvZGUtcmVnaW9uKQogICJNb3ZlIGRvd24gb25lIHNjb3BlLCBza2lw cGluZyBvdmVyIHNwZWNtYW4ncyBtYW55IGNvbW1lbnQgc3R5bGVzLgogICBSZXR1cm4gcG9pbnQg b2YgY2xvc2VyIGlmIHdlIGFyZSBpbiBhIGxpc3QiCgogIChpZiBnbG9iYWwtc2NvcGUtaW5kZXgK ICAgICAgKHNwZWNtYW4tc2NvcGUtaW5kZXgtZG93bi1zY29wZSBnbG9iYWwtc2NvcGUtaW5kZXgg d2l0aGluLWNvZGUtcmVnaW9uKQogICAgKGxldCAoCiAgICAgICAgICAobGltCiAgICAgICAgICAg KHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAoc3BlY21hbi1lbmQtb2YtZS1jb2RlKQogICAg ICAgICAgICAgKHBvaW50KSkKICAgICAgICAgICApCiAgICAgICAgICAobmVzdAogICAgICAgICAg IDEKICAgICAgICAgICApCiAgICAgICAgICApCgogICAgICAodW5sZXNzIHdpdGhpbi1jb2RlLXJl Z2lvbgogICAgICAgIChzcGVjbWFuLXNraXAtZm9yd2FyZC1jb21tZW50LW9yLXN0cmluZykpCiAg ICAgIAogICAgICAoY2F0Y2ggJ3NraXAKICAgICAgICAod2hpbGUKICAgICAgICAgICAgKGFuZCAo PCAocG9pbnQpIGxpbSkKICAgICAgICAgICAgICAgICAoc3BlY21hbi1yZS1zZWFyY2gtZm9yd2Fy ZCAiXFwoe1xcKVxcfFxcKH1cXClcXHxcXCgvL1xcfC0tXFwpXFx8XFwoXic+XFwpXFx8XFwoXCJc XCkiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGltCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vdmUKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0KSkKICAgICAgICAgIChzZXRxIHRiIChj aGFyLXN5bnRheCAoY2hhci1iZWZvcmUpKSkKICAgICAgICAgIChjb25kCiAgICAgICAgICAgKCht YXRjaC1iZWdpbm5pbmcgMSkKICAgICAgICAgICAgKHNldHEgbmVzdCAoMSsgbmVzdCkpCiAgICAg ICAgICAgICkKICAgICAgICAgICAoKG1hdGNoLWJlZ2lubmluZyAyKQogICAgICAgICAgICAoc2V0 cSBuZXN0ICgxLSBuZXN0KSkKICAgICAgICAgICAgKQogICAgICAgICAgICgobWF0Y2gtYmVnaW5u aW5nIDMpCiAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkKICAgICAgICAgICAgKQogICAgICAg ICAgICgobWF0Y2gtYmVnaW5uaW5nIDQpCiAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAi XjwnIiBsaW0gJ21vdmUpCiAgICAgICAgICAgICkKICAgICAgICAgICAoKG1hdGNoLWJlZ2lubmlu ZyA1KQogICAgICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgIlwiIiBsaW0gJ21vdmUpCiAgICAg ICAgICAgICkKICAgICAgICAgICApCiAgICAgICAgICAoaWYgKD0gMCBuZXN0KQogICAgICAgICAg ICAgICh0aHJvdyAnc2tpcCAocG9pbnQpKSkKICAgICAgICAgICkKICAgICAgICA7OyBpZiB3ZSBy ZWFjaGVkIHRoaXMgcG9pbnQgdGhlbiB0aGUgc2VhcmNoIGZhaWxlZAogICAgICAgIChnb3RvLWNo YXIgKHBvaW50LW1heCkpCiAgICAgICAgKHRocm93ICdza2lwIChwb2ludCkpKQogICAgICApCiAg ICApKQoKKGRlZnVuIHNwZWNtYW4td2l0aGluLWV4LWNvZGUtcG9pbnQgKCkKICAiUmV0dXJuIHBv aW50IGlmIHdpdGhpbiBleC1jb2RlIHJlZ2lvbiwgZWxzZSBuaWwuIgogIChzYXZlLWV4Y3Vyc2lv bgogICAgKGlmIChyZS1zZWFyY2gtYmFja3dhcmQgIl5cXCg/OlxcKCc+XFwpXFx8XFwoPCdcXClc XCkiIG5pbCAnbSkKCShpZiAobWF0Y2gtYmVnaW5uaW5nIDIpCiAgICAgICAgICAgIG5pbAogICAg ICAgICAgKHBvaW50KSkKICAgICAgKHBvaW50KSkpKQoKKGRlZnVuIHNwZWNtYW4td2l0aGluLXJl Z2lvbi1jb21tZW50LXAgKCkKICAiUmV0dXJuIHRydWUgaWYgcG9pbnQgaXMgaW4gYSByZWdpb24g Y29tbWVudDoKICAgLSBlaXRoZXIgb3V0c2lkZSBlLWNvZGUgcmVnaW9uIDwnLi4uJz4KICAgLSBv ciBpbiBhIC8qLi4uKi8gY29tbWVudCwgYnV0IG5vdCBvbiB0aGUgb3BlbmluZyBsaW5lIgoKICAo b3IgKHNwZWNtYW4td2l0aGluLWV4LWNvZGUtcG9pbnQpCiAgICAgIChzcGVjbWFuLWxpbmUtd2l0 aGluLXN0YXItY29tbWVudC1wKSkpCgooZGVmdW4gc3BlY21hbi1zdGFydC1leC1jb2RlLXBvaW50 IChsaW1pdCkKICAiUmV0dXJuIHBvaW50IGJlZm9yZSBjb21tZW50IHN0YXJ0cyBpZiBiZWZvcmUg TElNSVQsIGVsc2UgbmlsLiIKICAoc2F2ZS1leGN1cnNpb24KICAgICh3aGVuIChyZS1zZWFyY2gt Zm9yd2FyZCAiXic+IiBsaW1pdCB0KQogICAgICAobWF0Y2gtYmVnaW5uaW5nIDApKSkpCgooZGVm dW4gc3BlY21hbi1lbmQtZXgtY29kZS1wb2ludCAobGltaXQpCiAgIlJldHVybiBwb2ludCBhZnRl ciBjb21tZW50IGVuZHMgaWYgYmVmb3JlIExJTUlULCBlbHNlIG5pbC4iCiAgKHNhdmUtZXhjdXJz aW9uCiAgICAod2hlbiAocmUtc2VhcmNoLWZvcndhcmQgIl48JyIgbGltaXQgdCkKICAgICAgKG1h dGNoLWVuZCAwKSkpKQoKKGRlZnZhciBlY29tLXN5bnRheC1oaWdobGlnaHQgbmlsCiAgIlRydWUg aWYgdGhlIGN1cnJlbnQgYnVmZmVyIGlzIGFuIC5lY29tIGZpbGUgYW5kIHNob3VsZCBiZSBzeW50 YXgKIGhpZ2hsaWdodGVkIGFzIHN1Y2ggKGkuZS4gaWdub3JlIGV4LWNvZGUtcmVnaW9ucykuIikK KG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdlY29tLXN5bnRheC1oaWdobGlnaHQpCgooZGVm dW4gc3BlY21hbi1tYXRjaC1leC1jb2RlLXJlZ2lvbnMgKGxpbWl0KQogICJNYXRjaCBhIG5vbiBj b2RlIGJsb2NrLCBzZXR0aW5nIG1hdGNoLWRhdGEgYW5kIHJldHVybmluZyB0LCBlbHNlIG5pbC4i CiAgKHdoZW4gKG5vdCBlY29tLXN5bnRheC1oaWdobGlnaHQpCiAgICAod2hlbiAoPCAocG9pbnQp IGxpbWl0KQogICAgICAobGV0ICgoc3RhcnQKICAgICAgICAgICAgIChvciAoc3BlY21hbi13aXRo aW4tZXgtY29kZS1wb2ludCkKICAgICAgICAgICAgICAgICAoc3BlY21hbi1zdGFydC1leC1jb2Rl LXBvaW50IGxpbWl0KSkpCiAgICAgICAgICAgIChjYXNlLWZvbGQtc2VhcmNoCiAgICAgICAgICAg ICB0KQogICAgICAgICAgICAob3JpZ2luCiAgICAgICAgICAgICAocG9pbnQpKQogICAgICAgICAg ICApCiAgICAgICAgKHdoZW4gc3RhcnQKICAgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCiAgICAg ICAgICAobGV0ICgoZW5kCiAgICAgICAgICAgICAgICAgKG9yIChzcGVjbWFuLWVuZC1leC1jb2Rl LXBvaW50IGxpbWl0KQogICAgICAgICAgICAgICAgICAgICBsaW1pdCkpCiAgICAgICAgICAgICAg ICApCiAgICAgICAgICAgIChnb3RvLWNoYXIgZW5kKQogICAgICAgICAgICAoc3RvcmUtbWF0Y2gt ZGF0YSAobGlzdCBzdGFydCBlbmQpKQogICAgICAgICAgICAoaWYgKD0gKHBvaW50KSBvcmlnaW4p CiAgICAgICAgICAgICAgICBuaWwKICAgICAgICAgICAgICB0KSkpKSkpKQoKKGRlZnVuIHNwZWNt YW4tbWF0Y2gtbWludXMtY29tbWVudHMgKGxpbWl0KQogICJNYXRjaCBhICctLSAuLi4gRU9MJyBy ZWdpb24sIHNldHRpbmcgbWF0Y2gtZGF0YSBhbmQgcmV0dXJuaW5nIHQsIGVsc2UgbmlsLiIKICAo d2hlbiAoPCAocG9pbnQpIGxpbWl0KQogICAgKGxldCAoKHN0YXJ0CiAgICAgICAgICAgKHByb2du CiAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgICAoc3BlY21hbi1z ZWFyY2gtZm9yd2FyZC1taW51cy1jb21tZW50IGxpbWl0KSkpCiAgICAgICAgICApCiAgICAgICh3 aGVuIHN0YXJ0CiAgICAgICAgKGdvdG8tY2hhciBzdGFydCkKICAgICAgICAobGV0ICgoZW5kCiAg ICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUpCiAgICAg ICAgICAgICAgICAgKGlmICg8IChwb2ludCkgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIChw b2ludCkKICAgICAgICAgICAgICAgICAgIGxpbWl0KSkpCiAgICAgICAgICAgICAgKQogICAgICAg ICAgKHN0b3JlLW1hdGNoLWRhdGEgKGxpc3Qgc3RhcnQgZW5kKSkKICAgICAgICAgIHQpKSkpKQoK KGRlZnVuIHNwZWNtYW4tc2VhcmNoLWZvcndhcmQtbG9uZy1saW5lIChsaW1pdCkKICAod2hlbiAo PCBzcGVjbWFuLW1heC1saW5lLWxlbmd0aAogICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpCiAg ICAoZm9yd2FyZC1saW5lKSkgOzsgc28gd2UgZG9uJ3QgcmV0dXJuIGEgdmFsdWUgc21hbGxlciB0 aGFuIHBvaW50CiAgKGxldCAoKGNvbnRpbnVlCiAgICAgICAgIHQpCiAgICAgICAgKHJldHVybi12 YWwKICAgICAgICAgbmlsKQogICAgICAgICkKICAod2hpbGUgY29udGludWUKICAgIChpZiAoPj0g KHBvaW50KSBsaW1pdCkKICAgICAgICAoc2V0cSBjb250aW51ZSBuaWwpCiAgICAgIChwcm9nbgog ICAgICAgIChlbmQtb2YtbGluZSkKICAgICAgICAoaWYgKDw9IChjdXJyZW50LWNvbHVtbikKICAg ICAgICAgICAgICAgIHNwZWNtYW4tbWF4LWxpbmUtbGVuZ3RoKQogICAgICAgICAgICAoZm9yd2Fy ZC1saW5lKQogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChzZXRxIGNvbnRpbnVlIG5pbCkK ICAgICAgICAgICAgKG1vdmUtdG8tY29sdW1uIHNwZWNtYW4tbWF4LWxpbmUtbGVuZ3RoKQogICAg ICAgICAgICAod2hlbiAoPCAocG9pbnQpIGxpbWl0KQogICAgICAgICAgICAgIChzdG9yZS1tYXRj aC1kYXRhIChsaXN0IChwb2ludCkgKHBvaW50KSkpCiAgICAgICAgICAgICAgKHNldHEgcmV0dXJu LXZhbCAocG9pbnQpKSkpKSkpKQogIHJldHVybi12YWwpKQogICAgCihkZWZ1biBzcGVjbWFuLW1h dGNoLWJleW9uZC1tYXgtbGluZS1sZW5ndGggKGxpbWl0KQogICJNYXRjaCB0ZXh0IGJleW9uZCB0 aGUgbWF4IGxpbmUgbGVuZ3RoLCBzZXR0aW5nIG1hdGNoLWRhdGEgYW5kIHJldHVybmluZyB0LCBl bHNlIG5pbC4iCiAgKHdoZW4gKGFuZCBzcGVjbWFuLWhpZ2hsaWdodC1iZXlvbmQtbWF4LWxpbmUt bGVuZ3RoCiAgICAgICAgICAgICAoPCAocG9pbnQpIGxpbWl0KSkKICAgIChsZXQgKChzdGFydAog ICAgICAgICAgIChzcGVjbWFuLXNlYXJjaC1mb3J3YXJkLWxvbmctbGluZSBsaW1pdCkpCiAgICAg ICAgICApCiAgICAgICh3aGVuIHN0YXJ0CiAgICAgICAgKGxldCAoKGVuZAogICAgICAgICAgICAg ICAocHJvZ24KICAgICAgICAgICAgICAgICAoZW5kLW9mLWxpbmUpCiAgICAgICAgICAgICAgICAg KGlmICg8IChwb2ludCkgbGltaXQpCiAgICAgICAgICAgICAgICAgICAgIChwb2ludCkKICAgICAg ICAgICAgICAgICAgIGxpbWl0KSkpCiAgICAgICAgICAgICAgKQogICAgICAgICAgKGZvcndhcmQt bGluZSkKICAgICAgICAgIChzdG9yZS1tYXRjaC1kYXRhIChsaXN0IHN0YXJ0IGVuZCkpCiAgICAg ICAgICB0KSkpKSkKCgo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Cjs7IFNQRUNNQU4gSGlkZS9zaG93IGNvbW1lbnRzCjs7ID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsgc2VlbXMgdG8gYWZmZWN0IG9u bHkgZXgtY29kZSByZWdpb25zLgo7OyBUT0RPOiBjYW4gdGhpcyBiZSBtYWRlIHRvIHdvcms/Cgo7 OyAocmVxdWlyZSAnaGlkZWlmKQo7OyAoZGVmdmFyIHNwZWNtYW4tY29tbWVudC1oaWRpbmcgbmls ICJOb24tbmlsIHdoZW4gdGV4dCBtYXkgYmUgaGlkZGVuLiIpCgo7OyAoZGVmdW4gc3BlY21hbi10 b2dnbGUtaGlkZS1jb21tZW50cyAoKQo7OyAgICJUb2dnbGUgdGhlIGhpZGluZyBvZiBjb21tZW50 cyBpbiBTcGVjbWFuIG1vZGUiCjs7ICAgKGludGVyYWN0aXZlKQogIAo7OyAgIChzcGVjbWFuLW91 dGxpbmUtY29tbWVudHMgKG5vdCBzcGVjbWFuLWNvbW1lbnQtaGlkaW5nKSkpCgo7OyAoZGVmdW4g c3BlY21hbi1vdXRsaW5lLWNvbW1lbnRzIChmbGFnKQo7OyAgICJIaWRlL29yIHNob3cgYmxvY2sg Y29tbWVudHMiCjs7ICAgKGludGVyYWN0aXZlKQogIAo7OyAgIChsZXQgKChoaWYtb3V0c2lkZS1y ZWFkLW9ubHkgYnVmZmVyLXJlYWQtb25seSkKOzsgICAgICAgICAoaW5oaWJpdC1yZWFkLW9ubHkg dCkKOzsgICAgICAgICApCjs7ICAgICAoc2V0cSBzZWxlY3RpdmUtZGlzcGxheSB0KQo7OyAgICAg KHNldHEgaGlkZS1pZmRlZi1oaWRpbmcgdCkKOzsgICAgIChoaWRlLWlmZGVmLWd1dHMpKQogIAo7 OyAgICAgKHNldHEgc2VsZWN0aXZlLWRpc3BsYXkgdCkKOzsgICAgIChzZXRxIHNwZWNtYW4tY29t bWVudC1oaWRpbmcgKGlmIGZsYWcgdCBuaWwpKQogICAgCjs7ICAgICAoc2F2ZS1leGN1cnNpb24K OzsgICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKOzsgICAgICAgKGxldCAoKGUgKHBvaW50 LW1heCkpCjs7ICAgICAgICAgICAgICkKOzsgICAgICAgICAod2hpbGUgKGFuZAo7OyAgICAgICAg ICAgICAgICAgKDwgKHBvaW50KSBlKQo7OyAgICAgICAgICAgICAgICAgKHNwZWNtYW4tbWF0Y2gt ZXgtY29kZS1yZWdpb25zIGUpKQo7OyAgICAgICAgICAgKGlmIGZsYWcKOzsgICAgICAgICAgICAg ICAoaGlkZS1pZmRlZi1yZWdpb24gKG1hdGNoLWJlZ2lubmluZyAwKQo7OyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDApKQo7OyAgICAgICAgICAgICAoaGlmLXNo b3ctaWZkZWYtcmVnaW9uIChtYXRjaC1iZWdpbm5pbmcgMCkKOzsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDApKSkpKSkpCgoKOzsgPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7OyBTUEVDTUFOIE1lbnVzCjs7ID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKGRlZnZhciBz cGVjbWFuLXhlbWFjcy1tZW51CiAgJygiU3BlY21hbiIKICAgICgiTW92ZSIKICAgICBbIkJlZ2lu bmluZyBvZiBzcGVjaWZpY2F0aW9uIgkgICAgICAgICAgICAgICAgc3BlY21hbi1iZWctb2YtZGVm dW4gdF0KICAgICBbIkVuZCBvZiBzcGVjaWZpY2F0aW9uIgkgICAgICAgICAgICAgICAgICAgICAg IAlzcGVjbWFuLWVuZC1vZi1kZWZ1biB0XQogICAgICkKICAgICItLS0tIgogICAgKCJDb21tZW50 cyIKICAgICBbIlJlZG8vaW5zZXJ0IGNvbW1lbnRzIG9uIGV2ZXJ5IH07IiAgICAgICAgICAgICAg ICBzcGVjbWFuLXJlZG8tZW5kY29tbWVudHMgdF0KICAgICBbIlJlZG8vaW5zZXJ0IGNvbW1lbnRz IG9uIGN1cnJlbnQgbGluZSIgICAgICAgICAgICBzcGVjbWFuLWluc2VydC1hdXRvLWVuZGNvbW1l bnQgdF0KICAgICBbIkluc2VydCAtLSBjb21tZW50IiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcGVjbWFuLWluc2VydC1taW51cy1jb21tZW50IHRdCiAgICAgWyJJbnNlcnQgLy8gY29t bWVudCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1pbnNlcnQtc2xhc2gt Y29tbWVudCB0XQogICAgIFsiQ29tbWVudCByZWdpb24iICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbW1lbnQtcmVnaW9uIHRdCiAgICAgWyJVbkNvbW1lbnQgcmVnaW9uIiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi11bmNvbW1lbnQtcmVnaW9uIHRdCiAg ICAgWyJFeGNsdWRlIGNvZGUgcmVnaW9uIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Bl Y21hbi1leGNsdWRlLWNvZGUtcmVnaW9uIHRdCiAgICAgOztbIlRvZ2dsZSBoaWRpbmcgY29tbWVu dCBibG9ja3MiICAgICAgICAgICAgICAgICAgICBzcGVjbWFuLXRvZ2dsZS1oaWRlLWNvbW1lbnRz IHRdCiAgICAgWyJSZWFsaWduIGNvbW1lbnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc3BlY21hbi1yZWFsaWduLWNvbW1lbnQgdF0KICAgICApCiAgICAoIkZvcm1hdHRpbmciCiAg ICAgWyJNaW5vciBjb21tZW50IHNlcGFyYXRvciIgICAgICAgICAgICAgICAgICAgICAgICAgc3Bl Y21hbi1taW5vci1jb21tZW50LXNlcGFyYXRvciB0XQogICAgIFsiTWFqb3IgY29tbWVudCBzZXBh cmF0b3IiICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNtYW4tbWFqb3ItY29tbWVudC1zZXBh cmF0b3IgdF0KICAgICBbIkluc2VydCBzdGFuZGFyZCBmaWxlIGhlYWRlciIgICAgICAgICAgICAg ICAgICAgICBzcGVjbWFuLWhlYWRlciB0XQogICAgIFsiSW5zZXJ0IFImRCBmaWxlIGhlYWRlciIg ICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNtYW4tZGV2ZWxvcG1lbnQtZmlsZS1oZWFkZXIg dF0KICAgICBbIkluc2VydCBzdHJ1Y3QvZGVmaW5lIGhlYWRlciIgICAgICAgICAgICAgICAgICAg ICBzcGVjbWFuLXN0cnVjdC1hbmQtZGVmaW5lLWhlYWRlci1jb21wYWN0IHRdCiAgICAgWyJJbnNl cnQgZGV0YWlsZWQgc3RydWN0L2RlZmluZSBoZWFkZXIiICAgICAgICAgICAgc3BlY21hbi1zdHJ1 Y3QtYW5kLWRlZmluZS1oZWFkZXItZnVsbCB0XQogICAgIFsiSW5zZXJ0IG1ldGhvZCBoZWFkZXIi ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNtYW4tbWV0aG9kLWhlYWRlci1jb21wYWN0 IHRdCiAgICAgWyJJbnNlcnQgZGV0YWlsZWQgbWV0aG9kIGhlYWRlciIgICAgICAgICAgICAgICAg ICAgc3BlY21hbi1tZXRob2QtaGVhZGVyLWZ1bGwgdF0KICAgICBbIkluc2VydCBoZWFkZXJzIGZv ciBhbGwgc3RydWN0cy9kZWZpbmVzL21ldGhvZHMiICBzcGVjbWFuLWFkZC1zdHJ1Y3QtYW5kLW1l dGhvZC1oZWFkZXJzIHRdCiAgICAgWyJJbnNlcnQgZS1jb2RlIHNlY3Rpb24iICAgICAgICAgICAg ICAgICAgICAgICAgICAgc3BlY21hbi1vcGVuLWUtY29kZS1zZWN0aW9uIHRdCiAgICAgWyJJbnNl cnQgZS1jb2RlIGJsb2NrIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1vcGVu LWUtY29kZS1ibG9jayB0XQogICAgICkKICAgICItLS0tIgogICAgWyJTcGVjbWFuIGNvbXBpbGUi ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNtYW4tY29tcGlsZSB0XQogICAg WyJNYWtlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNt YW4tbWFrZSB0XQogICAgIi0tLS0iCiAgICBbIkRlc2NyaWJlIGN1cnNvciBjb250ZXh0IiAgICAg ICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1kZXNjcmliZS1jb250ZXh0IHRdCiAgICAiLS0t LSIKICAgIFsiU3VibWl0IGJ1ZyByZXBvcnQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBzcGVjbWFuLXN1Ym1pdC1idWctcmVwb3J0IHRdCiAgICBbIkN1c3RvbWl6ZSBTcGVjbWFuIE1v ZGUuLi4iICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1jdXN0b21pemUgdF0KICAgIFsi Q3VzdG9taXplIFNwZWNtYW4gRm9udHMgJiBDb2xvcnMiICAgICAgICAgICAgICAgICBzcGVjbWFu LWZvbnQtY3VzdG9taXplIHRdCiAgICApCiAgIkVtYWNzIG1lbnUgZm9yIFNQRUNNQU4gbW9kZS4i CiAgKQoKKHVubGVzcyAoc3RyaW5nLW1hdGNoICJYRW1hY3MiIGVtYWNzLXZlcnNpb24pCiAgKGVh c3ktbWVudS1kZWZpbmUKICAgIHNwZWNtYW4tbWVudQogICAgc3BlY21hbi1tb2RlLW1hcAogICAg Ik1lbnUgZm9yIFNwZWNtYW4gbW9kZSIKICAgIHNwZWNtYW4teGVtYWNzLW1lbnUpKQoKKGRlZnVu IHNwZWNtYW4tY3VzdG9taXplICgpCiAgIkxpbmsgdG8gY3VzdG9taXplIHNjcmVlbiBmb3IgU3Bl Y21hbiIKICAoaW50ZXJhY3RpdmUpCiAgKGN1c3RvbWl6ZS1ncm91cCAnc3BlY21hbi1tb2RlKQog ICkKCihkZWZ1biBzcGVjbWFuLWZvbnQtY3VzdG9taXplICgpCiAgIkxpbmsgdG8gY3VzdG9taXpl IGZvbnRzIHVzZWQgZm9yIFNwZWNtYW4iCiAgKGludGVyYWN0aXZlKQogIChjdXN0b21pemUtYXBy b3BvcyAiZm9udC1sb2NrLSoiICdmYWNlcykKICApCgooZGVmdW4gc3BlY21hbi1jb21waWxlICgp CiAgIkludm9rZSBjb21waWxlLCBjdXN0b21pemVkIGZvciBzcGVjbWFuIgogIChpbnRlcmFjdGl2 ZSkKICAobGV0ICgoY29tcGlsZS1jb21tYW5kCiAgICAgICAgIChjb25jYXQgc3BlY21hbi1jb21w aWxlLWNvbW1hbmQKICAgICAgICAgICAgICAgICBidWZmZXItZmlsZS1uYW1lKSkKICAgICAgICAo Y29tcGlsYXRpb24tcmVhZC1jb21tYW5kCiAgICAgICAgIHQpCiAgICAgICAgKQogICAgKGNhbGwt aW50ZXJhY3RpdmVseSAnY29tcGlsZSBjb21waWxlLWNvbW1hbmQpCiAgICApCiAgKQoKKGRlZnVu IHNwZWNtYW4tbWFrZSAoKQogICJJbnZva2UgbWFrZSwgY3VzdG9taXplZCBmb3Igc3BlY21hbiIK ICAoaW50ZXJhY3RpdmUpCiAgKGxldCAoKGNvbXBpbGUtY29tbWFuZAogICAgICAgICBzcGVjbWFu LW1ha2UtY29tbWFuZCkKICAgICAgICAoY29tcGlsYXRpb24tcmVhZC1jb21tYW5kCiAgICAgICAg IHQpCiAgICAgICAgKQogICAgKGNhbGwtaW50ZXJhY3RpdmVseSAnY29tcGlsZSBjb21waWxlLWNv bW1hbmQpCiAgICApCiAgKQoKKGRlZmNvbnN0IHNwZWNtYW4tYmVnLW9mLWRlZnVuLXF1ZXJ5LXJl Z2V4cAogIChjb25jYXQKICAgIl4iCiAgICJcXCg/OiIKICAgIlxcKDwnXFwpIgogICAiXFx8Igog ICBzcGVjbWFuLXRvcC1sZXZlbC1jb250YWluZXItZGVmaW5pdGlvbi1yZWdleHAKICAgIlxcKSIK ICAgKQogICJJbnRlcm5hbCAtIHJlZ2V4cCB1c2VkIHRvIGZpbmQgdG9wIGxldmVsIGNvbnRhaW50 ZXIgZGVmaW5pdGlvbnMuIikKCihkZWZ1biBzcGVjbWFuLWJlZy1vZi1kZWZ1biAoJm9wdGlvbmFs IHdpdGhpbi1jb2RlLXJlZ2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuby11cC1zY29wZS1jYWxsKQogICJNb3ZlIGJhY2t3YXJkIHRvIHRoZSBiZWdpbm5pbmcgb2Yg dGhlIGN1cnJlbnQgc3RydWN0IG9yIHByb2NlZHVyZSwKICAgb3IgZmFpbGluZyB0aGF0IC0gdG8g dGhlIGJlZ2lubmluZyBvZiB0aGUgZS1jb2RlIHNlY3Rpb24gaW4gdGhlIGZpbGUuIgogIChpbnRl cmFjdGl2ZSkKICAKICA7OyBuby11cC1zY29wZS1jYWxsIC0gb25seSB0byBiZSB1c2VkIGZyb20g d2l0aGluIHNwZWNtYW4tdXAtc2NvcGUgdG8gcHJldmVudCByZWN1cnNpb24uCiAgOzsgbm9ybWFs bHkgdGhpcyBzaG91bGQgc3RpbGwgZ2l2ZSB0aGUgc2FtZSByZXN1bHQgKG1heWJlIGEgbGl0dGxl IHNsb3dlciksIGV4Y2VwdAogIDs7IHdpdGhpbiBtYWNyb3MuCiAgKHVubGVzcyBuby11cC1zY29w ZS1jYWxsCiAgICAoc3BlY21hbi11cC1zY29wZSB3aXRoaW4tY29kZS1yZWdpb24pKQogIAogIDs7 IGEgZmFpcmx5IGRlY2VudCBhcHByb3hpbWF0ZSBpbXBsZW1lbnRhdGlvbi4gYXNzdW1lcyB0aGF0 IG1ham9yIGRlZmluaXRpb25zCiAgOzsgYXJlIHByb3Blcmx5IGluZGVudGVkIHRvIHRoZSBiZWdp bm5pbmcgYSBsaW5lLCBzbyB2ZXJ5IGxpdHRsZSBjb21tZW50CiAgOzsgY2hlY2tpbmcgaXMgbmVl ZGVkLgogIDs7CiAgOzsgVE9ETzogdGhlIHdheSB0aGlzIHNob3VsZCByZWFsbHkgYmUgZG9uZSBp cyBieSBmaW5kaW5nIHRoZQogIDs7IHRvcC1tb3N0IGNvbnRhaW5lciAtIGkuZS4gdGhlIG9uZSB0 aGF0IGNhbGxpbmcgc3BlY21hbi11cC1zY29wZQogIDs7IGZyb20gcmVhY2hlcyBwb2ludC1taW4u ICB0aGlzIGlzIHZlcnkgZXhwZW5zaXZlIGluIHRlcm1zIG9mCiAgOzsgcGVyZm9ybWFuY2UgY3Vy cmVudGx5LCBidXQgY2FuIGJlIHNvbHZlZCBieSBoYW5kbGluZyB1c2luZyB0aGUKICA7OyBnbG9i YWwtc2NvcGUtaW5kZXggbWVjaGFuaXNtLiAgc3BlY21hbi1zY29wZS1pbmRleC10b3Atc2NvcGUg d2FzCiAgOzsgYW4gYXR0ZW1wdCB0byBkbyB0aGF0LCBidXQgaXQncyBub3QgbWF0dXJlIHlldC4K ICAod2hpbGUgKGFuZAogICAgICAgICAgOzsgZmFpbHVyZSBtZWFucyB0aGUgYmVnaW5uaW5nIG9m IHRoZSBidWZmZXIgd2FzIHJlYWNoZWQKICAgICAgICAgIChyZS1zZWFyY2gtYmFja3dhcmQgc3Bl Y21hbi1iZWctb2YtZGVmdW4tcXVlcnktcmVnZXhwIG5pbCB0KQogICAgICAgICAgOzsgZmFpbHVy ZSBtZWFucyBhIG1ham9yIGRlZmluaXRpb24gd2FzIG1hdGNoZWQgKGkuZS4gKG1hdGNoLWJlZ2lu bmluZyAyKSBpcyB0cnVlKQogICAgICAgICAgKG1hdGNoLWJlZ2lubmluZyAxKQogICAgICAgICAg OzsgZmFpbHVyZSBtZWFucyB0aGUgYmVnaW5uaW5nIG9mIHRoZSBidWZmZXIgd2FzIHJlYWNoZWQg LSBzdWNjZXNzIHJlcGVhdHMgdGhlIHNlYXJjaAogICAgICAgICAgKHJlLXNlYXJjaC1iYWNrd2Fy ZCAiXic+IiBuaWwgdCkpKQogIChwb2ludCkKICApCgooZGVmdW4gc3BlY21hbi1lbmQtb2YtZS1j b2RlICgpCiAgICJNb3ZlIHRvIHRoZSBlbmQgb2YgdGhlIGUtY29kZSBpbiB0aGlzIGZpbGUuIgog ICAoaW50ZXJhY3RpdmUpCiAgIAogICAoZ290by1jaGFyIChwb2ludC1tYXgpKQogICAocmUtc2Vh cmNoLWJhY2t3YXJkICJcXCheJz5cXCkiIG5pbCB0KQogICApCgooZGVmdW4gc3BlY21hbi1lbmQt b2YtZGVmdW4gKCkKICAiTW92ZSBmb3J3YXJkIHRvIHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgc3Ry dWN0IG9yIHByb2NlZHVyZSwKICAgb3IgZmFpbGluZyB0aGF0IC0gdG8gdGhlIGVuZCBvZiB0aGUg ZS1jb2RlIHNlY3Rpb24gaW4gdGhlIGZpbGUuIgogIChpbnRlcmFjdGl2ZSkKCiAgKHNwZWNtYW4t YmVnLW9mLWRlZnVuKQogIChpZiAobG9va2luZy1hdCAiPCciKQogICAgICAoc3BlY21hbi1lbmQt b2YtZS1jb2RlKQogICAgKHByb2duCiAgICAgIChzcGVjbWFuLXJlLXNlYXJjaC1mb3J3YXJkICJ7 IiAocG9pbnQtbWF4KSB0KQogICAgICAoc3BlY21hbi1kb3duLXNjb3BlKSkKICAgICkKICApCgo7 OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgoocHV0 ICdzcGVjbWFuLW1vZGUgJ2ZvbnQtbG9jay1kZWZhdWx0cwogICAgICcoKHNwZWNtYW4tZm9udC1s b2NrLWtleXdvcmRzIAogICAgICAgIHNwZWNtYW4tZm9udC1sb2NrLWtleXdvcmRzLTEKICAgICAg ICBzcGVjbWFuLWZvbnQtbG9jay1rZXl3b3Jkcy0yCiAgICAgICAgc3BlY21hbi1mb250LWxvY2st a2V5d29yZHMtMykKICAgICAgIG5pbCA7OyBuaWwgbWVhbnMgaGlnaGxpZ2h0IHN0cmluZ3MgJiBj b21tZW50cyBhcyB3ZWxsIGFzIGtleXdvcmRzCiAgICAgICBuaWwgOzsgbmlsIG1lYW5zIGtleXdv cmRzIG11c3QgbWF0Y2ggY2FzZQogICAgICAgbmlsIDs7IHN5bnRheCB0YWJsZSBoYW5kbGVkIGVs c2V3aGVyZQogICAgICAgc3BlY21hbi1iZWctb2YtZGVmdW4gOzsgZnVuY3Rpb24gdG8gbW92ZSB0 byBiZWdpbm5pbmcgb2YgcmVhc29uYWJsZSByZWdpb24gdG8gaGlnaGxpZ2h0CiAgICAgICApKQoK Ozs7IEhhY2tzIGZvciBGU0YKKHJlcXVpcmUgJ2ZvbnQtbG9jaykKKGRlZnZhciBzcGVjbWFuLW5l ZWQtZmxkIDEpCihkZWZ2YXIgZm9udC1sb2NrLWRlZmF1bHRzLWFsaXN0IG5pbCkJO0luIGNhc2Ug d2UgYXJlIFhFbWFjcwooaWYgc3BlY21hbi1uZWVkLWZsZAogICAgKGxldCAoKHNwZWNtYW4tbW9k ZS1kZWZhdWx0cwoJICAgJygoc3BlY21hbi1mb250LWxvY2sta2V5d29yZHMgCgkgICAgICBzcGVj bWFuLWZvbnQtbG9jay1rZXl3b3Jkcy0xCgkgICAgICBzcGVjbWFuLWZvbnQtbG9jay1rZXl3b3Jk cy0yCgkgICAgICBzcGVjbWFuLWZvbnQtbG9jay1rZXl3b3Jkcy0zKQoJICAgICBuaWwgOzsgbmls IG1lYW5zIGhpZ2hsaWdodCBzdHJpbmdzICYgY29tbWVudHMgYXMgd2VsbCBhcyBrZXl3b3JkcwoJ ICAgICBuaWwgOzsgbmlsIG1lYW5zIGtleXdvcmRzIG11c3QgbWF0Y2ggY2FzZQoJICAgICBuaWwg Ozsgc3ludGF4IHRhYmxlIGhhbmRsZWQgZWxzZXdoZXJlCgkgICAgIHNwZWNtYW4tYmVnLW9mLWRl ZnVuIDs7IGZ1bmN0aW9uIHRvIG1vdmUgdG8gYmVnaW5uaW5nIG9mIHJlYXNvbmFibGUgcmVnaW9u IHRvIGhpZ2hsaWdodAoJICAgICApKSkKICAgICAgKHNldHEgZm9udC1sb2NrLWRlZmF1bHRzLWFs aXN0CgkgICAgKGFwcGVuZAoJICAgICBmb250LWxvY2stZGVmYXVsdHMtYWxpc3QKCSAgICAgKGxp c3QgKGNvbnMgJ3NwZWNtYW4tbW9kZSAgc3BlY21hbi1tb2RlLWRlZmF1bHRzKSkpCgkgICAgKQog ICAgICAoc2V0cSBzcGVjbWFuLW5lZWQtZmxkIDApKSkKCjs7ID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsgU1BFQ01BTiBNT0RFIC0gTUFJTiBGVU5D VElPTgo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 CgooZGVmdmFyIHNwZWNtYW4tbW9kZS1hYmJyZXYtdGFibGUgbmlsCiAgIkFiYnJldiB0YWJsZSBp biB1c2UgaW4gU3BlY21hbi1tb2RlIGJ1ZmZlcnMuIgogICkKKGRlZmluZS1hYmJyZXYtdGFibGUg J3NwZWNtYW4tbW9kZS1hYmJyZXYtdGFibGUgKCkpCgooZGVmdW4gc3BlY21hbi1tb2RlICgpCiAg Ik1ham9yIG1vZGUgZm9yIGVkaXRpbmcgU3BlY21hbiBjb2RlLgoKQXV0b21hdGljYWxseSBpbmRl bnRzIGFuZCBjb2xvcml6ZXMgRSBjb2RlLgoKVG8gc3VibWl0IGEgcHJvYmxlbSByZXBvcnQsIGVu dGVyIFxcW3NwZWNtYW4tc3VibWl0LWJ1Zy1yZXBvcnRdIGZyb20gYQpzcGVjbWFuIG1vZGUgYnVm ZmVyLiBUaGlzIGF1dG9tYXRpY2FsbHkgc2V0cyB1cCBhIG1haWwgYnVmZmVyIHdpdGgKdmVyc2lv biBpbmZvcm1hdGlvbiBhbHJlYWR5IGFkZGVkLiBZb3UganVzdCBuZWVkIHRvIGFkZCBhIGRlc2Ny aXB0aW9uCm9mIHRoZSBwcm9ibGVtLCBpbmNsdWRpbmcgYSByZXByb2R1Y2libGUgdGVzdCBjYXNl LCBhbmQgc2VuZCB0aGUKbWVzc2FnZS4KClRvIHR1bmUgdGhlIGZvbnRzIGFuZCBjb2xvcnMgdG8g eW91ciBwcmVmZXJlbmNlLCBlbnRlcgpcXFtzcGVjbWFuLWZvbnQtY3VzdG9taXplXS4KClRvIHR1 bmUgb3RoZXIgdXNlciB0dW5hYmxlIG9wdGlvbnMsIGVudGVyClxcW3NwZWNtYW4tY3VzdG9taXpl XS4KCktleSBCaW5kaW5nczoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Clxce3Nw ZWNtYW4tbW9kZS1tYXB9IgogIChpbnRlcmFjdGl2ZSkKICAKICAoa2lsbC1hbGwtbG9jYWwtdmFy aWFibGVzKQogICh1c2UtbG9jYWwtbWFwIHNwZWNtYW4tbW9kZS1tYXApCiAgKHNldHEgbWFqb3It bW9kZSAnc3BlY21hbi1tb2RlKQogIChzZXRxIG1vZGUtbmFtZSAiU3BlY21hbiIpCiAgKHNldHEg d3JpdGUtZmlsZS1ob29rcyBuaWwpCiAgKHNldHEgbG9jYWwtYWJicmV2LXRhYmxlIHNwZWNtYW4t bW9kZS1hYmJyZXYtdGFibGUpCiAgKHNldHEgc3BlY21hbi1tb2RlLXN5bnRheC10YWJsZSAobWFr ZS1zeW50YXgtdGFibGUpKQogIChzcGVjbWFuLXBvcHVsYXRlLXN5bnRheC10YWJsZSBzcGVjbWFu LW1vZGUtc3ludGF4LXRhYmxlKQoKICA7OyBhZGQgZXh0cmEgY29tbWVudCBzeW50YXgKICAoc3Bl Y21hbi1zZXR1cC1kdWFsLWNvbW1lbnRzIHNwZWNtYW4tbW9kZS1zeW50YXgtdGFibGUpCiAgKHNl dC1zeW50YXgtdGFibGUgc3BlY21hbi1tb2RlLXN5bnRheC10YWJsZSkKCiAgOzsgaW5pdGlhbGl6 YXRpb25zCiAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ3BhcnNlLXNleHAtaWdub3JlLWNvbW1lbnRz KQogIChzZXRxIHBhcnNlLXNleHAtaWdub3JlLWNvbW1lbnRzIHQpCiAgKG1ha2UtbG9jYWwtdmFy aWFibGUgJ2luZGVudC1saW5lLWZ1bmN0aW9uKQogIChzZXRxIGluZGVudC1saW5lLWZ1bmN0aW9u ICdzcGVjbWFuLWluZGVudC1saW5lKQogIAogIChtYWtlLWxvY2FsLXZhcmlhYmxlICdjb21tZW50 LXN0YXJ0KQogIChtYWtlLWxvY2FsLXZhcmlhYmxlICdjb21tZW50LWVuZCkKICAobWFrZS1sb2Nh bC12YXJpYWJsZSAnYmxvY2stY29tbWVudC1zdGFydCkKICAobWFrZS1sb2NhbC12YXJpYWJsZSAn YmxvY2stY29tbWVudC1lbmQpCiAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2NvbW1lbnQtbXVsdGkt bGluZSkKICAobWFrZS1sb2NhbC12YXJpYWJsZSAnY29tbWVudC1zdGFydC1za2lwKQogIChtYWtl LWxvY2FsLXZhcmlhYmxlICdjb21tZW50LWNvbHVtbikKICAobWFrZS1sb2NhbC12YXJpYWJsZSAn bm9ybWFsLWF1dG8tZmlsbC1mdW5jdGlvbikKICAobWFrZS1sb2NhbC12YXJpYWJsZSAnaW5kZW50 LXJlZ2lvbi1mdW5jdGlvbikKICAobWFrZS1sb2NhbC12YXJpYWJsZSAnY29tbWVudC1pbmRlbnQt ZnVuY3Rpb24pCiAgKHNldHEgY29tbWVudC1pbmRlbnQtZnVuY3Rpb24gJ3NwZWNtYW4tY29tbWVu dC1pbmRlbnQpCiAgKHNldHEgY29tbWVudC1zdGFydCAiLy8gIgogICAgICAgIGNvbW1lbnQtZW5k ICIiCiAgICAgICAgY29tbWVudC1zdGFydC1za2lwICJcXChcXChcXCgvL1xcKVxcfFxcKC0tXFwp XFx8XFwoL1xcKlxcKVxcKVsgXHRdKlxcKSIKICAgICAgICBjb21tZW50LWNvbHVtbiA0OAogICAg ICAgIGNvbW1lbnQtbXVsdGktbGluZSB0CiAgICAgICAgOztub3JtYWwtYXV0by1maWxsLWZ1bmN0 aW9uICdzcGVjbWFuLWRvLWF1dG8tZmlsbCA7OyBUT0RPOiBzb21lZGF5Li4uCiAgICAgICAgaW5k ZW50LXJlZ2lvbi1mdW5jdGlvbiAnc3BlY21hbi1pbmRlbnQtcmVnaW9uKQoKICAobWFrZS1sb2Nh bC12YXJpYWJsZSAnY2FzZS1mb2xkLXNlYXJjaCkKICAobWFrZS1sb2NhbC12YXJpYWJsZSAnaW5k ZW50LXJlZ2lvbi1mdW5jdGlvbikKICAoc2V0cSBpbmRlbnQtcmVnaW9uLWZ1bmN0aW9uICdzcGVj bWFuLWluZGVudC1yZWdpb24pCiAgKHNldHEgY2FzZS1mb2xkLXNlYXJjaCB0KQoKICAoc2V0cSBl Y29tLXN5bnRheC1oaWdobGlnaHQKICAgICAgICAoc3RyaW5nLW1hdGNoICJcXC5lY29tXFwnIgog ICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1maWxlLW5hbWUpKSkKCiAgOzsgc2V0dXAgdGhl IGNvbW1lbnQgaW5kZW50IHZhcmlhYmxlIGluIGEgRW1hY3MgdmVyc2lvbiBwb3J0YWJsZSB3YXkK ICA7OyBpZ25vcmUgYW55IGJ5dGUgY29tcGlsZXIgd2FybmluZ3MgeW91IG1pZ2h0IGdldCBoZXJl CiAgKGlmIChib3VuZHAgJ2NvbW1lbnQtaW5kZW50LWZ1bmN0aW9uKQogICAgICAocHJvZ24KCSht YWtlLWxvY2FsLXZhcmlhYmxlICdjb21tZW50LWluZGVudC1mdW5jdGlvbikKCShzZXRxIGNvbW1l bnQtaW5kZW50LWZ1bmN0aW9uICdzcGVjbWFuLWNvbW1lbnQtaW5kZW50KSkKICAgIChtYWtlLWxv Y2FsLXZhcmlhYmxlICdjb21tZW50LWluZGVudC1mdW5jdGlvbikKICAgIChzZXRxIGNvbW1lbnQt aW5kZW50LWZ1bmN0aW9uICdzcGVjbWFuLWNvbW1lbnQtaW5kZW50KSkKICAKICA7OyBNYWtlIGEg bWVudSBiYXIKICAoaWYgKHN0cmluZy1tYXRjaCAiWEVtYWNzIiBlbWFjcy12ZXJzaW9uKQogICAg ICAocHJvZ24KICAgICAgICAoaWYgKGFuZCBjdXJyZW50LW1lbnViYXIKICAgICAgICAgICAgICAg ICAobm90IChhc3NvYyAiU3BlY21hbiIgY3VycmVudC1tZW51YmFyKSkpCiAgICAgICAgICAgIChw cm9nbgogICAgICAgICAgICAgIChzZXQtYnVmZmVyLW1lbnViYXIgKGNvcHktc2VxdWVuY2UgY3Vy cmVudC1tZW51YmFyKSkKICAgICAgICAgICAgICAoYWRkLXN1Ym1lbnUgbmlsIHNwZWNtYW4teGVt YWNzLW1lbnUpKSkgKSkKICAKICA7OyBpbWVudSBzZXR1cCAtIHNldHVwIHRoZSBmdW5jdGlvbiB0 aGF0IGNyZWF0ZXMgdGhlIHNwZWNtYW4gaW5kZXgKICAod2hlbiBzcGVjbWFuLWluZGV4LW1lbnUt YWN0aXZlCiAgICAoc2V0cSBpbWVudS0tc3BsaXQtc3VibWVudXMtZW5hYmxlIG5pbCkKICAgIChz ZXRxIGltZW51LWNyZWF0ZS1pbmRleC1mdW5jdGlvbiAnc3BlY21hbi1pbWVudS1jcmVhdGUtbWVu dSkKICAgIChpbWVudS1hZGQtdG8tbWVudWJhciAiU3BlY21hbi1JbmRleCIpCiAgICApCiAgCiAg KHJ1bi1ob29rcyAnc3BlY21hbi1tb2RlLWhvb2spCiAgKQoKOzsgPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7OyBTUEVDTUFOIElOREVOVEFUSU9OCjs7 ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCihkZWZ1 biBzcGVjbWFuLWNvbW1lbnQtaW5kZW50ICgmb3B0aW9uYWwgYXJnKQogICJyZXR1cm4gdGhlIGNv bHVtbiBudW1iZXIgdGhlIGxpbmUgc2hvdWxkIGJlIGluZGVudGVkIHRvLiIKICAoY29uZAogICAo KHNwZWNtYW4td2l0aGluLWxpbmUtY29tbWVudC1wKQogICAgCiAgICAoc2F2ZS1leGN1cnNpb24K ICAgICAgKHJlLXNlYXJjaC1iYWNrd2FyZCBjb21tZW50LXN0YXJ0LXNraXAgbmlsIHQpCiAgICAg IChjdXJyZW50LWNvbHVtbikpCiAgICApCiAgIChjb21tZW50LWNvbHVtbgogICAgCiAgICBjb21t ZW50LWNvbHVtbgogICAgKQogICAodAogICAgCiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgKHJl LXNlYXJjaC1iYWNrd2FyZCBjb21tZW50LXN0YXJ0LXNraXAgbmlsIHQpCiAgICAgIChjdXJyZW50 LWNvbHVtbikpCiAgICApCiAgICkKICApCgooZGVmdW4gc3BlY21hbi1pbmRlbnQtbGluZS1rZWVw LXBvcyAoKQogICJNYWluIGluZGVudCBmdW5jdGlvbiBmb3Igc3BlY21hbi1tb2RlIgogIChsZXQg KChzdGFydC1wb3MgIChzcGVjbWFuLWluZGVudC1jb2wpKQogICAgICAgIChjdXJyLXBvcyAgIChj dXJyZW50LWNvbHVtbikpCiAgICAgICAgb2Zmc2V0CiAgICAgICAgKQogICAgCiAgICAoc2V0cSBv ZmZzZXQgKC0gY3Vyci1wb3Mgc3RhcnQtcG9zKSkKICAgIChzcGVjbWFuLWluZGVudC1saW5lKQog ICAgKG1vdmUtdG8tY29sdW1uICgrIChzcGVjbWFuLWluZGVudC1jb2wpCiAgICAgICAgICAgICAg ICAgICAgICAgb2Zmc2V0KSkKICAgICkKICApCgooZGVmdW4gc3BlY21hbi1pbmRlbnQtcmVnaW9u IChiZWctcmVnaW9uIGVuZC1yZWdpb24pCiAgIkluZGVudCByZWdpb24gZm9yIHNwZWNtYW4uIgog IChpbnRlcmFjdGl2ZSkKICAKICAobWVzc2FnZSAiV2FpdCB3aGlsZSBpbmRlbnRpbmcgLi4uLiAi KQogIAogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGdvdG8tY2hhciBiZWctcmVnaW9uKQogICAgCiAg ICAod2hlbiAoYW5kIGJlZy1yZWdpb24KICAgICAgICAgICAgICAgZW5kLXJlZ2lvbikKICAgICAg CiAgICAgIChsZXQgKChjdXJyLWxpbmUKICAgICAgICAgICAgIDApCiAgICAgICAgICAgIChudW0t bGluZXMKICAgICAgICAgICAgIDEpCiAgICAgICAgICAgIChzdGFydC1saW5lLXBvaW50CiAgICAg ICAgICAgICAwKQogICAgICAgICAgICAobGluZS1jb21tZW50LWluZGVudAogICAgICAgICAgICAg bmlsKQogICAgICAgICAgICApCgogICAgICAgIChzcGVjbWFuLWNyZWF0ZS1nbG9iYWwtc2NvcGUt aW5kZXgpCiAgICAgICAgCgkoZ290by1jaGFyIGJlZy1yZWdpb24pCgkoYmVnaW5uaW5nLW9mLWxp bmUpCgkoc2V0cSBzdGFydC1saW5lLXBvaW50IChwb2ludCkpCiAgICAgICAgCiAgICAgICAgKGdv dG8tY2hhciBlbmQtcmVnaW9uKQogICAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKICAgICAgICAo c2V0cSBudW0tbGluZXMKICAgICAgICAgICAgICAoKyAoY291bnQtbGluZXMgc3RhcnQtbGluZS1w b2ludAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKQogICAgICAgICAgICAg ICAgIDEpKQogICAgICAgIAogICAgICAgIChnb3RvLWNoYXIgc3RhcnQtbGluZS1wb2ludCkKCiAg ICAgICAgOzsgc2tpcCBhbnkgcmVnaW9uIGNvbW1lbnQgaW4gdGhlIGJlZ2lubmluZyBvZiB0aGUg cmVnaW9uLAogICAgICAgIDs7IHdpdGggcHJvZ3Jlc3MgbWVzc2FnZS4KICAgICAgICA7OyBUT0RP OiBpbmVmZmljaWVudCAtIGp1bXAgdG8gdGhlIGVuZCBpbW1lZGlhdGVseSBhbmQgY291bnQKICAg ICAgICA7OyAgICAgICBsaW5lcyBzb21lIG90aGVyIHdheS4KICAgICAgICAod2hlbiAoc3BlY21h bi13aXRoaW4tcmVnaW9uLWNvbW1lbnQtcCkKICAgICAgICAgICh3aGlsZSAoYW5kIChzcGVjbWFu LXdpdGhpbi1yZWdpb24tY29tbWVudC1wKQogICAgICAgICAgICAgICAgICAgICAgKDwgY3Vyci1s aW5lCiAgICAgICAgICAgICAgICAgICAgICAgICBudW0tbGluZXMpKQogICAgICAgICAgICAoc2V0 cSBjdXJyLWxpbmUgKCsgY3Vyci1saW5lIDEpKQogICAgICAgICAgICAod2hlbiAoPSAwICglIGN1 cnItbGluZSAxMCkpCiAgICAgICAgICAgICAgKG1lc3NhZ2UgImluZGVudGVkICVkLyVkIGxpbmVz IC4uLiIgY3Vyci1saW5lIG51bS1saW5lcykpCiAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkp CiAgICAgICAgICApCgogICAgICAgIDs7IGluZGVudCBsaW5lIChzcGVjaWFsIGNhc2UgZm9yIGZ1 bGwgbGluZSBjb21tZW50cykKCSh3aGlsZSAoPCBjdXJyLWxpbmUKICAgICAgICAgICAgICAgICAg bnVtLWxpbmVzKQogICAgICAgICAgCgkgICh1bmxlc3MgKG9yIChsb29raW5nLWF0ICJeWyBcdF0q JCIpIDs7IGRvIG5vdGhpbmcgZm9yIGFuIGVtcHR5IGxpbmUKICAgICAgICAgICAgICAgICAgICAg IChzcGVjbWFuLWxpbmUtd2l0aGluLXN0YXItY29tbWVudC1vci1zdHJpbmctcCkpCiAgICAgICAg ICAgIChpZiAoc3BlY21hbi1saW5lLXdpdGhpbi1jb21tZW50LXApCiAgICAgICAgICAgICAgICA7 OyB1c2UgdGhlIHNhbWUgaW5kZW50IGZvciBzZXF1ZW5jZXMgb2YgbGluZS1jb21tZW50cwogICAg ICAgICAgICAgICAgKGlmIGxpbmUtY29tbWVudC1pbmRlbnQKICAgICAgICAgICAgICAgICAgICAo aW5kZW50LWxpbmUtdG8gbGluZS1jb21tZW50LWluZGVudCkKICAgICAgICAgICAgICAgICAgKHNl dHEgbGluZS1jb21tZW50LWluZGVudCAoc3BlY21hbi1pbmRlbnQtbGluZSB0KSkpCiAgICAgICAg ICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICh3aGVuIGxpbmUtY29tbWVudC1pbmRlbnQK ICAgICAgICAgICAgICAgICAgIChzZXRxIGxpbmUtY29tbWVudC1pbmRlbnQgbmlsKSkKICAgICAg ICAgICAgICAgICAoc3BlY21hbi1pbmRlbnQtbGluZSB0KQogICAgICAgICAgICAgICAgICkKICAg ICAgICAgICAgICAgKQogICAgICAgICAgICApCgogICAgICAgICAgOzsgcHJpbnQgcHJvZ3Jlc3Mg bWVzc2FnZQoJICAoc2V0cSBjdXJyLWxpbmUgKCsgY3Vyci1saW5lIDEpKQogICAgICAgICAgKHdo ZW4gKD0gMCAoJSBjdXJyLWxpbmUgMTApKQogICAgICAgICAgICAobWVzc2FnZSAiaW5kZW50ZWQg JWQvJWQgbGluZXMgLi4uIiBjdXJyLWxpbmUgbnVtLWxpbmVzKSkKICAgICAgICAgIAogICAgICAg ICAgKGZvcndhcmQtbGluZSAxKQogICAgICAgICAgCiAgICAgICAgICA7OyBza2lwIGV4LWNvZGUg cmVnaW9ucyB3aXRoIHByb2dyZXNzIG1lc3NhZ2UKICAgICAgICAgIDs7IFRPRE86IGhhdmUgdGhp cyB3b3JrIGxpa2UgdGhlIHRoZSByZWdpb24gY29tbWVudCBza2lwcGluZwogICAgICAgICAgOzsg ICAgICAgc2VjdGlvbiBhdCB0aGUgYmVnaW5uaW5nLiAgYmV0dGVyIGZvcm0gYW5kIGFsc28gZG9l cwogICAgICAgICAgOzsgICAgICAgc3RhciBjb21tZW50cyAob3IgYXQgbGVhc3Qgd2lsbCBiZSwg YWZ0ZXIgdGhlIHdheSBpdAogICAgICAgICAgOzsgICAgICAgbW92ZXMgdG8gdGhlIGVuZCB3aGls ZSBjb3VudGluZyBsaW5lcyBpcyByZXdyaXR0ZW4pLgogICAgICAgICAgKHdoZW4gKGxvb2tpbmct YXQgIl4nPiIpCiAgICAgICAgICAgICh3aGlsZSAoYW5kIChub3QgKGxvb2tpbmctYXQgIl48JyIp KQogICAgICAgICAgICAgICAgICAgICAgICAoPCBjdXJyLWxpbmUKICAgICAgICAgICAgICAgICAg ICAgICAgICAgbnVtLWxpbmVzKSkKICAgICAgICAgICAgICAoc2V0cSBjdXJyLWxpbmUgKCsgY3Vy ci1saW5lIDEpKQogICAgICAgICAgICAgICh3aGVuICg9IDAgKCUgY3Vyci1saW5lIDEwKSkKICAg ICAgICAgICAgICAgIChtZXNzYWdlICJpbmRlbnRlZCAlZC8lZCBsaW5lcyAuLi4iIGN1cnItbGlu ZSBudW0tbGluZXMpKQogICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgMSkpCiAgICAgICAgICAg IChmb3J3YXJkLWxpbmUgMSkpCiAgICAgICAgICApCgogICAgICAgIChzcGVjbWFuLWNsZWFyLWds b2JhbC1zY29wZS1pbmRleCkKICAgICAgICAKCShnb3RvLWNoYXIgc3RhcnQtbGluZS1wb2ludCkK ICAgICAgICApKQogICAgKQogIAogIChtZXNzYWdlIG5pbCkKICApCgooZGVmdW4gc3BlY21hbi1i ZWctb2Ytc3RhdGVtZW50ICgmb3B0aW9uYWwgd2l0aGluLWNvZGUtcmVnaW9uKQogICJNb3ZlIHRv IHN0YXJ0IG9mIHN0YXRlbWVudCBhbmQgcmV0dXJuIHBvaW50IgogIChsZXQqICgobGltCiAgICAg ICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgKHNwZWNtYW4tdXAtc2NvcGUgd2l0aGlu LWNvZGUtcmVnaW9uKSkKICAgICAgICAgICkKICAgICAgICAgKGZvdW5kLXN0YXRlbWVudC1jbG9z ZXIKICAgICAgICAgIG5pbAogICAgICAgICAgKQogICAgICAgICAobGFzdAogICAgICAgICAgKHNh dmUtZXhjdXJzaW9uCiAgICAgICAgICAgIDs7IGhhdmUgdG8gYmUgY2FyZWZ1bCBoZXJlIHRvIHBy ZXZlbnQgZmluZGluZyB0aGUgZW5kIG9mIHRoZSBjdXJyZW50CiAgICAgICAgICAgIDs7IHN0YXRl bWVudC9hY3Rpb24gYnV0IHN0aWxsIG5vdCBlbnRlcmluZyBhbnkgbmV3IHNjb3BlIHdoaWxlIGNo ZWNraW5nIHRoYXQuCiAgICAgICAgICAgIChzcGVjbWFuLXJlLXNlYXJjaC1iYWNrd2FyZCAiWzsp fV0iIChzcGVjbWFuLWJlZy1vZi1saW5lLXBvcykgdCB3aXRoaW4tY29kZS1yZWdpb24pCiAgICAg ICAgICAgIAogICAgICAgICAgICAodW5sZXNzIChsb29raW5nLWF0ICI7IikKICAgICAgICAgICAg ICAoZm9yd2FyZC1jaGFyKSkKICAgICAgICAgICAgCiAgICAgICAgICAgIChpZiAoYW5kICg+IChw b2ludCkgbGltKQogICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAg ICAgICA7OyBsb29rIGZvciBhIHRlcm1pbmF0aW5nICc7JyBpbiB0aGUgY3VycmVudCBzY29wZQog ICAgICAgICAgICAgICAgICAgICAgICh3aGlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAo YW5kIChzcGVjbWFuLXJlLXNlYXJjaC1iYWNrd2FyZCAiXFwoO1xcKVxcfFxcKFx9XFwpXFx8XFwo XClcXCkiIGxpbSB0IHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgZm91bmQgYSBzdGF0ZW1lbnQvYWN0aW9u IHRlcm1pbmF0aW9uIC0gc3RvcCB3aXRoIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKChtYXRjaC1iZWdpbm5pbmcgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBm b3VuZC1zdGF0ZW1lbnQtY2xvc2VyIHQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5pbCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGZvdW5kIGEgc2Nv cGUgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtYmVnaW5uaW5n IDIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BlY21hbi11cC1zY29wZSB0 KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgZm91bmQgYSBwYXJlbnMgY2xv c2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgobWF0Y2gtYmVnaW5uaW5nIDMp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BlY21hbi11cC1saXN0IHQpKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApKSkKICAgICAgICAgICAgICAgICAgICAg ICBmb3VuZC1zdGF0ZW1lbnQtY2xvc2VyKSkKICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAg ICAgICAgICAgICAoZm9yd2FyZC10by1pbmRlbnRhdGlvbiAxKQogICAgICAgICAgICAgICAgICAo c3BlY21hbi1mb3J3YXJkLXdzKQogICAgICAgICAgICAgICAgICAocG9pbnQpKQogICAgICAgICAg ICAgIChwcm9nbgogICAgICAgICAgICAgICAgKGdvdG8tY2hhciBsaW0pCiAgICAgICAgICAgICAg ICAoaWYgKGVxdWFsIChwb2ludCkgOzsgZW50ZXIgdGhlIHNjb3BlCiAgICAgICAgICAgICAgICAg ICAgICAgICAgIChwb2ludC1taW4pKQogICAgICAgICAgICAgICAgICAgIChyZS1zZWFyY2gtZm9y d2FyZCAiXjwnIikKICAgICAgICAgICAgICAgICAgKGZvcndhcmQtY2hhciAxKSkKICAgICAgICAg ICAgICAgIChzcGVjbWFuLWZvcndhcmQtd3MpCiAgICAgICAgICAgICAgICAoZm9yd2FyZC10by1p bmRlbnRhdGlvbiAwKQogICAgICAgICAgICAgICAgKHBvaW50KSkpKQogICAgICAgICAgKQogICAg ICAgICApCiAgICAKICAgIGxhc3QKICAgICkKICApCgoKOzsgVE9ETzogdGhpcywgZG93biB0byBz cGVjbWFuLWFkZC1zeW50YXgsIGRvZXNuJ3Qgc2VlbSB0byBiZSBpbiB1c2UKOzsgICAgICAgYW5k IGNhbiBwcm9iYWJseSBiZSByZW1vdmVkLgo7Owo7OyBTUEVDTUFOIC0gTUFJTiBHRVQgTElORSBU WVBFCjs7IChkZWZjb25zdCBzcGVjbWFuLW9mZnNldHMtYWxpc3QtZGVmYXVsdAo7OyAgICcoKHN0 cmluZyAgICAgICAgICAgICAgICAuIC0xMDAwKQo7OyAgICAgKGJsb2NrLW9wZW4gICAgICAgICAg ICAuIDApCjs7ICAgICAoYmxvY2stY2xvc2UgICAgICAgICAgIC4gMCkKOzsgICAgIChzdGF0ZW1l bnQgICAgICAgICAgICAgLiAwKQo7OyAgICAgKHN0YXRlbWVudC1jb250ICAgICAgICAuIHNwZWNt YW4tbGluZXVwLXN0YXRlbWVudC1jb250KQo7OyAgICAgKHN0YXRlbWVudC1ibG9jay1pbnRybyAu ICspCjs7ICAgICAoc3RhdGVtZW50LWNhc2UtaW50cm8gIC4gKykKOzsgICAgIChjYXNlLWFsdGVy bmF0aXZlICAgICAgLiArKQo7OyAgICAgKGNvbW1lbnQgICAgICAgICAgICAgICAuIHNwZWNtYW4t bGluZXVwLWNvbW1lbnQpCjs7ICAgICAoYXJnbGlzdC1pbnRybyAgICAgICAgIC4gKykKOzsgICAg IChhcmdsaXN0LWNvbnQgICAgICAgICAgLiAwKQo7OyAgICAgKGFyZ2xpc3QtY29udC1ub25lbXB0 eSAuIHNwZWNtYW4tbGluZXVwLWFyZ2xpc3QpCjs7ICAgICAoYXJnbGlzdC1jbG9zZSAgICAgICAg IC4gc3BlY21hbi1saW5ldXAtYXJnbGlzdCkKOzsgICAgIChlbnRpdHkgICAgICAgICAgICAgICAg LiAwKQo7OyAgICAgKGNvbmZpZ3VyYXRpb24gICAgICAgICAuIDApCjs7ICAgICAocGFja2FnZSAg ICAgICAgICAgICAgIC4gMCkKOzsgICAgIChhcmNoaXRlY3R1cmUgICAgICAgICAgLiAwKQo7OyAg ICAgKHBhY2thZ2UtYm9keSAgICAgICAgICAuIDApCjs7ICAgICApCjs7ICAgIkRlZmF1bHQgc2V0 dGluZ3MgZm9yIG9mZnNldHMgb2Ygc3ludGFjdGljIGVsZW1lbnRzLgo7OyBEbyBub3QgY2hhbmdl IHRoaXMgY29uc3RhbnQhICBTZWUgdGhlIHZhcmlhYmxlIGBzcGVjbWFuLW9mZnNldHMtYWxpc3Qn IGZvcgo7OyBtb3JlIGluZm9ybWF0aW9uLiIpCgo7OyAoZGVmdmFyIHNwZWNtYW4tb2Zmc2V0cy1h bGlzdCAoY29weS1hbGlzdCBzcGVjbWFuLW9mZnNldHMtYWxpc3QtZGVmYXVsdCkKOzsgICAiKkFz c29jaWF0aW9uIGxpc3Qgb2Ygc3ludGFjdGljIGVsZW1lbnQgc3ltYm9scyBhbmQgaW5kZW50YXRp b24gb2Zmc2V0cy4KOzsgRWFjaCBjb25zIGNlbGwgaW4gdGhpcyBsaXN0IGhhcyB0aGUgZm9ybToK OzsgICAgIChTWU5UQUNUSUMtU1lNQk9MIC4gT0ZGU0VUKSIpCgo7OyAoZGVmdmFyIHNwZWNtYW4t c3ludGFjdGljLWNvbnRleHQgbmlsCjs7ICAgIkJ1ZmZlciBsb2NhbCB2YXJpYWJsZSBjb250YWlu aW5nIHN5bnRhY3RpYyBhbmFseXNpcyBsaXN0LiIpCjs7IChtYWtlLXZhcmlhYmxlLWJ1ZmZlci1s b2NhbCAnc3BlY21hbi1zeW50YWN0aWMtY29udGV4dCkKCjs7IChkZWZtYWNybyBzcGVjbWFuLWFk ZC1zeW50YXggKHN5bWJvbCAmb3B0aW9uYWwgcmVscG9zKQo7OyAgICJBcHBlbmQgc3ludGF4IGlu IFNZTUJPTCB0byB0aGUgc3ludGF4IGxpc3QuIgo7OyAgIGAoc2V0cSBzcGVjbWFuLXN5bnRhY3Rp Yy1jb250ZXh0Cjs7IAkgKGNvbnMgKGNvbnMgLHN5bWJvbCAscmVscG9zKSBzcGVjbWFuLXN5bnRh Y3RpYy1jb250ZXh0KSkpCgoKKGRlZnVuIHNwZWNtYW4taW5kZW50LWxpbmUgKCZvcHRpb25hbCB3 aXRoaW4tY29kZS1yZWdpb24pCiAgIkluZGVudCB0aGUgY3VycmVudCBsaW5lIGFzIFNQRUNNQU4g Y29kZS4gIFJldHVybnMgdGhlIGFtb3VudCBvZgppbmRlbnRhdGlvbiBjaGFuZ2UuIgogIChpbnRl cmFjdGl2ZSkKCiAgKHdoZW4gKG9yIHdpdGhpbi1jb2RlLXJlZ2lvbgogICAgICAgICAgICAobm90 IChvciAoc3BlY21hbi13aXRoaW4tc3RyaW5nLXApCiAgICAgICAgICAgICAgICAgICAgIDs7IHRo ZSBjYXNlIG9mIHVuLWluZGVudGVkIHNjb3BlIG9wZW5lciwgd2hpY2ggb3RoZXJ3aXNlCiAgICAg ICAgICAgICAgICAgICAgIDs7IHdvdWxkIGJlIGNvbnNpZGVyZWQgYXMgYmVpbmcgb3V0c2lkZSBh IGNvZGUgcmVnaW9uLgogICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAg ICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgICAgICAgICAg ICAgKGxvb2tpbmctYXQgIlsgXHRdKjwnIikpCiAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFu LXdpdGhpbi1yZWdpb24tY29tbWVudC1wKSkpKQogICAgKGxldCogKChzdGFydC1wb3NpdGlvbgog ICAgICAgICAgICAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpIChwb2ludCkpCiAgICAgICAgICAg ICkKICAgICAgICAgICAoaW5kZW50CiAgICAgICAgICAgIChzcGVjbWFuLWdldC1vZmZzZXQgd2l0 aGluLWNvZGUtcmVnaW9uIHQpCiAgICAgICAgICAgICkKICAgICAgICAgICAoc2hpZnQtYW10CiAg ICAgICAgICAgICgtIGluZGVudAogICAgICAgICAgICAgICAoY3VycmVudC1pbmRlbnRhdGlvbikp CiAgICAgICAgICAgICkKICAgICAgICAgICApCgogICAgICAodW5sZXNzICh6ZXJvcCBzaGlmdC1h bXQpCiAgICAgICAgKGRlbGV0ZS1yZWdpb24gKHNwZWNtYW4tYmVnLW9mLWxpbmUtcG9zKQogICAg ICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLWluZGVudC1wb3MpKQogICAgICAgIChiZWdpbm5p bmctb2YtbGluZSkKICAgICAgICAoaW5kZW50LXRvIGluZGVudCkpCgogICAgICA7OyBUT0RPOiB0 aGlzIHNlY3Rpb24gZGVhbHMgd2l0aCBtb3ZpbmcgdGhlIHBvaW50IGZvcndhcmQgdG8gdGhlCiAg ICAgIDs7IG5ldyBpbmRlbnRhdGlvbiB3aGVuIGFwcGxpY2FibGUuICBtb3N0IG9mIHRoZSB0aW1l cyB0aGUKICAgICAgOzsgZnVuY3Rpb24gaXMgY2FsbGVkIHRoaXMgaXNuJ3QgbmVlZGVkIGFuZCBq dXN0IHdhc3RlcwogICAgICA7OyBwZXJmb3JtYW5jZS4gIGF0dGVtcHRpbmcgdG8gcmVtb3ZlIHRo aXMgZGlkbid0IHdvcmsgd2VsbCwKICAgICAgOzsgbWF5YmUgYmVjYXVzZSBpdCdzIHRoZSBpbmRl bnRhdGlvbiBmdW5jdGlvbiBmb3IgdGhlIG1vZGUuCiAgICAgIDs7ICh3aWxsIHJlcGxhY2luZyBp dCB3aXRoIHNwZWNtYW4taW5kZW50LWxpbmUta2VlcC1wb3Mgc29sdmUKICAgICAgOzsgdGhlIHBy b2JsZW0/KQogICAgICAodW5sZXNzIHdpdGhpbi1jb2RlLXJlZ2lvbgogICAgICAgIChpZiAoPCAo cG9pbnQpCiAgICAgICAgICAgICAgIChzcGVjbWFuLWluZGVudC1wb3MpKQogICAgICAgICAgICAo YmFjay10by1pbmRlbnRhdGlvbikKICAgICAgICAgIDs7IElmIGluaXRpYWwgcG9pbnQgd2FzIHdp dGhpbiBsaW5lJ3MgaW5kZW50YXRpb24sIHBvc2l0aW9uIGFmdGVyCiAgICAgICAgICA7OyB0aGUg aW5kZW50YXRpb24uICBFbHNlIHN0YXkgYXQgc2FtZSBwb2ludCBpbiB0ZXh0LgogICAgICAgICAg KHdoZW4gKDwgKHBvaW50KSBzdGFydC1wb3NpdGlvbikKICAgICAgICAgICAgKGdvdG8tY2hhciBz dGFydC1wb3NpdGlvbikpKSkKICAgICAgCiAgICAgIChzZXQtbWFya2VyIHN0YXJ0LXBvc2l0aW9u IG5pbCkKICAgICAgKHJ1bi1ob29rcyAnc3BlY21hbi1zcGVjaWFsLWluZGVudC1ob29rKQogICAg ICAKICAgICAgaW5kZW50CiAgICAgICkKICAgICkKICApCgooZGVmdW4gc3BlY21hbi1zY29wZS1v ZmZzZXQgKHBhcmVubG9jKQogICJkZXRlcm1pbmUgdGhlIGFtb3VudCB0byBpbmRlbnQgY29kZSBi YXNlZCBvbiB0aGUgZW5jbG9zaW5nIHNjb3BlLiIKICAKICAoc2F2ZS1leGN1cnNpb24KICAgIChi YWNrLXRvLWluZGVudGF0aW9uKQogICAgCiAgICAobGV0ICgoYwogICAgICAgICAgIChjaGFyLWFm dGVyKQogICAgICAgICAgICkKICAgICAgICAgIChiZWctb2YtbGluZQogICAgICAgICAgIChwb2lu dCkKICAgICAgICAgICApCiAgICAgICAgICAodW5jb250aW51ZWQtbGluZQogICAgICAgICAgIDs7 IE5PVEU6IHNvbWUgcGVvcGxlIGxpa2UgdG8gaGF2ZSAiZWxzZSB7IiBjbGF1c2VzIGFmdGVyCiAg ICAgICAgICAgOzsgImlmIHsiIHRvIGFsc28gYmUgdW4taW5kZW50ZWQuICB0aGlzIHR1cm5lZCBv dXQgdG8gYmUgYQogICAgICAgICAgIDs7IHByb2JsZW0gYmVjYXVzZSB0aGVyZSBhcmUgb3RoZXIg ImVsc2UiIHR5cGVzIGluIGUKICAgICAgICAgICA7OyAoZS5nLiBhZnRlciAiY2hlY2sgdGhhdC4u LiIpLiAgdGhlIGNoZWNrIHR1cm5zIG91dCB0byBiZQogICAgICAgICAgIDs7IHRvbyBjb21wbGV4 IHRvIGJlIGp1c3RpZmllZC4KICAgICAgICAgICAobG9va2luZy1hdCAieyIpCiAgICAgICAgICAg KQogICAgICAgICAgKQogICAgICAKICAgICAgKGdvdG8tY2hhciBwYXJlbmxvYykKICAgICAgKGNv bmQKCiAgICAgICAoOzsgT3BlbiBzY29wZSBvciBsaXN0Cgkoc2FmZS1jaGFyPSAoY2hhci1hZnRl cikgP1x7KQoKICAgICAgICAobGV0KiAoKGJlZy1hZnRlci1sYXN0LXRlcm1pbmF0aW9uCiAgICAg ICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBi ZWctb2YtbGluZSkKICAgICAgICAgICAgICAgICAgKG9yIChzcGVjbWFuLXJlLXNlYXJjaC1iYWNr d2FyZCAiOyIgcGFyZW5sb2MgdCB0KQogICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBw YXJlbmxvYykpCiAgICAgICAgICAgICAgICAgIChmb3J3YXJkLWNoYXIpCiAgICAgICAgICAgICAg ICAgIChzcGVjbWFuLWZvcndhcmQtd3MpCiAgICAgICAgICAgICAgICAgIChwb2ludCkpKQogICAg ICAgICAgICAgICAoY29udGludWluZy1saW5lLW9mZnNldAogICAgICAgICAgICAgICAgKGlmIChv ciB1bmNvbnRpbnVlZC1saW5lCiAgICAgICAgICAgICAgICAgICAgICAgICg8PSBiZWctb2YtbGlu ZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVnLWFmdGVyLWxhc3QtdGVybWluYXRpb24p KSA7OyBub3QgYmVmb3JlIGN1cnJlbnQKICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOzsgbGVhdmUgYXMgaXMKICAgICAgICAgICAgICAgICAg c3BlY21hbi1jb250aW51ZWQtbGluZS1vZmZzZXQpKSAgICAgICAgOzsgaW5kZW50IGFzIG5vbi10 ZXJtaW5hdGVkCiAgICAgICAgICAgICAgICkKICAgICAgICAgIChmb3J3YXJkLWNoYXIgMSkKICAg ICAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIiBcdCIpICAgICA7OyBtb3ZlIHBvc2l0aW9uIHRv IGVuZCBvZiB3aGl0ZXNwYWNlCiAgICAgICAgICAoaWYgKG9yIChsb29raW5nLWF0ICIvL1xcfC0t IikgOzsgZWl0aGVyIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgKGVvbHApKSAgICAgICAgICAg ICAgICA7OyBvciBlbmQtb2YtbGluZQogICAgICAgICAgICAgIChwcm9nbiAgICAgICAgICAgICAg ICAgICAgIDs7IGluZGVudCBub3JtYWxseQogICAgICAgICAgICAgICAgKGdvdG8tY2hhciBwYXJl bmxvYykKICAgICAgICAgICAgICAgIChpZiAoc2F2ZS1leGN1cnNpb24gICAgICAgICAgICAgICAg ICAgICAgICA7OyBzcGVjaWFsIGNhc2U6CiAgICAgICAgICAgICAgICAgICAgICAoYW5kIChzcGVj bWFuLXVwLWxpc3QgdCkgICAgICAgICAgICAgOzsgc2NvcGUgd2l0aGluIGEgcGFyZW5zIGlzIGEK ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNhZmUtY2hhcj0gKGNoYXItYWZ0ZXIpID9cKCkp KSA7OyBsaXN0IGFyZ3VtZW50IHRvIGEgZnVuY3Rpb24KICAgICAgICAgICAgICAgICAgICAoYmFj ay10by1pbmRlbnRhdGlvbikgICAgICAgICAgICAgICAgICA7OyBzbyBpbmRlbnQgYWNjb3JkaW5n IHRvIGxhc3QgbGluZQogICAgICAgICAgICAgICAgICAoZ290by1jaGFyIChzcGVjbWFuLWJlZy1v Zi1zdGF0ZW1lbnQgdCkpKSAgOzsgbm9ybWFsbHkgaW5kZW50IHRvIHN0YXRlbWVudAogICAgICAg ICAgICAgICAgKGlmIChzYWZlLWNoYXI9IGMgP1x9KQogICAgICAgICAgICAgICAgICAgIChjdXJy ZW50LWNvbHVtbikKICAgICAgICAgICAgICAgICAgKCsgKGN1cnJlbnQtY29sdW1uKSAKICAgICAg ICAgICAgICAgICAgICAgc3BlY21hbi1iYXNpYy1vZmZzZXQKICAgICAgICAgICAgICAgICAgICAg Y29udGludWluZy1saW5lLW9mZnNldCkpKQogICAgICAgICAgICAoaWYgKHNhZmUtY2hhcj0gYyA/ XH0pICAgICAgICAgICAgOzsgbGVhdmUgYXQgc2FtZSBjb2x1bW4gYXMgbm9uLWNvbW1lbnQgY2hh cgogICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgcGFy ZW5sb2MpCiAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpCiAgICAgICAgICAgICAg KCsgKGN1cnJlbnQtY29sdW1uKQogICAgICAgICAgICAgICAgIGNvbnRpbnVpbmctbGluZS1vZmZz ZXQpKSkpCiAgICAgICAgKQoKICAgICAgICg7OyBJbnNpZGUgKCApCgkoc2FmZS1jaGFyPSAoY2hh ci1hZnRlcikgP1woKQoKICAgICAgICAobGV0KiAoKGJlZy1hZnRlci1sYXN0LXRlcm1pbmF0aW9u CiAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgKGdvdG8t Y2hhciBiZWctb2YtbGluZSkKICAgICAgICAgICAgICAgICAgKGlmIChsZXQgKChjb250aW51ZS1m bGFnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChyZXN1bHQtcG9pbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwpCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IGZp bmQgYSAnLCcgbm90IHdpdGhpbiBhbiBpbnRlcm5hbCBwYXJlbnMgKHdoaWNoIGNhbiBoYXBwZW4K ICAgICAgICAgICAgICAgICAgICAgICAgOzsgZS5nLiBpbiB0aGUgc2NvcGUgb2YgYSBsb2dpY2Fs IGNvbmRpdGlvbikuICBkb25lIHdpdGhpbgogICAgICAgICAgICAgICAgICAgICAgICA7OyBhIHNh dmUtZXhjdXJzaW9uIHNjb3BlIGJlY2F1c2Ugd2UgbWF5IG9ubHkgZmluZCBhbiBlbmRpbmcKICAg ICAgICAgICAgICAgICAgICAgICAgOzsgcGFyZW5zIGFuZCBuZXZlciBhICcsJyBhbmQgdGhlbiB3 ZSBkb24ndCB3YW50IHRvIGtlZXAgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgIDs7IHBvc2l0 aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAg ICAgICAgICAgICAgICAod2hpbGUgKGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29udGludWUtZmxhZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNt YW4tcmUtc2VhcmNoLWJhY2t3YXJkICJcXCgsXFwpXFx8XFwoKVxcKSIgcGFyZW5sb2MgdCB0KSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAobWF0Y2gtYmVnaW5uaW5nIDIpCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tdXAtbGlzdCB0KQogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSBjb250aW51ZS1mbGFnIG5pbCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoc2V0cSByZXN1bHQtcG9pbnQgKHBvaW50KSkpKSkpCiAgICAgICAgICAgICAgICAgICAgICAg IAogICAgICAgICAgICAgICAgICAgICAgICAod2hlbiByZXN1bHQtcG9pbnQKICAgICAgICAgICAg ICAgICAgICAgICAgICAoZ290by1jaGFyIHJlc3VsdC1wb2ludCkpCiAgICAgICAgICAgICAgICAg ICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQtcG9pbnQpCiAgICAgICAgICAg ICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAg ICAgICAgICAoZm9yd2FyZC1jaGFyKQogICAgICAgICAgICAgICAgICAgICAgICAoc3BlY21hbi1m b3J3YXJkLXdzKQogICAgICAgICAgICAgICAgICAgICAgICAocG9pbnQpKQogICAgICAgICAgICAg ICAgICAgIG5pbCkpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgIChjb250aW51aW5n LWxpbmUtb2Zmc2V0CiAgICAgICAgICAgICAgICAoaWYgKG9yIChub3QgYmVnLWFmdGVyLWxhc3Qt dGVybWluYXRpb24pIDs7IG5vdCBmb3VuZAogICAgICAgICAgICAgICAgICAgICAgICB1bmNvbnRp bnVlZC1saW5lCiAgICAgICAgICAgICAgICAgICAgICAgICg8PSBiZWctb2YtbGluZQogICAgICAg ICAgICAgICAgICAgICAgICAgICAgYmVnLWFmdGVyLWxhc3QtdGVybWluYXRpb24pKSA7OyBub3Qg YmVmb3JlIGN1cnJlbnQKICAgICAgICAgICAgICAgICAgICAwICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgOzsgbGVhdmUgYXMgaXMKICAgICAgICAgICAgICAgICAgc3BlY21hbi1j b250aW51ZWQtbGluZS1vZmZzZXQpKSAgICAgICAgOzsgaW5kZW50IGFzIG5vbi10ZXJtaW5hdGVk CiAgICAgICAgICAgICAgICkKCiAgICAgICAgICAoKyAoaWYgKHNhZmUtY2hhcj0gYyA/XCkpICAg ICAgICAgICA7OyBhZGQgb2Zmc2V0IGZvciBub24tdGVybWluYXRlZCBsaW5lcwogICAgICAgICAg ICAgICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgd2hpY2ggYXJlIG5vdCB0aGUg Y2xvc2luZyBwYXJlbnMgCiAgICAgICAgICAgICAgIGNvbnRpbnVpbmctbGluZS1vZmZzZXQpCiAg ICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgKGZvcndhcmQtY2hhciAxKQogICAgICAg ICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHQiKSAgICAgOzsgbW92ZSBwb3NpdGlvbiB0 byBlbmQgb2Ygd2hpdGVzcGFjZQogICAgICAgICAgICAgICAoaWYgKG9yIChsb29raW5nLWF0ICIv L1xcfC0tIikgOzsgZWl0aGVyIGNvbW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAoZW9scCkp ICAgICAgICAgICAgICAgIDs7IG9yIGVuZC1vZi1saW5lCiAgICAgICAgICAgICAgICAgICAocHJv Z24gICAgICAgICAgICAgICAgICAgICA7OyBpbmRlbnQgbm9ybWFsbHkKICAgICAgICAgICAgICAg ICAgICAgKGJhY2stdG8taW5kZW50YXRpb24pCiAgICAgICAgICAgICAgICAgICAgICgrIChjdXJy ZW50LWNvbHVtbikKICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1iYXNpYy1vZmZzZXQp KQogICAgICAgICAgICAgICAgIChpZiAoc2FmZS1jaGFyPSBjID9cKSkgICAgICAgOzsgbGVhdmUg YXQgc2FtZSBjb2x1bW4gYXMgbm9uLWNvbW1lbnQgY2hhcgogICAgICAgICAgICAgICAgICAgICAo cHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHBhcmVubG9jKQogICAgICAg ICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpCiAgICAgICAgICAgICAgICAgICAoY3Vy cmVudC1jb2x1bW4pKSkpKSkpCgogICAgICAgKDs7IEluc2lkZSBbIF0KCShzYWZlLWNoYXI9IChj aGFyLWFmdGVyKSA/XFspCiAgICAgICAgKHByb2duCiAgICAgICAgICAoZm9yd2FyZC1jaGFyIDEp CiAgICAgICAgICAoc2tpcC1jaGFycy1mb3J3YXJkICIgXHQiKSAgICAgOzsgbW92ZSBwb3NpdGlv biB0byBlbmQgb2Ygd2hpdGVzcGFjZQogICAgICAgICAgKGlmIChvciAobG9va2luZy1hdCAiLy9c XHwtLSIpIDs7IGVpdGhlciBjb21tZW50CiAgICAgICAgICAgICAgICAgIChlb2xwKSkgICAgICAg ICAgICAgICAgOzsgb3IgZW5kLW9mLWxpbmUKICAgICAgICAgICAgICAocHJvZ24gICAgICAgICAg ICAgICAgICAgICA7OyBpbmRlbnQgbm9ybWFsbHkKICAgICAgICAgICAgICAgIChnb3RvLWNoYXIg KHNwZWNtYW4tYmVnLW9mLXN0YXRlbWVudCB0KSkKICAgICAgICAgICAgICAgIChpZiAoc2FmZS1j aGFyPSBjID9cXSkKICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pCiAgICAgICAg ICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICgrIChjdXJyZW50LWNvbHVtbikg CiAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1iYXNpYy1vZmZzZXQpKSkpCiAgICAgICAg ICAgIChpZiAoc2FmZS1jaGFyPSBjID9cXSkgICAgICAgOzsgbGVhdmUgYXQgc2FtZSBjb2x1bW4g YXMgbm9uLWNvbW1lbnQgY2hhcgogICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAg ICAgIChnb3RvLWNoYXIgcGFyZW5sb2MpCiAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVt bikpCiAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkpKQogICAgICAgICkKCiAgICAgICAo OzsgbmV3IHN0YXRlbWVudAogICAgICAgIDs7IC0gd29ya3MgYmVjYXVzZSB0aGUgc2NvcGUgc2Vh cmNoIGFsd2F5cyBnb2VzIHRvIHRoZSBidWZmZXIKICAgICAgICA7OyAgIHN0YXJ0IGluIHRoaXMg Y2FzZQogICAgICAgIChlcXVhbCAocG9pbnQpCiAgICAgICAgICAgICAgIChwb2ludC1taW4pKQoK ICAgICAgICAobGV0KiAoKGJlZy1hZnRlci1sYXN0LXRlcm1pbmF0aW9uCiAgICAgICAgICAgICAg ICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBiZWctb2YtbGlu ZSkKICAgICAgICAgICAgICAgICAgKG9yIChzcGVjbWFuLXJlLXNlYXJjaC1iYWNrd2FyZCAiOyIg cGFyZW5sb2MgdCB0KQogICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBwYXJlbmxvYykp CiAgICAgICAgICAgICAgICAgIChlbmQtb2YtbGluZSkKICAgICAgICAgICAgICAgICAgKHNwZWNt YW4tZm9yd2FyZC13cykKICAgICAgICAgICAgICAgICAgKHBvaW50KSkpCiAgICAgICAgICAgICAg IChjb250aW51aW5nLWxpbmUtb2Zmc2V0CiAgICAgICAgICAgICAgICAoaWYgKDw9IGJlZy1vZi1s aW5lCiAgICAgICAgICAgICAgICAgICAgICAgIGJlZy1hZnRlci1sYXN0LXRlcm1pbmF0aW9uKSAg Ozsgbm90IGJlZm9yZSBjdXJyZW50CiAgICAgICAgICAgICAgICAgICAgMCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgOzsgbGVhdmUgYXMgaXMKICAgICAgICAgICAgICAgIHNwZWNtYW4t Y29udGludWVkLWxpbmUtb2Zmc2V0KSkgICAgICA7OyBpbmRlbnQgYXMgbm9uLXRlcm1pbmF0ZWQK ICAgICAgICAgICAgICAgKQoKICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgKCsg KGN1cnJlbnQtY29sdW1uKQogICAgICAgICAgIGNvbnRpbnVpbmctbGluZS1vZmZzZXQpKQogICAg ICAgICkKICAgICAgIAogICAgICAgKDs7IEV2ZXJ5dGhpbmcgZWxzZQoJdAogICAgICAgIAoJKGN1 cnJlbnQtY29sdW1uKQogICAgICAgICkKICAgICAgICkKICAgICAgKQogICAgKQogICkKCihkZWZ1 biBzcGVjbWFuLWdldC1vZmZzZXQgKCZvcHRpb25hbCB3aXRoaW4tY29kZS1yZWdpb24KICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dC1vZi1zdHJpbmctcXVvdGVzKQogIChs ZXQgKHBvcwogICAgICAgICkKICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAoYmVnaW5uaW5nLW9m LWxpbmUpCiAgICAgIAogICAgICAoY29uZAogICAgICAgKDs7IGxpbmUgd2l0aGluIHN0cmluZwog ICAgICAgIDs7IC0gb3V0LW9mLXN0cmluZy1xdW90ZXMgaXMgYW4gb3B0aW1pemF0aW9uIHRvIG1h a2Ugc3VyZSB0aGF0CiAgICAgICAgOzsgICBzcGVjbWFuLWxpbmUtd2l0aGluLXN0cmluZy1wIGlz bid0IGNhbGxlZCBtb3JlIHRoYW4gb25jZSwKICAgICAgICA7OyAgIGFzIGl0IGlzIGV4cGVuc2l2 ZS4KICAgICAgICAoYW5kIChub3Qgb3V0LW9mLXN0cmluZy1xdW90ZXMpCiAgICAgICAgICAgICAo c3BlY21hbi1saW5lLXdpdGhpbi1zdHJpbmctcCkpCiAgICAgICAgCiAgICAgICAgMAogICAgICAg ICkKICAgICAgICAKICAgICAgICg7OyBzY29wZSBzdGFydGVyL2Nsb3NlcgogICAgICAgIChzYXZl LWV4Y3Vyc2lvbgogICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAgICAgKGxvb2tp bmctYXQgIl5bIFx0XSpcXCg/Oic+XFx8PCdcXCkiKSkKCiAgICAgICAgMAogICAgICAgICkKCiAg ICAgICAoOzsgc2VhcmNoIGZvciByZWxldmFudCBzY29wZQogICAgICAgIChzYXZlLWV4Y3Vyc2lv bgogICAgICAgICAgKHNwZWNtYW4tcmUtc2VhcmNoLWJhY2t3YXJkICJcXChcXFtcXClcXHxcXChb XSgpe31dXFwpIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4 Y3Vyc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4t YmVnLW9mLWRlZnVuIHdpdGhpbi1jb2RlLXJlZ2lvbikpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp dGhpbi1jb2RlLXJlZ2lvbikpCgogICAgICAgIChjb25kCiAgICAgICAgICg7OyB3aXRoaW4gc3F1 YXJlIGJyYWNrZXRzCiAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5nIDEpCiAgICAgICAgICAKICAg ICAgICAgIChzcGVjbWFuLXNjb3BlLW9mZnNldCAobWF0Y2gtYmVnaW5uaW5nIDEpKQogICAgICAg ICAgKQogICAgICAgICAKICAgICAgICAgKDs7IGNoZWNrIGlmIHdpdGhpbiBwYXJlbgogICAgICAg ICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgIChzZXRxIHBvcyAoc3BlY21hbi11cC1saXN0 IHdpdGhpbi1jb2RlLXJlZ2lvbikpKQogICAgICAgICAgCiAgICAgICAgICAoc3BlY21hbi1zY29w ZS1vZmZzZXQgcG9zKQogICAgICAgICAgKQogICAgICAgICAKICAgICAgICAgKDs7IGZpbmQgc2Nv cGUgc3RhcnQgLSBjb21tb24gY2FzZS4KICAgICAgICAgIDs7IGFsd2F5cyBtYXRjaGVzIGJlY2F1 c2Ugc3BlY21hbi11cC1zY29wZSBuZXZlciByZXR1cm5zIG5pbAogICAgICAgICAgKHNhdmUtZXhj dXJzaW9uCiAgICAgICAgICAgIChzZXRxIHBvcyAoc3BlY21hbi11cC1zY29wZSB3aXRoaW4tY29k ZS1yZWdpb24pKSkKICAgICAgICAKICAgICAgICAgIChzcGVjbWFuLXNjb3BlLW9mZnNldCBwb3Mp CiAgICAgICAgICApCiAgICAgICAgICkKICAgICAgICApCgogICAgICAgKDs7IGNvcm5lciBjYXNl IC0gbm90IHdpdGhpbiBhbnkgc2NvcGUKICAgICAgICB0CgogICAgICAgIDAKICAgICAgICApCiAg ICAgICApCiAgICAgICkKICAgICkKICApCiAgICAgICAKCjs7ID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsgU1BFQ01BTiAtIEFVVE8gRU5EQ09NTUVO VFMKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoK KGRlZnVuIHNwZWNtYW4tcmVtb3ZlLWVuY2Fwc3VsYXRpb24gKHN0cikKICAiUmVtb3ZlIGVuY2Fw c3VsYXRpb24ga2V5d29yZCBmcm9tIHN0YXJ0IG9mIHN0cmluZyIKICAoaWYgKHN0cmluZy1tYXRj aCAiXlsgXHRcbl0qXFwocHJpdmF0ZVxcfHBhY2thZ2VcXHxwcm90ZWN0ZWRcXClbIFx0XG5dKyIg c3RyKQoJICAocmVwbGFjZS1tYXRjaCAiIiB0IHQgc3RyIG5pbCkKCXN0cikKICApCgo7OyBDYWxs IHRoaXMgb25seSBhZnRlciBjYWxsaW5nIHNwZWNtYW4tcmVtb3ZlLWVuY2Fwc3VsYXRpb24oKQoo ZGVmdW4gc3BlY21hbi1mb3JtYXQtbWV0aG9kLWNvbW1lbnQgKHN0cikKICAiRm9ybWF0IG1ldGhv ZCBjb21tZW50IC0gcmVtb3ZlIHBhcmFtZXRlciBsaXN0IGFuZCBsb25lbHkgaXMiCiAgKGxldCAo bWV0aG9kLW5hbWUKCQkoaXMtcGFydC1yZWdleHAgIlxcKGlzXFwoPzpbIFx0XG5dK1xcKGFsc29c XHxvbmx5XFx8Zmlyc3RcXHxpbmxpbmVbIFx0XG5dK29ubHlcXHxpbmxpbmVcXClcXCk/XFwpIikK CQlpcy13aGF0KQoJKHN0cmluZy1tYXRjaCAoY29uY2F0ICJcXChbYS16QS1aMC05X10rXFwpLioi IGlzLXBhcnQtcmVnZXhwKSBzdHIpCgkoc2V0cSAKCSBtZXRob2QtbmFtZSAoY29uY2F0IChtYXRj aC1zdHJpbmcgMSBzdHIpICIoKSIpCgkgaXMtd2hhdCAobWF0Y2gtc3RyaW5nIDMgc3RyKSkKCgko aWYgaXMtd2hhdAoJCShjb25jYXQgbWV0aG9kLW5hbWUgIiBpcyAiIGlzLXdoYXQpCgkgIG1ldGhv ZC1uYW1lKSkKICApCgooZGVmdW4gc3BlY21hbi1raWxsLWxpbmUtY29tbWVudCAoKQogICJLaWxs IGxpbmUgY29tbWVudCAoLy98LS0pIG9uIHRoaXMgbGluZSwgZWxzZSByZXR1cm4gbmlsLiIKICAo c2F2ZS1leGN1cnNpb24KICAgIChlbmQtb2YtbGluZSkKICAgIChsZXQgKChjb21tZW50LXN0YXJ0 CiAgICAgICAgICAgKHNwZWNtYW4td2l0aGluLWxpbmUtY29tbWVudC1wKSkKICAgICAgICAgICkK ICAgICAgKHdoZW4gY29tbWVudC1zdGFydAogICAgICAgIChnb3RvLWNoYXIgY29tbWVudC1zdGFy dCkKICAgICAgICAoZGVsZXRlLXJlZ2lvbiBjb21tZW50LXN0YXJ0IChzcGVjbWFuLWVuZC1vZi1s aW5lLXBvcykpCiAgICAgICAgKGRlbGV0ZS1ob3Jpem9udGFsLXNwYWNlKQogICAgICAgIHQpKSkp CgooZGVmdW4gc3BlY21hbi1pbnNlcnQtYXV0by1lbmRjb21tZW50ICgmb3B0aW9uYWwga2lsbC1l eGlzdGluZy1jb21tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBza2lwLXNjb3BlLWNsb3Nlci1jaGVjaykKICAiQWRkIGVuZGluZyBjb21tZW50IGFm dGVyIGEgfTsgaW5kaWNhdGluZyB3aGF0IGJsb2NrIGlzIHRoZXJlYnkgY2xvc2VkLgotIFdpdGgg S0lMTC1FWElTVElORy1DT01NRU5ULCByZW1vdmUgd2hhdCB3YXMgdGhlcmUgYmVmb3JlLgotIFdp dGggU0tJUC1TQ09QRS1DTE9TRVItQ0hFQ0ssIHNraXAgdGhlIGNoZWNrLiIKICAoaW50ZXJhY3Rp dmUpCgogIChzYXZlLWV4Y3Vyc2lvbgogICAgKHdoZW4gKGFuZCAob3Igc2tpcC1zY29wZS1jbG9z ZXItY2hlY2sKICAgICAgICAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgICAgICAgICAo YmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLXJlLXNlYXJj aC1mb3J3YXJkICJ9OyIgKHNwZWNtYW4tZW5kLW9mLWxpbmUtcG9zKSB0KSkpCiAgICAgICAgICAg ICAgIChvciBraWxsLWV4aXN0aW5nLWNvbW1lbnQKICAgICAgICAgICAgICAgICAgIChzYXZlLWV4 Y3Vyc2lvbgogICAgICAgICAgICAgICAgICAgICAoZW5kLW9mLWxpbmUpCiAgICAgICAgICAgICAg ICAgICAgIChub3QgKHNwZWNtYW4td2l0aGluLWNvbW1lbnQtcCkpKSkpCiAgICAgIAogICAgICAo bGV0ICgoY29udGFpbmVyLW5hbWUtcmVnZXhwCiAgICAgICAgICAgICAKICAgICAgICAgICAgIHNw ZWNtYW4tY29udGFpbmVyLXNjb3BlLWRlZmluaXRpb24tcmVnZXhwCiAgICAgICAgICAgICApCiAg ICAgICAgICAgIChza2lwCiAgICAgICAgICAgICAKICAgICAgICAgICAgIG5pbAogICAgICAgICAg ICAgKQogICAgICAgICAgICBzdHIKICAgICAgICAgICAgc2NvcGUtc3RhcnQKICAgICAgICAgICAg Y29uc3RydWN0LXR5cGUKCQkJKQogICAgICAgIAogICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAg ICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAgICAgKHNwZWNtYW4tdXAtc2NvcGUpCiAg ICAgICAgICAoc2V0cSBzY29wZS1zdGFydCAocG9pbnQpKQogICAgICAgICAgKGdvdG8tY2hhciAo c3BlY21hbi1iZWctb2Ytc3RhdGVtZW50KSkKCiAgICAgICAgICAoc2V0cSBzdHIKICAgICAgICAg ICAgICAgIChjb25kIAogICAgICAgICAgICAgICAgICg7OyBtZXRob2QKICAgICAgICAgICAgICAg ICAgKGxvb2tpbmctYXQgc3BlY21hbi1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHApCiAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAobGV0ICgoYmVnIChtYXRjaC1iZWdpbm5pbmcg MCkpCiAgICAgICAgICAgICAgICAgICAgICAgIChlbmQgKG1hdGNoLWVuZCAwKSkKICAgICAgICAg ICAgICAgICAgICAgICAgKQoJCQkJCShzZXRxIGNvbnN0cnVjdC10eXBlICJtZXRob2QiKQogICAg ICAgICAgICAgICAgICAgIChzcGVjbWFuLXByZXBhcmVkLWJ1ZmZlci1zdWJzdHJpbmcgYmVnIGVu ZCkpCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAoOzsgb24gZXZlbnQKCQkJ CSAgKGxvb2tpbmctYXQgc3BlY21hbi1vbi1ldmVudC1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHAp CiAgICAgICAgICAgICAgICAgIChsZXQgKChiZWcgKG1hdGNoLWJlZ2lubmluZyAwKSkKICAgICAg ICAgICAgICAgICAgICAgICAgKGVuZCAobWF0Y2gtZW5kIDApKQogICAgICAgICAgICAgICAgICAg ICAgICApCgkJCQkJKHNldHEgY29uc3RydWN0LXR5cGUgImV2ZW50IikKICAgICAgICAgICAgICAg ICAgICAoc3BlY21hbi1wcmVwYXJlZC1idWZmZXItc3Vic3RyaW5nIGJlZyBlbmQpKQoJCQkJICAp CgoJCQkJICg7OyBzdHJ1Y3QsIGV4dGVuZCwgdW5pdCwgZGVmaW5lCiAgICAgICAgICAgICAgICAg IChsb29raW5nLWF0IGNvbnRhaW5lci1uYW1lLXJlZ2V4cCkKICAgICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAgICAgIChsZXQgKChiZWcgKG1hdGNoLWJlZ2lubmluZyAwKSkKICAgICAgICAg ICAgICAgICAgICAgICAgKGVuZCAobWF0Y2gtZW5kIDApKQogICAgICAgICAgICAgICAgICAgICAg ICApCgkJCQkJKHNldHEgY29uc3RydWN0LXR5cGUgImNvbnRhaW5lciIpCiAgICAgICAgICAgICAg ICAgICAgKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmluZyBiZWcgZW5kKSkKICAgICAg ICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICg7OyBzdG9wIGlmIG1ham9yIHNjb3BlcyBv bmx5CiAgICAgICAgICAgICAgICAgIHNwZWNtYW4tYXV0by1lbmRjb21tZW50cy1mb3ItbWFqb3It c2NvcGVzLW9ubHkKICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIChzZXRxIHNr aXAgdCkKICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICg7OyBlbHNlIGNsYXVz ZQogICAgICAgICAgICAgICAgICAobG9va2luZy1hdCAifVsgXHRcbl0qZWxzZSIpCiAgICAgICAg ICAgICAgICAgIAogICAgICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgICAgICAo Z290by1jaGFyIChtYXRjaC1iZWdpbm5pbmcgMCkpCiAgICAgICAgICAgICAgICAgICAgKHNwZWNt YW4tdXAtc2NvcGUgdCkKICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAo bGV0ICgoZGVmaW5lLWVuZC1wb2ludCAocG9pbnQpKQogICAgICAgICAgICAgICAgICAgICAgICAg ICkKICAgICAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgKHNwZWNtYW4tYmVnLW9mLXN0YXRl bWVudCkpCiAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICIhICIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmluZyAocG9pbnQp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZGVmaW5lLWVuZC1wb2ludCkpKSkKICAgICAgICAgICAgICAgICAgKQogICAgICAg ICAgICAgICAgICg7OyBhbnkgc2NvcGUKICAgICAgICAgICAgICAgICAgdAogICAgICAgICAgICAg ICAgICAKICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmlu ZyAocG9pbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2NvcGUtc3RhcnQpCiAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAp CiAgICAgICAgICAgICAgICApKQogICAgICAgIAoJCSh1bmxlc3Mgc2tpcAoJCSAgKGlmIGNvbnN0 cnVjdC10eXBlCgkJCSAgKHNldHEgc3RyIChzcGVjbWFuLXJlbW92ZS1lbmNhcHN1bGF0aW9uIHN0 cikpKQoJCSAgKGlmIChzdHJpbmc9IGNvbnN0cnVjdC10eXBlICJtZXRob2QiKQoJCQkgIChzZXRx IHN0ciAoc3BlY21hbi1mb3JtYXQtbWV0aG9kLWNvbW1lbnQgc3RyKSkpCgkJICAoZW5kLW9mLWxp bmUpCiAgICAgICAgICAod2hlbiBraWxsLWV4aXN0aW5nLWNvbW1lbnQKICAgICAgICAgICAgKHNw ZWNtYW4ta2lsbC1saW5lLWNvbW1lbnQpKQoJCSAgOyhtZXNzYWdlICJzdHIgPSBcIiVzXCIiIHN0 cikKICAgICAgICAgIChpbnNlcnQgKGNvbmNhdAogICAgICAgICAgICAgICAgICAgIiAtLSAiCiAg ICAgICAgICAgICAgICAgICAoaWYgKD4gKGxlbmd0aCBzdHIpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgMzApCiAgICAgICAgICAgICAgICAgICAgICAgKGNvbmNhdCAoc3Vic3RyaW5nIHN0ciAw IDMwICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIuLi4iICkKICAgICAgICAgICAg ICAgICAgICAgc3RyKSkpKQogICAgICAgICkpKSkKCihkZWZ1biBzcGVjbWFuLWVsZWN0cmljLXNl bWljb2xvbiAoKQogICJJbnNlcnQgYDsnIGNoYXJhY3RlciBhbmQgcmVpbmRlbnQgdGhlIGxpbmUg KHVzaW5nIGxhc3QtY29tbWFuZC1jaGFyIC0KIHRoZSBhY3RpdmF0aW5nIGtleSwgYDsnIGluIHRo aXMgY2FzZSkuIgogIChpbnRlcmFjdGl2ZSkKCiAgKGxldCAoKGxhc3QtY2hhciAoY2hhci1iZWZv cmUpKSkKCShpbnNlcnQgIjsiKSA7IERvbid0IHVzZSBsYXN0LWNvbW1hbmQtY2hhciwgY2F1c2Ug dGhpcyBmdW5jdGlvbiBtYXkgYmUgY2FsbGVkIGZyb20gYW5vdGhlciBmdW5jdGlvbgogIAkod2hl biAoYW5kIHNwZWNtYW4tYXV0by1lbmRjb21tZW50cwoJCQkgICAoc2FmZS1jaGFyPSBsYXN0LWNo YXIgP1x9ICkKCQkJICAgKG5vdCAoc3BlY21hbi13aXRoaW4tc3RyaW5nLXApKQoJCQkgICAobm90 IChzcGVjbWFuLXdpdGhpbi1jb21tZW50LXApKSkKCSAgCgkgIChzcGVjbWFuLWluc2VydC1hdXRv LWVuZGNvbW1lbnQgdCB0KSkKCSkgOyBsZXQKCiAgOzsgVE9ETzogaXMgdGhpcyB3cm9uZyB3aGVu IGluc2lkZSBhIGNvbW1lbnQ/CiAgKHNwZWNtYW4taW5kZW50LWxpbmUpCiAgKGVuZC1vZi1saW5l KQogICh3aGVuIHNwZWNtYW4tYXV0by1uZXdsaW5lCiAgICAoZGVsZXRlLWhvcml6b250YWwtc3Bh Y2UpCiAgICAobmV3bGluZS1hbmQtaW5kZW50KSkpCgooZGVmdW4gc3BlY21hbi1yZWRvLWVuZGNv bW1lbnRzICgpCiAgIlJlbGFiZWwgYWxsICd9OycgdG9rZW5zIGluIHRoZSBidWZmZXIgd2l0aCB0 aGUgcmVhc29uIGZvciB0aGUgc2NvcGUuIgogIChpbnRlcmFjdGl2ZSkKICAKICAoc3BlY21hbi1y ZWRvLWVuZGNvbW1lbnRzLWludGVybmFsIChwb2ludC1taW4tbWFya2VyKQogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHBvaW50LW1heC1tYXJrZXIpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzcGVjbWFuLWF1dG8tZW5kY29tbWVudHMta2lsbC1leGlz dGluZy1jb21tZW50KSkKCihkZWZ1biBzcGVjbWFuLXJlZG8tZW5kY29tbWVudHMtZm9yLXJlZ2lv biAoYmVnIGVuZCkKICAiUmVsYWJlbCBhbGwgJ307JyB0b2tlbnMgaW4gdGhlIGdpdmVuIHJlZ2lv biB3aXRoIHRoZSByZWFzb24gZm9yIHRoZSBzY29wZS4iCiAgKGludGVyYWN0aXZlICJyIikKICAK ICAoc3BlY21hbi1yZWRvLWVuZGNvbW1lbnRzLWludGVybmFsIGJlZwogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcGVjbWFuLWF1dG8tZW5kY29tbWVudHMta2lsbC1leGlzdGluZy1jb21tZW50KSkKCihk ZWZ1biBzcGVjbWFuLXJlZG8tZW5kY29tbWVudHMtaW50ZXJuYWwgKGJlZwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgJm9wdGlvbmFsIGtpbGwtZXhpc3RpbmctZW5kLWNvbW1lbnQpCiAg IlJlbGFiZWwgYWxsICd9OycgdG9rZW5zIGluIHRoZSByZWdpb24gd2l0aCB0aGUgcmVhc29uIGZv ciB0aGUgc2NvcGUuCldpdGggS0lMTC1FWElTVElORy1FTkQtQ09NTUVOVCwgZmlyc3Qga2lsbCBh bnkgZXhpc3RpbmcgbGFiZWxzLiIKCiAgKGxldCAoKGNvdW50ZXIKICAgICAgICAgMCkKICAgICAg ICAKICAgICAgICAob2xkcG9zCiAgICAgICAgIChwb2ludCkpCiAgICAgICAgKQogICAgCiAgICAo Z290by1jaGFyIGJlZykKICAgIAogICAgKGlmICg+ICgtIGVuZCBiZWcpCiAgICAgICAgICAgMjAw KQogICAgICAgIChtZXNzYWdlICJSZWRvaW5nIGVuZC1jb21tZW50cyIpKQoKICAgIChzcGVjbWFu LXNraXAtZm9yd2FyZC1jb21tZW50LW9yLXN0cmluZykKICAgIChzZXRxIGNvdW50ZXIKICAgICAg ICAgIChjb3VudC1saW5lcyBiZWcgKHBvaW50KSkpCiAgICAKICAgICh3aGlsZSAoYW5kICg+IGVu ZCAocG9pbnQpKQogICAgICAgICAgICAgICAgKHNwZWNtYW4tcmUtc2VhcmNoLWZvcndhcmQgIn07 IiBuaWwgdCB0KSkKICAgICAgKHNwZWNtYW4taW5zZXJ0LWF1dG8tZW5kY29tbWVudCBraWxsLWV4 aXN0aW5nLWVuZC1jb21tZW50KQogICAgICAoc2V0cSBjb3VudGVyICgxKyBjb3VudGVyKSkKICAg ICAgKGlmICg9IDAgKCUgY291bnRlciAxMCkpCiAgICAgICAgICAobWVzc2FnZSAiJWQgbGluZXMg YXV0b2NvbW1lbnRlZCIgY291bnRlcikpKQogICAgCiAgICAoZ290by1jaGFyIG9sZHBvcykKICAg IAogICAgKG1lc3NhZ2UgICIlZCBsaW5lcyBhdXRvY29tbWVudGVkIiBjb3VudGVyKQogICAgKSkK Cjs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsg U1BFQ01BTiAtIElOU0VSVCBTUEVDSUFMIENIQVJTCjs7ID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KCihkZWZ1biBzcGVjbWFuLWluc2VydC1uZXdsaW5l ICgpCiAgIkluc2VydCBuZXdsaW5lIGFuZCBpbmRlbnQuIgogIChpbnRlcmFjdGl2ZSkKICAobmV3 bGluZSkKICAoc3BlY21hbi1pbmRlbnQtbGluZSkpCgooZGVmdW4gc3BlY21hbi1hY3RpdmF0ZS1p bmRlbnQgKCkKICAiSnVzdCBpbmRlbnQgbGluZSBhbmQgZ28gdG8gaXRzIGJlZ2lubmluZy4iCiAg KGludGVyYWN0aXZlKQogIChzcGVjbWFuLWluZGVudC1saW5lKQogIChiYWNrLXRvLWluZGVudGF0 aW9uKSkKCihkZWZ1biBzcGVjbWFuLWluc2VydC1jdXJseS1vcGVuZXIgKCkKICAiSW5zZXJ0IHsg YW5kIGluZGVudC4iCiAgKGludGVyYWN0aXZlKQogIChpbnNlcnQgInsiKQogIChzcGVjbWFuLWlu ZGVudC1saW5lLWtlZXAtcG9zKQogICkKCihkZWZ1biBzcGVjbWFuLWluc2VydC1jdXJseS1jbG9z ZXIgKCkKICAiSW5zZXJ0IH0gYW5kIGluZGVudC4iCiAgKGludGVyYWN0aXZlKQogIChpbnNlcnQg In0iKQogIChzcGVjbWFuLWluZGVudC1saW5lLWtlZXAtcG9zKQogICkKCihkZWZ1biBzcGVjbWFu LWluc2VydC1taW51cyAoKQogICJJbnNlcnQgLSBhbmQgaW5kZW50LiIKICAoaW50ZXJhY3RpdmUp CiAgKGluc2VydCAiLSIpCiAgKHNwZWNtYW4taW5kZW50LWxpbmUta2VlcC1wb3MpCiAgKQoKKGRl ZnVuIHNwZWNtYW4taW5zZXJ0LXNsYXNoICgpCiAgIkluc2VydCAvIGFuZCBpbmRlbnQuIgogIChp bnRlcmFjdGl2ZSkKICAoaW5zZXJ0ICIvIikKICAoc3BlY21hbi1pbmRlbnQtbGluZS1rZWVwLXBv cykKICApCgooZGVmdW4gc3BlY21hbi1pbnNlcnQtcGFyZW5zLW9wZW5lciAoKQogICJJbnNlcnQg KCBhbmQgaW5kZW50LiIKICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydCAiKCIpCiAgKHNwZWNtYW4t aW5kZW50LWxpbmUta2VlcC1wb3MpCiAgKQoKKGRlZnVuIHNwZWNtYW4taW5zZXJ0LXBhcmVucy1j bG9zZXIgKCkKICAiSW5zZXJ0ICkgYW5kIGluZGVudC4iCiAgKGludGVyYWN0aXZlKQogIChpbnNl cnQgIikiKQogIChzcGVjbWFuLWluZGVudC1saW5lLWtlZXAtcG9zKQogICkKCihkZWZ1biBzcGVj bWFuLWluc2VydC1icmFja2V0LW9wZW5lciAoKQogICJJbnNlcnQgWyBhbmQgaW5kZW50LiIKICAo aW50ZXJhY3RpdmUpCiAgKGluc2VydCAiWyIpCiAgKHNwZWNtYW4taW5kZW50LWxpbmUta2VlcC1w b3MpCiAgKQoKKGRlZnVuIHNwZWNtYW4taW5zZXJ0LWJyYWNrZXQtY2xvc2VyICgpCiAgIkluc2Vy dCBdIGFuZCBpbmRlbnQuIgogIChpbnRlcmFjdGl2ZSkKICAoaW5zZXJ0ICJdIikKICAoc3BlY21h bi1pbmRlbnQtbGluZS1rZWVwLXBvcykKICApCgooZGVmdW4gc3BlY21hbi1pbnNlcnQtdGljayAo KQogICJJbnNlcnQgJyBhbmQgaW5kZW50LiIKICAoaW50ZXJhY3RpdmUpCiAgKGluc2VydCAiJyIp CiAgKHNwZWNtYW4taW5kZW50LWxpbmUta2VlcC1wb3MpCiAgKQoKKGRlZnVuIHNwZWNtYW4taW5z ZXJ0LWx0ICgpCiAgIkluc2VydCA8IGFuZCBpbmRlbnQuIgogIChpbnRlcmFjdGl2ZSkKICAoaW5z ZXJ0ICI8IikKICAoc3BlY21hbi1pbmRlbnQtbGluZS1rZWVwLXBvcykKICApCgooZGVmdW4gc3Bl Y21hbi1pbnNlcnQtZ3QgKCkKICAiSW5zZXJ0ID4gYW5kIGluZGVudC4iCiAgKGludGVyYWN0aXZl KQogIChpbnNlcnQgIj4iKQogIChzcGVjbWFuLWluZGVudC1saW5lLWtlZXAtcG9zKQogICkKCihk ZWZ1biBzcGVjbWFuLXlhbmsgKCkKICAiWWFuayAocGFzdGUpIGFuZCBpbmRlbnQiCiAgKGludGVy YWN0aXZlKQogIDs7IE5lZWQgdGhpcyBiZWNhdXNlIG9mIGJ1ZyBpbiBlbWFjczogd2hlbiBhbm90 aGVyIGZ1bmN0aW9uIGNhbGxzCiAgOzsgeWFuay1jbGlwYm9hcmQtc2VsZWN0aW9uIGl0IGRvZXMg bm90IG92ZXJ3cml0ZSBzZWxlY3RlZCB0ZXh0LCBidXQgd2hlbiBpdAogIDs7IGlzIGludm9rZWQg YnkgYSBrZXkgY29tbWFuZCBpdCBkb2VzLgogIChpZiAoc2VsZWN0aW9uLW93bmVyLXApCgkgIChk ZWxldGUtcHJpbWFyeS1zZWxlY3Rpb24pKQoKICAoc2V0cSBzdGFydCAobGluZS1udW1iZXIpKQog ICh5YW5rLWNsaXBib2FyZC1zZWxlY3Rpb24pCiAgKHNldHEgZW5kIChsaW5lLW51bWJlcikpCiAg KHNhdmUtZXhjdXJzaW9uCgkoZ290by1saW5lIHN0YXJ0KQoJKHdoaWxlICg8PSAobGluZS1udW1i ZXIpIGVuZCkKCSAgKHNwZWNtYW4tYWN0aXZhdGUtaW5kZW50KQoJICAoZm9yd2FyZC1saW5lIDEp KQoJKQogICkKCgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo7OyAgU2NvcGUgUXVlcmllcwo7OyAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21hbi1kZXNjcmliZS1jb250ZXh0ICgpCiAg IlNob3cgdGhlIHN0cnVjdCBhbmQgbWV0aG9kIHNjb3BlIChhcyBhcHBsaWNhYmxlKSBvZiB0aGUg Y3VycmVudCBjdXJzb3IKIHBvc2l0aW9uIgogIChpbnRlcmFjdGl2ZSkKCiAgKGxldCAoKG1ldGhv ZC1uYW1lLXJlZ2V4cAogICAgICAgICAoY29uY2F0ICJcXCg/OiIKICAgICAgICAgICAgICAgICBz cGVjbWFuLW1ldGhvZC1kZWZpbml0aW9uLXJlZ2V4cAogICAgICAgICAgICAgICAgICJcXHwiCiAg ICAgICAgICAgICAgICAgc3BlY21hbi1vbi1ldmVudC1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHAK ICAgICAgICAgICAgICAgICAiXFwpIikpCiAgICAgICAgKGNvbnRhaW5lci1uYW1lLXJlZ2V4cAog ICAgICAgICBzcGVjbWFuLWNvbnRhaW5lci1zY29wZS1kZWZpbml0aW9uLXJlZ2V4cCkKICAgICAg ICAoZGVzY3JpcHRpb24tbGlzdAogICAgICAgICBuaWwpCiAgICAgICAgKQoKICAgIChzYXZlLWV4 Y3Vyc2lvbgogICAgICAoc3BlY21hbi11cC1zY29wZSkKICAgICAgCiAgICAgICh3aGlsZSAoPiAo cG9pbnQpIChwb2ludC1taW4pKQogICAgICAgIAogICAgICAgIChnb3RvLWNoYXIgKHNwZWNtYW4t YmVnLW9mLXN0YXRlbWVudCB0KSkKICAgICAgICAKICAgICAgICAoY29uZAogICAgICAgICAoKGxv b2tpbmctYXQgY29udGFpbmVyLW5hbWUtcmVnZXhwKQogICAgICAgICAgCiAgICAgICAgICAocHVz aCAoc3BlY21hbi1wcmVwYXJlZC1idWZmZXItc3Vic3RyaW5nIChtYXRjaC1iZWdpbm5pbmcgMSkK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNo LWVuZCAxKSkKICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uLWxpc3QpCiAgICAgICAgICApCiAg ICAgICAgICgobG9va2luZy1hdCBtZXRob2QtbmFtZS1yZWdleHApCiAgICAgICAgICAKICAgICAg ICAgIChpZiAobG9va2luZy1hdCBzcGVjbWFuLW1ldGhvZC1kZWZpbml0aW9uLXJlZ2V4cCkKICAg ICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgIChiYWNrLXRvLWluZGVudGF0aW9uKQog ICAgICAgICAgICAgICAgKHB1c2ggKGNvbmNhdAogICAgICAgICAgICAgICAgICAgICAgICJtZXRo b2QgIgogICAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLXByZXBhcmVkLWJ1ZmZlci1zdWJz dHJpbmcgKG1hdGNoLWJlZ2lubmluZyAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1hdGNoLWVuZCAxKSkpCiAgICAgICAgICAgICAg ICAgICAgICBkZXNjcmlwdGlvbi1saXN0KSkKICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAg IChiYWNrLXRvLWluZGVudGF0aW9uKQogICAgICAgICAgICAoYXNzZXJ0IChsb29raW5nLWF0IHNw ZWNtYW4tb24tZXZlbnQtbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwKSkKICAgICAgICAgICAgKHB1 c2ggKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmluZyAobWF0Y2gtYmVnaW5uaW5nIDEp CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG1h dGNoLWVuZCAxKSkKICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb24tbGlzdCkpKQogICAgICAg ICAgKQogICAgICAgICApCiAgICAgICAgKHNwZWNtYW4tdXAtc2NvcGUgdCkKICAgICAgICApCiAg ICAgIAogICAgICAoaWYgZGVzY3JpcHRpb24tbGlzdAogICAgICAgICAgKG1lc3NhZ2UgKG1hcGNv bmNhdCAnaWRlbnRpdHkgZGVzY3JpcHRpb24tbGlzdCAiIC8gIikpCiAgICAgICAgKG1lc3NhZ2Ug Ik5vdCB3aXRoaW4gYW55IHJlbGV2YW50IHNjb3BlIikpCiAgICAgICkpKQoKCjstLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0tLQo7OyAgQ29kZSBGb3JtYXR0aW5nCjstLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0t LQoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKGRlZnVuIHNwZWNtYW4tY29tbWVudC1saW5lLXct bWludXMgKCkKICAiSW5zZXJ0IGEgLS0gY29tbWVudCBiZWZvcmUgdGhlIGN1cnJlbnQgbGluZSBh bmQgcmVpbmRlbnQgaXQuIgogIChpbnRlcmFjdGl2ZSkKCiAgKGluZGVudC1hY2NvcmRpbmctdG8t bW9kZSkKICAoYmFjay10by1pbmRlbnRhdGlvbikKICAoaW5zZXJ0ICItLSAgIikpCgo7OyAtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21hbi1jb21tZW50LWxpbmUtdy1zbGFzaCAoKQog ICJJbnNlcnQgYSAvLyBjb21tZW50IGJlZm9yZSB0aGUgY3VycmVudCBsaW5lIGFuZCByZWluZGVu dCBpdC4iCiAgKGludGVyYWN0aXZlKQoKICAoaW5kZW50LWFjY29yZGluZy10by1tb2RlKQogIChi YWNrLXRvLWluZGVudGF0aW9uKQogIChpbnNlcnQgIi8vICAiKSkKCjs7IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCihkZWZ1biBzcGVjbWFuLWV4Y2x1ZGUtY29kZS1yZWdpb24gKGJlZyBlbmQpCiAgIkNv bW1lbnQgYSBjb2RlIHNlY3Rpb24gYnkgZXhjbHVkaW5nIGl0IHVzaW5nIFNwZWNtYW4gY29kZSBi cmFja2V0cyA8Jyc+LiIKICAoaW50ZXJhY3RpdmUgInIiKQoKICAoZ290by1jaGFyIGJlZykKICAo YmVnaW5uaW5nLW9mLWxpbmUpCiAgKGluc2VydCAiJz5cbiIpCiAgKGdvdG8tY2hhciBlbmQpCiAg KGZvcndhcmQtbGluZSAxKQogIChiZWdpbm5pbmctb2YtbGluZSkKICAoaW5zZXJ0ICI8J1xuIikp Cgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21hbi11bmNvbW1lbnQtcmVnaW9u IChiZWcgZW5kKQogICJVbmNvbW1lbnQgdGhlIGdpdmVuIHJlZ2lvbiBieSByZW1vdmluZyB0aGUg Zmlyc3QgMiBjaGFycyBvZiBldmVyeSBsaW5lLiIKICAoaW50ZXJhY3RpdmUgInIiKQoKICA7OyBv cmlnaW5hbCBpbXBsZW1lbnRhdGlvbiAtIHNpbXBsZSBidXQgZHVtYgogIDs7KGNvbW1lbnQtcmVn aW9uIGJlZyBlbmQgJy0yKQogIDs7KGluZGVudC1yZWdpb24gYmVnIGVuZCBuaWwpKQogIAogIChs ZXQgKChlbmQtbWFya2VyCiAgICAgICAgIChzZXQtbWFya2VyIChtYWtlLW1hcmtlcikgZW5kKSkK ICAgICAgICApCiAgICAoZ290by1jaGFyIGJlZykKICAKICAgICh3aGlsZSAoPCAocG9pbnQpCiAg ICAgICAgICAgICAgZW5kLW1hcmtlcikKICAgICh3aGVuIChzcGVjbWFuLWxpbmUtd2l0aGluLWNv bW1lbnQtcCkKICAgICAgKGNvbW1lbnQtcmVnaW9uIChzcGVjbWFuLWJlZy1vZi1saW5lLXBvcykK ICAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLWVuZC1vZi1saW5lLXBvcykKICAgICAgICAg ICAgICAgICAgICAgIC0yKSkKICAgIChzcGVjbWFuLWluZGVudC1saW5lKQogICAgKGZvcndhcmQt bGluZSAxKSkKICAKICAgIChzZXQtbWFya2VyIGVuZC1tYXJrZXIgbmlsKSkpCgo7OyAtLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21hbi1taW5vci1jb21tZW50LXNlcGFyYXRvciAoKQog ICJJbnNlcnQgbWludXNlcyBmcm9tIHRoZSBjdXJzb3IgdG8gdGhlIG1heGltdW0gbGluZSBsZW5n dGgsCm5ldmVyIGxlc3MgdGhhbiAyIGNoYXJhY3RlcnMuIgogIChpbnRlcmFjdGl2ZSkKCiAgKGxl dCAoKGN1ci1jb2wKICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAoY291bnRlcgog ICAgICAgICAoLSBzcGVjbWFuLW1heC1saW5lLWxlbmd0aCAoY3VycmVudC1jb2x1bW4pKSkKICAg ICAgICApCiAgICAod2hlbiAoPD0gY3VyLWNvbAogICAgICAgICAgICAoLSBzcGVjbWFuLW1heC1s aW5lLWxlbmd0aCAyKSkKICAgICAgICAod2hpbGUgKD4gY291bnRlciAwKQogICAgICAgICAgKHBy b2duCiAgICAgICAgICAgIChpbnNlcnQgIi0iKQogICAgICAgICAgICAoc2V0cSBjb3VudGVyICgt IGNvdW50ZXIgMSkpKSkpCiAgICAobmV3bGluZSkKICAgIChpbmRlbnQtdG8tbGVmdC1tYXJnaW4p CiAgICAoaW5kZW50LXRvIGN1ci1jb2wpKSkKCjs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCihkZWZ1 biBzcGVjbWFuLW1ham9yLWNvbW1lbnQtc2VwYXJhdG9yICgpCiAgIkluc2VydCBhIGNvbW1lbnQg bGluZSBvZiAnPScsIHByZWZpeGVkIGFuZCBzdWZmaXhlZCBieSAnLS0nLApuZXZlciBsZXNzIHRo YW4gNCBjaGFyYWN0ZXJzLiIKICAoaW50ZXJhY3RpdmUpCgogIChsZXQgKChjdXItY29sCiAgICAg ICAgIChjdXJyZW50LWNvbHVtbikpCiAgICAgICAgKGNvdW50ZXIKICAgICAgICAgKC0gc3BlY21h bi1tYXgtbGluZS1sZW5ndGggKGN1cnJlbnQtY29sdW1uKSA0KSkKICAgICAgICkKICAgICh3aGVu ICg8PSBjdXItY29sCiAgICAgICAgICAgICAgKC0gc3BlY21hbi1tYXgtbGluZS1sZW5ndGggNCkp CiAgICAgICAgKHByb2duCiAgICAgICAgICAoaW5zZXJ0ICItLSIpCiAgICAgICAgICAod2hpbGUg KD4gY291bnRlciAwKQogICAgICAgICAgICAoaW5zZXJ0ICI9IikKICAgICAgICAgICAgKHNldHEg Y291bnRlciAoLSBjb3VudGVyIDEpKSkKICAgICAgICAgIChpbnNlcnQgIi0tIikpKQogICAgKG5l d2xpbmUpCiAgICAoaW5kZW50LXRvLWxlZnQtbWFyZ2luKQogICAgKGluZGVudC10byBjdXItY29s KSkpCgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21hbi1kZXZlbG9wbWVudC1m aWxlLWhlYWRlciAoKQogICJJbnNlcnQgYSBTcGVjbWFuIFImRCBmaWxlIGhlYWRlci4iCiAgKGlu dGVyYWN0aXZlKQogIAogIChnb3RvLWNoYXIgMCkKICAoaW5zZXJ0ICJcCgotLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLQogIENvcHlyaWdodCAoYykgPHllYXI+IGJ5IENhZGVuY2UuIFRoaXMgbW9kZWwg aXMgdGhlIGNvbmZpZGVudGlhbCBhbmQKICBwcm9wcmlldGFyeSBwcm9wZXJ0eSBvZiBDYWRlbmNl IGFuZCB0aGUgcG9zc2Vzc2lvbiBvciB1c2Ugb2YgdGhpcyBmaWxlCiAgcmVxdWlyZXMgYSB3cml0 dGVuIGxpY2Vuc2UgZnJvbSBDYWRlbmNlLgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKCi0tPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PS0tCiAgVGl0bGUgOiAgPHRpdGxlPgogIFRlYW0gIDogIDx0ZWFtPgoK ICBGaWxlICA6ICA8ZmlsZW5hbWU+Ci0tPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tCiAgRGVzY3JpcHRp b246CiAgPGRlc2NyaXB0aW9uPgotLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0tLQoKCiAgIikKICAKICAo aW5kZW50LWFjY29yZGluZy10by1tb2RlKQogIChnb3RvLWNoYXIgMCkKICAoc2VhcmNoLWZvcndh cmQgIjx5ZWFyPiIpCiAgKHJlcGxhY2UtbWF0Y2ggIiIgdCB0KQogIChzcGVjbWFuLWluc2VydC15 ZWFyKQogIChsZXQgKHN0cmluZykKICAgIChzZXRxIHN0cmluZyAocmVhZC1zdHJpbmcgInRpdGxl OiAiKSkKICAgIChzZWFyY2gtZm9yd2FyZCAiPHRpdGxlPiIpCiAgICAocmVwbGFjZS1tYXRjaCBz dHJpbmcgdCB0KQogICAgKHNldHEgc3RyaW5nIChyZWFkLXN0cmluZyAidGVhbTogIikpCiAgICAo c2VhcmNoLWZvcndhcmQgIjx0ZWFtPiIpCiAgICAocmVwbGFjZS1tYXRjaCBzdHJpbmcgdCB0KQog ICAgKHNlYXJjaC1mb3J3YXJkICI8ZmlsZW5hbWU+IikKICAgIChyZXBsYWNlLW1hdGNoIChmaWxl LW5hbWUtbm9uZGlyZWN0b3J5IChidWZmZXItZmlsZS1uYW1lKSkgdCB0KQogICAgKHNlYXJjaC1m b3J3YXJkICI8ZGVzY3JpcHRpb24+IikKICAgIChyZXBsYWNlLW1hdGNoICIiIHQgdCkpKQoKOzsg LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKGRlZnVuIHNwZWNtYW4tc3RydWN0LWFuZC1kZWZpbmUtaGVh ZGVyLWNvbXBhY3QgKCkKICAiQ3JlYXRlIGEgY29tcGFjdCBzdHJ1Y3QvZGVmaW5lIGhlYWRlci4i CiAgKGludGVyYWN0aXZlKQogIChzcGVjbWFuLXN0cnVjdC1hbmQtZGVmaW5lLWhlYWRlci1pbnRl cm5hbCBuaWwgdCkpCgooZGVmdW4gc3BlY21hbi1zdHJ1Y3QtYW5kLWRlZmluZS1oZWFkZXItZnVs bCAoKQogICJDcmVhdGUgYSBkb2N1bWVudGVkIHN0cnVjdC9kZWZpbmUgaGVhZGVyLiIKICAoaW50 ZXJhY3RpdmUpCiAgKHNwZWNtYW4tc3RydWN0LWFuZC1kZWZpbmUtaGVhZGVyLWludGVybmFsIG5p bCBuaWwpKQoKKGRlZnVuIHNwZWNtYW4tc3RydWN0LWFuZC1kZWZpbmUtaGVhZGVyLWludGVybmFs IChjdXJyZW50LWxpbmUgY29tcGFjdC1oZWFkZXIpCiAgIkNyZWF0ZSBhIHN0cnVjdC9kZWZpbmUg aGVhZGVyIGFib3ZlIHRoZSBjdXJyZW50IGxpbmUuICBjb21wYWN0LWhlYWRlciBpbmNsdWRlcwp0 aGUgc3RydWN0L2RlZmluZSBuYW1lIG9ubHksIG90aGVyd2lzZSBhIGZ1bGwgaGVhZGVyIHdpdGgg Y29tbWVudHMuIgoKICAoaWYgKG5vdCAob3IgKGFuZCBjdXJyZW50LWxpbmUgIDs7IGJldHRlciBw ZXJmb3JtYW5jZSB3aXRob3V0IHNlYXJjaAogICAgICAgICAgICAgICAgICAgIChwcm9nbgogICAg ICAgICAgICAgICAgICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAgICAgICAgICAgICAg ICAgdCkpCiAgICAgICAgICAgICAgIChhbmQgKGZvcndhcmQtbGluZSkgOzsgc28gYXMgdG8gY2hl Y2sgYWxzbyBjdXJyZW50IGxpbmUKICAgICAgICAgICAgICAgICAgICAoc3BlY21hbi1yZS1zZWFy Y2gtYmFja3dhcmQgKGNvbmNhdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIl5bIFx0XSpcXCgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICJcXCgiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzcGVjbWFuLWNsYXNzLWRlZmluaXRpb24tcmVnZXhwCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwpXFx8XFwoIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21hbi1kZWZpbmUtcmVnZXhw CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwpIgog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwpIikKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQpKSkpCiAgICAgICAgICAKICAgICAg KG1lc3NhZ2UgIk5vIHN0cnVjdC9kZWZpbmUgZGVmaW5pdGlvbiBmb3VuZCBhYm92ZSBjdXJyZW50 IHBvc2l0aW9uIC4uLiIpCiAgICAKICAgIChsZXQgKChzdHJ1Y3QtbmFtZQogICAgICAgICAgIChj b25kCiAgICAgICAgICAgICgobG9va2luZy1hdCBzcGVjbWFuLWNsYXNzLWRlZmluaXRpb24tcmVn ZXhwLWZ1bGwpCiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgKHNwZWNtYW4tcHJlcGFyZWQt YnVmZmVyLXN1YnN0cmluZyAobWF0Y2gtYmVnaW5uaW5nIDEpCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtYXRjaC1lbmQgMSkpCiAgICAgICAgICAgICAp CiAgICAgICAgICAgICgobG9va2luZy1hdCBzcGVjbWFuLWRlZmluZS1yZWdleHAtZnVsbCkKICAg ICAgICAgICAgICAgCiAgICAgICAgICAgICAoc3BlY21hbi1wcmVwYXJlZC1idWZmZXItc3Vic3Ry aW5nIChtYXRjaC1iZWdpbm5pbmcgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKG1hdGNoLWVuZCAxKSkKICAgICAgICAgICAgICkKICAgICAgICAgICAg KHQKICAgICAgICAgICAgIChlcnJvciAiU3RydWN0L0RlZmluZSBkZWZpbml0aW9uIG1hdGNoIGZh aWxlZCAuLi4iKQogICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgICAgKQogICAg ICAgICAgKGhlYWRlci1pbmRlbnQKICAgICAgICAgICAwKQogICAgICAgICAgKQoKICAgICAgOzsg Z28gYmFja3dhcmQgb3ZlciBhbnkgY29tbWVudHMgYW5kIGFkZCBhIG5ld2xpbmUgaWYgdGhlcmUg aXMgbm8gZW1wdHkKICAgICAgOzsgbGluZSB0aGVyZS4KICAgICAgKGZvcndhcmQtbGluZSAtMSkK ICAgICAgKGJhY2stdG8taW5kZW50YXRpb24pCiAgICAgICh3aGlsZSAobG9va2luZy1hdCAiLy9c XHwtLSIpCiAgICAgICAgKGZvcndhcmQtbGluZSAtMSkKICAgICAgICAoYmFjay10by1pbmRlbnRh dGlvbikpCiAgICAgICh3aGVuIChub3QgKGxvb2tpbmctYXQgIlsgXHRdKiQiKSkKICAgICAgICAo ZW5kLW9mLWxpbmUpCiAgICAgICAgKHNwZWNtYW4taW5zZXJ0LW5ld2xpbmUpKQogICAgICAoZm9y d2FyZC1saW5lIDEpCiAgICAgIChiZWdpbm5pbmctb2YtbGluZSkKCiAgICAgIChpZiAobG9va2lu Zy1hdCAiXlsgXHRdKi0tPSotLVxcKFxuWyBcdF0qLS1bXlxuXSpcXCkrXG5bIFx0XSotLT0qLS0i KQogICAgICAgICAgKG1lc3NhZ2UgKGZvcm1hdCAiU2tpcHBpbmcgZGVmaW5pdGlvbiBvZiBcIiVz XCIgLSBpdCBhbHJlYWR5IGhhcyBhIGhlYWRlci4iIHN0cnVjdC1uYW1lKSkKICAgICAgICAocHJv Z24KICAgICAgICAgIDs7IGFkZCB0aGUgaGVhZGVyCiAgICAgICAgICAoaW5kZW50LWFjY29yZGlu Zy10by1tb2RlKQogICAgICAgICAgKHNldHEgaGVhZGVyLWluZGVudCAoY3VycmVudC1jb2x1bW4p KQogICAgICAgICAgKHNwZWNtYW4tbWFqb3ItY29tbWVudC1zZXBhcmF0b3IpCiAgICAgICAgICAo bGV0ICgoc3RhcnQKICAgICAgICAgICAgICAgICAocG9pbnQpKQogICAgICAgICAgICAgICAgKQog ICAgICAgICAgICAoaWYgY29tcGFjdC1oZWFkZXIKICAgICAgICAgICAgICAgIChwcm9nbgogICAg ICAgICAgICAgICAgICAoaW5kZW50LXRvLWxlZnQtbWFyZ2luKQogICAgICAgICAgICAgICAgICAo aW5zZXJ0ICJcCi0tICA8c3RydWN0PgoiKQoKICAgICAgICAgICAgICAgICAgKGZvcndhcmQtbGlu ZSAtMikKICAgICAgICAgICAgICAgICAgKGZvciBpIGZyb20gMSB0byAyIGRvIChwcm9nbgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5kZW50LXRvIGhlYWRlci1p bmRlbnQpKSkKICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tbWFqb3ItY29tbWVudC1zZXBhcmF0 b3IpCiAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCiAgICAgICAgICAgICAgICAg IChzZWFyY2gtZm9yd2FyZCAiPHN0cnVjdD4iKQogICAgICAgICAgICAgICAgICAocmVwbGFjZS1t YXRjaCBzdHJ1Y3QtbmFtZSB0IHQpCiAgICAgICAgICAgICAgICAgIChlbmQtb2YtbGluZSkpCiAg ICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgKGluZGVudC10by1sZWZ0LW1hcmdpbikK ICAgICAgICAgICAgICAoaW5zZXJ0ICJcCi0tICBTdHJ1Y3QgICAgICA6ICA8c3RydWN0PgotLSAg RGVzY3JpcHRpb24gOiAgPGRlc2NyaXB0aW9uPgotLSAgTm90ZSAgICAgICAgOiAgPG5vdGU+CiIp CiAgICAgICAgICAgICAgKGZvcndhcmQtbGluZSAtNCkKICAgICAgICAgICAgICAoZm9yIGkgZnJv bSAxIHRvIDQgZG8gKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KGZvcndhcmQtbGluZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW5k ZW50LXRvIGhlYWRlci1pbmRlbnQpKSkKICAgICAgICAgICAgICAoc3BlY21hbi1tYWpvci1jb21t ZW50LXNlcGFyYXRvcikKICAgICAgICAgICAgICAoZ290by1jaGFyIHN0YXJ0KQogICAgICAgICAg ICAgIChzZWFyY2gtZm9yd2FyZCAiPHN0cnVjdD4iKQogICAgICAgICAgICAgIChyZXBsYWNlLW1h dGNoIHN0cnVjdC1uYW1lIHQgdCkKICAgICAgICAKICAgICAgICAgICAgICAobGV0ICgoaW5kZW50 CiAgICAgICAgICAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAgICAgICAg ICAgIChmb3J3YXJkLWxpbmUgMSkKICAgICAgICAgICAgICAgICAgICAgICAoYmFjay10by1pbmRl bnRhdGlvbikKICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKSkKICAgICAg ICAgICAgICAgICAgICAoc3BlY21hbi1idWZmZXIKICAgICAgICAgICAgICAgICAgICAgKGN1cnJl bnQtYnVmZmVyKSkKICAgICAgICAgICAgICAgICAgICBuZXh0LWJ1ZmZlcgogICAgICAgICAgICAg ICAgICAgICkKICAgICAgICAgICAgICAgIChzZWFyY2gtZm9yd2FyZCAiPG5vdGU+IikKICAgICAg ICAgICAgICAgIChzcGVjbWFuLWNvbW1lbnQtc3RhcnQtZW50cnkgIk5vdGUiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8Tm90ZT4gIgogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0gICAgICAgICAgICAgIDogICIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZW50CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtbWFya2VyIChtYWtlLW1h cmtlcikgKG1hdGNoLWJlZ2lubmluZyAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzcGVjbWFuLWJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KHNldC1tYXJrZXIgKG1ha2UtbWFya2VyKSAobWF0Y2gtZW5kIDApKSkKICAgICAgICAgICAgICAg IChzZXRxIG5leHQtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAgICAgICAgICAoc3dp dGNoLXRvLWJ1ZmZlci1vdGhlci13aW5kb3cgc3BlY21hbi1idWZmZXIpCiAgICAgICAgICAgICAg ICAoZ290by1jaGFyIHN0YXJ0KQogICAgICAgICAgICAgICAgKHNlYXJjaC1mb3J3YXJkICI8ZGVz Y3JpcHRpb24+IikKICAgICAgICAgICAgICAgIChzcGVjbWFuLWNvbW1lbnQtc3RhcnQtZW50cnkg IkRlc2NyaXB0aW9uIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAiPERlc2NyaXB0aW9uPiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICItLSAgICAgICAgICAgICAgOiAgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBpbmRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHNldC1tYXJrZXIgKG1ha2UtbWFya2VyKSAobWF0Y2gtYmVnaW5uaW5nIDAp KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0CiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQtYnVmZmVyCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1tYXJrZXIgKG1ha2UtbWFya2VyKSAobWF0 Y2gtZW5kIDApKSkpCiAgICAgICAgICAgICAgKSkpKSkpKSkKCjs7IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCihkZWZ1biBzcGVjbWFuLW1ldGhvZC1oZWFkZXItY29tcGFjdCAoKQogICJDcmVhdGUgYSBj b21wYWN0IG1ldGhvZCBoZWFkZXIuIgogIChpbnRlcmFjdGl2ZSkKICAoc3BlY21hbi1tZXRob2Qt aGVhZGVyLWludGVybmFsIG5pbCB0KSkKCihkZWZ1biBzcGVjbWFuLW1ldGhvZC1oZWFkZXItZnVs bCAoKQogICJDcmVhdGUgYSBkb2N1bWVudGVkIG1ldGhvZCBoZWFkZXIuIgogIChpbnRlcmFjdGl2 ZSkKICAoc3BlY21hbi1tZXRob2QtaGVhZGVyLWludGVybmFsIG5pbCBuaWwpKQoKKGRlZnVuIHNw ZWNtYW4tbWV0aG9kLWhlYWRlci1pbnRlcm5hbCAoY3VycmVudC1saW5lIGNvbXBhY3QtaGVhZGVy KQogICJDcmVhdGUgYSBtZXRob2QgaGVhZGVyIGFib3ZlIHRoZSBjdXJyZW50IGxpbmUuICBjb21w YWN0LWhlYWRlciBpbmNsdWRlcyB0aGUKbWV0aG9kIG5hbWUgb25seSwgb3RoZXJ3aXNlIGEgZnVs bCBoZWFkZXIgd2l0aCBjb21tZW50cy4iCgogIChpZiAobm90IChvciAoYW5kIGN1cnJlbnQtbGlu ZSAgOzsgYmV0dGVyIHBlcmZvcm1hbmNlIHdpdGhvdXQgc2VhcmNoCiAgICAgICAgICAgICAgICAg ICAgKHByb2duCiAgICAgICAgICAgICAgICAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAg ICAgICAgICAgICAgICAgICB0KSkKICAgICAgICAgICAgICAgKGFuZCAoZm9yd2FyZC1saW5lKSA7 OyBzbyBhcyB0byBjaGVjayBhbHNvIGN1cnJlbnQgbGluZQogICAgICAgICAgICAgICAgICAgIChz cGVjbWFuLXJlLXNlYXJjaC1iYWNrd2FyZCAoY29uY2F0CiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAiXlsgXHRdKlxcKCIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIlxcKCIKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHNwZWNtYW4tbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXFwpXFx8XFwo IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY21h bi1vbi1ldmVudC1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHAKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcXCkiCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJcXCkiKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBuaWwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdCkpKSkKICAgICAgCiAgICAgIChtZXNzYWdlICJObyBtZXRob2QgZGVmaW5p dGlvbiBmb3VuZCBhYm92ZSBjdXJyZW50IHBvc2l0aW9uIC4uLiIpCiAgICAgICAgCiAgICAobGV0 ICgobWV0aG9kLW5hbWUKICAgICAgICAgICAoY29uZAogICAgICAgICAgICAoKGxvb2tpbmctYXQg c3BlY21hbi1tZXRob2QtZGVmaW5pdGlvbi1yZWdleHAtZnVsbCkKICAgICAgICAgICAgICAgCiAg ICAgICAgICAgICAoc3BlY21hbi1wcmVwYXJlZC1idWZmZXItc3Vic3RyaW5nIChtYXRjaC1iZWdp bm5pbmcgMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KG1hdGNoLWVuZCAxKSkKICAgICAgICAgICAgICkKICAgICAgICAgICAgKChsb29raW5nLWF0IHNw ZWNtYW4tb24tZXZlbnQtbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwLWZ1bGwpCiAgICAgICAgICAg ICAgIAogICAgICAgICAgICAgKHNwZWNtYW4tcHJlcGFyZWQtYnVmZmVyLXN1YnN0cmluZyAobWF0 Y2gtYmVnaW5uaW5nIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIChtYXRjaC1lbmQgMSkpCiAgICAgICAgICAgICApCiAgICAgICAgICAgICh0CiAgICAg ICAgICAgICAoZXJyb3IgIk1ldGhvZCBkZWZpbml0aW9uIG1hdGNoIGZhaWxlZCAuLi4iKQogICAg ICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgICAgKQogICAgICAgICAgKGhlYWRlci1p bmRlbnQKICAgICAgICAgICAwKQogICAgICAgICAgKQoKICAgICAgOzsgZ28gYmFja3dhcmQgb3Zl ciBhbnkgY29tbWVudHMgYW5kIGFkZCBhIG5ld2xpbmUgaWYgdGhlcmUgaXMgbm8gZW1wdHkKICAg ICAgOzsgbGluZSB0aGVyZS4KICAgICAgKGZvcndhcmQtbGluZSAtMSkKICAgICAgKGJhY2stdG8t aW5kZW50YXRpb24pCiAgICAgICh3aGlsZSAobG9va2luZy1hdCAiLy9cXHwtLSIpCiAgICAgICAg KGZvcndhcmQtbGluZSAtMSkKICAgICAgICAoYmFjay10by1pbmRlbnRhdGlvbikpCiAgICAgICh3 aGVuIChub3QgKGxvb2tpbmctYXQgIlsgXHRdKiQiKSkKICAgICAgICAoZW5kLW9mLWxpbmUpCiAg ICAgICAgKHNwZWNtYW4taW5zZXJ0LW5ld2xpbmUpKQogICAgICAoZm9yd2FyZC1saW5lIDEpCiAg ICAgIChiZWdpbm5pbmctb2YtbGluZSkKCiAgICAgIChpZiAobG9va2luZy1hdCAiXlsgXHRdKi0t K1xcKFxuWyBcdF0qLS1bXlxuXSpcXCkrXG5bIFx0XSotLSsiKQogICAgICAgICAgKG1lc3NhZ2Ug KGZvcm1hdCAiU2tpcHBpbmcgbWV0aG9kIFwiJXNcIiAtIGl0IGFscmVhZHkgaGFzIGEgaGVhZGVy LiIgbWV0aG9kLW5hbWUpKQogICAgICAgIChwcm9nbgogICAgICAgICAgOzsgYWRkIHRoZSBoZWFk ZXIKICAgICAgICAgIChpbmRlbnQtYWNjb3JkaW5nLXRvLW1vZGUpCiAgICAgICAgICAoc2V0cSBo ZWFkZXItaW5kZW50IChjdXJyZW50LWNvbHVtbikpCiAgICAgICAgICAoc3BlY21hbi1taW5vci1j b21tZW50LXNlcGFyYXRvcikKICAgICAgICAgIChsZXQgKChzdGFydAogICAgICAgICAgICAgICAg IChwb2ludCkpCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIChpZiBjb21wYWN0LWhlYWRl cgogICAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAgICAgIChpbmRlbnQtdG8tbGVm dC1tYXJnaW4pCiAgICAgICAgICAgICAgICAgIChpbnNlcnQgIlwKLS0gIDxtZXRob2Q+CiIpCiAg ICAgICAgICAgICAgICAgIChmb3J3YXJkLWxpbmUgLTIpCiAgICAgICAgICAgICAgICAgIChmb3Ig aSBmcm9tIDEgdG8gMiBkbyAocHJvZ24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGZvcndhcmQtbGluZSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoaW5kZW50LXRvIGhlYWRlci1pbmRlbnQpKSkKICAgICAgICAgICAgICAgICAgKHNwZWNt YW4tbWlub3ItY29tbWVudC1zZXBhcmF0b3IpCiAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIg c3RhcnQpCiAgICAgICAgICAgICAgICAgIChzZWFyY2gtZm9yd2FyZCAiPG1ldGhvZD4iKQogICAg ICAgICAgICAgICAgICAocmVwbGFjZS1tYXRjaCBtZXRob2QtbmFtZSB0IHQpCiAgICAgICAgICAg ICAgICAgIChlbmQtb2YtbGluZSkpCiAgICAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAg ICAoaW5kZW50LXRvLWxlZnQtbWFyZ2luKQogICAgICAgICAgICAgICAgKGluc2VydCAiXAotLSAg TWV0aG9kICAgICAgOiAgPG1ldGhvZD4KLS0gIERlc2NyaXB0aW9uIDogIDxkZXNjcmlwdGlvbj4K LS0gIFBhcmFtZXRlcnMgIDogIDxwYXJhbWV0ZXJzPgotLSAgUmV0dXJuIFZhbCAgOiAgPHJldHVy biB2YWw+Ci0tICBOb3RlICAgICAgICA6ICA8bm90ZT4KIikKICAgICAgICAgICAgICAgIChmb3J3 YXJkLWxpbmUgLTYpCiAgICAgICAgICAgICAgICAoZm9yIGkgZnJvbSAxIHRvIDYgZG8gKHByb2du CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lKQog ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluZGVudC10byBoZWFkZXIt aW5kZW50KSkpCiAgICAgICAgICAgICAgICAoc3BlY21hbi1taW5vci1jb21tZW50LXNlcGFyYXRv cikKICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCiAgICAgICAgICAgICAgICAoc2Vh cmNoLWZvcndhcmQgIjxtZXRob2Q+IikKICAgICAgICAgICAgICAgIChyZXBsYWNlLW1hdGNoIG1l dGhvZC1uYW1lIHQgdCkKCiAgICAgICAgICAgICAgICAobGV0ICgoaW5kZW50CiAgICAgICAgICAg ICAgICAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAoZm9y d2FyZC1saW5lIDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAoYmFjay10by1pbmRlbnRhdGlv bikKICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWNvbHVtbikpKQogICAgICAgICAg ICAgICAgICAgICAgKHNwZWNtYW4tYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgKGN1cnJl bnQtYnVmZmVyKSkKICAgICAgICAgICAgICAgICAgICAgIG5leHQtYnVmZmVyCiAgICAgICAgICAg ICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgIChzZWFyY2gtZm9yd2FyZCAiPG5vdGU+IikK ICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tY29tbWVudC1zdGFydC1lbnRyeSAiTm90ZSIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPE5vdGU+ICIKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0gICAgICAgICAg ICAgIDogICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp bmRlbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0 LW1hcmtlciAobWFrZS1tYXJrZXIpIChtYXRjaC1iZWdpbm5pbmcgMCkpCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdAogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNtYW4tYnVmZmVyCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1tYXJrZXIgKG1ha2UtbWFya2VyKSAobWF0Y2gt ZW5kIDApKSkKICAgICAgICAgICAgICAgICAgKHNldHEgbmV4dC1idWZmZXIgKGN1cnJlbnQtYnVm ZmVyKSkKICAgICAgICAgICAgICAgICAgKHN3aXRjaC10by1idWZmZXItb3RoZXItd2luZG93IHNw ZWNtYW4tYnVmZmVyKQogICAgICAgICAgICAgICAgICAoZ290by1jaGFyIHN0YXJ0KQogICAgICAg ICAgICAgICAgICAoc2VhcmNoLWZvcndhcmQgIjxyZXR1cm4gdmFsPiIpCiAgICAgICAgICAgICAg ICAgIChzcGVjbWFuLWNvbW1lbnQtc3RhcnQtZW50cnkgIlJldHVybi1WYWwiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjxSZXR1cm4gVmFsPiAiCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0tICAgICAgICAgICAg ICA6ICAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5k ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1t YXJrZXIgKG1ha2UtbWFya2VyKSAobWF0Y2gtYmVnaW5uaW5nIDApKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBuZXh0LWJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoc2V0LW1hcmtlciAobWFrZS1tYXJrZXIpIChtYXRjaC1lbmQgMCkp KQogICAgICAgICAgICAgICAgICAoc2V0cSBuZXh0LWJ1ZmZlciAoY3VycmVudC1idWZmZXIpKQog ICAgICAgICAgICAgICAgICAoc3dpdGNoLXRvLWJ1ZmZlci1vdGhlci13aW5kb3cgc3BlY21hbi1i dWZmZXIpCiAgICAgICAgICAgICAgICAgIChnb3RvLWNoYXIgc3RhcnQpCiAgICAgICAgICAgICAg ICAgIChzZWFyY2gtZm9yd2FyZCAiPHBhcmFtZXRlcnM+IikKICAgICAgICAgICAgICAgICAgKHNw ZWNtYW4tY29tbWVudC1zdGFydC1lbnRyeSAiUGFyYW1ldGVycyIKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPFBhcmFtZXRlcnM+ICIKICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS0gICAgICAgICAgICAgIDogICIK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0LW1hcmtlciAo bWFrZS1tYXJrZXIpIChtYXRjaC1iZWdpbm5pbmcgMCkpCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5leHQtYnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIChzZXQtbWFya2VyIChtYWtlLW1hcmtlcikgKG1hdGNoLWVuZCAwKSkpCiAgICAg ICAgICAgICAgICAgIChzZXRxIG5leHQtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAg ICAgICAgICAgIChzd2l0Y2gtdG8tYnVmZmVyLW90aGVyLXdpbmRvdyBzcGVjbWFuLWJ1ZmZlcikK ICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciBzdGFydCkKICAgICAgICAgICAgICAgICAgKHNl YXJjaC1mb3J3YXJkICI8ZGVzY3JpcHRpb24+IikKICAgICAgICAgICAgICAgICAgKHNwZWNtYW4t Y29tbWVudC1zdGFydC1lbnRyeSAiRGVzY3JpcHRpb24iCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIjxEZXNjcmlwdGlvbj4gIgogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICItLSAgICAgICAgICAgICAgOiAgIgogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQtbWFya2VyIChtYWtl LW1hcmtlcikgKG1hdGNoLWJlZ2lubmluZyAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV4dC1idWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKHNldC1tYXJrZXIgKG1ha2UtbWFya2VyKSAobWF0Y2gtZW5kIDApKSkKICAgICAgICAg ICAgICAgICAgKSkpKSkpKSkpCgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21h bi1hZGQtc3RydWN0LWFuZC1tZXRob2QtaGVhZGVycyAoKQogICJPcGVuIHN0cnVjdCBhbmQgbWV0 aG9kIGhlYWRlcnMgZm9yIHRoZSBlbnRpcmUgYnVmZmVyLiIKICAoaW50ZXJhY3RpdmUpCgogIChs ZXQgKChtYWluLXJlZ2V4cAogICAgICAgICAoY29uY2F0CiAgICAgICAgICAiXlsgXHRdKlxcKCIK ICAgICAgICAgIAogICAgICAgICAgIlxcKCIKICAgICAgICAgIHNwZWNtYW4tY2xhc3MtZGVmaW5p dGlvbi1yZWdleHAKICAgICAgICAgICJcXClcXHxcXCgiCiAgICAgICAgICBzcGVjbWFuLWRlZmlu ZS1yZWdleHAKICAgICAgICAgICJcXClcXHxcXCgiCiAgICAgICAgICBzcGVjbWFuLW1ldGhvZC1k ZWZpbml0aW9uLXJlZ2V4cAogICAgICAgICAgIlxcKVxcfFxcKCIKICAgICAgICAgIHNwZWNtYW4t b24tZXZlbnQtbWV0aG9kLWRlZmluaXRpb24tcmVnZXhwCiAgICAgICAgICAiXFwpIgogICAgICAg ICAgCiAgICAgICAgICAiXFwpIikpCiAgICAgICAgKGNvdW50ZXIKICAgICAgICAgMCkKICAgICAg ICApCiAgICAKICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAoZ290by1jaGFyIChwb2ludC1tYXgp KQogICAgICAoc3BlY21hbi1za2lwLWJhY2t3YXJkLWNvbW1lbnQtb3Itc3RyaW5nKQogICAgICAo d2hpbGUgKHNwZWNtYW4tcmUtc2VhcmNoLWJhY2t3YXJkIG1haW4tcmVnZXhwIG5pbCB0IHQpCiAg ICAgICAgKHNldHEgY291bnRlciAoMSsgY291bnRlcikpCiAgICAgICAgKHdoZW4gKD0gMCAoJSBj b3VudGVyIDEwKSkKICAgICAgICAgIChtZXNzYWdlICIlZCBoZWFkZXJzIC4uLiIgY291bnRlcikp CiAgICAgICAgKHNhdmUtZXhjdXJzaW9uCiAgICAgICAgICAoaWYgKG9yIChsb29raW5nLWF0IHNw ZWNtYW4tY2xhc3MtZGVmaW5pdGlvbi1yZWdleHAtZnVsbCkKICAgICAgICAgICAgICAgICAgKGxv b2tpbmctYXQgc3BlY21hbi1kZWZpbmUtcmVnZXhwLWZ1bGwpKQogICAgICAgICAgICAgIChzcGVj bWFuLXN0cnVjdC1hbmQtZGVmaW5lLWhlYWRlci1pbnRlcm5hbCB0IHQpCiAgICAgICAgICAgICAg KHNwZWNtYW4tbWV0aG9kLWhlYWRlci1pbnRlcm5hbCB0IHQpKSkpCiAgICAgICkKICAgIChtZXNz YWdlICIlZCBoZWFkZXJzIHByb2Nlc3NlZCIgY291bnRlcikKICAgICkKICApCgoKOzsgLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKGRlZnVuIHNwZWNtYW4tb3Blbi1lLWNvZGUtc2VjdGlvbiAoKQogICJP cGVuIGEgbmV3IGUtY29kZSBzZWN0aW9uLiAgSWYgYWxyZWFkeSBpbiBhIGNvZGUgc2VjdGlvbiwg c3RhcnQgYSBuZXcgb25lLiIKICAoaW50ZXJhY3RpdmUpCgogIChpZiAobm90IChzcGVjbWFuLXdp dGhpbi1leC1jb2RlLXBvaW50KSkKICAgICAgCiAgICAgIDs7IGFscmVhZHkgaW4gY29kZSByZWdp b24gLSBmaW5kIHRoZSBlbmQsIGNyZWF0aW5nIGl0IGlmIG5lY2Vzc2FyeQogICAgICAocHJvZ24K ICAgICAgICAodW5sZXNzIChyZS1zZWFyY2gtZm9yd2FyZCAiXic+JCIgbmlsIHQpCiAgICAgICAg ICAoZ290by1jaGFyIChwb2ludC1tYXgpKQogICAgICAgICAgKG5ld2xpbmUpCiAgICAgICAgICAo aW5zZXJ0ICInPiIpKQogICAgICAgIChuZXdsaW5lKQogICAgICAgIChuZXdsaW5lKSkKCiAgICAo cHJvZ24KICAgICAgKGJlZ2lubmluZy1vZi1saW5lKQogICAgICAKICAgICAgKGNvbmQgKDs7IHdh cyBvbiB0aGUgY2xvc2VyLCBqdW1wIHRvIHRoZSBuZXh0IGxpbmUKICAgICAgICAgICAgIChsb29r aW5nLWF0ICInPiIpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIChlbmQtb2YtbGluZSkKICAg ICAgICAgICAgIChuZXdsaW5lKQogICAgICAgICAgICAgKQogICAgICAgICAgICAoOzsgbm90IG9u IGFuIGVtcHR5IGxpbmUsIG1vdmUgaXQgZG93bgogICAgICAgICAgICAgKGxvb2tpbmctYXQgIi4q W14gXHRdKyIpCiAgICAgICAgICAgICAKICAgICAgICAgICAgIChuZXdsaW5lKQogICAgICAgICAg ICAgKHByZXZpb3VzLWxpbmUgMSkKICAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAK ICAgICAgKG5ld2xpbmUpCiAgICAgIChwcmV2aW91cy1saW5lIDEpKSkKCjsgIChpbnNlcnQgIjwn IikgKGluZGVudC1hY2NvcmRpbmctdG8tbW9kZSkKOyAgKGVuZC1vZi1saW5lKSAobmV3bGluZSkK OyAgKGluc2VydCAiJz4iKSAoaW5kZW50LWFjY29yZGluZy10by1tb2RlKQo7ICAocHJldmlvdXMt bGluZSAxKSAoZW5kLW9mLWxpbmUpCjsgIChzcGVjbWFuLWluc2VydC1uZXdsaW5lKQoKICAoaW5z ZXJ0ICI8JyIpIChuZXdsaW5lIDQpCiAgKGluc2VydCAiJz4iKQogIChwcmV2aW91cy1saW5lIDIp CiAgKQoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKGRlZnVuIHNwZWNtYW4tb3Blbi1lLWNvZGUt YmxvY2sgKCkKICAiT3BlbiBjb2RlIGJsb2NrIgogIChpbnRlcmFjdGl2ZSkKCiAgOzsgYWRkIGEg c3BhY2UgYmV0d2VlbiB0aGUgb3BlbmluZyBwYXJlbnMgYW5kIHRoZSBsYXN0CiAgOzsgd29yZCwg aWYgbmVlZGVkLgogICh3aGVuIChub3QgKG9yIChlcXVhbCAoY2hhci1iZWZvcmUpID8gKQogICAg ICAgICAgICAgICAgIChlcXVhbCAoY2hhci1iZWZvcmUpID9cdCkpKQogICAgKGluc2VydCAiICIp KQogIAogIChpbnNlcnQgInsiKSAoaW5kZW50LWFjY29yZGluZy10by1tb2RlKQogIChlbmQtb2Yt bGluZSkgKG5ld2xpbmUpCiAgKGluc2VydCAifSIpIAogIChzcGVjbWFuLWVsZWN0cmljLXNlbWlj b2xvbikKICAoaW5kZW50LWFjY29yZGluZy10by1tb2RlKQogIChwcmV2aW91cy1saW5lIDEpIChl bmQtb2YtbGluZSkKICAoc3BlY21hbi1pbnNlcnQtbmV3bGluZSkpCgo7OyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQooZGVmdW4geW9vay1zcGVjbWFuLW9wZW4tZS1jb2RlLWJsb2NrICgpCiAgIk9wZW4g Y29kZSBibG9jayBhbmQgc29tZXRpbWVzIGEgY29tbWVudCBhZnRlciBpdChub3QgaW1wbGVtZW50 ZWQgeWV0KSIKICAoaW50ZXJhY3RpdmUpCiAgCiAgOzsgYWRkIGEgc3BhY2UgYmV0d2VlbiB0aGUg b3BlbmluZyBwYXJlbnMgYW5kIHRoZSBsYXN0CiAgOzsgd29yZCwgaWYgbmVlZGVkLgogICh3aGVu IChub3QgKG9yIChlcXVhbCAoY2hhci1iZWZvcmUpID8gKQoJCQkJIChlcXVhbCAoY2hhci1iZWZv cmUpID9cdCkpKQogICAgKGluc2VydCAiICIpKQogIAogIChpbnNlcnQgInsiKSAoaW5kZW50LWFj Y29yZGluZy10by1tb2RlKQogIChlbmQtb2YtbGluZSkgKG5ld2xpbmUpCiAgKGluc2VydCAifTsi KSAoaW5kZW50LWFjY29yZGluZy10by1tb2RlKQogIChwcmV2aW91cy1saW5lIDEpIChlbmQtb2Yt bGluZSkKICAoc3BlY21hbi1pbnNlcnQtbmV3bGluZSkpCgoKOzsgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKGRlZnVuIHNwZWNtYW4tcmVhbGlnbi1jb21tZW50ICgpCiAgIklmIHRoZSBjb21tZW50IGlu IHRoZSBjdXJyZW50IGxpbmUgaXMgbG9uZ2VyIHRoYW4gc3BlY21hbi1tYXgtbGluZS1sZW5ndGgs CmJyZWFrIGl0IGludG8gc2V2ZXJhbCBsaW5lcywgc28gdGhhdCBzcGVjbWFuLW1heC1saW5lLWxl bmd0aCBpcyByZXNwZWN0ZWQKYXMgbXVjaCBhcyBwb3NzaWJsZS4gIGNvbW1lbnQgc3R5bGUgaXMg cHJlc2VydmVkLiIKICAoaW50ZXJhY3RpdmUpCgogIChpZiAoc2F2ZS1leGN1cnNpb24KICAgICAg ICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICAgKG5vdCAocmUtc2VhcmNoLWZvcndhcmQgIlte IFx0XSIgKHNwZWNtYW4tZW5kLW9mLWxpbmUtcG9zKSB0KSkpCgogICAgICA7OyB3YXJuIGlmIGVt cHR5IGxpbmUKICAgICAgKG1lc3NhZ2UgInJlYWxpZ24tY29tbWVudCBkb2Vzbid0IHdvcmsgb24g ZW1wdHkgbGluZXMuIikKCiAgICA7OyBvdGhlcndpc2UgcmVhbGlnbi1jb21tZW50CiAgICAobGV0 KiAoKGNvbW1lbnQtcHJlZml4CiAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgIChiZWdp bm5pbmctb2YtbGluZSkKICAgICAgICAgICAgICAob3IgKHJlLXNlYXJjaC1mb3J3YXJkICJcXChc L1wvK1sgXHRdKlxcfFwtXC0rWyBcdF0qXFwpW14gXHRdIgogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgKHNwZWNtYW4tZW5kLW9mLWxpbmUtcG9zKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgdCkKICAgICAgICAgICAgICAgICAgKHJlLXNlYXJjaC1mb3J3 YXJkICJcXChcXClbXiBcdF0iIDs7IHRoZSBlbXB0eSBtYXRjaCBpcyBmb3IgYnVmZmVyLXN1YnN0 cmluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNtYW4tZW5kLW9m LWxpbmUtcG9zKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCkpCiAgICAg ICAgICAgICAgKGJ1ZmZlci1zdWJzdHJpbmcgKG1hdGNoLWJlZ2lubmluZyAxKSAobWF0Y2gtZW5k IDEpKSkKICAgICAgICAgICAgKQogICAgICAgICAgIChjb21tZW50LWNvbHVtbgogICAgICAgICAg ICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAoZ290by1jaGFyIChtYXRjaC1iZWdpbm5p bmcgMSkpCiAgICAgICAgICAgICAgKGN1cnJlbnQtY29sdW1uKSkKICAgICAgICAgICAgKQogICAg ICAgICAgICkKICAgICAgCiAgICAgIChza2lwLWNoYXJzLWZvcndhcmQgIl4gXHRcbiIpIDs7IGVu ZCBvZiBmaXJzdCB3b3JkIGluIGNvbW1lbnQgbGluZQogICAgICAKICAgICAgKHdoaWxlIChub3Qg KGxvb2tpbmctYXQgIlsgXHRdKiQiKSkKICAgICAgICAoaWYgKHNhdmUtZXhjdXJzaW9uCiAgICAg ICAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiIFx0IikKICAgICAgICAgICAgICAoc2tpcC1j aGFycy1mb3J3YXJkICJeIFx0XG4iKQogICAgICAgICAgICAgICg+IChjdXJyZW50LWNvbHVtbikK ICAgICAgICAgICAgICAgICBzcGVjbWFuLW1heC1saW5lLWxlbmd0aCkpCiAgICAgICAgICAgIChw cm9nbgogICAgICAgICAgICAgIChuZXdsaW5lKQogICAgICAgICAgICAgIChpbnNlcnQgKG1ha2Ut c3RyaW5nIGNvbW1lbnQtY29sdW1uID9cICkpCiAgICAgICAgICAgICAgKGluc2VydCBjb21tZW50 LXByZWZpeCkKICAgICAgICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgIlsgXHRdKiIpCiAgICAg ICAgICAgICAgKHJlcGxhY2UtbWF0Y2ggIiIgdCkpKQogICAgICAgIChza2lwLWNoYXJzLWZvcndh cmQgIiBcdCIpCiAgICAgICAgKHNraXAtY2hhcnMtZm9yd2FyZCAiXiBcdFxuIikpIDs7IGVuZCBv ZiBmaXJzdCB3b3JkIGluIGNvbW1lbnQgbGluZQogICAgICAKICAgICAgKGlmIChub3QgKGVvbHAp KQogICAgICAgICAgKHByb2duCiAgICAgICAgICAgIChraWxsLWxpbmUpCiAgICAgICAgICAgIChu ZXdsaW5lKQogICAgICAgICAgICAocHJldmlvdXMtbGluZSAxKQogICAgICAgICAgICAoZW5kLW9m LWxpbmUpKSkKICAgICAgKSkpCgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQooZGVmdW4gc3BlY21h bi1pbnNlcnQtY29tbWVudCAocHJlZml4KQogICJJbnNlcnQgYSBjb21tZW50IGluIHRoZSBjdXJy ZW50IGxvY2F0aW9uLiAgQSBjb21tZW50IGJ1ZmZlciBpcyBvcGVuZWQgZm9yCiAgIHRleHQgZWRp dGluZyB3aXRoIGF1dG8tZmlsbCBtb2RlIChsaW5lIGxlbmd0aCBiZWluZyBoYW5kbGVkIGF1dG9t YXRpY2FsbHkpLgogICBUaGUgY29tbWVudCBzdHlsZSBpcyBwcmVzZXJ2ZWQgaWYgYWxyZWFkeSBl bnRlcmVkLiIKCiAgKHNwZWNtYW4tY29tbWVudC1zdGFydC1lbnRyeSAiRW50cnkiCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAiPENvbW1lbnQgRW50cnk+ICIKICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHByZWZpeAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGN1 cnJlbnQtY29sdW1uKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldC1tYXJrZXIg KG1ha2UtbWFya2VyKSAocG9pbnQpKSkpCgooZGVmdW4gc3BlY21hbi1pbnNlcnQtbWludXMtY29t bWVudCAoKQogICJTdGFydCBlbnRyeSBvZiBhIC0tIGNvbW1lbnQsIG9yIGlmIGN1cnJlbnRseSBp bnNpZGUgYSBjb21tZW50IC0gZWRpdCBpdC4iCiAgKGludGVyYWN0aXZlKQogIChpZiAoc3BlY21h bi13aXRoaW4tY29tbWVudC1wKQogICAgICAoc3BlY21hbi1yZWVkaXQtY29tbWVudCkKICAgIChz cGVjbWFuLWluc2VydC1jb21tZW50ICItLSAgIikpKQoKKGRlZnVuIHNwZWNtYW4taW5zZXJ0LXNs YXNoLWNvbW1lbnQgKCkKICAiU3RhcnQgZW50cnkgb2YgYSAvLyBjb21tZW50LCBvciBpZiBjdXJy ZW50bHkgaW5zaWRlIGEgY29tbWVudCAtIGVkaXQgaXQuIgogIChpbnRlcmFjdGl2ZSkKICAoaWYg KHNwZWNtYW4td2l0aGluLWNvbW1lbnQtcCkKICAgICAgKHNwZWNtYW4tcmVlZGl0LWNvbW1lbnQp CiAgICAoc3BlY21hbi1pbnNlcnQtY29tbWVudCAiLy8gICIpKSkKCjs7IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCihkZWZ1biBzcGVjbWFuLWludGVybmFsLWlzLW1hdGNoaW5nLWNvbW1lbnQtbGluZSAo Y29tbWVudC1jb2x1bW4gY29tbWVudC1wcmVmaXgpCiAgInVzZWQgaW4gc3BlY21hbi1yZWVkaXQt Y29tbWVudCB0byBmaW5kIGFsbCBsaW5lcyBtYXRjaGluZyB0aGUgY3VycmVudCBjb21tZW50CnN0 eWxlLiAgcmV0dXJuczoKLSBuaWwgICAtIG1hdGNoIGZhaWxlZC4KLSBjbGVhbiAtIGEgbGluZSB3 aXRoIGEgbWF0Y2hpbmcgY29tbWVudCBvbmx5LgotIGZpcnN0IC0gYSBsaW5lIHdpdGggdGV4dCB0 aGF0IGVuZHMgd2l0aCBhIG1hdGNoaW5nIGNvbW1lbnQsIHNvIGEgZmlyc3QgbGluZS4iCiAgKHNh dmUtZXhjdXJzaW9uCiAgICAoZW5kLW9mLWxpbmUpCiAgICAoaWYgKD4gY29tbWVudC1jb2x1bW4K ICAgICAgICAgICAoY3VycmVudC1jb2x1bW4pKQogICAgICAgIG5pbAogICAgICAocHJvZ24KICAg ICAgICAoZm9yd2FyZC1jaGFyICgtIGNvbW1lbnQtY29sdW1uCiAgICAgICAgICAgICAgICAgICAg ICAgICAoY3VycmVudC1jb2x1bW4pKSkKICAgICAgICAoYW5kIChsb29raW5nLWF0IGNvbW1lbnQt cHJlZml4KQogICAgICAgICAgICAgKGlmIChyZS1zZWFyY2gtYmFja3dhcmQgIlteIFx0XSIgKHNw ZWNtYW4tYmVnLW9mLWxpbmUtcG9zKSB0KQogICAgICAgICAgICAgICAgICdmaXJzdAogICAgICAg ICAgICAgICAnY2xlYW4pKSkpKSkKCihkZWZ1biBzcGVjbWFuLXJlZWRpdC1jb21tZW50ICgpCgog IChsZXQgKGNvbW1lbnQtdGV4dAogICAgICAgIGNvbW1lbnQtcHJlZml4CiAgICAgICAgY29tbWVu dC1jb2x1bW4KICAgICAgICAoYmVnLW1hcmtlciAobWFrZS1tYXJrZXIpKQogICAgICAgIChlbmQt bWFya2VyIChtYWtlLW1hcmtlcikpCiAgICAgICAgKQogICAgKG9yCiAgICAgOzsgYW4gZXgtY29k ZSByZWdpb24gY29tbWVudAogICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgKGFuZCAoaWYgKHJl LXNlYXJjaC1iYWNrd2FyZCAiXlxcKD86XFwoJz5cXClcXHxcXCg8J1xcKVxcKSIgbmlsIHQpCiAg ICAgICAgICAgICAgICAobWF0Y2gtYmVnaW5uaW5nIDEpCiAgICAgICAgICAgICAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkpCiAgICAgICAgICAgIChwcm9nbgogICAgICAgICAgICAgIChpZiAobG9v a2luZy1hdCAiJz4iKQogICAgICAgICAgICAgICAgICAoZm9yd2FyZC1saW5lKSkKICAgICAgICAg ICAgICAoc2V0LW1hcmtlciBiZWctbWFya2VyIChwb2ludCkpCiAgICAgICAgICAgICAgKG9yIChh bmQgKHJlLXNlYXJjaC1mb3J3YXJkICJePCciIG5pbCB0KQogICAgICAgICAgICAgICAgICAgICAg IChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lubmluZyAwKSkpCiAgICAgICAgICAgICAgICAgIChnb3Rv LWNoYXIgKHBvaW50LW1heCkpKQogICAgICAgICAgICAgIChzZXQtbWFya2VyIGVuZC1tYXJrZXIg KHBvaW50KSkKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgIChzZXRxIGNvbW1lbnQtdGV4 dCAoYnVmZmVyLXN1YnN0cmluZyBiZWctbWFya2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGVuZC1tYXJrZXIpKQogICAgICAgICAgICAgIChzZXRx IGNvbW1lbnQtcHJlZml4ICIiKQogICAgICAgICAgICAgIChzZXRxIGNvbW1lbnQtY29sdW1uIDAp CiAgICAgICAgICAgICAgKSkpCiAgICAgOzsgbm9ybWFsIGNvbW1lbnQKICAgICAocHJvZ24KICAg ICAgIDs7IGNvbW1lbnQgcHJlZml4CiAgICAgICAoYmVnaW5uaW5nLW9mLWxpbmUpCiAgICAgICA7 OyhyZS1zZWFyY2gtZm9yd2FyZCAiXFwoXC9cLytbIFx0XSpcXHxcLVwtK1sgXHRdKlxcKVteIFx0 XSIKICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiXFwoXC9cLytbIFx0XSpcXHxcLVwtK1sgXHRd KlxcKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BlY21hbi1lbmQtb2YtbGluZS1wb3Mp CiAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsKQogICAgICAgKHNldHEgY29tbWVudC1wcmVm aXggKGJ1ZmZlci1zdWJzdHJpbmcgKG1hdGNoLWJlZ2lubmluZyAxKQogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtZW5kIDEpKSkKICAgICAgIDs7 IGNvbW1lbnQgY29sdW1uCiAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgKGdvdG8tY2hh ciAobWF0Y2gtYmVnaW5uaW5nIDEpKQogICAgICAgICAoc2V0cSBjb21tZW50LWNvbHVtbiAoY3Vy cmVudC1jb2x1bW4pKSkKICAgICAgIDs7IG1hcmsgY29tbWVudCByZWdpb24KICAgICAgICh3aGls ZSAoc3BlY21hbi1pbnRlcm5hbC1pcy1tYXRjaGluZy1jb21tZW50LWxpbmUgY29tbWVudC1jb2x1 bW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29tbWVudC1wcmVmaXgpCiAgICAgICAgIChmb3J3YXJkLWxpbmUgLTEpKQogICAgICAgKGZv cndhcmQtbGluZSkKICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCBjb21tZW50LXByZWZpeCAoc3Bl Y21hbi1lbmQtb2YtbGluZS1wb3MpIG5pbCkKICAgICAgIChnb3RvLWNoYXIgKG1hdGNoLWJlZ2lu bmluZyAwKSkKICAgICAgICAgCiAgICAgICAoc2V0LW1hcmtlciBiZWctbWFya2VyIChwb2ludCkp CiAgICAgICAoc2V0cSBjb21tZW50LXRleHQgKGJ1ZmZlci1zdWJzdHJpbmcgKG1hdGNoLWVuZCAw KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLWVu ZC1vZi1saW5lLXBvcykpKQogICAgICAgKGVuZC1vZi1saW5lKQogICAgICAgKHNldC1tYXJrZXIg ZW5kLW1hcmtlciAocG9pbnQpKQogICAgICAgICAKICAgICAgIChmb3J3YXJkLWxpbmUpCiAgICAg ICAod2hpbGUKICAgICAgICAgICAoZXF1YWwgKHNwZWNtYW4taW50ZXJuYWwtaXMtbWF0Y2hpbmct Y29tbWVudC1saW5lIGNvbW1lbnQtY29sdW1uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LXByZWZpeCkKICAgICAgICAg ICAgICAgICAgJ2NsZWFuKQogICAgICAgICAocmUtc2VhcmNoLWZvcndhcmQgY29tbWVudC1wcmVm aXggKHNwZWNtYW4tZW5kLW9mLWxpbmUtcG9zKSBuaWwpCiAgICAgICAgIChzZXRxIGNvbW1lbnQt dGV4dAogICAgICAgICAgICAgICAoY29uY2F0IGNvbW1lbnQtdGV4dAogICAgICAgICAgICAgICAg ICAgICAgICJcbiIKICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0cmluZyAobWF0 Y2gtZW5kIDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwZWNt YW4tZW5kLW9mLWxpbmUtcG9zKSkpKQogICAgICAgICAoc2V0LW1hcmtlciBlbmQtbWFya2VyIChz cGVjbWFuLWVuZC1vZi1saW5lLXBvcykpCiAgICAgICAgIChmb3J3YXJkLWxpbmUpKQogICAgICAg KQogICAgICkKCiAgICAoc3BlY21hbi1jb21tZW50LXN0YXJ0LWVudHJ5ICJDb21tZW50LUVkaXQi CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI8Q29tbWVudCBFZGl0PiAiCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQtcHJlZml4CiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNvbW1lbnQtY29sdW1uCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJlZy1tYXJrZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmls CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50LWJ1ZmZlcikKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVuZC1tYXJrZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVu dC10ZXh0KQogICAgKSkKICAKCjs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjs7IHByb3ZpZGUgYSBz cGVjbWFuLWhlYWRlciBmdW5jdGlvbi4KOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCgooZGVmdW4g c3BlY21hbi1oZWFkZXIgKCkKICAiSW5zZXJ0IGEgc3RhbmRhcmQgU3BlY21hbiBmaWxlIGhlYWRl ci4iCiAgKGludGVyYWN0aXZlKQogIChsZXQgKChzdGFydCAocG9pbnQpKSkKICAoaW5zZXJ0ICJc Ci8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLy8gVGl0bGUgICAgICAgICA6IDx0aXRsZT4KLy8gUHJv amVjdCAgICAgICA6IDxwcm9qZWN0PgovLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi8vIEZpbGUgICAg ICAgICAgOiA8ZmlsZW5hbWU+Ci8vIEF1dGhvciAgICAgICAgOiA8YXV0aG9yPgovLyBDcmVhdGVk ICAgICAgIDogPGNyZWRhdGU+Ci8vIExhc3QgbW9kaWZpZWQgOiA8bW9kZGF0ZT4KLy8tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQovLyBEZXNjcmlwdGlvbiA6Ci8vIDxkZXNjcmlwdGlvbj4KLy8tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQovLyBDb3B5cmlnaHQgKGMpIDxjb3B5ZGF0ZT4gYnkgPGNvbXBhbnk+LiBU aGlzIG1vZGVsIGlzIHRoZSBjb25maWRlbnRpYWwgYW5kCi8vIHByb3ByaWV0YXJ5IHByb3BlcnR5 IG9mIDxjb21wYW55PiBhbmQgdGhlIHBvc3Nlc3Npb24gb3IgdXNlIG9mIHRoaXMKLy8gZmlsZSBy ZXF1aXJlcyBhIHdyaXR0ZW4gbGljZW5zZSBmcm9tIDxjb21wYW55Pi4KLy8tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KLy8gTW9kaWZpY2F0aW9uIGhpc3RvcnkgOgovLyA8bW9kaGlzdD4KLy8tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQoKIikKICAgIChnb3RvLWNoYXIgc3RhcnQpCiAgICAoc2VhcmNoLWZvcndh cmQgIjxmaWxlbmFtZT4iKQogICAgKHJlcGxhY2UtbWF0Y2ggKGJ1ZmZlci1uYW1lKSB0IHQpCiAg ICAoc2VhcmNoLWZvcndhcmQgIjxhdXRob3I+IikgKHJlcGxhY2UtbWF0Y2ggIiIgdCB0KQogICAg KGluc2VydCAodXNlci1mdWxsLW5hbWUpKQogICAgKGluc2VydCAiICA8IiAodXNlci1sb2dpbi1u YW1lKSAiQCIgKHN5c3RlbS1uYW1lKSAiPiIpCiAgICAoc2VhcmNoLWZvcndhcmQgIjxjcmVkYXRl PiIpIChyZXBsYWNlLW1hdGNoICIiIHQgdCkKICAgIChzcGVjbWFuLWluc2VydC1kYXRlKQogICAg KHNlYXJjaC1mb3J3YXJkICI8bW9kZGF0ZT4iKSAocmVwbGFjZS1tYXRjaCAiIiB0IHQpCiAgICAo c3BlY21hbi1pbnNlcnQtZGF0ZSkKICAgIChzZWFyY2gtZm9yd2FyZCAiPGNvcHlkYXRlPiIpIChy ZXBsYWNlLW1hdGNoICIiIHQgdCkKICAgIChzcGVjbWFuLWluc2VydC15ZWFyKQogICAgKHNlYXJj aC1mb3J3YXJkICI8bW9kaGlzdD4iKSAocmVwbGFjZS1tYXRjaCAiIiB0IHQpCiAgICAoc3BlY21h bi1pbnNlcnQtZGF0ZSkKICAgIChpbnNlcnQgIiA6IGNyZWF0ZWQiKQogICAgKGdvdG8tY2hhciBz dGFydCkKICAgIChsZXQgKHN0cmluZykKICAgICAgKHNldHEgc3RyaW5nIChyZWFkLXN0cmluZyAi dGl0bGU6ICIpKQogICAgICAoc2VhcmNoLWZvcndhcmQgIjx0aXRsZT4iKQogICAgICAocmVwbGFj ZS1tYXRjaCBzdHJpbmcgdCB0KQogICAgICAoc2V0cSBzdHJpbmcgKHJlYWQtc3RyaW5nICJwcm9q ZWN0OiAiIHNwZWNtYW4tcHJvamVjdCkpCiAgICAgIChtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2Nh bCAnc3BlY21hbi1wcm9qZWN0KQogICAgICAoc2V0cSBzcGVjbWFuLXByb2plY3Qgc3RyaW5nKQog ICAgICAoc2VhcmNoLWZvcndhcmQgIjxwcm9qZWN0PiIpCiAgICAgIChyZXBsYWNlLW1hdGNoIHN0 cmluZyB0IHQpCiAgICAgIChzZXRxIHN0cmluZyAocmVhZC1zdHJpbmcgIkNvbXBhbnk6ICIgc3Bl Y21hbi1jb21wYW55KSkKICAgICAgKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdzcGVjbWFu LWNvbXBhbnkpCiAgICAgIChzZXRxIHNwZWNtYW4tY29tcGFueSBzdHJpbmcpCiAgICAgIChzZWFy Y2gtZm9yd2FyZCAiPGNvbXBhbnk+IikKICAgICAgKHJlcGxhY2UtbWF0Y2ggc3RyaW5nIHQgdCkK ICAgICAgKHNlYXJjaC1mb3J3YXJkICI8Y29tcGFueT4iKQogICAgICAocmVwbGFjZS1tYXRjaCBz dHJpbmcgdCB0KQogICAgICAoc2VhcmNoLWZvcndhcmQgIjxjb21wYW55PiIpCiAgICAgIChyZXBs YWNlLW1hdGNoIHN0cmluZyB0IHQpCiAgICAgIChzZWFyY2gtYmFja3dhcmQgIjxkZXNjcmlwdGlv bj4iKQogICAgICAocmVwbGFjZS1tYXRjaCAiIiB0IHQpCiAgKSkpCgo7OyBzcGVjbWFuLWhlYWRl ciBVc2VzIHRoZSBzcGVjbWFuLWluc2VydC1kYXRlIGZ1bmN0aW9uCgooZGVmdW4gc3BlY21hbi1p bnNlcnQtZGF0ZSAoKQogICJJbnNlcnQgZGF0ZSBmcm9tIHRoZSBzeXN0ZW0uIgogIChpbnRlcmFj dGl2ZSkKICAobGV0ICgodGltcG9zKQogICAgICAgICkKICAgIChzZXRxIHRpbXBvcyAocG9pbnQp KQogICAgKGlmIHNwZWNtYW4tZGF0ZS1zY2llbnRpZmljLWZvcm1hdAoJKHNoZWxsLWNvbW1hbmQg ICJkYXRlIFwiK0AlWS8lbS8lZFwiIiB0KQogICAgICAoc2hlbGwtY29tbWFuZCAgImRhdGUgXCIr QCVkLiVtLiVZXCIiIHQpKQogICAgKHNlYXJjaC1mb3J3YXJkICJAIikKICAgIChkZWxldGUtcmVn aW9uIHRpbXBvcyAocG9pbnQpKQogICAgKGVuZC1vZi1saW5lKSkKICAoZGVsZXRlLWNoYXIgMSkp CgooZGVmdW4gc3BlY21hbi1pbnNlcnQteWVhciAoKQogICJJbnNlcnQgeWVhciBmcm9tIHRoZSBz eXN0ZW0uIgogIChpbnRlcmFjdGl2ZSkKICAobGV0ICgodGltcG9zKQogICAgICAgICkKICAgIChz ZXRxIHRpbXBvcyAocG9pbnQpKQogICAgKHNoZWxsLWNvbW1hbmQgICJkYXRlIFwiK0AlWVwiIiB0 KQogICAgKHNlYXJjaC1mb3J3YXJkICJAIikKICAgIChkZWxldGUtcmVnaW9uIHRpbXBvcyAocG9p bnQpKQogICAgKGVuZC1vZi1saW5lKSkKICAoZGVsZXRlLWNoYXIgMSkpCgoKOy0tPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PS0tCjs7IEJ1ZyByZXBvcnRpbmcKOy0tPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PS0tCgoo cmVxdWlyZSAncmVwb3J0ZXIpCgooZGVmdW4gc3BlY21hbi1zdWJtaXQtYnVnLXJlcG9ydCAoKQog ICJTdWJtaXQgdmlhIG1haWwgYSBidWcgcmVwb3J0IG9uIHNwZWNtYW4tbW9kZS5lbCIKICAoaW50 ZXJhY3RpdmUpCiAgKGxldCAoKHJlcG9ydGVyLXByb21wdC1mb3Itc3VtbWFyeS1wIHQpKQogICAg KHJlcG9ydGVyLXN1Ym1pdC1idWctcmVwb3J0CiAgICAgInN1cHBvcnRAY2FkZW5jZS5jb20iCiAg ICAgKGNvbmNhdCAic3BlY21hbi1tb2RlIHYiIChzdWJzdHJpbmcgc3BlY21hbi1tb2RlLXZlcnNp b24gMTIgLTMpKQogICAgICcoCiAgICAgICBzcGVjbWFuLWJhc2ljLW9mZnNldAogICAgICAgc3Bl Y21hbi1jb250aW51ZWQtbGluZS1vZmZzZXQKICAgICAgIHNwZWNtYW4tbGluZS11cC1icmFja2V0 CiAgICAgICBzcGVjbWFuLWxpbmUtdXAtcGFyZW4KICAgICAgIHNwZWNtYW4tYXV0by1uZXdsaW5l CiAgICAgICBzcGVjbWFuLXRhYi13aWR0aAogICAgICAgc3BlY21hbi1kYXRlLXNjaWVudGlmaWMt Zm9ybWF0CiAgICAgICBzcGVjbWFuLWNvbXBhbnkKICAgICAgIHNwZWNtYW4tcHJvamVjdAogICAg ICAgKQogICAgIG5pbCBuaWwKICAgICAoY29uY2F0ICJIZWxsbywKCkkgd2FudCB0byByZXBvcnQg YSBidWcuICBJJ3ZlIHJlYWQgdGhlIGBCdWdzJyBzZWN0aW9uIG9mIGBJbmZvJyBvbgpFbWFjcywg c28gSSBrbm93IGhvdyB0byBtYWtlIGEgY2xlYXIgYW5kIHVuYW1iaWd1b3VzIHJlcG9ydC4gIFRv IGdldAp0byB0aGF0IEluZm8gc2VjdGlvbiwgSSB0eXBlZAoKTS14IGluZm8gUkVUIG0gIiBpbnZv Y2F0aW9uLW5hbWUgIiBSRVQgbSBidWdzIFJFVAoKQmVmb3JlIEkgZ28gZnVydGhlciwgSSB3YW50 IHRvIHNheSB0aGF0IFNwZWNtYW4gbW9kZSBoYXMgY2hhbmdlZCBteQpsaWZlLiAgSSBzYXZlIHNv IG11Y2ggdGltZSwgbXkgZmlsZXMgYXJlIGNvbG9yZWQgbmljZWx5LCBteSBjbyB3b3JrZXJzCmZp bmFsbHkgcmVzcGVjdCBteSBjb2RpbmcgYWJpbGl0eS4uLiB1bnRpbCBub3cuICBJJ2QgcmVhbGx5 IGFwcHJlY2lhdGUKYW55dGhpbmcgeW91IGNvdWxkIGRvIHRvIGhlbHAgbWUgb3V0IHdpdGggdGhp cyBleHRyZW1lbHkgbWlub3IKZGVmaWNpZW5jeSBpbiB0aGUgcHJvZHVjdC4KClRvIHJlcHJvZHVj ZSB0aGUgYnVnLCBzdGFydCBhIGZyZXNoIEVtYWNzIHZpYSAiIGludm9jYXRpb24tbmFtZSAiCi1u by1pbml0LWZpbGUgLW5vLXNpdGUtZmlsZScuICBJbiBhIG5ldyBidWZmZXIsIGluIHNwZWNtYW4g bW9kZSwgdHlwZQp0aGUgY29kZSBpbmNsdWRlZCBiZWxvdy4KCkdpdmVuIHRob3NlIGxpbmVzLCBJ IGV4cGVjdGVkIAoKICBURUxMIE1FIFdIQVQgWU9VIEVYUEVDVEVECgp0byBoYXBwZW47CmJ1dCBp bnN0ZWFkLCAKCiAgVEVMTCBNRSBUSEUgQkFEIFRISU5HIFRIQVQgSEFQUEVORUQKCmhhcHBlbnMh LgoKICBHSVZFIE1FIENPREUgU1VGRklDSUVOVCBUTyBERU1PTlNUUkFURSBUSEUgUFJPQkxFTQoK PT0gVGhlIGNvZGU6ID09IikpKSkKCgoKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzsgU1BFQ01B TiBDT01NRU5UIE1PREUKOzsgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCjs7IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCjs7IFRoZSBtYWpvciBtb2RlIGZ1bmN0aW9uLgo7OwoKKGRlZnVuIHNwZWNtYW4tY29t bWVudC1tb2RlICgpCiAgIk1ham9yIG1vZGUgZm9yIGVkaXRpbmcgY29tbWVudHMgZm9yIFNwZWNt YW4uCgpXaGlsZSB5b3UgYXJlIGVudGVyaW5nIGEgY29tbWVudCBmb3IgYSB2ZXJzaW9uLCB0aGUg Zm9sbG93aW5nCmFkZGl0aW9uYWwgYmluZGluZ3Mgd2lsbCBiZSBpbiBlZmZlY3QuCgpcXFtzcGVj bWFuLWNvbW1lbnQtZmluaXNoXSAgICAgICAgICAgcHJvY2VlZCB3aXRoIGNoZWNrIGluLCBlbmRp bmcgY29tbWVudAoKRW50cnkgdG8gdGhlIHNwZWNtYW4tY29tbWVudC1tb2RlIGNhbGxzIHRoZSB2 YWx1ZSBvZiB0ZXh0LW1vZGUtaG9vaywgdGhlbgp0aGUgdmFsdWUgb2Ygc3BlY21hbi1jb21tZW50 LW1vZGUtaG9vay4KCkdsb2JhbCB1c2VyIG9wdGlvbnM6CiIKICAoaW50ZXJhY3RpdmUpCgogIDs7 IE1ham9yIG1vZGVzIGFyZSBzdXBwb3NlZCB0byBqdXN0IChraWxsLWFsbC1sb2NhbC12YXJpYWJs ZXMpCiAgOzsgYnV0IHdlIHJlbHkgb24gc3BlY21hbi1jb21tZW50LXBhcmVudC1idWZmZXIgYWxy ZWFkeSBoYXZpbmcgYmVlbiBzZXQKICA7OwogIDs7KGxldCAoKHBhcmVudCBzcGVjbWFuLWNvbW1l bnQtcGFyZW50LWJ1ZmZlcikpCiAgOzsgIChraWxsLWFsbC1sb2NhbC12YXJpYWJsZXMpCiAgOzsg IChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ3NwZWNtYW4tY29tbWVudC1wYXJlbnQtYnVmZmVy KSBwYXJlbnQpKQoKICAoc2V0cSBtYWpvci1tb2RlICdzcGVjbWFuLWNvbW1lbnQtbW9kZSkKICAo c2V0cSBtb2RlLW5hbWUgIlNwZWNtYW4vQ29tbWVudCIpCgogIChzZXQtc3ludGF4LXRhYmxlIHRl eHQtbW9kZS1zeW50YXgtdGFibGUpCiAgKHVzZS1sb2NhbC1tYXAgc3BlY21hbi1jb21tZW50LW1v ZGUtbWFwKQogIChzZXRxIGxvY2FsLWFiYnJldi10YWJsZSB0ZXh0LW1vZGUtYWJicmV2LXRhYmxl KQoKICAobWFrZS1sb2NhbC12YXJpYWJsZSAnc3BlY21hbi1jb21tZW50LW9wZXJhbmRzKQoKICAo c2V0LWJ1ZmZlci1tb2RpZmllZC1wIG5pbCkKICAoc2V0cSBidWZmZXItZmlsZS1uYW1lIG5pbCkK ICAocnVuLWhvb2tzICd0ZXh0LW1vZGUtaG9vayAnc3BlY21hbi1jb21tZW50LW1vZGUtaG9vaykp Cgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo7OyBUaGUga2V5bWFwLgo7OwoKKGRlZnZhciBzcGVj bWFuLWNvbW1lbnQtbW9kZS1tYXAgbmlsKQooaWYgc3BlY21hbi1jb21tZW50LW1vZGUtbWFwCiAg ICBuaWwKICAoc2V0cSBzcGVjbWFuLWNvbW1lbnQtbW9kZS1tYXAgKG1ha2Utc3BhcnNlLWtleW1h cCkpCiAgKGRlZmluZS1rZXkgc3BlY21hbi1jb21tZW50LW1vZGUtbWFwICJcQy1jXEMtYyIgJ3Nw ZWNtYW4tY29tbWVudC1maW5pc2gpKQoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KOzsgQ29uc3Rh bnRzLgo7OwoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KOzsgVmFyaWFibGVzLgo7OwoKKGRlZnZh ciBzcGVjbWFuLWNvbW1lbnQtcHJlZml4IG5pbCkKKGRlZnZhciBzcGVjbWFuLWNvbW1lbnQtaW5k ZW50IG5pbCkKKGRlZnZhciBzcGVjbWFuLWNvbW1lbnQtaWdub3JlLWZpcnN0LWxpbmUtcHJlZml4 IG5pbCkKKGRlZnZhciBzcGVjbWFuLWNvbW1lbnQtd2luZG93LWNvbmZpZyBuaWwpCihkZWZ2YXIg c3BlY21hbi1jb21tZW50LWNoYWluZWQtY29tbWVudCBuaWwpCgooZGVmdmFyIHNwZWNtYW4tY29t bWVudC1iZWdpbi1tYXJrIG5pbCkKKGRlZnZhciBzcGVjbWFuLWNvbW1lbnQtZW5kLW1hcmsgbmls KQoKOzsgSW4gc2V2ZXJhbCBjb250ZXh0cywgdGhpcyBpcyBhIGxvY2FsIHZhcmlhYmxlIHRoYXQg cG9pbnRzIHRvIHRoZSBidWZmZXIgZm9yCjs7IHdoaWNoIGl0IHdhcyBtYWRlIChlaXRoZXIgYSBm aWxlLCBvciBhIFNwZWNtYW4gZGlyZWQgYnVmZmVyKS4KOzsKKGRlZnZhciBzcGVjbWFuLWNvbW1l bnQtcGFyZW50LWJ1ZmZlciBuaWwpCgoobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwgJ3NwZWNt YW4tY29tbWVudC1wcmVmaXgpCihtYWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnc3BlY21hbi1j b21tZW50LWluZGVudCkKKG1ha2UtdmFyaWFibGUtYnVmZmVyLWxvY2FsICdzcGVjbWFuLWNvbW1l bnQtaWdub3JlLWZpcnN0LWxpbmUtcHJlZml4KQoobWFrZS12YXJpYWJsZS1idWZmZXItbG9jYWwg J3NwZWNtYW4tY29tbWVudC13aW5kb3ctY29uZmlnKQoobWFrZS12YXJpYWJsZS1idWZmZXItbG9j YWwgJ3NwZWNtYW4tY29tbWVudC1jaGFpbmVkLWNvbW1lbnQpCihtYWtlLXZhcmlhYmxlLWJ1ZmZl ci1sb2NhbCAnc3BlY21hbi1jb21tZW50LWJlZ2luLW1hcmspCihtYWtlLXZhcmlhYmxlLWJ1ZmZl ci1sb2NhbCAnc3BlY21hbi1jb21tZW50LWVuZC1tYXJrKQoobWFrZS12YXJpYWJsZS1idWZmZXIt bG9jYWwgJ3NwZWNtYW4tY29tbWVudC1wYXJlbnQtYnVmZmVyKQoKOzsgLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KOzsgQ29tbWFuZHMgYW5kIGZ1bmN0aW9ucwo7OwoKOzsgLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KKGRlZnVuIHNwZWNtYW4tY29tbWVudC1zdGFydC1lbnRyeSAodW5pcXVpZmllcgogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9tcHQKICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcHJlZml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGluZGVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWctbWFyawogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3B0aW9uYWwgaWdub3JlLWZpcnN0CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQtYnVmZmVy CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFpbmVkLWNv bW1lbnQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZC1t YXJrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50 LXNlZWQpCgogICJBY2NlcHQgYSBjb21tZW50IGJ5IHBvcHBpbmcgdXAgYSBzcGVjbWFuLWNvbW1l bnQtbW9kZSBidWZmZXIKd2l0aCBhIG5hbWUgZGVyaXZlZCBmcm9tIFVOSVFVSUZJRVIsIGFuZCBl bWl0dGluZyBQUk9NUFQgaW4gdGhlIG1pbmlidWZmZXIuCgpUaGUgYXJndW1lbnQgUFJFRklYIGlz IGFkZGVkIGJlZm9yZSBhbGwgbGluZXMgZXhjZXB0IHRoZSBmaXJzdCwgd2l0aCBJTkRFTlQKc3Bh Y2VzIGFkZGVkIGJlZm9yZSBpdC4KCnRoZSBCRUctTUFSSyBzcGVjaWZpZXMgd2hlcmUgdGhlIGNv bW1lbnQgdGV4dCBzaG91bGQgYmUgaW5zZXJ0ZWQsIHdpdGggYW4gb3B0aW9uYWwKRU5ELU1BUksg YWxsb3dpbmcgcmVwbGFjZW1lbnQgaW5zdGVhZCBvZiBpbnNlcnRpb24uCgpPcHRpb25hbCA2dGgg YXJndW1lbnQgc3BlY2lmaWVzIHRvIG5vdCBhZGQgdGhlIHByZWZpeCB0byB0aGUgZmlyc3QgbGlu ZSB3aGVuIG5vbi1uaWwuCgpPcHRpb25hbCA3dGggYXJndW1lbnQgc3BlY2lmaWVzIGEgUEFSRU5U LUJVRkZFUiB0byByZXR1cm4gdG8gd2hlbiB0aGUgb3BlcmF0aW9uCmlzIGNvbXBsZXRlLgoKT3B0 aW9uYWwgOHRoIGFyZ3VtZW50IHNwZWNpZmllcyBpZiB0aGUgd2luZG93IGNvbmZpZ3VyYXRpb24g c2hvdWxkIGJlIHJlc3RvcmVkLAp3aGljaCBpcyB0cnVlIGZvciBub3JtYWwgY29tbWVudCBidWZm ZXJzIGJ1dCBmYWxzZSBmb3IgY2hhaW5lZCBjb21tZW50IGJ1ZmZlcnMKKHRob3NlIHdoZXJlIGEg Y29tbWVudCBidWZmZXIgd2hlbiBmaW5pc2hlZCBwYXNzZXMgZm9jdXMgdG8gYW5vdGhlciBvbmUp LgoKT3B0aW9uYWwgMTB0aCBhcmd1bWVudCBzcGVjaWZpZXMgYSBDT01NRU5ULVNFRUQgdG8gaW5z ZXJ0IGluIHRoZSBjb21tZW50IGJ1ZmZlciBmb3IKdGhlIHVzZXIgdG8gZWRpdC4iCgogIChsZXQg KChjb21tZW50LWJ1ZmZlciAgICAgKGdldC1idWZmZXItY3JlYXRlIChmb3JtYXQgIipDb21tZW50 LSVzKiIgdW5pcXVpZmllcikpKQogICAgICAgIChvbGQtd2luZG93LWNvbmZpZyAgKGN1cnJlbnQt d2luZG93LWNvbmZpZ3VyYXRpb24pKQogICAgICAgIChwYXJlbnQgICAgICAgICAgICAgKG9yIHBh cmVudC1idWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY3VycmVudC1idWZm ZXIpKSkKICAgICAgICApCiAgICAocG9wLXRvLWJ1ZmZlciBjb21tZW50LWJ1ZmZlcikKCiAgICAo c2V0cSBzcGVjbWFuLWNvbW1lbnQtd2luZG93LWNvbmZpZyAgICAgICAgICAgICBvbGQtd2luZG93 LWNvbmZpZykKICAgIChzZXRxIHNwZWNtYW4tY29tbWVudC1wYXJlbnQtYnVmZmVyICAgICAgICAg ICAgIHBhcmVudCkKICAgIChzZXRxIHNwZWNtYW4tY29tbWVudC1wcmVmaXggICAgICAgICAgICAg ICAgICAgIHByZWZpeCkKICAgIChzZXRxIHNwZWNtYW4tY29tbWVudC1pbmRlbnQgICAgICAgICAg ICAgICAgICAgIGluZGVudCkKICAgIChzZXRxIHNwZWNtYW4tY29tbWVudC1pZ25vcmUtZmlyc3Qt bGluZS1wcmVmaXggIGlnbm9yZS1maXJzdCkKICAgIChzZXRxIHNwZWNtYW4tY29tbWVudC1iZWdp bi1tYXJrICAgICAgICAgICAgICAgIGJlZy1tYXJrKQogICAgKHNldHEgc3BlY21hbi1jb21tZW50 LWVuZC1tYXJrICAgICAgICAgICAgICAgICAgZW5kLW1hcmspCiAgICAoc2V0cSBzcGVjbWFuLWNv bW1lbnQtY2hhaW5lZC1jb21tZW50ICAgICAgICAgICBjaGFpbmVkLWNvbW1lbnQpCgogICAgKHNl dHEgcG9wLXVwLXdpbmRvd3MgdCkKCiAgICAoc3BlY21hbi1jb21tZW50LW1vZGUpCiAgICAoYXV0 by1maWxsLW1vZGUgMSkKICAgIChzZXRxIGZpbGwtY29sdW1uICgtIHNwZWNtYW4tbWF4LWxpbmUt bGVuZ3RoCiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRlbnQKICAgICAgICAgICAgICAgICAg ICAgICAgIChsZW5ndGggcHJlZml4KSkpCiAgICAKICAgIChpZiBjb21tZW50LXNlZWQKICAgICAg ICAoaW5zZXJ0IGNvbW1lbnQtc2VlZCkpCiAgICAKICAgIChtZXNzYWdlICIlcyAgVHlwZSBDLWMg Qy1jIHdoZW4gZG9uZS4iIHByb21wdCkpKQoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKGRlZnVu IHNwZWNtYW4tY29tbWVudC1jbGVhbnVwICgpCgogIDs7IFJlbW92ZSB1c2VsZXNzIHdoaXRlc3Bh Y2UuCiAgOzsKICAoZ290by1jaGFyIChwb2ludC1taW4pKQogICh3aGlsZSAocmUtc2VhcmNoLWZv cndhcmQgIlsgXHRdKyQiIG5pbCB0KQogICAgKHJlcGxhY2UtbWF0Y2ggIiIpKQoKICA7OyBSZW1v dmUgdHJhaWxpbmcgbmV3bGluZXMsIHdoaXRlc3BhY2UuCiAgOzsgCjs7ICAoZ290by1jaGFyIChw b2ludC1tYXgpKQo7OyAgKHNraXAtY2hhcnMtYmFja3dhcmQgIiBcblx0IikKOzsgIChkZWxldGUt cmVnaW9uIChwb2ludCkgKHBvaW50LW1heCkpCgogIDs7IEFkZCB0aGUgcHJlZml4IHRvIGVhY2gg bGluZQogIDs7CiAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAoaWYgKG5vdCBzcGVjbWFuLWNv bW1lbnQtaWdub3JlLWZpcnN0LWxpbmUtcHJlZml4KQogICAgICAoaW5zZXJ0IHNwZWNtYW4tY29t bWVudC1wcmVmaXgpKQogICh3aGlsZSAoc2VhcmNoLWZvcndhcmQgIlxuIiBuaWwgdCkKICAgIChp bnNlcnQgKG1ha2Utc3RyaW5nIHNwZWNtYW4tY29tbWVudC1pbmRlbnQgP1wgKSkKICAgIChpbnNl cnQgc3BlY21hbi1jb21tZW50LXByZWZpeCkpKQoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKGRl ZnVuIHNwZWNtYW4tY29tbWVudC1maW5pc2ggKCkKICAiQ29tcGxldGUgdGhlIG9wZXJhdGlvbiBp bXBsaWVkIGJ5IHRoZSBjdXJyZW50IGNvbW1lbnQuIgogIChpbnRlcmFjdGl2ZSkKCiAgOztDbGVh biBhbmQgcmVjb3JkIHRoZSBjb21tZW50IGluIHRoZSByaW5nLgogIDs7CiAgKGxldCAoKGNvbW1l bnQtYnVmZmVyIChjdXJyZW50LWJ1ZmZlcikpCiAgICAgICAgKGNvbW1lbnQtdGV4dCAgIChwcm9n bgogICAgICAgICAgICAgICAgICAgICAgICAgIChzcGVjbWFuLWNvbW1lbnQtY2xlYW51cCkKICAg ICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN0cmluZykpKQogICAgICAgICkKCiAgICA7 OyBSZXR1cm4gdG8gInBhcmVudCIgYnVmZmVyIG9mIHRoaXMgb3BlcmF0aW9uLgogICAgOzsgUmVt b3ZlIGNvbW1lbnQgd2luZG93LgogICAgOzsKICAgIChsZXQgKChvbGQtd2luZG93LWNvbmZpZyAg c3BlY21hbi1jb21tZW50LXdpbmRvdy1jb25maWcpCiAgICAgICAgICAoY2hhaW5lZC1jb21tZW50 ICAgIHNwZWNtYW4tY29tbWVudC1jaGFpbmVkLWNvbW1lbnQpCiAgICAgICAgICAoYmVnLW1hcmsg ICAgICAgICAgIHNwZWNtYW4tY29tbWVudC1iZWdpbi1tYXJrKQogICAgICAgICAgKGVuZC1tYXJr ICAgICAgICAgICBzcGVjbWFuLWNvbW1lbnQtZW5kLW1hcmspCiAgICAgICAgICAoZWRpdGVkLWJ1 ZmZlciAgICAgIChtYXJrZXItYnVmZmVyIHNwZWNtYW4tY29tbWVudC1iZWdpbi1tYXJrKSkKICAg ICAgICAgICkKICAgICAgKHNldC1idWZmZXIgZWRpdGVkLWJ1ZmZlcikKICAgICAgKGRlbGV0ZS13 aW5kb3dzLW9uIGNvbW1lbnQtYnVmZmVyKQogICAgICAoa2lsbC1idWZmZXIgY29tbWVudC1idWZm ZXIpCiAgICAgIAogICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAoaWYgKG1hcmtlcnAgZW5k LW1hcmspCiAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIGJlZy1tYXJrIGVuZC1tYXJrKSkKICAg ICAgICAoZ290by1jaGFyIGJlZy1tYXJrKQogICAgICAgIChpbnNlcnQgY29tbWVudC10ZXh0KSkK CiAgICAgIChwb3AtdG8tYnVmZmVyIHNwZWNtYW4tY29tbWVudC1wYXJlbnQtYnVmZmVyKQogICAg ICAoaWYgKGFuZCBvbGQtd2luZG93LWNvbmZpZwogICAgICAgICAgICAgICAobm90IGNoYWluZWQt Y29tbWVudCkpCiAgICAgICAgICAoc2V0LXdpbmRvdy1jb25maWd1cmF0aW9uIG9sZC13aW5kb3ct Y29uZmlnKSkpKSkKCgo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7OyBTUEVDTUFOIEFEQVBUSVZF IEFVVE8gRklMTAo7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7OyBSZXF1aXJlIHBhY2thZ2UgZmls bGFkYXB0CgoocmVxdWlyZSAnZmlsbGFkYXB0KQoKKGFkZC1ob29rICdzcGVjbWFuLW1vZGUtaG9v awogICcobGFtYmRhICgpIChhdXRvLWZpbGwtbW9kZSAxKSkpCihhZGQtaG9vayAnc3BlY21hbi1t b2RlLWhvb2sKICAnKGxhbWJkYSAoKSAoZmlsbGFkYXB0LW1vZGUgMSkpKQoKOyBUaGUgZSBjb21t ZW50IHRva2VuIGluIHRoZSB0b2tlbiB0YWJsZSBtdXN0IGFwcGVhdCBiZWZvcmUgdGhlIGJ1bGxl dCB0b2tlbgo7IHNpbmNlIHRoZSBidWxsZXQgcmVnZXhwIGluY2x1ZGUgIi0rIi4gVGhhdCdzIHdo eSB3ZSBwdXQgaXQgaW4gdGhlIGJlZ2luaW5nIG9mCjsgdGhlIGxpc3QuIFRoZSBvcmRlciBpbiB0 aGUgb3RoZXIgbGlzdHMgaXMgbm90IGltcG9ydGFudC4KOyBDKysgc3R5bGUgY29tbWVudHMgYXJl IGFscmVhZHkgcmVjb2duaXplZC4KKHNldGNhciBmaWxsYWRhcHQtdG9rZW4tdGFibGUgJygiLS0t KiIgZS1jb21tZW50KSkKKHNldGNhciBmaWxsYWRhcHQtdG9rZW4tbWF0Y2gtdGFibGUgJyhlLWNv bW1lbnQgZS1jb21tZW50KSkKKHNldGNhciBmaWxsYWRhcHQtdG9rZW4tY29udmVyc2lvbi10YWJs ZSAnKGUtY29tbWVudCAuIGV4YWN0KSkKCgoKOzs7IHNwZWNtYW4tY29tbWVudCBtb2RlIGRlZmlu aXRpb24gZW5kcyBoZXJlCjs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgoKOzsgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KOzsgQlVHUzoKOzsgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KOzsgLSBXaGVuIGNsb3Np bmcgfSBpcyBvbiBzYW1lIGxpbmUgYXMgY29udGFpbmVyIChlLmcuIGZvbygpIGlzIHt9OykgYXV0 byBjb21tZW50Cjs7ICAgaXMgd3JvbmcKOzsgLSBEb2Vzbid0IGRldGVjdCBtZXRob2RzIHdoZW4g cGFyYW1ldGVyIGhhcyAoYml0czopIG1vZGlmaWVyLiBOb3RlIHRoYXQgdGhlcmUKOzsgICBtYXkg YmUgYW55IG51bWJlciBvZiBwYXJhbnRoZXNlcyBuZXN0ZWQuCjs7IC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tCjs7IFRPRE86Cjs7IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjs7Cjs7IC0gcmV2aWV3IFRPRE8g Y29tbWVudHMgZW1iZWRkZWQgaW4gdGhlIGNvZGUuCjs7IC0gYWRkIGNvbW1hbmRzIHRvIHN5bnRh eCBmb3IgZWRpdGluZyBlY29tcy4KOzsgLSBzcGVjbWFuIGludGVyYWN0aW9uIG1vZGUuCjs7IC0g aGlkZXNob3cgaW50ZXJhY3Rpb24gKGV4aXN0cyBpbiBhIHBhcnRpYWwgZm9ybSwgY29tbWVudGVk IG91dCkKOzsgICAtIGNvbW1lbnRzCjs7ICAgLSBmb2xkaW5nIChzdHJ1Y3QsIG1ldGhvZCkKOzsg LSBoZWFkZXJzCjs7ICAgLSBvcHRpbWl6ZSBjcmVhdGlvbiBvZiBoZWFkZXJzCjs7ICAgLSBnZW5l cmFsaXplIGhlYWRlciBjcmVhdGlvbiBpbnRvIG1vZHVsYXIgZnVuY3Rpb25zLCB0byBtYWtlIGl0 IGVhc3kKOzsgICAgIHRvIGFkZCBhbmQgY2hhbmdlIGhlYWRlcnMuCjs7ICAgICAtIHdoaWxlIGF0 IGl0LCBhZGQgYSB0ZXN0IGhlYWRlcjoKOzsgICAgICAgIkZpbGU6XG5BdXRob3I6XG5EYXRlOlxu UHVycG9zZTpcbkV4cGVjdGVkOiIuLi4KOzsgLSBpbmRlbnRhdGlvbiB1Z2x5bmVzczoKOzsgICAt IHRoZSBpbmRlbnRhdGlvbiBhYnN0cmFjdGlvbiBmb3IgW10gaXMgdWdseS4KOzsgICAtIHByb2Js ZW1zIHdpdGggYSBzY29wZSBpbiBhIHBhcmVuIC0gaGFuZGxlZCB0d2ljZS4KOzsgLSBzcGVjbWFu LW1heC1saW5lLWxlbmd0aCBkZWZhdWx0cyB0byA4MCwgd2hpbGUgeC9lbWFjcyBuYXRpdmVseSBv cGVucyA4MAo7OyAgIGNoYXJhY3RlcnMgd2lkZS4gIHRoaXMgd291bGQgYmUgZmluZSwgYnV0IChu ZXdsaW5lKSBpcyBhbHNvIGEgY2hhcmFjdGVyCjs7ICAgYW5kIGNhdXNlcyB3cmFwLWFyb3VuZCBi eSBkZWZhdWx0IC0gd2hpY2ggaXMgdWdseS4KOzsgICAtIGNhbiBiZSBzb2x2ZWQgYnkgY2hhbmdp bmcgdGhlIGRlZmF1bHQgd2lkdGggaW4gLmVtYWNzLCBidXQgdGhpcyBpcwo7OyAgICAgYSBsaXR0 bGUgdG9vIGRlbWFuZGluZy4gIG9uIHRoZSBvdGhlciBoYW5kLCBjaGFuZ2luZyB0aGUgZGVmYXVs dCB0byA3OQo7OyAgICAgYmVjYXVzZSB4L2VtYWNzIGlzIHN0dXBpZCBpc24ndCB0b28gbmljZSBl aXRoZXIuCjs7Cjs7IAo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo7OyBJU1NVRVM6Cjs7IC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCjs7Cjs7ICogY29uc2lkZXIgYy1jb2RlIGNvbW1lbnRzIGluIGFsbCBy ZS1zZWFyY2hlcwo7Owo7OyAtIEMgY29kZSAjOiBpbmRlbnRhdGlvbiBpcyBtZXNzZWQgdXAKOzsg ICAtIGFkZCAiQyBjb2RlICM6IiBhbmQgImVuZCAjIiB0byB1cC9kb3duIHNjb3BlIHF1ZXJpZXMu Cjs7ICAgLSBtaXhlZCBtYWpvci1tb2RlPwo7Owo7OyAtIGluZGVudGF0aW9uIGluY29uc2lzdGVu Y3kgLSBjb21tZW50cyBhcmUgaW5kZW50ZWQgYXMgYSBub3JtYWwgbGluZSwKOzsgICBidXQgaW5z ZXJ0aW9uIGluIGNvbW1lbnQgbW9kZSAob3IgY29tbWVudC1yZWFsaWduKSBoYXMgYSBuaWNlcgo7 OyAgIGluZGVudGF0aW9uLCB3aGVyZSB0aGUgZmlyc3QgY29tbWVudCBsaW5lIGRldGVybWluZXMg dGhlIGluZGVudGF0aW9uLgo7OyAgIHNpbmNlIHRoaXMgY29tbWVudCBtYXkgYmUgb24gYSBub3Jt YWwgbGluZSwgdGhlIGNvbW1lbnQgaW5kZW50YXRpb24KOzsgICBpcyB2YXJpYWJsZS4KOzsgICAt IGNvbW1lbnQgaW5kZW50YXRpb24gc2hvdWxkIGJlIHNlbnNpdGl2ZSB0byBzdWNoIGNvbW1lbnQg YmxvY2tzLgo7Owo7OyAtIHVzYWJpbGl0eSAtIHNvbWUgdGhpbmdzIGFyZSBub3QgaW50dWl0aXZl LCBhbmQgdGhlcmUgaXMgbm90IG11Y2ggaW4KOzsgICB0aGUgd2F5IG9mIGhlbHAuLi4KOzsgICAt IG1ldGhvZC9zdHJ1Y3QgaGVhZGVycyAtIG5lZWQgdG8gYmUgY2FsbGVkIGZyb20gd2l0aGluIHRo ZSByZWxldmFudAo7OyAgICAgc2NvcGUsIG9yIG9uIHRoZSBkZWZpbml0aW9uIGxpbmUuICBUaGlz IGlzIG5vdCBvYnZpb3VzIC0gZS5nLiB3aHkKOzsgICAgIG5vdCBqdXN0IGNhbGwgaXQgYW55d2hl cmUsIGJ1dCB0aGF0IG1ha2VzIGl0IGFjdCBzdHJhbmdlLgo7Owo7Owo7OyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQo7OyBDSEFOR0VTOgo7OyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo7Owo7OyAtIHJldmll d2VkIG1vc3Qgb2YgdGhlIGNvZGUgYW5kIHJlbW92ZWQgYSBsb3Qgb2Ygb2xkIGNydWZ0Lgo7OyAt IGJldHRlciBwZXJmb3JtYW5jZS4KOzsgLSBleHRlcm5hbCBpcyBhIGtleXdvcmQuCjs7IC0gZml4 ZWQgc3BlY21hbi1vcGVuLWUtY29kZS1ibG9jayBvcHRpb25hbCBzcGFjZSBhZGRpdGlvbi4KOzsg LSBkZXNjcmliZS1jb250ZXh0OiAgYWRkZWQgb24gZXZlbnQgbWV0aG9kcywgZml4ZWQgY29udGV4 dCBuYW1lIGFjcXVpc2l0aW9uLgo7OyAtIHNwZWNtYW4taW5kZXg6IGZ1bGx5IHN1cHBvcnRlZC4K OzsgLSBzcGVjbWFuLWluZGV4OiBhY3RpdmF0aW9uIGN1c3RvbWl6YWJsZSAob24gYnkgZGVmYXVs dCkuCjs7IC0gZmllbGQgaGlnaGxpZ2h0aW5nIGZpeGVkLgo7OyAtIGFkZGVkIGV2ZW50IGhpZ2hs aWdodGluZy4KOzsgLSAnVE9ETzonIGluIGNvbW1lbnRzIGlzIG5vdyBoaWdobGlnaHRlZCBhcyB3 YXJuaW5nLgo7OyAtIDxmaWVsZD4gOiAqPG5hbWU+IG5vdyB3b3Jrcy4KOzsgLSBwdW5jdHVhdGlv biBpcyBub3cgaGlnaGxpZ2h0ZWQgKGNvbnRyb2xlZCBieSBjdXN0b21pemFibGUgdmFyaWFibGUp Cjs7ICAgYW5kIGl0IGhhcyBpdHMgb3duIGZhY2UgKGJlY2F1c2UgaXQncyBhbHdheXMgc2luZ2xl IGNoYXIpLgo7OyAtIG1ha2Ugc3BlY21hbi10YWItd2lkdGggYmUgc3BlY21hbi1iYXNpYy1vZmZz ZXQKOzsgLSBmaXhlZCBjdXN0b21pemUtZ3JvdXAgZm9yIHNwZWNtYW4uCjs7IC0gYWRkIG51bWJl ciBoaWdobGlnaHRpbmcuCjs7IC0gZml4ZWQgZXZlbnQgaGlnaGxpZ2h0aW5nLgo7OyAtIHJldmll d2VkLCByZXZpc2VkIGFuZCBvcmdhbml6ZWQga2V5d29yZCBsaXN0IGZvciBzeW50YXggaGlnaGxp Z2h0aW5nLgo7OyAtIGFkZGVkIHN5bnRheCBoaWdobGlnaHRpbmcgZm9yIG1hY3JvIGRlZmluaXRp b24ga2V5d29yZHMuCjs7IC0gZ2VuZXJhbCBldmVudHMgYW5kIHNwZWNpYWwgZXZlbnRzIGFyZSBo aWdobGlnaHRlZCBkaWZmZXJlbnRseS4KOzsgLSBkZXNjcmliZSBjb250ZXh0IC0gY29tcGxldGUg YWxzbyBmb3Igd2hlbiBhbmQgaW50ZXJuYWwgaWZkZWZzLgo7OyAtIGhlYWRlcnM6Cjs7ICAgLSBt b3JlIGludGVsbGlnZW50IC0gZmluZCB0aGUgdGhlIGZpcnN0IGRlZmluaXRpb24gYWJvdmUgdXNp bmcgcmVnZXhwcy4KOzsgICAtIGRlZmluZSBub3cgc3VwcG9ydGVkLgo7OyAgIC0gYWRkZWQgYSBj b21wYWN0IG1vZGUgd2hpY2ggaW5jbHVkZXMganVzdCB0aGUgbmFtZSwgc28gaXQgZG9lc24ndCBu ZWVkCjs7ICAgICBhbnkgdXNlciBpbnRlcmFjdGlvbi4gIHRoaXMgbW9kZSBpcyBub3cgZGVmYXVs dCBzbyBhbGwgdGhlIHNob3J0Y3V0cwo7OyAgICAgYWN0aXZhdGUgaXQuICB0aGUgZnVsbCBtb2Rl IGlzIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbWVudS4KOzsgICAtIHRoZSBoZWFkZXIgaXMgYWRk ZWQgYWJvdmUgYW55IGNvbW1lbnRzIGRpcmVjdGx5IGFib3ZlIHRoZSBkZWZpbml0aW9uLgo7OyAg IC0gYW4gZW1wdHkgbGluZSBpcyBhZGRlZCBhYm92ZSB0aGUgaGVhZGVyLCBpZiB0aGVyZSBpc24n dCBvbmUgYWxyZWFkeS4KOzsgICAtIGFkZGVkIGFuIGF1dG9tYXRpYyBtb2RlIHdoaWNoIGFkZHMg YWxsIGhlYWRlcnMgdG8gdGhlIGN1cnJlbnQgYnVmZmVyLAo7OyAgICAgYWNjZXNzaWJsZSB0aHJv dWdoIHRoZSBtZW51Lgo7OyAgIC0gaGVhZGVycyBpZ25vcmUgc3RydWN0cyB3aXRoIGV4aXN0aW5n IGhlYWRlcnMuCjs7IC0gcGFja2FnZXxwcml2YXRlfHByb3RlY3RlZCBzdHJ1Y3RzLCB1bml0cywg ZXh0ZW5kcywgZmllbGRzLCB0eXBlcywgZXRjJwo7OyAtIGZpeGVkIHNwZWNtYW4tY2xvc2VyLXA6 Cjs7ICAgZXJyb3IgaWYgZW50ZXIgaXMgcHJlc3NlZCBvbiBsYXN0IGxpbmUgYW5kIHRoZXJlIGlz IG5vIHRlcm1pbmF0aW5nICc+Cjs7IC0gc3BlY21hbi1iZWctb2Ytc3RhdGVtZW50IG9rIG5vdyAo d2FzIC0gY2hlY2s6IEMgc3R5bGUgZm9yIGxvb3AgbWVzc2VzCjs7ICAgaW5kZW50YXRpb24gKGZv ciB7aSA9IDA7IGkgPCAxMDsgaSArPSAxfSB7fSkpCjs7IC0gYmV0dGVyIGhhbmRsaW5nIGZvciBz cGVjbWFuIGNvbXBpbGUgYW5kIG1ha2UKOzsgLSBkb250IGluZGVudCBpbiBleC1jb2RlIHJlZ2lv bnMuCjs7IC0gb3B0aW1pemVkIGFsbCBzY29wZSBhbmQgcGFyZW4gc2VhcmNoIGJ5IHVzaW5nIGEg Z2xvYmFsIGRhdGEgc3RydWN0dXJlCjs7ICAgd2hpY2ggaXMgcHJlcGFyZWQgb25jZSAoYSBoYXNo IHRhYmxlKS4KOzsgLSByZXN1bHQvcmV0dXJuIC0gc3BlY2lhbCBmYWNlLgo7OyAtIGlmIChpbmRl eCAhPSBpdF9pbmRleCkgJiYgKHBhdGggaXMgYSBmaWVsZHNfY29uc3RyYWludF9wYXRoIChmY3Ap Cjs7ICAgdGhlIGlmIGhpZ2hsaWdodHMgYXMgYSBmdW5jdGlvbi4KOzsgLSAnYWRkJyBoaWdobGln aHQgaW4gLSByZXN1bHQuYWRkKHs8ZTEnZXhwPjsgPGUyJ2V4cD59KTsKOzsgLSBpbmRlbnRhdGlv biBvZiBlbHNlIGluIGNoZWNrIHRoYXQgZXhwcmVzc2lvbi4KOzsgLSBmaXhlZCBidWcgaW4gc3Bl Y21hbi1za2lwLWJhY2t3YXJkLWNvbW1lbnQtb3Itc3RyaW5nIHdoZW4gc2tpcHBpbmcgYmFjawo7 OyAgIG92ZXIgc3RyaW5ncy4KOzsgLSBpbXByb3ZlZCBzcGVjbWFuLW9wZW4tZS1jb2RlLXNlY3Rp b24KOzsgLSBhZGRlZCBoaWdobGlnaHRpbmcgZm9yIHJlYWRfb25seSgpCjs7IC0gZml4ZWQgaW5k ZW50YXRpb24gYnVnIHdpdGggY29udGludWVkIGxpbmVzIGluIG5ldyBzdGF0ZW1lbnRzLgo7OyAt IFxcdyBpcyBbYS16QS1aMC05X10gaW4gc3ludGF4LXRhYmxlCjs7IC0gYWRkZWQgIi5lIiBhcyBh IHNwZWVkYmFyIHN1cHBvcnRlZCBleHRlbnNpb24gLSBhbGxvd3MgdHJhdmVyc2luZyBlCjs7ICAg ZmlsZXMgaW50ZXJuYWwgc3RydWN0dXJlLCBhcyBjb21wdXRlZCB3aXRoIHNwZWNtYW4taW5kZXgs IHVzaW5nIHRoZQo7OyAgIHNwZWVkYmFyLgo7OyAtIGRlbGV0ZSBrZXkgZG9lc24ndCBkZWxldGUg cmVnaW9uIGV2ZW4gd2hlbiBkZWxldGUtcmVnaW9uIG9wdGlvbiBpcyBzZXQKOzsgICAtIGRlcHJl Y2F0ZWQgc3BlY21hbi1kZWxldGUtY2hhcgo7OyAtIGNhbid0IG9wZW4gbmV3IGUtY29kZSBzZWN0 aW9uIG9uIGFuIGVtcHR5IGZpbGUuCjs7IC0gY2FuJ3QgZWRpdCBhIG5ldyBjb21tZW50IHdoZW4g aXQncyBlbXB0eS4KOzsgLSBjYW4ndCBpbmRlbnQgcmVnaW9uIHdoZW4gdGhlcmUgYXJlIHRvbyBt YW55IGNsb3NpbmcgcGFyZW5zLgo7OyAtIGZpeCBtb3ZlIHRvIHN0YXJ0L2VuZAo7OyAtIGFkZCBh IGZ1bGwgcmVnaW9uIHNjb3BlIGxvY2F0aW5nIGZ1bmN0aW9uLgo7OyAtIG1ham9yIG9wdGltaXph dGlvbiBlZmZvcnQgd2l0aCBtYW55IHJld3JpdGVzLCBjZW50ZXJpbmcgbW9zdGx5IG9uCjs7ICAg dGhlbiBpbmRlbnRhdGlvbiBjb2RlIHBhdGg6Cjs7ICAgc3BlY21hbi1yZS1zZWFyY2gtKiwgc3Bl Y21hbi1pbmRlbnQtcmVnaW9uLCBzcGVjbWFuLWluZGVudC1saW5lLAo7OyAgIHNwZWNtYW4taW1l bnUtY3JlYXRlLW1lbnUsIHNwZWNtYW4tdXAtbGlzdCwKOzsgICBzcGVjbWFuLXNraXAtZm9yd2Fy ZC1jb21tZW50LW9yLXN0cmluZywgc3BlY21hbi1zY29wZS1vZmZzZXQsCjs7ICAgc3BlY21hbi1i ZWctb2Ytc3RhdGVtZW50LCBzcGVjbWFuLWJlZy1vZi1kZWZ1bi4KOzsgLSBjaGFuZ2VkIHZlcmlz aXR5IHJlZmVyZW5jZXMgdG8gY2FkZW5jZSByZWZlcmVuY2VzLgo7Owo7OyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQoKKHByb3ZpZGUgJ3NwZWNtYW4tbW9kZSkKKHJ1bi1ob29rcyAnc3BlY21hbi1tb2Rl LWxvYWQtaG9vaykKIAo7Ozsgc3BlY21hbi1tb2RlLmVsIGVuZHMgaGVyZQo= --_007_A3E7DC22EFEFA2438DAF7E58C33ADEBA05EE3F0B1BMAILEU2global_--