
From: jabley@automagic.org (Joe Abley)
Date: Wed, 27 Nov 2002 21:48:56 -0500
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <3DE43695.1000301@att.com>
Message-ID: <F0624150-027B-11D7-982C-00039312C852@automagic.org>

On Tuesday, Nov 26, 2002, at 22:05 Canada/Eastern, Tony Hansen wrote:

> It should probably be any 2xx code.
>
> And of course, if a 3xx code is returned, the Location header should 
> be looked at for a new URL, and the new URL checked, repeatedly until 
> a non-3xx code is seen.
>
> And provisions for HTTP proxies would need to be included, such as 
> supporting $http_proxy on unix (the environment variable to indicate 
> the proxy address used by numerous other web programs).

Or you could just shell out to $HTTP_GET_UTILITY, defaulting to 
something reasonable if that's not defined.



From: tony@att.com (Tony Hansen)
Date: Tue, 26 Nov 2002 22:05:57 -0500
Subject: [xml2rfc] the "next rev" coming soon...
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us>	<2147483647.1038247034@nifty-jr.west.sun.com> <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <3DE43695.1000301@att.com>

Marshall Rose wrote:
>>* I also suggest you document the use of <artwork type="abnf"> (with 
>>precisely that punctuation and capitalization).  I plan to make the ABNF 
>>validator at www.apps.ietf.org aware of that construct so one can paste the 
>>XML RFC source in for ABNF validation.  Of course then we need a processing 
>>instruction like <?abnf include="rfc####.abnf"?> which raises interesting 
>>issues...
> 
> 
> let say that i add something to xml2rfc to that when it sees
>     
>     <artwork type='abnf'>
>     ...
>     </artwork>
>     
> that it passes the contents to a URL and looks for a 200 code coming
> back. If it doesn't get a 200 code, then the result is returned as an
> error to the user.

It should probably be any 2xx code.

And of course, if a 3xx code is returned, the Location header should be 
looked at for a new URL, and the new URL checked, repeatedly until a 
non-3xx code is seen.

And provisions for HTTP proxies would need to be included, such as 
supporting $http_proxy on unix (the environment variable to indicate the 
proxy address used by numerous other web programs).

> presumably, the way this would work is we'd have something like
>     
>     <?rfc abnf.proc=' ... ' ?>
>     <?rfc mib.proc=' ... '  ?>
>     
> to tell xml2rfc what to invoke.
>     
> 
> two questions:
>     
> 1. would this be useful?
>     
> 2. what online tools exist for checking abnf/mib syntax?
>     
> thanks,

I was going to recommend Chris Newman's, but I see he's already 
responded in another message.

	Tony Hansen
	tony@att.com



From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Tue, 26 Nov 2002 17:41:16 -0800
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <2147483647.1038328715@nifty-jr.west.sun.com>
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <2147483647.1038247034@nifty-jr.west.sun.com> <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview.ca.us> <2147483647.1038328715@nifty-jr.west.sun.com>
Message-ID: <20021126174116.23062c80.mrose+internet.xml2rfc@dbc.mtview.ca.us>

> However, I think it makes more sense for me to modify the ABNF checker to 
> accept the complete XML source document, so that it can give correct line 
> numbers in the output.  ABNF checking is really only necessary towards the 
> end of document production, not as an ongoing action when generating a 
> draft.

interesting. i suppose i can make the line number thing work (xml2rfc has an
include facility, so it has a structure that maps physical line number to
file/line number).

so, email me privately when you've got it running, and we can talk about the
interface.

/mtr


From: Chris.Newman@Sun.COM (Chris Newman)
Date: Tue, 26 Nov 2002 16:38:35 -0800
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview.ca.us>
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <2147483647.1038247034@nifty-jr.west.sun.com> <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <2147483647.1038328715@nifty-jr.west.sun.com>

I wasn't suggesting code changes.  I was suggesting documentation changes 
to document specific the use of type="abnf" for ABNF in draft-mrose-...

But if you want to go down the code change path, the ABNF checker I wrote 
is at:

  http://www.apps.ietf.org/abnf.html

and I can make the C source available if you wish.

However, I think it makes more sense for me to modify the ABNF checker to 
accept the complete XML source document, so that it can give correct line 
numbers in the output.  ABNF checking is really only necessary towards the 
end of document production, not as an ongoing action when generating a 
draft.

                - Chris

begin  quotation by Marshall Rose on 2002/11/26 12:57 -0800:

>> * I also suggest you document the use of <artwork type="abnf"> (with
>> precisely that punctuation and capitalization).  I plan to make the ABNF
>> validator at www.apps.ietf.org aware of that construct so one can paste
>> the  XML RFC source in for ABNF validation.  Of course then we need a
>> processing  instruction like <?abnf include="rfc####.abnf"?> which
>> raises interesting  issues...
>
> let say that i add something to xml2rfc to that when it sees
>
>     <artwork type='abnf'>
>     ...
>     </artwork>
>
> that it passes the contents to a URL and looks for a 200 code coming
> back. If it doesn't get a 200 code, then the result is returned as an
> error to the user.
>
> presumably, the way this would work is we'd have something like
>
>     <?rfc abnf.proc=' ... ' ?>
>     <?rfc mib.proc=' ... '  ?>
>
> to tell xml2rfc what to invoke.
>
>
> two questions:
>
> 1. would this be useful?
>
> 2. what online tools exist for checking abnf/mib syntax?
>
> thanks,
>
> /mtr




From: randy@psg.com (Randy Bush)
Date: Tue, 26 Nov 2002 16:02:33 -0800
Subject: [xml2rfc] the "next rev" coming soon...
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <2147483647.1038247034@nifty-jr.west.sun.com> <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview.ca.us> <E18Gp2h-000DWV-00@roam.psg.com> <20021126154241.46ae4018.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <E18Gpez-000Dcy-00@roam.psg.com>

>>> let say that i add something to xml2rfc to that when it sees
>>>     <artwork type='abnf'>
>>>     ...
>>>     </artwork>
>>> that it passes the contents to a URL and looks for a 200 code coming
>>> back. If it doesn't get a 200 code, then the result is returned as an
>>> error to the user.
>> uh, this presumes ip connectivity.  hence, needs to be able to deal with
>> lack thereof in a non-fatal manner.
> sure. if we implement this, then i'll make sure that it still works for
> the non-connected...

btw, i think it is worth special note and special thanks that you
are not trying to be 'creative' or 'clever' in aspects of inventing
standards, imposing a non-centerist social or political view, ...
on the code.  like philip hazel's exim (as opposed to qmail etc)
you are finding a very very comfortable, compatible, and
interoperable product spec.  few understand just how difficult this
is to accomplish.  thanks.  much appreciated.

randy



From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Tue, 26 Nov 2002 15:42:41 -0800
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <E18Gp2h-000DWV-00@roam.psg.com>
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <2147483647.1038247034@nifty-jr.west.sun.com> <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview.ca.us> <E18Gp2h-000DWV-00@roam.psg.com>
Message-ID: <20021126154241.46ae4018.mrose+internet.xml2rfc@dbc.mtview.ca.us>

> > let say that i add something to xml2rfc to that when it sees
> >     
> >     <artwork type='abnf'>
> >     ...
> >     </artwork>
> >     
> > that it passes the contents to a URL and looks for a 200 code coming
> > back. If it doesn't get a 200 code, then the result is returned as an
> > error to the user.
> 
> uh, this presumes ip connectivity.  hence, needs to be able to deal with
> lack thereof in a non-fatal manner.

sure. if we implement this, then i'll make sure that it still works for the
non-connected...

/mtr


From: randy@psg.com (Randy Bush)
Date: Tue, 26 Nov 2002 15:22:59 -0800
Subject: [xml2rfc] the "next rev" coming soon...
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <2147483647.1038247034@nifty-jr.west.sun.com> <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <E18Gp2h-000DWV-00@roam.psg.com>

> let say that i add something to xml2rfc to that when it sees
>     
>     <artwork type='abnf'>
>     ...
>     </artwork>
>     
> that it passes the contents to a URL and looks for a 200 code coming
> back. If it doesn't get a 200 code, then the result is returned as an
> error to the user.

uh, this presumes ip connectivity.  hence, needs to be able to deal with
lack thereof in a non-fatal manner.

randy



From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Tue, 26 Nov 2002 14:03:00 -0800
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <5.2.0.9.2.20021126133726.018adf30@mira-sjcm-4.cisco.com>
References: <2147483647.1038247034@nifty-jr.west.sun.com> <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <2147483647.1038247034@nifty-jr.west.sun.com> <5.2.0.9.2.20021126133726.018adf30@mira-sjcm-4.cisco.com>
Message-ID: <20021126140300.28ee5ce6.mrose+internet.xml2rfc@dbc.mtview.ca.us>

> Would it make sense (asking a lot) to provide an extension to the schema 
> that would allow for the systematic creation of the SMI stuff? 

not quite sure i understand what you're asking (other than "(asking a lot)")...

/mtr


From: fred@cisco.com (Fred Baker)
Date: Tue, 26 Nov 2002 13:39:34 -0800
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview. ca.us>
References: <2147483647.1038247034@nifty-jr.west.sun.com> <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <2147483647.1038247034@nifty-jr.west.sun.com>
Message-ID: <5.2.0.9.2.20021126133726.018adf30@mira-sjcm-4.cisco.com>

At 12:57 PM 11/26/2002 -0800, Marshall Rose wrote:
>let say that i add something to xml2rfc to that when it sees
>
>     <artwork type='abnf'>
>     ...
>     </artwork>
>
>that it passes the contents to a URL and looks for a 200 code coming
>back. If it doesn't get a 200 code, then the result is returned as an
>error to the user.

that would be interesting and useful. I'd suggest having folks send it to 
Bert's favorite SMI checker.

Would it make sense (asking a lot) to provide an extension to the schema 
that would allow for the systematic creation of the SMI stuff? 



From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Tue, 26 Nov 2002 13:21:52 -0800
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <1038345231.913.45.camel@RjS.localdomain>
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <2147483647.1038247034@nifty-jr.west.sun.com> <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview.ca.us> <1038345231.913.45.camel@RjS.localdomain>
Message-ID: <20021126132152.32951e01.mrose+internet.xml2rfc@dbc.mtview.ca.us>

> If you go down this path, please be sure to make it straightforward
> to turn off when you are working without a network connection.

simply remove/edit

> >     <?rfc abnf.proc=' ... ' ?>
> >     <?rfc mib.proc=' ... '  ?>

e.g.,

	<?rfc Xabnf.proc='...' ?>

/mtr


From: julian.reschke@gmx.de (Julian Reschke)
Date: Tue, 26 Nov 2002 22:14:59 +0100
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <JIEGINCHMLABHJBIGKBCAEAKFOAA.julian.reschke@gmx.de>

Hi,

I've got something similar working in my XSLT RFC2629 implementation. When a
certain PI is set, it attempts to parse XML content in figures. The issue
here (which led to an ugly hack) is that frequently, the code to be parsed
(be it XML or ABNF) is not the only contents of the figure. For instance, in
WebDAV related drafts one frequently has figures like:

--- cut ---
SEARCH / HTTP/1.1
Host: example.org
Content-Type: application/xml
Content-Length: xxx

<?xml version="1.0" encoding="UTF-8"?>
<D:searchrequest xmlns:D="DAV:" xmlns:F="http://example.com/foo">
  <F:natural-language-query>
    Find the locations of good Thai restaurants in Los Angeles
  </F:natural-language-query>
</D:searchrequest>
--- cut ---

So to make this really useful, it would probably useful to allow multiple
artwork elements in figures, so that the following syntax becomes possible;

<figure>
<artwork>
SEARCH / HTTP/1.1
Host: example.org
Content-Type: application/xml
Content-Length: xxx

</artwork>
<artwork type="text/xml">
&lt;?xml version="1.0" encoding="UTF-8"?>
&lt;D:searchrequest xmlns:D="DAV:" xmlns:F="http://example.com/foo">
  &lt;F:natural-language-query>
    Find the locations of good Thai restaurants in Los Angeles
  &lt;/F:natural-language-query>
&lt;/D:searchrequest>
</artwork>
</figure


Julian

--
<green/>bytes GmbH -- http://www.greenbytes.de -- tel:+492512807760

> -----Original Message-----
> From: xml2rfc-admin@lists.xml.resource.org
> [mailto:xml2rfc-admin@lists.xml.resource.org]On Behalf Of Marshall Rose
> Sent: Tuesday, November 26, 2002 9:58 PM
> To: xml2rfc@lists.xml.resource.org
> Cc: Chris.Newman@Sun.COM
> Subject: Re: [xml2rfc] the "next rev" coming soon...
>
>
> > * I also suggest you document the use of <artwork type="abnf"> (with
> > precisely that punctuation and capitalization).  I plan to make
> the ABNF
> > validator at www.apps.ietf.org aware of that construct so one
> can paste the
> > XML RFC source in for ABNF validation.  Of course then we need
> a processing
> > instruction like <?abnf include="rfc####.abnf"?> which raises
> interesting
> > issues...
>
> let say that i add something to xml2rfc to that when it sees
>
>     <artwork type='abnf'>
>     ...
>     </artwork>
>
> that it passes the contents to a URL and looks for a 200 code coming
> back. If it doesn't get a 200 code, then the result is returned as an
> error to the user.
>
> presumably, the way this would work is we'd have something like
>
>     <?rfc abnf.proc=' ... ' ?>
>     <?rfc mib.proc=' ... '  ?>
>
> to tell xml2rfc what to invoke.
>
>
> two questions:
>
> 1. would this be useful?
>
> 2. what online tools exist for checking abnf/mib syntax?
>
> thanks,
>
> /mtr
> _______________________________________________
> xml2rfc mailing list
> xml2rfc@lists.xml.resource.org
> http://lists.xml.resource.org/mailman/listinfo/xml2rfc
>



From: rsparks@dynamicsoft.com (Robert Sparks)
Date: 26 Nov 2002 15:13:51 -0600
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview.ca.us>
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <2147483647.1038247034@nifty-jr.west.sun.com> <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <1038345231.913.45.camel@RjS.localdomain>

If you go down this path, please be sure to make it straightforward
to turn off when you are working without a network connection.

RjS

On Tue, 2002-11-26 at 14:57, Marshall Rose wrote:
> > * I also suggest you document the use of <artwork type="abnf"> (with 
> > precisely that punctuation and capitalization).  I plan to make the ABNF 
> > validator at www.apps.ietf.org aware of that construct so one can paste the 
> > XML RFC source in for ABNF validation.  Of course then we need a processing 
> > instruction like <?abnf include="rfc####.abnf"?> which raises interesting 
> > issues...
> 
> let say that i add something to xml2rfc to that when it sees
>     
>     <artwork type='abnf'>
>     ...
>     </artwork>
>     
> that it passes the contents to a URL and looks for a 200 code coming
> back. If it doesn't get a 200 code, then the result is returned as an
> error to the user.
>     
> presumably, the way this would work is we'd have something like
>     
>     <?rfc abnf.proc=' ... ' ?>
>     <?rfc mib.proc=' ... '  ?>
>     
> to tell xml2rfc what to invoke.
>     
> 
> two questions:
>     
> 1. would this be useful?
>     
> 2. what online tools exist for checking abnf/mib syntax?
>     
> thanks,
>     
> /mtr
> _______________________________________________
> xml2rfc mailing list
> xml2rfc@lists.xml.resource.org
> http://lists.xml.resource.org/mailman/listinfo/xml2rfc




From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Tue, 26 Nov 2002 12:57:42 -0800
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <2147483647.1038247034@nifty-jr.west.sun.com>
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <2147483647.1038247034@nifty-jr.west.sun.com>
Message-ID: <20021126125742.529364fa.mrose+internet.xml2rfc@dbc.mtview.ca.us>

> * I also suggest you document the use of <artwork type="abnf"> (with 
> precisely that punctuation and capitalization).  I plan to make the ABNF 
> validator at www.apps.ietf.org aware of that construct so one can paste the 
> XML RFC source in for ABNF validation.  Of course then we need a processing 
> instruction like <?abnf include="rfc####.abnf"?> which raises interesting 
> issues...

let say that i add something to xml2rfc to that when it sees
    
    <artwork type='abnf'>
    ...
    </artwork>
    
that it passes the contents to a URL and looks for a 200 code coming
back. If it doesn't get a 200 code, then the result is returned as an
error to the user.
    
presumably, the way this would work is we'd have something like
    
    <?rfc abnf.proc=' ... ' ?>
    <?rfc mib.proc=' ... '  ?>
    
to tell xml2rfc what to invoke.
    

two questions:
    
1. would this be useful?
    
2. what online tools exist for checking abnf/mib syntax?
    
thanks,
    
/mtr


From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Mon, 25 Nov 2002 21:39:26 -0800
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <2147483647.1038247034@nifty-jr.west.sun.com>
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <2147483647.1038247034@nifty-jr.west.sun.com>
Message-ID: <20021125213926.3318ef85.mrose+internet.xml2rfc@dbc.mtview.ca.us>

hi. xml2rfc doesn't "do" warnings, just errors, so:

    
1. I will remove "-" from the list of characters where a break can be made.

    
2. i will add 
    
    <?rfc strict="yes"?>
    
which will enforce:
    
    line length <= 72
    toc required if pages > 15
    authors <= 5
    xref/eref not allowed in abstract

    
3. i will add
    
    <?rfc iprnotified="yes"?>
    
which will add the 10.4(d) boilerplate.

    
4. i'm not sure what, exactly, i need to change to make it more ABNF/MIB
friendly...

/mtr


From: Chris.Newman@Sun.COM (Chris Newman)
Date: Mon, 25 Nov 2002 17:57:14 -0800
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us>
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <2147483647.1038247034@nifty-jr.west.sun.com>

To comply with:

>   * No hyphenation for line-breaks

I suggest changing the boilerplate from:

>   ...
>   other groups may also distribute working documents as Internet-
>   Drafts.

to

>   ...
>   other groups may also distribute working documents as
>   Internet-Drafts.

should be easy to fix...  :-)

Other suggestions (you may do these already):

* Generate a warning if any line (including indented artwork) extends past 
the 72nd column.

* Generate a warning if > 15 pages and toc PI is "no"

* Generate a warning if > 5 authors

* Generate a warning if <xref> tags are present in the abstract.

* Add a processing instruction <?rfc patentssuck="yes"?> to turn on the 
10.4(D) boilerplate.

* I also suggest you document the use of <artwork type="abnf"> (with 
precisely that punctuation and capitalization).  I plan to make the ABNF 
validator at www.apps.ietf.org aware of that construct so one can paste the 
XML RFC source in for ABNF validation.  Of course then we need a processing 
instruction like <?abnf include="rfc####.abnf"?> which raises interesting 
issues...

                - Chris

begin quotation by Marshall Rose on 2002/11/21 16:13 -0500:
> does anyone have any other requests for ID-nits support?



From: randy@psg.com (Randy Bush)
Date: Fri, 22 Nov 2002 14:02:41 -0800
Subject: [xml2rfc] the "next rev" coming soon...
References: <3DDD52A5.7020107@att.com> <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <20021121212205.GA1968@SBRIM-W2K1> <20021121162430.1f4d9c7c.mrose+internet.xml2rfc@dbc.mtview.ca.us> <5.2.0.9.2.20021122133409.01963268@mira-sjcm-4.cisco.com>
Message-ID: <E18FLsn-0000LK-00@roam.psg.com>

> As I understand it, IANA considerations are only required in standards 
> track documents. Most internet drafts, and most RFCs, aren't. 

they are only required in documents, standards, bcp, info, whatever, which
require assignment or management of numbers etc. by the iana.

randy



From: fred@cisco.com (Fred Baker)
Date: Fri, 22 Nov 2002 13:34:41 -0800
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <20021121165135.09ffd115.mrose+internet.xml2rfc@dbc.mtview. ca.us>
References: <3DDD52A5.7020107@att.com> <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <20021121212205.GA1968@SBRIM-W2K1> <20021121162430.1f4d9c7c.mrose+internet.xml2rfc@dbc.mtview.ca.us> <3DDD52A5.7020107@att.com>
Message-ID: <5.2.0.9.2.20021122133409.01963268@mira-sjcm-4.cisco.com>

At 04:51 PM 11/21/2002 -0500, Marshall Rose wrote:
> > Also, IANA Considerations is explicitly listed as "sometimes required".
>
>what do folks think about making "IANA Considerations" mandatory?

As I understand it, IANA considerations are only required in standards 
track documents. Most internet drafts, and most RFCs, aren't. 



From: randy@psg.com (Randy Bush)
Date: Fri, 22 Nov 2002 11:54:55 -0800
Subject: [xml2rfc] the "next rev" coming soon...
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <20021121212205.GA1968@SBRIM-W2K1> <20021121162430.1f4d9c7c.mrose+internet.xml2rfc@dbc.mtview.ca.us> <3DDD52A5.7020107@att.com> <20021121165135.09ffd115.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <E18FJt9-0004BC-00@roam.psg.com>

> what do folks think about making "IANA Considerations" mandatory?

by current ietf process, they are not required to be present

randy


From: dan@dankohn.com (Dan Kohn)
Date: Thu, 21 Nov 2002 23:50:08 -0800
Subject: [xml2rfc] the "next rev" coming soon...
Message-ID: <138AA78F80DCE84B8EE424399FFBF9C905066F@exchange.ad.skymv.com>

I would require both Normative References and IANA Considerations unless
there is a PI present explicitly overriding each.

          - dan
--
Dan Kohn <mailto:dan@dankohn.com>
<http://www.dankohn.com/>  <tel:+1-650-327-2600>  

  Randomly generated quote:
In War: Resolution;  In Defeat: Defiance;  In Victory: Magnanimity;  In
Peace: Good Will.  - Winston Churchill


-----Original Message-----
From: Henrik Levkowetz [mailto:henrik@levkowetz.com] 
Sent: Thursday, November 21, 2002 14:14
To: Marshall Rose
Cc: xml2rfc@lists.xml.resource.org
Subject: Re: [xml2rfc] the "next rev" coming soon...



On Thu, 21 Nov 2002 16:51:35 -0500, Marshall Rose
<mrose+internet.xml2rfc@dbc.mtview.ca.us> wrote:
> > My reading of ID-nits agrees with your suggestion that at least one
of 
> > them must have the title Normative References or the title
Informative 
> > References.
> > 
> > Also, IANA Considerations is explicitly listed as "sometimes
required".
> 
> what do folks think about making "IANA Considerations" mandatory?

Mmm, could we possibly have both missing or incorrect reference titles
and
missing "IANA Considerations" produce a warning instead of an error?

Alternatively, provide options to turn each of these off, for the rare
cases when they would not be appropriate?


		Henrik

-- 

Henrik Levkowetz +46708321608 henrik@ipunplugged.com www.ipunplugged.com
------------------------------------------------------------------------

  Does the name Pavlov ring a bell?

_______________________________________________
xml2rfc mailing list
xml2rfc@lists.xml.resource.org
http://lists.xml.resource.org/mailman/listinfo/xml2rfc



From: paf@cisco.com (=?ISO-8859-1?Q?Patrik_F=E4ltstr=F6m?=)
Date: Thu, 21 Nov 2002 20:13:17 -0500
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <20021121162430.1f4d9c7c.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <954CBE70-FDB7-11D6-8833-0003934B2128@cisco.com>

On torsdag, nov 21, 2002, at 16:24 US/Eastern, Marshall Rose wrote:

> 2. change the test so that if there is at least one <reference/> 
> element, then
> at least one of them must have the title "Normative References" or the 
> title
> "Informative References".

I think this is what we want.

   paf



From: henrik@levkowetz.com (Henrik Levkowetz)
Date: Thu, 21 Nov 2002 23:13:34 +0100
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <20021121165135.09ffd115.mrose+internet.xml2rfc@dbc.mtview.ca.us>
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <20021121212205.GA1968@SBRIM-W2K1> <20021121162430.1f4d9c7c.mrose+internet.xml2rfc@dbc.mtview.ca.us> <3DDD52A5.7020107@att.com> <20021121165135.09ffd115.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <20021121231334.0000520c.henrik@levkowetz.com>

On Thu, 21 Nov 2002 16:51:35 -0500, Marshall Rose <mrose+internet.xml2rfc@dbc.mtview.ca.us> wrote:
> > My reading of ID-nits agrees with your suggestion that at least one of 
> > them must have the title Normative References or the title Informative 
> > References.
> > 
> > Also, IANA Considerations is explicitly listed as "sometimes required".
> 
> what do folks think about making "IANA Considerations" mandatory?

Mmm, could we possibly have both missing or incorrect reference titles and
missing "IANA Considerations" produce a warning instead of an error?

Alternatively, provide options to turn each of these off, for the rare
cases when they would not be appropriate?


		Henrik

-- 

Henrik Levkowetz +46708321608 henrik@ipunplugged.com www.ipunplugged.com
------------------------------------------------------------------------

  Does the name Pavlov ring a bell?



From: tony@att.com (Tony Hansen)
Date: Thu, 21 Nov 2002 16:56:34 -0500
Subject: [xml2rfc] the "next rev" coming soon...
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us>	<20021121212205.GA1968@SBRIM-W2K1>	<20021121162430.1f4d9c7c.mrose+internet.xml2rfc@dbc.mtview.ca.us>	<3DDD52A5.7020107@att.com> <20021121165135.09ffd115.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <3DDD5692.4070101@att.com>

Marshall Rose wrote:
>>Also, IANA Considerations is explicitly listed as "sometimes required".
> what do folks think about making "IANA Considerations" mandatory?

I don't think you want to do so.

	Tony



From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Thu, 21 Nov 2002 16:51:35 -0500
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <3DDD52A5.7020107@att.com>
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <20021121212205.GA1968@SBRIM-W2K1> <20021121162430.1f4d9c7c.mrose+internet.xml2rfc@dbc.mtview.ca.us> <3DDD52A5.7020107@att.com>
Message-ID: <20021121165135.09ffd115.mrose+internet.xml2rfc@dbc.mtview.ca.us>

> My reading of ID-nits agrees with your suggestion that at least one of 
> them must have the title Normative References or the title Informative 
> References.
> 
> Also, IANA Considerations is explicitly listed as "sometimes required".

what do folks think about making "IANA Considerations" mandatory?

/mtr


From: tony@att.com (Tony Hansen)
Date: Thu, 21 Nov 2002 16:39:49 -0500
Subject: [xml2rfc] the "next rev" coming soon...
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us>	<20021121212205.GA1968@SBRIM-W2K1> <20021121162430.1f4d9c7c.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <3DDD52A5.7020107@att.com>

My reading of ID-nits agrees with your suggestion that at least one of 
them must have the title Normative References or the title Informative 
References.

Also, IANA Considerations is explicitly listed as "sometimes required".

	Tony

Marshall Rose wrote:
>>On Thu, Nov 21, 2002 04:13:21PM -0500, Marshall Rose allegedly wrote:
>>
>>>1. if you have at least one <reference/> element, then at least one of
>>>   them must have title='Normative References'
>>
>>RFCs aren't necessarily specifications, and if they are purely
>>informational they can have purely non-normative references.  In the IPR
>>one the only normative reference I have is to rfc2119.
> 
> ok, we have two choices:
> 1. remove the test.
> 2. change the test so that if there is at least one <reference/> element, then
> at least one of them must have the title "Normative References" or the title
> "Informative References".
> ??



From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Thu, 21 Nov 2002 16:24:30 -0500
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <20021121212205.GA1968@SBRIM-W2K1>
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us> <20021121212205.GA1968@SBRIM-W2K1>
Message-ID: <20021121162430.1f4d9c7c.mrose+internet.xml2rfc@dbc.mtview.ca.us>

> On Thu, Nov 21, 2002 04:13:21PM -0500, Marshall Rose allegedly wrote:
> > 1. if you have at least one <reference/> element, then at least one of
> >    them must have title='Normative References'
> 
> RFCs aren't necessarily specifications, and if they are purely
> informational they can have purely non-normative references.  In the IPR
> one the only normative reference I have is to rfc2119.

ok, we have two choices:

1. remove the test.

2. change the test so that if there is at least one <reference/> element, then
at least one of them must have the title "Normative References" or the title
"Informative References".

??

/mtr


From: swb@employees.org (Scott W Brim)
Date: Thu, 21 Nov 2002 16:22:05 -0500
Subject: [xml2rfc] the "next rev" coming soon...
In-Reply-To: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us>
References: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <20021121212205.GA1968@SBRIM-W2K1>

On Thu, Nov 21, 2002 04:13:21PM -0500, Marshall Rose allegedly wrote:
> 1. if you have at least one <reference/> element, then at least one of
>    them must have title='Normative References'

RFCs aren't necessarily specifications, and if they are purely
informational they can have purely non-normative references.  In the IPR
one the only normative reference I have is to rfc2119.


From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Thu, 21 Nov 2002 16:13:21 -0500
Subject: [xml2rfc] the "next rev" coming soon...
Message-ID: <20021121161321.6dffb4ee.mrose+internet.xml2rfc@dbc.mtview.ca.us>

hi. i've made a few changes to try to make it easier to conform to the
latest ID-nits document from the IESG. specifically:
    
1. if you have at least one <reference/> element, then at least one of
   them must have title='Normative References'
    
2. you must have a section with title='Security Considerations'
    
3. the long IPR text is now included at the end of the I-D (unless the
   I-D isn't conformant to 2026)

does anyone have any other requests for ID-nits support? e.g., should
"IANA Considerations" be required.
    
    
in addition,
    
1. the changes are in there for graham's html <img/> stuff.
    
2. the hanging indent maxes out at 11, as per randy's request.

thanks,
    
/mtr


From: Chris.Newman@Sun.COM (Chris Newman)
Date: Mon, 18 Nov 2002 09:21:42 -0500
Subject: [xml2rfc] xref in ABNF comments
Message-ID: <2147483647.1037611302@dhcp-204-42-66-236.ietf55.ops.ietf.org>

I tried to put an xref in an ABNF comment (inside an <artwork> section), 
but xml2rfc.tcl seems to insert extra newlines around the reference.

I wanted:

   foo   = bar
         ; bar defined in [3]

I instead got:

   foo   = bar
         ; bar defined in
  [3]

Can you fix xml2rfc.tcl so it won't insert the extra newline in this case? 
Or is there another way to do what I want?

                - Chris



From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Sun, 17 Nov 2002 18:24:38 -0500
Subject: [xml2rfc] A modest suggestion
In-Reply-To: <5.1.0.14.2.20021117043428.00a4ee60@127.0.0.1>
References: <5.1.0.14.2.20021113152633.00a61420@127.0.0.1> <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1> <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1> <5.1.0.14.2.20021113152633.00a61420@127.0.0.1> <5.1.0.14.2.20021117043428.00a4ee60@127.0.0.1>
Message-ID: <20021117182438.012af136.mrose+internet.xml2rfc@dbc.mtview.ca.us>

> I suggest enclosing it in a <p> block so that the image is indented to the 
> level of surrounding paragraphs, like this:
> 
>    <p>
>    <img src="foo.gif" alt="Description of foo"></img>
>    </p>

okie-dokie.
    
/mtr



From: GK@ninebynine.org (Graham Klyne)
Date: Sun, 17 Nov 2002 04:47:07 +0000
Subject: [xml2rfc] A modest suggestion
In-Reply-To: <20021114083258.64c9274c.mrose+internet.xml2rfc@dbc.mtview. ca.us>
References: <5.1.0.14.2.20021113152633.00a61420@127.0.0.1> <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1> <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1> <5.1.0.14.2.20021113152633.00a61420@127.0.0.1>
Message-ID: <5.1.0.14.2.20021117043428.00a4ee60@127.0.0.1>

At 08:32 AM 11/14/02 -0800, Marshall Rose wrote:
> > I'm running TCL 8.0.5.
>
>upgrade the tcl on the system you're now using: 8.0.5 is close to four
>years old...

I've upgraded my TCL, and the change works well.  Thanks!

I have one small comment:  currently something like the following is generated:

   <img src="foo.gif" alt="Description of foo"></img>

I suggest enclosing it in a <p> block so that the image is indented to the 
level of surrounding paragraphs, like this:

   <p>
   <img src="foo.gif" alt="Description of foo"></img>
   </p>

I made a trivial change to a single function in the code to do this 
(inserted <p> before <img, and </p> after </img>), listed below.

#g
--

[[
proc figure_html {tag lines anchor title {av {}}} {
     global options
     global stdout
     global imgP

     set imgP 0
     switch -- $tag {
         begin {
             if {[string compare $title ""]} {
                 puts $stdout "<br><hr size=\"1\" shade=\"0\">"
             }
             if {[string compare $anchor ""]} {
                 puts $stdout "<a name=\"$anchor\"></a>"
             }
             if {([set x [lsearch -exact $av src]] >= 0) && ([incr x]%2)} {
                 puts -nonewline $stdout "<p><img"
                 foreach {k v} $av {
                     if {[string first . $k] != 0} {
                         puts -nonewline $stdout ""
                         regsub -all {"} $v {&quot;} v
                         puts -nonewline $stdout " $k=\"$v\""
                     }
                 }
                 puts $stdout "></img></p>"
                 set imgP 1
             }
         }

         end {
             if {[string compare $title ""]} {
                 puts $stdout "<table border=\"0\" cellpadding=\"0\" 
cellspacing=\"2\" align=\"center\"><tr><td align=\"center\"><font 
face=\"monaco, MS Sans Serif\" 
size=\"1\"><b>&nbsp;$title&nbsp;</b></font><br></td></tr></table><hr 
size=\"1\" shade=\"0\">"
             }
         }
     }
}
]]



-------------------
Graham Klyne
<GK@NineByNine.org>



From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Thu, 14 Nov 2002 09:08:58 -0800
Subject: [xml2rfc] A modest suggestion
In-Reply-To: <5.1.0.14.2.20021113152633.00a61420@127.0.0.1>
References: <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1> <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1> <5.1.0.14.2.20021113152633.00a61420@127.0.0.1>
Message-ID: <20021114090858.2cdf2002.mrose+internet.xml2rfc@dbc.mtview.ca.us>

one other thing to note if you're upgrading to a new xml2rfc after a
long period of time. there are still two ways of doing includes, but the
oldest way "%include" was replaced by the "official XML" way.
    
so, if your files use
    
    %include foo;
    
you now want to use
    
    <?rfc include="foo"?>
    
(this isn't the "official XML" way, but it's the easiest way to get
things working again.)
    
/mtr
    


From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Thu, 14 Nov 2002 08:32:58 -0800
Subject: [xml2rfc] A modest suggestion
In-Reply-To: <5.1.0.14.2.20021113152633.00a61420@127.0.0.1>
References: <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1> <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1> <5.1.0.14.2.20021113152633.00a61420@127.0.0.1>
Message-ID: <20021114083258.64c9274c.mrose+internet.xml2rfc@dbc.mtview.ca.us>

> I'm running TCL 8.0.5.

upgrade the tcl on the system you're now using: 8.0.5 is close to four
years old...
    
if you can't upgrade, i guess i can provide you a version of xml2rfc.tcl
that doesn't need "string replace"...

/mtr


From: GK@ninebynine.org (Graham Klyne)
Date: Wed, 13 Nov 2002 15:33:12 +0000
Subject: [xml2rfc] A modest suggestion
In-Reply-To: <20021111161005.01713502.mrose@dbc.mtview.ca.us>
References: <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1> <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1>
Message-ID: <5.1.0.14.2.20021113152633.00a61420@127.0.0.1>

At 04:10 PM 11/11/02 -0800, Marshall Rose wrote:
>try the attached file and see if it does what you want.

I'm offline at the moment, and away from my normal dev environment... but 
when I try to run the new program over an existing document, I get the 
following xml2rfc oops! message:  "bad option "replace": must be compare, 
first, index, last, length, match, range, tolower, toupper, trim, trimleft, 
trimright, wordend or wordstart".

Up until now, I have been using an older version of this program, so it 
maybe something that changed along the line.  I'll try and give a more 
complete report when I'm back online.

I can confirm that my older program version (22 Aug 2001, 136868 bytes) 
works with source files on which the new program fails.

I'm running TCL 8.0.5.

#g
--

>
>/mtr
>
>ps: when generating html, if an src attribute appears in an <artwork>
>tag, then in addition to ignoring the #pcdata contents of the <artwork/>
>element, the contents of the <preamble/> and <postamble/> elements will
>be ignored as well...
>
>                                   #######

-------------------
Graham Klyne
<GK@NineByNine.org>



From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Mon, 11 Nov 2002 19:16:44 -0800
Subject: [xml2rfc] I-D.ietf-ipngwg-addr-arch-v3
In-Reply-To: <E18BQw7-0006k2-00@rip.psg.com>
References: <E18BQw7-0006k2-00@rip.psg.com>
Message-ID: <20021111191644.268a2354.mrose+internet.xml2rfc@dbc.mtview.ca.us>

>    [I-D.ietf-ipngwg-addr-arch-v3]
>               Gupta, M. and S. Deering, "IP Version 6 Addressing
>               Architecture", draft-ietf-ipngwg-addr-arch-v3-11 (work in
>               progress), October 2002.
> 
> that should be Hinden and Deering!
> 
> INTERNET-DRAFT                                          R. Hinden, Nokia
> October 25, 2002                               S. Deering, Cisco Systems
> 
>                   IP Version 6 Addressing Architecture
>                 <draft-ietf-ipngwg-addr-arch-v3-11.txt>

well, the database is built automatically from 1id-abstracts.txt. here's what it
says:

  "IP Version 6 Addressing Architecture", Mukesh Gupta, S. Deering,
  28-OCT-02, <draft-ietf-ipngwg-addr-arch-v3-11.txt>

    This specification defines the addressing architecture of the IPVersion
    6 protocol [IPV6]. The document includes the IPv6 addressingmodel, text
    representations of IPv6 addresses, definition of IPv6unicast addresses,
    anycast addresses, and multicast addresses, and anIPv6 node's required
    addresses.This document obsoletes RFC-2373 'IP Version 6
    AddressingArchitecture'.

i'll send the secretariat a note asking them to check into it.

/mtr


From: randy@psg.com (Randy Bush)
Date: Mon, 11 Nov 2002 18:37:55 -0800
Subject: [xml2rfc] I-D.ietf-ipngwg-addr-arch-v3
Message-ID: <E18BQw7-0006k2-00@rip.psg.com>

   [I-D.ietf-ipngwg-addr-arch-v3]
              Gupta, M. and S. Deering, "IP Version 6 Addressing
              Architecture", draft-ietf-ipngwg-addr-arch-v3-11 (work in
              progress), October 2002.

that should be Hinden and Deering!

INTERNET-DRAFT                                          R. Hinden, Nokia
October 25, 2002                               S. Deering, Cisco Systems

                  IP Version 6 Addressing Architecture
                <draft-ietf-ipngwg-addr-arch-v3-11.txt>

randy



From: mrose@dbc.mtview.ca.us (Marshall Rose)
Date: Mon, 11 Nov 2002 16:10:05 -0800
Subject: [xml2rfc] A modest suggestion
In-Reply-To: <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1>
References: <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1>
Message-ID: <20021111161005.01713502.mrose@dbc.mtview.ca.us>

This is a multi-part message in MIME format.

--Multipart_Mon__11_Nov_2002_16:10:05_-0800_0881f400
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit

try the attached file and see if it does what you want.
    
/mtr
    
ps: when generating html, if an src attribute appears in an <artwork>
tag, then in addition to ignoring the #pcdata contents of the <artwork/>
element, the contents of the <preamble/> and <postamble/> elements will
be ignored as well...
    
				  #######

--Multipart_Mon__11_Nov_2002_16:10:05_-0800_0881f400
Content-Type: application/x-tcl;
 name="xml2rfc.tcl"
Content-Disposition: attachment;
 filename="xml2rfc.tcl"
Content-Transfer-Encoding: base64

IyEvYmluL3NoCiMgdGhlIG5leHQgbGluZSByZXN0YXJ0cyB1c2luZyB0aGUgY29ycmVjdCBpbnRl
cnByZXRlciBcCmlmICAgdGVzdCAhIC16ICIkRElTUExBWSI7IHRoZW4gZXhlYyB3aXNoICIkMCIg
IiQwIiAiJEAiOyBcCmVsaWYgdGVzdCAhIC16ICIkMSI7ICAgICAgIHRoZW4gZXhlYyB0Y2xzaCAi
JDAiICIkMCIgIiRAIjsgXAplbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gInVz
YWdlOiAkMCBmaWxlbmFtZSIgPiYyOyBleGl0IDE7IGZpCgoKIwojIHhtbDJyZmMudGNsIC0gY29u
dmVydCB0ZWNobmljYWwgbWVtb3Mgd3JpdHRlbiB1c2luZyBYTUwgdG8gVFhUL0hUTUwvTlJPRkYK
IwojIChjKSAxOTk4LTAxIEludmlzaWJsZSBXb3JsZHMsIEluYy4KIwoKCiMKIyBoZXJlIGJlZ2lu
cyBUY2xYTUwgMS4xLjEKIwoKCiMgZWFybGllciB2ZXJzaW9ucyB1c2VkIHRvICJwYWNrYWdlIHJl
cXVpcmUgeG1sIDEuOCIsIGJ1dCBiZWNhdXNlIG5ld2VyIHRjbAojIGluc3RhbGxhdGlvbnMgaGF2
ZSBhbiBpbmNvbXBhdGlibHktdmVyaW9uc2VkIHNnbWwgcGFja2FnZSwgdGhpcyBjYXVzZWQKIyBu
b3RoaW5nIGJ1dCBwcm9ibGVtcy4gaGVuY2UsIHdlIGp1c3QgaW5jbHVkZSBUY2xYTUwtMS4xLjEg
d2hvbGVzYWxlIHRvd2FyZAojIHRoZSBlbmQgb2YgdGhlIGZpbGUuLi4KCgojIHNnbWwudGNsIC0t
CiMKIyAgICAgICBUaGlzIGZpbGUgcHJvdmlkZXMgZ2VuZXJpYyBwYXJzaW5nIHNlcnZpY2VzIGZv
ciBTR01MLWJhc2VkCiMgICAgICAgbGFuZ3VhZ2VzLCBuYW1lbHkgSFRNTCBhbmQgWE1MLgojCiMg
ICAgICAgTkIuICBJdCBpcyBhIG1pc25vbWVyLiAgVGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IgcGFy
c2luZwojICAgICAgIGFyYml0cmFyeSBTR01MIGFzIHN1Y2guCiMKIyBDb3B5cmlnaHQgKGMpIDE5
OTgsMTk5OSBadmVubyBQdHkgTHRkCiMgaHR0cDovL3d3dy56dmVuby5jb20vCiMKIyBadmVubyBt
YWtlcyB0aGlzIHNvZnR3YXJlIGF2YWlsYWJsZSBmcmVlIG9mIGNoYXJnZSBmb3IgYW55IHB1cnBv
c2UuCiMgQ29waWVzIG1heSBiZSBtYWRlIG9mIHRoaXMgc29mdHdhcmUgYnV0IGFsbCBvZiB0aGlz
IG5vdGljZSBtdXN0IGJlIGluY2x1ZGVkCiMgb24gYW55IGNvcHkuCiMKIyBUaGUgc29mdHdhcmUg
d2FzIGRldmVsb3BlZCBmb3IgcmVzZWFyY2ggcHVycG9zZXMgb25seSBhbmQgWnZlbm8gZG9lcyBu
b3QKIyB3YXJyYW50IHRoYXQgaXQgaXMgZXJyb3IgZnJlZSBvciBmaXQgZm9yIGFueSBwdXJwb3Nl
LiAgWnZlbm8gZGlzY2xhaW1zIGFueQojIGxpYWJpbGl0eSBmb3IgYWxsIGNsYWltcywgZXhwZW5z
ZXMsIGxvc3NlcywgZGFtYWdlcyBhbmQgY29zdHMgYW55IHVzZXIgbWF5CiMgaW5jdXIgYXMgYSBy
ZXN1bHQgb2YgdXNpbmcsIGNvcHlpbmcgb3IgbW9kaWZ5aW5nIHRoaXMgc29mdHdhcmUuCiMKIyBD
b3B5cmlnaHQgKGMpIDE5OTcgQU5VIGFuZCBDU0lSTyBvbiBiZWhhbGYgb2YgdGhlCiMgcGFydGlj
aXBhbnRzIGluIHRoZSBDUkMgZm9yIEFkdmFuY2VkIENvbXB1dGF0aW9uYWwgU3lzdGVtcyAoJ0FD
U3lzJykuCiMgCiMgQUNTeXMgbWFrZXMgdGhpcyBzb2Z0d2FyZSBhbmQgYWxsIGFzc29jaWF0ZWQg
ZGF0YSBhbmQgZG9jdW1lbnRhdGlvbiAKIyAoJ1NvZnR3YXJlJykgYXZhaWxhYmxlIGZyZWUgb2Yg
Y2hhcmdlIGZvciBhbnkgcHVycG9zZS4gIFlvdSBtYXkgbWFrZSBjb3BpZXMgCiMgb2YgdGhlIFNv
ZnR3YXJlIGJ1dCB5b3UgbXVzdCBpbmNsdWRlIGFsbCBvZiB0aGlzIG5vdGljZSBvbiBhbnkgY29w
eS4KIyAKIyBUaGUgU29mdHdhcmUgd2FzIGRldmVsb3BlZCBmb3IgcmVzZWFyY2ggcHVycG9zZXMg
YW5kIEFDU3lzIGRvZXMgbm90IHdhcnJhbnQKIyB0aGF0IGl0IGlzIGVycm9yIGZyZWUgb3IgZml0
IGZvciBhbnkgcHVycG9zZS4gIEFDU3lzIGRpc2NsYWltcyBhbnkKIyBsaWFiaWxpdHkgZm9yIGFs
bCBjbGFpbXMsIGV4cGVuc2VzLCBsb3NzZXMsIGRhbWFnZXMgYW5kIGNvc3RzIGFueSB1c2VyIG1h
eQojIGluY3VyIGFzIGEgcmVzdWx0IG9mIHVzaW5nLCBjb3B5aW5nIG9yIG1vZGlmeWluZyB0aGUg
U29mdHdhcmUuCiMKIyAkSWQkCgpwYWNrYWdlIHByb3ZpZGUgc2dtbCAxLjYKCm5hbWVzcGFjZSBl
dmFsIHNnbWwgewogICAgbmFtZXNwYWNlIGV4cG9ydCB0b2tlbmlzZSBwYXJzZUV2ZW50CgogICAg
bmFtZXNwYWNlIGV4cG9ydCBwYXJzZURURAoKICAgICMgQ29udmVuaWVuY2Ugcm91dGluZQogICAg
cHJvYyBjbCB4IHsKICAgICAgICByZXR1cm4gIlxbJHhcXSIKICAgIH0KCiAgICAjIERlZmluZSB2
YXJpb3VzIHJlZ3VsYXIgZXhwcmVzc2lvbnMKICAgICMgd2hpdGUgc3BhY2UKICAgIHZhcmlhYmxl
IFdzcCAiIFx0XHJcbiIKICAgIHZhcmlhYmxlIG5vV3NwIFtjbCBeJFdzcF0KCiAgICAjIFZhcmlv
dXMgWE1MIG5hbWVzCiAgICB2YXJpYWJsZSBubXRva2VuIFtjbCAtYS16QS1aMC05Ll9dKwogICAg
dmFyaWFibGUgbmFtZSBbY2wgYS16QS1aX11bY2wgLWEtekEtWjAtOS5fXSoKCiAgICAjIE90aGVy
CiAgICB2YXJpYWJsZSBQYXJzZUV2ZW50TnVtCiAgICBpZiB7IVtpbmZvIGV4aXN0cyBQYXJzZUV2
ZW50TnVtXX0gewogICAgICAgIHNldCBQYXJzZUV2ZW50TnVtIDAKICAgIH0KICAgIHZhcmlhYmxl
IFBhcnNlRFREbnVtCiAgICBpZiB7IVtpbmZvIGV4aXN0cyBQYXJzZURURE51bV19IHsKICAgICAg
ICBzZXQgUGFyc2VEVEROdW0gMAogICAgfQoKICAgICMgdGFibGUgb2YgcHJlZGVmaW5lZCBlbnRp
dGllcyBmb3IgWE1MCgogICAgdmFyaWFibGUgRW50aXR5UHJlZGVmCiAgICBhcnJheSBzZXQgRW50
aXR5UHJlZGVmIHsKICAgICAgICBsdCA8ICAgZ3QgPiAgIGFtcCAmICAgcXVvdCBcIiAgIGFwb3Mg
JwogICAgfQoKfQoKIyBzZ21sOjp0b2tlbmlzZSAtLQojCiMgICAgICAgVHJhbnNmb3JtIHRoZSBn
aXZlbiBIVE1ML1hNTCB0ZXh0IGludG8gYSBUY2wgbGlzdC4KIwojIEFyZ3VtZW50czoKIyAgICAg
ICBzZ21sICAgICAgICAgICAgdGV4dCB0byB0b2tlbml6ZQojICAgICAgIGVsZW1FeHByICAgICAg
ICBSRSB0byByZWNvZ25pc2UgdGFncwojICAgICAgIGVsZW1TdWIgICAgICAgICB0cmFuc2Zvcm0g
Zm9yIG1hdGNoZWQgdGFncwojICAgICAgIGFyZ3MgICAgICAgICAgICBvcHRpb25zCiMKIyBWYWxp
ZCBPcHRpb25zOgojICAgICAgIC1maW5hbCAgICAgICAgICBib29sZWFuICAgICAgICAgVHJ1ZSBp
ZiBubyBtb3JlIGRhdGEgaXMgdG8gYmUgc3VwcGxpZWQKIyAgICAgICAtc3RhdGV2YXJpYWJsZSAg
dmFyTmFtZSAgICAgICAgIE5hbWUgb2YgYSB2YXJpYWJsZSB1c2VkIHRvIHN0b3JlIGluZm8KIwoj
IFJlc3VsdHM6CiMgICAgICAgUmV0dXJucyBhIFRjbCBsaXN0IHJlcHJlc2VudGluZyB0aGUgZG9j
dW1lbnQuCgpwcm9jIHNnbWw6OnRva2VuaXNlIHtzZ21sIGVsZW1FeHByIGVsZW1TdWIgYXJnc30g
ewogICAgYXJyYXkgc2V0IG9wdGlvbnMgey1maW5hbCAxfQogICAgY2F0Y2gge2FycmF5IHNldCBv
cHRpb25zICRhcmdzfQogICAgc2V0IG9wdGlvbnMoLWZpbmFsKSBbQm9vbGVhbiAkb3B0aW9ucygt
ZmluYWwpXQoKICAgICMgSWYgdGhlIGRhdGEgaXMgbm90IGZpbmFsIHRoZW4gdGhlcmUgbXVzdCBi
ZSBhIHZhcmlhYmxlIHRvIHN0b3JlCiAgICAjIHVudXNlZCBkYXRhLgogICAgaWYgeyEkb3B0aW9u
cygtZmluYWwpICYmICFbaW5mbyBleGlzdHMgb3B0aW9ucygtc3RhdGV2YXJpYWJsZSldfSB7CiAg
ICAgICAgcmV0dXJuIC1jb2RlIGVycm9yIHtvcHRpb24gIi1zdGF0ZXZhcmlhYmxlIiByZXF1aXJl
ZCBpZiBub3QgZmluYWx9CiAgICB9CgogICAgIyBQcmUtcHJvY2VzcyBzdGFnZQogICAgIwogICAg
IyBFeHRyYWN0IHRoZSBpbnRlcm5hbCBEVEQgc3Vic2V0LCBpZiBhbnkKCiAgICBjYXRjaCB7dXB2
YXIgIzAgJG9wdGlvbnMoLWludGVybmFsZHRkdmFyaWFibGUpIGR0ZH0KICAgIGlmIHtbcmVnZXhw
IHs8IURPQ1RZUEVbXls8XStcWyhbXl1dKylcXX0gJHNnbWwgZGlzY2FyZCBkdGRdfSB7CiAgICAg
ICAgcmVnc3ViIHsoPCFET0NUWVBFW15bPF0rKShcW1teXV0rXF0pfSAkc2dtbCB7XDFcJnhtbDpp
bnRkdGQ7fSBzZ21sCiAgICB9CgogICAgIyBQcm90ZWN0IFRjbCBzcGVjaWFsIGNoYXJhY3RlcnMK
ICAgIHJlZ3N1YiAtYWxsIHsoW3t9XFxdKX0gJHNnbWwge1xcXDF9IHNnbWwKCiAgICAjIERvIHRo
ZSB0cmFuc2xhdGlvbgoKICAgIGlmIHtbaW5mbyBleGlzdHMgb3B0aW9ucygtc3RhdGV2YXJpYWJs
ZSldfSB7CiAgICAgICAgdXB2YXIgIzAgJG9wdHMoLXN0YXRldmFyaWFibGUpIHVudXNlZAogICAg
ICAgIGlmIHtbaW5mbyBleGlzdHMgdW51c2VkXX0gewogICAgICAgICAgICByZWdzdWIgLWFsbCAk
ZWxlbUV4cHIgJHVudXNlZCRzZ21sICRlbGVtU3ViIHNnbWwKICAgICAgICAgICAgdW5zZXQgdW51
c2VkCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgcmVnc3ViIC1hbGwgJGVsZW1FeHByICRz
Z21sICRlbGVtU3ViIHNnbWwKICAgICAgICB9CiAgICAgICAgc2V0IHNnbWwgInt9IHt9IHt9IHt9
IFx7JHNnbWxcfSIKCiAgICAgICAgIyBQZXJmb3JtYW5jZSBub3RlIChUY2wgOC4wKToKICAgICAg
ICAjICAgICAgIFVzZSBvZiBsaW5kZXgsIGxyZXBsYWNlIHdpbGwgY2F1c2UgcGFyc2luZyB0byBs
aXN0IG9iamVjdAoKICAgICAgICBpZiB7W3JlZ2V4cCB7XihbXjxdKikoPFtePl0qJCl9IFtsaW5k
ZXggJHNnbWwgZW5kXSB4IHRleHQgdW51c2VkXX0gewogICAgICAgICAgICBzZXQgc2dtbCBbbHJl
cGxhY2UgJHNnbWwgZW5kIGVuZCAkdGV4dF0KICAgICAgICB9CgogICAgfSBlbHNlIHsKCiAgICAg
ICAgIyBQZXJmb3JtYW5jZSBub3RlIChUY2wgOC4wKToKICAgICAgICAjICAgICAgIEluIHRoaXMg
Y2FzZSwgbm8gY29udmVyc2lvbiB0byBsaXN0IG9iamVjdCBpcyBwZXJmb3JtZWQKCiAgICAgICAg
cmVnc3ViIC1hbGwgJGVsZW1FeHByICRzZ21sICRlbGVtU3ViIHNnbWwKICAgICAgICBzZXQgc2dt
bCAie30ge30ge30ge30gXHskc2dtbFx9IgogICAgfQoKICAgIHJldHVybiAkc2dtbAoKfQoKIyBz
Z21sOjpwYXJzZUV2ZW50IC0tCiMKIyAgICAgICBQcm9kdWNlcyBhbiBldmVudCBzdHJlYW0gZm9y
IGEgWE1ML0hUTUwgZG9jdW1lbnQsCiMgICAgICAgZ2l2ZW4gdGhlIFRjbCBsaXN0IGZvcm1hdCBy
ZXR1cm5lZCBieSB0b2tlbmlzZS4KIwojICAgICAgIFRoaXMgcHJvY2VkdXJlIGNoZWNrcyB0aGF0
IHRoZSBkb2N1bWVudCBpcyB3ZWxsLWZvcm1lZCwKIyAgICAgICBhbmQgdGhyb3dzIGFuIGVycm9y
IGlmIHRoZSBkb2N1bWVudCBpcyBmb3VuZCB0byBiZSBub3QKIyAgICAgICB3ZWxsIGZvcm1lZC4g
IFdhcm5pbmdzIGFyZSBwYXNzZWQgdmlhIHRoZSAtd2FybmluZ2NvbW1hbmQgc2NyaXB0LgojCiMg
ICAgICAgVGhlIHByb2NlZHVyZSBvbmx5IGNoZWNrIGZvciB3ZWxsLWZvcm1lZG5lc3MsCiMgICAg
ICAgbm8gRFREIGlzIHJlcXVpcmVkLiAgSG93ZXZlciwgZmFjaWxpdGllcyBhcmUgcHJvdmlkZWQg
Zm9yIGVudGl0eSBleHBhbnNpb24uCiMKIyBBcmd1bWVudHM6CiMgICAgICAgc2dtbCAgICAgICAg
ICAgIEluc3RhbmNlIGRhdGEsIGFzIGEgVGNsIGxpc3QuCiMgICAgICAgYXJncyAgICAgICAgICAg
IG9wdGlvbi92YWx1ZSBwYWlycwojCiMgVmFsaWQgT3B0aW9uczoKIyAgICAgICAtZmluYWwgICAg
ICAgICAgICAgICAgICBJbmRpY2F0ZXMgZW5kIG9mIGRvY3VtZW50IGRhdGEKIyAgICAgICAtZWxl
bWVudHN0YXJ0Y29tbWFuZCAgICBDYWxsZWQgd2hlbiBhbiBlbGVtZW50IHN0YXJ0cwojICAgICAg
IC1lbGVtZW50ZW5kY29tbWFuZCAgICAgIENhbGxlZCB3aGVuIGFuIGVsZW1lbnQgZW5kcwojICAg
ICAgIC1jaGFyYWN0ZXJkYXRhY29tbWFuZCAgIENhbGxlZCB3aGVuIGNoYXJhY3RlciBkYXRhIG9j
Y3VycwojICAgICAgIC1lbnRpdHlyZWZlcmVuY2Vjb21tYW5kIENhbGxlZCB3aGVuIGFuIGVudGl0
eSByZWZlcmVuY2Ugb2NjdXJzCiMgICAgICAgLXByb2Nlc3NpbmdpbnN0cnVjdGlvbmNvbW1hbmQg
ICBDYWxsZWQgd2hlbiBhIFBJIG9jY3VycwojICAgICAgIC1leHRlcm5hbGVudGl0eXJlZmNvbW1h
bmQgICAgICAgQ2FsbGVkIGZvciBhbiBleHRlcm5hbCBlbnRpdHkgcmVmZXJlbmNlCiMKIyAgICAg
ICAoTm90IGNvbXBhdGlibGUgd2l0aCBleHBhdCkKIyAgICAgICAteG1sZGVjbGNvbW1hbmQgICAg
ICAgICBDYWxsZWQgd2hlbiB0aGUgWE1MIGRlY2xhcmF0aW9uIG9jY3VycwojICAgICAgIC1kb2N0
eXBlY29tbWFuZCAgICAgICAgIENhbGxlZCB3aGVuIHRoZSBkb2N1bWVudCB0eXBlIGRlY2xhcmF0
aW9uIG9jY3VycwojICAgICAgIC1jb21tZW50Y29tbWFuZCAgICAgICAgIENhbGxlZCB3aGVuIGEg
Y29tbWVudCBvY2N1cnMKIwojICAgICAgIC1lcnJvcmNvbW1hbmQgICAgICAgICAgIFNjcmlwdCB0
byBldmFsdWF0ZSBmb3IgYSBmYXRhbCBlcnJvcgojICAgICAgIC13YXJuaW5nY29tbWFuZCAgICAg
ICAgIFNjcmlwdCB0byBldmFsdWF0ZSBmb3IgYSByZXBvcnRhYmxlIHdhcm5pbmcKIyAgICAgICAt
c3RhdGV2YXJpYWJsZSAgICAgICAgICBnbG9iYWwgc3RhdGUgdmFyaWFibGUKIyAgICAgICAtbm9y
bWFsaXplICAgICAgICAgICAgICB3aGV0aGVyIHRvIG5vcm1hbGl6ZSBuYW1lcwojICAgICAgIC1y
ZXBvcnRlbXB0eSAgICAgICAgICAgIHdoZXRoZXIgdG8gaW5jbHVkZSBhbiBpbmRpY2F0aW9uIG9m
IGVtcHR5IGVsZW1lbnRzCiMKIyBSZXN1bHRzOgojICAgICAgIFRoZSB2YXJpb3VzIGNhbGxiYWNr
IHNjcmlwdHMgYXJlIGludm9rZWQuCiMgICAgICAgUmV0dXJucyBlbXB0eSBzdHJpbmcuCiMKIyBC
VUdTOgojICAgICAgIElmIGNvbW1hbmQgb3B0aW9ucyBhcmUgc2V0IHRvIGVtcHR5IHN0cmluZyB0
aGVuIHRoZXkgc2hvdWxkIG5vdCBiZSBpbnZva2VkLgoKcHJvYyBzZ21sOjpwYXJzZUV2ZW50IHtz
Z21sIGFyZ3N9IHsKICAgIHZhcmlhYmxlIFdzcAogICAgdmFyaWFibGUgbm9Xc3AKICAgIHZhcmlh
YmxlIG5tdG9rZW4KICAgIHZhcmlhYmxlIG5hbWUKICAgIHZhcmlhYmxlIFBhcnNlRXZlbnROdW0K
CiAgICBhcnJheSBzZXQgb3B0aW9ucyBbbGlzdCBcCiAgICAgICAgLWVsZW1lbnRzdGFydGNvbW1h
bmQgICAgICAgICAgICBbbmFtZXNwYWNlIGN1cnJlbnRdOjpub29wICAgICAgIFwKICAgICAgICAt
ZWxlbWVudGVuZGNvbW1hbmQgICAgICAgICAgICAgIFtuYW1lc3BhY2UgY3VycmVudF06Om5vb3Ag
ICAgICAgXAogICAgICAgIC1jaGFyYWN0ZXJkYXRhY29tbWFuZCAgICAgICAgICAgW25hbWVzcGFj
ZSBjdXJyZW50XTo6bm9vcCAgICAgICBcCiAgICAgICAgLXByb2Nlc3NpbmdpbnN0cnVjdGlvbmNv
bW1hbmQgICBbbmFtZXNwYWNlIGN1cnJlbnRdOjpub29wICAgICAgIFwKICAgICAgICAtZXh0ZXJu
YWxlbnRpdHlyZWZjb21tYW5kICAgICAgIFtuYW1lc3BhY2UgY3VycmVudF06Om5vb3AgICAgICAg
XAogICAgICAgIC14bWxkZWNsY29tbWFuZCAgICAgICAgICAgICAgICAgW25hbWVzcGFjZSBjdXJy
ZW50XTo6bm9vcCAgICAgICBcCiAgICAgICAgLWRvY3R5cGVjb21tYW5kICAgICAgICAgICAgICAg
ICBbbmFtZXNwYWNlIGN1cnJlbnRdOjpub29wICAgICAgIFwKICAgICAgICAtY29tbWVudGNvbW1h
bmQgICAgICAgICAgICAgICAgIFtuYW1lc3BhY2UgY3VycmVudF06Om5vb3AgICAgICAgXAogICAg
ICAgIC1lbnRpdHlyZWZlcmVuY2Vjb21tYW5kICAgICAgICAge30gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCiAgICAgICAgLXdhcm5pbmdjb21tYW5kICAgICAgICAgICAgICAgICBbbmFt
ZXNwYWNlIGN1cnJlbnRdOjpub29wICAgICAgIFwKICAgICAgICAtZXJyb3Jjb21tYW5kICAgICAg
ICAgICAgICAgICAgIFtuYW1lc3BhY2UgY3VycmVudF06OkVycm9yICAgICAgXAogICAgICAgIC1m
aW5hbCAgICAgICAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBcCiAgICAgICAgLWVtcHR5ZWxlbWVudCAgICAgICAgICAgICAgICAgICBbbmFtZXNwYWNl
IGN1cnJlbnRdOjpFbXB0eUVsZW1lbnQgICAgICAgXAogICAgICAgIC1wYXJzZWF0dHJpYnV0ZWxp
c3Rjb21tYW5kICAgICAgW25hbWVzcGFjZSBjdXJyZW50XTo6bm9vcCAgICAgICBcCiAgICAgICAg
LW5vcm1hbGl6ZSAgICAgICAgICAgICAgICAgICAgICAxICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFwKICAgICAgICAtaW50ZXJuYWxkdGQgICAgICAgICAgICAgICAgICAgIHt9ICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgIC1yZXBvcnRlbXB0eSAgICAgICAgICAg
ICAgICAgICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgLWVudGl0
eXZhcmlhYmxlICAgICAgICAgICAgICAgICBbbmFtZXNwYWNlIGN1cnJlbnRdOjpFbnRpdHlQcmVk
ZWYgICAgICAgXAogICAgXQogICAgY2F0Y2gge2FycmF5IHNldCBvcHRpb25zICRhcmdzfQoKICAg
IGlmIHshW2luZm8gZXhpc3RzIG9wdGlvbnMoLXN0YXRldmFyaWFibGUpXX0gewogICAgICAgIHNl
dCBvcHRpb25zKC1zdGF0ZXZhcmlhYmxlKSBbbmFtZXNwYWNlIGN1cnJlbnRdOjpQYXJzZUV2ZW50
W2luY3IgUGFyc2VFdmVudE51bV0KICAgIH0KCiAgICB1cHZhciAjMCAkb3B0aW9ucygtc3RhdGV2
YXJpYWJsZSkgc3RhdGUKICAgIHVwdmFyICMwICRvcHRpb25zKC1lbnRpdHl2YXJpYWJsZSkgZW50
aXRpZXMKCiAgICBpZiB7IVtpbmZvIGV4aXN0cyBzdGF0ZV19IHsKICAgICAgICAjIEluaXRpYWxp
c2UgdGhlIHN0YXRlIHZhcmlhYmxlCiAgICAgICAgYXJyYXkgc2V0IHN0YXRlIHsKICAgICAgICAg
ICAgbW9kZSBub3JtYWwKICAgICAgICAgICAgaGF2ZVhNTERlY2wgMAogICAgICAgICAgICBoYXZl
RG9jRWxlbWVudCAwCiAgICAgICAgICAgIGNvbnRleHQge30KICAgICAgICAgICAgc3RhY2sge30K
ICAgICAgICAgICAgbGluZSAwCiAgICAgICAgfQogICAgfQoKICAgIGZvcmVhY2gge3RhZyBjbG9z
ZSBlbXB0eSBwYXJhbSB0ZXh0fSAkc2dtbCB7CgogICAgICAgICMgS2VlcCB0cmFjayBvZiBsaW5l
cyBpbiB0aGUgaW5wdXQKICAgICAgICBpbmNyIHN0YXRlKGxpbmUpIFtyZWdzdWIgLWFsbCBcbiAk
cGFyYW0ge30gZGlzY2FyZF0KICAgICAgICBpbmNyIHN0YXRlKGxpbmUpIFtyZWdzdWIgLWFsbCBc
biAkdGV4dCB7fSBkaXNjYXJkXQoKICAgICAgICAjIElmIHRoZSBjdXJyZW50IG1vZGUgaXMgY2Rh
dGEgb3IgY29tbWVudCB0aGVuIHdlIG11c3QgdW5kbyB3aGF0IHRoZQogICAgICAgICMgcmVnc3Vi
IGhhcyBkb25lIHRvIHJlY29uc3RpdHV0ZSB0aGUgZGF0YQoKICAgICAgICBzd2l0Y2ggJHN0YXRl
KG1vZGUpIHsKICAgICAgICAgICAgY29tbWVudCB7CiAgICAgICAgICAgICAgICAjIFRoaXMgaGFk
ICJbc3RyaW5nIGxlbmd0aCAkcGFyYW1dICYmICIgYXMgYSBndWFyZCAtCiAgICAgICAgICAgICAg
ICAjIGNhbid0IHJlbWVtYmVyIHdoeSA6LSgKICAgICAgICAgICAgICAgIGlmIHtbcmVnZXhwIChb
Y2wgXi1dKiktLVwkICR0YWcgZGlzY2FyZCBjb21tMV19IHsKICAgICAgICAgICAgICAgICAgICAj
IGVuZCBvZiBjb21tZW50IChpbiB0YWcpCiAgICAgICAgICAgICAgICAgICAgc2V0IHRhZyB7fQog
ICAgICAgICAgICAgICAgICAgIHNldCBjbG9zZSB7fQogICAgICAgICAgICAgICAgICAgIHNldCBl
bXB0eSB7fQogICAgICAgICAgICAgICAgICAgIHNldCBzdGF0ZShtb2RlKSBub3JtYWwKICAgICAg
ICAgICAgICAgICAgICB1cGxldmVsICMwICRvcHRpb25zKC1jb21tZW50Y29tbWFuZCkgW2xpc3Qg
JHN0YXRlKGNvbW1lbnRkYXRhKTwkY29tbTFdCiAgICAgICAgICAgICAgICAgICAgdW5zZXQgc3Rh
dGUoY29tbWVudGRhdGEpCiAgICAgICAgICAgICAgICB9IGVsc2VpZiB7W3JlZ2V4cCAoW2NsIF4t
XSopLS1cJCAkcGFyYW0gZGlzY2FyZCBjb21tMV19IHsKICAgICAgICAgICAgICAgICAgICAjIGVu
ZCBvZiBjb21tZW50IChpbiBhdHRyaWJ1dGVzKQogICAgICAgICAgICAgICAgICAgIHVwbGV2ZWwg
IzAgJG9wdGlvbnMoLWNvbW1lbnRjb21tYW5kKSBbbGlzdCAkc3RhdGUoY29tbWVudGRhdGEpPCRj
bG9zZSR0YWckZW1wdHk+JGNvbW0xXQogICAgICAgICAgICAgICAgICAgIHVuc2V0IHN0YXRlKGNv
bW1lbnRkYXRhKQogICAgICAgICAgICAgICAgICAgIHNldCB0YWcge30KICAgICAgICAgICAgICAg
ICAgICBzZXQgcGFyYW0ge30KICAgICAgICAgICAgICAgICAgICBzZXQgY2xvc2Uge30KICAgICAg
ICAgICAgICAgICAgICBzZXQgZW1wdHkge30KICAgICAgICAgICAgICAgICAgICBzZXQgc3RhdGUo
bW9kZSkgbm9ybWFsCiAgICAgICAgICAgICAgICB9IGVsc2VpZiB7W3JlZ2V4cCAoW2NsIF4tXSop
LS0+KC4qKSAkdGV4dCBkaXNjYXJkIGNvbW0xIHRleHRdfSB7CiAgICAgICAgICAgICAgICAgICAg
IyBlbmQgb2YgY29tbWVudCAoaW4gdGV4dCkKICAgICAgICAgICAgICAgICAgICB1cGxldmVsICMw
ICRvcHRpb25zKC1jb21tZW50Y29tbWFuZCkgW2xpc3QgJHN0YXRlKGNvbW1lbnRkYXRhKTwkY2xv
c2UkdGFnJHBhcmFtJGVtcHR5PiRjb21tMV0KICAgICAgICAgICAgICAgICAgICB1bnNldCBzdGF0
ZShjb21tZW50ZGF0YSkKICAgICAgICAgICAgICAgICAgICBzZXQgdGFnIHt9CiAgICAgICAgICAg
ICAgICAgICAgc2V0IHBhcmFtIHt9CiAgICAgICAgICAgICAgICAgICAgc2V0IGNsb3NlIHt9CiAg
ICAgICAgICAgICAgICAgICAgc2V0IGVtcHR5IHt9CiAgICAgICAgICAgICAgICAgICAgc2V0IHN0
YXRlKG1vZGUpIG5vcm1hbAogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAjIGNvbW1lbnQgY29udGludWVzCiAgICAgICAgICAgICAgICAgICAgYXBwZW5kIHN0YXRl
KGNvbW1lbnRkYXRhKSA8JGNsb3NlJHRhZyRwYXJhbSRlbXB0eT4kdGV4dAogICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgY2RhdGEgewogICAgICAgICAgICAgICAgaWYge1tzdHJpbmcgbGVuZ3RoICRwYXJhbV0gJiYg
W3JlZ2V4cCAoW2NsIF5cXV0qKVxdXF1bY2wgJFdzcF0qXCQgJHRhZyBkaXNjYXJkIGNkYXRhMV19
IHsKICAgICAgICAgICAgICAgICAgICAjIGVuZCBvZiBDREFUQSAoaW4gdGFnKQogICAgICAgICAg
ICAgICAgICAgIHVwbGV2ZWwgIzAgJG9wdGlvbnMoLWNoYXJhY3RlcmRhdGFjb21tYW5kKSBbbGlz
dCAkc3RhdGUoY2RhdGEpPCRjbG9zZSRjZGF0YTEkdGV4dF0KICAgICAgICAgICAgICAgICAgICBz
ZXQgdGV4dCB7fQogICAgICAgICAgICAgICAgICAgIHNldCB0YWcge30KICAgICAgICAgICAgICAg
ICAgICB1bnNldCBzdGF0ZShjZGF0YSkKICAgICAgICAgICAgICAgICAgICBzZXQgc3RhdGUobW9k
ZSkgbm9ybWFsCiAgICAgICAgICAgICAgICB9IGVsc2VpZiB7W3JlZ2V4cCAoW2NsIF5cXV0qKVxd
XF1bY2wgJFdzcF0qXCQgJHBhcmFtIGRpc2NhcmQgY2RhdGExXX0gewogICAgICAgICAgICAgICAg
ICAgICMgZW5kIG9mIENEQVRBIChpbiBhdHRyaWJ1dGVzKQogICAgICAgICAgICAgICAgICAgIHVw
bGV2ZWwgIzAgJG9wdGlvbnMoLWNoYXJhY3RlcmRhdGFjb21tYW5kKSBbbGlzdCAkc3RhdGUoY2Rh
dGEpPCRjbG9zZSR0YWckY2RhdGExJHRleHRdCiAgICAgICAgICAgICAgICAgICAgc2V0IHRleHQg
e30KICAgICAgICAgICAgICAgICAgICBzZXQgdGFnIHt9CiAgICAgICAgICAgICAgICAgICAgc2V0
IHBhcmFtIHt9CiAgICAgICAgICAgICAgICAgICAgdW5zZXQgc3RhdGUoY2RhdGEpCiAgICAgICAg
ICAgICAgICAgICAgc2V0IHN0YXRlKG1vZGUpIG5vcm1hbAogICAgICAgICAgICAgICAgfSBlbHNl
aWYge1tyZWdleHAgKFtjbCBeXF1dKilcXVxdW2NsICRXc3BdKj4oLiopICR0ZXh0IGRpc2NhcmQg
Y2RhdGExIHRleHRdfSB7CiAgICAgICAgICAgICAgICAgICAgIyBlbmQgb2YgQ0RBVEEgKGluIHRl
eHQpCiAgICAgICAgICAgICAgICAgICAgdXBsZXZlbCAjMCAkb3B0aW9ucygtY2hhcmFjdGVyZGF0
YWNvbW1hbmQpIFtsaXN0ICRzdGF0ZShjZGF0YSk8JGNsb3NlJHRhZyRwYXJhbSRlbXB0eT4kY2Rh
dGExJHRleHRdCiAgICAgICAgICAgICAgICAgICAgc2V0IHRleHQge30KICAgICAgICAgICAgICAg
ICAgICBzZXQgdGFnIHt9CiAgICAgICAgICAgICAgICAgICAgc2V0IHBhcmFtIHt9CiAgICAgICAg
ICAgICAgICAgICAgc2V0IGNsb3NlIHt9CiAgICAgICAgICAgICAgICAgICAgc2V0IGVtcHR5IHt9
CiAgICAgICAgICAgICAgICAgICAgdW5zZXQgc3RhdGUoY2RhdGEpCiAgICAgICAgICAgICAgICAg
ICAgc2V0IHN0YXRlKG1vZGUpIG5vcm1hbAogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICAjIENEQVRBIGNvbnRpbnVlcwogICAgICAgICAgICAgICAgICAgIGFwcGVu
ZCBzdGF0ZShjZGF0YSkgPCRjbG9zZSR0YWckcGFyYW0kZW1wdHk+JHRleHQKICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAg
fQoKICAgICAgICAjIGRlZmF1bHQ6IG5vcm1hbCBtb2RlCgogICAgICAgICMgQnVnOiBpZiB0aGUg
YXR0cmlidXRlIGxpc3QgaGFzIGEgcmlnaHQgYW5nbGUgYnJhY2tldCB0aGVuIHRoZSBlbXB0eQog
ICAgICAgICMgZWxlbWVudCBtYXJrZXIgd2lsbCBub3QgYmUgc2VlbgoKICAgICAgICBzZXQgaXNF
bXB0eSBbdXBsZXZlbCAjMCAkb3B0aW9ucygtZW1wdHllbGVtZW50KSBbbGlzdCAkdGFnICRwYXJh
bSAkZW1wdHldXQogICAgICAgIGlmIHtbbGxlbmd0aCAkaXNFbXB0eV19IHsKICAgICAgICAgICAg
Zm9yZWFjaCB7ZW1wdHkgdGFnIHBhcmFtfSAkaXNFbXB0eSBicmVhawogICAgICAgIH0KCiAgICAg
ICAgc3dpdGNoIC1nbG9iIC0tIFtzdHJpbmcgbGVuZ3RoICR0YWddLFtyZWdleHAge15cP3whLip9
ICR0YWddLCRjbG9zZSwkZW1wdHkgewoKICAgICAgICAgICAgMCwwLCwgewogICAgICAgICAgICAg
ICAgIyBJZ25vcmUgZW1wdHkgdGFnIC0gZGVhbHQgd2l0aCBub24tbm9ybWFsIG1vZGUgYWJvdmUK
ICAgICAgICAgICAgfQogICAgICAgICAgICAqLDAsLCB7CgogICAgICAgICAgICAgICAgIyBTdGFy
dCB0YWcgZm9yIGFuIGVsZW1lbnQuCgogICAgICAgICAgICAgICAgIyBDaGVjayBmb3IgYSByaWdo
dCBhbmdsZSBicmFja2V0IGluIGFuIGF0dHJpYnV0ZSB2YWx1ZQogICAgICAgICAgICAgICAgIyBU
aGlzIG1hbmlmZXN0cyBpdHNlbGYgYnkgdGVybWluYXRpbmcgdGhlIHZhbHVlIGJlZm9yZQogICAg
ICAgICAgICAgICAgIyB0aGUgZGVsaW1pdGVyIGlzIHNlZW4sIGFuZCB0aGUgZGVsaW1pdGVyIGFw
cGVhcmluZwogICAgICAgICAgICAgICAgIyBpbiB0aGUgdGV4dAoKICAgICAgICAgICAgICAgICMg
QlVHOiBJZiB0d28gb3IgbW9yZSBhdHRyaWJ1dGUgdmFsdWVzIGhhdmUgcmlnaHQgYW5nbGUKICAg
ICAgICAgICAgICAgICMgYnJhY2tldHMgdGhlbiB0aGlzIHdpbGwgZmFpbCBvbiB0aGUgc2Vjb25k
IG9uZS4KCiAgICAgICAgICAgICAgICBpZiB7W3JlZ2V4cCBbZm9ybWF0IHs9WyVzXSoiW14iXSok
fSAkV3NwXSAkcGFyYW1dICYmIFwKICAgICAgICAgICAgICAgICAgICAgICAgW3JlZ2V4cCB7KFte
Il0qIltePl0qKT4oLiopfSAkdGV4dCBkaXNjYXJkIGF0dHJMaXN0UmVtYWluZGVyIHRleHRdfSB7
CiAgICAgICAgICAgICAgICAgICAgYXBwZW5kIHBhcmFtID4kYXR0ckxpc3RSZW1haW5kZXIKICAg
ICAgICAgICAgICAgIH0gZWxzZWlmIHtbcmVnZXhwIFtmb3JtYXQgez1bJXNdKidbXiddKiR9ICRX
c3BdICRwYXJhbV0gJiYgXAogICAgICAgICAgICAgICAgICAgICAgICBbcmVnZXhwIHsoW14nXSon
W14+XSopPiguKil9ICR0ZXh0IGRpc2NhcmQgYXR0ckxpc3RSZW1haW5kZXIgdGV4dF19IHsKICAg
ICAgICAgICAgICAgICAgICBhcHBlbmQgcGFyYW0gPiRhdHRyTGlzdFJlbWFpbmRlcgogICAgICAg
ICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhlIGludGVybmFsIERURCBl
bnRpdHkgaXMgaW4gYW4gYXR0cmlidXRlCiAgICAgICAgICAgICAgICAjIHZhbHVlCiAgICAgICAg
ICAgICAgICByZWdzdWIgLWFsbCAmeG1sOmludGR0ZFw7ICRwYXJhbSBcWyRvcHRpb25zKC1pbnRl
cm5hbGR0ZClcXSBwYXJhbQoKICAgICAgICAgICAgICAgIFBhcnNlRXZlbnQ6RWxlbWVudE9wZW4g
JHRhZyAkcGFyYW0gb3B0aW9ucwogICAgICAgICAgICAgICAgc2V0IHN0YXRlKGhhdmVEb2NFbGVt
ZW50KSAxCgogICAgICAgICAgICB9CgogICAgICAgICAgICAqLDAsLywgewoKICAgICAgICAgICAg
ICAgICMgRW5kIHRhZyBmb3IgYW4gZWxlbWVudC4KCiAgICAgICAgICAgICAgICBQYXJzZUV2ZW50
OkVsZW1lbnRDbG9zZSAkdGFnIG9wdGlvbnMKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICos
MCwsLyB7CgogICAgICAgICAgICAgICAgIyBFbXB0eSBlbGVtZW50CgogICAgICAgICAgICAgICAg
UGFyc2VFdmVudDpFbGVtZW50T3BlbiAkdGFnICRwYXJhbSBvcHRpb25zIC1lbXB0eSAxCiAgICAg
ICAgICAgICAgICBQYXJzZUV2ZW50OkVsZW1lbnRDbG9zZSAkdGFnIG9wdGlvbnMgLWVtcHR5IDEK
CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICosMSwqIHsKICAgICAgICAgICAgICAgICMgUHJv
Y2Vzc2luZyBpbnN0cnVjdGlvbnMgb3IgWE1MIGRlY2xhcmF0aW9uCiAgICAgICAgICAgICAgICBz
d2l0Y2ggLWdsb2IgLS0gJHRhZyB7CgogICAgICAgICAgICAgICAgICAgIHtcP3htbH0gewogICAg
ICAgICAgICAgICAgICAgICAgICAjIFhNTCBEZWNsYXJhdGlvbgogICAgICAgICAgICAgICAgICAg
ICAgICBpZiB7JHN0YXRlKGhhdmVYTUxEZWNsKX0gewogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdXBsZXZlbCAjMCAkb3B0aW9ucygtZXJyb3Jjb21tYW5kKSAidW5leHBlY3RlZCBjaGFyYWN0
ZXJzIFwiPCR0YWdcIiBhcm91bmQgbGluZSAkc3RhdGUobGluZSkiCiAgICAgICAgICAgICAgICAg
ICAgICAgIH0gZWxzZWlmIHshW3JlZ2V4cCB7XD8kfSAkcGFyYW1dfSB7CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1cGxldmVsICMwICRvcHRpb25zKC1lcnJvcmNvbW1hbmQpICJYTUwgRGVj
bGFyYXRpb24gbWlzc2luZyBjaGFyYWN0ZXJzIFwiPz5cIiBhcm91bmQgbGluZSAkc3RhdGUobGlu
ZSkiCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIyBHZXQgdGhlIHZlcnNpb24gbnVtYmVyCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiB7W3JlZ2V4cCB7WyAgICAgIF0qdmVyc2lvbj0iKC0rfFthLXpBLVowLTlfLjpdKyki
WyAgICAgICBdKn0gJHBhcmFtIGRpc2NhcmQgdmVyc2lvbl0gfHwgW3JlZ2V4cCB7WyAgICAgICBd
KnZlcnNpb249JygtK3xbYS16QS1aMC05Xy46XSspJ1sgICAgICAgXSp9ICRwYXJhbSBkaXNjYXJk
IHZlcnNpb25dfSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYge1tzdHJpbmcg
Y29tcGFyZSAkdmVyc2lvbiAiMS4wIl19IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIyBTaG91bGQgd2Ugc3VwcG9ydCBmdXR1cmUgdmVyc2lvbnM/CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICMgQXQgbGVhc3QgMS5YPwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1cGxldmVsICMwICRvcHRpb25zKC1lcnJvcmNvbW1hbmQpICJkb2N1
bWVudCBYTUwgdmVyc2lvbiBcIiR2ZXJzaW9uXCIgaXMgaW5jb21wYXRpYmxlIHdpdGggWE1MIHZl
cnNpb24gMS4wIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dXBsZXZlbCAjMCAkb3B0aW9ucygtZXJyb3Jjb21tYW5kKSAiWE1MIERlY2xhcmF0aW9uIG1pc3Np
bmcgdmVyc2lvbiBpbmZvcm1hdGlvbiBhcm91bmQgbGluZSAkc3RhdGUobGluZSkiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQg
dGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQg
ZW5jb2Rpbmcge30KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4cCB7WyAgIF0qZW5j
b2Rpbmc9IihbQS1aYS16XShbQS1aYS16MC05Ll9dfC0pKikiWyAgICAgIF0qfSAkcGFyYW0gZGlz
Y2FyZCBlbmNvZGluZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnZXhwIHtbICAgXSpl
bmNvZGluZz0nKFtBLVphLXpdKFtBLVphLXowLTkuX118LSkqKSdbICAgICAgXSp9ICRwYXJhbSBk
aXNjYXJkIGVuY29kaW5nCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBHZXQgdGhlIHN0
YW5kYWxvbmUgZGVjbGFyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCBzdGFu
ZGFsb25lIHt9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdleHAge1sgICBdKnN0YW5k
YWxvbmU9Iih5ZXN8bm8pIlsgICAgICAgIF0qfSAkcGFyYW0gZGlzY2FyZCBzdGFuZGFsb25lCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWdleHAge1sgICBdKnN0YW5kYWxvbmU9Jyh5ZXN8
bm8pJ1sgICAgICAgIF0qfSAkcGFyYW0gZGlzY2FyZCBzdGFuZGFsb25lCgogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIyBJbnZva2UgdGhlIGNhbGxiYWNrCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cGxldmVsICMwICRvcHRpb25zKC14bWxkZWNsY29tbWFuZCkgW2xpc3QgJHZlcnNp
b24gJGVuY29kaW5nICRzdGFuZGFsb25lXQoKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHtcPyp9IHsKICAgICAgICAg
ICAgICAgICAgICAgICAgIyBQcm9jZXNzaW5nIGluc3RydWN0aW9uCiAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIHshW3JlZ3N1YiB7XD8kfSAkcGFyYW0ge30gcGFyYW1dfSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1cGxldmVsICMwICRvcHRpb25zKC1lcnJvcmNvbW1hbmQpICJQSTog
ZXhwZWN0ZWQgJz8nIGNoYXJhY3RlciBhcm91bmQgbGluZSAkc3RhdGUobGluZSkiCiAgICAgICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGxl
dmVsICMwICRvcHRpb25zKC1wcm9jZXNzaW5naW5zdHJ1Y3Rpb25jb21tYW5kKSBbbGlzdCBbc3Ry
aW5nIHJhbmdlICR0YWcgMSBlbmRdIFtzdHJpbmcgdHJpbWxlZnQgJHBhcmFtXV0KICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAg
ICAgIURPQ1RZUEUgewogICAgICAgICAgICAgICAgICAgICAgICAjIEV4dGVybmFsIGVudGl0eSBy
ZWZlcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBtb3ZlIGludG8g
eG1sLnRjbAogICAgICAgICAgICAgICAgICAgICAgICAjIFBhcnNlIHRoZSBwYXJhbXMgc3VwcGxp
ZWQuICBMb29raW5nIGZvciBOYW1lLCBFeHRlcm5hbElEIGFuZCBNYXJrdXBEZWNsCiAgICAgICAg
ICAgICAgICAgICAgICAgIHJlZ2V4cCBeW2NsICRXc3BdKigkbmFtZSkoLiopICRwYXJhbSB4IHN0
YXRlKGRvY19uYW1lKSBwYXJhbQogICAgICAgICAgICAgICAgICAgICAgICBzZXQgc3RhdGUoZG9j
X25hbWUpIFtOb3JtYWxpemUgJHN0YXRlKGRvY19uYW1lKSAkb3B0aW9ucygtbm9ybWFsaXplKV0K
ICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGV4dGVybmFsSUQge30KICAgICAgICAgICAgICAg
ICAgICAgICAgc2V0IHB1YmlkbGl0IHt9CiAgICAgICAgICAgICAgICAgICAgICAgIHNldCBzeXN0
ZW1saXQge30KICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGV4dGVybmFsSUQge30KICAgICAg
ICAgICAgICAgICAgICAgICAgaWYge1tyZWdleHAgLW5vY2FzZSBeW2NsICRXc3BdKihTWVNURU18
UFVCTElDKSguKikgJHBhcmFtIHggaWQgcGFyYW1dfSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzd2l0Y2ggW3N0cmluZyB0b3VwcGVyICRpZF0gewogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFNZU1RFTSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlm
IHtbcmVnZXhwIF5bY2wgJFdzcF0rIihbY2wgXiJdKikiKC4qKSAkcGFyYW0geCBzeXN0ZW1saXQg
cGFyYW1dIHx8IFtyZWdleHAgXltjbCAkV3NwXSsnKFtjbCBeJ10qKScoLiopICRwYXJhbSB4IHN5
c3RlbWxpdCBwYXJhbV19IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNldCBleHRlcm5hbElEIFtsaXN0IFNZU1RFTSAkc3lzdGVtbGl0XSA7IyAiCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1cGxldmVsICMwICRvcHRpb25zKC1lcnJvcmNvbW1hbmQpIHt7c3lu
dGF4IGVycm9yOiBTWVNURU0gaWRlbnRpZmllciBub3QgZm9sbG93ZWQgYnkgbGl0ZXJhbH19CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFVCTElDIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYge1tyZWdleHAgXltjbCAkV3NwXSsi
KFtjbCBeIl0qKSIoLiopICRwYXJhbSB4IHB1YmlkbGl0IHBhcmFtXSB8fCBbcmVnZXhwIF5bY2wg
JFdzcF0rJyhbY2wgXiddKiknKC4qKSAkcGFyYW0geCBwdWJpZGxpdCBwYXJhbV19IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHtbcmVnZXhwIF5bY2wgJFdzcF0r
IihbY2wgXiJdKikiKC4qKSAkcGFyYW0geCBzeXN0ZW1saXQgcGFyYW1dIHx8IFtyZWdleHAgXltj
bCAkV3NwXSsnKFtjbCBeJ10qKScoLiopICRwYXJhbSB4IHN5c3RlbWxpdCBwYXJhbV19IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgZXh0ZXJuYWxJRCBb
bGlzdCBQVUJMSUMgJHB1YmlkbGl0ICRzeXN0ZW1saXRdCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVwbGV2ZWwgIzAgJG9wdGlvbnMoLWVycm9yY29tbWFuZCkgInN5bnRheCBl
cnJvcjogUFVCTElDIGlkZW50aWZpZXIgbm90IGZvbGxvd2VkIGJ5IHN5c3RlbSBsaXRlcmFsIGFy
b3VuZCBsaW5lICRzdGF0ZShsaW5lKSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwbGV2ZWwgIzAgJG9wdGlvbnMo
LWVycm9yY29tbWFuZCkgInN5bnRheCBlcnJvcjogUFVCTElDIGlkZW50aWZpZXIgbm90IGZvbGxv
d2VkIGJ5IGxpdGVyYWwgYXJvdW5kIGxpbmUgJHN0YXRlKGxpbmUpIgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAg
aWYge1tyZWdleHAgLW5vY2FzZSBeW2NsICRXc3BdK05EQVRBW2NsICRXc3BdKygkbmFtZSkoLiop
ICRwYXJhbSB4IG5vdGF0aW9uIHBhcmFtXX0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxhcHBlbmQgZXh0ZXJuYWxJRCAkbm90YXRpb24KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAg
dXBsZXZlbCAjMCAkb3B0aW9ucygtZG9jdHlwZWNvbW1hbmQpICRzdGF0ZShkb2NfbmFtZSkgW2xp
c3QgJHB1YmlkbGl0ICRzeXN0ZW1saXQgJG9wdGlvbnMoLWludGVybmFsZHRkKV0KCiAgICAgICAg
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAhLS0qIHsKCiAgICAgICAgICAgICAg
ICAgICAgICAgICMgU3RhcnQgb2YgYSBjb21tZW50CiAgICAgICAgICAgICAgICAgICAgICAgICMg
U2VlIGlmIGl0IGVuZHMgaW4gdGhlIHNhbWUgdGFnLCBvdGhlcndpc2UgY2hhbmdlIHRoZQogICAg
ICAgICAgICAgICAgICAgICAgICAjIHBhcnNpbmcgbW9kZQoKICAgICAgICAgICAgICAgICAgICAg
ICAgcmVnZXhwIHshLS0oLiopfSAkdGFnIGRpc2NhcmQgY29tbTEKICAgICAgICAgICAgICAgICAg
ICAgICAgaWYge1tyZWdleHAgKFtjbCBeLV0qKS0tW2NsICRXc3BdKlwkICRjb21tMSBkaXNjYXJk
IGNvbW0xXzFdfSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3NlZCBjb21t
ZW50IChlbmQgaW4gdGFnKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBsZXZlbCAjMCAk
b3B0aW9ucygtY29tbWVudGNvbW1hbmQpIFtsaXN0ICRjb21tMV8xXQogICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2VpZiB7W3JlZ2V4cCAoW2NsIF4tXSopLS1bY2wgJFdzcF0qXCQgJHBhcmFt
IGRpc2NhcmQgY29tbTJdfSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHByb2Nlc3Nl
ZCBjb21tZW50IChlbmQgaW4gYXR0cmlidXRlcykKICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHVwbGV2ZWwgIzAgJG9wdGlvbnMoLWNvbW1lbnRjb21tYW5kKSBbbGlzdCAkY29tbTEkY29tbTJd
CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZWlmIHtbcmVnZXhwIChbY2wgXi1dKiktLT4o
LiopICR0ZXh0IGRpc2NhcmQgY29tbTIgdGV4dF19IHsKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMgcHJvY2Vzc2VkIGNvbW1lbnQgKGVuZCBpbiB0ZXh0KQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdXBsZXZlbCAjMCAkb3B0aW9ucygtY29tbWVudGNvbW1hbmQpIFtsaXN0ICRjb21t
MSRwYXJhbT4kY29tbTJdCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAjIHN0YXJ0IG9mIGNvbW1lbnQKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNldCBzdGF0ZShtb2RlKSBjb21tZW50CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZXQgc3RhdGUoY29tbWVudGRhdGEpICIkY29tbTEkcGFyYW0+JHRleHQiCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB7IVxbQ0RBVEFcWyp9IHsK
CiAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2V4cCB7IVxbQ0RBVEFcWyguKil9ICR0YWcgZGlz
Y2FyZCBjZGF0YTEKICAgICAgICAgICAgICAgICAgICAgICAgaWYge1tyZWdleHAgeyguKildXSR9
ICRwYXJhbSBkaXNjYXJkIGNkYXRhMl19IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg
cHJvY2Vzc2VkIENEQVRBIChlbmQgaW4gYXR0cmlidXRlKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdXBsZXZlbCAjMCAkb3B0aW9ucygtY2hhcmFjdGVyZGF0YWNvbW1hbmQpIFtsaXN0ICRj
ZGF0YTEkY2RhdGEyJHRleHRdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgdGV4dCB7
fQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2VpZiB7W3JlZ2V4cCB7KC4qKV1dPiguKil9
ICR0ZXh0IGRpc2NhcmQgY2RhdGEyIHRleHRdfSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAjIHByb2Nlc3NlZCBDREFUQSAoZW5kIGluIHRleHQpCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1cGxldmVsICMwICRvcHRpb25zKC1jaGFyYWN0ZXJkYXRhY29tbWFuZCkgW2xpc3QgJGNk
YXRhMSRwYXJhbSRlbXB0eT4kY2RhdGEyJHRleHRdCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXQgdGV4dCB7fQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIyBzdGFydCBDREFUQQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2V0IHN0YXRlKGNkYXRhKSAiJGNkYXRhMSRwYXJhbT4kdGV4dCIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldCBzdGF0ZShtb2RlKSBjZGF0YQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgICFFTEVNRU5UIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgIyBJbnRlcm5hbCBEVEQgZGVjbGFyYXRpb24KICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgIUFUVExJU1QgewogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgICAgICAhRU5USVRZIHsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgICAgIU5PVEFUSU9OIHsKICAgICAgICAgICAgICAgICAgICB9CgoKICAgICAgICAgICAg
ICAgICAgICAhKiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVwbGV2ZWwgIzAgJG9wdGlvbnMo
LXByb2Nlc3NpbmdpbnN0cnVjdGlvbmNvbW1hbmQpIFtsaXN0ICR0YWcgJHBhcmFtXQogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IHsKICAgICAgICAgICAg
ICAgICAgICAgICAgdXBsZXZlbCAjMCAkb3B0aW9ucygtZXJyb3Jjb21tYW5kKSBbbGlzdCAidW5r
bm93biBwcm9jZXNzaW5nIGluc3RydWN0aW9uIFwiPCR0YWc+XCIgYXJvdW5kIGxpbmUgJHN0YXRl
KGxpbmUpIl0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgKiwxLCogLQogICAgICAgICAgICAqLDAsLywvIHsKICAgICAgICAg
ICAgICAgICMgU3ludGF4IGVycm9yCiAgICAgICAgICAgICAgICB1cGxldmVsICMwICRvcHRpb25z
KC1lcnJvcmNvbW1hbmQpIFtsaXN0IFtsaXN0IHN5bnRheCBlcnJvcjogY2xvc2VkL2VtcHR5IHRh
ZzogdGFnICR0YWcgcGFyYW0gJHBhcmFtIGVtcHR5ICRlbXB0eSBjbG9zZSAkY2xvc2UgYXJvdW5k
IGxpbmUgJHN0YXRlKGxpbmUpXV0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBQ
cm9jZXNzIGNoYXJhY3RlciBkYXRhCgogICAgICAgIGlmIHskc3RhdGUoaGF2ZURvY0VsZW1lbnQp
ICYmIFtsbGVuZ3RoICRzdGF0ZShzdGFjayldfSB7CgogICAgICAgICAgICAjIENoZWNrIGlmIHRo
ZSBpbnRlcm5hbCBEVEQgZW50aXR5IGlzIGluIHRoZSB0ZXh0CiAgICAgICAgICAgIHJlZ3N1YiAt
YWxsICZ4bWw6aW50ZHRkXDsgJHRleHQgXFskb3B0aW9ucygtaW50ZXJuYWxkdGQpXF0gdGV4dAoK
ICAgICAgICAgICAgIyBMb29rIGZvciBlbnRpdHkgcmVmZXJlbmNlcwogICAgICAgICAgICBpZiB7
KFthcnJheSBzaXplIGVudGl0aWVzXSB8fCBbc3RyaW5nIGxlbmd0aCAkb3B0aW9ucygtZW50aXR5
cmVmZXJlbmNlY29tbWFuZCldKSAmJiBcCiAgICAgICAgICAgICAgICBbcmVnZXhwIHsmW147XSs7
fSAkdGV4dF19IHsKCiAgICAgICAgICAgICAgICAjIHByb3RlY3QgVGNsIHNwZWNpYWxzCiAgICAg
ICAgICAgICAgICByZWdzdWIgLWFsbCB7KFtdWyRcXF0pfSAkdGV4dCB7XFxcMX0gdGV4dAogICAg
ICAgICAgICAgICAgIyBNYXJrIGVudGl0eSByZWZlcmVuY2VzCiAgICAgICAgICAgICAgICByZWdz
dWIgLWFsbCB7JihbXjtdKyk7fSAkdGV4dCBbZm9ybWF0IHslczsgJXMge1wxfSA7ICVzICVzfSBc
fVx9IFtuYW1lc3BhY2UgY29kZSBbbGlzdCBFbnRpdHkgb3B0aW9ucyAkb3B0aW9ucygtZW50aXR5
cmVmZXJlbmNlY29tbWFuZCkgJG9wdGlvbnMoLWNoYXJhY3RlcmRhdGFjb21tYW5kKSAkb3B0aW9u
cygtZW50aXR5dmFyaWFibGUpXV0gW2xpc3QgdXBsZXZlbCAjMCAkb3B0aW9ucygtY2hhcmFjdGVy
ZGF0YWNvbW1hbmQpXSBce1x7XSB0ZXh0CiAgICAgICAgICAgICAgICBzZXQgdGV4dCAidXBsZXZl
bCAjMCAkb3B0aW9ucygtY2hhcmFjdGVyZGF0YWNvbW1hbmQpIHt7JHRleHR9fSIKICAgICAgICAg
ICAgICAgIGV2YWwgJHRleHQKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICMg
UmVzdG9yZSBwcm90ZWN0ZWQgc3BlY2lhbCBjaGFyYWN0ZXJzCiAgICAgICAgICAgICAgICByZWdz
dWIgLWFsbCB7XFwoW3t9XFxdKX0gJHRleHQge1wxfSB0ZXh0CiAgICAgICAgICAgICAgICB1cGxl
dmVsICMwICRvcHRpb25zKC1jaGFyYWN0ZXJkYXRhY29tbWFuZCkgW2xpc3QgJHRleHRdCiAgICAg
ICAgICAgIH0KICAgICAgICB9IGVsc2VpZiB7W3N0cmluZyBsZW5ndGggW3N0cmluZyB0cmltICR0
ZXh0XV19IHsKICAgICAgICAgICAgdXBsZXZlbCAjMCAkb3B0aW9ucygtZXJyb3Jjb21tYW5kKSAi
dW5leHBlY3RlZCB0ZXh0IFwiJHRleHRcIiBpbiBkb2N1bWVudCBwcm9sb2cgYXJvdW5kIGxpbmUg
JHN0YXRlKGxpbmUpIgogICAgICAgIH0KCiAgICB9CgogICAgIyBJZiB0aGlzIGlzIHRoZSBlbmQg
b2YgdGhlIGRvY3VtZW50LCBjbG9zZSBhbGwgb3BlbiBjb250YWluZXJzCiAgICBpZiB7JG9wdGlv
bnMoLWZpbmFsKSAmJiBbbGxlbmd0aCAkc3RhdGUoc3RhY2spXX0gewogICAgICAgIGV2YWwgJG9w
dGlvbnMoLWVycm9yY29tbWFuZCkgW2xpc3QgW2xpc3QgZWxlbWVudCBbbGluZGV4ICRzdGF0ZShz
dGFjaykgZW5kXSByZW1haW5zIHVuY2xvc2VkIGFyb3VuZCBsaW5lICRzdGF0ZShsaW5lKV1dCiAg
ICB9CgogICAgcmV0dXJuIHt9Cn0KCiMgc2dtbDo6UGFyc2VFdmVudDpFbGVtZW50T3BlbiAtLQoj
CiMgICAgICAgU3RhcnQgb2YgYW4gZWxlbWVudC4KIwojIEFyZ3VtZW50czoKIyAgICAgICB0YWcg
ICAgIEVsZW1lbnQgbmFtZQojICAgICAgIGF0dHIgICAgQXR0cmlidXRlIGxpc3QKIyAgICAgICBv
cHRzICAgIE9wdGlvbiB2YXJpYWJsZSBpbiBjYWxsZXIKIyAgICAgICBhcmdzICAgIGZ1cnRoZXIg
Y29uZmlndXJhdGlvbiBvcHRpb25zCiMKIyBPcHRpb25zOgojICAgICAgIC1lbXB0eSBib29sZWFu
CiMgICAgICAgICAgICAgICBpbmRpY2F0ZXMgd2hldGhlciB0aGUgZWxlbWVudCB3YXMgYW4gZW1w
dHkgZWxlbWVudAojCiMgUmVzdWx0czoKIyAgICAgICBNb2RpZnkgc3RhdGUgYW5kIGludm9rZSBj
YWxsYmFjawoKcHJvYyBzZ21sOjpQYXJzZUV2ZW50OkVsZW1lbnRPcGVuIHt0YWcgYXR0ciBvcHRz
IGFyZ3N9IHsKICAgIHVwdmFyICRvcHRzIG9wdGlvbnMKICAgIHVwdmFyICMwICRvcHRpb25zKC1z
dGF0ZXZhcmlhYmxlKSBzdGF0ZQogICAgYXJyYXkgc2V0IGNmZyB7LWVtcHR5IDB9CiAgICBhcnJh
eSBzZXQgY2ZnICRhcmdzCgogICAgaWYgeyRvcHRpb25zKC1ub3JtYWxpemUpfSB7CiAgICAgICAg
c2V0IHRhZyBbc3RyaW5nIHRvdXBwZXIgJHRhZ10KICAgIH0KCiAgICAjIFVwZGF0ZSBzdGF0ZQog
ICAgbGFwcGVuZCBzdGF0ZShzdGFjaykgJHRhZwoKICAgICMgUGFyc2UgYXR0cmlidXRlIGxpc3Qg
aW50byBhIGtleS12YWx1ZSByZXByZXNlbnRhdGlvbgogICAgaWYge1tzdHJpbmcgY29tcGFyZSAk
b3B0aW9ucygtcGFyc2VhdHRyaWJ1dGVsaXN0Y29tbWFuZCkge31dfSB7CiAgICAgICAgaWYge1tj
YXRjaCB7dXBsZXZlbCAjMCAkb3B0aW9ucygtcGFyc2VhdHRyaWJ1dGVsaXN0Y29tbWFuZCkgW2xp
c3QgJGF0dHJdfSBhdHRyXX0gewogICAgICAgICAgICB1cGxldmVsICMwICRvcHRpb25zKC1lcnJv
cmNvbW1hbmQpIFtsaXN0ICRhdHRyIGFyb3VuZCBsaW5lICRzdGF0ZShsaW5lKV0KICAgICAgICAg
ICAgc2V0IGF0dHIge30KICAgICAgICB9CiAgICB9CgogICAgc2V0IGVtcHR5IHt9CiAgICBpZiB7
JGNmZygtZW1wdHkpICYmICRvcHRpb25zKC1yZXBvcnRlbXB0eSl9IHsKICAgICAgICBzZXQgZW1w
dHkgey1lbXB0eSAxfQogICAgfQoKICAgICMgSW52b2tlIGNhbGxiYWNrCiAgICB1cGxldmVsICMw
ICRvcHRpb25zKC1lbGVtZW50c3RhcnRjb21tYW5kKSBbbGlzdCAkdGFnICRhdHRyXSAkZW1wdHkK
CiAgICByZXR1cm4ge30KfQoKIyBzZ21sOjpQYXJzZUV2ZW50OkVsZW1lbnRDbG9zZSAtLQojCiMg
ICAgICAgRW5kIG9mIGFuIGVsZW1lbnQuCiMKIyBBcmd1bWVudHM6CiMgICAgICAgdGFnICAgICBF
bGVtZW50IG5hbWUKIyAgICAgICBvcHRzICAgIE9wdGlvbiB2YXJpYWJsZSBpbiBjYWxsZXIKIyAg
ICAgICBhcmdzICAgIGZ1cnRoZXIgY29uZmlndXJhdGlvbiBvcHRpb25zCiMKIyBPcHRpb25zOgoj
ICAgICAgIC1lbXB0eSBib29sZWFuCiMgICAgICAgICAgICAgICBpbmRpY2F0ZXMgd2hldGhlciB0
aGUgZWxlbWVudCBhcyBhbiBlbXB0eSBlbGVtZW50CiMKIyBSZXN1bHRzOgojICAgICAgIE1vZGlm
eSBzdGF0ZSBhbmQgaW52b2tlIGNhbGxiYWNrCgpwcm9jIHNnbWw6OlBhcnNlRXZlbnQ6RWxlbWVu
dENsb3NlIHt0YWcgb3B0cyBhcmdzfSB7CiAgICB1cHZhciAkb3B0cyBvcHRpb25zCiAgICB1cHZh
ciAjMCAkb3B0aW9ucygtc3RhdGV2YXJpYWJsZSkgc3RhdGUKICAgIGFycmF5IHNldCBjZmcgey1l
bXB0eSAwfQogICAgYXJyYXkgc2V0IGNmZyAkYXJncwoKICAgICMgV0YgY2hlY2sKICAgIGlmIHtb
c3RyaW5nIGNvbXBhcmUgJHRhZyBbbGluZGV4ICRzdGF0ZShzdGFjaykgZW5kXV19IHsKICAgICAg
ICB1cGxldmVsICMwICRvcHRpb25zKC1lcnJvcmNvbW1hbmQpIFtsaXN0ICJlbmQgdGFnIFwiJHRh
Z1wiIGRvZXMgbm90IG1hdGNoIG9wZW4gZWxlbWVudCBcIltsaW5kZXggJHN0YXRlKHN0YWNrKSBl
bmRdXCIgYXJvdW5kIGxpbmUgJHN0YXRlKGxpbmUpIl0KICAgICAgICByZXR1cm4KICAgIH0KCiAg
ICAjIFVwZGF0ZSBzdGF0ZQogICAgc2V0IHN0YXRlKHN0YWNrKSBbbHJlcGxhY2UgJHN0YXRlKHN0
YWNrKSBlbmQgZW5kXQoKICAgIHNldCBlbXB0eSB7fQogICAgaWYgeyRjZmcoLWVtcHR5KSAmJiAk
b3B0aW9ucygtcmVwb3J0ZW1wdHkpfSB7CiAgICAgICAgc2V0IGVtcHR5IHstZW1wdHkgMX0KICAg
IH0KCiAgICAjIEludm9rZSBjYWxsYmFjawogICAgdXBsZXZlbCAjMCAkb3B0aW9ucygtZWxlbWVu
dGVuZGNvbW1hbmQpIFtsaXN0ICR0YWddICRlbXB0eQoKICAgIHJldHVybiB7fQp9CgojIHNnbWw6
Ok5vcm1hbGl6ZSAtLQojCiMgICAgICAgUGVyZm9ybSBuYW1lIG5vcm1hbGl6YXRpb24gaWYgcmVx
dWlyZWQKIwojIEFyZ3VtZW50czoKIyAgICAgICBuYW1lICAgIG5hbWUgdG8gbm9ybWFsaXplCiMg
ICAgICAgcmVxICAgICBub3JtYWxpemF0aW9uIHJlcXVpcmVkCiMKIyBSZXN1bHRzOgojICAgICAg
IE5hbWUgcmV0dXJuZWQgYXMgdXBwZXItY2FzZSBpZiBub3JtYWxpemF0aW9uIHJlcXVpcmVkCgpw
cm9jIHNnbWw6Ok5vcm1hbGl6ZSB7bmFtZSByZXF9IHsKICAgIGlmIHskcmVxfSB7CiAgICAgICAg
cmV0dXJuIFtzdHJpbmcgdG91cHBlciAkbmFtZV0KICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJu
ICRuYW1lCiAgICB9Cn0KCiMgc2dtbDo6RW50aXR5IC0tCiMKIyAgICAgICBSZXNvbHZlIFhNTCBl
bnRpdHkgcmVmZXJlbmNlcyAoc3ludGF4OiAmeHh4OykuCiMKIyBBcmd1bWVudHM6CiMgICAgICAg
b3B0cyAgICAgICAgICAgIG9wdGlvbnMgYXJyYXkgdmFyaWFibGUgaW4gY2FsbGVyCiMgICAgICAg
ZW50aXR5cmVmY21kICAgIGFwcGxpY2F0aW9uIGNhbGxiYWNrIGZvciBlbnRpdHkgcmVmZXJlbmNl
cwojICAgICAgIHBjZGF0YWNtZCAgICAgICBhcHBsaWNhdGlvbiBjYWxsYmFjayBmb3IgY2hhcmFj
dGVyIGRhdGEKIyAgICAgICBlbnRpdGllcyAgICAgICAgbmFtZSBvZiBhcnJheSBjb250YWluaW5n
IGVudGl0eSBkZWZpbml0aW9ucy4KIyAgICAgICByZWYgICAgICAgICAgICAgZW50aXR5IHJlZmVy
ZW5jZSAodGhlICJ4eHgiIGJpdCkKIwojIFJlc3VsdHM6CiMgICAgICAgUmV0dXJucyBzdWJzdGl0
dXRpb24gdGV4dCBmb3IgZ2l2ZW4gZW50aXR5LgoKcHJvYyBzZ21sOjpFbnRpdHkge29wdHMgZW50
aXR5cmVmY21kIHBjZGF0YWNtZCBlbnRpdGllcyByZWZ9IHsKICAgIHVwdmFyIDIgJG9wdHMgb3B0
aW9ucwogICAgdXB2YXIgIzAgJG9wdGlvbnMoLXN0YXRldmFyaWFibGUpIHN0YXRlCgogICAgaWYg
eyFbc3RyaW5nIGxlbmd0aCAkZW50aXRpZXNdfSB7CiAgICAgICAgc2V0IGVudGl0aWVzIFtuYW1l
c3BhY2UgY3VycmVudCBFbnRpdHlQcmVkZWZdCiAgICB9CgogICAgc3dpdGNoIC1nbG9iIC0tICRy
ZWYgewogICAgICAgICUqIHsKICAgICAgICAgICAgIyBQYXJhbWV0ZXIgZW50aXR5IC0gbm90IHJl
Y29nbmlzZWQgb3V0c2lkZSBvZiBhIERURAogICAgICAgIH0KICAgICAgICAjeCogewogICAgICAg
ICAgICAjIENoYXJhY3RlciBlbnRpdHkgLSBoZXgKICAgICAgICAgICAgaWYge1tjYXRjaCB7Zm9y
bWF0ICVjIFtzY2FuIFtzdHJpbmcgcmFuZ2UgJHJlZiAyIGVuZF0gJXggdG1wOyBzZXQgdG1wXX0g
Y2hhcl19IHsKICAgICAgICAgICAgICAgIHJldHVybiAtY29kZSBlcnJvciAibWFsZm9ybWVkIGNo
YXJhY3RlciBlbnRpdHkgXCIkcmVmXCIiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgdXBsZXZl
bCAjMCAkcGNkYXRhY21kIFtsaXN0ICRjaGFyXQoKICAgICAgICAgICAgcmV0dXJuIHt9CgogICAg
ICAgIH0KICAgICAgICAjKiB7CiAgICAgICAgICAgICMgQ2hhcmFjdGVyIGVudGl0eSAtIGRlY2lt
YWwKICAgICAgICAgICAgaWYge1tjYXRjaCB7Zm9ybWF0ICVjIFtzY2FuIFtzdHJpbmcgcmFuZ2Ug
JHJlZiAxIGVuZF0gJWQgdG1wOyBzZXQgdG1wXX0gY2hhcl19IHsKICAgICAgICAgICAgICAgIHJl
dHVybiAtY29kZSBlcnJvciAibWFsZm9ybWVkIGNoYXJhY3RlciBlbnRpdHkgXCIkcmVmXCIiCiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgdXBsZXZlbCAjMCAkcGNkYXRhY21kIFtsaXN0ICRjaGFy
XQoKICAgICAgICAgICAgcmV0dXJuIHt9CgogICAgICAgIH0KICAgICAgICBkZWZhdWx0IHsKICAg
ICAgICAgICAgIyBHZW5lcmFsIGVudGl0eQogICAgICAgICAgICB1cHZhciAjMCAkZW50aXRpZXMg
bWFwCiAgICAgICAgICAgIGlmIHtbaW5mbyBleGlzdHMgbWFwKCRyZWYpXX0gewoKICAgICAgICAg
ICAgICAgIGlmIHshW3JlZ2V4cCB7PHwmfSAkbWFwKCRyZWYpXX0gewoKICAgICAgICAgICAgICAg
ICAgICAjIFNpbXBsZSB0ZXh0IHJlcGxhY2VtZW50IC0gb3B0aW1pc2UKCiAgICAgICAgICAgICAg
ICAgICAgdXBsZXZlbCAjMCAkcGNkYXRhY21kIFtsaXN0ICRtYXAoJHJlZildCgogICAgICAgICAg
ICAgICAgICAgIHJldHVybiB7fQoKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAj
IE90aGVyd2lzZSBhbiBhZGRpdGlvbmFsIHJvdW5kIG9mIHBhcnNpbmcgaXMgcmVxdWlyZWQuCiAg
ICAgICAgICAgICAgICAjIFRoaXMgb25seSBhcHBsaWVzIHRvIFhNTCwgc2luY2UgSFRNTCBkb2Vz
bid0IGhhdmUgZ2VuZXJhbCBlbnRpdGllcwoKICAgICAgICAgICAgICAgICMgTXVzdCBwYXJzZSB0
aGUgcmVwbGFjZW1lbnQgdGV4dCBmb3Igc3RhcnQgJiBlbmQgdGFncywgZXRjCiAgICAgICAgICAg
ICAgICAjIFRoaXMgdGV4dCBtdXN0IGJlIHNlbGYtY29udGFpbmVkOiBiYWxhbmNlZCBjbG9zaW5n
IHRhZ3MsIGFuZCBzbyBvbgoKICAgICAgICAgICAgICAgIHNldCB0b2tlbmlzZWQgW3Rva2VuaXNl
ICRtYXAoJHJlZikgJDo6eG1sOjp0b2tFeHByICQ6OnhtbDo6c3Vic3RFeHByXQogICAgICAgICAg
ICAgICAgc2V0IGZpbmFsICRvcHRpb25zKC1maW5hbCkKICAgICAgICAgICAgICAgIHVuc2V0IG9w
dGlvbnMoLWZpbmFsKQogICAgICAgICAgICAgICAgZXZhbCBwYXJzZUV2ZW50IFtsaXN0ICR0b2tl
bmlzZWRdIFthcnJheSBnZXQgb3B0aW9uc10gLWZpbmFsIDAKICAgICAgICAgICAgICAgIHNldCBv
cHRpb25zKC1maW5hbCkgJGZpbmFsCgogICAgICAgICAgICAgICAgcmV0dXJuIHt9CgogICAgICAg
ICAgICB9IGVsc2VpZiB7W3N0cmluZyBsZW5ndGggJGVudGl0eXJlZmNtZF19IHsKCiAgICAgICAg
ICAgICAgICB1cGxldmVsICMwICRlbnRpdHlyZWZjbWQgW2xpc3QgJHJlZl0KCiAgICAgICAgICAg
ICAgICByZXR1cm4ge30KCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBJZiBh
bGwgZWxzZSBmYWlscyBsZWF2ZSB0aGUgZW50aXR5IHJlZmVyZW5jZSB1bnRvdWNoZWQKICAgIHVw
bGV2ZWwgIzAgJHBjZGF0YWNtZCBbbGlzdCAmJHJlZlw7XQoKICAgIHJldHVybiB7fQp9CgojIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIwojIERURCBwYXJzZXIgZm9yIFNHTUwg
KFhNTCkuCiMKIyBUaGlzIERURCBhY3R1YWxseSBvbmx5IGhhbmRsZXMgWE1MIERURHMuICBPdGhl
ciBsYW5ndWFnZSdzCiMgRFREJ3MsIHN1Y2ggYXMgSFRNTCwgbXVzdCBiZSB3cml0dGVuIGluIHRl
cm1zIG9mIGEgWE1MIERURC4KIwojIEEgRFREIGlzIHJlcHJlc2VudGVkIGFzIGEgdGhyZWUgZWxl
bWVudCBUY2wgbGlzdC4KIyBUaGUgZmlyc3QgZWxlbWVudCBjb250YWlucyB0aGUgY29udGVudCBt
b2RlbHMgZm9yIGVsZW1lbnRzLAojIHRoZSBzZWNvbmQgY29udGFpbnMgdGhlIGF0dHJpYnV0ZSBs
aXN0cyBmb3IgZWxlbWVudHMgYW5kCiMgdGhlIGxhc3QgZWxlbWVudCBjb250YWlucyB0aGUgZW50
aXRpZXMgZm9yIHRoZSBkb2N1bWVudC4KIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKCiMgc2dtbDo6cGFyc2VEVEQgLS0KIwojICAgICAgIEVudHJ5IHBvaW50IHRvIHRoZSBT
R01MIERURCBwYXJzZXIuCiMKIyBBcmd1bWVudHM6CiMgICAgICAgZHRkICAgICBkYXRhIGRlZmlu
aW5nIHRoZSBEVEQgdG8gYmUgcGFyc2VkCiMgICAgICAgYXJncyAgICBjb25maWd1cmF0aW9uIG9w
dGlvbnMKIwojIFJlc3VsdHM6CiMgICAgICAgUmV0dXJucyBhIHRocmVlIGVsZW1lbnQgbGlzdCwg
Zmlyc3QgZWxlbWVudCBpcyB0aGUgY29udGVudCBtb2RlbAojICAgICAgIGZvciBlYWNoIGVsZW1l
bnQsIHNlY29uZCBlbGVtZW50IGFyZSB0aGUgYXR0cmlidXRlIGxpc3RzIG9mIHRoZQojICAgICAg
IGVsZW1lbnRzIGFuZCB0aGUgdGhpcmQgZWxlbWVudCBpcyB0aGUgZW50aXR5IG1hcC4KCnByb2Mg
c2dtbDo6cGFyc2VEVEQge2R0ZCBhcmdzfSB7CiAgICB2YXJpYWJsZSBXc3AKICAgIHZhcmlhYmxl
IFBhcnNlRFREbnVtCgogICAgYXJyYXkgc2V0IG9wdHMgW2xpc3QgXAogICAgICAgIC1lcnJvcmNv
bW1hbmQgICAgICAgICAgIFtuYW1lc3BhY2UgY3VycmVudF06Om5vb3AgXAogICAgICAgIHN0YXRl
ICAgICAgICAgICAgICAgICAgIFtuYW1lc3BhY2UgY3VycmVudF06OnBhcnNlRFREW2luY3IgUGFy
c2VEVERudW1dCiAgICBdCiAgICBhcnJheSBzZXQgb3B0cyAkYXJncwoKICAgIHNldCBleHAgPCEo
W2NsIF4kV3NwPl0rKVtjbCAkV3NwXSooW2NsIF4kV3NwXSspW2NsICRXc3BdKihbY2wgXj5dKik+
CiAgICBzZXQgc3ViIHt7XDF9IHtcMn0ge1wzfSB9CiAgICByZWdzdWIgLWFsbCAkZXhwICRkdGQg
JHN1YiBkdGQKCiAgICBmb3JlYWNoIHtkZWNsIGlkIHZhbHVlfSAkZHRkIHsKICAgICAgICBjYXRj
aCB7RFREOltzdHJpbmcgdG91cHBlciAkZGVjbF0gJGlkICR2YWx1ZX0gZXJyCiAgICB9CgogICAg
cmV0dXJuIFtsaXN0IFthcnJheSBnZXQgY29udGVudG1vZGVsXSBbYXJyYXkgZ2V0IGF0dHJpYnV0
ZXNdIFthcnJheSBnZXQgZW50aXRpZXNdXQp9CgojIFByb2NlZHVyZXMgZm9yIGhhbmRsaW5nIHRo
ZSB2YXJpb3VzIGRlY2xhcmF0aXZlIGVsZW1lbnRzIGluIGEgRFRELgojIE5ldyBlbGVtZW50cyBt
YXkgYmUgYWRkZWQgYnkgY3JlYXRpbmcgYSBwcm9jZWR1cmUgb2YgdGhlIGZvcm0KIyBwYXJzZTpE
VEQ6X2VsZW1lbnRfCgojIEZvciBlYWNoIG9mIHRoZXNlIHByb2NlZHVyZXMsIHRoZSB2YXJpb3Vz
IHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhleSB1c2UKIyBhcmUgY3JlYXRlZCBvdXRzaWRlIG9mIHRo
ZSBwcm9jIHRvIGF2b2lkIG92ZXJoZWFkIGF0IHJ1bnRpbWUKCiMgc2dtbDo6RFREOkVMRU1FTlQg
LS0KIwojICAgICAgIDwhRUxFTUVOVCAuLi4+IGRlZmluZXMgYW4gZWxlbWVudC4KIwojICAgICAg
IFRoZSBjb250ZW50IG1vZGVsIGZvciB0aGUgZWxlbWVudCBpcyBzdG9yZWQgaW4gdGhlIGNvbnRl
bnRtb2RlbCBhcnJheSwKIyAgICAgICBpbmRleGVkIGJ5IHRoZSBlbGVtZW50IG5hbWUuICBUaGUg
Y29udGVudCBtb2RlbCBpcyBwYXJzZWQgaW50byB0aGUKIyAgICAgICBmb2xsb3dpbmcgbGlzdCBm
b3JtOgojCiMgICAgICAgICAgICAgICB7fSAgICAgIENvbnRlbnQgbW9kZWwgaXMgRU1QVFkuCiMg
ICAgICAgICAgICAgICAgICAgICAgIEluZGljYXRlZCBieSBhbiBlbXB0eSBsaXN0LgojICAgICAg
ICAgICAgICAgKiAgICAgICBDb250ZW50IG1vZGVsIGlzIEFOWS4KIyAgICAgICAgICAgICAgICAg
ICAgICAgSW5kaWNhdGVkIGJ5IGFuIGFzdGVyaXguCiMgICAgICAgICAgICAgICB7RUxFTUVOVCAu
Li59CiMgICAgICAgICAgICAgICAgICAgICAgIENvbnRlbnQgbW9kZWwgaXMgZWxlbWVudC1vbmx5
LgojICAgICAgICAgICAgICAge01JWEVEIHtlbGVtZW50MSBlbGVtZW50MiAuLi59fQojICAgICAg
ICAgICAgICAgICAgICAgICBDb250ZW50IG1vZGVsIGlzIG1peGVkIChQQ0RBVEEgYW5kIGVsZW1l
bnRzKS4KIyAgICAgICAgICAgICAgICAgICAgICAgVGhlIHNlY29uZCBlbGVtZW50IG9mIHRoZSBs
aXN0IGNvbnRhaW5zIHRoZSAKIyAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgdGhhdCBt
YXkgb2NjdXIuICAjUENEQVRBIGlzIGFzc3VtZWQgCiMgICAgICAgICAgICAgICAgICAgICAgIChp
ZS4gdGhlIGxpc3QgaXMgbm9ybWFsaXNlZCkuCiMKIyBBcmd1bWVudHM6CiMgICAgICAgaWQgICAg
ICBpZGVudGlmaWVyIGZvciB0aGUgZWxlbWVudC4KIyAgICAgICB2YWx1ZSAgIG90aGVyIGluZm9y
bWF0aW9uIGluIHRoZSBQSQoKcHJvYyBzZ21sOjpEVEQ6RUxFTUVOVCB7aWQgdmFsdWV9IHsKICAg
IGRiZ3B1dHMgRFREX3BhcnNlIFtsaXN0IERURDpFTEVNRU5UICRpZCAkdmFsdWVdCiAgICB2YXJp
YWJsZSBXc3AKICAgIHVwdmFyIG9wdHMgc3RhdGUKICAgIHVwdmFyIGNvbnRlbnRtb2RlbCBjbQoK
ICAgIGlmIHtbaW5mbyBleGlzdHMgY20oJGlkKV19IHsKICAgICAgICBldmFsICRzdGF0ZSgtZXJy
b3Jjb21tYW5kKSBlbGVtZW50IFtsaXN0ICJlbGVtZW50IFwiJGlkXCIgYWxyZWFkeSBkZWNsYXJl
ZCJdCiAgICB9IGVsc2UgewogICAgICAgIHN3aXRjaCAtLSAkdmFsdWUgewogICAgICAgICAgICBF
TVBUWSB7CiAgICAgICAgICAgICAgICBzZXQgY20oJGlkKSB7fQogICAgICAgICAgICB9CiAgICAg
ICAgICAgIEFOWSB7CiAgICAgICAgICAgICAgICBzZXQgY20oJGlkKSAqCiAgICAgICAgICAgIH0K
ICAgICAgICAgICAgZGVmYXVsdCB7CiAgICAgICAgICAgICAgICBpZiB7W3JlZ2V4cCBbZm9ybWF0
IHteXChbJXNdKiNQQ0RBVEFbJXNdKihcfChbXildKykpP1slc10qXCkqWyVzXSokfSAkV3NwICRX
c3AgJFdzcCAkV3NwXSBkaXNjYXJkIGRpc2NhcmQgbXRva3NdfSB7CiAgICAgICAgICAgICAgICAg
ICAgc2V0IGNtKCRpZCkgW2xpc3QgTUlYRUQgW3NwbGl0ICRtdG9rcyB8XV0KICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgaWYge1tjYXRjaCB7Q01vZGVsUGFyc2Ug
JHN0YXRlKHN0YXRlKSAkdmFsdWV9IHJlc3VsdF19IHsKICAgICAgICAgICAgICAgICAgICAgICAg
ZXZhbCAkc3RhdGUoLWVycm9yY29tbWFuZCkgZWxlbWVudCBbbGlzdCAkcmVzdWx0XQogICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldCBjbSgkaWQp
IFtsaXN0IEVMRU1FTlQgJHJlc3VsdF0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCiMgc2dtbDo6Q01vZGVsUGFy
c2UgLS0KIwojICAgICAgIFBhcnNlIGFuIGVsZW1lbnQgY29udGVudCBtb2RlbCAobm9uLW1peGVk
KS4KIyAgICAgICBBIHN5bnRheCB0cmVlIGlzIGNvbnN0cnVjdGVkLgojICAgICAgIEEgdHJhbnNp
dGlvbiB0YWJsZSBpcyBidWlsdCBuZXh0LgojCiMgICAgICAgVGhpcyBpcyBnb2luZyB0byBuZWVk
IGFsb3Qgb2Ygd29yayEKIwojIEFyZ3VtZW50czoKIyAgICAgICBzdGF0ZSAgIHN0YXRlIGFycmF5
IHZhcmlhYmxlCiMgICAgICAgdmFsdWUgICB0aGUgY29udGVudCBtb2RlbCBkYXRhCiMKIyBSZXN1
bHRzOgojICAgICAgIEEgVGNsIGxpc3QgcmVwcmVzZW50aW5nIHRoZSBjb250ZW50IG1vZGVsLgoK
cHJvYyBzZ21sOjpDTW9kZWxQYXJzZSB7c3RhdGUgdmFsdWV9IHsKICAgIHVwdmFyICMwICRzdGF0
ZSB2YXIKCiAgICAjIEZpcnN0IGJ1aWxkIHN5bnRheCB0cmVlCiAgICBzZXQgc3ludGF4VHJlZSBb
Q01vZGVsTWFrZVN5bnRheFRyZWUgJHN0YXRlICR2YWx1ZV0KCiAgICAjIEJ1aWxkIHRyYW5zaXRp
b24gdGFibGUKICAgIHNldCB0cmFuc2l0aW9uVGFibGUgW0NNb2RlbE1ha2VUcmFuc2l0aW9uVGFi
bGUgJHN0YXRlICRzeW50YXhUcmVlXQoKICAgIHJldHVybiBbbGlzdCAkc3ludGF4VHJlZSAkdHJh
bnNpdGlvblRhYmxlXQp9CgojIHNnbWw6OkNNb2RlbE1ha2VTeW50YXhUcmVlIC0tCiMKIyAgICAg
ICBDb25zdHJ1Y3QgYSBzeW50YXggdHJlZSBmb3IgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbi4KIwoj
ICAgICAgIFN5bnRheCB0cmVlIGlzIHJlcHJlc2VudGVkIGFzIGEgVGNsIGxpc3Q6CiMgICAgICAg
cmVwIHs6Y2hvaWNlfDpzZXEge3tyZXAgbGlzdDF9IHtyZXAgbGlzdDJ9IC4uLn19CiMgICAgICAg
d2hlcmU6ICByZXAgaXMgcmVwZXRpdGlvbiBjaGFyYWN0ZXIsICosICsgb3IgPy4ge30gZm9yIG5v
IHJlcGV0aXRpb24KIyAgICAgICAgICAgICAgIGxpc3ROIGlzIG5lc3RlZCBleHByZXNzaW9uIG9y
IE5hbWUKIwojIEFyZ3VtZW50czoKIyAgICAgICBzcGVjICAgIEVsZW1lbnQgc3BlY2lmaWNhdGlv
bgojCiMgUmVzdWx0czoKIyAgICAgICBTeW50YXggdHJlZSBmb3IgZWxlbWVudCBzcGVjIGFzIG5l
c3RlZCBUY2wgbGlzdC4KIwojICAgICAgIEV4YW1wbGVzOgojICAgICAgIChtZW1vKQojICAgICAg
ICAgICAgICAge30gezpzZXEge3t9IG1lbW99fQojICAgICAgIChmcm9udCwgYm9keSwgYmFjaz8p
CiMgICAgICAgICAgICAgICB7fSB7OnNlcSB7e30gZnJvbnR9IHt7fSBib2R5fSB7PyBiYWNrfX0K
IyAgICAgICAoaGVhZCwgKHAgfCBsaXN0IHwgbm90ZSkqLCBkaXYyKikKIyAgICAgICAgICAgICAg
IHt9IHs6c2VxIHt7fSBoZWFkfSB7KiB7OmNob2ljZSB7e30gcH0ge3t9IGxpc3R9IHt7fSBub3Rl
fX19IHsqIGRpdjJ9fQojICAgICAgIChwIHwgYSB8IHVsKSsKIyAgICAgICAgICAgICAgICsgezpj
aG9pY2Uge3t9IHB9IHt7fSBhfSB7e30gdWx9fQoKcHJvYyBzZ21sOjpDTW9kZWxNYWtlU3ludGF4
VHJlZSB7c3RhdGUgc3BlY30gewogICAgdXB2YXIgIzAgJHN0YXRlIHZhcgogICAgdmFyaWFibGUg
V3NwCiAgICB2YXJpYWJsZSBuYW1lCgogICAgIyBUcmFuc2xhdGUgdGhlIHNwZWMgaW50byBhIFRj
bCBsaXN0LgoKICAgICMgTm9uZSBvZiB0aGUgVGNsIHNwZWNpYWwgY2hhcmFjdGVycyBhcmUgYWxs
b3dlZCBpbiBhIGNvbnRlbnQgbW9kZWwgc3BlYy4KICAgIGlmIHtbcmVnZXhwIHtcJHxcW3xcXXxc
e3xcfX0gJHNwZWNdfSB7CiAgICAgICAgcmV0dXJuIC1jb2RlIGVycm9yICJpbGxlZ2FsIGNoYXJh
Y3RlcnMgaW4gc3BlY2lmaWNhdGlvbiIKICAgIH0KCiAgICByZWdzdWIgLWFsbCBbZm9ybWF0IHso
JXMpWyVzXSooXD98XCp8XCspP1slc10qKCx8XHwpP30gJG5hbWUgJFdzcCAkV3NwXSAkc3BlYyBb
Zm9ybWF0IHslc0NNb2RlbFNUbmFtZSAlcyB7XDF9IHtcMn0ge1wzfX0gXG4gJHN0YXRlXSBzcGVj
CiAgICByZWdzdWIgLWFsbCB7XCh9ICRzcGVjICJcbkNNb2RlbFNUb3BlblBhcmVuICRzdGF0ZSAi
IHNwZWMKICAgIHJlZ3N1YiAtYWxsIFtmb3JtYXQge1wpWyVzXSooXD98XCp8XCspP1slc10qKCx8
XHwpP30gJFdzcCAkV3NwXSAkc3BlYyBbZm9ybWF0IHslc0NNb2RlbFNUY2xvc2VQYXJlbiAlcyB7
XDF9IHtcMn19IFxuICRzdGF0ZV0gc3BlYwoKICAgIGFycmF5IHNldCB2YXIge3N0YWNrIHt9IHN0
YXRlIHN0YXJ0fQogICAgZXZhbCAkc3BlYwoKICAgICMgUGVlbCBvZmYgdGhlIG91dGVyIHNlcSwg
aXRzIHJlZHVuZGFudAogICAgcmV0dXJuIFtsaW5kZXggW2xpbmRleCAkdmFyKHN0YWNrKSAxXSAw
XQp9CgojIHNnbWw6OkNNb2RlbFNUbmFtZSAtLQojCiMgICAgICAgUHJvY2Vzc2VzIGEgbmFtZSBp
biBhIGNvbnRlbnQgbW9kZWwgc3BlYy4KIwojIEFyZ3VtZW50czoKIyAgICAgICBzdGF0ZSAgIHN0
YXRlIGFycmF5IHZhcmlhYmxlCiMgICAgICAgbmFtZSAgICBuYW1lIHNwZWNpZmllZAojICAgICAg
IHJlcCAgICAgcmVwZXRpdGlvbiBvcGVyYXRvcgojICAgICAgIGNzICAgICAgY2hvaWNlIG9yIHNl
cXVlbmNlIGRlbGltaXRlcgojCiMgUmVzdWx0czoKIyAgICAgICBTZWUgQ01vZGVsU1RjcC4KCnBy
b2Mgc2dtbDo6Q01vZGVsU1RuYW1lIHtzdGF0ZSBuYW1lIHJlcCBjcyBhcmdzfSB7CiAgICBpZiB7
W2xsZW5ndGggJGFyZ3NdfSB7CiAgICAgICAgcmV0dXJuIC1jb2RlIGVycm9yICJzeW50YXggZXJy
b3IgaW4gc3BlY2lmaWNhdGlvbjogXCIkYXJnc1wiIgogICAgfQoKICAgIENNb2RlbFNUY3AgJHN0
YXRlICRuYW1lICRyZXAgJGNzCn0KCiMgc2dtbDo6Q01vZGVsU1RjcCAtLQojCiMgICAgICAgUHJv
Y2VzcyBhIGNvbnRlbnQgcGFydGljbGUuCiMKIyBBcmd1bWVudHM6CiMgICAgICAgc3RhdGUgICBz
dGF0ZSBhcnJheSB2YXJpYWJsZQojICAgICAgIG5hbWUgICAgbmFtZSBzcGVjaWZpZWQKIyAgICAg
ICByZXAgICAgIHJlcGV0aXRpb24gb3BlcmF0b3IKIyAgICAgICBjcyAgICAgIGNob2ljZSBvciBz
ZXF1ZW5jZSBkZWxpbWl0ZXIKIwojIFJlc3VsdHM6CiMgICAgICAgVGhlIGNvbnRlbnQgcGFydGlj
bGUgaXMgYWRkZWQgdG8gdGhlIGN1cnJlbnQgZ3JvdXAuCgpwcm9jIHNnbWw6OkNNb2RlbFNUY3Ag
e3N0YXRlIGNwIHJlcCBjc30gewogICAgdXB2YXIgIzAgJHN0YXRlIHZhcgoKICAgIHN3aXRjaCAt
Z2xvYiAtLSBbbGluZGV4ICR2YXIoc3RhdGUpIGVuZF09JGNzIHsKICAgICAgICBzdGFydD0gewog
ICAgICAgICAgICBzZXQgdmFyKHN0YXRlKSBbbHJlcGxhY2UgJHZhcihzdGF0ZSkgZW5kIGVuZCBl
bmRdCiAgICAgICAgICAgICMgQWRkIChkdW1teSkgZ3JvdXBpbmcsIGVpdGhlciBjaG9pY2Ugb3Ig
c2VxdWVuY2Ugd2lsbCBkbwogICAgICAgICAgICBDTW9kZWxTVGNzU2V0ICRzdGF0ZSAsCiAgICAg
ICAgICAgIENNb2RlbFNUY3BBZGQgJHN0YXRlICRjcCAkcmVwCiAgICAgICAgfQogICAgICAgIDpj
aG9pY2U9IC0KICAgICAgICA6c2VxPSB7CiAgICAgICAgICAgIHNldCB2YXIoc3RhdGUpIFtscmVw
bGFjZSAkdmFyKHN0YXRlKSBlbmQgZW5kIGVuZF0KICAgICAgICAgICAgQ01vZGVsU1RjcEFkZCAk
c3RhdGUgJGNwICRyZXAKICAgICAgICB9CiAgICAgICAgc3RhcnQ9fCAtCiAgICAgICAgc3RhcnQ9
LCB7CiAgICAgICAgICAgIHNldCB2YXIoc3RhdGUpIFtscmVwbGFjZSAkdmFyKHN0YXRlKSBlbmQg
ZW5kIFtleHByIHskY3MgPT0gIiwiID8gIjpzZXEiIDogIjpjaG9pY2UifV1dCiAgICAgICAgICAg
IENNb2RlbFNUY3NTZXQgJHN0YXRlICRjcwogICAgICAgICAgICBDTW9kZWxTVGNwQWRkICRzdGF0
ZSAkY3AgJHJlcAogICAgICAgIH0KICAgICAgICA6Y2hvaWNlPXwgLQogICAgICAgIDpzZXE9LCB7
CiAgICAgICAgICAgIENNb2RlbFNUY3BBZGQgJHN0YXRlICRjcCAkcmVwCiAgICAgICAgfQogICAg
ICAgIDpjaG9pY2U9LCAtCiAgICAgICAgOnNlcT18IHsKICAgICAgICAgICAgcmV0dXJuIC1jb2Rl
IGVycm9yICJzeW50YXggZXJyb3IgaW4gc3BlY2lmaWNhdGlvbjogaW5jb3JyZWN0IGRlbGltaXRl
ciBhZnRlciBcIiRjcFwiLCBzaG91bGQgYmUgXCJbZXhwciB7JGNzID09ICIsIiA/ICJ8IiA6ICIs
In1dXCIiCiAgICAgICAgfQogICAgICAgIGVuZD0qIHsKICAgICAgICAgICAgcmV0dXJuIC1jb2Rl
IGVycm9yICJzeW50YXggZXJyb3IgaW4gc3BlY2lmaWNhdGlvbjogbm8gZGVsaW1pdGVyIGJlZm9y
ZSBcIiRjcFwiIgogICAgICAgIH0KICAgICAgICBkZWZhdWx0IHsKICAgICAgICAgICAgcmV0dXJu
IC1jb2RlIGVycm9yICJzeW50YXggZXJyb3IiCiAgICAgICAgfQogICAgfQogICAgCn0KCiMgc2dt
bDo6Q01vZGVsU1Rjc1NldCAtLQojCiMgICAgICAgU3RhcnQgYSBjaG9pY2Ugb3Igc2VxdWVuY2Ug
b24gdGhlIHN0YWNrLgojCiMgQXJndW1lbnRzOgojICAgICAgIHN0YXRlICAgc3RhdGUgYXJyYXkK
IyAgICAgICBjcyAgICAgIGNob2ljZSBvaXIgc2VxdWVuY2UKIwojIFJlc3VsdHM6CiMgICAgICAg
c3RhdGUgaXMgbW9kaWZpZWQ6IGVuZCBlbGVtZW50IG9mIHN0YXRlIGlzIGFwcGVuZGVkLgoKcHJv
YyBzZ21sOjpDTW9kZWxTVGNzU2V0IHtzdGF0ZSBjc30gewogICAgdXB2YXIgIzAgJHN0YXRlIHZh
cgoKICAgIHNldCBjcyBbZXhwciB7JGNzID09ICIsIiA/ICI6c2VxIiA6ICI6Y2hvaWNlIn1dCgog
ICAgaWYge1tsbGVuZ3RoICR2YXIoc3RhY2spXX0gewogICAgICAgIHNldCB2YXIoc3RhY2spIFts
cmVwbGFjZSAkdmFyKHN0YWNrKSBlbmQgZW5kICRjc10KICAgIH0gZWxzZSB7CiAgICAgICAgc2V0
IHZhcihzdGFjaykgW2xpc3QgJGNzIHt9XQogICAgfQp9CgojIHNnbWw6OkNNb2RlbFNUY3BBZGQg
LS0KIwojICAgICAgIEFwcGVuZCBhIGNvbnRlbnQgcGFydGljbGUgdG8gdGhlIHRvcCBvZiB0aGUg
c3RhY2suCiMKIyBBcmd1bWVudHM6CiMgICAgICAgc3RhdGUgICBzdGF0ZSBhcnJheQojICAgICAg
IGNwICAgICAgY29udGVudCBwYXJ0aWNsZQojICAgICAgIHJlcCAgICAgcmVwZXRpdGlvbgojCiMg
UmVzdWx0czoKIyAgICAgICBzdGF0ZSBpcyBtb2RpZmllZDogZW5kIGVsZW1lbnQgb2Ygc3RhdGUg
aXMgYXBwZW5kZWQuCgpwcm9jIHNnbWw6OkNNb2RlbFNUY3BBZGQge3N0YXRlIGNwIHJlcH0gewog
ICAgdXB2YXIgIzAgJHN0YXRlIHZhcgoKICAgIGlmIHtbbGxlbmd0aCAkdmFyKHN0YWNrKV19IHsK
ICAgICAgICBzZXQgdG9wIFtsaW5kZXggJHZhcihzdGFjaykgZW5kXQogICAgICAgIGxhcHBlbmQg
dG9wIFtsaXN0ICRyZXAgJGNwXQogICAgICAgIHNldCB2YXIoc3RhY2spIFtscmVwbGFjZSAkdmFy
KHN0YWNrKSBlbmQgZW5kICR0b3BdCiAgICB9IGVsc2UgewogICAgICAgIHNldCB2YXIoc3RhY2sp
IFtsaXN0ICRyZXAgJGNwXQogICAgfQp9CgojIHNnbWw6OkNNb2RlbFNUb3BlblBhcmVuIC0tCiMK
IyAgICAgICBQcm9jZXNzZXMgYSAnKCcgaW4gYSBjb250ZW50IG1vZGVsIHNwZWMuCiMKIyBBcmd1
bWVudHM6CiMgICAgICAgc3RhdGUgICBzdGF0ZSBhcnJheQojCiMgUmVzdWx0czoKIyAgICAgICBQ
dXNoZXMgc3RhY2sgaW4gc3RhdGUgYXJyYXkuCgpwcm9jIHNnbWw6OkNNb2RlbFNUb3BlblBhcmVu
IHtzdGF0ZSBhcmdzfSB7CiAgICB1cHZhciAjMCAkc3RhdGUgdmFyCgogICAgaWYge1tsbGVuZ3Ro
ICRhcmdzXX0gewogICAgICAgIHJldHVybiAtY29kZSBlcnJvciAic3ludGF4IGVycm9yIGluIHNw
ZWNpZmljYXRpb246IFwiJGFyZ3NcIiIKICAgIH0KCiAgICBsYXBwZW5kIHZhcihzdGF0ZSkgc3Rh
cnQKICAgIGxhcHBlbmQgdmFyKHN0YWNrKSBbbGlzdCB7fSB7fV0KfQoKIyBzZ21sOjpDTW9kZWxT
VGNsb3NlUGFyZW4gLS0KIwojICAgICAgIFByb2Nlc3NlcyBhICcpJyBpbiBhIGNvbnRlbnQgbW9k
ZWwgc3BlYy4KIwojIEFyZ3VtZW50czoKIyAgICAgICBzdGF0ZSAgIHN0YXRlIGFycmF5CiMgICAg
ICAgcmVwICAgICByZXBldGl0aW9uCiMgICAgICAgY3MgICAgICBjaG9pY2Ugb3Igc2VxdWVuY2Ug
ZGVsaW1pdGVyCiMKIyBSZXN1bHRzOgojICAgICAgIFN0YWNrIGlzIHBvcHBlZCwgYW5kIGZvcm1l
ciB0b3Agb2Ygc3RhY2sgaXMgYXBwZW5kZWQgdG8gcHJldmlvdXMgZWxlbWVudC4KCnByb2Mgc2dt
bDo6Q01vZGVsU1RjbG9zZVBhcmVuIHtzdGF0ZSByZXAgY3MgYXJnc30gewogICAgdXB2YXIgIzAg
JHN0YXRlIHZhcgoKICAgIGlmIHtbbGxlbmd0aCAkYXJnc119IHsKICAgICAgICByZXR1cm4gLWNv
ZGUgZXJyb3IgInN5bnRheCBlcnJvciBpbiBzcGVjaWZpY2F0aW9uOiBcIiRhcmdzXCIiCiAgICB9
CgogICAgc2V0IGNwIFtsaW5kZXggJHZhcihzdGFjaykgZW5kXQogICAgc2V0IHZhcihzdGFjaykg
W2xyZXBsYWNlICR2YXIoc3RhY2spIGVuZCBlbmRdCiAgICBzZXQgdmFyKHN0YXRlKSBbbHJlcGxh
Y2UgJHZhcihzdGF0ZSkgZW5kIGVuZF0KICAgIENNb2RlbFNUY3AgJHN0YXRlICRjcCAkcmVwICRj
cwp9CgojIHNnbWw6OkNNb2RlbE1ha2VUcmFuc2l0aW9uVGFibGUgLS0KIwojICAgICAgIEdpdmVu
IGEgY29udGVudCBtb2RlbCdzIHN5bnRheCB0cmVlLCBjb25zdHJ1Y3RzCiMgICAgICAgdGhlIHRy
YW5zaXRpb24gdGFibGUgZm9yIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uCiMKIyAgICAgICBTZWUg
IkNvbXBpbGVycywgUHJpbmNpcGxlcywgVGVjaG5pcXVlcywgYW5kIFRvb2xzIiwKIyAgICAgICBB
aG8sIFNldGhpIGFuZCBVbGxtYW4uICBTZWN0aW9uIDMuOSwgYWxnb3JpdGhtIDMuNS4KIwojIEFy
Z3VtZW50czoKIyAgICAgICBzdGF0ZSAgIHN0YXRlIGFycmF5IHZhcmlhYmxlCiMgICAgICAgc3Qg
ICAgICBzeW50YXggdHJlZQojCiMgUmVzdWx0czoKIyAgICAgICBUaGUgdHJhbnNpdGlvbiB0YWJs
ZSBpcyByZXR1cm5lZCwgYXMgYSBrZXkvdmFsdWUgVGNsIGxpc3QuCgpwcm9jIHNnbWw6OkNNb2Rl
bE1ha2VUcmFuc2l0aW9uVGFibGUge3N0YXRlIHN0fSB7CiAgICB1cHZhciAjMCAkc3RhdGUgdmFy
CgogICAgIyBDb25zdHJ1Y3QgbnVsbGFibGUsIGZpcnN0cG9zIGFuZCBsYXN0cG9zIGZ1bmN0aW9u
cwogICAgYXJyYXkgc2V0IHZhciB7bnVtYmVyIDB9CiAgICBmb3JlYWNoIHtudWxsYWJsZSBmaXJz
dHBvcyBsYXN0cG9zfSBbICAgICAgIFwKICAgICAgICBUcmF2ZXJzZURlcHRoMXN0ICRzdGF0ZSAk
c3QgewogICAgICAgICAgICAjIEV2YWx1YXRlZCBmb3IgbGVhZiBub2RlcwogICAgICAgICAgICAj
IENvbXB1dGUgbnVsbGFibGUobikKICAgICAgICAgICAgIyBDb21wdXRlIGZpcnN0cG9zKG4pCiAg
ICAgICAgICAgICMgQ29tcHV0ZSBsYXN0cG9zKG4pCiAgICAgICAgICAgIHNldCBudWxsYWJsZSBb
bnVsbGFibGUgbGVhZiAkcmVwICRuYW1lXQogICAgICAgICAgICBzZXQgZmlyc3Rwb3MgW2xpc3Qg
e30gJHZhcihudW1iZXIpXQogICAgICAgICAgICBzZXQgbGFzdHBvcyBbbGlzdCB7fSAkdmFyKG51
bWJlcildCiAgICAgICAgICAgIHNldCB2YXIocG9zOiR2YXIobnVtYmVyKSkgJG5hbWUKICAgICAg
ICB9IHsKICAgICAgICAgICAgIyBFdmFsdWF0ZWQgZm9yIG5vbnRlcm1pbmFsIG5vZGVzCiAgICAg
ICAgICAgICMgQ29tcHV0ZSBudWxsYWJsZSwgZmlyc3Rwb3MsIGxhc3Rwb3MKICAgICAgICAgICAg
c2V0IGZpcnN0cG9zIFtmaXJzdHBvcyAkY3MgJGZpcnN0cG9zICRudWxsYWJsZV0KICAgICAgICAg
ICAgc2V0IGxhc3Rwb3MgIFtsYXN0cG9zICAkY3MgJGxhc3Rwb3MgICRudWxsYWJsZV0KICAgICAg
ICAgICAgc2V0IG51bGxhYmxlIFtudWxsYWJsZSBub250ZXJtICRyZXAgJGNzICRudWxsYWJsZV0K
ICAgICAgICB9ICAgICAgIFwKICAgIF0gYnJlYWsKCiAgICBzZXQgYWNjZXB0aW5nIFtpbmNyIHZh
cihudW1iZXIpXQogICAgc2V0IHZhcihwb3M6JGFjY2VwdGluZykgIwoKICAgICMgdmFyKHBvczpO
KSBtYXBzIGZyb20gcG9zaXRpb24gdG8gc3ltYm9sLgogICAgIyBDb25zdHJ1Y3QgcmV2ZXJzZSBt
YXAgZm9yIGNvbnZlbmllbmNlLgogICAgIyBOQi4gQSBzeW1ib2wgbWF5IGFwcGVhciBpbiBtb3Jl
IHRoYW4gb25lIHBvc2l0aW9uLgogICAgIyB2YXIgaXMgYWJvdXQgdG8gYmUgcmVzZXQsIHNvIHVz
ZSBkaWZmZXJlbnQgYXJyYXlzLgoKICAgIGZvcmVhY2gge3BvcyBzeW1ib2x9IFthcnJheSBnZXQg
dmFyIHBvczoqXSB7CiAgICAgICAgc2V0IHBvcyBbbGluZGV4IFtzcGxpdCAkcG9zIDpdIDFdCiAg
ICAgICAgc2V0IHBvczJzeW1ib2woJHBvcykgJHN5bWJvbAogICAgICAgIGxhcHBlbmQgc3ltMnBv
cygkc3ltYm9sKSAkcG9zCiAgICB9CgogICAgIyBDb25zdHJ1Y3QgdGhlIGZvbGxvd3BvcyBmdW5j
dGlvbnMKICAgIGNhdGNoIHt1bnNldCB2YXJ9CiAgICBmb2xsb3dwb3MgJHN0YXRlICRzdCAkZmly
c3Rwb3MgJGxhc3Rwb3MKCiAgICAjIENvbnN0cnVjdCB0cmFuc2l0aW9uIHRhYmxlCiAgICAjIERz
dGF0ZXMgaXMgW3VuaW9uICRtYXJrZWQgJHVubWFya2VkXQogICAgc2V0IHVubWFya2VkIFtsaXN0
IFtsaW5kZXggJGZpcnN0cG9zIDFdXQogICAgd2hpbGUge1tsbGVuZ3RoICR1bm1hcmtlZF19IHsK
ICAgICAgICBzZXQgVCBbbGluZGV4ICR1bm1hcmtlZCAwXQogICAgICAgIGxhcHBlbmQgbWFya2Vk
ICRUCiAgICAgICAgc2V0IHVubWFya2VkIFtscmFuZ2UgJHVubWFya2VkIDEgZW5kXQoKICAgICAg
ICAjIEZpbmQgd2hpY2ggaW5wdXQgc3ltYm9scyBvY2N1ciBpbiBUCiAgICAgICAgc2V0IHN5bWJv
bHMge30KICAgICAgICBmb3JlYWNoIHBvcyAkVCB7CiAgICAgICAgICAgIGlmIHskcG9zICE9ICRh
Y2NlcHRpbmcgJiYgW2xzZWFyY2ggJHN5bWJvbHMgJHBvczJzeW1ib2woJHBvcyldIDwgMH0gewog
ICAgICAgICAgICAgICAgbGFwcGVuZCBzeW1ib2xzICRwb3Myc3ltYm9sKCRwb3MpCiAgICAgICAg
ICAgIH0KICAgICAgICB9CiAgICAgICAgZm9yZWFjaCBhICRzeW1ib2xzIHsKICAgICAgICAgICAg
c2V0IFUge30KICAgICAgICAgICAgZm9yZWFjaCBwb3MgJHN5bTJwb3MoJGEpIHsKICAgICAgICAg
ICAgICAgIGlmIHtbbHNlYXJjaCAkVCAkcG9zXSA+PSAwfSB7CiAgICAgICAgICAgICAgICAgICAg
IyBhZGQgZm9sbG93cG9zKCRwb3MpCiAgICAgICAgICAgICAgICAgICAgaWYgeyR2YXIoJHBvcykg
PT0ge319IHsKICAgICAgICAgICAgICAgICAgICAgICAgbGFwcGVuZCBVICRhY2NlcHRpbmcKICAg
ICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBldmFsIGxh
cHBlbmQgVSAkdmFyKCRwb3MpCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNldCBVIFttYWtlU2V0ICRVXQogICAgICAgICAg
ICBpZiB7W2xsZW5ndGggJFVdICYmIFtsc2VhcmNoICRtYXJrZWQgJFVdIDwgMCAmJiBbbHNlYXJj
aCAkdW5tYXJrZWQgJFVdIDwgMH0gewogICAgICAgICAgICAgICAgbGFwcGVuZCB1bm1hcmtlZCAk
VQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNldCBEdHJhbigkVCwkYSkgJFUKICAgICAgICB9
CiAgICAgICAgCiAgICB9CgogICAgcmV0dXJuIFtsaXN0IFthcnJheSBnZXQgRHRyYW5dIFthcnJh
eSBnZXQgc3ltMnBvc10gJGFjY2VwdGluZ10KfQoKIyBzZ21sOjpmb2xsb3dwb3MgLS0KIwojICAg
ICAgIENvbXB1dGUgdGhlIGZvbGxvd3BvcyBmdW5jdGlvbiwgdXNpbmcgdGhlIGFscmVhZHkgY29t
cHV0ZWQKIyAgICAgICBmaXJzdHBvcyBhbmQgbGFzdHBvcy4KIwojIEFyZ3VtZW50czoKIyAgICAg
ICBzdGF0ZSAgICAgICAgICAgYXJyYXkgdmFyaWFibGUgdG8gc3RvcmUgZm9sbG93cG9zIGZ1bmN0
aW9ucwojICAgICAgIHN0ICAgICAgICAgICAgICBzeW50YXggdHJlZQojICAgICAgIGZpcnN0cG9z
ICAgICAgICBmaXJzdHBvcyBmdW5jdGlvbnMgZm9yIHRoZSBzeW50YXggdHJlZQojICAgICAgIGxh
c3Rwb3MgICAgICAgICBsYXN0cG9zIGZ1bmN0aW9ucwojCiMgUmVzdWx0czoKIyAgICAgICBmb2xs
b3dwb3MgZnVuY3Rpb25zIGZvciBlYWNoIGxlYWYgbm9kZSwgaW4gbmFtZS92YWx1ZSBmb3JtYXQK
CnByb2Mgc2dtbDo6Zm9sbG93cG9zIHtzdGF0ZSBzdCBmaXJzdHBvcyBsYXN0cG9zfSB7CiAgICB1
cHZhciAjMCAkc3RhdGUgdmFyCgogICAgc3dpdGNoIC0tIFtsaW5kZXggW2xpbmRleCAkc3QgMV0g
MF0gewogICAgICAgIDpzZXEgewogICAgICAgICAgICBmb3Ige3NldCBpIDF9IHskaSA8IFtsbGVu
Z3RoIFtsaW5kZXggJHN0IDFdXX0ge2luY3IgaX0gewogICAgICAgICAgICAgICAgZm9sbG93cG9z
ICRzdGF0ZSBbbGluZGV4IFtsaW5kZXggJHN0IDFdICRpXSAgICAgICAgICAgICAgICAgICAgIFwK
ICAgICAgICAgICAgICAgICAgICAgICAgW2xpbmRleCBbbGluZGV4ICRmaXJzdHBvcyAwXSBbZXhw
ciAkaSAtIDFdXSAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICBbbGluZGV4IFtsaW5kZXgg
JGxhc3Rwb3MgMF0gW2V4cHIgJGkgLSAxXV0KICAgICAgICAgICAgICAgIGZvcmVhY2ggcG9zIFts
aW5kZXggW2xpbmRleCBbbGluZGV4ICRsYXN0cG9zIDBdIFtleHByICRpIC0gMV1dIDFdIHsKICAg
ICAgICAgICAgICAgICAgICBldmFsIGxhcHBlbmQgdmFyKCRwb3MpIFtsaW5kZXggW2xpbmRleCBb
bGluZGV4ICRmaXJzdHBvcyAwXSAkaV0gMV0KICAgICAgICAgICAgICAgICAgICBzZXQgdmFyKCRw
b3MpIFttYWtlU2V0ICR2YXIoJHBvcyldCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0K
ICAgICAgICB9CiAgICAgICAgOmNob2ljZSB7CiAgICAgICAgICAgIGZvciB7c2V0IGkgMX0geyRp
IDwgW2xsZW5ndGggW2xpbmRleCAkc3QgMV1dfSB7aW5jciBpfSB7CiAgICAgICAgICAgICAgICBm
b2xsb3dwb3MgJHN0YXRlIFtsaW5kZXggW2xpbmRleCAkc3QgMV0gJGldICAgICAgICAgICAgICAg
ICAgICAgXAogICAgICAgICAgICAgICAgICAgICAgICBbbGluZGV4IFtsaW5kZXggJGZpcnN0cG9z
IDBdIFtleHByICRpIC0gMV1dICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAgIFtsaW5kZXgg
W2xpbmRleCAkbGFzdHBvcyAwXSBbZXhwciAkaSAtIDFdXQogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgICAgIGRlZmF1bHQgewogICAgICAgICAgICAjIE5vIGFjdGlvbiBhdCBsZWFmIG5vZGVz
CiAgICAgICAgfQogICAgfQoKICAgIHN3aXRjaCAtLSBbbGluZGV4ICRzdCAwXSB7CiAgICAgICAg
PyB7CiAgICAgICAgICAgICMgV2UgaGF2aW5nIG5vdGhpbmcgdG8gZG8gaGVyZSAhIERvaW5nIHRo
ZSBzYW1lIGFzCiAgICAgICAgICAgICMgZm9yICogZWZmZWN0aXZlbHkgY29udmVydHMgdGhpcyBx
dWFsaWZpZXIgaW50byB0aGUgb3RoZXIuCiAgICAgICAgfQogICAgICAgICogewogICAgICAgICAg
ICBmb3JlYWNoIHBvcyBbbGluZGV4ICRsYXN0cG9zIDFdIHsKICAgICAgICAgICAgICAgIGV2YWwg
bGFwcGVuZCB2YXIoJHBvcykgW2xpbmRleCAkZmlyc3Rwb3MgMV0KICAgICAgICAgICAgICAgIHNl
dCB2YXIoJHBvcykgW21ha2VTZXQgJHZhcigkcG9zKV0KICAgICAgICAgICAgfQogICAgICAgIH0K
ICAgIH0KCn0KCiMgc2dtbDo6VHJhdmVyc2VEZXB0aDFzdCAtLQojCiMgICAgICAgUGVyZm9ybSBk
ZXB0aC1maXJzdCB0cmF2ZXJzYWwgb2YgYSB0cmVlLgojICAgICAgIEEgbmV3IHRyZWUgaXMgY29u
c3RydWN0ZWQsIHdpdGggZWFjaCBub2RlIGNvbXB1dGVkIGJ5IGYuCiMKIyBBcmd1bWVudHM6CiMg
ICAgICAgc3RhdGUgICBzdGF0ZSBhcnJheSB2YXJpYWJsZQojICAgICAgIHQgICAgICAgVGhlIHRy
ZWUgdG8gdHJhdmVyc2UsIGEgVGNsIGxpc3QKIyAgICAgICBsZWFmICAgIEV2YWx1YXRlZCBhdCBh
IGxlYWYgbm9kZQojICAgICAgIG5vblRlcm0gRXZhbHVhdGVkIGF0IGEgbm9udGVybWluYWwgbm9k
ZQojCiMgUmVzdWx0czoKIyAgICAgICBBIG5ldyB0cmVlIGlzIHJldHVybmVkLgoKcHJvYyBzZ21s
OjpUcmF2ZXJzZURlcHRoMXN0IHtzdGF0ZSB0IGxlYWYgbm9uVGVybX0gewogICAgdXB2YXIgIzAg
JHN0YXRlIHZhcgoKICAgIHNldCBudWxsYWJsZSB7fQogICAgc2V0IGZpcnN0cG9zIHt9CiAgICBz
ZXQgbGFzdHBvcyB7fQoKICAgIHN3aXRjaCAtLSBbbGluZGV4IFtsaW5kZXggJHQgMV0gMF0gewog
ICAgICAgIDpzZXEgLQogICAgICAgIDpjaG9pY2UgewogICAgICAgICAgICBzZXQgcmVwIFtsaW5k
ZXggJHQgMF0KICAgICAgICAgICAgc2V0IGNzIFtsaW5kZXggW2xpbmRleCAkdCAxXSAwXQoKICAg
ICAgICAgICAgZm9yZWFjaCBjaGlsZCBbbHJhbmdlIFtsaW5kZXggJHQgMV0gMSBlbmRdIHsKICAg
ICAgICAgICAgICAgIGZvcmVhY2gge2NoaWxkTnVsbGFibGUgY2hpbGRGaXJzdHBvcyBjaGlsZExh
c3Rwb3N9IFwKICAgICAgICAgICAgICAgICAgICAgICAgW1RyYXZlcnNlRGVwdGgxc3QgJHN0YXRl
ICRjaGlsZCAkbGVhZiAkbm9uVGVybV0gYnJlYWsKICAgICAgICAgICAgICAgIGxhcHBlbmQgbnVs
bGFibGUgJGNoaWxkTnVsbGFibGUKICAgICAgICAgICAgICAgIGxhcHBlbmQgZmlyc3Rwb3MgJGNo
aWxkRmlyc3Rwb3MKICAgICAgICAgICAgICAgIGxhcHBlbmQgbGFzdHBvcyAgJGNoaWxkTGFzdHBv
cwogICAgICAgICAgICB9CgogICAgICAgICAgICBldmFsICRub25UZXJtCiAgICAgICAgfQogICAg
ICAgIGRlZmF1bHQgewogICAgICAgICAgICBpbmNyIHZhcihudW1iZXIpCiAgICAgICAgICAgIHNl
dCByZXAgW2xpbmRleCBbbGluZGV4ICR0IDBdIDBdCiAgICAgICAgICAgIHNldCBuYW1lIFtsaW5k
ZXggW2xpbmRleCAkdCAxXSAwXQogICAgICAgICAgICBldmFsICRsZWFmCiAgICAgICAgfQogICAg
fQoKICAgIHJldHVybiBbbGlzdCAkbnVsbGFibGUgJGZpcnN0cG9zICRsYXN0cG9zXQp9CgojIHNn
bWw6OmZpcnN0cG9zIC0tCiMKIyAgICAgICBDb21wdXRlcyB0aGUgZmlyc3Rwb3MgZnVuY3Rpb24g
Zm9yIGEgbm9udGVybWluYWwgbm9kZS4KIwojIEFyZ3VtZW50czoKIyAgICAgICBjcyAgICAgICAg
ICAgICAgbm9kZSB0eXBlLCBjaG9pY2Ugb3Igc2VxdWVuY2UKIyAgICAgICBmaXJzdHBvcyAgICAg
ICAgZmlyc3Rwb3MgZnVuY3Rpb25zIGZvciB0aGUgc3VidHJlZQojICAgICAgIG51bGxhYmxlICAg
ICAgICBudWxsYWJsZSBmdW5jdGlvbnMgZm9yIHRoZSBzdWJ0cmVlCiMKIyBSZXN1bHRzOgojICAg
ICAgIGZpcnN0cG9zIGZ1bmN0aW9uIGZvciB0aGlzIG5vZGUgaXMgcmV0dXJuZWQuCgpwcm9jIHNn
bWw6OmZpcnN0cG9zIHtjcyBmaXJzdHBvcyBudWxsYWJsZX0gewogICAgc3dpdGNoIC0tICRjcyB7
CiAgICAgICAgOnNlcSB7CiAgICAgICAgICAgIHNldCByZXN1bHQgW2xpbmRleCBbbGluZGV4ICRm
aXJzdHBvcyAwXSAxXQogICAgICAgICAgICBmb3Ige3NldCBpIDB9IHskaSA8IFtsbGVuZ3RoICRu
dWxsYWJsZV19IHtpbmNyIGl9IHsKICAgICAgICAgICAgICAgIGlmIHtbbGluZGV4IFtsaW5kZXgg
JG51bGxhYmxlICRpXSAxXX0gewogICAgICAgICAgICAgICAgICAgIGV2YWwgbGFwcGVuZCByZXN1
bHQgW2xpbmRleCBbbGluZGV4ICRmaXJzdHBvcyBbZXhwciAkaSArIDFdXSAxXQogICAgICAgICAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIDpjaG9pY2UgewogICAgICAgICAgICBm
b3JlYWNoIGNoaWxkICRmaXJzdHBvcyB7CiAgICAgICAgICAgICAgICBldmFsIGxhcHBlbmQgcmVz
dWx0ICRjaGlsZAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBbbGlz
dCAkZmlyc3Rwb3MgW21ha2VTZXQgJHJlc3VsdF1dCn0KCiMgc2dtbDo6bGFzdHBvcyAtLQojCiMg
ICAgICAgQ29tcHV0ZXMgdGhlIGxhc3Rwb3MgZnVuY3Rpb24gZm9yIGEgbm9udGVybWluYWwgbm9k
ZS4KIyAgICAgICBTYW1lIGFzIGZpcnN0cG9zLCBvbmx5IGxvZ2ljIGlzIHJldmVyc2VkCiMKIyBB
cmd1bWVudHM6CiMgICAgICAgY3MgICAgICAgICAgICAgIG5vZGUgdHlwZSwgY2hvaWNlIG9yIHNl
cXVlbmNlCiMgICAgICAgbGFzdHBvcyAgICAgICAgIGxhc3Rwb3MgZnVuY3Rpb25zIGZvciB0aGUg
c3VidHJlZQojICAgICAgIG51bGxhYmxlICAgICAgICBudWxsYWJsZSBmdW5jdGlvbnMgZm9ydGhl
IHN1YnRyZWUKIwojIFJlc3VsdHM6CiMgICAgICAgbGFzdHBvcyBmdW5jdGlvbiBmb3IgdGhpcyBu
b2RlIGlzIHJldHVybmVkLgoKcHJvYyBzZ21sOjpsYXN0cG9zIHtjcyBsYXN0cG9zIG51bGxhYmxl
fSB7CiAgICBzd2l0Y2ggLS0gJGNzIHsKICAgICAgICA6c2VxIHsKICAgICAgICAgICAgc2V0IHJl
c3VsdCBbbGluZGV4IFtsaW5kZXggJGxhc3Rwb3MgZW5kXSAxXQogICAgICAgICAgICBmb3Ige3Nl
dCBpIFtleHByIFtsbGVuZ3RoICRudWxsYWJsZV0gLSAxXX0geyRpID49IDB9IHtpbmNyIGkgLTF9
IHsKICAgICAgICAgICAgICAgIGlmIHtbbGluZGV4IFtsaW5kZXggJG51bGxhYmxlICRpXSAxXX0g
ewogICAgICAgICAgICAgICAgICAgIGV2YWwgbGFwcGVuZCByZXN1bHQgW2xpbmRleCBbbGluZGV4
ICRsYXN0cG9zICRpXSAxXQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICBicmVhawogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAg
ICAgIDpjaG9pY2UgewogICAgICAgICAgICBmb3JlYWNoIGNoaWxkICRsYXN0cG9zIHsKICAgICAg
ICAgICAgICAgIGV2YWwgbGFwcGVuZCByZXN1bHQgJGNoaWxkCiAgICAgICAgICAgIH0KICAgICAg
ICB9CiAgICB9CgogICAgcmV0dXJuIFtsaXN0ICRsYXN0cG9zIFttYWtlU2V0ICRyZXN1bHRdXQp9
CgojIHNnbWw6Om1ha2VTZXQgLS0KIwojICAgICAgIFR1cm4gYSBsaXN0IGludG8gYSBzZXQsIGll
LiByZW1vdmUgZHVwbGljYXRlcy4KIwojIEFyZ3VtZW50czoKIyAgICAgICBzICAgICAgIGEgbGlz
dAojCiMgUmVzdWx0czoKIyAgICAgICBBIHNldCBpcyByZXR1cm5lZCwgd2hpY2ggaXMgYSBsaXN0
IHdpdGggZHVwbGljYXRlcyByZW1vdmVkLgoKcHJvYyBzZ21sOjptYWtlU2V0IHMgewogICAgZm9y
ZWFjaCByICRzIHsKICAgICAgICBpZiB7W2xsZW5ndGggJHJdfSB7CiAgICAgICAgICAgIHNldCB1
bmlxdWUoJHIpIHt9CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIFthcnJheSBuYW1lcyB1bmlx
dWVdCn0KCiMgc2dtbDo6bnVsbGFibGUgLS0KIwojICAgICAgIENvbXB1dGUgdGhlIG51bGxhYmxl
IGZ1bmN0aW9uIGZvciBhIG5vZGUuCiMKIyBBcmd1bWVudHM6CiMgICAgICAgbm9kZVR5cGUgICAg
ICAgIGxlYWYgb3Igbm9udGVybWluYWwKIyAgICAgICByZXAgICAgICAgICAgICAgcmVwZXRpdGlv
biBhcHBseWluZyB0byB0aGlzIG5vZGUKIyAgICAgICBuYW1lICAgICAgICAgICAgbGVhZiBub2Rl
OiBzeW1ib2wgZm9yIHRoaXMgbm9kZSwgbm9udGVybSBub2RlOiBjaG9pY2Ugb3Igc2VxIG5vZGUK
IyAgICAgICBzdWJ0cmVlICAgICAgICAgbm9udGVybSBub2RlOiBudWxsYWJsZSBmdW5jdGlvbnMg
Zm9yIHRoZSBzdWJ0cmVlCiMKIyBSZXN1bHRzOgojICAgICAgIFJldHVybnMgbnVsbGFibGUgZnVu
Y3Rpb24gZm9yIHRoaXMgYnJhbmNoIG9mIHRoZSB0cmVlLgoKcHJvYyBzZ21sOjpudWxsYWJsZSB7
bm9kZVR5cGUgcmVwIG5hbWUge3N1YnRyZWUge319fSB7CiAgICBzd2l0Y2ggLWdsb2IgLS0gJHJl
cDokbm9kZVR5cGUgewogICAgICAgIDpsZWFmIC0KICAgICAgICArOmxlYWYgewogICAgICAgICAg
ICByZXR1cm4gW2xpc3Qge30gMF0KICAgICAgICB9CiAgICAgICAgXFwqOmxlYWYgLQogICAgICAg
IFxcPzpsZWFmIHsKICAgICAgICAgICAgcmV0dXJuIFtsaXN0IHt9IDFdCiAgICAgICAgfQogICAg
ICAgIFxcKjpub250ZXJtIC0KICAgICAgICBcXD86bm9udGVybSB7CiAgICAgICAgICAgIHJldHVy
biBbbGlzdCAkc3VidHJlZSAxXQogICAgICAgIH0KICAgICAgICA6bm9udGVybSAtCiAgICAgICAg
Kzpub250ZXJtIHsKICAgICAgICAgICAgc3dpdGNoIC0tICRuYW1lIHsKICAgICAgICAgICAgICAg
IDpjaG9pY2UgewogICAgICAgICAgICAgICAgICAgIHNldCByZXN1bHQgMAogICAgICAgICAgICAg
ICAgICAgIGZvcmVhY2ggY2hpbGQgJHN1YnRyZWUgewogICAgICAgICAgICAgICAgICAgICAgICBz
ZXQgcmVzdWx0IFtleHByICRyZXN1bHQgfHwgW2xpbmRleCAkY2hpbGQgMV1dCiAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgOnNlcSB7CiAgICAg
ICAgICAgICAgICAgICAgc2V0IHJlc3VsdCAxCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCBj
aGlsZCAkc3VidHJlZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldCByZXN1bHQgW2V4cHIg
JHJlc3VsdCAmJiBbbGluZGV4ICRjaGlsZCAxXV0KICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIFtsaXN0ICRzdWJ0
cmVlICRyZXN1bHRdCiAgICAgICAgfQogICAgfQp9CgojIFRoZXNlIHJlZ3VsYXIgZXhwcmVzc2lv
bnMgYXJlIGRlZmluZWQgaGVyZSBvbmNlIGZvciBiZXR0ZXIgcGVyZm9ybWFuY2UKCm5hbWVzcGFj
ZSBldmFsIHNnbWwgewogICAgdmFyaWFibGUgV3NwCgogICAgIyBXYXRjaCBvdXQgZm9yIGNhc2Ut
c2Vuc2l0aXZpdHkKCiAgICBzZXQgYXR0bGlzdF9leHAgW2NsICRXc3BdKihbY2wgXiRXc3BdKylb
Y2wgJFdzcF0qKFtjbCBeJFdzcF0rKVtjbCAkV3NwXSooI1JFUVVJUkVEfCNJTVBMSUVEKQogICAg
c2V0IGF0dGxpc3RfZW51bV9leHAgW2NsICRXc3BdKihbY2wgXiRXc3BdKylbY2wgJFdzcF0qXFwo
KFtjbCBeKV0qKVxcKVtjbCAkV3NwXSooIihbY2wgXiIpXSkiKT8gOyMgIgogICAgc2V0IGF0dGxp
c3RfZml4ZWRfZXhwIFtjbCAkV3NwXSooW2NsIF4kV3NwXSspW2NsICRXc3BdKihbY2wgXiRXc3Bd
KylbY2wgJFdzcF0qKCNGSVhFRClbY2wgJFdzcF0qKFtjbCBeJFdzcF0rKQoKICAgIHNldCBwYXJh
bV9lbnRpdHlfZXhwIFtjbCAkV3NwXSooW2NsIF4kV3NwXSspW2NsICRXc3BdKihbY2wgXiIkV3Nw
XSopW2NsICRXc3BdKiIoW2NsIF4iXSopIgoKICAgIHNldCBub3RhdGlvbl9leHAgW2NsICRXc3Bd
KihbY2wgXiRXc3BdKylbY2wgJFdzcF0qKC4qKQoKfQoKIyBzZ21sOjpEVEQ6QVRUTElTVCAtLQoj
CiMgICAgICAgPCFBVFRMSVNUIC4uLj4gZGVmaW5lcyBhbiBhdHRyaWJ1dGUgbGlzdC4KIwojIEFy
Z3VtZW50czoKIyAgICAgICBpZCAgICAgIEVsZW1lbnQgYW4gYXR0cmlidXRlIGxpc3QgaXMgYmVp
bmcgZGVmaW5lZCBmb3IuCiMgICAgICAgdmFsdWUgICBkYXRhIGZyb20gdGhlIFBJLgojCiMgUmVz
dWx0czoKIyAgICAgICBBdHRyaWJ1dGUgbGlzdCB2YXJpYWJsZXMgYXJlIG1vZGlmaWVkLgoKcHJv
YyBzZ21sOjpEVEQ6QVRUTElTVCB7aWQgdmFsdWV9IHsKICAgIHZhcmlhYmxlIGF0dGxpc3RfZXhw
CiAgICB2YXJpYWJsZSBhdHRsaXN0X2VudW1fZXhwCiAgICB2YXJpYWJsZSBhdHRsaXN0X2ZpeGVk
X2V4cAogICAgZGJncHV0cyBEVERfcGFyc2UgW2xpc3QgRFREOkFUVExJU1QgJGlkICR2YWx1ZV0K
ICAgIHVwdmFyIG9wdHMgc3RhdGUKICAgIHVwdmFyIGF0dHJpYnV0ZXMgYW0KCiAgICBpZiB7W2lu
Zm8gZXhpc3RzIGFtKCRpZCldfSB7CiAgICAgICAgZXZhbCAkc3RhdGUoLWVycm9yY29tbWFuZCkg
YXR0bGlzdCBbbGlzdCAiYXR0cmlidXRlIGxpc3QgZm9yIGVsZW1lbnQgXCIkaWRcIiBhbHJlYWR5
IGRlY2xhcmVkIl0KICAgIH0gZWxzZSB7CiAgICAgICAgIyBQYXJzZSB0aGUgYXR0cmlidXRlIGxp
c3QuICBJZiBpdCB3ZXJlIHJlZ3VsYXIsIGNvdWxkIGp1c3QgdXNlIGZvcmVhY2gsCiAgICAgICAg
IyBidXQgc29tZSBhdHRyaWJ1dGVzIG1heSBoYXZlIHZhbHVlcy4KICAgICAgICByZWdzdWIgLWFs
bCB7KFtdWyRcXF0pfSAkdmFsdWUge1xcXDF9IHZhbHVlCiAgICAgICAgcmVnc3ViIC1hbGwgJGF0
dGxpc3RfZXhwICR2YWx1ZSB7W0RUREF0dHJpYnV0ZSB7XDF9IHtcMn0ge1wzfV19IHZhbHVlCiAg
ICAgICAgcmVnc3ViIC1hbGwgJGF0dGxpc3RfZW51bV9leHAgJHZhbHVlIHtbRFREQXR0cmlidXRl
IHtcMX0ge1wyfSB7XDN9XX0gdmFsdWUKICAgICAgICByZWdzdWIgLWFsbCAkYXR0bGlzdF9maXhl
ZF9leHAgJHZhbHVlIHtbRFREQXR0cmlidXRlIHtcMX0ge1wyfSB7XDN9IHtcNH1dfSB2YWx1ZQog
ICAgICAgIHN1YnN0ICR2YWx1ZQogICAgICAgIHNldCBhbSgkaWQpIFthcnJheSBnZXQgYXR0bGlz
dF0KICAgIH0KfQoKIyBzZ21sOjpEVERBdHRyaWJ1dGUgLS0KIwojICAgICAgIFBhcnNlIGRlZmlu
aXRpb24gb2YgYSBzaW5nbGUgYXR0cmlidXRlLgojCiMgQXJndW1lbnRzOgojICAgICAgIG5hbWUg
ICAgYXR0cmlidXRlIG5hbWUKIyAgICAgICB0eXBlICAgIHR5cGUgb2YgdGhpcyBhdHRyaWJ1dGUK
IyAgICAgICBkZWZhdWx0IGRlZmF1bHQgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZQojICAgICAgIHZh
bHVlICAgb3RoZXIgaW5mb3JtYXRpb24KCnByb2Mgc2dtbDo6RFREQXR0cmlidXRlIHtuYW1lIHR5
cGUgZGVmYXVsdCB7dmFsdWUge319fSB7CiAgICB1cHZhciBhdHRsaXN0IGFsCiAgICAjIFRoaXMg
bmVlZHMgZnVydGhlciB3b3JrCiAgICBzZXQgYWwoJG5hbWUpIFtsaXN0ICRkZWZhdWx0ICR2YWx1
ZV0KfQoKIyBzZ21sOjpEVEQ6RU5USVRZIC0tCiMKIyAgICAgICA8IUVOVElUWSAuLi4+IFBJCiMK
IyBBcmd1bWVudHM6CiMgICAgICAgaWQgICAgICBpZGVudGlmaWVyIGZvciB0aGUgZW50aXR5CiMg
ICAgICAgdmFsdWUgICBkYXRhCiMKIyBSZXN1bHRzOgojICAgICAgIE1vZGlmaWVzIHRoZSBjYWxs
ZXIncyBlbnRpdGllcyBhcnJheSB2YXJpYWJsZQoKcHJvYyBzZ21sOjpEVEQ6RU5USVRZIHtpZCB2
YWx1ZX0gewogICAgdmFyaWFibGUgcGFyYW1fZW50aXR5X2V4cAogICAgZGJncHV0cyBEVERfcGFy
c2UgW2xpc3QgRFREOkVOVElUWSAkaWQgJHZhbHVlXQogICAgdXB2YXIgb3B0cyBzdGF0ZQogICAg
dXB2YXIgZW50aXRpZXMgZW50cwoKICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJSAkaWRdfSB7CiAg
ICAgICAgIyBFbnRpdHkgZGVjbGFyYXRpb24KICAgICAgICBpZiB7W2luZm8gZXhpc3RzIGVudHMo
JGlkKV19IHsKICAgICAgICAgICAgZXZhbCAkc3RhdGUoLWVycm9yY29tbWFuZCkgZW50aXR5IFts
aXN0ICJlbnRpdHkgXCIkaWRcIiBhbHJlYWR5IGRlY2xhcmVkIl0KICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICBpZiB7IVtyZWdleHAgeyIoW14iXSopIn0gJHZhbHVlIHggZW50dmFsdWVdICYm
ICFbcmVnZXhwIHsnKFteJ10qKSd9ICR2YWx1ZSB4IGVudHZhbHVlXX0gewogICAgICAgICAgICAg
ICAgZXZhbCAkc3RhdGUoLWVycm9yY29tbWFuZCkgZW50aXR5dmFsdWUgW2xpc3QgImVudGl0eSB2
YWx1ZSBcIiR2YWx1ZVwiIG5vdCBjb3JyZWN0bHkgc3BlY2lmaWVkIl0KICAgICAgICAgICAgfSA7
IyAiCiAgICAgICAgICAgIHNldCBlbnRzKCRpZCkgJGVudHZhbHVlCiAgICAgICAgfQogICAgfSBl
bHNlIHsKICAgICAgICAjIFBhcmFtZXRlciBlbnRpdHkgZGVjbGFyYXRpb24KICAgICAgICBzd2l0
Y2ggLWdsb2IgW3JlZ2V4cCAkcGFyYW1fZW50aXR5X2V4cCAkdmFsdWUgeCBuYW1lIHNjaGVtZSBk
YXRhXSxbc3RyaW5nIGNvbXBhcmUge30gJHNjaGVtZV0gewogICAgICAgICAgICAwLCogewogICAg
ICAgICAgICAgICAgZXZhbCAkc3RhdGUoLWVycm9yY29tbWFuZCkgZW50aXR5dmFsdWUgW2xpc3Qg
InBhcmFtZXRlciBlbnRpdHkgXCIkdmFsdWVcIiBub3QgY29ycmVjdGx5IHNwZWNpZmllZCJdCiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgKiwwIHsKICAgICAgICAgICAgICAgICMgU1lTVEVNIG9y
IFBVQkxJQyBkZWNsYXJhdGlvbgogICAgICAgICAgICB9CiAgICAgICAgICAgIGRlZmF1bHQgewog
ICAgICAgICAgICAgICAgc2V0IGVudHMoJGlkKSAkZGF0YQogICAgICAgICAgICB9CiAgICAgICAg
fQogICAgfQp9CgojIHNnbWw6OkRURDpOT1RBVElPTiAtLQoKcHJvYyBzZ21sOjpEVEQ6Tk9UQVRJ
T04ge2lkIHZhbHVlfSB7CiAgICB2YXJpYWJsZSBub3RhdGlvbl9leHAKICAgIHVwdmFyIG9wdHMg
c3RhdGUKCiAgICBpZiB7W3JlZ2V4cCAkbm90YXRpb25fZXhwICR2YWx1ZSB4IHNjaGVtZSBkYXRh
XSA9PSAyfSB7CiAgICB9IGVsc2UgewogICAgICAgIGV2YWwgJHN0YXRlKC1lcnJvcmNvbW1hbmQp
IG5vdGF0aW9udmFsdWUgW2xpc3QgIm5vdGF0aW9uIHZhbHVlIFwiJHZhbHVlXCIgaW5jb3JyZWN0
bHkgc3BlY2lmaWVkIl0KICAgIH0KfQoKIyMjIFV0aWxpdHkgcHJvY2VkdXJlcwoKIyBzZ21sOjpu
b29wIC0tCiMKIyAgICAgICBBIGRvLW5vdGhpbmcgcHJvYwojCiMgQXJndW1lbnRzOgojICAgICAg
IGFyZ3MgICAgYXJndW1lbnRzCiMKIyBSZXN1bHRzOgojICAgICAgIE5vdGhpbmcuCgpwcm9jIHNn
bWw6Om5vb3AgYXJncyB7CiAgICByZXR1cm4gMAp9CgojIHNnbWw6OmlkZW50aXR5IC0tCiMKIyAg
ICAgICBJZGVudGl0eSBmdW5jdGlvbi4KIwojIEFyZ3VtZW50czoKIyAgICAgICBhICAgICAgIGFy
Yml0cmFyeSBhcmd1bWVudAojCiMgUmVzdWx0czoKIyAgICAgICAkYQoKcHJvYyBzZ21sOjppZGVu
dGl0eSBhIHsKICAgIHJldHVybiAkYQp9CgojIHNnbWw6OkVycm9yIC0tCiMKIyAgICAgICBUaHJv
dyBhbiBlcnJvcgojCiMgQXJndW1lbnRzOgojICAgICAgIGFyZ3MgICAgYXJndW1lbnRzCiMKIyBS
ZXN1bHRzOgojICAgICAgIEVycm9yIHJldHVybiBjb25kaXRpb24uCgpwcm9jIHNnbWw6OkVycm9y
IGFyZ3MgewogICAgdXBsZXZlbCByZXR1cm4gLWNvZGUgZXJyb3IgW2xpc3QgJGFyZ3NdCn0KCiMj
IyBGb2xsb3dpbmcgcHJvY2VkdXJlcyBhcmUgYmFzZWQgb24gaHRtbF9saWJyYXJ5CgojIHNnbWw6
OnphcFdoaXRlIC0tCiMKIyAgICAgICBDb252ZXJ0IG11bHRpcGxlIHdoaXRlIHNwYWNlIGludG8g
YSBzaW5nbGUgc3BhY2UuCiMKIyBBcmd1bWVudHM6CiMgICAgICAgZGF0YSAgICBwbGFpbiB0ZXh0
CiMKIyBSZXN1bHRzOgojICAgICAgIEFzIGFib3ZlCgpwcm9jIHNnbWw6OnphcFdoaXRlIGRhdGEg
ewogICAgcmVnc3ViIC1hbGwgIlxbIFx0XHJcblxdKyIgJGRhdGEgeyB9IGRhdGEKICAgIHJldHVy
biAkZGF0YQp9Cgpwcm9jIHNnbWw6OkJvb2xlYW4gdmFsdWUgewogICAgcmVnc3ViIHsxfHRydWV8
eWVzfG9ufSAkdmFsdWUgMSB2YWx1ZQogICAgcmVnc3ViIHswfGZhbHNlfG5vfG9mZn0gJHZhbHVl
IDAgdmFsdWUKICAgIHJldHVybiAkdmFsdWUKfQoKcHJvYyBzZ21sOjpkYmdwdXRzIHt3aGVyZSB0
ZXh0fSB7CiAgICB2YXJpYWJsZSBkYmcKCiAgICBjYXRjaCB7aWYgeyRkYmd9IHtwdXRzIHN0ZG91
dCAiREJHOiAkd2hlcmUgKCR0ZXh0KSJ9fQp9CgoKIyB4bWwudGNsIC0tCiMKIyAgICAgICBUaGlz
IGZpbGUgcHJvdmlkZXMgWE1MIHNlcnZpY2VzLgojICAgICAgIFRoZXNlIHNlcnZpY2VzIGluY2x1
ZGUgYSBYTUwgZG9jdW1lbnQgaW5zdGFuY2UgYW5kIERURCBwYXJzZXIsCiMgICAgICAgYXMgd2Vs
bCBhcyBzdXBwb3J0IGZvciBnZW5lcmF0aW5nIFhNTC4KIwojIENvcHlyaWdodCAoYykgMTk5OCwx
OTk5IFp2ZW5vIFB0eSBMdGQKIyBodHRwOi8vd3d3Lnp2ZW5vLmNvbS8KIyAKIyBadmVubyBtYWtl
cyB0aGlzIHNvZnR3YXJlIGFuZCBhbGwgYXNzb2NpYXRlZCBkYXRhIGFuZCBkb2N1bWVudGF0aW9u
CiMgKCdTb2Z0d2FyZScpIGF2YWlsYWJsZSBmcmVlIG9mIGNoYXJnZSBmb3Igbm9uLWNvbW1lcmNp
YWwgcHVycG9zZXMgb25seS4gWW91CiMgbWF5IG1ha2UgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSBi
dXQgeW91IG11c3QgaW5jbHVkZSBhbGwgb2YgdGhpcyBub3RpY2Ugb24KIyBhbnkgY29weS4KIyAK
IyBUaGUgU29mdHdhcmUgd2FzIGRldmVsb3BlZCBmb3IgcmVzZWFyY2ggcHVycG9zZXMgYW5kIFp2
ZW5vIGRvZXMgbm90IHdhcnJhbnQKIyB0aGF0IGl0IGlzIGVycm9yIGZyZWUgb3IgZml0IGZvciBh
bnkgcHVycG9zZS4gIFp2ZW5vIGRpc2NsYWltcyBhbnkKIyBsaWFiaWxpdHkgZm9yIGFsbCBjbGFp
bXMsIGV4cGVuc2VzLCBsb3NzZXMsIGRhbWFnZXMgYW5kIGNvc3RzIGFueSB1c2VyIG1heQojIGlu
Y3VyIGFzIGEgcmVzdWx0IG9mIHVzaW5nLCBjb3B5aW5nIG9yIG1vZGlmeWluZyB0aGUgU29mdHdh
cmUuCiMKIyBDb3B5cmlnaHQgKGMpIDE5OTcgQXVzdHJhbGlhbiBOYXRpb25hbCBVbml2ZXJzaXR5
IChBTlUpLgojIAojIEFOVSBtYWtlcyB0aGlzIHNvZnR3YXJlIGFuZCBhbGwgYXNzb2NpYXRlZCBk
YXRhIGFuZCBkb2N1bWVudGF0aW9uCiMgKCdTb2Z0d2FyZScpIGF2YWlsYWJsZSBmcmVlIG9mIGNo
YXJnZSBmb3Igbm9uLWNvbW1lcmNpYWwgcHVycG9zZXMgb25seS4gWW91CiMgbWF5IG1ha2UgY29w
aWVzIG9mIHRoZSBTb2Z0d2FyZSBidXQgeW91IG11c3QgaW5jbHVkZSBhbGwgb2YgdGhpcyBub3Rp
Y2Ugb24KIyBhbnkgY29weS4KIyAKIyBUaGUgU29mdHdhcmUgd2FzIGRldmVsb3BlZCBmb3IgcmVz
ZWFyY2ggcHVycG9zZXMgYW5kIEFOVSBkb2VzIG5vdCB3YXJyYW50CiMgdGhhdCBpdCBpcyBlcnJv
ciBmcmVlIG9yIGZpdCBmb3IgYW55IHB1cnBvc2UuICBBTlUgZGlzY2xhaW1zIGFueQojIGxpYWJp
bGl0eSBmb3IgYWxsIGNsYWltcywgZXhwZW5zZXMsIGxvc3NlcywgZGFtYWdlcyBhbmQgY29zdHMg
YW55IHVzZXIgbWF5CiMgaW5jdXIgYXMgYSByZXN1bHQgb2YgdXNpbmcsIGNvcHlpbmcgb3IgbW9k
aWZ5aW5nIHRoZSBTb2Z0d2FyZS4KIwojICRJZCQKCnBhY2thZ2UgcHJvdmlkZSB4bWwgMS44Cgoj
IHBhY2thZ2UgcmVxdWlyZSBzZ21sIDEuNgoKbmFtZXNwYWNlIGV2YWwgeG1sIHsKCiAgICAjIFBy
b2NlZHVyZXMgZm9yIHBhcnNpbmcgWE1MIGRvY3VtZW50cwogICAgbmFtZXNwYWNlIGV4cG9ydCBw
YXJzZXIKICAgICMgUHJvY2VkdXJlcyBmb3IgcGFyc2luZyBYTUwgRFREcwogICAgbmFtZXNwYWNl
IGV4cG9ydCBEVERwYXJzZXIKCiAgICAjIENvdW50ZXIgZm9yIGNyZWF0aW5nIHVuaXF1ZSBwYXJz
ZXIgb2JqZWN0cwogICAgdmFyaWFibGUgUGFyc2VyQ291bnRlciAwCgogICAgIyBDb252ZW5pZW5j
ZSByb3V0aW5lCiAgICBwcm9jIGNsIHggewogICAgICAgIHJldHVybiAiXFskeFxdIgogICAgfQoK
ICAgICMgRGVmaW5lIHZhcmlvdXMgcmVndWxhciBleHByZXNzaW9ucwogICAgIyB3aGl0ZSBzcGFj
ZQogICAgdmFyaWFibGUgV3NwICIgXHRcclxuIgogICAgdmFyaWFibGUgbm9Xc3AgW2NsIF4kV3Nw
XQoKICAgICMgVmFyaW91cyBYTUwgbmFtZXMgYW5kIHRva2VucwoKICAgICMgQlVHOiBOYW1lQ2hh
ciBkb2VzIG5vdCBpbmNsdWRlIENvbWJpbmluZ0NoYXIgb3IgRXh0ZW5kZXIKICAgIHZhcmlhYmxl
IE5hbWVDaGFyIFtjbCAtYS16QS1aMC05Ll86XQogICAgdmFyaWFibGUgTmFtZSBbY2wgYS16QS1a
XzpdJE5hbWVDaGFyKgogICAgdmFyaWFibGUgTm10b2tlbiAkTmFtZUNoYXIrCgogICAgIyBUb2tl
bmlzaW5nIGV4cHJlc3Npb25zCgogICAgdmFyaWFibGUgdG9rRXhwciA8KC8/KShbY2wgXiRXc3A+
XSspKFtjbCAkV3NwXSpbY2wgXj5dKik+CiAgICB2YXJpYWJsZSBzdWJzdEV4cHIgIlx9XG57XFwy
fSB7XFwxfSB7fSB7XFwzfSBceyIKCiAgICAjIHRhYmxlIG9mIHByZWRlZmluZWQgZW50aXRpZXMK
CiAgICB2YXJpYWJsZSBFbnRpdHlQcmVkZWYKICAgIGFycmF5IHNldCBFbnRpdHlQcmVkZWYgewog
ICAgICAgIGx0IDwgICBndCA+ICAgYW1wICYgICBxdW90IFwiICAgYXBvcyAnCiAgICB9Cgp9CgoK
IyB4bWw6OnBhcnNlciAtLQojCiMgICAgICAgQ3JlYXRlcyBYTUwgcGFyc2VyIG9iamVjdC4KIwoj
IEFyZ3VtZW50czoKIyAgICAgICBhcmdzICAgIFVuaXF1ZSBuYW1lIGZvciBwYXJzZXIgb2JqZWN0
CiMgICAgICAgICAgICAgICBwbHVzIG9wdGlvbi92YWx1ZSBwYWlycwojCiMgUmVjb2duaXNlZCBP
cHRpb25zOgojICAgICAgIC1maW5hbCAgICAgICAgICAgICAgICAgIEluZGljYXRlcyBlbmQgb2Yg
ZG9jdW1lbnQgZGF0YQojICAgICAgIC1lbGVtZW50c3RhcnRjb21tYW5kICAgIENhbGxlZCB3aGVu
IGFuIGVsZW1lbnQgc3RhcnRzCiMgICAgICAgLWVsZW1lbnRlbmRjb21tYW5kICAgICAgQ2FsbGVk
IHdoZW4gYW4gZWxlbWVudCBlbmRzCiMgICAgICAgLWNoYXJhY3RlcmRhdGFjb21tYW5kICAgQ2Fs
bGVkIHdoZW4gY2hhcmFjdGVyIGRhdGEgb2NjdXJzCiMgICAgICAgLXByb2Nlc3NpbmdpbnN0cnVj
dGlvbmNvbW1hbmQgICBDYWxsZWQgd2hlbiBhIFBJIG9jY3VycwojICAgICAgIC1leHRlcm5hbGVu
dGl0eXJlZmNvbW1hbmQgICAgICAgQ2FsbGVkIGZvciBhbiBleHRlcm5hbCBlbnRpdHkgcmVmZXJl
bmNlCiMKIyAgICAgICAoTm90IGNvbXBhdGlibGUgd2l0aCBleHBhdCkKIyAgICAgICAteG1sZGVj
bGNvbW1hbmQgICAgICAgICBDYWxsZWQgd2hlbiB0aGUgWE1MIGRlY2xhcmF0aW9uIG9jY3Vycwoj
ICAgICAgIC1kb2N0eXBlY29tbWFuZCAgICAgICAgIENhbGxlZCB3aGVuIHRoZSBkb2N1bWVudCB0
eXBlIGRlY2xhcmF0aW9uIG9jY3VycwojCiMgICAgICAgLWVycm9yY29tbWFuZCAgICAgICAgICAg
U2NyaXB0IHRvIGV2YWx1YXRlIGZvciBhIGZhdGFsIGVycm9yCiMgICAgICAgLXdhcm5pbmdjb21t
YW5kICAgICAgICAgU2NyaXB0IHRvIGV2YWx1YXRlIGZvciBhIHJlcG9ydGFibGUgd2FybmluZwoj
ICAgICAgIC1zdGF0ZXZhcmlhYmxlICAgICAgICAgIGdsb2JhbCBzdGF0ZSB2YXJpYWJsZQojICAg
ICAgIC1yZXBvcnRlbXB0eSAgICAgICAgICAgIHdoZXRoZXIgdG8gcHJvdmlkZSBlbXB0eSBlbGVt
ZW50IGluZGljYXRpb24KIwojIFJlc3VsdHM6CiMgICAgICAgVGhlIHN0YXRlIHZhcmlhYmxlIGlz
IGluaXRpYWxpc2VkLgoKcHJvYyB4bWw6OnBhcnNlciB7YXJnc30gewogICAgdmFyaWFibGUgUGFy
c2VyQ291bnRlcgoKICAgIGlmIHtbbGxlbmd0aCAkYXJnc10gPiAwfSB7CiAgICAgICAgc2V0IG5h
bWUgW2xpbmRleCAkYXJncyAwXQogICAgICAgIHNldCBhcmdzIFtscmVwbGFjZSAkYXJncyAwIDBd
CiAgICB9IGVsc2UgewogICAgICAgIHNldCBuYW1lIHBhcnNlcltpbmNyIFBhcnNlckNvdW50ZXJd
CiAgICB9CgogICAgaWYge1tpbmZvIGNvbW1hbmQgW25hbWVzcGFjZSBjdXJyZW50XTo6JG5hbWVd
ICE9IHt9fSB7CiAgICAgICAgcmV0dXJuIC1jb2RlIGVycm9yICJ1bmFibGUgdG8gY3JlYXRlIHBh
cnNlciBvYmplY3QgXCJbbmFtZXNwYWNlIGN1cnJlbnRdOjokbmFtZVwiIGNvbW1hbmQiCiAgICB9
CgogICAgIyBJbml0aWFsaXNlIHN0YXRlIHZhcmlhYmxlIGFuZCBvYmplY3QgY29tbWFuZAogICAg
dXB2YXIgXCMwIFtuYW1lc3BhY2UgY3VycmVudF06OiRuYW1lIHBhcnNlcgogICAgc2V0IHNnbWxf
bnMgW25hbWVzcGFjZSBwYXJlbnRdOjpzZ21sCiAgICBhcnJheSBzZXQgcGFyc2VyIFtsaXN0IG5h
bWUgJG5hbWUgICAgICAgICAgICAgICAgICAgXAogICAgICAgIC1maW5hbCAxICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAtZWxlbWVudHN0YXJ0Y29tbWFu
ZCAke3NnbWxfbnN9Ojpub29wICAgICAgICAgICBcCiAgICAgICAgLWVsZW1lbnRlbmRjb21tYW5k
ICR7c2dtbF9uc306Om5vb3AgICAgICAgICAgICAgXAogICAgICAgIC1jaGFyYWN0ZXJkYXRhY29t
bWFuZCAke3NnbWxfbnN9Ojpub29wICAgICAgICAgIFwKICAgICAgICAtcHJvY2Vzc2luZ2luc3Ry
dWN0aW9uY29tbWFuZCAke3NnbWxfbnN9Ojpub29wICBcCiAgICAgICAgLWV4dGVybmFsZW50aXR5
cmVmY29tbWFuZCAke3NnbWxfbnN9Ojpub29wICAgICAgXAogICAgICAgIC14bWxkZWNsY29tbWFu
ZCAke3NnbWxfbnN9Ojpub29wICAgICAgICAgICAgICAgIFwKICAgICAgICAtZG9jdHlwZWNvbW1h
bmQgJHtzZ21sX25zfTo6bm9vcCAgICAgICAgICAgICAgICBcCiAgICAgICAgLXdhcm5pbmdjb21t
YW5kICR7c2dtbF9uc306Om5vb3AgICAgICAgICAgICAgICAgXAogICAgICAgIC1zdGF0ZXZhcmlh
YmxlIFtuYW1lc3BhY2UgY3VycmVudF06OiRuYW1lICAgICAgIFwKICAgICAgICAtcmVwb3J0ZW1w
dHkgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgaW50ZXJuYWxk
dGQge30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgXQoKICAgIHByb2Mg
W25hbWVzcGFjZSBjdXJyZW50XTo6JG5hbWUge21ldGhvZCBhcmdzfSBcCiAgICAgICAgImV2YWwg
UGFyc2VDb21tYW5kICRuYW1lIFwkbWV0aG9kIFwkYXJncyIKCiAgICBldmFsIFBhcnNlQ29tbWFu
ZCBbbGlzdCAkbmFtZV0gY29uZmlndXJlICRhcmdzCgogICAgcmV0dXJuIFtuYW1lc3BhY2UgY3Vy
cmVudF06OiRuYW1lCn0KCiMgeG1sOjpQYXJzZUNvbW1hbmQgLS0KIwojICAgICAgIEhhbmRsZXMg
cGFyc2Ugb2JqZWN0IGNvbW1hbmQgaW52b2NhdGlvbnMKIwojIFZhbGlkIE1ldGhvZHM6CiMgICAg
ICAgY2dldAojICAgICAgIGNvbmZpZ3VyZQojICAgICAgIHBhcnNlCiMgICAgICAgcmVzZXQKIwoj
IEFyZ3VtZW50czoKIyAgICAgICBwYXJzZXIgIHBhcnNlciBvYmplY3QKIyAgICAgICBtZXRob2Qg
IG1pbm9yIGNvbW1hbmQKIyAgICAgICBhcmdzICAgIG90aGVyIGFyZ3VtZW50cwojCiMgUmVzdWx0
czoKIyAgICAgICBEZXBlbmRzIG9uIG1ldGhvZAoKcHJvYyB4bWw6OlBhcnNlQ29tbWFuZCB7cGFy
c2VyIG1ldGhvZCBhcmdzfSB7CiAgICB1cHZhciBcIzAgW25hbWVzcGFjZSBjdXJyZW50XTo6JHBh
cnNlciBzdGF0ZQoKICAgIHN3aXRjaCAtLSAkbWV0aG9kIHsKICAgICAgICBjZ2V0IHsKICAgICAg
ICAgICAgcmV0dXJuICRzdGF0ZShbbGluZGV4ICRhcmdzIDBdKQogICAgICAgIH0KICAgICAgICBj
b25maWd1cmUgewogICAgICAgICAgICBmb3JlYWNoIHtvcHQgdmFsdWV9ICRhcmdzIHsKICAgICAg
ICAgICAgICAgIHNldCBzdGF0ZSgkb3B0KSAkdmFsdWUKICAgICAgICAgICAgfQogICAgICAgIH0K
ICAgICAgICBwYXJzZSB7CiAgICAgICAgICAgIFBhcnNlQ29tbWFuZF9wYXJzZSAkcGFyc2VyIFts
aW5kZXggJGFyZ3MgMF0KICAgICAgICB9CiAgICAgICAgcmVzZXQgewogICAgICAgICAgICBpZiB7
W2xsZW5ndGggJGFyZ3NdfSB7CiAgICAgICAgICAgICAgICByZXR1cm4gLWNvZGUgZXJyb3IgInRv
byBtYW55IGFyZ3VtZW50cyIKICAgICAgICAgICAgfQogICAgICAgICAgICBQYXJzZUNvbW1hbmRf
cmVzZXQgJHBhcnNlcgogICAgICAgIH0KICAgICAgICBkZWZhdWx0IHsKICAgICAgICAgICAgcmV0
dXJuIC1jb2RlIGVycm9yICJ1bmtub3duIG1ldGhvZCBcIiRtZXRob2RcIiIKICAgICAgICB9CiAg
ICB9CgogICAgcmV0dXJuIHt9Cn0KCiMgeG1sOjpQYXJzZUNvbW1hbmRfcGFyc2UgLS0KIwojICAg
ICAgIFBhcnNlcyBkb2N1bWVudCBpbnN0YW5jZSBkYXRhCiMKIyBBcmd1bWVudHM6CiMgICAgICAg
b2JqZWN0ICBwYXJzZXIgb2JqZWN0CiMgICAgICAgeG1sICAgICBkYXRhCiMKIyBSZXN1bHRzOgoj
ICAgICAgIENhbGxiYWNrcyBhcmUgaW52b2tlZCwgaWYgYW55IGFyZSBkZWZpbmVkCgpwcm9jIHht
bDo6UGFyc2VDb21tYW5kX3BhcnNlIHtvYmplY3QgeG1sfSB7CiAgICB1cHZhciBcIzAgW25hbWVz
cGFjZSBjdXJyZW50XTo6JG9iamVjdCBwYXJzZXIKICAgIHZhcmlhYmxlIFdzcAogICAgdmFyaWFi
bGUgdG9rRXhwcgogICAgdmFyaWFibGUgc3Vic3RFeHByCgogICAgc2V0IHBhcmVudCBbbmFtZXNw
YWNlIHBhcmVudF0KICAgIGlmIHshW3N0cmluZyBjb21wYXJlIDo6ICRwYXJlbnRdfSB7CiAgICAg
ICAgc2V0IHBhcmVudCB7fQogICAgfQoKICAgIHNldCB0b2tlbmlzZWQgW2xyYW5nZSBcCiAgICAg
ICAgICAgIFske3BhcmVudH06OnNnbWw6OnRva2VuaXNlICR4bWwgXAogICAgICAgICAgICAkdG9r
RXhwciBcCiAgICAgICAgICAgICRzdWJzdEV4cHIgXAogICAgICAgICAgICAtaW50ZXJuYWxkdGR2
YXJpYWJsZSBbbmFtZXNwYWNlIGN1cnJlbnRdOjoke29iamVjdH0oaW50ZXJuYWxkdGQpXSBcCiAg
ICAgICAgNSBlbmRdCgogICAgZXZhbCAke3BhcmVudH06OnNnbWw6OnBhcnNlRXZlbnQgXAogICAg
ICAgIFtsaXN0ICR0b2tlbmlzZWQgXAogICAgICAgICAgICAtZW1wdHllbGVtZW50IFtuYW1lc3Bh
Y2UgY29kZSBQYXJzZUVtcHR5XSBcCiAgICAgICAgICAgIC1wYXJzZWF0dHJpYnV0ZWxpc3Rjb21t
YW5kIFtuYW1lc3BhY2UgY29kZSBQYXJzZUF0dHJzXV0gXAogICAgICAgIFthcnJheSBnZXQgcGFy
c2VyIC0qY29tbWFuZF0gXAogICAgICAgIFthcnJheSBnZXQgcGFyc2VyIC1lbnRpdHl2YXJpYWJs
ZV0gXAogICAgICAgIFthcnJheSBnZXQgcGFyc2VyIC1yZXBvcnRlbXB0eV0gXAogICAgICAgIC1u
b3JtYWxpemUgMCBcCiAgICAgICAgLWludGVybmFsZHRkIFtsaXN0ICRwYXJzZXIoaW50ZXJuYWxk
dGQpXQoKICAgIHJldHVybiB7fQp9CgojIHhtbDo6UGFyc2VFbXB0eSAtLQojCiMgICAgICAgVXNl
ZCBieSBwYXJzZXIgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYW4gZWxlbWVudCBpcyBlbXB0eS4KIyAg
ICAgICBUaGlzIHNob3VsZCBiZSBkZWFkIGVhc3kgaW4gWE1MLiAgVGhlIG9ubHkgY29tcGxpY2F0
aW9uIGlzCiMgICAgICAgdGhhdCB0aGUgUkUgYWJvdmUgY2FuJ3QgY2F0Y2ggdGhlIHRyYWlsaW5n
IHNsYXNoLCBzbyB3ZSBoYXZlCiMgICAgICAgdG8gZGlnIGl0IG91dCBvZiB0aGUgdGFnIG5hbWUg
b3IgYXR0cmlidXRlIGxpc3QuCiMKIyAgICAgICBUY2wgOC4xIFJFcyBzaG91bGQgZml4IHRoaXMu
CiMKIyBBcmd1bWVudHM6CiMgICAgICAgdGFnICAgICBlbGVtZW50IG5hbWUKIyAgICAgICBhdHRy
ICAgIGF0dHJpYnV0ZSBsaXN0IChyYXcpCiMgICAgICAgZSAgICAgICBFbmQgdGFnIGRlbGltaXRl
ci4KIwojIFJlc3VsdHM6CiMgICAgICAgIi8iIGlmIHRoZSB0cmFpbGluZyBzbGFzaCBpcyBmb3Vu
ZC4gIE9wdGlvbmFsbHksIHJldHVybiBhIGxpc3QKIyAgICAgICBjb250YWluaW5nIG5ldyB2YWx1
ZXMgZm9yIHRoZSB0YWcgbmFtZSBhbmQvb3IgYXR0cmlidXRlIGxpc3QuCgpwcm9jIHhtbDo6UGFy
c2VFbXB0eSB7dGFnIGF0dHIgZX0gewoKICAgIGlmIHtbc3RyaW5nIG1hdGNoICovIFtzdHJpbmcg
dHJpbXJpZ2h0ICR0YWddXSAmJiBcCiAgICAgICAgICAgICFbc3RyaW5nIGxlbmd0aCAkYXR0cl19
IHsKICAgICAgICByZWdzdWIgey8kfSAkdGFnIHt9IHRhZwogICAgICAgIHJldHVybiBbbGlzdCAv
ICR0YWcgJGF0dHJdCiAgICB9IGVsc2VpZiB7W3N0cmluZyBtYXRjaCAqLyBbc3RyaW5nIHRyaW1y
aWdodCAkYXR0cl1dfSB7CiAgICAgICAgcmVnc3ViIHsvJH0gW3N0cmluZyB0cmltcmlnaHQgJGF0
dHJdIHt9IGF0dHIKICAgICAgICByZXR1cm4gW2xpc3QgLyAkdGFnICRhdHRyXQogICAgfSBlbHNl
IHsKICAgICAgICByZXR1cm4ge30KICAgIH0KCn0KCiMgeG1sOjpQYXJzZUF0dHJzIC0tCiMKIyAg
ICAgICBQYXJzZSBlbGVtZW50IGF0dHJpYnV0ZXMuCiMKIyBUaGVyZSBhcmUgdHdvIGZvcm1zIGZv
ciBuYW1lLXZhbHVlIHBhaXJzOgojCiMgICAgICAgbmFtZT0idmFsdWUiCiMgICAgICAgbmFtZT0n
dmFsdWUnCiMKIyBXYXRjaCBvdXQgZm9yIHRoZSB0cmFpbGluZyBzbGFzaCBvbiBlbXB0eSBlbGVt
ZW50cy4KIwojIEFyZ3VtZW50czoKIyAgICAgICBhdHRycyAgIGF0dHJpYnV0ZSBzdHJpbmcgZ2l2
ZW4gaW4gYSB0YWcKIwojIFJlc3VsdHM6CiMgICAgICAgUmV0dXJucyBhIFRjbCBsaXN0IHJlcHJl
c2VudGluZyB0aGUgbmFtZS12YWx1ZSBwYWlycyBpbiB0aGUgCiMgICAgICAgYXR0cmlidXRlIHN0
cmluZwoKcHJvYyB4bWw6OlBhcnNlQXR0cnMgYXR0cnMgewogICAgdmFyaWFibGUgV3NwCiAgICB2
YXJpYWJsZSBOYW1lCgogICAgIyBGaXJzdCBjaGVjayB3aGV0aGVyIHRoZXJlJ3MgYW55IHdvcmsg
dG8gZG8KICAgIGlmIHshW3N0cmluZyBjb21wYXJlIHt9IFtzdHJpbmcgdHJpbSAkYXR0cnNdXX0g
ewogICAgICAgIHJldHVybiB7fQogICAgfQoKICAgICMgU3RyaXAgdGhlIHRyYWlsaW5nIHNsYXNo
IG9uIGVtcHR5IGVsZW1lbnRzCiAgICByZWdzdWIgW2Zvcm1hdCB7L1slc10qJH0gIiBcdFxuXHIi
XSAkYXR0cnMge30gYXRMaXN0CgogICAgc2V0IG1vZGUgbmFtZQogICAgc2V0IHJlc3VsdCB7fQog
ICAgZm9yZWFjaCBjb21wb25lbnQgW3NwbGl0ICRhdExpc3QgPV0gewogICAgICAgIHN3aXRjaCAk
bW9kZSB7CiAgICAgICAgICAgIG5hbWUgewogICAgICAgICAgICAgICAgc2V0IGNvbXBvbmVudCBb
c3RyaW5nIHRyaW0gJGNvbXBvbmVudF0KICAgICAgICAgICAgICAgIGlmIHtbcmVnZXhwICROYW1l
ICRjb21wb25lbnRdfSB7CiAgICAgICAgICAgICAgICAgICAgbGFwcGVuZCByZXN1bHQgJGNvbXBv
bmVudAogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4g
LWNvZGUgZXJyb3IgImludmFsaWQgYXR0cmlidXRlIG5hbWUgXCIkY29tcG9uZW50XCIiCiAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXQgbW9kZSB2YWx1ZTpzdGFydAogICAgICAg
ICAgICB9CiAgICAgICAgICAgIHZhbHVlOnN0YXJ0IHsKICAgICAgICAgICAgICAgIHNldCBjb21w
b25lbnQgW3N0cmluZyB0cmltbGVmdCAkY29tcG9uZW50XQogICAgICAgICAgICAgICAgc2V0IGRl
bGltaXRlciBbc3RyaW5nIGluZGV4ICRjb21wb25lbnQgMF0KICAgICAgICAgICAgICAgIHNldCB2
YWx1ZSB7fQogICAgICAgICAgICAgICAgc3dpdGNoIC0tICRkZWxpbWl0ZXIgewogICAgICAgICAg
ICAgICAgICAgIFwiIC0KICAgICAgICAgICAgICAgICAgICAnIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgaWYge1tyZWdleHAgW2Zvcm1hdCB7JXMoW14lc10qKSVzKC4qKX0gJGRlbGltaXRlciAk
ZGVsaW1pdGVyICRkZWxpbWl0ZXJdICRjb21wb25lbnQgZGlzY2FyZCB2YWx1ZSByZW1haW5kZXJd
fSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXBwZW5kIHJlc3VsdCAkdmFsdWUKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNldCByZW1haW5kZXIgW3N0cmluZyB0cmltICRyZW1h
aW5kZXJdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB7W3N0cmluZyBsZW5ndGggJHJl
bWFpbmRlcl19IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB7W3JlZ2V4cCAk
TmFtZSAkcmVtYWluZGVyXX0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBs
YXBwZW5kIHJlc3VsdCAkcmVtYWluZGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNldCBtb2RlIHZhbHVlOnN0YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC1jb2Rl
IGVycm9yICJpbnZhbGlkIGF0dHJpYnV0ZSBuYW1lIFwiJHJlbWFpbmRlclwiIgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IG1vZGUgZW5kCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZXQgdmFsdWUgW3N0cmluZyByYW5nZSAkY29tcG9u
ZW50IDEgZW5kXQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IG1vZGUgdmFsdWU6Y29u
dGludWUKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0IHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IC1jb2RlIGVycm9yICJpbnZhbGlkIHZhbHVlIGZvciBhdHRyaWJ1dGUgXCJbbGluZGV4ICRyZXN1
bHQgZW5kXVwiIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfQogICAgICAgICAgICB2YWx1ZTpjb250aW51ZSB7CiAgICAgICAgICAgICAgICBpZiB7
W3JlZ2V4cCBbZm9ybWF0IHsoW14lc10qKSVzKC4qKX0gJGRlbGltaXRlciAkZGVsaW1pdGVyXSAk
Y29tcG9uZW50IGRpc2NhcmQgdmFsdWVwYXJ0IHJlbWFpbmRlcl19IHsKICAgICAgICAgICAgICAg
ICAgICBhcHBlbmQgdmFsdWUgPSAkdmFsdWVwYXJ0CiAgICAgICAgICAgICAgICAgICAgbGFwcGVu
ZCByZXN1bHQgJHZhbHVlCiAgICAgICAgICAgICAgICAgICAgc2V0IHJlbWFpbmRlciBbc3RyaW5n
IHRyaW0gJHJlbWFpbmRlcl0KICAgICAgICAgICAgICAgICAgICBpZiB7W3N0cmluZyBsZW5ndGgg
JHJlbWFpbmRlcl19IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYge1tyZWdleHAgJE5hbWUg
JHJlbWFpbmRlcl19IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhcHBlbmQgcmVzdWx0
ICRyZW1haW5kZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCBtb2RlIHZhbHVlOnN0
YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLWNvZGUgZXJyb3IgImludmFsaWQgYXR0cmlidXRlIG5hbWUgXCIkcmVt
YWluZGVyXCIiCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBzZXQgbW9kZSBlbmQKICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGFw
cGVuZCB2YWx1ZSA9ICRjb21wb25lbnQKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQog
ICAgICAgICAgICBlbmQgewogICAgICAgICAgICAgICAgcmV0dXJuIC1jb2RlIGVycm9yICJ1bmV4
cGVjdGVkIGRhdGEgZm91bmQgYWZ0ZXIgZW5kIG9mIGF0dHJpYnV0ZSBsaXN0IgogICAgICAgICAg
ICB9CiAgICAgICAgfQogICAgfQoKICAgIHN3aXRjaCAkbW9kZSB7CiAgICAgICAgbmFtZSAtCiAg
ICAgICAgZW5kIHsKICAgICAgICAgICAgIyBUaGlzIGlzIG5vcm1hbAogICAgICAgIH0KICAgICAg
ICBkZWZhdWx0IHsKICAgICAgICAgICAgcmV0dXJuIC1jb2RlIGVycm9yICJ1bmV4cGVjdGVkIGVu
ZCBvZiBhdHRyaWJ1dGUgbGlzdCIKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRyZXN1bHQK
fQoKcHJvYyB4bWw6Ok9MRFBhcnNlQXR0cnMge2F0dHJzfSB7CiAgICB2YXJpYWJsZSBXc3AKICAg
IHZhcmlhYmxlIE5hbWUKCiAgICAjIEZpcnN0IGNoZWNrIHdoZXRoZXIgdGhlcmUncyBhbnkgd29y
ayB0byBkbwogICAgaWYgeyFbc3RyaW5nIGNvbXBhcmUge30gW3N0cmluZyB0cmltICRhdHRyc11d
fSB7CiAgICAgICAgcmV0dXJuIHt9CiAgICB9CgogICAgIyBTdHJpcCB0aGUgdHJhaWxpbmcgc2xh
c2ggb24gZW1wdHkgZWxlbWVudHMKICAgIHJlZ3N1YiBbZm9ybWF0IHsvWyVzXSokfSAiIFx0XG5c
ciJdICRhdHRycyB7fSBhdExpc3QKCiAgICAjIFByb3RlY3QgVGNsIHNwZWNpYWwgY2hhcmFjdGVy
cwogICAgI3JlZ3N1YiAtYWxsIHsoW1tcJFxcXSl9ICRhdExpc3Qge1xcXDF9IGF0TGlzdAogICAg
cmVnc3ViIC1hbGwgJiAkYXRMaXN0IHtcJmFtcDt9IGF0TGlzdAogICAgcmVnc3ViIC1hbGwge1xb
fSAkYXRMaXN0IHtcJm9iO30gYXRMaXN0CiAgICByZWdzdWIgLWFsbCB7XF19ICRhdExpc3Qge1wm
Y2I7fSBhdGxpc3QKICAgICMgTkIuIHNnbWwgcGFja2FnZSBkZWxpdmVycyBicmFjZXMgYW5kIGJh
Y2tzbGFzaGVzIHF1b3RlZAogICAgcmVnc3ViIC1hbGwge1xcXHt9ICRhdExpc3Qge1wmb2M7fSBh
dExpc3QKICAgIHJlZ3N1YiAtYWxsIHtcXFx9fSAkYXRMaXN0IHtcJmNjO30gYXRsaXN0CiAgICBy
ZWdzdWIgLWFsbCB7XCR9ICRhdExpc3Qge1wmZG9sbGFyO30gYXRMaXN0CiAgICByZWdzdWIgLWFs
bCB7XFxcXH0gJGF0TGlzdCB7XCZiczt9IGF0TGlzdAoKICAgIHJlZ3N1YiAtYWxsIFtmb3JtYXQg
eyglcylbJXNdKj1bJXNdKiIoW14iXSopIn0gJE5hbWUgJFdzcCAkV3NwXSBcCiAgICAgICAgICAg
ICRhdExpc3Qge1tzZXQgcGFyc2VkKFwxKSB7XDJ9OyBzZXQgZHVtbXkge31dIH0gYXRMaXN0ICAg
ICAgIDsjICIKICAgIHJlZ3N1YiAtYWxsIFtmb3JtYXQgeyglcylbJXNdKj1bJXNdKicoW14nXSop
J30gJE5hbWUgJFdzcCAkV3NwXSBcCiAgICAgICAgICAgICRhdExpc3Qge1tzZXQgcGFyc2VkKFwx
KSB7XDJ9OyBzZXQgZHVtbXkge31dIH0gYXRMaXN0CgogICAgc2V0IGxlZnRvdmVycyBbc3Vic3Qg
JGF0TGlzdF0KCiAgICBpZiB7W3N0cmluZyBsZW5ndGggW3N0cmluZyB0cmltICRsZWZ0b3ZlcnNd
XX0gewogICAgICAgIHJldHVybiAtY29kZSBlcnJvciAic3ludGF4IGVycm9yIGluIGF0dHJpYnV0
ZSBsaXN0IFwiJGF0dHJzXCIiCiAgICB9CgogICAgcmV0dXJuIFtQYXJzZUF0dHJzOkRlcHJvdGVj
dCBbYXJyYXkgZ2V0IHBhcnNlZF1dCn0KCiMgeG1sOjpQYXJzZUF0dHJzOkRlcHJvdGVjdCAtLQoj
CiMgICAgICAgUmV2ZXJzZSBtYXAgVGNsIHNwZWNpYWwgY2hhcmFjdGVycyBwcmV2aW91c2x5IHBy
b3RlY3RlZCAKIwojIEFyZ3VtZW50czoKIyAgICAgICBhdHRycyAgIGF0dHJpYnV0ZSBsaXN0CiMK
IyBSZXN1bHRzOgojICAgICAgIENoYXJhY3RlcnMgc3Vic3RpdHV0ZWQKCnByb2MgeG1sOjpQYXJz
ZUF0dHJzOkRlcHJvdGVjdCBhdHRycyB7CgogICAgcmVnc3ViIC1hbGwgJmFtcFw7ICRhdHRycyBc
XCYgYXR0cnMKICAgIHJlZ3N1YiAtYWxsICZvYlw7ICRhdHRycyBcWyBhdHRycwogICAgcmVnc3Vi
IC1hbGwgJmNiXDsgJGF0dHJzIFxdIGF0dHJzCiAgICByZWdzdWIgLWFsbCAmb2NcOyAkYXR0cnMg
XHsgYXR0cnMKICAgIHJlZ3N1YiAtYWxsICZjY1w7ICRhdHRycyBcfSBhdHRycwogICAgcmVnc3Vi
IC1hbGwgJmRvbGxhclw7ICRhdHRycyBcJCBhdHRycwogICAgcmVnc3ViIC1hbGwgJmJzXDsgJGF0
dHJzIFxcXFwgYXR0cnMKCiAgICByZXR1cm4gJGF0dHJzCgp9CgojIHhtbDo6UGFyc2VDb21tYW5k
X3Jlc2V0IC0tCiMKIyAgICAgICBJbml0aWFsaXplIHBhcnNlciBkYXRhCiMKIyBBcmd1bWVudHM6
CiMgICAgICAgb2JqZWN0ICBwYXJzZXIgb2JqZWN0CiMKIyBSZXN1bHRzOgojICAgICAgIFBhcnNl
ciBkYXRhIHN0cnVjdHVyZSBpbml0aWFsaXNlZAoKcHJvYyB4bWw6OlBhcnNlQ29tbWFuZF9yZXNl
dCBvYmplY3QgewogICAgdXB2YXIgXCMwIFtuYW1lc3BhY2UgY3VycmVudF06OiRvYmplY3QgcGFy
c2VyCgogICAgYXJyYXkgc2V0IHBhcnNlciBbbGlzdCBcCiAgICAgICAgICAgIC1maW5hbCAxICAg
ICAgICAgICAgXAogICAgICAgICAgICBpbnRlcm5hbGR0ZCB7fSAgICAgIFwKICAgIF0KfQoKIyB4
bWw6Om5vb3AgLS0KIwojIEEgZG8tbm90aGluZyBwcm9jCgpwcm9jIHhtbDo6bm9vcCBhcmdzIHt9
CgojIyMgRm9sbG93aW5nIHByb2NlZHVyZXMgYXJlIGJhc2VkIG9uIGh0bWxfbGlicmFyeQoKIyB4
bWw6OnphcFdoaXRlIC0tCiMKIyAgICAgICBDb252ZXJ0IG11bHRpcGxlIHdoaXRlIHNwYWNlIGlu
dG8gYSBzaW5nbGUgc3BhY2UuCiMKIyBBcmd1bWVudHM6CiMgICAgICAgZGF0YSAgICBwbGFpbiB0
ZXh0CiMKIyBSZXN1bHRzOgojICAgICAgIEFzIGFib3ZlCgpwcm9jIHhtbDo6emFwV2hpdGUgZGF0
YSB7CiAgICByZWdzdWIgLWFsbCAiXFsgXHRcclxuXF0rIiAkZGF0YSB7IH0gZGF0YQogICAgcmV0
dXJuICRkYXRhCn0KCiMKIyBEVEQgcGFyc2VyIGZvciBYTUwgaXMgd2hvbGx5IGNvbnRhaW5lZCB3
aXRoaW4gdGhlIHNnbWwudGNsIHBhY2thZ2UKIwoKIyB4bWw6OnBhcnNlRFREIC0tCiMKIyAgICAg
ICBFbnRyeSBwb2ludCB0byB0aGUgWE1MIERURCBwYXJzZXIuCiMKIyBBcmd1bWVudHM6CiMgICAg
ICAgZHRkICAgICBYTUwgZGF0YSBkZWZpbmluZyB0aGUgRFREIHRvIGJlIHBhcnNlZAojICAgICAg
IGFyZ3MgICAgY29uZmlndXJhdGlvbiBvcHRpb25zCiMKIyBSZXN1bHRzOgojICAgICAgIFJldHVy
bnMgYSB0aHJlZSBlbGVtZW50IGxpc3QsIGZpcnN0IGVsZW1lbnQgaXMgdGhlIGNvbnRlbnQgbW9k
ZWwKIyAgICAgICBmb3IgZWFjaCBlbGVtZW50LCBzZWNvbmQgZWxlbWVudCBhcmUgdGhlIGF0dHJp
YnV0ZSBsaXN0cyBvZiB0aGUKIyAgICAgICBlbGVtZW50cyBhbmQgdGhlIHRoaXJkIGVsZW1lbnQg
aXMgdGhlIGVudGl0eSBtYXAuCgpwcm9jIHhtbDo6cGFyc2VEVEQge2R0ZCBhcmdzfSB7CiAgICBy
ZXR1cm4gW2V2YWwgW2V4cHIge1tuYW1lc3BhY2UgcGFyZW50XSA9PSB7Ojp9ID8ge30gOiBbbmFt
ZXNwYWNlIHBhcmVudF19XTo6c2dtbDo6cGFyc2VEVEQgW2xpc3QgJGR0ZF0gJGFyZ3NdCn0KCgoj
CiMgaGVyZSBlbmRzIFRjbFhNTCAxLjEuMQojCgoKIwojIHRvcC1sZXZlbCBwYXJzaW5nCiMKCgpn
bG9iYWwgcGFyc2VyCmlmIHshW2luZm8gZXhpc3RzIHBhcnNlcl19IHsKICAgIHNldCBwYXJzZXIg
IiIKfQoKcHJvYyB4bWwycmZjIHtpbnB1dCB7b3V0cHV0ICIifSB7cmVtb3RlICIifX0gewogICAg
Z2xvYmFsIGVycm9yQ29kZSBlcnJvckluZm8KICAgIGdsb2JhbCBwYXJzZXIKICAgIGdsb2JhbCBw
YXNzbm8KICAgIGdsb2JhbCBwYXNzbWF4CiAgICBnbG9iYWwgZXJyb3JQCiAgICBnbG9iYWwgaWZp
bGUgbW9kZSBvZmlsZQogICAgZ2xvYmFsIHN0ZG91dAogICAgZ2xvYmFsIHJlbW90ZVAKCiAgICBp
ZiB7IVtzdHJpbmcgY29tcGFyZSBbZmlsZSBleHRlbnNpb24gJGlucHV0XSAiIl19IHsKICAgICAg
ICBhcHBlbmQgaW5wdXQgLnhtbAogICAgfQoKICAgIHNldCBzdGRpbiBbb3BlbiAkaW5wdXQgeyBS
RE9OTFkgfV0KICAgIHNldCBpbnB1dEQgW2ZpbGUgZGlybmFtZSBbc2V0IGlmaWxlICRpbnB1dF1d
CgogICAgaWYgeyFbc3RyaW5nIGNvbXBhcmUgJG91dHB1dCAiIl19IHsKICAgICAgICBzZXQgb3V0
cHV0IFtmaWxlIHJvb3RuYW1lICRpbnB1dF0udHh0CiAgICB9CiAgICBpZiB7W3N0cmluZyBjb21w
YXJlICRyZW1vdGUgIiJdfSB7CiAgICAgICAgc2V0IG9maWxlICRyZW1vdGUKICAgICAgICBzZXQg
cmVtb3RlUCAxCiAgICB9IGVsc2UgewogICAgICAgIHNldCBvZmlsZSAkb3V0cHV0CiAgICAgICAg
c2V0IHJlbW90ZVAgMAogICAgfQogICAgc2V0IG9maWxlIFtmaWxlIHJvb3RuYW1lIFtmaWxlIHRh
aWwgJG9maWxlXV0KCiAgICBpZiB7IVtzdHJpbmcgY29tcGFyZSAkaW5wdXQgJG91dHB1dF19IHsK
ICAgICAgICBlcnJvciAiaW5wdXQgYW5kIG91dHB1dCBmaWxlcyBtdXN0IGJlIGRpZmZlcmVudCIK
ICAgIH0KCiAgICBpZiB7W2ZpbGUgZXhpc3RzIFtzZXQgZmlsZSBbZmlsZSBqb2luICRpbnB1dEQg
LnhtbDJyZmMucmNdXV19IHsKICAgICAgICBzb3VyY2UgJGZpbGUKICAgIH0KCiAgICBzd2l0Y2gg
LS0gW3NldCBtb2RlIFtzdHJpbmcgcmFuZ2UgW2ZpbGUgZXh0ZW5zaW9uICRvdXRwdXRdIDEgZW5k
XV0gewogICAgICAgIGh0bWwgLQogICAgICAgIG5yICAgLQogICAgICAgIHR4dCAge30KCiAgICAg
ICAgeG1sIHsKICAgICAgICAgICAgc2V0IHN0ZG91dCBbb3BlbiAkb3V0cHV0IHsgV1JPTkxZIENS
RUFUIFRSVU5DIH1dCgogICAgICAgICAgICBwdXRzIC1ub25ld2xpbmUgJHN0ZG91dCBbcHJleG1s
IFtyZWFkICRzdGRpbl0gJGlucHV0RF0KCiAgICAgICAgICAgIGNhdGNoIHsgY2xvc2UgJHN0ZG91
dCB9CiAgICAgICAgICAgIGNhdGNoIHsgY2xvc2UgJHN0ZGluIH0KCiAgICAgICAgICAgIHJldHVy
bgogICAgICAgIH0KCiAgICAgICAgZGVmYXVsdCB7CiAgICAgICAgICAgIGNhdGNoIHsgY2xvc2Ug
JHN0ZGluIH0KICAgICAgICAgICAgZXJyb3IgInVuc3VwcG9ydGVkIG91dHB1dCB0eXBlOiAkbW9k
ZSIKICAgICAgICB9CiAgICB9CgogICAgc2V0IGNvZGUgW2NhdGNoIHsKICAgICAgICBpZiB7IVtz
dHJpbmcgY29tcGFyZSAkcGFyc2VyICIiXX0gewogICAgICAgICAgICBnbG9iYWwgZW1wdHlBCgog
ICAgICAgICAgICBzZXQgcGFyc2VyIFt4bWw6OnBhcnNlcl0KICAgICAgICAgICAgYXJyYXkgc2V0
IGVtcHR5QSB7fQoKICAgICAgICAgICAgJHBhcnNlciBjb25maWd1cmUgXAogICAgICAgICAgICAg
ICAgICAgICAgICAtZWxlbWVudHN0YXJ0Y29tbWFuZCAgICAgICAgICB7IGJlZ2luICAgICAgICAg
ICAgICAgfSBcCiAgICAgICAgICAgICAgICAgICAgICAgIC1lbGVtZW50ZW5kY29tbWFuZCAgICAg
ICAgICAgIHsgZW5kICAgICAgICAgICAgICAgICB9IFwKICAgICAgICAgICAgICAgICAgICAgICAg
LWNoYXJhY3RlcmRhdGFjb21tYW5kICAgICAgICAgeyBwY2RhdGEgICAgICAgICAgICAgIH0gXAog
ICAgICAgICAgICAgICAgICAgICAgICAtcHJvY2Vzc2luZ2luc3RydWN0aW9uY29tbWFuZCB7IHBp
ICAgICAgICAgICAgICAgICAgfSBcCiAgICAgICAgICAgICAgICAgICAgICAgIC14bWxkZWNsY29t
bWFuZCAgICAgICAgICAgICAgIHsgeG1sZGVjbCAgICAgICAgICAgICB9IFwKICAgICAgICAgICAg
ICAgICAgICAgICAgLWRvY3R5cGVjb21tYW5kICAgICAgICAgICAgICAgeyBkb2N0eXBlICAgICAg
ICAgICAgIH0gXAogICAgICAgICAgICAgICAgICAgICAgICAtZW50aXR5cmVmZXJlbmNlY29tbWFu
ZCAgICAgICAiIiAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgICAgICAg
IC1lcnJvcmNvbW1hbmQgICAgICAgICAgICAgICAgIHsgdW5leHBlY3RlZCBlcnJvciAgICB9IFwK
ICAgICAgICAgICAgICAgICAgICAgICAgLXdhcm5pbmdjb21tYW5kICAgICAgICAgICAgICAgeyB1
bmV4cGVjdGVkIHdhcm5pbmcgIH0gXAogICAgICAgICAgICAgICAgICAgICAgICAtZW50aXR5dmFy
aWFibGUgICAgICAgICAgICAgICBlbXB0eUEgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAg
ICAgICAgICAgICAgIC1maW5hbCAgICAgICAgICAgICAgICAgICAgICAgIHllcyAgICAgICAgICAg
ICAgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgLXJlcG9ydGVtcHR5ICAgICAgICAg
ICAgICAgICAgbm8KICAgICAgICB9CgogICAgICAgIHNldCBkYXRhIFtwcmV4bWwgW3JlYWQgJHN0
ZGluXSAkaW5wdXREICRpbnB1dF0KCiAgICAgICAgY2F0Y2ggeyBjbG9zZSAkc3RkaW4gfQoKICAg
ICAgICBzZXQgZXJyb3JQIDAKICAgICAgICBzZXQgcGFzc21heCAyCiAgICAgICAgc2V0IHN0ZG91
dCAiIgogICAgICAgIGZvciB7c2V0IHBhc3NubyAxfSB7JHBhc3NubyA8PSAkcGFzc21heH0ge2lu
Y3IgcGFzc25vfSB7CiAgICAgICAgICAgIGlmIHskcGFzc25vID09IDJ9IHsKICAgICAgICAgICAg
ICAgIHNldCBzdGRvdXQgW29wZW4gJG91dHB1dCB7IFdST05MWSBDUkVBVCBUUlVOQyB9XQogICAg
ICAgICAgICB9CiAgICAgICAgICAgIHBhc3Mgc3RhcnQKICAgICAgICAgICAgJHBhcnNlciBwYXJz
ZSAkZGF0YQogICAgICAgICAgICBwYXNzIGVuZAogICAgICAgICAgICBpZiB7JGVycm9yUH0gewog
ICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0gcmVzdWx0
XQogICAgc2V0IGVjb2RlICRlcnJvckNvZGUKICAgIHNldCBlaW5mbyAkZXJyb3JJbmZvCgogICAg
Y2F0Y2ggeyBjbG9zZSAkc3Rkb3V0IH0KCiAgICBpZiB7JGNvZGUgPT0gMX0gewogICAgICAgIHNl
dCByZXN1bHQgW2Fyb3VuZDJmbCAkcmVzdWx0XQoKICAgICAgICBjYXRjaCB7CiAgICAgICAgICAg
IGdsb2JhbCBzdGFjawoKICAgICAgICAgICAgaWYge1tsbGVuZ3RoICRzdGFja10gPiAwfSB7CiAg
ICAgICAgICAgICAgICBzZXQgdGV4dCAiQ29udGV4dDogIgogICAgICAgICAgICAgICAgZm9yZWFj
aCBmcmFtZSAkc3RhY2sgewogICAgICAgICAgICAgICAgICAgIGNhdGNoIHsgdW5zZXQgYXR0cnMg
fQogICAgICAgICAgICAgICAgICAgIGFycmF5IHNldCBhdHRycyBbbGlzdCBhdiAiIl0KICAgICAg
ICAgICAgICAgICAgICBhcnJheSBzZXQgYXR0cnMgW2xyYW5nZSAkZnJhbWUgMSBlbmRdIAogICAg
ICAgICAgICAgICAgICAgIGFwcGVuZCB0ZXh0ICJcbiAgICA8W2xpbmRleCAkZnJhbWUgMF0iCiAg
ICAgICAgICAgICAgICAgICAgZm9yZWFjaCB7ayB2fSAkYXR0cnMoYXYpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgcmVnc3ViIC1hbGwgeyJ9ICR2IHsmcXVvdDt9IHYKICAgICAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kIHRleHQgIiAkaz1cIiR2XCIiCiAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgIGFwcGVuZCB0ZXh0ICI+IgogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgYXBwZW5kIHJlc3VsdCAiXG5cbiR0ZXh0IgogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgfQoKICAgIHJldHVybiAtY29kZSAkY29kZSAtZXJyb3JpbmZvICRlaW5mbyAtZXJy
b3Jjb2RlICRlY29kZSAkcmVzdWx0Cn0KCnByb2MgeG1sMnR4dCB7aW5wdXR9IHsKICAgIHhtbDJy
ZmMgJGlucHV0IFtmaWxlIHJvb3RuYW1lICRpbnB1dF0udHh0Cn0KCnByb2MgeG1sMmh0bWwge2lu
cHV0fSB7CiAgICB4bWwycmZjICRpbnB1dCBbZmlsZSByb290bmFtZSAkaW5wdXRdLmh0bWwKfQoK
cHJvYyB4bWwybnJvZmYge2lucHV0fSB7CiAgICByZXR1cm4gW3htbDJyZmMgJGlucHV0IFtmaWxl
IHJvb3RuYW1lICRpbnB1dF0ubnJdCiMjIwogICAgcHV0cyBzdGRlcnIgIm1ha2luZyB4bWwtPnR4
dCIKICAgIHhtbDJyZmMgJGlucHV0IFtmaWxlIHJvb3RuYW1lICRpbnB1dF0udHh0CiAgICBmaWxl
IHJlbmFtZSAtZm9yY2UgW2ZpbGUgcm9vdG5hbWUgJGlucHV0XS50eHQgIFtmaWxlIHJvb3RuYW1l
ICRpbnB1dF0ub3JpZwoKICAgIHB1dHMgc3RkZXJyICJtYWtpbmcgeG1sLT5yZiIKICAgIHhtbDJy
ZmMgJGlucHV0IFtmaWxlIHJvb3RuYW1lICRpbnB1dF0ubnIKCiAgICBwdXRzIHN0ZGVyciAibWFr
aW5nIHJmLT50eHQiCiAgICBleGVjIG5yb2ZmIC1tcyA8IFtmaWxlIHJvb3RuYW1lICRpbnB1dF0u
bnIgXAogICAgICAgfCAvdXNyL3VzZXJzL21yb3NlL2RvY3MvZml4LnBsIFwKICAgICAgIHwgc2Vk
IC1lIDEsM2QgXAogICAgICAgPiBbZmlsZSByb290bmFtZSAkaW5wdXRdLnR4dAp9Cgpwcm9jIHht
bDJyZWYge2lucHV0IG91dHB1dCB7Zm9ybWF0cyB7fX19IHsKICAgIGdsb2JhbCBlcnJvckNvZGUg
ZXJyb3JJbmZvCgogICAgaWYgeyFbc3RyaW5nIGNvbXBhcmUgJGlucHV0ICRvdXRwdXRdfSB7CiAg
ICAgICAgZXJyb3IgImlucHV0IGFuZCBvdXRwdXQgZmlsZXMgbXVzdCBiZSBkaWZmZXJlbnQiCiAg
ICB9CgogICAgaWYge1tmaWxlIGV4aXN0cyBbc2V0IGZpbGUgW2ZpbGUgam9pbiBbc2V0IGlucHV0
RCBbZmlsZSBkaXJuYW1lICRpbnB1dF1dIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLnhtbDJyZmMucmNdXV19IHsKICAgICAgICBzb3VyY2UgJGZpbGUKICAgIH0K
CiAgICBzZXQgcmVmVCBbcmVmOjppbml0XQogICAgaWYge1tzZXQgY29kZSBbY2F0Y2ggeyByZWY6
OnRyYW5zZm9ybSAkcmVmVCAkaW5wdXQgJGZvcm1hdHMgfSByZXN1bHRdXX0gewogICAgICAgIHNl
dCBlY29kZSAkZXJyb3JDb2RlCiAgICAgICAgc2V0IGVpbmZvICRlcnJvckluZm8KCiAgICAgICAg
Y2F0Y2ggeyByZWY6OmZpbiAkcmVmVCB9CgogICAgICAgIHJldHVybiAtY29kZSAkY29kZSAtZXJy
b3JpbmZvICRlaW5mbyAtZXJyb3Jjb2RlICRlY29kZSAkcmVzdWx0CiAgICB9CiAgICByZWY6OmZp
biAkcmVmVAoKICAgIHNldCBzdGRvdXQgW29wZW4gJG91dHB1dCB7IFdST05MWSBDUkVBVCBUUlVO
QyB9XQoKICAgIHNldCBjb2RlIFtjYXRjaCB7CiAgICAgICAgcHV0cyAtbm9uZXdsaW5lICRzdGRv
dXQgJHJlc3VsdAogICAgICAgIGZsdXNoICRzdGRvdXQKICAgIH0gcmVzdWx0XQogICAgc2V0IGVj
b2RlICRlcnJvckNvZGUKICAgIHNldCBlaW5mbyAkZXJyb3JJbmZvCgogICAgY2F0Y2ggeyBjbG9z
ZSAkc3Rkb3V0IH0KCiAgICByZXR1cm4gLWNvZGUgJGNvZGUgLWVycm9yaW5mbyAkZWluZm8gLWVy
cm9yY29kZSAkZWNvZGUgJHJlc3VsdAp9Cgpwcm9jIHByZXhtbCB7c3RyZWFtIGlucHV0RCB7aW5w
dXRGICIifX0gewogICAgZ2xvYmFsIGVudiB0Y2xfcGxhdGZvcm0KICAgIGdsb2JhbCBleHRlbnRp
dGllcwogICAgZ2xvYmFsIGZsZGF0YQoKICAgIGlmIHtbY2F0Y2ggeyBzZXQgcGF0aCAkZW52KFhN
TF9MSUJSQVJZKSB9XX0gewogICAgICAgIHNldCBwYXRoIFtsaXN0ICRpbnB1dERdCiAgICB9CiAg
ICBzd2l0Y2ggLS0gJHRjbF9wbGF0Zm9ybShwbGF0Zm9ybSkgewogICAgICAgIHdpbmRvd3Mgewog
ICAgICAgICAgICBzZXQgYyAiOyIKICAgICAgICB9CgogICAgICAgIGRlZmF1bHQgewogICAgICAg
ICAgICBzZXQgYyAiOiIKICAgICAgICB9CiAgICB9CiAgICBzZXQgcGF0aCBbc3BsaXQgJHBhdGgg
JGNdCgogICAgc2V0IGZsZGF0YSBbbGlzdCBbbGlzdCAkaW5wdXRGICAxIFtudW1saW5lcyAkc3Ry
ZWFtXV1dCgogICAgYXJyYXkgc2V0IGV4dGVudGl0aWVzIHt9CgogICAgaWYge1tjYXRjaCB7IHBh
Y2thZ2UgcmVxdWlyZSBodHRwIDIgfV19IHsKICAgICAgICBzZXQgaHR0cFAgMAogICAgfSBlbHNl
IHsKICAgICAgICBzZXQgaHR0cFAgMQogICAgfQoKICAgIHJldHVybiBbcHJleG1sX2VudGl0eSBb
cHJleG1sX2luY2x1ZGUgW3ByZXhtbF9jZGF0YSAkc3RyZWFtXSBcCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICRpbnB1dEQgJGlucHV0RiAkcGF0aF0gXAogICAgICAg
ICAgICAgICAgICAgICAgICAgICRwYXRoICRodHRwUF0KfQoKcHJvYyBwcmV4bWxfY2RhdGEge3N0
cmVhbX0gewogICAgc2V0IGxpdE4gW3N0cmluZyBsZW5ndGggW3NldCBsaXRTICI8IVxbQ0RBVEFc
WyJdXQogICAgc2V0IGxpdE8gW3N0cmluZyBsZW5ndGggW3NldCBsaXRUICJcXVxdPiJdXQoKICAg
IHNldCBkYXRhICIiCiAgICB3aGlsZSB7W3NldCB4IFtzdHJpbmcgZmlyc3QgJGxpdFMgJHN0cmVh
bV1dID49IDB9IHsKICAgICAgICBhcHBlbmQgZGF0YSBbc3RyaW5nIHJhbmdlICRzdHJlYW0gMCBb
ZXhwciAkeC0xXV0KICAgICAgICBzZXQgc3RyZWFtIFtzdHJpbmcgcmFuZ2UgJHN0cmVhbSBbZXhw
ciAkeCskbGl0Tl0gZW5kXQogICAgICAgIGlmIHtbc2V0IHggW3N0cmluZyBmaXJzdCAkbGl0VCAk
c3RyZWFtXV0gPCAwfSB7CiAgICAgICAgICAgIGVycm9yICJtaXNzaW5nIGNsb3NlIHRvIENEQVRB
IgogICAgICAgIH0KICAgICAgICBzZXQgeSBbc3RyaW5nIHJhbmdlICRzdHJlYW0gMCBbZXhwciAk
eC0xXV0KICAgICAgICByZWdzdWIgLWFsbCB7Jn0gJHkge1wmYW1wO30geQogICAgICAgIHJlZ3N1
YiAtYWxsIHs8fSAkeSB7XCZsdDt9ICB5CiAgICAgICAgYXBwZW5kIGRhdGEgJHkKICAgICAgICBz
ZXQgc3RyZWFtIFtzdHJpbmcgcmFuZ2UgJHN0cmVhbSBbZXhwciAkeCskbGl0T10gZW5kXQogICAg
fQogICAgYXBwZW5kIGRhdGEgJHN0cmVhbQoKICAgIHJldHVybiAkZGF0YQp9Cgpwcm9jIHByZXht
bF9pbmNsdWRlIHtzdHJlYW0gaW5wdXREIGlucHV0RiBwYXRofSB7CiAgICBnbG9iYWwgZmxkYXRh
CgogICAgc2V0IGxpdE4gW3N0cmluZyBsZW5ndGggW3NldCBsaXRTICI8P3JmYyBpbmNsdWRlPSJd
XQogICAgc2V0IGxpdE8gW3N0cmluZyBsZW5ndGggW3NldCBsaXRUICI/PiJdXQoKICAgIHNldCBk
YXRhICIiCiAgICBzZXQgbGluZW5vIDEKICAgIHdoaWxlIHtbc2V0IHggW3N0cmluZyBmaXJzdCAk
bGl0UyAkc3RyZWFtXV0gPj0gMH0gewogICAgICAgIGluY3IgbGluZW5vIFtudW1saW5lcyBbc2V0
IGluaXRpYWwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzdHJpbmcgcmFu
Z2UgJHN0cmVhbSAwIFtleHByICR4LTFdXV1dCiAgICAgICAgYXBwZW5kIGRhdGEgJGluaXRpYWwK
ICAgICAgICBzZXQgc3RyZWFtIFtzdHJpbmcgcmFuZ2UgJHN0cmVhbSBbZXhwciAkeCskbGl0Tl0g
ZW5kXQogICAgICAgIGlmIHtbc2V0IHggW3N0cmluZyBmaXJzdCAkbGl0VCAkc3RyZWFtXV0gPCAw
fSB7CiAgICAgICAgICAgIGVycm9yICJtaXNzaW5nIGNsb3NlIHRvIDw/cmZjIGluY2x1ZGU9Igog
ICAgICAgIH0KICAgICAgICBzZXQgeSBbc3RyaW5nIHRyaW0gW3N0cmluZyByYW5nZSAkc3RyZWFt
IDAgW2V4cHIgJHgtMV1dXQogICAgICAgIGlmIHtbc2V0IHF1b3RlUCBbc3RyaW5nIGZpcnN0ICIn
IiAkeV1dfSB7CiAgICAgICAgICAgIHJlZ3N1YiAtLSB7XiIoW14iXSopIiR9ICR5IHtcMX0geQog
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHJlZ3N1YiAtLSB7XicoW14nXSopJyR9ICR5IHtc
MX0geQogICAgICAgIH0KICAgICAgICBpZiB7IVtyZWdleHAgLW5vY2FzZSAtLSB7XlthLXowLTku
QC1dKyR9ICR5XX0gewogICAgICAgICAgICBlcnJvciAiaW52YWxpZCBpbmNsdWRlICR5IgogICAg
ICAgIH0KICAgICAgICBzZXQgZm91bmRQIDAKICAgICAgICBmb3JlYWNoIGRpciAkcGF0aCB7CiAg
ICAgICAgICAgIGlmIHsoIVtmaWxlIGV4aXN0cyBbc2V0IGZpbGUgW2ZpbGUgam9pbiAkZGlyICR5
XV1dKSBcCiAgICAgICAgICAgICAgICAgICAgJiYgKCFbZmlsZSBleGlzdHMgW3NldCBmaWxlIFtm
aWxlIGpvaW4gJGRpciAkeS54bWxdXV0pfSB7CiAgICAgICAgICAgICAgICBjb250aW51ZQogICAg
ICAgICAgICB9CiAgICAgICAgICAgIHNldCBmZCBbb3BlbiAkZmlsZSB7IFJET05MWSB9XQogICAg
ICAgICAgICBzZXQgaW5jbHVkZSBbcHJleG1sX2NkYXRhIFtyZWFkICRmZF1dCiAgICAgICAgICAg
IGNhdGNoIHsgY2xvc2UgJGZkIH0KICAgICAgICAgICAgc2V0IGZvdW5kUCAxCiAgICAgICAgICAg
IGJyZWFrCiAgICAgICAgfQogICAgICAgIGlmIHshJGZvdW5kUH0gewogICAgICAgICAgICBlcnJv
ciAidW5hYmxlIHRvIGZpbmQgZXh0ZXJuYWwgZmlsZSAkeS54bWwiCiAgICAgICAgfQoKICAgICAg
ICBzZXQgYm9keSBbc3RyaW5nIHRyaW1sZWZ0ICRpbmNsdWRlXQogICAgICAgIGlmIHsoW3N0cmlu
ZyBmaXJzdCAiPD9YTUwgIiBbc3RyaW5nIHRvdXBwZXIgJGJvZHldXSA9PSAwKSAKICAgICAgICAg
ICAgICAgICYmIChbc2V0IGxlbiBbc3RyaW5nIGZpcnN0ICI/PiIgJGJvZHldXSA+PSAwKX0gewog
ICAgICAgICAgICBzZXQgc3RhcnQgW2V4cHIgW3N0cmluZyBsZW5ndGggJGluY2x1ZGVdLVtzdHJp
bmcgbGVuZ3RoICRib2R5XV0KICAgICAgICAgICAgaW5jciBsZW4KICAgICAgICAgICAgc2V0IGlu
Y2x1ZGUgW3N0cmluZyByZXBsYWNlICRpbmNsdWRlICRzdGFydCBbZXhwciAkc3RhcnQrJGxlbl0g
XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtYXQgIiAlKi4qcyIgJGxlbiAk
bGVuICIiXV0KCiAgICAgICAgICAgIHNldCBib2R5IFtzdHJpbmcgdHJpbWxlZnQgJGluY2x1ZGVd
CiAgICAgICAgfQogICAgICAgIGlmIHsoW3N0cmluZyBmaXJzdCAiPCFET0NUWVBFICIgW3N0cmlu
ZyB0b3VwcGVyICRib2R5XV0gPT0gMCkgCiAgICAgICAgICAgICAgICAmJiAoW3NldCBsZW4gW3N0
cmluZyBmaXJzdCAiPiIgJGJvZHldXSA+PSAwKX0gewogICAgICAgICAgICBzZXQgc3RhcnQgW2V4
cHIgW3N0cmluZyBsZW5ndGggJGluY2x1ZGVdLVtzdHJpbmcgbGVuZ3RoICRib2R5XV0KICAgICAg
ICAgICAgc2V0IGluY2x1ZGUgW3N0cmluZyByZXBsYWNlICRpbmNsdWRlICRzdGFydCBbZXhwciAk
c3RhcnQrJGxlbl0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtYXQgIiAl
Ki4qcyIgJGxlbiAkbGVuICIiXV0KICAgICAgICB9CgogICAgICAgIHNldCBsZW4gW251bWxpbmVz
ICRpbmNsdWRlXQogICAgICAgIHNldCBmbG5ldyB7fQogICAgICAgIGZvcmVhY2ggZmxkYXR1bSAk
ZmxkYXRhIHsKICAgICAgICAgICAgc2V0IGVuZCBbbGluZGV4ICRmbGRhdHVtIDJdCiAgICAgICAg
ICAgIGlmIHskZW5kID49ICRsaW5lbm99IHsKICAgICAgICAgICAgICAgIHNldCBmbGRhdHVtIFts
cmVwbGFjZSAkZmxkYXR1bSAyIDIgW2V4cHIgJGVuZCskbGVuXV0KICAgICAgICAgICAgfQogICAg
ICAgICAgICBsYXBwZW5kIGZsbmV3ICRmbGRhdHVtCiAgICAgICAgfQogICAgICAgIHNldCBmbGRh
dGEgJGZsbmV3CiAgICAgICAgbGFwcGVuZCBmbGRhdGEgW2xpc3QgJGZpbGUgJGxpbmVubyAkbGVu
XQoKICAgICAgICBzZXQgc3RyZWFtICRpbmNsdWRlW3N0cmluZyByYW5nZSAkc3RyZWFtIFtleHBy
ICR4KyRsaXRPXSBlbmRdCiAgICB9CiAgICBhcHBlbmQgZGF0YSAkc3RyZWFtCgogICAgcmV0dXJu
ICRkYXRhCn0KCnByb2MgcHJleG1sX2VudGl0eSB7c3RyZWFtIHBhdGggaHR0cFB9IHsKICAgIGds
b2JhbCBleHRlbnRpdGllcwogICAgZ2xvYmFsIGZsZGF0YQoKICAgIHNldCBsaXROIFtzdHJpbmcg
bGVuZ3RoIFtzZXQgbGl0UyAiPCFFTlRJVFkgJSAiXV0KICAgIHNldCBsaXRPIFtzdHJpbmcgbGVu
Z3RoIFtzZXQgbGl0VCAiPiJdXQoKICAgIHNldCBkYXRhICIiCiAgICB3aGlsZSB7W3NldCB4IFtz
dHJpbmcgZmlyc3QgJGxpdFMgJHN0cmVhbV1dID49IDB9IHsKICAgICAgICBhcHBlbmQgZGF0YSBb
c3RyaW5nIHJhbmdlICRzdHJlYW0gMCBbZXhwciAkeC0xXV0KICAgICAgICBzZXQgc3RyZWFtIFtz
dHJpbmcgcmFuZ2UgJHN0cmVhbSBbZXhwciAkeCskbGl0Tl0gZW5kXQogICAgICAgIGlmIHtbc2V0
IHggW3N0cmluZyBmaXJzdCAkbGl0VCAkc3RyZWFtXV0gPCAwfSB7CiAgICAgICAgICAgIGVycm9y
ICJtaXNzaW5nIGNsb3NlIHRvIDwhRU5USVRZIgogICAgICAgIH0KICAgICAgICByZWdleHAgXltz
Z21sOjpjbCAkc2dtbDo6V3NwXSooJHNnbWw6Om5hbWUpKC4qKSBcCiAgICAgICAgICAgICAgIFtz
dHJpbmcgcmFuZ2UgJHN0cmVhbSAwIFtleHByICR4LTFdXSB6IGVudGl0eSB5CiAgICAgICAgc2V0
IHN0cmVhbSBbc3RyaW5nIHJhbmdlICRzdHJlYW0gW2V4cHIgJHgrJGxpdE9dIGVuZF0KICAgICAg
ICBpZiB7IVtyZWdleHAgLW5vY2FzZSBeW3NnbWw6OmNsICRzZ21sOjpXc3BdKihTWVNURU18UFVC
TElDKSguKikgXAogICAgICAgICAgICAgICAgICAgICR5IHogbW9kZSB5XX0gewogICAgICAgICAg
ICBlcnJvciAiZXhwZWN0aW5nIDwhRU5USVRZICRlbnRpdHkgU1lTVEVNIG9yIFBVQkxJQyIKICAg
ICAgICB9CiAgICAgICAgaWYgeyghW3JlZ2V4cCBeW3NnbWw6OmNsICRzZ21sOjpXc3BdKyIoW3Nn
bWw6OmNsIF4iXSopIiguKikgXAogICAgICAgICAgICAgICAgICAgICAgJHkgeiBhcmcxIHldKSBc
CiAgICAgICAgICAgICAgICAmJiAoIVtyZWdleHAgXltzZ21sOjpjbCAkc2dtbDo6V3NwXSsnKFtz
Z21sOjpjbCBeJ10qKScoLiopIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkeSB6IGFy
ZzEgeV0pfSB7CiAgICAgICAgICAgIGVycm9yICJleHBlY3RpbmcgbGl0ZXJhbCBhZnRlciA8IUVO
VElUWSAkZW50aXR5ICRtb2RlIgogICAgICAgIH0KICAgICAgICBzd2l0Y2ggLS0gW3N0cmluZyB0
b3VwcGVyICRtb2RlXSB7CiAgICAgICAgICAgIFNZU1RFTSB7CiAgICAgICAgICAgICAgICBzZXQg
Zm91bmRQIDAKICAgICAgICAgICAgICAgIGZvcmVhY2ggZGlyICRwYXRoIHsKICAgICAgICAgICAg
ICAgICAgICBpZiB7KCFbZmlsZSBleGlzdHMgW3NldCBmaWxlIFtmaWxlIGpvaW4gJGRpciAkYXJn
MV1dXSkgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgKCFbZmlsZSBleGlzdHMgW3Nl
dCBmaWxlIFtmaWxlIGpvaW4gJGRpciBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGFyZzEueG1sXV1dKX0gewogICAgICAgICAg
ICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgICAgICBzZXQgZmQgW29wZW4gJGZpbGUgeyBSRE9OTFkgfV0KICAgICAgICAgICAgICAgICAg
ICBzZXQgaW5jbHVkZSBbcHJleG1sX2NkYXRhIFtyZWFkICRmZF1dCiAgICAgICAgICAgICAgICAg
ICAgY2F0Y2ggeyBjbG9zZSAkZmQgfQogICAgICAgICAgICAgICAgICAgIHNldCBmb3VuZFAgMQog
ICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICBpZiB7ISRmb3VuZFB9IHsKICAgICAgICAgICAgICAgICAgICBlcnJvciAidW5hYmxlIHRvIGZp
bmQgZXh0ZXJuYWwgZmlsZSAkYXJnMS54bWwiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
IH0KCiAgICAgICAgICAgIFBVQkxJQyB7CiAgICAgICAgICAgICAgICBpZiB7KCFbcmVnZXhwIF5b
c2dtbDo6Y2wgJHNnbWw6OldzcF0rIihbc2dtbDo6Y2wgXiJdKikiKC4qKSBcCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICR5IHogYXJnMiB5XSkgXAogICAgICAgICAgICAgICAgICAgICAg
ICAmJiAoIVtyZWdleHAgXltzZ21sOjpjbCAkc2dtbDo6V3NwXSsnKFtzZ21sOjpjbCBeJ10qKSco
LiopIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR5IHogYXJnMiB5XSl9
IHsKICAgICAgICAgICAgICAgICAgICBlcnJvciAiZXhwZWN0aW5nIGxpdGVyYWwgYWZ0ZXIgPCFF
TlRJVFkgJGVudGl0eSAkbW9kZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlm
IHshJGh0dHBQfSB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3IgInVuYWJsZSB0byBmaW5kIGh0
dHAgcGFja2FnZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldCBjb2RlIFto
dHRwOjpjb2RlIFtzZXQgaHR0cFQgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbaHR0cDo6Z2V0dXJsIFtzZXQgZmlsZSAkYXJnMl1dXV0KICAgICAgICAgICAgICAg
IGlmIHshW3N0cmluZyBjb21wYXJlIFtsaW5kZXggJGNvZGUgMV0gNDA0XX0gewogICAgICAgICAg
ICAgICAgICAgIHNldCBjb2RlIFtodHRwOjpjb2RlIFtzZXQgaHR0cFQgXAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaHR0cDo6Z2V0dXJsIFtzZXQgZmlsZSAkZmls
ZS54bWxdXV1dCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiB7W3N0cmluZyBj
b21wYXJlIFtsaW5kZXggJGNvZGUgMV0gMjAwXX0gewogICAgICAgICAgICAgICAgICAgIGVycm9y
ICIkZmlsZTogJGNvZGUiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXQgaW5j
bHVkZSBbcHJleG1sX2NkYXRhIFtodHRwOjpkYXRhICRodHRwVF1dCiAgICAgICAgICAgICAgICBo
dHRwOjpjbGVhbnVwICRodHRwVAogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHNldCBi
b2R5IFtzdHJpbmcgdHJpbWxlZnQgJGluY2x1ZGVdCiAgICAgICAgaWYgeyhbc3RyaW5nIGZpcnN0
ICI8P1hNTCAiIFtzdHJpbmcgdG91cHBlciAkYm9keV1dID09IDApIAogICAgICAgICAgICAgICAg
JiYgKFtzZXQgbGVuIFtzdHJpbmcgZmlyc3QgIj8+IiAkYm9keV1dID49IDApfSB7CiAgICAgICAg
ICAgIHNldCBzdGFydCBbZXhwciBbc3RyaW5nIGxlbmd0aCAkaW5jbHVkZV0tW3N0cmluZyBsZW5n
dGggJGJvZHldXQogICAgICAgICAgICBpbmNyIGxlbgogICAgICAgICAgICBzZXQgaW5jbHVkZSBb
c3RyaW5nIHJlcGxhY2UgJGluY2x1ZGUgJHN0YXJ0IFtleHByICRzdGFydCskbGVuXSBcCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdCAiICUqLipzIiAkbGVuICRsZW4gIiJd
XQoKICAgICAgICAgICAgc2V0IGJvZHkgW3N0cmluZyB0cmltbGVmdCAkaW5jbHVkZV0KICAgICAg
ICB9CiAgICAgICAgaWYgeyhbc3RyaW5nIGZpcnN0ICI8IURPQ1RZUEUgIiBbc3RyaW5nIHRvdXBw
ZXIgJGJvZHldXSA9PSAwKSAKICAgICAgICAgICAgICAgICYmIChbc2V0IGxlbiBbc3RyaW5nIGZp
cnN0ICI+IiAkYm9keV1dID49IDApfSB7CiAgICAgICAgICAgIGlmIHsoW3NldCBsZW4yIFtzdHJp
bmcgZmlyc3Qge1t9ICRib2R5XV0gPCAkbGVuKSBcCiAgICAgICAgICAgICAgICAgICAgJiYgKFtz
ZXQgbGVuMyBbc3RyaW5nIGZpcnN0IHtdfSAkYm9keV1dID4gJGxlbil9IHsKICAgICAgICAgICAg
ICAgIHNldCBzdGFydCBbZXhwciBbc3RyaW5nIGxlbmd0aCAkaW5jbHVkZV0tW3N0cmluZyBsZW5n
dGggJGJvZHldXQogICAgICAgICAgICAgICAgc2V0IGluY2x1ZGUgW3N0cmluZyByZXBsYWNlICRp
bmNsdWRlICRzdGFydCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtleHBy
ICRzdGFydCskbGVuMl0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZm9y
bWF0ICIgJSouKnMiICRsZW4yICRsZW4yICIiXV0KICAgICAgICAgICAgICAgIHNldCBzdGFydCBb
c3RyaW5nIGZpcnN0IHtdfSAkaW5jbHVkZV0KICAgICAgICAgICAgICAgIHNldCBsZW4gW3N0cmlu
ZyBmaXJzdCAiPiIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3RyaW5nIHJh
bmdlICRpbmNsdWRlICRzdGFydCBlbmRdXQogICAgICAgICAgICAgICAgc2V0IGluY2x1ZGUgW3N0
cmluZyByZXBsYWNlICRpbmNsdWRlICRzdGFydCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtleHByICRzdGFydCskbGVuXSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFtmb3JtYXQgIiAlKi4qcyIgJGxlbiAkbGVuICIiXV0KICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgIHNldCBzdGFydCBbZXhwciBbc3RyaW5nIGxlbmd0aCAkaW5j
bHVkZV0tW3N0cmluZyBsZW5ndGggJGJvZHldXQogICAgICAgICAgICAgICAgc2V0IGluY2x1ZGUg
W3N0cmluZyByZXBsYWNlICRpbmNsdWRlICRzdGFydCBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtleHByICRzdGFydCskbGVuXSBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFtmb3JtYXQgIiAlKi4qcyIgJGxlbiAkbGVuICIiXV0KICAgICAgICAgICAg
fQogICAgICAgIH0KICAgICAgICBzZXQgZXh0ZW50aXRpZXMoJGVudGl0eSkgW2xpc3QgJGZpbGUg
JGluY2x1ZGVdCiAgICB9CiAgICBhcHBlbmQgZGF0YSAkc3RyZWFtCgogICAgc2V0IHN0cmVhbSAk
ZGF0YQogICAgCiAgICBzZXQgbGl0TiBbc3RyaW5nIGxlbmd0aCBbc2V0IGxpdFMgIiYiXV0KICAg
IHNldCBsaXRPIFtzdHJpbmcgbGVuZ3RoIFtzZXQgbGl0VCAiOyJdXQoKICAgIHNldCBkYXRhICIi
CiAgICBzZXQgZGlkUCAwCiAgICBzZXQgbGluZW5vIDEKICAgIHdoaWxlIHtbc2V0IHggW3N0cmlu
ZyBmaXJzdCAkbGl0UyAkc3RyZWFtXV0gPj0gMH0gewogICAgICAgIGluY3IgbGluZW5vIFtudW1s
aW5lcyBbc2V0IGluaXRpYWwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtz
dHJpbmcgcmFuZ2UgJHN0cmVhbSAwIFtleHByICR4LTFdXV1dCiAgICAgICAgYXBwZW5kIGRhdGEg
JGluaXRpYWwKICAgICAgICBzZXQgc3RyZWFtIFtzdHJpbmcgcmFuZ2UgJHN0cmVhbSBbZXhwciAk
eCskbGl0Tl0gZW5kXQogICAgICAgIGlmIHtbc2V0IHggW3N0cmluZyBmaXJzdCAkbGl0VCAkc3Ry
ZWFtXV0gPCAwfSB7CiAgICAgICAgICAgIGFwcGVuZCBkYXRhICRsaXRTCiAgICAgICAgICAgIGNv
bnRpbnVlCiAgICAgICAgfQogICAgICAgIHNldCB5IFtzdHJpbmcgdHJpbSBbc3RyaW5nIHJhbmdl
ICRzdHJlYW0gMCBbZXhwciAkeC0xXV1dCiAgICAgICAgaWYgeyFbaW5mbyBleGlzdHMgZXh0ZW50
aXRpZXMoJHkpXX0gewogICAgICAgICAgICBhcHBlbmQgZGF0YSAkbGl0UwogICAgICAgICAgICBj
b250aW51ZQogICAgICAgIH0KICAgICAgICBzZXQgZGlkUCAxCgogICAgICAgIHNldCBmaWxlIFts
aW5kZXggJGV4dGVudGl0aWVzKCR5KSAwXQogICAgICAgIHNldCBpbmNsdWRlIFtsaW5kZXggJGV4
dGVudGl0aWVzKCR5KSAxXQoKICAgICAgICBzZXQgbGVuIFtudW1saW5lcyAkaW5jbHVkZV0KICAg
ICAgICBzZXQgZmxuZXcge30KICAgICAgICBmb3JlYWNoIGZsZGF0dW0gJGZsZGF0YSB7CiAgICAg
ICAgICAgIHNldCBlbmQgW2xpbmRleCAkZmxkYXR1bSAyXQogICAgICAgICAgICBpZiB7JGVuZCA+
PSAkbGluZW5vfSB7CiAgICAgICAgICAgICAgICBzZXQgZmxkYXR1bSBbbHJlcGxhY2UgJGZsZGF0
dW0gMiAyIFtleHByICRlbmQrJGxlbl1dCiAgICAgICAgICAgIH0KICAgICAgICAgICAgbGFwcGVu
ZCBmbG5ldyAkZmxkYXR1bQogICAgICAgIH0KICAgICAgICBzZXQgZmxkYXRhICRmbG5ldwogICAg
ICAgIGxhcHBlbmQgZmxkYXRhIFtsaXN0ICRmaWxlICRsaW5lbm8gJGxlbl0KCiAgICAgICAgc2V0
IHN0cmVhbSAkaW5jbHVkZVtzdHJpbmcgcmFuZ2UgJHN0cmVhbSBbZXhwciAkeCskbGl0T10gZW5k
XQogICAgfQogICAgYXBwZW5kIGRhdGEgJHN0cmVhbQoKICAgIGlmIHskZGlkUH0gewogICAgICAg
IHNldCBkYXRhIFtwcmV4bWxfZW50aXR5ICRkYXRhICRwYXRoICRodHRwUF0KICAgIH0KCiAgICBy
ZXR1cm4gJGRhdGEKfQoKcHJvYyBudW1saW5lcyB7dGV4dH0gewogICAgc2V0IG4gW2xsZW5ndGgg
W3NwbGl0ICR0ZXh0ICJcbiJdXQogICAgaWYgeyFbc3RyaW5nIGNvbXBhcmUgW3N0cmluZyByYW5n
ZSAkdGV4dCBlbmQgZW5kXSAiXG4iXX0gewogICAgICAgIGluY3IgbiAtMQogICAgfQoKICAgIHJl
dHVybiAkbgp9Cgpwcm9jIGFyb3VuZDJmbCB7cmVzdWx0fSB7CiAgICBnbG9iYWwgZmxkYXRhCgog
ICAgaWYge1tyZWdleHAgLW5vY2FzZSAtLSB7IGFyb3VuZCBsaW5lIChbMS05XVswLTldKil9ICRy
ZXN1bHQgeCBsaW5lbm9dIFwKICAgICAgICAgICAgIT0gMX0gewogICAgICAgIHJldHVybiAkcmVz
dWx0CiAgICB9CgogICAgc2V0IGZpbGUgIiIKICAgIHNldCBvZmZzZXQgMAogICAgc2V0IG1heCAw
CiAgICBmb3JlYWNoIGZsZGF0dW0gJGZsZGF0YSB7CiAgICAgICAgaWYge1tzZXQgc3RhcnQgW2xp
bmRleCAkZmxkYXR1bSAxXV0gPiAkbGluZW5vfSB7CiAgICAgICAgICAgIGJyZWFrCiAgICAgICAg
fQogICAgICAgIGlmIHtbc2V0IG5ldyBbZXhwciAkc3RhcnQrW3NldCBsZW4gW2xpbmRleCAkZmxk
YXR1bSAyXV1dXSA8ICRtYXh9IHsKICAgICAgICAgICAgY29udGludWUKICAgICAgICB9CgogICAg
ICAgIGlmIHskbGluZW5vIDw9ICRuZXd9IHsKICAgICAgICAgICAgc2V0IGZpbGUgW2xpbmRleCAk
ZmxkYXR1bSAwXQogICAgICAgICAgICBzZXQgb2Zmc2V0IFtleHByICRsaW5lbm8tJHN0YXJ0XQog
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGluY3Igb2Zmc2V0IC0kbGVuCiAgICAgICAgICAg
IHNldCBtYXggJG5ldwogICAgICAgIH0KICAgIH0KCiAgICBzZXQgdGFpbCAiIGFyb3VuZCBsaW5l
ICRvZmZzZXQiCiAgICBpZiB7W3N0cmluZyBjb21wYXJlICRmaWxlIFtsaW5kZXggW2xpbmRleCAk
ZmxkYXRhIDBdIDBdXX0gewogICAgICAgIGFwcGVuZCB0YWlsICIgaW4gJGZpbGUiCiAgICB9CiAg
ICByZWdzdWIgIiBhcm91bmQgbGluZSAkbGluZW5vIiAkcmVzdWx0ICR0YWlsIHJlc3VsdAoKICAg
IHJldHVybiAkcmVzdWx0Cn0KCgojCiMgWE1MIGxpbmthZ2UKIwoKCiMgZ2xvYmFscyB1c2VkIGlu
IHBhcnNpbmcKIwojICAgICBjb3VudGVyIC0gdXNlZCBmb3IgZ2VuZXJhdGluZyByZWZlcmVuY2Ug
bnVtYmVycwojICAgICAgIGRlcHRoIC0gIC4uCiMgICAgICAgZWxlbU4gLSBpbmRleCBvZiBjdXJy
ZW50IGVsZW1lbnQKIyAgICAgICAgZWxlbSAtIGFycmF5LCBpbmRleGVkIGJ5IGVsZW1OLCBoYXZp
bmc6CiMgICAgICAgICAgICAgICBsaXN0IG9mIGVsZW1lbnQgYXR0cmlidXRlcywKIyAgICAgICAg
ICAgICAgIHBsdXMgIi5DSElMRFJFTiIsICIuQ09VTlRFUiIsICIuQ1RFWFQiLyIuQ0xJTkVTIiwg
Ii5OQU1FIiwKIyAgICAgICAgICAgICAgICAgICAgIi5BTkNIT1IiLCAiLkVESVROTyIKIyAgICAg
IHBhc3NubyAtIDEgb3IgMiAob3IgbWF5YmUgMywgaWYgZ2VuZXJhdGluZyBhIFRPQykKIyAgICAg
ICBzdGFjayAtIHRoZSBzdGFjayBvZiBlbGVtZW50cywgZWFjaCBmcmFtZSBoYXZpbmc6CiMgICAg
ICAgICAgICAgICB7IGVsZW1lbnQtbmFtZSAiZWxlbU4iIGVsZW1OICJjaGlsZHJlbiIgeyBlbGVt
Ti4uLiB9CiMgICAgICAgICAgICAgICAgICJjdGV4dCIgeWVzLW9yLW5vIH0KIyAgICAgICAgeHJl
ZiAtIGFycmF5LCBpbmRleGVkIGJ5IGFuY2hvciwgaGF2aW5nOgojICAgICAgICAgICAgICAgeyAi
dHlwZSIgZWxlbWVudC1uYW1lICJlbGVtTiIgZWxlbU4gInZhbHVlIiByZWZlcmVuY2UtbnVtYmVy
IH0KCnByb2MgcGFzcyB7dGFnfSB7CiAgICBnbG9iYWwgb3B0aW9ucwogICAgZ2xvYmFsIGNvdW50
ZXIgZGVwdGggZWxlbU4gZWxlbSBwYXNzbm8gc3RhY2sgeHJlZgogICAgZ2xvYmFsIGFuY2hvck4K
ICAgIGdsb2JhbCBlbGVtWgogICAgZ2xvYmFsIGVyZWZzCgogICAgc3dpdGNoIC0tICR0YWcgewog
ICAgICAgIHN0YXJ0IHsKICAgICAgICAgICAgdW5leHBlY3RlZCBub3RpY2UgInBhc3MgJHBhc3Nu
by4uLiIKICAgICAgICAgICAgaWYgeyRwYXNzbm8gPT0gMX0gewogICAgICAgICAgICAgICAgY2F0
Y2ggeyB1bnNldCBjb3VudGVyIH0KICAgICAgICAgICAgICAgIGNhdGNoIHsgdW5zZXQgZGVwdGgg
fQogICAgICAgICAgICAgICAgY2F0Y2ggeyB1bnNldCBlbGVtIH0KICAgICAgICAgICAgICAgIGNh
dGNoIHsgdW5zZXQgeHJlZiB9CiAgICAgICAgICAgICAgICBjYXRjaCB7IHVuc2V0IGVyZWZzIH0K
ICAgICAgICAgICAgICAgIHNldCBhbmNob3JOIDAKICAgICAgICAgICAgfQogICAgICAgICAgICBz
ZXQgZWxlbU4gMAogICAgICAgICAgICBjYXRjaCB7IHVuc2V0IG9wdGlvbnMgfQogICAgICAgICAg
ICBhcnJheSBzZXQgb3B0aW9ucyBbbGlzdCBiYWNrZ3JvdW5kICIiICBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbXBhY3QgICAgbm8gIFwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZWRpdGluZyAgICBubyAgXAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbW90aWNvbmljIG5vICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvb3RlciAgICAgIiIgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaGVhZGVyICAgICAiIiAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcml2YXRlICAgICIiICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNs
aWRlcyAgICAgbm8gIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydHJl
ZnMgICBubyAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJjb21wYWN0
IG5vICBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bXJlZnMgICAgbm8g
IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9jICAgICAgICBubyAgXAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2NkZXB0aCAgIDMgICBcCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvY29tcGFjdCAgeWVzIFwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wYmxvY2sgICB5ZXNdCiAgICAgICAgICAgIG5v
cm1hbGl6ZV9vcHRpb25zCiAgICAgICAgICAgIGNhdGNoIHsgdW5zZXQgc3RhY2sgfQogICAgICAg
IH0KCiAgICAgICAgZW5kIHsKICAgICAgICAgICAgc2V0IGVsZW1aICRlbGVtTgogICAgICAgIH0K
ICAgIH0KfQoKCiMgYmVnaW4gZWxlbWVudAoKZ2xvYmFsIHJlcXVpcmVkIGN0ZXh0cyBjYXRlZ29y
aWVzCgpzZXQgcmVxdWlyZWQgeyBkYXRlICAgICAgIHsgeWVhciB9CiAgICAgICAgICAgICAgIG5v
dGUgICAgICAgeyB0aXRsZSAgfQogICAgICAgICAgICAgICBzZWN0aW9uICAgIHsgdGl0bGUgIH0K
ICAgICAgICAgICAgICAgeHJlZiAgICAgICB7IHRhcmdldCB9CiAgICAgICAgICAgICAgIGVyZWYg
ICAgICAgeyB0YXJnZXQgfQogICAgICAgICAgICAgICBpcmVmICAgICAgIHsgaXRlbSB9CiMgYmFj
a3dhcmRzLWNvbXBhdGliaWxpdHkuLi4gKHRoZSBhdHRyaWJ1dGVzIGFyZSBhY3R1YWxseSBtYW5k
YXRvcnkpCiMgICAgICAgICAgICAgIHNlcmllc0luZm8geyBuYW1lIHZhbHVlIH0KICAgICAgICAg
ICAgICAgZm9ybWF0ICAgICB7IHR5cGUgfQogICAgICAgICAgICAgfQogICAgICAgICAgCnNldCBj
dGV4dHMgICB7IHRpdGxlIG9yZ2FuaXphdGlvbiBzdHJlZXQgY2l0eSByZWdpb24gY29kZSBjb3Vu
dHJ5IHBob25lCiAgICAgICAgICAgICAgIGZhY3NpbWlsZSBlbWFpbCB1cmkgYXJlYSB3b3JrZ3Jv
dXAga2V5d29yZCB4cmVmIGVyZWYKICAgICAgICAgICAgICAgc2VyaWVzSW5mbyB9CgpzZXQgY2F0
ZWdvcmllcyBcCiAgICAgICAgICAgICB7IHtzdGQgICJTdGFuZGFyZHMgVHJhY2siIFNURAoiVGhp
cyBkb2N1bWVudCBzcGVjaWZpZXMgYW4gSW50ZXJuZXQgc3RhbmRhcmRzIHRyYWNrIHByb3RvY29s
IGZvciB0aGUgSW50ZXJuZXQKY29tbXVuaXR5LCBhbmQgcmVxdWVzdHMgZGlzY3Vzc2lvbiBhbmQg
c3VnZ2VzdGlvbnMgZm9yIGltcHJvdmVtZW50cy4KUGxlYXNlIHJlZmVyIHRvIHRoZSBjdXJyZW50
IGVkaXRpb24gb2YgdGhlICZxdW90O0ludGVybmV0IE9mZmljaWFsIFByb3RvY29sClN0YW5kYXJk
cyZxdW90OyAoU1REIDEpIGZvciB0aGUgc3RhbmRhcmRpemF0aW9uIHN0YXRlIGFuZCBzdGF0dXMg
b2YgdGhpcwpwcm90b2NvbC4KRGlzdHJpYnV0aW9uIG9mIHRoaXMgbWVtbyBpcyB1bmxpbWl0ZWQu
In0KCiAgICAgICAgICAgICAgIHtiY3AgICAgICAiQmVzdCBDdXJyZW50IFByYWN0aWNlIiBCQ1AK
IlRoaXMgZG9jdW1lbnQgc3BlY2lmaWVzIGFuIEludGVybmV0IEJlc3QgQ3VycmVudCBQcmFjdGlj
ZXMgZm9yIHRoZSBJbnRlcm5ldApDb21tdW5pdHksIGFuZCByZXF1ZXN0cyBkaXNjdXNzaW9uIGFu
ZCBzdWdnZXN0aW9ucyBmb3IgaW1wcm92ZW1lbnRzLgpEaXN0cmlidXRpb24gb2YgdGhpcyBtZW1v
IGlzIHVubGltaXRlZC4ifQoKICAgICAgICAgICAgICAge2luZm8gICAgICJJbmZvcm1hdGlvbmFs
IiBGWUkKIlRoaXMgbWVtbyBwcm92aWRlcyBpbmZvcm1hdGlvbiBmb3IgdGhlIEludGVybmV0IGNv
bW11bml0eS4KSXQgZG9lcyBub3Qgc3BlY2lmeSBhbiBJbnRlcm5ldCBzdGFuZGFyZCBvZiBhbnkg
a2luZC4KRGlzdHJpYnV0aW9uIG9mIHRoaXMgbWVtbyBpcyB1bmxpbWl0ZWQuIn0KCiAgICAgICAg
ICAgICAgIHtleHAgICAgICAiRXhwZXJpbWVudGFsIiBFWFAKIlRoaXMgbWVtbyBkZWZpbmVzIGFu
IEV4cGVyaW1lbnRhbCBQcm90b2NvbCBmb3IgdGhlIEludGVybmV0IGNvbW11bml0eS4KSXQgZG9l
cyBub3Qgc3BlY2lmeSBhbiBJbnRlcm5ldCBzdGFuZGFyZCBvZiBhbnkga2luZC4KRGlzY3Vzc2lv
biBhbmQgc3VnZ2VzdGlvbnMgZm9yIGltcHJvdmVtZW50IGFyZSByZXF1ZXN0ZWQuCkRpc3RyaWJ1
dGlvbiBvZiB0aGlzIG1lbW8gaXMgdW5saW1pdGVkLiJ9CgogICAgICAgICAgICAgICB7aGlzdG9y
aWMgIkhpc3RvcmljIiAiIgoiVGhpcyBtZW1vIGRlc2NyaWJlcyBhIGhpc3RvcmljIHByb3RvY29s
IGZvciB0aGUgSW50ZXJuZXQgY29tbXVuaXR5LgpJdCBkb2VzIG5vdCBzcGVjaWZ5IGFuIEludGVy
bmV0IHN0YW5kYXJkIG9mIGFueSBraW5kLgpEaXN0cmlidXRpb24gb2YgdGhpcyBtZW1vIGlzIHVu
bGltaXRlZC4ifSB9CgpzZXQgaXByc3RhdHVzIFwKICAgICAgICAgICAgIHsge2Z1bGwyMDI2CiJp
biBmdWxsIGNvbmZvcm1hbmNlIHdpdGggYWxsIHByb3Zpc2lvbnMgb2YgU2VjdGlvbiAxMCBvZiBS
RkMyMDI2LiJ9CgogICAgICAgICAgICAgICB7bm9EZXJpdmF0aXZlV29ya3MyMDI2CiJpbiBmdWxs
IGNvbmZvcm1hbmNlIHdpdGggYWxsIHByb3Zpc2lvbnMgb2YgU2VjdGlvbiAxMCBvZiBSRkMyMDI2
CmV4Y2VwdCB0aGF0IHRoZSByaWdodCB0byBwcm9kdWNlIGRlcml2YXRpdmUgd29ya3MgaXMgbm90
IGdyYW50ZWQuIn0KCiAgICAgICAgICAgICAgIHtub0Rlcml2YXRpdmVXb3Jrc05vdwoiaW4gZnVs
bCBjb25mb3JtYW5jZSB3aXRoIGFsbCBwcm92aXNpb25zIG9mIFNlY3Rpb24gMTAgb2YgUkZDMjAy
NgpleGNlcHQgdGhhdCB0aGUgcmlnaHQgdG8gcHJvZHVjZSBkZXJpdmF0aXZlIHdvcmtzIGlzIG5v
dCBncmFudGVkLgooSWYgdGhpcyBkb2N1bWVudCBiZWNvbWVzIHBhcnQgb2YgYW4gSUVURiB3b3Jr
aW5nIGdyb3VwIGFjdGl2aXR5LAp0aGVuIGl0IHdpbGwgYmUgYnJvdWdodCBpbnRvIGZ1bGwgY29t
cGxpYW5jZSB3aXRoIFNlY3Rpb24gMTAgb2YgUkZDMjAyNi4pIn0KCiAgICAgICAgICAgICAgIHtu
b25lCiJOT1Qgb2ZmZXJlZCBpbiBhY2NvcmRhbmNlIHdpdGggU2VjdGlvbiAxMCBvZiBSRkMyMDI2
LAphbmQgdGhlIGF1dGhvciBkb2VzIG5vdCBwcm92aWRlIHRoZSBJRVRGIHdpdGggYW55IHJpZ2h0
cyBvdGhlcgp0aGFuIHRvIHB1Ymxpc2ggYXMgYW4gSW50ZXJuZXQtRHJhZnQuIn0gfQoKcHJvYyBi
ZWdpbiB7bmFtZSB7YXYge319fSB7CiAgICBnbG9iYWwgY291bnRlciBkZXB0aCBlbGVtTiBlbGVt
IHBhc3NubyBzdGFjayB4cmVmCiAgICBnbG9iYWwgYW5jaG9yTgogICAgZ2xvYmFsIG9wdGlvbnMK
ICAgIGdsb2JhbCByZXF1aXJlZCBjdGV4dHMgY2F0ZWdvcmllcyBpcHJzdGF0dXMKCiMgYmVjYXVz
ZSBUY2xYTUwuLi4gcXVvdGVzIGF0dHJpYnV0ZSB2YWx1ZXMgY29udGFpbmluZyAiXSIKICAgIHNl
dCBrdiAiIgogICAgZm9yZWFjaCB7ayB2fSAkYXYgewogICAgICAgIGxhcHBlbmQga3YgJGsKICAg
ICAgICByZWdzdWIgLWFsbCB7XFxcW30gJHYge1t9IHYKICAgICAgICBsYXBwZW5kIGt2ICR2CiAg
ICB9CiAgICBzZXQgYXYgJGt2CgogICAgaW5jciBlbGVtTgoKICAgIGlmIHskcGFzc25vID09IDF9
IHsKICAgICAgICBzZXQgZWxlbSgkZWxlbU4pICRhdgogICAgICAgIGFycmF5IHNldCBhdHRycyAk
YXYKCiAgICAgICAgZm9yZWFjaCB7IG4gYSB9ICRyZXF1aXJlZCB7CiAgICAgICAgICAgIHN3aXRj
aCAtLSBbc3RyaW5nIGNvbXBhcmUgJG4gJG5hbWVdIHsKICAgICAgICAgICAgICAgIC0xIHsKICAg
ICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICAwIHsKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIHYgJGEgewogICAgICAgICAgICAg
ICAgICAgICAgICBpZiB7W2NhdGNoIHsgc2V0IGF0dHJzKCR2KSB9XX0gewogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdW5leHBlY3RlZCBlcnJvciBcCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIm1pc3NpbmcgJHYgYXR0cmlidXRlIGluICRuYW1lIGVsZW1lbnQiCiAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAxIHsKICAgICAgICAg
ICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAg
fQoKICAgICAgICBzd2l0Y2ggLS0gW3NldCB0eXBlICRuYW1lXSB7CiAgICAgICAgICAgIHJmYyB7
CiAgICAgICAgICAgICAgICBpZiB7IVtjYXRjaCB7IHNldCBhdHRycyhjYXRlZ29yeSkgfV19IHsK
ICAgICAgICAgICAgICAgICAgICBpZiB7W2xzZWFyY2gwICRjYXRlZ29yaWVzICRhdHRycyhjYXRl
Z29yeSldIDwgMH0gewogICAgICAgICAgICAgICAgICAgICAgICB1bmV4cGVjdGVkIGVycm9yIFwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYXRlZ29yeSBhdHRyaWJ1dGUgdW5rbm93bjog
JGF0dHJzKGNhdGVnb3J5KSIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgaWYgeyghW3N0cmluZyBjb21wYXJlICRhdHRycyhjYXRlZ29yeSkgaGlzdG9yaWNdKSBcCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoIVtjYXRjaCB7IHNldCBhdHRycyhzZXJpZXNO
bykgfV0pfSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWQgZXJyb3IgXAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImhpc3RvcmljIGRvY3VtZW50cyBoYXZlIG5vIGRvY3Vt
ZW50IHNlcmllcyIKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBpZiB7IVtjYXRjaCB7IHNldCBhdHRycyhpcHIpIH1dfSB7CiAgICAgICAgICAg
ICAgICAgICAgaWYge1tsc2VhcmNoMCAkaXByc3RhdHVzICRhdHRycyhpcHIpXSA8IDB9IHsKICAg
ICAgICAgICAgICAgICAgICAgICAgdW5leHBlY3RlZCBlcnJvciBcCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiaXByIGF0dHJpYnV0ZSB1bmtub3duOiAkYXR0cnMoaXByKSIKICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnbG9iYWwgZW50
aXRpZXMgb2VudGl0aWVzIG1vZGUgbmJzcAogICAgICAgICAgICAgICAgaWYge1sgY2F0Y2ggeyBz
ZXQgbnVtYmVyICRhdHRycyhudW1iZXIpIH1dfSB7CiAgICAgICAgICAgICAgICAgICAgc2V0IG51
bWJlciBYWFhYCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXQgZW50aXRpZXMg
W2xpbnNlcnQgJG9lbnRpdGllcyAwICImcmZjLm51bWJlcjsiICRudW1iZXJdCiAgICAgICAgICAg
ICAgICBzd2l0Y2ggLS0gJG1vZGUgewogICAgICAgICAgICAgICAgICAgIG5yCiAgICAgICAgICAg
ICAgICAgICAgICAgIC0KICAgICAgICAgICAgICAgICAgICB0eHQgewogICAgICAgICAgICAgICAg
ICAgICAgICBzZXQgbmJzcCAiXHhhMCIKICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGVudGl0
aWVzIFtsaW5zZXJ0ICRlbnRpdGllcyAwICImbmJzcDsiICRuYnNwXQogICAgICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgYmFjayB7
CiAgICAgICAgICAgICAgICBjYXRjaCB7IHVuc2V0IGRlcHRoKHNlY3Rpb24pIH0KICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgYWJzdHJhY3QgewogICAgICAgICAgICAgICAgaWYge1tsc2VhcmNo
MCAkc3RhY2sgYmFja10gPCAwfSB7CiAgICAgICAgICAgICAgICAgICAgc2V0IGNvdW50ZXIoYWJz
dHJhY3QpIDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgc2Vj
dGlvbiB7CiAgICAgICAgICAgICAgICBpZiB7W2NhdGNoIHsgaW5jciBkZXB0aChzZWN0aW9uKSB9
XX0gewogICAgICAgICAgICAgICAgICAgIHNldCBkZXB0aChzZWN0aW9uKSAxCiAgICAgICAgICAg
ICAgICAgICAgc2V0IGNvdW50ZXIoc2VjdGlvbikgMAogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgc2V0IGNvdW50ZXIoc2VjdGlvbikgXAogICAgICAgICAgICAgICAgICAgICAgICAg
W2NvdW50aW5nICRjb3VudGVyKHNlY3Rpb24pICRkZXB0aChzZWN0aW9uKV0KICAgICAgICAgICAg
ICAgIHNldCBsIFtzcGxpdCAkY291bnRlcihzZWN0aW9uKSAuXQogICAgICAgICAgICAgICAgaWYg
e1tsc2VhcmNoMCAkc3RhY2sgYmFja10gPj0gMH0gewogICAgICAgICAgICAgICAgICAgIHNldCB0
eXBlIGFwcGVuZGl4CiAgICAgICAgICAgICAgICAgICAgc2V0IGwgW2xyZXBsYWNlICRsIDAgMCBc
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZyBpbmRleCAiIEFCQ0RFRkdI
SUpLTE1OT1BRUlNUVVZXWFlaIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFtsaW5kZXggJGwgMF1dXQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0IGF0
dHJzKC5DT1VOVEVSKSBbc2V0IHZhbHVlIFtqb2luICRsIC5dXQogICAgICAgICAgICAgICAgaWYg
e1tjYXRjaCB7IHNldCBhdHRycyhhbmNob3IpIH1dfSB7CiAgICAgICAgICAgICAgICAgICAgc2V0
IGF0dHJzKGFuY2hvcikgYW5jaG9yW2luY3IgYW5jaG9yTl0KICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIHNldCBhdHRycyguQU5DSE9SKSAkYXR0cnMoYW5jaG9yKQogICAgICAgICAg
ICAgICAgc2V0IGVsZW0oJGVsZW1OKSBbYXJyYXkgZ2V0IGF0dHJzXQogICAgICAgICAgICB9Cgog
ICAgICAgICAgICBsaXN0IHsKICAgICAgICAgICAgICAgIGlmIHtbY2F0Y2ggeyBpbmNyIGRlcHRo
KGxpc3QpIH1dfSB7CiAgICAgICAgICAgICAgICAgICAgc2V0IGRlcHRoKGxpc3QpIDEKICAgICAg
ICAgICAgICAgICAgICBzZXQgY291bnRlcihsaXN0KSAwCiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgIHQgewogICAgICAgICAgICAgICAgaWYge1tjYXRjaCB7IGlu
Y3IgY291bnRlcihlZGl0bm8pIH1dfSB7CiAgICAgICAgICAgICAgICAgICAgc2V0IGNvdW50ZXIo
ZWRpdG5vKSAxCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXQgYXR0cnMoLkVE
SVROTykgJGNvdW50ZXIoZWRpdG5vKQogICAgICAgICAgICAgICAgc2V0IGVsZW0oJGVsZW1OKSBb
YXJyYXkgZ2V0IGF0dHJzXQogICAgICAgICAgICAgICAgaWYge1tsc2VhcmNoMCAkc3RhY2sgbGlz
dF0gPj0gMH0gewogICAgICAgICAgICAgICAgICAgIHNldCBjb3VudGVyKGxpc3QpIFtjb3VudGlu
ZyAkY291bnRlcihsaXN0KSAkZGVwdGgobGlzdCldCiAgICAgICAgICAgICAgICAgICAgc2V0IGF0
dHJzKC5DT1VOVEVSKSAkY291bnRlcihsaXN0KQogICAgICAgICAgICAgICAgICAgIHNldCBlbGVt
KCRlbGVtTikgW2FycmF5IGdldCBhdHRyc10KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
fQoKICAgICAgICAgICAgZmlndXJlIHsKICAgICAgICAgICAgICAgIGlmIHtbY2F0Y2ggeyBpbmNy
IGNvdW50ZXIoZmlndXJlKSB9XX0gewogICAgICAgICAgICAgICAgICAgIHNldCBjb3VudGVyKGZp
Z3VyZSkgMQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc2V0IGF0dHJzKC5DT1VO
VEVSKSBbc2V0IHZhbHVlICRjb3VudGVyKGZpZ3VyZSldCiAgICAgICAgICAgICAgICBzZXQgZWxl
bSgkZWxlbU4pIFthcnJheSBnZXQgYXR0cnNdCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHBy
ZWFtYmxlCiAgICAgICAgICAgICAgICAtCiAgICAgICAgICAgIHBvc3RhbWJsZSB7CiAgICAgICAg
ICAgICAgICBpZiB7W2NhdGNoIHsgaW5jciBjb3VudGVyKGVkaXRubykgfV19IHsKICAgICAgICAg
ICAgICAgICAgICBzZXQgY291bnRlcihlZGl0bm8pIDEKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIHNldCBhdHRycyguRURJVE5PKSAkY291bnRlcihlZGl0bm8pCiAgICAgICAgICAg
ICAgICBzZXQgZWxlbSgkZWxlbU4pIFthcnJheSBnZXQgYXR0cnNdCiAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgIHJlZmVyZW5jZSB7CiAgICAgICAgICAgICAgICBpZiB7JG9wdGlvbnMoLlNZTVJF
RlMpfSB7CiAgICAgICAgICAgICAgICAgICAgc2V0IHZhbHVlICRhdHRycyhhbmNob3IpCiAgICAg
ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGlmIHtbY2F0Y2ggeyBpbmNy
IGNvdW50ZXIocmVmZXJlbmNlKSB9XX0gewogICAgICAgICAgICAgICAgICAgICAgICBzZXQgY291
bnRlcihyZWZlcmVuY2UpIDEKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgc2V0IHZhbHVlICRjb3VudGVyKHJlZmVyZW5jZSkKICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIHNldCBhdHRycyguQ09VTlRFUikgJHZhbHVlCiAgICAgICAgICAgICAgICBzZXQg
ZWxlbSgkZWxlbU4pIFthcnJheSBnZXQgYXR0cnNdCiAgICAgICAgICAgIH0KCiAgICAgICAgICAg
IHhyZWYgewogICAgICAgICAgICAgICAgc2V0IHRhcmdldCAkYXR0cnModGFyZ2V0KQogICAgICAg
ICAgICAgICAgaWYgeyghW2luZm8gZXhpc3RzIGNvdW50ZXIoZmlyc3R4cmVmKV0pIFwKICAgICAg
ICAgICAgICAgICAgICAgICAgfHwgW2xzZWFyY2ggLWV4YWN0ICRjb3VudGVyKGZpcnN0eHJlZikg
JHRhcmdldF0gPCAwfSB7CiAgICAgICAgICAgICAgICAgICAgbGFwcGVuZCBjb3VudGVyKGZpcnN0
eHJlZikgJHRhcmdldAogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoK
ICAgICAgICBpZiB7IVtjYXRjaCB7IHNldCBhbmNob3IgJGF0dHJzKGFuY2hvcikgfV19IHsKICAg
ICAgICAgICAgaWYgeyFbY2F0Y2ggeyBzZXQgeHJlZigkYW5jaG9yKSB9XX0gewogICAgICAgICAg
ICAgICAgdW5leHBlY3RlZCBlcnJvciAiYW5jaG9yIGF0dHJpYnV0ZSBhbHJlYWR5IGluIHVzZTog
JGFuY2hvciIKICAgICAgICAgICAgfQogICAgICAgICAgICBzZXQgeHJlZigkYW5jaG9yKSBbbGlz
dCB0eXBlICR0eXBlIGVsZW1OICRlbGVtTiB2YWx1ZSAkdmFsdWVdCiAgICAgICAgfQoKICAgICAg
ICBpZiB7JGVsZW1OID4gMX0gewogICAgICAgICAgICBzZXQgZnJhbWUgW2xpbmRleCAkc3RhY2sg
ZW5kXQogICAgICAgICAgICBzZXQgY2hpbGRyZW4gW2xpbmRleCAkZnJhbWUgNF0KICAgICAgICAg
ICAgbGFwcGVuZCBjaGlsZHJlbiAkZWxlbU4KICAgICAgICAgICAgc2V0IGZyYW1lIFtscmVwbGFj
ZSAkZnJhbWUgNCA0ICRjaGlsZHJlbl0KICAgICAgICAgICAgc2V0IHN0YWNrIFtscmVwbGFjZSAk
c3RhY2sgZW5kIGVuZCAkZnJhbWVdCiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBpZiB7
MCAmJiAoIVtzdHJpbmcgY29tcGFyZSAkcGFzc25vLyRuYW1lIDIvZXJlZl0pfSB7CiAgICAgICAg
ICAgIGFycmF5IHNldCBhdHRycyAkZWxlbSgkZWxlbU4pCgogICAgICAgICAgICBpZiB7W2NhdGNo
IHsgaW5jciBjb3VudGVyKHJlZmVyZW5jZSkgfV19IHsKICAgICAgICAgICAgICAgIHNldCBjb3Vu
dGVyKHJlZmVyZW5jZSkgMQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNldCBhdHRycyguQ09V
TlRFUikgJGNvdW50ZXIocmVmZXJlbmNlKQogICAgICAgICAgICBzZXQgZWxlbSgkZWxlbU4pIFth
cnJheSBnZXQgYXR0cnNdCiAgICAgICAgfQogICAgICAgIHN3aXRjaCAtLSAkbmFtZSB7CiAgICAg
ICAgICAgIHJmYyB7CiAgICAgICAgICAgICAgICBwYXNzMmJlZ2luXyRuYW1lICRlbGVtTgogICAg
ICAgICAgICB9CgogICAgICAgICAgICBmcm9udAogICAgICAgICAgICAgICAgLQogICAgICAgICAg
ICBhYnN0cmFjdAogICAgICAgICAgICAgICAgLQogICAgICAgICAgICBub3RlCiAgICAgICAgICAg
ICAgICAtCiAgICAgICAgICAgIHNlY3Rpb24KICAgICAgICAgICAgICAgIC0KICAgICAgICAgICAg
dAogICAgICAgICAgICAgICAgLQogICAgICAgICAgICBsaXN0CiAgICAgICAgICAgICAgICAtCiAg
ICAgICAgICAgIGZpZ3VyZQogICAgICAgICAgICAgICAgLQogICAgICAgICAgICBwcmVhbWJsZQog
ICAgICAgICAgICAgICAgLQogICAgICAgICAgICBwb3N0YW1ibGUKICAgICAgICAgICAgICAgIC0K
ICAgICAgICAgICAgeHJlZgogICAgICAgICAgICAgICAgLQogICAgICAgICAgICBlcmVmCiAgICAg
ICAgICAgICAgICAtCiAgICAgICAgICAgIGlyZWYKICAgICAgICAgICAgICAgIC0KICAgICAgICAg
ICAgdnNwYWNlCiAgICAgICAgICAgICAgICAtCiAgICAgICAgICAgIGJhY2sgewogICAgICAgICAg
ICAgICAgaWYge1tsc2VhcmNoMCAkc3RhY2sgcmVmZXJlbmNlc10gPCAwfSB7CiAgICAgICAgICAg
ICAgICAgICAgcGFzczJiZWdpbl8kbmFtZSAkZWxlbU4KICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBpZiB7W2xzZWFyY2ggLWV4YWN0ICRjdGV4dHMg
JG5hbWVdID49IDB9IHsKICAgICAgICBzZXQgY3RleHQgeWVzCiAgICAgICAgaWYgeyRwYXNzbm8g
PT0gMX0gewogICAgICAgICAgICBzZXQgYXR0cnMoLkNURVhUKSAiIgogICAgICAgICAgICBzZXQg
ZWxlbSgkZWxlbU4pIFthcnJheSBnZXQgYXR0cnNdCiAgICAgICAgfQogICAgfSBlbHNlIHsKICAg
ICAgICBzZXQgY3RleHQgbm8KICAgIH0KICAgIGxhcHBlbmQgc3RhY2sgW2xpc3QgJG5hbWUgZWxl
bU4gJGVsZW1OIGNoaWxkcmVuICIiIGN0ZXh0ICRjdGV4dCBhdiAkYXZdCn0KCnByb2MgY291bnRp
bmcge3Rjb3VudCB0ZGVwdGh9IHsKICAgIHNldCB4IFtsbGVuZ3RoIFtzZXQgbCBbc3BsaXQgJHRj
b3VudCAuXV1dCgogICAgaWYgeyR4ID4gJHRkZXB0aH0gewogICAgICAgIHNldCBsIFtscmFuZ2Ug
JGwgMCBbZXhwciAkdGRlcHRoLTFdXQogICAgICAgIHNldCB4ICR0ZGVwdGgKICAgIH0gZWxzZWlm
IHskeCA8ICR0ZGVwdGh9IHsKICAgICAgICBsYXBwZW5kIGwgMAogICAgICAgIGluY3IgeAogICAg
fQogICAgaW5jciB4IC0xCiAgICBzZXQgbCBbbHJlcGxhY2UgJGwgJHggJHggW2V4cHIgW2xpbmRl
eCAkbCAkeF0rMV1dCiAgICByZXR1cm4gW2pvaW4gJGwgLl0KfQoKIyBlbmQgZWxlbWVudAoKcHJv
YyBlbmQge25hbWV9IHsKICAgIGdsb2JhbCBjb3VudGVyIGRlcHRoIGVsZW1OIGVsZW0gcGFzc25v
IHN0YWNrIHhyZWYKCiAgICBzZXQgZnJhbWUgW2xpbmRleCAkc3RhY2sgZW5kXQogICAgc2V0IHN0
YWNrIFtscmVwbGFjZSAkc3RhY2sgZW5kIGVuZF0KCiAgICBhcnJheSBzZXQgYXYgW2xyYW5nZSAk
ZnJhbWUgMSBlbmRdCiAgICBzZXQgZWxlbVggJGF2KGVsZW1OKQoKICAgIGlmIHskcGFzc25vID09
IDF9IHsKICAgICAgICBhcnJheSBzZXQgYXR0cnMgJGVsZW0oJGVsZW1YKQoKICAgICAgICBzZXQg
YXR0cnMoLkNISUxEUkVOKSAkYXYoY2hpbGRyZW4pCiAgICAgICAgc2V0IGF0dHJzKC5OQU1FKSAk
bmFtZQogICAgICAgIHNldCBlbGVtKCRlbGVtWCkgW2FycmF5IGdldCBhdHRyc10KCiAgICAgICAg
c3dpdGNoIC0tICRuYW1lIHsKICAgICAgICAgICAgc2VjdGlvbiB7CiAgICAgICAgICAgICAgICBp
bmNyIGRlcHRoKHNlY3Rpb24pIC0xCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxpc3Qgewog
ICAgICAgICAgICAgICAgaWYge1tpbmNyIGRlcHRoKGxpc3QpIC0xXSA9PSAwfSB7CiAgICAgICAg
ICAgICAgICAgICAgc2V0IGNvdW50ZXIobGlzdCkgMAogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4KICAgIH0KCiAgICBzd2l0Y2ggLS0gJG5h
bWUgewogICAgICAgIHJmYwogICAgICAgICAgICAtCiAgICAgICAgZnJvbnQKICAgICAgICAgICAg
LQogICAgICAgIHQKICAgICAgICAgICAgLQogICAgICAgIGxpc3QKICAgICAgICAgICAgLQogICAg
ICAgIGZpZ3VyZQogICAgICAgICAgICAtCiAgICAgICAgcHJlYW1ibGUKICAgICAgICAgICAgLQog
ICAgICAgIHBvc3RhbWJsZSB7CiAgICAgICAgICAgIGlmIHtbbHNlYXJjaDAgJHN0YWNrIHJlZmVy
ZW5jZXNdIDwgMH0gewogICAgICAgICAgICAgICAgcGFzczJlbmRfJG5hbWUgJGVsZW1YCiAgICAg
ICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCgojIGNoYXJhY3RlciBkYXRhCgpwcm9jIHBjZGF0
YSB7dGV4dH0gewogICAgZ2xvYmFsIGNvdW50ZXIgZGVwdGggZWxlbU4gZWxlbSBwYXNzbm8gc3Rh
Y2sgeHJlZgogICAgZ2xvYmFsIG1vZGUKCiAgICBpZiB7W3N0cmluZyBsZW5ndGggW3NldCBjaGFy
cyBbc3RyaW5nIHRyaW0gJHRleHRdXV0gPD0gMH0gewogICAgICAgIHJldHVybgogICAgfQoKICAg
IHJlZ3N1YiAtYWxsICJcciIgJHRleHQgIlxuIiB0ZXh0CgogICAgc2V0IGZyYW1lIFtsaW5kZXgg
JHN0YWNrIGVuZF0KCiAgICBpZiB7JHBhc3NubyA9PSAxfSB7CiAgICAgICAgYXJyYXkgc2V0IGF2
IFtscmFuZ2UgJGZyYW1lIDEgZW5kXQoKICAgICAgICBzZXQgZWxlbVggJGF2KGVsZW1OKQogICAg
ICAgIGFycmF5IHNldCBhdHRycyAkZWxlbSgkZWxlbVgpCiAgICAgICAgaWYgeyFbc3RyaW5nIGNv
bXBhcmUgJGF2KGN0ZXh0KSB5ZXNdfSB7CiAgICAgICAgICAgIGFwcGVuZCBhdHRycyguQ1RFWFQp
ICRjaGFycwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNldCBhdHRycyguQ0xJTkVTKSBb
bGxlbmd0aCBbc3BsaXQgJHRleHQgIlxuIl1dCiAgICAgICAgfQogICAgICAgIHNldCBlbGVtKCRl
bGVtWCkgW2FycmF5IGdldCBhdHRyc10KCiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgaWYge1ts
c2VhcmNoMCAkc3RhY2sgcmVmZXJlbmNlc10gPj0gMH0gewogICAgICAgIHJldHVybgogICAgfQoK
ICAgIHN3aXRjaCAtLSBbbGluZGV4ICRmcmFtZSAwXSB7CiAgICAgICAgYXJ0d29yayB7CiAgICAg
ICAgICAgIHNldCBwcmUgMQogICAgICAgIH0KCiAgICAgICAgdAogICAgICAgICAgICAtCiAgICAg
ICAgcHJlYW1ibGUKICAgICAgICAgICAgLQogICAgICAgIHBvc3RhbWJsZSB7CiAgICAgICAgICAg
IHNldCBwcmUgMAogICAgICAgIH0KCiAgICAgICAgZGVmYXVsdCB7CiAgICAgICAgICAgIHJldHVy
bgogICAgICAgIH0KICAgIH0KCiAgICBwY2RhdGFfJG1vZGUgJHRleHQgJHByZQp9CgoKIyBwcm9j
ZXNzaW5nIGluc3RydWN0aW9ucwoKcHJvYyBwaSB7YXJnc30gewogICAgZ2xvYmFsIG9wdGlvbnMK
ICAgIGdsb2JhbCBjb3VudGVyIGRlcHRoIGVsZW1OIGVsZW0gcGFzc25vIHN0YWNrIHhyZWYKCiAg
ICBzd2l0Y2ggLS0gW2xpbmRleCAkYXJncyAwXS9bbGxlbmd0aCAkYXJnc10gewogICAgICAgIHht
bC8yIHsKICAgICAgICAgICAgaWYgeyhbc3RyaW5nIGZpcnN0ICJ2ZXJzaW9uPVwiMS4wXCIiIFts
aW5kZXggJGFyZ3MgMV1dIDwgMCkgXAogICAgICAgICAgICAgICAgICAgICYmIChbc3RyaW5nIGZp
cnN0ICJ2ZXJzaW9uPScxLjAnIiBbbGluZGV4ICRhcmdzIDFdXSA8IDApfSB7CiAgICAgICAgICAg
ICAgICB1bmV4cGVjdGVkIGVycm9yICJ1bmV4cGVjdGVkIDw/eG1sIC4uLj8+IgogICAgICAgICAg
ICB9CiAgICAgICAgfQoKICAgICAgICBET0NUWVBFLzQgewogICAgICAgICAgICBpZiB7W2luZm8g
ZXhpc3RzIHN0YWNrXX0gewogICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgIGlmIHshW3N0cmluZyBtYXRjaCAiLXB1YmxpYyAtc3lzdGVtIHJmYyouZHRkIiBc
CiAgICAgICAgICAgICAgICAgICAgICAgICBbbHJhbmdlICRhcmdzIDEgZW5kXV19IHsKICAgICAg
ICAgICAgICAgIHVuZXhwZWN0ZWQgZXJyb3IgInVuZXhwZWN0ZWQgRE9DVFlQRTogW2xyYW5nZSAk
YXJncyAxIGVuZF0iCiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJmYy8yIHsKICAg
ICAgICAgICAgc2V0IHRleHQgW3N0cmluZyB0cmltIFtsaW5kZXggJGFyZ3MgMV1dCiAgICAgICAg
ICAgIGlmIHtbY2F0Y2ggeyAKICAgICAgICAgICAgICAgIGlmIHtbbGxlbmd0aCBbc2V0IHBhcmFt
cyBbc3BsaXQgJHRleHQgPV1dXSAhPSAyfSB7CiAgICAgICAgICAgICAgICAgICAgZXJyb3IgIiIK
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldCBrZXkgW2xpbmRleCAkcGFyYW1z
IDBdCiAgICAgICAgICAgICAgICBzZXQgdmFsdWUgW2xpbmRleCAkcGFyYW1zIDFdCiAgICAgICAg
ICAgICAgICBpZiB7W3N0cmluZyBmaXJzdCAiJyIgJHZhbHVlXX0gewogICAgICAgICAgICAgICAg
ICAgIHJlZ3N1YiAtLSB7XiIoW14iXSopIiR9ICR2YWx1ZSB7XDF9IHZhbHVlCiAgICAgICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHJlZ3N1YiAtLSB7XicoW14nXSopJyR9
ICR2YWx1ZSB7XDF9IHZhbHVlCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiB7
IVtzdHJpbmcgY29tcGFyZSAka2V5IGluY2x1ZGVdfSB7CiAgICAgICAgICAgICAgICAgICAgcmV0
dXJuCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXQgb3B0aW9ucygka2V5KSAk
dmFsdWUKICAgICAgICAgICAgfV19IHsKICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWQgZXJyb3Ig
ImludmFsaWQgcmZjIGluc3RydWN0aW9uOiAkdGV4dCIKICAgICAgICAgICAgfQogICAgICAgICAg
ICBub3JtYWxpemVfb3B0aW9ucwogICAgICAgIH0KCiAgICAgICAgZGVmYXVsdCB7CiAgICAgICAg
ICAgIHNldCB0ZXh0IFtqb2luICRhcmdzICIgIl0KICAgICAgICAgICAgdW5leHBlY3RlZCB3YXJu
aW5nICJ1bmtub3duIFBJOiAkdGV4dCIKICAgICAgICB9CiAgICB9Cn0KCnByb2Mgbm9ybWFsaXpl
X29wdGlvbnMge30gewogICAgZ2xvYmFsIHBhc3NtYXgKICAgIGdsb2JhbCBvcHRpb25zCiAgICBn
bG9iYWwgbW9kZQogICAgZ2xvYmFsIHJlbW90ZVAKCiAgICBpZiB7JHJlbW90ZVB9IHsKICAgICAg
ICBzZXQgb3B0aW9ucyhzbGlkZXMpIG5vCiAgICB9CiAgICBmb3JlYWNoIHtvIE99IFtsaXN0IGNv
bXBhY3QgICAgLkNPTVBBQ1QgICAgXAogICAgICAgICAgICAgICAgICAgICAgICBlZGl0aW5nICAg
IC5FRElUSU5HICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgZW1vdGljb25pYyAuRU1PVElD
T05JQyBcCiAgICAgICAgICAgICAgICAgICAgICAgIHNsaWRlcyAgICAgLlNMSURFUyAgICAgXAog
ICAgICAgICAgICAgICAgICAgICAgICBzb3J0cmVmcyAgIC5TT1JUUkVGUyAgIFwKICAgICAgICAg
ICAgICAgICAgICAgICAgc3ViY29tcGFjdCAuU1VCQ09NUEFDVCBcCiAgICAgICAgICAgICAgICAg
ICAgICAgIHN5bXJlZnMgICAgLlNZTVJFRlMgICAgXAogICAgICAgICAgICAgICAgICAgICAgICB0
b2MgICAgICAgIC5UT0MgICAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgdG9jb21wYWN0
ICAuVE9DT01QQUNUICBcCiAgICAgICAgICAgICAgICAgICAgICAgIHRvcGJsb2NrICAgLlRPUEJM
T0NLXSB7CiAgICAgICAgc3dpdGNoIC0tICRvcHRpb25zKCRvKSB7CiAgICAgICAgICAgIHllcyAt
IHRydWUgLSAxIHsKICAgICAgICAgICAgICAgIHNldCBvcHRpb25zKCRPKSAxCiAgICAgICAgICAg
IH0KCiAgICAgICAgICAgIGRlZmF1bHQgewogICAgICAgICAgICAgICAgc2V0IG9wdGlvbnMoJE8p
IDAKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBmb3JlYWNoIHtvIE99IFtsaXN0
IHRvY2RlcHRoIC5UT0NERVBUSF0gewogICAgICAgIGlmIHtbY2F0Y2ggeyBpbmNyIG9wdGlvbnMo
JG8pIDAgfV19IHsKICAgICAgICAgICAgdW5leHBlY3RlZCBlcnJvciAiaW52YWxpZCAkbyB2YWx1
ZSAnJG9wdGlvbnMoJG8pJyIKICAgICAgICB9CiAgICAgICAgc2V0IG9wdGlvbnMoJE8pICRvcHRp
b25zKCRvKQogICAgfQoKICAgIGZvcmVhY2gge28gT30gW2xpc3QgZm9vdGVyICAuRk9PVEVSIFwK
ICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyICAuSEVBREVSICBcCiAgICAgICAgICAgICAg
ICAgICAgICAgIHByaXZhdGUgLlBSSVZBVEVdIHsKICAgICAgICBzZXQgb3B0aW9ucygkTykgMAog
ICAgICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJG9wdGlvbnMoJG8pICIiXX0gewogICAgICAgICAg
ICBzZXQgb3B0aW9ucygkTykgMQogICAgICAgIH0KICAgIH0KICAgIHN3aXRjaCAtLSAkbW9kZSB7
CiAgICAgICAgbnIgIC0KICAgICAgICB0eHQgewogICAgICAgICAgICBpZiB7JG9wdGlvbnMoLlRP
Qyl9IHsKICAgICAgICAgICAgICAgIHNldCBwYXNzbWF4IDMKICAgICAgICAgICAgfQogICAgICAg
IH0KCiAgICAgICAgaHRtbCB7CiAgICAgICAgICAgIGlmIHskb3B0aW9ucyguU0xJREVTKX0gewog
ICAgICAgICAgICAgICAgc2V0IHBhc3NtYXggMwogICAgICAgICAgICB9CiAgICAgICAgfQogICAg
fQogICAgaWYgeyEkb3B0aW9ucyguQ09NUEFDVCl9IHsKICAgICAgICBzZXQgb3B0aW9ucyguU1VC
Q09NUEFDVCkgMAogICAgfQogICAgaWYgeyRvcHRpb25zKC5QUklWQVRFKX0gewogICAgICAgIHNl
dCBvcHRpb25zKC5IRUFERVIpIDEKICAgICAgICBzZXQgb3B0aW9ucyguRk9PVEVSKSAxCiAgICB9
Cn0KCgojIHhtbCBhbmQgZHRkIGRlY2xhcmF0aW9uCgpwcm9jIHhtbGRlY2wge3ZlcnNpb24gZW5j
b2Rpbmcgc3RhbmRhbG9uZX0gewogICAgaWYge1tzdHJpbmcgY29tcGFyZSAkdmVyc2lvbiAxLjBd
fSB7CiAgICAgICAgdW5leHBlY3RlZCBlcnJvciAiaW52YWxpZCBYTUwgdmVyc2lvbjogJHZlcnNp
b24iCiAgICB9Cn0KCgpwcm9jIGRvY3R5cGUge2VsZW1lbnQgcHVibGljIHN5c3RlbSBpbnRlcm5h
bH0gewogICAgZ2xvYmFsIGNvdW50ZXIgZGVwdGggZWxlbU4gZWxlbSBwYXNzbm8gc3RhY2sgeHJl
ZgoKICAgIGlmIHtbaW5mbyBleGlzdHMgc3RhY2tdfSB7CiAgICAgICAgcmV0dXJuCiAgICB9Cgog
ICAgaWYge1tzdHJpbmcgY29tcGFyZSAkZWxlbWVudCByZmNdIFwKICAgICAgICAgICAgfHwgW3N0
cmluZyBjb21wYXJlICRwdWJsaWMgIiJdIFwKICAgICAgICAgICAgfHwgKCFbc3RyaW5nIG1hdGNo
ICJyZmMqLmR0ZCIgJHN5c3RlbV0pfSB7CiAgICAgICAgdW5leHBlY3RlZCBlcnJvciAiaW52YWxp
ZCBET0NUWVBFOiAkZWxlbWVudCskcHVibGljKyRzeXN0ZW0rJGludGVybmFsIgogICAgfQp9CgoK
IyB0aGUgdW5leHBlY3RlZCAuLi4KCnByb2MgdW5leHBlY3RlZCB7YXJnc30gewogICAgZ2xvYmFs
IGd1aVAKCiAgICBzZXQgdGV4dCBbam9pbiBbbHJhbmdlICRhcmdzIDEgZW5kXSAiICJdCgogICAg
c3dpdGNoIC0tIFtzZXQgdHlwZSBbbGluZGV4ICRhcmdzIDBdXSB7CiAgICAgICAgZXJyb3Igewog
ICAgICAgICAgICBnbG9iYWwgZXJyb3JQCgogICAgICAgICAgICBzZXQgZXJyb3JQIDEKICAgICAg
ICAgICAgcmV0dXJuIC1jb2RlIGVycm9yICR0ZXh0CiAgICAgICAgfQoKICAgICAgICBub3RpY2Ug
ewogICAgICAgICAgICBpZiB7JGd1aVAgPT0gLTF9IHsKICAgICAgICAgICAgICAgIHB1dHMgc3Rk
b3V0ICR0ZXh0CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGRlZmF1bHQgewogICAg
ICAgICAgICBzd2l0Y2ggLS0gJGd1aVAgewogICAgICAgICAgICAgICAgMSB7CiAgICAgICAgICAg
ICAgICAgICAgdGtfZGlhbG9nIC51bmV4cGVjdGVkICJ4bWwycmZjOiAkdHlwZSIgJHRleHQgJHR5
cGUgMCBPSwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC0xIHsKICAgICAgICAg
ICAgICAgICAgICBwdXRzIHN0ZG91dCAiJHR5cGU6ICR0ZXh0IgogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CgoKIwojIHNwZWNpZmljIGVsZW1lbnRzCiMK
CgojIHRoZSB3aG9sZSBkb2N1bWVudAoKZ2xvYmFsIGNvcHlsb25nCgpzZXQgY29weWxvbmcgewoi
Q29weXJpZ2h0IChDKSBUaGUgSW50ZXJuZXQgU29jaWV0eSAoJVlFQVIlKS4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4iCgoiVGhpcyBkb2N1bWVudCBhbmQgdHJhbnNsYXRpb25zIG9mIGl0IG1heSBiZSBj
b3BpZWQgYW5kIGZ1cm5pc2hlZCB0bwpvdGhlcnMsIGFuZCBkZXJpdmF0aXZlIHdvcmtzIHRoYXQg
Y29tbWVudCBvbiBvciBvdGhlcndpc2UgZXhwbGFpbiBpdApvciBhc3Npc3QgaW4gaXRzIGltcGxl
bWVudGF0aW9uIG1heSBiZSBwcmVwYXJlZCwgY29waWVkLCBwdWJsaXNoZWQgYW5kCmRpc3RyaWJ1
dGVkLCBpbiB3aG9sZSBvciBpbiBwYXJ0LCB3aXRob3V0IHJlc3RyaWN0aW9uIG9mIGFueSBraW5k
LApwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBhcmFn
cmFwaCBhcmUKaW5jbHVkZWQgb24gYWxsIHN1Y2ggY29waWVzIGFuZCBkZXJpdmF0aXZlIHdvcmtz
LiBIb3dldmVyLCB0aGlzCmRvY3VtZW50IGl0c2VsZiBtYXkgbm90IGJlIG1vZGlmaWVkIGluIGFu
eSB3YXksIHN1Y2ggYXMgYnkgcmVtb3ZpbmcKdGhlIGNvcHlyaWdodCBub3RpY2Ugb3IgcmVmZXJl
bmNlcyB0byB0aGUgSW50ZXJuZXQgU29jaWV0eSBvciBvdGhlcgpJbnRlcm5ldCBvcmdhbml6YXRp
b25zLCBleGNlcHQgYXMgbmVlZGVkIGZvciB0aGUgcHVycG9zZSBvZgpkZXZlbG9waW5nIEludGVy
bmV0IHN0YW5kYXJkcyBpbiB3aGljaCBjYXNlIHRoZSBwcm9jZWR1cmVzIGZvcgpjb3B5cmlnaHRz
IGRlZmluZWQgaW4gdGhlIEludGVybmV0IFN0YW5kYXJkcyBwcm9jZXNzIG11c3QgYmUKZm9sbG93
ZWQsIG9yIGFzIHJlcXVpcmVkIHRvIHRyYW5zbGF0ZSBpdCBpbnRvIGxhbmd1YWdlcyBvdGhlciB0
aGFuCkVuZ2xpc2guIgoKIlRoZSBsaW1pdGVkIHBlcm1pc3Npb25zIGdyYW50ZWQgYWJvdmUgYXJl
IHBlcnBldHVhbCBhbmQgd2lsbCBub3QgYmUKcmV2b2tlZCBieSB0aGUgSW50ZXJuZXQgU29jaWV0
eSBvciBpdHMgc3VjY2Vzc29ycyBvciBhc3NpZ25zLiIKCiJUaGlzIGRvY3VtZW50IGFuZCB0aGUg
aW5mb3JtYXRpb24gY29udGFpbmVkIGhlcmVpbiBpcyBwcm92aWRlZCBvbiBhbgomcXVvdDtBUyBJ
UyZxdW90OyBiYXNpcyBhbmQgVEhFIElOVEVSTkVUIFNPQ0lFVFkgQU5EIFRIRSBJTlRFUk5FVCBF
TkdJTkVFUklORwpUQVNLIEZPUkNFIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUywgRVhQUkVTUyBP
UiBJTVBMSUVELCBJTkNMVURJTkcKQlVUIE5PVCBMSU1JVEVEIFRPIEFOWSBXQVJSQU5UWSBUSEFU
IFRIRSBVU0UgT0YgVEhFIElORk9STUFUSU9OCkhFUkVJTiBXSUxMIE5PVCBJTkZSSU5HRSBBTlkg
UklHSFRTIE9SIEFOWSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKTUVSQ0hBTlRBQklMSVRZIE9SIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiIKfQoKZ2xvYmFsIGZ1bmRpbmcKCnNldCBm
dW5kaW5nIFwKIkZ1bmRpbmcgZm9yIHRoZSBSRkMgRWRpdG9yIGZ1bmN0aW9uIGlzIGN1cnJlbnRs
eSBwcm92aWRlZCBieSB0aGUKSW50ZXJuZXQgU29jaWV0eS4iCgoKcHJvYyBwYXNzMmJlZ2luX3Jm
YyB7ZWxlbVh9IHsKICAgIGdsb2JhbCBjb3VudGVyIGRlcHRoIGVsZW1OIGVsZW0gcGFzc25vIHN0
YWNrIHhyZWYKICAgIGdsb2JhbCBvcHRpb25zIGNvcHlyaWdodFAKCiAgICBhcnJheSBzZXQgYXR0
cnMgW2xpc3QgbnVtYmVyICIiICAgICBvYnNvbGV0ZXMgIiIgdXBkYXRlcyAiIiBcCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2F0ZWdvcnkgaW5mbyBzZXJpZXNObyAgIiIgaXByICAgICAiIl0K
ICAgIGFycmF5IHNldCBhdHRycyAkZWxlbSgkZWxlbVgpCiAgICBzZXQgZWxlbSgkZWxlbVgpIFth
cnJheSBnZXQgYXR0cnNdCgogICAgaWYgeyghJG9wdGlvbnMoLlBSSVZBVEUpKSBcCiAgICAgICAg
ICAgICYmICghW3N0cmluZyBjb21wYXJlICRhdHRycyhudW1iZXIpICIiXSkgXAogICAgICAgICAg
ICAmJiAoIVtzdHJpbmcgY29tcGFyZSAkYXR0cnMoaXByKSAiIl0pfSB7CiAgICAgICAgdW5leHBl
Y3RlZCBlcnJvciBcCiAgICAgICAgICAgICAgICAgICAicmZjIGVsZW1lbnQgbmVlZHMgZWl0aGVy
IGEgbnVtYmVyIG9yIGFuIGlwciBhdHRyaWJ1dGUiCiAgICB9CiAgICBpZiB7IVtzdHJpbmcgY29t
cGFyZSAkYXR0cnMoaXByKSBub25lXX0gewogICAgICAgIHNldCBjb3B5cmlnaHRQIDAKICAgIH0g
ZWxzZSB7CiAgICAgICAgc2V0IGNvcHlyaWdodFAgMQogICAgfQoKICAgIHNldCBmaXJzdHhyZWYg
W2xpc3QgIiJdCiAgICBpZiB7W2luZm8gZXhpc3RzIGNvdW50ZXIoZmlyc3R4cmVmKV19IHsKICAg
ICAgICBmb3JlYWNoIHRhcmdldCAkY291bnRlcihmaXJzdHhyZWYpIHsKICAgICAgICAgICAgaWYg
eyghW2NhdGNoIHsgYXJyYXkgc2V0IGF2ICR4cmVmKCR0YXJnZXQpIH1dKSBcCiAgICAgICAgICAg
ICAgICAgICAgJiYgKCFbc3RyaW5nIGNvbXBhcmUgJGF2KHR5cGUpIHJlZmVyZW5jZV0pfSB7CiAg
ICAgICAgICAgICAgICBsYXBwZW5kIGZpcnN0eHJlZiAkdGFyZ2V0CiAgICAgICAgICAgIH0KICAg
ICAgICB9CiAgICB9CgogICAgaWYgeygkcGFzc25vID09IDIpIFwKICAgICAgICAgICAgJiYgJG9w
dGlvbnMoLlNPUlRSRUZTKSBcCiAgICAgICAgICAgICYmICEkb3B0aW9ucyguU1lNUkVGUykgXAog
ICAgICAgICAgICAmJiAoW2luZm8gZXhpc3RzIGNvdW50ZXIoZmlyc3R4cmVmKV0pIFwKICAgICAg
ICAgICAgJiYgKFtsbGVuZ3RoIFtzZXQgYmFjayBbZmluZF9lbGVtZW50IGJhY2sgJGF0dHJzKC5D
SElMRFJFTildXV0gXAogICAgICAgICAgICAgICAgICAgID09IDEpfSB7CiAgICAgICAgY2F0Y2gg
eyB1bnNldCBidiB9CiAgICAgICAgYXJyYXkgc2V0IGJ2ICRlbGVtKCRiYWNrKQoKICAgICAgICBz
ZXQgb2Zmc2V0IDAKICAgICAgICBmb3JlYWNoIHJlZnMgW2ZpbmRfZWxlbWVudCByZWZlcmVuY2Vz
ICRidiguQ0hJTERSRU4pXSB7CiAgICAgICAgICAgIGNhdGNoIHsgdW5zZXQgc3YgfQogICAgICAg
ICAgICBhcnJheSBzZXQgc3YgJGVsZW0oJHJlZnMpCgogICAgICAgICAgICBmb3JlYWNoIHJlZiBb
ZmluZF9lbGVtZW50IHJlZmVyZW5jZSAkc3YoLkNISUxEUkVOKV0gewogICAgICAgICAgICAgICAg
Y2F0Y2ggeyB1bnNldCBydiB9CiAgICAgICAgICAgICAgICBhcnJheSBzZXQgcnYgJGVsZW0oJHJl
ZikKICAgICAgICAgICAgICAgIGlmIHtbc2V0IHggW2xzZWFyY2ggJGZpcnN0eHJlZiAkcnYoYW5j
aG9yKV1dIDwgMH0gewogICAgICAgICAgICAgICAgICAgIHNldCB4IFtsbGVuZ3RoICRmaXJzdHhy
ZWZdCiAgICAgICAgICAgICAgICAgICAgbGFwcGVuZCBmaXJzdHhyZWYgJHJ2KGFuY2hvcikKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHNldCBydiguQ09VTlRFUikgJHgKICAgICAg
ICAgICAgICAgIHNldCBlbGVtKCRyZWYpIFthcnJheSBnZXQgcnZdCiAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgIGZvcmVhY2ggcmVmIFtsc29ydCAtY29tbWFuZCBzb3J0X3JlZmVyZW5jZXMgXAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmaW5kX2VsZW1lbnQgcmVmZXJlbmNlICRz
diguQ0hJTERSRU4pXV0gewogICAgICAgICAgICAgICAgY2F0Y2ggeyB1bnNldCBydiB9CiAgICAg
ICAgICAgICAgICBhcnJheSBzZXQgcnYgJGVsZW0oJHJlZikKICAgICAgICAgICAgICAgIHNldCBy
diguQ09VTlRFUikgW2luY3Igb2Zmc2V0XQogICAgICAgICAgICAgICAgc2V0IGVsZW0oJHJlZikg
W2FycmF5IGdldCBydl0KCiAgICAgICAgICAgICAgICBzZXQgdGFyZ2V0ICRydihhbmNob3IpCiAg
ICAgICAgICAgICAgICBjYXRjaCB7IHVuc2V0IHh2IH0KICAgICAgICAgICAgICAgIGFycmF5IHNl
dCB4diAkeHJlZigkdGFyZ2V0KQogICAgICAgICAgICAgICAgc2V0IHh2KHZhbHVlKSAkb2Zmc2V0
CiAgICAgICAgICAgICAgICBzZXQgeHJlZigkdGFyZ2V0KSBbYXJyYXkgZ2V0IHh2XQogICAgICAg
ICAgICB9CiAgICAgICAgfQogICAgfQp9Cgpwcm9jIHBhc3MyZW5kX3JmYyB7ZWxlbVh9IHsKICAg
IGdsb2JhbCBjb3VudGVyIGRlcHRoIGVsZW1OIGVsZW0gcGFzc25vIHN0YWNrIHhyZWYKICAgIGds
b2JhbCBlbGVtWgogICAgZ2xvYmFsIG1vZGUKICAgIGdsb2JhbCBjb3B5bG9uZwoKICAgIGFycmF5
IHNldCBhdHRycyAkZWxlbSgkZWxlbVgpCgogICAgc2V0IGZyb250IFtmaW5kX2VsZW1lbnQgZnJv
bnQgJGF0dHJzKC5DSElMRFJFTildCiAgICBhcnJheSBzZXQgZnYgJGVsZW0oJGZyb250KQoKICAg
IHNldCBkYXRlIFtmaW5kX2VsZW1lbnQgZGF0ZSAkZnYoLkNISUxEUkVOKV0KICAgIGFycmF5IHNl
dCBkdiAkZWxlbSgkZGF0ZSkKCiAgICByZWdzdWIgLWFsbCAlWUVBUiUgJGNvcHlsb25nICRkdih5
ZWFyKSBjb3B5aW5nCgogICAgaWYgeyFbY2F0Y2ggeyBzZXQgd2hvICRhdHRycyhkaXNjbGFpbWFu
dCkgfV19IHsKICAgICAgICBsYXBwZW5kIGNvcHlpbmcgXAoiJVdITyUgZXhwcmVzc2x5IGRpc2Ns
YWltcyBhbnkgYW5kIGFsbCB3YXJyYW50aWVzIHJlZ2FyZGluZyB0aGlzIApjb250cmlidXRpb24g
aW5jbHVkaW5nIGFueSB3YXJyYW50eSB0aGF0IChhKSB0aGlzIGNvbnRyaWJ1dGlvbiBkb2VzIApu
b3QgdmlvbGF0ZSB0aGUgcmlnaHRzIG9mIG90aGVycywgKGIpIHRoZSBvd25lcnMsIGlmIGFueSwg
b2Ygb3RoZXIgCnJpZ2h0cyBpbiB0aGlzIGNvbnRyaWJ1dGlvbiBoYXZlIGJlZW4gaW5mb3JtZWQg
b2YgdGhlIHJpZ2h0cyBhbmQgCnBlcm1pc3Npb25zIGdyYW50ZWQgdG8gSUVURiBoZXJlaW4sIGFu
ZCAoYykgYW55IHJlcXVpcmVkIAphdXRob3JpemF0aW9ucyBmcm9tIHN1Y2ggb3duZXJzIGhhdmUg
YmVlbiBvYnRhaW5lZC4KVGhpcyBkb2N1bWVudCBhbmQgdGhlIGluZm9ybWF0aW9uIGNvbnRhaW5l
ZCBoZXJlaW4gaXMgcHJvdmlkZWQgb24gCmFuICZxdW90O0FTIElTJnF1b3Q7IGJhc2lzIGFuZCAl
VVdITyUgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTLCBFWFBSRVNTIE9SIApJTVBMSUVELCBJTkNM
VURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIEFOWSBXQVJSQU5UWSBUSEFUIFRIRSBVU0UgCk9GIFRI
RSBJTkZPUk1BVElPTiBIRVJFSU4gV0lMTCBOT1QgSU5GUklOR0UgQU5ZIFJJR0hUUyBPUiBBTlkg
CklNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIApQVVJQT1NFLiIgXAogXAoiSU4gTk8gRVZFTlQgV0lMTCAlVVdITyUgQkUgTElB
QkxFIFRPIEFOWSBPVEhFUiBQQVJUWSBJTkNMVURJTkcgClRIRSBJRVRGIEFORCBJVFMgTUVNQkVS
UyBGT1IgVEhFIENPU1QgT0YgUFJPQ1VSSU5HIFNVQlNUSVRVVEUgR09PRFMgCk9SIFNFUlZJQ0VT
LCBMT1NUIFBST0ZJVFMsIExPU1MgT0YgVVNFLCBMT1NTIE9GIERBVEEsIE9SIEFOWSAKSU5DSURF
TlRBTCwgQ09OU0VRVUVOVElBTCwgSU5ESVJFQ1QsIE9SIFNQRUNJQUwgREFNQUdFUyBXSEVUSEVS
IApVTkRFUiBDT05UUkFDVCwgVE9SVCwgV0FSUkFOVFksIE9SIE9USEVSV0lTRSwgQVJJU0lORyBJ
TiBBTlkgV0FZIApPVVQgT0YgVEhJUyBPUiBBTlkgT1RIRVIgQUdSRUVNRU5UIFJFTEFUSU5HIFRP
IFRISVMgRE9DVU1FTlQsIApXSEVUSEVSIE9SIE5PVCBTVUNIIFBBUlRZIEhBRCBBRFZBTkNFIE5P
VElDRSBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgClNVQ0ggREFNQUdFUy4iCgogICAgICAgIHJlZ3N1
YiAtYWxsICVXSE8lICRjb3B5aW5nICR3aG8gY29weWluZyAgICAKICAgICAgICByZWdzdWIgLWFs
bCAlVVdITyUgJGNvcHlpbmcgW3N0cmluZyB0b3VwcGVyICR3aG9dIGNvcHlpbmcKICAgIH0KCiAg
ICBhcnJheSBzZXQgaW5kZXggIiIKICAgIGZvciB7c2V0IGVsZW1ZIDF9IHskZWxlbVkgPD0gJGVs
ZW1afSB7aW5jciBlbGVtWX0gewogICAgICAgIGNhdGNoIHsgdW5zZXQgaXYgfQogICAgICAgIGFy
cmF5IHNldCBpdiAkZWxlbSgkZWxlbVkpCgogICAgICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJGl2
KC5OQU1FKSBpcmVmXX0gewogICAgICAgICAgICBjb250aW51ZQogICAgICAgIH0KICAgICAgICBs
YXBwZW5kIGluZGV4KCRpdihpdGVtKSskaXYoc3ViaXRlbSkrJGl2KGZsYWdzKSkgJGl2KC5BTkNI
T1IpCiAgICB9CiAgICBzZXQgaXRlbXMgW2xzb3J0IC1kaWN0aW9uYXJ5IFthcnJheSBuYW1lcyBp
bmRleF1dCgogICAgc2V0IGlyZWZzICIiCiAgICBzZXQgTCAiIgogICAgc2V0IEsgIiIKICAgIGZv
cmVhY2ggaXRlbSAkaXRlbXMgewogICAgICAgIHNldCBpcmVmICIiCiAgICAgICAgZm9yZWFjaCB7
a2V5IHN1YmtleSBmbGFnc30gW3NwbGl0ICRpdGVtICtdIHsgYnJlYWsgfQogICAgICAgIGlmIHtb
c3RyaW5nIGNvbXBhcmUgW3NldCBjIFtzdHJpbmcgdG91cHBlciBbc3RyaW5nIGluZGV4ICRrZXkg
MF1dXSBcCiAgICAgICAgICAgICAgICAgICAgJExdfSB7CiAgICAgICAgICAgIGxhcHBlbmQgaXJl
ZiBbc2V0IEwgJGNdCiAgICAgICAgICAgIHNldCBLICIiCiAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgbGFwcGVuZCBpcmVmICIiCiAgICAgICAgfQogICAgICAgIGlmIHtbc3RyaW5nIGNvbXBh
cmUgJGtleSAkS119IHsKICAgICAgICAgICAgbGFwcGVuZCBpcmVmIFtzZXQgSyAka2V5XQogICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGxhcHBlbmQgaXJlZiAiIgogICAgICAgIH0KICAgICAg
ICBsYXBwZW5kIGlyZWYgJHN1YmtleQogICAgICAgIGxhcHBlbmQgaXJlZiAkZmxhZ3MKICAgICAg
ICBsYXBwZW5kIGlyZWYgJGluZGV4KCRpdGVtKQogICAgICAgIGxhcHBlbmQgaXJlZnMgJGlyZWYK
ICAgIH0KCgogICAgc2V0IGF0dHJzKC5BTkNIT1IpIFtyZmNfJG1vZGUgJGlyZWZzICRjb3B5aW5n
XQogICAgc2V0IGVsZW0oJGVsZW1YKSBbYXJyYXkgZ2V0IGF0dHJzXQp9CgoKIyB0aGUgZnJvbnQg
KGVpdGhlciBmb3IgdGhlIHJmYyBvciBhIHJlZmVyZW5jZSkKCmdsb2JhbCBjb3B5c2hvcnQgaWRp
bmZvCgpzZXQgY29weXNob3J0IFwKIkNvcHlyaWdodCAoQykgVGhlIEludGVybmV0IFNvY2lldHkg
KCVZRUFSJSkuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuIgoKc2V0IGlkaW5mbyB7CiAgICB7CiJUaGlz
IGRvY3VtZW50IGlzIGFuIEludGVybmV0LURyYWZ0IGFuZCBpcyAlSVBSJSIKCiJJbnRlcm5ldC1E
cmFmdHMgYXJlIHdvcmtpbmcgZG9jdW1lbnRzIG9mIHRoZSBJbnRlcm5ldCBFbmdpbmVlcmluZwpU
YXNrIEZvcmNlIChJRVRGKSwgaXRzIGFyZWFzLCBhbmQgaXRzIHdvcmtpbmcgZ3JvdXBzLgpOb3Rl
IHRoYXQgb3RoZXIgZ3JvdXBzIG1heSBhbHNvIGRpc3RyaWJ1dGUgd29ya2luZyBkb2N1bWVudHMg
YXMKSW50ZXJuZXQtRHJhZnRzLiIKCiJJbnRlcm5ldC1EcmFmdHMgYXJlIGRyYWZ0IGRvY3VtZW50
cyB2YWxpZCBmb3IgYSBtYXhpbXVtIG9mIHNpeCBtb250aHMKYW5kIG1heSBiZSB1cGRhdGVkLCBy
ZXBsYWNlZCwgb3Igb2Jzb2xldGVkIGJ5IG90aGVyIGRvY3VtZW50cyBhdCBhbnkgdGltZS4KSXQg
aXMgaW5hcHByb3ByaWF0ZSB0byB1c2UgSW50ZXJuZXQtRHJhZnRzIGFzIHJlZmVyZW5jZSBtYXRl
cmlhbCBvciB0byBjaXRlCnRoZW0gb3RoZXIgdGhhbiBhcyBcIndvcmsgaW4gcHJvZ3Jlc3MuXCIi
CgoiVGhlIGxpc3Qgb2YgY3VycmVudCBJbnRlcm5ldC1EcmFmdHMgY2FuIGJlIGFjY2Vzc2VkIGF0
Cmh0dHA6Ly93d3cuaWV0Zi5vcmcvaWV0Zi8xaWQtYWJzdHJhY3RzLnR4dC4iCgoiVGhlIGxpc3Qg
b2YgSW50ZXJuZXQtRHJhZnQgU2hhZG93IERpcmVjdG9yaWVzIGNhbiBiZSBhY2Nlc3NlZCBhdApo
dHRwOi8vd3d3LmlldGYub3JnL3NoYWRvdy5odG1sLiIKCiJUaGlzIEludGVybmV0LURyYWZ0IHdp
bGwgZXhwaXJlIG9uICVFWFBJUkVTJS4iCiAgICB9CgogICAgewoiVGhpcyBkb2N1bWVudCBpcyBh
biBJbnRlcm5ldC1EcmFmdCBhbmQgaXMgJUlQUiUiCgoiSW50ZXJuZXQtRHJhZnRzIGFyZSB3b3Jr
aW5nIGRvY3VtZW50cyBvZiB0aGUgSW50ZXJuZXQgRW5naW5lZXJpbmcKVGFzayBGb3JjZSAoSUVU
RiksIGl0cyBhcmVhcywgYW5kIGl0cyB3b3JraW5nIGdyb3Vwcy4KTm90ZSB0aGF0IG90aGVyIGdy
b3VwcyBtYXkgYWxzbyBkaXN0cmlidXRlIHdvcmtpbmcgZG9jdW1lbnRzIGFzCkludGVybmV0LURy
YWZ0cy4iCgoiSW50ZXJuZXQtRHJhZnRzIGFyZSBkcmFmdCBkb2N1bWVudHMgdmFsaWQgZm9yIGEg
bWF4aW11bSBvZiBzaXggbW9udGhzCmFuZCBtYXkgYmUgdXBkYXRlZCwgcmVwbGFjZWQsIG9yIG9i
c29sZXRlZCBieSBvdGhlciBkb2N1bWVudHMgYXQgYW55IHRpbWUuCkl0IGlzIGluYXBwcm9wcmlh
dGUgdG8gdXNlIEludGVybmV0LURyYWZ0cyBhcyByZWZlcmVuY2UgbWF0ZXJpYWwgb3IgdG8gY2l0
ZQp0aGVtIG90aGVyIHRoYW4gYXMgXCJ3b3JrIGluIHByb2dyZXNzLlwiIgoKIlRoZSBsaXN0IG9m
IGN1cnJlbnQgSW50ZXJuZXQtRHJhZnRzIGNhbiBiZSBhY2Nlc3NlZCBhdAo8YSBocmVmPSdodHRw
Oi8vd3d3LmlldGYub3JnL2lldGYvMWlkLWFic3RyYWN0cy50eHQnPmh0dHA6Ly93d3cuaWV0Zi5v
cmcvaWV0Zi8xaWQtYWJzdHJhY3RzLnR4dDwvYT4uIgoKIlRoZSBsaXN0IG9mIEludGVybmV0LURy
YWZ0IFNoYWRvdyBEaXJlY3RvcmllcyBjYW4gYmUgYWNjZXNzZWQgYXQKPGEgaHJlZj0naHR0cDov
L3d3dy5pZXRmLm9yZy9zaGFkb3cuaHRtbCc+aHR0cDovL3d3dy5pZXRmLm9yZy9zaGFkb3cuaHRt
bDwvYT4uIgoKIlRoaXMgSW50ZXJuZXQtRHJhZnQgd2lsbCBleHBpcmUgb24gJUVYUElSRVMlLiIK
ICAgIH0KfQoKcHJvYyBwYXNzMmJlZ2luX2Zyb250IHtlbGVtWH0gewogICAgZ2xvYmFsIGNvdW50
ZXIgZGVwdGggZWxlbU4gZWxlbSBwYXNzbm8gc3RhY2sgeHJlZgogICAgZ2xvYmFsIGVsZW1aCiAg
ICBnbG9iYWwgb3B0aW9ucwogICAgZ2xvYmFsIGlmaWxlIG1vZGUgb2ZpbGUKICAgIGdsb2JhbCBj
YXRlZ29yaWVzIGNvcHlzaG9ydCBpZGluZm8gaXByc3RhdHVzCgogICAgYXJyYXkgc2V0IGF0dHJz
ICRlbGVtKCRlbGVtWCkKCiAgICBzZXQgdGl0bGUgW2ZpbmRfZWxlbWVudCB0aXRsZSAkYXR0cnMo
LkNISUxEUkVOKV0KICAgIGFycmF5IHNldCB0diBbbGlzdCBhYmJyZXYgIiJdCiAgICBhcnJheSBz
ZXQgdHYgJGVsZW0oJHRpdGxlKQogICAgaWYgeyhbc3RyaW5nIGxlbmd0aCAkdHYoLkNURVhUKV0g
PiA0NikgXAogICAgICAgICAgICAmJiAoIVtzdHJpbmcgY29tcGFyZSAkdHYoYWJicmV2KSAiIl0p
fSB7CiAgICAgICAgdW5leHBlY3RlZCBlcnJvciAidGl0bGUgZWxlbWVudCBuZWVkcyBhbiBhYmJy
ZXYgYXR0cmlidXRlIgogICAgfQogICAgaWYgeyFbc3RyaW5nIGNvbXBhcmUgJHR2KGFiYnJldikg
IiJdfSB7CiAgICAgICAgc2V0IHR2KGFiYnJldikgJHR2KC5DVEVYVCkKICAgIH0KICAgIHNldCB0
aXRsZSBbbGlzdCAkdHYoLkNURVhUKV0KCiAgICBzZXQgZGF0ZSBbZmluZF9lbGVtZW50IGRhdGUg
JGF0dHJzKC5DSElMRFJFTildCiAgICBhcnJheSBzZXQgZHYgJGVsZW0oJGRhdGUpCiAgICBzZXQg
dGhyZWUgW2Nsb2NrIGZvcm1hdCBbY2xvY2sgc2Vjb25kc10gLWZvcm1hdCAiJUIgJVkgJWQiXQog
ICAgaWYgeyghW2luZm8gZXhpc3RzIGR2KG1vbnRoKV0pIHx8ICghW3N0cmluZyBjb21wYXJlICRk
dihtb250aCkgIiJdKX0gewogICAgICAgIHNldCBkdihtb250aCkgW2xpbmRleCAkdGhyZWUgMF0K
ICAgICAgICBzZXQgZHYoZGF5KSBbc3RyaW5nIHRyaW1sZWZ0IFtsaW5kZXggJHRocmVlIDJdIDBd
ICAgICAgICAKICAgIH0gZWxzZWlmIHtbY2F0Y2ggeyBzZXQgZHYoZGF5KSB9XX0gewogICAgICAg
IGlmIHsoIVtzdHJpbmcgY29tcGFyZSAkZHYobW9udGgpIFtsaW5kZXggJHRocmVlIDBdXSkgXAog
ICAgICAgICAgICAgICAgJiYgKCFbc3RyaW5nIGNvbXBhcmUgJGR2KHllYXIpIFtsaW5kZXggJHRo
cmVlIDFdXSl9IHsKICAgICAgICAgICAgc2V0IGR2KGRheSkgW3N0cmluZyB0cmltbGVmdCBbbGlu
ZGV4ICR0aHJlZSAyXSAwXQogICAgICAgIH0KICAgIH0KICAgIHNldCBlbGVtKCRkYXRlKSBbYXJy
YXkgZ2V0IGR2XQoKICAgIGFycmF5IHNldCBydiAkZWxlbSgxKQogICAgY2F0Y2ggeyBzZXQgb2Zp
bGUgJHJ2KGRvY05hbWUpIH0KCiAgICBpZiB7JG9wdGlvbnMoLlBSSVZBVEUpfSB7CiAgICAgICAg
bGFwcGVuZCBsZWZ0ICRvcHRpb25zKHByaXZhdGUpCgogICAgICAgIHNldCBzdGF0dXMgIiIKICAg
IH0gZWxzZSB7CiAgICAgICAgc2V0IGZpcnN0ICIiCiAgICAgICAgaWYgeyghW3N0cmluZyBjb21w
YXJlICRydihudW1iZXIpICIiXSkgXAogICAgICAgICAgICAgICAgJiYgKFtzdHJpbmcgY29tcGFy
ZSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NldCB3b3JrZ3JvdXAgW2ZpbmRfZWxl
bWVudCB3b3JrZ3JvdXAgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYXR0cnMo
LkNISUxEUkVOKV1dICIiXSl9IHsKICAgICAgICAgICAgYXJyYXkgc2V0IHd2ICRlbGVtKCR3b3Jr
Z3JvdXApCiAgICAgICAgICAgIHNldCBmaXJzdCBbc3RyaW5nIHRyaW0gJHd2KC5DVEVYVCldCiAg
ICAgICAgfQogICAgICAgIGlmIHshW3N0cmluZyBjb21wYXJlICRmaXJzdCAiIl19IHsKICAgICAg
ICAgICAgc2V0IGZpcnN0ICJOZXR3b3JrIFdvcmtpbmcgR3JvdXAiCiAgICAgICAgfQogICAgICAg
IGxhcHBlbmQgbGVmdCAkZmlyc3QKCiAgICAgICAgaWYge1tzdHJpbmcgY29tcGFyZSAkcnYobnVt
YmVyKSAiIl19IHsKICAgICAgICAgICAgbGFwcGVuZCBsZWZ0ICJSZXF1ZXN0IGZvciBDb21tZW50
czogJHJ2KG51bWJlcikiCgogICAgICAgICAgICBzZXQgY2luZGV4IFtsc2VhcmNoMCAkY2F0ZWdv
cmllcyAkcnYoY2F0ZWdvcnkpXQogICAgICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJlICRydihz
ZXJpZXNObykgIiJdfSB7CiAgICAgICAgICAgICAgICBsYXBwZW5kIGxlZnQgXAogICAgICAgICAg
ICAgICAgICAgICAgICAiW2xpbmRleCBbbGluZGV4ICRjYXRlZ29yaWVzICRjaW5kZXhdIDJdOiAk
cnYoc2VyaWVzTm8pIgogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiB7W3N0cmluZyBjb21w
YXJlICRydih1cGRhdGVzKSAiIl19IHsKICAgICAgICAgICAgICAgIGxhcHBlbmQgbGVmdCAiVXBk
YXRlczogJHJ2KHVwZGF0ZXMpIgogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIHtbc3RyaW5n
IGNvbXBhcmUgJHJ2KG9ic29sZXRlcykgIiJdfSB7CiAgICAgICAgICAgICAgICBsYXBwZW5kIGxl
ZnQgIk9ic29sZXRlczogJHJ2KG9ic29sZXRlcykiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAg
IHNldCBjYXRlZ29yeSBbbGluZGV4IFtsaW5kZXggJGNhdGVnb3JpZXMgJGNpbmRleF0gMV0KICAg
ICAgICAgICAgbGFwcGVuZCBsZWZ0ICJDYXRlZ29yeTogJGNhdGVnb3J5IgogICAgICAgICAgICBz
ZXQgc3RhdHVzIFtsaXN0IFtsaW5kZXggW2xpbmRleCAkY2F0ZWdvcmllcyAkY2luZGV4XSAzXV0K
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpZiB7IVtpbmZvIGV4aXN0cyBjb3VudGVyKGFi
c3RyYWN0KV19IHsKICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWQgZXJyb3IgIkktRCBtaXNzaW5n
IGFic3RyYWN0IgogICAgICAgICAgICB9CgogICAgICAgICAgICBsYXBwZW5kIGxlZnQgIkludGVy
bmV0LURyYWZ0IgoKICAgICAgICAgICAgaWYge1tzdHJpbmcgY29tcGFyZSAkcnYodXBkYXRlcykg
IiJdfSB7CiAgICAgICAgICAgICAgICBsYXBwZW5kIGxlZnQgIlVwZGF0ZXM6ICRydih1cGRhdGVz
KSAoaWYgYXBwcm92ZWQpIgogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIHtbc3RyaW5nIGNv
bXBhcmUgJHJ2KG9ic29sZXRlcykgIiJdfSB7CiAgICAgICAgICAgICAgICBsYXBwZW5kIGxlZnQg
Ik9ic29sZXRlczogJHJ2KG9ic29sZXRlcykgKGlmIGFwcHJvdmVkKSIKICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgaWYge1tjYXRjaCB7IHNldCBkYXkgJGR2KGRheSkgfV19IHsKICAgICAgICAg
ICAgICAgIHNldCBkYXkgMQogICAgICAgICAgICB9CiAgICAgICAgICAgIHNldCBzZWNzIFtjbG9j
ayBzY2FuICIkZHYobW9udGgpICRkYXksICRkdih5ZWFyKSIgLWdtdCB0cnVlXQogICAgICAgICAg
ICBpbmNyIHNlY3MgW2V4cHIgKDE4Mio4NjQwMCkrNDMyMDBdCiAgICAgICAgICAgIHNldCBkYXkg
W3N0cmluZyB0cmltbGVmdCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xvY2sgZm9y
bWF0ICRzZWNzIC1mb3JtYXQgIiVkIiAtZ210IHRydWVdIDBdCiAgICAgICAgICAgIHNldCBleHBp
cmVzIFtjbG9jayBmb3JtYXQgJHNlY3MgLWZvcm1hdCAiJUIgJGRheSwgJVkiIC1nbXQgdHJ1ZV0K
ICAgICAgICAgICAgbGFwcGVuZCBsZWZ0ICJFeHBpcmVzOiAkZXhwaXJlcyIKICAgICAgICAgICAg
c2V0IGNhdGVnb3J5ICJFeHBpcmVzICRleHBpcmVzIgogICAgICAgICAgICBpZiB7IVtzdHJpbmcg
Y29tcGFyZSAkbW9kZSBodG1sXX0gewogICAgICAgICAgICAgICAgc2V0IGlpbmRleCAxCiAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBzZXQgaWluZGV4IDAKICAgICAgICAgICAg
fQogICAgICAgICAgICBzZXQgc3RhdHVzIFtsaW5kZXggJGlkaW5mbyAkaWluZGV4XQogICAgICAg
ICAgICByZWdzdWIgLWFsbCAlSVBSJSAkc3RhdHVzIFwKICAgICAgICAgICAgICAgICAgIFtsaW5k
ZXggW2xpbmRleCAkaXByc3RhdHVzIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBbbHNlYXJjaDAgJGlwcnN0YXR1cyAkcnYoaXByKV1dIDFdIHN0YXR1cwogICAgICAgICAgICBy
ZWdzdWIgLWFsbCAlRVhQSVJFUyUgJHN0YXR1cyAkZXhwaXJlcyBzdGF0dXMKICAgICAgICB9CiAg
ICB9CgogICAgc2V0IGF1dGhvcnMgIiIKICAgIHNldCBuYW1lcyAiIgogICAgZm9yZWFjaCBjaGls
ZCBbZmluZF9lbGVtZW50IGF1dGhvciAkYXR0cnMoLkNISUxEUkVOKV0gewogICAgICAgIGFycmF5
IHNldCBhdiBbbGlzdCBpbml0aWFscyAiIiBzdXJuYW1lICIiIGZ1bGxuYW1lICIiXQogICAgICAg
IGFycmF5IHNldCBhdiAkZWxlbSgkY2hpbGQpCgogICAgICAgIHNldCBvcmdhbml6YXRpb24gW2Zp
bmRfZWxlbWVudCBvcmdhbml6YXRpb24gJGF2KC5DSElMRFJFTildCiAgICAgICAgYXJyYXkgc2V0
IG92IFtsaXN0IGFiYnJldiAiIl0KICAgICAgICBhcnJheSBzZXQgb3YgJGVsZW0oJG9yZ2FuaXph
dGlvbikKICAgICAgICBpZiB7IVtzdHJpbmcgY29tcGFyZSAkb3YoYWJicmV2KSAiIl19IHsKICAg
ICAgICAgICAgc2V0IG92KGFiYnJldikgJG92KC5DVEVYVCkKICAgICAgICB9CgogICAgICAgIGlm
IHtbc3RyaW5nIGNvbXBhcmUgJGF2KGluaXRpYWxzKSAiIl19IHsKICAgICAgICAgICAgc2V0IGF2
KGluaXRpYWxzKSBbbGluZGV4IFtzcGxpdCAkYXYoaW5pdGlhbHMpIC5dIDBdLgogICAgICAgIH0K
ICAgICAgICBzZXQgYXYoYWJicmV2KSAiJGF2KGluaXRpYWxzKSAkYXYoc3VybmFtZSkiCiAgICAg
ICAgaWYge1tzdHJpbmcgbGVuZ3RoICRhdihhYmJyZXYpXSA9PSAxfSB7CiAgICAgICAgICAgIHNl
dCBhdihhYmJyZXYpICIiCiAgICAgICAgICAgIGxhcHBlbmQgbmFtZXMgJG92KGFiYnJldikKICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICBsYXBwZW5kIG5hbWVzICRhdihzdXJuYW1lKQogICAg
ICAgIH0KICAgICAgICBzZXQgYXV0aG9ycyBbbGluc2VydCAkYXV0aG9ycyAwIFtsaXN0ICRhdihh
YmJyZXYpICRvdihhYmJyZXYpXV0KICAgIH0KCiAgICBzZXQgbGFzdE8gIiIKICAgIHNldCByaWdo
dCAiIgogICAgZm9yZWFjaCBhdXRob3IgJGF1dGhvcnMgewogICAgICAgIGlmIHtbc3RyaW5nIGNv
bXBhcmUgW3NldCB2YWx1ZSBbbGluZGV4ICRhdXRob3IgMV1dICRsYXN0T119IHsKICAgICAgICAg
ICAgc2V0IHJpZ2h0IFtsaW5zZXJ0ICRyaWdodCAwIFtzZXQgbGFzdE8gJHZhbHVlXV0KICAgICAg
ICB9CiAgICAgICAgaWYge1tzdHJpbmcgY29tcGFyZSBbc2V0IHZhbHVlIFtsaW5kZXggJGF1dGhv
ciAwXV0gIiJdfSB7CiAgICAgICAgICAgIHNldCByaWdodCBbbGluc2VydCAkcmlnaHQgMCAkdmFs
dWVdCiAgICAgICAgfQogICAgfQogICAgc2V0IGRheSAiIgogICAgaWYgeyghW3N0cmluZyBjb21w
YXJlICRydihudW1iZXIpICIiXSkgXAogICAgICAgICAgICAmJiAoIVtjYXRjaCB7IHNldCBkYXkg
JGR2KGRheSkgfV0pfSB7CiAgICAgICAgc2V0IGRheSAiJGRheSwgIgogICAgfQogICAgbGFwcGVu
ZCByaWdodCAiJGR2KG1vbnRoKSAkZGF5JGR2KHllYXIpIgoKICAgIGlmIHskb3B0aW9ucyguSEVB
REVSKX0gewogICAgICAgIGxhcHBlbmQgdG9wICRvcHRpb25zKGhlYWRlcikKICAgIH0gZWxzZWlm
IHtbc3RyaW5nIGNvbXBhcmUgJHJ2KG51bWJlcikgIiJdfSB7CiAgICAgICAgbGFwcGVuZCB0b3Ag
IlJGQyAkcnYobnVtYmVyKSIKICAgIH0gZWxzZSB7CiAgICAgICAgbGFwcGVuZCB0b3AgIkludGVy
bmV0LURyYWZ0IgogICAgICAgIGxhcHBlbmQgdGl0bGUgJG9maWxlCiAgICB9CiAgICBsYXBwZW5k
IHRvcCAkdHYoYWJicmV2KQogICAgbGFwcGVuZCB0b3AgIiRkdihtb250aCkgJGR2KHllYXIpIgoK
ICAgIHN3aXRjaCAtLSBbbGxlbmd0aCAkbmFtZXNdIHsKICAgICAgICAxIHsKICAgICAgICAgICAg
bGFwcGVuZCBib3R0b20gW2xpbmRleCAkbmFtZXMgMF0KICAgICAgICB9CgogICAgICAgIDIgewog
ICAgICAgICAgICBsYXBwZW5kIGJvdHRvbSAiW2xpbmRleCAkbmFtZXMgMF0gJmFtcDsgW2xpbmRl
eCAkbmFtZXMgMV0iCiAgICAgICAgfQoKICAgICAgICBkZWZhdWx0IHsKICAgICAgICAgICAgbGFw
cGVuZCBib3R0b20gIltsaW5kZXggJG5hbWVzIDBdLCBldCBhbC4iCiAgICAgICAgfQogICAgfQog
ICAgaWYgeyRvcHRpb25zKC5GT09URVIpfSB7CiAgICAgICAgbGFwcGVuZCBib3R0b20gJG9wdGlv
bnMoZm9vdGVyKQogICAgfSBlbHNlIHsKICAgICAgICBsYXBwZW5kIGJvdHRvbSAkY2F0ZWdvcnkK
ICAgIH0KCiAgICByZWdzdWIgLWFsbCAlWUVBUiUgJGNvcHlzaG9ydCAkZHYoeWVhcikgY29weWlu
ZwoKICAgIGZyb250XyR7bW9kZX1fYmVnaW4gJGxlZnQgJHJpZ2h0ICR0b3AgJGJvdHRvbSAkdGl0
bGUgJHN0YXR1cyAkY29weWluZwp9Cgpwcm9jIHBhc3MyZW5kX2Zyb250IHtlbGVtWH0gewogICAg
Z2xvYmFsIGNvdW50ZXIgZGVwdGggZWxlbU4gZWxlbSBwYXNzbm8gc3RhY2sgeHJlZgogICAgZ2xv
YmFsIGVsZW1aCiAgICBnbG9iYWwgb3B0aW9ucyBjb3B5cmlnaHRQCiAgICBnbG9iYWwgbW9kZQoK
ICAgIHNldCB0b2MgIiIKICAgIHNldCByZWZzIDAKICAgIHNldCBpcmVmUCAwCiAgICBpZiB7JG9w
dGlvbnMoLlRPQyl9IHsKICAgICAgICBzZXQgbGFzdCAiIgogICAgICAgIGZvciB7c2V0IGVsZW1Z
IDF9IHskZWxlbVkgPD0gJGVsZW1afSB7aW5jciBlbGVtWX0gewogICAgICAgICAgICBjYXRjaCB7
IHVuc2V0IGN2IH0KICAgICAgICAgICAgYXJyYXkgc2V0IGN2ICRlbGVtKCRlbGVtWSkKCiAgICAg
ICAgICAgIHN3aXRjaCAtLSAkY3YoLk5BTUUpIHsKICAgICAgICAgICAgICAgIHJmYyB7CiAgICAg
ICAgICAgICAgICAgICAgaWYgeyghJG9wdGlvbnMoLlBSSVZBVEUpKSAmJiAkY29weXJpZ2h0UH0g
ewogICAgICAgICAgICAgICAgICAgICAgICBpZiB7W2NhdGNoIHsgc2V0IGFuY2hvciAkY3YoLkFO
Q0hPUikgfV19IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCBhbmNob3IgcmZjLmNv
cHlyaWdodAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGxhYmVsICImIzE2NzsiCiAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXQgbGFiZWwgIiIKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICBzZXQgbGFzdCBbbGlzdCAkbGFiZWwgIkZ1bGwgQ29weXJpZ2h0IFN0YXRlbWVudCIg
XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYW5jaG9yXQogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBzZWN0aW9u
IHsKICAgICAgICAgICAgICAgICAgICBpZiB7W2xsZW5ndGggW3NwbGl0IFtzZXQgbGFiZWwgJGN2
KC5DT1VOVEVSKV0gLl1dIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgID4gJG9wdGlvbnMo
LlRPQ0RFUFRIKX0gewogICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAg
ICAgICAgICAgIH0gCiAgICAgICAgICAgICAgICAgICAgaWYge1tzdHJpbmcgZmlyc3QgLiAkbGFi
ZWxdIDwgMH0gewogICAgICAgICAgICAgICAgICAgICAgICBhcHBlbmQgbGFiZWwgLgogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBsYXBwZW5kIHRvYyBbbGlzdCAkbGFi
ZWwgJGN2KHRpdGxlKSAkY3YoLkFOQ0hPUildCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAg
ICAgICAgYmFjayB7CiAgICAgICAgICAgICAgICAgICAgaWYge1tjYXRjaCB7IHNldCBhbmNob3Ig
JGN2KC5BTkNIT1IpIH1dfSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldCBhbmNob3IgcmZj
LmF1dGhvcnMKICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGxhYmVsICImIzE2NzsiCiAgICAg
ICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGxhYmVs
ICIiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGFycmF5IHNldCBm
diAkZWxlbSgyKQogICAgICAgICAgICAgICAgICAgIHNldCBuIFtsbGVuZ3RoIFtmaW5kX2VsZW1l
bnQgYXV0aG9yICRmdiguQ0hJTERSRU4pXV0KICAgICAgICAgICAgICAgICAgICBpZiB7JG4gPT0g
MX0gewogICAgICAgICAgICAgICAgICAgICAgICBzZXQgdGl0bGUgIkF1dGhvcidzIEFkZHJlc3Mi
CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0
IHRpdGxlICJBdXRob3JzJyBBZGRyZXNzZXMiCiAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgICAgIGxhcHBlbmQgdG9jIFtsaXN0ICRsYWJlbCAkdGl0bGUgJGFuY2hvcl0KICAg
ICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHsKICAgICAgICAgICAg
ICAgICAgICBpZiB7W2NhdGNoIHsgc2V0IGFuY2hvciAkY3YoLkFOQ0hPUikgfV19IHsKICAgICAg
ICAgICAgICAgICAgICAgICAgc2V0IGFuY2hvciByZmMucmVmZXJlbmNlc1tpbmNyIHJlZnNdCiAg
ICAgICAgICAgICAgICAgICAgICAgIHNldCBsYWJlbCAiJiMxNjc7IgogICAgICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHNldCBsYWJlbCAiIgogICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiB7W2NhdGNoIHsgc2V0IHRpdGxl
ICRjdih0aXRsZSkgfV19IHsKICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHRpdGxlIFJlZmVy
ZW5jZXMKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgc2V0IHRvYyBb
bGluc2VydCAkdG9jIFtleHByIFtsbGVuZ3RoICR0b2NdLTFdIFwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFtsaXN0ICRsYWJlbCAkdGl0bGUgJGFuY2hvcl1dCiAgICAgICAg
ICAgICAgICB9CgogICAgICAgICAgICAgICAgaXJlZiB7CiAgICAgICAgICAgICAgICAgICAgc2V0
IGlyZWZQIDEKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAg
ICBpZiB7W3N0cmluZyBjb21wYXJlICRsYXN0ICIiXX0gewogICAgICAgICAgICBsYXBwZW5kIHRv
YyAkbGFzdAogICAgICAgIH0KICAgIH0KCiAgICBmcm9udF8ke21vZGV9X2VuZCAkdG9jICRpcmVm
UAp9CgojIHRoZSBhYnN0cmFjdC9ub3RlIGVsZW1lbnRzCgpwcm9jIHBhc3MyYmVnaW5fYWJzdHJh
Y3Qge2VsZW1YfSB7CiAgICBnbG9iYWwgbW9kZQogICAgYWJzdHJhY3RfJG1vZGUKfQoKcHJvYyBw
YXNzMmJlZ2luX25vdGUge2VsZW1YfSB7CiAgICBnbG9iYWwgY291bnRlciBkZXB0aCBlbGVtTiBl
bGVtIHBhc3NubyBzdGFjayB4cmVmCiAgICBnbG9iYWwgbW9kZQoKICAgIHNldCBkIDAKICAgIGZv
cmVhY2ggZnJhbWUgJHN0YWNrIHsKICAgICAgICBpZiB7IVtzdHJpbmcgY29tcGFyZSBbbGluZGV4
ICRmcmFtZSAwXSBub3RlXX0gewogICAgICAgICAgICBpbmNyIGQKICAgICAgICB9CiAgICB9Cgog
ICAgYXJyYXkgc2V0IGF0dHJzICRlbGVtKCRlbGVtWCkKCiAgICBub3RlXyRtb2RlICRhdHRycyh0
aXRsZSkgJGQKfQoKIyB0aGUgc2VjdGlvbiBlbGVtZW50Cgpwcm9jIHBhc3MyYmVnaW5fc2VjdGlv
biB7ZWxlbVh9IHsKICAgIGdsb2JhbCBjb3VudGVyIGRlcHRoIGVsZW1OIGVsZW0gcGFzc25vIHN0
YWNrIHhyZWYKICAgIGdsb2JhbCBtb2RlCgogICAgYXJyYXkgc2V0IGF0dHJzIFtsaXN0IGFuY2hv
ciAiIl0KICAgIGFycmF5IHNldCBhdHRycyAkZWxlbSgkZWxlbVgpCgogICAgaWYge1tsc2VhcmNo
MCAkc3RhY2sgc2VjdGlvbl0gPCAwfSB7CiAgICAgICAgc2V0IHRvcCAxCiAgICB9IGVsc2Ugewog
ICAgICAgIHNldCB0b3AgMAogICAgfQoKICAgIHNldCBwcmVmaXggIiIKICAgIHNldCBzICRhdHRy
cyguQ09VTlRFUikKICAgIGlmIHskdG9wfSB7CiAgICAgICAgYXBwZW5kIHMgLgogICAgfQogICAg
aWYgeyhbbHNlYXJjaDAgJHN0YWNrIGJhY2tdID49IDApICYmICgkdG9wKX0gewogICAgICAgIHNl
dCBwcmVmaXggIkFwcGVuZGl4ICIKICAgIH0KICAgIHNldCB0aXRsZSAkYXR0cnModGl0bGUpCgog
ICAgc2V0IGxpbmVzIDAKICAgIGlmIHtbbGxlbmd0aCAkYXR0cnMoLkNISUxEUkVOKV0gPiAwfSB7
CiAgICAgICAgc2V0IGVsZW1ZIFtsaW5kZXggJGF0dHJzKC5DSElMRFJFTikgMF0KICAgICAgICBh
cnJheSBzZXQgY3YgJGVsZW0oJGVsZW1ZKQoKICAgICAgICBpZiB7IVtzdHJpbmcgY29tcGFyZSAk
Y3YoLk5BTUUpIGZpZ3VyZV19IHsKICAgICAgICAgICAgc2V0IGxpbmVzIFtwYXNzMmJlZ2luX2Zp
Z3VyZSAkZWxlbVkgMV0KICAgICAgICB9CiAgICB9CgogICAgc2V0IGF0dHJzKC5BTkNIT1IpIFwK
ICAgICAgICBbc2VjdGlvbl8kbW9kZSAkcHJlZml4JHMgJHRvcCAkdGl0bGUgJGxpbmVzICRhdHRy
cyhhbmNob3IpXQoKICAgIHNldCBlbGVtKCRlbGVtWCkgW2FycmF5IGdldCBhdHRyc10KfQoKCiMg
dGhlIHQgZWxlbWVudAoKcHJvYyBwYXNzMmJlZ2luX3Qge2VsZW1YfSB7CiAgICBnbG9iYWwgY291
bnRlciBkZXB0aCBlbGVtTiBlbGVtIHBhc3NubyBzdGFjayB4cmVmCiAgICBnbG9iYWwgbW9kZQoK
ICAgIGFycmF5IHNldCBhdHRycyBbbGlzdCAuQ09VTlRFUiAiIiBzdHlsZSAiIiBoYW5nVGV4dCAi
IiBoYW5nSW5kZW50ICIiXQogICAgYXJyYXkgc2V0IGF0dHJzICRlbGVtKCRlbGVtWCkKICAgIHNl
dCBlbGVtKCRlbGVtWCkgW2FycmF5IGdldCBhdHRyc10KCiAgICBpZiB7W3N0cmluZyBjb21wYXJl
ICRhdHRycyguQ09VTlRFUikgIiJdfSB7CiAgICAgICAgc2V0IGZyYW1lIFtsaW5kZXggJHN0YWNr
IGVuZF0KICAgICAgICBhcnJheSBzZXQgYXYgW2xyYW5nZSAkZnJhbWUgMSBlbmRdCgogICAgICAg
IHNldCBlbGVtWSAkYXYoZWxlbU4pCiAgICAgICAgYXJyYXkgc2V0IGF2ICRlbGVtKCRlbGVtWSkK
CiAgICAgICAgc2V0IGF0dHJzKGhhbmdJbmRlbnQpICRhdihoYW5nSW5kZW50KSAKICAgICAgICBp
ZiB7IVtzdHJpbmcgY29tcGFyZSBbc2V0IGF0dHJzKHN0eWxlKSAkYXYoc3R5bGUpXSBmb3JtYXRd
fSB7CiAgICAgICAgICAgIHNldCBhdHRycyhzdHlsZSkgaGFuZ2luZwogICAgICAgICAgICBzZXQg
Zm9ybWF0ICRhdihmb3JtYXQpCgogICAgICAgICAgICBpZiB7IVtzdHJpbmcgY29tcGFyZSAkYXR0
cnMoaGFuZ1RleHQpICIiXX0gewogICAgICAgICAgICAgICAgc2V0IGF0dHJzKGhhbmdUZXh0KSBb
Zm9ybWF0ICRmb3JtYXQgW2luY3IgY291bnRlcigkZm9ybWF0KV1dCiAgICAgICAgICAgIH0KICAg
ICAgICB9CiAgICAgICAgc2V0IGVsZW0oJGVsZW1YKSBbYXJyYXkgZ2V0IGF0dHJzXQogICAgfQoK
ICAgIHRfJG1vZGUgYmVnaW4gJGF0dHJzKC5DT1VOVEVSKSAkYXR0cnMoc3R5bGUpICRhdHRycyho
YW5nVGV4dCkgXAogICAgICAgICAgICAkYXR0cnMoLkVESVROTykKfQoKcHJvYyBwYXNzMmVuZF90
IHtlbGVtWH0gewogICAgZ2xvYmFsIGNvdW50ZXIgZGVwdGggZWxlbU4gZWxlbSBwYXNzbm8gc3Rh
Y2sgeHJlZgogICAgZ2xvYmFsIG1vZGUKCiAgICBhcnJheSBzZXQgYXR0cnMgJGVsZW0oJGVsZW1Y
KQoKICAgIHRfJG1vZGUgZW5kICRhdHRycyguQ09VTlRFUikgJGF0dHJzKHN0eWxlKSAkYXR0cnMo
aGFuZ1RleHQpICIiCn0KCiMgdGhlIGxpc3QgZWxlbWVudAoKcHJvYyBwYXNzMmJlZ2luX2xpc3Qg
e2VsZW1YfSB7CiAgICBnbG9iYWwgY291bnRlciBkZXB0aCBlbGVtTiBlbGVtIHBhc3NubyBzdGFj
ayB4cmVmCiAgICBnbG9iYWwgbW9kZQoKICAgIHNldCBzdHlsZSBlbXB0eQogICAgc2V0IGZvcm1h
dCAiIgogICAgc2V0IGhhbmdJbmRlbnQgMAogICAgZm9yZWFjaCBmcmFtZSAkc3RhY2sgewogICAg
ICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgW2xpbmRleCAkZnJhbWUgMF0gbGlzdF19IHsKICAgICAg
ICAgICAgY29udGludWUKICAgICAgICB9CiAgICAgICAgYXJyYXkgc2V0IGF2IFtscmFuZ2UgJGZy
YW1lIDEgZW5kXQoKICAgICAgICBzZXQgZWxlbVkgJGF2KGVsZW1OKQogICAgICAgIGFycmF5IHNl
dCBhdiAkZWxlbSgkZWxlbVkpCgogICAgICAgIHNldCBzdHlsZSAkYXYoc3R5bGUpCiAgICAgICAg
c2V0IGZvcm1hdCAkYXYoZm9ybWF0KQogICAgICAgIHNldCBoYW5nSW5kZW50ICRhdihoYW5nSW5k
ZW50KQogICAgfQogICAgYXJyYXkgc2V0IGF0dHJzICRlbGVtKCRlbGVtWCkKICAgIGNhdGNoIHsg
c2V0IGhhbmdJbmRlbnQgJGF0dHJzKGhhbmdJbmRlbnQpIH0KICAgIHNldCBhdHRycyhoYW5nSW5k
ZW50KSAkaGFuZ0luZGVudAogICAgY2F0Y2ggewogICAgICAgIGlmIHtbc3RyaW5nIGZpcnN0ICJm
b3JtYXQgIiBbc2V0IHN0eWxlICRhdHRycyhzdHlsZSldXX0gewogICAgICAgICAgICBzZXQgZm9y
bWF0ICRhdHRycyhmb3JtYXQpCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2V0IHN0eWxl
IGZvcm1hdAogICAgICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJlIFwKICAgICAgICAgICAgICAg
ICAgICAgICAgW3NldCBmb3JtYXQgW3N0cmluZyB0cmltbGVmdCBcCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0cmluZyByYW5nZSAkYXR0cnMoc3R5bGUpIDcg
XAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZF1dXSAiIl19
IHsKICAgICAgICAgICAgICAgIGlmIHtbc2V0IHggW3N0cmluZyBmaXJzdCAiJWQiICRmb3JtYXRd
XSA8IDB9IHsKICAgICAgICAgICAgICAgICAgICB1bmV4cGVjdGVkIGVycm9yICJtaXNzaW5nICVk
IGluIGZvcm1hdCBzdHlsZSIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIHtb
c3RyaW5nIGZpcnN0ICIlZCIgW3N0cmluZyByYW5nZSAkZm9ybWF0ICR4IGVuZF1dID4gMH0gewog
ICAgICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWQgZXJyb3IgInRvbyBtYW55ICVkJ3MgaW4gZm9y
bWF0IHN0eWxlIgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgeyFbaW5mbyBl
eGlzdHMgY291bnRlcigkZm9ybWF0KV19IHsKICAgICAgICAgICAgICAgICAgICBzZXQgY291bnRl
cigkZm9ybWF0KSAwCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAg
ICAgICAgICAgICBzZXQgc3R5bGUgaGFuZ2luZwogICAgICAgICAgICAgICAgc2V0IGZvcm1hdCAi
IgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgYXJyYXkgc2V0IGF0dHJzIFtsaXN0
IHN0eWxlICRzdHlsZSBmb3JtYXQgJGZvcm1hdF0KICAgIHNldCBlbGVtKCRlbGVtWCkgW2FycmF5
IGdldCBhdHRyc10KCiAgICBzZXQgY291bnRlcnMgIiIKICAgIHNldCBoYW5nVGV4dCAiIgogICAg
Zm9yZWFjaCBjaGlsZCBbZmluZF9lbGVtZW50IHQgJGF0dHJzKC5DSElMRFJFTildIHsKICAgICAg
ICBhcnJheSBzZXQgdHYgJGVsZW0oJGNoaWxkKQoKICAgICAgICBsYXBwZW5kIGNvdW50ZXJzICR0
diguQ09VTlRFUikKICAgICAgICBjYXRjaCB7IHNldCBoYW5nVGV4dCAkdHYoaGFuZ1RleHQpIH0K
ICAgIH0KCiAgICBsaXN0XyRtb2RlIGJlZ2luICRjb3VudGVycyAkYXR0cnMoc3R5bGUpICRhdHRy
cyhoYW5nSW5kZW50KSAkaGFuZ1RleHQKfQoKcHJvYyBwYXNzMmVuZF9saXN0IHtlbGVtWH0gewog
ICAgZ2xvYmFsIGNvdW50ZXIgZGVwdGggZWxlbU4gZWxlbSBwYXNzbm8gc3RhY2sgeHJlZgogICAg
Z2xvYmFsIG1vZGUKCiAgICBhcnJheSBzZXQgYXR0cnMgJGVsZW0oJGVsZW1YKQoKICAgIGxpc3Rf
JG1vZGUgZW5kICIiICRhdHRycyhzdHlsZSkgIiIgIiIKfQoKCiMgdGhlIGZpZ3VyZSBlbGVtZW50
Cgpwcm9jIHBhc3MyYmVnaW5fZmlndXJlIHtlbGVtWCB7aW50ZXJuYWwgMH19IHsKICAgIGdsb2Jh
bCBjb3VudGVyIGRlcHRoIGVsZW1OIGVsZW0gcGFzc25vIHN0YWNrIHhyZWYKICAgIGdsb2JhbCBt
b2RlCgogICAgYXJyYXkgc2V0IGF0dHJzIFtsaXN0IGFuY2hvciAiIiB0aXRsZSAiIl0KICAgIGFy
cmF5IHNldCBhdHRycyAkZWxlbSgkZWxlbVgpCgogICAgc2V0IGxpbmVzIDAKICAgIGZvcmVhY2gg
cCB7cHJlYW1ibGUgcG9zdGFtYmxlfSB7CiAgICAgICAgaWYge1tsbGVuZ3RoIFtmaW5kX2VsZW1l
bnQgJHAgJGF0dHJzKC5DSElMRFJFTildXSA9PSAxfSB7CiAgICAgICAgICAgIGluY3IgbGluZXMg
MwogICAgICAgIH0KICAgIH0KICAgIGlmIHskbGluZXMgPiA1fSB7CiAgICAgICAgc2V0IGxpbmVz
IDUKICAgIH0KCiAgICBzZXQgYXJ0d29yayBbZmluZF9lbGVtZW50IGFydHdvcmsgJGF0dHJzKC5D
SElMRFJFTildCiAgICBhcnJheSBzZXQgYXYgJGVsZW0oJGFydHdvcmspCgojIGlmIGFydHdvcmsg
aXMgZW1wdHkhCiAgICBjYXRjaCB7IGluY3IgbGluZXMgJGF2KC5DTElORVMpIH0KCiAgICBpZiB7
JGludGVybmFsfSB7CiAgICAgICAgcmV0dXJuICRsaW5lcwogICAgfQoKICAgIGZvcmVhY2ggayBb
bGlzdCB4bWw6c3BhY2UgbmFtZSB0eXBlXSB7CgljYXRjaCB7IHVuc2V0IGF2KCRrKSB9CiAgICB9
CiAgICBmaWd1cmVfJG1vZGUgYmVnaW4gJGxpbmVzICRhdHRycyhhbmNob3IpICRhdHRycyh0aXRs
ZSkgW2FycmF5IGdldCBhdl0KfQoKcHJvYyBwYXNzMmVuZF9maWd1cmUge2VsZW1YfSB7CiAgICBn
bG9iYWwgY291bnRlciBkZXB0aCBlbGVtTiBlbGVtIHBhc3NubyBzdGFjayB4cmVmCiAgICBnbG9i
YWwgbW9kZQoKICAgIGFycmF5IHNldCBhdHRycyBbbGlzdCBhbmNob3IgIiIgdGl0bGUgIiJdCiAg
ICBhcnJheSBzZXQgYXR0cnMgJGVsZW0oJGVsZW1YKQoKICAgIGZpZ3VyZV8kbW9kZSBlbmQgIiIg
JGF0dHJzKGFuY2hvcikgJGF0dHJzKHRpdGxlKQp9CgoKIyB0aGUgcHJlYW1ibGUvcG9zdGFtYmxl
IGVsZW1lbnRzCgpwcm9jIHBhc3MyYmVnaW5fcHJlYW1ibGUge2VsZW1YfSB7CiAgICBnbG9iYWwg
Y291bnRlciBkZXB0aCBlbGVtTiBlbGVtIHBhc3NubyBzdGFjayB4cmVmCiAgICBnbG9iYWwgbW9k
ZQoKICAgIGFycmF5IHNldCBhdHRycyAkZWxlbSgkZWxlbVgpCgogICAgcHJlYW1ibGVfJG1vZGUg
YmVnaW4gJGF0dHJzKC5FRElUTk8pCn0KCnByb2MgcGFzczJlbmRfcHJlYW1ibGUge2VsZW1YfSB7
CiAgICBnbG9iYWwgbW9kZQoKICAgIHByZWFtYmxlXyRtb2RlIGVuZAp9Cgpwcm9jIHBhc3MyYmVn
aW5fcG9zdGFtYmxlIHtlbGVtWH0gewogICAgZ2xvYmFsIGNvdW50ZXIgZGVwdGggZWxlbU4gZWxl
bSBwYXNzbm8gc3RhY2sgeHJlZgogICAgZ2xvYmFsIG1vZGUKCiAgICBhcnJheSBzZXQgYXR0cnMg
JGVsZW0oJGVsZW1YKQoKICAgIHBvc3RhbWJsZV8kbW9kZSBiZWdpbiAkYXR0cnMoLkVESVROTykK
fQoKcHJvYyBwYXNzMmVuZF9wb3N0YW1ibGUge2VsZW1YfSB7CiAgICBnbG9iYWwgbW9kZQoKICAg
IHBvc3RhbWJsZV8kbW9kZSBlbmQKfQoKCiMgdGhlIHhyZWYgZWxlbWVudAoKcHJvYyBwYXNzMmJl
Z2luX3hyZWYge2VsZW1YfSB7CiAgICBnbG9iYWwgY291bnRlciBkZXB0aCBlbGVtTiBlbGVtIHBh
c3NubyBzdGFjayB4cmVmCiAgICBnbG9iYWwgbW9kZQoKIyBwYWdlbm8gaXMgaWdub3JlZCBmb3Ig
bm93Li4uCiAgICBhcnJheSBzZXQgYXR0cnMgW2xpc3QgcGFnZW5vIGZhbHNlXQogICAgYXJyYXkg
c2V0IGF0dHJzICRlbGVtKCRlbGVtWCkKCiAgICBzZXQgYW5jaG9yICRhdHRycyh0YXJnZXQpCiAg
ICB4cmVmXyRtb2RlICRhdHRycyguQ1RFWFQpICR4cmVmKCRhbmNob3IpICRhbmNob3IKfQoKCiMg
dGhlIGVyZWYgZWxlbWVudAoKcHJvYyBwYXNzMmJlZ2luX2VyZWYge2VsZW1YfSB7CiAgICBnbG9i
YWwgY291bnRlciBkZXB0aCBlbGVtTiBlbGVtIHBhc3NubyBzdGFjayB4cmVmCiAgICBnbG9iYWwg
bW9kZQoKICAgIGFycmF5IHNldCBhdHRycyAkZWxlbSgkZWxlbVgpCgogICAgaWYgeyRwYXNzbm8g
PT0gMn0gewogICAgICAgIGlmIHshW2luZm8gZXhpc3RzIGNvdW50ZXIocmVmZXJlbmNlKV19IHsK
ICAgICAgICAgICAgc2V0IGNvdW50ZXIocmVmZXJlbmNlKSAwCiAgICAgICAgfQoKICAgICAgICBp
ZiB7KFtzdHJpbmcgZmlyc3QgIiMiICRhdHRycyh0YXJnZXQpXSA8IDApIFwKICAgICAgICAgICAg
ICAgICYmIChbc3RyaW5nIGNvbXBhcmUgJGF0dHJzKC5DVEVYVCkgJGF0dHJzKHRhcmdldCldKX0g
ewogICAgICAgICAgICBzd2l0Y2ggLS0gJG1vZGUgewogICAgICAgICAgICAgICAgbnIgIC0KICAg
ICAgICAgICAgICAgIHR4dCB7CiAgICAgICAgICAgICAgICAgICAgaW5jciBjb3VudGVyKHJlZmVy
ZW5jZSkKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBz
ZXQgYXR0cnMoLkNPVU5URVIpICRjb3VudGVyKHJlZmVyZW5jZSkKICAgICAgICBzZXQgZWxlbSgk
ZWxlbVgpIFthcnJheSBnZXQgYXR0cnNdCiAgICB9CgogICAgZXJlZl8kbW9kZSAkYXR0cnMoLkNU
RVhUKSAkYXR0cnMoLkNPVU5URVIpICRhdHRycyh0YXJnZXQpCn0KCgojIHRoZSBpcmVmIGVsZW1l
bnQKCnByb2MgcGFzczJiZWdpbl9pcmVmIHtlbGVtWH0gewogICAgZ2xvYmFsIGNvdW50ZXIgZGVw
dGggZWxlbU4gZWxlbSBwYXNzbm8gc3RhY2sgeHJlZgogICAgZ2xvYmFsIG1vZGUKCiAgICBhcnJh
eSBzZXQgYXR0cnMgW2xpc3Qgc3ViaXRlbSAiIiBwcmltYXJ5IGZhbHNlXQogICAgYXJyYXkgc2V0
IGF0dHJzICRlbGVtKCRlbGVtWCkKICAgIHNldCBmbGFncyBbbGlzdCBwcmltYXJ5ICRhdHRycyhw
cmltYXJ5KV0KICAgIHVuc2V0IGF0dHJzKHByaW1hcnkpCiAgICBzZXQgYXR0cnMoZmxhZ3MpICRm
bGFncwoKICAgIHNldCBhdHRycyguQU5DSE9SKSBbaXJlZl8kbW9kZSAkYXR0cnMoaXRlbSkgJGF0
dHJzKHN1Yml0ZW0pICRmbGFnc10KCiAgICBzZXQgZWxlbSgkZWxlbVgpIFthcnJheSBnZXQgYXR0
cnNdCn0KCgojIHRoZSB2c3BhY2UgZWxlbWVudAoKcHJvYyBwYXNzMmJlZ2luX3ZzcGFjZSB7ZWxl
bVh9IHsKICAgIGdsb2JhbCBjb3VudGVyIGRlcHRoIGVsZW1OIGVsZW0gcGFzc25vIHN0YWNrIHhy
ZWYKICAgIGdsb2JhbCBtb2RlCgogICAgYXJyYXkgc2V0IGF0dHJzIFtsaXN0IGJsYW5rTGluZXMg
MF0KICAgIGFycmF5IHNldCBhdHRycyAkZWxlbSgkZWxlbVgpCiAgICBzZXQgZWxlbSgkZWxlbVgp
IFthcnJheSBnZXQgYXR0cnNdCgogICAgdnNwYWNlXyRtb2RlICRhdHRycyhibGFua0xpbmVzKQp9
CgoKIyB0aGUgcmVmZXJlbmNlcy9yZWZlcmVuY2UgZWxlbWVudHMKCiMgd2UgaW50ZXJjZXB0IHRo
ZSBiYWNrIGVsZW1lbnQgc28gd2UgY2FuIHB1dCB0aGUgQXV0aG9yJ3MgYWRkcmVzc2VzCiMgYWZ0
ZXIgdGhlIFJlZmVyZW5jZXMgc2VjdGlvbiAoaWYgYW55KSBhbmQgYmVmb3JlIGFueSBBcHBlbmRp
Y2VzCgpwcm9jIHBhc3MyYmVnaW5fYmFjayB7ZWxlbVh9IHsKICAgIGdsb2JhbCBjb3VudGVyIGRl
cHRoIGVsZW1OIGVsZW0gcGFzc25vIHN0YWNrIHhyZWYKICAgIGdsb2JhbCBtb2RlCiAgICBnbG9i
YWwgZXJlZnMKCiAgICBhcnJheSBzZXQgYXR0cnMgJGVsZW0oJGVsZW1YKQoKICAgIGlmIHtbbGxl
bmd0aCBbc2V0IGNoaWxkcmVuIFtmaW5kX2VsZW1lbnQgcmVmZXJlbmNlcyAkYXR0cnMoLkNISUxE
UkVOKV1dXSBcCiAgICAgICAgICAgID09IDF9IHsKICAgICAgICBzZXQgZXJlZlAgMQogICAgfSBl
bHNlIHsKICAgICAgICBzZXQgZXJlZlAgMAogICAgfQogICAgZm9yZWFjaCBjaGlsZCAkY2hpbGRy
ZW4gewogICAgICAgIHBhc3MyYmVnaW5fcmVmZXJlbmNlcyAkY2hpbGQgJGVyZWZQCiAgICB9CiAg
ICBpZiB7KCEkZXJlZlApICYmIChbYXJyYXkgc2l6ZSBlcmVmc10gPiAwKX0gewogICAgICAgIGVy
ZWZzXyRtb2RlIFVSSXMKICAgIH0KCiAgICBhcnJheSBzZXQgZnYgJGVsZW0oMikKCiAgICBzZXQg
YXV0aG9ycyAiIgogICAgZm9yZWFjaCBjaGlsZCBbZmluZF9lbGVtZW50IGF1dGhvciAkZnYoLkNI
SUxEUkVOKV0gewogICAgICAgIGFycmF5IHNldCBhdiBbbGlzdCBpbml0aWFscyAiIiBzdXJuYW1l
ICIiIGZ1bGxuYW1lICIiXQogICAgICAgIGFycmF5IHNldCBhdiAkZWxlbSgkY2hpbGQpCgogICAg
ICAgIHNldCBvcmdhbml6YXRpb24gW2ZpbmRfZWxlbWVudCBvcmdhbml6YXRpb24gJGF2KC5DSElM
RFJFTildCiAgICAgICAgYXJyYXkgc2V0IG92IFtsaXN0IGFiYnJldiAiIl0KICAgICAgICBhcnJh
eSBzZXQgb3YgJGVsZW0oJG9yZ2FuaXphdGlvbikKCiAgICAgICAgc2V0IGJsb2NrMSAiIgogICAg
ICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJGF2KGZ1bGxuYW1lKSAiIl19IHsKICAgICAgICAgICAg
bGFwcGVuZCBibG9jazEgJGF2KGZ1bGxuYW1lKQogICAgICAgIH0KICAgICAgICBpZiB7W3N0cmlu
ZyBjb21wYXJlICRvdiguQ1RFWFQpICIiXX0gewogICAgICAgICAgICBsYXBwZW5kIGJsb2NrMSAk
b3YoLkNURVhUKQogICAgICAgIH0KCiAgICAgICAgc2V0IGFkZHJlc3MgW2ZpbmRfZWxlbWVudCBh
ZGRyZXNzICRhdiguQ0hJTERSRU4pXQogICAgICAgIHNldCBibG9jazIgIiIKICAgICAgICBpZiB7
W2xsZW5ndGggJGFkZHJlc3NdID09IDF9IHsKICAgICAgICAgICAgYXJyYXkgc2V0IGJ2ICRlbGVt
KCRhZGRyZXNzKQoKICAgICAgICAgICAgc2V0IHBvc3RhbCBbZmluZF9lbGVtZW50IHBvc3RhbCAk
YnYoLkNISUxEUkVOKV0KICAgICAgICAgICAgaWYge1tsbGVuZ3RoICRwb3N0YWxdID09IDF9IHsK
ICAgICAgICAgICAgICAgIGFycmF5IHNldCBwdiAkZWxlbSgkcG9zdGFsKQoKICAgICAgICAgICAg
ICAgIGZvcmVhY2ggc3RyZWV0IFtmaW5kX2VsZW1lbnQgc3RyZWV0ICRwdiguQ0hJTERSRU4pXSB7
CiAgICAgICAgICAgICAgICAgICAgYXJyYXkgc2V0IHN2ICRlbGVtKCRzdHJlZXQpCiAgICAKICAg
ICAgICAgICAgICAgICAgICBsYXBwZW5kIGJsb2NrMSAkc3YoLkNURVhUKQogICAgICAgICAgICAg
ICAgfQoKICAgICAgICAgICAgICAgIHNldCBzICIiCiAgICAgICAgICAgICAgICBmb3JlYWNoIGUg
e2NpdHkgcmVnaW9uIGNvZGV9IHQgeyIiICIsICIgIiAgIn0gewogICAgICAgICAgICAgICAgICAg
IHNldCBmIFtmaW5kX2VsZW1lbnQgJGUgJHB2KC5DSElMRFJFTildCiAgICAgICAgICAgICAgICAg
ICAgaWYge1tsbGVuZ3RoICRmXSA9PSAxfSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhdGNo
IHsgdW5zZXQgZnYgfQogICAgICAgICAgICAgICAgICAgICAgICBhcnJheSBzZXQgZnYgJGVsZW0o
JGYpCiAgICAKICAgICAgICAgICAgICAgICAgICAgICAgaWYge1tzdHJpbmcgY29tcGFyZSAkcyAi
Il19IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZCBzICR0CiAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kIHMgJGZ2KC5DVEVY
VCkKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICBpZiB7W3N0cmluZyBjb21wYXJlICRzICIiXX0gewogICAgICAgICAgICAgICAgICAgIGxhcHBl
bmQgYmxvY2sxICRzCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXQgZiBbZmlu
ZF9lbGVtZW50IGNvdW50cnkgJHB2KC5DSElMRFJFTildCiAgICAgICAgICAgICAgICBpZiB7W2xs
ZW5ndGggJGZdID09IDF9IHsKICAgICAgICAgICAgICAgICAgICBjYXRjaCB7IHVuc2V0IGZ2IH0K
ICAgICAgICAgICAgICAgICAgICBhcnJheSBzZXQgZnYgJGVsZW0oJGYpCiAgICAKICAgICAgICAg
ICAgICAgICAgICBsYXBwZW5kIGJsb2NrMSAkZnYoLkNURVhUKQogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CgogICAgICAgICAgICBzZXQgYmxvY2syICIiCiAgICAgICAgICAgIGZvcmVh
Y2ggZSB7cGhvbmUgZmFjc2ltaWxlIGVtYWlsIHVyaX0gewogICAgICAgICAgICAgICAgc2V0IGYg
W2ZpbmRfZWxlbWVudCAkZSAkYnYoLkNISUxEUkVOKV0KICAgICAgICAgICAgICAgIGlmIHtbbGxl
bmd0aCAkZl0gPT0gMX0gewogICAgICAgICAgICAgICAgICAgIGNhdGNoIHsgdW5zZXQgZnYgfQog
ICAgICAgICAgICAgICAgICAgIGFycmF5IHNldCBmdiAkZWxlbSgkZikKCiAgICAgICAgICAgICAg
ICAgICAgbGFwcGVuZCBibG9jazIgW2xpc3QgJGUgJGZ2KC5DVEVYVCldCiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGxhcHBlbmQgYXV0aG9ycyBbbGlz
dCAkYmxvY2sxICRibG9jazJdCiAgICB9CgogICAgc2V0IGF0dHJzKC5BTkNIT1IpIFtiYWNrXyRt
b2RlICRhdXRob3JzXQogICAgc2V0IGVsZW0oJGVsZW1YKSBbYXJyYXkgZ2V0IGF0dHJzXQp9Cgpw
cm9jIHBhc3MyYmVnaW5fcmVmZXJlbmNlcyB7ZWxlbVggZXJlZlB9IHsKICAgIGdsb2JhbCBjb3Vu
dGVyIGRlcHRoIGVsZW1OIGVsZW0gcGFzc25vIHN0YWNrIHhyZWYKICAgIGdsb2JhbCBtb2RlCiAg
ICBnbG9iYWwgb3B0aW9ucwoKICAgIGFycmF5IHNldCBhdHRycyBbbGlzdCB0aXRsZSBSZWZlcmVu
Y2VzXQogICAgYXJyYXkgc2V0IGF0dHJzICRlbGVtKCRlbGVtWCkKCiAgICBzZXQgYXR0cnMoLkFO
Q0hPUikgW3JlZmVyZW5jZXNfJG1vZGUgYmVnaW4gJGF0dHJzKHRpdGxlKV0KICAgIHNldCBlbGVt
KCRlbGVtWCkgW2FycmF5IGdldCBhdHRyc10KICAgIHNldCBjaGlsZHJlbiBbZmluZF9lbGVtZW50
IHJlZmVyZW5jZSAkYXR0cnMoLkNISUxEUkVOKV0KICAgIGlmIHskb3B0aW9ucyguU09SVFJFRlMp
fSB7CiAgICAgICAgc2V0IGNoaWxkcmVuIFtsc29ydCAtY29tbWFuZCBzb3J0X3JlZmVyZW5jZXMg
JGNoaWxkcmVuXQogICAgfQogICAgc2V0IHdpZHRoIDAKICAgIGZvcmVhY2ggY2hpbGQgJGNoaWxk
cmVuIHsKICAgICAgICBhcnJheSBzZXQgeCAkZWxlbSgkY2hpbGQpCiAgICAgICAgaWYge1tzZXQg
eSBbc3RyaW5nIGxlbmd0aCAkeCguQ09VTlRFUildXSA+ICR3aWR0aH0gewogICAgICAgICAgICBz
ZXQgd2lkdGggJHkKICAgICAgICB9CgogICAgICAgIHVuc2V0IHgKICAgIH0KICAgIGlmIHskd2lk
dGggPiA3fSB7CglzZXQgd2lkdGggNwogICAgfQogICAgZm9yZWFjaCBjaGlsZCAkY2hpbGRyZW4g
ewogICAgICAgIHBhc3MyYmVnaW5fcmVmZXJlbmNlICRjaGlsZCAkd2lkdGgKICAgIH0KICAgIHJl
ZmVyZW5jZXNfJG1vZGUgZW5kICIiICRlcmVmUAp9Cgpwcm9jIHNvcnRfcmVmZXJlbmNlcyB7ZWxl
bVggZWxlbVl9IHsKICAgIGdsb2JhbCBjb3VudGVyIGRlcHRoIGVsZW1OIGVsZW0gcGFzc25vIHN0
YWNrIHhyZWYKICAgIGdsb2JhbCBvcHRpb25zCgogICAgYXJyYXkgc2V0IGF0dHJYICRlbGVtKCRl
bGVtWCkKICAgIGFycmF5IHNldCBhdHRyWSAkZWxlbSgkZWxlbVkpCiAgICBpZiB7JG9wdGlvbnMo
LlNZTVJFRlMpfSB7CiAgICAgICAgcmV0dXJuIFtzdHJpbmcgY29tcGFyZSAkYXR0clgoYW5jaG9y
KSAkYXR0clkoYW5jaG9yKV0KICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIFtleHByICRhdHRy
WCguQ09VTlRFUiktJGF0dHJZKC5DT1VOVEVSKV0KICAgIH0KfQoKcHJvYyBwYXNzMmJlZ2luX3Jl
ZmVyZW5jZSB7ZWxlbVggd2lkdGh9IHsKICAgIGdsb2JhbCBjb3VudGVyIGRlcHRoIGVsZW1OIGVs
ZW0gcGFzc25vIHN0YWNrIHhyZWYKICAgIGdsb2JhbCBtb2RlCgogICAgYXJyYXkgc2V0IGF0dHJz
IFtsaXN0IGFuY2hvciAiIiB0YXJnZXQgIiIgdGFyZ2V0MiAiIl0KICAgIGFycmF5IHNldCBhdHRy
cyAkZWxlbSgkZWxlbVgpCgogICAgc2V0IGZyb250IFtmaW5kX2VsZW1lbnQgZnJvbnQgJGF0dHJz
KC5DSElMRFJFTildCiAgICBhcnJheSBzZXQgZnYgJGVsZW0oJGZyb250KQoKICAgIHNldCBuYW1l
cyBbcmVmX25hbWVzICRlbGVtWF0KICAgIHNldCB0aXRsZSBbcmVmX3RpdGxlICRlbGVtWF0KCiAg
ICBzZXQgc2VyaWVzICIiCiAgICBmb3JlYWNoIGNoaWxkIFtmaW5kX2VsZW1lbnQgc2VyaWVzSW5m
byAkYXR0cnMoLkNISUxEUkVOKV0gewojIGJhY2t3YXJkcy1jb21wYXRpYmlsaXR5Li4uICh0aGUg
YXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgbWFuZGF0b3J5KQogICAgICAgIGNhdGNoIHsgdW5zZXQg
c3YgfQogICAgICAgIGFycmF5IHNldCBzdiAkZWxlbSgkY2hpbGQpCiAgICAgICAgaWYgeyhbaW5m
byBleGlzdHMgc3YobmFtZSldKSAmJiAoW2luZm8gZXhpc3RzIHN2KHZhbHVlKV0pfSB7CiAgICAg
ICAgICAgIGxhcHBlbmQgc2VyaWVzICIkc3YobmFtZSkgJHN2KHZhbHVlKSIKICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICBsYXBwZW5kIHNlcmllcyAkc3YoLkNURVhUKQogICAgICAgIH0KICAg
IH0KCiAgICBzZXQgZm9ybWF0cyB7fQogICAgZm9yZWFjaCBjaGlsZCBbZmluZF9lbGVtZW50IGZv
cm1hdCAkYXR0cnMoLkNISUxEUkVOKV0gewogICAgICAgIGxhcHBlbmQgZm9ybWF0cyAkZWxlbSgk
Y2hpbGQpCiAgICB9CgogICAgc2V0IGRhdGUgW3JlZl9kYXRlICRlbGVtWF0KCiAgICByZWZlcmVu
Y2VfJG1vZGUgJGF0dHJzKC5DT1VOVEVSKSAkbmFtZXMgJHRpdGxlICRzZXJpZXMgJGZvcm1hdHMg
JGRhdGUgXAogICAgICAgICAgICAgICAgICAgICRhdHRycyhhbmNob3IpICRhdHRycyh0YXJnZXQp
ICRhdHRycyh0YXJnZXQyKSAkd2lkdGgKfQoKcHJvYyByZWZfbmFtZXMge2VsZW1YfSB7CiAgICBn
bG9iYWwgY291bnRlciBkZXB0aCBlbGVtTiBlbGVtIHBhc3NubyBzdGFjayB4cmVmCgogICAgYXJy
YXkgc2V0IGF0dHJzIFtsaXN0IGFuY2hvciAiIiB0YXJnZXQgIiIgdGFyZ2V0MiAiIl0KICAgIGFy
cmF5IHNldCBhdHRycyAkZWxlbSgkZWxlbVgpCgogICAgc2V0IGZyb250IFtmaW5kX2VsZW1lbnQg
ZnJvbnQgJGF0dHJzKC5DSElMRFJFTildCiAgICBhcnJheSBzZXQgZnYgJGVsZW0oJGZyb250KQoK
ICAgIHNldCBjaGlsZE4gW2xsZW5ndGggW3NldCBjaGlsZHJlbiBbZmluZF9lbGVtZW50IGF1dGhv
ciAkZnYoLkNISUxEUkVOKV1dXQoKICAgIHNldCBjaGlsZEEgMAogICAgZm9yZWFjaCBjaGlsZCBb
ZmluZF9lbGVtZW50IGF1dGhvciAkZnYoLkNISUxEUkVOKV0gewogICAgICAgIGluY3IgY2hpbGRB
CgogICAgICAgIGFycmF5IHNldCBhdiBbbGlzdCBpbml0aWFscyAiIiBzdXJuYW1lICIiIGZ1bGxu
YW1lICIiXQogICAgICAgIGFycmF5IHNldCBhdiAkZWxlbSgkY2hpbGQpCgogICAgICAgIHNldCBv
cmdhbml6YXRpb24gW2ZpbmRfZWxlbWVudCBvcmdhbml6YXRpb24gJGF2KC5DSElMRFJFTildCiAg
ICAgICAgYXJyYXkgc2V0IG92IFtsaXN0IC5DVEVYVCAiIiBhYmJyZXYgIiJdCiAgICAgICAgaWYg
e1tzdHJpbmcgY29tcGFyZSAkb3JnYW5pemF0aW9uICIiXX0gewogICAgICAgICAgICBhcnJheSBz
ZXQgb3YgJGVsZW0oJG9yZ2FuaXphdGlvbikKICAgICAgICAgICAgaWYgeyFbc3RyaW5nIGNvbXBh
cmUgJG92KGFiYnJldikgIiJdfSB7CiAgICAgICAgICAgICAgICBzZXQgb3YoYWJicmV2KSAkb3Yo
LkNURVhUKQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBzZXQgbXJlZiAiIgogICAg
ICAgIHNldCB1cmVmICIiCiAgICAgICAgc2V0IGFkZHJlc3MgW2ZpbmRfZWxlbWVudCBhZGRyZXNz
ICRhdiguQ0hJTERSRU4pXQogICAgICAgIGlmIHtbbGxlbmd0aCAkYWRkcmVzc10gPT0gMX0gewog
ICAgICAgICAgICBhcnJheSBzZXQgYnYgJGVsZW0oJGFkZHJlc3MpCgogICAgICAgICAgICBmb3Jl
YWNoIHtrIHYgcH0ge2VtYWlsIG1yZWYgbWFpbHRvOiB1cmkgdXJlZiAiIn0gewogICAgICAgICAg
ICAgICAgc2V0IHUgW2ZpbmRfZWxlbWVudCAkayAkYnYoLkNISUxEUkVOKV0KICAgICAgICAgICAg
ICAgIGlmIHtbbGxlbmd0aCAkdV0gPT0gMX0gewogICAgICAgICAgICAgICAgICAgIGNhdGNoIHsg
dW5zZXQgdXYgfQogICAgICAgICAgICAgICAgICAgIGFycmF5IHNldCB1diAkZWxlbSgkdSkKCiAg
ICAgICAgICAgICAgICAgICAgc2V0ICR2ICRwJHV2KC5DVEVYVCkKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBpZiB7IVtzdHJpbmcgY29tcGFyZSAkbXJl
ZiAiIl19IHsKICAgICAgICAgICAgc2V0IG1yZWYgJHVyZWYKICAgICAgICB9IGVsc2VpZiB7IVtz
dHJpbmcgY29tcGFyZSAkdXJlZiAiIl19IHsKICAgICAgICAgICAgc2V0IHVyZWYgJG1yZWYKICAg
ICAgICB9CgogICAgICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJGF2KGluaXRpYWxzKSAiIl19IHsK
ICAgICAgICAgICAgc2V0IGF2KGluaXRpYWxzKSBbbGluZGV4IFtzcGxpdCAkYXYoaW5pdGlhbHMp
IC5dIDBdLgogICAgICAgIH0KICAgICAgICBpZiB7KCRjaGlsZEEgPiAxKSAmJiAoJGNoaWxkQSA9
PSAkY2hpbGROKX0gewogICAgICAgICAgICBzZXQgYXYoYWJicmV2KSBbc3RyaW5nIHRyaW1sZWZ0
ICIkYXYoaW5pdGlhbHMpICRhdihzdXJuYW1lKSJdCiAgICAgICAgfSBlbHNlaWYge1tzdHJpbmcg
Y29tcGFyZSAkYXYoaW5pdGlhbHMpICIiXX0gewogICAgICAgICAgICBzZXQgYXYoYWJicmV2KSAi
JGF2KHN1cm5hbWUpLCAkYXYoaW5pdGlhbHMpIgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
IHNldCBhdihhYmJyZXYpICRhdihzdXJuYW1lKQogICAgICAgIH0KICAgICAgICBpZiB7W3N0cmlu
ZyBsZW5ndGggJGF2KGFiYnJldildID09IDB9IHsKICAgICAgICAgICAgbGFwcGVuZCBuYW1lcyBb
bGlzdCAkb3YoLkNURVhUKSAkdXJlZl0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBsYXBw
ZW5kIG5hbWVzIFtsaXN0ICRhdihhYmJyZXYpICRtcmVmXQogICAgICAgIH0KICAgIH0KICAgIHNl
dCBoYWNrICRuYW1lcwoKICAgIHNldCBuYW1lcyB7fQogICAgZm9yZWFjaCBuYW1lICRoYWNrIHsK
ICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJlIFtsaW5kZXggJG5hbWUgMF0gIiJdfSB7ICAgICAK
ICAgICAgICAgICAgbGFwcGVuZCBuYW1lcyAkbmFtZQogICAgICAgIH0KICAgIH0KCiAgICByZXR1
cm4gJG5hbWVzCn0KCnByb2MgcmVmX3RpdGxlIHtlbGVtWH0gewogICAgZ2xvYmFsIGNvdW50ZXIg
ZGVwdGggZWxlbU4gZWxlbSBwYXNzbm8gc3RhY2sgeHJlZgoKICAgIGFycmF5IHNldCBhdHRycyBb
bGlzdCBhbmNob3IgIiIgdGFyZ2V0ICIiIHRhcmdldDIgIiJdCiAgICBhcnJheSBzZXQgYXR0cnMg
JGVsZW0oJGVsZW1YKQoKICAgIHNldCBmcm9udCBbZmluZF9lbGVtZW50IGZyb250ICRhdHRycygu
Q0hJTERSRU4pXQogICAgYXJyYXkgc2V0IGZ2ICRlbGVtKCRmcm9udCkKCiAgICBzZXQgdGl0bGUg
W2ZpbmRfZWxlbWVudCB0aXRsZSAkZnYoLkNISUxEUkVOKV0KICAgIGFycmF5IHNldCB0diBbbGlz
dCBhYmJyZXYgIiJdCiAgICBhcnJheSBzZXQgdHYgJGVsZW0oJHRpdGxlKQoKICAgIHJldHVybiAk
dHYoLkNURVhUKQp9Cgpwcm9jIHJlZl9kYXRlIHtlbGVtWH0gewogICAgZ2xvYmFsIGNvdW50ZXIg
ZGVwdGggZWxlbU4gZWxlbSBwYXNzbm8gc3RhY2sgeHJlZgoKICAgIGFycmF5IHNldCBhdHRycyBb
bGlzdCBhbmNob3IgIiIgdGFyZ2V0ICIiIHRhcmdldDIgIiJdCiAgICBhcnJheSBzZXQgYXR0cnMg
JGVsZW0oJGVsZW1YKQoKICAgIHNldCBmcm9udCBbZmluZF9lbGVtZW50IGZyb250ICRhdHRycygu
Q0hJTERSRU4pXQogICAgYXJyYXkgc2V0IGZ2ICRlbGVtKCRmcm9udCkKCiAgICBzZXQgZGF0ZSBb
ZmluZF9lbGVtZW50IGRhdGUgJGZ2KC5DSElMRFJFTildCiAgICBhcnJheSBzZXQgZHYgJGVsZW0o
JGRhdGUpCiAgICBpZiB7KFtpbmZvIGV4aXN0cyBkdihtb250aCldKSAmJiAoW3N0cmluZyBjb21w
YXJlICRkdihtb250aCkgIiJdKX0gewogICAgICAgIHNldCBkYXRlICIkZHYobW9udGgpICRkdih5
ZWFyKSIKICAgIH0gZWxzZSB7CiAgICAgICAgc2V0IGRhdGUgJGR2KHllYXIpCiAgICB9CgogICAg
cmV0dXJuICRkYXRlCn0KCnByb2MgZmluZF9lbGVtZW50IHtuYW1lIGNoaWxkcmVufSB7CiAgICBn
bG9iYWwgY291bnRlciBkZXB0aCBlbGVtTiBlbGVtIHBhc3NubyBzdGFjayB4cmVmCgogICAgc2V0
IHJlc3VsdCAiIgogICAgZm9yZWFjaCBjaGlsZCAkY2hpbGRyZW4gewogICAgICAgIGFycmF5IHNl
dCBhdHRycyAkZWxlbSgkY2hpbGQpCgogICAgICAgIGlmIHshW3N0cmluZyBjb21wYXJlICRhdHRy
cyguTkFNRSkgJG5hbWVdfSB7CiAgICAgICAgICAgIGxhcHBlbmQgcmVzdWx0ICRjaGlsZAogICAg
ICAgIH0KICAgIH0KCiAgICByZXR1cm4gJHJlc3VsdAp9CgojIGNvdWxkIHVzZSAibHNlYXJjaCAt
Z2xvYiIgZm9sbG93ZWQgYnkgYSAic3RyaW5nIGNvbXBhcmUiLCBidXQgdGhlcmUgYXJlCiMgc29t
ZSBhbXVzaW5nIGNvcm5lciBjYXNlcyB3aXRoIHRoYXQuLi4KCnByb2MgbHNlYXJjaDAge2xpc3Qg
ZXhhY3R9IHsKICAgIHNldCB4IDAKICAgIGZvcmVhY2ggZWxlbSAkbGlzdCB7CiAgICAgICAgaWYg
eyFbc3RyaW5nIGNvbXBhcmUgW2xpbmRleCAkZWxlbSAwXSAkZXhhY3RdfSB7CiAgICAgICAgICAg
IHJldHVybiAkeAogICAgICAgIH0KICAgICAgICBpbmNyIHgKICAgIH0KCiAgICByZXR1cm4gLTEK
fQoKCiMKIyB0ZXh0IG91dHB1dAojCgoKcHJvYyByZmNfdHh0IHtpcmVmcyBjb3B5aW5nfSB7CiAg
ICBnbG9iYWwgb3B0aW9ucyBjb3B5cmlnaHRQCiAgICBnbG9iYWwgZnVuZGluZwogICAgZ2xvYmFs
IGhlYWRlciBmb290ZXIgbGluZW5vIHBhZ2VubyBibGFua1AKICAgIGdsb2JhbCBpbmRleHBnCgog
ICAgZW5kX3BhZ2VfdHh0CgogICAgaWYge1tsbGVuZ3RoICRpcmVmc10gPiAwfSB7CiAgICAgICAg
c2V0IGluZGV4cGcgJHBhZ2VubwoKICAgICAgICB3cml0ZV9saW5lX3R4dCAiSW5kZXgiCgogICAg
ICAgIGZvcmVhY2ggaXJlZiAkaXJlZnMgewogICAgICAgICAgICBmb3JlYWNoIHtMIGl0ZW0gc3Vi
aXRlbSBmbGFncyBwYWdlc30gJGlyZWYgeyBicmVhayB9CgogICAgICAgICAgICBpZiB7W3N0cmlu
ZyBjb21wYXJlICRMICIiXX0gewogICAgICAgICAgICAgICAgd3JpdGVfbGluZV90eHQgIiIKICAg
ICAgICAgICAgICAgIHdyaXRlX2xpbmVfdHh0ICRMICAgICAgICAgICAKICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgc2V0IHN1Yml0ZW0gW2NoYXJzX2V4cGFuZCAkc3ViaXRlbV0KICAgICAgICAg
ICAgaWYge1tzdHJpbmcgY29tcGFyZSAkaXRlbSAiIl19IHsKICAgICAgICAgICAgICAgIHdyaXRl
X3RleHRfdHh0IFtjaGFyc19leHBhbmQgJGl0ZW1dCiAgICAgICAgICAgICAgICBpZiB7W3N0cmlu
ZyBjb21wYXJlICRzdWJpdGVtICIiXX0gewogICAgICAgICAgICAgICAgICAgIGZsdXNoX3RleHQK
ICAgICAgICAgICAgICAgICAgICB3cml0ZV90ZXh0X3R4dCAiICAgJHN1Yml0ZW0iCiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB3cml0ZV90ZXh0
X3R4dCAiICAgJHN1Yml0ZW0iCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHNldCBzICIgICIK
ICAgICAgICAgICAgZm9yZWFjaCBwYWdlICRwYWdlcyB7CiAgICAgICAgICAgICAgICB3cml0ZV90
ZXh0X3R4dCAiJHMkcGFnZSIKICAgICAgICAgICAgICAgIHNldCBzICIsICIKICAgICAgICAgICAg
fQogICAgICAgICAgICBmbHVzaF90ZXh0ICAKICAgICAgICB9CgogICAgICAgIGVuZF9wYWdlX3R4
dAogICAgfQoKICAgIGlmIHsoISRvcHRpb25zKC5QUklWQVRFKSkgJiYgJGNvcHlyaWdodFB9IHsK
ICAgICAgICBzZXQgcmVzdWx0ICRwYWdlbm8KCiAgICAgICAgd3JpdGVfbGluZV90eHQgIkZ1bGwg
Q29weXJpZ2h0IFN0YXRlbWVudCIKCiAgICAgICAgZm9yZWFjaCBwYXJhICRjb3B5aW5nIHsKICAg
ICAgICAgICAgd3JpdGVfbGluZV90eHQgIiIKICAgICAgICAgICAgcGNkYXRhX3R4dCAkcGFyYQog
ICAgICAgIH0KICAgICAgICB3cml0ZV9saW5lX3R4dCAiIgoKICAgICAgICBpZiB7IVtoYXZlX2xp
bmVzIDRdfSB7CiAgICAgICAgICAgIGVuZF9wYWdlX3R4dAogICAgICAgIH0KICAgICAgICB3cml0
ZV9saW5lX3R4dCAiQWNrbm93bGVkZ2VtZW50IgogICAgICAgIHdyaXRlX2xpbmVfdHh0ICIiCiAg
ICAgICAgcGNkYXRhX3R4dCAkZnVuZGluZwoKICAgICAgICBlbmRfcGFnZV90eHQKICAgIH0gZWxz
ZSB7CiAgICAgICAgc2V0IHJlc3VsdCAiIgogICAgfQoKICAgIHJldHVybiAkcmVzdWx0Cn0KCnBy
b2MgZnJvbnRfdHh0X2JlZ2luIHtsZWZ0IHJpZ2h0IHRvcCBib3R0b20gdGl0bGUgc3RhdHVzIGNv
cHlpbmd9IHsKICAgIGdsb2JhbCBvcHRpb25zIGNvcHlyaWdodFAKICAgIGdsb2JhbCBpZmlsZSBt
b2RlIG9maWxlCiAgICBnbG9iYWwgaGVhZGVyIGZvb3RlciBsaW5lbm8gcGFnZW5vIGJsYW5rUAog
ICAgZ2xvYmFsIGVhdFAKICAgIGdsb2JhbCBwYXNzbm8gaW5kZXhwZwoKICAgIHNldCBoZWFkZXIg
W3RocmVlX3BhcnRzICR0b3BdCiAgICBzZXQgZm9vdGVyIFtzdHJpbmcgdHJpbXJpZ2h0IFt0aHJl
ZV9wYXJ0cyAkYm90dG9tXV0KICAgIHNldCBsaW5lbm8gMQogICAgc2V0IHBhZ2VubyAxCiAgICBz
ZXQgYmxhbmtQIDAKICAgIHNldCBlYXRQIDAKCiAgICBpZiB7JHBhc3NubyA9PSAyfSB7CiAgICAg
ICAgc2V0IGluZGV4cGcgMAogICAgfQoKICAgIGZvciB7c2V0IGkgMH0geyRpIDwgNH0ge2luY3Ig
aX0gewogICAgICAgIHdyaXRlX2xpbmVfdHh0ICIiIC0xCiAgICB9CgogICAgaWYgeyRvcHRpb25z
KC5UT1BCTE9DSyl9IHsKICAgICAgICBzZXQgbGVmdCBbbXVuZ2VfbG9uZyAkbGVmdF0KICAgICAg
ICBzZXQgcmlnaHQgW211bmdlX2xvbmcgJHJpZ2h0XQogICAgICAgIGZvcmVhY2ggbCAkbGVmdCBy
ICRyaWdodCB7CiAgICAgICAgICAgIHNldCBsIFtjaGFyc19leHBhbmQgJGxdCiAgICAgICAgICAg
IHNldCByIFtjaGFyc19leHBhbmQgJHJdCiAgICAgICAgICAgIHNldCBsZW4gW2V4cHIgNzItW3N0
cmluZyBsZW5ndGggJGxdXQogICAgICAgICAgICB3cml0ZV9saW5lX3R4dCBbZm9ybWF0ICVzJSou
KnMgJGwgJGxlbiAkbGVuICRyXQogICAgICAgIH0KICAgICAgICB3cml0ZV9saW5lX3R4dCAiIiAt
MQogICAgICAgIHdyaXRlX2xpbmVfdHh0ICIiIC0xCiAgICB9CgogICAgZm9yZWFjaCBsaW5lICR0
aXRsZSB7CiAgICAgICAgd3JpdGVfdGV4dF90eHQgW2NoYXJzX2V4cGFuZCAkbGluZV0gYwogICAg
fQoKICAgIHdyaXRlX2xpbmVfdHh0ICIiIC0xCgogICAgaWYgeyEkb3B0aW9ucyguUFJJVkFURSl9
IHsKICAgICAgICB3cml0ZV9saW5lX3R4dCAiU3RhdHVzIG9mIHRoaXMgTWVtbyIKICAgICAgICBm
b3JlYWNoIHBhcmEgJHN0YXR1cyB7CiAgICAgICAgICAgIHdyaXRlX2xpbmVfdHh0ICIiCiAgICAg
ICAgICAgIHBjZGF0YV90eHQgJHBhcmEKICAgICAgICB9CiAgICB9CgogICAgaWYgeyghJG9wdGlv
bnMoLlBSSVZBVEUpKSAmJiAkY29weXJpZ2h0UH0gewogICAgICAgIHdyaXRlX2xpbmVfdHh0ICIi
IC0xCiAgICAgICAgd3JpdGVfbGluZV90eHQgIkNvcHlyaWdodCBOb3RpY2UiCiAgICAgICAgd3Jp
dGVfbGluZV90eHQgIiIgLTEKICAgICAgICBwY2RhdGFfdHh0ICRjb3B5aW5nCiAgICB9CiAgICBp
bmNyIGxpbmVubyAtMQp9Cgpwcm9jIHRocmVlX3BhcnRzIHtzdHVmZn0gewogICAgc2V0IHJlc3Vs
dCBbY2hhcnNfZXhwYW5kIFtsaW5kZXggJHN0dWZmIDBdXQogICAgc2V0IGxlbiBbc3RyaW5nIGxl
bmd0aCAkcmVzdWx0XQoKICAgIHNldCB0ZXh0IFtjaGFyc19leHBhbmQgW2xpbmRleCAkc3R1ZmYg
MV1dCiAgICBzZXQgbGVuIFtleHByICg3Mi1bc3RyaW5nIGxlbmd0aCAkdGV4dF0pLzItJGxlbl0K
ICAgIGlmIHskbGVuIDwgNH0gewogICAgICAgIHNldCBsZW4gNAogICAgfQogICAgYXBwZW5kIHJl
c3VsdCBbZm9ybWF0ICUqLipzJXMgJGxlbiAkbGVuICIiICR0ZXh0XQogICAgc2V0IGxlbiBbc3Ry
aW5nIGxlbmd0aCBbc2V0IHRleHQgW2NoYXJzX2V4cGFuZCBbbGluZGV4ICRzdHVmZiAyXV1dXQog
ICAgc2V0IGxlbiBbZXhwciAoNzItW3N0cmluZyBsZW5ndGggJHJlc3VsdF0pLSRsZW5dCiAgICBh
cHBlbmQgcmVzdWx0IFtmb3JtYXQgJSouKnMlcyAkbGVuICRsZW4gIiIgJHRleHRdCgogICAgcmV0
dXJuICRyZXN1bHQKfQoKcHJvYyBmcm9udF90eHRfZW5kIHt0b2MgaXJlZlB9IHsKICAgIGdsb2Jh
bCBvcHRpb25zCiAgICBnbG9iYWwgaGVhZGVyIGZvb3RlciBsaW5lbm8gcGFnZW5vIGJsYW5rUAog
ICAgZ2xvYmFsIHBhc3NubyBpbmRleHBnCgogICAgaWYgeyRvcHRpb25zKC5UT0MpfSB7CiAgICAg
ICAgc2V0IGxhc3QgW2xpbmRleCAkdG9jIGVuZF0KICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJl
IFtsaW5kZXggJGxhc3QgMV0gIkZ1bGwgQ29weXJpZ2h0IFN0YXRlbWVudCJdfSB7CiAgICAgICAg
ICAgIHNldCBsYXN0ICIiCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2V0IHRvYyBbbHJl
cGxhY2UgJHRvYyBlbmQgZW5kXQogICAgICAgIH0KICAgICAgICBpZiB7JGlyZWZQfSB7CiAgICAg
ICAgICAgIGxhcHBlbmQgdG9jIFtsaXN0ICIiIEluZGV4ICRpbmRleHBnXQogICAgICAgIH0KICAg
ICAgICBpZiB7W3N0cmluZyBjb21wYXJlICRsYXN0ICIiXX0gewogICAgICAgICAgICBsYXBwZW5k
IHRvYyAkbGFzdAogICAgICAgIH0KCiAgICAgICAgaWYgeyghW2hhdmVfbGluZXMgW2V4cHIgW2xs
ZW5ndGggJHRvY10rM11dKSB8fCAoJGxpbmVubyA+IDE3KX0gewogICAgICAgICAgICBlbmRfcGFn
ZV90eHQKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB3cml0ZV9saW5lX3R4dCAiIiAtMQog
ICAgICAgIH0KICAgICAgICB3cml0ZV9saW5lX3R4dCAiVGFibGUgb2YgQ29udGVudHMiCiAgICAg
ICAgd3JpdGVfbGluZV90eHQgIiIgLTEKCiAgICAgICAgc2V0IGxlbjEgMAogICAgICAgIHNldCBs
ZW4yIDAKICAgICAgICBmb3JlYWNoIGMgJHRvYyB7CiAgICAgICAgICAgIGlmIHtbc2V0IHggW3N0
cmluZyBsZW5ndGggW2xpbmRleCAkYyAwXV1dID4gJGxlbjF9IHsKICAgICAgICAgICAgICAgIHNl
dCBsZW4xICR4CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYge1tzZXQgeCBbc3RyaW5nIGxl
bmd0aCBbbGluZGV4ICRjIDJdXV0gPiAkbGVuMn0gewogICAgICAgICAgICAgICAgc2V0IGxlbjIg
JHgKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBzZXQgbGVuMyBbZXhwciA1LSRsZW4y
XQogICAgICAgIHNldCBsZW4yIDUKICAgICAgICBzZXQgbWlkIFtleHByIDcyLSgkbGVuMSskbGVu
Mis1KV0KCiAgICAgICAgZm9yZWFjaCBjICR0b2MgewogICAgICAgICAgICBpZiB7ISRvcHRpb25z
KC5UT0NPTVBBQ1QpfSB7CiAgICAgICAgICAgICAgICBpZiB7W3N0cmluZyBsYXN0IC4gW2xpbmRl
eCAkYyAwXV0gXAogICAgICAgICAgICAgICAgICAgICAgICA9PSBbZXhwciBbc3RyaW5nIGxlbmd0
aCBbbGluZGV4ICRjIDBdXS0xXX0gewogICAgICAgICAgICAgICAgICAgIHdyaXRlX2xpbmVfdHh0
ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2V0IHMxIFtm
b3JtYXQgIiAgICUtKi4qcyAiICRsZW4xICRsZW4xIFtsaW5kZXggJGMgMF1dCiAgICAgICAgICAg
IHNldCBzMiBbZm9ybWF0ICIgJSouKnMiICRsZW4yICRsZW4yIFtsaW5kZXggJGMgMl1dCiAgICAg
ICAgICAgIHNldCB0aXRsZSBbY2hhcnNfZXhwYW5kIFtzdHJpbmcgdHJpbSBbbGluZGV4ICRjIDFd
XV0KICAgICAgICAgICAgd2hpbGUge1tzZXQgaSBbc3RyaW5nIGxlbmd0aCAkdGl0bGVdXSA+ICRt
aWR9IHsKICAgICAgICAgICAgICAgIHNldCBwaHJhc2UgW3N0cmluZyByYW5nZSAkdGl0bGUgMCBb
ZXhwciAkbWlkLTFdXQogICAgICAgICAgICAgICAgaWYge1tzZXQgeCBbc3RyaW5nIGxhc3QgIiAi
ICRwaHJhc2VdXSA8IDB9IHsKICAgICAgICAgICAgICAgICAgICBpZiB7W3NldCB4IFtzdHJpbmcg
Zmlyc3QgIiAiICR0aXRsZV1dIDwgMH0gewogICAgICAgICAgICAgICAgICAgICAgICBicmVhawog
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHdy
aXRlX3RvY190eHQgJHMxIFtzdHJpbmcgcmFuZ2UgJHRpdGxlIDAgW2V4cHIgJHgtMV1dIFwKICAg
ICAgICAgICAgICAgICAgICAgICAgW2Zvcm1hdCAiICUtKi4qcyIgJGxlbjIgJGxlbjIgIiJdICRt
aWQgMAogICAgICAgICAgICAgICAgc2V0IHMxIFtmb3JtYXQgIiAgICUtKi4qcyAiICRsZW4xICRs
ZW4xICIiXQogICAgICAgICAgICAgICAgc2V0IHRpdGxlIFtzdHJpbmcgdHJpbWxlZnQgW3N0cmlu
ZyByYW5nZSAkdGl0bGUgJHggZW5kXV0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiB7JGxl
bjMgPiAwfSB7CiAgICAgICAgICAgICAgICBzZXQgczIgW3N0cmluZyByYW5nZSAkczIgJGxlbjMg
ZW5kXQogICAgICAgICAgICB9CiAgICAgICAgICAgIHdyaXRlX3RvY190eHQgJHMxICR0aXRsZSAk
czIgW2V4cHIgJG1pZCskbGVuM10gMQogICAgICAgIH0KICAgIH0KCiAgICBpZiB7KCRvcHRpb25z
KC5UT0MpIHx8ICEkb3B0aW9ucyguQ09NUEFDVCkpfSB7CiAgICAgICAgZW5kX3BhZ2VfdHh0CiAg
ICB9Cn0KCnByb2Mgd3JpdGVfdG9jX3R4dCB7czEgdGl0bGUgczIgbGVuIGRvdH0gewogICAgc2V0
IHggW3N0cmluZyBsZW5ndGggJHRpdGxlXQogICAgaWYgeygkZG90KSAmJiAoJHggPCAkbGVuKX0g
ewogICAgICAgIGlmIHskeCUyfSB7CiAgICAgICAgICAgIGFwcGVuZCB0aXRsZSAiICIKICAgICAg
ICAgICAgaW5jciB4CiAgICAgICAgfQogICAgICAgIHdoaWxlIHskeCA8ICRsZW59IHsKICAgICAg
ICAgICAgYXBwZW5kIHRpdGxlICIgLiIKICAgICAgICAgICAgaW5jciB4IDIKICAgICAgICB9CiAg
ICB9CgogICAgd3JpdGVfbGluZV90eHQgW2Zvcm1hdCAiJXMlLSouKnMlcyIgJHMxICRsZW4gJGxl
biAkdGl0bGUgJHMyXQp9Cgpwcm9jIGFic3RyYWN0X3R4dCB7fSB7CiAgICB3cml0ZV9saW5lX3R4
dCAiIiAtMQogICAgd3JpdGVfbGluZV90eHQgIkFic3RyYWN0IgogICAgd3JpdGVfbGluZV90eHQg
IiIgLTEKfQoKcHJvYyBub3RlX3R4dCB7dGl0bGUgZGVwdGh9IHsKICAgIHdyaXRlX2xpbmVfdHh0
ICIiIC0xCiAgICB3cml0ZV9saW5lX3R4dCBbY2hhcnNfZXhwYW5kICR0aXRsZV0KICAgIHdyaXRl
X2xpbmVfdHh0ICIiIC0xCn0KCnByb2Mgc2VjdGlvbl90eHQge3ByZWZpeCB0b3AgdGl0bGUgbGlu
ZXMgYW5jaG9yfSB7CiAgICBnbG9iYWwgb3B0aW9ucwogICAgZ2xvYmFsIGhlYWRlciBmb290ZXIg
bGluZW5vIHBhZ2VubyBibGFua1AKCiAgICBpZiB7KCR0b3AgJiYgISRvcHRpb25zKC5DT01QQUNU
KSkgfHwgKCFbaGF2ZV9saW5lcyBbZXhwciAkbGluZXMrNV1dKX0gewogICAgICAgIGVuZF9wYWdl
X3R4dAogICAgfSBlbHNlIHsKICAgICAgICB3cml0ZV9saW5lX3R4dCAiIiAtMQogICAgfQoKICAg
IHB1c2hfaW5kZW50IC0zCiAgICB3cml0ZV90ZXh0X3R4dCAiJHByZWZpeCAiCiAgICBwdXNoX2lu
ZGVudCBbZXhwciBbc3RyaW5nIGxlbmd0aCAkcHJlZml4XSsxXQogICAgd3JpdGVfdGV4dF90eHQg
W2NoYXJzX2V4cGFuZCAkdGl0bGVdCiAgICBmbHVzaF90ZXh0CiAgICBwb3BfaW5kZW50CiAgICBw
b3BfaW5kZW50CgogICAgcmV0dXJuICRwYWdlbm8KfQoKcHJvYyB0X3R4dCB7dGFnIGNvdW50ZXIg
c3R5bGUgaGFuZ1RleHQgZWRpdE5vfSB7CiAgICBnbG9iYWwgb3B0aW9ucwogICAgZ2xvYmFsIGVh
dFAKCiAgICBpZiB7IVtzdHJpbmcgY29tcGFyZSAkdGFnIGVuZF19IHsKICAgICAgICByZXR1cm4K
ICAgIH0KCiAgICBpZiB7W3N0cmluZyBjb21wYXJlICRjb3VudGVyICIiXX0gewogICAgICAgIHNl
dCBwb3MgW3BvcF9pbmRlbnRdCiAgICAgICAgc2V0IGwgW3NwbGl0ICRjb3VudGVyIC5dCiAgICAg
ICAgc3dpdGNoIC0tICRzdHlsZSB7CiAgICAgICAgICAgIGxldHRlcnMgewogICAgICAgICAgICAg
ICAgc2V0IGNvdW50ZXIgW29mZnNldDJsZXR0ZXJzIFtsaW5kZXggJGwgZW5kXSBbbGxlbmd0aCAk
bF1dCiAgICAgICAgICAgICAgICBhcHBlbmQgY291bnRlciAiLiAiCiAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgIG51bWJlcnMgewogICAgICAgICAgICAgICAgc2V0IGNvdW50ZXIgIltsaW5kZXgg
JGwgZW5kXS4gIgogICAgICAgICAgICB9CgogICAgICAgICAgICBzeW1ib2xzIHsKICAgICAgICAg
ICAgICAgIHNldCBjb3VudGVyICJbbGluZGV4IHsgLSBvICogKyB9IFtleHByIFtsbGVuZ3RoICRs
XSU0XV0gIgogICAgICAgICAgICB9CgogICAgICAgICAgICBoYW5naW5nIHsKICAgICAgICAgICAg
ICAgIHNldCBjb3VudGVyICJbY2hhcnNfZXhwYW5kICRoYW5nVGV4dF0gIgogICAgICAgICAgICB9
CgogICAgICAgICAgICBkZWZhdWx0IHsKICAgICAgICAgICAgICAgIHNldCBjb3VudGVyICIgICIK
ICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBmbHVzaF90ZXh0CiAgICAgICAgaWYgeyRv
cHRpb25zKC5FRElUSU5HKX0gewogICAgICAgICAgICB3cml0ZV9lZGl0bm9fdHh0ICRlZGl0Tm8K
ICAgICAgICB9IGVsc2VpZiB7ISRvcHRpb25zKC5TVUJDT01QQUNUKX0gewogICAgICAgICAgICB3
cml0ZV9saW5lX3R4dCAiIgogICAgICAgIH0KICAgICAgICB3cml0ZV90ZXh0X3R4dCBbZm9ybWF0
ICIlMHMlLVtleHByICRwb3MtMF1zIiAiIiAkY291bnRlcl0KICAgICAgICBwdXNoX2luZGVudCAk
cG9zCiAgICB9IGVsc2UgewogICAgICAgIGlmIHskb3B0aW9ucyguRURJVElORyl9IHsKICAgICAg
ICAgICAgd3JpdGVfZWRpdG5vX3R4dCAkZWRpdE5vCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgd3JpdGVfbGluZV90eHQgIiIKICAgICAgICB9CiAgICB9CgogICAgc2V0IGVhdFAgMQp9Cgpw
cm9jIG9mZnNldDJsZXR0ZXJzIHtvZmZzZXQgZGVwdGh9IHsKICAgIHNldCBhbHBoYSBbbGluZGV4
IFtsaXN0ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIgXAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Il0gW2V4cHIgJGRlcHRoJTJdXQog
ICAgc2V0IGxldHRlcnMgIiIKICAgIGZvciB7fSB7JG9mZnNldCA+IDB9IHtzZXQgb2Zmc2V0IFtl
eHByICRvZmZzZXQvMjZdfSB7CiAgICAgICAgaW5jciBvZmZzZXQgLTEKICAgICAgICBzZXQgbGV0
dGVycyBbc3RyaW5nIGluZGV4ICRhbHBoYSBbZXhwciAkb2Zmc2V0JTI2XV0kbGV0dGVycwogICAg
fQoKICAgIHJldHVybiAkbGV0dGVycwp9Cgpwcm9jIGxpc3RfdHh0IHt0YWcgY291bnRlcnMgc3R5
bGUgaGFuZ0luZGVudCBoYW5nVGV4dH0gewogICAgZ2xvYmFsIG9wdGlvbnMKICAgIGdsb2JhbCBl
YXRQCgogICAgc3dpdGNoIC0tICR0YWcgewogICAgICAgIGJlZ2luIHsKICAgICAgICAgICAgc3dp
dGNoIC0tICRzdHlsZSB7CiAgICAgICAgICAgICAgICBsZXR0ZXJzIHsKICAgICAgICAgICAgICAg
ICAgc2V0IGkgW2V4cHIgaW50KGxvZyhbbGxlbmd0aCAkY291bnRlcnNdKS9sb2coMjYpKSsyXQog
ICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG51bWJlcnMgewogICAgICAgICAgICAg
ICAgICAgIHNldCBpIDAKICAgICAgICAgICAgICAgICAgICBmb3JlYWNoIGNvdW50ZXIgJGNvdW50
ZXJzIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYge1tzZXQgaiBbc3RyaW5nIGxlbmd0aCBc
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGluZGV4IFtzcGxp
dCAkY291bnRlciAuXSBlbmRdXV0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID4g
JGl9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldCBpICRqCiAgICAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaW5j
ciBpIDEKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3JtYXQgewogICAgICAg
ICAgICAgICAgICAgIHNldCBpIFtleHByIFtzdHJpbmcgbGVuZ3RoIFtjaGFyc19leHBhbmQgJGhh
bmdUZXh0XV0tMV0KICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBkZWZhdWx0IHsK
ICAgICAgICAgICAgICAgICAgICBzZXQgaSAxCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgaWYge1tpbmNyIGkgMl0gPiAkaGFuZ0luZGVudH0gewogICAgICAgICAg
ICAgICAgcHVzaF9pbmRlbnQgW2V4cHIgJGkrMF0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgIHB1c2hfaW5kZW50IFtleHByICRoYW5nSW5kZW50KzBdCiAgICAgICAgICAgIH0K
ICAgICAgICB9CgogICAgICAgIGVuZCB7CiAgICAgICAgICAgIGZsdXNoX3RleHQKICAgICAgICAg
ICAgaWYgeyEkb3B0aW9ucyguU1VCQ09NUEFDVCl9IHsKICAgICAgICAgICAgICAgIHdyaXRlX2xp
bmVfdHh0ICIiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgcG9wX2luZGVudAoKICAgICAgICAg
ICAgc2V0IGVhdFAgMQogICAgICAgIH0KICAgIH0KfQoKcHJvYyBmaWd1cmVfdHh0IHt0YWcgbGlu
ZXMgYW5jaG9yIHRpdGxlIGFyZ3N9IHsKICAgIGdsb2JhbCBjb3VudGVyIGRlcHRoIGVsZW1OIGVs
ZW0gcGFzc25vIHN0YWNrIHhyZWYKCiAgICBzd2l0Y2ggLS0gJHRhZyB7CiAgICAgICAgYmVnaW4g
ewogICAgICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJlICR0aXRsZSAiIl19IHsKICAgICAgICAg
ICAgICAgIGluY3IgbGluZXMgOAogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIHshW2hhdmVf
bGluZXMgJGxpbmVzXX0gewogICAgICAgICAgICAgICAgZW5kX3BhZ2VfdHh0CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgaWYge1tzdHJpbmcgY29tcGFyZSAkdGl0bGUgIiJdfSB7CiAgICAgICAg
ICAgICAgICB3cml0ZV9saW5lX3R4dCAiIgogICAgICAgICAgICAgICAgd3JpdGVfbGluZV90eHQg
XAogICAgICAgICAgICAgICAgICAgICIgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCiAgICAgICAgICAgICAgICB3
cml0ZV9saW5lX3R4dCAiIgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBlbmQgewog
ICAgICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJlICR0aXRsZSAiIl19IHsKICAgICAgICAgICAg
ICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJGFuY2hvciAiIl19IHsKICAgICAgICAgICAgICAgICAg
ICBhcnJheSBzZXQgYXYgJHhyZWYoJGFuY2hvcikKICAgICAgICAgICAgICAgICAgICBzZXQgcHJl
Zml4ICJGaWd1cmUgJGF2KHZhbHVlKTogIgogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICAgICBzZXQgcHJlZml4ICIiCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICB3cml0ZV9saW5lX3R4dCAiIgogICAgICAgICAgICAgICAgd3JpdGVfdGV4dF90eHQgIiRw
cmVmaXhbY2hhcnNfZXhwYW5kICR0aXRsZV0iIGMKICAgICAgICAgICAgICAgIHdyaXRlX2xpbmVf
dHh0ICIiCiAgICAgICAgICAgICAgICB3cml0ZV9saW5lX3R4dCBcCiAgICAgICAgICAgICAgICAg
ICAgIiAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSIKICAgICAgICAgICAgICAgIHdyaXRlX2xpbmVfdHh0ICIiCiAg
ICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCnByb2MgcHJlYW1ibGVfdHh0IHt0YWcge2Vk
aXRObyAiIn19IHsKICAgIGdsb2JhbCBvcHRpb25zCgogICAgc3dpdGNoIC0tICR0YWcgewogICAg
ICAgIGJlZ2luIHsKICAgICAgICAgICAgaWYgeyRvcHRpb25zKC5FRElUSU5HKX0gewogICAgICAg
ICAgICAgICAgd3JpdGVfZWRpdG5vX3R4dCAkZWRpdE5vCiAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICB3cml0ZV9saW5lX3R4dCAiIgogICAgICAgICAgICB9CiAgICAgICAgfQog
ICAgfQp9Cgpwcm9jIHBvc3RhbWJsZV90eHQge3RhZyB7ZWRpdE5vICIifX0gewogICAgZ2xvYmFs
IG9wdGlvbnMKICAgIGdsb2JhbCBlYXRQCgogICAgc3dpdGNoIC0tICR0YWcgewogICAgICAgIGJl
Z2luIHsKICAgICAgICAgICAgc2V0IGVhdFAgMQogICAgICAgICAgICBpZiB7JG9wdGlvbnMoLkVE
SVRJTkcpfSB7CiAgICAgICAgICAgICAgICB3cml0ZV9lZGl0bm9fdHh0ICRlZGl0Tm8KICAgICAg
ICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKcHJvYyB4cmVmX3R4dCB7dGV4dCBhdiB0YXJnZXR9
IHsKICAgIGdsb2JhbCBlYXRQCgogICAgYXJyYXkgc2V0IGF0dHJzICRhdiAgICAKCiAgICBzd2l0
Y2ggLS0gJGF0dHJzKHR5cGUpIHsKICAgICAgICBzZWN0aW9uIHsKICAgICAgICAgICAgc2V0IGxp
bmUgIlNlY3Rpb24gJGF0dHJzKHZhbHVlKSIKICAgICAgICB9CgogICAgICAgIGFwcGVuZGl4IHsK
ICAgICAgICAgICAgc2V0IGxpbmUgIkFwcGVuZGl4ICRhdHRycyh2YWx1ZSkiCiAgICAgICAgfQoK
ICAgICAgICBmaWd1cmUgewogICAgICAgICAgICBzZXQgbGluZSAiRmlndXJlICRhdHRycyh2YWx1
ZSkiCiAgICAgICAgfQoKICAgICAgICBkZWZhdWx0IHsKICAgICAgICAgICAgc2V0IGxpbmUgIlxb
JGF0dHJzKHZhbHVlKVxdIgogICAgICAgIH0KICAgIH0KICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUg
JHRleHQgIiJdfSB7CiAgICAgICAgc3dpdGNoIC0tICRhdHRycyh0eXBlKSB7CiAgICAgICAgICAg
IHNlY3Rpb24KICAgICAgICAgICAgICAgIC0KICAgICAgICAgICAgYXBwZW5kaXgKICAgICAgICAg
ICAgICAgIC0KICAgICAgICAgICAgZmlndXJlIHsKICAgICAgICAgICAgICAgIHNldCBsaW5lICJb
Y2hhcnNfZXhwYW5kICR0ZXh0XSAoJGxpbmUpIgogICAgICAgICAgICB9CgogICAgICAgICAgICBk
ZWZhdWx0IHsKICAgICAgICAgICAgICAgIHNldCBsaW5lICJbY2hhcnNfZXhwYW5kICR0ZXh0XSAk
bGluZSIKICAgICAgICAgICAgfQogICAgICAgIH0gICAgICAgCiAgICB9CiAgICB3cml0ZV90ZXh0
X3R4dCAkbGluZQoKICAgIHNldCBlYXRQIDAKfQoKcHJvYyBlcmVmX3R4dCB7dGV4dCBjb3VudGVy
IHRhcmdldH0gewogICAgZ2xvYmFsIGVhdFAKICAgIGdsb2JhbCBlcmVmcwoKICAgIGlmIHtbc3Ry
aW5nIGNvbXBhcmUgJHRleHQgIiJdfSB7CiAgICAgICAgc2V0IGxpbmUgIltjaGFyc19leHBhbmQg
JHRleHRdIgogICAgfQogICAgaWYgeyhbc3RyaW5nIGZpcnN0ICIjIiAkdGFyZ2V0XSA8IDApIFwK
ICAgICAgICAgICAgJiYgKFtzdHJpbmcgY29tcGFyZSAkdGV4dCAkdGFyZ2V0XSl9IHsKICAgICAg
ICBzZXQgZXJlZnMoJGNvdW50ZXIpICR0YXJnZXQKICAgICAgICBhcHBlbmQgbGluZSAiIFxbJGNv
dW50ZXJcXSIKICAgIH0KICAgIHdyaXRlX3RleHRfdHh0ICRsaW5lCgogICAgc2V0IGVhdFAgMAp9
Cgpwcm9jIGlyZWZfdHh0IHtpdGVtIHN1Yml0ZW0gZmxhZ3N9IHsKICAgIGdsb2JhbCBoZWFkZXIg
Zm9vdGVyIGxpbmVubyBwYWdlbm8gYmxhbmtQCgogICAgcmV0dXJuICRwYWdlbm8KfQoKcHJvYyB2
c3BhY2VfdHh0IHtsaW5lc30gewogICAgZ2xvYmFsIGhlYWRlciBmb290ZXIgbGluZW5vIHBhZ2Vu
byBibGFua1AKICAgIGdsb2JhbCBlYXRQCgogICAgZmx1c2hfdGV4dAogICAgaWYgeyRsaW5lbm8r
JGxpbmVzID49IDUxfSB7CiAgICAgICAgZW5kX3BhZ2VfdHh0CiAgICB9IGVsc2UgewogICAgICAg
IHdoaWxlIHskbGluZXMgPiAwfSB7CiAgICAgICAgICAgIGluY3IgbGluZXMgLTEKCiAgICAgICAg
ICAgIHdyaXRlX2l0ICIiCiAgICAgICAgICAgIGluY3IgbGluZW5vCiAgICAgICAgfQogICAgfQoK
ICAgIHNldCBlYXRQIDEKfQoKcHJvYyByZWZlcmVuY2VzX3R4dCB7dGFnIHt0aXRsZSAiIn0ge2Vy
ZWZQIDB9fSB7CiAgICBnbG9iYWwgY291bnRlciBkZXB0aCBlbGVtTiBlbGVtIHBhc3NubyBzdGFj
ayB4cmVmCiAgICBnbG9iYWwgb3B0aW9ucwogICAgZ2xvYmFsIGhlYWRlciBmb290ZXIgbGluZW5v
IHBhZ2VubyBibGFua1AKCiAgICBzd2l0Y2ggLS0gJHRhZyB7CiAgICAgICAgYmVnaW4gewogICAg
ICAgICAgICBpZiB7JG9wdGlvbnMoLkNPTVBBQ1QpfSB7CiAgICAgICAgICAgICAgICB3cml0ZV9s
aW5lX3R4dCAiIgogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZW5kX3BhZ2Vf
dHh0CiAgICAgICAgICAgIH0KICAgICAgICAgICAgd3JpdGVfbGluZV90eHQgW2NoYXJzX2V4cGFu
ZCAkdGl0bGVdCgogICAgICAgICAgICByZXR1cm4gJHBhZ2VubwogICAgICAgIH0KCiAgICAgICAg
ZW5kIHsKICAgICAgICAgICAgaWYgeyRlcmVmUH0gewogICAgICAgICAgICAgICAgZXJlZnNfdHh0
CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBmbHVzaF90ZXh0CiAgICAgICAg
ICAgIH0KICAgICAgICB9CiAgICB9Cn0KCnByb2MgZXJlZnNfdHh0IHt7dGl0bGUgIiJ9fSB7CiAg
ICBnbG9iYWwgZXJlZnMKICAgIGdsb2JhbCBvcHRpb25zCgogICAgaWYge1tzdHJpbmcgY29tcGFy
ZSAkdGl0bGUgIiJdfSB7CiAgICAgICAgaWYgeyRvcHRpb25zKC5DT01QQUNUKX0gewogICAgICAg
ICAgICB3cml0ZV9saW5lX3R4dCAiIgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGVuZF9w
YWdlX3R4dAogICAgICAgIH0KICAgICAgICB3cml0ZV9saW5lX3R4dCAkdGl0bGUKICAgIH0KCiAg
ICBzZXQgbmFtZXMgIFtsc29ydCAtaW50ZWdlciBbYXJyYXkgbmFtZXMgZXJlZnNdXQogICAgc2V0
IHdpZHRoIFtleHByIFtzdHJpbmcgbGVuZ3RoIFtsaW5kZXggJG5hbWVzIGVuZF1dKzJdCiAgICBm
b3JlYWNoIGVyZWYgJG5hbWVzIHsKICAgICAgICB3cml0ZV9saW5lX3R4dCAiIgoKICAgICAgICBz
ZXQgaSBbZXhwciBbc3RyaW5nIGxlbmd0aCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBb
c2V0IHByZWZpeCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtYXQgJS0q
LipzICR3aWR0aCAkd2lkdGggXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJcWyRlcmVmXF0iXV0rMl1dCiAgICAgICAgd3JpdGVfdGV4dF90eHQgJHByZWZpeAoKICAg
ICAgICBwdXNoX2luZGVudCAkaQoKICAgICAgICB3cml0ZV90ZXh0X3R4dCAiICAiCiAgICAgICAg
d3JpdGVfdXJsICRlcmVmcygkZXJlZikKCiAgICAgICAgcG9wX2luZGVudAogICAgfQoKICAgIGZs
dXNoX3RleHQKfQoKcHJvYyByZWZlcmVuY2VfdHh0IHtwcmVmaXggbmFtZXMgdGl0bGUgc2VyaWVz
IGZvcm1hdHMgZGF0ZSBhbmNob3IgdGFyZ2V0CiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0MiB3
aWR0aH0gewogICAgd3JpdGVfbGluZV90eHQgIiIKCiAgICBpbmNyIHdpZHRoIDIKICAgIHNldCBp
IFtleHByIFtzdHJpbmcgbGVuZ3RoIFwKICAgICAgICAgICAgICAgICAgICAgICAgW3NldCBwcmVm
aXggXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmb3JtYXQgJS0qcyAkd2lkdGggIlxb
JHByZWZpeFxdIl1dKzJdXQogICAgd3JpdGVfdGV4dF90eHQgJHByZWZpeAoKICAgIGlmIHskaSA+
IDExfSB7CglzZXQgaSAxMQogICAgICAgIHNldCBzICIiCglmbHVzaF90ZXh0CiAgICB9IGVsc2Ug
ewogICAgICAgIHNldCBzICIgICIKICAgIH0KCiAgICBwdXNoX2luZGVudCAkaQoKICAgIHNldCBu
YW1lQSAxCiAgICBzZXQgbmFtZU4gW2xsZW5ndGggJG5hbWVzXQogICAgZm9yZWFjaCBuYW1lICRu
YW1lcyB7CiAgICAgICAgaW5jciBuYW1lQQogICAgICAgIHdyaXRlX3RleHRfdHh0ICRzW2NoYXJz
X2V4cGFuZCBbbGluZGV4ICRuYW1lIDBdXQogICAgICAgIGlmIHskbmFtZUEgPT0gJG5hbWVOfSB7
CiAgICAgICAgICAgIHNldCBzICIgYW5kICIKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBz
ZXQgcyAiLCAiCiAgICAgICAgfQogICAgfQogICAgd3JpdGVfdGV4dF90eHQgIiRzXCJbY2hhcnNf
ZXhwYW5kICR0aXRsZV1cIiIKICAgIGZvcmVhY2ggc2VyaWFsICRzZXJpZXMgewogICAgICAgIGlm
IHtbcmVnZXhwIC1ub2Nhc2UgLS0gImludGVybmV0LWRyYWZ0IChkcmFmdC0uKikiICRzZXJpYWwg
eCBuXSA9PSAxfSB7CiAgICAgICAgICAgIHNldCBzZXJpYWwgIiRuICh3b3JrIGluIHByb2dyZXNz
KSIKICAgICAgICB9CiAgICAgICAgd3JpdGVfdGV4dF90eHQgIiwgW2NoYXJzX2V4cGFuZCAkc2Vy
aWFsXSIKICAgIH0KICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJGRhdGUgIiJdfSB7CiAgICAgICAg
d3JpdGVfdGV4dF90eHQgIiwgJGRhdGUiCiAgICB9CiAgICBpZiB7W3N0cmluZyBjb21wYXJlICR0
YXJnZXQgIiJdfSB7CiAgICAgICAgd3JpdGVfdGV4dF90eHQgIiwgIgogICAgICAgIHdyaXRlX3Vy
bCAkdGFyZ2V0CiAgICB9CiAgICB3cml0ZV90ZXh0X3R4dCAuCgogICAgcG9wX2luZGVudAp9Cgpw
cm9jIGJhY2tfdHh0IHthdXRob3JzfSB7CiAgICBnbG9iYWwgb3B0aW9ucwogICAgZ2xvYmFsIGhl
YWRlciBmb290ZXIgbGluZW5vIHBhZ2VubyBibGFua1AKICAgIGdsb2JhbCBjb250YWN0cwoKICAg
IHNldCBsaW5lcyA1CiAgICBzZXQgYXV0aG9yIFtsaW5kZXggJGF1dGhvcnMgMF0KICAgIGluY3Ig
bGluZXMgW2xsZW5ndGggW2xpbmRleCAkYXV0aG9yIDBdXQogICAgaW5jciBsaW5lcyBbbGxlbmd0
aCBbbGluZGV4ICRhdXRob3IgMV1dCiAgICBpZiB7IVtoYXZlX2xpbmVzICRsaW5lc119IHsKICAg
ICAgICBlbmRfcGFnZV90eHQKICAgIH0gZWxzZWlmIHskbGluZW5vICE9IDN9IHsKICAgICAgICB3
cml0ZV9saW5lX3R4dCAiIiAtMQogICAgICAgIHdyaXRlX2xpbmVfdHh0ICIiIC0xCiAgICB9CiAg
ICBzZXQgcmVzdWx0ICRwYWdlbm8KCiAgICBzd2l0Y2ggLS0gW2xsZW5ndGggJGF1dGhvcnNdIHsK
ICAgICAgICAwIHsKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQKICAgICAgICB9CgogICAgICAg
IDEgewogICAgICAgICAgICBzZXQgczEgIidzIgogICAgICAgICAgICBzZXQgczIgIiIKICAgICAg
ICB9CgogICAgICAgIGRlZmF1bHQgewogICAgICAgICAgICBzZXQgczEgInMnIgogICAgICAgICAg
ICBzZXQgczIgImVzIgogICAgICAgIH0KICAgIH0KICAgIHNldCBzICJBdXRob3IkczEgQWRkcmVz
cyRzMiIKCiAgICBzZXQgZmlyc3RQIDEKICAgIGZvcmVhY2ggYXV0aG9yICRhdXRob3JzIHsKICAg
ICAgICBzZXQgYmxvY2sxIFtsaW5kZXggJGF1dGhvciAwXQogICAgICAgIHNldCBibG9jazIgW2xp
bmRleCAkYXV0aG9yIDFdCgogICAgICAgIHNldCBsaW5lcyAzCiAgICAgICAgaW5jciBsaW5lcyBb
bGxlbmd0aCAkYmxvY2sxXQogICAgICAgIGluY3IgbGluZXMgW2xsZW5ndGggJGJsb2NrMl0KICAg
ICAgICBpZiB7IVtoYXZlX2xpbmVzICRsaW5lc119IHsKICAgICAgICAgICAgZW5kX3BhZ2VfdHh0
CiAgICAgICAgfQoKICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJlICRzICIiXX0gewogICAgICAg
ICAgICB3cml0ZV9saW5lX3R4dCAkcwogICAgICAgICAgICBzZXQgcyAiIgogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgIHdyaXRlX2xpbmVfdHh0ICIiIC0xCiAgICAgICAgfQogICAgICAgIHdy
aXRlX2xpbmVfdHh0ICIiIC0xCgogICAgICAgIGZvcmVhY2ggbGluZSAkYmxvY2sxIHsKICAgICAg
ICAgICAgd3JpdGVfbGluZV90eHQgIiAgIFtjaGFyc19leHBhbmQgJGxpbmVdIgogICAgICAgIH0K
CiAgICAgICAgaWYge1tsbGVuZ3RoICRibG9jazJdID4gMH0gewogICAgICAgICAgICB3cml0ZV9s
aW5lX3R4dCAiIgogICAgICAgICAgICBmb3JlYWNoIGNvbnRhY3QgJGJsb2NrMiB7CiAgICAgICAg
ICAgICAgICBzZXQga2V5IFtsaW5kZXggJGNvbnRhY3QgMF0KICAgICAgICAgICAgICAgIHNldCB2
YWx1ZSBbbGluZGV4IFtsaW5kZXggJGNvbnRhY3RzIFwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgW2xzZWFyY2gwICRjb250YWN0cyAka2V5XV0gMV0KICAgICAgICAg
ICAgICAgIHNldCB2YWx1ZSBbZm9ybWF0ICUtNnMgJHZhbHVlOl0KICAgICAgICAgICAgICAgIHdy
aXRlX2xpbmVfdHh0ICIgICAkdmFsdWUgW2NoYXJzX2V4cGFuZCBbbGluZGV4ICRjb250YWN0IDFd
XSIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJHJlc3VsdAp9Cgpw
cm9jIHBjZGF0YV90eHQge3RleHQge3ByZSAwfX0gewogICAgZ2xvYmFsIGVhdFAKICAgIGdsb2Jh
bCBvcHRpb25zCgogICAgaWYgeyghJHByZSkgJiYgKCRlYXRQKX0gewogICAgICAgIHNldCB0ZXh0
IFtzdHJpbmcgdHJpbWxlZnQgJHRleHRdCiAgICB9CiAgICBzZXQgZWF0UCAwCgogICAgaWYgeyEk
cHJlfSB7CiAgICAgICAgcmVnc3ViIC1hbGwgIlxuXFsgXHRcblxdKiIgJHRleHQgIlxuIiB0ZXh0
CiAgICAgICAgcmVnc3ViIC1hbGwgIlxbIFx0XF0qXG5cWyBcdFxdKiIgJHRleHQgIlxuIiB0ZXh0
CiAgICAgICAgc2V0IHByZWZpeCAiIgoKICAgICAgICBpZiB7JG9wdGlvbnMoLkVNT1RJQ09OSUMp
fSB7CiAgICAgICAgICAgIHNldCB0ZXh0IFtlbW90aWNvbmljX3R4dCAkdGV4dF0KICAgICAgICB9
CiAgICB9CgogICAgZm9yZWFjaCBsaW5lIFtzcGxpdCAkdGV4dCAiXG4iXSB7CiAgICAgICAgc2V0
IGxpbmUgW2NoYXJzX2V4cGFuZCAkbGluZV0KICAgICAgICBpZiB7JHByZX0gewogICAgICAgICAg
ICB3cml0ZV9saW5lX3R4dCBbc3RyaW5nIHRyaW1yaWdodCAkbGluZV0gMQogICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgIHdyaXRlX3BjZGF0YV90eHQgJHByZWZpeCRsaW5lCiAgICAgICAgICAg
IHNldCBwcmVmaXggIiAiCiAgICAgICAgfQogICAgfQp9Cgpwcm9jIGVtb3RpY29uaWNfdHh0IHt0
ZXh0fSB7CiAgICBmb3JlYWNoIHtlaSBiZWdpbiBlbmR9IFtsaXN0ICAqICAgKiAgICogXAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgICcgICAnIFwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgeyJ9IHsifSB7In1dIHsKICAgICAgICBzZXQgYm9keSAiIgogICAg
ICAgIHdoaWxlIHtbc2V0IHggW3N0cmluZyBmaXJzdCAifCRlaSIgJHRleHRdXSA+PSAwfSB7CiAg
ICAgICAgICAgIGlmIHskeCA+IDB9IHsKICAgICAgICAgICAgICAgIGFwcGVuZCBib2R5IFtzdHJp
bmcgcmFuZ2UgJHRleHQgMCBbZXhwciAkeC0xXV0KICAgICAgICAgICAgfQogICAgICAgICAgICBh
cHBlbmQgYm9keSAiJGJlZ2luIgogICAgICAgICAgICBzZXQgdGV4dCBbc3RyaW5nIHJhbmdlICR0
ZXh0IFtleHByICR4KzJdIGVuZF0KICAgICAgICAgICAgaWYge1tzZXQgeCBbc3RyaW5nIGZpcnN0
ICJ8IiAkdGV4dF1dIDwgMH0gewogICAgICAgICAgICAgICAgZXJyb3IgIm1pc3NpbmcgY2xvc2Ug
Zm9yIHwkZWkiCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgeyR4ID4gMH0gewogICAgICAg
ICAgICAgICAgc2V0IGlubGluZSBbc3RyaW5nIHJhbmdlICR0ZXh0IDAgW2V4cHIgJHgtMV1dCiAg
ICAgICAgICAgICAgICBpZiB7W3N0cmluZyBmaXJzdCAkYmVnaW4gJGlubGluZV0gPT0gMH0gewog
ICAgICAgICAgICAgICAgICAgIHNldCBpbmxpbmUgW3N0cmluZyByYW5nZSAkaW5saW5lIFtzdHJp
bmcgbGVuZ3RoICRiZWdpbl0gXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBlbmRdCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXQgdGFpbCBbZXhwciBb
c3RyaW5nIGxlbmd0aCAkaW5saW5lXS1bc3RyaW5nIGxlbmd0aCAkZW5kXV0KICAgICAgICAgICAg
ICAgIGlmIHtbc3RyaW5nIGxhc3QgJGVuZCAkaW5saW5lXSA9PSAkdGFpbH0gewogICAgICAgICAg
ICAgICAgICAgIHNldCBpbmxpbmUgW3N0cmluZyByYW5nZSAkaW5saW5lIDAgW2V4cHIgJHRhaWwt
MV1dCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgYXBwZW5kIGJvZHkgJGlubGlu
ZQogICAgICAgICAgICB9CiAgICAgICAgICAgIGFwcGVuZCBib2R5ICIkZW5kIgogICAgICAgICAg
ICBzZXQgdGV4dCBbc3RyaW5nIHJhbmdlICR0ZXh0IFtleHByICR4KzFdIGVuZF0KICAgICAgICB9
CiAgICAgICAgYXBwZW5kIGJvZHkgJHRleHQKICAgICAgICBzZXQgdGV4dCAkYm9keQogICAgfQoK
ICAgIHJldHVybiAkdGV4dAp9Cgpwcm9jIHN0YXJ0X3BhZ2VfdHh0IHt9IHsKICAgIGdsb2JhbCBz
dGRvdXQKICAgIGdsb2JhbCBoZWFkZXIgZm9vdGVyIGxpbmVubyBwYWdlbm8gYmxhbmtQCgogICAg
d3JpdGVfaXQgJGhlYWRlcgogICAgd3JpdGVfaXQgIiIKICAgIHdyaXRlX2l0ICIiCiAgICBzZXQg
bGluZW5vIDMKICAgIHNldCBibGFua1AgMQp9Cgpwcm9jIGVuZF9wYWdlX3R4dCB7fSB7CiAgICBn
bG9iYWwgc3Rkb3V0CiAgICBnbG9iYWwgaGVhZGVyIGZvb3RlciBsaW5lbm8gcGFnZW5vIGJsYW5r
UAoKICAgIGZsdXNoX3RleHQKCiAgICBpZiB7JGxpbmVubyA8PSAzfSB7CiAgICAgICAgcmV0dXJu
CiAgICB9CiAgICB3aGlsZSB7JGxpbmVubyA8IDU0fSB7CiAgICAgICAgd3JpdGVfaXQgIiIKICAg
ICAgICBpbmNyIGxpbmVubwogICAgfQoKICAgIHNldCB0ZXh0IFtmb3JtYXQgIlxbUGFnZSAlZFxd
IiAkcGFnZW5vXQogICAgaW5jciBwYWdlbm8KICAgIHNldCBsZW4gW3N0cmluZyBsZW5ndGggJHRl
eHRdCiAgICBzZXQgbGVuIFtleHByICg3Mi1bc3RyaW5nIGxlbmd0aCAkZm9vdGVyXSktJGxlbl0K
ICAgIGlmIHskbGVuIDwgNH0gewogICAgICAgIHNldCBsZW4gNAogICAgfQogICAgd3JpdGVfaXQg
W2Zvcm1hdCAlcyUqLipzJXMgJGZvb3RlciAkbGVuICRsZW4gIiIgJHRleHRdCiAgICB3cml0ZV9p
dCAiXGYiCgogICAgc2V0IGxpbmVubyAwCn0KCnByb2Mgd3JpdGVfcGNkYXRhX3R4dCB7dGV4dH0g
ewogICAgZ2xvYmFsIGJ1ZmZlcgogICAgZ2xvYmFsIGluZGVudHMgaW5kZW50CgogICAgaWYgeyFb
c3RyaW5nIGNvbXBhcmUgJGJ1ZmZlciAiIl19IHsKICAgICAgICBzZXQgYnVmZmVyIFtmb3JtYXQg
JSouKnMgJGluZGVudCAkaW5kZW50ICIiXSAgICAKICAgIH0KICAgIGFwcGVuZCBidWZmZXIgJHRl
eHQKICAgIHNldCBidWZmZXIgW3R3b19zcGFjZXMgJGJ1ZmZlcl0KCiAgICB3cml0ZV90ZXh0X3R4
dCAiIgp9Cgpwcm9jIHdyaXRlX2VkaXRub190eHQge2VkaXROb30gewogICAgZ2xvYmFsIGJ1ZmZl
cgogICAgZ2xvYmFsIGluZGVudHMgaW5kZW50CgogICAgaWYge1tzdHJpbmcgY29tcGFyZSAkYnVm
ZmVyICIiXX0gewogICAgICAgIGZsdXNoX3RleHQKICAgIH0KICAgIHNldCBidWZmZXIgPCRlZGl0
Tm8+CiAgICBmbHVzaF90ZXh0Cn0KCnByb2Mgd3JpdGVfdGV4dF90eHQge3RleHQge2RpcmVjdGlv
biBsfX0gewogICAgZ2xvYmFsIGJ1ZmZlcgogICAgZ2xvYmFsIGluZGVudHMgaW5kZW50CgogICAg
aWYgeyFbc3RyaW5nIGNvbXBhcmUgJGJ1ZmZlciAiIl19IHsKICAgICAgICBzZXQgYnVmZmVyIFtm
b3JtYXQgJSouKnMgJGluZGVudCAkaW5kZW50ICIiXSAgICAKICAgIH0KICAgIGFwcGVuZCBidWZm
ZXIgJHRleHQKCiAgICBzZXQgZmx1c2ggW3N0cmluZyBjb21wYXJlICRkaXJlY3Rpb24gbF0KICAg
IHdoaWxlIHsoW3NldCBpIFtzdHJpbmcgbGVuZ3RoICRidWZmZXJdXSA+IDcyKSB8fCAoJGZsdXNo
KX0gewogICAgICAgIGlmIHskaSA+IDcyfSB7CiAgICAgICAgICAgIHNldCB4IFtzdHJpbmcgbGFz
dCAiICIgW3NldCBsaW5lIFtzdHJpbmcgcmFuZ2UgJGJ1ZmZlciAwIDcyXV1dCiAgICAgICAgICAg
IHNldCB5IFtzdHJpbmcgbGFzdCAiLSIgW3N0cmluZyByYW5nZSAkbGluZSAwIDcxXV0KICAgICAg
ICAgICAgc2V0IHogW3N0cmluZyBsYXN0ICIvIiBbc3RyaW5nIHJhbmdlICRsaW5lIDAgNzFdXQog
ICAgICAgICAgICBpZiB7JHkgPCAken0gewogICAgICAgICAgICAgICAgc2V0IHkgJHoKICAgICAg
ICAgICAgfQogICAgICAgICAgICBpZiB7JHggPCAkeX0gewogICAgICAgICAgICAgICAgc2V0IHgg
JHkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiB7JHggPCAwfSB7CiAgICAgICAgICAgICAg
ICBzZXQgeCBbc3RyaW5nIGxhc3QgIiAiICRidWZmZXJdCiAgICAgICAgICAgICAgICBzZXQgeSBb
c3RyaW5nIGxhc3QgIi0iICRidWZmZXJdCiAgICAgICAgICAgICAgICBzZXQgeiBbc3RyaW5nIGxh
c3QgIi8iICRidWZmZXJdCiAgICAgICAgICAgICAgICBpZiB7JHkgPiAken0gewogICAgICAgICAg
ICAgICAgICAgIHNldCB5ICR6CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiB7
JHggPiAkeX0gewogICAgICAgICAgICAgICAgICAgIHNldCB4ICR5CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgeyR4IDwgMH0gewogICAgICAgICAgICAgICAg
c2V0IHggJGkKICAgICAgICAgICAgfSBlbHNlaWYgeygkeCA9PSAkeSkgfHwgKCR4ID09ICR6KX0g
ewogICAgICAgICAgICAgICAgaW5jciB4CiAgICAgICAgICAgIH0gZWxzZWlmIHskeCsxID09ICRp
bmRlbnR9IHsKICAgICAgICAgICAgICAgIHNldCB4ICRpCiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgc2V0IHRleHQgW3N0cmluZyByYW5nZSAkYnVmZmVyIDAgW2V4cHIgJHgtMV1dCiAgICAgICAg
ICAgIHNldCByZXN0IFtzdHJpbmcgdHJpbWxlZnQgW3N0cmluZyByYW5nZSAkYnVmZmVyICR4IGVu
ZF1dCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2V0IHRleHQgJGJ1ZmZlcgogICAgICAg
ICAgICBzZXQgcmVzdCAiIgogICAgICAgIH0KICAgICAgICBzZXQgYnVmZmVyICIiCgogICAgICAg
IGlmIHshW3N0cmluZyBjb21wYXJlICRkaXJlY3Rpb24gY119IHsKICAgICAgICAgICAgc2V0IHRl
eHQgW3N0cmluZyB0cmltbGVmdCAkdGV4dF0KICAgICAgICAgICAgc2V0IGxlbiBbZXhwciAoNzIt
W3N0cmluZyBsZW5ndGggJHRleHRdKS8yXQogICAgICAgICAgICBzZXQgdGV4dCBbZm9ybWF0ICUq
LipzJXMgJGxlbiAkbGVuICIiICR0ZXh0XQogICAgICAgIH0KICAgICAgICB3cml0ZV9saW5lX3R4
dCAkdGV4dAoKICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJlICRyZXN0ICIiXX0gewogICAgICAg
ICAgICBzZXQgYnVmZmVyIFtmb3JtYXQgJSouKnMlcyAkaW5kZW50ICRpbmRlbnQgIiIgJHJlc3Rd
CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYnJlYWsKICAgICAgICB9CiAgICB9Cn0KCnBy
b2Mgd3JpdGVfbGluZV90eHQge2xpbmUge3ByZSAwfX0gewogICAgZ2xvYmFsIHN0ZG91dAogICAg
Z2xvYmFsIGhlYWRlciBmb290ZXIgbGluZW5vIHBhZ2VubyBibGFua1AKICAgIGdsb2JhbCBidWZm
ZXIKICAgIGdsb2JhbCBuYnNwCgogICAgZmx1c2hfdGV4dAogICAgaWYgeyRsaW5lbm8gPT0gMH0g
ewogICAgICAgIHN0YXJ0X3BhZ2VfdHh0CiAgICB9CiAgICBpZiB7IVtzZXQgeCBbc3RyaW5nIGNv
bXBhcmUgJGxpbmUgIiJdXX0gewogICAgICAgIHNldCBibGFua08gJGJsYW5rUAogICAgICAgIHNl
dCBibGFua1AgMQogICAgICAgIGlmIHsoJGJsYW5rTykgJiYgKCEkcHJlIHx8ICRsaW5lbm8gPT0g
Myl9IHsKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgfQogICAgfSBlbHNlIHsKICAgICAgICBz
ZXQgYmxhbmtQIDAKICAgIH0KICAgIGlmIHsoJHByZSkgJiYgKCR4KX0gewogICAgICAgIHNldCBw
cmUgIiAgICIKICAgIH0gZWxzZSB7CiAgICAgICAgc2V0IHByZSAiIgogICAgfQogICAgcmVnc3Vi
IC1hbGwgIiRuYnNwIiAkbGluZSAiICIgbGluZQogICAgd3JpdGVfaXQgW3N0cmluZyB0cmltcmln
aHQgJHByZSRsaW5lXQogICAgaW5jciBsaW5lbm8KICAgIGlmIHskbGluZW5vID49IDUxfSB7CiAg
ICAgICAgZW5kX3BhZ2VfdHh0CiAgICB9Cn0KCnByb2MgdHdvX3NwYWNlcyB7Z2xvcH0gewogICAg
c2V0IHBvc3QgIiIKCiAgICB3aGlsZSB7W3N0cmluZyBsZW5ndGggJGdsb3BdID4gMH0gewogICAg
ICAgIGlmIHtbc2V0IHggW3N0cmluZyBmaXJzdCAiLiAiICRnbG9wXV0gPCAwfSB7CiAgICAgICAg
ICAgIGFwcGVuZCBwb3N0ICRnbG9wCiAgICAgICAgICAgIGJyZWFrCiAgICAgICAgfQoKICAgICAg
ICBhcHBlbmQgcG9zdCBbc3RyaW5nIHJhbmdlICRnbG9wIDAgW2V4cHIgJHgrMV1dCiAgICAgICAg
c2V0IGdsb3AgW3N0cmluZyByYW5nZSAkZ2xvcCBbZXhwciAkeCsyXSBlbmRdCiAgICAgICAgaWYg
e1tzdHJpbmcgZmlyc3QgIiAiICRnbG9wXSAhPSAwfSB7CiAgICAgICAgICAgIGFwcGVuZCBwb3N0
ICIgIgogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJHBvc3QKfQoKIwojIGh0bWwgb3V0cHV0
CiMKCgojIGRvbid0IG5lZWQgdG8gcmV0dXJuIGFueXRoaW5nIGV2ZW4gdGhvdWdoIHJmY190eHQg
ZG9lcy4uLgoKcHJvYyByZmNfaHRtbCB7aXJlZnMgY29weWluZ30gewogICAgZ2xvYmFsIG9wdGlv
bnMgY29weXJpZ2h0UAogICAgZ2xvYmFsIGZ1bmRpbmcKICAgIGdsb2JhbCBzdGRvdXQKCiAgICBp
ZiB7JG9wdGlvbnMoLlNMSURFUykgJiYgW2VuZF9yZmNfc2xpZGVzXX0gewogICAgICAgIHJldHVy
bgogICAgfQoKICAgIGlmIHtbbGxlbmd0aCAkaXJlZnNdID4gMH0gewogICAgICAgIHRvY19odG1s
IHJmYy5pbmRleAogICAgICAgIHB1dHMgJHN0ZG91dCAiPGgzPkluZGV4PC9oMz4iCgogICAgICAg
IHB1dHMgJHN0ZG91dCAiPHRhYmxlPiIKICAgICAgICBmb3JlYWNoIGlyZWYgJGlyZWZzIHsKICAg
ICAgICAgICAgZm9yZWFjaCB7TCBpdGVtIHN1Yml0ZW0gZmxhZ3MgcGFnZXN9ICRpcmVmIHsgYnJl
YWsgfQoKICAgICAgICAgICAgaWYge1tzdHJpbmcgY29tcGFyZSAkTCAiIl19IHsKICAgICAgICAg
ICAgICAgIHB1dHMgJHN0ZG91dCAiPHRyPjx0ZD48Yj4kTDwvYj48L3RkPjx0ZD4mbmJzcDs8L3Rk
PjwvdHI+IgogICAgICAgICAgICB9CiAgICAgICAgICAgIAogICAgICAgICAgICBpZiB7W3N0cmlu
ZyBjb21wYXJlICRzdWJpdGVtICIiXX0gewogICAgICAgICAgICAgICAgaWYge1tzdHJpbmcgY29t
cGFyZSAkaXRlbSAiIl19IHsKICAgICAgICAgICAgICAgICAgICBwdXRzICRzdGRvdXQgIjx0cj48
dGQ+Jm5ic3A7PC90ZD48dGQ+JGl0ZW08L3RkPjwvdHI+IgogICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgc2V0IGtleSAkc3ViaXRlbQogICAgICAgICAgICAgICAgc2V0IHQgIiZuYnNw
OyZuYnNwOyIKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNldCBrZXkgJGl0
ZW0KICAgICAgICAgICAgICAgIHNldCB0ICIiCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGFy
cmF5IHNldCBpZmxhZ3MgJGZsYWdzCiAgICAgICAgICAgIGlmIHshW3N0cmluZyBjb21wYXJlICRp
ZmxhZ3MocHJpbWFyeSkgdHJ1ZV19IHsKICAgICAgICAgICAgICAgIHNldCBrZXkgIjxiPiRrZXk8
L2I+IgogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiB7W2xsZW5ndGggJHBhZ2VzXSA9PSAx
fSB7CiAgICAgICAgICAgICAgICBzZXQga2V5ICI8YSBocmVmPVwiI1tsaW5kZXggJHBhZ2VzIDBd
XCI+JGtleTwvYT4iCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBzZXQgaSAw
CiAgICAgICAgICAgICAgICBzZXQgcyAiICAiCiAgICAgICAgICAgICAgICBmb3JlYWNoIHBhZ2Ug
JHBhZ2VzIHsKICAgICAgICAgICAgICAgICAgICBhcHBlbmQga2V5ICIkczxhIGhyZWY9XCIjJHBh
Z2VcIj5baW5jciBpXTwvYT4iCiAgICAgICAgICAgICAgICAgICAgc2V0IHMgIiwgIgogICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXRzICRzdGRvdXQgIjx0cj48
dGQ+Jm5ic3A7PC90ZD48dGQ+JHQka2V5PC90ZD48L3RyPiIKICAgICAgICB9CiAgICAgICAgcHV0
cyAkc3Rkb3V0ICI8L3RhYmxlPiIKICAgIH0KCiAgICBpZiB7KCEkb3B0aW9ucyguUFJJVkFURSkp
ICYmICRjb3B5cmlnaHRQfSB7CiAgICAgICAgdG9jX2h0bWwgcmZjLmNvcHlyaWdodAogICAgICAg
IHB1dHMgJHN0ZG91dCAiPGgzPkZ1bGwgQ29weXJpZ2h0IFN0YXRlbWVudDwvaDM+IgoKICAgICAg
ICBmb3JlYWNoIHBhcmEgJGNvcHlpbmcgewogICAgICAgICAgICBwdXRzICRzdGRvdXQgIjxwIGNs
YXNzPSdjb3B5cmlnaHQnPiIKICAgICAgICAgICAgcGNkYXRhX2h0bWwgJHBhcmEKICAgICAgICAg
ICAgcHV0cyAkc3Rkb3V0ICI8L3A+IgogICAgICAgIH0KCiAgICAgICAgcHV0cyAkc3Rkb3V0ICI8
aDM+QWNrbm93bGVkZ2VtZW50PC9oMz4iCiAgICAgICAgcHV0cyAkc3Rkb3V0ICI8cCBjbGFzcz0n
Y29weXJpZ2h0Jz4iCiAgICAgICAgcGNkYXRhX2h0bWwgJGZ1bmRpbmcKICAgICAgICBwdXRzICRz
dGRvdXQgIjwvcD4iCiAgICB9CgogICAgcHV0cyAkc3Rkb3V0ICI8L2ZvbnQ+PC9ib2R5PjwvaHRt
bD4iCgogICAgcmV0dXJuICIiCn0KCmdsb2JhbCBodG1sc3R5bGUKCnNldCBodG1sc3R5bGUgXAoi
PFNUWUxFIHR5cGU9J3RleHQvY3NzJz4KICAgIC50aXRsZSB7IGNvbG9yOiAjOTkwMDAwOyBmb250
LXNpemU6IDIycHg7IGxpbmUtaGVpZ2h0OiAyMnB4OyBmb250LXdlaWdodDogYm9sZDsgdGV4dC1h
bGlnbjogcmlnaHQ7CiAgICAgICAgICAgICBmb250LWZhbWlseTogaGVsdmV0aWNhLCBhcmlhbCwg
c2Fucy1zZXJpZiB9CiAgICAuZmlsZW5hbWUgeyBjb2xvcjogIzY2NjY2NjsgZm9udC1zaXplOiAx
OHB4OyBsaW5lLWhlaWdodDogMjhweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IHRleHQtYWxpZ246IHJp
Z2h0OwogICAgICAgICAgICAgICAgICBmb250LWZhbWlseTogaGVsdmV0aWNhLCBhcmlhbCwgc2Fu
cy1zZXJpZiB9CiAgICBwLmNvcHlyaWdodCB7IGNvbG9yOiAjMDAwMDAwOyBmb250LXNpemU6IDEw
cHg7CiAgICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiB2ZXJkYW5hLCBjaGFyY29hbCwgaGVs
dmV0aWNhLCBhcmlhbCwgc2Fucy1zZXJpZiB9CiAgICBwIHsgbWFyZ2luLWxlZnQ6IDJlbTsgbWFy
Z2luLXJpZ2h0OiAyZW07IH0KICAgIGxpIHsgbWFyZ2luLWxlZnQ6IDNlbTsgIH0KICAgIG9sIHsg
bWFyZ2luLWxlZnQ6IDJlbTsgbWFyZ2luLXJpZ2h0OiAyZW07IH0KICAgIHVsLnRleHQgeyBtYXJn
aW4tbGVmdDogMmVtOyBtYXJnaW4tcmlnaHQ6IDJlbTsgfQogICAgcHJlIHsgbWFyZ2luLWxlZnQ6
IDNlbTsgY29sb3I6ICMzMzMzMzMgfQogICAgdWwudG9jIHsgY29sb3I6ICMwMDAwMDA7IGxpbmUt
aGVpZ2h0OiAxNnB4OwogICAgICAgICAgICAgZm9udC1mYW1pbHk6IHZlcmRhbmEsIGNoYXJjb2Fs
LCBoZWx2ZXRpY2EsIGFyaWFsLCBzYW5zLXNlcmlmIH0KICAgIEgzIHsgY29sb3I6ICMzMzMzMzM7
IGZvbnQtc2l6ZTogMTZweDsgbGluZS1oZWlnaHQ6IDE2cHg7IGZvbnQtZmFtaWx5OiBoZWx2ZXRp
Y2EsIGFyaWFsLCBzYW5zLXNlcmlmIH0KICAgIEg0IHsgY29sb3I6ICMwMDAwMDA7IGZvbnQtc2l6
ZTogMTRweDsgZm9udC1mYW1pbHk6IGhlbHZldGljYSwgYXJpYWwsIHNhbnMtc2VyaWYgfQogICAg
VEQuaGVhZGVyIHsgY29sb3I6ICNmZmZmZmY7IGZvbnQtc2l6ZTogMTBweDsgZm9udC1mYW1pbHk6
IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbi1zZXJpZjsgdmFsaWduOiB0b3AgfQogICAgVEQuYXV0aG9y
LXRleHQgeyBjb2xvcjogIzAwMDAwMDsgZm9udC1zaXplOiAxMHB4OwogICAgICAgICAgICAgICAg
ICAgICBmb250LWZhbWlseTogdmVyZGFuYSwgY2hhcmNvYWwsIGhlbHZldGljYSwgYXJpYWwsIHNh
bnMtc2VyaWYgfQogICAgVEQuYXV0aG9yIHsgY29sb3I6ICMwMDAwMDA7IGZvbnQtd2VpZ2h0OiBi
b2xkOyBtYXJnaW4tbGVmdDogNGVtOyBmb250LXNpemU6IDEwcHg7IGZvbnQtZmFtaWx5OiB2ZXJk
YW5hLCBjaGFyY29hbCwgaGVsdmV0aWNhLCBhcmlhbCwgc2Fucy1zZXJpZiB9CiAgICAgQTpsaW5r
IHsgY29sb3I6ICM5OTAwMDA7IGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgICAgICAgIGZvbnQt
ZmFtaWx5OiBNUyBTYW5zIFNlcmlmLCB2ZXJkYW5hLCBjaGFyY29hbCwgaGVsdmV0aWNhLCBhcmlh
bCwgc2Fucy1zZXJpZiB9CiAgICAgQTp2aXNpdGVkIHsgY29sb3I6ICMzMzMzMzM7IGZvbnQtd2Vp
Z2h0OiBib2xkOwogICAgICAgICAgICAgICAgIGZvbnQtZmFtaWx5OiBNUyBTYW5zIFNlcmlmLCB2
ZXJkYW5hLCBjaGFyY29hbCwgaGVsdmV0aWNhLCBhcmlhbCwgc2Fucy1zZXJpZiB9CiAgICAgQTpu
YW1lIHsgY29sb3I6ICMzMzMzMzM7IGZvbnQtd2VpZ2h0OiBib2xkOwogICAgICAgICAgICAgIGZv
bnQtZmFtaWx5OiBNUyBTYW5zIFNlcmlmLCB2ZXJkYW5hLCBjaGFyY29hbCwgaGVsdmV0aWNhLCBh
cmlhbCwgc2Fucy1zZXJpZiB9CiAgICAubGluazIgeyBjb2xvcjojZmZmZmZmOyBmb250LXdlaWdo
dDogYm9sZDsgdGV4dC1kZWNvcmF0aW9uOiBub25lOwogICAgICAgICAgICAgZm9udC1mYW1pbHk6
IG1vbmFjbywgY2hhcmNvYWwsIGdlbmV2YSwgTVMgU2FucyBTZXJpZiwgaGVsdmV0aWNhLCBtb25v
dHlwZSwgdmVyZGFuYSwgc2Fucy1zZXJpZjsKICAgICAgICAgICAgIGZvbnQtc2l6ZTogOXB4IH0K
ICAgIC5SRkMgeyBjb2xvcjojNjY2NjY2OyBmb250LXdlaWdodDogYm9sZDsgdGV4dC1kZWNvcmF0
aW9uOiBub25lOwogICAgICAgICAgIGZvbnQtZmFtaWx5OiBtb25hY28sIGNoYXJjb2FsLCBnZW5l
dmEsIE1TIFNhbnMgU2VyaWYsIGhlbHZldGljYSwgbW9ub3R5cGUsIHZlcmRhbmEsIHNhbnMtc2Vy
aWY7CiAgICAgICAgICAgZm9udC1zaXplOiA5cHggfQogICAgLmhvdFRleHQgeyBjb2xvcjojZmZm
ZmZmOyBmb250LXdlaWdodDogbm9ybWFsOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7CiAgICAgICAg
ICAgICAgIGZvbnQtZmFtaWx5OiBjaGFyY29hbCwgbW9uYWNvLCBnZW5ldmEsIE1TIFNhbnMgU2Vy
aWYsIGhlbHZldGljYSwgbW9ub3R5cGUsIHZlcmRhbmEsIHNhbnMtc2VyaWY7CiAgICAgICAgICAg
ICAgIGZvbnQtc2l6ZTogOXB4IH0KPC9zdHlsZT4iCgoKcHJvYyBmcm9udF9odG1sX2JlZ2luIHts
ZWZ0IHJpZ2h0IHRvcCBib3R0b20gdGl0bGUgc3RhdHVzIGNvcHlpbmd9IHsKICAgIGdsb2JhbCBv
cHRpb25zIGNvcHlyaWdodFAKICAgIGdsb2JhbCBzdGRvdXQKICAgIGdsb2JhbCBodG1sc3R5bGUK
ICAgIGdsb2JhbCBkb2luZ1AgaGFuZ1AKICAgIGdsb2JhbCBpbWdQCgogICAgc2V0IGRvaW5nUCAw
CiAgICBzZXQgaGFuZ1AgMAogICAgc2V0IGltZ1AgMAoKICAgIGlmIHskb3B0aW9ucyguU0xJREVT
KSBcCiAgICAgICAgICAgICYmIFtmcm9udF9zbGlkZXNfYmVnaW4gJGxlZnQgJHJpZ2h0ICR0b3Ag
JGJvdHRvbSAkdGl0bGVdfSB7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgcHV0cyAtbm9uZXds
aW5lICRzdGRvdXQgIjxodG1sPjxoZWFkPjx0aXRsZT4iCiAgICBpZiB7KCRvcHRpb25zKC5QUklW
QVRFKSkgXAogICAgICAgICAgICAmJiAoW3N0cmluZyBjb21wYXJlIFtzdHJpbmcgdHJpbSAkb3B0
aW9ucyhwcml2YXRlKV0gIiJdKX0gewogICAgICAgIHBjZGF0YV9odG1sICIkb3B0aW9ucyhwcml2
YXRlKTogIgogICAgfQogICAgcGNkYXRhX2h0bWwgW2xpbmRleCAkdGl0bGUgMF0KICAgIHB1dHMg
JHN0ZG91dCAiPC90aXRsZT4iCiAgICBpZiB7JG9wdGlvbnMoLlBSSVZBVEUpfSB7CiAgICAgICAg
cHV0cyAtbm9uZXdsaW5lICRzdGRvdXQgIjxtZXRhIGh0dHAtZXF1aXY9XCJFeHBpcmVzXCIgY29u
dGVudD1cIiIKICAgICAgICBwdXRzIC1ub25ld2xpbmUgJHN0ZG91dCBbY2xvY2sgZm9ybWF0IFtj
bG9jayBzZWNvbmRzXSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWZv
cm1hdCAiJWEsICVkICViICVZICVUICswMDAwIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgLWdtdCB0cnVlXQogICAgICAgIHB1dHMgJHN0ZG91dCAiXCI+IgogICAgfQog
ICAgcHV0cyAkc3Rkb3V0ICIkaHRtbHN0eWxlXG48L2hlYWQ+IgogICAgcHV0cyAtbm9uZXdsaW5l
ICRzdGRvdXQgIjxib2R5IGJnY29sb3I9XCIjZmZmZmZmXCIiCiAgICBpZiB7W3N0cmluZyBjb21w
YXJlICRvcHRpb25zKGJhY2tncm91bmQpICIiXX0gewogICAgICAgIHB1dHMgLW5vbmV3bGluZSAk
c3Rkb3V0ICIgYmFja2dyb3VuZD1cIiRvcHRpb25zKGJhY2tncm91bmQpXCIiCiAgICB9CiAgICBw
dXRzICRzdGRvdXQgIiB0ZXh0PVwiIzAwMDAwMFwiIGFsaW5rPVwiIzAwMDAwMFwiIHZsaW5rPVwi
IzY2NjY2NlwiIGxpbms9XCIjOTkwMDAwXCI+IiAKCiAgICB4eHh4X2h0bWwKCiAgICBpZiB7JG9w
dGlvbnMoLlRPUEJMT0NLKX0gewogICAgICAgIHB1dHMgJHN0ZG91dCAiPHRhYmxlIHdpZHRoPVwi
NjYlXCIgYm9yZGVyPVwiMFwiIGNlbGxwYWRkaW5nPVwiMFwiIGNlbGxzcGFjaW5nPVwiMFwiPjx0
cj48dGQ+PHRhYmxlIHdpZHRoPVwiMTAwJVwiIGJvcmRlcj1cIjBcIiBjZWxscGFkZGluZz1cIjJc
IiBjZWxsc3BhY2luZz1cIjFcIj4iCiAgICAgICAgc2V0IGxlZnQgW211bmdlX2xvbmcgJGxlZnRd
CiAgICAgICAgc2V0IHJpZ2h0IFttdW5nZV9sb25nICRyaWdodF0KICAgICAgICBzZXQgbGMgIiIK
ICAgICAgICBzZXQgcmMgIiIKICAgICAgICBmb3JlYWNoIGwgJGxlZnQgciAkcmlnaHQgewogICAg
ICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJlICRsICIiXX0gewogICAgICAgICAgICAgICAgc2V0
IGwgJGwKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHNldCBsICImbmJzcDsi
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYge1tzdHJpbmcgY29tcGFyZSAkciAiIl19IHsK
ICAgICAgICAgICAgICAgIHNldCByICRyCiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICBzZXQgciAiJm5ic3A7IgogICAgICAgICAgICB9CiAgICAgICAgICAgIHB1dHMgJHN0ZG91
dCAiPHRyIHZhbGlnbj1cInRvcFwiPjx0ZCB3aWR0aD1cIjMzJVwiIGJnY29sb3I9XCIjNjY2NjY2
XCIgY2xhc3M9XCJoZWFkZXJcIj4kbDwvdGQ+PHRkIHdpZHRoPVwiMzMlXCIgYmdjb2xvcj1cIiM2
NjY2NjZcIiBjbGFzcz1cImhlYWRlclwiPiRyPC90ZD48L3RyPiIKICAgICAgICB9CiAgICAgICAg
cHV0cyAkc3Rkb3V0ICI8L3RhYmxlPjwvdGQ+PC90cj48L3RhYmxlPiIKICAgIH0KCiAgICBzZXQg
Y29sb3IgOTkwMDAwCiAgICBzZXQgc2l6ZSAzCiAgICBzZXQgYnIgPGJyPgogICAgc2V0IGNsYXNz
IHRpdGxlCiAgICBmb3JlYWNoIGxpbmUgJHRpdGxlIHsKICAgICAgICBwdXRzIC1ub25ld2xpbmUg
JHN0ZG91dCAiPGRpdiBhbGlnbj1cInJpZ2h0XCI+PGZvbnQgZmFjZT1cIm1vbmFjbywgTVMgU2Fu
cyBTZXJpZlwiIGNvbG9yPVwiIyRjb2xvclwiIHNpemU9XCIrJHNpemVcIj48Yj4kYnI8c3BhbiBj
bGFzcz1cIiRjbGFzc1wiPiIKICAgICAgICBwY2RhdGFfaHRtbCAkbGluZQogICAgICAgIHB1dHMg
JHN0ZG91dCAiPC9zcGFuPjwvYj48L2ZvbnQ+PC9kaXY+IgogICAgICAgIHNldCBjb2xvciA2NjY2
NjYKICAgICAgICBzZXQgc2l6ZSAyCiAgICAgICAgc2V0IGJyICIiCiAgICAgICAgc2V0IGNsYXNz
IGZpbGVuYW1lCiAgICB9CiAgICBwdXRzICRzdGRvdXQgIjxmb250IGZhY2U9XCJ2ZXJkYW5hLCBo
ZWx2ZXRpY2EsIGFyaWFsLCBzYW5zLXNlcmlmXCIgc2l6ZT1cIjJcIj4iCgogICAgaWYgeyEkb3B0
aW9ucyguUFJJVkFURSl9IHsKICAgICAgICBwdXRzICRzdGRvdXQgIiIKICAgICAgICBwdXRzICRz
dGRvdXQgIjxoMz5TdGF0dXMgb2YgdGhpcyBNZW1vPC9oMz4iCiAgICAgICAgZm9yZWFjaCBwYXJh
ICRzdGF0dXMgewogICAgICAgICAgICBwdXRzICRzdGRvdXQgIjxwPiIKICAgICAgICAgICAgcGNk
YXRhX2h0bWwgJHBhcmEKICAgICAgICAgICAgcHV0cyAkc3Rkb3V0ICI8L3A+IgogICAgICAgIH0K
ICAgIH0KCiAgICBpZiB7KCEkb3B0aW9ucyguUFJJVkFURSkpICYmICRjb3B5cmlnaHRQfSB7IAog
ICAgICAgIHB1dHMgJHN0ZG91dCAiIgogICAgICAgIHB1dHMgJHN0ZG91dCAiPGgzPkNvcHlyaWdo
dCBOb3RpY2U8L2gzPiIKICAgICAgICBwdXRzICRzdGRvdXQgIjxwPiIKICAgICAgICBwY2RhdGFf
aHRtbCAkY29weWluZwogICAgICAgIHB1dHMgJHN0ZG91dCAiPC9wPiIKICAgIH0KfQoKcHJvYyBm
cm9udF9odG1sX2VuZCB7dG9jIGlyZWZQfSB7CiAgICBnbG9iYWwgb3B0aW9ucyBjb3B5cmlnaHRQ
CiAgICBnbG9iYWwgc3Rkb3V0CiAgICBnbG9iYWwgcGFzc25vIGluZGV4cGcKCiAgICBpZiB7KCEk
b3B0aW9ucyguVE9DKSkgfHwgKCRwYXNzbm8gPiAyKX0gewogICAgICAgIHJldHVybgogICAgfQoK
ICAgIHh4eHhfaHRtbCB0b2MKCiAgICBwdXRzICRzdGRvdXQgIjxoMz5UYWJsZSBvZiBDb250ZW50
czwvaDM+IgogICAgcHV0cyAkc3Rkb3V0ICI8dWwgY29tcGFjdCBjbGFzcz1cInRvY1wiPiIKICAg
IHNldCBsYXN0IFtsaW5kZXggJHRvYyBlbmRdCiAgICBpZiB7W3N0cmluZyBjb21wYXJlIFtsaW5k
ZXggJGxhc3QgMV0gIkZ1bGwgQ29weXJpZ2h0IFN0YXRlbWVudCJdfSB7CiAgICAgICAgc2V0IGxh
c3QgIiIKICAgIH0gZWxzZSB7CiAgICAgICAgc2V0IHRvYyBbbHJlcGxhY2UgJHRvYyBlbmQgZW5k
XQogICAgfQogICAgaWYgeyRpcmVmUH0gewogICAgICAgIGxhcHBlbmQgdG9jIFtsaXN0ICImIzE2
NzsiIEluZGV4IHJmYy5pbmRleF0KICAgIH0KICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJGxhc3Qg
IiJdfSB7CiAgICAgICAgbGFwcGVuZCB0b2MgJGxhc3QKICAgIH0KICAgIGZvcmVhY2ggYyAkdG9j
IHsKICAgICAgICBwdXRzIC1ub25ld2xpbmUgJHN0ZG91dCAiPGI+PGEgaHJlZj1cIiNbbGluZGV4
ICRjIDJdXCI+IgogICAgICAgIHBjZGF0YV9odG1sIFtsaW5kZXggJGMgMF0KICAgICAgICBwdXRz
ICRzdGRvdXQgIjwvYT4mbmJzcDsiCiAgICAgICAgcGNkYXRhX2h0bWwgW2xpbmRleCAkYyAxXQog
ICAgICAgIHB1dHMgJHN0ZG91dCAiPGJyPjwvYj4iCiAgICB9CiAgICBwdXRzICRzdGRvdXQgIjwv
dWw+IgogICAgcHV0cyAkc3Rkb3V0ICI8YnIgY2xlYXI9XCJhbGxcIj4iCn0KCnByb2MgYWJzdHJh
Y3RfaHRtbCB7fSB7CiAgICBnbG9iYWwgb3B0aW9ucwogICAgZ2xvYmFsIHN0ZG91dAoKICAgIGlm
IHskb3B0aW9ucyguU0xJREVTKSAmJiBbZW5kX3BhZ2Vfc2xpZGVzXX0gewogICAgICAgIHN0YXJ0
X3BhZ2Vfc2xpZGVzIEFic3RyYWN0CiAgICB9IGVsc2UgewogICAgICAgIHB1dHMgJHN0ZG91dCAi
IgogICAgICAgIHB1dHMgJHN0ZG91dCAiPGgzPkFic3RyYWN0PC9oMz4iCiAgICB9Cn0KCnByb2Mg
bm90ZV9odG1sIHt0aXRsZSBkZXB0aH0gewogICAgZ2xvYmFsIG9wdGlvbnMKICAgIGdsb2JhbCBz
dGRvdXQKCiAgICBpZiB7JG9wdGlvbnMoLlNMSURFUykgJiYgW2VuZF9wYWdlX3NsaWRlc119IHsK
ICAgICAgICBzdGFydF9wYWdlX3NsaWRlcyAkdGl0bGUKICAgIH0gZWxzZSB7CiAgICAgICAgaW5j
ciBkZXB0aCAzCgogICAgICAgIHB1dHMgJHN0ZG91dCAiIgogICAgICAgIHB1dHMgLW5vbmV3bGlu
ZSAkc3Rkb3V0ICI8aCRkZXB0aD4iCiAgICAgICAgcGNkYXRhX2h0bWwgJHRpdGxlCiAgICAgICAg
cHV0cyAkc3Rkb3V0ICI8L2gkZGVwdGg+IgogICAgfQp9Cgpwcm9jIHNlY3Rpb25faHRtbCB7cHJl
Zml4IHRvcCB0aXRsZSB7bGluZXMgMH0gYW5jaG9yfSB7CiAgICBnbG9iYWwgb3B0aW9ucwogICAg
Z2xvYmFsIHN0ZG91dAoKICAgIGlmIHskb3B0aW9ucyguU0xJREVTKSAmJiBbZW5kX3BhZ2Vfc2xp
ZGVzXX0gewogICAgICAgIHN0YXJ0X3BhZ2Vfc2xpZGVzICR0aXRsZQoKICAgICAgICByZXR1cm4g
JGFuY2hvcgogICAgfQoKICAgIHNldCBhbmNob3IyIFtzdHJpbmcgdHJpbXJpZ2h0ICRwcmVmaXgg
Ll0KICAgIGlmIHtbc3RyaW5nIGZpcnN0ICJBcHBlbmRpeCAiICRhbmNob3IyXSA9PSAwfSB7CiAg
ICAgICAgc2V0IGFuY2hvcjIgW3N0cmluZyByYW5nZSAkYW5jaG9yMiA5IGVuZF0KICAgIH0KICAg
IHNldCBhbmNob3IyIHJmYy5zZWN0aW9uLiRhbmNob3IyCgogICAgcHV0cyAkc3Rkb3V0ICIiCiAg
ICBpZiB7W3N0cmluZyBtYXRjaCAqLiAkcHJlZml4XX0gewogICAgICAgIHRvY19odG1sICRhbmNo
b3IKICAgICAgICBwdXRzIC1ub25ld2xpbmUgJHN0ZG91dCAiPGEgbmFtZT1cIiRhbmNob3IyXCI+
PC9hPiIKICAgICAgICBwdXRzIC1ub25ld2xpbmUgJHN0ZG91dCAiPGgzPiRwcmVmaXgmbmJzcDsi
CiAgICAgICAgcGNkYXRhX2h0bWwgJHRpdGxlCiAgICAgICAgcHV0cyAkc3Rkb3V0ICI8L2gzPiIK
ICAgIH0gZWxzZSB7CiAgICAgICAgcHV0cyAtbm9uZXdsaW5lICRzdGRvdXQgIjxhIG5hbWU9XCIk
YW5jaG9yMlwiPjwvYT4iCiAgICAgICAgcHV0cyAtbm9uZXdsaW5lICRzdGRvdXQgIjxoND48YSBu
YW1lPVwiJGFuY2hvclwiPiRwcmVmaXg8L2E+Jm5ic3A7IgogICAgICAgIHBjZGF0YV9odG1sICR0
aXRsZQogICAgICAgIHB1dHMgJHN0ZG91dCAiPC9oND4iCiAgICB9CgogICAgcmV0dXJuICRhbmNo
b3IKfQoKcHJvYyB0X2h0bWwge3RhZyBjb3VudGVyIHN0eWxlIGhhbmdUZXh0IGVkaXROb30gewog
ICAgZ2xvYmFsIG9wdGlvbnMKICAgIGdsb2JhbCBzdGRvdXQKICAgIGdsb2JhbCBkb2luZ1AgaGFu
Z1AKCiAgICBpZiB7W3N0cmluZyBjb21wYXJlICR0YWcgYmVnaW5dfSB7CiAgICAgICAgc2V0IHMg
LwogICAgfSBlbHNlIHsKICAgICAgICBzZXQgcyAiIgogICAgfQogICAgcHV0cyAkc3Rkb3V0ICIi
CiAgICBpZiB7IVtzdHJpbmcgY29tcGFyZSAkc3R5bGUgImhhbmdpbmciXX0gewogICAgICAgIGlm
IHshW3N0cmluZyBjb21wYXJlICR0YWcgYmVnaW5dfSB7CiAgICAgICAgICAgIHB1dHMgJHN0ZG91
dCAiPGR0PiRoYW5nVGV4dDwvZHQ+IgogICAgICAgIH0KICAgICAgICBwdXRzIC1ub25ld2xpbmUg
JHN0ZG91dCAiPCR7c31kZD4iCgogICAgICAgIHNldCBoYW5nUCAxCiAgICB9IGVsc2VpZiB7IVtz
dHJpbmcgY29tcGFyZSAkc3R5bGUgImxldHRlcnMiXX0gewogICAgICAgIGlmIHshW3N0cmluZyBj
b21wYXJlICR0YWcgYmVnaW5dfSB7CiAgICAgICAgICAgIHNldCBsIFtzcGxpdCAkY291bnRlciAu
XQogICAgICAgICAgICBwdXRzICRzdGRvdXQgIjxkdD5bb2Zmc2V0MmxldHRlcnMgW2xpbmRleCAk
bCBlbmRdIFtsbGVuZ3RoICRsXV08L2R0PiIKICAgICAgICB9CiAgICAgICAgcHV0cyAtbm9uZXds
aW5lICRzdGRvdXQgIjwke3N9ZGQ+IgoKICAgICAgICBzZXQgaGFuZ1AgMQogICAgfSBlbHNlaWYg
eyhbc3RyaW5nIGNvbXBhcmUgJGNvdW50ZXIgIiJdKSBcCiAgICAgICAgICAgICAgICAgICAgJiYg
KFtzdHJpbmcgY29tcGFyZSAkc3R5bGUgZW1wdHldKX0gewogICAgICAgIHB1dHMgLW5vbmV3bGlu
ZSAkc3Rkb3V0ICI8JHtzfWxpPiIKCiAgICAgICAgc2V0IGhhbmdQIDAKICAgIH0gZWxzZSB7CiAg
ICAgICAgc2V0IGRvaW5nUCBbc3RyaW5nIGNvbXBhcmUgJHRhZyBlbmRdCiAgICAgICAgcHV0cyAt
bm9uZXdsaW5lICRzdGRvdXQgIjwke3N9cD4iCgogICAgICAgIHNldCBoYW5nUCAwCiAgICB9CiAg
ICBpZiB7JG9wdGlvbnMoLkVESVRJTkcpIFwKICAgICAgICAgICAgJiYgKCFbc3RyaW5nIGNvbXBh
cmUgJHRhZyBiZWdpbl0pIFwKICAgICAgICAgICAgJiYgKFtzdHJpbmcgY29tcGFyZSAkZWRpdE5v
ICIiXSl9IHsKICAgICAgICBwdXRzIC1ub25ld2xpbmUgJHN0ZG91dCAiPHN1cD48c21hbGw+JGVk
aXRObzwvc21hbGw+PC9zdXA+IgogICAgfQp9Cgpwcm9jIGxpc3RfaHRtbCB7dGFnIGNvdW50ZXJz
IHN0eWxlIGhhbmdJbmRlbnQgaGFuZ1RleHR9IHsKICAgIGdsb2JhbCBzdGRvdXQKICAgIGdsb2Jh
bCBkb2luZ1AgaGFuZ1AKCiAgICBpZiB7W3N0cmluZyBjb21wYXJlICR0YWcgYmVnaW5dfSB7CiAg
ICAgICAgc2V0IHMgLwogICAgICAgIHNldCBjICIiCiAgICB9IGVsc2UgewogICAgICAgIHNldCBz
ICIiCiAgICAgICAgc2V0IGMgIiBjbGFzcz1cInRleHRcIiIKICAgIH0KICAgIHB1dHMgJHN0ZG91
dCAiIgogICAgc3dpdGNoIC0tICRzdHlsZSB7CiAgICAgICAgbnVtYmVycyB7CiAgICAgICAgICAg
IHB1dHMgLW5vbmV3bGluZSAkc3Rkb3V0ICI8JHtzfW9sJGM+IgogICAgICAgIH0KCiAgICAgICAg
c3ltYm9scyB7CiAgICAgICAgICAgIHB1dHMgLW5vbmV3bGluZSAkc3Rkb3V0ICI8JHtzfXVsJGM+
IgogICAgICAgIH0KCiAgICAgICAgbGV0dGVycwogICAgICAgICAgICAtCiAgICAgICAgaGFuZ2lu
ZyB7CiAgICAgICAgICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJHRhZyBiZWdpbl19IHsKICAgICAg
ICAgICAgICAgIHB1dHMgLW5vbmV3bGluZSAkc3Rkb3V0ICI8L2RsPjwvYmxvY2txdW90ZT4iCiAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBwdXRzIC1ub25ld2xpbmUgJHN0ZG91
dCAiPGJsb2NrcXVvdGUkYz48ZGw+IgogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBk
ZWZhdWx0IHsKICAgICAgICAgICAgcHV0cyAtbm9uZXdsaW5lICRzdGRvdXQgIjwke3N9YmxvY2tx
dW90ZSRjPiIKICAgICAgICB9CiAgICB9CgogICAgaWYge1tzdHJpbmcgY29tcGFyZSAkdGFnIGJl
Z2luXX0gewogICAgICAgIHNldCBkb2luZ1AgMQogICAgICAgIHB1dHMgLW5vbmV3bGluZSAkc3Rk
b3V0ICI8cD4iCiAgICB9CgogICAgc2V0IGhhbmdQIDAKfQoKcHJvYyBmaWd1cmVfaHRtbCB7dGFn
IGxpbmVzIGFuY2hvciB0aXRsZSB7YXYge319fSB7CiAgICBnbG9iYWwgb3B0aW9ucwogICAgZ2xv
YmFsIHN0ZG91dAogICAgZ2xvYmFsIGltZ1AKCiAgICBzZXQgaW1nUCAwCiAgICBzd2l0Y2ggLS0g
JHRhZyB7CiAgICAgICAgYmVnaW4gewogICAgICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJlICR0
aXRsZSAiIl19IHsKICAgICAgICAgICAgICAgIHB1dHMgJHN0ZG91dCAiPGJyPjxociBzaXplPVwi
MVwiIHNoYWRlPVwiMFwiPiIKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiB7W3N0cmluZyBj
b21wYXJlICRhbmNob3IgIiJdfSB7CiAgICAgICAgICAgICAgICBwdXRzICRzdGRvdXQgIjxhIG5h
bWU9XCIkYW5jaG9yXCI+PC9hPiIKICAgICAgICAgICAgfQoJICAgIGlmIHsoW3NldCB4IFtsc2Vh
cmNoIC1leGFjdCAkYXYgc3JjXV0gPj0gMCkgJiYgKFtpbmNyIHhdJTIpfSB7CiAgICAgICAgICAg
ICAgICBwdXRzIC1ub25ld2xpbmUgJHN0ZG91dCAiPGltZyIKCQlmb3JlYWNoIHtrIHZ9ICRhdiB7
CgkJICAgIGlmIHtbc3RyaW5nIGZpcnN0IC4gJGtdICE9IDB9IHsKCQkgICAgICAgIHB1dHMgLW5v
bmV3bGluZSAkc3Rkb3V0ICIiCgkJICAgICAgICByZWdzdWIgLWFsbCB7In0gJHYgeyZxdW90O30g
dgoJCSAgICAgICAgcHV0cyAtbm9uZXdsaW5lICRzdGRvdXQgIiAkaz1cIiR2XCIiCgkJICAgIH0K
CQl9CgkJcHV0cyAkc3Rkb3V0ICI+PC9pbWc+IgoJCXNldCBpbWdQIDEKICAgICAgICAgICAgfQog
ICAgICAgIH0KCiAgICAgICAgZW5kIHsKICAgICAgICAgICAgaWYge1tzdHJpbmcgY29tcGFyZSAk
dGl0bGUgIiJdfSB7CiAgICAgICAgICAgICAgICBwdXRzICRzdGRvdXQgIjx0YWJsZSBib3JkZXI9
XCIwXCIgY2VsbHBhZGRpbmc9XCIwXCIgY2VsbHNwYWNpbmc9XCIyXCIgYWxpZ249XCJjZW50ZXJc
Ij48dHI+PHRkIGFsaWduPVwiY2VudGVyXCI+PGZvbnQgZmFjZT1cIm1vbmFjbywgTVMgU2FucyBT
ZXJpZlwiIHNpemU9XCIxXCI+PGI+Jm5ic3A7JHRpdGxlJm5ic3A7PC9iPjwvZm9udD48YnI+PC90
ZD48L3RyPjwvdGFibGU+PGhyIHNpemU9XCIxXCIgc2hhZGU9XCIwXCI+IgogICAgICAgICAgICB9
CiAgICAgICAgfQogICAgfQp9Cgpwcm9jIHByZWFtYmxlX2h0bWwge3RhZyB7ZWRpdE5vICIifX0g
ewogICAgdF9odG1sICR0YWcgIiIgIiIgIiIgJGVkaXRObwp9Cgpwcm9jIHBvc3RhbWJsZV9odG1s
IHt0YWcge2VkaXRObyAiIn19IHsKICAgIHRfaHRtbCAkdGFnICIiICIiICIiICRlZGl0Tm8KfQoK
cHJvYyB4cmVmX2h0bWwge3RleHQgYXYgdGFyZ2V0fSB7CiAgICBnbG9iYWwgZWxlbQogICAgZ2xv
YmFsIG9wdGlvbnMKICAgIGdsb2JhbCBzdGRvdXQKCiAgICBhcnJheSBzZXQgYXR0cnMgJGF2ICAg
IAoKICAgIHNldCBlbGVtWSAkYXR0cnMoZWxlbU4pCiAgICBhcnJheSBzZXQgdHYgW2xpc3QgdGl0
bGUgIiJdCiAgICBhcnJheSBzZXQgdHYgJGVsZW0oJGVsZW1ZKQoKICAgIHNldCB0aXRsZSAiIgog
ICAgc3dpdGNoIC0tICRhdHRycyh0eXBlKSB7CiAgICAgICAgc2VjdGlvbiB7CiAgICAgICAgICAg
IHNldCBsaW5lICJTZWN0aW9uICRhdHRycyh2YWx1ZSkiCiAgICAgICAgfQoKICAgICAgICBhcHBl
bmRpeCB7CiAgICAgICAgICAgIHNldCBsaW5lICJBcHBlbmRpeCAkYXR0cnModmFsdWUpIgogICAg
ICAgIH0KCiAgICAgICAgZmlndXJlIHsKICAgICAgICAgICAgc2V0IGxpbmUgIkZpZ3VyZSAkYXR0
cnModmFsdWUpIgogICAgICAgIH0KCiAgICAgICAgcmVmZXJlbmNlIHsKICAgICAgICAgICAgc2V0
IGxpbmUgIlxbJGF0dHJzKHZhbHVlKVxdIgogICAgICAgICAgICBzZXQgdGl0bGUgIiB0aXRsZT1c
IiIKCiAgICAgICAgICAgIHNldCBzICIiCiAgICAgICAgICAgIHNldCBuYW1lQSAxCiAgICAgICAg
ICAgIHNldCBuYW1lTiBbbGxlbmd0aCBbc2V0IG5hbWVzIFtyZWZfbmFtZXMgJGVsZW1ZXV1dCiAg
ICAgICAgICAgIGZvcmVhY2ggbmFtZSAkbmFtZXMgewogICAgICAgICAgICAgICAgaW5jciBuYW1l
QQogICAgICAgICAgICAgICAgc2V0IG5hbWUgW2xpbmRleCAkbmFtZSAwXQogICAgICAgICAgICAg
ICAgYXBwZW5kIHRpdGxlICRzJG5hbWUKICAgICAgICAgICAgICAgIGlmIHskbmFtZUEgPT0gJG5h
bWVOfSB7CiAgICAgICAgICAgICAgICAgICAgc2V0IHMgIiBhbmQgIgogICAgICAgICAgICAgICAg
fSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBzZXQgcyAiLCAiCiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXBwZW5kIHRpdGxlICIsIFtyZWZfdGl0bGUgJGVs
ZW1ZXSwgW3JlZl9kYXRlICRlbGVtWV0uXCIiCiAgICAgICAgfQoKICAgICAgICBkZWZhdWx0IHsK
ICAgICAgICAgICAgc2V0IGxpbmUgIlxbJGF0dHJzKHZhbHVlKVxdIgogICAgICAgIH0KICAgIH0K
CiAgICBpZiB7IVtzdHJpbmcgY29tcGFyZSAkdGV4dCAiIl19IHsKICAgICAgICBzZXQgdGV4dCAk
dHYodGl0bGUpCiAgICB9IGVsc2VpZiB7JG9wdGlvbnMoLkVNT1RJQ09OSUMpfSB7CiAgICAgICAg
c2V0IHRleHQgW2Vtb3RpY29uaWNfaHRtbCAkdGV4dF0KICAgIH0KCiAgICBzZXQgcG9zdCAiIgog
ICAgaWYge1tzdHJpbmcgY29tcGFyZSAkdGV4dCAiIl19IHsKICAgICAgICBzd2l0Y2ggLS0gJGF0
dHJzKHR5cGUpIHsKICAgICAgICAgICAgc2VjdGlvbgogICAgICAgICAgICAgICAgLQogICAgICAg
ICAgICBhcHBlbmRpeAogICAgICAgICAgICAgICAgLQogICAgICAgICAgICBmaWd1cmUgewogICAg
ICAgICAgICB9CgogICAgICAgICAgICBkZWZhdWx0IHsKICAgICAgICAgICAgICAgIHNldCBwb3N0
ICRsaW5lCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IGVsc2UgewogICAgICAgIHNldCB0
ZXh0ICRsaW5lCiAgICB9CgogICAgcHV0cyAtbm9uZXdsaW5lICRzdGRvdXQgIjxhIGhyZWY9XCIj
JHRhcmdldFwiJHRpdGxlPiR0ZXh0PC9hPiRwb3N0Igp9Cgpwcm9jIGVyZWZfaHRtbCB7dGV4dCBj
b3VudGVyIHRhcmdldH0gewogICAgZ2xvYmFsIG9wdGlvbnMKICAgIGdsb2JhbCBzdGRvdXQKCiAg
ICBpZiB7IVtzdHJpbmcgY29tcGFyZSAkdGV4dCAiIl19IHsKICAgICAgICBzZXQgdGV4dCAkdGFy
Z2V0CiAgICB9IGVsc2VpZiB7JG9wdGlvbnMoLkVNT1RJQ09OSUMpfSB7CiAgICAgICAgc2V0IHRl
eHQgW2Vtb3RpY29uaWNfaHRtbCAkdGV4dF0KICAgIH0gCgogICAgcHV0cyAtbm9uZXdsaW5lICRz
dGRvdXQgIjxhIGhyZWY9XCIkdGFyZ2V0XCI+JHRleHQ8L2E+Igp9Cgpwcm9jIGlyZWZfaHRtbCB7
aXRlbSBzdWJpdGVtIGZsYWdzfSB7CiAgICBnbG9iYWwgYW5jaG9yTgogICAgZ2xvYmFsIHN0ZG91
dAoKICAgIHNldCBhbmNob3IgYW5jaG9yW2luY3IgYW5jaG9yTl0KCiAgICBwdXRzIC1ub25ld2xp
bmUgJHN0ZG91dCAiPGEgbmFtZT1cIiRhbmNob3JcIj48L2E+IgoKICAgIHJldHVybiAkYW5jaG9y
Cn0KCnByb2MgdnNwYWNlX2h0bWwge2xpbmVzfSB7CiAgICBnbG9iYWwgb3B0aW9ucwogICAgZ2xv
YmFsIHN0ZG91dAogICAgZ2xvYmFsIGRvaW5nUCBoYW5nUAoKICAgIGlmIHskbGluZXMgPiA1fSB7
CiAgICAgICAgaWYgeyRvcHRpb25zKC5TTElERVMpICYmIFtlbmRfcGFnZV9zbGlkZXNdfSB7CiAg
ICAgICAgICAgIHN0YXJ0X3BhZ2Vfc2xpZGVzCiAgICAgICAgfQoKICAgICAgICByZXR1cm4KICAg
IH0KICAgIGluY3IgbGluZXMgLSRoYW5nUAogICAgd2hpbGUgeyRsaW5lcyA+PSAwfSB7CiAgICAg
ICAgaW5jciBsaW5lcyAtMQogICAgICAgIHB1dHMgJHN0ZG91dCAiPGJyPiIKICAgIH0KCiAgICBz
ZXQgaGFuZ1AgMAp9CgojIGRvbid0IG5lZWQgdG8gcmV0dXJuIGFueXRoaW5nIGV2ZW4gdGhvdWdo
IHR4dC9uciB2ZXJzaW9ucyBkby4uLgoKcHJvYyByZWZlcmVuY2VzX2h0bWwge3RhZyB7dGl0bGUg
IiJ9IHtlcmVmUCAwfX0gewogICAgZ2xvYmFsIGNvdW50ZXIgZGVwdGggZWxlbU4gZWxlbSBwYXNz
bm8gc3RhY2sgeHJlZgogICAgZ2xvYmFsIG9wdGlvbnMKICAgIGdsb2JhbCBzdGRvdXQKCiAgICBp
ZiB7JG9wdGlvbnMoLlNMSURFUykgXAogICAgICAgICAgICAmJiAoIVtzdHJpbmcgY29tcGFyZSAk
dGFnIGJlZ2luXSkgXAogICAgICAgICAgICAmJiBbZW5kX3BhZ2Vfc2xpZGVzXX0gewogICAgICAg
IHN0YXJ0X3BhZ2Vfc2xpZGVzIFJlZmVyZW5jZXMKICAgICAgICByZXR1cm4KICAgIH0KCiAgICBz
d2l0Y2ggLS0gJHRhZyB7CiAgICAgICAgYmVnaW4gewogICAgICAgICAgICBpZiB7IVtpbmZvIGV4
aXN0cyBjb3VudGVyKHJlZmVyZW5jZXMpXX0gewogICAgICAgICAgICAgICAgc2V0IGNvdW50ZXIo
cmVmZXJlbmNlcykgMAogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXRzICRzdGRvdXQgIiIK
ICAgICAgICAgICAgdG9jX2h0bWwgcmZjLnJlZmVyZW5jZXNbaW5jciBjb3VudGVyKHJlZmVyZW5j
ZXMpXQogICAgICAgICAgICBwdXRzIC1ub25ld2xpbmUgJHN0ZG91dCAiPGgzPiIKICAgICAgICAg
ICAgcGNkYXRhX2h0bWwgJHRpdGxlCiAgICAgICAgICAgIHB1dHMgJHN0ZG91dCAiPC9oMz4iCgog
ICAgICAgICAgICBwdXRzICRzdGRvdXQgIjx0YWJsZSB3aWR0aD1cIjk5JVwiIGJvcmRlcj1cIjBc
Ij4iCiAgICAgICAgfQoKICAgICAgICBlbmQgewogICAgICAgICAgICBwdXRzICRzdGRvdXQgIjwv
dGFibGU+IgogICAgICAgIH0KICAgIH0KfQoKcHJvYyByZWZlcmVuY2VfaHRtbCB7cHJlZml4IG5h
bWVzIHRpdGxlIHNlcmllcyBmb3JtYXRzIGRhdGUgYW5jaG9yIHRhcmdldAogICAgICAgICAgICAg
ICAgICAgICB0YXJnZXQyIHdpZHRofSB7CiAgICBnbG9iYWwgcmZjVHh0SG9tZSBpZFR4dEhvbWUK
ICAgIGdsb2JhbCBzdGRvdXQKCiAgICBpZiB7W3N0cmluZyBjb21wYXJlICR0YXJnZXQyICIiXX0g
ewogICAgICAgIHNldCBwcmVmaXggIjxhIGhyZWY9XCIkdGFyZ2V0MlwiPiRwcmVmaXg8L2E+Igog
ICAgfQogICAgaWYge1tzdHJpbmcgY29tcGFyZSAkYW5jaG9yICIiXX0gewogICAgICAgIHNldCBw
cmVmaXggIjxhIG5hbWU9XCIkYW5jaG9yXCI+XFskcHJlZml4XF08L2E+IgogICAgfQogICAgcHV0
cyAkc3Rkb3V0ICI8dHI+PHRkIGNsYXNzPVwiYXV0aG9yLXRleHRcIiB2YWxpZ249XCJ0b3BcIj48
Yj4kcHJlZml4PC9iPjwvdGQ+IgoKICAgIHNldCB0ZXh0ICIiCgogICAgc2V0IHMgIiIKICAgIHNl
dCBuYW1lQSAxCiAgICBzZXQgbmFtZU4gW2xsZW5ndGggJG5hbWVzXQogICAgZm9yZWFjaCBuYW1l
ICRuYW1lcyB7CiAgICAgICAgaW5jciBuYW1lQQogICAgICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUg
W3NldCBlcmVmIFtsaW5kZXggJG5hbWUgMV1dICIiXX0gewogICAgICAgICAgICBzZXQgbmFtZSAi
PGEgaHJlZj1cIiRlcmVmXCI+W2xpbmRleCAkbmFtZSAwXTwvYT4iCiAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgc2V0IG5hbWUgW2xpbmRleCAkbmFtZSAwXQogICAgICAgIH0KICAgICAgICBh
cHBlbmQgdGV4dCAkcyRuYW1lCiAgICAgICAgaWYgeyRuYW1lQSA9PSAkbmFtZU59IHsKICAgICAg
ICAgICAgc2V0IHMgIiBhbmQgIgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNldCBzICIs
ICIKICAgICAgICB9CiAgICB9CgogICAgaWYgeyghW3N0cmluZyBjb21wYXJlICR0YXJnZXQgIiJd
KSAmJiAoW2xsZW5ndGggJGZvcm1hdHNdID09IDEpfSB7CiAgICAgICAgYXJyYXkgc2V0IGZ2IFts
aW5kZXggJGZvcm1hdHMgMF0KICAgICAgICBzZXQgdGFyZ2V0ICRmdih0YXJnZXQpCiAgICAgICAg
c2V0IGZvcm1hdHMge30KICAgIH0KCiAgICBpZiB7IVtzdHJpbmcgY29tcGFyZSAkdGFyZ2V0ICIi
XX0gewogICAgICAgIGZvcmVhY2ggc2VyaWFsICRzZXJpZXMgewogICAgICAgICAgICBpZiB7W3Jl
Z2V4cCAtbm9jYXNlIC0tICJyZmMgKFxbMC05XF0qKSIgJHNlcmlhbCB4IG5dID09IDF9IHsKICAg
ICAgICAgICAgICAgIHNldCB0YXJnZXQgJHJmY1R4dEhvbWUvcmZjJG4udHh0CiAgICAgICAgICAg
ICAgICBicmVhawogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIHtbcmVnZXhwIC1ub2Nhc2Ug
LS0gImludGVybmV0LWRyYWZ0IChkcmFmdC0uKikiICRzZXJpYWwgeCBuXSBcCiAgICAgICAgICAg
ICAgICAgICAgPT0gMX0gewogICAgICAgICAgICAgICAgc2V0IHRhcmdldCAkaWRUeHRIb21lLyRu
LnR4dAogICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0K
ICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJHRhcmdldCAiIl19IHsKICAgICAgICBzZXQgdGl0bGUg
IjxhIGhyZWY9XCIkdGFyZ2V0XCI+JHRpdGxlPC9hPiIKICAgIH0KICAgIGFwcGVuZCB0ZXh0ICIk
c1wiJHRpdGxlXCIiCiAgICBmb3JlYWNoIHNlcmlhbCAkc2VyaWVzIHsKICAgICAgICBpZiB7W3Jl
Z2V4cCAtbm9jYXNlIC0tICJpbnRlcm5ldC1kcmFmdCAoZHJhZnQtLiopIiAkc2VyaWFsIHggbl0g
PT0gMX0gewogICAgICAgICAgICBzZXQgc2VyaWFsICIkbiAod29yayBpbiBwcm9ncmVzcykiCiAg
ICAgICAgfQogICAgICAgIGFwcGVuZCB0ZXh0ICIsICRzZXJpYWwiCiAgICB9CiAgICBpZiB7W3N0
cmluZyBjb21wYXJlICRkYXRlICIiXX0gewogICAgICAgIGFwcGVuZCB0ZXh0ICIsICRkYXRlIgog
ICAgfQoKICAgIHNldCBzICIgKCIKICAgIHNldCB0ICIuIgogICAgZm9yZWFjaCBmb3JtYXQgJGZv
cm1hdHMgewogICAgICAgIGNhdGNoIHsgdW5zZXQgZnYgfQogICAgICAgIGFycmF5IHNldCBmdiAk
Zm9ybWF0CiAgICAgICAgaWYge1tpbmZvIGV4aXN0cyBmdih0YXJnZXQpXX0gewogICAgICAgICAg
ICBhcHBlbmQgdGV4dCAiJHM8YSBocmVmPVwiJGZ2KHRhcmdldClcIj4kZnYodHlwZSk8L2E+Igog
ICAgICAgICAgICBzZXQgcyAiLCAiCiAgICAgICAgICAgIHNldCB0ICIpLiIKICAgICAgICB9CiAg
ICB9CiAgICBhcHBlbmQgdGV4dCAkdAoKICAgIHB1dHMgLW5vbmV3bGluZSAkc3Rkb3V0ICI8dGQg
Y2xhc3M9XCJhdXRob3ItdGV4dFwiPiIKICAgIHBjZGF0YV9odG1sICR0ZXh0CiAgICBwdXRzICRz
dGRvdXQgIjwvdGQ+PC90cj4iCn0KCiMgZG9uJ3QgbmVlZCB0byByZXR1cm4gYW55dGhpbmcgZXZl
biB0aG91Z2ggYmFja190eHQgZG9lcy4uLgoKcHJvYyBiYWNrX2h0bWwge2F1dGhvcnN9IHsKICAg
IGdsb2JhbCBzdGRvdXQKICAgIGdsb2JhbCBjb250YWN0cwoKICAgIHN3aXRjaCAtLSBbbGxlbmd0
aCAkYXV0aG9yc10gewogICAgICAgIDAgewogICAgICAgICAgICByZXR1cm4KICAgICAgICB9Cgog
ICAgICAgIDEgewogICAgICAgICAgICBzZXQgczEgIidzIgogICAgICAgICAgICBzZXQgczIgIiIK
ICAgICAgICB9CgogICAgICAgIGRlZmF1bHQgewogICAgICAgICAgICBzZXQgczEgInMnIgogICAg
ICAgICAgICBzZXQgczIgImVzIgogICAgICAgIH0KICAgIH0KICAgIHB1dHMgJHN0ZG91dCAiIgoK
ICAgIHRvY19odG1sIHJmYy5hdXRob3JzCiAgICBwdXRzICRzdGRvdXQgIjxoMz5BdXRob3IkczEg
QWRkcmVzcyRzMjwvaDM+IgoKICAgIHB1dHMgJHN0ZG91dCBcCiAgICAgICAgICI8dGFibGUgd2lk
dGg9XCI5OSVcIiBib3JkZXI9XCIwXCIgY2VsbHBhZGRpbmc9XCIwXCIgY2VsbHNwYWNpbmc9XCIw
XCI+IgogICAgc2V0IHMgIiIKICAgIGZvcmVhY2ggYXV0aG9yICRhdXRob3JzIHsKICAgICAgICBz
ZXQgYmxvY2sxIFtsaW5kZXggJGF1dGhvciAwXQogICAgICAgIHNldCBibG9jazIgW2xpbmRleCAk
YXV0aG9yIDFdCgogICAgICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJHMgIiJdfSB7CiAgICAgICAg
ICAgIHB1dHMgJHN0ZG91dCAkcwogICAgICAgIH0KICAgICAgICBmb3JlYWNoIGxpbmUgJGJsb2Nr
MSB7CiAgICAgICAgICAgIHB1dHMgJHN0ZG91dCAiPHRyPjx0ZCBjbGFzcz1cImF1dGhvci10ZXh0
XCI+Jm5ic3A7PC90ZD4iCiAgICAgICAgICAgIHB1dHMgJHN0ZG91dCAiPHRkIGNsYXNzPVwiYXV0
aG9yLXRleHRcIj4kbGluZTwvdGQ+PC90cj4iCiAgICAgICAgfQogICAgICAgIGZvcmVhY2ggY29u
dGFjdCAkYmxvY2syIHsKICAgICAgICAgICAgc2V0IGtleSBbbGluZGV4ICRjb250YWN0IDBdCiAg
ICAgICAgICAgIHNldCB2YWx1ZSBbbGluZGV4IFtsaW5kZXggJGNvbnRhY3RzIFwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbHNlYXJjaDAgJGNvbnRhY3RzICRrZXldXSAx
XQogICAgICAgICAgICBwdXRzICRzdGRvdXQgIjx0cj48dGQgY2xhc3M9XCJhdXRob3JcIiBhbGln
bj1cInJpZ2h0XCI+JHZhbHVlOiZuYnNwOzwvdGQ+IgogICAgICAgICAgICBzZXQgdmFsdWUgW2xp
bmRleCAkY29udGFjdCAxXQogICAgICAgICAgICBzd2l0Y2ggLS0gJGtleSB7CiAgICAgICAgICAg
ICAgICBlbWFpbCB7CiAgICAgICAgICAgICAgICAgICAgc2V0IHZhbHVlICI8YSBocmVmPVwibWFp
bHRvOiR2YWx1ZVwiPiR2YWx1ZTwvYT4iCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAg
ICAgdXJpIHsKICAgICAgICAgICAgICAgICAgICBzZXQgdmFsdWUgIjxhIGhyZWY9XCIkdmFsdWVc
Ij4kdmFsdWU8L2E+IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAg
IHB1dHMgJHN0ZG91dCAiPHRkIGNsYXNzPVwiYXV0aG9yLXRleHRcIj4kdmFsdWU8L3RkPjwvdHI+
IgogICAgICAgIH0KICAgICAgICBzZXQgcyAiPHRyIGNlbGxwYWRkaW5nPVwiM1wiPjx0ZD4mbmJz
cDs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+IgogICAgfQogICAgcHV0cyAkc3Rkb3V0ICI8L3Rh
YmxlPiIKCiAgICByZXR1cm4gIiIKfQoKcHJvYyB4eHh4X2h0bWwge3thbmNob3Ige319fSB7CiAg
ICBnbG9iYWwgZWxlbQogICAgZ2xvYmFsIG9wdGlvbnMKICAgIGdsb2JhbCBzdGRvdXQKCiAgICBp
ZiB7JG9wdGlvbnMoLlBSSVZBVEUpfSB7CiAgICAgICAgdG9jX2h0bWwgJGFuY2hvcgogICAgICAg
IHJldHVybgogICAgfSBlbHNlIHsKICAgICAgICBhcnJheSBzZXQgcnYgJGVsZW0oMSkKICAgICAg
ICBpZiB7IVtzdHJpbmcgY29tcGFyZSBbc2V0IG51bWJlciAkcnYobnVtYmVyKV0gIiJdfSB7CiAg
ICAgICAgICAgIHRvY19odG1sICRhbmNob3IKICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgfQog
ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCiAgICBpZiB7W3N0cmluZyBjb21w
YXJlICRhbmNob3IgIiJdfSB7CiAgICAgICAgcHV0cyAkc3Rkb3V0ICI8YSBuYW1lPVwiJGFuY2hv
clwiPjxociBzaXplPVwiMVwiIHNoYWRlPVwiMFwiPjwvYT4iCiAgICB9CgogICAgcHV0cyAkc3Rk
b3V0ICIKPHRhYmxlIGJvcmRlcj1cIjBcIiBjZWxscGFkZGluZz1cIjBcIiBjZWxsc3BhY2luZz1c
IjJcIiB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMzBcIiBhbGlnbj1cInJpZ2h0XCI+CiAgICA8dHI+
CiAgICAgICAgPHRkIGJnY29sb3I9XCIjMDAwMDAwXCIgYWxpZ249XCJjZW50ZXJcIiB2YWxpZ249
XCJjZW50ZXJcIiB3aWR0aD1cIjMwXCIgaGVpZ2h0PVwiMzBcIj4KICAgICAgICAgICAgPGZvbnQg
ZmFjZT1cIm1vbmFjbywgTVMgU2FucyBTZXJpZlwiIGNvbG9yPVwiIzY2NjY2NlwiIHNpemU9XCIx
XCI+CiAgICAgICAgICAgICAgICA8Yj48c3BhbiBjbGFzcz1cIlJGQ1wiPiZuYnNwO1JGQyZuYnNw
Ozwvc3Bhbj48L2I+CiAgICAgICAgICAgIDwvZm9udD4KICAgICAgICAgICAgPGZvbnQgZmFjZT1c
ImNoYXJjb2FsLCBNUyBTYW5zIFNlcmlmLCBoZWx2ZXRpY2EsIGFyaWFsLCBzYW5zLXNlcmlmXCIg
c2l6ZT1cIjFcIiBjb2xvcj1cIiNmZmZmZmZcIj4KICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNz
PVwiaG90VGV4dFwiPiRudW1iZXI8L3NwYW4+CiAgICAgICAgICAgIDwvZm9udD4KICAgICAgICA8
L3RkPgogICAgPC90cj4iCgogICAgaWYgeyRvcHRpb25zKC5UT0MpfSB7CiAgICAgICAgcHV0cyAk
c3Rkb3V0ICIgICAgPHRyPjx0ZCBiZ2NvbG9yPVwiIzk5MDAwMFwiIGFsaWduPVwiY2VudGVyXCIg
d2lkdGg9XCIzMFwiIGhlaWdodD1cIjE1XCI+PGEgaHJlZj1cIiN0b2NcIiBDTEFTUz1cImxpbmsy
XCI+PGZvbnQgZmFjZT1cIm1vbmFjbywgTVMgU2FucyBTZXJpZlwiIGNvbG9yPVwiI2ZmZmZmZlwi
IHNpemU9XCIxXCI+PGI+Jm5ic3A7VE9DJm5ic3A7PC9iPjwvZm9udD48L2E+PGJyPjwvdGQ+PC90
cj4iCiAgICB9CiAgICBwdXRzICRzdGRvdXQgIjwvdGFibGU+Igp9Cgpwcm9jIHRvY19odG1sIHth
bmNob3J9IHsKICAgIGdsb2JhbCBvcHRpb25zCiAgICBnbG9iYWwgc3Rkb3V0CgogICAgaWYge1tz
dHJpbmcgY29tcGFyZSAkYW5jaG9yICIiXX0gewogICAgICAgIHB1dHMgJHN0ZG91dCAiPGEgbmFt
ZT1cIiRhbmNob3JcIj48YnI+PGhyIHNpemU9XCIxXCIgc2hhZGU9XCIwXCI+PC9hPiIKICAgIH0K
CiAgICBpZiB7ISRvcHRpb25zKC5UT0MpfSB7CiAgICAgICAgcmV0dXJuCiAgICB9CgogICAgcHV0
cyAkc3Rkb3V0ICI8dGFibGUgYm9yZGVyPVwiMFwiIGNlbGxwYWRkaW5nPVwiMFwiIGNlbGxzcGFj
aW5nPVwiMlwiIHdpZHRoPVwiMzBcIiBoZWlnaHQ9XCIxNVwiIGFsaWduPVwicmlnaHRcIj48dHI+
PHRkIGJnY29sb3I9XCIjOTkwMDAwXCIgYWxpZ249XCJjZW50ZXJcIiB3aWR0aD1cIjMwXCIgaGVp
Z2h0PVwiMTVcIj48YSBocmVmPVwiI3RvY1wiIENMQVNTPVwibGluazJcIj48Zm9udCBmYWNlPVwi
bW9uYWNvLCBNUyBTYW5zIFNlcmlmXCIgY29sb3I9XCIjZmZmZmZmXCIgc2l6ZT1cIjFcIj48Yj4m
bmJzcDtUT0MmbmJzcDs8L2I+PC9mb250PjwvYT48YnI+PC90ZD48L3RyPjwvdGFibGU+Igp9Cgpw
cm9jIHBjZGF0YV9odG1sIHt0ZXh0IHtwcmUgMH19IHsKICAgIGdsb2JhbCBlbnRpdGllcwogICAg
Z2xvYmFsIG9wdGlvbnMKICAgIGdsb2JhbCBzdGRvdXQKICAgIGdsb2JhbCBkb2luZ1AgaGFuZ1AK
ICAgIGdsb2JhbCBpbWdQCgogICAgaWYgeyRpbWdQfSB7CglyZXR1cm4KICAgIH0KCiAgICBzZXQg
Zm9udCAiPGZvbnQgZmFjZT1cInZlcmRhbmEsIGhlbHZldGljYSwgYXJpYWwsIHNhbnMtc2VyaWZc
IiBzaXplPVwiMlwiPiIKCiAgICByZWdzdWIgLWFsbCAtbm9jYXNlIHsmYXBvczt9ICR0ZXh0IHtc
JiMwMzk7fSB0ZXh0CiAgICByZWdzdWIgLWFsbCAiJnJmYy5udW1iZXI7IiAkdGV4dCBbbGluZGV4
ICRlbnRpdGllcyAxXSB0ZXh0CiAgICBpZiB7JHByZX0gewogICAgICAgIGlmIHshW3NsaWRlX3By
ZSAkdGV4dF19IHsKICAgICAgICAgICAgaWYgeyRkb2luZ1B9IHsKICAgICAgICAgICAgICAgIHB1
dHMgJHN0ZG91dCAiPC9wPiIKICAgICAgICAgICAgfQogICAgICAgICAgICBwdXRzICRzdGRvdXQg
IjwvZm9udD48cHJlPiR0ZXh0PC9wcmU+JGZvbnQiCiAgICAgICAgICAgIGlmIHskZG9pbmdQfSB7
CiAgICAgICAgICAgICAgICBwdXRzICRzdGRvdXQgIjxwPiIKICAgICAgICAgICAgfQogICAgICAg
IH0KICAgIH0gZWxzZSB7CiAgICAgICAgaWYgeyRvcHRpb25zKC5FTU9USUNPTklDKX0gewogICAg
ICAgICAgICBzZXQgdGV4dCBbZW1vdGljb25pY19odG1sICR0ZXh0XQogICAgICAgIH0KCiAgICAg
ICAgcHV0cyAtbm9uZXdsaW5lICRzdGRvdXQgJHRleHQKICAgIH0KfQoKcHJvYyBlbW90aWNvbmlj
X2h0bWwge3RleHR9IHsKICAgIGZvcmVhY2gge2VpIGJlZ2luIGVuZH0gW2xpc3QgKiAgPHN0cm9u
Zz4gPC9zdHJvbmc+IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAgPGI+ICAg
ICAgPC9iPiAgICAgIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7In0gPGI+ICAg
ICAgPC9iPl0gewogICAgICAgIHNldCBib2R5ICIiCiAgICAgICAgd2hpbGUge1tzZXQgeCBbc3Ry
aW5nIGZpcnN0ICJ8JGVpIiAkdGV4dF1dID49IDB9IHsKICAgICAgICAgICAgaWYgeyR4ID4gMH0g
ewogICAgICAgICAgICAgICAgYXBwZW5kIGJvZHkgW3N0cmluZyByYW5nZSAkdGV4dCAwIFtleHBy
ICR4LTFdXQogICAgICAgICAgICB9CiAgICAgICAgICAgIGFwcGVuZCBib2R5ICIkYmVnaW4iCiAg
ICAgICAgICAgIHNldCB0ZXh0IFtzdHJpbmcgcmFuZ2UgJHRleHQgW2V4cHIgJHgrMl0gZW5kXQog
ICAgICAgICAgICBpZiB7W3NldCB4IFtzdHJpbmcgZmlyc3QgInwiICR0ZXh0XV0gPCAwfSB7CiAg
ICAgICAgICAgICAgICBlcnJvciAibWlzc2luZyBjbG9zZSBmb3IgfCRlaSIKICAgICAgICAgICAg
fQogICAgICAgICAgICBpZiB7JHggPiAwfSB7CiAgICAgICAgICAgICAgICBhcHBlbmQgYm9keSBb
c3RyaW5nIHJhbmdlICR0ZXh0IDAgW2V4cHIgJHgtMV1dCiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgYXBwZW5kIGJvZHkgIiRlbmQiCiAgICAgICAgICAgIHNldCB0ZXh0IFtzdHJpbmcgcmFuZ2Ug
JHRleHQgW2V4cHIgJHgrMV0gZW5kXQogICAgICAgIH0KICAgICAgICBhcHBlbmQgYm9keSAkdGV4
dAogICAgICAgIHNldCB0ZXh0ICRib2R5CiAgICB9CgogICAgcmV0dXJuICR0ZXh0Cn0KCgojCiMg
c2xpZGVzIHN1Yi1tb2RlCiMKCmNhdGNoIHsKICAgIHBhY2thZ2UgcmVxdWlyZSBUcmYKfQoKc2V0
IGxlZnRHaWYgXAoiUjBsR09EbGhGQUFXQUtFQUFQLy8vOHovL3dBQUFBQUFBQ0grVGxSb2FYTWdZ
WEowSUdseklHbHVJSFJvWlNCd2RXSnNhV01nWkc5dApZV2x1TGlCTFpYWnBiaUJJZFdkb1pYTXNJ
R3RsZG1sdWFFQmxhWFF1WTI5dExDQlRaWEIwWlcxaVpYSWdNVGs1TlFBaCtRUUJBQUFCCkFDd0FB
QUFBRkFBV0FBQUNLNHlQcWN2TjRoNk1TVmlLN01WQmIrcDlUaWhLWkVScWFEcU5LZmJDSWRkNWRG
MkN1WDRmYlE5a0ZBQUEKT3c9PSIKCnNldCByaWdodEdpZiBcCiJSMGxHT0RsaEZBQVdBS0VBQVAv
Ly84ei8vd0FBQUFBQUFDSCtUbFJvYVhNZ1lYSjBJR2x6SUdsdUlIUm9aU0J3ZFdKc2FXTWdaRzl0
CllXbHVMaUJMWlhacGJpQklkV2RvWlhNc0lHdGxkbWx1YUVCbGFYUXVZMjl0TENCVFpYQjBaVzFp
WlhJZ01UazVOUUFoK1FRQkFBQUIKQUN3QUFBQUFGQUFXQUFBQ0s0eVBxY3NkNHBxQVVVMWF6OFY1
OCtoOVV0aUZvbVdlU0twcVp2WENYdlpzZEQzZHVGN3pqdy9VRlFBQQpPdz09IgoKc2V0IHVwR2lm
IFwKIlIwbEdPRGxoRkFBV0FLRUFBUC8vLzh6Ly93QUFBQUFBQUNIK1RsUm9hWE1nWVhKMElHbHpJ
R2x1SUhSb1pTQndkV0pzYVdNZ1pHOXQKWVdsdUxpQkxaWFpwYmlCSWRXZG9aWE1zSUd0bGRtbHVh
RUJsYVhRdVkyOXRMQ0JUWlhCMFpXMWlaWElnTVRrNU5RQWgrUVFCQUFBQgpBQ3dBQUFBQUZBQVdB
QUFDSTR5UHFjdnRENk9jVFFnYXJKMWF4OTQ5SUZpTnBHS2FTWm9lTEl2RjhrelhkbEFBQURzPSIK
CnByb2MgZW5kX3JmY19zbGlkZXMge30gewogICAgZ2xvYmFsIGlmaWxlCiAgICBnbG9iYWwgcGFz
c25vIGluZGV4cGcKICAgIGdsb2JhbCBzbGlkZW5vIHNsaWRld2Qgc2xpZGVteCBzaWxkZW5tCgog
ICAgaWYgeyRwYXNzbm8gIT0gMn0gewogICAgICAgIGVuZF9wYWdlX3NsaWRlcwogICAgICAgIHJl
dHVybiAxCiAgICB9CgogICAgc2V0IHNsaWRlbXggJHNsaWRlbm8KICAgIHNldCBzbGlkZXdkIFtl
eHByIGludChsb2cxMCgkc2xpZGVubykpKzFdCiAgICBmb3JlYWNoIGZpbGUgW2dsb2IgLW5vY29t
cGxhaW4gW2ZpbGUgcm9vdG5hbWUgJGlmaWxlXS0qLmh0bWxdIHsKICAgICAgICBjYXRjaCB7IGZp
bGUgZGVsZXRlIC1mb3JjZSAkZmlsZSB9CiAgICB9CgogICAgaWYgeyFbc3RyaW5nIGNvbXBhcmUg
W2luZm8gY29tbWFuZHMgYmFzZTY0XSBiYXNlNjRdfSB7CiAgICAgICAgc2V0IGlucHV0RCBbZmls
ZSBkaXJuYW1lIFtzZXQgaWZpbGUgJGlmaWxlXV0KCiAgICAgICAgZm9yZWFjaCBnaWYge2xlZnQg
cmlnaHQgdXB9IHsKICAgICAgICAgICAgZ2xvYmFsICR7Z2lmfUdpZgoKICAgICAgICAgICAgaWYg
eyFbZmlsZSBleGlzdHMgW3NldCBmaWxlIFtmaWxlIGpvaW4gJGlucHV0RCAke2dpZn0uZ2lmXV1d
fSB7CiAgICAgICAgICAgICAgICBzZXQgZmQgW29wZW4gJGZpbGUge1dST05MWSBDUkVBVCBUUlVO
Q31dCiAgICAgICAgICAgICAgICBmY29uZmlndXJlICRmZCAtdHJhbnNsYXRpb24gYmluYXJ5Cgog
ICAgICAgICAgICAgICAgcHV0cyAtbm9uZXdsaW5lICRmZCBbYmFzZTY0IC1tb2RlIGRlY29kZSAt
LSBbc2V0ICR7Z2lmfUdpZl1dCgogICAgICAgICAgICAgICAgY2xvc2UgJGZkCiAgICAgICAgICAg
IH0KICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDAKfQoKcHJvYyBmcm9udF9zbGlkZXNfYmVn
aW4ge2xlZnQgcmlnaHQgdG9wIGJvdHRvbSB0aXRsZX0gewogICAgZ2xvYmFsIHBhc3NubyBpbmRl
eHBnCiAgICBnbG9iYWwgc3Rkb3V0CgogICAgZ2xvYmFsIHNsaWRlbm8gc2xpZGV3ZCBzbGlkZW14
IHNsaWRlbm0gc2xpZGVmdAoKICAgIHNldCBzbGlkZW5vIDAKICAgIHN0YXJ0X3BhZ2Vfc2xpZGVz
IFtzZXQgc2xpZGVmdCBbbGluZGV4ICR0aXRsZSAwXV0KCiAgICBpZiB7JHBhc3NubyA9PSAyfSB7
CiAgICAgICAgcmV0dXJuIDAKICAgIH0KCiAgICBzZXQgc2l6ZSA0CiAgICBwdXRzICRzdGRvdXQg
Ijxicj48YnI+PGJyPjxicj48cCBhbGlnbj1cInJpZ2h0XCI+IgogICAgcHV0cyAkc3Rkb3V0ICI8
dGFibGUgd2lkdGg9XCI3NSVcIiBib3JkZXI9XCIwXCIgY2VsbHBhZGRpbmc9XCIwXCIgY2VsbHNw
YWNpbmc9XCIwXCI+IgogICAgcHV0cyAkc3Rkb3V0ICI8dHI+PHRkPiIKICAgIHB1dHMgJHN0ZG91
dCAiPHRhYmxlIHdpZHRoPVwiMTAwJVwiIGJvcmRlcj1cIjBcIiBjZWxscGFkZGluZz1cIjJcIiBj
ZWxsc3BhY2luZz1cIjFcIj4iCiAgICBzZXQgbGVmdCBbbXVuZ2VfbG9uZyAkbGVmdF0KICAgIHNl
dCByaWdodCBbbXVuZ2VfbG9uZyAkcmlnaHRdCiAgICBzZXQgbGMgIiIKICAgIHNldCByYyAiIgog
ICAgZm9yZWFjaCBsICRsZWZ0IHIgJHJpZ2h0IHsKICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJl
ICRsICIiXX0gewogICAgICAgICAgICBzZXQgbCAkbAogICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgIHNldCBsICImbmJzcDsiCiAgICAgICAgfQogICAgICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUg
JHIgIiJdfSB7CiAgICAgICAgICAgIHNldCByICRyCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgc2V0IHIgIiZuYnNwOyIKICAgICAgICB9CiAgICAgICAgcHV0cyAkc3Rkb3V0ICI8dHIgdmFs
aWduPVwidG9wXCI+IgogICAgICAgIHB1dHMgJHN0ZG91dCAiPHRkIHdpZHRoPVwiMzMlXCI+PGZv
bnQgY29sb3I9XCIjMDA2NjAwXCIgc2l6ZT1cIiskc2l6ZVwiPiRsPC9mb250PjwvdGQ+IgogICAg
ICAgIHB1dHMgJHN0ZG91dCAiPHRkIHdpZHRoPVwiMzMlXCI+PGZvbnQgY29sb3I9XCIjMDA2NjAw
XCIgc2l6ZT1cIiskc2l6ZVwiPiRyPC9mb250PjwvdGQ+IgogICAgICAgIHB1dHMgJHN0ZG91dCAi
PC90cj4iCgogICAgICAgIHNldCBzaXplIDMKICAgIH0KICAgIHB1dHMgJHN0ZG91dCAiPC90YWJs
ZT4iCiAgICBwdXRzICRzdGRvdXQgIjwvdGQ+PC90cj4iCiAgICBwdXRzICRzdGRvdXQgIjwvdGFi
bGU+IgogICAgcHV0cyAkc3Rkb3V0ICI8L3A+IgoKICAgIHJldHVybiAxCn0KCnByb2Mgc3RhcnRf
cGFnZV9zbGlkZXMge3t0aXRsZSAiIn19IHsKICAgIGdsb2JhbCBwYXNzbm8gaW5kZXhwZwogICAg
Z2xvYmFsIGlmaWxlCiAgICBnbG9iYWwgc3Rkb3V0CiAgICBnbG9iYWwgc2xpZGVubyBzbGlkZXdk
IHNsaWRlbXggc2xpZGVubSBzbGlkZWZ0CgogICAgaWYgeyRwYXNzbm8gPCAzfSB7CiAgICAgICAg
cmV0dXJuCiAgICB9CgogICAgaWYgeyRzbGlkZW5vID09IDB9IHsKICAgICAgICBjYXRjaCB7IGNs
b3NlICRzdGRvdXQgfQogICAgICAgIGNhdGNoIHsgZmlsZSBkZWxldGUgLWZvcmNlIFtmaWxlIHJv
b3RuYW1lXS5odG1sIH0KICAgIH0KCiAgICBzZXQgc3Rkb3V0IFtvcGVuIFtmaWxlIHJvb3RuYW1l
ICRpZmlsZV0tW3NldCBwIFtzbGlkZV9mb28gJHNsaWRlbm9dXS5odG1sIFwKICAgICAgICAgICAg
ICAgICAgICAgeyBXUk9OTFkgQ1JFQVQgVFJVTkMgfV0KCiAgICBpZiB7W3N0cmluZyBjb21wYXJl
ICR0aXRsZSAiIl19IHsKICAgICAgICBzZXQgc2xpZGVubSAkdGl0bGUKICAgIH0gZWxzZSB7CiAg
ICAgICAgc2V0IHRpdGxlICIkc2xpZGVubSAoY29udGludWVkKSIKICAgIH0KICAgIGlmIHskc2xp
ZGVubyAhPSAwfSB7CiAgICAgICAgYXBwZW5kIHAgIjogIgogICAgfSBlbHNlIHsKICAgICAgICBz
ZXQgcCAiIgogICAgfQogICAgcHV0cyAkc3Rkb3V0ICI8aHRtbD48aGVhZD48dGl0bGU+IgogICAg
cGNkYXRhX2h0bWwgJHAkdGl0bGUKICAgIHB1dHMgJHN0ZG91dCAiPC90aXRsZT48L2hlYWQ+Igog
ICAgcHV0cyAkc3Rkb3V0ICI8Ym9keSB0ZXh0PVwiIzAwMDAwMFwiIHZsaW5rPVwiIzAwNjYwMFwi
IGFsaW5rPVwiI2NjZGRjY1wiIGxpbms9XCIjMDA2NjAwXCJcbiAgICAgIGJnY29sb3I9XCIjZmZm
ZmZmXCI+IgogICAgcHV0cyAkc3Rkb3V0ICI8Zm9udCBmYWNlPVwiYXJpYWwsIGhlbHZldGljYSwg
c2Fuc1wiPiIKICAgIHB1dHMgJHN0ZG91dCAiPHRhYmxlIGhlaWdodD1cIjEwMCVcIiBjZWxsU3Bh
Y2luZz0wIGNlbGxQYWRkaW5nPTAgd2lkdGg9XCIxMDAlXCIgYm9yZGVyPTA+IgogICAgcHV0cyAk
c3Rkb3V0ICI8dGJvZHk+PHRyPjx0ZCB2YWxpZ249dG9wPiIKCiAgICBwdXRzICRzdGRvdXQgIjx0
YWJsZSBoZWlnaHQ9XCIxMDAlXCIgY2VsbFNwYWNpbmc9XCIwXCIgY2VsbFBhZGRpbmc9XCIwXCIg
d2lkdGg9XCIxMDAlXCIgYm9yZGVyPVwiMFwiPiIKICAgIHB1dHMgJHN0ZG91dCAiPHRib2R5Pjx0
cj48dGQgdmFsaWduPXRvcD4iCiAgICBwdXRzICRzdGRvdXQgIjxwPjxmb250IGNvbG9yPVwiIzAw
NjYwMFwiIHNpemU9XCIrNVwiPiR0aXRsZTwvZm9udD48L3A+IgoKICAgIHB1dHMgJHN0ZG91dCAi
PGJyPjxicj4iCiAgICBwdXRzICRzdGRvdXQgIjxmb250IHNpemU9XCIrM1wiPiIKfQoKcHJvYyBl
bmRfcGFnZV9zbGlkZXMge30gewogICAgZ2xvYmFsIHBhc3NubyBpbmRleHBnCiAgICBnbG9iYWwg
aWZpbGUKICAgIGdsb2JhbCBzdGRvdXQKICAgIGdsb2JhbCBzbGlkZW5vIHNsaWRld2Qgc2xpZGVt
eCBzbGlkZW5tIHNsaWRlZnQKCiAgICBpZiB7JHBhc3NubyA8IDN9IHsKICAgICAgICBpbmNyIHNs
aWRlbm8KICAgICAgICByZXR1cm4gMAogICAgfQoKICAgIHNldCB1cCBbZmlsZSByb290bmFtZSBb
ZmlsZSB0YWlsICRpZmlsZV1dLVtzbGlkZV9mb28gMF0uaHRtbAogICAgaWYge1tzZXQgbGVmdCBb
ZXhwciAkc2xpZGVuby0xXV0gPCAwfSB7CiAgICAgICAgc2V0IGxlZnQgJHNsaWRlbXgKICAgIH0K
ICAgIHNldCBsZWZ0IFtmaWxlIHJvb3RuYW1lIFtmaWxlIHRhaWwgJGlmaWxlXV0tW3NsaWRlX2Zv
byAkbGVmdF0uaHRtbAogICAgaWYge1tzZXQgcmlnaHQgW2V4cHIgJHNsaWRlbm8rMV1dID4gJHNs
aWRlbXh9IHsKICAgICAgICBzZXQgcmlnaHQgMAogICAgfQogICAgc2V0IHJpZ2h0IFtmaWxlIHJv
b3RuYW1lIFtmaWxlIHRhaWwgJGlmaWxlXV0tW3NsaWRlX2ZvbyAkcmlnaHRdLmh0bWwKCiAgICBw
dXRzICRzdGRvdXQgIjwvZm9udD4iCiAgICBwdXRzICRzdGRvdXQgIjwvdGQ+PC90cj48L3Rib2R5
PiIKICAgIHB1dHMgJHN0ZG91dCAiPC90YWJsZT4iCiAgICBwdXRzICRzdGRvdXQgIjwvdGQ+PHRk
IHZhbGlnbj1cImJvdHRvbVwiIGFsaWduPVwicmlnaHRcIj4iCiAgICBwdXRzIC1ub25ld2xpbmUg
XAogICAgICAgICAkc3Rkb3V0ICI8cCBhbGlnbj1cInJpZ2h0XCI+PG5vYnI+IgogICAgcHV0cyAt
bm9uZXdsaW5lIFwKICAgICAgICAgJHN0ZG91dCAiPGEgaHJlZj1cIiRsZWZ0XCI+PGltZyBzcmM9
XCJsZWZ0LmdpZlwiICAgYm9yZGVyPVwiMFwiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMlwiPjwv
aW1nPjwvYT4iCiAgICBwdXRzIC1ub25ld2xpbmUgXAogICAgICAgICAkc3Rkb3V0ICI8YSBocmVm
PVwiJHVwXCI+PGltZyBzcmM9XCJ1cC5naWZcIiAgICAgICBib3JkZXI9XCIwXCIgd2lkdGg9XCIy
MFwiIGhlaWdodD1cIjIyXCI+PC9pbWc+PC9hPiIKICAgIHB1dHMgLW5vbmV3bGluZSBcCiAgICAg
ICAgICRzdGRvdXQgIjxhIGhyZWY9XCIkcmlnaHRcIj48aW1nIHNyYz1cInJpZ2h0LmdpZlwiIGJv
cmRlcj1cIjBcIj48L2ltZz48L2E+IgogICAgcHV0cyAkc3Rkb3V0ICI8L25vYnI+PC9wPiIKICAg
IHB1dHMgJHN0ZG91dCAiPC90ZD48L3RyPiIKICAgIHB1dHMgJHN0ZG91dCAiPHRyPjx0ZCBhbGln
bj1cInJpZ2h0XCIgY29sc3Bhbj0yPiIKICAgIHB1dHMgJHN0ZG91dCAiPGZvbnQgY29sb3I9XCIj
MDA2NjAwXCIgc2l6ZT1cIi0zXCI+IgogICAgcGNkYXRhX2h0bWwgJHNsaWRlZnQKICAgIHBjZGF0
YV9odG1sICI8L2ZvbnQ+IgogICAgcHV0cyAkc3Rkb3V0ICI8L3RkPjwvdHI+PC90Ym9keT4iCiAg
ICBwdXRzICRzdGRvdXQgIjwvdGFibGU+IgogICAgcHV0cyAkc3Rkb3V0ICI8L2ZvbnQ+PC9ib2R5
PjwvaHRtbD4iCgogICAgY2F0Y2ggeyBjbG9zZSAkc3Rkb3V0IH0KICAgIHNldCBzdGRvdXQgIiIK
CiAgICBpbmNyIHNsaWRlbm8KICAgIHJldHVybiAxCn0KCnByb2Mgc2xpZGVfcHJlIHt0ZXh0fSB7
CiAgICBnbG9iYWwgcGFzc25vIGluZGV4cGcKICAgIGdsb2JhbCBzdGRvdXQKICAgIGdsb2JhbCBk
b2luZ1AgaGFuZ1AKCiAgICBpZiB7JHBhc3NubyA8IDN9IHsKICAgICAgICByZXR1cm4gMAogICAg
fQoKICAgIGlmIHskZG9pbmdQfSB7CiAgICAgICAgcHV0cyAkc3Rkb3V0ICI8L3A+IgogICAgfQog
ICAgcHV0cyAkc3Rkb3V0ICI8cHJlPiR0ZXh0PC9wcmU+IgogICAgaWYgeyRkb2luZ1B9IHsKICAg
ICAgICBwdXRzICRzdGRvdXQgIjxwPiIKICAgIH0KCiAgICByZXR1cm4gMQp9Cgpwcm9jIHNsaWRl
X2ZvbyB7bn0gewogICAgZ2xvYmFsIHNsaWRlbm8gc2xpZGV3ZCBzbGlkZW14IHNsaWRlbm0gc2xp
ZGVmdAoKICAgIHJldHVybiBbZm9ybWF0ICUqLipkICRzbGlkZXdkICRzbGlkZXdkICRuXQp9CgoK
IwojIG5yb2ZmIG91dHB1dAojCgpwcm9jIHJmY19uciB7aXJlZnMgY29weWluZ30gewogICAgZ2xv
YmFsIG9wdGlvbnMgY29weXJpZ2h0UAogICAgZ2xvYmFsIGZ1bmRpbmcKICAgIGdsb2JhbCBoZWFk
ZXIgZm9vdGVyIGxpbmVubyBwYWdlbm8gYmxhbmtQCiAgICBnbG9iYWwgaW5kZW50cyBpbmRlbnQg
bGFzdGluCiAgICBnbG9iYWwgbm9maWxsUAogICAgZ2xvYmFsIGluZGV4cGcKCiAgICBlbmRfcGFn
ZV9ucgoKICAgIGlmIHtbbGxlbmd0aCAkaXJlZnNdID4gMH0gewogICAgICAgIHNldCBpbmRleHBn
ICRwYWdlbm8KCiAgICAgICAgaWYgeyRsYXN0aW4gIT0gMH0gewogICAgICAgICAgICB3cml0ZV9p
dCAiLmluIFtzZXQgbGFzdGluIFtzZXQgaW5kZW50IDBdXSIKICAgICAgICAgICAgc2V0IGluZGVu
dHMge30KICAgICAgICB9CiAgICAgICAgd3JpdGVfbGluZV9uciAiSW5kZXgiCgogICAgICAgIGZv
cmVhY2ggaXJlZiAkaXJlZnMgewogICAgICAgICAgICBmb3JlYWNoIHtMIGl0ZW0gc3ViaXRlbSBm
bGFncyBwYWdlc30gJGlyZWYgeyBicmVhayB9CgogICAgICAgICAgICBpZiB7W3N0cmluZyBjb21w
YXJlICRMICIiXX0gewogICAgICAgICAgICAgICAgd3JpdGVfbGluZV9uciAiIgogICAgICAgICAg
ICAgICAgd3JpdGVfbGluZV9uciAkTCAgICAgICAgICAgCiAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgIHNldCBzdWJpdGVtIFtjaGFyc19leHBhbmQgJHN1Yml0ZW1dCiAgICAgICAgICAgIGlmIHtb
c3RyaW5nIGNvbXBhcmUgJGl0ZW0gIiJdfSB7CiAgICAgICAgICAgICAgICB3cml0ZV90ZXh0X25y
IFtjaGFyc19leHBhbmQgJGl0ZW1dCiAgICAgICAgICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJl
ICRzdWJpdGVtICIiXX0gewogICAgICAgICAgICAgICAgICAgIGZsdXNoX3RleHQKICAgICAgICAg
ICAgICAgICAgICBwdXNoX2luZGVudCAzCiAgICAgICAgICAgICAgICAgICAgd3JpdGVfdGV4dF9u
ciAiICAgJHN1Yml0ZW0iCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICBwdXNoX2luZGVudCAzCiAgICAgICAgICAgICAgICB3cml0ZV90ZXh0X25y
ICIgICAkc3ViaXRlbSIKICAgICAgICAgICAgfQoKICAgICAgICAgICAgc2V0IHMgIiAgIgogICAg
ICAgICAgICBmb3JlYWNoIHBhZ2UgJHBhZ2VzIHsKICAgICAgICAgICAgICAgIHdyaXRlX3RleHRf
bnIgIiRzJHBhZ2UiCiAgICAgICAgICAgICAgICBzZXQgcyAiLCAiCiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgcG9wX2luZGVudAogICAgICAgICAgICBmbHVzaF90ZXh0ICAKICAgICAgICB9Cgog
ICAgICAgIGVuZF9wYWdlX25yCiAgICB9CgogICAgaWYgeyghJG9wdGlvbnMoLlBSSVZBVEUpKSAm
JiAkY29weXJpZ2h0UH0gewogICAgICAgIHNldCByZXN1bHQgJHBhZ2VubwoKICAgICAgICBpZiB7
JGxhc3RpbiAhPSAzfSB7CiAgICAgICAgICAgIHdyaXRlX2l0ICIuaW4gW3NldCBsYXN0aW4gW3Nl
dCBpbmRlbnQgM11dIgogICAgICAgICAgICBzZXQgaW5kZW50cyB7fQogICAgICAgIH0KICAgICAg
ICB3cml0ZV9pdCAiLnRpIDAiCiAgICAgICAgd3JpdGVfbGluZV9uciAiRnVsbCBDb3B5cmlnaHQg
U3RhdGVtZW50IgoKICAgICAgICBmb3JlYWNoIHBhcmEgJGNvcHlpbmcgewogICAgICAgICAgICB3
cml0ZV9saW5lX25yICIiCiAgICAgICAgICAgIHBjZGF0YV9uciAkcGFyYQogICAgICAgIH0KICAg
ICAgICB3cml0ZV9saW5lX25yICIiCgogICAgICAgIGlmIHshW2hhdmVfbGluZXMgNF19IHsKICAg
ICAgICAgICAgZW5kX3BhZ2VfbnIKICAgICAgICB9CgogICAgICAgIHdyaXRlX2l0ICIudGkgMCIK
ICAgICAgICB3cml0ZV9saW5lX25yICJBY2tub3dsZWRnZW1lbnQiCiAgICAgICAgd3JpdGVfbGlu
ZV9uciAiIgogICAgICAgIHBjZGF0YV9uciAkZnVuZGluZwoKICAgICAgICBmbHVzaF90ZXh0CiAg
ICB9IGVsc2UgewogICAgICAgIHNldCByZXN1bHQgIiIKICAgIH0KCiAgICByZXR1cm4gJHJlc3Vs
dAp9Cgpwcm9jIGZyb250X25yX2JlZ2luIHtsZWZ0IHJpZ2h0IHRvcCBib3R0b20gdGl0bGUgc3Rh
dHVzIGNvcHlpbmd9IHsKICAgIGdsb2JhbCBvcHRpb25zIGNvcHlyaWdodFAKICAgIGdsb2JhbCBp
ZmlsZSBtb2RlIG9maWxlCiAgICBnbG9iYWwgaGVhZGVyIGZvb3RlciBsaW5lbm8gcGFnZW5vIGJs
YW5rUAogICAgZ2xvYmFsIGVhdFAgbm9maWxsUCBpbmRlbnQgbGFzdGluCiAgICBnbG9iYWwgcGFz
c25vIGluZGV4cGcKCiAgICBzZXQgbGluZW5vIDEKICAgIHNldCBwYWdlbm8gMQogICAgc2V0IGJs
YW5rUCAwCiAgICBzZXQgZWF0UCAwCiAgICBzZXQgbGFzdGluIC0xCgogICAgd3JpdGVfaXQgW2Ns
b2NrIGZvcm1hdCBbY2xvY2sgc2Vjb25kc10gXAogICAgICAgICAgICAgICAgICAgIC1mb3JtYXQg
Ii5cXFwiIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHhtbDJyZmMgdjEuMTUgb24gJWQgJWIg
JVkgJVQgKzAwMDAiIFwKICAgICAgICAgICAgICAgICAgICAtZ210IHRydWVdCiAgICB3cml0ZV9p
dCAiLlxcXCIgIgogICAgd3JpdGVfaXQgIi5wbCAxMC4waSIKICAgIHdyaXRlX2l0ICIucG8gMCIK
ICAgIHdyaXRlX2l0ICIubGwgNy4yaSIKICAgIHdyaXRlX2l0ICIubHQgNy4yaSIKICAgIHdyaXRl
X2l0ICIubnIgTEwgNy4yaSIKICAgIHdyaXRlX2l0ICIubnIgTFQgNy4yaSIKICAgIHdyaXRlX2l0
ICIuZHMgTEYgW2NoYXJzX2V4cGFuZCBbbGluZGV4ICRib3R0b20gMF1dIgogICAgd3JpdGVfaXQg
Ii5kcyBSRiBGT1JNRkVFRFxbUGFnZSAlXSIKICAgIHdyaXRlX2l0ICIuZHMgQ0YgW2NoYXJzX2V4
cGFuZCBbbGluZGV4ICRib3R0b20gMV1dIgogICAgd3JpdGVfaXQgIi5kcyBMSCBbY2hhcnNfZXhw
YW5kIFtsaW5kZXggJHRvcCAwXV0iCiAgICB3cml0ZV9pdCAiLmRzIFJIIFtjaGFyc19leHBhbmQg
W2xpbmRleCAkdG9wIDJdXSIKICAgIHdyaXRlX2l0ICIuZHMgQ0ggW2NoYXJzX2V4cGFuZCBbbGlu
ZGV4ICR0b3AgMV1dIgogICAgd3JpdGVfaXQgIi5oeSAwIgogICAgd3JpdGVfaXQgIi5hZCBsIgog
ICAgd3JpdGVfaXQgIi5uZiIKICAgIHNldCBub2ZpbGxQIC0xCgogICAgaWYgeyRwYXNzbm8gPT0g
Mn0gewogICAgICAgIHNldCBpbmRleHBnIDAKICAgIH0KCiAgICBpbmNyIGxpbmVubyA0CgogICAg
aWYgeyRvcHRpb25zKC5UT1BCTE9DSyl9IHsKICAgICAgICBzZXQgbGVmdCBbbXVuZ2VfbG9uZyAk
bGVmdF0KICAgICAgICBzZXQgcmlnaHQgW211bmdlX2xvbmcgJHJpZ2h0XQogICAgICAgIGZvcmVh
Y2ggbCAkbGVmdCByICRyaWdodCB7CiAgICAgICAgICAgIHNldCBsIFtjaGFyc19leHBhbmQgJGxd
CiAgICAgICAgICAgIHNldCByIFtjaGFyc19leHBhbmQgJHJdCiAgICAgICAgICAgIHNldCBsZW4g
W2V4cHIgNzItW3N0cmluZyBsZW5ndGggJGxdXQogICAgICAgICAgICB3cml0ZV9saW5lX25yIFtm
b3JtYXQgJXMlKi4qcyAkbCAkbGVuICRsZW4gJHJdCiAgICAgICAgfQogICAgICAgIHdyaXRlX2xp
bmVfbnIgIiIgLTEKICAgICAgICB3cml0ZV9saW5lX25yICIiIC0xCiAgICB9CgogICAgZm9yZWFj
aCBsaW5lICR0aXRsZSB7CiAgICAgICAgd3JpdGVfdGV4dF9uciBbY2hhcnNfZXhwYW5kICRsaW5l
XSBjCiAgICB9CgogICAgd3JpdGVfbGluZV9uciAiIiAtMQoKICAgIGlmIHskbGFzdGluICE9ICRp
bmRlbnR9IHsKICAgICAgICB3cml0ZV9pdCAiLmluIFtzZXQgbGFzdGluICRpbmRlbnRdIgogICAg
fQoKICAgIGlmIHshJG9wdGlvbnMoLlBSSVZBVEUpfSB7CiAgICAgICAgd3JpdGVfaXQgIi50aSAw
IgogICAgICAgIHdyaXRlX2xpbmVfbnIgIlN0YXR1cyBvZiB0aGlzIE1lbW8iCiAgICAgICAgZm9y
ZWFjaCBwYXJhICRzdGF0dXMgewogICAgICAgICAgICB3cml0ZV9saW5lX25yICIiCiAgICAgICAg
ICAgIHBjZGF0YV9uciAkcGFyYQogICAgICAgIH0KICAgIH0KCiAgICBpZiB7KCEkb3B0aW9ucygu
UFJJVkFURSkpICYmICRjb3B5cmlnaHRQfSB7CiAgICAgICAgd3JpdGVfbGluZV9uciAiIiAtMQog
ICAgICAgIHdyaXRlX2l0ICIudGkgMCIKICAgICAgICB3cml0ZV9saW5lX25yICJDb3B5cmlnaHQg
Tm90aWNlIgogICAgICAgIHdyaXRlX2xpbmVfbnIgIiIgLTEKICAgICAgICBwY2RhdGFfbnIgJGNv
cHlpbmcKICAgIH0KICAgIGluY3IgbGluZW5vIC0xCn0KCnByb2MgZnJvbnRfbnJfZW5kIHt0b2Mg
aXJlZlB9IHsKICAgIGdsb2JhbCBvcHRpb25zCiAgICBnbG9iYWwgaGVhZGVyIGZvb3RlciBsaW5l
bm8gcGFnZW5vIGJsYW5rUAogICAgZ2xvYmFsIHBhc3NubyBpbmRleHBnCiAgICBnbG9iYWwgbm9m
aWxsUAoKICAgIGlmIHskb3B0aW9ucyguVE9DKX0gewogICAgICAgIHNldCBsYXN0IFtsaW5kZXgg
JHRvYyBlbmRdCiAgICAgICAgaWYge1tzdHJpbmcgY29tcGFyZSBbbGluZGV4ICRsYXN0IDFdICJG
dWxsIENvcHlyaWdodCBTdGF0ZW1lbnQiXX0gewogICAgICAgICAgICBzZXQgbGFzdCAiIgogICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHNldCB0b2MgW2xyZXBsYWNlICR0b2MgZW5kIGVuZF0K
ICAgICAgICB9CiAgICAgICAgaWYgeyRpcmVmUH0gewogICAgICAgICAgICBsYXBwZW5kIHRvYyBb
bGlzdCAiIiBJbmRleCAkaW5kZXhwZ10KICAgICAgICB9CiAgICAgICAgaWYge1tzdHJpbmcgY29t
cGFyZSAkbGFzdCAiIl19IHsKICAgICAgICAgICAgbGFwcGVuZCB0b2MgJGxhc3QKICAgICAgICB9
CgogICAgICAgIGlmIHsoIVtoYXZlX2xpbmVzIFtleHByIFtsbGVuZ3RoICR0b2NdKzNdXSkgfHwg
KCRsaW5lbm8gPiAxNyl9IHsKICAgICAgICAgICAgZW5kX3BhZ2VfbnIKICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICB3cml0ZV9saW5lX25yICIiIC0xCiAgICAgICAgfQogICAgICAgIHdyaXRl
X2l0ICIudGkgMCIKICAgICAgICB3cml0ZV9saW5lX25yICJUYWJsZSBvZiBDb250ZW50cyIKICAg
ICAgICB3cml0ZV9saW5lX25yICIiIC0xCgogICAgICAgIHdyaXRlX2l0ICIubmYiCiAgICAgICAg
c2V0IG5vZmlsbFAgMQoKICAgICAgICBzZXQgbGVuMSAwCiAgICAgICAgc2V0IGxlbjIgMAogICAg
ICAgIGZvcmVhY2ggYyAkdG9jIHsKICAgICAgICAgICAgaWYge1tzZXQgeCBbc3RyaW5nIGxlbmd0
aCBbbGluZGV4ICRjIDBdXV0gPiAkbGVuMX0gewogICAgICAgICAgICAgICAgc2V0IGxlbjEgJHgK
ICAgICAgICAgICAgfQogICAgICAgICAgICBpZiB7W3NldCB4IFtzdHJpbmcgbGVuZ3RoIFtsaW5k
ZXggJGMgMl1dXSA+ICRsZW4yfSB7CiAgICAgICAgICAgICAgICBzZXQgbGVuMiAkeAogICAgICAg
ICAgICB9CiAgICAgICAgfQogICAgICAgIHNldCBsZW4zIFtleHByIDUtJGxlbjJdCiAgICAgICAg
c2V0IGxlbjIgNQogICAgICAgIHNldCBtaWQgW2V4cHIgNzItKCRsZW4xKyRsZW4yKzUpXQoKICAg
ICAgICBmb3JlYWNoIGMgJHRvYyB7CiAgICAgICAgICAgIGlmIHshJG9wdGlvbnMoLlNVQkNPTVBB
Q1QpfSB7CiAgICAgICAgICAgICAgICBpZiB7W3N0cmluZyBsYXN0IC4gW2xpbmRleCAkYyAwXV0g
XAogICAgICAgICAgICAgICAgICAgICAgICA9PSBbZXhwciBbc3RyaW5nIGxlbmd0aCBbbGluZGV4
ICRjIDBdXS0xXX0gewogICAgICAgICAgICAgICAgICAgIHdyaXRlX2xpbmVfbnIgIiIKICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBzZXQgczEgW2Zvcm1hdCAiJS0q
LipzICIgJGxlbjEgJGxlbjEgW2xpbmRleCAkYyAwXV0KICAgICAgICAgICAgc2V0IHMyIFtmb3Jt
YXQgIiAlKi4qcyIgJGxlbjIgJGxlbjIgW2xpbmRleCAkYyAyXV0KICAgICAgICAgICAgc2V0IHRp
dGxlIFtjaGFyc19leHBhbmQgW3N0cmluZyB0cmltIFtsaW5kZXggJGMgMV1dXQogICAgICAgICAg
ICB3aGlsZSB7W3NldCBpIFtzdHJpbmcgbGVuZ3RoICR0aXRsZV1dID4gJG1pZH0gewogICAgICAg
ICAgICAgICAgc2V0IHBocmFzZSBbc3RyaW5nIHJhbmdlICR0aXRsZSAwIFtleHByICRtaWQtMV1d
CiAgICAgICAgICAgICAgICBpZiB7W3NldCB4IFtzdHJpbmcgbGFzdCAiICIgJHBocmFzZV1dIDwg
MH0gewogICAgICAgICAgICAgICAgICAgIGlmIHtbc2V0IHggW3N0cmluZyBmaXJzdCAiICIgJHRp
dGxlXV0gPCAwfSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd3JpdGVfdG9jX25yICRz
MSBbc3RyaW5nIHJhbmdlICR0aXRsZSAwIFtleHByICR4LTFdXSBcCiAgICAgICAgICAgICAgICAg
ICAgICAgIFtmb3JtYXQgIiAlLSouKnMiICRsZW4yICRsZW4yICIiXSAkbWlkIDAKICAgICAgICAg
ICAgICAgIHNldCBzMSBbZm9ybWF0ICIgICAlLSouKnMgIiAkbGVuMSAkbGVuMSAiIl0KICAgICAg
ICAgICAgICAgIHNldCB0aXRsZSBbc3RyaW5nIHRyaW1sZWZ0IFtzdHJpbmcgcmFuZ2UgJHRpdGxl
ICR4IGVuZF1dCiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgeyRsZW4zID4gMH0gewogICAg
ICAgICAgICAgICAgc2V0IHMyIFtzdHJpbmcgcmFuZ2UgJHMyICRsZW4zIGVuZF0KICAgICAgICAg
ICAgfQogICAgICAgICAgICB3cml0ZV90b2NfbnIgJHMxICR0aXRsZSAkczIgW2V4cHIgJG1pZCsk
bGVuM10gMQogICAgICAgIH0KICAgIH0KCiAgICBpZiB7KCRvcHRpb25zKC5UT0MpIHx8ICEkb3B0
aW9ucyguQ09NUEFDVCkpfSB7CiAgICAgICAgZW5kX3BhZ2VfbnIKICAgIH0KfQoKcHJvYyB3cml0
ZV90b2NfbnIge3MxIHRpdGxlIHMyIGxlbiBkb3R9IHsKICAgIHNldCB4IFtzdHJpbmcgbGVuZ3Ro
ICR0aXRsZV0KICAgIGlmIHsoJGRvdCkgJiYgKCR4IDwgJGxlbil9IHsKICAgICAgICBpZiB7JHgl
Mn0gewogICAgICAgICAgICBhcHBlbmQgdGl0bGUgIiAiCiAgICAgICAgICAgIGluY3IgeAogICAg
ICAgIH0KICAgICAgICB3aGlsZSB7JHggPCAkbGVufSB7CiAgICAgICAgICAgIGFwcGVuZCB0aXRs
ZSAiIC4iCiAgICAgICAgICAgIGluY3IgeCAyCiAgICAgICAgfQogICAgfQoKICAgIHdyaXRlX2xp
bmVfbnIgW2Zvcm1hdCAiJXMlLSouKnMlcyIgJHMxICRsZW4gJGxlbiAkdGl0bGUgJHMyXQp9Cgpw
cm9jIGFic3RyYWN0X25yIHt9IHsKICAgIHdyaXRlX2xpbmVfbnIgIiIgLTEKICAgIHdyaXRlX2l0
ICIudGkgMCIKICAgIHdyaXRlX2xpbmVfbnIgIkFic3RyYWN0IgogICAgd3JpdGVfbGluZV9uciAi
IiAtMQp9Cgpwcm9jIG5vdGVfbnIge3RpdGxlIGRlcHRofSB7CiAgICB3cml0ZV9saW5lX25yICIi
IC0xCiAgICB3cml0ZV9pdCAiLnRpIDAiCiAgICB3cml0ZV9saW5lX25yIFtjaGFyc19leHBhbmQg
JHRpdGxlXQogICAgd3JpdGVfbGluZV9uciAiIiAtMQp9Cgpwcm9jIHNlY3Rpb25fbnIge3ByZWZp
eCB0b3AgdGl0bGUgbGluZXMgYW5jaG9yfSB7CiAgICBnbG9iYWwgb3B0aW9ucwogICAgZ2xvYmFs
IGhlYWRlciBmb290ZXIgbGluZW5vIHBhZ2VubyBibGFua1AKICAgIGdsb2JhbCBpbmRlbnRzIGlu
ZGVudCBsYXN0aW4KCiAgICBpZiB7KCR0b3AgJiYgISRvcHRpb25zKC5DT01QQUNUKSkgfHwgKCFb
aGF2ZV9saW5lcyBbZXhwciAkbGluZXMrNV1dKX0gewogICAgICAgIGVuZF9wYWdlX25yCiAgICB9
IGVsc2UgewogICAgICAgIHdyaXRlX2xpbmVfbnIgIiIgLTEKICAgIH0KCiAgICBpbmRlbnRfdGV4
dF9uciAiJHByZWZpeCAiIDAKICAgIHdyaXRlX3RleHRfbnIgW2NoYXJzX2V4cGFuZCAkdGl0bGVd
CiAgICBmbHVzaF90ZXh0CiAgICBwb3BfaW5kZW50CgogICAgaWYgeyRsYXN0aW4gIT0gM30gewog
ICAgICAgIHdyaXRlX2l0ICIuaW4gW3NldCBsYXN0aW4gW3NldCBpbmRlbnQgM11dIgogICAgICAg
IHNldCBpbmRlbnRzIHt9CiAgICB9CgogICAgcmV0dXJuICRwYWdlbm8KfQoKcHJvYyB0X25yIHt0
YWcgY291bnRlciBzdHlsZSBoYW5nVGV4dCBlZGl0Tm99IHsKICAgIGdsb2JhbCBvcHRpb25zCiAg
ICBnbG9iYWwgZWF0UAoKICAgIGlmIHshW3N0cmluZyBjb21wYXJlICR0YWcgZW5kXX0gewogICAg
ICAgIHJldHVybgogICAgfQoKICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJGNvdW50ZXIgIiJdfSB7
CiAgICAgICAgc2V0IHBvcyBbcG9wX2luZGVudF0KICAgICAgICBzZXQgbCBbc3BsaXQgJGNvdW50
ZXIgLl0KICAgICAgICBzZXQgbGVmdCAtMQogICAgICAgIHN3aXRjaCAtLSAkc3R5bGUgewogICAg
ICAgICAgICBsZXR0ZXJzIHsKICAgICAgICAgICAgICAgIHNldCBjb3VudGVyIFtvZmZzZXQybGV0
dGVycyBbbGluZGV4ICRsIGVuZF0gW2xsZW5ndGggJGxdXQogICAgICAgICAgICAgICAgYXBwZW5k
IGNvdW50ZXIgIi4gIgogICAgICAgICAgICB9CgogICAgICAgICAgICBudW1iZXJzIHsKICAgICAg
ICAgICAgICAgIHNldCBjb3VudGVyICJbbGluZGV4ICRsIGVuZF0uICIKICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgc3ltYm9scyB7CiAgICAgICAgICAgICAgICBzZXQgY291bnRlciAiW2xpbmRl
eCB7IC0gbyAqICsgfSBbZXhwciBbbGxlbmd0aCAkbF0lNF1dICIKICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgaGFuZ2luZyB7CiAgICAgICAgICAgICAgICBzZXQgY291bnRlciAiW2NoYXJzX2V4
cGFuZCAkaGFuZ1RleHRdICIKICAgICAgICAgICAgICAgIHNldCBsZWZ0ICIiCiAgICAgICAgICAg
IH0KCiAgICAgICAgICAgIGRlZmF1bHQgewogICAgICAgICAgICAgICAgc2V0IGNvdW50ZXIgIiAg
IgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGZsdXNoX3RleHQKICAgICAgICBpZiB7
JG9wdGlvbnMoLkVESVRJTkcpfSB7CiAgICAgICAgICAgIHdyaXRlX2VkaXRub19uciAkZWRpdE5v
CiAgICAgICAgfSBlbHNlaWYgeyEkb3B0aW9ucyguU1VCQ09NUEFDVCl9IHsKICAgICAgICAgICAg
d3JpdGVfbGluZV9uciAiIgogICAgICAgIH0KICAgICAgICBpbmRlbnRfdGV4dF9uciBbZm9ybWF0
ICIlMHMlLVtleHByICRwb3MtMF1zIiAiIiAkY291bnRlcl0gJGxlZnQKICAgICAgICBwb3BfaW5k
ZW50CiAgICAgICAgcHVzaF9pbmRlbnQgJHBvcwogICAgfSBlbHNlIHsKICAgICAgICBpZiB7JG9w
dGlvbnMoLkVESVRJTkcpfSB7CiAgICAgICAgICAgIHdyaXRlX2VkaXRub19uciAkZWRpdE5vCiAg
ICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgd3JpdGVfbGluZV9uciAiIgogICAgICAgIH0KICAg
IH0KCiAgICBzZXQgZWF0UCAxCn0KCnByb2MgbGlzdF9uciB7dGFnIGNvdW50ZXJzIHN0eWxlIGhh
bmdJbmRlbnQgaGFuZ1RleHR9IHsKICAgIGdsb2JhbCBvcHRpb25zCiAgICBnbG9iYWwgZWF0UAog
ICAgZ2xvYmFsIGluZGVudCBsYXN0aW4KCiAgICBzd2l0Y2ggLS0gJHRhZyB7CiAgICAgICAgYmVn
aW4gewogICAgICAgICAgICBzd2l0Y2ggLS0gJHN0eWxlIHsKICAgICAgICAgICAgICAgIGxldHRl
cnMgewogICAgICAgICAgICAgICAgICBzZXQgaSBbZXhwciBpbnQobG9nKFtsbGVuZ3RoICRjb3Vu
dGVyc10pL2xvZygyNikpKzJdCiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbnVt
YmVycyB7CiAgICAgICAgICAgICAgICAgICAgc2V0IGkgMAogICAgICAgICAgICAgICAgICAgIGZv
cmVhY2ggY291bnRlciAkY291bnRlcnMgewogICAgICAgICAgICAgICAgICAgICAgICBpZiB7W3Nl
dCBqIFtzdHJpbmcgbGVuZ3RoIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFtsaW5kZXggW3NwbGl0ICRjb3VudGVyIC5dIGVuZF1dXSBcCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgPiAkaX0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0
IGkgJGoKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICAgICBpbmNyIGkgMQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAg
ICAgIGZvcm1hdCB7CiAgICAgICAgICAgICAgICAgICAgc2V0IGkgW2V4cHIgW3N0cmluZyBsZW5n
dGggW2NoYXJzX2V4cGFuZCAkaGFuZ1RleHRdXS0xXQogICAgICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgICAgIGRlZmF1bHQgewogICAgICAgICAgICAgICAgICAgIHNldCBpIDEKICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiB7W2luY3IgaSAyXSA+ICRoYW5n
SW5kZW50fSB7CiAgICAgICAgICAgICAgICBwdXNoX2luZGVudCBbZXhwciAkaSswXQogICAgICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcHVzaF9pbmRlbnQgW2V4cHIgJGhhbmdJbmRl
bnQrMF0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZW5kIHsKICAgICAgICAgICAg
Zmx1c2hfdGV4dAogICAgICAgICAgICBpZiB7ISRvcHRpb25zKC5TVUJDT01QQUNUKX0gewogICAg
ICAgICAgICAgICAgd3JpdGVfbGluZV9uciAiIgogICAgICAgICAgICB9CiAgICAgICAgICAgIHBv
cF9pbmRlbnQKCiAgICAgICAgICAgIHNldCBlYXRQIDEKCiAgICAgICAgICAgIGlmIHskbGFzdGlu
ICE9ICRpbmRlbnR9IHsKICAgICAgICAgICAgICAgIHdyaXRlX2l0ICIuaW4gW3NldCBsYXN0aW4g
JGluZGVudF0iCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9Cn0KCnByb2MgZmlndXJlX25y
IHt0YWcgbGluZXMgYW5jaG9yIHRpdGxlIGFyZ3N9IHsKICAgIGdsb2JhbCBjb3VudGVyIGRlcHRo
IGVsZW1OIGVsZW0gcGFzc25vIHN0YWNrIHhyZWYKCiAgICBzd2l0Y2ggLS0gJHRhZyB7CiAgICAg
ICAgYmVnaW4gewogICAgICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJlICR0aXRsZSAiIl19IHsK
ICAgICAgICAgICAgICAgIGluY3IgbGluZXMgOAogICAgICAgICAgICB9CiAgICAgICAgICAgIGlm
IHshW2hhdmVfbGluZXMgJGxpbmVzXX0gewogICAgICAgICAgICAgICAgZW5kX3BhZ2VfbnIKICAg
ICAgICAgICAgfQogICAgICAgICAgICBmbHVzaF90ZXh0CiAgICAgICAgICAgIGlmIHtbc3RyaW5n
IGNvbXBhcmUgJHRpdGxlICIiXX0gewogICAgICAgICAgICAgICAgd3JpdGVfbGluZV9uciAiIgog
ICAgICAgICAgICAgICAgd3JpdGVfbGluZV9uciBcCiAgICAgICAgICAgICAgICAgICAgIi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSIKICAgICAgICAgICAgICAgIHdyaXRlX2xpbmVfbnIgIiIKICAgICAgICAgICAgfQog
ICAgICAgIH0KCiAgICAgICAgZW5kIHsKICAgICAgICAgICAgaWYge1tzdHJpbmcgY29tcGFyZSAk
dGl0bGUgIiJdfSB7CiAgICAgICAgICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJlICRhbmNob3Ig
IiJdfSB7CiAgICAgICAgICAgICAgICAgICAgYXJyYXkgc2V0IGF2ICR4cmVmKCRhbmNob3IpCiAg
ICAgICAgICAgICAgICAgICAgc2V0IHByZWZpeCAiRmlndXJlICRhdih2YWx1ZSk6ICIKICAgICAg
ICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgc2V0IHByZWZpeCAiIgogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd3JpdGVfbGluZV9uciAiIgogICAgICAgICAg
ICAgICAgd3JpdGVfdGV4dF9uciAiJHByZWZpeFtjaGFyc19leHBhbmQgJHRpdGxlXSIgYwogICAg
ICAgICAgICAgICAgd3JpdGVfbGluZV9uciAiIgogICAgICAgICAgICAgICAgd3JpdGVfbGluZV9u
ciBcCiAgICAgICAgICAgICAgICAgICAgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKICAgICAgICAgICAgICAgIHdy
aXRlX2xpbmVfbnIgIiIKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKcHJvYyBwcmVh
bWJsZV9uciB7dGFnIHtlZGl0Tm8gIiJ9fSB7CiAgICBnbG9iYWwgb3B0aW9ucwoKICAgIHN3aXRj
aCAtLSAkdGFnIHsKICAgICAgICBiZWdpbiB7CiAgICAgICAgICAgIGlmIHskb3B0aW9ucyguRURJ
VElORyl9IHsKICAgICAgICAgICAgICAgIHdyaXRlX2VkaXRub19uciAkZWRpdE5vCiAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICB3cml0ZV9saW5lX25yICIiCiAgICAgICAgICAg
IH0KICAgICAgICB9CiAgICB9Cn0KCnByb2MgcG9zdGFtYmxlX25yIHt0YWcge2VkaXRObyAiIn19
IHsKICAgIGdsb2JhbCBvcHRpb25zCiAgICBnbG9iYWwgZWF0UAoKICAgIHN3aXRjaCAtLSAkdGFn
IHsKICAgICAgICBiZWdpbiB7CiAgICAgICAgICAgIHNldCBlYXRQIDEKICAgICAgICAgICAgaWYg
eyRvcHRpb25zKC5FRElUSU5HKX0gewogICAgICAgICAgICAgICAgd3JpdGVfZWRpdG5vX25yICRl
ZGl0Tm8KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfQoKcHJvYyB4cmVmX25yIHt0ZXh0
IGF2IHRhcmdldH0gewogICAgZ2xvYmFsIGVhdFAKCiAgICBhcnJheSBzZXQgYXR0cnMgJGF2ICAg
IAoKICAgIHN3aXRjaCAtLSAkYXR0cnModHlwZSkgewogICAgICAgIHNlY3Rpb24gewogICAgICAg
ICAgICBzZXQgbGluZSAiU2VjdGlvbiAkYXR0cnModmFsdWUpIgogICAgICAgIH0KCiAgICAgICAg
YXBwZW5kaXggewogICAgICAgICAgICBzZXQgbGluZSAiQXBwZW5kaXggJGF0dHJzKHZhbHVlKSIK
ICAgICAgICB9CgogICAgICAgIGZpZ3VyZSB7CiAgICAgICAgICAgIHNldCBsaW5lICJGaWd1cmUg
JGF0dHJzKHZhbHVlKSIKICAgICAgICB9CgogICAgICAgIGRlZmF1bHQgewogICAgICAgICAgICBz
ZXQgbGluZSAiXFskYXR0cnModmFsdWUpXF0iCiAgICAgICAgfQogICAgfQogICAgaWYge1tzdHJp
bmcgY29tcGFyZSAkdGV4dCAiIl19IHsKICAgICAgICBzd2l0Y2ggLS0gJGF0dHJzKHR5cGUpIHsK
ICAgICAgICAgICAgc2VjdGlvbgogICAgICAgICAgICAgICAgLQogICAgICAgICAgICBhcHBlbmRp
eAogICAgICAgICAgICAgICAgLQogICAgICAgICAgICBmaWd1cmUgewogICAgICAgICAgICAgICAg
c2V0IGxpbmUgIltjaGFyc19leHBhbmQgJHRleHRdICgkbGluZSkiCiAgICAgICAgICAgIH0KCiAg
ICAgICAgICAgIGRlZmF1bHQgewogICAgICAgICAgICAgICAgc2V0IGxpbmUgIltjaGFyc19leHBh
bmQgJHRleHRdJGxpbmUiCiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICAgIAogICAgfQogICAg
d3JpdGVfdGV4dF9uciAkbGluZQoKICAgIHNldCBlYXRQIDAKfQoKcHJvYyBlcmVmX25yIHt0ZXh0
IGNvdW50ZXIgdGFyZ2V0fSB7CiAgICBnbG9iYWwgZWF0UAogICAgZ2xvYmFsIGVyZWZzCgogICAg
aWYge1tzdHJpbmcgY29tcGFyZSAkdGV4dCAiIl19IHsKICAgICAgICBzZXQgbGluZSAiW2NoYXJz
X2V4cGFuZCAkdGV4dF0iCiAgICB9CiAgICBpZiB7KFtzdHJpbmcgZmlyc3QgIiMiICR0YXJnZXRd
IDwgMCkgXAogICAgICAgICAgICAmJiAoW3N0cmluZyBjb21wYXJlICR0ZXh0ICR0YXJnZXRdKX0g
ewogICAgICAgIHNldCBlcmVmcygkY291bnRlcikgJHRhcmdldAogICAgICAgIGFwcGVuZCBsaW5l
ICIgXFskY291bnRlclxdIgogICAgfQogICAgd3JpdGVfdGV4dF9uciAkbGluZQoKICAgIHNldCBl
YXRQIDAKfQoKcHJvYyBpcmVmX25yIHtpdGVtIHN1Yml0ZW0gZmxhZ3N9IHsKICAgIGdsb2JhbCBo
ZWFkZXIgZm9vdGVyIGxpbmVubyBwYWdlbm8gYmxhbmtQCgogICAgcmV0dXJuICRwYWdlbm8KfQoK
cHJvYyB2c3BhY2VfbnIge2xpbmVzfSB7CiAgICBnbG9iYWwgaGVhZGVyIGZvb3RlciBsaW5lbm8g
cGFnZW5vIGJsYW5rUAogICAgZ2xvYmFsIGVhdFAKCiAgICBmbHVzaF90ZXh0CiAgICBpZiB7JGxp
bmVubyskbGluZXMgPj0gNTF9IHsKICAgICAgICBlbmRfcGFnZV9ucgogICAgfSBlbHNlIHsKICAg
ICAgICB3aGlsZSB7JGxpbmVzID4gMH0gewogICAgICAgICAgICBpbmNyIGxpbmVzIC0xCgogICAg
ICAgICAgICB3cml0ZV9pdCAiIgogICAgICAgICAgICBpbmNyIGxpbmVubwogICAgICAgIH0KICAg
IH0KCiAgICBzZXQgZWF0UCAxCn0KCnByb2MgcmVmZXJlbmNlc19uciB7dGFnIHt0aXRsZSAiIn0g
e2VyZWZQIDB9fSB7CiAgICBnbG9iYWwgb3B0aW9ucwogICAgZ2xvYmFsIGhlYWRlciBmb290ZXIg
bGluZW5vIHBhZ2VubyBibGFua1AKICAgIGdsb2JhbCBub2ZpbGxQIGxhc3RpbgoKICAgIHN3aXRj
aCAtLSAkdGFnIHsKICAgICAgICBiZWdpbiB7CiAgICAgICAgICAgIGlmIHskb3B0aW9ucyguQ09N
UEFDVCl9IHsKICAgICAgICAgICAgICAgIHdyaXRlX2xpbmVfbnIgIiIKICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgIGVuZF9wYWdlX25yCiAgICAgICAgICAgIH0KICAgICAgICAg
ICAgaWYgeyRub2ZpbGxQfSB7CiAgICAgICAgICAgICAgICBmbHVzaF90ZXh0CiAgICAgICAgICAg
ICAgICB3cml0ZV9pdCAiLmZpIgogICAgICAgICAgICAgICAgc2V0IG5vZmlsbFAgMAogICAgICAg
ICAgICAgICAgc2V0IGxhc3RpbiAtMQogICAgICAgICAgICB9CiAgICAgICAgICAgIHdyaXRlX2l0
ICIudGkgMCIKICAgICAgICAgICAgd3JpdGVfbGluZV9uciBbY2hhcnNfZXhwYW5kICR0aXRsZV0K
CiAgICAgICAgICAgIHJldHVybiAkcGFnZW5vCiAgICAgICAgfQoKICAgICAgICBlbmQgewogICAg
ICAgICAgICBpZiB7JGVyZWZQfSB7CiAgICAgICAgICAgICAgICBlcmVmc19ucgogICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmx1c2hfdGV4dAogICAgICAgICAgICB9CiAgICAg
ICAgfQogICAgfQp9Cgpwcm9jIGVyZWZzX25yIHt7dGl0bGUgIiJ9fSB7CiAgICBnbG9iYWwgZXJl
ZnMKICAgIGdsb2JhbCBvcHRpb25zCiAgICBnbG9iYWwgbm9maWxsUCBsYXN0aW4KCiAgICBpZiB7
W3N0cmluZyBjb21wYXJlICR0aXRsZSAiIl19IHsKICAgICAgICBpZiB7JG9wdGlvbnMoLkNPTVBB
Q1QpfSB7CiAgICAgICAgICAgIHdyaXRlX2xpbmVfbnIgIiIKICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICBlbmRfcGFnZV9ucgogICAgICAgIH0KICAgICAgICBpZiB7JG5vZmlsbFB9IHsKICAg
ICAgICAgICAgZmx1c2hfdGV4dAogICAgICAgICAgICB3cml0ZV9pdCAiLmZpIgogICAgICAgICAg
ICBzZXQgbm9maWxsUCAwCiAgICAgICAgICAgIHNldCBsYXN0aW4gLTEKICAgICAgICB9CiAgICAg
ICAgd3JpdGVfaXQgIi50aSAwIgogICAgICAgIHdyaXRlX2xpbmVfbnIgJHRpdGxlCiAgICB9Cgog
ICAgc2V0IG5hbWVzICBbbHNvcnQgLWludGVnZXIgW2FycmF5IG5hbWVzIGVyZWZzXV0KICAgIHNl
dCB3aWR0aCBbZXhwciBbc3RyaW5nIGxlbmd0aCBbbGluZGV4ICRuYW1lcyBlbmRdXSsyXQogICAg
Zm9yZWFjaCBlcmVmICRuYW1lcyB7CiAgICAgICAgd3JpdGVfbGluZV9uciAiIgoKICAgICAgICBp
bmRlbnRfdGV4dF9uciAiW2Zvcm1hdCAlLSouKnMgJHdpZHRoICR3aWR0aCAiXFskZXJlZlxdIl0g
ICIgLTEKCiAgICAgICAgd3JpdGVfdXJsICRlcmVmcygkZXJlZikKICAgICAgICBmbHVzaF90ZXh0
CgogICAgICAgIHBvcF9pbmRlbnQKICAgIH0KCiAgICBmbHVzaF90ZXh0Cn0KCnByb2MgcmVmZXJl
bmNlX25yIHtwcmVmaXggbmFtZXMgdGl0bGUgc2VyaWVzIGZvcm1hdHMgZGF0ZSBhbmNob3IgdGFy
Z2V0CiAgICAgICAgICAgICAgICAgICB0YXJnZXQyIHdpZHRofSB7CiAgICB3cml0ZV9saW5lX25y
ICIiCgogICAgaW5jciB3aWR0aCAyCiAgICBzZXQgaSBbZXhwciBbc3RyaW5nIGxlbmd0aCBcCiAg
ICAgICAgICAgICAgICAgICAgICAgIFtzZXQgcHJlZml4IFwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBbZm9ybWF0ICUtKnMgJHdpZHRoICJcWyRwcmVmaXhcXSJdXSsyXV0KCiAgICBpZiB7
JGkgPiAxMX0gewojIHRoZSBpbmRlbnRfdGV4dF9uciBhYnN0cmFjdGlvbiBpc24ndCByb2J1c3Qg
ZW5vdWdoIHRvIGZpZ3VyZSB0aGlzIG91dC4uLgoKCWdsb2JhbCBpbmRlbnQgbGFzdGluCglnbG9i
YWwgbm9maWxsUAoKCWZsdXNoX3RleHQKCWlmIHskbm9maWxsUH0gewogICAgICAgICAgICB3cml0
ZV9pdCAiLmZpIgogICAgICAgICAgICBzZXQgbm9maWxsUCAwCgl9CgoJcHVzaF9pbmRlbnQgMTQK
Cgl3cml0ZV9pdCAiLmluIFtzZXQgbGFzdGluIFtzZXQgaW5kZW50IDE0XV0iCgl3cml0ZV9pdCAi
LnRpIDMiCgl3cml0ZV9saW5lX25yICRwcmVmaXgKCXdyaXRlX2l0ICIuYnIiCiAgICB9IGVsc2Ug
ewoJaW5kZW50X3RleHRfbnIgIiRwcmVmaXggICIgLTEKICAgIH0KCiAgICBzZXQgcyAiIgogICAg
c2V0IG5hbWVBIDEKICAgIHNldCBuYW1lTiBbbGxlbmd0aCAkbmFtZXNdCiAgICBmb3JlYWNoIG5h
bWUgJG5hbWVzIHsKICAgICAgICBpbmNyIG5hbWVBCiAgICAgICAgd3JpdGVfdGV4dF9uciAkc1tj
aGFyc19leHBhbmQgW2xpbmRleCAkbmFtZSAwXV0KICAgICAgICBpZiB7JG5hbWVBID09ICRuYW1l
Tn0gewogICAgICAgICAgICBzZXQgcyAiIGFuZCAiCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgc2V0IHMgIiwgIgogICAgICAgIH0KICAgIH0KICAgIHdyaXRlX3RleHRfbnIgIiRzXCJbY2hh
cnNfZXhwYW5kICR0aXRsZV1cIiIKICAgIGZvcmVhY2ggc2VyaWFsICRzZXJpZXMgewogICAgICAg
IGlmIHtbcmVnZXhwIC1ub2Nhc2UgLS0gImludGVybmV0LWRyYWZ0IChkcmFmdC0uKikiICRzZXJp
YWwgeCBuXSA9PSAxfSB7CiAgICAgICAgICAgIHNldCBzZXJpYWwgIiRuICh3b3JrIGluIHByb2dy
ZXNzKSIKICAgICAgICB9CiAgICAgICAgd3JpdGVfdGV4dF9uciAiLCBbY2hhcnNfZXhwYW5kICRz
ZXJpYWxdIgogICAgfQogICAgaWYge1tzdHJpbmcgY29tcGFyZSAkZGF0ZSAiIl19IHsKICAgICAg
ICB3cml0ZV90ZXh0X25yICIsICRkYXRlIgogICAgfQogICAgaWYge1tzdHJpbmcgY29tcGFyZSAk
dGFyZ2V0ICIiXX0gewogICAgICAgIHdyaXRlX3RleHRfbnIgIiwgIgogICAgICAgIHdyaXRlX3Vy
bCAkdGFyZ2V0CiAgICB9CiAgICB3cml0ZV90ZXh0X25yIC4KCiAgICBwb3BfaW5kZW50Cn0KCnBy
b2MgYmFja19uciB7YXV0aG9yc30gewogICAgZ2xvYmFsIG9wdGlvbnMKICAgIGdsb2JhbCBoZWFk
ZXIgZm9vdGVyIGxpbmVubyBwYWdlbm8gYmxhbmtQCiAgICBnbG9iYWwgaW5kZW50cyBpbmRlbnQg
bGFzdGluCiAgICBnbG9iYWwgbm9maWxsUAogICAgZ2xvYmFsIGNvbnRhY3RzCgogICAgc2V0IGxp
bmVzIDUKICAgIHNldCBhdXRob3IgW2xpbmRleCAkYXV0aG9ycyAwXQogICAgaW5jciBsaW5lcyBb
bGxlbmd0aCBbbGluZGV4ICRhdXRob3IgMF1dCiAgICBpbmNyIGxpbmVzIFtsbGVuZ3RoIFtsaW5k
ZXggJGF1dGhvciAxXV0KICAgIGlmIHshW2hhdmVfbGluZXMgJGxpbmVzXX0gewogICAgICAgIGVu
ZF9wYWdlX25yCiAgICB9IGVsc2VpZiB7JGxpbmVubyAhPSAzfSB7CiAgICAgICAgd3JpdGVfbGlu
ZV9uciAiIiAtMQogICAgICAgIHdyaXRlX2xpbmVfbnIgIiIgLTEKICAgIH0KICAgIHNldCByZXN1
bHQgJHBhZ2VubwoKICAgIGlmIHskbGFzdGluICE9ICRpbmRlbnR9IHsKICAgICAgICB3cml0ZV9p
dCAiLmluIFtzZXQgbGFzdGluICRpbmRlbnRdIgogICAgfQogICAgd3JpdGVfaXQgIi5uZiIKICAg
IHNldCBub2ZpbGxQIDEKCiAgICBzd2l0Y2ggLS0gW2xsZW5ndGggJGF1dGhvcnNdIHsKICAgICAg
ICAwIHsKICAgICAgICAgICAgcmV0dXJuICRyZXN1bHQKICAgICAgICB9CgogICAgICAgIDEgewog
ICAgICAgICAgICBzZXQgczEgIidzIgogICAgICAgICAgICBzZXQgczIgIiIKICAgICAgICB9Cgog
ICAgICAgIGRlZmF1bHQgewogICAgICAgICAgICBzZXQgczEgInMnIgogICAgICAgICAgICBzZXQg
czIgImVzIgogICAgICAgIH0KICAgIH0KICAgIHNldCBzICJBdXRob3IkczEgQWRkcmVzcyRzMiIK
CiAgICBzZXQgZmlyc3RQIDEKICAgIGZvcmVhY2ggYXV0aG9yICRhdXRob3JzIHsKICAgICAgICBz
ZXQgYmxvY2sxIFtsaW5kZXggJGF1dGhvciAwXQogICAgICAgIHNldCBibG9jazIgW2xpbmRleCAk
YXV0aG9yIDFdCgogICAgICAgIHNldCBsaW5lcyAzCiAgICAgICAgaW5jciBsaW5lcyBbbGxlbmd0
aCAkYmxvY2sxXQogICAgICAgIGluY3IgbGluZXMgW2xsZW5ndGggJGJsb2NrMl0KICAgICAgICBp
ZiB7IVtoYXZlX2xpbmVzICRsaW5lc119IHsKICAgICAgICAgICAgZW5kX3BhZ2VfbnIKICAgICAg
ICB9CgogICAgICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJHMgIiJdfSB7CiAgICAgICAgICAgIHdy
aXRlX2l0ICIudGkgMCIKICAgICAgICAgICAgd3JpdGVfbGluZV9uciAkcwogICAgICAgICAgICBz
ZXQgcyAiIgogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHdyaXRlX2xpbmVfbnIgIiIgLTEK
ICAgICAgICB9CiAgICAgICAgd3JpdGVfbGluZV9uciAiIiAtMQoKICAgICAgICBmb3JlYWNoIGxp
bmUgJGJsb2NrMSB7CiAgICAgICAgICAgIHdyaXRlX2xpbmVfbnIgW2NoYXJzX2V4cGFuZCAkbGlu
ZV0KICAgICAgICB9CgogICAgICAgIGlmIHtbbGxlbmd0aCAkYmxvY2syXSA+IDB9IHsKICAgICAg
ICAgICAgd3JpdGVfbGluZV9uciAiIgogICAgICAgICAgICBmb3JlYWNoIGNvbnRhY3QgJGJsb2Nr
MiB7CiAgICAgICAgICAgICAgICBzZXQga2V5IFtsaW5kZXggJGNvbnRhY3QgMF0KICAgICAgICAg
ICAgICAgIHNldCB2YWx1ZSBbbGluZGV4IFtsaW5kZXggJGNvbnRhY3RzIFwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xzZWFyY2gwICRjb250YWN0cyAka2V5XV0g
MV0KICAgICAgICAgICAgICAgIHNldCB2YWx1ZSBbZm9ybWF0ICUtNnMgJHZhbHVlOl0KICAgICAg
ICAgICAgICAgIHdyaXRlX2xpbmVfbnIgIiR2YWx1ZSBbY2hhcnNfZXhwYW5kIFtsaW5kZXggJGNv
bnRhY3QgMV1dIgogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkcmVz
dWx0Cn0KCnByb2MgcGNkYXRhX25yIHt0ZXh0IHtwcmUgMH19IHsKICAgIGdsb2JhbCBlYXRQCiAg
ICBnbG9iYWwgbm9maWxsUCBsYXN0aW4KICAgIGdsb2JhbCBvcHRpb25zCgogICAgaWYgeyghJHBy
ZSkgJiYgKCRlYXRQKX0gewogICAgICAgIHNldCB0ZXh0IFtzdHJpbmcgdHJpbWxlZnQgJHRleHRd
CiAgICB9CiAgICBzZXQgZWF0UCAwCgogICAgaWYgeyEkcHJlfSB7CiAgICAgICAgcmVnc3ViIC1h
bGwgIlxuXFsgXHRcblxdKiIgJHRleHQgIlxuIiB0ZXh0CiAgICAgICAgcmVnc3ViIC1hbGwgIlxb
IFx0XF0qXG5cWyBcdFxdKiIgJHRleHQgIlxuIiB0ZXh0CiAgICAgICAgc2V0IHByZWZpeCAiIgoK
ICAgICAgICBpZiB7JG9wdGlvbnMoLkVNT1RJQ09OSUMpfSB7CiAgICAgICAgICAgIHNldCB0ZXh0
IFtlbW90aWNvbmljX3R4dCAkdGV4dF0KICAgICAgICB9CiAgICB9CgogICAgaWYgeyRub2ZpbGxQ
ICE9ICRwcmV9IHsKICAgICAgICBmbHVzaF90ZXh0CiAgICAgICAgaWYgeyRwcmV9IHsKICAgICAg
ICAgICAgd3JpdGVfaXQgIi5uZiIKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB3cml0ZV9p
dCAiLmZpIgogICAgICAgICAgICBzZXQgbGFzdGluIC0xCiAgICAgICAgfQogICAgICAgIHNldCBu
b2ZpbGxQICRwcmUKICAgIH0KICAgIGZvcmVhY2ggbGluZSBbc3BsaXQgJHRleHQgIlxuIl0gewog
ICAgICAgIHNldCBsaW5lIFtjaGFyc19leHBhbmQgJGxpbmVdCiAgICAgICAgaWYgeyRwcmV9IHsK
ICAgICAgICAgICAgd3JpdGVfbGluZV9uciBbc3RyaW5nIHRyaW1yaWdodCAkbGluZV0gMQogICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHdyaXRlX3BjZGF0YV9uciAkcHJlZml4JGxpbmUKICAg
ICAgICAgICAgc2V0IHByZWZpeCAiICIKICAgICAgICB9CiAgICB9Cn0KCgpwcm9jIHN0YXJ0X3Bh
Z2VfbnIge30gewogICAgZ2xvYmFsIHN0ZG91dAogICAgZ2xvYmFsIGhlYWRlciBmb290ZXIgbGlu
ZW5vIHBhZ2VubyBibGFua1AKCiAgICBzZXQgbGluZW5vIDMKICAgIHNldCBibGFua1AgMQp9Cgpw
cm9jIGVuZF9wYWdlX25yIHt9IHsKICAgIGdsb2JhbCBzdGRvdXQKICAgIGdsb2JhbCBoZWFkZXIg
Zm9vdGVyIGxpbmVubyBwYWdlbm8gYmxhbmtQCgogICAgZmx1c2hfdGV4dAoKICAgIGlmIHskbGlu
ZW5vIDw9IDN9IHsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICBpbmNyIHBhZ2VubwogICAgc2V0
IGxpbmVubyAwCgogICAgd3JpdGVfaXQgIi5icCIKfQoKcHJvYyBpbmRlbnRfdGV4dF9uciB7cHJl
Zml4IHtsZWZ0ICIifX0gewogICAgZ2xvYmFsIGJ1ZmZlcgogICAgZ2xvYmFsIGluZGVudHMgaW5k
ZW50IGxhc3RpbgogICAgZ2xvYmFsIG5vZmlsbFAKCiAgICBmbHVzaF90ZXh0CiAgICBpZiB7JG5v
ZmlsbFB9IHsKICAgICAgICB3cml0ZV9pdCAiLmZpIgogICAgICAgIHNldCBub2ZpbGxQIDAKICAg
ICAgICBzZXQgbGFzdGluIC0xCiAgICB9CgogICAgaWYgeyFbc3RyaW5nIGNvbXBhcmUgJGxlZnQg
IiJdfSB7CiAgICAgICAgc2V0IGxlZnQgJGluZGVudAogICAgICAgIHdoaWxlIHshW3N0cmluZyBj
b21wYXJlIFtzdHJpbmcgaW5kZXggJHByZWZpeCAwXSAiICJdfSB7CiAgICAgICAgICAgIGluY3Ig
bGVmdAogICAgICAgICAgICBzZXQgcHJlZml4IFtzdHJpbmcgcmFuZ2UgJHByZWZpeCAxIGVuZF0K
ICAgICAgICB9CiAgICAgICAgcHVzaF9pbmRlbnQgMwogICAgfSBlbHNlaWYgeyRsZWZ0IDwgMH0g
ewogICAgICAgIHNldCBsZWZ0ICRpbmRlbnQKICAgICAgICBwdXNoX2luZGVudCBbc3RyaW5nIGxl
bmd0aCAkcHJlZml4XQogICAgfSBlbHNlIHsKICAgICAgICBwdXNoX2luZGVudCBbZXhwciAkbGVm
dCtbc3RyaW5nIGxlbmd0aCAkcHJlZml4XS0kaW5kZW50XQogICAgfQogICAgaWYgeyRsYXN0aW4g
IT0gJGluZGVudH0gewogICAgICAgIHdyaXRlX2l0ICIuaW4gW3NldCBsYXN0aW4gJGluZGVudF0i
CiAgICB9CiAgICBpZiB7JGluZGVudCAhPSAkbGVmdH0gewogICAgICAgIHdyaXRlX2l0ICIudGkg
JGxlZnQiCiAgICB9CiAgICBzZXQgYnVmZmVyIFtmb3JtYXQgJSouKnMgJGxlZnQgJGxlZnQgIiJd
CiAgICB3cml0ZV90ZXh0X25yICRwcmVmaXgKfQoKcHJvYyB3cml0ZV9wY2RhdGFfbnIge3RleHR9
IHsKICAgIGdsb2JhbCBidWZmZXIKICAgIGdsb2JhbCBpbmRlbnRzIGluZGVudAoKICAgIGlmIHsh
W3N0cmluZyBjb21wYXJlICRidWZmZXIgIiJdfSB7CiAgICAgICAgc2V0IGJ1ZmZlciBbZm9ybWF0
ICUqLipzICRpbmRlbnQgJGluZGVudCAiIl0gICAgCiAgICB9CiAgICBhcHBlbmQgYnVmZmVyICR0
ZXh0CiAgICBzZXQgYnVmZmVyIFt0d29fc3BhY2VzICRidWZmZXJdCgogICAgd3JpdGVfdGV4dF9u
ciAiIgp9Cgpwcm9jIHdyaXRlX2VkaXRub19uciB7ZWRpdE5vfSB7CiAgICBnbG9iYWwgYnVmZmVy
CiAgICBnbG9iYWwgaW5kZW50cyBpbmRlbnQKCiAgICBpZiB7W3N0cmluZyBjb21wYXJlICRidWZm
ZXIgIiJdfSB7CiAgICAgICAgZmx1c2hfdGV4dAogICAgfQogICAgd3JpdGVfaXQgIi50aSAwIgog
ICAgd3JpdGVfaXQgPCRlZGl0Tm8+CiAgICB3cml0ZV9pdCAiLmJyIgp9Cgpwcm9jIHdyaXRlX3Rl
eHRfbnIge3RleHQge2RpcmVjdGlvbiBsfX0gewogICAgZ2xvYmFsIGJ1ZmZlcgogICAgZ2xvYmFs
IGluZGVudHMgaW5kZW50IGxhc3RpbgoKICAgIGlmIHshW3N0cmluZyBjb21wYXJlICRkaXJlY3Rp
b24gY119IHsKICAgICAgICBmbHVzaF90ZXh0CiAgICB9CiAgICBpZiB7KCFbc3RyaW5nIGNvbXBh
cmUgJGJ1ZmZlciRkaXJlY3Rpb24gbF0pIFwKICAgICAgICAgICAgJiYgKCRsYXN0aW4gIT0gJGlu
ZGVudCl9IHsKICAgICAgICB3cml0ZV9pdCAiLmluIFtzZXQgbGFzdGluICRpbmRlbnRdIgogICAg
fQogICAgaWYgeyFbc3RyaW5nIGNvbXBhcmUgJGJ1ZmZlciAiIl19IHsKICAgICAgICBzZXQgYnVm
ZmVyIFtmb3JtYXQgJSouKnMgJGluZGVudCAkaW5kZW50ICIiXSAgICAKICAgIH0KICAgIGFwcGVu
ZCBidWZmZXIgJHRleHQKCiAgICBzZXQgZmx1c2ggW3N0cmluZyBjb21wYXJlICRkaXJlY3Rpb24g
bF0KICAgIHdoaWxlIHsoW3NldCBpIFtzdHJpbmcgbGVuZ3RoICRidWZmZXJdXSA+IDcyKSB8fCAo
JGZsdXNoKX0gewogICAgICAgIGlmIHskaSA+IDcyfSB7CiAgICAgICAgICAgIHNldCB4IFtzdHJp
bmcgbGFzdCAiICIgW3NldCBsaW5lIFtzdHJpbmcgcmFuZ2UgJGJ1ZmZlciAwIDcyXV1dCiAgICAg
ICAgICAgIHNldCB5IFtzdHJpbmcgbGFzdCAiLSIgW3N0cmluZyByYW5nZSAkbGluZSAwIDcxXV0K
ICAgICAgICAgICAgc2V0IHogW3N0cmluZyBsYXN0ICIvIiBbc3RyaW5nIHJhbmdlICRsaW5lIDAg
NzFdXQogICAgICAgICAgICBpZiB7JHkgPCAken0gewogICAgICAgICAgICAgICAgc2V0IHkgJHoK
ICAgICAgICAgICAgfQogICAgICAgICAgICBpZiB7JHggPCAkeX0gewogICAgICAgICAgICAgICAg
c2V0IHggJHkKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiB7JHggPCAwfSB7CiAgICAgICAg
ICAgICAgICBzZXQgeCBbc3RyaW5nIGxhc3QgIiAiICRidWZmZXJdCiAgICAgICAgICAgICAgICBz
ZXQgeSBbc3RyaW5nIGxhc3QgIi0iICRidWZmZXJdCiAgICAgICAgICAgICAgICBzZXQgeiBbc3Ry
aW5nIGxhc3QgIi8iICRidWZmZXJdCiAgICAgICAgICAgICAgICBpZiB7JHkgPiAken0gewogICAg
ICAgICAgICAgICAgICAgIHNldCB5ICR6CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAg
ICBpZiB7JHggPiAkeX0gewogICAgICAgICAgICAgICAgICAgIHNldCB4ICR5CiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgeyR4IDwgMH0gewogICAgICAgICAg
ICAgICAgc2V0IHggJGkKICAgICAgICAgICAgfSBlbHNlaWYgeygkeCA9PSAkeSkgfHwgKCR4ID09
ICR6KX0gewogICAgICAgICAgICAgICAgaW5jciB4CiAgICAgICAgICAgIH0gZWxzZWlmIHskeCsx
ID09ICRpbmRlbnR9IHsKICAgICAgICAgICAgICAgIHNldCB4ICRpCiAgICAgICAgICAgIH0KICAg
ICAgICAgICAgc2V0IHRleHQgW3N0cmluZyByYW5nZSAkYnVmZmVyIDAgW2V4cHIgJHgtMV1dCiAg
ICAgICAgICAgIHNldCByZXN0IFtzdHJpbmcgdHJpbWxlZnQgW3N0cmluZyByYW5nZSAkYnVmZmVy
ICR4IGVuZF1dCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgc2V0IHRleHQgJGJ1ZmZlcgog
ICAgICAgICAgICBzZXQgcmVzdCAiIgogICAgICAgIH0KICAgICAgICBzZXQgYnVmZmVyICIiCgog
ICAgICAgIGlmIHshW3N0cmluZyBjb21wYXJlICRkaXJlY3Rpb24gY119IHsKICAgICAgICAgICAg
d3JpdGVfaXQgIi5jZSIKICAgICAgICB9CiAgICAgICAgd3JpdGVfbGluZV9uciBbc3RyaW5nIHRy
aW1sZWZ0ICR0ZXh0XQoKICAgICAgICBpZiB7W3N0cmluZyBjb21wYXJlICRyZXN0ICIiXX0gewog
ICAgICAgICAgICBzZXQgYnVmZmVyIFtmb3JtYXQgJSouKnMlcyAkaW5kZW50ICRpbmRlbnQgIiIg
JHJlc3RdCiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYnJlYWsKICAgICAgICB9CiAgICB9
Cn0KCnByb2Mgd3JpdGVfbGluZV9uciB7bGluZSB7cHJlIDB9fSB7CiAgICBnbG9iYWwgc3Rkb3V0
CiAgICBnbG9iYWwgaGVhZGVyIGZvb3RlciBsaW5lbm8gcGFnZW5vIGJsYW5rUAogICAgZ2xvYmFs
IGJ1ZmZlcgogICAgZ2xvYmFsIGluZGVudHMgaW5kZW50IGxhc3RpbgogICAgZ2xvYmFsIG5ic3AK
CiAgICBmbHVzaF90ZXh0CiAgICBpZiB7JGxpbmVubyA9PSAwfSB7CiAgICAgICAgc3RhcnRfcGFn
ZV9ucgogICAgfQogICAgaWYgeyFbc2V0IHggW3N0cmluZyBjb21wYXJlICRsaW5lICIiXV19IHsK
ICAgICAgICBzZXQgYmxhbmtPICRibGFua1AKICAgICAgICBzZXQgYmxhbmtQIDEKICAgICAgICBp
ZiB7KCRibGFua08pICYmICghJHByZSB8fCAkbGluZW5vID09IDMpfSB7CiAgICAgICAgICAgIHJl
dHVybgogICAgICAgIH0KICAgIH0gZWxzZSB7CiAgICAgICAgc2V0IGJsYW5rUCAwCiAgICB9CiAg
ICBpZiB7KCRwcmUpICYmICgkeCkgJiYgKCRsYXN0aW4gIT0gMyl9IHsKICAgICAgICB3cml0ZV9p
dCAiLmluIFtzZXQgbGFzdGluIDNdIgogICAgfQogICAgcmVnc3ViIC1hbGwgIlxcXFwiICRsaW5l
ICJcXFxcXFwiIGxpbmUKICAgIHJlZ3N1YiAtYWxsICIkbmJzcCIgJGxpbmUgIlxcXFwwIiBsaW5l
CiAgICBpZiB7W3N0cmluZyBmaXJzdCAiLiIgJGxpbmVdID09IDB9IHsKICAgICAgICBzZXQgbGlu
ZSAiXFwmJGxpbmUiCiAgICB9CiAgICB3cml0ZV9pdCAkbGluZQogICAgaW5jciBsaW5lbm8KICAg
IGlmIHskbGluZW5vID49IDUxfSB7CiAgICAgICAgZW5kX3BhZ2VfbnIKICAgIH0KfQoKCiMKIyBs
b3ctbGV2ZWwgZm9ybWF0dGluZwojCgoKZ2xvYmFsIGNvbnRhY3RzCgpzZXQgY29udGFjdHMgeyB7
cGhvbmUgUGhvbmV9IHtmYWNzaW1pbGUgRmF4fSB7ZW1haWwgRU1haWx9IHt1cmkgVVJJfSB9CgoK
Z2xvYmFsIGJ1ZmZlciBpbmRlbnQKCnNldCBidWZmZXIgIiIKc2V0IGluZGVudCAzCnNldCBpbmRl
bnRzIHt9CgpnbG9iYWwgcmZjVHh0SG9tZSBpZFR4dEhvbWUKCnNldCByZmNUeHRIb21lIGZ0cDov
L2Z0cC5pc2kuZWR1L2luLW5vdGVzCnNldCBpZFR4dEhvbWUgaHR0cDovL3d3dy5pZXRmLm9yZy9p
bnRlcm5ldC1kcmFmdHMKCgpnbG9iYWwgb2VudGl0aWVzCgojICZhbXA7IG11c3QgYWx3YXlzIGJl
IGxhc3QuLi4Kc2V0IG9lbnRpdGllcyB7IHsmbHQ7fSAgICAgezx9IHsmZ3Q7fSAgez59CiAgICAg
ICAgICAgICAgICB7JmFwb3M7fSAgIHsnfSB7JnF1b3Q7fSB7In0KICAgICAgICAgICAgICAgIHsm
IzgyMTE7fSAgey19IHsmIzE1MTt9IHstLX0KICAgICAgICAgICAgICAgIHsmZW5kYXNoO30gey19
IHsmZW1kYXNoO30gey0tfQogICAgICAgICAgICAgICAgeyZhbXA7fSB7XCZ9IH0KCgpwcm9jIHB1
c2hfaW5kZW50IHtwb3N9IHsKICAgIGdsb2JhbCBpbmRlbnQgaW5kZW50cwoKICAgIGxhcHBlbmQg
aW5kZW50cyAkcG9zCiAgICBpbmNyIGluZGVudCAkcG9zCn0KCnByb2MgcG9wX2luZGVudCB7fSB7
CiAgICBnbG9iYWwgaW5kZW50IGluZGVudHMKCiAgICBzZXQgcG9zIFtsaW5kZXggJGluZGVudHMg
ZW5kXQogICAgaW5jciBpbmRlbnQgLSRwb3MKICAgIHNldCBpbmRlbnRzIFtscmVwbGFjZSAkaW5k
ZW50cyBlbmQgZW5kXQoKICAgIHJldHVybiAkcG9zCn0KCnByb2MgZmx1c2hfdGV4dCB7fSB7CiAg
ICBnbG9iYWwgYnVmZmVyCiAgICBnbG9iYWwgbW9kZQogICAgZ2xvYmFsIGluZGVudHMgaW5kZW50
IGxhc3RpbgoKICAgIGlmIHtbc3RyaW5nIGNvbXBhcmUgJGJ1ZmZlciAiIl19IHsKICAgICAgICBz
ZXQgcmVzdCAkYnVmZmVyCiAgICAgICAgc2V0IGJ1ZmZlciAiIgogICAgICAgIGlmIHtbc3RyaW5n
IGNvbXBhcmUgJG1vZGUgdHh0XX0gewogICAgICAgICAgICBzZXQgcmVzdCBbc3RyaW5nIHRyaW0g
JHJlc3RdCiAgICAgICAgfQogICAgICAgIHdyaXRlX2xpbmVfJG1vZGUgJHJlc3QKICAgIH0KfQoK
cHJvYyBtdW5nZV9sb25nIHtsaW5lc30gewogICAgZ2xvYmFsIG1vZGUKCiAgICBzZXQgcmVzdWx0
ICIiCgogICAgZm9yZWFjaCBidWZmZXIgJGxpbmVzIHsKICAgICAgICBzZXQgbGlua1AgMAogICAg
ICAgIGlmIHsoIVtzdHJpbmcgY29tcGFyZSAkbW9kZSBodG1sXSkgXAogICAgICAgICAgICAgICAg
JiYgKChbc3RyaW5nIG1hdGNoIE9ic29sZXRlczoqICRidWZmZXJdKQogICAgICAgICAgICAgICAg
ICAgICAgICB8fCAoW3N0cmluZyBtYXRjaCBVcGRhdGVzOiogJGJ1ZmZlcl0pKX0gewogICAgICAg
ICAgICBzZXQgbGlua1AgMQogICAgICAgIH0KICAgICAgICB3aGlsZSB7W3NldCBpIFtzdHJpbmcg
bGVuZ3RoICRidWZmZXJdXSA+IDM0fSB7CiAgICAgICAgICAgIHNldCBsaW5lIFtzdHJpbmcgcmFu
Z2UgJGJ1ZmZlciAwIDM0XQogICAgICAgICAgICBpZiB7W3NldCB4IFtzdHJpbmcgbGFzdCAiICIg
JGxpbmVdXSA8IDB9IHsKICAgICAgICAgICAgICAgIGlmIHtbc2V0IHggW3N0cmluZyBmaXJzdCAi
ICIgJGJ1ZmZlcl1dIDwgMH0gewogICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc2V0IGxpbmUgW3N0cmluZyByYW5nZSAk
YnVmZmVyIDAgW2V4cHIgJHgtMV1dCiAgICAgICAgICAgIGlmIHskbGlua1B9IHsKICAgICAgICAg
ICAgICAgIHNldCBsaW5lIFttdW5nZV9saW5lICRsaW5lXQogICAgICAgICAgICB9CiAgICAgICAg
ICAgIGxhcHBlbmQgcmVzdWx0ICRsaW5lCiAgICAgICAgICAgIHNldCBidWZmZXIgW3N0cmluZyB0
cmltbGVmdCBbc3RyaW5nIHJhbmdlICRidWZmZXIgJHggZW5kXV0KICAgICAgICB9CgogICAgICAg
IGlmIHskbGlua1B9IHsKICAgICAgICAgICAgc2V0IGJ1ZmZlciBbbXVuZ2VfbGluZSAkYnVmZmVy
XQogICAgICAgIH0KICAgICAgICBsYXBwZW5kIHJlc3VsdCAkYnVmZmVyCiAgICB9CgogICAgcmV0
dXJuICRyZXN1bHQKfQoKcHJvYyBtdW5nZV9saW5lIHtsaW5lfSB7CiAgICBnbG9iYWwgcmZjVHh0
SG9tZQoKICAgIGlmIHtbc2V0IHkgW3N0cmluZyBmaXJzdCA6ICRsaW5lXV0gPj0gMH0gewogICAg
ICAgIHNldCBzdGFydCBbc3RyaW5nIHJhbmdlICRsaW5lIDAgJHldCiAgICAgICAgc2V0IGxpbmUg
W3N0cmluZyByYW5nZSAkbGluZSBbZXhwciAkeSsxXSBlbmRdCiAgICB9IGVsc2UgewogICAgICAg
IHNldCBzdGFydCAiIgogICAgfQoKICAgIHNldCBzICIiCiAgICBmb3JlYWNoIG4gW3NwbGl0ICRs
aW5lICxdIHsKICAgICAgICBzZXQgbiBbc3RyaW5nIHRyaW0gJG5dCiAgICAgICAgYXBwZW5kIHN0
YXJ0ICRzICI8YSBocmVmPSckcmZjVHh0SG9tZS9yZmMkbi50eHQnPiRuPC9hPiIKICAgICAgICBz
ZXQgcyAiLCAiCiAgICB9CgogICAgcmV0dXJuICRzdGFydAp9Cgpwcm9jIHdyaXRlX3VybCB7dXJs
fSB7CiAgICBnbG9iYWwgbW9kZQoKICAgIHdyaXRlX3RleHRfJG1vZGUgPCR1cmw+Cn0KCnByb2Mg
aGF2ZV9saW5lcyB7Y250fSB7CiAgICBnbG9iYWwgaGVhZGVyIGZvb3RlciBsaW5lbm8gcGFnZW5v
IGJsYW5rUAoKICAgIGlmIHsoJGNudCA8IDQwKSAmJiAoJGxpbmVubyskY250ID4gNTEpfSB7CiAg
ICAgICAgcmV0dXJuIDAKICAgIH0KICAgIHJldHVybiAxCn0KCnByb2Mgd3JpdGVfaXQge2xpbmV9
IHsKICAgIGdsb2JhbCBwYXNzbm8KICAgIGdsb2JhbCBvcHRpb25zCiAgICBnbG9iYWwgc3Rkb3V0
CiAgICBnbG9iYWwgaGVhZGVyIGZvb3RlciBsaW5lbm8gcGFnZW5vIGJsYW5rUAoKICAgIGlmIHso
ISRvcHRpb25zKC5UT0MpKSB8fCAoJHBhc3NubyA9PSAzKX0gewogICAgICAgIHB1dHMgJHN0ZG91
dCAkbGluZQogICAgfQp9Cgpwcm9jIGNoYXJzX2V4cGFuZCB7dGV4dCB7ZmxhdHRlbiAxfX0gewog
ICAgZ2xvYmFsIGVudGl0aWVzCgogICAgZm9yZWFjaCB7ZW50aXR5IGNoYXJzfSAkZW50aXRpZXMg
ewogICAgICAgIHJlZ3N1YiAtYWxsIC1ub2Nhc2UgJGVudGl0eSAkdGV4dCAkY2hhcnMgdGV4dAog
ICAgfQogICAgaWYgeyRmbGF0dGVufSB7CiAgICAgICAgcmVnc3ViIC1hbGwgIlxuXFsgXHRcXSoi
ICR0ZXh0ICIgIiB0ZXh0CiAgICB9CgogICAgcmV0dXJuICR0ZXh0Cn0KCgojCiMgeG1sMnJlZiBz
dXBwb3J0CiMKCm5hbWVzcGFjZSBldmFsIHJlZiB7CiAgICB2YXJpYWJsZSByZWYKICAgIGFycmF5
IHNldCByZWYgeyB1aWQgMCB9CgogICAgdmFyaWFibGUgcGFyc2VyIFt4bWw6OnBhcnNlcl0KCiAg
ICB2YXJpYWJsZSBjb250ZXh0CiAgICAjICAgICAgICAgICAgICBlbGVtZW50ICAgICAgIHZlcmJh
dGltICAgICAgICBiZWdpbkYgIGVuZEYKICAgIHNldCBjb250ZXh0IHsge2R1bW15Ly0xfQogICAg
ICAgICAgICAgICAgICB7cmZjLzAgICAgICAgICBubyAgICAgICAgICAgICAgeWVzICAgICB5ZXN9
CiAgICAgICAgICAgICAgICAgIHtmcm9udC8xfQogICAgICAgICAgICAgICAgICB7dGl0bGUvMn0K
ICAgICAgICAgICAgICAgICAge2F1dGhvci8yfQogICAgICAgICAgICAgICAgICB7b3JnYW5pemF0
aW9uLzN9CiAgICAgICAgICAgICAgICAgIHthZGRyZXNzLzN9CiAgICAgICAgICAgICAgICAgIHtw
b3N0YWwvNH0KICAgICAgICAgICAgICAgICAge3N0cmVldC81fQogICAgICAgICAgICAgICAgICB7
Y2l0eS81fQogICAgICAgICAgICAgICAgICB7cmVnaW9uLzV9CiAgICAgICAgICAgICAgICAgIHtj
b2RlLzV9CiAgICAgICAgICAgICAgICAgIHtjb3VudHJ5LzV9CiAgICAgICAgICAgICAgICAgIHtw
aG9uZS80fQogICAgICAgICAgICAgICAgICB7ZmFjc2ltaWxlLzR9CiAgICAgICAgICAgICAgICAg
IHtlbWFpbC80fQogICAgICAgICAgICAgICAgICB7dXJpLzR9CiAgICAgICAgICAgICAgICAgIHtk
YXRlLzJ9CiAgICAgICAgICAgICAgICAgIHthcmVhLzJ9CiAgICAgICAgICAgICAgICAgIHt3b3Jr
Z3JvdXAvMn0KICAgICAgICAgICAgICAgICAge2tleXdvcmQvMn0KICAgICAgICAgICAgICAgICAg
e2Fic3RyYWN0LzIgICAgeWVzfQogICAgICAgICAgICAgICAgICB7bm90ZS8yICAgICAgICB5ZXN9
CiAgICAgICAgICAgICAgICB9CgogICAgbmFtZXNwYWNlIGV4cG9ydCBpbml0IGZpbiB0cmFuc2Zv
cm0KfQoKcHJvYyByZWY6OmluaXQge30gewogICAgdmFyaWFibGUgcmVmCgogICAgc2V0IHRva2Vu
IFtuYW1lc3BhY2UgY3VycmVudF06OltpbmNyIHJlZih1aWQpXQoKICAgIHZhcmlhYmxlICR0b2tl
bgogICAgdXB2YXIgMCAkdG9rZW4gc3RhdGUKCiAgICBhcnJheSBzZXQgc3RhdGUge30KCiAgICBy
ZXR1cm4gJHRva2VuCn0KCnByb2MgcmVmOjpmaW4ge3Rva2VufSB7CiAgICB2YXJpYWJsZSAkdG9r
ZW4KICAgIHVwdmFyIDAgJHRva2VuIHN0YXRlCgogICAgZm9yZWFjaCBuYW1lIFthcnJheSBuYW1l
cyBzdGF0ZV0gewogICAgICAgIHVuc2V0IHN0YXRlKCRuYW1lKQogICAgfQogICAgdW5zZXQgJHRv
a2VuCn0KCnByb2MgcmVmOjp0cmFuc2Zvcm0ge3Rva2VuIGZpbGUge2Zvcm1hdHMge319fSB7CiAg
ICBnbG9iYWwgZXJyb3JDb2RlIGVycm9ySW5mbwoKICAgIHZhcmlhYmxlICR0b2tlbgogICAgdXB2
YXIgMCAkdG9rZW4gc3RhdGUKCiAgICBhcnJheSBzZXQgZW1wdHlBIHt9CgogICAgdmFyaWFibGUg
cGFyc2VyCiAgICAkcGFyc2VyIGNvbmZpZ3VyZSBcCiAgICAgICAgICAgIC1lbGVtZW50c3RhcnRj
b21tYW5kICAgICJyZWY6OmVsZW1lbnRfc3RhcnQgJHRva2VuIiBcCiAgICAgICAgICAgIC1lbGVt
ZW50ZW5kY29tbWFuZCAgICAgICJyZWY6OmVsZW1lbnRfZW5kICAgJHRva2VuIiBcCiAgICAgICAg
ICAgIC1jaGFyYWN0ZXJkYXRhY29tbWFuZCAgICJyZWY6OmNkYXRhICAgICAgICAgJHRva2VuIiBc
CiAgICAgICAgICAgIC1lbnRpdHlyZWZlcmVuY2Vjb21tYW5kICIiICAgICAgICAgICAgICAgICAg
ICAgICAgICBcCiAgICAgICAgICAgIC1lcnJvcmNvbW1hbmQgICAgICAgICAgIHJlZjo6b29wcyAg
ICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgIC1lbnRpdHl2YXJpYWJsZSAgICAgICAgIGVt
cHR5QSAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgIC1maW5hbCAgICAgICAgICAg
ICAgICAgIHllcyAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgIC1yZXBvcnRl
bXB0eSAgICAgICAgICAgIHllcwoKICAgIHNldCBmZCBbb3BlbiAkZmlsZSB7IFJET05MWSB9XQog
ICAgc2V0IGRhdGEgW3ByZXhtbCBbcmVhZCAkZmRdIFtmaWxlIGRpcm5hbWUgJGZpbGVdXQoKICAg
IGlmIHtbY2F0Y2ggeyBjbG9zZSAkZmQgfSByZXN1bHRdfSB7CiAgICAgICAgbG9nOjplbnRyeSAk
bG9nVCBzeXN0ZW0gJHJlc3VsdAogICAgfQoKICAgIHNldCBzdGF0ZShzdGFjaykgICAgIiIKICAg
IHNldCBzdGF0ZShib2R5KSAgICAgIiIKICAgIHNldCBzdGF0ZSh2ZXJiYXRpbSkgMAogICAgc2V0
IHN0YXRlKHNpbGVudCkgICAwCiAgICBzZXQgc3RhdGUoZm9ybWF0cykgICRmb3JtYXRzCgogICAg
c2V0IGNvZGUgW2NhdGNoIHsgJHBhcnNlciBwYXJzZSAkZGF0YSB9IHJlc3VsdF0KICAgIHNldCBl
Y29kZSAkZXJyb3JDb2RlCiAgICBzZXQgZWluZm8gJGVycm9ySW5mbwoKICAgIHN3aXRjaCAtLSAk
Y29kZSB7CiAgICAgICAgMCB7CiAgICAgICAgICAgIHNldCByZXN1bHQgJHN0YXRlKGJvZHkpCiAg
ICAgICAgfQoKICAgICAgICAxIHsKICAgICAgICAgICAgaWYge1tsbGVuZ3RoICRzdGF0ZShzdGFj
ayldID4gMH0gewogICAgICAgICAgICAgICAgc2V0IHRleHQgIkZpbGU6ICAgICRmaWxlXG5Db250
ZXh0OiAiCiAgICAgICAgICAgICAgICBmb3JlYWNoIGZyYW1lICRzdGF0ZShzdGFjaykgewogICAg
ICAgICAgICAgICAgICAgIGNhdGNoIHsgdW5zZXQgYXR0cnMgfQogICAgICAgICAgICAgICAgICAg
IGFwcGVuZCB0ZXh0ICJcbiAgICA8W2xpbmRleCAkZnJhbWUgMF0iCiAgICAgICAgICAgICAgICAg
ICAgZm9yZWFjaCB7ayB2fSBbbGluZGV4ICRmcmFtZSAxXSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgIHJlZ3N1YiAtYWxsIHsifSAkdiB7JnF1b3Q7fSB2CiAgICAgICAgICAgICAgICAgICAgICAg
IGFwcGVuZCB0ZXh0ICIgJGs9XCIkdlwiIgogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgICAgICBhcHBlbmQgdGV4dCAiPiIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
ICAgIGFwcGVuZCByZXN1bHQgIlxuXG4kdGV4dCIKICAgICAgICAgICAgfQogICAgICAgIH0KICAg
IH0KCiAgICB1bnNldCBzdGF0ZShzdGFjaykgICAgXAogICAgICAgICAgc3RhdGUoYm9keSkgICAg
IFwKICAgICAgICAgIHN0YXRlKHZlcmJhdGltKSBcCiAgICAgICAgICBzdGF0ZShzaWxlbnQpICAg
XAogICAgICAgICAgc3RhdGUoZm9ybWF0cykKCiAgICByZXR1cm4gLWNvZGUgJGNvZGUgLWVycm9y
aW5mbyAkZWluZm8gLWVycm9yY29kZSAkZWNvZGUgJHJlc3VsdAp9Cgpwcm9jIHJlZjo6ZWxlbWVu
dF9zdGFydCB7dG9rZW4gbmFtZSB7YXYge319IGFyZ3N9IHsKICAgIHZhcmlhYmxlICR0b2tlbgog
ICAgdXB2YXIgMCAkdG9rZW4gc3RhdGUKCiAgICB2YXJpYWJsZSBjb250ZXh0CgogICAgYXJyYXkg
c2V0IG9wdGlvbnMgW2xpc3QgLWVtcHR5IDBdCiAgICBhcnJheSBzZXQgb3B0aW9ucyAkYXJncwoK
ICAgIHNldCBkZXB0aCBbbGxlbmd0aCAkc3RhdGUoc3RhY2spXQoKICAgIGlmIHtbc2V0IGlkeCBb
bHNlYXJjaCAtZ2xvYiAkY29udGV4dCAkbmFtZS8kZGVwdGgqXV0gPj0gMH0gewogICAgICAgIHNl
dCBpbmZvIFtsaW5kZXggJGNvbnRleHQgJGlkeF0gCiAgICAgICAgaWYge1tzdHJpbmcgY29tcGFy
ZSBbbGluZGV4ICRpbmZvIDBdICRuYW1lLyRkZXB0aF19IHsKICAgICAgICAgICAgc2V0IGlkeCAt
MQogICAgICAgIH0gZWxzZWlmIHshW3N0cmluZyBjb21wYXJlIFtsaW5kZXggJGluZm8gMV0geWVz
XX0gewogICAgICAgICAgICBzZXQgc3RhdGUodmVyYmF0aW0pIDEKICAgICAgICB9CiAgICB9Cgog
ICAgc2V0IHN0YXRlKHNpbGVudCkgMAogICAgaWYgeygkaWR4IDwgMCkgJiYgKCRzdGF0ZSh2ZXJi
YXRpbSkpfSB7CiAgICAgICAgc2V0IGlkeCAwCiAgICAgICAgc2V0IGluZm8gIiIKICAgICAgICBp
ZiB7W2xzZWFyY2ggLWV4YWN0IHt4cmVmIGVyZWYgaXJlZiB2c3BhY2V9ICRuYW1lXSA+PSAwfSB7
CiAgICAgICAgICAgIHNldCBzdGF0ZShzaWxlbnQpIDEKICAgICAgICB9CiAgICB9CgogICAgaWYg
eyRpZHggPj0gMH0gewogICAgICAgIGlmIHshW3N0cmluZyBjb21wYXJlIFtsaW5kZXggJGluZm8g
Ml0geWVzXX0gewogICAgICAgICAgICByZWY6OnN0YXJ0XyRuYW1lICR0b2tlbiAkYXYKICAgICAg
ICB9IGVsc2VpZiB7ISRzdGF0ZShzaWxlbnQpfSB7CiAgICAgICAgICAgIGFwcGVuZCBzdGF0ZShi
b2R5KSAiXG48JG5hbWUiCiAgICAgICAgICAgIGZvcmVhY2gge24gdn0gJGF2IHsKICAgICAgICAg
ICAgICAgIHJlZ3N1YiAtYWxsIHsnfSAkdiB7XCZhcG9zO30gdgogICAgICAgICAgICAgICAgYXBw
ZW5kIHN0YXRlKGJvZHkpICIgJG49JyR2JyIKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiB7
JG9wdGlvbnMoLWVtcHR5KX0gewogICAgICAgICAgICAgICAgYXBwZW5kIHN0YXRlKGJvZHkpICIg
LyIKICAgICAgICAgICAgfQogICAgICAgICAgICBhcHBlbmQgc3RhdGUoYm9keSkgPgogICAgICAg
IH0KICAgIH0KCiAgICBsYXBwZW5kIHN0YXRlKHN0YWNrKSBbbGlzdCAkbmFtZSAkYXYgJGlkeCAi
Il0KfQoKcHJvYyByZWY6OmVsZW1lbnRfZW5kIHt0b2tlbiBuYW1lIGFyZ3N9IHsKICAgIHZhcmlh
YmxlICR0b2tlbgogICAgdXB2YXIgMCAkdG9rZW4gc3RhdGUKCiAgICB2YXJpYWJsZSBjb250ZXh0
CgogICAgYXJyYXkgc2V0IG9wdGlvbnMgW2xpc3QgLWVtcHR5IDBdCiAgICBhcnJheSBzZXQgb3B0
aW9ucyAkYXJncwoKICAgIHNldCBmcmFtZSBbbGluZGV4ICRzdGF0ZShzdGFjaykgZW5kXQogICAg
c2V0IHN0YXRlKHN0YWNrKSBbbHJlcGxhY2UgJHN0YXRlKHN0YWNrKSBlbmQgZW5kXQoKICAgIGlm
IHtbc2V0IGlkeCBbbGluZGV4ICRmcmFtZSAyXV0gPj0gMH0gewogICAgICAgIHNldCBpbmZvIFts
aW5kZXggJGNvbnRleHQgJGlkeF0KICAgICAgICBpZiB7IVtzdHJpbmcgY29tcGFyZSBbbGluZGV4
ICRpbmZvIDNdIHllc119IHsKICAgICAgICAgICAgcmVmOjplbmRfJG5hbWUgJHRva2VuICRmcmFt
ZQogICAgICAgIH0gZWxzZWlmIHshJHN0YXRlKHNpbGVudCkgJiYgISRvcHRpb25zKC1lbXB0eSl9
IHsKICAgICAgICAgICAgYXBwZW5kIHN0YXRlKGJvZHkpIDwvJG5hbWU+CiAgICAgICAgfQoKICAg
ICAgICBpZiB7IVtzdHJpbmcgY29tcGFyZSBbbGluZGV4ICRpbmZvIDFdIHllc119IHsKICAgICAg
ICAgICAgc2V0IHN0YXRlKHZlcmJhdGltKSAwCiAgICAgICAgfQogICAgfQogICAgc2V0IHN0YXRl
KHNpbGVudCkgMAp9Cgpwcm9jIHJlZjo6Y2RhdGEge3Rva2VuIHRleHR9IHsKICAgIHZhcmlhYmxl
ICR0b2tlbgogICAgdXB2YXIgMCAkdG9rZW4gc3RhdGUKCiAgICBpZiB7W3N0cmluZyBsZW5ndGgg
W3N0cmluZyB0cmltICR0ZXh0XV0gPD0gMH0gewogICAgICAgIHJldHVybgogICAgfQoKICAgIHNl
dCBmcmFtZSBbbGluZGV4ICRzdGF0ZShzdGFjaykgZW5kXQogICAgaWYge1tzZXQgaWR4IFtsaW5k
ZXggJGZyYW1lIDJdXSA8IDB9IHsKICAgICAgICByZXR1cm4KICAgIH0KCiAgICByZWdzdWIgLWFs
bCAiXHIiICR0ZXh0ICJcbiIgdGV4dAoKICAgIGFwcGVuZCBzdGF0ZShib2R5KSAkdGV4dAp9Cgpw
cm9jIHJlZjo6b29wcyB7YXJnc30gewogICAgcmV0dXJuIC1jb2RlIGVycm9yIFtqb2luICRhcmdz
ICIgIl0KfQoKcHJvYyByZWY6OnN0YXJ0X3JmYyB7dG9rZW4gYXZ9IHsKICAgIHZhcmlhYmxlICR0
b2tlbgogICAgdXB2YXIgMCAkdG9rZW4gc3RhdGUKCiAgICBhcnJheSBzZXQgcmZjIFtsaXN0IG9i
c29sZXRlcyAiIiB1cGRhdGVzICIiIGNhdGVnb3J5IGluZm8gc2VyaWVzTm8gIiJdCiAgICBhcnJh
eSBzZXQgcmZjICRhdgogICAgaWYge1tjYXRjaCB7IHNldCByZmMobnVtYmVyKSB9XX0gewogICAg
ICAgIHJlZjo6b29wcyAibWlzc2luZyBudW1iZXIgYXR0cmlidXRlIGluIHJmYyBlbGVtZW50Igog
ICAgfQoKICAgIHNldCBzdGF0ZShib2R5KSAiPD94bWwgdmVyc2lvbj0nMS4wJz8+CjwhRE9DVFlQ
RSByZWZlcmVuY2UgU1lTVEVNICdyZmMyNjI5LmR0ZCc+Cgo8cmVmZXJlbmNlIGFuY2hvcj0nUkZD
W2Zvcm1hdCAlMDRkICRyZmMobnVtYmVyKV0nPgoiCn0KCnByb2MgcmVmOjplbmRfcmZjIHt0b2tl
biBmcmFtZX0gewogICAgdmFyaWFibGUgJHRva2VuCiAgICB1cHZhciAwICR0b2tlbiBzdGF0ZQoK
ICAgIGFycmF5IHNldCByZmMgW2xpc3Qgb2Jzb2xldGVzICIiIHVwZGF0ZXMgIiIgY2F0ZWdvcnkg
aW5mbyBzZXJpZXNObyAiIl0KICAgIGFycmF5IHNldCByZmMgW2xpbmRleCAkZnJhbWUgMV0KCiAg
ICBhcHBlbmQgc3RhdGUoYm9keSkgIgoKIgogICAgaWYgeyhbc3RyaW5nIGNvbXBhcmUgW3NldCB4
ICRyZmMoY2F0ZWdvcnkpXSBpbmZvXSkgXAogICAgICAgICAgICAmJiAoW3N0cmluZyBjb21wYXJl
IFtzZXQgeSAkcmZjKHNlcmllc05vKV0gIiJdKX0gewogICAgICAgIGFwcGVuZCBzdGF0ZShib2R5
KSAiPHNlcmllc0luZm8gbmFtZT0nW3N0cmluZyB0b3VwcGVyICR4XScgIgogICAgICAgIGFwcGVu
ZCBzdGF0ZShib2R5KSAidmFsdWU9JyR5JyAvPgoiCiAgICB9CiAgICBhcHBlbmQgc3RhdGUoYm9k
eSkgIjxzZXJpZXNJbmZvIG5hbWU9J1JGQycgdmFsdWU9JyRyZmMobnVtYmVyKScgLz4KIgogICAg
Zm9yZWFjaCBmb3JtYXQgJHN0YXRlKGZvcm1hdHMpIHsKICAgICAgICBhcHBlbmQgc3RhdGUoYm9k
eSkgIjxmb3JtYXQiCiAgICAgICAgZm9yZWFjaCB7ayB2fSAkZm9ybWF0IHsKICAgICAgICAgICAg
YXBwZW5kIHN0YXRlKGJvZHkpICIgJGs9JyR2JyIKICAgICAgICB9CiAgICAgICAgYXBwZW5kIHN0
YXRlKGJvZHkpICIgLz4KIgogICAgfQogICAgYXBwZW5kIHN0YXRlKGJvZHkpICI8L3JlZmVyZW5j
ZT4KIgp9CgoKIwojIHRjbHNoL3dpc2ggbGlua2FnZQojCgoKZ2xvYmFsIGd1aVAKaWYge1tpbmZv
IGV4aXN0cyBndWlQXX0gewogICAgcmV0dXJuCn0Kc2V0IGd1aVAgMAppZiB7W2xsZW5ndGggJGFy
Z3ZdID4gMX0gewogICAgaWYge1tjYXRjaCB7IAogICAgICAgIHN3aXRjaCAtLSBbbGxlbmd0aCAk
YXJndl0gewogICAgICAgICAgICAyIHsKICAgICAgICAgICAgICAgIHNldCBmaWxlIFtsaW5kZXgg
JGFyZ3YgMV0KICAgICAgICAgICAgICAgIGlmIHshW3N0cmluZyBjb21wYXJlICR0Y2xfcGxhdGZv
cm0ocGxhdGZvcm0pIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3dzXX0gewog
ICAgICAgICAgICAgICAgICAgIHNldCBmICIiCiAgICAgICAgICAgICAgICAgICAgZm9yZWFjaCBj
IFtzcGxpdCAkZmlsZSAiIl0gewogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggLS0gJGMg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxcIiB7IGFwcGVuZCBmICJcXFxcIiB9CiAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcYSIgeyBhcHBlbmQgZiAiXFxhIiB9CiAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcYiIgeyBhcHBlbmQgZiAiXFxiIiB9CiAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcZiIgeyBhcHBlbmQgZiAiXFxmIiB9CiAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbiIgeyBhcHBlbmQgZiAiXFxuIiB9CiAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcciIgeyBhcHBlbmQgZiAiXFxyIiB9CiAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcdiIgeyBhcHBlbmQgZiAiXFx2IiB9CiAg
ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgewogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZCBmICRjCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgc2V0IGZpbGUgJGYKICAgICAgICAgICAgICAgIH0KICAgIAogICAgICAgICAg
ICAgICAgZXZhbCBbZmlsZSB0YWlsIFtmaWxlIHJvb3RuYW1lIFtsaW5kZXggJGFyZ3YgMF1dXSBc
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICRmaWxlCiAgICAgICAgICAgIH0KICAgIAogICAg
ICAgICAgICAzIHsKICAgICAgICAgICAgICAgIHhtbDJyZmMgW2xpbmRleCAkYXJndiAxXSBbbGlu
ZGV4ICRhcmd2IDJdCiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9IHJlc3VsdF19IHsKICAg
ICAgICBpZiB7W2luZm8gZXhpc3RzIHRrX3ZlcnNpb25dfSB7CiAgICAgICAgICAgIGJnZXJyb3Ig
JHJlc3VsdAogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHB1dHMgc3RkZXJyICRyZXN1bHQK
ICAgICAgICB9CiAgICB9CgogICAgZXhpdCAwCn0gZWxzZWlmIHshW2luZm8gZXhpc3RzIHRrX3Zl
cnNpb25dfSB7CiAgICBpZiB7JHRjbF9pbnRlcmFjdGl2ZX0gewogICAgICAgIHNldCBndWlQIC0x
CiAgICAgICAgcHV0cyBzdGRvdXQgIiIKICAgICAgICBwdXRzIHN0ZG91dCAiaW52b2tlIGFzIFwi
eG1sMnJmYyAgIGlucHV0LWZpbGUgb3V0cHV0LWZpbGVcIiIKICAgICAgICBwdXRzIHN0ZG91dCAi
ICAgICAgIG9yIFwieG1sMnR4dCAgIGlucHV0LWZpbGVcIiIKICAgICAgICBwdXRzIHN0ZG91dCAi
ICAgICAgIG9yIFwieG1sMmh0bWwgIGlucHV0LWZpbGVcIiIKICAgICAgICBwdXRzIHN0ZG91dCAi
ICAgICAgIG9yIFwieG1sMm5yb2ZmIGlucHV0LWZpbGVcIiIKICAgIH0KfSBlbHNlIHsKICAgIHNl
dCBndWlQIDEKCiAgICBwcm9jIGNvbnZlcnQge3d9IHsKICAgICAgICBnbG9iYWwgdGNsX3BsYXRm
b3JtCgogICAgICAgIGlmIHshW3N0cmluZyBjb21wYXJlIFtzZXQgaW5wdXQgWy5pbnB1dC5lbnQg
Z2V0XV0gIiJdfSB7CiAgICAgICAgICAgIHRrX2RpYWxvZyAuZXJyb3IgInhtbDJyZmM6IG9vcHMh
IiAibm8gaW5wdXQgZmlsZW5hbWUgc3BlY2lmaWVkIiBcCiAgICAgICAgICAgICAgICAgICAgICBl
cnJvciAwIE9LCiAgICAgICAgICAgIHJldHVybgogICAgICAgIH0KICAgICAgICBzZXQgb3V0cHV0
IFsub3V0cHV0LmVudCBnZXRdCgogICAgICAgIGlmIHtbY2F0Y2ggeyB4bWwycmZjICRpbnB1dCAk
b3V0cHV0IH0gcmVzdWx0XX0gewogICAgICAgICAgICB0a19kaWFsb2cgLmVycm9yICJ4bWwycmZj
OiBvb3BzISIgJHJlc3VsdCBlcnJvciAwIE9LCiAgICAgICAgfSBlbHNlaWYgeyFbc3RyaW5nIGNv
bXBhcmUgJHRjbF9wbGF0Zm9ybShwbGF0Zm9ybSkgd2luZG93c119IHsKICAgICAgICAgICAgdGtf
ZGlhbG9nIC5vayB4bWwycmZjICJGaW5pc2hlZC4iICIiIDAgT0sKICAgICAgICB9CiAgICB9Cgog
ICAgcHJvYyBmaWxlRGlhbG9nIHt3IGVudCBvcGVyYXRpb259IHsKICAgICAgICBzZXQgaW5wdXQg
ewogICAgICAgICAgICB7IlhNTCBmaWxlcyIgICAgICAgICAgICAgICAgLnhtbCAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICB7IkFsbCBmaWxlcyIgICAgICAgICAgICAgICAgKiAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBzZXQgb3V0cHV0IHsKICAgICAg
ICAgICAgeyJUZVhUIGZpbGVzIiAgICAgICAgICAgICAgIC50eHQgICAgICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgeyJIVE1MIGZpbGVzIiAgICAgICAgICAgICAgIC5odG1sICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgeyJOUm9mZiBmaWxlcyIgICAgICAgICAgICAgIC5uciAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgeyFbc3RyaW5nIGNvbXBh
cmUgJG9wZXJhdGlvbiAiaW5wdXQiXX0gewogICAgICAgICAgICBzZXQgZmlsZSBbdGtfZ2V0T3Bl
bkZpbGUgLWZpbGV0eXBlcyAkaW5wdXQgLXBhcmVudCAkd10KICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICBpZiB7W2NhdGNoIHsgc2V0IGlucHV0IFsuaW5wdXQuZW50IGdldF0gfV19IHsKICAg
ICAgICAgICAgICAgIHNldCBpbnB1dCBVbnRpdGxlZAogICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgc2V0IGlucHV0IFtmaWxlIHJvb3RuYW1lICRpbnB1dF0KICAgICAgICAgICAg
fQogICAgICAgICAgICBzZXQgZmlsZSBbdGtfZ2V0U2F2ZUZpbGUgLWZpbGV0eXBlcyAkb3V0cHV0
IC1wYXJlbnQgJHcgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLWluaXRpYWxmaWxlICRp
bnB1dCAtZGVmYXVsdGV4dGVuc2lvbiAudHh0XQogICAgICAgIH0KICAgICAgICBpZiBbc3RyaW5n
IGNvbXBhcmUgJGZpbGUgIiJdIHsKICAgICAgICAgICAgJGVudCBkZWxldGUgMCBlbmQKICAgICAg
ICAgICAgJGVudCBpbnNlcnQgMCAkZmlsZQogICAgICAgICAgICAkZW50IHh2aWV3IGVuZAogICAg
ICAgIH0KICAgIH0KCiAgICBldmFsIGRlc3Ryb3kgW3dpbmZvIGNoaWxkIC5dCgogICAgd20gdGl0
bGUgLiB4bWwycmZjCiAgICB3bSBpY29ubmFtZSAuIHhtbDJyZmMKICAgIHdtIGdlb21ldHJ5IC4g
KzMwMCszMDAKCiAgICBsYWJlbCAubXNnIC1mb250ICJIZWx2ZXRpY2EgMTQiIC13cmFwbGVuZ3Ro
IDRpIC1qdXN0aWZ5IGxlZnQgXAogICAgICAgICAgLXRleHQgIkNvbnZlcnQgWE1MIHRvIFJGQyIK
ICAgIHBhY2sgLm1zZyAtc2lkZSB0b3AKCiAgICBmcmFtZSAuYnV0dG9ucwogICAgcGFjayAuYnV0
dG9ucyAtc2lkZSBib3R0b20gLWZpbGwgeCAtcGFkeSAybQogICAgcGFjayBcCiAgICAgICAgW2J1
dHRvbiAuYnV0dG9ucy5jb2RlIC10ZXh0IENvbnZlcnQgLWNvbW1hbmQgImNvbnZlcnQgLiJdIFwK
ICAgICAgICBbYnV0dG9uIC5idXR0b25zLmRpc21pc3MgLXRleHQgUXVpdCAtY29tbWFuZCAiZGVz
dHJveSAuIl0gXAogICAgICAgIC1zaWRlIGxlZnQgLWV4cGFuZCAxCiAgICAKICAgIGZvcmVhY2gg
aSB7aW5wdXQgb3V0cHV0fSB7CiAgICAgICAgc2V0IGYgW2ZyYW1lIC4kaV0KICAgICAgICBsYWJl
bCAkZi5sYWIgLXRleHQgIlNlbGVjdCAkaSBmaWxlOiAiIC1hbmNob3IgZSAtd2lkdGggMjAKICAg
ICAgICBlbnRyeSAkZi5lbnQgLXdpZHRoIDIwCiAgICAgICAgYnV0dG9uICRmLmJ1dCAtdGV4dCAi
QnJvd3NlIC4uLiIgLWNvbW1hbmQgImZpbGVEaWFsb2cgLiAkZi5lbnQgJGkiCiAgICAgICAgcGFj
ayAkZi5sYWIgLXNpZGUgbGVmdAogICAgICAgIHBhY2sgJGYuZW50IC1zaWRlIGxlZnQgLWV4cGFu
ZCB5ZXMgLWZpbGwgeAogICAgICAgIHBhY2sgJGYuYnV0IC1zaWRlIGxlZnQKICAgICAgICBwYWNr
ICRmIC1maWxsIHggLXBhZHggMWMgLXBhZHkgMwogICAgfQp9Cg==

--Multipart_Mon__11_Nov_2002_16:10:05_-0800_0881f400--


From: GK@NineByNine.org (Graham Klyne)
Date: Mon, 11 Nov 2002 19:34:24 +0000
Subject: [xml2rfc] A modest suggestion
Message-ID: <5.1.0.14.2.20021111192640.00a51ec0@127.0.0.1>

I'm using XML2RFC to generate some documents that are not destined to be 
RFCs or I-Ds.  I very much appreciate:
(a) the focus on content rather than presentation, and
(b) the bibliography libraries that make reference generation so much less 
work.

But, I would like to be able to embed the occasional diagram in my documents.

My suggestion is this, adapting the example from [1]:

     <figure anchor="figure_example">
         <preamble>So,
         putting it all together, we have, e.g.,</preamble>
         <artwork img="uri" alt="some text">
             ascii artwork goes here...

             be sure to use "&lt;" or "&amp;" instead of "<" and "&",
             respectively!
         </artwork>
         <postamble>which is a very simple example.</postamble>
     </figure>

My thought is that when generating HTML, if the img= attribute is present 
then instead of outputting the ASCII art, something like:

     <img src="uri" alt="some text" />

would be generated in the output.  (The alt='...' value would be optional, 
and inlcuded in the <img...> element iff present in the source file 
<artwork...> element.

#g
--

[1] file://localhost/F:/xml2rfc/rfc2629-bis.html#figure


-------------------
Graham Klyne
<GK@NineByNine.org>



From: swb@employees.org (Scott W Brim)
Date: Mon, 11 Nov 2002 09:15:39 -0500
Subject: [xml2rfc] shorter refs to i-ds
References: <E18Ay4w-000AhW-00@rip.psg.com> <20021110132659.1369578a.mrose+internet.xml2rfc@dbc.mtview.ca.us> <E18B1bE-000GHA-00@rip.psg.com> <20021110163748.7b489dc4.mrose@dbc.mtview.ca.us> <5.1.0.14.2.20021111083333.04373240@127.0.0.1>
Message-ID: <00f701c2898d$3c9a89b0$6401a8c0@amer.cisco.com>

On Monday, November 11, 2002 3:35 AM -0500,
Graham Klyne <GK@ninebynine.org> allegedly wrote:
> A maybe simpler suggestion:  if the reference tag is longer than some
> length (say 12-16 chars), wrap the following text to a new line?

... with a refLengthThreshold <?rfc> statement, perhaps?

I think this is the best approach.  Even with a regexp, it's going to be
hard to get the ref length under control.  For a nice consistent
presentation you could set the length threshold to 0.

...Scott



From: randy@psg.com (Randy Bush)
Date: Mon, 11 Nov 2002 04:49:54 -0800
Subject: [xml2rfc] shorter refs to i-ds
References: <E18Ay4w-000AhW-00@rip.psg.com> <20021110132659.1369578a.mrose+internet.xml2rfc@dbc.mtview.ca.us> <E18B1bE-000GHA-00@rip.psg.com> <20021110163748.7b489dc4.mrose@dbc.mtview.ca.us> <5.1.0.14.2.20021111083333.04373240@127.0.0.1>
Message-ID: <E18BE0n-000AUL-00@rip.psg.com>

> A maybe simpler suggestion:  if the reference tag is longer than some 
> length (say 12-16 chars), wrap the following text to a new line?
> 
>     [I-D.ietf-ipngwg-addr-arch-v3]
>                     Gupta, M. and S. Deering, "IP Version
>                     6 Addressing Architecture", draft-
>                     ietf-ipngwg-addr-arch-v3-11 (work in
>                     progress), October 2002.
> 
>     [RFC2434]       Narten, T. and H. Alvestrand,
>                     "Guidelines for Writing an IANA
>                     Considerations Section in RFCs", BCP
>                     26, RFC 2434, October 1998.

works for me

> (I'm guessing that most I-D refs will become RFCs in the lifetime of a 
> draft, so any problem sort-of dissipates.)

while this is true for normative references, it need not be the
case for informative ones.

randy



From: GK@ninebynine.org (Graham Klyne)
Date: Mon, 11 Nov 2002 08:35:56 +0000
Subject: [xml2rfc] shorter refs to i-ds
In-Reply-To: <E18B2hX-000I7X-00@rip.psg.com>
References: <E18Ay4w-000AhW-00@rip.psg.com> <20021110132659.1369578a.mrose+internet.xml2rfc@dbc.mtview.ca.us> <E18B1bE-000GHA-00@rip.psg.com> <20021110163748.7b489dc4.mrose@dbc.mtview.ca.us>
Message-ID: <5.1.0.14.2.20021111083333.04373240@127.0.0.1>

A maybe simpler suggestion:  if the reference tag is longer than some 
length (say 12-16 chars), wrap the following text to a new line?

E.g.

[[
    [I-D.ietf-ipngwg-addr-arch-v3]
                    Gupta, M. and S. Deering, "IP Version
                    6 Addressing Architecture", draft-
                    ietf-ipngwg-addr-arch-v3-11 (work in
                    progress), October 2002.

    [RFC2434]       Narten, T. and H. Alvestrand,
                    "Guidelines for Writing an IANA
                    Considerations Section in RFCs", BCP
                    26, RFC 2434, October 1998.
]]

(I'm guessing that most I-D refs will become RFCs in the lifetime of a 
draft, so any problem sort-of dissipates.)

#g
--

At 04:45 PM 11/10/02 -0800, Randy Bush wrote:
> >> - provide a way of mapping the anchor strings within the main
> >>   document, e.g.,
> >>     <?rfc anchormap='%I-D\.ietf-(*)%\1%'?>
> >>   which would give you
> >>     [ipngwg-addr-arch-v3]  Gupta, M. ...
> >
> > so, do you want me to implement the regexp-based subsitution
> > mechanism?
>
>well, let's see if anyone else is enamoured of it.  i hate to create
>work that has narrow use.
>
>randy
>
>_______________________________________________
>xml2rfc mailing list
>xml2rfc@lists.xml.resource.org
>http://lists.xml.resource.org/mailman/listinfo/xml2rfc

-------------------
Graham Klyne
<GK@NineByNine.org>



From: randy@psg.com (Randy Bush)
Date: Sun, 10 Nov 2002 16:45:15 -0800
Subject: [xml2rfc] shorter refs to i-ds
References: <E18Ay4w-000AhW-00@rip.psg.com> <20021110132659.1369578a.mrose+internet.xml2rfc@dbc.mtview.ca.us> <E18B1bE-000GHA-00@rip.psg.com> <20021110163748.7b489dc4.mrose@dbc.mtview.ca.us>
Message-ID: <E18B2hX-000I7X-00@rip.psg.com>

>> - provide a way of mapping the anchor strings within the main
>>   document, e.g.,
>>     <?rfc anchormap='%I-D\.ietf-(*)%\1%'?>
>>   which would give you
>>     [ipngwg-addr-arch-v3]  Gupta, M. ...
> 
> so, do you want me to implement the regexp-based subsitution
> mechanism?

well, let's see if anyone else is enamoured of it.  i hate to create
work that has narrow use.

randy



From: mrose@dbc.mtview.ca.us (Marshall Rose)
Date: Sun, 10 Nov 2002 16:37:48 -0800
Subject: [xml2rfc] shorter refs to i-ds
In-Reply-To: <E18B1bE-000GHA-00@rip.psg.com>
References: <E18Ay4w-000AhW-00@rip.psg.com> <20021110132659.1369578a.mrose+internet.xml2rfc@dbc.mtview.ca.us> <E18B1bE-000GHA-00@rip.psg.com>
Message-ID: <20021110163748.7b489dc4.mrose@dbc.mtview.ca.us>

> > - provide a way of mapping the anchor strings within the main
> >   document, e.g.,
> >     <?rfc anchormap='%I-D\.ietf-(*)%\1%'?>
> >   which would give you
> >     [ipngwg-addr-arch-v3]  Gupta, M. ...
> 
> sure.  better.  or, to be grotty
> 
>    this is some document text which has an embedded reference
>    <xref target="I-D.ietf-ipngwg-addr-arch-v3"></xref> in it.
> ...
> <references>
>   <?rfc include="reference.I-D.ietf-ipngwg-addr-arch-v3" label="foo" ?>
>   </references>
> 
> producing
> 
>    [foo]    Gupta, M. and S. Deering, "IP Version 6 Addressing
> 	    Architecture", draft- ietf-ipngwg-addr-arch-v3-11 
> 	    (work in progress), October 2002.

unfortunately, the architecture of xml2rfc does the include
processing before any xml processing actually occurs, so it's not
easy to modify the "<?rfc include" mechanism.
    
so, do you want me to implement the regexp-based subsitution
mechanism?
    
/mtr
    


From: randy@psg.com (Randy Bush)
Date: Sun, 10 Nov 2002 15:34:40 -0800
Subject: [xml2rfc] shorter refs to i-ds
References: <E18Ay4w-000AhW-00@rip.psg.com> <20021110132659.1369578a.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <E18B1bE-000GHA-00@rip.psg.com>

> well, this is tricky, because the goal here is to provide a global
> bibliographic database, which means that we don't want the anchor to be
> conflict with something else.

understand.  but one can differentiate between how the document is
referenced and how the reference is displayed.

> - leave the anchor alone have the amount of indentation be specific
>   to each reference.

not pretty

> - provide a way of mapping the anchor strings within the main
>   document, e.g.,
>     <?rfc anchormap='%I-D\.ietf-(*)%\1%'?>
>   which would give you
>     [ipngwg-addr-arch-v3]  Gupta, M. ...

sure.  better.  or, to be grotty

   this is some document text which has an embedded reference
   <xref target="I-D.ietf-ipngwg-addr-arch-v3"></xref> in it.
...
<references>
  <?rfc include="reference.I-D.ietf-ipngwg-addr-arch-v3" label="foo" ?>
  </references>

producing

   [foo]    Gupta, M. and S. Deering, "IP Version 6 Addressing
	    Architecture", draft- ietf-ipngwg-addr-arch-v3-11 
	    (work in progress), October 2002.

randy



From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Sun, 10 Nov 2002 13:26:59 -0800
Subject: [xml2rfc] shorter refs to i-ds
In-Reply-To: <E18Ay4w-000AhW-00@rip.psg.com>
References: <E18Ay4w-000AhW-00@rip.psg.com>
Message-ID: <20021110132659.1369578a.mrose+internet.xml2rfc@dbc.mtview.ca.us>

> in
> 
>    [I-D.ietf-ipngwg-addr-arch-v3]  Gupta, M. and S. Deering, "IP Version
>                                    6 Addressing Architecture", draft-
>                                    ietf-ipngwg-addr-arch-v3-11 (work in
>                                    progress), October 2002.
> 
>    [RFC2434]                       Narten, T. and H. Alvestrand,
>                                    "Guidelines for Writing an IANA
>                                    Considerations Section in RFCs", BCP
>                                    26, RFC 2434, October 1998.
> 
> the first reference shoves everything else to the right.  is there
> a way to get more abbreviated references to i-ds only?  i do not
> like the result of <?rfc symrefs="no" ?>
> 
> like how about at least getting rid of the "I-D."?

well, this is tricky, because the goal here is to provide a global
bibliographic database, which means that we don't want the anchor to be
conflict with something else.
    
i suppose there are possibilities:
    
    - leave the anchor alone have the amount of indentation be specific
      to each reference.
    
    - provide a way of mapping the anchor strings within the main
      document, e.g.,
    
        <?rfc anchormap='%I-D\.ietf-(*)%\1%'?>
    
      which would give you
    
	[ipngwg-addr-arch-v3]	Gupta, M. ...
    
comments?
    
/mtr


From: randy@psg.com (Randy Bush)
Date: Sun, 10 Nov 2002 11:49:07 -0800
Subject: [xml2rfc] shorter refs to i-ds
Message-ID: <E18Ay4w-000AhW-00@rip.psg.com>

in

   [I-D.ietf-ipngwg-addr-arch-v3]  Gupta, M. and S. Deering, "IP Version
                                   6 Addressing Architecture", draft-
                                   ietf-ipngwg-addr-arch-v3-11 (work in
                                   progress), October 2002.

   [RFC2434]                       Narten, T. and H. Alvestrand,
                                   "Guidelines for Writing an IANA
                                   Considerations Section in RFCs", BCP
                                   26, RFC 2434, October 1998.

the first reference shoves everything else to the right.  is there
a way to get more abbreviated references to i-ds only?  i do not
like the result of <?rfc symrefs="no" ?>

like how about at least getting rid of the "I-D."?

randy



From: randy@psg.com (Randy Bush)
Date: Sun, 10 Nov 2002 11:03:16 -0800
Subject: [xml2rfc] out of date i-d archive
References: <3DCDE6F6.8070009@psg.com> <20021110104035.0f00330e.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <E18AxMZ-0009SB-00@rip.psg.com>

> well, my remote directory is in sync and has -11. so, try this:

i did that earlier this morning and it worked.  no, i do not know
why.

btw, any chance for an rsync server?

and, once again, thanks for xml2rfc.  i did two drafts last eve,
and it was great!

randy



From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Sun, 10 Nov 2002 10:40:35 -0800
Subject: [xml2rfc] out of date i-d archive
In-Reply-To: <3DCDE6F6.8070009@psg.com>
References: <3DCDE6F6.8070009@psg.com>
Message-ID: <20021110104035.0f00330e.mrose+internet.xml2rfc@dbc.mtview.ca.us>

> i update my references archives with
> 
> cd /usr/home/randy/refs/rfc
> wget -r -l 1 -A .xml -nd -nc http://xml.resource.org/public/rfc/bibxml/
> cd ../id
> 
> 
> the i-d archive has reference.I-D.ietf-ipngwg-addr-arch-v3.xml, but it 
> points to -08.txt while the current internet-drafts directory has -11.txt.
> 
> i demand a full refund!  :-)
> 
> well, i'll settle for a clue.  thanks.

well, my remote directory is in sync and has -11. so, try this:
    
% cd /usr/home/randy/refs
% mv id id.old
% mkdir id
% cd id
% wget -r -l 1 -A .xml -nd -nc http://xml.resource.org/public/rfc/bibxml3/
% cd ..
% diff -r id.old id
    
/mtr

ps: no, i don't know why wget has you out of sync.


From: randy@psg.com (Randy Bush)
Date: Sat, 09 Nov 2002 20:59:01 -0800
Subject: [xml2rfc] url in reference
References: <3DCDE2A2.6090803@psg.com> <3dcfe731.34541698@smtp.bjoern.hoehrmann.de>
Message-ID: <E18AkBZ-000EnE-00@rip.psg.com>

> <reference target='...' ...

sweet!  thanks.

randy



From: derhoermi@gmx.net (Bjoern Hoehrmann)
Date: Sun, 10 Nov 2002 05:57:25 +0100
Subject: [xml2rfc] url in reference
In-Reply-To: <3DCDE2A2.6090803@psg.com>
References: <3DCDE2A2.6090803@psg.com>
Message-ID: <3dcfe731.34541698@smtp.bjoern.hoehrmann.de>

* Randy Bush wrote:
>how do i put a URL in a reference?  i tried
>
>         </author>
>         <date month="October" year="2002" />
>         <url>http://www.blah-blah-blah</url>
>         </front>
>     </reference>

<reference target='...' ...


From: randy@psg.com (Randy Bush)
Date: Sat, 09 Nov 2002 20:56:22 -0800
Subject: [xml2rfc] out of date i-d archive
Message-ID: <3DCDE6F6.8070009@psg.com>

i update my references archives with

cd /usr/home/randy/refs/rfc
wget -r -l 1 -A .xml -nd -nc http://xml.resource.org/public/rfc/bibxml/
cd ../id
wget -r -l 1 -A .xml -nd -nc http://xml.resource.org/public/rfc/bibxml3/

the i-d archive has reference.I-D.ietf-ipngwg-addr-arch-v3.xml, but it 
points to -08.txt while the current internet-drafts directory has -11.txt.

i demand a full refund!  :-)

well, i'll settle for a clue.  thanks.

randy



From: randy@psg.com (Randy Bush)
Date: Sat, 09 Nov 2002 20:37:54 -0800
Subject: [xml2rfc] url in reference
Message-ID: <3DCDE2A2.6090803@psg.com>

i actually searched the archive.  but the archive search tools are not 
great, ...

how do i put a URL in a reference?  i tried

         </author>
         <date month="October" year="2002" />
         <url>http://www.blah-blah-blah</url>
         </front>
     </reference>

but no go

randy



From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Thu, 7 Nov 2002 08:57:41 -0800
Subject: [xml2rfc] w3c bibliographic database
In-Reply-To: <033601c2866f$05b205c0$6401a8c0@amer.cisco.com>
References: <20021106152558.222a828b.mrose+internet.xml2rfc@dbc.mtview.ca.us> <033601c2866f$05b205c0$6401a8c0@amer.cisco.com>
Message-ID: <20021107085741.54a94f72.mrose+internet.xml2rfc@dbc.mtview.ca.us>

> What was bibxml2?

bibxml = rfc series
bibxml2 = various iso/itu/ccitt/w3c/etc. things that were built by hand
bibxml3 = i-d repository
bibxml4 = w3c repository

in general, the things in bibxml2 got put there if they were used by 3 or more
rfcs written before rfc 2800. (a few years ago, i hired a contractor to take the
.txt files and convert the front- and back-matter to xml. most of the files you
see in bibxml2 were the by-product of that work.)

/mtr


From: swb@employees.org (Scott W Brim)
Date: Thu, 7 Nov 2002 10:01:47 -0500
Subject: [xml2rfc] w3c bibliographic database
References: <20021106152558.222a828b.mrose+internet.xml2rfc@dbc.mtview.ca.us>
Message-ID: <033601c2866f$05b205c0$6401a8c0@amer.cisco.com>

What was bibxml2?


From: mrose+internet.xml2rfc@dbc.mtview.ca.us (Marshall Rose)
Date: Wed, 6 Nov 2002 15:25:58 -0800
Subject: [xml2rfc] w3c bibliographic database
Message-ID: <20021106152558.222a828b.mrose+internet.xml2rfc@dbc.mtview.ca.us>

hi. the w3c has kindly provided an rdf-based bibliography that is regularly
updated, so i've modified the scripts here to get the file and create biblio
files in the 2629 format:

	http://xml.resource.org/public/rfc/bibxml4/browse.html

/mtr

