<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>21475</bug_id>
          
          <creation_ts>2008-10-08 10:07:23 -0700</creation_ts>
          <short_desc>Provide support for the Geolocation API</short_desc>
          <delta_ts>2009-07-08 14:28:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andre-John Mas">andrejohn.mas</reporter>
          <assigned_to name="Greg Bolsinga">bolsinga</assigned_to>
          <cc>andersca</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>koivisto</cc>
    
    <cc>pknight</cc>
    
    <cc>rik</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>94557</commentid>
    <comment_count>0</comment_count>
    <who name="Andre-John Mas">andrejohn.mas</who>
    <bug_when>2008-10-08 10:07:23 -0700</bug_when>
    <thetext>The W3C has published a draft specification for a Geolocation API:

http://dev.w3.org/geo/api/spec-source.html

It would be nice to see this added to Webkit. How the data is retrieved would depend on the platform. For example on the iPhone this could use the CoreLocation service and in other environments this could be got from the router or a user specified setting (useful in desktop environments).

In all cases the user should be asked to share the location with the web site.

An implementation is currently available for Firefox, in the form of an extension:

http://labs.mozilla.com/2008/10/introducing-geode/

This is an API that is accessed by Javascript and can be used to provide longitude and latitude information.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94609</commentid>
    <comment_count>1</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-08 14:11:27 -0700</bug_when>
    <thetext>Assigning to Greg as he is already working on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94728</commentid>
    <comment_count>2</comment_count>
    <who name="Andrei Popescu">andreip</who>
    <bug_when>2008-10-09 02:35:44 -0700</bug_when>
    <thetext>There&apos;s an implementation in Gears, too:

http://code.google.com/apis/gears/api_geolocation.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94802</commentid>
    <comment_count>3</comment_count>
      <attachid>24244</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-09 16:29:56 -0700</bug_when>
    <thetext>Created attachment 24244
Patch to implement this feature

This is a patch to implement this feature. On anything but iPhone, it will return NULL / undefined for navigator.geolocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94813</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2008-10-09 17:34:49 -0700</bug_when>
    <thetext>A few comments from a quick glance:

+    long watchId = reinterpret_cast&lt;long&gt;(notifier.get());
+    GeoNotifier* notifier= reinterpret_cast&lt;GeoNotifier*&gt;(watchId);

These are pretty gross. Use a HashMap instead?

+#if PLATFORM(IPHONE)
+#ifdef __OBJC__
+@class CLLocation;
+#else
+class CLLocation;
+#endif
+#endif

Do you really want to pollute WebCore/dom files with platform-specific stuff?

+    Geoposition(double latitude, double longitude, double altitude, double accuracy, 
+                double altitudeAccuracy, double heading, double velocity, 
+                unsigned long long timestamp)
+    : m_latitude(latitude)
+    , m_longitude(longitude)
+    , m_altitude(altitude)
+    , m_accuracy(accuracy)
...

Follow WebKit formatting conventions.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94842</commentid>
    <comment_count>5</comment_count>
      <attachid>24253</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-09 20:33:52 -0700</bug_when>
    <thetext>Created attachment 24253
updated patch

Addresses Simon&apos;s issues. I think I have the formatting correct; I&apos;m not entirely certain what was wrong with the ctor, but I matched another I found.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94847</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-09 21:07:13 -0700</bug_when>
    <thetext>+#if PLATFORM(IPHONE)
I don&apos;t believe this is the correct #if.  I think we should add ENABLE(GEOLOCATION) platform macro and wrap all related functionality in that so it is not compiled on unsupported platforms.

Geolocation.h and the like should not be in WebCore/dom which is for core DOM functionality, but probably rather WebCore/page is the best place for it now.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94848</commentid>
    <comment_count>7</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-09 21:17:14 -0700</bug_when>
    <thetext>Antti didn&apos;t want to have this all wrapped up in an #ifdef so that there were not too many &apos;configurations&apos; of WebCore.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94888</commentid>
    <comment_count>8</comment_count>
      <attachid>24264</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-10 10:28:45 -0700</bug_when>
    <thetext>Created attachment 24264
updated patch (moves items into WebCore/page)

updated patch (moves items into WebCore/page)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94892</commentid>
    <comment_count>9</comment_count>
      <attachid>24267</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-10 10:49:06 -0700</bug_when>
    <thetext>Created attachment 24267
updated other build systems

I forgot to update the other build systems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>94977</commentid>
    <comment_count>10</comment_count>
      <attachid>24267</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-10 23:41:19 -0700</bug_when>
    <thetext>Comment on attachment 24267
updated other build systems

In addition to the comments we discussed on IRC about abstracting the platform differences behind an abstraction in WebCore/platform and adding tests, here are some comments.

I don&apos;t think you are using the latest license.  We have a two clause version that correctly identifies Apple as Apple, Inc. in all places.  You can find an example of it in ScrollbarTheme.h.

+    if (exec-&gt;hadException()) {
+        m_frame-&gt;domWindow()-&gt;console()-&gt;reportCurrentException(exec);
+        
+        raisedException = true;
+    }
Extra newline.

+    virtual void handleEvent(Geoposition*, bool&amp; raisedException);
+private:
+    JSCustomPositionCallback(JSC::JSObject* callback, Frame*);
There should be a newline before private:

+    virtual void handleEvent(PositionError*);
+private:
+    JSCustomPositionErrorCallback(JSC::JSObject* callback, Frame*);
Same here.

+    if (Frame* frame = toJSDOMWindow(exec-&gt;dynamicGlobalObject())-&gt;impl()-&gt;frame())
+        positionCallback = JSCustomPositionCallback::create(object, frame);
This should probably use the lexicalGlobalObject.  I don&apos;t think any of the uses of the dynamic global object are correct in the patch and all should probably be replaced with use of the lexical one.

+Geolocation::Geolocation(Frame* frame)
+    : m_frame(frame)
+{
+
+}
Extra newline.

+    {
+    GeoNotifierSet::const_iterator end = m_oneShots.end();
The { seems only scope the for loops differently so they can use the same variable names.  I think a better strategy would be to make the names more verbose (oneShotsEnd, and watchesEnd).

+        void timerFired(Timer&lt;GeoNotifier&gt;* timer);
No need to include parameter name.

+        RefPtr&lt;PositionCallback&gt;        m_successCallback;
+        RefPtr&lt;PositionErrorCallback&gt;   m_errorCallback;
+        Timer&lt;GeoNotifier&gt;              m_timer;
We usually don&apos;t line up the variable names like this. 

+    static PassRefPtr&lt;Geolocation&gt; create(Frame* frame);
No need to include parameter name.

+    void clearWatch(long watchId);
I think this should be an int.  long in IDL translates to int in cpp.

+    void handleNewPosition(PassRefPtr&lt;Geoposition&gt; newPosition);
+    void handleError(PositionError* error);

+    Geolocation(Frame* frame);

+    virtual bool startUpdating(PositionOptions* options) = 0;
No need to include parameter names,

+    typedef HashSet&lt; RefPtr&lt;GeoNotifier&gt; &gt; GeoNotifierSet;
Extra space before RefPtr.

+    typedef HashMap&lt;long, RefPtr&lt;GeoNotifier&gt; &gt; GeoNotifierMap;
Again, probably int instead of long.

+#include &lt;wtf/Platform.h&gt;
+#include &lt;wtf/RefCounted.h&gt;
+#include &quot;PlatformString.h&quot;
These should be sorted.

+        , m_timestamp(timestamp) 
+    {}
+    
The braces should go on separate lines.

+    unsigned long long timestamp() const { return m_timestamp; }
We typedef DOMTypeStamp in Event.h.  You can use that for this.

+        DOMString toString();
Though I did not look at the spec, I suspect this should be [DontEnum].

+#if PLATFORM(IPHONE)
+    if (!m_geolocation)
+        m_geolocation = Geolocation::create(m_frame);
+    return m_geolocation.get();
+#else
+    return NULL;
+#endif
Clearly, +#if PLATFORM(IPHONE) is wrong here.  I think we should introduce ENABLE(GEOLOCATION).  Also, the NULL should just be 0.  Just returning 0 here is really not enough because the geolocation property is still enumerable and will still return true for hasProperty and the corresponding &apos;geolocation&apos; in window.navigator feature checks.  I agree with Antti (he said this on irc) that there are good reasons to want to compile this feature to ensure it doesn&apos;t die of code rot, but I think it needs to not be detectable.

It looks like the Geolocation is not getting marked by its parent.  I assumed the JSPluginArray and JSMimeTypeArray are having the same problem, but we should follow the paradigm set in DOMWindow and add optionalGeolocation methods and CustomMark to JSNavigator.

+        virtual void handleEvent(Geoposition* position, bool&amp; raisedException) = 0;
position parameter name is not needed.

+#include &lt;wtf/Platform.h&gt;
+#include &lt;wtf/RefCounted.h&gt;
+#include &quot;PlatformString.h&quot;
Please sort.

+        , m_message(message)
+    {}
+    
Braces should go on separate lines.

+    long code() const { return m_code; }
+    void setCode(long code) { m_code = code; }

+    long m_code;
Again, long == int.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95248</commentid>
    <comment_count>11</comment_count>
      <attachid>24339</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-13 22:26:46 -0700</bug_when>
    <thetext>Created attachment 24339
addresses Sam&apos;s review comments.

This should cover everything Sam mentions except for enumerating Navigator properties when ENABLE(GEOLCOATION) is not on, and a test case. For the Test case, it isn&apos;t clear how to test if the platform doesn&apos;t support any location services. For when there are location services, since it can be tested from anywhere, the test will need to handle multiple locations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95369</commentid>
    <comment_count>12</comment_count>
      <attachid>24350</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-14 16:12:14 -0700</bug_when>
    <thetext>Created attachment 24350
Forgot to add GeolocationService to all build projects

See above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95430</commentid>
    <comment_count>13</comment_count>
      <attachid>24365</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-15 13:11:44 -0700</bug_when>
    <thetext>Created attachment 24365
Address navigator properties enumeration, add test for when Geolocation is not implmented

Geolocation support will compile. Navigator.idl and Navigator.cpp now use ENABLE(GEOLOCATION) to turn this off. All the support code compiles but is not linked in. I added a test for when ENABLE(GEOLOCATION) is off. If it is implemented, this test will fail, and should be ignored. Once it is implemented a new test will need to be created.

Due to how Navigator&apos;s properties are created (via IDL) with ENABLE_GEOLOCATION, it isn&apos;t clear how to have a test that will determine at runtime if Geolocation support is available. So I did not do any DRT time only work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95502</commentid>
    <comment_count>14</comment_count>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2008-10-15 23:27:43 -0700</bug_when>
    <thetext>Thid IDL files should not be added to the Resources. The shout be in the project, but not part of a target.

 16198 				FE80D7C70E9C1F25000D6F75 /* Geolocation.idl in Resources */,
 16199 				FE80D7CA0E9C1F25000D6F75 /* Geoposition.idl in Resources */,
 16200 				FE80D7CC0E9C1F25000D6F75 /* PositionCallback.idl in Resources */,
 16201 				FE80D7CE0E9C1F25000D6F75 /* PositionError.idl in Resources */,
 16202 				FE80D7D00E9C1F25000D6F75 /* PositionErrorCallback.idl in Resources */,
 16203 				FE80D7D20E9C1F25000D6F75 /* PositionOptions.idl in Resources */,

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95555</commentid>
    <comment_count>15</comment_count>
      <attachid>24400</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-16 11:41:26 -0700</bug_when>
    <thetext>Created attachment 24400
Create test cases!

I have implemented test cases. geolocation-not-implmented verifies that geolocation isn&apos;t there, as nothing has a platform implementation yet. The geolocation-fake-* tests put WebCore into a mode for platforms that do not support Geolocation to give fake results for geolocation to test this code out.

In addition, the IDL files are no longer in the resources.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95609</commentid>
    <comment_count>16</comment_count>
      <attachid>24425</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-16 14:33:37 -0700</bug_when>
    <thetext>Created attachment 24425
Add missed changes to other build systems

Added missed added files to WebCore/GNUmakefile.am WebCore/WebCore.vcproj/WebCore.vcproj WebCore/WebCore.pro WebCore/WebCoreSources.bkl

Otherwise is the same as to the previous patch (less subsequent WebKit repro updates).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95678</commentid>
    <comment_count>17</comment_count>
      <attachid>24425</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-16 18:05:54 -0700</bug_when>
    <thetext>Comment on attachment 24425
Add missed changes to other build systems

+        * ChangeLog:
This should not be in here.

+#include &quot;config.h&quot;
+#include &quot;JSCustomPositionCallback.h&quot;
+#include &quot;Console.h&quot;
MIssing newline between JSCustomPositionCallback.h and Console.h.

+#include &lt;kjs/JSObject.h&gt;
+#include &lt;kjs/protect.h&gt;
+#include &quot;PositionCallback.h&quot;
+#include &lt;wtf/Forward.h&gt;
This should be sorted.

+#include &quot;config.h&quot;
+#include &quot;JSGeolocation.h&quot;
+#include &quot;DOMWindow.h&quot;
Missing newline.

+JSC::JSValue* toJS(JSC::ExecState* exec, Geolocation* object)
The JSC:: are not needed.

+        return getDOMObjectWrapper&lt;JSGeolocation&gt;(exec, object);
+    else
+        return jsUndefined();
The else not needed.

+    int w = m_impl-&gt;watchPosition(positionCallback.release(), positionErrorCallback.release(), positionOptions.get());
The w variable name is a little vague.  Perhaps watchID?

+#include &quot;config.h&quot;
+#include &quot;Geolocation.h&quot;
+#include &quot;PositionError.h&quot;
Missing newline.

+#include &lt;wtf/Platform.h&gt;
+#include &lt;wtf/HashMap.h&gt;
+#include &lt;wtf/HashSet.h&gt;
+#include &lt;wtf/OwnPtr.h&gt;
+#include &lt;wtf/PassRefPtr.h&gt;
+#include &lt;wtf/RefCounted.h&gt;
+#include &lt;wtf/RefPtr.h&gt;
+
+#include &quot;GeolocationService.h&quot;
+#include &quot;PositionCallback.h&quot;
+#include &quot;PositionErrorCallback.h&quot;
+#include &quot;PositionOptions.h&quot;
+#include &quot;Timer.h&quot;
We usually put the wtf headers last.

+void Geolocation::disconnectFrame()
+{
+    m_frame = 0;
+}
This should probably stop all the watchers and oneShots.

+    RefPtr&lt;PositionError&gt; error = new PositionError(4, &quot;Timed out&quot;);
+    m_errorCallback-&gt;handleEvent(error.get());
This is leaking the PostionError.  You should use the create idiom for this.  The handleEvent should probably also take a PassRefPtr.

+    RefPtr&lt;GeoNotifier&gt; notifier = new GeoNotifier(successCallback, errorCallback, options);
This also leaks

+            RefPtr&lt;PositionError&gt; error = new PositionError(1, &quot;Unable to Start&quot;);
Here too.

+    RefPtr&lt;GeoNotifier&gt; notifier = m_watchers.get(watchId);
+    if (notifier)
+        m_watchers.remove(watchId);
There is no reason to call get here.

+    GeoNotifierSet::const_iterator oneShotsEnd = m_oneShots.end();
+    for (GeoNotifierSet::const_iterator it = m_oneShots.begin(); it != oneShotsEnd; ++it) {
+        RefPtr&lt;GeoNotifier&gt; notifier = *it;
+        
+        if (notifier-&gt;m_errorCallback)
+            notifier-&gt;m_errorCallback-&gt;handleEvent(error);
+    }
+    m_oneShots.clear();
+    
+    GeoNotifierMap::const_iterator watchersEnd = m_watchers.end();
+    for (GeoNotifierMap::const_iterator it = m_watchers.begin(); it != watchersEnd; ++it) {
+        RefPtr&lt;GeoNotifier&gt; notifier = (*it).second;
+        
+        if (notifier-&gt;m_errorCallback)
+            notifier-&gt;m_errorCallback-&gt;handleEvent(error);
+    }
These both need to copy the HashSet/HashMap to avoid it being mutated while iterating it.  Why isn&apos;t the watchers map cleared?

+    GeoNotifierSet::const_iterator oneShotsEnd = m_oneShots.end();
+    for (GeoNotifierSet::const_iterator it = m_oneShots.begin(); it != oneShotsEnd; ++it) {
Need to copy it here too.

+            RefPtr&lt;PositionError&gt; error = new PositionError(5, &quot;JavaScript Error&quot;);
This leaks.  Also, the error should probably be a bit more generic and say something like &quot;An exception was thrown&quot; so it is not JS specific.

+    GeoNotifierMap::const_iterator watchersEnd = m_watchers.end();
+    for (GeoNotifierMap::const_iterator it = m_watchers.begin(); it != watchersEnd; ++it) {
Same issues for this too.  You can probably use the copying to a Vector to get the best efficiency.

+#include &lt;wtf/Platform.h&gt;
Not necessary here.

+#if ENABLE_GEOLOCATION
+        readonly attribute Geolocation geolocation;
+#else
+        readonly attribute [DontEnum] Geolocation geolocation;
+#endif
I don&apos;t think this will do it.  For instance, I think navigator.hasProperty(&quot;geolocation&quot;) or &quot;geolocation&quot; in navigator will still return true.

+    int code() const { return m_code; }
+    void setCode(int code) { m_code = code; }
+    const String&amp; message() const { return m_message; }
+    void setMessage(const String&amp; message) { m_message = message; }
setCode and setMessage are not needed as the properties are readonly.

+#include &quot;config.h&quot;
+
+#include &quot;GeolocationService.h&quot;
Newline in the wrong place.

+GeolocationService::GeolocationService(GeolocationServiceClient* client)
+    : m_geolocationServiceClient(client)
+{
+}
It would probably be better to assert that you have a client and remove the null checks.

+class GeolocationServiceClient
+{
Brace should go on previous line.

For GeolocationService, I think a better design would be to have implementations provide the methods instead of requiring them to subclass by using pure virtual methods.

+#include &quot;config.h&quot;
+#include &quot;GeolocationServiceFake.h&quot;
+#include &quot;WebCoreGeolocation.h&quot;
Newline.


+    m_lastPosition = new Geoposition(37.33264,-122.03099,0.0,1.0,0.0,0.0,0.0,1000.0);
Where is this?  Can we make this configurable like WebCoreShouldUseFakeGeolocation()?

+    GeolocationService::positionChanged();
No prefix needed here.

Do the PositionOptions work if you pass in a vanilla js object?  

Looking great.  r- due to the leaks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95779</commentid>
    <comment_count>18</comment_count>
      <attachid>24463</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-17 14:43:26 -0700</bug_when>
    <thetext>Created attachment 24463
updated

This addresses the items in Sam&apos;s review. Objects go through ::create() for RefPtrs. Header order cleaned up. Doesn&apos;t add page to the back/forward cache if it is currently using Geolocation (from IRC). stopsUpdating when Geolocation::disconnectFrame is called. Copies data structures before iterating (nice catch). 

The GeolocationServiceFake (and its tests) were removed from the patch. Having geolocation be a property on Navigator only when in DRT has proven to be complex. The test to verify that geolocation hasn&apos;t leaked into navigator is some fashion is retained and more robust than the last patch.

I will file a followup bug for the GeolocationServiceFake implementation and test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>95783</commentid>
    <comment_count>19</comment_count>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-17 14:49:31 -0700</bug_when>
    <thetext>I filed https://bugs.webkit.org/show_bug.cgi?id=21717 for the GeolocationServiceFake implementation and test cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96449</commentid>
    <comment_count>20</comment_count>
      <attachid>24463</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-23 16:43:12 -0700</bug_when>
    <thetext>Comment on attachment 24463
updated

r=me.  There are a bunch of comments below, but I think we have gone back and forth enough to land this patch.  I would encourage you to make all the changes, but you can use your discretion.

&gt; +    // should this be on the Frame?
No, and this comment should go away.

&gt; +void Geolocation::sendErrorToOneShots(PositionError* error)
&gt; +{
&gt; +    const GeoNotifierSet copy = m_oneShots;

I think it is more efficient to copy this to a Vector and iterate the vector.  There is a function call copyToVector(const HashSet&lt;&gt;, Vector&lt;&gt;) that you can use.

&gt; +void Geolocation::sendErrorToWatchers(PositionError* error)
&gt; +{
&gt; +    const GeoNotifierMap copy = m_watchers;

Same here.  Since you only need the hash values, you can use copyValuesToVector().

&gt; +void Geolocation::sendPositionToOneShots(Geoposition* position)
&gt; +{
&gt; +    const GeoNotifierSet copy = m_oneShots;

And here.

&gt; +
&gt; +void Geolocation::sendPositionToWatchers(Geoposition* position)
&gt; +{
&gt; +    const GeoNotifierMap copy = m_watchers;

Once again

&gt; +#include &quot;GeolocationService.h&quot;
&gt; +#include &quot;PositionCallback.h&quot;
&gt; +#include &quot;PositionErrorCallback.h&quot;
&gt; +#include &quot;PositionOptions.h&quot;
&gt; +#include &quot;Timer.h&quot;
&gt; +
&gt; +#include &lt;wtf/Platform.h&gt;
&gt; +#include &lt;wtf/HashMap.h&gt;
&gt; +#include &lt;wtf/HashSet.h&gt;
&gt; +#include &lt;wtf/OwnPtr.h&gt;
&gt; +#include &lt;wtf/PassRefPtr.h&gt;
&gt; +#include &lt;wtf/RefCounted.h&gt;
&gt; +#include &lt;wtf/RefPtr.h&gt;
These don&apos;t have to be paragraphed.

&gt; +
&gt; +    interface [
&gt; +        GenerateConstructor
&gt; +    ] Geolocation {
If this is generating a constructor, you need to update DOMWindow.idl (with the requisite #ifdef) to add the constructor there too.

&gt; +    interface [
&gt; +        GenerateConstructor
&gt; +    ] Geoposition {
Same deal with the constructor.


&gt; +
&gt; +        [DontEnum] DOMString toString();
We usually #ifdef these only for JS.

&gt;  
&gt;          bool onLine() const;
&gt; +        Geolocation* geolocation() const;
&gt; +        // This is used for GC marking.
&gt; +        Geolocation* optionalGeolocation() const { return m_geolocation.get(); }
&gt;      private:
Need a newline before private.

&gt; +class PositionError : public RefCounted&lt;PositionError&gt; {
&gt; +public:
&gt; +    enum ErrorCode {
&gt; +        PERMISSION_ERROR = 1,
&gt; +        LOCATION_PROVIDER_ERROR,
&gt; +        POSITION_NOT_FOUND_ERROR,
&gt; +        TIMEOUT_ERROR,
&gt; +        UNKNOWN_ERROR
&gt; +    };

Perhaps we should give feedback to the WG that the error codes should have constants?

&gt; +
&gt; +    class PositionErrorCallback : public RefCounted&lt;PositionErrorCallback&gt; {
&gt; +    public:
&gt; +        virtual ~PositionErrorCallback() { }
&gt; +        virtual void handleEvent(PositionError* position) = 0;
No need for the parameter name here.  

&gt; +
&gt; +    bool enableHighAccuracy() const { return m_highAccuracy; }
&gt; +    void setEnableHighAccuracy(bool enable) { m_highAccuracy = enable; }
&gt; +    long timeout() const { return m_timeout; }
&gt; +    void setTimeout(long t) { m_timeout = t; }
Should be ints.

Are the set methods ever used?

&gt; +    
&gt; +    bool m_highAccuracy;
&gt; +    long m_timeout;
Should be an int.

&gt; +
&gt; +class GeolocationService : public Noncopyable {
&gt; +public:
&gt; +    static GeolocationService* create(GeolocationServiceClient*);
&gt; +    virtual ~GeolocationService() {}
&gt; +    
&gt; +    virtual bool startUpdating(PositionOptions*) = 0;
&gt; +    virtual void stopUpdating() = 0;
&gt; +    
&gt; +    virtual Geoposition* lastPosition() const = 0;
&gt; +    virtual PositionError* lastError() const = 0;

Since we are not doing the FakeService anymore, I don&apos;t think these need to be virtual at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96458</commentid>
    <comment_count>21</comment_count>
      <attachid>24627</attachid>
    <who name="Greg Bolsinga">bolsinga</who>
    <bug_when>2008-10-23 17:53:13 -0700</bug_when>
    <thetext>Created attachment 24627
updated patch (so ddkilzer can apply it for me)

This addresses Sam&apos;s review.

The setter is needed by JS* object. I needed to keep GeolocationService::stopUpdating virtual so WebCore would link (it is used by Geolocation). I removed the GenerateConstructors from GeoPosition and GeoLocation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96485</commentid>
    <comment_count>22</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-23 22:07:40 -0700</bug_when>
    <thetext>$ svn commit JavaScriptCore WebCore LayoutTests
Sending        JavaScriptCore/ChangeLog
Sending        JavaScriptCore/wtf/Platform.h
Sending        LayoutTests/ChangeLog
Adding         LayoutTests/geolocation
Adding         LayoutTests/geolocation/geolocation-not-implemented-expected.txt
Adding         LayoutTests/geolocation/geolocation-not-implemented.html
Adding         LayoutTests/geolocation/geolocation-test.js
Sending        WebCore/ChangeLog
Sending        WebCore/DerivedSources.make
Sending        WebCore/GNUmakefile.am
Sending        WebCore/WebCore.pro
Sending        WebCore/WebCore.vcproj/WebCore.vcproj
Sending        WebCore/WebCore.xcodeproj/project.pbxproj
Sending        WebCore/WebCoreSources.bkl
Adding         WebCore/bindings/js/JSCustomPositionCallback.cpp
Adding         WebCore/bindings/js/JSCustomPositionCallback.h
Adding         WebCore/bindings/js/JSCustomPositionErrorCallback.cpp
Adding         WebCore/bindings/js/JSCustomPositionErrorCallback.h
Sending        WebCore/bindings/js/JSDOMBinding.cpp
Sending        WebCore/bindings/js/JSDOMBinding.h
Sending        WebCore/bindings/js/JSDOMWindowCustom.cpp
Adding         WebCore/bindings/js/JSGeolocationCustom.cpp
Sending        WebCore/bindings/js/JSNavigatorCustom.cpp
Sending        WebCore/dom/Document.cpp
Sending        WebCore/dom/Document.h
Sending        WebCore/loader/FrameLoader.cpp
Adding         WebCore/page/Geolocation.cpp
Adding         WebCore/page/Geolocation.h
Adding         WebCore/page/Geolocation.idl
Adding         WebCore/page/Geoposition.cpp
Adding         WebCore/page/Geoposition.h
Adding         WebCore/page/Geoposition.idl
Sending        WebCore/page/Navigator.cpp
Sending        WebCore/page/Navigator.h
Sending        WebCore/page/Navigator.idl
Adding         WebCore/page/PositionCallback.h
Adding         WebCore/page/PositionCallback.idl
Adding         WebCore/page/PositionError.h
Adding         WebCore/page/PositionError.idl
Adding         WebCore/page/PositionErrorCallback.h
Adding         WebCore/page/PositionErrorCallback.idl
Adding         WebCore/page/PositionOptions.h
Adding         WebCore/page/PositionOptions.idl
Adding         WebCore/platform/GeolocationService.cpp
Adding         WebCore/platform/GeolocationService.h
Transmitting file data ............................................
Committed revision 37840.

http://trac.webkit.org/changeset/37840
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96487</commentid>
    <comment_count>23</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-23 22:40:39 -0700</bug_when>
    <thetext>Follow-up GTK fix:

$ svn commit WebCore
Sending        WebCore/ChangeLog
Sending        WebCore/GNUmakefile.am
Transmitting file data ..
Committed revision 37841.

http://trac.webkit.org/changeset/37841

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96494</commentid>
    <comment_count>24</comment_count>
      <attachid>24627</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-24 00:45:06 -0700</bug_when>
    <thetext>Comment on attachment 24627
updated patch (so ddkilzer can apply it for me)

I rolled out r37840 and r37841.  There are too many issues yet to be resolved with this patch.

Committed r37842
http://trac.webkit.org/changeset/37842

- Derived sources missing from Xcode project.  (Adding them causes build failures.)

  DerivedSources/WebCore/JSPositionCallback.cpp
  DerivedSources/WebCore/JSPositionCallback.h
  DerivedSources/WebCore/JSPositionErrorCallback.cpp
  DerivedSources/WebCore/JSPositionErrorCallback.h
  All DOM* generated classes for *.idl files.

- Changes to WebKit/mac/MigrateHeaders.make for DOM* classes.

- Windows build breaks.

- GTK, Qt and wx builds break (Qt is currently broken) and each platform&apos;s build files are missing *.idl and other source files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96575</commentid>
    <comment_count>25</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-24 14:08:02 -0700</bug_when>
    <thetext>$ svn commit JavaScriptCore WebCore LayoutTests
Sending        JavaScriptCore/ChangeLog
Sending        JavaScriptCore/wtf/Platform.h
Sending        LayoutTests/ChangeLog
Adding         LayoutTests/geolocation/geolocation-not-implemented-expected.txt
Adding         LayoutTests/geolocation/geolocation-not-implemented.html
Adding         LayoutTests/geolocation/geolocation-test.js
Sending        WebCore/ChangeLog
Sending        WebCore/DerivedSources.make
Sending        WebCore/GNUmakefile.am
Sending        WebCore/WebCore.pro
Sending        WebCore/WebCore.vcproj/WebCore.vcproj
Sending        WebCore/WebCore.xcodeproj/project.pbxproj
Sending        WebCore/WebCoreSources.bkl
Adding         WebCore/bindings/js/JSCustomPositionCallback.cpp
Adding         WebCore/bindings/js/JSCustomPositionCallback.h
Adding         WebCore/bindings/js/JSCustomPositionErrorCallback.cpp
Adding         WebCore/bindings/js/JSCustomPositionErrorCallback.h
Sending        WebCore/bindings/js/JSDOMBinding.cpp
Sending        WebCore/bindings/js/JSDOMBinding.h
Sending        WebCore/bindings/js/JSDOMWindowCustom.cpp
Adding         WebCore/bindings/js/JSGeolocationCustom.cpp
Sending        WebCore/bindings/js/JSNavigatorCustom.cpp
Sending        WebCore/dom/Document.cpp
Sending        WebCore/dom/Document.h
Sending        WebCore/loader/FrameLoader.cpp
Adding         WebCore/page/Geolocation.cpp
Adding         WebCore/page/Geolocation.h
Adding         WebCore/page/Geolocation.idl
Adding         WebCore/page/Geoposition.cpp
Adding         WebCore/page/Geoposition.h
Adding         WebCore/page/Geoposition.idl
Sending        WebCore/page/Navigator.cpp
Sending        WebCore/page/Navigator.h
Sending        WebCore/page/Navigator.idl
Adding         WebCore/page/PositionCallback.h
Adding         WebCore/page/PositionCallback.idl
Adding         WebCore/page/PositionError.h
Adding         WebCore/page/PositionError.idl
Adding         WebCore/page/PositionErrorCallback.h
Adding         WebCore/page/PositionErrorCallback.idl
Adding         WebCore/page/PositionOptions.h
Adding         WebCore/page/PositionOptions.idl
Adding         WebCore/platform/GeolocationService.cpp
Adding         WebCore/platform/GeolocationService.h
Transmitting file data ............................................
Committed revision 37854.

$ svn commit WebCore
Sending        WebCore/ChangeLog
Sending        WebCore/WebCore.pro
Transmitting file data ..
Committed revision 37857.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96576</commentid>
    <comment_count>26</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-24 14:08:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/37854
http://trac.webkit.org/changeset/37857
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>96599</commentid>
    <comment_count>27</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2008-10-24 14:52:31 -0700</bug_when>
    <thetext>Gtk build fix:

$ svn commit WebCore
Sending        WebCore/ChangeLog
Sending        WebCore/GNUmakefile.am
Transmitting file data ..
Committed revision 37866.

http://trac.webkit.org/changeset/37866
</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24244</attachid>
            <date>2008-10-09 16:29:56 -0700</date>
            <delta_ts>2008-10-09 20:33:52 -0700</delta_ts>
            <desc>Patch to implement this feature</desc>
            <filename>GeoLocation-WebKit.org.patch.txt</filename>
            <type>text/plain</type>
            <size>90254</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzQ1MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODggQEAKKzIwMDgtMTAtMDkgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc1CisgICAgICAgIAor
ICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9sb2NhdGlvbiBBUEkKKyAgICAgICAg
CisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkvc3BlYy1zb3VyY2UuaHRtbAorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6SlNDdXN0b21Q
b3NpdGlvbkVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlv
bkVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1
c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
Q3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0dl
b2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBkb20vR2VvbG9jYXRpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2Vv
Tm90aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjp0
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9sb2NhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6ZGlzY29ubmVjdEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
R2VvbG9jYXRpb246OmNsZWFyV2F0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
OnN0b3BVcGRhdGluZ0lmRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Omhh
bmRsZU5ld1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpoYW5kbGVF
cnJvcik6CisgICAgICAgICogZG9tL0dlb2xvY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246On5HZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbjo6bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKiBkb20vR2VvbG9jYXRpb24uaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBkb20vR2VvcG9zaXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Okdlb3Bvc2l0aW9uOjp0b1N0cmluZyk6CisgICAgICAgICogZG9tL0dlb3Bvc2l0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246Okdlb3Bvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjpsYXRpdHVkZSk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9wb3NpdGlvbjo6bG9uZ2l0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0
aW9uOjphbHRpdHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6YWNjdXJhY3kp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OmFsdGl0dWRlQWNjdXJhY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OmhlYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
R2VvcG9zaXRpb246OnZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjp0
aW1lc3RhbXApOgorICAgICAgICAqIGRvbS9HZW9wb3NpdGlvbi5pZGw6IEFkZGVkLgorICAgICAg
ICAqIGRvbS9Qb3NpdGlvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb25DYWxsYmFjazo6flBvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9Qb3NpdGlv
bkNhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL1Bvc2l0aW9uRXJyb3IuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpQb3NpdGlvbkVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb25FcnJvcjo6c2V0Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9y
OjptZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OnNldE1lc3NhZ2Up
OgorICAgICAgICAqIGRvbS9Qb3NpdGlvbkVycm9yLmlkbDogQWRkZWQuCisgICAgICAgICogZG9t
L1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0
aW9uRXJyb3JDYWxsYmFjazo6flBvc2l0aW9uRXJyb3JDYWxsYmFjayk6CisgICAgICAgICogZG9t
L1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9Qb3NpdGlv
bk9wdGlvbnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OlBv
c2l0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OmVuYWJs
ZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OnNldEVu
YWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OnRp
bWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpzZXRUaW1lb3V0KToK
KyAgICAgICAgKiBkb20vUG9zaXRpb25PcHRpb25zLmlkbDogQWRkZWQuCisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpkaXNjb25uZWN0
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpnZW9sb2NhdGlvbik6CisgICAg
ICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Bvc2l0aW9uRXJyb3JNYWMubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6UG9zaXRpb25FcnJvcik6CisKIDIwMDgtMTAtMDkg
IENocmlzIE1hcnJpbiAgPGNtYXJyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IERhbiBCZXJuc3RlaW4uCkluZGV4OiBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCShyZXZpc2lvbiAzNzQ1MSkKKysr
IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIs
OCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBFdmVudFRhcmdldE5vZGUgXAogICAgIEZpbGUgXAog
ICAgIEZpbGVMaXN0IFwKKyAgICBHZW9sb2NhdGlvbiBcCisgICAgR2VvcG9zaXRpb24gXAogICAg
IEhUTUxBbmNob3JFbGVtZW50IFwKICAgICBIVE1MQXBwbGV0RWxlbWVudCBcCiAgICAgSFRNTEFy
ZWFFbGVtZW50IFwKQEAgLTE3OSw2ICsxODEsMTAgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgT3Zl
cmZsb3dFdmVudCBcCiAgICAgUGx1Z2luIFwKICAgICBQbHVnaW5BcnJheSBcCisgICAgUG9zaXRp
b25DYWxsYmFjayBcCisgICAgUG9zaXRpb25FcnJvciBcCisgICAgUG9zaXRpb25FcnJvckNhbGxi
YWNrIFwKKyAgICBQb3NpdGlvbk9wdGlvbnMgXAogICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBc
CiAgICAgUHJvZ3Jlc3NFdmVudCBcCiAgICAgUkdCQ29sb3IgXApJbmRleDogV2ViQ29yZS9HTlVt
YWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lv
biAzNzQ1MSkKKysrIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMy
NSw2ICszMjUsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDb25z
b2xlQ3VzdG9tLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2Fs
bGJhY2suY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFj
ay5oIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
LmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
ay5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tVm9pZENhbGxiYWNrLmNwcCBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5oIFwKIAlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29sdmVyLmNwcCBcCkBAIC0zNDcsNiArMzUxLDcg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXQuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0QmFzZS5oIFwKIAlXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlQ3VzdG9tLmNwcCBcCisJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxB
bGxDb2xsZWN0aW9uLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVu
dEN1c3RvbS5jcHAgXApAQCAtNjQzLDYgKzY0OCwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvZG9tL0V4Y2VwdGlvbkJhc2UuaCBcCiAJV2ViQ29yZS9kb20vRXhjZXB0aW9uQ29k
ZS5jcHAgXAogCVdlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuaCBcCisJV2ViQ29yZS9kb20vR2Vv
bG9jYXRpb24uY3BwIFwKKwlXZWJDb3JlL2RvbS9HZW9sb2NhdGlvbi5oIFwKKwlXZWJDb3JlL2Rv
bS9HZW9wb3NpdGlvbi5jcHAgXAorCVdlYkNvcmUvZG9tL0dlb3Bvc2l0aW9uLmggXAogCVdlYkNv
cmUvZG9tL0tleWJvYXJkRXZlbnQuY3BwIFwKIAlXZWJDb3JlL2RvbS9LZXlib2FyZEV2ZW50Lmgg
XAogCVdlYkNvcmUvZG9tL01hcHBlZEF0dHJpYnV0ZS5jcHAgXApAQCAtNjg0LDggKzY5MywxMiBA
QCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvZG9tL092ZXJmbG93RXZlbnQuaCBcCiAJ
V2ViQ29yZS9kb20vUG9zaXRpb24uY3BwIFwKIAlXZWJDb3JlL2RvbS9Qb3NpdGlvbi5oIFwKKwlX
ZWJDb3JlL2RvbS9Qb3NpdGlvbkNhbGxiYWNrLmggXAorCVdlYkNvcmUvZG9tL1Bvc2l0aW9uRXJy
b3IuaCBcCisJV2ViQ29yZS9kb20vUG9zaXRpb25FcnJvckNhbGxiYWNrLmggXAogCVdlYkNvcmUv
ZG9tL1Bvc2l0aW9uSXRlcmF0b3IuY3BwIFwKIAlXZWJDb3JlL2RvbS9Qb3NpdGlvbkl0ZXJhdG9y
LmggXAorCVdlYkNvcmUvZG9tL1Bvc2l0aW9uT3B0aW9ucy5oIFwKIAlXZWJDb3JlL2RvbS9Qcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIFwKIAlXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uaCBcCiAJV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5jcHAgXApJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiAz
NzQ1MSkKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2ICs1
MjksOCBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vRXZlbnRUYXJnZXROb2RlLmNwcCBcCiAgICAg
ZG9tL0V4Y2VwdGlvbkJhc2UuY3BwIFwKICAgICBkb20vRXhjZXB0aW9uQ29kZS5jcHAgXAorICAg
IGRvbS9HZW9sb2NhdGlvbi5jcHAgXAorICAgIGRvbS9HZW9wb3NpdGlvbi5jcHAgXAogICAgIGRv
bS9LZXlib2FyZEV2ZW50LmNwcCBcCiAgICAgZG9tL01hcHBlZEF0dHJpYnV0ZS5jcHAgXAogICAg
IGRvbS9NZXNzYWdlQ2hhbm5lbC5jcHAgXApAQCAtMTE5Myw3ICsxMTk1LDEwIEBAIGNvbnRhaW5z
KERFRklORVMsIEVOQUJMRV9EQVRBQkFTRT0xKSB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3Vz
dG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTRGF0YWJhc2VDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNTUUxSZXN1bHRT
ZXRSb3dMaXN0Q3VzdG9tLmNwcCBcCi0gICAgICAgIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rp
b25DdXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20u
Y3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgXAorICAg
ICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwIFwKKyAgICAgICAg
YmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCiAKICAgICBJRExf
QklORElOR1MgKz0gXAogICAgICAgICBzdG9yYWdlL0RhdGFiYXNlLmlkbCBcCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmVTb3VyY2VzLmJrbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmVTb3Vy
Y2VzLmJrbAkocmV2aXNpb24gMzc0NTEpCisrKyBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAko
d29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxp
c3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAK
ICAgICAgICAgYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAogICAg
ICAgICBiaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9q
cy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3Vz
dG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3Rv
bVNRTFN0YXRlbWVudENhbGxiYWNrLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNR
TFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9t
U1FMVHJhbnNhY3Rpb25DYWxsYmFjay5jcHAKQEAgLTU5LDYgKzYxLDcgQEAgVGhpcyBmaWxlIGNv
bnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50
Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAogICAgICAg
ICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAKKyAgICAgICAgYmluZGlu
Z3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1M
QWxsQ29sbGVjdGlvbi5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNw
cAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAt
MjM5LDYgKzI0Miw4IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUK
ICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0V2ZW50VGFyZ2V0Tm9kZS5jcHAKICAg
ICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGUuY3BwCiAgICAgICAgIERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNGaWxlTGlzdC5jcHAKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0dlb2xvY2F0aW9uLmNwcAorICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
R2VvcG9zaXRpb24uY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MQW5j
aG9yRWxlbWVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxBcHBs
ZXRFbGVtZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEFyZWFF
bGVtZW50LmNwcApAQCAtMzIzLDYgKzMyOCw4IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlz
dCBvZiBmaWxlcyBuZWUKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93
RXZlbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQbHVnaW4uY3BwCiAg
ICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQbHVnaW5BcnJheS5jcHAKKyAgICAgICAg
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bvc2l0aW9uRXJyb3IuY3BwCisgICAgICAgIERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNQb3NpdGlvbk9wdGlvbnMuY3BwCiAgICAgICAgIERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCiAgICAgICAgIERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNQcm9ncmVzc0V2ZW50LmNwcAogICAgICAgICBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUmFuZ2UuY3BwCkBAIC0zOTUsNiArNDAyLDggQEAgVGhpcyBmaWxlIGNv
bnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBkb20vRXZlbnRUYXJnZXROb2Rl
LmNwcAogICAgICAgICBkb20vRXhjZXB0aW9uQmFzZS5jcHAKICAgICAgICAgZG9tL0V4Y2VwdGlv
bkNvZGUuY3BwCisgICAgICAgIGRvbS9HZW9sb2NhdGlvbi5jcHAKKyAgICAgICAgZG9tL0dlb3Bv
c2l0aW9uLmNwcAogICAgICAgICBkb20vS2V5Ym9hcmRFdmVudC5jcHAKICAgICAgICAgZG9tL01h
cHBlZEF0dHJpYnV0ZS5jcHAKICAgICAgICAgZG9tL01lc3NhZ2VDaGFubmVsLmNwcApJbmRleDog
V2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAzNzQ1MSkKKysrIFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTcw
MCw2ICs3MDAsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU0dlb2xvY2F0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJ
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTR2VvcG9zaXRpb24uaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8
RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0
TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNIaXN0b3J5LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpA
QCAtMTA1Miw2ICsxMDYwLDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNQb3NpdGlvbkVycm9yLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUG9zaXRpb25PcHRpb25zLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilc
b2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUHJvY2Vzc2luZ0luc3RydWN0aW9u
LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTA1MDIsNiArMTA1MTgsMzggQEAKIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEdlb2xv
Y2F0aW9uLmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9
IlJlbGVhc2VfUEdPfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJW
Q0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSIN
CisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEdlb2xvY2F0aW9uLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cR2VvcG9zaXRp
b24uY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVs
ZWFzZV9QR098V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0KKwkJ
CQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cR2VvcG9zaXRpb24uaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxLZXlib2FyZEV2ZW50
LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0xMDc4Niw2ICsxMDgz
NCwyMiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxkb21cUG9zaXRpb25DYWxsYmFjay5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXFBvc2l0aW9uRXJyb3IuaCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQb3NpdGlv
bkVycm9yQ2FsbGJhY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQb3NpdGlvbk9wdGlvbnMuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQb3NpdGlvbkl0ZXJhdG9y
LmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0xMzA2NSw2ICsxMzEy
OSwyMiBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCINCisJCQkJ
CT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCINCisJCQkJCT4NCisJCQkJPC9GaWxl
Pg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0N1c3Rv
bVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJ
PEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNDdXN0b21Qb3NpdGlv
bkVycm9yQ2FsbGJhY2suaCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0N1c3RvbVNRTFN0YXRlbWVudENhbGxi
YWNrLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KQEAgLTEzMTkzLDYgKzEzMjczLDEwIEBA
CiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIu
LlxiaW5kaW5nc1xqc1xKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCINCisJCQkJCT4NCisJCQkJPC9G
aWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hp
c3RvcnlDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM3NDUxKQorKysgV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTQyMTMsNiArNDIxMywzNCBAQAogCQlGOTE2QzQ4RDBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0OEIwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAqLzsgfTsKIAkJRjkxNkM0OEUwREI1MTBGODAwNzZDRDgz
IC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QzBEQjUxMEY4MDA3NkNEODMgLyogSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLzsgfTsKIAkJRjlGMEVEN0EwREI1MENBMjAw
RDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8q
IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OworCQlGRTgwRDdBNzBFOUMxRUQy
MDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0EyMEU5QzFFRDIwMDBENkY3NSAv
KiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwICovOyB9OworCQlGRTgwRDdBODBFOUMxRUQy
MDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBMzBFOUMxRUQyMDAwRDZGNzUgLyog
SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggKi87IH07CisJCUZFODBEN0E5MEU5QzFFRDIwMDBE
NkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBNDBFOUMxRUQyMDAwRDZGNzUg
LyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwICovOyB9OworCQlGRTgwRDdBQTBF
OUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0E1MEU5QzFFRDIw
MDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICovOyB9OworCQlGRTgw
RDdBQjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBNjBFOUMxRUQyMDAw
RDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi87IH07CisJCUZFODBEN0M1MEU5QzFG
MjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCNzBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRp
b24uY3BwICovOyB9OworCQlGRTgwRDdDNjBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0I4
MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oICovOyB9OworCQlGRTgwRDdDNzBFOUMx
RjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9j
YXRpb24uaWRsICovOyB9OworCQlGRTgwRDdDODBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4
MEQ3QkEwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCAqLzsgfTsKKwkJRkU4MEQ3
QzkwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCQjBFOUMxRjI1MDAwRDZGNzUgLyogR2Vv
cG9zaXRpb24uaCAqLzsgfTsKKwkJRkU4MEQ3Q0EwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0
aW9uLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU4MEQ3QkMwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmlkbCAqLzsgfTsKKwkJRkU4
MEQ3Q0IwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JEMEU5QzFGMjUwMDBENkY3
NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggKi87IH07CisJCUZFODBEN0NDMEU5QzFGMjUwMDBENkY3
NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QkUwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2Fs
bGJhY2suaWRsICovOyB9OworCQlGRTgwRDdDRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25F
cnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4
MEQ3QkYwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkU4MEQ3
Q0UwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaWRsIGluIFJlc291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdDMDBFOUMxRjI1MDAwRDZGNzUg
LyogUG9zaXRpb25FcnJvci5pZGwgKi87IH07CisJCUZFODBEN0NGMEU5QzFGMjUwMDBENkY3NSAv
KiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFODBEN0MxMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9y
Q2FsbGJhY2suaCAqLzsgfTsKKwkJRkU4MEQ3RDAwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9u
RXJyb3JDYWxsYmFjay5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFODBEN0MyMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJh
Y2suaWRsICovOyB9OworCQlGRTgwRDdEMTBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25PcHRp
b25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgw
RDdDMzBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25PcHRpb25zLmggKi87IH07CisJCUZFODBE
N0QyMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaWRsIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdDNDBFOUMxRjI1MDAwRDZG
NzUgLyogUG9zaXRpb25PcHRpb25zLmlkbCAqLzsgfTsKKwkJRkU4MEQ5OEIwRTlDNDM4MjAwMEQ2
Rjc1IC8qIFBvc2l0aW9uRXJyb3JNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDk4QTBFOUM0MzgyMDAwRDZGNzUgLyogUG9zaXRpb25FcnJv
ck1hYy5tbSAqLzsgfTsKKwkJRkU4MERBNjMwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRp
b24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4
MERBNUYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uY3BwICovOyB9OworCQlGRTgw
REE2NDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNjAwRTlDNDcwMzAwMEQ2Rjc1IC8q
IEpTR2VvbG9jYXRpb24uaCAqLzsgfTsKKwkJRkU4MERBNjUwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpT
R2VvcG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU4MERBNjEwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uY3BwICovOyB9
OworCQlGRTgwREE2NjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNjIwRTlDNDcwMzAw
MEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAqLzsgfTsKKwkJRkU4MERBNzEwRTlDNDcyRjAwMEQ2
Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVy
cm9yLmNwcCAqLzsgfTsKKwkJRkU4MERBNzIwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25F
cnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4
MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovOyB9OworCQlGRTgw
REE3MzBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkYwRTlDNDcyRjAwMEQ2
Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCAqLzsgfTsKKwkJRkU4MERBNzQwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE3MDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlv
bk9wdGlvbnMuaCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAtODgyMSw2ICs4ODQ5LDM0
IEBACiAJCUY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGOUYwRUQ3ODBE
QjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0OUVGOTcwREM1MTQ2MjAwNDI2NkUxIC8qIERhc2hi
b2FyZFN1cHBvcnRDU1NQcm9wZXJ0eU5hbWVzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERh
c2hib2FyZFN1cHBvcnRDU1NQcm9wZXJ0eU5hbWVzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTgwRDdBMjBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxi
YWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tUG9z
aXRpb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0Ez
MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0E0MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1
c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0E1MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRTgwRDdBNjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dlb2xvY2F0aW9uQ3VzdG9t
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QjcwRTlDMUYyNTAwMEQ2
Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdlb2xvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3
QjgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdlb2xvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFODBEN0I5MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gR2VvbG9jYXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTgwRDdCQTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvcG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTgwRDdCQjBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvcG9zaXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkMwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bv
c2l0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHZW9wb3NpdGlvbi5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JEMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9u
Q2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkUwRTlDMUYy
NTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFBvc2l0aW9uQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgw
RDdCRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFODBEN0MwMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmlkbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBQb3NpdGlvbkVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkU4MEQ3QzEwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxs
YmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkVycm9yQ2Fs
bGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QzIwRTlDMUYyNTAw
MEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRo
ID0gUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkU4MEQ3QzMwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbk9wdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QzQwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0
aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25PcHRpb25zLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ5OEEwRTlDNDM4MjAwMEQ2Rjc1IC8qIFBv
c2l0aW9uRXJyb3JNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBQb3NpdGlvbkVycm9yTWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgw
REE1RjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dlb2xvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkU4MERBNjAwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24u
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHZW9sb2NhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2MTBFOUM0NzAzMDAwRDZGNzUgLyogSlNH
ZW9wb3NpdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dl
b3Bvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNjIwRTlD
NDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gSlNHZW9wb3NpdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RTgwREE2RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25FcnJvci5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbkVy
cm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTZGMEU5QzQ3MkYwMDBE
NkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU1Bvc2l0aW9uT3B0aW9ucy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFODBEQTcwMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uT3B0aW9ucy5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAq
LwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC05NDcy
LDYgKzk1MjgsNyBAQAogCQkJCTkzNUM0NzZGMDlBQzRENzMwMEE2QUFCNCAvKiBQbGF0Zm9ybU1v
dXNlRXZlbnRNYWMubW0gKi8sCiAJCQkJQkM5NEQxMDcwQzI3NEY4ODAwNkJDNjE3IC8qIFBsYXRm
b3JtU2NyZWVuTWFjLm1tICovLAogCQkJCTA2NjhFMThFMEFERDk2NDAwMDQxMjhFMCAvKiBQb3B1
cE1lbnVNYWMubW0gKi8sCisJCQkJRkU4MEQ5OEEwRTlDNDM4MjAwMEQ2Rjc1IC8qIFBvc2l0aW9u
RXJyb3JNYWMubW0gKi8sCiAJCQkJMUNFMjRGOTYwRDdDQUYwRTAwN0UwNEMyIC8qIFNjaGVkdWxl
UGFpck1hYy5tbSAqLywKIAkJCQlCQ0FBOTBDMjBBN0VCQTYwMDA4QjEyMjkgLyogU2Nyb2xsYmFy
LmNwcCAqLywKIAkJCQlCQzhCODUzQzBFN0M3RjExMDBBQjY5ODQgLyogU2Nyb2xsYmFyVGhlbWVN
YWMuaCAqLywKQEAgLTExNzQ4LDYgKzExODA1LDEwIEBACiAJCQkJNjVERjMyMkUwOUQxRERCQzAw
MEJFMzI1IC8qIEpTRW50aXR5LmggKi8sCiAJCQkJOTNGOUI3NzIwQkE1RkREQzAwODU0MDY0IC8q
IEpTRW50aXR5UmVmZXJlbmNlLmNwcCAqLywKIAkJCQk5M0Y5Qjc3MzBCQTVGRERDMDA4NTQwNjQg
LyogSlNFbnRpdHlSZWZlcmVuY2UuaCAqLywKKwkJCQlGRTgwREE1RjBFOUM0NzAzMDAwRDZGNzUg
LyogSlNHZW9sb2NhdGlvbi5jcHAgKi8sCisJCQkJRkU4MERBNjAwRTlDNDcwMzAwMEQ2Rjc1IC8q
IEpTR2VvbG9jYXRpb24uaCAqLywKKwkJCQlGRTgwREE2MTBFOUM0NzAzMDAwRDZGNzUgLyogSlNH
ZW9wb3NpdGlvbi5jcHAgKi8sCisJCQkJRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2Vv
cG9zaXRpb24uaCAqLywKIAkJCQlCQ0Q5QzJCQzBDMTdCNjlFMDA1QzkwQTIgLyogSlNOYW1lZE5v
ZGVNYXAuY3BwICovLAogCQkJCUJDRDlDMkJEMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9k
ZU1hcC5oICovLAogCQkJCTE0REMwRDM1MDlGRUQwNzMwMDdCMDIzNSAvKiBKU05vZGUuY3BwICov
LApAQCAtMTE3NTYsNiArMTE4MTcsMTAgQEAKIAkJCQlCQ0Q5QzJCRjBDMTdCNjlFMDA1QzkwQTIg
LyogSlNOb2RlTGlzdC5oICovLAogCQkJCTY1REYzMUU5MDlEMUNDNjAwMDBCRTMyNSAvKiBKU05v
dGF0aW9uLmNwcCAqLywKIAkJCQk2NURGMzFFQTA5RDFDQzYwMDAwQkUzMjUgLyogSlNOb3RhdGlv
bi5oICovLAorCQkJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3Iu
Y3BwICovLAorCQkJCUZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3Iu
aCAqLywKKwkJCQlGRTgwREE2RjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMu
Y3BwICovLAorCQkJCUZFODBEQTcwMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9u
cy5oICovLAogCQkJCTY1REYzMUVCMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1Byb2Nlc3NpbmdJbnN0
cnVjdGlvbi5jcHAgKi8sCiAJCQkJNjVERjMxRUMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmggKi8sCiAJCQkJRTRCNDIzODUwQ0JGQjczQzAwQUYyRUNFIC8qIEpT
UHJvZ3Jlc3NFdmVudC5jcHAgKi8sCkBAIC0xMjgxOSw2ICsxMjg4NCwxMCBAQAogCQkJCUJDNDZD
MUVEMEMwRERCREYwMDIwQ0ZDMyAvKiBKU0NTU1J1bGVDdXN0b20uY3BwICovLAogCQkJCUJDNTgy
NUYyMEMwQjg5MzgwMDUzRjFCNSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwICov
LAogCQkJCUJDMjBGQjdFMEMwRThFNkMwMEQxNDQ3RiAvKiBKU0NTU1ZhbHVlQ3VzdG9tLmNwcCAq
LywKKwkJCQlGRTgwRDdBMjBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxi
YWNrLmNwcCAqLywKKwkJCQlGRTgwRDdBMzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3Np
dGlvbkNhbGxiYWNrLmggKi8sCisJCQkJRkU4MEQ3QTQwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3Vz
dG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCAqLywKKwkJCQlGRTgwRDdBNTBFOUMxRUQyMDAw
RDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLywKIAkJCQk1MUVDOTI1
QjBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAgKi8s
CiAJCQkJNTFFQzkyNUMwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3VzdG9tU1FMU3RhdGVtZW50Q2Fs
bGJhY2suaCAqLywKIAkJCQk1MUVDOTI1RDBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxT
dGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCAqLywKQEAgLTEyODM4LDYgKzEyOTA3LDcgQEAKIAkJ
CQlCQzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJ
CQlCQ0VGQUY0RDBDMzE3RTY5MDBGQTgxRjYgLyogSlNFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJ
QkMzQjdCMjAwRTkxQUFGNDAwRDU0MDY1IC8qIEpTRXZlbnRUYXJnZXROb2RlQ3VzdG9tLmNwcCAq
LywKKwkJCQlGRTgwRDdBNjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHAgKi8sCiAJCQkJQkNFN0IxOTIwRDRFODY5NjAwNzVBNTM5IC8qIEpTSGlzdG9yeUN1c3RvbS5j
cHAgKi8sCiAJCQkJQkM0RURFRjMwQzA4RjNGQjAwN0VERDQ5IC8qIEpTSFRNTEFwcGxldEVsZW1l
bnRDdXN0b20uY3BwICovLAogCQkJCUJDQ0JBRDNBMEMxOEJGRjgwMENFODkwRiAvKiBKU0hUTUxD
b2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTEzNzM0LDYgKzEzODA0LDEyIEBACiAJCQkJQkM2
MEQ4RjEwRDJBMTFFMDAwQjk5MThGIC8qIEV4Y2VwdGlvbkJhc2UuaCAqLywKIAkJCQk5MzgzMUI1
NjBEMDg3RDYwMDBFNUM5ODQgLyogRXhjZXB0aW9uQ29kZS5jcHAgKi8sCiAJCQkJOTM1RkJDRjEw
OUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNvZGUuaCAqLywKKwkJCQlGRTgwRDdCNzBFOUMx
RjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3BwICovLAorCQkJCUZFODBEN0I4MEU5QzFGMjUw
MDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oICovLAorCQkJCUZFODBEN0I5MEU5QzFGMjUwMDBENkY3
NSAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCisJCQkJRkU4MEQ3QkEwRTlDMUYyNTAwMEQ2Rjc1IC8q
IEdlb3Bvc2l0aW9uLmNwcCAqLywKKwkJCQlGRTgwRDdCQjBFOUMxRjI1MDAwRDZGNzUgLyogR2Vv
cG9zaXRpb24uaCAqLywKKwkJCQlGRTgwRDdCQzBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRp
b24uaWRsICovLAogCQkJCTg1MDMxQjJEMEE0NEVGQzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50
LmNwcCAqLywKIAkJCQk4NTAzMUIyRTBBNDRFRkM3MDBGOTkyRTAgLyogS2V5Ym9hcmRFdmVudC5o
ICovLAogCQkJCTE0Q0Y3QzIwMDlGNzExMDYwMEVCMzY2NSAvKiBLZXlib2FyZEV2ZW50LmlkbCAq
LywKQEAgLTEzNzkxLDggKzEzODY3LDE2IEBACiAJCQkJMUEwRDU3MzgwQTVDNzgxMjAwN0VERDRD
IC8qIE92ZXJmbG93RXZlbnQuaWRsICovLAogCQkJCUJFOTFGQzhDMDYxMzM2NjYwMDVFMzc5MCAv
KiBQb3NpdGlvbi5jcHAgKi8sCiAJCQkJQkU5MUZDOEIwNjEzMzY2NjAwNUUzNzkwIC8qIFBvc2l0
aW9uLmggKi8sCisJCQkJRkU4MEQ3QkQwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJh
Y2suaCAqLywKKwkJCQlGRTgwRDdCRTBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFj
ay5pZGwgKi8sCisJCQkJRkU4MEQ3QkYwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3Iu
aCAqLywKKwkJCQlGRTgwRDdDMDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5pZGwg
Ki8sCisJCQkJRkU4MEQ3QzEwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFj
ay5oICovLAorCQkJCUZFODBEN0MyMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2Fs
bGJhY2suaWRsICovLAogCQkJCTM3OTE5QzIxMEI3RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0
ZXJhdG9yLmNwcCAqLywKIAkJCQkzNzkxOUMyMjBCN0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25J
dGVyYXRvci5oICovLAorCQkJCUZFODBEN0MzMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9w
dGlvbnMuaCAqLywKKwkJCQlGRTgwRDdDNDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25PcHRp
b25zLmlkbCAqLywKIAkJCQlBOEVBN0VCNTBBMTk0NUQwMDBBOEVGNUYgLyogUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmNwcCAqLywKIAkJCQlBOEVBN0VCNDBBMTk0NUQwMDBBOEVGNUYgLyogUHJvY2Vz
c2luZ0luc3RydWN0aW9uLmggKi8sCiAJCQkJOTNFRUMxRjUwOUMyODc3NzAwQzUxNUQxIC8qIFBy
b2Nlc3NpbmdJbnN0cnVjdGlvbi5pZGwgKi8sCkBAIC0xNTk1OCw2ICsxNjA0MiwxOCBAQAogCQkJ
CTFDODFCQTBDMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMUM4MUJBMEUwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRE
ZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkUxMkIwRTk4MDkyRjAwODM1NTg4
IC8qIFBvcHVwTWVudVN0eWxlLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdBODBFOUMxRUQy
MDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGRTgwRDdBQTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0M2MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9s
b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3QzkwRTlDMUYyNTAwMEQ2Rjc1IC8q
IEdlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdDQjBFOUMxRjI1MDAwRDZG
NzUgLyogUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3Q0QwRTlD
MUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBE
N0NGMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovLAorCQkJCUZFODBEN0QxMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCBp
biBIZWFkZXJzICovLAorCQkJCUZFODBEQTY0MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0
aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwREE2NjBFOUM0NzAzMDAwRDZGNzUgLyogSlNH
ZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MERBNzIwRTlDNDcyRjAwMEQ2Rjc1
IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MERBNzQwRTlDNDcy
RjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0Y2
QkRGQTBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTFDRjZCRTE1MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwpAQCAtMTYwNzMsNiArMTYxNjksMTIgQEAKIAkJCQk4
NTEzNkNBODBBRUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3Vy
Y2VzICovLAogCQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5n
IGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91
dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBEN0M3MEU5QzFGMjUwMDBENkY3
NSAvKiBHZW9sb2NhdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBEN0NBMEU5QzFG
MjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBE
N0NDMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCBpbiBSZXNvdXJjZXMg
Ki8sCisJCQkJRkU4MEQ3Q0UwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaWRsIGlu
IFJlc291cmNlcyAqLywKKwkJCQlGRTgwRDdEMDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25F
cnJvckNhbGxiYWNrLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3RDIwRTlDMUYyNTAw
MEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTc4MjEs
NiArMTc5MjMsMTYgQEAKIAkJCQkxQzgxQkEwMjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlw
dFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMDkwRTk3MzQ4MzAwMjY2RTA3
IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMEQw
RTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGRTgwRDdBNzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxi
YWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEN0E5MEU5QzFFRDIwMDBENkY3NSAvKiBK
U0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgw
RDdBQjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGRTgwRDdDNTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3QzgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9u
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEOThCMEU5QzQzODIwMDBENkY3NSAvKiBQb3Np
dGlvbkVycm9yTWFjLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MERBNjMwRTlDNDcwMzAwMEQ2
Rjc1IC8qIEpTR2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MERBNjUwRTlD
NDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4
MERBNzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGRTgwREE3MzBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUNGNkJERkIwRTlCQjI2QTAwMjVFMUNEIC8qIE9iakNFdmVu
dExpc3RlbmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUNGNkJFMTQwRTlCQjQ2NzAwMjVFMUNE
IC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNw
cAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNh
bGxiYWNrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIgorCisjaW5jbHVkZSAi
Q1N0cmluZy5oIgorI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkpTR2VvcG9zaXRpb24uaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisj
aW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgPGtqcy9KU0xvY2suaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitKU0N1c3RvbVBvc2l0aW9uQ2FsbGJh
Y2s6OkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayhKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBm
cmFtZSkKKyAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgLCBtX2ZyYW1lKGZyYW1lKQor
eworfQorCit2b2lkIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjazo6aGFuZGxlRXZlbnQoR2VvcG9z
aXRpb24qIGdlb3Bvc2l0aW9uLCBib29sJiByYWlzZWRFeGNlcHRpb24pCit7CisgICAgQVNTRVJU
KG1fY2FsbGJhY2spOworICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICAKKyAgICBpZiAoIW1fZnJh
bWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2Jq
ZWN0KCk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7
CisgICAgCisgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgCisgICAgSlNWYWx1ZSog
ZnVuY3Rpb24gPSBtX2NhbGxiYWNrLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxl
RXZlbnQiKSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBmdW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9PSBD
YWxsVHlwZU5vbmUpIHsKKyAgICAgICAgY2FsbFR5cGUgPSBtX2NhbGxiYWNrLT5nZXRDYWxsRGF0
YShjYWxsRGF0YSk7CisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAg
ICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgYW4gZXhjZXB0aW9uIGJlIHRocm93biBoZXJlPwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uID0gbV9jYWxs
YmFjazsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjaz4g
cHJvdGVjdCh0aGlzKTsKKyAgICAKKyAgICBBcmdMaXN0IGFyZ3M7CisgICAgYXJncy5hcHBlbmQo
dG9KUyhleGVjLCBnZW9wb3NpdGlvbikpOworICAgIAorICAgIGdsb2JhbE9iamVjdC0+c3RhcnRU
aW1lb3V0Q2hlY2soKTsKKyAgICBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERh
dGEsIG1fY2FsbGJhY2ssIGFyZ3MpOworICAgIGdsb2JhbE9iamVjdC0+c3RvcFRpbWVvdXRDaGVj
aygpOworICAgIAorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICBtX2Zy
YW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5yZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMp
OworICAgICAgICAKKyAgICAgICAgcmFpc2VkRXhjZXB0aW9uID0gdHJ1ZTsKKyAgICB9Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrX2gKKyNkZWZpbmUgSlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrX2gKKworI2luY2x1ZGUgIlBvc2l0aW9uQ2FsbGJhY2suaCIKKwor
I2luY2x1ZGUgPGtqcy9KU09iamVjdC5oPgorI2luY2x1ZGUgPGtqcy9wcm90ZWN0Lmg+CisjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIEpTQyB7CisgICAgY2xhc3MgSlNPYmpl
Y3Q7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRnJhbWU7CitjbGFzcyBHZW9w
b3NpdGlvbjsKKworY2xhc3MgSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrIDogcHVibGljIFBvc2l0
aW9uQ2FsbGJhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tUG9z
aXRpb25DYWxsYmFjaz4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJh
bWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2soY2FsbGJh
Y2ssIGZyYW1lKSk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoR2VvcG9z
aXRpb24qLCBib29sJiByYWlzZWRFeGNlcHRpb24pOworcHJpdmF0ZToKKyAgICBKU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2soSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKik7CisKKyAgICBK
U0M6OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxG
cmFtZT4gbV9mcmFtZTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2tfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJD
U3RyaW5nLmgiCisjaW5jbHVkZSAiQ29uc29sZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAiSlNQb3NpdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgor
I2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlIDxranMvSlNMb2NrLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK0pTQ3VzdG9tUG9zaXRpb25F
cnJvckNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayhKU09iamVjdCogY2Fs
bGJhY2ssIEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgLCBt
X2ZyYW1lKGZyYW1lKQoreworfQorCit2b2lkIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
OjpoYW5kbGVFdmVudChQb3NpdGlvbkVycm9yKiBwb3NpdGlvbkVycm9yKQoreworICAgIEFTU0VS
VChtX2NhbGxiYWNrKTsKKyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgCisgICAgaWYgKCFtX2Zy
YW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9mcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9i
amVjdCgpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygp
OworICAgIAorICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgIAorICAgIEpTVmFsdWUq
IGZ1bmN0aW9uID0gbV9jYWxsYmFjay0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhhbmRs
ZUV2ZW50IikpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBl
ID0gZnVuY3Rpb24tPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0g
Q2FsbFR5cGVOb25lKSB7CisgICAgICAgIGNhbGxUeXBlID0gbV9jYWxsYmFjay0+Z2V0Q2FsbERh
dGEoY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGFuIGV4Y2VwdGlvbiBiZSB0aHJvd24gaGVyZT8K
KyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiA9IG1fY2Fs
bGJhY2s7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxs
YmFjaz4gcHJvdGVjdCh0aGlzKTsKKyAgICAKKyAgICBBcmdMaXN0IGFyZ3M7CisgICAgYXJncy5h
cHBlbmQodG9KUyhleGVjLCBwb3NpdGlvbkVycm9yKSk7CisgICAgCisgICAgZ2xvYmFsT2JqZWN0
LT5zdGFydFRpbWVvdXRDaGVjaygpOworICAgIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBl
LCBjYWxsRGF0YSwgbV9jYWxsYmFjaywgYXJncyk7CisgICAgZ2xvYmFsT2JqZWN0LT5zdG9wVGlt
ZW91dENoZWNrKCk7CisgICAgCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAg
ICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5yZXBvcnRDdXJyZW50RXhjZXB0aW9u
KGV4ZWMpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2Fs
bGJhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxl
Iikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFja19oCisjZGVmaW5lIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxi
YWNrX2gKKworI2luY2x1ZGUgIlBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIgorCisjaW5jbHVkZSA8
a2pzL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8a2pzL3Byb3RlY3QuaD4KKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorCituYW1lc3BhY2UgSlNDIHsKKyAgICBjbGFzcyBKU09iamVjdDsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgRnJhbWU7CitjbGFzcyBQb3NpdGlvbkVy
cm9yOworCitjbGFzcyBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayA6IHB1YmxpYyBQb3Np
dGlvbkVycm9yQ2FsbGJhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3Vz
dG9tUG9zaXRpb25FcnJvckNhbGxiYWNrPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ss
IEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tUG9zaXRpb25FcnJv
ckNhbGxiYWNrKGNhbGxiYWNrLCBmcmFtZSkpOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGhh
bmRsZUV2ZW50KFBvc2l0aW9uRXJyb3IqKTsKK3ByaXZhdGU6CisgICAgSlNDdXN0b21Qb3NpdGlv
bkVycm9yQ2FsbGJhY2soSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKik7CisKKyAgICBK
U0M6OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxG
cmFtZT4gbV9mcmFtZTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZiAvLyBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFja19oCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDExNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2VvbG9jYXRpb24u
aCIKKworI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIK
KyNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25DYWxs
YmFjay5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCisjaW5j
bHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJKU1Bvc2l0aW9uT3B0aW9ucy5oIgorCit1
c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUqIEpT
R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFy
Z0xpc3QmIGFyZ3MpCit7CisgICAgLy8gQXJndW1lbnRzOiBQb3NpdGlvbkNhbGxiYWNrLCAob3B0
aW9uYWwpUG9zaXRpb25FcnJvckNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25PcHRpb25zCisg
ICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2s7CisgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGFyZ3MuYXQoZXhlYywgMCktPmdldE9iamVjdCgpOworICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYg
KCFvYmplY3QpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hf
RVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgaWYgKEZy
YW1lKiBmcmFtZSA9IHRvSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+
aW1wbCgpLT5mcmFtZSgpKQorICAgICAgICBwb3NpdGlvbkNhbGxiYWNrID0gSlNDdXN0b21Qb3Np
dGlvbkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBmcmFtZSk7CisgICAgCisgICAgUmVmUHRyPFBv
c2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrOworICAgIGlmICghYXJn
cy5hdChleGVjLCAxKS0+aXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBKU09iamVjdCog
b2JqZWN0ID0gYXJncy5hdChleGVjLCAxKS0+Z2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghb2Jq
ZWN0KSB7CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9F
UlIpOworICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9KU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFs
T2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCkpCisgICAgICAgICAgICBwb3NpdGlvbkVycm9yQ2Fs
bGJhY2sgPSBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZnJh
bWUpOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBwb3NpdGlvbk9w
dGlvbnM7CisgICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDIpLT5pc1VuZGVmaW5lZE9yTnVsbCgpKQor
ICAgICAgICBwb3NpdGlvbk9wdGlvbnMgPSB0b1Bvc2l0aW9uT3B0aW9ucyhhcmdzLmF0KGV4ZWMs
IDIpKTsKKyAgICAKKyAgICBtX2ltcGwtPmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxi
YWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25P
cHRpb25zLmdldCgpKTsKKyAgICAKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNW
YWx1ZSogSlNHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgLy8gQXJndW1lbnRzOiBQb3NpdGlvbkNhbGxiYWNrLCAo
b3B0aW9uYWwpUG9zaXRpb25FcnJvckNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25PcHRpb25z
CisgICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2s7CisgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoZXhlYywgMCktPmdldE9iamVjdCgpOworICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAg
aWYgKCFvYmplY3QpIHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFU
Q0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIAorICAg
IGlmIChGcmFtZSogZnJhbWUgPSB0b0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmpl
Y3QoKSktPmltcGwoKS0+ZnJhbWUoKSkKKyAgICAgICAgcG9zaXRpb25DYWxsYmFjayA9IEpTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZnJhbWUpOworICAgIAorICAgIFJl
ZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjazsKKyAgICBp
ZiAoIWFyZ3MuYXQoZXhlYywgMSktPmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgSlNP
YmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoZXhlYywgMSktPmdldE9iamVjdCgpOworICAgICAgICBp
ZiAoIW9iamVjdCkgeworICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlT
TUFUQ0hfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB9
CisgICAgICAgIAorICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9KU0RPTVdpbmRvdyhleGVj
LT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCkpCisgICAgICAgICAgICBw
b3NpdGlvbkVycm9yQ2FsbGJhY2sgPSBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6Y3Jl
YXRlKG9iamVjdCwgZnJhbWUpOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8UG9zaXRpb25PcHRp
b25zPiBwb3NpdGlvbk9wdGlvbnM7CisgICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDIpLT5pc1VuZGVm
aW5lZE9yTnVsbCgpKQorICAgICAgICBwb3NpdGlvbk9wdGlvbnMgPSB0b1Bvc2l0aW9uT3B0aW9u
cyhhcmdzLmF0KGV4ZWMsIDIpKTsKKyAgICAKKyAgICBpbnQgdyA9IG1faW1wbC0+d2F0Y2hQb3Np
dGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJl
bGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLmdldCgpKTsKKyAgICByZXR1cm4ganNOdW1iZXIoZXhl
Yywgdyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0dl
b2xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9HZW9sb2NhdGlvbi5jcHAJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VvbG9j
YXRpb24uaCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcihQYXNzUmVmUHRyPFBv
c2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykKKyAgICA6
IG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAsIG1fZXJyb3JDYWxsYmFj
ayhlcnJvckNhbGxiYWNrKQorICAgICwgbV90aW1lcih0aGlzLCAmR2VvTm90aWZpZXI6OnRpbWVy
RmlyZWQpCit7CisgICAgaWYgKG1fZXJyb3JDYWxsYmFjayAmJiBvcHRpb25zICYmIG9wdGlvbnMt
PnRpbWVvdXQoKSAhPSAtMSkKKyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qob3B0aW9ucy0+
dGltZW91dCgpIC8gMTAwMC4wKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6
OnRpbWVyRmlyZWQoVGltZXI8R2VvbG9jYXRpb246Okdlb05vdGlmaWVyPiogdGltZXIpCit7Cisg
ICAgQVNTRVJUKG1fZXJyb3JDYWxsYmFjayk7CisgICAgCisgICAgbV90aW1lci5zdG9wKCk7Cisg
ICAgCisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gbmV3IFBvc2l0aW9uRXJyb3Io
NCwgIlRpbWVkIG91dCIpOworICAgIG1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3Iu
Z2V0KCkpOworfQorCitHZW9sb2NhdGlvbjo6R2VvbG9jYXRpb24oRnJhbWUqIGZyYW1lKQorICAg
IDogbV9mcmFtZShmcmFtZSkKK3sKKworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpkaXNjb25uZWN0
RnJhbWUoKQoreworICAgIG1fZnJhbWUgPSAwOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpnZXRD
dXJyZW50UG9zaXRpb24oUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3Np
dGlvbk9wdGlvbnMqIG9wdGlvbnMpCit7CisgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmll
ciA9IG5ldyBHZW9Ob3RpZmllcihzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIG9wdGlv
bnMpOworICAgIAorICAgIGlmICghc3RhcnRVcGRhdGluZyhvcHRpb25zKSkgeworICAgICAgICBp
ZiAobm90aWZpZXItPm1fZXJyb3JDYWxsYmFjaykgeworICAgICAgICAgICAgUmVmUHRyPFBvc2l0
aW9uRXJyb3I+IGVycm9yID0gbmV3IFBvc2l0aW9uRXJyb3IoMSwgIlVuYWJsZSB0byBTdGFydCIp
OworICAgICAgICAgICAgbm90aWZpZXItPm1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJy
b3IuZ2V0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
bV9vbmVTaG90cy5hZGQobm90aWZpZXIpOworfQorCitsb25nIEdlb2xvY2F0aW9uOjp3YXRjaFBv
c2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNz
UmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUG9zaXRpb25PcHRp
b25zKiBvcHRpb25zKQoreworICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBuZXcg
R2VvTm90aWZpZXIoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsKKyAg
ICAKKyAgICBpZiAoIXN0YXJ0VXBkYXRpbmcob3B0aW9ucykpIHsKKyAgICAgICAgaWYgKG5vdGlm
aWVyLT5tX2Vycm9yQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9y
PiBlcnJvciA9IG5ldyBQb3NpdGlvbkVycm9yKDEsICJVbmFibGUgdG8gU3RhcnQiKTsKKyAgICAg
ICAgICAgIG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgp
KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgbV93YXRj
aGVycy5hZGQobm90aWZpZXIpOworCisgICAgbG9uZyB3YXRjaElkID0gcmVpbnRlcnByZXRfY2Fz
dDxsb25nPihub3RpZmllci5nZXQoKSk7CisgICAgQVNTRVJUKHdhdGNoSWQpOworICAgIHJldHVy
biB3YXRjaElkOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpjbGVhcldhdGNoKGxvbmcgd2F0Y2hJ
ZCkKK3sKKyAgICBHZW9Ob3RpZmllciogbm90aWZpZXI9IHJlaW50ZXJwcmV0X2Nhc3Q8R2VvTm90
aWZpZXIqPih3YXRjaElkKTsKKyAgICBpZiAobm90aWZpZXIpCisgICAgICAgIG1fd2F0Y2hlcnMu
cmVtb3ZlKG5vdGlmaWVyKTsKKyAgICAKKyAgICBzdG9wVXBkYXRpbmdJZkVtcHR5KCk7Cit9CisK
K3ZvaWQgR2VvbG9jYXRpb246OnN0b3BVcGRhdGluZ0lmRW1wdHkoKQoreworICAgIGlmIChtX3dh
dGNoZXJzLmlzRW1wdHkoKSAmJiBtX29uZVNob3RzLmlzRW1wdHkoKSk7CisgICAgICAgIHN0b3BV
cGRhdGluZygpOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpoYW5kbGVOZXdQb3NpdGlvbihQYXNz
UmVmUHRyPEdlb3Bvc2l0aW9uPiBuZXdQb3NpdGlvbikKK3sKKyAgICBBU1NFUlQobmV3UG9zaXRp
b24pOworICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gcG9zaXRpb24gPSBuZXdQb3NpdGlvbjsKKyAg
ICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uOworCisgICAgYm9vbCBzaG91bGRDYWxsRXJyb3JD
YWxsYmFjayA9IGZhbHNlOworICAgIHsKKyAgICBHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbV9vbmVTaG90cy5lbmQoKTsKKyAgICBmb3IgKEdlb05vdGlmaWVyU2V0Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG1fb25lU2hvdHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSAqaXQ7CisgICAgICAgIEFTU0VS
VChub3RpZmllci0+bV9zdWNjZXNzQ2FsbGJhY2spOworICAgICAgICAKKyAgICAgICAgbm90aWZp
ZXItPm1fdGltZXIuc3RvcCgpOworICAgICAgICBub3RpZmllci0+bV9zdWNjZXNzQ2FsbGJhY2st
PmhhbmRsZUV2ZW50KG1fbGFzdFBvc2l0aW9uLmdldCgpLCBzaG91bGRDYWxsRXJyb3JDYWxsYmFj
ayk7CisgICAgICAgIGlmIChzaG91bGRDYWxsRXJyb3JDYWxsYmFjaykgeworICAgICAgICAgICAg
UmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gbmV3IFBvc2l0aW9uRXJyb3IoNSwgIkphdmFT
Y3JpcHQgRXJyb3IiKTsKKyAgICAgICAgICAgIGhhbmRsZUVycm9yKGVycm9yLmdldCgpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICB9CisgICAgCisgICAgewor
ICAgIEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3dhdGNoZXJzLmVuZCgp
OworICAgIGZvciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV93YXRjaGVy
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPEdlb05vdGlmaWVy
PiBub3RpZmllciA9ICppdDsKKyAgICAgICAgQVNTRVJUKG5vdGlmaWVyLT5tX3N1Y2Nlc3NDYWxs
YmFjayk7CisgICAgICAgIAorICAgICAgICBub3RpZmllci0+bV90aW1lci5zdG9wKCk7CisgICAg
ICAgIG5vdGlmaWVyLT5tX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQobV9sYXN0UG9zaXRp
b24uZ2V0KCksIHNob3VsZENhbGxFcnJvckNhbGxiYWNrKTsKKyAgICAgICAgaWYgKHNob3VsZENh
bGxFcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gZXJy
b3IgPSBuZXcgUG9zaXRpb25FcnJvcig1LCAiSmF2YVNjcmlwdCBFcnJvciIpOworICAgICAgICAg
ICAgaGFuZGxlRXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorICAgIH0KKworICAgIG1fb25lU2hvdHMuY2xlYXIoKTsKKyAgICBzdG9wVXBk
YXRpbmdJZkVtcHR5KCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OmhhbmRsZUVycm9yKFBvc2l0
aW9uRXJyb3IqIGVycm9yKQoreworICAgIEFTU0VSVChlcnJvcik7CisKKyAgICB7CisgICAgR2Vv
Tm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fb25lU2hvdHMuZW5kKCk7CisgICAg
Zm9yIChHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29uZVNob3RzLmJlZ2lu
KCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlm
aWVyID0gKml0OworICAgICAgICAKKyAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJh
Y2spCisgICAgICAgICAgICBub3RpZmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChl
cnJvcik7CisgICAgfQorICAgIH0KKyAgICBtX29uZVNob3RzLmNsZWFyKCk7CisgICAgCisgICAg
eworICAgIEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3dhdGNoZXJzLmVu
ZCgpOworICAgIGZvciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV93YXRj
aGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPEdlb05vdGlm
aWVyPiBub3RpZmllciA9ICppdDsKKyAgICAgICAgCisgICAgICAgIGlmIChub3RpZmllci0+bV9l
cnJvckNhbGxiYWNrKQorICAgICAgICAgICAgbm90aWZpZXItPm1fZXJyb3JDYWxsYmFjay0+aGFu
ZGxlRXZlbnQoZXJyb3IpOworICAgIH0KKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvZG9tL0dlb2xvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vR2VvbG9jYXRpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0dlb2xvY2F0
aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VvbG9jYXRpb25f
aAorI2RlZmluZSBHZW9sb2NhdGlvbl9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpbmNs
dWRlICJHZW9wb3NpdGlvbi5oIgorI2luY2x1ZGUgIlBvc2l0aW9uQ2FsbGJhY2suaCIKKyNpbmNs
dWRlICJQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJQb3NpdGlvbk9wdGlvbnMu
aCIKKyNpbmNsdWRlICJUaW1lci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZy
YW1lOworICAgIAorY2xhc3MgR2VvbG9jYXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxHZW9sb2Nh
dGlvbj4geworcHVibGljOgorICAgIGNsYXNzIEdlb05vdGlmaWVyIDogcHVibGljIFJlZkNvdW50
ZWQ8R2VvTm90aWZpZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEdlb05vdGlmaWVyKFBhc3NS
ZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0
aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUG9zaXRpb25PcHRpb25zICpvcHRpb25z
KTsKKworICAgICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8R2VvTm90aWZpZXI+KiB0aW1lcik7
CisKKyAgICAgICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+ICAgICAgICBtX3N1Y2Nlc3NDYWxs
YmFjazsKKyAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gICBtX2Vycm9yQ2Fs
bGJhY2s7CisgICAgICAgIFRpbWVyPEdlb05vdGlmaWVyPiAgICAgICAgICAgICAgbV90aW1lcjsK
KyAgICB9OworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2VvbG9jYXRpb24+IGNyZWF0ZShGcmFt
ZSogZnJhbWUpOworICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CisgICAgCisgICAgdmlydHVh
bCB+R2VvbG9jYXRpb24oKSB7fQorCisgICAgR2VvcG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbGFzdFBvc2l0aW9uLmdldCgpOyB9CisKKyAgICB2b2lkIGdldEN1cnJl
bnRQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywg
UGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9u
T3B0aW9ucyogb3B0aW9ucyk7CisgICAgbG9uZyB3YXRjaFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9z
aXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKTsKKyAgICB2
b2lkIGNsZWFyV2F0Y2gobG9uZyB3YXRjaElkKTsKKworICAgIHZvaWQgaGFuZGxlTmV3UG9zaXRp
b24oUGFzc1JlZlB0cjxHZW9wb3NpdGlvbj4gbmV3UG9zaXRpb24pOworICAgIHZvaWQgaGFuZGxl
RXJyb3IoUG9zaXRpb25FcnJvciogZXJyb3IpOworCitwcm90ZWN0ZWQ6CisgICAgR2VvbG9jYXRp
b24oRnJhbWUqIGZyYW1lKTsKKyAgICAKKyAgICB2b2lkIHN0b3BVcGRhdGluZ0lmRW1wdHkoKTsK
KworICAgIHZpcnR1YWwgYm9vbCBzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyogb3B0aW9u
cykgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CisgICAgCisgICAg
dHlwZWRlZiBIYXNoU2V0PCBSZWZQdHI8R2VvTm90aWZpZXI+ID4gR2VvTm90aWZpZXJTZXQ7Cisg
ICAgCisgICAgR2VvTm90aWZpZXJTZXQgbV9vbmVTaG90czsKKyAgICBHZW9Ob3RpZmllclNldCBt
X3dhdGNoZXJzOworICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CisgICAg
CisgICAgRnJhbWUqIG1fZnJhbWU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gR2VvbG9jYXRpb25faApJbmRleDogV2ViQ29yZS9kb20vR2VvbG9jYXRpb24u
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0dlb2xvY2F0aW9uLmlkbAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvZG9tL0dlb2xvY2F0aW9uLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJh
dGVDb25zdHJ1Y3RvcgorICAgIF0gR2VvbG9jYXRpb24geworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgR2VvcG9zaXRpb24gbGFzdFBvc2l0aW9uOworCisgICAgICAgIFtDdXN0b21dIHZvaWQg
Z2V0Q3VycmVudFBvc2l0aW9uKGluIFBvc2l0aW9uQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBp
biBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaywgaW4gUG9zaXRpb25PcHRpb25z
IG9wdGlvbnMpOworCisgICAgICAgIFtDdXN0b21dIGxvbmcgd2F0Y2hQb3NpdGlvbihpbiBQb3Np
dGlvbkNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gUG9zaXRpb25FcnJvckNhbGxiYWNrIGVy
cm9yQ2FsbGJhY2ssIGluIFBvc2l0aW9uT3B0aW9ucyBvcHRpb25zKTsKKworICAgICAgICB2b2lk
IGNsZWFyV2F0Y2goaW4gbG9uZyB3YXRjaElkKTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3Jl
L2RvbS9HZW9wb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vR2VvcG9zaXRp
b24uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vR2VvcG9zaXRpb24uY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0
aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5h
bWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R2VvcG9zaXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcgR2VvcG9zaXRp
b246OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoInBvc2l0
aW9uKCUuNmxnLCAlLjZsZywgJS42bGcgJS42bGcgJS42bGcgJS42bGcgJS42bGcgJS5sbGQpIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXRpdHVkZSwgbV9sb25naXR1ZGUsIG1fYWx0
aXR1ZGUsIG1fYWNjdXJhY3ksIAorICAgICAgICAgICAgICAgICAgICAgICAgICBtX2FsdGl0dWRl
QWNjdXJhY3ksIG1faGVhZGluZywgbV92ZWxvY2l0eSwgbV90aW1lc3RhbXApOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2RvbS9HZW9wb3NpdGlvbi5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvZG9tL0dlb3Bvc2l0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2RvbS9HZW9wb3NpdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEdlb3Bvc2l0aW9uX2gKKyNkZWZpbmUgR2VvcG9zaXRpb25faAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorCisjaWYgUExBVEZPUk0oSVBIT05FKQorI2lmZGVmIF9fT0JKQ19fCitA
Y2xhc3MgQ0xMb2NhdGlvbjsKKyNlbHNlCitjbGFzcyBDTExvY2F0aW9uOworI2VuZGlmCisjZW5k
aWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwor
CitjbGFzcyBHZW9wb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb3Bvc2l0aW9uPiB7Citw
dWJsaWM6CisjaWYgUExBVEZPUk0oSVBIT05FKQorICAgIEdlb3Bvc2l0aW9uKENMTG9jYXRpb24g
KmxvY2F0aW9uKTsKKyNlbmRpZgorICAgIEdlb3Bvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91
YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIAorICAgICAg
ICAgICAgICAgIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgaGVhZGluZywgZG91Ymxl
IHZlbG9jaXR5LCAKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0YW1w
KQorICAgIDogbV9sYXRpdHVkZShsYXRpdHVkZSkKKyAgICAsIG1fbG9uZ2l0dWRlKGxvbmdpdHVk
ZSkKKyAgICAsIG1fYWx0aXR1ZGUoYWx0aXR1ZGUpCisgICAgLCBtX2FjY3VyYWN5KGFjY3VyYWN5
KQorICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNjdXJhY3kpCisgICAgLCBtX2hl
YWRpbmcoaGVhZGluZykKKyAgICAsIG1fdmVsb2NpdHkodmVsb2NpdHkpCisgICAgLCBtX3RpbWVz
dGFtcCh0aW1lc3RhbXApIHt9CisgICAgCisgICAgZG91YmxlIGxhdGl0dWRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXRpdHVkZTsgfQorICAgIGRvdWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVy
biBtX2xvbmdpdHVkZTsgfQorICAgIGRvdWJsZSBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWx0aXR1ZGU7IH0KKyAgICBkb3VibGUgYWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2FjY3Vy
YWN5OyB9CisgICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2Fs
dGl0dWRlQWNjdXJhY3k7IH0KKyAgICBkb3VibGUgaGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
aGVhZGluZzsgfQorICAgIGRvdWJsZSB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2Np
dHk7IH0KKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lc3RhbXA7IH0KKworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworCitwcml2YXRl
OgorICAgIGRvdWJsZSBtX2xhdGl0dWRlOworICAgIGRvdWJsZSBtX2xvbmdpdHVkZTsKKyAgICBk
b3VibGUgbV9hbHRpdHVkZTsKKyAgICBkb3VibGUgbV9hY2N1cmFjeTsKKyAgICBkb3VibGUgbV9h
bHRpdHVkZUFjY3VyYWN5OworICAgIGRvdWJsZSBtX2hlYWRpbmc7CisgICAgZG91YmxlIG1fdmVs
b2NpdHk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fdGltZXN0YW1wOworfTsKKyAgICAKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdlb3Bvc2l0aW9uX2gKSW5kZXg6IFdl
YkNvcmUvZG9tL0dlb3Bvc2l0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9HZW9w
b3NpdGlvbi5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9HZW9wb3NpdGlvbi5pZGwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVy
ZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIEdlb3Bvc2l0aW9uIHsK
KyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBsYXRpdHVkZTsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBsb25naXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBkb3VibGUgYWx0aXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUg
YWNjdXJhY3k7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgYWx0aXR1ZGVBY2N1
cmFjeTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBoZWFkaW5nCisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgdmVsb2NpdHkKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVRpbWVTdGFtcCB0aW1lc3RhbXA7CisKKyAgICAgICAgRE9NU3RyaW5nIHRvU3Ry
aW5nKCk7CisgICAgfTsKK30KSW5kZXg6IFdlYkNvcmUvZG9tL1Bvc2l0aW9uQ2FsbGJhY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlvbkNhbGxiYWNrLmgJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL2RvbS9Qb3NpdGlvbkNhbGxiYWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgUG9zaXRpb25DYWxsYmFja19oCisjZGVmaW5lIFBvc2l0aW9uQ2Fs
bGJhY2tfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorICAgIGNsYXNzIEdlb3Bvc2l0
aW9uOworCisgICAgY2xhc3MgUG9zaXRpb25DYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFBv
c2l0aW9uQ2FsbGJhY2s+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflBvc2l0aW9u
Q2FsbGJhY2soKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KEdlb3Bvc2l0
aW9uKiBwb3NpdGlvbiwgYm9vbCYgcmFpc2VkRXhjZXB0aW9uKSA9IDA7CisgICAgfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBvc2l0aW9uQ2FsbGJhY2tfaApJ
bmRleDogV2ViQ29yZS9kb20vUG9zaXRpb25DYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vUG9zaXRpb25DYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2Rv
bS9Qb3NpdGlvbkNhbGxiYWNrLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9k
dWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3Rv
cgorICAgIF0gUG9zaXRpb25DYWxsYmFjayB7CisgICAgICAgIHZvaWQgaGFuZGxlRXZlbnQoaW4g
R2VvcG9zaXRpb24gcG9zaXRpb24pOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvZG9tL1Bv
c2l0aW9uRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlvbkVycm9yLmgJ
KHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9Qb3NpdGlvbkVycm9yLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUG9zaXRpb25FcnJvcl9oCisjZGVmaW5lIFBvc2l0
aW9uRXJyb3JfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCisjaWYgUExBVEZPUk0o
TUFDKSB8fCBQTEFURk9STShJUEhPTkUpCisjaWZkZWYgX19PQkpDX18KK0BjbGFzcyBOU0Vycm9y
OworI2Vsc2UKK2NsYXNzIE5TRXJyb3I7CisjZW5kaWYKKyNlbmRpZgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgCitjbGFzcyBQb3NpdGlvbkVycm9yIDogcHVibGljIFJlZkNvdW50ZWQ8UG9z
aXRpb25FcnJvcj4geworcHVibGljOgorI2lmIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSVBI
T05FKQorICAgIFBvc2l0aW9uRXJyb3IoTlNFcnJvciAqZXJyb3IpOworI2VuZGlmCisgICAgUG9z
aXRpb25FcnJvcihsb25nIGNvZGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgCisgICAgICAgIDog
bV9jb2RlKGNvZGUpCisgICAgICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpIHsgfQorICAgIAorICAg
IGxvbmcgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIHZvaWQgc2V0Q29kZShs
b25nIGNvZGUpIHsgbV9jb2RlID0gY29kZTsgfQorICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgp
IGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQorICAgIHZvaWQgc2V0TWVzc2FnZShjb25zdCBT
dHJpbmcmIG1lc3NhZ2UpIHsgbV9tZXNzYWdlID0gbWVzc2FnZTsgfQorICAgIAorcHJpdmF0ZToK
KyAgICBsb25nIG1fY29kZTsKKyAgICBTdHJpbmcgbV9tZXNzYWdlOworfTsKKyAgICAKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBvc2l0aW9uRXJyb3JfaApJbmRleDogV2Vi
Q29yZS9kb20vUG9zaXRpb25FcnJvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vUG9z
aXRpb25FcnJvci5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9Qb3NpdGlvbkVycm9y
LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAg
aW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gUG9zaXRpb25F
cnJvciB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGNvZGU7CisgICAgICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbWVzc2FnZTsKKyAgICB9OworCit9CkluZGV4OiBX
ZWJDb3JlL2RvbS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2RvbS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9t
L1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAg
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAor
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFO
RCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
T1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFBvc2l0aW9uRXJyb3JDYWxsYmFja19oCisjZGVmaW5lIFBvc2l0aW9uRXJyb3JDYWxs
YmFja19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBQb3NpdGlvbkVycm9y
OworCisgICAgY2xhc3MgUG9zaXRpb25FcnJvckNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8
UG9zaXRpb25FcnJvckNhbGxiYWNrPiB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5Q
b3NpdGlvbkVycm9yQ2FsbGJhY2soKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2
ZW50KFBvc2l0aW9uRXJyb3IqIHBvc2l0aW9uKSA9IDA7CisgICAgfTsKKyAgICAKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBvc2l0aW9uRXJyb3JDYWxsYmFja19oCkluZGV4
OiBXZWJDb3JlL2RvbS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL2RvbS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yCisgICAgXSBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgeworICAgICAgICB2b2lk
IGhhbmRsZUV2ZW50KGluIFBvc2l0aW9uRXJyb3IgZXJyb3IpOworICAgIH07CisKK30KSW5kZXg6
IFdlYkNvcmUvZG9tL1Bvc2l0aW9uT3B0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L1Bvc2l0aW9uT3B0aW9ucy5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vUG9zaXRpb25P
cHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUG9zaXRpb25P
cHRpb25zX2gKKyNkZWZpbmUgUG9zaXRpb25PcHRpb25zX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICAKKyAgICBjbGFzcyBQb3NpdGlvbk9wdGlvbnMgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
b3NpdGlvbk9wdGlvbnM+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBvc2l0aW9uT3B0aW9ucyhi
b29sIGhpZ2hBY2N1cmFjeSA9IGZhbHNlLCBsb25nIHRpbWVvdXQgPSAtMSkKKyAgICAgICAgICAg
IDogbV9oaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5KQorICAgICAgICAgICAgLCBtX3RpbWVvdXQo
dGltZW91dCkgeyB9CisgICAgICAgIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KCkgY29uc3QgeyBy
ZXR1cm4gbV9oaWdoQWNjdXJhY3k7IH0KKyAgICAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJh
Y3koYm9vbCBlbmFibGUpIHsgbV9oaWdoQWNjdXJhY3kgPSBlbmFibGU7IH0KKyAgICAgICAgbG9u
ZyB0aW1lb3V0KCkgY29uc3QgeyByZXR1cm4gbV90aW1lb3V0OyB9CisgICAgICAgIHZvaWQgc2V0
VGltZW91dChsb25nIHQpIHsgbV90aW1lb3V0ID0gdDsgfQorICAgICAgICAKKyAgICBwcml2YXRl
OgorICAgICAgICBib29sIG1faGlnaEFjY3VyYWN5OworICAgICAgICBsb25nIG1fdGltZW91dDsK
KyAgICB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUG9zaXRp
b25PcHRpb25zX2gKSW5kZXg6IFdlYkNvcmUvZG9tL1Bvc2l0aW9uT3B0aW9ucy5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9kb20vUG9zaXRpb25PcHRpb25zLmlkbAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvZG9tL1Bvc2l0aW9uT3B0aW9ucy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRl
Q29uc3RydWN0b3IKKyAgICBdIFBvc2l0aW9uT3B0aW9ucyB7CisgICAgICAgIGF0dHJpYnV0ZSBi
b29sZWFuIGVuYWJsZUhpZ2hBY2N1cmFjeTsKKyAgICAgICAgYXR0cmlidXRlIGxvbmcgdGltZW91
dDsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAkocmV2aXNpb24gMzc0NTEpCisrKyBX
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRl
ICJGcmFtZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVk
ZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJNaW1lVHlwZUFycmF5LmgiCiAjaW5jbHVkZSAiTmV0
d29ya1N0YXRlTm90aWZpZXIuaCIKQEAgLTg3LDYgKzg4LDEwIEBAIHZvaWQgTmF2aWdhdG9yOjpk
aXNjb25uZWN0RnJhbWUoKQogICAgICAgICBtX21pbWVUeXBlcy0+ZGlzY29ubmVjdEZyYW1lKCk7
CiAgICAgICAgIG1fbWltZVR5cGVzID0gMDsKICAgICB9CisgICAgaWYgKG1fZ2VvbG9jYXRpb24p
IHsKKyAgICAgICAgbV9nZW9sb2NhdGlvbi0+ZGlzY29ubmVjdEZyYW1lKCk7CisgICAgICAgIG1f
Z2VvbG9jYXRpb24gPSAwOworICAgIH0KICAgICBtX2ZyYW1lID0gMDsKIH0KIApAQCAtMTk3LDQg
KzIwMiwxNSBAQCBib29sIE5hdmlnYXRvcjo6b25MaW5lKCkgY29uc3QKICAgICByZXR1cm4gbmV0
d29ya1N0YXRlTm90aWZpZXIoKS5vbkxpbmUoKTsKIH0KIAorR2VvbG9jYXRpb24qIE5hdmlnYXRv
cjo6Z2VvbG9jYXRpb24oKSBjb25zdAoreworI2lmIFBMQVRGT1JNKElQSE9ORSkKKyAgICBpZiAo
IW1fZ2VvbG9jYXRpb24pCisgICAgICAgIG1fZ2VvbG9jYXRpb24gPSBHZW9sb2NhdGlvbjo6Y3Jl
YXRlKG1fZnJhbWUpOworICAgIHJldHVybiBtX2dlb2xvY2F0aW9uLmdldCgpOworI2Vsc2UKKyAg
ICByZXR1cm4gTlVMTDsKKyNlbmRpZgorfQorICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuaAkocmV2aXNpb24gMzc0NTEpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9y
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgIGNsYXNzIEZyYW1lOworICAgIGNsYXNzIEdlb2xvY2F0aW9uOwogICAgIGNsYXNzIE1p
bWVUeXBlQXJyYXk7CiAgICAgY2xhc3MgUGx1Z2luRGF0YTsKICAgICBjbGFzcyBQbHVnaW5BcnJh
eTsKQEAgLTU2LDExICs1NywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wg
amF2YUVuYWJsZWQoKSBjb25zdDsKIAogICAgICAgICBib29sIG9uTGluZSgpIGNvbnN0OworICAg
ICAgICBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24oKSBjb25zdDsKKyAgICAgICAgICAgIAogICAg
IHByaXZhdGU6CiAgICAgICAgIE5hdmlnYXRvcihGcmFtZSopOwogICAgICAgICBGcmFtZSogbV9m
cmFtZTsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8UGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKICAg
ICAgICAgbXV0YWJsZSBSZWZQdHI8TWltZVR5cGVBcnJheT4gbV9taW1lVHlwZXM7CisgICAgICAg
IG11dGFibGUgUmVmUHRyPEdlb2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOwogICAgIH07CiAKIH0K
SW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuaWRsCShyZXZpc2lvbiAzNzQ1MSkKKysrIFdlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIG1vZHVsZSB3aW5kb3cg
ewogICAgICAgICBib29sZWFuIGphdmFFbmFibGVkKCk7CiAgICAgICAgIAogICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgYm9vbGVhbiBvbkxpbmU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBHZW9sb2NhdGlvbiBnZW9sb2NhdGlvbjsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9Qb3NpdGlvbkVycm9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vbWFjL1Bvc2l0aW9uRXJyb3JNYWMubW0JKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3Bs
YXRmb3JtL21hYy9Qb3NpdGlvbkVycm9yTWFjLm1tCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4LCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJQb3NpdGlv
bkVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworUG9zaXRpb25FcnJvcjo6UG9zaXRp
b25FcnJvcihOU0Vycm9yICplcnJvcikKKyAgICA6IG1fY29kZShbZXJyb3IgY29kZV0pCisgICAg
LCBtX21lc3NhZ2UoW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSkKK3sKKworfQorICAgIAor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24253</attachid>
            <date>2008-10-09 20:33:52 -0700</date>
            <delta_ts>2008-10-10 10:28:45 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>GeoLocation-WebKit.org.patch.txt</filename>
            <type>text/plain</type>
            <size>88655</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzQ1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODggQEAKKzIwMDgtMTAtMDkgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc1CisgICAgICAgIAor
ICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9sb2NhdGlvbiBBUEkKKyAgICAgICAg
CisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkvc3BlYy1zb3VyY2UuaHRtbAorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6SlNDdXN0b21Q
b3NpdGlvbkVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlv
bkVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1
c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
Q3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0dl
b2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBkb20vR2VvbG9jYXRpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2Vv
Tm90aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjp0
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9sb2NhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6ZGlzY29ubmVjdEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
R2VvbG9jYXRpb246OmNsZWFyV2F0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
OnN0b3BVcGRhdGluZ0lmRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Omhh
bmRsZU5ld1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpoYW5kbGVF
cnJvcik6CisgICAgICAgICogZG9tL0dlb2xvY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246On5HZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbjo6bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKiBkb20vR2VvbG9jYXRpb24uaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBkb20vR2VvcG9zaXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Okdlb3Bvc2l0aW9uOjp0b1N0cmluZyk6CisgICAgICAgICogZG9tL0dlb3Bvc2l0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246Okdlb3Bvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjpsYXRpdHVkZSk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9wb3NpdGlvbjo6bG9uZ2l0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0
aW9uOjphbHRpdHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6YWNjdXJhY3kp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OmFsdGl0dWRlQWNjdXJhY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OmhlYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
R2VvcG9zaXRpb246OnZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjp0
aW1lc3RhbXApOgorICAgICAgICAqIGRvbS9HZW9wb3NpdGlvbi5pZGw6IEFkZGVkLgorICAgICAg
ICAqIGRvbS9Qb3NpdGlvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb25DYWxsYmFjazo6flBvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9Qb3NpdGlv
bkNhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL1Bvc2l0aW9uRXJyb3IuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpQb3NpdGlvbkVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb25FcnJvcjo6c2V0Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9y
OjptZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OnNldE1lc3NhZ2Up
OgorICAgICAgICAqIGRvbS9Qb3NpdGlvbkVycm9yLmlkbDogQWRkZWQuCisgICAgICAgICogZG9t
L1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0
aW9uRXJyb3JDYWxsYmFjazo6flBvc2l0aW9uRXJyb3JDYWxsYmFjayk6CisgICAgICAgICogZG9t
L1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9Qb3NpdGlv
bk9wdGlvbnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OlBv
c2l0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OmVuYWJs
ZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OnNldEVu
YWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OnRp
bWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpzZXRUaW1lb3V0KToK
KyAgICAgICAgKiBkb20vUG9zaXRpb25PcHRpb25zLmlkbDogQWRkZWQuCisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpkaXNjb25uZWN0
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpnZW9sb2NhdGlvbik6CisgICAg
ICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Bvc2l0aW9uRXJyb3JNYWMubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6UG9zaXRpb25FcnJvcik6CisKIDIwMDgtMTAtMDkg
IEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9s
aXZlciBIdW50LgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMzc0NTYpCisrKyBXZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDggQEAg
RE9NX0NMQVNTRVMgPSBcCiAgICAgRXZlbnRUYXJnZXROb2RlIFwKICAgICBGaWxlIFwKICAgICBG
aWxlTGlzdCBcCisgICAgR2VvbG9jYXRpb24gXAorICAgIEdlb3Bvc2l0aW9uIFwKICAgICBIVE1M
QW5jaG9yRWxlbWVudCBcCiAgICAgSFRNTEFwcGxldEVsZW1lbnQgXAogICAgIEhUTUxBcmVhRWxl
bWVudCBcCkBAIC0xNzksNiArMTgxLDEwIEBAIERPTV9DTEFTU0VTID0gXAogICAgIE92ZXJmbG93
RXZlbnQgXAogICAgIFBsdWdpbiBcCiAgICAgUGx1Z2luQXJyYXkgXAorICAgIFBvc2l0aW9uQ2Fs
bGJhY2sgXAorICAgIFBvc2l0aW9uRXJyb3IgXAorICAgIFBvc2l0aW9uRXJyb3JDYWxsYmFjayBc
CisgICAgUG9zaXRpb25PcHRpb25zIFwKICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gXAogICAg
IFByb2dyZXNzRXZlbnQgXAogICAgIFJHQkNvbG9yIFwKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMzc0
NTYpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiAr
MzI1LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNDbGlwYm9hcmRDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1
c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNr
LmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCBc
CisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAg
XAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBc
CiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5jcHAgXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suaCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgXApAQCAtMzQ3LDYgKzM1MSw3IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Lmgg
XAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2UuaCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQWxsQ29sbGVjdGlvbi5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29s
bGVjdGlvbi5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0
b20uY3BwIFwKQEAgLTY0Myw2ICs2NDgsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJD
b3JlL2RvbS9FeGNlcHRpb25CYXNlLmggXAogCVdlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuY3Bw
IFwKIAlXZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmggXAorCVdlYkNvcmUvZG9tL0dlb2xvY2F0
aW9uLmNwcCBcCisJV2ViQ29yZS9kb20vR2VvbG9jYXRpb24uaCBcCisJV2ViQ29yZS9kb20vR2Vv
cG9zaXRpb24uY3BwIFwKKwlXZWJDb3JlL2RvbS9HZW9wb3NpdGlvbi5oIFwKIAlXZWJDb3JlL2Rv
bS9LZXlib2FyZEV2ZW50LmNwcCBcCiAJV2ViQ29yZS9kb20vS2V5Ym9hcmRFdmVudC5oIFwKIAlX
ZWJDb3JlL2RvbS9NYXBwZWRBdHRyaWJ1dGUuY3BwIFwKQEAgLTY4NCw4ICs2OTMsMTIgQEAgd2Vi
Y29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL2RvbS9PdmVyZmxvd0V2ZW50LmggXAogCVdlYkNv
cmUvZG9tL1Bvc2l0aW9uLmNwcCBcCiAJV2ViQ29yZS9kb20vUG9zaXRpb24uaCBcCisJV2ViQ29y
ZS9kb20vUG9zaXRpb25DYWxsYmFjay5oIFwKKwlXZWJDb3JlL2RvbS9Qb3NpdGlvbkVycm9yLmgg
XAorCVdlYkNvcmUvZG9tL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oIFwKIAlXZWJDb3JlL2RvbS9Q
b3NpdGlvbkl0ZXJhdG9yLmNwcCBcCiAJV2ViQ29yZS9kb20vUG9zaXRpb25JdGVyYXRvci5oIFwK
KwlXZWJDb3JlL2RvbS9Qb3NpdGlvbk9wdGlvbnMuaCBcCiAJV2ViQ29yZS9kb20vUHJvY2Vzc2lu
Z0luc3RydWN0aW9uLmNwcCBcCiAJV2ViQ29yZS9kb20vUHJvY2Vzc2luZ0luc3RydWN0aW9uLmgg
XAogCVdlYkNvcmUvZG9tL1Byb2dyZXNzRXZlbnQuY3BwIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gMzc0NTYp
CisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC01MjksNiArNTI5LDgg
QEAgU09VUkNFUyArPSBcCiAgICAgZG9tL0V2ZW50VGFyZ2V0Tm9kZS5jcHAgXAogICAgIGRvbS9F
eGNlcHRpb25CYXNlLmNwcCBcCiAgICAgZG9tL0V4Y2VwdGlvbkNvZGUuY3BwIFwKKyAgICBkb20v
R2VvbG9jYXRpb24uY3BwIFwKKyAgICBkb20vR2VvcG9zaXRpb24uY3BwIFwKICAgICBkb20vS2V5
Ym9hcmRFdmVudC5jcHAgXAogICAgIGRvbS9NYXBwZWRBdHRyaWJ1dGUuY3BwIFwKICAgICBkb20v
TWVzc2FnZUNoYW5uZWwuY3BwIFwKQEAgLTExOTMsNyArMTE5NSwxMCBAQCBjb250YWlucyhERUZJ
TkVTLCBFTkFCTEVfREFUQUJBU0U9MSkgewogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNR
TFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU0Rh
dGFiYXNlQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTU1FMUmVzdWx0U2V0Um93
TGlzdEN1c3RvbS5jcHAgXAotICAgICAgICBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3Vz
dG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcCBc
CisgICAgICAgIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwIFwKKyAgICAgICAg
YmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCBcCisgICAgICAgIGJpbmRp
bmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcAogCiAgICAgSURMX0JJTkRJ
TkdTICs9IFwKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZS5pZGwgXApJbmRleDogV2ViQ29yZS9X
ZWJDb3JlU291cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlU291cmNlcy5i
a2wJKHJldmlzaW9uIDM3NDU2KQorKysgV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHdvcmtp
bmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9m
IGZpbGVzIG5lZQogICAgICAgICBiaW5kaW5ncy9qcy9KU0NTU1J1bGVDdXN0b20uY3BwCiAgICAg
ICAgIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAKICAgICAgICAg
YmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlND
dXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFjay5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxT
dGF0ZW1lbnRDYWxsYmFjay5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0
ZW1lbnRFcnJvckNhbGxiYWNrLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRy
YW5zYWN0aW9uQ2FsbGJhY2suY3BwCkBAIC01OSw2ICs2MSw3IEBAIFRoaXMgZmlsZSBjb250YWlu
cyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgYmluZGluZ3MvanMvSlNFdmVudEN1c3Rv
bS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5jcHAKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pz
L0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENv
bGxlY3Rpb24uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKICAg
ICAgICAgYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKQEAgLTIzOSw2
ICsyNDIsOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAg
ICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFdmVudFRhcmdldE5vZGUuY3BwCiAgICAgICAg
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlLmNwcAogICAgICAgICBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTRmlsZUxpc3QuY3BwCisgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNHZW9sb2NhdGlvbi5jcHAKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dlb3Bv
c2l0aW9uLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEFuY2hvckVs
ZW1lbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MQXBwbGV0RWxl
bWVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxBcmVhRWxlbWVu
dC5jcHAKQEAgLTMyMyw2ICszMjgsOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2Yg
ZmlsZXMgbmVlCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNPdmVyZmxvd0V2ZW50
LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGx1Z2luLmNwcAogICAgICAg
ICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGx1Z2luQXJyYXkuY3BwCisgICAgICAgIERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNQb3NpdGlvbkVycm9yLmNwcAorICAgICAgICBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUG9zaXRpb25PcHRpb25zLmNwcAogICAgICAgICBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcAogICAgICAgICBEZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTUHJvZ3Jlc3NFdmVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU1JhbmdlLmNwcApAQCAtMzk1LDYgKzQwMiw4IEBAIFRoaXMgZmlsZSBjb250YWlu
cyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgZG9tL0V2ZW50VGFyZ2V0Tm9kZS5jcHAK
ICAgICAgICAgZG9tL0V4Y2VwdGlvbkJhc2UuY3BwCiAgICAgICAgIGRvbS9FeGNlcHRpb25Db2Rl
LmNwcAorICAgICAgICBkb20vR2VvbG9jYXRpb24uY3BwCisgICAgICAgIGRvbS9HZW9wb3NpdGlv
bi5jcHAKICAgICAgICAgZG9tL0tleWJvYXJkRXZlbnQuY3BwCiAgICAgICAgIGRvbS9NYXBwZWRB
dHRyaWJ1dGUuY3BwCiAgICAgICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5jcHAKSW5kZXg6IFdlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9X
ZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMzc0NTYpCisrKyBXZWJDb3Jl
L1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC03MDAsNiAr
NzAwLDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBh
dGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNc
SlNHZW9sb2NhdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU0dlb3Bvc2l0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTSGlzdG9yeS5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTEw
NTIsNiArMTA2MCwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRT
b3VyY2VzXEpTUG9zaXRpb25FcnJvci5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU1Bvc2l0aW9uT3B0aW9ucy5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5oIg0K
IAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTEwNTAyLDYgKzEwNTE4LDM4IEBACiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxHZW9sb2NhdGlv
bi5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxl
YXNlX1BHT3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENv
bXBpbGVyVG9vbCINCisJCQkJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249InRydWUiDQorCQkJ
CQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxHZW9sb2NhdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cZG9tXEdlb3Bvc2l0aW9uLmNw
cCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2Vf
UEdPfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGls
ZXJUb29sIg0KKwkJCQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSINCisJCQkJCS8+
DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iLi5cZG9tXEdlb3Bvc2l0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cS2V5Ym9hcmRFdmVudC5jcHAi
DQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMTA3ODYsNiArMTA4MzQsMjIg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
ZG9tXFBvc2l0aW9uQ2FsbGJhY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGRvbVxQb3NpdGlvbkVycm9yLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cUG9zaXRpb25FcnJv
ckNhbGxiYWNrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxkb21cUG9zaXRpb25PcHRpb25zLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxkb21cUG9zaXRpb25JdGVyYXRvci5jcHAi
DQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMTMwNjUsNiArMTMxMjksMjIg
QEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXGJpbmRpbmdzXGpzXEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAiDQorCQkJCQk+DQor
CQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3Nc
anNcSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJ
CQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNDdXN0b21Qb3Np
dGlvbkVycm9yQ2FsbGJhY2suY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxl
DQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTQ3VzdG9tUG9zaXRpb25FcnJv
ckNhbGxiYWNrLmgiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJl
bGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5j
cHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkBAIC0xMzE5Myw2ICsxMzI3MywxMCBAQAogCQkJ
CQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4N
CisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNIaXN0b3J5
Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzNzQ1NikKKysrIFdlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MjE0
LDYgKzQyMTQsMzMgQEAKIAkJRjkxNkM0OEQwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY5MTZDNDhCMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0
UHJvZ3Jlc3NFdmVudC5jcHAgKi87IH07CiAJCUY5MTZDNDhFMERCNTEwRjgwMDc2Q0Q4MyAvKiBK
U1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0OEMwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0
cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUY5RjBFRDdBMERCNTBDQTIwMEQxNkRC
OSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxI
dHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLzsgfTsKKwkJRkU4MEQ3QTcwRTlDMUVEMjAwMEQ2
Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBMjBFOUMxRUQyMDAwRDZGNzUgLyogSlND
dXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJRkU4MEQ3QTgwRTlDMUVEMjAwMEQ2
Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QTMwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFjay5oICovOyB9OworCQlGRTgwRDdBOTBFOUMxRUQyMDAwRDZGNzUg
LyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QTQwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpT
Q3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJRkU4MEQ3QUEwRTlDMUVE
MjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBNTBFOUMxRUQyMDAwRDZG
NzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLzsgfTsKKwkJRkU4MEQ3QUIw
RTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1
IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovOyB9OworCQlGRTgwRDdDNTBFOUMxRjI1MDAw
RDZGNzUgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU4MEQ3QjcwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNw
cCAqLzsgfTsKKwkJRkU4MEQ3QzYwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCODBFOUMx
RjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaCAqLzsgfTsKKwkJRkU4MEQ3QzcwRTlDMUYyNTAw
MEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QjkwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9u
LmlkbCAqLzsgfTsKKwkJRkU4MEQ3QzgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JB
MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5jcHAgKi87IH07CisJCUZFODBEN0M5MEU5
QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QkIwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0
aW9uLmggKi87IH07CisJCUZFODBEN0NBMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5p
ZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBE
N0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgKi87IH07CisJCUZFODBEN0NC
MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyog
UG9zaXRpb25DYWxsYmFjay5oICovOyB9OworCQlGRTgwRDdDQzBFOUMxRjI1MDAwRDZGNzUgLyog
UG9zaXRpb25DYWxsYmFjay5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFODBEN0JFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNr
LmlkbCAqLzsgfTsKKwkJRkU4MEQ3Q0QwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JG
MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmggKi87IH07CisJCUZFODBEN0NFMEU5
QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzAwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBv
c2l0aW9uRXJyb3IuaWRsICovOyB9OworCQlGRTgwRDdDRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9z
aXRpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTgwRDdDMTBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxi
YWNrLmggKi87IH07CisJCUZFODBEN0QwMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9y
Q2FsbGJhY2suaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTgwRDdDMjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmlk
bCAqLzsgfTsKKwkJRkU4MEQ3RDEwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzMw
RTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oICovOyB9OworCQlGRTgwRDdEMjBF
OUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25PcHRpb25zLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzQwRTlDMUYyNTAwMEQ2Rjc1IC8q
IFBvc2l0aW9uT3B0aW9ucy5pZGwgKi87IH07CisJCUZFODBEQTYzMEU5QzQ3MDMwMDBENkY3NSAv
KiBKU0dlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFODBEQTVGMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCAq
LzsgfTsKKwkJRkU4MERBNjQwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYwMEU5QzQ3
MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmggKi87IH07CisJCUZFODBEQTY1MEU5QzQ3MDMw
MDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYxMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0
aW9uLmNwcCAqLzsgfTsKKwkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBE
QTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi87IH07CisJCUZFODBEQTcx
MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8q
IEpTUG9zaXRpb25FcnJvci5jcHAgKi87IH07CisJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAv
KiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAq
LzsgfTsKKwkJRkU4MERBNzMwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZG
MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgKi87IH07CisJCUZFODBE
QTc0MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNzAwRTlDNDcyRjAwMEQ2Rjc1
IC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rp
b24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTg4
MjMsNiArODg1MCwzMyBAQAogCQlGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJl
cXVlc3RQcm9ncmVzc0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRjlGMEVENzgwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVu
dC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVu
dC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDlFRjk3MERDNTE0NjIwMDQy
NjZFMSAvKiBEYXNoYm9hcmRTdXBwb3J0Q1NTUHJvcGVydHlOYW1lcy5pbiAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRl
eHQ7IHBhdGggPSBEYXNoYm9hcmRTdXBwb3J0Q1NTUHJvcGVydHlOYW1lcy5pbjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QTIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9t
UG9zaXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRTgwRDdBMzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNr
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tUG9zaXRpb25DYWxs
YmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBNDBFOUMxRUQyMDAw
RDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUg
LyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRp
b25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW9s
b2NhdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0I3
MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBHZW9sb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFODBEN0I4MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW9sb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRTgwRDdCOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdlb2xvY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkEwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb3Bvc2l0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkIwRTlDMUYyNTAwMEQ2Rjc1IC8q
IEdlb3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb3Bvc2l0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JDMEU5QzFGMjUwMDBE
NkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2VvcG9zaXRp
b24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCRDBFOUMxRjI1MDAw
RDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQb3NpdGlvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
ODBEN0JFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBQb3NpdGlvbkNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU4MEQ3QkYwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdDMDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25F
cnJvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25FcnJvci5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0MxMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbkVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9z
aXRpb25FcnJvckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBE
N0MyMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFBvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFODBEN0MzMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlv
bnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25PcHRpb25zLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0M0MEU5QzFGMjUwMDBENkY3NSAv
KiBQb3NpdGlvbk9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBvc2l0aW9uT3B0
aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTVGMEU5QzQ3MDMw
MDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTR2VvbG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTgwREE2MDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlb2xvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFODBEQTYxMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VvcG9zaXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUg
LyogSlNHZW9wb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dl
b3Bvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTZEMEU5QzQ3
MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNQb3NpdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNkYwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9z
aXRpb25PcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UG9zaXRpb25PcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERB
NzAwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2lu
IFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTExNzUwLDYgKzExODA0LDEw
IEBACiAJCQkJNjVERjMyMkUwOUQxRERCQzAwMEJFMzI1IC8qIEpTRW50aXR5LmggKi8sCiAJCQkJ
OTNGOUI3NzIwQkE1RkREQzAwODU0MDY0IC8qIEpTRW50aXR5UmVmZXJlbmNlLmNwcCAqLywKIAkJ
CQk5M0Y5Qjc3MzBCQTVGRERDMDA4NTQwNjQgLyogSlNFbnRpdHlSZWZlcmVuY2UuaCAqLywKKwkJ
CQlGRTgwREE1RjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgKi8sCisJCQkJ
RkU4MERBNjAwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCAqLywKKwkJCQlGRTgw
REE2MTBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5jcHAgKi8sCisJCQkJRkU4MERB
NjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAqLywKIAkJCQlCQ0Q5QzJCQzBD
MTdCNjlFMDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAuY3BwICovLAogCQkJCUJDRDlDMkJEMEMx
N0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5oICovLAogCQkJCTE0REMwRDM1MDlGRUQw
NzMwMDdCMDIzNSAvKiBKU05vZGUuY3BwICovLApAQCAtMTE3NTgsNiArMTE4MTYsMTAgQEAKIAkJ
CQlCQ0Q5QzJCRjBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlzdC5oICovLAogCQkJCTY1REYz
MUU5MDlEMUNDNjAwMDBCRTMyNSAvKiBKU05vdGF0aW9uLmNwcCAqLywKIAkJCQk2NURGMzFFQTA5
RDFDQzYwMDAwQkUzMjUgLyogSlNOb3RhdGlvbi5oICovLAorCQkJCUZFODBEQTZEMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovLAorCQkJCUZFODBEQTZFMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLywKKwkJCQlGRTgwREE2RjBFOUM0NzJGMDAw
RDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwICovLAorCQkJCUZFODBEQTcwMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovLAogCQkJCTY1REYzMUVCMDlEMUNDNjAw
MDBCRTMyNSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgKi8sCiAJCQkJNjVERjMxRUMw
OUQxQ0M2MDAwMEJFMzI1IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCiAJCQkJRTRC
NDIzODUwQ0JGQjczQzAwQUYyRUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5jcHAgKi8sCkBAIC0xMjgy
Miw2ICsxMjg4NCwxMCBAQAogCQkJCUJDNDZDMUVEMEMwRERCREYwMDIwQ0ZDMyAvKiBKU0NTU1J1
bGVDdXN0b20uY3BwICovLAogCQkJCUJDNTgyNUYyMEMwQjg5MzgwMDUzRjFCNSAvKiBKU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJDMjBGQjdFMEMwRThFNkMwMEQxNDQ3
RiAvKiBKU0NTU1ZhbHVlQ3VzdG9tLmNwcCAqLywKKwkJCQlGRTgwRDdBMjBFOUMxRUQyMDAwRDZG
NzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCAqLywKKwkJCQlGRTgwRDdBMzBFOUMx
RUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggKi8sCisJCQkJRkU4MEQ3
QTQwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCAq
LywKKwkJCQlGRTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9y
Q2FsbGJhY2suaCAqLywKIAkJCQk1MUVDOTI1QjBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21T
UUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAgKi8sCiAJCQkJNTFFQzkyNUMwQ0U5MERENDAwRjkwMzA4
IC8qIEpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suaCAqLywKIAkJCQk1MUVDOTI1RDBDRTkw
REQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCAqLywK
QEAgLTEyODQxLDYgKzEyOTA3LDcgQEAKIAkJCQlCQzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyog
SlNFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0VGQUY0RDBDMzE3RTY5MDBGQTgxRjYgLyog
SlNFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzQjdCMjAwRTkxQUFGNDAwRDU0MDY1IC8qIEpT
RXZlbnRUYXJnZXROb2RlQ3VzdG9tLmNwcCAqLywKKwkJCQlGRTgwRDdBNjBFOUMxRUQyMDAwRDZG
NzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFN0IxOTIwRDRFODY5NjAw
NzVBNTM5IC8qIEpTSGlzdG9yeUN1c3RvbS5jcHAgKi8sCiAJCQkJQkM0RURFRjMwQzA4RjNGQjAw
N0VERDQ5IC8qIEpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDQ0JBRDNB
MEMxOEJGRjgwMENFODkwRiAvKiBKU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTEz
NzM3LDYgKzEzODA0LDEyIEBACiAJCQkJQkM2MEQ4RjEwRDJBMTFFMDAwQjk5MThGIC8qIEV4Y2Vw
dGlvbkJhc2UuaCAqLywKIAkJCQk5MzgzMUI1NjBEMDg3RDYwMDBFNUM5ODQgLyogRXhjZXB0aW9u
Q29kZS5jcHAgKi8sCiAJCQkJOTM1RkJDRjEwOUJBMTQzQjAwRTIzMEIxIC8qIEV4Y2VwdGlvbkNv
ZGUuaCAqLywKKwkJCQlGRTgwRDdCNzBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3Bw
ICovLAorCQkJCUZFODBEN0I4MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oICovLAor
CQkJCUZFODBEN0I5MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCisJCQkJ
RkU4MEQ3QkEwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCAqLywKKwkJCQlGRTgw
RDdCQjBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCAqLywKKwkJCQlGRTgwRDdCQzBF
OUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaWRsICovLAogCQkJCTg1MDMxQjJEMEE0NEVG
QzcwMEY5OTJFMCAvKiBLZXlib2FyZEV2ZW50LmNwcCAqLywKIAkJCQk4NTAzMUIyRTBBNDRFRkM3
MDBGOTkyRTAgLyogS2V5Ym9hcmRFdmVudC5oICovLAogCQkJCTE0Q0Y3QzIwMDlGNzExMDYwMEVC
MzY2NSAvKiBLZXlib2FyZEV2ZW50LmlkbCAqLywKQEAgLTEzNzk0LDggKzEzODY3LDE2IEBACiAJ
CQkJMUEwRDU3MzgwQTVDNzgxMjAwN0VERDRDIC8qIE92ZXJmbG93RXZlbnQuaWRsICovLAogCQkJ
CUJFOTFGQzhDMDYxMzM2NjYwMDVFMzc5MCAvKiBQb3NpdGlvbi5jcHAgKi8sCiAJCQkJQkU5MUZD
OEIwNjEzMzY2NjAwNUUzNzkwIC8qIFBvc2l0aW9uLmggKi8sCisJCQkJRkU4MEQ3QkQwRTlDMUYy
NTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQlGRTgwRDdCRTBFOUMxRjI1
MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5pZGwgKi8sCisJCQkJRkU4MEQ3QkYwRTlDMUYy
NTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCAqLywKKwkJCQlGRTgwRDdDMDBFOUMxRjI1MDAw
RDZGNzUgLyogUG9zaXRpb25FcnJvci5pZGwgKi8sCisJCQkJRkU4MEQ3QzEwRTlDMUYyNTAwMEQ2
Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICovLAorCQkJCUZFODBEN0MyMEU5QzFGMjUw
MDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsICovLAogCQkJCTM3OTE5QzIxMEI3
RDE4ODYwMEE1Njk5OCAvKiBQb3NpdGlvbkl0ZXJhdG9yLmNwcCAqLywKIAkJCQkzNzkxOUMyMjBC
N0QxODg2MDBBNTY5OTggLyogUG9zaXRpb25JdGVyYXRvci5oICovLAorCQkJCUZFODBEN0MzMEU5
QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCAqLywKKwkJCQlGRTgwRDdDNDBFOUMx
RjI1MDAwRDZGNzUgLyogUG9zaXRpb25PcHRpb25zLmlkbCAqLywKIAkJCQlBOEVBN0VCNTBBMTk0
NUQwMDBBOEVGNUYgLyogUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCAqLywKIAkJCQlBOEVBN0VC
NDBBMTk0NUQwMDBBOEVGNUYgLyogUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCiAJCQkJOTNF
RUMxRjUwOUMyODc3NzAwQzUxNUQxIC8qIFByb2Nlc3NpbmdJbnN0cnVjdGlvbi5pZGwgKi8sCkBA
IC0xNTk2MSw2ICsxNjA0MiwxOCBAQAogCQkJCTFDODFCQTBDMEU5NzM0ODMwMDI2NkUwNyAvKiBK
YXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUJBMEUwRTk3
MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMzQkUxMkIwRTk4MDkyRjAwODM1NTg4IC8qIFBvcHVwTWVudVN0eWxlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRTgwRDdBODBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdBQTBFOUMxRUQyMDAwRDZGNzUgLyog
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBE
N0M2MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
RkU4MEQ3QzkwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTgwRDdDQjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkU4MEQ3Q0QwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0NGMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlv
bkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0QxMEU5QzFGMjUwMDBE
NkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEQTY0MEU5
QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgw
REE2NjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkU4MERBNzIwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkU4MERBNzQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25z
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQ0Y2QkRGQTBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2
ZW50TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDRjZCRTE1MEU5QkI0NjcwMDI1RTFD
RCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRDY3
MDgwRTlFOURFQjAwRTQyMEYwIC8qIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmgg
aW4gSGVhZGVycyAqLywKQEAgLTE2MDc3LDYgKzE2MTcwLDEyIEBACiAJCQkJODUxMzZDQTgwQUVE
NjY1OTAwRjkwQTNEIC8qIHdlc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJ
CQkxQUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJj
ZXMgKi8sCiAJCQkJMUFCMUFFN0IwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5n
IGluIFJlc291cmNlcyAqLywKKwkJCQlGRTgwRDdDNzBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9j
YXRpb24uaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQlGRTgwRDdDQTBFOUMxRjI1MDAwRDZGNzUg
LyogR2VvcG9zaXRpb24uaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQlGRTgwRDdDQzBFOUMxRjI1
MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUZF
ODBEN0NFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmlkbCBpbiBSZXNvdXJjZXMg
Ki8sCisJCQkJRkU4MEQ3RDAwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFj
ay5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBEN0QyMEU5QzFGMjUwMDBENkY3NSAvKiBQ
b3NpdGlvbk9wdGlvbnMuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE3ODI1LDYgKzE3OTI0LDE1
IEBACiAJCQkJMUM4MUJBMDIwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTFDODFCQTA5MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2Ny
aXB0Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDODFCQTBEMEU5NzM0ODMwMDI2
NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4
MEQ3QTcwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlGRTgwRDdBOTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3Np
dGlvbkVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3QUIwRTlDMUVE
MjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RkU4MEQ3QzUwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUZFODBEN0M4MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGRTgwREE2MzBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwREE2NTBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9w
b3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwREE3MTBFOUM0NzJGMDAwRDZGNzUg
LyogSlNQb3NpdGlvbkVycm9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEQTczMEU5QzQ3
MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkx
Q0Y2QkRGQjBFOUJCMjZBMDAyNUUxQ0QgLyogT2JqQ0V2ZW50TGlzdGVuZXIubW0gaW4gU291cmNl
cyAqLywKIAkJCQkxQ0Y2QkUxNDBFOUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25k
aXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDkxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAi
Q29uc29sZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNHZW9wb3NpdGlvbi5o
IgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5j
bHVkZSA8a2pzL0pTTG9jay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjazo6SlNDdXN0b21Qb3NpdGlvbkNh
bGxiYWNrKEpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKQorICAgIDogbV9jYWxsYmFj
ayhjYWxsYmFjaykKKyAgICAsIG1fZnJhbWUoZnJhbWUpCit7Cit9CisKK3ZvaWQgSlNDdXN0b21Q
b3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVudChHZW9wb3NpdGlvbiogZ2VvcG9zaXRpb24sIGJv
b2wmIHJhaXNlZEV4Y2VwdGlvbikKK3sKKyAgICBBU1NFUlQobV9jYWxsYmFjayk7CisgICAgQVNT
RVJUKG1fZnJhbWUpOworICAgIAorICAgIGlmICghbV9mcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxl
ZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICAKKyAgICBKU0M6OkpTTG9j
ayBsb2NrKGZhbHNlKTsKKyAgICAKKyAgICBKU1ZhbHVlKiBmdW5jdGlvbiA9IG1fY2FsbGJhY2st
PmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGZ1bmN0aW9uLT5nZXRDYWxsRGF0
YShjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgeworICAgICAg
ICBjYWxsVHlwZSA9IG1fY2FsbGJhY2stPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICAgICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFNo
b3VsZCBhbiBleGNlcHRpb24gYmUgdGhyb3duIGhlcmU/CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gPSBtX2NhbGxiYWNrOworICAgIH0KKyAgICAKKyAg
ICBSZWZQdHI8SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrPiBwcm90ZWN0KHRoaXMpOworICAgIAor
ICAgIEFyZ0xpc3QgYXJnczsKKyAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIGdlb3Bvc2l0aW9u
KSk7CisgICAgCisgICAgZ2xvYmFsT2JqZWN0LT5zdGFydFRpbWVvdXRDaGVjaygpOworICAgIGNh
bGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9jYWxsYmFjaywgYXJncyk7
CisgICAgZ2xvYmFsT2JqZWN0LT5zdG9wVGltZW91dENoZWNrKCk7CisgICAgCisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25z
b2xlKCktPnJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CisgICAgICAgIAorICAgICAgICBy
YWlzZWRFeGNlcHRpb24gPSB0cnVlOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFj
ay5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9u
Q2FsbGJhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0N1c3Rv
bVBvc2l0aW9uQ2FsbGJhY2tfaAorI2RlZmluZSBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2tfaAor
CisjaW5jbHVkZSAiUG9zaXRpb25DYWxsYmFjay5oIgorCisjaW5jbHVkZSA8a2pzL0pTT2JqZWN0
Lmg+CisjaW5jbHVkZSA8a2pzL3Byb3RlY3QuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
CituYW1lc3BhY2UgSlNDIHsKKyAgICBjbGFzcyBKU09iamVjdDsKK30KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNzIEdlb3Bvc2l0aW9uOworCitjbGFzcyBKU0N1
c3RvbVBvc2l0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUG9zaXRpb25DYWxsYmFjayB7CitwdWJsaWM6
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrPiBjcmVhdGUo
SlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYo
bmV3IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayhjYWxsYmFjaywgZnJhbWUpKTsgfQorICAgIAor
ICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChHZW9wb3NpdGlvbiosIGJvb2wmIHJhaXNlZEV4
Y2VwdGlvbik7Citwcml2YXRlOgorICAgIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayhKU0M6OkpT
T2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqKTsKKworICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6
SlNPYmplY3Q+IG1fY2FsbGJhY2s7CisgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOworfTsKKyAg
ICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFja19oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJv
ckNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
UG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDdXN0b21Qb3Np
dGlvbkVycm9yQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJD
b25zb2xlLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJKU1Bvc2l0aW9uRXJyb3Iu
aCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgPGtqcy9KU0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKworSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OkpTQ3VzdG9t
UG9zaXRpb25FcnJvckNhbGxiYWNrKEpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKQor
ICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICAsIG1fZnJhbWUoZnJhbWUpCit7Cit9CisK
K3ZvaWQgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KFBvc2l0aW9u
RXJyb3IqIHBvc2l0aW9uRXJyb3IpCit7CisgICAgQVNTRVJUKG1fY2FsbGJhY2spOworICAgIEFT
U0VSVChtX2ZyYW1lKTsKKyAgICAKKyAgICBpZiAoIW1fZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2ZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgRXhlY1N0YXRl
KiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgCisgICAgSlNDOjpKU0xv
Y2sgbG9jayhmYWxzZSk7CisgICAgCisgICAgSlNWYWx1ZSogZnVuY3Rpb24gPSBtX2NhbGxiYWNr
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CisgICAgQ2FsbERh
dGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBmdW5jdGlvbi0+Z2V0Q2FsbERh
dGEoY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAg
ICAgY2FsbFR5cGUgPSBtX2NhbGxiYWNrLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7CisgICAgICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBT
aG91bGQgYW4gZXhjZXB0aW9uIGJlIHRocm93biBoZXJlPworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uID0gbV9jYWxsYmFjazsKKyAgICB9CisgICAgCisg
ICAgUmVmUHRyPEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrPiBwcm90ZWN0KHRoaXMpOwor
ICAgIAorICAgIEFyZ0xpc3QgYXJnczsKKyAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIHBvc2l0
aW9uRXJyb3IpKTsKKyAgICAKKyAgICBnbG9iYWxPYmplY3QtPnN0YXJ0VGltZW91dENoZWNrKCk7
CisgICAgY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX2NhbGxiYWNr
LCBhcmdzKTsKKyAgICBnbG9iYWxPYmplY3QtPnN0b3BUaW1lb3V0Q2hlY2soKTsKKyAgICAKKyAg
ICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygp
LT5jb25zb2xlKCktPnJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7Cit9CisgICAgCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9z
aXRpb25FcnJvckNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBu
YW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisg
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQor
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrX2gK
KyNkZWZpbmUgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAorCisjaW5jbHVkZSAiUG9z
aXRpb25FcnJvckNhbGxiYWNrLmgiCisKKyNpbmNsdWRlIDxranMvSlNPYmplY3QuaD4KKyNpbmNs
dWRlIDxranMvcHJvdGVjdC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworICAgIGNsYXNzIEpTT2JqZWN0OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgCitjbGFzcyBGcmFtZTsKK2NsYXNzIFBvc2l0aW9uRXJyb3I7CisKK2NsYXNzIEpTQ3VzdG9t
UG9zaXRpb25FcnJvckNhbGxiYWNrIDogcHVibGljIFBvc2l0aW9uRXJyb3JDYWxsYmFjayB7Citw
dWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2s+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2soY2FsbGJhY2ssIGZy
YW1lKSk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoUG9zaXRpb25FcnJv
ciopOworcHJpdmF0ZToKKyAgICBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayhKU0M6OkpT
T2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqKTsKKworICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6
SlNPYmplY3Q+IG1fY2FsbGJhY2s7CisgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOworfTsKKyAg
ICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEpTQ3VzdG9tUG9zaXRpb25F
cnJvckNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1
c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9u
Q3VzdG9tLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2Nh
dGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09O
VFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNHZW9sb2NhdGlvbi5oIgorCisjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9u
LmgiCisjaW5jbHVkZSAiSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlND
dXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgor
I2luY2x1ZGUgIkpTUG9zaXRpb25PcHRpb25zLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworSlNWYWx1ZSogSlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVu
dFBvc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICAv
LyBBcmd1bWVudHM6IFBvc2l0aW9uQ2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlvbkVycm9yQ2Fs
bGJhY2ssIChvcHRpb25hbClQb3NpdGlvbk9wdGlvbnMKKyAgICBSZWZQdHI8UG9zaXRpb25DYWxs
YmFjaz4gcG9zaXRpb25DYWxsYmFjazsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdChl
eGVjLCAwKS0+Z2V0T2JqZWN0KCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoIW9iamVjdCkgeworICAgICAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICB9CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9KU0RPTVdp
bmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCkpCisgICAg
ICAgIHBvc2l0aW9uQ2FsbGJhY2sgPSBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmNyZWF0ZShv
YmplY3QsIGZyYW1lKTsKKyAgICAKKyAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBw
b3NpdGlvbkVycm9yQ2FsbGJhY2s7CisgICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDEpLT5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMs
IDEpLT5nZXRPYmplY3QoKTsKKyAgICAgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChGcmFtZSogZnJhbWUg
PSB0b0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJh
bWUoKSkKKyAgICAgICAgICAgIHBvc2l0aW9uRXJyb3JDYWxsYmFjayA9IEpTQ3VzdG9tUG9zaXRp
b25FcnJvckNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBmcmFtZSk7CisgICAgfQorICAgIAorICAg
IFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IHBvc2l0aW9uT3B0aW9uczsKKyAgICBpZiAoIWFyZ3Mu
YXQoZXhlYywgMiktPmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHBvc2l0aW9uT3B0aW9u
cyA9IHRvUG9zaXRpb25PcHRpb25zKGFyZ3MuYXQoZXhlYywgMikpOworICAgIAorICAgIG1faW1w
bC0+Z2V0Q3VycmVudFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlv
bkVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMuZ2V0KCkpOworICAgIAor
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlKiBKU0dlb2xvY2F0aW9uOjp3
YXRjaFBvc2l0aW9uKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAg
ICAvLyBBcmd1bWVudHM6IFBvc2l0aW9uQ2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlvbkVycm9y
Q2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlvbk9wdGlvbnMKKyAgICBSZWZQdHI8UG9zaXRpb25D
YWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjazsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5h
dChleGVjLCAwKS0+Z2V0T2JqZWN0KCk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQor
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICBpZiAoIW9iamVjdCkgeworICAgICAg
ICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisgICAgCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRv
SlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgp
KQorICAgICAgICBwb3NpdGlvbkNhbGxiYWNrID0gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpj
cmVhdGUob2JqZWN0LCBmcmFtZSk7CisgICAgCisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxs
YmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrOworICAgIGlmICghYXJncy5hdChleGVjLCAxKS0+
aXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5h
dChleGVjLCAxKS0+Z2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAg
ICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlm
IChGcmFtZSogZnJhbWUgPSB0b0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3Qo
KSktPmltcGwoKS0+ZnJhbWUoKSkKKyAgICAgICAgICAgIHBvc2l0aW9uRXJyb3JDYWxsYmFjayA9
IEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBmcmFtZSk7Cisg
ICAgfQorICAgIAorICAgIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IHBvc2l0aW9uT3B0aW9uczsK
KyAgICBpZiAoIWFyZ3MuYXQoZXhlYywgMiktPmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAg
IHBvc2l0aW9uT3B0aW9ucyA9IHRvUG9zaXRpb25PcHRpb25zKGFyZ3MuYXQoZXhlYywgMikpOwor
ICAgIAorICAgIGludCB3ID0gbV9pbXBsLT53YXRjaFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2su
cmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlv
bnMuZ2V0KCkpOworICAgIHJldHVybiBqc051bWJlcihleGVjLCB3KTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9kb20vR2VvbG9jYXRpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvZG9tL0dlb2xvY2F0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvZG9tL0dlb2xvY2F0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxODMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIlBv
c2l0aW9uRXJyb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHZW9sb2NhdGlvbjo6R2Vv
Tm90aWZpZXI6Okdlb05vdGlmaWVyKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vz
c0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFj
aywgUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKQorICAgIDogbV9zdWNjZXNzQ2FsbGJhY2soc3Vj
Y2Vzc0NhbGxiYWNrKQorICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2spCisgICAg
LCBtX3RpbWVyKHRoaXMsICZHZW9Ob3RpZmllcjo6dGltZXJGaXJlZCkKK3sKKyAgICBpZiAobV9l
cnJvckNhbGxiYWNrICYmIG9wdGlvbnMgJiYgb3B0aW9ucy0+dGltZW91dCgpICE9IC0xKQorICAg
ICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdChvcHRpb25zLT50aW1lb3V0KCkgLyAxMDAwLjApOwor
fQorCit2b2lkIEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6dGltZXJGaXJlZChUaW1lcjxHZW9s
b2NhdGlvbjo6R2VvTm90aWZpZXI+KiB0aW1lcikKK3sKKyAgICBBU1NFUlQobV9lcnJvckNhbGxi
YWNrKTsKKyAgICAKKyAgICBtX3RpbWVyLnN0b3AoKTsKKyAgICAKKyAgICBSZWZQdHI8UG9zaXRp
b25FcnJvcj4gZXJyb3IgPSBuZXcgUG9zaXRpb25FcnJvcig0LCAiVGltZWQgb3V0Iik7CisgICAg
bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7Cit9CisKK0dlb2xvY2F0
aW9uOjpHZW9sb2NhdGlvbihGcmFtZSogZnJhbWUpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQorewor
Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSgpCit7CisgICAgbV9mcmFt
ZSA9IDA7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihQYXNzUmVm
UHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlv
bkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykK
K3sKKyAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gbmV3IEdlb05vdGlmaWVyKHN1
Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywgb3B0aW9ucyk7CisgICAgCisgICAgaWYgKCFz
dGFydFVwZGF0aW5nKG9wdGlvbnMpKSB7CisgICAgICAgIGlmIChub3RpZmllci0+bV9lcnJvckNh
bGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gZXJyb3IgPSBuZXcg
UG9zaXRpb25FcnJvcigxLCAiVW5hYmxlIHRvIFN0YXJ0Iik7CisgICAgICAgICAgICBub3RpZmll
ci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBtX29uZVNob3RzLmFkZChub3RpZmll
cik7Cit9CisKK2xvbmcgR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oUGFzc1JlZlB0cjxQb3Np
dGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNh
bGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCit7CisgICAg
UmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IG5ldyBHZW9Ob3RpZmllcihzdWNjZXNzQ2Fs
bGJhY2ssIGVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpOworICAgIAorICAgIGlmICghc3RhcnRVcGRh
dGluZyhvcHRpb25zKSkgeworICAgICAgICBpZiAobm90aWZpZXItPm1fZXJyb3JDYWxsYmFjaykg
eworICAgICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gbmV3IFBvc2l0aW9u
RXJyb3IoMSwgIlVuYWJsZSB0byBTdGFydCIpOworICAgICAgICAgICAgbm90aWZpZXItPm1fZXJy
b3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworICAgICAgICB9CisgICAgICAg
IHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgbG9uZyBzSWRlbnRpZmllciA9IDA7
CisgICAgCisgICAgbV93YXRjaGVycy5zZXQoKytzSWRlbnRpZmllciwgbm90aWZpZXIpOworICAg
IAorICAgIHJldHVybiBzSWRlbnRpZmllcjsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6Y2xlYXJX
YXRjaChsb25nIHdhdGNoSWQpCit7CisgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9
IG1fd2F0Y2hlcnMuZ2V0KHdhdGNoSWQpOworICAgIGlmIChub3RpZmllcikKKyAgICAgICAgbV93
YXRjaGVycy5yZW1vdmUod2F0Y2hJZCk7CisgICAgCisgICAgc3RvcFVwZGF0aW5nSWZFbXB0eSgp
OworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpzdG9wVXBkYXRpbmdJZkVtcHR5KCkKK3sKKyAgICBp
ZiAobV93YXRjaGVycy5pc0VtcHR5KCkgJiYgbV9vbmVTaG90cy5pc0VtcHR5KCkpOworICAgICAg
ICBzdG9wVXBkYXRpbmcoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6aGFuZGxlTmV3UG9zaXRp
b24oUGFzc1JlZlB0cjxHZW9wb3NpdGlvbj4gbmV3UG9zaXRpb24pCit7CisgICAgQVNTRVJUKG5l
d1Bvc2l0aW9uKTsKKyAgICBSZWZQdHI8R2VvcG9zaXRpb24+IHBvc2l0aW9uID0gbmV3UG9zaXRp
b247CisgICAgbV9sYXN0UG9zaXRpb24gPSBwb3NpdGlvbjsKKworICAgIGJvb2wgc2hvdWxkQ2Fs
bEVycm9yQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICB7CisgICAgR2VvTm90aWZpZXJTZXQ6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IG1fb25lU2hvdHMuZW5kKCk7CisgICAgZm9yIChHZW9Ob3RpZmllclNl
dDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29uZVNob3RzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytp
dCkgeworICAgICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKml0OworICAgICAg
ICBBU1NFUlQobm90aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgCisgICAgICAg
IG5vdGlmaWVyLT5tX3RpbWVyLnN0b3AoKTsKKyAgICAgICAgbm90aWZpZXItPm1fc3VjY2Vzc0Nh
bGxiYWNrLT5oYW5kbGVFdmVudChtX2xhc3RQb3NpdGlvbi5nZXQoKSwgc2hvdWxkQ2FsbEVycm9y
Q2FsbGJhY2spOworICAgICAgICBpZiAoc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2spIHsKKyAgICAg
ICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IG5ldyBQb3NpdGlvbkVycm9yKDUs
ICJKYXZhU2NyaXB0IEVycm9yIik7CisgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnJvci5nZXQo
KSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgfQorICAgIAor
ICAgIHsKKyAgICBHZW9Ob3RpZmllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV93YXRjaGVy
cy5lbmQoKTsKKyAgICBmb3IgKEdlb05vdGlmaWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1f
d2F0Y2hlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxHZW9O
b3RpZmllcj4gbm90aWZpZXIgPSAoKml0KS5zZWNvbmQ7CisgICAgICAgIEFTU0VSVChub3RpZmll
ci0+bV9zdWNjZXNzQ2FsbGJhY2spOworICAgICAgICAgICAgCisgICAgICAgIG5vdGlmaWVyLT5t
X3RpbWVyLnN0b3AoKTsKKyAgICAgICAgbm90aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5k
bGVFdmVudChtX2xhc3RQb3NpdGlvbi5nZXQoKSwgc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2spOwor
ICAgICAgICBpZiAoc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIFJlZlB0
cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IG5ldyBQb3NpdGlvbkVycm9yKDUsICJKYXZhU2NyaXB0
IEVycm9yIik7CisgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnJvci5nZXQoKSk7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgfQorCisgICAgbV9vbmVTaG90cy5j
bGVhcigpOworICAgIHN0b3BVcGRhdGluZ0lmRW1wdHkoKTsKK30KKwordm9pZCBHZW9sb2NhdGlv
bjo6aGFuZGxlRXJyb3IoUG9zaXRpb25FcnJvciogZXJyb3IpCit7CisgICAgQVNTRVJUKGVycm9y
KTsKKworICAgIHsKKyAgICBHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gbV9v
bmVTaG90cy5lbmQoKTsKKyAgICBmb3IgKEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBp
dCA9IG1fb25lU2hvdHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlZlB0
cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSAqaXQ7CisgICAgICAgIAorICAgICAgICBpZiAobm90
aWZpZXItPm1fZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgIG5vdGlmaWVyLT5tX2Vycm9yQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KGVycm9yKTsKKyAgICB9CisgICAgfQorICAgIG1fb25lU2hvdHMu
Y2xlYXIoKTsKKyAgICAKKyAgICB7CisgICAgR2VvTm90aWZpZXJNYXA6OmNvbnN0X2l0ZXJhdG9y
IGVuZCA9IG1fd2F0Y2hlcnMuZW5kKCk7CisgICAgZm9yIChHZW9Ob3RpZmllck1hcDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX3dhdGNoZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAg
ICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKCppdCkuc2Vjb25kOworICAgICAg
ICAgICAgCisgICAgICAgIGlmIChub3RpZmllci0+bV9lcnJvckNhbGxiYWNrKQorICAgICAgICAg
ICAgbm90aWZpZXItPm1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IpOworICAgIH0K
KyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvZG9tL0dl
b2xvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9kb20vR2VvbG9jYXRpb24uaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0dlb2xvY2F0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAg
ICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgR2VvbG9jYXRpb25faAorI2RlZmluZSBHZW9sb2NhdGlvbl9o
CisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgor
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpbmNsdWRlICJHZW9wb3NpdGlvbi5oIgorI2lu
Y2x1ZGUgIlBvc2l0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yQ2FsbGJh
Y2suaCIKKyNpbmNsdWRlICJQb3NpdGlvbk9wdGlvbnMuaCIKKyNpbmNsdWRlICJUaW1lci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworICAgIAorY2xhc3MgR2VvbG9j
YXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxHZW9sb2NhdGlvbj4geworcHVibGljOgorICAgIGNs
YXNzIEdlb05vdGlmaWVyIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvTm90aWZpZXI+IHsKKyAgICBw
dWJsaWM6CisgICAgICAgIEdlb05vdGlmaWVyKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaywgUG9zaXRpb25PcHRpb25zICpvcHRpb25zKTsKKworICAgICAgICB2b2lkIHRpbWVy
RmlyZWQoVGltZXI8R2VvTm90aWZpZXI+KiB0aW1lcik7CisKKyAgICAgICAgUmVmUHRyPFBvc2l0
aW9uQ2FsbGJhY2s+ICAgICAgICBtX3N1Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgUmVmUHRyPFBv
c2l0aW9uRXJyb3JDYWxsYmFjaz4gICBtX2Vycm9yQ2FsbGJhY2s7CisgICAgICAgIFRpbWVyPEdl
b05vdGlmaWVyPiAgICAgICAgICAgICAgbV90aW1lcjsKKyAgICB9OworCisgICAgc3RhdGljIFBh
c3NSZWZQdHI8R2VvbG9jYXRpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUpOworICAgIHZvaWQgZGlz
Y29ubmVjdEZyYW1lKCk7CisgICAgCisgICAgdmlydHVhbCB+R2VvbG9jYXRpb24oKSB7fQorCisg
ICAgR2VvcG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdFBvc2l0
aW9uLmdldCgpOyB9CisKKyAgICB2b2lkIGdldEN1cnJlbnRQb3NpdGlvbihQYXNzUmVmUHRyPFBv
c2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucyk7CisgICAg
bG9uZyB3YXRjaFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vzc0Nh
bGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywg
UG9zaXRpb25PcHRpb25zKiBvcHRpb25zKTsKKyAgICB2b2lkIGNsZWFyV2F0Y2gobG9uZyB3YXRj
aElkKTsKKworICAgIHZvaWQgaGFuZGxlTmV3UG9zaXRpb24oUGFzc1JlZlB0cjxHZW9wb3NpdGlv
bj4gbmV3UG9zaXRpb24pOworICAgIHZvaWQgaGFuZGxlRXJyb3IoUG9zaXRpb25FcnJvciogZXJy
b3IpOworCitwcm90ZWN0ZWQ6CisgICAgR2VvbG9jYXRpb24oRnJhbWUqIGZyYW1lKTsKKyAgICAK
KyAgICB2b2lkIHN0b3BVcGRhdGluZ0lmRW1wdHkoKTsKKworICAgIHZpcnR1YWwgYm9vbCBzdGFy
dFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzdG9wVXBkYXRpbmcoKSA9IDA7CisgICAgCisgICAgdHlwZWRlZiBIYXNoU2V0PCBSZWZQdHI8
R2VvTm90aWZpZXI+ID4gR2VvTm90aWZpZXJTZXQ7CisgICAgdHlwZWRlZiBIYXNoTWFwPGxvbmcs
IFJlZlB0cjxHZW9Ob3RpZmllcj4gPiBHZW9Ob3RpZmllck1hcDsKKyAgICAKKyAgICBHZW9Ob3Rp
ZmllclNldCBtX29uZVNob3RzOworICAgIEdlb05vdGlmaWVyTWFwIG1fd2F0Y2hlcnM7CisgICAg
UmVmUHRyPEdlb3Bvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKKyAgICAKKyAgICBGcmFtZSogbV9m
cmFtZTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHZW9s
b2NhdGlvbl9oCkluZGV4OiBXZWJDb3JlL2RvbS9HZW9sb2NhdGlvbi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9kb20vR2VvbG9jYXRpb24uaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9k
b20vR2VvbG9jYXRpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUg
Y29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisg
ICAgXSBHZW9sb2NhdGlvbiB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBHZW9wb3NpdGlv
biBsYXN0UG9zaXRpb247CisKKyAgICAgICAgW0N1c3RvbV0gdm9pZCBnZXRDdXJyZW50UG9zaXRp
b24oaW4gUG9zaXRpb25DYWxsYmFjayBzdWNjZXNzQ2FsbGJhY2ssIGluIFBvc2l0aW9uRXJyb3JD
YWxsYmFjayBlcnJvckNhbGxiYWNrLCBpbiBQb3NpdGlvbk9wdGlvbnMgb3B0aW9ucyk7CisKKyAg
ICAgICAgW0N1c3RvbV0gbG9uZyB3YXRjaFBvc2l0aW9uKGluIFBvc2l0aW9uQ2FsbGJhY2sgc3Vj
Y2Vzc0NhbGxiYWNrLCBpbiBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaywgaW4g
UG9zaXRpb25PcHRpb25zIG9wdGlvbnMpOworCisgICAgICAgIHZvaWQgY2xlYXJXYXRjaChpbiBs
b25nIHdhdGNoSWQpOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvZG9tL0dlb3Bvc2l0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9HZW9wb3NpdGlvbi5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2RvbS9HZW9wb3NpdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW9wb3NpdGlvbi5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBHZW9wb3NpdGlvbjo6dG9TdHJpbmcoKSBj
b25zdAoreworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgicG9zaXRpb24oJS42bGcsICUuNmxn
LCAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLmxsZCkiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9hbHRpdHVkZSwgbV9hY2N1cmFj
eSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYWx0aXR1ZGVBY2N1cmFjeSwgbV9oZWFk
aW5nLCBtX3ZlbG9jaXR5LCBtX3RpbWVzdGFtcCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvZG9tL0dlb3Bvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9kb20vR2VvcG9zaXRpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0dlb3Bvc2l0
aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgR2VvcG9zaXRpb25f
aAorI2RlZmluZSBHZW9wb3NpdGlvbl9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xh
c3MgR2VvcG9zaXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxHZW9wb3NpdGlvbj4geworcHVibGlj
OgorICAgIEdlb3Bvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91
YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBk
b3VibGUgaGVhZGluZywgZG91YmxlIHZlbG9jaXR5LCB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0
YW1wKQorICAgICAgICA6IG1fbGF0aXR1ZGUobGF0aXR1ZGUpCisgICAgICAgICwgbV9sb25naXR1
ZGUobG9uZ2l0dWRlKQorICAgICAgICAsIG1fYWx0aXR1ZGUoYWx0aXR1ZGUpCisgICAgICAgICwg
bV9hY2N1cmFjeShhY2N1cmFjeSkKKyAgICAgICAgLCBtX2FsdGl0dWRlQWNjdXJhY3koYWx0aXR1
ZGVBY2N1cmFjeSkKKyAgICAgICAgLCBtX2hlYWRpbmcoaGVhZGluZykKKyAgICAgICAgLCBtX3Zl
bG9jaXR5KHZlbG9jaXR5KQorICAgICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkgCisgICAg
e30KKyAgICAKKyAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xhdGl0dWRl
OyB9CisgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9uZ2l0dWRlOyB9
CisgICAgZG91YmxlIGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9hbHRpdHVkZTsgfQorICAg
IGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJhY3k7IH0KKyAgICBkb3Vi
bGUgYWx0aXR1ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0aXR1ZGVBY2N1cmFjeTsg
fQorICAgIGRvdWJsZSBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9oZWFkaW5nOyB9CisgICAg
ZG91YmxlIHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0eTsgfQorICAgIHVuc2ln
bmVkIGxvbmcgbG9uZyB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVzdGFtcDsgfQor
CisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgZG91YmxlIG1f
bGF0aXR1ZGU7CisgICAgZG91YmxlIG1fbG9uZ2l0dWRlOworICAgIGRvdWJsZSBtX2FsdGl0dWRl
OworICAgIGRvdWJsZSBtX2FjY3VyYWN5OworICAgIGRvdWJsZSBtX2FsdGl0dWRlQWNjdXJhY3k7
CisgICAgZG91YmxlIG1faGVhZGluZzsKKyAgICBkb3VibGUgbV92ZWxvY2l0eTsKKyAgICB1bnNp
Z25lZCBsb25nIGxvbmcgbV90aW1lc3RhbXA7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gR2VvcG9zaXRpb25faApJbmRleDogV2ViQ29yZS9kb20vR2VvcG9z
aXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0dlb3Bvc2l0aW9uLmlkbAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL0dlb3Bvc2l0aW9uLmlkbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAg
R2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gR2VvcG9zaXRpb24geworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgZG91YmxlIGxhdGl0dWRlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
ZG91YmxlIGxvbmdpdHVkZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBhbHRp
dHVkZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBhY2N1cmFjeTsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5OworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGhlYWRpbmcKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGRvdWJsZSB2ZWxvY2l0eQorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NVGltZVN0
YW1wIHRpbWVzdGFtcDsKKworICAgICAgICBET01TdHJpbmcgdG9TdHJpbmcoKTsKKyAgICB9Owor
fQpJbmRleDogV2ViQ29yZS9kb20vUG9zaXRpb25DYWxsYmFjay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvZG9tL1Bvc2l0aW9uQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9t
L1Bvc2l0aW9uQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwg
SW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAg
ICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRT
IENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBQb3NpdGlvbkNhbGxiYWNrX2gKKyNkZWZpbmUgUG9zaXRpb25DYWxsYmFja19oCisKKyNpbmNs
dWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgR2VvcG9zaXRpb247CisKKyAgICBjbGFz
cyBQb3NpdGlvbkNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8UG9zaXRpb25DYWxsYmFjaz4g
eworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+UG9zaXRpb25DYWxsYmFjaygpIHsgfQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoR2VvcG9zaXRpb24qIHBvc2l0aW9uLCBi
b29sJiByYWlzZWRFeGNlcHRpb24pID0gMDsKKyAgICB9OworICAgIAorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gUG9zaXRpb25DYWxsYmFja19oCkluZGV4OiBXZWJDb3JlL2Rv
bS9Qb3NpdGlvbkNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlv
bkNhbGxiYWNrLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvZG9tL1Bvc2l0aW9uQ2FsbGJh
Y2suaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAg
ICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBQb3NpdGlv
bkNhbGxiYWNrIHsKKyAgICAgICAgdm9pZCBoYW5kbGVFdmVudChpbiBHZW9wb3NpdGlvbiBwb3Np
dGlvbik7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9kb20vUG9zaXRpb25FcnJvci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL1Bvc2l0aW9uRXJyb3IuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvZG9tL1Bvc2l0aW9uRXJyb3IuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBQb3NpdGlvbkVycm9yX2gKKyNkZWZpbmUgUG9zaXRpb25FcnJvcl9oCisKKyNp
bmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2Ns
YXNzIFBvc2l0aW9uRXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3NpdGlvbkVycm9yPiB7Citw
dWJsaWM6CisgICAgUG9zaXRpb25FcnJvcihsb25nIGNvZGUsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkgCisgICAgICAgIDogbV9jb2RlKGNvZGUpCisgICAgICAgICwgbV9tZXNzYWdlKG1lc3NhZ2Up
CisgICAge30KKyAgICAKKyAgICBsb25nIGNvZGUoKSBjb25zdCB7IHJldHVybiBtX2NvZGU7IH0K
KyAgICB2b2lkIHNldENvZGUobG9uZyBjb2RlKSB7IG1fY29kZSA9IGNvZGU7IH0KKyAgICBjb25z
dCBTdHJpbmcmIG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KKyAgICB2b2lk
IHNldE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7IG1fbWVzc2FnZSA9IG1lc3NhZ2U7
IH0KKyAgICAKK3ByaXZhdGU6CisgICAgbG9uZyBtX2NvZGU7CisgICAgU3RyaW5nIG1fbWVzc2Fn
ZTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3NpdGlv
bkVycm9yX2gKSW5kZXg6IFdlYkNvcmUvZG9tL1Bvc2l0aW9uRXJyb3IuaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvZG9tL1Bvc2l0aW9uRXJyb3IuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9kb20vUG9zaXRpb25FcnJvci5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21v
ZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0
b3IKKyAgICBdIFBvc2l0aW9uRXJyb3IgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9u
ZyBjb2RlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1lc3NhZ2U7Cisg
ICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9kb20vUG9zaXRpb25FcnJvckNhbGxiYWNrLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9kb20vUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2RvbS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBQb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAorI2RlZmlu
ZSBQb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAg
Y2xhc3MgUG9zaXRpb25FcnJvcjsKKworICAgIGNsYXNzIFBvc2l0aW9uRXJyb3JDYWxsYmFjayA6
IHB1YmxpYyBSZWZDb3VudGVkPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4geworICAgIHB1YmxpYzoK
KyAgICAgICAgdmlydHVhbCB+UG9zaXRpb25FcnJvckNhbGxiYWNrKCkgeyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFdmVudChQb3NpdGlvbkVycm9yKiBwb3NpdGlvbikgPSAwOworICAg
IH07CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3NpdGlvbkVy
cm9yQ2FsbGJhY2tfaApJbmRleDogV2ViQ29yZS9kb20vUG9zaXRpb25FcnJvckNhbGxiYWNrLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9kb20vUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Cisg
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNl
IFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gUG9zaXRpb25FcnJvckNhbGxi
YWNrIHsKKyAgICAgICAgdm9pZCBoYW5kbGVFdmVudChpbiBQb3NpdGlvbkVycm9yIGVycm9yKTsK
KyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL2RvbS9Qb3NpdGlvbk9wdGlvbnMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2RvbS9Qb3NpdGlvbk9wdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvZG9tL1Bvc2l0aW9uT3B0aW9ucy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU2IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFBvc2l0aW9uT3B0aW9uc19oCisjZGVmaW5lIFBvc2l0aW9uT3B0aW9uc19oCisK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgUG9zaXRpb25PcHRpb25zIDog
cHVibGljIFJlZkNvdW50ZWQ8UG9zaXRpb25PcHRpb25zPiB7CisgICAgcHVibGljOgorICAgICAg
ICBQb3NpdGlvbk9wdGlvbnMoYm9vbCBoaWdoQWNjdXJhY3kgPSBmYWxzZSwgbG9uZyB0aW1lb3V0
ID0gLTEpCisgICAgICAgICAgICA6IG1faGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeSkKKyAgICAg
ICAgICAgICwgbV90aW1lb3V0KHRpbWVvdXQpCisgICAgICAgIHt9CisgICAgICAgIAorICAgICAg
ICBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1faGlnaEFjY3VyYWN5
OyB9CisgICAgICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3VyYWN5KGJvb2wgZW5hYmxlKSB7IG1f
aGlnaEFjY3VyYWN5ID0gZW5hYmxlOyB9CisgICAgICAgIGxvbmcgdGltZW91dCgpIGNvbnN0IHsg
cmV0dXJuIG1fdGltZW91dDsgfQorICAgICAgICB2b2lkIHNldFRpbWVvdXQobG9uZyB0KSB7IG1f
dGltZW91dCA9IHQ7IH0KKyAgICAgICAgCisgICAgcHJpdmF0ZToKKyAgICAgICAgYm9vbCBtX2hp
Z2hBY2N1cmFjeTsKKyAgICAgICAgbG9uZyBtX3RpbWVvdXQ7CisgICAgfTsKKyAgICAKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBvc2l0aW9uT3B0aW9uc19oCkluZGV4OiBX
ZWJDb3JlL2RvbS9Qb3NpdGlvbk9wdGlvbnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9t
L1Bvc2l0aW9uT3B0aW9ucy5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2RvbS9Qb3NpdGlv
bk9wdGlvbnMuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBQ
b3NpdGlvbk9wdGlvbnMgeworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBlbmFibGVIaWdoQWNj
dXJhY3k7CisgICAgICAgIGF0dHJpYnV0ZSBsb25nIHRpbWVvdXQ7CisgICAgfTsKKworfQpJbmRl
eDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5jcHAJKHJldmlzaW9uIDM3NDU2KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGcmFtZS5o
IgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQu
aCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5j
bHVkZSAiTWltZVR5cGVBcnJheS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgi
CkBAIC04Nyw2ICs4OCwxMCBAQCB2b2lkIE5hdmlnYXRvcjo6ZGlzY29ubmVjdEZyYW1lKCkKICAg
ICAgICAgbV9taW1lVHlwZXMtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgICAgICBtX21pbWVUeXBl
cyA9IDA7CiAgICAgfQorICAgIGlmIChtX2dlb2xvY2F0aW9uKSB7CisgICAgICAgIG1fZ2VvbG9j
YXRpb24tPmRpc2Nvbm5lY3RGcmFtZSgpOworICAgICAgICBtX2dlb2xvY2F0aW9uID0gMDsKKyAg
ICB9CiAgICAgbV9mcmFtZSA9IDA7CiB9CiAKQEAgLTE5Nyw0ICsyMDIsMTUgQEAgYm9vbCBOYXZp
Z2F0b3I6Om9uTGluZSgpIGNvbnN0CiAgICAgcmV0dXJuIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCku
b25MaW5lKCk7CiB9CiAKK0dlb2xvY2F0aW9uKiBOYXZpZ2F0b3I6Omdlb2xvY2F0aW9uKCkgY29u
c3QKK3sKKyNpZiBQTEFURk9STShJUEhPTkUpCisgICAgaWYgKCFtX2dlb2xvY2F0aW9uKQorICAg
ICAgICBtX2dlb2xvY2F0aW9uID0gR2VvbG9jYXRpb246OmNyZWF0ZShtX2ZyYW1lKTsKKyAgICBy
ZXR1cm4gbV9nZW9sb2NhdGlvbi5nZXQoKTsKKyNlbHNlCisgICAgcmV0dXJuIE5VTEw7CisjZW5k
aWYKK30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9O
YXZpZ2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHJldmlz
aW9uIDM3NDU2KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yNyw2ICsyNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGcmFtZTsK
KyAgICBjbGFzcyBHZW9sb2NhdGlvbjsKICAgICBjbGFzcyBNaW1lVHlwZUFycmF5OwogICAgIGNs
YXNzIFBsdWdpbkRhdGE7CiAgICAgY2xhc3MgUGx1Z2luQXJyYXk7CkBAIC01NiwxMSArNTcsMTQg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGphdmFFbmFibGVkKCkgY29uc3Q7
CiAKICAgICAgICAgYm9vbCBvbkxpbmUoKSBjb25zdDsKKyAgICAgICAgR2VvbG9jYXRpb24qIGdl
b2xvY2F0aW9uKCkgY29uc3Q7CisgICAgICAgICAgICAKICAgICBwcml2YXRlOgogICAgICAgICBO
YXZpZ2F0b3IoRnJhbWUqKTsKICAgICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIG11dGFi
bGUgUmVmUHRyPFBsdWdpbkFycmF5PiBtX3BsdWdpbnM7CiAgICAgICAgIG11dGFibGUgUmVmUHRy
PE1pbWVUeXBlQXJyYXk+IG1fbWltZVR5cGVzOworICAgICAgICBtdXRhYmxlIFJlZlB0cjxHZW9s
b2NhdGlvbj4gbV9nZW9sb2NhdGlvbjsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3BhZ2Uv
TmF2aWdhdG9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAko
cmV2aXNpb24gMzc0NTYpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAkod29ya2luZyBj
b3B5KQpAQCAtMzYsNiArMzYsNyBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYm9vbGVhbiBq
YXZhRW5hYmxlZCgpOwogICAgICAgICAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gb25MaW5lOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgR2VvbG9jYXRpb24gZ2VvbG9j
YXRpb247CiAgICAgfTsKIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24264</attachid>
            <date>2008-10-10 10:28:45 -0700</date>
            <delta_ts>2008-10-10 10:49:06 -0700</delta_ts>
            <desc>updated patch (moves items into WebCore/page)</desc>
            <filename>GeoLocation-WebKit.org.patch.txt</filename>
            <type>text/plain</type>
            <size>85381</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzQ1NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODggQEAKKzIwMDgtMTAtMTAgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc1CisgICAgICAgIAor
ICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9sb2NhdGlvbiBBUEkKKyAgICAgICAg
CisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkvc3BlYy1zb3VyY2UuaHRtbAorCisg
ICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToK
KyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAo
V2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6SlNDdXN0b21Q
b3NpdGlvbkVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlv
bkVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1
c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
Q3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpT
R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0dl
b2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBkb20vR2VvbG9jYXRpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2Vv
Tm90aWZpZXIpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjp0
aW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9sb2NhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6ZGlzY29ubmVjdEZyYW1lKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
R2VvbG9jYXRpb246OmNsZWFyV2F0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
OnN0b3BVcGRhdGluZ0lmRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Omhh
bmRsZU5ld1Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpoYW5kbGVF
cnJvcik6CisgICAgICAgICogZG9tL0dlb2xvY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246On5HZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbjo6bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKiBkb20vR2VvbG9jYXRpb24uaWRsOiBB
ZGRlZC4KKyAgICAgICAgKiBkb20vR2VvcG9zaXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Okdlb3Bvc2l0aW9uOjp0b1N0cmluZyk6CisgICAgICAgICogZG9tL0dlb3Bvc2l0aW9u
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246Okdlb3Bvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjpsYXRpdHVkZSk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9wb3NpdGlvbjo6bG9uZ2l0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0
aW9uOjphbHRpdHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6YWNjdXJhY3kp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OmFsdGl0dWRlQWNjdXJhY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OmhlYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
R2VvcG9zaXRpb246OnZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjp0
aW1lc3RhbXApOgorICAgICAgICAqIGRvbS9HZW9wb3NpdGlvbi5pZGw6IEFkZGVkLgorICAgICAg
ICAqIGRvbS9Qb3NpdGlvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb25DYWxsYmFjazo6flBvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAqIGRvbS9Qb3NpdGlv
bkNhbGxiYWNrLmlkbDogQWRkZWQuCisgICAgICAgICogZG9tL1Bvc2l0aW9uRXJyb3IuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpQb3NpdGlvbkVycm9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb25FcnJvcjo6c2V0Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9y
OjptZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OnNldE1lc3NhZ2Up
OgorICAgICAgICAqIGRvbS9Qb3NpdGlvbkVycm9yLmlkbDogQWRkZWQuCisgICAgICAgICogZG9t
L1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0
aW9uRXJyb3JDYWxsYmFjazo6flBvc2l0aW9uRXJyb3JDYWxsYmFjayk6CisgICAgICAgICogZG9t
L1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIGRvbS9Qb3NpdGlv
bk9wdGlvbnMuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OlBv
c2l0aW9uT3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OmVuYWJs
ZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OnNldEVu
YWJsZUhpZ2hBY2N1cmFjeSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OnRp
bWVvdXQpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpzZXRUaW1lb3V0KToK
KyAgICAgICAgKiBkb20vUG9zaXRpb25PcHRpb25zLmlkbDogQWRkZWQuCisgICAgICAgICogcGFn
ZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpkaXNjb25uZWN0
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpnZW9sb2NhdGlvbik6CisgICAg
ICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6Cisg
ICAgICAgICogcGxhdGZvcm0vbWFjL1Bvc2l0aW9uRXJyb3JNYWMubW06IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6UG9zaXRpb25FcnJvcik6CisKIDIwMDgtMTAtMDkg
IEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9s
aXZlciBIdW50LgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMzc0NTYpCisrKyBXZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDggQEAg
RE9NX0NMQVNTRVMgPSBcCiAgICAgRXZlbnRUYXJnZXROb2RlIFwKICAgICBGaWxlIFwKICAgICBG
aWxlTGlzdCBcCisgICAgR2VvbG9jYXRpb24gXAorICAgIEdlb3Bvc2l0aW9uIFwKICAgICBIVE1M
QW5jaG9yRWxlbWVudCBcCiAgICAgSFRNTEFwcGxldEVsZW1lbnQgXAogICAgIEhUTUxBcmVhRWxl
bWVudCBcCkBAIC0xNzksNiArMTgxLDEwIEBAIERPTV9DTEFTU0VTID0gXAogICAgIE92ZXJmbG93
RXZlbnQgXAogICAgIFBsdWdpbiBcCiAgICAgUGx1Z2luQXJyYXkgXAorICAgIFBvc2l0aW9uQ2Fs
bGJhY2sgXAorICAgIFBvc2l0aW9uRXJyb3IgXAorICAgIFBvc2l0aW9uRXJyb3JDYWxsYmFjayBc
CisgICAgUG9zaXRpb25PcHRpb25zIFwKICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gXAogICAg
IFByb2dyZXNzRXZlbnQgXAogICAgIFJHQkNvbG9yIFwKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMzc0
NTYpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiAr
MzI1LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Nh
bnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNDbGlwYm9hcmRDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1
c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNr
LmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCBc
CisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAg
XAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBc
CiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5jcHAgXAogCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suaCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgXApAQCAtMzQ3LDYgKzM1MSw3IEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Lmgg
XAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2UuaCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MQWxsQ29sbGVjdGlvbi5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29s
bGVjdGlvbi5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0
b20uY3BwIFwKQEAgLTY0Myw2ICs2NDgsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJD
b3JlL2RvbS9FeGNlcHRpb25CYXNlLmggXAogCVdlYkNvcmUvZG9tL0V4Y2VwdGlvbkNvZGUuY3Bw
IFwKIAlXZWJDb3JlL2RvbS9FeGNlcHRpb25Db2RlLmggXAorCVdlYkNvcmUvcGFnZS9HZW9sb2Nh
dGlvbi5jcHAgXAorCVdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oIFwKKwlXZWJDb3JlL3BhZ2Uv
R2VvcG9zaXRpb24uY3BwIFwKKwlXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaCBcCiAJV2ViQ29y
ZS9kb20vS2V5Ym9hcmRFdmVudC5jcHAgXAogCVdlYkNvcmUvZG9tL0tleWJvYXJkRXZlbnQuaCBc
CiAJV2ViQ29yZS9kb20vTWFwcGVkQXR0cmlidXRlLmNwcCBcCkBAIC02ODQsOCArNjkzLDEyIEBA
IHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9kb20vT3ZlcmZsb3dFdmVudC5oIFwKIAlX
ZWJDb3JlL2RvbS9Qb3NpdGlvbi5jcHAgXAogCVdlYkNvcmUvZG9tL1Bvc2l0aW9uLmggXAorCVdl
YkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmggXAorCVdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVy
cm9yLmggXAorCVdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBcCiAJV2ViQ29y
ZS9kb20vUG9zaXRpb25JdGVyYXRvci5jcHAgXAogCVdlYkNvcmUvZG9tL1Bvc2l0aW9uSXRlcmF0
b3IuaCBcCisJV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5oIFwKIAlXZWJDb3JlL2RvbS9Q
cm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwIFwKIAlXZWJDb3JlL2RvbS9Qcm9jZXNzaW5nSW5zdHJ1
Y3Rpb24uaCBcCiAJV2ViQ29yZS9kb20vUHJvZ3Jlc3NFdmVudC5jcHAgXApJbmRleDogV2ViQ29y
ZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lv
biAzNzQ1NikKKysrIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTUyOSw2
ICs1MjksOCBAQCBTT1VSQ0VTICs9IFwKICAgICBkb20vRXZlbnRUYXJnZXROb2RlLmNwcCBcCiAg
ICAgZG9tL0V4Y2VwdGlvbkJhc2UuY3BwIFwKICAgICBkb20vRXhjZXB0aW9uQ29kZS5jcHAgXAor
ICAgIHBhZ2UvR2VvbG9jYXRpb24uY3BwIFwKKyAgICBwYWdlL0dlb3Bvc2l0aW9uLmNwcCBcCiAg
ICAgZG9tL0tleWJvYXJkRXZlbnQuY3BwIFwKICAgICBkb20vTWFwcGVkQXR0cmlidXRlLmNwcCBc
CiAgICAgZG9tL01lc3NhZ2VDaGFubmVsLmNwcCBcCkBAIC0xMTkzLDcgKzExOTUsMTAgQEAgY29u
dGFpbnMoREVGSU5FUywgRU5BQkxFX0RBVEFCQVNFPTEpIHsKICAgICAgICAgYmluZGluZ3MvanMv
SlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJhY2suY3BwIFwKICAgICAgICAgYmluZGlu
Z3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1NRTFJl
c3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIFwKLSAgICAgICAgYmluZGluZ3MvanMvSlNTUUxUcmFu
c2FjdGlvbkN1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1
c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBc
CisgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgXAorICAg
ICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAKIAogICAg
IElETF9CSU5ESU5HUyArPSBcCiAgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2UuaWRsIFwKSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZVNvdXJjZXMuYmtsCShyZXZpc2lvbiAzNzQ1NikKKysrIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMu
YmtsCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4IEBAIFRoaXMgZmlsZSBjb250YWlucyB0
aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9t
LmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3Bw
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCisgICAgICAgIGJpbmRp
bmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAKKyAgICAgICAgYmluZGluZ3MvanMv
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
Q3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3Vz
dG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlND
dXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmNwcApAQCAtNTksNiArNjEsNyBAQCBUaGlzIGZp
bGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
RXZlbnRDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlQ3VzdG9tLmNwcAorICAgICAgICBi
aW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9K
U0hUTUxBbGxDb2xsZWN0aW9uLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0
b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3Bw
CkBAIC0yMzksNiArMjQyLDggQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVz
IG5lZQogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRXZlbnRUYXJnZXROb2RlLmNw
cAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZS5jcHAKICAgICAgICAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVMaXN0LmNwcAorICAgICAgICBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR2VvbG9jYXRpb24uY3BwCisgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNHZW9wb3NpdGlvbi5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hU
TUxBbmNob3JFbGVtZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRN
TEFwcGxldEVsZW1lbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1M
QXJlYUVsZW1lbnQuY3BwCkBAIC0zMjMsNiArMzI4LDggQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRo
ZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3Zl
cmZsb3dFdmVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BsdWdpbi5j
cHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BsdWdpbkFycmF5LmNwcAorICAg
ICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUG9zaXRpb25FcnJvci5jcHAKKyAgICAgICAg
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bvc2l0aW9uT3B0aW9ucy5jcHAKICAgICAgICAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKICAgICAgICAg
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Byb2dyZXNzRXZlbnQuY3BwCiAgICAgICAgIERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNSYW5nZS5jcHAKQEAgLTM5NSw2ICs0MDIsOCBAQCBUaGlzIGZp
bGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIGRvbS9FdmVudFRhcmdl
dE5vZGUuY3BwCiAgICAgICAgIGRvbS9FeGNlcHRpb25CYXNlLmNwcAogICAgICAgICBkb20vRXhj
ZXB0aW9uQ29kZS5jcHAKKyAgICAgICAgcGFnZS9HZW9sb2NhdGlvbi5jcHAKKyAgICAgICAgcGFn
ZS9HZW9wb3NpdGlvbi5jcHAKICAgICAgICAgZG9tL0tleWJvYXJkRXZlbnQuY3BwCiAgICAgICAg
IGRvbS9NYXBwZWRBdHRyaWJ1dGUuY3BwCiAgICAgICAgIGRvbS9NZXNzYWdlQ2hhbm5lbC5jcHAK
SW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lv
biAzNzQ1NikKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC00MjE0LDYgKzQyMTQsMzMgQEAKIAkJRjkxNkM0OEQwREI1MTBGODAw
NzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhCMERCNTEwRjgwMDc2Q0Q4
MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgKi87IH07CiAJCUY5MTZDNDhF
MERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0OEMwREI1MTBG
ODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CiAJCUY5
RjBFRDdBMERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5RjBFRDc3MERC
NTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLzsgfTsKKwkJ
RkU4MEQ3QTcwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBMjBF
OUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJ
RkU4MEQ3QTgwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QTMwRTlD
MUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oICovOyB9OworCQlGRTgw
RDdBOTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QTQw
RTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCAqLzsg
fTsKKwkJRkU4MEQ3QUEwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2su
aCAqLzsgfTsKKwkJRkU4MEQ3QUIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0
b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4
MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovOyB9Owor
CQlGRTgwRDdDNTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QjcwRTlDMUYyNTAwMEQ2
Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCAqLzsgfTsKKwkJRkU4MEQ3QzYwRTlDMUYyNTAwMEQ2Rjc1
IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTgwRDdCODBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaCAqLzsgfTsK
KwkJRkU4MEQ3QzcwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmlkbCBpbiBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QjkwRTlDMUYyNTAw
MEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmlkbCAqLzsgfTsKKwkJRkU4MEQ3QzgwRTlDMUYyNTAwMEQ2
Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFODBEN0JBMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5jcHAg
Ki87IH07CisJCUZFODBEN0M5MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QkIwRTlDMUYy
NTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi87IH07CisJCUZFODBEN0NBMEU5QzFGMjUwMDBE
NkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5p
ZGwgKi87IH07CisJCUZFODBEN0NCMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdC
RDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5oICovOyB9OworCQlGRTgwRDdD
QzBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5pZGwgaW4gUmVzb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JFMEU5QzFGMjUwMDBENkY3
NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAqLzsgfTsKKwkJRkU4MEQ3Q0QwRTlDMUYyNTAwMEQ2
Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFODBEN0JGMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmgg
Ki87IH07CisJCUZFODBEN0NFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmlkbCBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzAw
RTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaWRsICovOyB9OworCQlGRTgwRDdDRjBF
OUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdDMTBFOUMxRjI1MDAwRDZGNzUg
LyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggKi87IH07CisJCUZFODBEN0QwMEU5QzFGMjUwMDBE
NkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdDMjBFOUMxRjI1MDAwRDZGNzUgLyogUG9z
aXRpb25FcnJvckNhbGxiYWNrLmlkbCAqLzsgfTsKKwkJRkU4MEQ3RDEwRTlDMUYyNTAwMEQ2Rjc1
IC8qIFBvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU4MEQ3QzMwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5o
ICovOyB9OworCQlGRTgwRDdEMjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25PcHRpb25zLmlk
bCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3
QzQwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5pZGwgKi87IH07CisJCUZFODBE
QTYzMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTVGMEU5QzQ3MDMwMDBENkY3NSAv
KiBKU0dlb2xvY2F0aW9uLmNwcCAqLzsgfTsKKwkJRkU4MERBNjQwRTlDNDcwMzAwMEQ2Rjc1IC8q
IEpTR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFODBEQTYwMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmggKi87IH07
CisJCUZFODBEQTY1MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYxMEU5QzQ3MDMw
MDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCAqLzsgfTsKKwkJRkU4MERBNjYwRTlDNDcwMzAw
MEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9u
LmggKi87IH07CisJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3Iu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERB
NkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi87IH07CisJCUZFODBE
QTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAv
KiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkU4MERBNzMwRTlDNDcyRjAwMEQ2Rjc1IC8q
IEpTUG9zaXRpb25PcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFODBEQTZGMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9u
cy5jcHAgKi87IH07CisJCUZFODBEQTc0MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0
aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4
MERBNzAwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi87IH07CiAvKiBF
bmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVBy
b3h5IHNlY3Rpb24gKi8KQEAgLTg4MjMsNiArODg1MCwzMyBAQAogCQlGOUYwRUQ3NzBEQjUwQ0Ey
MDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzgwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFhNTEh0
dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUZFNDlFRjk3MERDNTE0NjIwMDQyNjZFMSAvKiBEYXNoYm9hcmRTdXBwb3J0Q1NTUHJvcGVydHlO
YW1lcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEYXNoYm9hcmRTdXBwb3J0Q1NTUHJvcGVy
dHlOYW1lcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QTIwRTlDMUVE
MjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBMzBFOUMxRUQyMDAwRDZGNzUgLyogSlND
dXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTgwRDdBNDBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21Qb3Np
dGlvbkVycm9yQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgw
RDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2Fs
bGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QTYwRTlDMUVEMjAw
MEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFODBEN0I3MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9sb2NhdGlvbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0I4MEU5QzFGMjUwMDBENkY3NSAvKiBH
ZW9sb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW9sb2NhdGlv
bi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCOTBFOUMxRjI1MDAwRDZG
NzUgLyogR2VvbG9jYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdlb2xvY2F0aW9u
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkEwRTlDMUYyNTAwMEQ2
Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdlb3Bvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3
QkIwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdlb3Bvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gR2VvcG9zaXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNh
bGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQb3NpdGlvbkNhbGxiYWNrLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkYwRTlDMUYyNTAwMEQ2Rjc1IC8q
IFBvc2l0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRp
b25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdDMDBFOUMxRjI1
MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9z
aXRpb25FcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0MxMEU5
QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25FcnJvckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFODBEN0MyMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9y
Q2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBvc2l0aW9uRXJyb3JDYWxsYmFj
ay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0MzMEU5QzFGMjUwMDBE
NkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBE
N0M0MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IFBvc2l0aW9uT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFODBEQTVGMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VvbG9jYXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2MDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9s
b2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlb2xvY2F0aW9u
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTYxMEU5QzQ3MDMwMDBENkY3
NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTR2VvcG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgw
REE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0dlb3Bvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQb3NpdGlvbkVycm9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8q
IEpTUG9zaXRpb25FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bv
c2l0aW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNkYwRTlD
NDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25PcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkU4MERBNzAwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRp
b25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25PcHRpb25z
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBz
ZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8K
QEAgLTk1NzIsNiArOTYyNiwxMiBAQAogCQkJCTY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBG
cmFtZVRyZWUuaCAqLywKIAkJCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3
LmNwcCAqLywKIAkJCQk2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggKi8s
CisJCQkJRkU4MEQ3QjcwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCAqLywKKwkJ
CQlGRTgwRDdCODBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaCAqLywKKwkJCQlGRTgw
RDdCOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaWRsICovLAorCQkJCUZFODBEN0JB
MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5jcHAgKi8sCisJCQkJRkU4MEQ3QkIwRTlD
MUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi8sCisJCQkJRkU4MEQ3QkMwRTlDMUYyNTAw
MEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmlkbCAqLywKIAkJCQlCQzk0RDE1MDBDMjc1QzhCMDA2QkM2
MTcgLyogSGlzdG9yeS5jcHAgKi8sCiAJCQkJQkM5NEQxNTEwQzI3NUM4QjAwNkJDNjE3IC8qIEhp
c3RvcnkuaCAqLywKIAkJCQlCQzk0RDE1MjBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5pZGwg
Ki8sCkBAIC05NTg3LDYgKzk2NDcsMTQgQEAKIAkJCQk2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEg
LyogUGFnZS5oICovLAogCQkJCTkzMDJCMEJDMEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAu
Y3BwICovLAogCQkJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLywK
KwkJCQlGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5oICovLAor
CQkJCUZFODBEN0JFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAqLywK
KwkJCQlGRTgwRDdCRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5oICovLAorCQkJ
CUZFODBEN0MwMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmlkbCAqLywKKwkJCQlG
RTgwRDdDMTBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggKi8sCisJ
CQkJRkU4MEQ3QzIwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwg
Ki8sCisJCQkJRkU4MEQ3QzMwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oICov
LAorCQkJCUZFODBEN0M0MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaWRsICov
LAogCQkJCUJDRUMwMUJBMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uY3BwICovLAogCQkJCUJD
RUMwMUJCMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uaCAqLywKIAkJCQlCQ0VDMDFCQzBDMjc0
REFDMDA5RjRFQzkgLyogU2NyZWVuLmlkbCAqLywKQEAgLTExNzUwLDYgKzExODE4LDEwIEBACiAJ
CQkJNjVERjMyMkUwOUQxRERCQzAwMEJFMzI1IC8qIEpTRW50aXR5LmggKi8sCiAJCQkJOTNGOUI3
NzIwQkE1RkREQzAwODU0MDY0IC8qIEpTRW50aXR5UmVmZXJlbmNlLmNwcCAqLywKIAkJCQk5M0Y5
Qjc3MzBCQTVGRERDMDA4NTQwNjQgLyogSlNFbnRpdHlSZWZlcmVuY2UuaCAqLywKKwkJCQlGRTgw
REE1RjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgKi8sCisJCQkJRkU4MERB
NjAwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCAqLywKKwkJCQlGRTgwREE2MTBF
OUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5jcHAgKi8sCisJCQkJRkU4MERBNjIwRTlD
NDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAqLywKIAkJCQlCQ0Q5QzJCQzBDMTdCNjlF
MDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAuY3BwICovLAogCQkJCUJDRDlDMkJEMEMxN0I2OUUw
MDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5oICovLAogCQkJCTE0REMwRDM1MDlGRUQwNzMwMDdC
MDIzNSAvKiBKU05vZGUuY3BwICovLApAQCAtMTE3NTgsNiArMTE4MzAsMTAgQEAKIAkJCQlCQ0Q5
QzJCRjBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlzdC5oICovLAogCQkJCTY1REYzMUU5MDlE
MUNDNjAwMDBCRTMyNSAvKiBKU05vdGF0aW9uLmNwcCAqLywKIAkJCQk2NURGMzFFQTA5RDFDQzYw
MDAwQkUzMjUgLyogSlNOb3RhdGlvbi5oICovLAorCQkJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3
NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovLAorCQkJCUZFODBEQTZFMEU5QzQ3MkYwMDBENkY3
NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLywKKwkJCQlGRTgwREE2RjBFOUM0NzJGMDAwRDZGNzUg
LyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwICovLAorCQkJCUZFODBEQTcwMEU5QzQ3MkYwMDBENkY3
NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovLAogCQkJCTY1REYzMUVCMDlEMUNDNjAwMDBCRTMy
NSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgKi8sCiAJCQkJNjVERjMxRUMwOUQxQ0M2
MDAwMEJFMzI1IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCiAJCQkJRTRCNDIzODUw
Q0JGQjczQzAwQUYyRUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5jcHAgKi8sCkBAIC0xMjgyMiw2ICsx
Mjg5OCwxMCBAQAogCQkJCUJDNDZDMUVEMEMwRERCREYwMDIwQ0ZDMyAvKiBKU0NTU1J1bGVDdXN0
b20uY3BwICovLAogCQkJCUJDNTgyNUYyMEMwQjg5MzgwMDUzRjFCNSAvKiBKU0NTU1N0eWxlRGVj
bGFyYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJDMjBGQjdFMEMwRThFNkMwMEQxNDQ3RiAvKiBK
U0NTU1ZhbHVlQ3VzdG9tLmNwcCAqLywKKwkJCQlGRTgwRDdBMjBFOUMxRUQyMDAwRDZGNzUgLyog
SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCAqLywKKwkJCQlGRTgwRDdBMzBFOUMxRUQyMDAw
RDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggKi8sCisJCQkJRkU4MEQ3QTQwRTlD
MUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCAqLywKKwkJ
CQlGRTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2suaCAqLywKIAkJCQk1MUVDOTI1QjBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0
ZW1lbnRDYWxsYmFjay5jcHAgKi8sCiAJCQkJNTFFQzkyNUMwQ0U5MERENDAwRjkwMzA4IC8qIEpT
Q3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suaCAqLywKIAkJCQk1MUVDOTI1RDBDRTkwREQ0MDBG
OTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCAqLywKQEAgLTEy
ODQxLDYgKzEyOTIxLDcgQEAKIAkJCQlCQzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVt
ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0VGQUY0RDBDMzE3RTY5MDBGQTgxRjYgLyogSlNFdmVu
dEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzQjdCMjAwRTkxQUFGNDAwRDU0MDY1IC8qIEpTRXZlbnRU
YXJnZXROb2RlQ3VzdG9tLmNwcCAqLywKKwkJCQlGRTgwRDdBNjBFOUMxRUQyMDAwRDZGNzUgLyog
SlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFN0IxOTIwRDRFODY5NjAwNzVBNTM5
IC8qIEpTSGlzdG9yeUN1c3RvbS5jcHAgKi8sCiAJCQkJQkM0RURFRjMwQzA4RjNGQjAwN0VERDQ5
IC8qIEpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDQ0JBRDNBMEMxOEJG
RjgwMENFODkwRiAvKiBKU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTE1OTYxLDYg
KzE2MDQyLDE4IEBACiAJCQkJMUM4MUJBMEMwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRE
ZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQkEwRTBFOTczNDgzMDAyNjZF
MDcgLyogSmF2YVNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNCRTEy
QjBFOTgwOTJGMDA4MzU1ODggLyogUG9wdXBNZW51U3R5bGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZFODBEN0E4MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAorCQkJCUZFODBEN0FBMEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3QzYwRTlDMUYy
NTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdDOTBF
OUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBE
N0NCMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTgwRDdDRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkU4MEQ3Q0YwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3RDEwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBv
c2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MERBNjQwRTlDNDcwMzAwMEQ2
Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEQTY2MEU5QzQ3
MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwREE3
MjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGRTgwREE3NDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDRjZCREZBMEU5QkIyNkEwMDI1RTFDRCAvKiBPYmpDRXZlbnRMaXN0ZW5l
ci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUNGNkJFMTUwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNO
b2RlRmlsdGVyQ29uZGl0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBENjcwODBFOUU5REVC
MDBFNDIwRjAgLyogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTYwNzcsNiArMTYxNzAsMTIgQEAKIAkJCQk4NTEzNkNBODBBRUQ2NjU5MDBGOTBB
M0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdB
MEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJ
CQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3Vy
Y2VzICovLAorCQkJCUZFODBEN0M3MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5pZGwg
aW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBEN0NBMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3Np
dGlvbi5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBEN0NDMEU5QzFGMjUwMDBENkY3NSAv
KiBQb3NpdGlvbkNhbGxiYWNrLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3Q0UwRTlD
MUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQlG
RTgwRDdEMDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbCBpbiBS
ZXNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3RDIwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0
aW9ucy5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTc4MjUsNiArMTc5MjQsMTUgQEAKIAkJCQkx
QzgxQkEwMjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJMUM4MUJBMDkwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJh
bWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMEQwRTk3MzQ4MzAwMjY2RTA3IC8qIEph
dmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwRDdBNzBFOUMx
RUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUZFODBEN0E5MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JD
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwRDdBQjBFOUMxRUQyMDAwRDZGNzUg
LyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwRDdDNTBF
OUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4
MEQ3QzgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUZFODBEQTYzMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZFODBEQTY1MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MERBNzMwRTlDNDcyRjAwMEQ2Rjc1
IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDRjZCREZCMEU5
QkIyNkEwMDI1RTFDRCAvKiBPYmpDRXZlbnRMaXN0ZW5lci5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTFDRjZCRTE0MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRlckNvbmRpdGlvbi5tbSBp
biBTb3VyY2VzICovLAogCQkJKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Q
b3NpdGlvbkNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2Yg
QXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBp
dHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9u
Q2FsbGJhY2suaCIKKworI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJDb25zb2xlLmgi
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJKU0dlb3Bvc2l0aW9uLmgiCisjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlIDxranMv
SlNMb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
KworSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2soSlNP
YmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpCisgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNr
KQorICAgICwgbV9mcmFtZShmcmFtZSkKK3sKK30KKwordm9pZCBKU0N1c3RvbVBvc2l0aW9uQ2Fs
bGJhY2s6OmhhbmRsZUV2ZW50KEdlb3Bvc2l0aW9uKiBnZW9wb3NpdGlvbiwgYm9vbCYgcmFpc2Vk
RXhjZXB0aW9uKQoreworICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKKyAgICBBU1NFUlQobV9mcmFt
ZSk7CisgICAgCisgICAgaWYgKCFtX2ZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9m
cmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCgpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIAorICAgIEpTQzo6SlNMb2NrIGxvY2soZmFs
c2UpOworICAgIAorICAgIEpTVmFsdWUqIGZ1bmN0aW9uID0gbV9jYWxsYmFjay0+Z2V0KGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgImhhbmRsZUV2ZW50IikpOworICAgIENhbGxEYXRhIGNhbGxEYXRh
OworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZnVuY3Rpb24tPmdldENhbGxEYXRhKGNhbGxEYXRh
KTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgIGNhbGxUeXBl
ID0gbV9jYWxsYmFjay0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5
cGUgPT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGFuIGV4
Y2VwdGlvbiBiZSB0aHJvd24gaGVyZT8KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBmdW5jdGlvbiA9IG1fY2FsbGJhY2s7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxK
U0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s+IHByb3RlY3QodGhpcyk7CisgICAgCisgICAgQXJnTGlz
dCBhcmdzOworICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgZ2VvcG9zaXRpb24pKTsKKyAgICAK
KyAgICBnbG9iYWxPYmplY3QtPnN0YXJ0VGltZW91dENoZWNrKCk7CisgICAgY2FsbChleGVjLCBm
dW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX2NhbGxiYWNrLCBhcmdzKTsKKyAgICBnbG9i
YWxPYmplY3QtPnN0b3BUaW1lb3V0Q2hlY2soKTsKKyAgICAKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpIHsKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+cmVw
b3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKKyAgICAgICAgCisgICAgICAgIHJhaXNlZEV4Y2Vw
dGlvbiA9IHRydWU7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMu
ICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFja19oCisjZGVmaW5lIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFja19oCisKKyNpbmNsdWRl
ICJQb3NpdGlvbkNhbGxiYWNrLmgiCisKKyNpbmNsdWRlIDxranMvSlNPYmplY3QuaD4KKyNpbmNs
dWRlIDxranMvcHJvdGVjdC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFj
ZSBKU0MgeworICAgIGNsYXNzIEpTT2JqZWN0OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIEZyYW1lOworY2xhc3MgR2VvcG9zaXRpb247CisKK2NsYXNzIEpTQ3VzdG9tUG9zaXRp
b25DYWxsYmFjayA6IHB1YmxpYyBQb3NpdGlvbkNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s+IGNyZWF0ZShKU0M6OkpTT2Jq
ZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrKGNhbGxiYWNrLCBmcmFtZSkpOyB9CisgICAgCisgICAgdmlydHVh
bCB2b2lkIGhhbmRsZUV2ZW50KEdlb3Bvc2l0aW9uKiwgYm9vbCYgcmFpc2VkRXhjZXB0aW9uKTsK
K3ByaXZhdGU6CisgICAgSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrKEpTQzo6SlNPYmplY3QqIGNh
bGxiYWNrLCBGcmFtZSopOworCisgICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNDOjpKU09iamVjdD4g
bV9jYWxsYmFjazsKKyAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7Cit9OworICAgIAorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrX2gK
SW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2su
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVy
cm9yQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisg
KiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uRXJyb3JD
YWxsYmFjay5oIgorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkNvbnNvbGUuaCIK
KyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTUG9zaXRpb25FcnJvci5oIgorI2luY2x1
ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSA8a2pz
L0pTTG9jay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit1c2luZyBuYW1lc3BhY2Ug
SlNDOworCitKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6SlNDdXN0b21Qb3NpdGlvbkVy
cm9yQ2FsbGJhY2soSlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpCisgICAgOiBtX2Nh
bGxiYWNrKGNhbGxiYWNrKQorICAgICwgbV9mcmFtZShmcmFtZSkKK3sKK30KKwordm9pZCBKU0N1
c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQoUG9zaXRpb25FcnJvciogcG9z
aXRpb25FcnJvcikKK3sKKyAgICBBU1NFUlQobV9jYWxsYmFjayk7CisgICAgQVNTRVJUKG1fZnJh
bWUpOworICAgIAorICAgIGlmICghbV9mcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1f
ZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICAKKyAgICBKU0M6OkpTTG9jayBsb2NrKGZh
bHNlKTsKKyAgICAKKyAgICBKU1ZhbHVlKiBmdW5jdGlvbiA9IG1fY2FsbGJhY2stPmdldChleGVj
LCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0
YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGZ1bmN0aW9uLT5nZXRDYWxsRGF0YShjYWxsRGF0
YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgeworICAgICAgICBjYWxsVHlw
ZSA9IG1fY2FsbGJhY2stPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICAgICAgaWYgKGNhbGxU
eXBlID09IENhbGxUeXBlTm9uZSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBhbiBl
eGNlcHRpb24gYmUgdGhyb3duIGhlcmU/CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICAgICAgZnVuY3Rpb24gPSBtX2NhbGxiYWNrOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHByb3RlY3QodGhpcyk7CisgICAgCisgICAg
QXJnTGlzdCBhcmdzOworICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgcG9zaXRpb25FcnJvcikp
OworICAgIAorICAgIGdsb2JhbE9iamVjdC0+c3RhcnRUaW1lb3V0Q2hlY2soKTsKKyAgICBjYWxs
KGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fY2FsbGJhY2ssIGFyZ3MpOwor
ICAgIGdsb2JhbE9iamVjdC0+c3RvcFRpbWVvdXRDaGVjaygpOworICAgIAorICAgIGlmIChleGVj
LT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93KCktPmNvbnNvbGUo
KS0+cmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKK30KKyAgICAKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9y
Q2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9z
aXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
CisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAorI2RlZmluZSBK
U0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFja19oCisKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9y
Q2FsbGJhY2suaCIKKworI2luY2x1ZGUgPGtqcy9KU09iamVjdC5oPgorI2luY2x1ZGUgPGtqcy9w
cm90ZWN0Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIEpTQyB7Cisg
ICAgY2xhc3MgSlNPYmplY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNz
IEZyYW1lOworY2xhc3MgUG9zaXRpb25FcnJvcjsKKworY2xhc3MgSlNDdXN0b21Qb3NpdGlvbkVy
cm9yQ2FsbGJhY2sgOiBwdWJsaWMgUG9zaXRpb25FcnJvckNhbGxiYWNrIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gY3JlYXRl
KEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayhjYWxsYmFjaywgZnJhbWUpKTsgfQor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChQb3NpdGlvbkVycm9yKik7Citwcml2
YXRlOgorICAgIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrKEpTQzo6SlNPYmplY3QqIGNh
bGxiYWNrLCBGcmFtZSopOworCisgICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNDOjpKU09iamVjdD4g
bV9jYWxsYmFjazsKKyAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7Cit9OworICAgIAorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2tfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9t
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIp
IG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMg
IkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisg
KiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJKU0dlb2xvY2F0aW9uLmgiCisKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKKyNpbmNs
dWRlICJKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0N1c3RvbVBvc2l0
aW9uRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAi
SlNQb3NpdGlvbk9wdGlvbnMuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitKU1ZhbHVlKiBKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24o
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIC8vIEFyZ3VtZW50
czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uRXJyb3JDYWxsYmFjaywgKG9w
dGlvbmFsKVBvc2l0aW9uT3B0aW9ucworICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3Np
dGlvbkNhbGxiYWNrOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMsIDApLT5n
ZXRPYmplY3QoKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOworICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworICAgIH0KKworICAgIGlmIChGcmFtZSogZnJhbWUgPSB0b0pTRE9NV2luZG93KGV4ZWMt
PmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKSkKKyAgICAgICAgcG9zaXRp
b25DYWxsYmFjayA9IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZnJh
bWUpOworICAgIAorICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJy
b3JDYWxsYmFjazsKKyAgICBpZiAoIWFyZ3MuYXQoZXhlYywgMSktPmlzVW5kZWZpbmVkT3JOdWxs
KCkpIHsKKyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoZXhlYywgMSktPmdldE9i
amVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAgICAgc2V0RE9NRXhjZXB0
aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRvSlNET01X
aW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpKQorICAg
ICAgICAgICAgcG9zaXRpb25FcnJvckNhbGxiYWNrID0gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2Fs
bGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1lKTsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPFBv
c2l0aW9uT3B0aW9ucz4gcG9zaXRpb25PcHRpb25zOworICAgIGlmICghYXJncy5hdChleGVjLCAy
KS0+aXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcG9zaXRpb25PcHRpb25zID0gdG9Qb3Np
dGlvbk9wdGlvbnMoYXJncy5hdChleGVjLCAyKSk7CisgICAgCisgICAgbV9pbXBsLT5nZXRDdXJy
ZW50UG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxs
YmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5nZXQoKSk7CisgICAgCisgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUqIEpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRp
b24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIC8vIEFyZ3Vt
ZW50czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uRXJyb3JDYWxsYmFjaywg
KG9wdGlvbmFsKVBvc2l0aW9uT3B0aW9ucworICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBw
b3NpdGlvbkNhbGxiYWNrOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMsIDAp
LT5nZXRPYmplY3QoKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9KU0RPTVdpbmRv
dyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCkpCisgICAgICAg
IHBvc2l0aW9uQ2FsbGJhY2sgPSBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmpl
Y3QsIGZyYW1lKTsKKyAgICAKKyAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3Np
dGlvbkVycm9yQ2FsbGJhY2s7CisgICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDEpLT5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMsIDEp
LT5nZXRPYmplY3QoKTsKKyAgICAgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IHRvSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgp
LT5mcmFtZSgpKQorICAgICAgICAgICAgcG9zaXRpb25FcnJvckNhbGxiYWNrID0gSlNDdXN0b21Q
b3NpdGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1lKTsKKyAgICB9CisgICAg
CisgICAgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gcG9zaXRpb25PcHRpb25zOworICAgIGlmICgh
YXJncy5hdChleGVjLCAyKS0+aXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcG9zaXRpb25P
cHRpb25zID0gdG9Qb3NpdGlvbk9wdGlvbnMoYXJncy5hdChleGVjLCAyKSk7CisgICAgCisgICAg
aW50IHcgPSBtX2ltcGwtPndhdGNoUG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCks
IHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5nZXQoKSk7
CisgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHcpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiUG9zaXRpb25F
cnJvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dlb2xvY2F0aW9uOjpHZW9Ob3RpZmll
cjo6R2VvTm90aWZpZXIoUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3Np
dGlvbk9wdGlvbnMqIG9wdGlvbnMpCisgICAgOiBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2Fs
bGJhY2spCisgICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKKyAgICAsIG1fdGlt
ZXIodGhpcywgJkdlb05vdGlmaWVyOjp0aW1lckZpcmVkKQoreworICAgIGlmIChtX2Vycm9yQ2Fs
bGJhY2sgJiYgb3B0aW9ucyAmJiBvcHRpb25zLT50aW1lb3V0KCkgIT0gLTEpCisgICAgICAgIG1f
dGltZXIuc3RhcnRPbmVTaG90KG9wdGlvbnMtPnRpbWVvdXQoKSAvIDEwMDAuMCk7Cit9CisKK3Zv
aWQgR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjp0aW1lckZpcmVkKFRpbWVyPEdlb2xvY2F0aW9u
OjpHZW9Ob3RpZmllcj4qIHRpbWVyKQoreworICAgIEFTU0VSVChtX2Vycm9yQ2FsbGJhY2spOwor
ICAgIAorICAgIG1fdGltZXIuc3RvcCgpOworICAgIAorICAgIFJlZlB0cjxQb3NpdGlvbkVycm9y
PiBlcnJvciA9IG5ldyBQb3NpdGlvbkVycm9yKDQsICJUaW1lZCBvdXQiKTsKKyAgICBtX2Vycm9y
Q2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKK30KKworR2VvbG9jYXRpb246Okdl
b2xvY2F0aW9uKEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCit7CisKK30KKwor
dm9pZCBHZW9sb2NhdGlvbjo6ZGlzY29ubmVjdEZyYW1lKCkKK3sKKyAgICBtX2ZyYW1lID0gMDsK
K30KKwordm9pZCBHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9z
aXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JD
YWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKQoreworICAg
IFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBuZXcgR2VvTm90aWZpZXIoc3VjY2Vzc0Nh
bGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsKKyAgICAKKyAgICBpZiAoIXN0YXJ0VXBk
YXRpbmcob3B0aW9ucykpIHsKKyAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2sp
IHsKKyAgICAgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IG5ldyBQb3NpdGlv
bkVycm9yKDEsICJVbmFibGUgdG8gU3RhcnQiKTsKKyAgICAgICAgICAgIG5vdGlmaWVyLT5tX2Vy
cm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm47CisgICAgfQorICAgIAorICAgIG1fb25lU2hvdHMuYWRkKG5vdGlmaWVyKTsKK30K
KworbG9uZyBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykKK3sKKyAgICBSZWZQdHI8
R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gbmV3IEdlb05vdGlmaWVyKHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaywgb3B0aW9ucyk7CisgICAgCisgICAgaWYgKCFzdGFydFVwZGF0aW5nKG9w
dGlvbnMpKSB7CisgICAgICAgIGlmIChub3RpZmllci0+bV9lcnJvckNhbGxiYWNrKSB7CisgICAg
ICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gZXJyb3IgPSBuZXcgUG9zaXRpb25FcnJvcigx
LCAiVW5hYmxlIHRvIFN0YXJ0Iik7CisgICAgICAgICAgICBub3RpZmllci0+bV9lcnJvckNhbGxi
YWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJu
IDA7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBsb25nIHNJZGVudGlmaWVyID0gMDsKKyAgICAK
KyAgICBtX3dhdGNoZXJzLnNldCgrK3NJZGVudGlmaWVyLCBub3RpZmllcik7CisgICAgCisgICAg
cmV0dXJuIHNJZGVudGlmaWVyOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpjbGVhcldhdGNoKGxv
bmcgd2F0Y2hJZCkKK3sKKyAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gbV93YXRj
aGVycy5nZXQod2F0Y2hJZCk7CisgICAgaWYgKG5vdGlmaWVyKQorICAgICAgICBtX3dhdGNoZXJz
LnJlbW92ZSh3YXRjaElkKTsKKyAgICAKKyAgICBzdG9wVXBkYXRpbmdJZkVtcHR5KCk7Cit9CisK
K3ZvaWQgR2VvbG9jYXRpb246OnN0b3BVcGRhdGluZ0lmRW1wdHkoKQoreworICAgIGlmIChtX3dh
dGNoZXJzLmlzRW1wdHkoKSAmJiBtX29uZVNob3RzLmlzRW1wdHkoKSk7CisgICAgICAgIHN0b3BV
cGRhdGluZygpOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpoYW5kbGVOZXdQb3NpdGlvbihQYXNz
UmVmUHRyPEdlb3Bvc2l0aW9uPiBuZXdQb3NpdGlvbikKK3sKKyAgICBBU1NFUlQobmV3UG9zaXRp
b24pOworICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gcG9zaXRpb24gPSBuZXdQb3NpdGlvbjsKKyAg
ICBtX2xhc3RQb3NpdGlvbiA9IHBvc2l0aW9uOworCisgICAgYm9vbCBzaG91bGRDYWxsRXJyb3JD
YWxsYmFjayA9IGZhbHNlOworICAgIHsKKyAgICBHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gbV9vbmVTaG90cy5lbmQoKTsKKyAgICBmb3IgKEdlb05vdGlmaWVyU2V0Ojpjb25z
dF9pdGVyYXRvciBpdCA9IG1fb25lU2hvdHMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Cisg
ICAgICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSAqaXQ7CisgICAgICAgIEFTU0VS
VChub3RpZmllci0+bV9zdWNjZXNzQ2FsbGJhY2spOworICAgICAgICAKKyAgICAgICAgbm90aWZp
ZXItPm1fdGltZXIuc3RvcCgpOworICAgICAgICBub3RpZmllci0+bV9zdWNjZXNzQ2FsbGJhY2st
PmhhbmRsZUV2ZW50KG1fbGFzdFBvc2l0aW9uLmdldCgpLCBzaG91bGRDYWxsRXJyb3JDYWxsYmFj
ayk7CisgICAgICAgIGlmIChzaG91bGRDYWxsRXJyb3JDYWxsYmFjaykgeworICAgICAgICAgICAg
UmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gbmV3IFBvc2l0aW9uRXJyb3IoNSwgIkphdmFT
Y3JpcHQgRXJyb3IiKTsKKyAgICAgICAgICAgIGhhbmRsZUVycm9yKGVycm9yLmdldCgpKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICB9CisgICAgCisgICAgewor
ICAgIEdlb05vdGlmaWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBtX3dhdGNoZXJzLmVuZCgp
OworICAgIGZvciAoR2VvTm90aWZpZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV93YXRjaGVy
cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPEdlb05vdGlmaWVy
PiBub3RpZmllciA9ICgqaXQpLnNlY29uZDsKKyAgICAgICAgQVNTRVJUKG5vdGlmaWVyLT5tX3N1
Y2Nlc3NDYWxsYmFjayk7CisgICAgICAgICAgICAKKyAgICAgICAgbm90aWZpZXItPm1fdGltZXIu
c3RvcCgpOworICAgICAgICBub3RpZmllci0+bV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50
KG1fbGFzdFBvc2l0aW9uLmdldCgpLCBzaG91bGRDYWxsRXJyb3JDYWxsYmFjayk7CisgICAgICAg
IGlmIChzaG91bGRDYWxsRXJyb3JDYWxsYmFjaykgeworICAgICAgICAgICAgUmVmUHRyPFBvc2l0
aW9uRXJyb3I+IGVycm9yID0gbmV3IFBvc2l0aW9uRXJyb3IoNSwgIkphdmFTY3JpcHQgRXJyb3Ii
KTsKKyAgICAgICAgICAgIGhhbmRsZUVycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICB9CisKKyAgICBtX29uZVNob3RzLmNsZWFyKCk7
CisgICAgc3RvcFVwZGF0aW5nSWZFbXB0eSgpOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpoYW5k
bGVFcnJvcihQb3NpdGlvbkVycm9yKiBlcnJvcikKK3sKKyAgICBBU1NFUlQoZXJyb3IpOworCisg
ICAgeworICAgIEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX29uZVNob3Rz
LmVuZCgpOworICAgIGZvciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9v
bmVTaG90cy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPEdlb05v
dGlmaWVyPiBub3RpZmllciA9ICppdDsKKyAgICAgICAgCisgICAgICAgIGlmIChub3RpZmllci0+
bV9lcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgbm90aWZpZXItPm1fZXJyb3JDYWxsYmFjay0+
aGFuZGxlRXZlbnQoZXJyb3IpOworICAgIH0KKyAgICB9CisgICAgbV9vbmVTaG90cy5jbGVhcigp
OworICAgIAorICAgIHsKKyAgICBHZW9Ob3RpZmllck1hcDo6Y29uc3RfaXRlcmF0b3IgZW5kID0g
bV93YXRjaGVycy5lbmQoKTsKKyAgICBmb3IgKEdlb05vdGlmaWVyTWFwOjpjb25zdF9pdGVyYXRv
ciBpdCA9IG1fd2F0Y2hlcnMuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJl
ZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSAoKml0KS5zZWNvbmQ7CisgICAgICAgICAgICAK
KyAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spCisgICAgICAgICAgICBub3Rp
Zmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvcik7CisgICAgfQorICAgIH0K
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBHZW9sb2NhdGlvbl9oCisjZGVmaW5lIEdlb2xvY2F0aW9uX2gKKwor
I2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2luY2x1ZGUgIkdlb3Bvc2l0aW9uLmgiCisjaW5jbHVk
ZSAiUG9zaXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIlBvc2l0aW9uRXJyb3JDYWxsYmFjay5o
IgorI2luY2x1ZGUgIlBvc2l0aW9uT3B0aW9ucy5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgRnJhbWU7CisgICAgCitjbGFzcyBHZW9sb2NhdGlv
biA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uPiB7CitwdWJsaWM6CisgICAgY2xhc3Mg
R2VvTm90aWZpZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHZW9Ob3RpZmllcj4geworICAgIHB1Ymxp
YzoKKyAgICAgICAgR2VvTm90aWZpZXIoUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNj
ZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxi
YWNrLCBQb3NpdGlvbk9wdGlvbnMgKm9wdGlvbnMpOworCisgICAgICAgIHZvaWQgdGltZXJGaXJl
ZChUaW1lcjxHZW9Ob3RpZmllcj4qIHRpbWVyKTsKKworICAgICAgICBSZWZQdHI8UG9zaXRpb25D
YWxsYmFjaz4gICAgICAgIG1fc3VjY2Vzc0NhbGxiYWNrOworICAgICAgICBSZWZQdHI8UG9zaXRp
b25FcnJvckNhbGxiYWNrPiAgIG1fZXJyb3JDYWxsYmFjazsKKyAgICAgICAgVGltZXI8R2VvTm90
aWZpZXI+ICAgICAgICAgICAgICBtX3RpbWVyOworICAgIH07CisKKyAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxHZW9sb2NhdGlvbj4gY3JlYXRlKEZyYW1lKiBmcmFtZSk7CisgICAgdm9pZCBkaXNjb25u
ZWN0RnJhbWUoKTsKKyAgICAKKyAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvbigpIHt9CisKKyAgICBH
ZW9wb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9sYXN0UG9zaXRpb24u
Z2V0KCk7IH0KKworICAgIHZvaWQgZ2V0Q3VycmVudFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRp
b25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxs
YmFjaz4gZXJyb3JDYWxsYmFjaywgUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKTsKKyAgICBsb25n
IHdhdGNoUG9zaXRpb24oUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3Np
dGlvbk9wdGlvbnMqIG9wdGlvbnMpOworICAgIHZvaWQgY2xlYXJXYXRjaChsb25nIHdhdGNoSWQp
OworCisgICAgdm9pZCBoYW5kbGVOZXdQb3NpdGlvbihQYXNzUmVmUHRyPEdlb3Bvc2l0aW9uPiBu
ZXdQb3NpdGlvbik7CisgICAgdm9pZCBoYW5kbGVFcnJvcihQb3NpdGlvbkVycm9yKiBlcnJvcik7
CisKK3Byb3RlY3RlZDoKKyAgICBHZW9sb2NhdGlvbihGcmFtZSogZnJhbWUpOworICAgIAorICAg
IHZvaWQgc3RvcFVwZGF0aW5nSWZFbXB0eSgpOworCisgICAgdmlydHVhbCBib29sIHN0YXJ0VXBk
YXRpbmcoUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0
b3BVcGRhdGluZygpID0gMDsKKyAgICAKKyAgICB0eXBlZGVmIEhhc2hTZXQ8IFJlZlB0cjxHZW9O
b3RpZmllcj4gPiBHZW9Ob3RpZmllclNldDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8bG9uZywgUmVm
UHRyPEdlb05vdGlmaWVyPiA+IEdlb05vdGlmaWVyTWFwOworICAgIAorICAgIEdlb05vdGlmaWVy
U2V0IG1fb25lU2hvdHM7CisgICAgR2VvTm90aWZpZXJNYXAgbV93YXRjaGVyczsKKyAgICBSZWZQ
dHI8R2VvcG9zaXRpb24+IG1fbGFzdFBvc2l0aW9uOworICAgIAorICAgIEZyYW1lKiBtX2ZyYW1l
OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdlb2xvY2F0
aW9uX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFn
ZS9HZW9sb2NhdGlvbi5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIElu
Yy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAg
ZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBD
T05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBj
b3JlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAg
ICBdIEdlb2xvY2F0aW9uIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEdlb3Bvc2l0aW9u
IGxhc3RQb3NpdGlvbjsKKworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldEN1cnJlbnRQb3NpdGlv
bihpbiBQb3NpdGlvbkNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gUG9zaXRpb25FcnJvckNh
bGxiYWNrIGVycm9yQ2FsbGJhY2ssIGluIFBvc2l0aW9uT3B0aW9ucyBvcHRpb25zKTsKKworICAg
ICAgICBbQ3VzdG9tXSBsb25nIHdhdGNoUG9zaXRpb24oaW4gUG9zaXRpb25DYWxsYmFjayBzdWNj
ZXNzQ2FsbGJhY2ssIGluIFBvc2l0aW9uRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLCBpbiBQ
b3NpdGlvbk9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICAgICAgdm9pZCBjbGVhcldhdGNoKGluIGxv
bmcgd2F0Y2hJZCk7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uY3BwCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlb3Bvc2l0aW9uLmgi
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5nIEdlb3Bvc2l0aW9uOjp0b1N0cmluZygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJwb3NpdGlvbiglLjZsZywgJS42
bGcsICUuNmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxnICUubGxkKSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbGF0aXR1ZGUsIG1fbG9uZ2l0dWRlLCBtX2FsdGl0dWRlLCBtX2FjY3Vy
YWN5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbV9hbHRpdHVkZUFjY3VyYWN5LCBtX2hl
YWRpbmcsIG1fdmVsb2NpdHksIG1fdGltZXN0YW1wKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0dlb3Bvc2l0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvR2Vv
cG9zaXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBHZW9wb3Np
dGlvbl9oCisjZGVmaW5lIEdlb3Bvc2l0aW9uX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOwor
CitjbGFzcyBHZW9wb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb3Bvc2l0aW9uPiB7Citw
dWJsaWM6CisgICAgR2VvcG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRl
LCBkb3VibGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJh
Y3ksIGRvdWJsZSBoZWFkaW5nLCBkb3VibGUgdmVsb2NpdHksIHVuc2lnbmVkIGxvbmcgbG9uZyB0
aW1lc3RhbXApCisgICAgICAgIDogbV9sYXRpdHVkZShsYXRpdHVkZSkKKyAgICAgICAgLCBtX2xv
bmdpdHVkZShsb25naXR1ZGUpCisgICAgICAgICwgbV9hbHRpdHVkZShhbHRpdHVkZSkKKyAgICAg
ICAgLCBtX2FjY3VyYWN5KGFjY3VyYWN5KQorICAgICAgICAsIG1fYWx0aXR1ZGVBY2N1cmFjeShh
bHRpdHVkZUFjY3VyYWN5KQorICAgICAgICAsIG1faGVhZGluZyhoZWFkaW5nKQorICAgICAgICAs
IG1fdmVsb2NpdHkodmVsb2NpdHkpCisgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKSAK
KyAgICB7fQorICAgIAorICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF0
aXR1ZGU7IH0KKyAgICBkb3VibGUgbG9uZ2l0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sb25naXR1
ZGU7IH0KKyAgICBkb3VibGUgYWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9
CisgICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9hY2N1cmFjeTsgfQorICAg
IGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9hbHRpdHVkZUFjY3Vy
YWN5OyB9CisgICAgZG91YmxlIGhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2hlYWRpbmc7IH0K
KyAgICBkb3VibGUgdmVsb2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAg
dW5zaWduZWQgbG9uZyBsb25nIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1w
OyB9CisKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBkb3Vi
bGUgbV9sYXRpdHVkZTsKKyAgICBkb3VibGUgbV9sb25naXR1ZGU7CisgICAgZG91YmxlIG1fYWx0
aXR1ZGU7CisgICAgZG91YmxlIG1fYWNjdXJhY3k7CisgICAgZG91YmxlIG1fYWx0aXR1ZGVBY2N1
cmFjeTsKKyAgICBkb3VibGUgbV9oZWFkaW5nOworICAgIGRvdWJsZSBtX3ZlbG9jaXR5OworICAg
IHVuc2lnbmVkIGxvbmcgbG9uZyBtX3RpbWVzdGFtcDsKK307CisgICAgCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHZW9wb3NpdGlvbl9oCkluZGV4OiBXZWJDb3JlL3BhZ2Uv
R2VvcG9zaXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5p
ZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaWRsCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQ1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWwor
ICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBHZW9wb3NpdGlvbiB7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgbGF0aXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBkb3VibGUgbG9uZ2l0dWRlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91
YmxlIGFsdGl0dWRlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGFjY3VyYWN5
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3k7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgaGVhZGluZworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgZG91YmxlIHZlbG9jaXR5CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBE
T01UaW1lU3RhbXAgdGltZXN0YW1wOworCisgICAgICAgIERPTVN0cmluZyB0b1N0cmluZygpOwor
ICAgIH07Cit9CkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAkocmV2aXNpb24gMzc0NTYpCisrKyBXZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFt
ZUxvYWRlckNsaWVudC5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTGFu
Z3VhZ2UuaCIKICNpbmNsdWRlICJNaW1lVHlwZUFycmF5LmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0
YXRlTm90aWZpZXIuaCIKQEAgLTg3LDYgKzg4LDEwIEBAIHZvaWQgTmF2aWdhdG9yOjpkaXNjb25u
ZWN0RnJhbWUoKQogICAgICAgICBtX21pbWVUeXBlcy0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAg
ICAgIG1fbWltZVR5cGVzID0gMDsKICAgICB9CisgICAgaWYgKG1fZ2VvbG9jYXRpb24pIHsKKyAg
ICAgICAgbV9nZW9sb2NhdGlvbi0+ZGlzY29ubmVjdEZyYW1lKCk7CisgICAgICAgIG1fZ2VvbG9j
YXRpb24gPSAwOworICAgIH0KICAgICBtX2ZyYW1lID0gMDsKIH0KIApAQCAtMTk3LDQgKzIwMiwx
NSBAQCBib29sIE5hdmlnYXRvcjo6b25MaW5lKCkgY29uc3QKICAgICByZXR1cm4gbmV0d29ya1N0
YXRlTm90aWZpZXIoKS5vbkxpbmUoKTsKIH0KIAorR2VvbG9jYXRpb24qIE5hdmlnYXRvcjo6Z2Vv
bG9jYXRpb24oKSBjb25zdAoreworI2lmIFBMQVRGT1JNKElQSE9ORSkKKyAgICBpZiAoIW1fZ2Vv
bG9jYXRpb24pCisgICAgICAgIG1fZ2VvbG9jYXRpb24gPSBHZW9sb2NhdGlvbjo6Y3JlYXRlKG1f
ZnJhbWUpOworICAgIHJldHVybiBtX2dlb2xvY2F0aW9uLmdldCgpOworI2Vsc2UKKyAgICByZXR1
cm4gTlVMTDsKKyNlbmRpZgorfQorICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuaAkocmV2aXNpb24gMzc0NTYpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAg
IGNsYXNzIEZyYW1lOworICAgIGNsYXNzIEdlb2xvY2F0aW9uOwogICAgIGNsYXNzIE1pbWVUeXBl
QXJyYXk7CiAgICAgY2xhc3MgUGx1Z2luRGF0YTsKICAgICBjbGFzcyBQbHVnaW5BcnJheTsKQEAg
LTU2LDExICs1NywxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgamF2YUVu
YWJsZWQoKSBjb25zdDsKIAogICAgICAgICBib29sIG9uTGluZSgpIGNvbnN0OworICAgICAgICBH
ZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24oKSBjb25zdDsKKyAgICAgICAgICAgIAogICAgIHByaXZh
dGU6CiAgICAgICAgIE5hdmlnYXRvcihGcmFtZSopOwogICAgICAgICBGcmFtZSogbV9mcmFtZTsK
ICAgICAgICAgbXV0YWJsZSBSZWZQdHI8UGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKICAgICAgICAg
bXV0YWJsZSBSZWZQdHI8TWltZVR5cGVBcnJheT4gbV9taW1lVHlwZXM7CisgICAgICAgIG11dGFi
bGUgUmVmUHRyPEdlb2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOwogICAgIH07CiAKIH0KSW5kZXg6
IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9O
YXZpZ2F0b3IuaWRsCShyZXZpc2lvbiAzNzQ1NikKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
aWRsCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw2ICszNiw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAg
ICAgICBib29sZWFuIGphdmFFbmFibGVkKCk7CiAgICAgICAgIAogICAgICAgICByZWFkb25seSBh
dHRyaWJ1dGUgYm9vbGVhbiBvbkxpbmU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBHZW9s
b2NhdGlvbiBnZW9sb2NhdGlvbjsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9z
aXRpb25DYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxi
YWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBvc2l0aW9uQ2FsbGJhY2tfaAor
I2RlZmluZSBQb3NpdGlvbkNhbGxiYWNrX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAK
KyAgICBjbGFzcyBHZW9wb3NpdGlvbjsKKworICAgIGNsYXNzIFBvc2l0aW9uQ2FsbGJhY2sgOiBw
dWJsaWMgUmVmQ291bnRlZDxQb3NpdGlvbkNhbGxiYWNrPiB7CisgICAgcHVibGljOgorICAgICAg
ICB2aXJ0dWFsIH5Qb3NpdGlvbkNhbGxiYWNrKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVFdmVudChHZW9wb3NpdGlvbiogcG9zaXRpb24sIGJvb2wmIHJhaXNlZEV4Y2VwdGlvbikg
PSAwOworICAgIH07CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQ
b3NpdGlvbkNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5pZGwJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5pZGwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBbCisgICAg
ICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIFBvc2l0aW9uQ2FsbGJhY2sgeworICAgICAg
ICB2b2lkIGhhbmRsZUV2ZW50KGluIEdlb3Bvc2l0aW9uIHBvc2l0aW9uKTsKKyAgICB9OworCit9
CkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9Qb3NpdGlvbkVycm9yLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9z
aXRpb25FcnJvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFBvc2l0
aW9uRXJyb3JfaAorI2RlZmluZSBQb3NpdGlvbkVycm9yX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSAiUGxhdGZvcm1T
dHJpbmcuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgUG9zaXRpb25FcnJv
ciA6IHB1YmxpYyBSZWZDb3VudGVkPFBvc2l0aW9uRXJyb3I+IHsKK3B1YmxpYzoKKyAgICBQb3Np
dGlvbkVycm9yKGxvbmcgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSAKKyAgICAgICAgOiBt
X2NvZGUoY29kZSkKKyAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKKyAgICB7fQorICAgIAor
ICAgIGxvbmcgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIHZvaWQgc2V0Q29k
ZShsb25nIGNvZGUpIHsgbV9jb2RlID0gY29kZTsgfQorICAgIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2FnZTsgfQorICAgIHZvaWQgc2V0TWVzc2FnZShjb25z
dCBTdHJpbmcmIG1lc3NhZ2UpIHsgbV9tZXNzYWdlID0gbWVzc2FnZTsgfQorICAgIAorcHJpdmF0
ZToKKyAgICBsb25nIG1fY29kZTsKKyAgICBTdHJpbmcgbV9tZXNzYWdlOworfTsKKyAgICAKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBvc2l0aW9uRXJyb3JfaApJbmRleDog
V2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9Qb3NpdGlvbkVycm9yLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlv
bkVycm9yLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgewor
CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gUG9z
aXRpb25FcnJvciB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGNvZGU7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbWVzc2FnZTsKKyAgICB9OworCit9Cklu
ZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFw
cGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRz
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaWZuZGVmIFBvc2l0aW9uRXJyb3JDYWxsYmFja19oCisjZGVmaW5lIFBvc2l0aW9u
RXJyb3JDYWxsYmFja19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3
dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBQb3Np
dGlvbkVycm9yOworCisgICAgY2xhc3MgUG9zaXRpb25FcnJvckNhbGxiYWNrIDogcHVibGljIFJl
ZkNvdW50ZWQ8UG9zaXRpb25FcnJvckNhbGxiYWNrPiB7CisgICAgcHVibGljOgorICAgICAgICB2
aXJ0dWFsIH5Qb3NpdGlvbkVycm9yQ2FsbGJhY2soKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lk
IGhhbmRsZUV2ZW50KFBvc2l0aW9uRXJyb3IqIHBvc2l0aW9uKSA9IDA7CisgICAgfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBvc2l0aW9uRXJyb3JDYWxsYmFj
a19oCkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAg
ICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgewor
ICAgICAgICB2b2lkIGhhbmRsZUV2ZW50KGluIFBvc2l0aW9uRXJyb3IgZXJyb3IpOworICAgIH07
CisKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BhZ2UvUG9zaXRpb25PcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTYgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgUG9zaXRpb25PcHRpb25zX2gKKyNkZWZpbmUgUG9zaXRpb25PcHRpb25zX2gKKworI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKyAgICBjbGFzcyBQb3NpdGlvbk9wdGlvbnMgOiBwdWJs
aWMgUmVmQ291bnRlZDxQb3NpdGlvbk9wdGlvbnM+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIFBv
c2l0aW9uT3B0aW9ucyhib29sIGhpZ2hBY2N1cmFjeSA9IGZhbHNlLCBsb25nIHRpbWVvdXQgPSAt
MSkKKyAgICAgICAgICAgIDogbV9oaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5KQorICAgICAgICAg
ICAgLCBtX3RpbWVvdXQodGltZW91dCkKKyAgICAgICAge30KKyAgICAgICAgCisgICAgICAgIGJv
b2wgZW5hYmxlSGlnaEFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9oaWdoQWNjdXJhY3k7IH0K
KyAgICAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGUpIHsgbV9oaWdo
QWNjdXJhY3kgPSBlbmFibGU7IH0KKyAgICAgICAgbG9uZyB0aW1lb3V0KCkgY29uc3QgeyByZXR1
cm4gbV90aW1lb3V0OyB9CisgICAgICAgIHZvaWQgc2V0VGltZW91dChsb25nIHQpIHsgbV90aW1l
b3V0ID0gdDsgfQorICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIG1faGlnaEFj
Y3VyYWN5OworICAgICAgICBsb25nIG1fdGltZW91dDsKKyAgICB9OworICAgIAorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUG9zaXRpb25PcHRpb25zX2gKSW5kZXg6IFdlYkNv
cmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Q
b3NpdGlvbk9wdGlvbnMuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bvc2l0aW9u
T3B0aW9ucy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsK
KworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIFBv
c2l0aW9uT3B0aW9ucyB7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFuIGVuYWJsZUhpZ2hBY2N1
cmFjeTsKKyAgICAgICAgYXR0cmlidXRlIGxvbmcgdGltZW91dDsKKyAgICB9OworCit9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24267</attachid>
            <date>2008-10-10 10:49:06 -0700</date>
            <delta_ts>2008-10-13 22:26:46 -0700</delta_ts>
            <desc>updated other build systems</desc>
            <filename>GeoLocation-WebKit.org.patch.txt</filename>
            <type>text/plain</type>
            <size>88185</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiAzNzQ4MykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODggQEAKKzIwMDgtMTAtMTAgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBs
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
V0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VECisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc1CisgICAgICAgIAorICAgICAg
ICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9sb2NhdGlvbiBBUEkKKyAgICAgICAgCisgICAg
ICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkvc3BlYy1zb3VyY2UuaHRtbAorCisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAg
ICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJv
ajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9z
aXRpb25DYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3Np
dGlvbkNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29y
ZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAg
IChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6SlNDdXN0b21Qb3NpdGlv
bkVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkVycm9y
Q2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9t
UG9zaXRpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
R2VvbG9jYXRpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTR2VvbG9j
YXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0
aW9uOjp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6Okdlb05vdGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6dGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2VvbG9jYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uOjpjbGVhcldhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9w
VXBkYXRpbmdJZkVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpoYW5kbGVO
ZXdQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6aGFuZGxlRXJyb3Ip
OgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpHZW9sb2NhdGlvbjo6fkdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uOjpsYXN0UG9zaXRpb24pOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uaWRsOiBBZGRl
ZC4KKyAgICAgICAgKiBwYWdlL0dlb3Bvc2l0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW9wb3NpdGlvbjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBhZ2UvR2VvcG9zaXRpb24u
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6R2VvcG9zaXRpb24pOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OmxhdGl0dWRlKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb3Bvc2l0aW9uOjpsb25naXR1ZGUpOgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRp
b246OmFsdGl0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjphY2N1cmFjeSk6
CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6YWx0aXR1ZGVBY2N1cmFjeSk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6aGVhZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9wb3NpdGlvbjo6dmVsb2NpdHkpOgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OnRp
bWVzdGFtcCk6CisgICAgICAgICogcGFnZS9HZW9wb3NpdGlvbi5pZGw6IEFkZGVkLgorICAgICAg
ICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6ZGlz
Y29ubmVjdEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6Z2VvbG9jYXRpb24p
OgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3Iu
aWRsOgorICAgICAgICAqIHBhZ2UvUG9zaXRpb25DYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uQ2FsbGJhY2s6On5Qb3NpdGlvbkNhbGxiYWNrKToKKyAgICAgICAg
KiBwYWdlL1Bvc2l0aW9uQ2FsbGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1Bvc2l0
aW9uRXJyb3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpQb3Np
dGlvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OmNvZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6c2V0Q29kZSk6CisgICAgICAgIChXZWJDb3Jl
OjpQb3NpdGlvbkVycm9yOjptZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJy
b3I6OnNldE1lc3NhZ2UpOgorICAgICAgICAqIHBhZ2UvUG9zaXRpb25FcnJvci5pZGw6IEFkZGVk
LgorICAgICAgICAqIHBhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvckNhbGxiYWNrOjp+UG9zaXRpb25FcnJvckNhbGxiYWNr
KToKKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGw6IEFkZGVkLgorICAg
ICAgICAqIHBhZ2UvUG9zaXRpb25PcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb25PcHRpb25zOjpQb3NpdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb25PcHRpb25zOjplbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb25PcHRpb25zOjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb25PcHRpb25zOjp0aW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0
aW9uczo6c2V0VGltZW91dCk6CisgICAgICAgICogcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaWRsOiBB
ZGRlZC4KKwogMjAwOC0xMC0xMCAgS2V2aW4gT2xsaXZpZXIgIDxrZXZpbm9AdGhlb2xsaXZpZXJz
LmNvbT4KIAogICAgICAgICB3eCBidWlsZCBmaXguIEFkZCBuZXcgc2Nyb2xsYmFyLXJlbGF0ZWQg
c291cmNlcy4KSW5kZXg6IFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDM3NDgzKQorKysgV2ViQ29y
ZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw4IEBAIERP
TV9DTEFTU0VTID0gXAogICAgIEV2ZW50VGFyZ2V0Tm9kZSBcCiAgICAgRmlsZSBcCiAgICAgRmls
ZUxpc3QgXAorICAgIEdlb2xvY2F0aW9uIFwKKyAgICBHZW9wb3NpdGlvbiBcCiAgICAgSFRNTEFu
Y2hvckVsZW1lbnQgXAogICAgIEhUTUxBcHBsZXRFbGVtZW50IFwKICAgICBIVE1MQXJlYUVsZW1l
bnQgXApAQCAtMTc5LDYgKzE4MSwxMCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBPdmVyZmxvd0V2
ZW50IFwKICAgICBQbHVnaW4gXAogICAgIFBsdWdpbkFycmF5IFwKKyAgICBQb3NpdGlvbkNhbGxi
YWNrIFwKKyAgICBQb3NpdGlvbkVycm9yIFwKKyAgICBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgXAor
ICAgIFBvc2l0aW9uT3B0aW9ucyBcCiAgICAgUHJvY2Vzc2luZ0luc3RydWN0aW9uIFwKICAgICBQ
cm9ncmVzc0V2ZW50IFwKICAgICBSR0JDb2xvciBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDM3NDgz
KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMy
NSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52
YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q2xpcGJvYXJkQ3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0
b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5j
cHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggXAor
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwIFwK
KwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmggXAog
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwIFwKIAlXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tVm9pZENhbGxiYWNrLmggXAogCVdlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIuY3BwIFwKQEAgLTM0Nyw2ICszNTEsNyBAQCB3ZWJj
b3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5oIFwK
IAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmggXAogCVdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TEFsbENvbGxlY3Rpb24uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxl
Y3Rpb24uaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9t
LmNwcCBcCkBAIC0xMTg0LDYgKzExODksMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJD
b3JlL3BhZ2UvRnJhbWVUcmVlLmggXAogCVdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIFwKIAlX
ZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggXAorCVdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAg
XAorCVdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oIFwKKwlXZWJDb3JlL3BhZ2UvR2VvcG9zaXRp
b24uY3BwIFwKKwlXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaCBcCiAJV2ViQ29yZS9wYWdlL0hp
c3RvcnkuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvSGlzdG9yeS5oIFwKIAlXZWJDb3JlL3BhZ2UvTG9j
YXRpb24uY3BwIFwKQEAgLTExOTYsNiArMTIwNSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAog
CVdlYkNvcmUvcGFnZS9QYWdlLmggXAogCVdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwIFwKIAlX
ZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmggXAorCVdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNr
LmggXAorCVdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmggXAorCVdlYkNvcmUvcGFnZS9Qb3Np
dGlvbkVycm9yQ2FsbGJhY2suaCBcCisJV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5oIFwK
IAlXZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNwcCBcCiAJV2ViQ29yZS9wYWdlL1ByaW50Q29u
dGV4dC5oIFwKIAlXZWJDb3JlL3BhZ2UvU2NyZWVuLmNwcCBcCkluZGV4OiBXZWJDb3JlL1dlYkNv
cmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDM3NDgz
KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtNzc2LDYgKzc3Niw4
IEBAIFNPVVJDRVMgKz0gXAogICAgIHBhZ2UvRnJhbWUuY3BwIFwKICAgICBwYWdlL0ZyYW1lVHJl
ZS5jcHAgXAogICAgIHBhZ2UvRnJhbWVWaWV3LmNwcCBcCisgICAgcGFnZS9HZW9sb2NhdGlvbi5j
cHAgXAorICAgIHBhZ2UvR2VvcG9zaXRpb24uY3BwIFwKICAgICBwYWdlL0hpc3RvcnkuY3BwIFwK
ICAgICBwYWdlL0xvY2F0aW9uLmNwcCBcCiAgICAgcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RS
ZXN1bHRzLmNwcCBcCkBAIC0xMTk3LDcgKzExOTksMTAgQEAgY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX0RBVEFCQVNFPTEpIHsKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2Fj
dGlvbkVycm9yQ2FsbGJhY2suY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1
c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0
b20uY3BwIFwKLSAgICAgICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAK
KyAgICAgICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAgXAorICAgICAg
ICBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdz
L2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9K
U0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAKIAogICAgIElETF9CSU5ESU5HUyArPSBc
CiAgICAgICAgIHN0b3JhZ2UvRGF0YWJhc2UuaWRsIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVNv
dXJjZXMuYmtsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCShyZXZp
c2lvbiAzNzQ4MykKKysrIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkp
CkBAIC00Miw2ICs0Miw4IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBu
ZWUKICAgICAgICAgYmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAogICAgICAgICBiaW5k
aW5ncy9qcy9KU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTQ1NTVmFsdWVDdXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9z
aXRpb25DYWxsYmFjay5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVy
cm9yQ2FsbGJhY2suY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50
Q2FsbGJhY2suY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJy
b3JDYWxsYmFjay5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlv
bkNhbGxiYWNrLmNwcApAQCAtNTksNiArNjEsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxp
c3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCiAgICAgICAgIGJpbmRpbmdzL2pz
L0pTRXZlbnRUYXJnZXROb2RlQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU0dlb2xv
Y2F0aW9uQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9u
LmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCkBAIC0yMzksNiArMjQyLDgg
QEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRXZlbnRUYXJnZXROb2RlLmNwcAogICAgICAgICBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTRmlsZS5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0ZpbGVMaXN0LmNwcAorICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2VvbG9j
YXRpb24uY3BwCisgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHZW9wb3NpdGlvbi5j
cHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxBbmNob3JFbGVtZW50LmNw
cAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEFwcGxldEVsZW1lbnQuY3Bw
CiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MQXJlYUVsZW1lbnQuY3BwCkBA
IC0zMjMsNiArMzI4LDggQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5l
ZQogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5jcHAKICAg
ICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1BsdWdpbi5jcHAKICAgICAgICAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1BsdWdpbkFycmF5LmNwcAorICAgICAgICBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTUG9zaXRpb25FcnJvci5jcHAKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1Bvc2l0aW9uT3B0aW9ucy5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1Byb2dyZXNzRXZlbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUv
SlNSYW5nZS5jcHAKQEAgLTY2OSw2ICs2NzYsOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxp
c3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIHBhZ2UvRnJhbWUuY3BwCiAgICAgICAgIHBhZ2UvRnJh
bWVUcmVlLmNwcAogICAgICAgICBwYWdlL0ZyYW1lVmlldy5jcHAKKyAgICAgICAgcGFnZS9HZW9s
b2NhdGlvbi5jcHAKKyAgICAgICAgcGFnZS9HZW9wb3NpdGlvbi5jcHAKICAgICAgICAgcGFnZS9I
aXN0b3J5LmNwcAogICAgICAgICBwYWdlL0xvY2F0aW9uLmNwcAogICAgICAgICBwYWdlL01vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUudmNwcm9q
L1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2Vi
Q29yZS52Y3Byb2oJKHJldmlzaW9uIDM3NDgzKQorKysgV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9X
ZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjgwLDYgKzY4MCwxNCBAQAogCQkJCT4N
CiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1
dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTR2VvbG9jYXRpb24uaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2Vi
S2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNHZW9wb3Np
dGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0
aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xK
U0V2ZW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTA0MCw2ICsxMDQ4LDE0IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0
T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQb3NpdGlvbkVy
cm9yLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpT
UG9zaXRpb25PcHRpb25zLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJ
UmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2
ZWRTb3VyY2VzXEpTT3ZlcmZsb3dFdmVudC5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTIy
NjAsNiArMjI3NiwzOCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwYWdlXEdlb2xvY2F0aW9uLmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNv
bmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdpbjMyIg0KKwkJCQkJPg0KKwkJ
CQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJCQkJCVdob2xlUHJv
Z3JhbU9wdGltaXphdGlvbj0idHJ1ZSINCisJCQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRp
b24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxH
ZW9sb2NhdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGFnZVxHZW9wb3NpdGlvbi5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25m
aWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX1BHT3xXaW4zMiINCisJCQkJCT4NCisJCQkJ
CTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlXaG9sZVByb2dy
YW1PcHRpbWl6YXRpb249InRydWUiDQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9u
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcR2Vv
cG9zaXRpb24uaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBhZ2VcSGlzdG9yeS5jcHAiDQogCQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0
aW9uDQpAQCAtMjM4OCw2ICsyNDM2LDIyIEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUG9zaXRpb25DYWxsYmFjay5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxQb3Np
dGlvbkVycm9yLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwYWdlXFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxQb3NpdGlvbk9wdGlv
bnMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9
Ii4uXHBhZ2VcU2NyZWVuLmNwcCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBA
IC0xMzExMyw2ICsxMzE3NywxNCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUN
CisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNDdXN0b21Qb3NpdGlvbkNhbGxi
YWNrLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAi
DQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0i
Li5cYmluZGluZ3NcanNcSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAiDQogCQkJCQk+
DQogCQkJCTwvRmlsZT4NCkBAIC0xMzI0MSw2ICsxMzMxMywxMCBAQAogCQkJCQk+DQogCQkJCTwv
RmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNH
ZW9sb2NhdGlvbkN1c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUN
CiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNIaXN0b3J5Q3VzdG9tLmNwcCIN
CiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAzNzQ4MykKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MjIwLDYgKzQyMjAsMzMg
QEAKIAkJRjkxNkM0OEQwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY5MTZDNDhCMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVu
dC5jcHAgKi87IH07CiAJCUY5MTZDNDhFMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1
ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjkxNkM0OEMwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50LmggKi87IH07CiAJCUY5RjBFRDdBMERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQuaCAqLzsgfTsKKwkJRkU4MEQ3QTcwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTgwRDdBMjBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlv
bkNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJRkU4MEQ3QTgwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU4MEQ3QTMwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjay5oICovOyB9OworCQlGRTgwRDdBOTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Q
b3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU4MEQ3QTQwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRp
b25FcnJvckNhbGxiYWNrLmNwcCAqLzsgfTsKKwkJRkU4MEQ3QUEwRTlDMUVEMjAwMEQ2Rjc1IC8q
IEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0
b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLzsgfTsKKwkJRkU4MEQ3QUIwRTlDMUVEMjAwMEQ2
Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9j
YXRpb25DdXN0b20uY3BwICovOyB9OworCQlGRTgwRDdDNTBFOUMxRjI1MDAwRDZGNzUgLyogR2Vv
bG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4MEQ3QjcwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCAqLzsgfTsKKwkJ
RkU4MEQ3QzYwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCODBFOUMxRjI1MDAwRDZGNzUg
LyogR2VvbG9jYXRpb24uaCAqLzsgfTsKKwkJRkU4MEQ3QzcwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdl
b2xvY2F0aW9uLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU4MEQ3QjkwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmlkbCAqLzsgfTsK
KwkJRkU4MEQ3QzgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JBMEU5QzFGMjUwMDBE
NkY3NSAvKiBHZW9wb3NpdGlvbi5jcHAgKi87IH07CisJCUZFODBEN0M5MEU5QzFGMjUwMDBENkY3
NSAvKiBHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU4MEQ3QkIwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi87IH07
CisJCUZFODBEN0NBMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JDMEU5QzFGMjUw
MDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgKi87IH07CisJCUZFODBEN0NCMEU5QzFGMjUwMDBE
NkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxs
YmFjay5oICovOyB9OworCQlGRTgwRDdDQzBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxs
YmFjay5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFODBEN0JFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAqLzsgfTsK
KwkJRkU4MEQ3Q0QwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JGMEU5QzFGMjUwMDBE
NkY3NSAvKiBQb3NpdGlvbkVycm9yLmggKi87IH07CisJCUZFODBEN0NFMEU5QzFGMjUwMDBENkY3
NSAvKiBQb3NpdGlvbkVycm9yLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU4MEQ3QzAwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3Iu
aWRsICovOyB9OworCQlGRTgwRDdDRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTgwRDdDMTBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggKi87IH07
CisJCUZFODBEN0QwMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRs
IGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdD
MjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbCAqLzsgfTsKKwkJ
RkU4MEQ3RDEwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzMwRTlDMUYyNTAwMEQ2
Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oICovOyB9OworCQlGRTgwRDdEMjBFOUMxRjI1MDAwRDZG
NzUgLyogUG9zaXRpb25PcHRpb25zLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzQwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0
aW9ucy5pZGwgKi87IH07CisJCUZFODBEQTYzMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0
aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
ODBEQTVGMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCAqLzsgfTsKKwkJRkU4
MERBNjQwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYwMEU5QzQ3MDMwMDBENkY3NSAv
KiBKU0dlb2xvY2F0aW9uLmggKi87IH07CisJCUZFODBEQTY1MEU5QzQ3MDMwMDBENkY3NSAvKiBK
U0dlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFODBEQTYxMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCAqLzsg
fTsKKwkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5QzQ3MDMw
MDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi87IH07CisJCUZFODBEQTcxMEU5QzQ3MkYwMDBE
NkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25F
cnJvci5jcHAgKi87IH07CisJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9u
RXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
ODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkU4
MERBNzMwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZGMEU5QzQ3MkYwMDBE
NkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgKi87IH07CisJCUZFODBEQTc0MEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNzAwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRp
b25PcHRpb25zLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTg4MzUsNiArODg2Miwz
MyBAQAogCQlGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzgw
REI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDlFRjk3MERDNTE0NjIwMDQyNjZFMSAvKiBEYXNo
Ym9hcmRTdXBwb3J0Q1NTUHJvcGVydHlOYW1lcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBE
YXNoYm9hcmRTdXBwb3J0Q1NTUHJvcGVydHlOYW1lcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU4MEQ3QTIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxs
YmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdB
MzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBNDBFOUMxRUQyMDAwRDZGNzUgLyogSlND
dXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Q
b3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW9sb2NhdGlvbkN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0I3MEU5QzFGMjUwMDBE
NkY3NSAvKiBHZW9sb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHZW9sb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBE
N0I4MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHZW9sb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTgwRDdCOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEdlb2xvY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkU4MEQ3QkEwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb3Bvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkIwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb3Bvc2l0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9w
b3NpdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2VvcG9zaXRpb24uaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9z
aXRpb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlv
bkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JFMEU5QzFG
MjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBQb3NpdGlvbkNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4
MEQ3QkYwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTgwRDdDMDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25FcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFODBEN0MxMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2Fs
bGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25FcnJvckNh
bGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0MyMEU5QzFGMjUw
MDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFBvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFODBEN0MzMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0M0MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9w
dGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBvc2l0aW9uT3B0aW9ucy5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTVGMEU5QzQ3MDMwMDBENkY3NSAvKiBK
U0dlb2xvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
R2VvbG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2MDBF
OUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0dlb2xvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFODBEQTYxMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VvcG9zaXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3Np
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlb3Bvc2l0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAv
KiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQb3NpdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4
MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkU4MERBNkYwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25PcHRp
b25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNzAwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAv
KiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29y
a3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAgLTk1ODQsNiArOTYzOCwxMiBAQAogCQkJCTY1QTIx
NDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLywKIAkJCQk2NUNCRkVGNzA5NzRG
NjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNwcCAqLywKIAkJCQk2NUNCRkVGODA5NzRGNjA3MDAx
REFDMjUgLyogRnJhbWVWaWV3LmggKi8sCisJCQkJRkU4MEQ3QjcwRTlDMUYyNTAwMEQ2Rjc1IC8q
IEdlb2xvY2F0aW9uLmNwcCAqLywKKwkJCQlGRTgwRDdCODBFOUMxRjI1MDAwRDZGNzUgLyogR2Vv
bG9jYXRpb24uaCAqLywKKwkJCQlGRTgwRDdCOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRp
b24uaWRsICovLAorCQkJCUZFODBEN0JBMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5j
cHAgKi8sCisJCQkJRkU4MEQ3QkIwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi8s
CisJCQkJRkU4MEQ3QkMwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmlkbCAqLywKIAkJ
CQlCQzk0RDE1MDBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5jcHAgKi8sCiAJCQkJQkM5NEQx
NTEwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaCAqLywKIAkJCQlCQzk0RDE1MjBDMjc1QzhC
MDA2QkM2MTcgLyogSGlzdG9yeS5pZGwgKi8sCkBAIC05NTk5LDYgKzk2NTksMTQgQEAKIAkJCQk2
NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyogUGFnZS5oICovLAogCQkJCTkzMDJCMEJDMEQ3OUY4
MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwICovLAogCQkJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3
RUU4MyAvKiBQYWdlR3JvdXAuaCAqLywKKwkJCQlGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyog
UG9zaXRpb25DYWxsYmFjay5oICovLAorCQkJCUZFODBEN0JFMEU5QzFGMjUwMDBENkY3NSAvKiBQ
b3NpdGlvbkNhbGxiYWNrLmlkbCAqLywKKwkJCQlGRTgwRDdCRjBFOUMxRjI1MDAwRDZGNzUgLyog
UG9zaXRpb25FcnJvci5oICovLAorCQkJCUZFODBEN0MwMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbkVycm9yLmlkbCAqLywKKwkJCQlGRTgwRDdDMTBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRp
b25FcnJvckNhbGxiYWNrLmggKi8sCisJCQkJRkU4MEQ3QzIwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBv
c2l0aW9uRXJyb3JDYWxsYmFjay5pZGwgKi8sCisJCQkJRkU4MEQ3QzMwRTlDMUYyNTAwMEQ2Rjc1
IC8qIFBvc2l0aW9uT3B0aW9ucy5oICovLAorCQkJCUZFODBEN0M0MEU5QzFGMjUwMDBENkY3NSAv
KiBQb3NpdGlvbk9wdGlvbnMuaWRsICovLAogCQkJCUJDRUMwMUJBMEMyNzREQUMwMDlGNEVDOSAv
KiBTY3JlZW4uY3BwICovLAogCQkJCUJDRUMwMUJCMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4u
aCAqLywKIAkJCQlCQ0VDMDFCQzBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmlkbCAqLywKQEAg
LTExNzYyLDYgKzExODMwLDEwIEBACiAJCQkJNjVERjMyMkUwOUQxRERCQzAwMEJFMzI1IC8qIEpT
RW50aXR5LmggKi8sCiAJCQkJOTNGOUI3NzIwQkE1RkREQzAwODU0MDY0IC8qIEpTRW50aXR5UmVm
ZXJlbmNlLmNwcCAqLywKIAkJCQk5M0Y5Qjc3MzBCQTVGRERDMDA4NTQwNjQgLyogSlNFbnRpdHlS
ZWZlcmVuY2UuaCAqLywKKwkJCQlGRTgwREE1RjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2Nh
dGlvbi5jcHAgKi8sCisJCQkJRkU4MERBNjAwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRp
b24uaCAqLywKKwkJCQlGRTgwREE2MTBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5j
cHAgKi8sCisJCQkJRkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAq
LywKIAkJCQlCQ0Q5QzJCQzBDMTdCNjlFMDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAuY3BwICov
LAogCQkJCUJDRDlDMkJEMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5oICovLAog
CQkJCTE0REMwRDM1MDlGRUQwNzMwMDdCMDIzNSAvKiBKU05vZGUuY3BwICovLApAQCAtMTE3NzAs
NiArMTE4NDIsMTAgQEAKIAkJCQlCQ0Q5QzJCRjBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlz
dC5oICovLAogCQkJCTY1REYzMUU5MDlEMUNDNjAwMDBCRTMyNSAvKiBKU05vdGF0aW9uLmNwcCAq
LywKIAkJCQk2NURGMzFFQTA5RDFDQzYwMDAwQkUzMjUgLyogSlNOb3RhdGlvbi5oICovLAorCQkJ
CUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovLAorCQkJ
CUZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLywKKwkJCQlG
RTgwREE2RjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwICovLAorCQkJ
CUZFODBEQTcwMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovLAogCQkJ
CTY1REYzMUVCMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAg
Ki8sCiAJCQkJNjVERjMxRUMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0
aW9uLmggKi8sCiAJCQkJRTRCNDIzODUwQ0JGQjczQzAwQUYyRUNFIC8qIEpTUHJvZ3Jlc3NFdmVu
dC5jcHAgKi8sCkBAIC0xMjgzNCw2ICsxMjkxMCwxMCBAQAogCQkJCUJDNDZDMUVEMEMwRERCREYw
MDIwQ0ZDMyAvKiBKU0NTU1J1bGVDdXN0b20uY3BwICovLAogCQkJCUJDNTgyNUYyMEMwQjg5Mzgw
MDUzRjFCNSAvKiBKU0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJDMjBG
QjdFMEMwRThFNkMwMEQxNDQ3RiAvKiBKU0NTU1ZhbHVlQ3VzdG9tLmNwcCAqLywKKwkJCQlGRTgw
RDdBMjBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCAqLywK
KwkJCQlGRTgwRDdBMzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNr
LmggKi8sCisJCQkJRkU4MEQ3QTQwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25F
cnJvckNhbGxiYWNrLmNwcCAqLywKKwkJCQlGRTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlND
dXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLywKIAkJCQk1MUVDOTI1QjBDRTkwREQ0MDBG
OTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAgKi8sCiAJCQkJNTFFQzky
NUMwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suaCAqLywK
IAkJCQk1MUVDOTI1RDBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJv
ckNhbGxiYWNrLmNwcCAqLywKQEAgLTEyODUzLDYgKzEyOTMzLDcgQEAKIAkJCQlCQzJFRDU1NDBD
NkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0VGQUY0RDBD
MzE3RTY5MDBGQTgxRjYgLyogSlNFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzQjdCMjAwRTkx
QUFGNDAwRDU0MDY1IC8qIEpTRXZlbnRUYXJnZXROb2RlQ3VzdG9tLmNwcCAqLywKKwkJCQlGRTgw
RDdBNjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJ
QkNFN0IxOTIwRDRFODY5NjAwNzVBNTM5IC8qIEpTSGlzdG9yeUN1c3RvbS5jcHAgKi8sCiAJCQkJ
QkM0RURFRjMwQzA4RjNGQjAwN0VERDQ5IC8qIEpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3Bw
ICovLAogCQkJCUJDQ0JBRDNBMEMxOEJGRjgwMENFODkwRiAvKiBKU0hUTUxDb2xsZWN0aW9uQ3Vz
dG9tLmNwcCAqLywKQEAgLTE1OTc5LDYgKzE2MDYwLDE4IEBACiAJCQkJMUM4MUJBMEMwRTk3MzQ4
MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQzgxQkEwRTBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnU2VydmVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzNCRTEyQjBFOTgwOTJGMDA4MzU1ODggLyogUG9wdXBNZW51U3R5
bGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0E4MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1
c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0FBMEU5QzFF
RDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkU4MEQ3QzYwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGRTgwRDdDOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCUZFODBEN0NCMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNh
bGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdDRDBFOUMxRjI1MDAwRDZGNzUgLyog
UG9zaXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3Q0YwRTlDMUYyNTAwMEQ2
Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3
RDEwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkU4MERBNjQwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCUZFODBEQTY2MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGRTgwREE3MjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVy
cm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwREE3NDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQ
b3NpdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0JFOTk0MEU5QzFDN0MwMDgz
NTU4OCAvKiBSZW5kZXJTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0JFOTk1MEU5
QzFDN0MwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQzNCRTk5OTBFOUMxRTVEMDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTYwOTgsNiArMTYxOTEsMTIgQEAKIAkJCQk4NTEzNkNBODBBRUQ2NjU5
MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFB
QjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nIGluIFJlc291cmNlcyAq
LywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgaW4g
UmVzb3VyY2VzICovLAorCQkJCUZFODBEN0M3MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlv
bi5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBEN0NBMEU5QzFGMjUwMDBENkY3NSAvKiBH
ZW9wb3NpdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBEN0NDMEU5QzFGMjUwMDBE
NkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3
Q0UwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaWRsIGluIFJlc291cmNlcyAqLywK
KwkJCQlGRTgwRDdEMDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmlk
bCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3RDIwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0
aW9uT3B0aW9ucy5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTc4NDYsNiArMTc5NDUsMTUgQEAK
IAkJCQkxQzgxQkEwMjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMDkwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRD
YWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMEQwRTk3MzQ4MzAwMjY2RTA3
IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwRDdB
NzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovLAorCQkJCUZFODBEN0E5MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9u
RXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwRDdBQjBFOUMxRUQyMDAw
RDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgw
RDdDNTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkU4MEQ3QzgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUZFODBEQTYzMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUZFODBEQTY1MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBK
U1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MERBNzMwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDM0JF
OTkzMEU5QzFDN0MwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXIuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkMzQkU5QTUwRTlDMjM5NjAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUJDM0JFOUFCMEU5QzI0MjAwMDgzNTU4OCAvKiBSZW5kZXJT
Y3JvbGxiYXJQYXJ0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBv
ZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFjay5oIgorCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUg
IkNvbnNvbGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTR2VvcG9zaXRpb24u
aCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2lu
Y2x1ZGUgPGtqcy9KU0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCitKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OkpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjayhKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fY2FsbGJh
Y2soY2FsbGJhY2spCisgICAgLCBtX2ZyYW1lKGZyYW1lKQoreworfQorCit2b2lkIEpTQ3VzdG9t
UG9zaXRpb25DYWxsYmFjazo6aGFuZGxlRXZlbnQoR2VvcG9zaXRpb24qIGdlb3Bvc2l0aW9uLCBi
b29sJiByYWlzZWRFeGNlcHRpb24pCit7CisgICAgQVNTRVJUKG1fY2FsbGJhY2spOworICAgIEFT
U0VSVChtX2ZyYW1lKTsKKyAgICAKKyAgICBpZiAoIW1fZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJs
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QgPSBtX2ZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgRXhlY1N0YXRl
KiBleGVjID0gZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgCisgICAgSlNDOjpKU0xv
Y2sgbG9jayhmYWxzZSk7CisgICAgCisgICAgSlNWYWx1ZSogZnVuY3Rpb24gPSBtX2NhbGxiYWNr
LT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CisgICAgQ2FsbERh
dGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBmdW5jdGlvbi0+Z2V0Q2FsbERh
dGEoY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAg
ICAgY2FsbFR5cGUgPSBtX2NhbGxiYWNrLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7CisgICAgICAg
IGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBT
aG91bGQgYW4gZXhjZXB0aW9uIGJlIHRocm93biBoZXJlPworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uID0gbV9jYWxsYmFjazsKKyAgICB9CisgICAgCisg
ICAgUmVmUHRyPEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKKyAgICAK
KyAgICBBcmdMaXN0IGFyZ3M7CisgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBnZW9wb3NpdGlv
bikpOworICAgIAorICAgIGdsb2JhbE9iamVjdC0+c3RhcnRUaW1lb3V0Q2hlY2soKTsKKyAgICBj
YWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fY2FsbGJhY2ssIGFyZ3Mp
OworICAgIGdsb2JhbE9iamVjdC0+c3RvcFRpbWVvdXRDaGVjaygpOworICAgIAorICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkgeworICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29u
c29sZSgpLT5yZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOworICAgICAgICAKKyAgICAgICAg
cmFpc2VkRXhjZXB0aW9uID0gdHJ1ZTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJh
Y2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlv
bkNhbGxiYWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJB
cHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklC
VVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgSlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrX2gKKyNkZWZpbmUgSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrX2gK
KworI2luY2x1ZGUgIlBvc2l0aW9uQ2FsbGJhY2suaCIKKworI2luY2x1ZGUgPGtqcy9KU09iamVj
dC5oPgorI2luY2x1ZGUgPGtqcy9wcm90ZWN0Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
KworbmFtZXNwYWNlIEpTQyB7CisgICAgY2xhc3MgSlNPYmplY3Q7Cit9CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgRnJhbWU7CitjbGFzcyBHZW9wb3NpdGlvbjsKKworY2xhc3MgSlND
dXN0b21Qb3NpdGlvbkNhbGxiYWNrIDogcHVibGljIFBvc2l0aW9uQ2FsbGJhY2sgeworcHVibGlj
OgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjaz4gY3JlYXRl
KEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2soY2FsbGJhY2ssIGZyYW1lKSk7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoR2VvcG9zaXRpb24qLCBib29sJiByYWlzZWRF
eGNlcHRpb24pOworcHJpdmF0ZToKKyAgICBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2soSlNDOjpK
U09iamVjdCogY2FsbGJhY2ssIEZyYW1lKik7CisKKyAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0M6
OkpTT2JqZWN0PiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKK307Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBKU0N1c3RvbVBvc2l0aW9u
Q2FsbGJhY2tfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJy
b3JDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tUG9z
aXRpb25FcnJvckNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAi
Q29uc29sZS5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNQb3NpdGlvbkVycm9y
LmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNp
bmNsdWRlIDxranMvSlNMb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5n
IG5hbWVzcGFjZSBKU0M7CisKK0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpKU0N1c3Rv
bVBvc2l0aW9uRXJyb3JDYWxsYmFjayhKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkK
KyAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgLCBtX2ZyYW1lKGZyYW1lKQoreworfQor
Cit2b2lkIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpoYW5kbGVFdmVudChQb3NpdGlv
bkVycm9yKiBwb3NpdGlvbkVycm9yKQoreworICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKKyAgICBB
U1NFUlQobV9mcmFtZSk7CisgICAgCisgICAgaWYgKCFtX2ZyYW1lLT5zY3JpcHQoKS0+aXNFbmFi
bGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gbV9mcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCgpOworICAgIEV4ZWNTdGF0
ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIAorICAgIEpTQzo6SlNM
b2NrIGxvY2soZmFsc2UpOworICAgIAorICAgIEpTVmFsdWUqIGZ1bmN0aW9uID0gbV9jYWxsYmFj
ay0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhhbmRsZUV2ZW50IikpOworICAgIENhbGxE
YXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZnVuY3Rpb24tPmdldENhbGxE
YXRhKGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CisgICAg
ICAgIGNhbGxUeXBlID0gbV9jYWxsYmFjay0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAgICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgICAgICAvLyBGSVhNRTog
U2hvdWxkIGFuIGV4Y2VwdGlvbiBiZSB0aHJvd24gaGVyZT8KKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiA9IG1fY2FsbGJhY2s7CisgICAgfQorICAgIAor
ICAgIFJlZlB0cjxKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsK
KyAgICAKKyAgICBBcmdMaXN0IGFyZ3M7CisgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBwb3Np
dGlvbkVycm9yKSk7CisgICAgCisgICAgZ2xvYmFsT2JqZWN0LT5zdGFydFRpbWVvdXRDaGVjaygp
OworICAgIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9jYWxsYmFj
aywgYXJncyk7CisgICAgZ2xvYmFsT2JqZWN0LT5zdG9wVGltZW91dENoZWNrKCk7CisgICAgCisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3co
KS0+Y29uc29sZSgpLT5yZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOworfQorICAgIAorfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUg
bmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgor
ICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAq
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFja19o
CisjZGVmaW5lIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrX2gKKworI2luY2x1ZGUgIlBv
c2l0aW9uRXJyb3JDYWxsYmFjay5oIgorCisjaW5jbHVkZSA8a2pzL0pTT2JqZWN0Lmg+CisjaW5j
bHVkZSA8a2pzL3Byb3RlY3QuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3Bh
Y2UgSlNDIHsKKyAgICBjbGFzcyBKU09iamVjdDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
ICAgIAorY2xhc3MgRnJhbWU7CitjbGFzcyBQb3NpdGlvbkVycm9yOworCitjbGFzcyBKU0N1c3Rv
bVBvc2l0aW9uRXJyb3JDYWxsYmFjayA6IHB1YmxpYyBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxi
YWNrPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrKGNhbGxiYWNrLCBm
cmFtZSkpOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFBvc2l0aW9uRXJy
b3IqKTsKK3ByaXZhdGU6CisgICAgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2soSlNDOjpK
U09iamVjdCogY2FsbGJhY2ssIEZyYW1lKik7CisKKyAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0M6
OkpTT2JqZWN0PiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKK307Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBKU0N1c3RvbVBvc2l0aW9u
RXJyb3JDYWxsYmFja19oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25D
dXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlv
bkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9j
YXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2VvbG9jYXRpb24uaCIKKworI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlv
bi5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpT
Q3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIK
KyNpbmNsdWRlICJKU1Bvc2l0aW9uT3B0aW9ucy5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUqIEpTR2VvbG9jYXRpb246OmdldEN1cnJl
bnRQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAg
Ly8gQXJndW1lbnRzOiBQb3NpdGlvbkNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25FcnJvckNh
bGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25PcHRpb25zCisgICAgUmVmUHRyPFBvc2l0aW9uQ2Fs
bGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2s7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQo
ZXhlYywgMCktPmdldE9iamVjdCgpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRvSlNET01X
aW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpKQorICAg
ICAgICBwb3NpdGlvbkNhbGxiYWNrID0gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVhdGUo
b2JqZWN0LCBmcmFtZSk7CisgICAgCisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4g
cG9zaXRpb25FcnJvckNhbGxiYWNrOworICAgIGlmICghYXJncy5hdChleGVjLCAxKS0+aXNVbmRl
ZmluZWRPck51bGwoKSkgeworICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdChleGVj
LCAxKS0+Z2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICBz
ZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gdG9KU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZy
YW1lKCkpCisgICAgICAgICAgICBwb3NpdGlvbkVycm9yQ2FsbGJhY2sgPSBKU0N1c3RvbVBvc2l0
aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZnJhbWUpOworICAgIH0KKyAgICAKKyAg
ICBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBwb3NpdGlvbk9wdGlvbnM7CisgICAgaWYgKCFhcmdz
LmF0KGV4ZWMsIDIpLT5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICBwb3NpdGlvbk9wdGlv
bnMgPSB0b1Bvc2l0aW9uT3B0aW9ucyhhcmdzLmF0KGV4ZWMsIDIpKTsKKyAgICAKKyAgICBtX2lt
cGwtPmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRp
b25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLmdldCgpKTsKKyAgICAK
KyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSogSlNHZW9sb2NhdGlvbjo6
d2F0Y2hQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7Cisg
ICAgLy8gQXJndW1lbnRzOiBQb3NpdGlvbkNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25FcnJv
ckNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25PcHRpb25zCisgICAgUmVmUHRyPFBvc2l0aW9u
Q2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2s7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3Mu
YXQoZXhlYywgMCktPmdldE9iamVjdCgpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
KyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAg
ICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIAorICAgIGlmIChGcmFtZSogZnJhbWUgPSB0
b0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUo
KSkKKyAgICAgICAgcG9zaXRpb25DYWxsYmFjayA9IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjazo6
Y3JlYXRlKG9iamVjdCwgZnJhbWUpOworICAgIAorICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2Fs
bGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjazsKKyAgICBpZiAoIWFyZ3MuYXQoZXhlYywgMSkt
PmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3Mu
YXQoZXhlYywgMSktPmdldE9iamVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAg
ICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBp
ZiAoRnJhbWUqIGZyYW1lID0gdG9KU0RPTVdpbmRvdyhleGVjLT5keW5hbWljR2xvYmFsT2JqZWN0
KCkpLT5pbXBsKCktPmZyYW1lKCkpCisgICAgICAgICAgICBwb3NpdGlvbkVycm9yQ2FsbGJhY2sg
PSBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZnJhbWUpOwor
ICAgIH0KKyAgICAKKyAgICBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBwb3NpdGlvbk9wdGlvbnM7
CisgICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDIpLT5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAg
ICBwb3NpdGlvbk9wdGlvbnMgPSB0b1Bvc2l0aW9uT3B0aW9ucyhhcmdzLmF0KGV4ZWMsIDIpKTsK
KyAgICAKKyAgICBpbnQgdyA9IG1faW1wbC0+d2F0Y2hQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNr
LnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRp
b25zLmdldCgpKTsKKyAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgdyk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTgzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAx
LiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKKyNpbmNsdWRl
ICJQb3NpdGlvbkVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb246
Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykKKyAgICA6IG1fc3VjY2Vzc0NhbGxiYWNr
KHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQor
ICAgICwgbV90aW1lcih0aGlzLCAmR2VvTm90aWZpZXI6OnRpbWVyRmlyZWQpCit7CisgICAgaWYg
KG1fZXJyb3JDYWxsYmFjayAmJiBvcHRpb25zICYmIG9wdGlvbnMtPnRpbWVvdXQoKSAhPSAtMSkK
KyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qob3B0aW9ucy0+dGltZW91dCgpIC8gMTAwMC4w
KTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnRpbWVyRmlyZWQoVGltZXI8
R2VvbG9jYXRpb246Okdlb05vdGlmaWVyPiogdGltZXIpCit7CisgICAgQVNTRVJUKG1fZXJyb3JD
YWxsYmFjayk7CisgICAgCisgICAgbV90aW1lci5zdG9wKCk7CisgICAgCisgICAgUmVmUHRyPFBv
c2l0aW9uRXJyb3I+IGVycm9yID0gbmV3IFBvc2l0aW9uRXJyb3IoNCwgIlRpbWVkIG91dCIpOwor
ICAgIG1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworfQorCitHZW9s
b2NhdGlvbjo6R2VvbG9jYXRpb24oRnJhbWUqIGZyYW1lKQorICAgIDogbV9mcmFtZShmcmFtZSkK
K3sKKworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQoreworICAgIG1f
ZnJhbWUgPSAwOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oUGFz
c1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9z
aXRpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlv
bnMpCit7CisgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IG5ldyBHZW9Ob3RpZmll
cihzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpOworICAgIAorICAgIGlm
ICghc3RhcnRVcGRhdGluZyhvcHRpb25zKSkgeworICAgICAgICBpZiAobm90aWZpZXItPm1fZXJy
b3JDYWxsYmFjaykgeworICAgICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0g
bmV3IFBvc2l0aW9uRXJyb3IoMSwgIlVuYWJsZSB0byBTdGFydCIpOworICAgICAgICAgICAgbm90
aWZpZXItPm1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgbV9vbmVTaG90cy5hZGQobm90
aWZpZXIpOworfQorCitsb25nIEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFBhc3NSZWZQdHI8
UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJy
b3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKQorewor
ICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBuZXcgR2VvTm90aWZpZXIoc3VjY2Vz
c0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsKKyAgICAKKyAgICBpZiAoIXN0YXJ0
VXBkYXRpbmcob3B0aW9ucykpIHsKKyAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJh
Y2spIHsKKyAgICAgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IG5ldyBQb3Np
dGlvbkVycm9yKDEsICJVbmFibGUgdG8gU3RhcnQiKTsKKyAgICAgICAgICAgIG5vdGlmaWVyLT5t
X2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGxvbmcgc0lkZW50aWZpZXIg
PSAwOworICAgIAorICAgIG1fd2F0Y2hlcnMuc2V0KCsrc0lkZW50aWZpZXIsIG5vdGlmaWVyKTsK
KyAgICAKKyAgICByZXR1cm4gc0lkZW50aWZpZXI7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OmNs
ZWFyV2F0Y2gobG9uZyB3YXRjaElkKQoreworICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZp
ZXIgPSBtX3dhdGNoZXJzLmdldCh3YXRjaElkKTsKKyAgICBpZiAobm90aWZpZXIpCisgICAgICAg
IG1fd2F0Y2hlcnMucmVtb3ZlKHdhdGNoSWQpOworICAgIAorICAgIHN0b3BVcGRhdGluZ0lmRW1w
dHkoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6c3RvcFVwZGF0aW5nSWZFbXB0eSgpCit7Cisg
ICAgaWYgKG1fd2F0Y2hlcnMuaXNFbXB0eSgpICYmIG1fb25lU2hvdHMuaXNFbXB0eSgpKTsKKyAg
ICAgICAgc3RvcFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OmhhbmRsZU5ld1Bv
c2l0aW9uKFBhc3NSZWZQdHI8R2VvcG9zaXRpb24+IG5ld1Bvc2l0aW9uKQoreworICAgIEFTU0VS
VChuZXdQb3NpdGlvbik7CisgICAgUmVmUHRyPEdlb3Bvc2l0aW9uPiBwb3NpdGlvbiA9IG5ld1Bv
c2l0aW9uOworICAgIG1fbGFzdFBvc2l0aW9uID0gcG9zaXRpb247CisKKyAgICBib29sIHNob3Vs
ZENhbGxFcnJvckNhbGxiYWNrID0gZmFsc2U7CisgICAgeworICAgIEdlb05vdGlmaWVyU2V0Ojpj
b25zdF9pdGVyYXRvciBlbmQgPSBtX29uZVNob3RzLmVuZCgpOworICAgIGZvciAoR2VvTm90aWZp
ZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9vbmVTaG90cy5iZWdpbigpOyBpdCAhPSBlbmQ7
ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9ICppdDsKKyAg
ICAgICAgQVNTRVJUKG5vdGlmaWVyLT5tX3N1Y2Nlc3NDYWxsYmFjayk7CisgICAgICAgIAorICAg
ICAgICBub3RpZmllci0+bV90aW1lci5zdG9wKCk7CisgICAgICAgIG5vdGlmaWVyLT5tX3N1Y2Nl
c3NDYWxsYmFjay0+aGFuZGxlRXZlbnQobV9sYXN0UG9zaXRpb24uZ2V0KCksIHNob3VsZENhbGxF
cnJvckNhbGxiYWNrKTsKKyAgICAgICAgaWYgKHNob3VsZENhbGxFcnJvckNhbGxiYWNrKSB7Cisg
ICAgICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gZXJyb3IgPSBuZXcgUG9zaXRpb25FcnJv
cig1LCAiSmF2YVNjcmlwdCBFcnJvciIpOworICAgICAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3Iu
Z2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIH0KKyAg
ICAKKyAgICB7CisgICAgR2VvTm90aWZpZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IG1fd2F0
Y2hlcnMuZW5kKCk7CisgICAgZm9yIChHZW9Ob3RpZmllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX3dhdGNoZXJzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBSZWZQdHI8
R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKCppdCkuc2Vjb25kOworICAgICAgICBBU1NFUlQobm90
aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgICAgIAorICAgICAgICBub3RpZmll
ci0+bV90aW1lci5zdG9wKCk7CisgICAgICAgIG5vdGlmaWVyLT5tX3N1Y2Nlc3NDYWxsYmFjay0+
aGFuZGxlRXZlbnQobV9sYXN0UG9zaXRpb24uZ2V0KCksIHNob3VsZENhbGxFcnJvckNhbGxiYWNr
KTsKKyAgICAgICAgaWYgKHNob3VsZENhbGxFcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBS
ZWZQdHI8UG9zaXRpb25FcnJvcj4gZXJyb3IgPSBuZXcgUG9zaXRpb25FcnJvcig1LCAiSmF2YVNj
cmlwdCBFcnJvciIpOworICAgICAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IuZ2V0KCkpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIH0KKworICAgIG1fb25lU2hv
dHMuY2xlYXIoKTsKKyAgICBzdG9wVXBkYXRpbmdJZkVtcHR5KCk7Cit9CisKK3ZvaWQgR2VvbG9j
YXRpb246OmhhbmRsZUVycm9yKFBvc2l0aW9uRXJyb3IqIGVycm9yKQoreworICAgIEFTU0VSVChl
cnJvcik7CisKKyAgICB7CisgICAgR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGVuZCA9
IG1fb25lU2hvdHMuZW5kKCk7CisgICAgZm9yIChHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX29uZVNob3RzLmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAgICBS
ZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKml0OworICAgICAgICAKKyAgICAgICAgaWYg
KG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spCisgICAgICAgICAgICBub3RpZmllci0+bV9lcnJv
ckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvcik7CisgICAgfQorICAgIH0KKyAgICBtX29uZVNo
b3RzLmNsZWFyKCk7CisgICAgCisgICAgeworICAgIEdlb05vdGlmaWVyTWFwOjpjb25zdF9pdGVy
YXRvciBlbmQgPSBtX3dhdGNoZXJzLmVuZCgpOworICAgIGZvciAoR2VvTm90aWZpZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV93YXRjaGVycy5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9ICgqaXQpLnNlY29uZDsKKyAg
ICAgICAgICAgIAorICAgICAgICBpZiAobm90aWZpZXItPm1fZXJyb3JDYWxsYmFjaykKKyAgICAg
ICAgICAgIG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yKTsKKyAg
ICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24u
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9m
CisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgor
ICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEdlb2xvY2F0aW9uX2gKKyNkZWZpbmUgR2VvbG9j
YXRpb25faAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hT
ZXQuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCisjaW5jbHVkZSAiR2VvcG9zaXRpb24u
aCIKKyNpbmNsdWRlICJQb3NpdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiUG9zaXRpb25FcnJv
ckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiUG9zaXRpb25PcHRpb25zLmgiCisjaW5jbHVkZSAiVGlt
ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKKyAgICAKK2NsYXNz
IEdlb2xvY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvbG9jYXRpb24+IHsKK3B1YmxpYzoK
KyAgICBjbGFzcyBHZW9Ob3RpZmllciA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb05vdGlmaWVyPiB7
CisgICAgcHVibGljOgorICAgICAgICBHZW9Ob3RpZmllcihQYXNzUmVmUHRyPFBvc2l0aW9uQ2Fs
bGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+
IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyAqb3B0aW9ucyk7CisKKyAgICAgICAgdm9p
ZCB0aW1lckZpcmVkKFRpbWVyPEdlb05vdGlmaWVyPiogdGltZXIpOworCisgICAgICAgIFJlZlB0
cjxQb3NpdGlvbkNhbGxiYWNrPiAgICAgICAgbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAgICAgIFJl
ZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+ICAgbV9lcnJvckNhbGxiYWNrOworICAgICAgICBU
aW1lcjxHZW9Ob3RpZmllcj4gICAgICAgICAgICAgIG1fdGltZXI7CisgICAgfTsKKworICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEdlb2xvY2F0aW9uPiBjcmVhdGUoRnJhbWUqIGZyYW1lKTsKKyAgICB2
b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOworICAgIAorICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9uKCkg
e30KKworICAgIEdlb3Bvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xh
c3RQb3NpdGlvbi5nZXQoKTsgfQorCisgICAgdm9pZCBnZXRDdXJyZW50UG9zaXRpb24oUGFzc1Jl
ZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRp
b25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMp
OworICAgIGxvbmcgd2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1
Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2Fs
bGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucyk7CisgICAgdm9pZCBjbGVhcldhdGNoKGxv
bmcgd2F0Y2hJZCk7CisKKyAgICB2b2lkIGhhbmRsZU5ld1Bvc2l0aW9uKFBhc3NSZWZQdHI8R2Vv
cG9zaXRpb24+IG5ld1Bvc2l0aW9uKTsKKyAgICB2b2lkIGhhbmRsZUVycm9yKFBvc2l0aW9uRXJy
b3IqIGVycm9yKTsKKworcHJvdGVjdGVkOgorICAgIEdlb2xvY2F0aW9uKEZyYW1lKiBmcmFtZSk7
CisgICAgCisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZkVtcHR5KCk7CisKKyAgICB2aXJ0dWFsIGJv
b2wgc3RhcnRVcGRhdGluZyhQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAwOworICAgIAorICAgIHR5cGVkZWYgSGFzaFNldDwg
UmVmUHRyPEdlb05vdGlmaWVyPiA+IEdlb05vdGlmaWVyU2V0OworICAgIHR5cGVkZWYgSGFzaE1h
cDxsb25nLCBSZWZQdHI8R2VvTm90aWZpZXI+ID4gR2VvTm90aWZpZXJNYXA7CisgICAgCisgICAg
R2VvTm90aWZpZXJTZXQgbV9vbmVTaG90czsKKyAgICBHZW9Ob3RpZmllck1hcCBtX3dhdGNoZXJz
OworICAgIFJlZlB0cjxHZW9wb3NpdGlvbj4gbV9sYXN0UG9zaXRpb247CisgICAgCisgICAgRnJh
bWUqIG1fZnJhbWU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gR2VvbG9jYXRpb25faApJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaWRsCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MyBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25z
dHJ1Y3RvcgorICAgIF0gR2VvbG9jYXRpb24geworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
R2VvcG9zaXRpb24gbGFzdFBvc2l0aW9uOworCisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0Q3Vy
cmVudFBvc2l0aW9uKGluIFBvc2l0aW9uQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBQb3Np
dGlvbkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaywgaW4gUG9zaXRpb25PcHRpb25zIG9wdGlv
bnMpOworCisgICAgICAgIFtDdXN0b21dIGxvbmcgd2F0Y2hQb3NpdGlvbihpbiBQb3NpdGlvbkNh
bGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gUG9zaXRpb25FcnJvckNhbGxiYWNrIGVycm9yQ2Fs
bGJhY2ssIGluIFBvc2l0aW9uT3B0aW9ucyBvcHRpb25zKTsKKworICAgICAgICB2b2lkIGNsZWFy
V2F0Y2goaW4gbG9uZyB3YXRjaElkKTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL3BhZ2Uv
R2VvcG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5j
cHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVy
IHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2Vv
cG9zaXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcgR2VvcG9zaXRpb246
OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoInBvc2l0aW9u
KCUuNmxnLCAlLjZsZywgJS42bGcgJS42bGcgJS42bGcgJS42bGcgJS42bGcgJS5sbGQpIiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXRpdHVkZSwgbV9sb25naXR1ZGUsIG1fYWx0aXR1
ZGUsIG1fYWNjdXJhY3ksIAorICAgICAgICAgICAgICAgICAgICAgICAgICBtX2FsdGl0dWRlQWNj
dXJhY3ksIG1faGVhZGluZywgbV92ZWxvY2l0eSwgbV90aW1lc3RhbXApOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvcGFnZS9HZW9wb3NpdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDc3IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZu
ZGVmIEdlb3Bvc2l0aW9uX2gKKyNkZWZpbmUgR2VvcG9zaXRpb25faAorCisjaW5jbHVkZSA8d3Rm
L1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CisKK2NsYXNzIEdlb3Bvc2l0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvcG9z
aXRpb24+IHsKK3B1YmxpYzoKKyAgICBHZW9wb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJs
ZSBsb25naXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBkb3VibGUgYWx0
aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGhlYWRpbmcsIGRvdWJsZSB2ZWxvY2l0eSwgdW5zaWduZWQg
bG9uZyBsb25nIHRpbWVzdGFtcCkKKyAgICAgICAgOiBtX2xhdGl0dWRlKGxhdGl0dWRlKQorICAg
ICAgICAsIG1fbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0
dWRlKQorICAgICAgICAsIG1fYWNjdXJhY3koYWNjdXJhY3kpCisgICAgICAgICwgbV9hbHRpdHVk
ZUFjY3VyYWN5KGFsdGl0dWRlQWNjdXJhY3kpCisgICAgICAgICwgbV9oZWFkaW5nKGhlYWRpbmcp
CisgICAgICAgICwgbV92ZWxvY2l0eSh2ZWxvY2l0eSkKKyAgICAgICAgLCBtX3RpbWVzdGFtcCh0
aW1lc3RhbXApIAorICAgIHt9CisgICAgCisgICAgZG91YmxlIGxhdGl0dWRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXRpdHVkZTsgfQorICAgIGRvdWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVy
biBtX2xvbmdpdHVkZTsgfQorICAgIGRvdWJsZSBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1f
YWx0aXR1ZGU7IH0KKyAgICBkb3VibGUgYWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2FjY3Vy
YWN5OyB9CisgICAgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2Fs
dGl0dWRlQWNjdXJhY3k7IH0KKyAgICBkb3VibGUgaGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1f
aGVhZGluZzsgfQorICAgIGRvdWJsZSB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2Np
dHk7IH0KKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lc3RhbXA7IH0KKworICAgIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OworCitwcml2YXRl
OgorICAgIGRvdWJsZSBtX2xhdGl0dWRlOworICAgIGRvdWJsZSBtX2xvbmdpdHVkZTsKKyAgICBk
b3VibGUgbV9hbHRpdHVkZTsKKyAgICBkb3VibGUgbV9hY2N1cmFjeTsKKyAgICBkb3VibGUgbV9h
bHRpdHVkZUFjY3VyYWN5OworICAgIGRvdWJsZSBtX2hlYWRpbmc7CisgICAgZG91YmxlIG1fdmVs
b2NpdHk7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG1fdGltZXN0YW1wOworfTsKKyAgICAKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdlb3Bvc2l0aW9uX2gKSW5kZXg6IFdl
YkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dl
b3Bvc2l0aW9uLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5p
ZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIEdlb3Bvc2l0aW9u
IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBsYXRpdHVkZTsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBsb25naXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBkb3VibGUgYWx0aXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3Vi
bGUgYWNjdXJhY3k7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgYWx0aXR1ZGVB
Y2N1cmFjeTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBoZWFkaW5nCisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgdmVsb2NpdHkKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVRpbWVTdGFtcCB0aW1lc3RhbXA7CisKKyAgICAgICAgRE9NU3RyaW5nIHRv
U3RyaW5nKCk7CisgICAgfTsKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiAzNzQ4MykK
KysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsy
Nyw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2lu
Y2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNp
bmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIk1pbWVUeXBlQXJyYXkuaCIKICNpbmNsdWRl
ICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgpAQCAtODcsNiArODgsMTAgQEAgdm9pZCBOYXZpZ2F0
b3I6OmRpc2Nvbm5lY3RGcmFtZSgpCiAgICAgICAgIG1fbWltZVR5cGVzLT5kaXNjb25uZWN0RnJh
bWUoKTsKICAgICAgICAgbV9taW1lVHlwZXMgPSAwOwogICAgIH0KKyAgICBpZiAobV9nZW9sb2Nh
dGlvbikgeworICAgICAgICBtX2dlb2xvY2F0aW9uLT5kaXNjb25uZWN0RnJhbWUoKTsKKyAgICAg
ICAgbV9nZW9sb2NhdGlvbiA9IDA7CisgICAgfQogICAgIG1fZnJhbWUgPSAwOwogfQogCkBAIC0x
OTcsNCArMjAyLDE1IEBAIGJvb2wgTmF2aWdhdG9yOjpvbkxpbmUoKSBjb25zdAogICAgIHJldHVy
biBuZXR3b3JrU3RhdGVOb3RpZmllcigpLm9uTGluZSgpOwogfQogCitHZW9sb2NhdGlvbiogTmF2
aWdhdG9yOjpnZW9sb2NhdGlvbigpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0oSVBIT05FKQorICAg
IGlmICghbV9nZW9sb2NhdGlvbikKKyAgICAgICAgbV9nZW9sb2NhdGlvbiA9IEdlb2xvY2F0aW9u
OjpjcmVhdGUobV9mcmFtZSk7CisgICAgcmV0dXJuIG1fZ2VvbG9jYXRpb24uZ2V0KCk7CisjZWxz
ZQorICAgIHJldHVybiBOVUxMOworI2VuZGlmCit9CisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5oCShyZXZpc2lvbiAzNzQ4MykKKysrIFdlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgR2VvbG9jYXRpb247CiAgICAgY2xh
c3MgTWltZVR5cGVBcnJheTsKICAgICBjbGFzcyBQbHVnaW5EYXRhOwogICAgIGNsYXNzIFBsdWdp
bkFycmF5OwpAQCAtNTYsMTEgKzU3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBqYXZhRW5hYmxlZCgpIGNvbnN0OwogCiAgICAgICAgIGJvb2wgb25MaW5lKCkgY29uc3Q7
CisgICAgICAgIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbigpIGNvbnN0OworICAgICAgICAgICAg
CiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF2aWdhdG9yKEZyYW1lKik7CiAgICAgICAgIEZyYW1l
KiBtX2ZyYW1lOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxQbHVnaW5BcnJheT4gbV9wbHVnaW5z
OwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxNaW1lVHlwZUFycmF5PiBtX21pbWVUeXBlczsKKyAg
ICAgICAgbXV0YWJsZSBSZWZQdHI8R2VvbG9jYXRpb24+IG1fZ2VvbG9jYXRpb247CiAgICAgfTsK
IAogfQpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5pZGwJKHJldmlzaW9uIDM3NDgzKQorKysgV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDcgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIGJvb2xlYW4gamF2YUVuYWJsZWQoKTsKICAgICAgICAgCiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIG9uTGluZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIEdlb2xvY2F0aW9uIGdlb2xvY2F0aW9uOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNv
cmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bv
c2l0aW9uQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNh
bGxiYWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUG9zaXRpb25D
YWxsYmFja19oCisjZGVmaW5lIFBvc2l0aW9uQ2FsbGJhY2tfaAorCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworICAgIAorICAgIGNsYXNzIEdlb3Bvc2l0aW9uOworCisgICAgY2xhc3MgUG9zaXRpb25D
YWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFBvc2l0aW9uQ2FsbGJhY2s+IHsKKyAgICBwdWJs
aWM6CisgICAgICAgIHZpcnR1YWwgflBvc2l0aW9uQ2FsbGJhY2soKSB7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUV2ZW50KEdlb3Bvc2l0aW9uKiBwb3NpdGlvbiwgYm9vbCYgcmFpc2Vk
RXhjZXB0aW9uKSA9IDA7CisgICAgfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFBvc2l0aW9uQ2FsbGJhY2tfaApJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9u
Q2FsbGJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNr
LmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmlkbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAg
TmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJm
YWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gUG9zaXRpb25DYWxsYmFj
ayB7CisgICAgICAgIHZvaWQgaGFuZGxlRXZlbnQoaW4gR2VvcG9zaXRpb24gcG9zaXRpb24pOwor
ICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvcGFnZS9Qb3NpdGlvbkVycm9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTcgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0
ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisg
KiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisg
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgUG9zaXRpb25FcnJvcl9oCisjZGVmaW5lIFBvc2l0aW9uRXJyb3JfaAorCisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
ICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBQ
b3NpdGlvbkVycm9yIDogcHVibGljIFJlZkNvdW50ZWQ8UG9zaXRpb25FcnJvcj4geworcHVibGlj
OgorICAgIFBvc2l0aW9uRXJyb3IobG9uZyBjb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIAor
ICAgICAgICA6IG1fY29kZShjb2RlKQorICAgICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQorICAg
IHt9CisgICAgCisgICAgbG9uZyBjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CisgICAg
dm9pZCBzZXRDb2RlKGxvbmcgY29kZSkgeyBtX2NvZGUgPSBjb2RlOyB9CisgICAgY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CisgICAgdm9pZCBzZXRN
ZXNzYWdlKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeyBtX21lc3NhZ2UgPSBtZXNzYWdlOyB9Cisg
ICAgCitwcml2YXRlOgorICAgIGxvbmcgbV9jb2RlOworICAgIFN0cmluZyBtX21lc3NhZ2U7Cit9
OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUG9zaXRpb25FcnJv
cl9oCkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvci5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9w
YWdlL1Bvc2l0aW9uRXJyb3IuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJ
VFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICog
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1Ig
SVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMK
KyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCittb2R1
bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9y
CisgICAgXSBQb3NpdGlvbkVycm9yIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcg
Y29kZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBtZXNzYWdlOworICAg
IH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgUG9zaXRpb25FcnJvckNhbGxiYWNrX2gKKyNkZWZp
bmUgUG9zaXRpb25FcnJvckNhbGxiYWNrX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAg
IGNsYXNzIFBvc2l0aW9uRXJyb3I7CisKKyAgICBjbGFzcyBQb3NpdGlvbkVycm9yQ2FsbGJhY2sg
OiBwdWJsaWMgUmVmQ291bnRlZDxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHsKKyAgICBwdWJsaWM6
CisgICAgICAgIHZpcnR1YWwgflBvc2l0aW9uRXJyb3JDYWxsYmFjaygpIHsgfQorICAgICAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoUG9zaXRpb25FcnJvciogcG9zaXRpb24pID0gMDsKKyAg
ICB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUG9zaXRpb25F
cnJvckNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2su
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRs
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVy
ZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIFBvc2l0aW9uRXJyb3JD
YWxsYmFjayB7CisgICAgICAgIHZvaWQgaGFuZGxlRXZlbnQoaW4gUG9zaXRpb25FcnJvciBlcnJv
cik7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBB
cHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBQb3NpdGlvbk9wdGlvbnNfaAorI2RlZmluZSBQb3NpdGlvbk9wdGlv
bnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorICAgIGNsYXNzIFBvc2l0aW9uT3B0
aW9ucyA6IHB1YmxpYyBSZWZDb3VudGVkPFBvc2l0aW9uT3B0aW9ucz4geworICAgIHB1YmxpYzoK
KyAgICAgICAgUG9zaXRpb25PcHRpb25zKGJvb2wgaGlnaEFjY3VyYWN5ID0gZmFsc2UsIGxvbmcg
dGltZW91dCA9IC0xKQorICAgICAgICAgICAgOiBtX2hpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3kp
CisgICAgICAgICAgICAsIG1fdGltZW91dCh0aW1lb3V0KQorICAgICAgICB7fQorICAgICAgICAK
KyAgICAgICAgYm9vbCBlbmFibGVIaWdoQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2hpZ2hB
Y2N1cmFjeTsgfQorICAgICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGVuYWJs
ZSkgeyBtX2hpZ2hBY2N1cmFjeSA9IGVuYWJsZTsgfQorICAgICAgICBsb25nIHRpbWVvdXQoKSBj
b25zdCB7IHJldHVybiBtX3RpbWVvdXQ7IH0KKyAgICAgICAgdm9pZCBzZXRUaW1lb3V0KGxvbmcg
dCkgeyBtX3RpbWVvdXQgPSB0OyB9CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIGJv
b2wgbV9oaWdoQWNjdXJhY3k7CisgICAgICAgIGxvbmcgbV90aW1lb3V0OworICAgIH07CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3NpdGlvbk9wdGlvbnNfaApJ
bmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5pZGwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3Bh
Z2UvUG9zaXRpb25PcHRpb25zLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzOCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRl
ciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
CisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworbW9k
dWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3Rv
cgorICAgIF0gUG9zaXRpb25PcHRpb25zIHsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gZW5h
YmxlSGlnaEFjY3VyYWN5OworICAgICAgICBhdHRyaWJ1dGUgbG9uZyB0aW1lb3V0OworICAgIH07
CisKK30K
</data>
<flag name="review"
          id="11047"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24339</attachid>
            <date>2008-10-13 22:26:46 -0700</date>
            <delta_ts>2008-10-14 16:12:14 -0700</delta_ts>
            <desc>addresses Sam&apos;s review comments.</desc>
            <filename>GeoLocation-WebKit.org.patch.txt</filename>
            <type>text/plain</type>
            <size>94769</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3NTc1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDgtMTAtMTMgIEdyZWcgQm9s
c2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDc1CisgICAgICAgICAgICAgICAgCisJUHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR2Vv
bG9jYXRpb24gQVBJCisJICAgICAgICAKKwlodHRwOi8vZGV2LnczLm9yZy9nZW8vYXBpL3NwZWMt
c291cmNlLmh0bWwKKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDA4LTEwLTEzICBB
bHAgVG9rZXIgIDxhbHBAbnVhbnRpLmNvbT4KIAogICAgICAgICBGaXggYXV0b3Rvb2xzIGRpc3Qg
YnVpbGQgdGFyZ2V0IGJ5IGxpc3RpbmcgcmVjZW50bHkgYWRkZWQgaGVhZGVyCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93
dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMzc1NzUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxh
dGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMzQzLDYgKzM0MywxMCBAQAogI2RlZmluZSBFTkFC
TEVfU0FNUExJTkdfVE9PTCAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9HRU9MT0NB
VElPTikKKyNkZWZpbmUgRU5BQkxFX0dFT0xPQ0FUSU9OIDAKKyNlbmRpZgorCiAvLyBDVEkgb25s
eSBzdXBwb3J0cyB4ODYgYXQgdGhlIG1vbWVudCwgYW5kIGhhcyBvbmx5IGJlZW4gdGVzdGVkIG9u
IE1hYyBhbmQgV2luZG93cy4KICNpZiAhZGVmaW5lZChFTkFCTEVfQ1RJKSAmJiBQTEFURk9STShY
ODYpICYmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikpCiAjZGVmaW5lIEVOQUJMRV9D
VEkgMQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFu
Z2VMb2cJKHJldmlzaW9uIDM3NTc1KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxMDUgQEAKKzIwMDgtMTAtMTMgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5n
YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV0FSTklORzogTk8gVEVTVCBDQVNFUyBBRERFRCBPUiBDSEFOR0VECisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc1CisgICAgICAgICAg
ICAgICAgCisJUHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR2VvbG9jYXRpb24gQVBJCisJICAgICAg
ICAKKwlodHRwOi8vZGV2LnczLm9yZy9nZW8vYXBpL3NwZWMtc291cmNlLmh0bWwKKworCSogRGVy
aXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBX
ZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAg
ICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogV2Vi
Q29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNh
bGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SlND
dXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6SlNDdXN0b21Qb3NpdGlvbkVycm9y
Q2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9u
RXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tUG9zaXRp
b25FcnJvckNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmlu
ZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjptYXJrRE9NT2JqZWN0V3JhcHBlcik6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTR2VvbG9jYXRpb246Omdl
dEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjp3YXRj
aFBvc2l0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpKU05hdmlnYXRvcjo6bWFyayk6CisgICAgICAgICogcGFnZS9H
ZW9sb2NhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdl
b05vdGlmaWVyOjpHZW9Ob3RpZmllcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6
R2VvTm90aWZpZXI6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
Okdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpkaXNjb25uZWN0
RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Y2xlYXJXYXRjaCk6CisgICAgICAgIChXZWJDb3Jl
OjpHZW9sb2NhdGlvbjo6c3RvcFVwZGF0aW5nSWZFbXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6aGFuZGxlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
Omdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZCk6CisgICAgICAgICog
cGFnZS9HZW9sb2NhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9u
Ojp+R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Omxhc3RQb3Np
dGlvbik6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbi5pZGw6IEFkZGVkLgorICAgICAgICAq
IHBhZ2UvR2VvcG9zaXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0
aW9uOjp0b1N0cmluZyk6CisgICAgICAgICogcGFnZS9HZW9wb3NpdGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjpHZW9wb3NpdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpHZW9wb3NpdGlvbjo6bGF0aXR1ZGUpOgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRp
b246OmxvbmdpdHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6YWx0aXR1ZGUp
OgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OmFjY3VyYWN5KToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb3Bvc2l0aW9uOjphbHRpdHVkZUFjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6
Okdlb3Bvc2l0aW9uOjpoZWFkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjp2
ZWxvY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6dGltZXN0YW1wKToKKyAg
ICAgICAgKiBwYWdlL0dlb3Bvc2l0aW9uLmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9OYXZp
Z2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpkaXNjb25uZWN0RnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpnZW9sb2NhdGlvbik6CisgICAgICAgICog
cGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6b3B0aW9uYWxH
ZW9sb2NhdGlvbik6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaWRsOgorICAgICAgICAqIHBh
Z2UvUG9zaXRpb25DYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9u
Q2FsbGJhY2s6On5Qb3NpdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uQ2Fs
bGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uRXJyb3IuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpQb3NpdGlvbkVycm9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb25FcnJvcjo6c2V0Q29kZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpt
ZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OnNldE1lc3NhZ2UpOgor
ICAgICAgICAqIHBhZ2UvUG9zaXRpb25FcnJvci5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2Uv
UG9zaXRpb25FcnJvckNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRp
b25FcnJvckNhbGxiYWNrOjp+UG9zaXRpb25FcnJvckNhbGxiYWNrKToKKyAgICAgICAgKiBwYWdl
L1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvUG9zaXRp
b25PcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpQ
b3NpdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjplbmFi
bGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpzZXRF
bmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjp0
aW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6c2V0VGltZW91dCk6
CisgICAgICAgICogcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uU2VydmljZTo6R2VvbG9jYXRpb25TZXJ2aWNlKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uU2VydmljZTo6cG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uU2VydmljZTo6ZXJyb3JPY2N1cnJlZCk6CisgICAgICAgICogcGxhdGZv
cm0vR2VvbG9jYXRpb25TZXJ2aWNlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25TZXJ2aWNlQ2xpZW50Ojp+R2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUNsaWVudDo6Z2VvbG9jYXRpb25TZXJ2aWNlUG9z
aXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUNsaWVu
dDo6Z2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvblNlcnZpY2U6On5HZW9sb2NhdGlvblNlcnZpY2UpOgorCiAyMDA4LTEwLTEzICBB
bHAgVG9rZXIgIDxhbHBAbnVhbnRpLmNvbT4KIAogICAgICAgICBGaXggYXV0b3Rvb2xzIGRpc3Qg
YnVpbGQgdGFyZ2V0IGJ5IGxpc3RpbmcgcmVjZW50bHkgYWRkZWQgaGVhZGVyCkluZGV4OiBXZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291
cmNlcy5tYWtlCShyZXZpc2lvbiAzNzU3NSkKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFr
ZQkod29ya2luZyBjb3B5KQpAQCAtOTIsNiArOTIsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBF
dmVudFRhcmdldE5vZGUgXAogICAgIEZpbGUgXAogICAgIEZpbGVMaXN0IFwKKyAgICBHZW9sb2Nh
dGlvbiBcCisgICAgR2VvcG9zaXRpb24gXAogICAgIEhUTUxBbmNob3JFbGVtZW50IFwKICAgICBI
VE1MQXBwbGV0RWxlbWVudCBcCiAgICAgSFRNTEFyZWFFbGVtZW50IFwKQEAgLTE3OSw2ICsxODEs
MTAgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgT3ZlcmZsb3dFdmVudCBcCiAgICAgUGx1Z2luIFwK
ICAgICBQbHVnaW5BcnJheSBcCisgICAgUG9zaXRpb25DYWxsYmFjayBcCisgICAgUG9zaXRpb25F
cnJvciBcCisgICAgUG9zaXRpb25FcnJvckNhbGxiYWNrIFwKKyAgICBQb3NpdGlvbk9wdGlvbnMg
XAogICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBcCiAgICAgUHJvZ3Jlc3NFdmVudCBcCiAgICAg
UkdCQ29sb3IgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAzNzU3NSkKKysrIFdlYkNvcmUvR05VbWFr
ZWZpbGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsMTAgQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJE
Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAg
XAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcCBcCisJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwIFwKKwlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tVm9pZENhbGxiYWNrLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVZvaWRDYWxsYmFjay5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jl
c29sdmVyLmNwcCBcCkBAIC0zNDcsNiArMzUxLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0V2ZW50VGFyZ2V0QmFzZS5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXROb2RlQ3VzdG9tLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3Vz
dG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBc
CiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uLmggXAogCVdlYkNvcmUv
YmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAgXApAQCAtMTE4OSw2ICsx
MTk0LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5o
IFwKIAlXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBcCiAJV2ViQ29yZS9wYWdlL0ZyYW1lVmll
dy5oIFwKKwlXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwIFwKKwlXZWJDb3JlL3BhZ2UvR2Vv
bG9jYXRpb24uaCBcCisJV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmNwcCBcCisJV2ViQ29yZS9w
YWdlL0dlb3Bvc2l0aW9uLmggXAogCVdlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcCBcCiAJV2ViQ29y
ZS9wYWdlL0hpc3RvcnkuaCBcCiAJV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcCBcCkBAIC0xMjAx
LDYgKzEyMTAsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvUGFnZS5o
IFwKIAlXZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBcCiAJV2ViQ29yZS9wYWdlL1BhZ2VHcm91
cC5oIFwKKwlXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5oIFwKKwlXZWJDb3JlL3BhZ2Uv
UG9zaXRpb25FcnJvci5oIFwKKwlXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmgg
XAorCVdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaCBcCiAJV2ViQ29yZS9wYWdlL1ByaW50
Q29udGV4dC5jcHAgXAogCVdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaCBcCiAJV2ViQ29yZS9w
YWdlL1NjcmVlbi5jcHAgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiAzNzU3NSkKKysrIFdlYkNvcmUvV2ViQ29y
ZS5wcm8JKHdvcmtpbmcgY29weSkKQEAgLTc3Niw2ICs3NzYsOCBAQCBTT1VSQ0VTICs9IFwKICAg
ICBwYWdlL0ZyYW1lLmNwcCBcCiAgICAgcGFnZS9GcmFtZVRyZWUuY3BwIFwKICAgICBwYWdlL0Zy
YW1lVmlldy5jcHAgXAorICAgIHBhZ2UvR2VvbG9jYXRpb24uY3BwIFwKKyAgICBwYWdlL0dlb3Bv
c2l0aW9uLmNwcCBcCiAgICAgcGFnZS9IaXN0b3J5LmNwcCBcCiAgICAgcGFnZS9Mb2NhdGlvbi5j
cHAgXAogICAgIHBhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAgXApAQCAtODAz
LDYgKzgwNSw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL0RyYWdEYXRhLmNwcCBcCiAg
ICAgcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBcCiAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIuY3Bw
IFwKKyAgICBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwIFwKICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250RGVzY3JpcHRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250
RmFtaWx5LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQWZmaW5lVHJhbnNmb3JtLmNwcCBc
CkBAIC0xMTk4LDcgKzEyMDEsMTAgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RBVEFCQVNF
PTEpIHsKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2Fs
bGJhY2suY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAgXAog
ICAgICAgICBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIFwKLSAg
ICAgICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKyAgICAgICAgYmlu
ZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9q
cy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9t
UG9zaXRpb25DYWxsYmFjay5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0
aW9uRXJyb3JDYWxsYmFjay5jcHAKIAogICAgIElETF9CSU5ESU5HUyArPSBcCiAgICAgICAgIHN0
b3JhZ2UvRGF0YWJhc2UuaWRsIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCShyZXZpc2lvbiAzNzU3NSkK
KysrIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0
Miw4IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAg
YmluZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0NT
U1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ1NTVmFs
dWVDdXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFj
ay5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2su
Y3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3Bw
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5j
cHAKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmNw
cApAQCAtNTksNiArNjEsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMg
bmVlCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXROb2RlQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9t
LmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uLmNwcAogICAgICAg
ICBiaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
SFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCkBAIC0yMzksNiArMjQyLDggQEAgVGhpcyBmaWxl
IGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTRXZlbnRUYXJnZXROb2RlLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRmlsZS5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVMaXN0
LmNwcAorICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2VvbG9jYXRpb24uY3BwCisg
ICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHZW9wb3NpdGlvbi5jcHAKICAgICAgICAg
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxBbmNob3JFbGVtZW50LmNwcAogICAgICAgICBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEFwcGxldEVsZW1lbnQuY3BwCiAgICAgICAgIERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC0zMjMsNiArMzI4
LDggQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5jcHAKICAgICAgICAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1BsdWdpbi5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU1BsdWdpbkFycmF5LmNwcAorICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
UG9zaXRpb25FcnJvci5jcHAKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bvc2l0
aW9uT3B0aW9ucy5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Byb2Nlc3Np
bmdJbnN0cnVjdGlvbi5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Byb2dy
ZXNzRXZlbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSYW5nZS5jcHAK
QEAgLTY2OSw2ICs2NzYsOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMg
bmVlCiAgICAgICAgIHBhZ2UvRnJhbWUuY3BwCiAgICAgICAgIHBhZ2UvRnJhbWVUcmVlLmNwcAog
ICAgICAgICBwYWdlL0ZyYW1lVmlldy5jcHAKKyAgICAgICAgcGFnZS9HZW9sb2NhdGlvbi5jcHAK
KyAgICAgICAgcGFnZS9HZW9wb3NpdGlvbi5jcHAKICAgICAgICAgcGFnZS9IaXN0b3J5LmNwcAog
ICAgICAgICBwYWdlL0xvY2F0aW9uLmNwcAogICAgICAgICBwYWdlL01vdXNlRXZlbnRXaXRoSGl0
VGVzdFJlc3VsdHMuY3BwCkBAIC02OTIsNiArNzAxLDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRo
ZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBwbGF0Zm9ybS9EZXByZWNhdGVkVmFsdWVMaXN0
SW1wbC5jcHAKICAgICAgICAgcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAogICAgICAgICBwbGF0Zm9y
bS9GaWxlQ2hvb3Nlci5jcHAKKyAgICAgICAgcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNw
cAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAogICAgICAgICBwbGF0Zm9ybS9n
cmFwaGljcy9Gb250Q2FjaGUuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREYXRh
LmNwcApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAz
NzU3NSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTY4MCw2ICs2ODAsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU0dlb2xvY2F0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTR2VvcG9zaXRpb24uaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFdmVudC5oIg0KIAkJCQk+DQogCQkJ
PC9GaWxlPg0KQEAgLTEwNDAsNiArMTA0OCwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUG9zaXRpb25FcnJvci5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9i
alwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Bvc2l0aW9uT3B0aW9ucy5oIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU092ZXJmbG93RXZl
bnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0yMjYwLDYgKzIyNzYsMzggQEAKIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxHZW9s
b2NhdGlvbi5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1l
PSJSZWxlYXNlX1BHT3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249InRydWUi
DQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8
RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcR2VvbG9jYXRpb24uaCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcR2VvcG9z
aXRpb24uY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0i
UmVsZWFzZV9QR098V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0K
KwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEdlb3Bvc2l0aW9uLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEhpc3Rvcnku
Y3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTIzODgsNiArMjQzNiwy
MiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwYWdlXFBvc2l0aW9uQ2FsbGJhY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUG9zaXRpb25FcnJvci5oIg0KKwkJCQk+DQor
CQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxQb3NpdGlv
bkVycm9yQ2FsbGJhY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUG9zaXRpb25PcHRpb25zLmgiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXFNjcmVlbi5jcHAiDQog
CQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMzA0MCw2ICszMTA0LDE0IEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXEdlb2xvY2F0aW9uU2VydmljZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxHZW9sb2NhdGlvblNlcnZpY2UuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXEhvc3RXaW5kb3cuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0xMzEzMyw2ICsx
MzIwNSwxNCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCINCisJ
CQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxi
aW5kaW5nc1xqc1xKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAiDQorCQkJCQk+DQor
CQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3Nc
anNcSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmls
ZT4NCkBAIC0xMzI2MSw2ICsxMzM0MSwxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJ
PEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNHZW9sb2NhdGlvbkN1
c3RvbS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0
aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNIaXN0b3J5Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJ
CQkJPC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCShyZXZpc2lvbiAzNzU3NSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MjIzLDYgKzQyMjMsMzMgQEAKIAkJRjkxNkM0
OEQwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhCMERC
NTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgKi87IH07
CiAJCUY5MTZDNDhFMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NF
dmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjkx
NkM0OEMwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmgg
Ki87IH07CiAJCUY5RjBFRDdBMERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dy
ZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQu
aCAqLzsgfTsKKwkJRkU4MEQ3QTcwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTgwRDdBMjBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNw
cCAqLzsgfTsKKwkJRkU4MEQ3QTgwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU4MEQ3QTMwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oICov
OyB9OworCQlGRTgwRDdBOTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9y
Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4MEQ3QTQwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxi
YWNrLmNwcCAqLzsgfTsKKwkJRkU4MEQ3QUEwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9z
aXRpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVy
cm9yQ2FsbGJhY2suaCAqLzsgfTsKKwkJRkU4MEQ3QUIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2Vv
bG9jYXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20u
Y3BwICovOyB9OworCQlGRTgwRDdDNTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3Qjcw
RTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCAqLzsgfTsKKwkJRkU4MEQ3QzYwRTlD
MUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCODBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRp
b24uaCAqLzsgfTsKKwkJRkU4MEQ3QzcwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmlk
bCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3
QjkwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmlkbCAqLzsgfTsKKwkJRkU4MEQ3Qzgw
RTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JBMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9w
b3NpdGlvbi5jcHAgKi87IH07CisJCUZFODBEN0M5MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3Np
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4
MEQ3QkIwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi87IH07CisJCUZFODBEN0NB
MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBH
ZW9wb3NpdGlvbi5pZGwgKi87IH07CisJCUZFODBEN0NCMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5oICovOyB9
OworCQlGRTgwRDdDQzBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5pZGwgaW4g
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JFMEU5
QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAqLzsgfTsKKwkJRkU4MEQ3Q0Qw
RTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JGMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbkVycm9yLmggKi87IH07CisJCUZFODBEN0NFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlv
bkVycm9yLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4MEQ3QzAwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaWRsICovOyB9Owor
CQlGRTgwRDdDRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdDMTBFOUMx
RjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggKi87IH07CisJCUZFODBEN0Qw
MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsIGluIFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdDMjBFOUMxRjI1MDAw
RDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbCAqLzsgfTsKKwkJRkU4MEQ3RDEwRTlD
MUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzMwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0
aW9uT3B0aW9ucy5oICovOyB9OworCQlGRTgwRDdEMjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRp
b25PcHRpb25zLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU4MEQ3QzQwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5pZGwgKi87
IH07CisJCUZFODBEQTYzMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTVGMEU5QzQ3
MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCAqLzsgfTsKKwkJRkU4MERBNjQwRTlDNDcw
MzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYwMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0
aW9uLmggKi87IH07CisJCUZFODBEQTY1MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBE
QTYxMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCAqLzsgfTsKKwkJRkU4MERB
NjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBK
U0dlb3Bvc2l0aW9uLmggKi87IH07CisJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bv
c2l0aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi87
IH07CisJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3
MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkU4MERBNzMwRTlDNDcy
RjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZGMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bv
c2l0aW9uT3B0aW9ucy5jcHAgKi87IH07CisJCUZFODBEQTc0MEU5QzQ3MkYwMDBENkY3NSAvKiBK
U1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU4MERBNzAwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmgg
Ki87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29u
dGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTg4NDEsNiArODg2OCwzMyBAQAogCQlGOUYw
RUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzgwREI1MENBMjAwRDE2
REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUZFNDlFRjk3MERDNTE0NjIwMDQyNjZFMSAvKiBEYXNoYm9hcmRTdXBwb3J0
Q1NTUHJvcGVydHlOYW1lcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEYXNoYm9hcmRTdXBw
b3J0Q1NTUHJvcGVydHlOYW1lcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4
MEQ3QTIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJh
Y2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBMzBFOUMxRUQyMDAw
RDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRTgwRDdBNDBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlv
bkVycm9yQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9y
Q2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21Qb3Np
dGlvbkVycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3
QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0I3MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9s
b2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9sb2Nh
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0I4MEU5QzFGMjUw
MDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBHZW9sb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCOTBF
OUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IEdlb2xvY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkEw
RTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEdlb3Bvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkU4MEQ3QkIwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb3Bvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2VvcG9zaXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFj
ay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkNhbGxiYWNrLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JFMEU5QzFGMjUwMDBENkY3NSAv
KiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQb3NpdGlvbkNh
bGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkYwRTlDMUYy
NTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgw
RDdDMDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5pZGwgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0
OyBwYXRoID0gUG9zaXRpb25FcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFODBEN0MxMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25FcnJvckNhbGxiYWNrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0MyMEU5QzFGMjUwMDBENkY3NSAvKiBQ
b3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBvc2l0aW9u
RXJyb3JDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0Mz
MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFODBEN0M0MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaWRsICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IFBvc2l0aW9uT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFODBEQTVGMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9u
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VvbG9jYXRpb24u
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2MDBFOUM0NzAzMDAwRDZG
NzUgLyogSlNHZW9sb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0dlb2xvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTYxMEU5
QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTR2VvcG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlb3Bvc2l0aW9uLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9u
RXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQb3NpdGlv
bkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNkUwRTlDNDcy
RjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkU4MERBNkYwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25PcHRpb25zLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNzAwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpT
UG9zaXRpb25PcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9z
aXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmls
ZVJlZmVyZW5jZSBzZWN0aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNl
IHNlY3Rpb24gKi8KQEAgLTk1OTAsNiArOTY0NCwxMiBAQAogCQkJCTY1QTIxNDgzMDk3QTNGNTMw
MEI5MDUwQSAvKiBGcmFtZVRyZWUuaCAqLywKIAkJCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUg
LyogRnJhbWVWaWV3LmNwcCAqLywKIAkJCQk2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJh
bWVWaWV3LmggKi8sCisJCQkJRkU4MEQ3QjcwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9u
LmNwcCAqLywKKwkJCQlGRTgwRDdCODBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaCAq
LywKKwkJCQlGRTgwRDdCOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaWRsICovLAor
CQkJCUZFODBEN0JBMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5jcHAgKi8sCisJCQkJ
RkU4MEQ3QkIwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi8sCisJCQkJRkU4MEQ3
QkMwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmlkbCAqLywKIAkJCQlCQzk0RDE1MDBD
Mjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5jcHAgKi8sCiAJCQkJQkM5NEQxNTEwQzI3NUM4QjAw
NkJDNjE3IC8qIEhpc3RvcnkuaCAqLywKIAkJCQlCQzk0RDE1MjBDMjc1QzhCMDA2QkM2MTcgLyog
SGlzdG9yeS5pZGwgKi8sCkBAIC05NjA1LDYgKzk2NjUsMTQgQEAKIAkJCQk2NUEyMTQ2NzA5N0Ez
MjkxMDBCOTA1MEEgLyogUGFnZS5oICovLAogCQkJCTkzMDJCMEJDMEQ3OUY4MjkwMEM3RUU4MyAv
KiBQYWdlR3JvdXAuY3BwICovLAogCQkJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdl
R3JvdXAuaCAqLywKKwkJCQlGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxs
YmFjay5oICovLAorCQkJCUZFODBEN0JFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxi
YWNrLmlkbCAqLywKKwkJCQlGRTgwRDdCRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJv
ci5oICovLAorCQkJCUZFODBEN0MwMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmlk
bCAqLywKKwkJCQlGRTgwRDdDMTBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxi
YWNrLmggKi8sCisJCQkJRkU4MEQ3QzIwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JD
YWxsYmFjay5pZGwgKi8sCisJCQkJRkU4MEQ3QzMwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9u
T3B0aW9ucy5oICovLAorCQkJCUZFODBEN0M0MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9w
dGlvbnMuaWRsICovLAogCQkJCUJDRUMwMUJBMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uY3Bw
ICovLAogCQkJCUJDRUMwMUJCMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uaCAqLywKIAkJCQlC
Q0VDMDFCQzBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmlkbCAqLywKQEAgLTExNzY4LDYgKzEx
ODM2LDEwIEBACiAJCQkJNjVERjMyMkUwOUQxRERCQzAwMEJFMzI1IC8qIEpTRW50aXR5LmggKi8s
CiAJCQkJOTNGOUI3NzIwQkE1RkREQzAwODU0MDY0IC8qIEpTRW50aXR5UmVmZXJlbmNlLmNwcCAq
LywKIAkJCQk5M0Y5Qjc3MzBCQTVGRERDMDA4NTQwNjQgLyogSlNFbnRpdHlSZWZlcmVuY2UuaCAq
LywKKwkJCQlGRTgwREE1RjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgKi8s
CisJCQkJRkU4MERBNjAwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCAqLywKKwkJ
CQlGRTgwREE2MTBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5jcHAgKi8sCisJCQkJ
RkU4MERBNjIwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAqLywKIAkJCQlCQ0Q5
QzJCQzBDMTdCNjlFMDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAuY3BwICovLAogCQkJCUJDRDlD
MkJEMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5oICovLAogCQkJCTE0REMwRDM1
MDlGRUQwNzMwMDdCMDIzNSAvKiBKU05vZGUuY3BwICovLApAQCAtMTE3NzYsNiArMTE4NDgsMTAg
QEAKIAkJCQlCQ0Q5QzJCRjBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlzdC5oICovLAogCQkJ
CTY1REYzMUU5MDlEMUNDNjAwMDBCRTMyNSAvKiBKU05vdGF0aW9uLmNwcCAqLywKIAkJCQk2NURG
MzFFQTA5RDFDQzYwMDAwQkUzMjUgLyogSlNOb3RhdGlvbi5oICovLAorCQkJCUZFODBEQTZEMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovLAorCQkJCUZFODBEQTZFMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLywKKwkJCQlGRTgwREE2RjBFOUM0
NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwICovLAorCQkJCUZFODBEQTcwMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovLAogCQkJCTY1REYzMUVCMDlE
MUNDNjAwMDBCRTMyNSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgKi8sCiAJCQkJNjVE
RjMxRUMwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCiAJ
CQkJRTRCNDIzODUwQ0JGQjczQzAwQUYyRUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5jcHAgKi8sCkBA
IC0xMjg0Miw2ICsxMjkxOCwxMCBAQAogCQkJCUJDNDZDMUVEMEMwRERCREYwMDIwQ0ZDMyAvKiBK
U0NTU1J1bGVDdXN0b20uY3BwICovLAogCQkJCUJDNTgyNUYyMEMwQjg5MzgwMDUzRjFCNSAvKiBK
U0NTU1N0eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJDMjBGQjdFMEMwRThFNkMw
MEQxNDQ3RiAvKiBKU0NTU1ZhbHVlQ3VzdG9tLmNwcCAqLywKKwkJCQlGRTgwRDdBMjBFOUMxRUQy
MDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCAqLywKKwkJCQlGRTgwRDdB
MzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggKi8sCisJCQkJ
RkU4MEQ3QTQwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
LmNwcCAqLywKKwkJCQlGRTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlv
bkVycm9yQ2FsbGJhY2suaCAqLywKIAkJCQk1MUVDOTI1QjBDRTkwREQ0MDBGOTAzMDggLyogSlND
dXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAgKi8sCiAJCQkJNTFFQzkyNUMwQ0U5MERENDAw
RjkwMzA4IC8qIEpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suaCAqLywKIAkJCQk1MUVDOTI1
RDBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNw
cCAqLywKQEAgLTEyODYxLDYgKzEyOTQxLDcgQEAKIAkJCQlCQzJFRDU1NDBDNkI5QkQzMDA5MjBC
RkYgLyogSlNFbGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0VGQUY0RDBDMzE3RTY5MDBGQTgx
RjYgLyogSlNFdmVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzQjdCMjAwRTkxQUFGNDAwRDU0MDY1
IC8qIEpTRXZlbnRUYXJnZXROb2RlQ3VzdG9tLmNwcCAqLywKKwkJCQlGRTgwRDdBNjBFOUMxRUQy
MDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFN0IxOTIwRDRF
ODY5NjAwNzVBNTM5IC8qIEpTSGlzdG9yeUN1c3RvbS5jcHAgKi8sCiAJCQkJQkM0RURFRjMwQzA4
RjNGQjAwN0VERDQ5IC8qIEpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJD
Q0JBRDNBMEMxOEJGRjgwMENFODkwRiAvKiBKU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywK
QEAgLTE1OTg4LDYgKzE2MDY5LDE4IEBACiAJCQkJMUM4MUJBMEMwRTk3MzQ4MzAwMjY2RTA3IC8q
IEphdmFTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQkEwRTBF
OTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzNCRTEyQjBFOTgwOTJGMDA4MzU1ODggLyogUG9wdXBNZW51U3R5bGUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZFODBEN0E4MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9u
Q2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0FBMEU5QzFFRDIwMDBENkY3NSAv
KiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4
MEQ3QzYwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGRTgwRDdDOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFODBEN0NCMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGRTgwRDdDRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3Q0YwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0
aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3RDEwRTlDMUYyNTAw
MEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MERBNjQw
RTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZF
ODBEQTY2MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTgwREE3MjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGRTgwREE3NDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlv
bnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0JFOTk0MEU5QzFDN0MwMDgzNTU4OCAvKiBSZW5k
ZXJTY3JvbGxiYXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0JFOTk1MEU5QzFDN0MwMDgzNTU4
OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNCRTk5OTBF
OUMxRTVEMDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaCBpbiBIZWFkZXJzICovLApA
QCAtMTYxMDgsNiArMTYyMDEsMTIgQEAKIAkJCQk4NTEzNkNBODBBRUQ2NjU5MDBGOTBBM0QgLyog
d2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAogCQkJCTFBQjFBRTdBMEMwNTFG
REUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIx
QUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9vbU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICov
LAorCQkJCUZFODBEN0M3MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5pZGwgaW4gUmVz
b3VyY2VzICovLAorCQkJCUZFODBEN0NBMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5p
ZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBEN0NDMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbkNhbGxiYWNrLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3Q0UwRTlDMUYyNTAw
MEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQlGRTgwRDdE
MDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbCBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJRkU4MEQ3RDIwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5p
ZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHBy
b2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTc4NTYsNiArMTc5NTUsMTUgQEAKIAkJCQkxQzgxQkEw
MjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJMUM4MUJBMDkwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMEQwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwRDdBNzBFOUMxRUQyMDAw
RDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUZFODBEN0E5MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
ay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwRDdBQjBFOUMxRUQyMDAwRDZGNzUgLyogSlNH
ZW9sb2NhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwRDdDNTBFOUMxRjI1
MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3Qzgw
RTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZF
ODBEQTYzMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICov
LAorCQkJCUZFODBEQTY1MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJy
b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MERBNzMwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpT
UG9zaXRpb25PcHRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDM0JFOTkzMEU5QzFDN0Mw
MDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzQkU5
QTUwRTlDMjM5NjAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDM0JFOUFCMEU5QzI0MjAwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmgi
CisjaW5jbHVkZSAiQ29uc29sZS5oIgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJG
cmFtZS5oIgorI2luY2x1ZGUgIkpTR2VvcG9zaXRpb24uaCIKKyNpbmNsdWRlICJQYWdlLmgiCisj
aW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPGtqcy9KU0xvY2suaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitKU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2s6OkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayhKU09iamVjdCogY2FsbGJh
Y2ssIEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgLCBtX2Zy
YW1lKGZyYW1lKQoreworfQorCit2b2lkIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjazo6aGFuZGxl
RXZlbnQoR2VvcG9zaXRpb24qIGdlb3Bvc2l0aW9uLCBib29sJiByYWlzZWRFeGNlcHRpb24pCit7
CisgICAgQVNTRVJUKG1fY2FsbGJhY2spOworICAgIEFTU0VSVChtX2ZyYW1lKTsKKyAgICAKKyAg
ICBpZiAoIW1fZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ZyYW1lLT5zY3JpcHQo
KS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFsT2JqZWN0LT5n
bG9iYWxFeGVjKCk7CisgICAgCisgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7CisgICAgCisg
ICAgSlNWYWx1ZSogZnVuY3Rpb24gPSBtX2NhbGxiYWNrLT5nZXQoZXhlYywgSWRlbnRpZmllcihl
eGVjLCAiaGFuZGxlRXZlbnQiKSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5
cGUgY2FsbFR5cGUgPSBmdW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAgIGlmIChj
YWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgY2FsbFR5cGUgPSBtX2NhbGxiYWNr
LT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7CisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlw
ZU5vbmUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgYW4gZXhjZXB0aW9uIGJlIHRo
cm93biBoZXJlPworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZ1bmN0
aW9uID0gbV9jYWxsYmFjazsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPEpTQ3VzdG9tUG9zaXRp
b25DYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKKyAgICAKKyAgICBBcmdMaXN0IGFyZ3M7CisgICAg
YXJncy5hcHBlbmQodG9KUyhleGVjLCBnZW9wb3NpdGlvbikpOworICAgIAorICAgIGdsb2JhbE9i
amVjdC0+c3RhcnRUaW1lb3V0Q2hlY2soKTsKKyAgICBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxs
VHlwZSwgY2FsbERhdGEsIG1fY2FsbGJhY2ssIGFyZ3MpOworICAgIGdsb2JhbE9iamVjdC0+c3Rv
cFRpbWVvdXRDaGVjaygpOworICAgIAorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgewor
ICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5yZXBvcnRDdXJyZW50RXhj
ZXB0aW9uKGV4ZWMpOworICAgICAgICByYWlzZWRFeGNlcHRpb24gPSB0cnVlOworICAgIH0KK30K
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVBvc2l0aW9uQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFja19oCisjZGVmaW5lIEpTQ3VzdG9tUG9zaXRp
b25DYWxsYmFja19oCisKKyNpbmNsdWRlIDxranMvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxranMv
cHJvdGVjdC5oPgorI2luY2x1ZGUgIlBvc2l0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDx3dGYv
Rm9yd2FyZC5oPgorCituYW1lc3BhY2UgSlNDIHsKKyAgICBjbGFzcyBKU09iamVjdDsKK30KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNzIEdlb3Bvc2l0aW9uOwor
CitjbGFzcyBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUG9zaXRpb25DYWxsYmFj
ayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21Qb3NpdGlvbkNhbGxi
YWNrPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkgeyByZXR1
cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayhjYWxsYmFjaywgZnJhbWUp
KTsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChHZW9wb3NpdGlvbiosIGJv
b2wmIHJhaXNlZEV4Y2VwdGlvbik7CisKK3ByaXZhdGU6CisgICAgSlNDdXN0b21Qb3NpdGlvbkNh
bGxiYWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSopOworCisgICAgSlNDOjpQcm90
ZWN0ZWRQdHI8SlNDOjpKU09iamVjdD4gbV9jYWxsYmFjazsKKyAgICBSZWZQdHI8RnJhbWU+IG1f
ZnJhbWU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlND
dXN0b21Qb3NpdGlvbkNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgPGtqcy9KU0xv
Y2suaD4KKyNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIgorI2luY2x1
ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIK
KyNpbmNsdWRlICJKU1Bvc2l0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVk
ZSAiU2NyaXB0Q29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCit1c2lu
ZyBuYW1lc3BhY2UgSlNDOworCitKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6SlNDdXN0
b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2soSlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUp
CisgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICwgbV9mcmFtZShmcmFtZSkKK3sKK30K
Kwordm9pZCBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6aGFuZGxlRXZlbnQoUG9zaXRp
b25FcnJvciogcG9zaXRpb25FcnJvcikKK3sKKyAgICBBU1NFUlQobV9jYWxsYmFjayk7CisgICAg
QVNTRVJUKG1fZnJhbWUpOworICAgIAorICAgIGlmICghbV9mcmFtZS0+c2NyaXB0KCktPmlzRW5h
YmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCA9IG1fZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBFeGVjU3Rh
dGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICAKKyAgICBKU0M6OkpT
TG9jayBsb2NrKGZhbHNlKTsKKyAgICAKKyAgICBKU1ZhbHVlKiBmdW5jdGlvbiA9IG1fY2FsbGJh
Y2stPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICBDYWxs
RGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGZ1bmN0aW9uLT5nZXRDYWxs
RGF0YShjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgeworICAg
ICAgICBjYWxsVHlwZSA9IG1fY2FsbGJhY2stPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICAg
ICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgeworICAgICAgICAgICAgLy8gRklYTUU6
IFNob3VsZCBhbiBleGNlcHRpb24gYmUgdGhyb3duIGhlcmU/CisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gPSBtX2NhbGxiYWNrOworICAgIH0KKyAgICAK
KyAgICBSZWZQdHI8SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHByb3RlY3QodGhpcyk7
CisgICAgCisgICAgQXJnTGlzdCBhcmdzOworICAgIGFyZ3MuYXBwZW5kKHRvSlMoZXhlYywgcG9z
aXRpb25FcnJvcikpOworICAgIAorICAgIGdsb2JhbE9iamVjdC0+c3RhcnRUaW1lb3V0Q2hlY2so
KTsKKyAgICBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fY2FsbGJh
Y2ssIGFyZ3MpOworICAgIGdsb2JhbE9iamVjdC0+c3RvcFRpbWVvdXRDaGVjaygpOworICAgIAor
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgbV9mcmFtZS0+ZG9tV2luZG93
KCktPmNvbnNvbGUoKS0+cmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKK30KKyAgICAKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Q
b3NpdGlvbkVycm9yQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFja19oCisjZGVmaW5l
IEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrX2gKKworI2luY2x1ZGUgIlBvc2l0aW9uRXJy
b3JDYWxsYmFjay5oIgorI2luY2x1ZGUgPGtqcy9KU09iamVjdC5oPgorI2luY2x1ZGUgPGtqcy9w
cm90ZWN0Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNlIEpTQyB7Cisg
ICAgY2xhc3MgSlNPYmplY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNz
IEZyYW1lOworY2xhc3MgUG9zaXRpb25FcnJvcjsKKworY2xhc3MgSlNDdXN0b21Qb3NpdGlvbkVy
cm9yQ2FsbGJhY2sgOiBwdWJsaWMgUG9zaXRpb25FcnJvckNhbGxiYWNrIHsKK3B1YmxpYzoKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gY3JlYXRl
KEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVm
KG5ldyBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayhjYWxsYmFjaywgZnJhbWUpKTsgfQor
ICAgIAorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChQb3NpdGlvbkVycm9yKik7CisKK3By
aXZhdGU6CisgICAgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2soSlNDOjpKU09iamVjdCog
Y2FsbGJhY2ssIEZyYW1lKik7CisKKyAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0
PiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKK307CisgICAgCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxs
YmFja19oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShyZXZpc2lvbiAz
NzU3NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMjgwLDYgKzI4MCwxNiBAQCB2b2lkIHVwZGF0ZURPTU5vZGVEb2N1bWVudChOb2Rl
KiBub2RlLCBECiAgICAgYWRkV3JhcHBlcih3cmFwcGVyKTsKIH0KIAordm9pZCBtYXJrRE9NT2Jq
ZWN0V3JhcHBlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHZvaWQqIG9iamVjdCkKK3sKKyAg
ICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuOworICAgIERPTU9iamVjdCogd3JhcHBlciA9
IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoZ2xvYmFsRGF0YSwgb2JqZWN0KTsKKyAgICBpZiAo
IXdyYXBwZXIgfHwgd3JhcHBlci0+bWFya2VkKCkpCisgICAgICAgIHJldHVybjsKKyAgICB3cmFw
cGVyLT5tYXJrKCk7Cit9CisKIEpTVmFsdWUqIGpzU3RyaW5nT3JOdWxsKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgU3RyaW5nJiBzKQogewogICAgIGlmIChzLmlzTnVsbCgpKQpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAzNzU3NSkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDcgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogICAgIHZvaWQgdXBkYXRlRE9NTm9kZURvY3VtZW50KE5vZGUqLCBE
b2N1bWVudCogb2xkRG9jdW1lbnQsIERvY3VtZW50KiBuZXdEb2N1bWVudCk7CiAgICAgdm9pZCBt
YXJrRE9NTm9kZXNGb3JEb2N1bWVudChEb2N1bWVudCopOwogICAgIHZvaWQgbWFya0FjdGl2ZU9i
amVjdHNGb3JEb2N1bWVudChKU0M6OkpTR2xvYmFsRGF0YSYsIERvY3VtZW50Kik7CisgICAgdm9p
ZCBtYXJrRE9NT2JqZWN0V3JhcHBlcihKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9p
ZCogb2JqZWN0KTsKIAogICAgIEpTQzo6U3RydWN0dXJlSUQqIGdldENhY2hlZERPTVN0cnVjdHVy
ZShKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEpTQzo6Q2xhc3NJbmZvKik7CiAgICAgSlNDOjpTdHJ1
Y3R1cmVJRCogY2FjaGVET01TdHJ1Y3R1cmUoSlNDOjpFeGVjU3RhdGUqLCBQYXNzUmVmUHRyPEpT
Qzo6U3RydWN0dXJlSUQ+LCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDM3NTc1KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTQxLDE2ICs0MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotc3RhdGljIHZvaWQgbWFya0RPTU9iamVjdFdyYXBwZXIoSlNHbG9iYWxEYXRhJiBnbG9i
YWxEYXRhLCB2b2lkKiBvYmplY3QpCi17Ci0gICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVy
bjsKLSAgICBET01PYmplY3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKGds
b2JhbERhdGEsIG9iamVjdCk7Ci0gICAgaWYgKCF3cmFwcGVyIHx8IHdyYXBwZXItPm1hcmtlZCgp
KQotICAgICAgICByZXR1cm47Ci0gICAgd3JhcHBlci0+bWFyaygpOwotfQotCiB2b2lkIEpTRE9N
V2luZG93OjptYXJrKCkKIHsKICAgICBCYXNlOjptYXJrKCk7CkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHZW9sb2NhdGlvbi5oIgorI2luY2x1
ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJH
ZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIgorI2lu
Y2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNET01X
aW5kb3cuaCIKKyNpbmNsdWRlICJKU1Bvc2l0aW9uT3B0aW9ucy5oIgorCit1c2luZyBuYW1lc3Bh
Y2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTVmFsdWUqIEpTR2VvbG9jYXRpb246
OmdldEN1cnJlbnRQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3Mp
Cit7CisgICAgLy8gQXJndW1lbnRzOiBQb3NpdGlvbkNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRp
b25FcnJvckNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25PcHRpb25zCisgICAgUmVmUHRyPFBv
c2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2s7CisgICAgSlNPYmplY3QqIG9iamVjdCA9
IGFyZ3MuYXQoZXhlYywgMCktPmdldE9iamVjdCgpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKCFvYmplY3QpIHsK
KyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9
IHRvSlNET01XaW5kb3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFt
ZSgpKQorICAgICAgICBwb3NpdGlvbkNhbGxiYWNrID0gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNr
OjpjcmVhdGUob2JqZWN0LCBmcmFtZSk7CisgICAgCisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JD
YWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxiYWNrOworICAgIGlmICghYXJncy5hdChleGVjLCAx
KS0+aXNVbmRlZmluZWRPck51bGwoKSkgeworICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXJn
cy5hdChleGVjLCAxKS0+Z2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAg
ICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gdG9KU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5p
bXBsKCktPmZyYW1lKCkpCisgICAgICAgICAgICBwb3NpdGlvbkVycm9yQ2FsbGJhY2sgPSBKU0N1
c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZnJhbWUpOworICAgIH0K
KyAgICAKKyAgICBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBwb3NpdGlvbk9wdGlvbnM7CisgICAg
aWYgKCFhcmdzLmF0KGV4ZWMsIDIpLT5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICBwb3Np
dGlvbk9wdGlvbnMgPSB0b1Bvc2l0aW9uT3B0aW9ucyhhcmdzLmF0KGV4ZWMsIDIpKTsKKyAgICAK
KyAgICBtX2ltcGwtPmdldEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2Uo
KSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLmdldCgp
KTsKKyAgICAKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSogSlNHZW9s
b2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCit7CisgICAgLy8gQXJndW1lbnRzOiBQb3NpdGlvbkNhbGxiYWNrLCAob3B0aW9uYWwpUG9z
aXRpb25FcnJvckNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25PcHRpb25zCisgICAgUmVmUHRy
PFBvc2l0aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2s7CisgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFyZ3MuYXQoZXhlYywgMCktPmdldE9iamVjdCgpOworICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKCFvYmplY3Qp
IHsKKyAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgfQorICAgIAorICAgIGlmIChGcmFtZSog
ZnJhbWUgPSB0b0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwo
KS0+ZnJhbWUoKSkKKyAgICAgICAgcG9zaXRpb25DYWxsYmFjayA9IEpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZnJhbWUpOworICAgIAorICAgIFJlZlB0cjxQb3NpdGlv
bkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjazsKKyAgICBpZiAoIWFyZ3MuYXQo
ZXhlYywgMSktPmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFyZ3MuYXQoZXhlYywgMSktPmdldE9iamVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkg
eworICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsK
KyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9KU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCkpCisgICAgICAgICAgICBwb3NpdGlvbkVycm9y
Q2FsbGJhY2sgPSBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwg
ZnJhbWUpOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBwb3NpdGlv
bk9wdGlvbnM7CisgICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDIpLT5pc1VuZGVmaW5lZE9yTnVsbCgp
KQorICAgICAgICBwb3NpdGlvbk9wdGlvbnMgPSB0b1Bvc2l0aW9uT3B0aW9ucyhhcmdzLmF0KGV4
ZWMsIDIpKTsKKyAgICAKKyAgICBpbnQgdyA9IG1faW1wbC0+d2F0Y2hQb3NpdGlvbihwb3NpdGlv
bkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9z
aXRpb25PcHRpb25zLmdldCgpKTsKKyAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgdyk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZp
Z2F0b3JDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZp
Z2F0b3JDdXN0b20uY3BwCShyZXZpc2lvbiAzNzU3NSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNOYXZpZ2F0b3JDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNCArMTEzLDEzIEBA
IEpTVmFsdWUqIEpTTmF2aWdhdG9yOjphcHBWZXJzaW9uKEV4ZWNTdGEKICAgICByZXR1cm4ganNT
dHJpbmcoZXhlYywgaW1wLT5hcHBWZXJzaW9uKCkpOwogfQogCit2b2lkIEpTTmF2aWdhdG9yOjpt
YXJrKCkKK3sKKyAgICBCYXNlOjptYXJrKCk7CisKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERh
dGEgPSAqSGVhcDo6aGVhcCh0aGlzKS0+Z2xvYmFsRGF0YSgpOworCisgICAgbWFya0RPTU9iamVj
dFdyYXBwZXIoZ2xvYmFsRGF0YSwgaW1wbCgpLT5vcHRpb25hbEdlb2xvY2F0aW9uKCkpOworfQor
CiB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE3NCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yLmgiCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3Rp
ZmllcihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1Jl
ZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9u
cyogb3B0aW9ucykKKyAgICA6IG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKKyAg
ICAsIG1fZXJyb3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQorICAgICwgbV90aW1lcih0aGlzLCAm
R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjp0aW1lckZpcmVkKQoreworICAgIGlmIChtX2Vycm9y
Q2FsbGJhY2sgJiYgb3B0aW9ucyAmJiBvcHRpb25zLT50aW1lb3V0KCkgIT0gLTEpCisgICAgICAg
IG1fdGltZXIuc3RhcnRPbmVTaG90KG9wdGlvbnMtPnRpbWVvdXQoKSAvIDEwMDAuMCk7Cit9CisK
K3ZvaWQgR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjp0aW1lckZpcmVkKFRpbWVyPEdlb05vdGlm
aWVyPiogdGltZXIpCit7CisgICAgQVNTRVJUKG1fZXJyb3JDYWxsYmFjayk7CisgICAgCisgICAg
bV90aW1lci5zdG9wKCk7CisKKyAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gZXJyb3IgPSBuZXcg
UG9zaXRpb25FcnJvcig0LCAiVGltZWQgb3V0Iik7CisgICAgbV9lcnJvckNhbGxiYWNrLT5oYW5k
bGVFdmVudChlcnJvci5nZXQoKSk7Cit9CisKK0dlb2xvY2F0aW9uOjpHZW9sb2NhdGlvbihGcmFt
ZSogZnJhbWUpCisgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9zZXJ2aWNlKEdlb2xvY2F0
aW9uU2VydmljZTo6Y3JlYXRlKHRoaXMpKQoreworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpkaXNj
b25uZWN0RnJhbWUoKQoreworICAgIG1fZnJhbWUgPSAwOworfQorCit2b2lkIEdlb2xvY2F0aW9u
OjpnZXRDdXJyZW50UG9zaXRpb24oUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNz
Q2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNr
LCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCit7CisgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBu
b3RpZmllciA9IG5ldyBHZW9Ob3RpZmllcihzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ss
IG9wdGlvbnMpOworCisgICAgaWYgKCFtX3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmcob3B0aW9ucykp
IHsKKyAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spIHsKKyAgICAgICAgICAg
IFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IG5ldyBQb3NpdGlvbkVycm9yKDEsICJVbmFi
bGUgdG8gU3RhcnQiKTsKKyAgICAgICAgICAgIG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2stPmhh
bmRsZUV2ZW50KGVycm9yLmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV9vbmVTaG90cy5hZGQobm90aWZpZXIpOworfQorCitpbnQgR2VvbG9jYXRpb246
OndhdGNoUG9zaXRpb24oUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJh
Y2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3Np
dGlvbk9wdGlvbnMqIG9wdGlvbnMpCit7CisgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmll
ciA9IG5ldyBHZW9Ob3RpZmllcihzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIG9wdGlv
bnMpOworCisgICAgaWYgKCFtX3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmcob3B0aW9ucykpIHsKKyAg
ICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIFJlZlB0
cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IG5ldyBQb3NpdGlvbkVycm9yKDEsICJVbmFibGUgdG8g
U3RhcnQiKTsKKyAgICAgICAgICAgIG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2
ZW50KGVycm9yLmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9Cisg
ICAgCisgICAgc3RhdGljIGludCBzSWRlbnRpZmllciA9IDA7CisgICAgCisgICAgbV93YXRjaGVy
cy5zZXQoKytzSWRlbnRpZmllciwgbm90aWZpZXIpOworCisgICAgcmV0dXJuIHNJZGVudGlmaWVy
OworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpjbGVhcldhdGNoKGludCB3YXRjaElkKQoreworICAg
IFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBtX3dhdGNoZXJzLmdldCh3YXRjaElkKTsK
KyAgICBpZiAobm90aWZpZXIpCisgICAgICAgIG1fd2F0Y2hlcnMucmVtb3ZlKHdhdGNoSWQpOwor
ICAgIAorICAgIHN0b3BVcGRhdGluZ0lmRW1wdHkoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6
c3RvcFVwZGF0aW5nSWZFbXB0eSgpCit7CisgICAgaWYgKG1fd2F0Y2hlcnMuaXNFbXB0eSgpICYm
IG1fb25lU2hvdHMuaXNFbXB0eSgpKQorICAgICAgICBtX3NlcnZpY2UtPnN0b3BVcGRhdGluZygp
OworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpoYW5kbGVFcnJvcihQb3NpdGlvbkVycm9yKiBlcnJv
cikKK3sKKyAgICBHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3Igb25lU2hvdHNFbmQgPSBt
X29uZVNob3RzLmVuZCgpOworICAgIGZvciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gbV9vbmVTaG90cy5iZWdpbigpOyBpdCAhPSBvbmVTaG90c0VuZDsgKytpdCkgeworICAg
ICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKml0OworICAgICAgICAKKyAgICAg
ICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spCisgICAgICAgICAgICBub3RpZmllci0+
bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvcik7CisgICAgfQorICAgIG1fb25lU2hv
dHMuY2xlYXIoKTsKKyAgICAKKyAgICBHZW9Ob3RpZmllck1hcDo6Y29uc3RfaXRlcmF0b3Igd2F0
Y2hlcnNFbmQgPSBtX3dhdGNoZXJzLmVuZCgpOworICAgIGZvciAoR2VvTm90aWZpZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV93YXRjaGVycy5iZWdpbigpOyBpdCAhPSB3YXRjaGVyc0VuZDsg
KytpdCkgeworICAgICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKCppdCkuc2Vj
b25kOworICAgICAgICAKKyAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spCisg
ICAgICAgICAgICBub3RpZmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvcik7
CisgICAgfQorfQorCit2b2lkIEdlb2xvY2F0aW9uOjpnZW9sb2NhdGlvblNlcnZpY2VQb3NpdGlv
bkNoYW5nZWQoR2VvbG9jYXRpb25TZXJ2aWNlKiBzZXJ2aWNlKQoreworICAgIEFTU0VSVChzZXJ2
aWNlLT5sYXN0UG9zaXRpb24oKSk7CisgICAgCisgICAgYm9vbCBzaG91bGRDYWxsRXJyb3JDYWxs
YmFjayA9IGZhbHNlOworICAgIEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBvbmVTaG90
c0VuZCA9IG1fb25lU2hvdHMuZW5kKCk7CisgICAgZm9yIChHZW9Ob3RpZmllclNldDo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBtX29uZVNob3RzLmJlZ2luKCk7IGl0ICE9IG9uZVNob3RzRW5kOyArK2l0
KSB7CisgICAgICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSAqaXQ7CisgICAgICAg
IEFTU0VSVChub3RpZmllci0+bV9zdWNjZXNzQ2FsbGJhY2spOworICAgICAgICAKKyAgICAgICAg
bm90aWZpZXItPm1fdGltZXIuc3RvcCgpOworICAgICAgICBub3RpZmllci0+bV9zdWNjZXNzQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KHNlcnZpY2UtPmxhc3RQb3NpdGlvbigpLCBzaG91bGRDYWxsRXJy
b3JDYWxsYmFjayk7CisgICAgICAgIGlmIChzaG91bGRDYWxsRXJyb3JDYWxsYmFjaykgeworICAg
ICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gbmV3IFBvc2l0aW9uRXJyb3Io
NSwgIkphdmFTY3JpcHQgRXJyb3IiKTsKKyAgICAgICAgICAgIGhhbmRsZUVycm9yKGVycm9yLmdl
dCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBH
ZW9Ob3RpZmllck1hcDo6Y29uc3RfaXRlcmF0b3Igd2F0Y2hlcnNFbmQgPSBtX3dhdGNoZXJzLmVu
ZCgpOworICAgIGZvciAoR2VvTm90aWZpZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV93YXRj
aGVycy5iZWdpbigpOyBpdCAhPSB3YXRjaGVyc0VuZDsgKytpdCkgeworICAgICAgICBSZWZQdHI8
R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKCppdCkuc2Vjb25kOworICAgICAgICBBU1NFUlQobm90
aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgCisgICAgICAgIG5vdGlmaWVyLT5t
X3RpbWVyLnN0b3AoKTsKKyAgICAgICAgbm90aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5k
bGVFdmVudChzZXJ2aWNlLT5sYXN0UG9zaXRpb24oKSwgc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2sp
OworICAgICAgICBpZiAoc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIFJl
ZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IG5ldyBQb3NpdGlvbkVycm9yKDUsICJKYXZhU2Ny
aXB0IEVycm9yIik7CisgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnJvci5nZXQoKSk7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgbV9vbmVTaG90cy5j
bGVhcigpOworICAgIHN0b3BVcGRhdGluZ0lmRW1wdHkoKTsKK30KKwordm9pZCBHZW9sb2NhdGlv
bjo6Z2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZChHZW9sb2NhdGlvblNlcnZpY2UqIHNl
cnZpY2UpCit7CisgICAgQVNTRVJUKHNlcnZpY2UtPmxhc3RFcnJvcigpKTsKKyAgICBoYW5kbGVF
cnJvcihzZXJ2aWNlLT5sYXN0RXJyb3IoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9HZW9sb2NhdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBHZW9sb2NhdGlvbl9oCisjZGVmaW5l
IEdlb2xvY2F0aW9uX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3du
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKworI2luY2x1ZGUgIkdlb2xvY2F0aW9u
U2VydmljZS5oIgorI2luY2x1ZGUgIlBvc2l0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJQb3Np
dGlvbkVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJQb3NpdGlvbk9wdGlvbnMuaCIKKyNpbmNs
dWRlICJUaW1lci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xh
c3MgR2VvcG9zaXRpb247CisKK2NsYXNzIEdlb2xvY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8
R2VvbG9jYXRpb24+LCBwdWJsaWMgR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50IHsKK3B1YmxpYzoK
KyAgICBHZW9sb2NhdGlvbihGcmFtZSopOworICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9uKCkge30K
KworICAgIHZvaWQgZGlzY29ubmVjdEZyYW1lKCk7CisgICAgCisgICAgR2VvcG9zaXRpb24qIGxh
c3RQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2VydmljZS0+bGFzdFBvc2l0aW9uKCk7IH0K
KworICAgIHZvaWQgZ2V0Q3VycmVudFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFj
az4sIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiwgUG9zaXRpb25PcHRpb25zKik7
CisgICAgaW50IHdhdGNoUG9zaXRpb24oUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFz
c1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+LCBQb3NpdGlvbk9wdGlvbnMqKTsKKyAgICB2
b2lkIGNsZWFyV2F0Y2goaW50IHdhdGNoSWQpOworCitwcml2YXRlOgorICAgIGNsYXNzIEdlb05v
dGlmaWVyIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvTm90aWZpZXI+IHsKKyAgICBwdWJsaWM6Cisg
ICAgICAgIEdlb05vdGlmaWVyKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiwgUG9zaXRpb25PcHRpb25zKik7CisgICAgICAgIAor
ICAgICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8R2VvTm90aWZpZXI+Kik7CisgICAgICAgIAor
ICAgICAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAg
ICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKKyAgICAg
ICAgVGltZXI8R2VvTm90aWZpZXI+IG1fdGltZXI7CisgICAgfTsKKyAgICAKKyAgICB2b2lkIHN0
b3BVcGRhdGluZ0lmRW1wdHkoKTsKKyAgICB2b2lkIGhhbmRsZUVycm9yKFBvc2l0aW9uRXJyb3Iq
KTsKKworICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvblNlcnZpY2VQb3NpdGlvbkNoYW5nZWQo
R2VvbG9jYXRpb25TZXJ2aWNlKik7CisgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uU2Vydmlj
ZUVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25TZXJ2aWNlKik7CisgICAgICAgICAgICAKKyAgICB0
eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPEdlb05vdGlmaWVyPiA+IEdlb05vdGlmaWVyU2V0OworICAg
IHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0cjxHZW9Ob3RpZmllcj4gPiBHZW9Ob3RpZmllck1h
cDsKKyAgICAKKyAgICBHZW9Ob3RpZmllclNldCBtX29uZVNob3RzOworICAgIEdlb05vdGlmaWVy
TWFwIG1fd2F0Y2hlcnM7CisgICAgRnJhbWUqIG1fZnJhbWU7CisgICAgT3duUHRyPEdlb2xvY2F0
aW9uU2VydmljZT4gbV9zZXJ2aWNlOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
KworI2VuZGlmIC8vIEdlb2xvY2F0aW9uX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlv
bi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmlkbAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5pZGwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25z
dHJ1Y3RvcgorICAgIF0gR2VvbG9jYXRpb24geworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
R2VvcG9zaXRpb24gbGFzdFBvc2l0aW9uOworCisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0Q3Vy
cmVudFBvc2l0aW9uKGluIFBvc2l0aW9uQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBQb3Np
dGlvbkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaywgaW4gUG9zaXRpb25PcHRpb25zIG9wdGlv
bnMpOworCisgICAgICAgIFtDdXN0b21dIGxvbmcgd2F0Y2hQb3NpdGlvbihpbiBQb3NpdGlvbkNh
bGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gUG9zaXRpb25FcnJvckNhbGxiYWNrIGVycm9yQ2Fs
bGJhY2ssIGluIFBvc2l0aW9uT3B0aW9ucyBvcHRpb25zKTsKKworICAgICAgICB2b2lkIGNsZWFy
V2F0Y2goaW4gbG9uZyB3YXRjaElkKTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL3BhZ2Uv
R2VvcG9zaXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5j
cHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uY3BwCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW9wb3NpdGlvbi5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1N0cmluZyBHZW9wb3NpdGlvbjo6dG9TdHJpbmco
KSBjb25zdAoreworICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgicG9zaXRpb24oJS42bGcsICUu
NmxnLCAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLjZsZyAlLmxsZCkiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9hbHRpdHVkZSwgbV9hY2N1
cmFjeSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYWx0aXR1ZGVBY2N1cmFjeSwgbV9o
ZWFkaW5nLCBtX3ZlbG9jaXR5LCBtX3RpbWVzdGFtcCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL0dl
b3Bvc2l0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBHZW9wb3NpdGlvbl9oCisj
ZGVmaW5lIEdlb3Bvc2l0aW9uX2gKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CisKK2NsYXNzIEdlb3Bvc2l0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvcG9z
aXRpb24+IHsKK3B1YmxpYzoKKyAgICBHZW9wb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJs
ZSBsb25naXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBkb3VibGUgYWx0
aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGhlYWRpbmcsIGRvdWJsZSB2ZWxvY2l0eSwgRE9NVGltZVN0
YW1wIHRpbWVzdGFtcCkKKyAgICAgICAgOiBtX2xhdGl0dWRlKGxhdGl0dWRlKQorICAgICAgICAs
IG1fbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQor
ICAgICAgICAsIG1fYWNjdXJhY3koYWNjdXJhY3kpCisgICAgICAgICwgbV9hbHRpdHVkZUFjY3Vy
YWN5KGFsdGl0dWRlQWNjdXJhY3kpCisgICAgICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCisgICAg
ICAgICwgbV92ZWxvY2l0eSh2ZWxvY2l0eSkKKyAgICAgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3Rh
bXApCisgICAgeworICAgIH0KKyAgICAKKyAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJl
dHVybiBtX2xhdGl0dWRlOyB9CisgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9uZ2l0dWRlOyB9CisgICAgZG91YmxlIGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9h
bHRpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJh
Y3k7IH0KKyAgICBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0
aXR1ZGVBY2N1cmFjeTsgfQorICAgIGRvdWJsZSBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9o
ZWFkaW5nOyB9CisgICAgZG91YmxlIHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0
eTsgfQorICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVz
dGFtcDsgfQorCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
ZG91YmxlIG1fbGF0aXR1ZGU7CisgICAgZG91YmxlIG1fbG9uZ2l0dWRlOworICAgIGRvdWJsZSBt
X2FsdGl0dWRlOworICAgIGRvdWJsZSBtX2FjY3VyYWN5OworICAgIGRvdWJsZSBtX2FsdGl0dWRl
QWNjdXJhY3k7CisgICAgZG91YmxlIG1faGVhZGluZzsKKyAgICBkb3VibGUgbV92ZWxvY2l0eTsK
KyAgICBET01UaW1lU3RhbXAgbV90aW1lc3RhbXA7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gR2VvcG9zaXRpb25faApJbmRleDogV2ViQ29yZS9wYWdlL0dl
b3Bvc2l0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaWRs
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmlkbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5l
cmF0ZUNvbnN0cnVjdG9yCisgICAgXSBHZW9wb3NpdGlvbiB7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBkb3VibGUgbGF0aXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3Vi
bGUgbG9uZ2l0dWRlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGFsdGl0dWRl
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGFjY3VyYWN5OworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3k7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBkb3VibGUgaGVhZGluZworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
ZG91YmxlIHZlbG9jaXR5CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01UaW1lU3RhbXAg
dGltZXN0YW1wOworCisgICAgICAgIFtEb250RW51bV0gRE9NU3RyaW5nIHRvU3RyaW5nKCk7Cisg
ICAgfTsKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiAzNzU3NSkKKysrIFdlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJMYW5n
dWFnZS5oIgogI2luY2x1ZGUgIk1pbWVUeXBlQXJyYXkuaCIKICNpbmNsdWRlICJOZXR3b3JrU3Rh
dGVOb3RpZmllci5oIgpAQCAtODcsNiArODgsMTAgQEAgdm9pZCBOYXZpZ2F0b3I6OmRpc2Nvbm5l
Y3RGcmFtZSgpCiAgICAgICAgIG1fbWltZVR5cGVzLT5kaXNjb25uZWN0RnJhbWUoKTsKICAgICAg
ICAgbV9taW1lVHlwZXMgPSAwOwogICAgIH0KKyAgICBpZiAobV9nZW9sb2NhdGlvbikgeworICAg
ICAgICBtX2dlb2xvY2F0aW9uLT5kaXNjb25uZWN0RnJhbWUoKTsKKyAgICAgICAgbV9nZW9sb2Nh
dGlvbiA9IDA7CisgICAgfQogICAgIG1fZnJhbWUgPSAwOwogfQogCkBAIC0xOTcsNCArMjAyLDE4
IEBAIGJvb2wgTmF2aWdhdG9yOjpvbkxpbmUoKSBjb25zdAogICAgIHJldHVybiBuZXR3b3JrU3Rh
dGVOb3RpZmllcigpLm9uTGluZSgpOwogfQogCitHZW9sb2NhdGlvbiogTmF2aWdhdG9yOjpnZW9s
b2NhdGlvbigpIGNvbnN0Cit7CisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQorICAgIGlmIChHZW9s
b2NhdGlvblNlcnZpY2U6OmlzQXZhaWxhYmxlKCkpIHsKKyAgICAgICAgaWYgKCFtX2dlb2xvY2F0
aW9uKQorICAgICAgICAgICAgbV9nZW9sb2NhdGlvbiA9IG5ldyBHZW9sb2NhdGlvbihtX2ZyYW1l
KTsKKyAgICAgICAgcmV0dXJuIG1fZ2VvbG9jYXRpb24uZ2V0KCk7CisgICAgfSBlbHNlCisgICAg
ICAgIHJldHVybiAwOworI2Vsc2UKKyAgICByZXR1cm4gMDsKKyNlbmRpZgorfQorICAgIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkocmV2aXNpb24gMzc1NzUpCisrKyBX
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEZyYW1lOworICAgIGNsYXNzIEdlb2xv
Y2F0aW9uOwogICAgIGNsYXNzIE1pbWVUeXBlQXJyYXk7CiAgICAgY2xhc3MgUGx1Z2luRGF0YTsK
ICAgICBjbGFzcyBQbHVnaW5BcnJheTsKQEAgLTU2LDExICs1NywxNSBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIGJvb2wgamF2YUVuYWJsZWQoKSBjb25zdDsKIAogICAgICAgICBib29s
IG9uTGluZSgpIGNvbnN0OworICAgICAgICBHZW9sb2NhdGlvbiogZ2VvbG9jYXRpb24oKSBjb25z
dDsKKyAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBHQyBtYXJraW5nLgorICAgICAgICBHZW9s
b2NhdGlvbiogb3B0aW9uYWxHZW9sb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRp
b24uZ2V0KCk7IH0KICAgICBwcml2YXRlOgogICAgICAgICBOYXZpZ2F0b3IoRnJhbWUqKTsKICAg
ICAgICAgRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPFBsdWdpbkFycmF5
PiBtX3BsdWdpbnM7CiAgICAgICAgIG11dGFibGUgUmVmUHRyPE1pbWVUeXBlQXJyYXk+IG1fbWlt
ZVR5cGVzOworICAgICAgICBtdXRhYmxlIFJlZlB0cjxHZW9sb2NhdGlvbj4gbV9nZW9sb2NhdGlv
bjsKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAkocmV2aXNpb24gMzc1NzUpCisrKyBX
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTksNyArMTksOSBA
QAogCiBtb2R1bGUgd2luZG93IHsKIAotICAgIGludGVyZmFjZSBOYXZpZ2F0b3IgeworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbgorICAgIF0gTmF2aWdhdG9yIHsK
ICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBhcHBDb2RlTmFtZTsKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBhcHBOYW1lOwogICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgW0N1c3RvbUdldHRlcl0gRE9NU3RyaW5nIGFwcFZlcnNpb247CkBAIC0zNiw2
ICszOCw3IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBib29sZWFuIGphdmFFbmFibGVkKCk7
CiAgICAgICAgIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBvbkxpbmU7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBHZW9sb2NhdGlvbiBnZW9sb2NhdGlvbjsKICAgICB9
OwogCiB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
UG9zaXRpb25DYWxsYmFja19oCisjZGVmaW5lIFBvc2l0aW9uQ2FsbGJhY2tfaAorCisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworICAgIAorICAgIGNsYXNzIEdlb3Bvc2l0aW9uOworICAgIAorICAgIGNs
YXNzIFBvc2l0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3NpdGlvbkNhbGxiYWNr
PiB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5Qb3NpdGlvbkNhbGxiYWNrKCkgeyB9
CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChHZW9wb3NpdGlvbiogcG9zaXRpb24s
IGJvb2wmIHJhaXNlZEV4Y2VwdGlvbikgPSAwOworICAgIH07CisgICAgCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3NpdGlvbkNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUv
cGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9z
aXRpb25DYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25D
YWxsYmFjay5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50
ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gUG9zaXRpb25DYWxs
YmFjayB7CisgICAgICAgIHZvaWQgaGFuZGxlRXZlbnQoaW4gR2VvcG9zaXRpb24gcG9zaXRpb24p
OworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaAkocmV2aXNpb24gMCkKKysrIFdl
YkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQ
b3NpdGlvbkVycm9yX2gKKyNkZWZpbmUgUG9zaXRpb25FcnJvcl9oCisKKyNpbmNsdWRlICJQbGF0
Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFBvc2l0aW9u
RXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3NpdGlvbkVycm9yPiB7CitwdWJsaWM6CisgICAg
UG9zaXRpb25FcnJvcihpbnQgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSAKKyAgICAgICAg
OiBtX2NvZGUoY29kZSkKKyAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKKyAgICB7CisgICAg
fQorICAgIAorICAgIGludCBjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9jb2RlOyB9CisgICAgdm9p
ZCBzZXRDb2RlKGludCBjb2RlKSB7IG1fY29kZSA9IGNvZGU7IH0KKyAgICBjb25zdCBTdHJpbmcm
IG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KKyAgICB2b2lkIHNldE1lc3Nh
Z2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7IG1fbWVzc2FnZSA9IG1lc3NhZ2U7IH0KKyAgICAK
K3ByaXZhdGU6CisgICAgaW50IG1fY29kZTsKKyAgICBTdHJpbmcgbV9tZXNzYWdlOworfTsKKyAg
ICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBvc2l0aW9uRXJyb3JfaApJ
bmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9Qb3NpdGlvbkVycm9yLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Q
b3NpdGlvbkVycm9yLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgY29yZSB7CisKKyAg
ICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBQb3NpdGlv
bkVycm9yIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgY29kZTsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBtZXNzYWdlOworICAgIH07CisKK30KSW5kZXg6
IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRl
ZiBQb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAorI2RlZmluZSBQb3NpdGlvbkVycm9yQ2FsbGJhY2tf
aAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgUG9zaXRpb25FcnJvcjsKKwor
ICAgIGNsYXNzIFBvc2l0aW9uRXJyb3JDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFBvc2l0
aW9uRXJyb3JDYWxsYmFjaz4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+UG9zaXRp
b25FcnJvckNhbGxiYWNrKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChQ
b3NpdGlvbkVycm9yKiBwb3NpdGlvbikgPSAwOworICAgIH07CisgICAgCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3NpdGlvbkVycm9yQ2FsbGJhY2tfaApJbmRleDogV2Vi
Q29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1
bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9y
CisgICAgXSBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgeworICAgICAgICB2b2lkIGhhbmRsZUV2ZW50
KGluIFBvc2l0aW9uRXJyb3IgZXJyb3IpOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGFn
ZS9Qb3NpdGlvbk9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25P
cHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQb3NpdGlvbk9wdGlvbnNfaAorI2RlZmluZSBQ
b3NpdGlvbk9wdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorICAgIGNsYXNz
IFBvc2l0aW9uT3B0aW9ucyA6IHB1YmxpYyBSZWZDb3VudGVkPFBvc2l0aW9uT3B0aW9ucz4gewor
ICAgIHB1YmxpYzoKKyAgICAgICAgUG9zaXRpb25PcHRpb25zKGJvb2wgaGlnaEFjY3VyYWN5ID0g
ZmFsc2UsIGxvbmcgdGltZW91dCA9IC0xKQorICAgICAgICAgICAgOiBtX2hpZ2hBY2N1cmFjeSho
aWdoQWNjdXJhY3kpCisgICAgICAgICAgICAsIG1fdGltZW91dCh0aW1lb3V0KQorICAgICAgICB7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KCkg
Y29uc3QgeyByZXR1cm4gbV9oaWdoQWNjdXJhY3k7IH0KKyAgICAgICAgdm9pZCBzZXRFbmFibGVI
aWdoQWNjdXJhY3koYm9vbCBlbmFibGUpIHsgbV9oaWdoQWNjdXJhY3kgPSBlbmFibGU7IH0KKyAg
ICAgICAgbG9uZyB0aW1lb3V0KCkgY29uc3QgeyByZXR1cm4gbV90aW1lb3V0OyB9CisgICAgICAg
IHZvaWQgc2V0VGltZW91dChsb25nIHQpIHsgbV90aW1lb3V0ID0gdDsgfQorICAgICAgICAKKyAg
ICBwcml2YXRlOgorICAgICAgICBib29sIG1faGlnaEFjY3VyYWN5OworICAgICAgICBsb25nIG1f
dGltZW91dDsKKyAgICB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gUG9zaXRpb25PcHRpb25zX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMu
aWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaWRsCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5pZGwJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJh
dGVDb25zdHJ1Y3RvcgorICAgIF0gUG9zaXRpb25PcHRpb25zIHsKKyAgICAgICAgYXR0cmlidXRl
IGJvb2xlYW4gZW5hYmxlSGlnaEFjY3VyYWN5OworICAgICAgICBhdHRyaWJ1dGUgbG9uZyB0aW1l
b3V0OworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2
aWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0dlb2xvY2F0aW9uU2Vydmlj
ZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL0dlb2xvY2F0aW9uU2Vydmlj
ZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVk
ZSAiR2VvbG9jYXRpb25TZXJ2aWNlLmgiCisjaW5jbHVkZSAiR2VvcG9zaXRpb24uaCIKKyNpbmNs
dWRlICJQb3NpdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiUG9zaXRpb25PcHRpb25zLmgiCisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25TZXJ2aWNlOjpHZW9sb2NhdGlvblNlcnZp
Y2UoR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KiBjbGllbnQpCisgICAgOiBtX2dlb2xvY2F0aW9u
U2VydmljZUNsaWVudChjbGllbnQpCit7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlOjpw
b3NpdGlvbkNoYW5nZWQoKQoreworICAgIGlmIChtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudCkK
KyAgICAgICAgbV9nZW9sb2NhdGlvblNlcnZpY2VDbGllbnQtPmdlb2xvY2F0aW9uU2VydmljZVBv
c2l0aW9uQ2hhbmdlZCh0aGlzKTsKK30KKwordm9pZCBHZW9sb2NhdGlvblNlcnZpY2U6OmVycm9y
T2NjdXJyZWQoKQoreworICAgIGlmIChtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudCkKKyAgICAg
ICAgbV9nZW9sb2NhdGlvblNlcnZpY2VDbGllbnQtPmdlb2xvY2F0aW9uU2VydmljZUVycm9yT2Nj
dXJyZWQodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUv
cGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0
Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZv
cm0vR2VvbG9jYXRpb25TZXJ2aWNlLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBHZW9s
b2NhdGlvblNlcnZpY2VfaAorI2RlZmluZSBHZW9sb2NhdGlvblNlcnZpY2VfaAorCisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2Vv
bG9jYXRpb25TZXJ2aWNlOworY2xhc3MgR2VvcG9zaXRpb247CitjbGFzcyBQb3NpdGlvbkVycm9y
OworY2xhc3MgUG9zaXRpb25PcHRpb25zOworCitjbGFzcyBHZW9sb2NhdGlvblNlcnZpY2VDbGll
bnQKK3sKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvblNlcnZpY2VDbGllbnQoKSB7
IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKEdl
b2xvY2F0aW9uU2VydmljZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvblNlcnZp
Y2VFcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uU2VydmljZSopIHsgfQorfTsKKworY2xhc3MgR2Vv
bG9jYXRpb25TZXJ2aWNlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgR2VvbG9jYXRpb25TZXJ2aWNlKiBjcmVhdGUoR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50Kik7
CisgICAgdmlydHVhbCB+R2VvbG9jYXRpb25TZXJ2aWNlKCkge30KKyAgICAKKyAgICBzdGF0aWMg
Ym9vbCBpc0F2YWlsYWJsZSgpOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBzdGFydFVwZGF0aW5n
KFBvc2l0aW9uT3B0aW9ucyopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkg
PSAwOworICAgIAorICAgIHZpcnR1YWwgR2VvcG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIGNvbnN0
ID0gMDsKKyAgICB2aXJ0dWFsIFBvc2l0aW9uRXJyb3IqIGxhc3RFcnJvcigpIGNvbnN0ID0gMDsK
KworICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKCk7CisgICAgdm9pZCBlcnJvck9jY3VycmVkKCk7
CisKK3Byb3RlY3RlZDoKKyAgICBHZW9sb2NhdGlvblNlcnZpY2UoR2VvbG9jYXRpb25TZXJ2aWNl
Q2xpZW50Kik7CisKK3ByaXZhdGU6CisgICAgR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KiBtX2dl
b2xvY2F0aW9uU2VydmljZUNsaWVudDsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZiAvLyBHZW9sb2NhdGlvblNlcnZpY2VfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24350</attachid>
            <date>2008-10-14 16:12:14 -0700</date>
            <delta_ts>2008-10-15 13:11:44 -0700</delta_ts>
            <desc>Forgot to add GeolocationService to all build projects</desc>
            <filename>GeoLocation-WebKit.org.patch.txt</filename>
            <type>text/plain</type>
            <size>96559</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3NTk1KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOSBAQAorMjAwOC0xMC0xNCAgR3JlZyBCb2xz
aW5nYSAgPGJvbHNpbmdhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIHd0Zi9QbGF0Zm9ybS5oOgorCiAyMDA4LTEwLTE0ICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBE
YXJpbiBBZGxlci4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCShyZXZpc2lvbiAzNzU5NCkKKysr
IEphdmFTY3JpcHRDb3JlL3d0Zi9QbGF0Zm9ybS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNDMsNiAr
MzQzLDEwIEBACiAjZGVmaW5lIEVOQUJMRV9TQU1QTElOR19UT09MIDAKICNlbmRpZgogCisjaWYg
IWRlZmluZWQoRU5BQkxFX0dFT0xPQ0FUSU9OKQorI2RlZmluZSBFTkFCTEVfR0VPTE9DQVRJT04g
MAorI2VuZGlmCisKIC8vIENUSSBvbmx5IHN1cHBvcnRzIHg4NiBhdCB0aGUgbW9tZW50LCBhbmQg
aGFzIG9ubHkgYmVlbiB0ZXN0ZWQgb24gTWFjIGFuZCBXaW5kb3dzLgogI2lmICFkZWZpbmVkKEVO
QUJMRV9DVEkpICYmIFBMQVRGT1JNKFg4NikgJiYgKFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0o
V0lOKSkKICNkZWZpbmUgRU5BQkxFX0NUSSAxCkluZGV4OiBXZWJDb3JlL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMzc1OTUpCisrKyBXZWJDb3Jl
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDk5IEBACisyMDA4LTEwLTE0ICBH
cmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdBUk5JTkc6IE5PIFRFU1QgQ0FTRVMgQURERUQg
T1IgQ0hBTkdFRAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5hbToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBXZWJDb3Jl
LnZjcHJvai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOgorICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVF
dmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmg6
IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxs
YmFjazo6SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBi
aW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpt
YXJrRE9NT2JqZWN0V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5n
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU05hdmlnYXRv
cjo6bWFyayk6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbi5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcik6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnRpbWVyRmlyZWQpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvbjo6d2F0Y2hQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Y2xl
YXJXYXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c3RvcFVwZGF0aW5nSWZF
bXB0eSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6aGFuZGxlRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Omdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9uQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNl
RXJyb3JPY2N1cnJlZCk6CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjp+R2VvbG9jYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246Omxhc3RQb3NpdGlvbik6CisgICAgICAgICogcGFnZS9HZW9sb2Nh
dGlvbi5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvR2VvcG9zaXRpb24uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjp0b1N0cmluZyk6CisgICAgICAgICogcGFn
ZS9HZW9wb3NpdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjpH
ZW9wb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6bGF0aXR1ZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OmxvbmdpdHVkZSk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9wb3NpdGlvbjo6YWx0aXR1ZGUpOgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRp
b246OmFjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjphbHRpdHVkZUFj
Y3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjpoZWFkaW5nKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjp2ZWxvY2l0eSk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9wb3NpdGlvbjo6dGltZXN0YW1wKToKKyAgICAgICAgKiBwYWdlL0dlb3Bvc2l0aW9uLmlkbDog
QWRkZWQuCisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
TmF2aWdhdG9yOjpkaXNjb25uZWN0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9y
OjpnZW9sb2NhdGlvbik6CisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdmlnYXRvcjo6b3B0aW9uYWxHZW9sb2NhdGlvbik6CisgICAgICAgICogcGFnZS9O
YXZpZ2F0b3IuaWRsOgorICAgICAgICAqIHBhZ2UvUG9zaXRpb25DYWxsYmFjay5oOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uQ2FsbGJhY2s6On5Qb3NpdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uQ2FsbGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBw
YWdlL1Bvc2l0aW9uRXJyb3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVy
cm9yOjpQb3NpdGlvbkVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OmNv
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6c2V0Q29kZSk6CisgICAgICAg
IChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjptZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uRXJyb3I6OnNldE1lc3NhZ2UpOgorICAgICAgICAqIHBhZ2UvUG9zaXRpb25FcnJvci5p
ZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvckNhbGxiYWNrOjp+UG9zaXRpb25FcnJv
ckNhbGxiYWNrKToKKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGw6IEFk
ZGVkLgorICAgICAgICAqIHBhZ2UvUG9zaXRpb25PcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpQb3NpdGlvbk9wdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9zaXRpb25PcHRpb25zOjplbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2Vi
Q29yZTo6UG9zaXRpb25PcHRpb25zOjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAo
V2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjp0aW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBv
c2l0aW9uT3B0aW9uczo6c2V0VGltZW91dCk6CisgICAgICAgICogcGFnZS9Qb3NpdGlvbk9wdGlv
bnMuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZTo6R2VvbG9jYXRp
b25TZXJ2aWNlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZTo6cG9zaXRp
b25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZTo6ZXJyb3JP
Y2N1cnJlZCk6CisgICAgICAgICogcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50Ojp+R2VvbG9jYXRp
b25TZXJ2aWNlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUNs
aWVudDo6Z2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uU2VydmljZUNsaWVudDo6Z2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1
cnJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2U6On5HZW9sb2NhdGlv
blNlcnZpY2UpOgorCiAyMDA4LTEwLTE0ICBDaHJpcyBNYXJyaW4gIDxjbWFycmluQGFwcGxlLmNv
bT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYkNvcmUvRGVy
aXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1h
a2UJKHJldmlzaW9uIDM3NTk0KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCSh3b3Jr
aW5nIGNvcHkpCkBAIC05Miw2ICs5Miw4IEBAIERPTV9DTEFTU0VTID0gXAogICAgIEV2ZW50VGFy
Z2V0Tm9kZSBcCiAgICAgRmlsZSBcCiAgICAgRmlsZUxpc3QgXAorICAgIEdlb2xvY2F0aW9uIFwK
KyAgICBHZW9wb3NpdGlvbiBcCiAgICAgSFRNTEFuY2hvckVsZW1lbnQgXAogICAgIEhUTUxBcHBs
ZXRFbGVtZW50IFwKICAgICBIVE1MQXJlYUVsZW1lbnQgXApAQCAtMTc5LDYgKzE4MSwxMCBAQCBE
T01fQ0xBU1NFUyA9IFwKICAgICBPdmVyZmxvd0V2ZW50IFwKICAgICBQbHVnaW4gXAogICAgIFBs
dWdpbkFycmF5IFwKKyAgICBQb3NpdGlvbkNhbGxiYWNrIFwKKyAgICBQb3NpdGlvbkVycm9yIFwK
KyAgICBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgXAorICAgIFBvc2l0aW9uT3B0aW9ucyBcCiAgICAg
UHJvY2Vzc2luZ0luc3RydWN0aW9uIFwKICAgICBQcm9ncmVzc0V2ZW50IFwKICAgICBSR0JDb2xv
ciBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
R05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDM3NTk0KQorKysgV2ViQ29yZS9HTlVtYWtlZmlsZS5h
bQkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20u
Y3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcCBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0
b21Wb2lkQ2FsbGJhY2suY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tVm9pZENh
bGxiYWNrLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVzb2x2ZXIu
Y3BwIFwKQEAgLTM0Nyw2ICszNTEsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXRCYXNlLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGVD
dXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3Bw
IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb24uY3BwIFwKIAlXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb24uaCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCBcCkBAIC0xMTg2LDYgKzExOTEsMTAg
QEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmggXAogCVdl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmggXAor
CVdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAgXAorCVdlYkNvcmUvcGFnZS9HZW9sb2NhdGlv
bi5oIFwKKwlXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uY3BwIFwKKwlXZWJDb3JlL3BhZ2UvR2Vv
cG9zaXRpb24uaCBcCiAJV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwIFwKIAlXZWJDb3JlL3BhZ2Uv
SGlzdG9yeS5oIFwKIAlXZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIFwKQEAgLTExOTgsNiArMTIw
NywxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGFnZS9QYWdlLmggXAogCVdl
YkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmggXAor
CVdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmggXAorCVdlYkNvcmUvcGFnZS9Qb3NpdGlv
bkVycm9yLmggXAorCVdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBcCisJV2Vi
Q29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5oIFwKIAlXZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmNwcCBcCiAJV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oIFwKIAlXZWJDb3JlL3BhZ2UvU2Ny
ZWVuLmNwcCBcCkBAIC0xMjQzLDYgKzEyNTYsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdl
YkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lz
dGVtLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vRmxvYXRDb252ZXJzaW9uLmggXAorCVdlYkNvcmUv
cGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9HZW9s
b2NhdGlvblNlcnZpY2UuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93LmggXAogCVdl
YkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vS1VSTC5oIFwKSW5k
ZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnBy
bwkocmV2aXNpb24gMzc1OTQpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkp
CkBAIC03NzUsNiArNzc1LDggQEAgU09VUkNFUyArPSBcCiAgICAgcGFnZS9GcmFtZS5jcHAgXAog
ICAgIHBhZ2UvRnJhbWVUcmVlLmNwcCBcCiAgICAgcGFnZS9GcmFtZVZpZXcuY3BwIFwKKyAgICBw
YWdlL0dlb2xvY2F0aW9uLmNwcCBcCisgICAgcGFnZS9HZW9wb3NpdGlvbi5jcHAgXAogICAgIHBh
Z2UvSGlzdG9yeS5jcHAgXAogICAgIHBhZ2UvTG9jYXRpb24uY3BwIFwKICAgICBwYWdlL01vdXNl
RXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwIFwKQEAgLTgwMiw2ICs4MDQsNyBAQCBTT1VSQ0VT
ICs9IFwKICAgICBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL0RyYWdJbWFn
ZS5jcHAgXAogICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBcCisgICAgcGxhdGZvcm0vR2Vv
bG9jYXRpb25TZXJ2aWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERlc2NyaXB0
aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbWlseS5jcHAgXAogICAgIHBs
YXRmb3JtL2dyYXBoaWNzL0FmZmluZVRyYW5zZm9ybS5jcHAgXApAQCAtMTE5Nyw3ICsxMjAwLDEw
IEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9EQVRBQkFTRT0xKSB7CiAgICAgICAgIGJpbmRp
bmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcCBcCiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMv
SlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBcCi0gICAgICAgIGJpbmRpbmdzL2pzL0pT
U1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNh
Y3Rpb25DdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3Rv
bS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3Bw
IFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3Bw
CiAKICAgICBJRExfQklORElOR1MgKz0gXAogICAgICAgICBzdG9yYWdlL0RhdGFiYXNlLmlkbCBc
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L1dlYkNvcmVTb3VyY2VzLmJrbAkocmV2aXNpb24gMzc1OTQpCisrKyBXZWJDb3JlL1dlYkNvcmVT
b3VyY2VzLmJrbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBUaGlzIGZpbGUgY29u
dGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ1NTUnVs
ZUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3Vz
dG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAorICAgICAg
ICBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwCisgICAgICAgIGJpbmRp
bmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcAogICAgICAgICBiaW5kaW5n
cy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNwcAogICAgICAgICBiaW5kaW5ncy9q
cy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5jcHAKQEAgLTU5LDYgKzYxLDcgQEAg
VGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBiaW5kaW5n
cy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
LmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAKKyAg
ICAgICAgYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKICAgICAgICAgYmluZGlu
Z3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNIaXN0
b3J5Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3Vz
dG9tLmNwcApAQCAtMjM4LDYgKzI0MSw4IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBv
ZiBmaWxlcyBuZWUKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0V2ZW50VGFyZ2V0
Tm9kZS5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGUuY3BwCiAgICAg
ICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlTGlzdC5jcHAKKyAgICAgICAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU0dlb2xvY2F0aW9uLmNwcAorICAgICAgICBEZXJpdmVkU291cmNl
cy9XZWJDb3JlL0pTR2VvcG9zaXRpb24uY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNIVE1MQW5jaG9yRWxlbWVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0hUTUxBcHBsZXRFbGVtZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtMzIyLDYgKzMyNyw4IEBAIFRoaXMgZmlsZSBjb250
YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU092ZXJmbG93RXZlbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQ
bHVnaW4uY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQbHVnaW5BcnJheS5j
cHAKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bvc2l0aW9uRXJyb3IuY3BwCisg
ICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQb3NpdGlvbk9wdGlvbnMuY3BwCiAgICAg
ICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCiAg
ICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQcm9ncmVzc0V2ZW50LmNwcAogICAgICAg
ICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmFuZ2UuY3BwCkBAIC02NjgsNiArNjc1LDggQEAg
VGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBwYWdlL0Zy
YW1lLmNwcAogICAgICAgICBwYWdlL0ZyYW1lVHJlZS5jcHAKICAgICAgICAgcGFnZS9GcmFtZVZp
ZXcuY3BwCisgICAgICAgIHBhZ2UvR2VvbG9jYXRpb24uY3BwCisgICAgICAgIHBhZ2UvR2VvcG9z
aXRpb24uY3BwCiAgICAgICAgIHBhZ2UvSGlzdG9yeS5jcHAKICAgICAgICAgcGFnZS9Mb2NhdGlv
bi5jcHAKICAgICAgICAgcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcApAQCAt
NjkxLDYgKzcwMCw3IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUK
ICAgICAgICAgcGxhdGZvcm0vRGVwcmVjYXRlZFZhbHVlTGlzdEltcGwuY3BwCiAgICAgICAgIHBs
YXRmb3JtL0RyYWdJbWFnZS5jcHAKICAgICAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCisg
ICAgICAgIHBsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZS5jcHAKICAgICAgICAgcGxhdGZvcm0v
Z3JhcGhpY3MvRm9udC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNw
cAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0YS5jcHAKSW5kZXg6IFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMzc1OTQpCisrKyBXZWJDb3JlL1dl
YkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02ODAsNiArNjgw
LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9
IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNH
ZW9sb2NhdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291
cmNlc1xKU0dlb3Bvc2l0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJ
CQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERl
cml2ZWRTb3VyY2VzXEpTRXZlbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0xMDQwLDYg
KzEwNDgsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNl
c1xKU1Bvc2l0aW9uRXJyb3IuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJ
CQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNQb3NpdGlvbk9wdGlvbnMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9q
ZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNPdmVyZmxvd0V2ZW50LmgiDQogCQkJCT4NCiAJCQk8
L0ZpbGU+DQpAQCAtMjI2MCw2ICsyMjc2LDM4IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8
RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcR2VvbG9jYXRpb24uY3BwIg0KKwkJCQk+
DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZV9QR098V2luMzIi
DQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRvb2wiDQor
CQkJCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0KKwkJCQkJLz4NCisJCQkJPC9G
aWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIuLlxwYWdlXEdlb2xvY2F0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEdlb3Bvc2l0aW9uLmNwcCINCisJCQkJPg0K
KwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdpbjMyIg0K
KwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29sIg0KKwkJ
CQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSINCisJCQkJCS8+DQorCQkJCTwvRmls
ZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGFnZVxHZW9wb3NpdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxIaXN0b3J5LmNwcCINCiAJCQkJPg0KIAkJCQk8
RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0yMzg4LDYgKzI0MzYsMjIgQEAKIAkJCQk+DQogCQkJPC9G
aWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxQb3NpdGlvbkNhbGxi
YWNrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRo
PSIuLlxwYWdlXFBvc2l0aW9uRXJyb3IuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdl
XFBvc2l0aW9uT3B0aW9ucy5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJ
CVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxTY3JlZW4uY3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29u
ZmlndXJhdGlvbg0KQEAgLTMwNDAsNiArMzEwNCwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxHZW9sb2NhdGlvblNlcnZp
Y2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0
aD0iLi5ccGxhdGZvcm1cR2VvbG9jYXRpb25TZXJ2aWNlLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxIb3N0V2luZG93Lmgi
DQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTMxMjksNiArMTMyMDEsMTQgQEAKIAkJCQkJPg0K
IAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdz
XGpzXEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4N
CisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNDdXN0b21Q
b3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxG
aWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTQ3VzdG9tU1FMU3RhdGVt
ZW50Q2FsbGJhY2suY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtMTMyNTcsNiArMTMz
MzcsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTR2VvbG9jYXRpb25DdXN0b20uY3BwIg0KKwkJCQkJPg0K
KwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdz
XGpzXEpTSGlzdG9yeUN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCkluZGV4OiBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMzc1OTQp
CisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtNDIyMCw2ICs0MjIwLDM1IEBACiAJCUY5MTZDNDhEMERCNTEwRjgwMDc2Q0Q4MyAv
KiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMgLyogSlNY
TUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwICovOyB9OwogCQlGOTE2QzQ4RTBEQjUxMEY4
MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhDMERCNTEwRjgwMDc2Q0Q4
MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OwogCQlGOUYwRUQ3QTBE
QjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUwQ0EyMDBE
MTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CisJCUZFODBEN0E3
MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QTIwRTlDMUVEMjAw
MEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgKi87IH07CisJCUZFODBEN0E4
MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0EzMEU5QzFFRDIwMDBE
NkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCAqLzsgfTsKKwkJRkU4MEQ3QTkwRTlD
MUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0E0MEU5QzFFRDIw
MDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgKi87IH07CisJCUZF
ODBEN0FBMEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QTUw
RTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmggKi87IH07
CisJCUZFODBEN0FCMEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0E2MEU5
QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKKwkJRkU4MEQ3
QzUwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0I3MEU5QzFGMjUwMDBENkY3NSAvKiBH
ZW9sb2NhdGlvbi5jcHAgKi87IH07CisJCUZFODBEN0M2MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9s
b2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU4MEQ3QjgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggKi87IH07CisJCUZFODBE
N0M3MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0I5MEU5QzFGMjUwMDBENkY3NSAv
KiBHZW9sb2NhdGlvbi5pZGwgKi87IH07CisJCUZFODBEN0M4MEU5QzFGMjUwMDBENkY3NSAvKiBH
ZW9wb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTgwRDdCQTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uY3BwICovOyB9Owor
CQlGRTgwRDdDOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JCMEU5QzFGMjUwMDBENkY3
NSAvKiBHZW9wb3NpdGlvbi5oICovOyB9OworCQlGRTgwRDdDQTBFOUMxRjI1MDAwRDZGNzUgLyog
R2VvcG9zaXRpb24uaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTgwRDdCQzBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaWRsICovOyB9
OworCQlGRTgwRDdDQjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QkQwRTlDMUYy
NTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2suaCAqLzsgfTsKKwkJRkU4MEQ3Q0MwRTlDMUYy
NTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2suaWRsIGluIFJlc291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCRTBFOUMxRjI1MDAwRDZGNzUgLyogUG9z
aXRpb25DYWxsYmFjay5pZGwgKi87IH07CisJCUZFODBEN0NEMEU5QzFGMjUwMDBENkY3NSAvKiBQ
b3NpdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTgwRDdCRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5oICovOyB9Owor
CQlGRTgwRDdDRTBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5pZGwgaW4gUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0MwMEU5QzFGMjUw
MDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmlkbCAqLzsgfTsKKwkJRkU4MEQ3Q0YwRTlDMUYyNTAw
MEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzEwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0
aW9uRXJyb3JDYWxsYmFjay5oICovOyB9OworCQlGRTgwRDdEMDBFOUMxRjI1MDAwRDZGNzUgLyog
UG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzIwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJy
b3JDYWxsYmFjay5pZGwgKi87IH07CisJCUZFODBEN0QxMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFODBEN0MzMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCAqLzsgfTsK
KwkJRkU4MEQ3RDIwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5pZGwgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0M0MEU5QzFG
MjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaWRsICovOyB9OworCQlGRTgwREE2MzBFOUM0
NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE1RjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9s
b2NhdGlvbi5jcHAgKi87IH07CisJCUZFODBEQTY0MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xv
Y2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTgwREE2MDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oICovOyB9OworCQlGRTgw
REE2NTBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2MTBFOUM0NzAzMDAwRDZGNzUg
LyogSlNHZW9wb3NpdGlvbi5jcHAgKi87IH07CisJCUZFODBEQTY2MEU5QzQ3MDMwMDBENkY3NSAv
KiBKU0dlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oICovOyB9
OworCQlGRTgwREE3MTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZEMEU5QzQ3
MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovOyB9OworCQlGRTgwREE3MjBFOUM0
NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3Np
dGlvbkVycm9yLmggKi87IH07CisJCUZFODBEQTczMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGRTgwREE2RjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwICov
OyB9OworCQlGRTgwREE3NDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTcwMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovOyB9OworCQlGRUFCOTAxMjBF
QTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQUI5MDEwMEVBNTFCOUMwMDYzNDhDMyAv
KiBHZW9sb2NhdGlvblNlcnZpY2UuY3BwICovOyB9OworCQlGRUFCOTAxMzBFQTUxQjlDMDA2MzQ4
QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRUFCOTAxMTBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25T
ZXJ2aWNlLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTg4MzQsNiArODg2MywzNSBA
QAogCQlGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVzdFBy
b2dyZXNzRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzgwREI1
MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGwgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGw7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDlFRjk3MERDNTE0NjIwMDQyNjZFMSAvKiBEYXNoYm9h
cmRTdXBwb3J0Q1NTUHJvcGVydHlOYW1lcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBEYXNo
Ym9hcmRTdXBwb3J0Q1NTUHJvcGVydHlOYW1lcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkU4MEQ3QTIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFj
ay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbVBvc2l0
aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBMzBF
OUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBNDBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0
b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3Np
dGlvbkVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlND
dXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0I3MEU5QzFGMjUwMDBENkY3
NSAvKiBHZW9sb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBHZW9sb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0I4
MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBHZW9sb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlG
RTgwRDdCOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaWRsICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4
dDsgcGF0aCA9IEdlb2xvY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkU4MEQ3QkEwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb3Bvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkIwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb3Bvc2l0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3Np
dGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2VvcG9zaXRpb24uaWRsOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRp
b25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkNh
bGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JFMEU5QzFGMjUw
MDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQ
b3NpdGlvbkNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3
QkYwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gUG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRTgwRDdDMDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25FcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUZFODBEN0MxMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25FcnJvckNhbGxi
YWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0MyMEU5QzFGMjUwMDBE
NkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9
IFBvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFODBEN0MzMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFODBEN0M0MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlv
bnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBvc2l0aW9uT3B0aW9ucy5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTVGMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dl
b2xvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2Vv
bG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2MDBFOUM0
NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0dlb2xvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
ODBEQTYxMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VvcG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlb3Bvc2l0aW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBK
U1Bvc2l0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNQb3NpdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERB
NkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU4MERBNkYwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25PcHRpb25z
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNzAwRTlDNDcyRjAwMEQ2
Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
QUI5MDEwMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvbG9jYXRpb25TZXJ2aWNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVBQjkwMTEwRUE1MUI5QzAwNjM0OEMzIC8qIEdl
b2xvY2F0aW9uU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW9s
b2NhdGlvblNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhG
aWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhh
c2Ugc2VjdGlvbiAqLwpAQCAtOTU4Myw2ICs5NjQxLDEyIEBACiAJCQkJNjVBMjE0ODMwOTdBM0Y1
MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oICovLAogCQkJCTY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMy
NSAvKiBGcmFtZVZpZXcuY3BwICovLAogCQkJCTY1Q0JGRUY4MDk3NEY2MDcwMDFEQUMyNSAvKiBG
cmFtZVZpZXcuaCAqLywKKwkJCQlGRTgwRDdCNzBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRp
b24uY3BwICovLAorCQkJCUZFODBEN0I4MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5o
ICovLAorCQkJCUZFODBEN0I5MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5pZGwgKi8s
CisJCQkJRkU4MEQ3QkEwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCAqLywKKwkJ
CQlGRTgwRDdCQjBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCAqLywKKwkJCQlGRTgw
RDdCQzBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaWRsICovLAogCQkJCUJDOTREMTUw
MEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmNwcCAqLywKIAkJCQlCQzk0RDE1MTBDMjc1QzhC
MDA2QkM2MTcgLyogSGlzdG9yeS5oICovLAogCQkJCUJDOTREMTUyMEMyNzVDOEIwMDZCQzYxNyAv
KiBIaXN0b3J5LmlkbCAqLywKQEAgLTk1OTgsNiArOTY2MiwxNCBAQAogCQkJCTY1QTIxNDY3MDk3
QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi8sCiAJCQkJOTMwMkIwQkMwRDc5RjgyOTAwQzdFRTgz
IC8qIFBhZ2VHcm91cC5jcHAgKi8sCiAJCQkJOTMwMkIwQkUwRDc5RjgyQzAwQzdFRTgzIC8qIFBh
Z2VHcm91cC5oICovLAorCQkJCUZFODBEN0JEMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNh
bGxiYWNrLmggKi8sCisJCQkJRkU4MEQ3QkUwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2Fs
bGJhY2suaWRsICovLAorCQkJCUZFODBEN0JGMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVy
cm9yLmggKi8sCisJCQkJRkU4MEQ3QzAwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3Iu
aWRsICovLAorCQkJCUZFODBEN0MxMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2Fs
bGJhY2suaCAqLywKKwkJCQlGRTgwRDdDMjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJv
ckNhbGxiYWNrLmlkbCAqLywKKwkJCQlGRTgwRDdDMzBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRp
b25PcHRpb25zLmggKi8sCisJCQkJRkU4MEQ3QzQwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9u
T3B0aW9ucy5pZGwgKi8sCiAJCQkJQkNFQzAxQkEwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5j
cHAgKi8sCiAJCQkJQkNFQzAxQkIwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5oICovLAogCQkJ
CUJDRUMwMUJDMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uaWRsICovLApAQCAtMTE3NjEsNiAr
MTE4MzMsMTAgQEAKIAkJCQk2NURGMzIyRTA5RDFEREJDMDAwQkUzMjUgLyogSlNFbnRpdHkuaCAq
LywKIAkJCQk5M0Y5Qjc3MjBCQTVGRERDMDA4NTQwNjQgLyogSlNFbnRpdHlSZWZlcmVuY2UuY3Bw
ICovLAogCQkJCTkzRjlCNzczMEJBNUZEREMwMDg1NDA2NCAvKiBKU0VudGl0eVJlZmVyZW5jZS5o
ICovLAorCQkJCUZFODBEQTVGMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCAq
LywKKwkJCQlGRTgwREE2MDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oICovLAor
CQkJCUZFODBEQTYxMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCAqLywKKwkJ
CQlGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oICovLAogCQkJCUJD
RDlDMkJDMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5jcHAgKi8sCiAJCQkJQkNE
OUMyQkQwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmggKi8sCiAJCQkJMTREQzBE
MzUwOUZFRDA3MzAwN0IwMjM1IC8qIEpTTm9kZS5jcHAgKi8sCkBAIC0xMTc2OSw2ICsxMTg0NSwx
MCBAQAogCQkJCUJDRDlDMkJGMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05vZGVMaXN0LmggKi8sCiAJ
CQkJNjVERjMxRTkwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTm90YXRpb24uY3BwICovLAogCQkJCTY1
REYzMUVBMDlEMUNDNjAwMDBCRTMyNSAvKiBKU05vdGF0aW9uLmggKi8sCisJCQkJRkU4MERBNkQw
RTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8sCisJCQkJRkU4MERBNkUw
RTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovLAorCQkJCUZFODBEQTZGMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgKi8sCisJCQkJRkU4MERBNzAw
RTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi8sCiAJCQkJNjVERjMxRUIw
OUQxQ0M2MDAwMEJFMzI1IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNwcCAqLywKIAkJCQk2
NURGMzFFQzA5RDFDQzYwMDAwQkUzMjUgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLywK
IAkJCQlFNEI0MjM4NTBDQkZCNzNDMDBBRjJFQ0UgLyogSlNQcm9ncmVzc0V2ZW50LmNwcCAqLywK
QEAgLTEyODMzLDYgKzEyOTEzLDEwIEBACiAJCQkJQkM0NkMxRUQwQzBEREJERjAwMjBDRkMzIC8q
IEpTQ1NTUnVsZUN1c3RvbS5jcHAgKi8sCiAJCQkJQkM1ODI1RjIwQzBCODkzODAwNTNGMUI1IC8q
IEpTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJQkMyMEZCN0UwQzBFOEU2
QzAwRDE0NDdGIC8qIEpTQ1NTVmFsdWVDdXN0b20uY3BwICovLAorCQkJCUZFODBEN0EyMEU5QzFF
RDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwICovLAorCQkJCUZFODBE
N0EzMEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCAqLywKKwkJ
CQlGRTgwRDdBNDBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2suY3BwICovLAorCQkJCUZFODBEN0E1MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0
aW9uRXJyb3JDYWxsYmFjay5oICovLAogCQkJCTUxRUM5MjVCMENFOTBERDQwMEY5MDMwOCAvKiBK
U0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNwcCAqLywKIAkJCQk1MUVDOTI1QzBDRTkwREQ0
MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5oICovLAogCQkJCTUxRUM5
MjVEMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2su
Y3BwICovLApAQCAtMTI4NTIsNiArMTI5MzYsNyBAQAogCQkJCUJDMkVENTU0MEM2QjlCRDMwMDky
MEJGRiAvKiBKU0VsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDRUZBRjREMEMzMTdFNjkwMEZB
ODFGNiAvKiBKU0V2ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzNCN0IyMDBFOTFBQUY0MDBENTQw
NjUgLyogSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3BwICovLAorCQkJCUZFODBEN0E2MEU5QzFF
RDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlCQ0U3QjE5MjBE
NEU4Njk2MDA3NUE1MzkgLyogSlNIaXN0b3J5Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzRFREVGMzBD
MDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJ
QkNDQkFEM0EwQzE4QkZGODAwQ0U4OTBGIC8qIEpTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwICov
LApAQCAtMTMxNjIsNiArMTMyNDcsOCBAQAogCQkJCTA2NkM3NzJBMEFCNjAzQjcwMDIzOENDNCAv
KiBGaWxlQ2hvb3Nlci5oICovLAogCQkJCTUxNEIzRjcyMEM3MjIwNDcwMDA1MzBERiAvKiBGaWxl
U3lzdGVtLmggKi8sCiAJCQkJQkMwNzNCQTkwQzM5OUIxRjAwMEY1OTc5IC8qIEZsb2F0Q29udmVy
c2lvbi5oICovLAorCQkJCUZFQUI5MDEwMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNl
cnZpY2UuY3BwICovLAorCQkJCUZFQUI5MDExMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlv
blNlcnZpY2UuaCAqLywKIAkJCQlCQzNCQzI5QjBFOTFBQjBGMDA4MzU1ODggLyogSG9zdFdpbmRv
dy5oICovLAogCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmNwcCAqLywKIAkJ
CQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICovLApAQCAtMTU5NzUsNiArMTYw
NjIsMTggQEAKIAkJCQkxQzgxQkEwQzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVn
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFDODFCQTBFMEU5NzM0ODMwMDI2NkUwNyAv
KiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0JFMTJCMEU5
ODA5MkYwMDgzNTU4OCAvKiBQb3B1cE1lbnVTdHlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4
MEQ3QTgwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkU4MEQ3QUEwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRp
b25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdDNjBFOUMxRjI1MDAw
RDZGNzUgLyogR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0M5MEU5QzFG
MjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3Q0Iw
RTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZFODBEN0NEMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGRTgwRDdDRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNr
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdEMTBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRp
b25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwREE2NDBFOUM0NzAzMDAwRDZGNzUg
LyogSlNHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MERBNjYwRTlDNDcwMzAw
MEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEQTcyMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZF
ODBEQTc0MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkMzQkU5OTQwRTlDMUM3QzAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQkMzQkU5OTUwRTlDMUM3QzAwODM1NTg4IC8qIFJlbmRlclNjcm9s
bGJhclBhcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0JFOTk5MEU5QzFFNUQwMDgzNTU4OCAv
KiBSZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTk4Miw2ICsxNjA4
MSw3IEBACiAJCQkJMUNGNkJFMTUwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29u
ZGl0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODBENjcwODBFOUU5REVCMDBFNDIwRjAgLyog
R3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJCTkz
OUIwMkVGMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0aEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRUFCOTAxMzBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4g
SGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5n
ID0gMDsKIAkJfTsKQEAgLTE2MDk1LDYgKzE2MTk1LDEyIEBACiAJCQkJODUxMzZDQTgwQUVENjY1
OTAwRjkwQTNEIC8qIHdlc3RSZXNpemVDdXJzb3IucG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkx
QUIxQUU3QTBDMDUxRkRFMDAxMzlGNEYgLyogem9vbUluQ3Vyc29yLnBuZyBpbiBSZXNvdXJjZXMg
Ki8sCiAJCQkJMUFCMUFFN0IwQzA1MUZERTAwMTM5RjRGIC8qIHpvb21PdXRDdXJzb3IucG5nIGlu
IFJlc291cmNlcyAqLywKKwkJCQlGRTgwRDdDNzBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRp
b24uaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQlGRTgwRDdDQTBFOUMxRjI1MDAwRDZGNzUgLyog
R2VvcG9zaXRpb24uaWRsIGluIFJlc291cmNlcyAqLywKKwkJCQlGRTgwRDdDQzBFOUMxRjI1MDAw
RDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBE
N0NFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmlkbCBpbiBSZXNvdXJjZXMgKi8s
CisJCQkJRkU4MEQ3RDAwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5p
ZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBEN0QyMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbk9wdGlvbnMuaWRsIGluIFJlc291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE3ODQyLDYgKzE3OTQ4LDE1IEBA
CiAJCQkJMUM4MUJBMDIwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTFDODFCQTA5MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0
Q2FsbEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDODFCQTBEMEU5NzM0ODMwMDI2NkUw
NyAvKiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3
QTcwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGRTgwRDdBOTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlv
bkVycm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3QUIwRTlDMUVEMjAw
MEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4
MEQ3QzUwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUZFODBEN0M4MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGRTgwREE2MzBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAg
aW4gU291cmNlcyAqLywKKwkJCQlGRTgwREE2NTBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3Np
dGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwREE3MTBFOUM0NzJGMDAwRDZGNzUgLyog
SlNQb3NpdGlvbkVycm9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEQTczMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzNC
RTk5MzBFOUMxQzdDMDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDM0JFOUE1MEU5QzIzOTYwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJUaGVtZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzNCRTlBQjBFOUMyNDIwMDA4MzU1ODggLyogUmVuZGVy
U2Nyb2xsYmFyUGFydC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE3ODQ5LDYgKzE3OTY0LDcgQEAK
IAkJCQkxQ0Y2QkUxNDBFOUJCNDY3MDAyNUUxQ0QgLyogT2JqQ05vZGVGaWx0ZXJDb25kaXRpb24u
bW0gaW4gU291cmNlcyAqLywKIAkJCQlCQzgwRkExMzBFQTI4N0IwMDBCMDgyMUQgLyogTGVuZ3Ro
LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTkzOUIwMkVFMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0
aEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFQUI5MDEyMEVBNTFCOUMwMDYzNDhD
MyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3Bw
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0N1
c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCisjaW5jbHVkZSAi
Q1N0cmluZy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNHZW9wb3NpdGlvbi5o
IgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisjaW5j
bHVkZSA8a2pzL0pTTG9jay5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjazo6SlNDdXN0b21Qb3NpdGlvbkNh
bGxiYWNrKEpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKQorICAgIDogbV9jYWxsYmFj
ayhjYWxsYmFjaykKKyAgICAsIG1fZnJhbWUoZnJhbWUpCit7Cit9CisKK3ZvaWQgSlNDdXN0b21Q
b3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVudChHZW9wb3NpdGlvbiogZ2VvcG9zaXRpb24sIGJv
b2wmIHJhaXNlZEV4Y2VwdGlvbikKK3sKKyAgICBBU1NFUlQobV9jYWxsYmFjayk7CisgICAgQVNT
RVJUKG1fZnJhbWUpOworICAgIAorICAgIGlmICghbV9mcmFtZS0+c2NyaXB0KCktPmlzRW5hYmxl
ZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCA9IG1fZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBFeGVjU3RhdGUq
IGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICAKKyAgICBKU0M6OkpTTG9j
ayBsb2NrKGZhbHNlKTsKKyAgICAKKyAgICBKU1ZhbHVlKiBmdW5jdGlvbiA9IG1fY2FsbGJhY2st
PmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsKKyAgICBDYWxsRGF0
YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGZ1bmN0aW9uLT5nZXRDYWxsRGF0
YShjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgeworICAgICAg
ICBjYWxsVHlwZSA9IG1fY2FsbGJhY2stPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICAgICAg
aWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgeworICAgICAgICAgICAgLy8gRklYTUU6IFNo
b3VsZCBhbiBleGNlcHRpb24gYmUgdGhyb3duIGhlcmU/CisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gPSBtX2NhbGxiYWNrOworICAgIH0KKyAgICAKKyAg
ICBSZWZQdHI8SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrPiBwcm90ZWN0KHRoaXMpOworICAgIAor
ICAgIEFyZ0xpc3QgYXJnczsKKyAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIGdlb3Bvc2l0aW9u
KSk7CisgICAgCisgICAgZ2xvYmFsT2JqZWN0LT5zdGFydFRpbWVvdXRDaGVjaygpOworICAgIGNh
bGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9jYWxsYmFjaywgYXJncyk7
CisgICAgZ2xvYmFsT2JqZWN0LT5zdG9wVGltZW91dENoZWNrKCk7CisgICAgCisgICAgaWYgKGV4
ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25z
b2xlKCktPnJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7CisgICAgICAgIHJhaXNlZEV4Y2Vw
dGlvbiA9IHRydWU7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrX2gK
KyNkZWZpbmUgSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrX2gKKworI2luY2x1ZGUgPGtqcy9KU09i
amVjdC5oPgorI2luY2x1ZGUgPGtqcy9wcm90ZWN0Lmg+CisjaW5jbHVkZSAiUG9zaXRpb25DYWxs
YmFjay5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBKU0MgeworICAg
IGNsYXNzIEpTT2JqZWN0OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEZyYW1l
OworY2xhc3MgR2VvcG9zaXRpb247CisKK2NsYXNzIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayA6
IHB1YmxpYyBQb3NpdGlvbkNhbGxiYWNrIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0
cjxKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFj
aywgRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21Qb3NpdGlvbkNh
bGxiYWNrKGNhbGxiYWNrLCBmcmFtZSkpOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUV2ZW50KEdlb3Bvc2l0aW9uKiwgYm9vbCYgcmFpc2VkRXhjZXB0aW9uKTsKKworcHJpdmF0ZToK
KyAgICBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2soSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZy
YW1lKik7CisKKyAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0M6OkpTT2JqZWN0PiBtX2NhbGxiYWNr
OworICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZiAvLyBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2tfaApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
ay5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRp
b25FcnJvckNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSA8a2pzL0pTTG9jay5oPgorI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25F
cnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQ29uc29sZS5oIgorI2luY2x1ZGUgIkNTdHJpbmcu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTUG9zaXRpb25FcnJvci5oIgorI2lu
Y2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250cm9sbGVyLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK0pTQ3VzdG9tUG9zaXRp
b25FcnJvckNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayhKU09iamVjdCog
Y2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAg
LCBtX2ZyYW1lKGZyYW1lKQoreworfQorCit2b2lkIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxi
YWNrOjpoYW5kbGVFdmVudChQb3NpdGlvbkVycm9yKiBwb3NpdGlvbkVycm9yKQoreworICAgIEFT
U0VSVChtX2NhbGxiYWNrKTsKKyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgCisgICAgaWYgKCFt
X2ZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAg
ICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9mcmFtZS0+c2NyaXB0KCktPmdsb2Jh
bE9iamVjdCgpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpOworICAgIAorICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgIAorICAgIEpTVmFs
dWUqIGZ1bmN0aW9uID0gbV9jYWxsYmFjay0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhh
bmRsZUV2ZW50IikpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxU
eXBlID0gZnVuY3Rpb24tPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUg
PT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgIGNhbGxUeXBlID0gbV9jYWxsYmFjay0+Z2V0Q2Fs
bERhdGEoY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7
CisgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGFuIGV4Y2VwdGlvbiBiZSB0aHJvd24gaGVy
ZT8KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiA9IG1f
Y2FsbGJhY2s7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxKU0N1c3RvbVBvc2l0aW9uRXJyb3JD
YWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKKyAgICAKKyAgICBBcmdMaXN0IGFyZ3M7CisgICAgYXJn
cy5hcHBlbmQodG9KUyhleGVjLCBwb3NpdGlvbkVycm9yKSk7CisgICAgCisgICAgZ2xvYmFsT2Jq
ZWN0LT5zdGFydFRpbWVvdXRDaGVjaygpOworICAgIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxU
eXBlLCBjYWxsRGF0YSwgbV9jYWxsYmFjaywgYXJncyk7CisgICAgZ2xvYmFsT2JqZWN0LT5zdG9w
VGltZW91dENoZWNrKCk7CisgICAgCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5yZXBvcnRDdXJyZW50RXhjZXB0
aW9uKGV4ZWMpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9y
Q2FsbGJhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpTQ3VzdG9tUG9zaXRpb25F
cnJvckNhbGxiYWNrX2gKKyNkZWZpbmUgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAor
CisjaW5jbHVkZSAiUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSA8a2pzL0pTT2Jq
ZWN0Lmg+CisjaW5jbHVkZSA8a2pzL3Byb3RlY3QuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgorCituYW1lc3BhY2UgSlNDIHsKKyAgICBjbGFzcyBKU09iamVjdDsKK30KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIAorY2xhc3MgRnJhbWU7CitjbGFzcyBQb3NpdGlvbkVycm9yOworCitj
bGFzcyBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayA6IHB1YmxpYyBQb3NpdGlvbkVycm9y
Q2FsbGJhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tUG9zaXRp
b25FcnJvckNhbGxiYWNrPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBm
cmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
KGNhbGxiYWNrLCBmcmFtZSkpOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50
KFBvc2l0aW9uRXJyb3IqKTsKKworcHJpdmF0ZToKKyAgICBKU0N1c3RvbVBvc2l0aW9uRXJyb3JD
YWxsYmFjayhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqKTsKKworICAgIEpTQzo6UHJv
dGVjdGVkUHRyPEpTQzo6SlNPYmplY3Q+IG1fY2FsbGJhY2s7CisgICAgUmVmUHRyPEZyYW1lPiBt
X2ZyYW1lOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEpT
Q3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
QmluZGluZy5jcHAJKHJldmlzaW9uIDM3NTk0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yODAsNiArMjgwLDE2IEBAIHZvaWQgdXBk
YXRlRE9NTm9kZURvY3VtZW50KE5vZGUqIG5vZGUsIEQKICAgICBhZGRXcmFwcGVyKHdyYXBwZXIp
OwogfQogCit2b2lkIG1hcmtET01PYmplY3RXcmFwcGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0
YSwgdm9pZCogb2JqZWN0KQoreworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm47Cisg
ICAgRE9NT2JqZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcihnbG9iYWxE
YXRhLCBvYmplY3QpOworICAgIGlmICghd3JhcHBlciB8fCB3cmFwcGVyLT5tYXJrZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIHdyYXBwZXItPm1hcmsoKTsKK30KKwogSlNWYWx1ZSoganNTdHJp
bmdPck51bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgaWYgKHMu
aXNOdWxsKCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDM3
NTk0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5
KQpAQCAtNjksNiArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdm9pZCB1cGRhdGVE
T01Ob2RlRG9jdW1lbnQoTm9kZSosIERvY3VtZW50KiBvbGREb2N1bWVudCwgRG9jdW1lbnQqIG5l
d0RvY3VtZW50KTsKICAgICB2b2lkIG1hcmtET01Ob2Rlc0ZvckRvY3VtZW50KERvY3VtZW50Kik7
CiAgICAgdm9pZCBtYXJrQWN0aXZlT2JqZWN0c0ZvckRvY3VtZW50KEpTQzo6SlNHbG9iYWxEYXRh
JiwgRG9jdW1lbnQqKTsKKyAgICB2b2lkIG1hcmtET01PYmplY3RXcmFwcGVyKEpTQzo6SlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lkKiBvYmplY3QpOwogCiAgICAgSlNDOjpTdHJ1Y3R1cmVJ
RCogZ2V0Q2FjaGVkRE9NU3RydWN0dXJlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpDbGFz
c0luZm8qKTsKICAgICBKU0M6OlN0cnVjdHVyZUlEKiBjYWNoZURPTVN0cnVjdHVyZShKU0M6OkV4
ZWNTdGF0ZSosIFBhc3NSZWZQdHI8SlNDOjpTdHJ1Y3R1cmVJRD4sIGNvbnN0IEpTQzo6Q2xhc3NJ
bmZvKik7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcAko
cmV2aXNpb24gMzc1OTQpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsMTYgKzQxLDYgQEAgdXNpbmcgbmFtZXNwYWNlIEpT
QzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgdm9pZCBtYXJrRE9NT2JqZWN0V3Jh
cHBlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHZvaWQqIG9iamVjdCkKLXsKLSAgICBpZiAo
IW9iamVjdCkKLSAgICAgICAgcmV0dXJuOwotICAgIERPTU9iamVjdCogd3JhcHBlciA9IGdldENh
Y2hlZERPTU9iamVjdFdyYXBwZXIoZ2xvYmFsRGF0YSwgb2JqZWN0KTsKLSAgICBpZiAoIXdyYXBw
ZXIgfHwgd3JhcHBlci0+bWFya2VkKCkpCi0gICAgICAgIHJldHVybjsKLSAgICB3cmFwcGVyLT5t
YXJrKCk7Ci19Ci0KIHZvaWQgSlNET01XaW5kb3c6Om1hcmsoKQogewogICAgIEJhc2U6Om1hcmso
KTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJK
U0dlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiRE9NV2luZG93LmgiCisjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiSlNDdXN0b21Q
b3NpdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2suaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkpTUG9zaXRpb25PcHRp
b25zLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
SlNWYWx1ZSogSlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICAvLyBBcmd1bWVudHM6IFBvc2l0aW9uQ2Fs
bGJhY2ssIChvcHRpb25hbClQb3NpdGlvbkVycm9yQ2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlv
bk9wdGlvbnMKKyAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjazsK
KyAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdChleGVjLCAwKS0+Z2V0T2JqZWN0KCk7Cisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICBpZiAoIW9iamVjdCkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQ
RV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisK
KyAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9KU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCkpCisgICAgICAgIHBvc2l0aW9uQ2FsbGJhY2sgPSBK
U0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1lKTsKKyAgICAKKyAg
ICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2s7Cisg
ICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDEpLT5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMsIDEpLT5nZXRPYmplY3QoKTsKKyAgICAg
ICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBF
X01JU01BVENIX0VSUik7CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSB0b0pTRE9NV2luZG93KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKSkKKyAgICAgICAgICAgIHBvc2l0
aW9uRXJyb3JDYWxsYmFjayA9IEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUo
b2JqZWN0LCBmcmFtZSk7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+
IHBvc2l0aW9uT3B0aW9uczsKKyAgICBpZiAoIWFyZ3MuYXQoZXhlYywgMiktPmlzVW5kZWZpbmVk
T3JOdWxsKCkpCisgICAgICAgIHBvc2l0aW9uT3B0aW9ucyA9IHRvUG9zaXRpb25PcHRpb25zKGFy
Z3MuYXQoZXhlYywgMikpOworICAgIAorICAgIG1faW1wbC0+Z2V0Q3VycmVudFBvc2l0aW9uKHBv
c2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVsZWFzZSgp
LCBwb3NpdGlvbk9wdGlvbnMuZ2V0KCkpOworICAgIAorICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworfQorCitKU1ZhbHVlKiBKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICAvLyBBcmd1bWVudHM6IFBvc2l0aW9u
Q2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlvbkVycm9yQ2FsbGJhY2ssIChvcHRpb25hbClQb3Np
dGlvbk9wdGlvbnMKKyAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFj
azsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdChleGVjLCAwKS0+Z2V0T2JqZWN0KCk7
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICBpZiAoIW9iamVjdCkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
VFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9
CisgICAgCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRvSlNET01XaW5kb3coZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpKQorICAgICAgICBwb3NpdGlvbkNhbGxi
YWNrID0gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBmcmFtZSk7Cisg
ICAgCisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxi
YWNrOworICAgIGlmICghYXJncy5hdChleGVjLCAxKS0+aXNVbmRlZmluZWRPck51bGwoKSkgewor
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdChleGVjLCAxKS0+Z2V0T2JqZWN0KCk7
CisgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSB0b0pTRE9N
V2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKSkKKyAg
ICAgICAgICAgIHBvc2l0aW9uRXJyb3JDYWxsYmFjayA9IEpTQ3VzdG9tUG9zaXRpb25FcnJvckNh
bGxiYWNrOjpjcmVhdGUob2JqZWN0LCBmcmFtZSk7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxQ
b3NpdGlvbk9wdGlvbnM+IHBvc2l0aW9uT3B0aW9uczsKKyAgICBpZiAoIWFyZ3MuYXQoZXhlYywg
MiktPmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHBvc2l0aW9uT3B0aW9ucyA9IHRvUG9z
aXRpb25PcHRpb25zKGFyZ3MuYXQoZXhlYywgMikpOworICAgIAorICAgIGludCB3ID0gbV9pbXBs
LT53YXRjaFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9y
Q2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMuZ2V0KCkpOworICAgIHJldHVybiBq
c051bWJlcihleGVjLCB3KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAJKHJldmlzaW9uIDM3NTk0KQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTExMyw0ICsxMTMsMTMgQEAgSlNWYWx1ZSogSlNOYXZpZ2F0b3I6OmFwcFZlcnNpb24o
RXhlY1N0YQogICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBpbXAtPmFwcFZlcnNpb24oKSk7CiB9
CiAKK3ZvaWQgSlNOYXZpZ2F0b3I6Om1hcmsoKQoreworICAgIEJhc2U6Om1hcmsoKTsKKworICAg
IEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9ICpIZWFwOjpoZWFwKHRoaXMpLT5nbG9iYWxEYXRh
KCk7CisKKyAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihnbG9iYWxEYXRhLCBpbXBsKCktPm9wdGlv
bmFsR2VvbG9jYXRpb24oKSk7Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlv
bi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1
ZGUgIlBvc2l0aW9uRXJyb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHZW9sb2NhdGlv
bjo6R2VvTm90aWZpZXI6Okdlb05vdGlmaWVyKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaywgUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKQorICAgIDogbV9zdWNjZXNzQ2FsbGJh
Y2soc3VjY2Vzc0NhbGxiYWNrKQorICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2sp
CisgICAgLCBtX3RpbWVyKHRoaXMsICZHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnRpbWVyRmly
ZWQpCit7CisgICAgaWYgKG1fZXJyb3JDYWxsYmFjayAmJiBvcHRpb25zICYmIG9wdGlvbnMtPnRp
bWVvdXQoKSAhPSAtMSkKKyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qob3B0aW9ucy0+dGlt
ZW91dCgpIC8gMTAwMC4wKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnRp
bWVyRmlyZWQoVGltZXI8R2VvTm90aWZpZXI+KiB0aW1lcikKK3sKKyAgICBBU1NFUlQobV9lcnJv
ckNhbGxiYWNrKTsKKyAgICAKKyAgICBtX3RpbWVyLnN0b3AoKTsKKworICAgIFJlZlB0cjxQb3Np
dGlvbkVycm9yPiBlcnJvciA9IG5ldyBQb3NpdGlvbkVycm9yKDQsICJUaW1lZCBvdXQiKTsKKyAg
ICBtX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKK30KKworR2VvbG9j
YXRpb246Okdlb2xvY2F0aW9uKEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCisg
ICAgLCBtX3NlcnZpY2UoR2VvbG9jYXRpb25TZXJ2aWNlOjpjcmVhdGUodGhpcykpCit7Cit9CisK
K3ZvaWQgR2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSgpCit7CisgICAgbV9mcmFtZSA9IDA7
Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3NpdGlvbihQYXNzUmVmUHRyPFBv
c2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9y
Q2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykKK3sKKyAg
ICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gbmV3IEdlb05vdGlmaWVyKHN1Y2Nlc3ND
YWxsYmFjaywgZXJyb3JDYWxsYmFjaywgb3B0aW9ucyk7CisKKyAgICBpZiAoIW1fc2VydmljZS0+
c3RhcnRVcGRhdGluZyhvcHRpb25zKSkgeworICAgICAgICBpZiAobm90aWZpZXItPm1fZXJyb3JD
YWxsYmFjaykgeworICAgICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gbmV3
IFBvc2l0aW9uRXJyb3IoMSwgIlVuYWJsZSB0byBTdGFydCIpOworICAgICAgICAgICAgbm90aWZp
ZXItPm1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworICAgICAgICB9
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX29uZVNob3RzLmFkZChub3RpZmllcik7
Cit9CisKK2ludCBHZW9sb2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9u
Q2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJh
Y2s+IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykKK3sKKyAgICBSZWZQ
dHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gbmV3IEdlb05vdGlmaWVyKHN1Y2Nlc3NDYWxsYmFj
aywgZXJyb3JDYWxsYmFjaywgb3B0aW9ucyk7CisKKyAgICBpZiAoIW1fc2VydmljZS0+c3RhcnRV
cGRhdGluZyhvcHRpb25zKSkgeworICAgICAgICBpZiAobm90aWZpZXItPm1fZXJyb3JDYWxsYmFj
aykgeworICAgICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gbmV3IFBvc2l0
aW9uRXJyb3IoMSwgIlVuYWJsZSB0byBTdGFydCIpOworICAgICAgICAgICAgbm90aWZpZXItPm1f
ZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgaW50IHNJZGVudGlmaWVyID0g
MDsKKyAgICAKKyAgICBtX3dhdGNoZXJzLnNldCgrK3NJZGVudGlmaWVyLCBub3RpZmllcik7CisK
KyAgICByZXR1cm4gc0lkZW50aWZpZXI7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OmNsZWFyV2F0
Y2goaW50IHdhdGNoSWQpCit7CisgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IG1f
d2F0Y2hlcnMuZ2V0KHdhdGNoSWQpOworICAgIGlmIChub3RpZmllcikKKyAgICAgICAgbV93YXRj
aGVycy5yZW1vdmUod2F0Y2hJZCk7CisgICAgCisgICAgc3RvcFVwZGF0aW5nSWZFbXB0eSgpOwor
fQorCit2b2lkIEdlb2xvY2F0aW9uOjpzdG9wVXBkYXRpbmdJZkVtcHR5KCkKK3sKKyAgICBpZiAo
bV93YXRjaGVycy5pc0VtcHR5KCkgJiYgbV9vbmVTaG90cy5pc0VtcHR5KCkpCisgICAgICAgIG1f
c2VydmljZS0+c3RvcFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OmhhbmRsZUVy
cm9yKFBvc2l0aW9uRXJyb3IqIGVycm9yKQoreworICAgIEdlb05vdGlmaWVyU2V0Ojpjb25zdF9p
dGVyYXRvciBvbmVTaG90c0VuZCA9IG1fb25lU2hvdHMuZW5kKCk7CisgICAgZm9yIChHZW9Ob3Rp
ZmllclNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29uZVNob3RzLmJlZ2luKCk7IGl0ICE9IG9u
ZVNob3RzRW5kOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIg
PSAqaXQ7CisgICAgICAgIAorICAgICAgICBpZiAobm90aWZpZXItPm1fZXJyb3JDYWxsYmFjaykK
KyAgICAgICAgICAgIG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9y
KTsKKyAgICB9CisgICAgbV9vbmVTaG90cy5jbGVhcigpOworICAgIAorICAgIEdlb05vdGlmaWVy
TWFwOjpjb25zdF9pdGVyYXRvciB3YXRjaGVyc0VuZCA9IG1fd2F0Y2hlcnMuZW5kKCk7CisgICAg
Zm9yIChHZW9Ob3RpZmllck1hcDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3dhdGNoZXJzLmJlZ2lu
KCk7IGl0ICE9IHdhdGNoZXJzRW5kOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxHZW9Ob3RpZmll
cj4gbm90aWZpZXIgPSAoKml0KS5zZWNvbmQ7CisgICAgICAgIAorICAgICAgICBpZiAobm90aWZp
ZXItPm1fZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgIG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJh
Y2stPmhhbmRsZUV2ZW50KGVycm9yKTsKKyAgICB9Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246Omdl
b2xvY2F0aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblNlcnZpY2UqIHNlcnZp
Y2UpCit7CisgICAgQVNTRVJUKHNlcnZpY2UtPmxhc3RQb3NpdGlvbigpKTsKKyAgICAKKyAgICBi
b29sIHNob3VsZENhbGxFcnJvckNhbGxiYWNrID0gZmFsc2U7CisgICAgR2VvTm90aWZpZXJTZXQ6
OmNvbnN0X2l0ZXJhdG9yIG9uZVNob3RzRW5kID0gbV9vbmVTaG90cy5lbmQoKTsKKyAgICBmb3Ig
KEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fb25lU2hvdHMuYmVnaW4oKTsg
aXQgIT0gb25lU2hvdHNFbmQ7ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBu
b3RpZmllciA9ICppdDsKKyAgICAgICAgQVNTRVJUKG5vdGlmaWVyLT5tX3N1Y2Nlc3NDYWxsYmFj
ayk7CisgICAgICAgIAorICAgICAgICBub3RpZmllci0+bV90aW1lci5zdG9wKCk7CisgICAgICAg
IG5vdGlmaWVyLT5tX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoc2VydmljZS0+bGFzdFBv
c2l0aW9uKCksIHNob3VsZENhbGxFcnJvckNhbGxiYWNrKTsKKyAgICAgICAgaWYgKHNob3VsZENh
bGxFcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gZXJy
b3IgPSBuZXcgUG9zaXRpb25FcnJvcig1LCAiSmF2YVNjcmlwdCBFcnJvciIpOworICAgICAgICAg
ICAgaGFuZGxlRXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisgICAgfQorICAgIAorICAgIEdlb05vdGlmaWVyTWFwOjpjb25zdF9pdGVyYXRvciB3YXRj
aGVyc0VuZCA9IG1fd2F0Y2hlcnMuZW5kKCk7CisgICAgZm9yIChHZW9Ob3RpZmllck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3dhdGNoZXJzLmJlZ2luKCk7IGl0ICE9IHdhdGNoZXJzRW5kOyAr
K2l0KSB7CisgICAgICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSAoKml0KS5zZWNv
bmQ7CisgICAgICAgIEFTU0VSVChub3RpZmllci0+bV9zdWNjZXNzQ2FsbGJhY2spOworICAgICAg
ICAKKyAgICAgICAgbm90aWZpZXItPm1fdGltZXIuc3RvcCgpOworICAgICAgICBub3RpZmllci0+
bV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KHNlcnZpY2UtPmxhc3RQb3NpdGlvbigpLCBz
aG91bGRDYWxsRXJyb3JDYWxsYmFjayk7CisgICAgICAgIGlmIChzaG91bGRDYWxsRXJyb3JDYWxs
YmFjaykgeworICAgICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gbmV3IFBv
c2l0aW9uRXJyb3IoNSwgIkphdmFTY3JpcHQgRXJyb3IiKTsKKyAgICAgICAgICAgIGhhbmRsZUVy
cm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KyAgICAKKyAgICBtX29uZVNob3RzLmNsZWFyKCk7CisgICAgc3RvcFVwZGF0aW5nSWZFbXB0eSgp
OworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpnZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3VycmVk
KEdlb2xvY2F0aW9uU2VydmljZSogc2VydmljZSkKK3sKKyAgICBBU1NFUlQoc2VydmljZS0+bGFz
dEVycm9yKCkpOworICAgIGhhbmRsZUVycm9yKHNlcnZpY2UtPmxhc3RFcnJvcigpKTsKK30KKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IEdlb2xvY2F0aW9uX2gKKyNkZWZpbmUgR2VvbG9jYXRpb25faAorCisjaW5jbHVkZSA8d3RmL1Bs
YXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNl
dC5oPgorI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
CisjaW5jbHVkZSAiR2VvbG9jYXRpb25TZXJ2aWNlLmgiCisjaW5jbHVkZSAiUG9zaXRpb25DYWxs
YmFjay5oIgorI2luY2x1ZGUgIlBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIlBv
c2l0aW9uT3B0aW9ucy5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRnJhbWU7CitjbGFzcyBHZW9wb3NpdGlvbjsKKworY2xhc3MgR2VvbG9jYXRp
b24gOiBwdWJsaWMgUmVmQ291bnRlZDxHZW9sb2NhdGlvbj4sIHB1YmxpYyBHZW9sb2NhdGlvblNl
cnZpY2VDbGllbnQgeworcHVibGljOgorICAgIEdlb2xvY2F0aW9uKEZyYW1lKik7CisgICAgdmly
dHVhbCB+R2VvbG9jYXRpb24oKSB7fQorCisgICAgdm9pZCBkaXNjb25uZWN0RnJhbWUoKTsKKyAg
ICAKKyAgICBHZW9wb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZXJ2
aWNlLT5sYXN0UG9zaXRpb24oKTsgfQorCisgICAgdm9pZCBnZXRDdXJyZW50UG9zaXRpb24oUGFz
c1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJh
Y2s+LCBQb3NpdGlvbk9wdGlvbnMqKTsKKyAgICBpbnQgd2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRy
PFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBv
c2l0aW9uT3B0aW9ucyopOworICAgIHZvaWQgY2xlYXJXYXRjaChpbnQgd2F0Y2hJZCk7CisKK3By
aXZhdGU6CisgICAgY2xhc3MgR2VvTm90aWZpZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHZW9Ob3Rp
Zmllcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgR2VvTm90aWZpZXIoUGFzc1JlZlB0cjxQb3Np
dGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+LCBQb3NpdGlv
bk9wdGlvbnMqKTsKKyAgICAgICAgCisgICAgICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxHZW9O
b3RpZmllcj4qKTsKKyAgICAgICAgCisgICAgICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBt
X3N1Y2Nlc3NDYWxsYmFjazsKKyAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4g
bV9lcnJvckNhbGxiYWNrOworICAgICAgICBUaW1lcjxHZW9Ob3RpZmllcj4gbV90aW1lcjsKKyAg
ICB9OworICAgIAorICAgIHZvaWQgc3RvcFVwZGF0aW5nSWZFbXB0eSgpOworICAgIHZvaWQgaGFu
ZGxlRXJyb3IoUG9zaXRpb25FcnJvciopOworCisgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9u
U2VydmljZVBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblNlcnZpY2UqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZChHZW9sb2NhdGlvblNlcnZpY2Uq
KTsKKyAgICAgICAgICAgIAorICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8R2VvTm90aWZpZXI+
ID4gR2VvTm90aWZpZXJTZXQ7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPEdlb05v
dGlmaWVyPiA+IEdlb05vdGlmaWVyTWFwOworICAgIAorICAgIEdlb05vdGlmaWVyU2V0IG1fb25l
U2hvdHM7CisgICAgR2VvTm90aWZpZXJNYXAgbV93YXRjaGVyczsKKyAgICBGcmFtZSogbV9mcmFt
ZTsKKyAgICBPd25QdHI8R2VvbG9jYXRpb25TZXJ2aWNlPiBtX3NlcnZpY2U7Cit9OworICAgIAor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR2VvbG9jYXRpb25faApJbmRleDog
V2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb24uaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9u
LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2Ug
WworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBHZW9sb2NhdGlvbiB7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBHZW9wb3NpdGlvbiBsYXN0UG9zaXRpb247CisKKyAgICAg
ICAgW0N1c3RvbV0gdm9pZCBnZXRDdXJyZW50UG9zaXRpb24oaW4gUG9zaXRpb25DYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2ssIGluIFBvc2l0aW9uRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLCBp
biBQb3NpdGlvbk9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICAgICAgW0N1c3RvbV0gbG9uZyB3YXRj
aFBvc2l0aW9uKGluIFBvc2l0aW9uQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBQb3NpdGlv
bkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaywgaW4gUG9zaXRpb25PcHRpb25zIG9wdGlvbnMp
OworCisgICAgICAgIHZvaWQgY2xlYXJXYXRjaChpbiBsb25nIHdhdGNoSWQpOworICAgIH07CisK
K30KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0dlb3Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9H
ZW9wb3NpdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkdlb3Bvc2l0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5n
IEdlb3Bvc2l0aW9uOjp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9y
bWF0KCJwb3NpdGlvbiglLjZsZywgJS42bGcsICUuNmxnICUuNmxnICUuNmxnICUuNmxnICUuNmxn
ICUubGxkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF0aXR1ZGUsIG1fbG9uZ2l0
dWRlLCBtX2FsdGl0dWRlLCBtX2FjY3VyYWN5LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
bV9hbHRpdHVkZUFjY3VyYWN5LCBtX2hlYWRpbmcsIG1fdmVsb2NpdHksIG1fdGltZXN0YW1wKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb3Bvc2l0
aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisj
aWZuZGVmIEdlb3Bvc2l0aW9uX2gKKyNkZWZpbmUgR2VvcG9zaXRpb25faAorCisjaW5jbHVkZSAi
RXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0
Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgR2VvcG9zaXRpb24gOiBw
dWJsaWMgUmVmQ291bnRlZDxHZW9wb3NpdGlvbj4geworcHVibGljOgorICAgIEdlb3Bvc2l0aW9u
KGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3Vi
bGUgYWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgaGVhZGluZywgZG91
YmxlIHZlbG9jaXR5LCBET01UaW1lU3RhbXAgdGltZXN0YW1wKQorICAgICAgICA6IG1fbGF0aXR1
ZGUobGF0aXR1ZGUpCisgICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQorICAgICAgICAs
IG1fYWx0aXR1ZGUoYWx0aXR1ZGUpCisgICAgICAgICwgbV9hY2N1cmFjeShhY2N1cmFjeSkKKyAg
ICAgICAgLCBtX2FsdGl0dWRlQWNjdXJhY3koYWx0aXR1ZGVBY2N1cmFjeSkKKyAgICAgICAgLCBt
X2hlYWRpbmcoaGVhZGluZykKKyAgICAgICAgLCBtX3ZlbG9jaXR5KHZlbG9jaXR5KQorICAgICAg
ICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKKyAgICB7CisgICAgfQorICAgIAorICAgIGRvdWJs
ZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF0aXR1ZGU7IH0KKyAgICBkb3VibGUgbG9u
Z2l0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sb25naXR1ZGU7IH0KKyAgICBkb3VibGUgYWx0aXR1
ZGUoKSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9CisgICAgZG91YmxlIGFjY3VyYWN5KCkg
Y29uc3QgeyByZXR1cm4gbV9hY2N1cmFjeTsgfQorICAgIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5
KCkgY29uc3QgeyByZXR1cm4gbV9hbHRpdHVkZUFjY3VyYWN5OyB9CisgICAgZG91YmxlIGhlYWRp
bmcoKSBjb25zdCB7IHJldHVybiBtX2hlYWRpbmc7IH0KKyAgICBkb3VibGUgdmVsb2NpdHkoKSBj
b25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgRE9NVGltZVN0YW1wIHRpbWVzdGFtcCgp
IGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CisKKyAgICBTdHJpbmcgdG9TdHJpbmcoKSBj
b25zdDsKKworcHJpdmF0ZToKKyAgICBkb3VibGUgbV9sYXRpdHVkZTsKKyAgICBkb3VibGUgbV9s
b25naXR1ZGU7CisgICAgZG91YmxlIG1fYWx0aXR1ZGU7CisgICAgZG91YmxlIG1fYWNjdXJhY3k7
CisgICAgZG91YmxlIG1fYWx0aXR1ZGVBY2N1cmFjeTsKKyAgICBkb3VibGUgbV9oZWFkaW5nOwor
ICAgIGRvdWJsZSBtX3ZlbG9jaXR5OworICAgIERPTVRpbWVTdGFtcCBtX3RpbWVzdGFtcDsKK307
CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHZW9wb3NpdGlvbl9o
CkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9HZW9wb3NpdGlvbi5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvR2Vv
cG9zaXRpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIEdlb3Bvc2l0aW9u
IHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBsYXRpdHVkZTsKKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBsb25naXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBkb3VibGUgYWx0aXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3Vi
bGUgYWNjdXJhY3k7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgYWx0aXR1ZGVB
Y2N1cmFjeTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBoZWFkaW5nCisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgdmVsb2NpdHkKKyAgICAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIERPTVRpbWVTdGFtcCB0aW1lc3RhbXA7CisKKyAgICAgICAgW0RvbnRFbnVtXSBE
T01TdHJpbmcgdG9TdHJpbmcoKTsKKyAgICB9OworfQpJbmRleDogV2ViQ29yZS9wYWdlL05hdmln
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHJldmlz
aW9uIDM3NTk0KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJHZW9sb2Nh
dGlvbi5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTWltZVR5cGVBcnJheS5o
IgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCkBAIC04Nyw2ICs4OCwxMCBAQCB2
b2lkIE5hdmlnYXRvcjo6ZGlzY29ubmVjdEZyYW1lKCkKICAgICAgICAgbV9taW1lVHlwZXMtPmRp
c2Nvbm5lY3RGcmFtZSgpOwogICAgICAgICBtX21pbWVUeXBlcyA9IDA7CiAgICAgfQorICAgIGlm
IChtX2dlb2xvY2F0aW9uKSB7CisgICAgICAgIG1fZ2VvbG9jYXRpb24tPmRpc2Nvbm5lY3RGcmFt
ZSgpOworICAgICAgICBtX2dlb2xvY2F0aW9uID0gMDsKKyAgICB9CiAgICAgbV9mcmFtZSA9IDA7
CiB9CiAKQEAgLTE5Nyw0ICsyMDIsMTggQEAgYm9vbCBOYXZpZ2F0b3I6Om9uTGluZSgpIGNvbnN0
CiAgICAgcmV0dXJuIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkub25MaW5lKCk7CiB9CiAKK0dlb2xv
Y2F0aW9uKiBOYXZpZ2F0b3I6Omdlb2xvY2F0aW9uKCkgY29uc3QKK3sKKyNpZiBFTkFCTEUoR0VP
TE9DQVRJT04pCisgICAgaWYgKEdlb2xvY2F0aW9uU2VydmljZTo6aXNBdmFpbGFibGUoKSkgewor
ICAgICAgICBpZiAoIW1fZ2VvbG9jYXRpb24pCisgICAgICAgICAgICBtX2dlb2xvY2F0aW9uID0g
bmV3IEdlb2xvY2F0aW9uKG1fZnJhbWUpOworICAgICAgICByZXR1cm4gbV9nZW9sb2NhdGlvbi5n
ZXQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIHJldHVybiAw
OworI2VuZGlmCit9CisgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRvci5o
CShyZXZpc2lvbiAzNzU5NCkKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkod29ya2luZyBj
b3B5KQpAQCAtMjcsNiArMjcsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3Mg
RnJhbWU7CisgICAgY2xhc3MgR2VvbG9jYXRpb247CiAgICAgY2xhc3MgTWltZVR5cGVBcnJheTsK
ICAgICBjbGFzcyBQbHVnaW5EYXRhOwogICAgIGNsYXNzIFBsdWdpbkFycmF5OwpAQCAtNTYsMTEg
KzU3LDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBqYXZhRW5hYmxlZCgp
IGNvbnN0OwogCiAgICAgICAgIGJvb2wgb25MaW5lKCkgY29uc3Q7CisgICAgICAgIEdlb2xvY2F0
aW9uKiBnZW9sb2NhdGlvbigpIGNvbnN0OworICAgICAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIEdD
IG1hcmtpbmcuCisgICAgICAgIEdlb2xvY2F0aW9uKiBvcHRpb25hbEdlb2xvY2F0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9nZW9sb2NhdGlvbi5nZXQoKTsgfQogICAgIHByaXZhdGU6CiAgICAgICAg
IE5hdmlnYXRvcihGcmFtZSopOwogICAgICAgICBGcmFtZSogbV9mcmFtZTsKICAgICAgICAgbXV0
YWJsZSBSZWZQdHI8UGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKICAgICAgICAgbXV0YWJsZSBSZWZQ
dHI8TWltZVR5cGVBcnJheT4gbV9taW1lVHlwZXM7CisgICAgICAgIG11dGFibGUgUmVmUHRyPEdl
b2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGFn
ZS9OYXZpZ2F0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRs
CShyZXZpc2lvbiAzNzU5NCkKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCSh3b3JraW5n
IGNvcHkpCkBAIC0xOSw3ICsxOSw5IEBACiAKIG1vZHVsZSB3aW5kb3cgewogCi0gICAgaW50ZXJm
YWNlIE5hdmlnYXRvciB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ3VzdG9tTWFya0Z1bmN0
aW9uCisgICAgXSBOYXZpZ2F0b3IgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGFwcENvZGVOYW1lOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFw
cE5hbWU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBET01TdHJp
bmcgYXBwVmVyc2lvbjsKQEAgLTM2LDYgKzM4LDcgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAg
IGJvb2xlYW4gamF2YUVuYWJsZWQoKTsKICAgICAgICAgCiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBib29sZWFuIG9uTGluZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEdlb2xvY2F0
aW9uIGdlb2xvY2F0aW9uOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlv
bkNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0aW9uQ2FsbGJhY2su
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBQb3NpdGlvbkNhbGxiYWNrX2gKKyNkZWZpbmUgUG9zaXRp
b25DYWxsYmFja19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisgICAgY2xhc3MgR2Vv
cG9zaXRpb247CisgICAgCisgICAgY2xhc3MgUG9zaXRpb25DYWxsYmFjayA6IHB1YmxpYyBSZWZD
b3VudGVkPFBvc2l0aW9uQ2FsbGJhY2s+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwg
flBvc2l0aW9uQ2FsbGJhY2soKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50
KEdlb3Bvc2l0aW9uKiBwb3NpdGlvbiwgYm9vbCYgcmFpc2VkRXhjZXB0aW9uKSA9IDA7CisgICAg
fTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBvc2l0aW9uQ2Fs
bGJhY2tfaApJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uQ2FsbGJhY2suaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmlkbAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMg
UmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCitt
b2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVj
dG9yCisgICAgXSBQb3NpdGlvbkNhbGxiYWNrIHsKKyAgICAgICAgdm9pZCBoYW5kbGVFdmVudChp
biBHZW9wb3NpdGlvbiBwb3NpdGlvbik7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9wYWdl
L1Bvc2l0aW9uRXJyb3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJv
ci5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIFBvc2l0aW9uRXJyb3JfaAorI2RlZmluZSBQb3NpdGlvbkVy
cm9yX2gKKworI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworICAgIAorY2xhc3MgUG9zaXRpb25FcnJvciA6IHB1YmxpYyBSZWZDb3VudGVkPFBvc2l0aW9u
RXJyb3I+IHsKK3B1YmxpYzoKKyAgICBQb3NpdGlvbkVycm9yKGludCBjb2RlLCBjb25zdCBTdHJp
bmcmIG1lc3NhZ2UpIAorICAgICAgICA6IG1fY29kZShjb2RlKQorICAgICAgICAsIG1fbWVzc2Fn
ZShtZXNzYWdlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgaW50IGNvZGUoKSBjb25zdCB7IHJl
dHVybiBtX2NvZGU7IH0KKyAgICB2b2lkIHNldENvZGUoaW50IGNvZGUpIHsgbV9jb2RlID0gY29k
ZTsgfQorICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbWVzc2Fn
ZTsgfQorICAgIHZvaWQgc2V0TWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsgbV9tZXNz
YWdlID0gbWVzc2FnZTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBpbnQgbV9jb2RlOworICAgIFN0
cmluZyBtX21lc3NhZ2U7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gUG9zaXRpb25FcnJvcl9oCkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvci5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaWRsCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaWRsCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29u
c3RydWN0b3IKKyAgICBdIFBvc2l0aW9uRXJyb3IgeworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgbG9uZyBjb2RlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIG1lc3Nh
Z2U7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFj
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBvc2l0aW9uRXJyb3JDYWxsYmFja19oCisjZGVmaW5l
IFBvc2l0aW9uRXJyb3JDYWxsYmFja19oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNp
bmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBj
bGFzcyBQb3NpdGlvbkVycm9yOworCisgICAgY2xhc3MgUG9zaXRpb25FcnJvckNhbGxiYWNrIDog
cHVibGljIFJlZkNvdW50ZWQ8UG9zaXRpb25FcnJvckNhbGxiYWNrPiB7CisgICAgcHVibGljOgor
ICAgICAgICB2aXJ0dWFsIH5Qb3NpdGlvbkVycm9yQ2FsbGJhY2soKSB7IH0KKyAgICAgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUV2ZW50KFBvc2l0aW9uRXJyb3IqIHBvc2l0aW9uKSA9IDA7CisgICAg
fTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBvc2l0aW9uRXJy
b3JDYWxsYmFja19oCkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbAko
cmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBbCisgICAg
ICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIFBvc2l0aW9uRXJyb3JDYWxsYmFjayB7Cisg
ICAgICAgIHZvaWQgaGFuZGxlRXZlbnQoaW4gUG9zaXRpb25FcnJvciBlcnJvcik7CisgICAgfTsK
KworfQpJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUv
cGFnZS9Qb3NpdGlvbk9wdGlvbnMuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBvc2l0
aW9uT3B0aW9uc19oCisjZGVmaW5lIFBvc2l0aW9uT3B0aW9uc19oCisKKyNpbmNsdWRlIDx3dGYv
UGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgCisgICAgY2xhc3MgUG9zaXRpb25PcHRpb25zIDogcHVibGljIFJlZkNvdW50
ZWQ8UG9zaXRpb25PcHRpb25zPiB7CisgICAgcHVibGljOgorICAgICAgICBQb3NpdGlvbk9wdGlv
bnMoYm9vbCBoaWdoQWNjdXJhY3kgPSBmYWxzZSwgbG9uZyB0aW1lb3V0ID0gLTEpCisgICAgICAg
ICAgICA6IG1faGlnaEFjY3VyYWN5KGhpZ2hBY2N1cmFjeSkKKyAgICAgICAgICAgICwgbV90aW1l
b3V0KHRpbWVvdXQpCisgICAgICAgIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYm9v
bCBlbmFibGVIaWdoQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2hpZ2hBY2N1cmFjeTsgfQor
ICAgICAgICB2b2lkIHNldEVuYWJsZUhpZ2hBY2N1cmFjeShib29sIGVuYWJsZSkgeyBtX2hpZ2hB
Y2N1cmFjeSA9IGVuYWJsZTsgfQorICAgICAgICBsb25nIHRpbWVvdXQoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVvdXQ7IH0KKyAgICAgICAgdm9pZCBzZXRUaW1lb3V0KGxvbmcgdCkgeyBtX3RpbWVv
dXQgPSB0OyB9CisgICAgICAgIAorICAgIHByaXZhdGU6CisgICAgICAgIGJvb2wgbV9oaWdoQWNj
dXJhY3k7CisgICAgICAgIGxvbmcgbV90aW1lb3V0OworICAgIH07CisgICAgCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3NpdGlvbk9wdGlvbnNfaApJbmRleDogV2ViQ29y
ZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bv
c2l0aW9uT3B0aW9ucy5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25P
cHRpb25zLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRl
cmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBQb3NpdGlvbk9wdGlv
bnMgeworICAgICAgICBhdHRyaWJ1dGUgYm9vbGVhbiBlbmFibGVIaWdoQWNjdXJhY3k7CisgICAg
ICAgIGF0dHJpYnV0ZSBsb25nIHRpbWVvdXQ7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9w
bGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJHZW9sb2NhdGlvblNlcnZpY2UuaCIKKyNpbmNsdWRl
ICJHZW9wb3NpdGlvbi5oIgorI2luY2x1ZGUgIlBvc2l0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJQ
b3NpdGlvbk9wdGlvbnMuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHZW9sb2NhdGlvblNl
cnZpY2U6Okdlb2xvY2F0aW9uU2VydmljZShHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQqIGNsaWVu
dCkKKyAgICA6IG1fZ2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KGNsaWVudCkKK3sKK30KKwordm9p
ZCBHZW9sb2NhdGlvblNlcnZpY2U6OnBvc2l0aW9uQ2hhbmdlZCgpCit7CisgICAgaWYgKG1fZ2Vv
bG9jYXRpb25TZXJ2aWNlQ2xpZW50KQorICAgICAgICBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVu
dC0+Z2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKHRoaXMpOworfQorCit2b2lkIEdl
b2xvY2F0aW9uU2VydmljZTo6ZXJyb3JPY2N1cnJlZCgpCit7CisgICAgaWYgKG1fZ2VvbG9jYXRp
b25TZXJ2aWNlQ2xpZW50KQorICAgICAgICBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudC0+Z2Vv
bG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZCh0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZS5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIEdlb2xvY2F0aW9uU2VydmljZV9oCisjZGVmaW5lIEdlb2xvY2F0
aW9uU2VydmljZV9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBHZW9sb2NhdGlvblNlcnZpY2U7CitjbGFzcyBHZW9wb3NpdGlv
bjsKK2NsYXNzIFBvc2l0aW9uRXJyb3I7CitjbGFzcyBQb3NpdGlvbk9wdGlvbnM7CisKK2NsYXNz
IEdlb2xvY2F0aW9uU2VydmljZUNsaWVudAoreworcHVibGljOgorICAgIHZpcnR1YWwgfkdlb2xv
Y2F0aW9uU2VydmljZUNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvblNl
cnZpY2VQb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25TZXJ2aWNlKikgeyB9CisgICAgdmlydHVh
bCB2b2lkIGdlb2xvY2F0aW9uU2VydmljZUVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25TZXJ2aWNl
KikgeyB9Cit9OworCitjbGFzcyBHZW9sb2NhdGlvblNlcnZpY2UgOiBwdWJsaWMgTm9uY29weWFi
bGUgeworcHVibGljOgorICAgIHN0YXRpYyBHZW9sb2NhdGlvblNlcnZpY2UqIGNyZWF0ZShHZW9s
b2NhdGlvblNlcnZpY2VDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvblNlcnZpY2Uo
KSB7fQorICAgIAorICAgIHN0YXRpYyBib29sIGlzQXZhaWxhYmxlKCk7CisgICAgCisgICAgdmly
dHVhbCBib29sIHN0YXJ0VXBkYXRpbmcoUG9zaXRpb25PcHRpb25zKikgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSA9IDA7CisgICAgCisgICAgdmlydHVhbCBHZW9wb3NpdGlv
biogbGFzdFBvc2l0aW9uKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgUG9zaXRpb25FcnJvciog
bGFzdEVycm9yKCkgY29uc3QgPSAwOworCisgICAgdm9pZCBwb3NpdGlvbkNoYW5nZWQoKTsKKyAg
ICB2b2lkIGVycm9yT2NjdXJyZWQoKTsKKworcHJvdGVjdGVkOgorICAgIEdlb2xvY2F0aW9uU2Vy
dmljZShHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQqKTsKKworcHJpdmF0ZToKKyAgICBHZW9sb2Nh
dGlvblNlcnZpY2VDbGllbnQqIG1fZ2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50OworfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdlb2xvY2F0aW9uU2VydmljZV9o
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24365</attachid>
            <date>2008-10-15 13:11:44 -0700</date>
            <delta_ts>2008-10-16 11:41:26 -0700</delta_ts>
            <desc>Address navigator properties enumeration, add test for when Geolocation is not implmented</desc>
            <filename>GeoLocation-WebKit.org.patch.txt</filename>
            <type>text/plain</type>
            <size>105860</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3NjA5KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDgtMTAtMTUgIEdyZWcgQm9s
c2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDc1CisgICAgICAgIAorICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9s
b2NhdGlvbiBBUEkKKyAgICAgICAgCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkv
c3BlYy1zb3VyY2UuaHRtbAorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEVOQUJMRV9HRU9M
T0NBVElPTiBkZWZhdWx0cyB0byAwCisKIDIwMDgtMTAtMTUgIEpvZXJnIEJvcm5lbWFubiAgPGpv
ZXJnLmJvcm5lbWFubkB0cm9sbHRlY2guY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmlu
IEFkbGVyLgpJbmRleDogSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHJldmlzaW9uIDM3NjA5KQorKysgSmF2
YVNjcmlwdENvcmUvd3RmL1BsYXRmb3JtLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0Myw2ICszNDMs
MTAgQEAKICNkZWZpbmUgRU5BQkxFX1NBTVBMSU5HX1RPT0wgMAogI2VuZGlmCiAKKyNpZiAhZGVm
aW5lZChFTkFCTEVfR0VPTE9DQVRJT04pCisjZGVmaW5lIEVOQUJMRV9HRU9MT0NBVElPTiAwCisj
ZW5kaWYKKwogLy8gQ1RJIG9ubHkgc3VwcG9ydHMgeDg2IGF0IHRoZSBtb21lbnQsIGFuZCBoYXMg
b25seSBiZWVuIHRlc3RlZCBvbiBNYWMgYW5kIFdpbmRvd3MuCiAjaWYgIWRlZmluZWQoRU5BQkxF
X0NUSSkgJiYgUExBVEZPUk0oWDg2KSAmJiAoUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShXSU4p
KQogI2RlZmluZSBFTkFCTEVfQ1RJIDEKSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNzYwOSkKKysrIFdlYkNvcmUvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTA1IEBACisyMDA4LTEwLTE1ICBHcmVn
IEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTQ3NQorICAgICAgICAKKyAgICAgICAgUHJvdmlkZSBzdXBwb3J0IGZvciB0aGUg
R2VvbG9jYXRpb24gQVBJCisgICAgICAgIAorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9nZW8v
YXBpL3NwZWMtc291cmNlLmh0bWwKKworICAgICAgICBUZXN0OiBnZW9sb2NhdGlvbi9nZW9sb2Nh
dGlvbi1ub3QtaW1wbGVtZW50ZWQuaHRtbAorCisgICAgICAgICogRGVyaXZlZFNvdXJjZXMubWFr
ZTogCisgICAgICAgICogR05VbWFrZWZpbGUuYW06IEFkZGVkIEdlb2xvY2F0aW9uIHN1cHBvcnQK
KyAgICAgICAgKiBXZWJDb3JlLnBybzogQWRkZWQgR2VvbG9jYXRpb24gc3VwcG9ydAorICAgICAg
ICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBBZGRlZCBHZW9sb2NhdGlvbiBzdXBw
b3J0CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBH
ZW9sb2NhdGlvbiBzdXBwb3J0CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOiBBZGRlZCBH
ZW9sb2NhdGlvbiBzdXBwb3J0CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlv
bkNhbGxiYWNrLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0aW9u
Q2FsbGJhY2s6OkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpK
U0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3Jl
OjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
anMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uRXJy
b3JDYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxs
YmFjazo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRp
b25FcnJvckNhbGxiYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3Np
dGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcDogbW92ZSBtYXJrRE9NT2JqZWN0V3JhcHBlciBoZXJlIGZyb20gSlNET01XaW5k
b3dDdXN0b20KKyAgICAgICAgKFdlYkNvcmU6Om1hcmtET01PYmplY3RXcmFwcGVyKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaDogbW92ZSBtYXJrRE9NT2JqZWN0V3JhcHBl
ciBoZXJlIGZyb20gSlNET01XaW5kb3dDdXN0b20KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0N1c3RvbS5jcHA6IG1vdmUgbWFya0RPTU9iamVjdFdyYXBwZXIgdG8gSlNET01CaW5k
aW5nCisgICAgICAgICogYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6SlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24pOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcDogaGFuZGxlIG1hcmtpbmcgR2Vv
bG9jYXRpb24KKyAgICAgICAgKFdlYkNvcmU6OkpTTmF2aWdhdG9yOjptYXJrKToKKyAgICAgICAg
KiBwYWdlL0dlb2xvY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvbjo6R2VvTm90aWZpZXI6Okdlb05vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uOjpHZW9Ob3RpZmllcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbjo6R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmRp
c2Nvbm5lY3RGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Z2V0Q3VycmVu
dFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpjbGVhcldhdGNoKToKKyAgICAgICAg
KFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9wVXBkYXRpbmdJZkVtcHR5KToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uOjpoYW5kbGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6Okdlb2xvY2F0aW9uOjpnZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3VycmVkKToKKyAg
ICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2Vv
bG9jYXRpb246On5HZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6
bGFzdFBvc2l0aW9uKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmlkbDogQWRkZWQuCisg
ICAgICAgICogcGFnZS9HZW9wb3NpdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
R2VvcG9zaXRpb246OnRvU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL0dlb3Bvc2l0aW9uLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246Okdlb3Bvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjpsYXRpdHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9wb3NpdGlvbjo6bG9uZ2l0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjph
bHRpdHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6YWNjdXJhY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OmFsdGl0dWRlQWNjdXJhY3kpOgorICAgICAgICAo
V2ViQ29yZTo6R2VvcG9zaXRpb246OmhlYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9z
aXRpb246OnZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjp0aW1lc3Rh
bXApOgorICAgICAgICAqIHBhZ2UvR2VvcG9zaXRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBw
YWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OmRpc2Nvbm5l
Y3RGcmFtZSk6IGRpc2Nvbm5lY3QgR2VvbG9jYXRpb24KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmln
YXRvcjo6Z2VvbG9jYXRpb24pOiBhY2Nlc3NvciBmb3IgR2VvbG9jYXRpb24KKyAgICAgICAgKiBw
YWdlL05hdmlnYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpvcHRpb25hbEdl
b2xvY2F0aW9uKTogYWNjZXNzb3IgZm9yIEdlb2xvY2F0aW9uCisgICAgICAgICogcGFnZS9OYXZp
Z2F0b3IuaWRsOiBhY2Nlc3NvciBmb3IgR2VvbG9jYXRpb24KKyAgICAgICAgKiBwYWdlL1Bvc2l0
aW9uQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkNhbGxiYWNr
Ojp+UG9zaXRpb25DYWxsYmFjayk6CisgICAgICAgICogcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmlk
bDogQWRkZWQuCisgICAgICAgICogcGFnZS9Qb3NpdGlvbkVycm9yLmg6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6UG9zaXRpb25FcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjpQb3NpdGlvbkVycm9yOjpjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJy
b3I6OnNldENvZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6bWVzc2FnZSk6
CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpzZXRNZXNzYWdlKToKKyAgICAgICAg
KiBwYWdlL1Bvc2l0aW9uRXJyb3IuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9u
RXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3JD
YWxsYmFjazo6flBvc2l0aW9uRXJyb3JDYWxsYmFjayk6CisgICAgICAgICogcGFnZS9Qb3NpdGlv
bkVycm9yQ2FsbGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uT3B0aW9u
cy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6UG9zaXRpb25P
cHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6ZW5hYmxlSGlnaEFj
Y3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6c2V0RW5hYmxlSGln
aEFjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6dGltZW91dCk6
CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OnNldFRpbWVvdXQpOgorICAgICAg
ICAqIHBhZ2UvUG9zaXRpb25PcHRpb25zLmlkbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0v
R2VvbG9jYXRpb25TZXJ2aWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvblNlcnZpY2U6Okdlb2xvY2F0aW9uU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvblNlcnZpY2U6OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvblNlcnZpY2U6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL0dlb2xv
Y2F0aW9uU2VydmljZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2Vy
dmljZUNsaWVudDo6fkdlb2xvY2F0aW9uU2VydmljZUNsaWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQ6Omdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9uQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQ6Omdlb2xv
Y2F0aW9uU2VydmljZUVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b25TZXJ2aWNlOjp+R2VvbG9jYXRpb25TZXJ2aWNlKToKKwogMjAwOC0xMC0xNSAgRGlyayBTY2h1
bHplICA8dmJzODVAZ214LmRlPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJ
bmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMzc2MDkpCisrKyBXZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDggQEAgRE9NX0NMQVNTRVMg
PSBcCiAgICAgRXZlbnRUYXJnZXROb2RlIFwKICAgICBGaWxlIFwKICAgICBGaWxlTGlzdCBcCisg
ICAgR2VvbG9jYXRpb24gXAorICAgIEdlb3Bvc2l0aW9uIFwKICAgICBIVE1MQW5jaG9yRWxlbWVu
dCBcCiAgICAgSFRNTEFwcGxldEVsZW1lbnQgXAogICAgIEhUTUxBcmVhRWxlbWVudCBcCkBAIC0x
NzksNiArMTgxLDEwIEBAIERPTV9DTEFTU0VTID0gXAogICAgIE92ZXJmbG93RXZlbnQgXAogICAg
IFBsdWdpbiBcCiAgICAgUGx1Z2luQXJyYXkgXAorICAgIFBvc2l0aW9uQ2FsbGJhY2sgXAorICAg
IFBvc2l0aW9uRXJyb3IgXAorICAgIFBvc2l0aW9uRXJyb3JDYWxsYmFjayBcCisgICAgUG9zaXRp
b25PcHRpb25zIFwKICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gXAogICAgIFByb2dyZXNzRXZl
bnQgXAogICAgIFJHQkNvbG9yIFwKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMzc2MDkpCisrKyBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDEwIEBAIHdl
YmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmlu
Z0NvbnRleHQyREN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRD
dXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAgXAor
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCBcCisJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCBcCisJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgXAorCVdlYkNvcmUv
YmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVhQYXRoTlNSZXNvbHZlci5jcHAgXApAQCAtMzQ3LDYgKzM1MSw3IEBAIHdlYmNvcmVfc291cmNl
cyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmggXAogCVdlYkNvcmUv
YmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2UuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9s
b2NhdGlvbkN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVj
dGlvbi5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbi5oIFwK
IAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIFwKQEAg
LTExODYsNiArMTE5MSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGFnZS9G
cmFtZVRyZWUuaCBcCiAJV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgXAogCVdlYkNvcmUvcGFn
ZS9GcmFtZVZpZXcuaCBcCisJV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcCBcCisJV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uLmggXAorCVdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5jcHAgXAor
CVdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5oIFwKIAlXZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAg
XAogCVdlYkNvcmUvcGFnZS9IaXN0b3J5LmggXAogCVdlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAg
XApAQCAtMTE5OCw2ICsxMjA3LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9w
YWdlL1BhZ2UuaCBcCiAJV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgXAogCVdlYkNvcmUvcGFn
ZS9QYWdlR3JvdXAuaCBcCisJV2ViQ29yZS9wYWdlL1Bvc2l0aW9uQ2FsbGJhY2suaCBcCisJV2Vi
Q29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaCBcCisJV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JD
YWxsYmFjay5oIFwKKwlXZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmggXAogCVdlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmggXAog
CVdlYkNvcmUvcGFnZS9TY3JlZW4uY3BwIFwKQEAgLTEyNDMsNiArMTI1Niw4IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIFwKIAlXZWJDb3Jl
L3BsYXRmb3JtL0ZpbGVTeXN0ZW0uaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdENvbnZlcnNp
b24uaCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwIFwKKwlXZWJD
b3JlL3BsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0hv
c3RXaW5kb3cuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBcCiAJV2ViQ29yZS9wbGF0
Zm9ybS9LVVJMLmggXApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnBybwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiAzNzYwOSkKKysrIFdlYkNvcmUvV2ViQ29yZS5w
cm8JKHdvcmtpbmcgY29weSkKQEAgLTc3NSw2ICs3NzUsOCBAQCBTT1VSQ0VTICs9IFwKICAgICBw
YWdlL0ZyYW1lLmNwcCBcCiAgICAgcGFnZS9GcmFtZVRyZWUuY3BwIFwKICAgICBwYWdlL0ZyYW1l
Vmlldy5jcHAgXAorICAgIHBhZ2UvR2VvbG9jYXRpb24uY3BwIFwKKyAgICBwYWdlL0dlb3Bvc2l0
aW9uLmNwcCBcCiAgICAgcGFnZS9IaXN0b3J5LmNwcCBcCiAgICAgcGFnZS9Mb2NhdGlvbi5jcHAg
XAogICAgIHBhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAgXApAQCAtODAyLDYg
KzgwNCw3IEBAIFNPVVJDRVMgKz0gXAogICAgIHBsYXRmb3JtL0RyYWdEYXRhLmNwcCBcCiAgICAg
cGxhdGZvcm0vRHJhZ0ltYWdlLmNwcCBcCiAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwIFwK
KyAgICBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250RGVzY3JpcHRpb24uY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFt
aWx5LmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvQWZmaW5lVHJhbnNmb3JtLmNwcCBcCkBA
IC0xMTk3LDcgKzEyMDAsMTAgQEAgY29udGFpbnMoREVGSU5FUywgRU5BQkxFX0RBVEFCQVNFPTEp
IHsKICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkVycm9yQ2FsbGJh
Y2suY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNEYXRhYmFzZUN1c3RvbS5jcHAgXAogICAg
ICAgICBiaW5kaW5ncy9qcy9KU1NRTFJlc3VsdFNldFJvd0xpc3RDdXN0b20uY3BwIFwKLSAgICAg
ICAgYmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAKKyAgICAgICAgYmluZGlu
Z3MvanMvSlNTUUxUcmFuc2FjdGlvbkN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9K
U0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9z
aXRpb25DYWxsYmFjay5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9u
RXJyb3JDYWxsYmFjay5jcHAKIAogICAgIElETF9CSU5ESU5HUyArPSBcCiAgICAgICAgIHN0b3Jh
Z2UvRGF0YWJhc2UuaWRsIFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCShyZXZpc2lvbiAzNzYwOSkKKysr
IFdlYkNvcmUvV2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miw4
IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNDU1NSdWxlQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0NTU1N0
eWxlRGVjbGFyYXRpb25DdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ1NTVmFsdWVD
dXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5j
cHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3Bw
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAK
ICAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21TUUxUcmFuc2FjdGlvbkNhbGxiYWNrLmNwcApA
QCAtNTksNiArNjEsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVl
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTRXZlbnRUYXJnZXQuY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRO
b2RlQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNw
cAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uLmNwcAogICAgICAgICBi
aW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRN
TEFwcGxldEVsZW1lbnRDdXN0b20uY3BwCkBAIC0yMzgsNiArMjQxLDggQEAgVGhpcyBmaWxlIGNv
bnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJD
b3JlL0pTRXZlbnRUYXJnZXROb2RlLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTRmlsZS5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGVMaXN0LmNw
cAorICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2VvbG9jYXRpb24uY3BwCisgICAg
ICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHZW9wb3NpdGlvbi5jcHAKICAgICAgICAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxBbmNob3JFbGVtZW50LmNwcAogICAgICAgICBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEFwcGxldEVsZW1lbnQuY3BwCiAgICAgICAgIERlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MQXJlYUVsZW1lbnQuY3BwCkBAIC0zMjIsNiArMzI3LDgg
QEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTT3ZlcmZsb3dFdmVudC5jcHAKICAgICAgICAgRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU1BsdWdpbi5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU1BsdWdpbkFycmF5LmNwcAorICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUG9z
aXRpb25FcnJvci5jcHAKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bvc2l0aW9u
T3B0aW9ucy5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Byb2dyZXNz
RXZlbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNSYW5nZS5jcHAKQEAg
LTY2OCw2ICs2NzUsOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVl
CiAgICAgICAgIHBhZ2UvRnJhbWUuY3BwCiAgICAgICAgIHBhZ2UvRnJhbWVUcmVlLmNwcAogICAg
ICAgICBwYWdlL0ZyYW1lVmlldy5jcHAKKyAgICAgICAgcGFnZS9HZW9sb2NhdGlvbi5jcHAKKyAg
ICAgICAgcGFnZS9HZW9wb3NpdGlvbi5jcHAKICAgICAgICAgcGFnZS9IaXN0b3J5LmNwcAogICAg
ICAgICBwYWdlL0xvY2F0aW9uLmNwcAogICAgICAgICBwYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHMuY3BwCkBAIC02OTEsNiArNzAwLDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBs
aXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBwbGF0Zm9ybS9EZXByZWNhdGVkVmFsdWVMaXN0SW1w
bC5jcHAKICAgICAgICAgcGxhdGZvcm0vRHJhZ0ltYWdlLmNwcAogICAgICAgICBwbGF0Zm9ybS9G
aWxlQ2hvb3Nlci5jcHAKKyAgICAgICAgcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcAog
ICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFw
aGljcy9Gb250Q2FjaGUuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREYXRhLmNw
cApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAzNzYw
OSkKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29w
eSkKQEAgLTY4MCw2ICs2ODAsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQor
CQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxE
ZXJpdmVkU291cmNlc1xKU0dlb2xvY2F0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTR2VvcG9zaXRpb24uaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFdmVudC5oIg0KIAkJCQk+DQogCQkJPC9G
aWxlPg0KQEAgLTEwNDAsNiArMTA0OCwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTUG9zaXRpb25FcnJvci5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwk
KFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Bvc2l0aW9uT3B0aW9ucy5oIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRw
dXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU092ZXJmbG93RXZlbnQu
aCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0yMjYwLDYgKzIyNzYsMzggQEAKIAkJCQk+DQog
CQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxHZW9sb2Nh
dGlvbi5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJS
ZWxlYXNlX1BHT3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkND
TENvbXBpbGVyVG9vbCINCisJCQkJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249InRydWUiDQor
CQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcR2VvbG9jYXRpb24uaCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcR2VvcG9zaXRp
b24uY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVs
ZWFzZV9QR098V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xD
b21waWxlclRvb2wiDQorCQkJCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0KKwkJ
CQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEdlb3Bvc2l0aW9uLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEhpc3RvcnkuY3Bw
Ig0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTIzODgsNiArMjQzNiwyMiBA
QAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxw
YWdlXFBvc2l0aW9uQ2FsbGJhY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUG9zaXRpb25FcnJvci5oIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxQb3NpdGlvbkVy
cm9yQ2FsbGJhY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9Ii4uXHBhZ2VcUG9zaXRpb25PcHRpb25zLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXFNjcmVlbi5jcHAiDQogCQkJ
CT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMzA0MCw2ICszMTA0LDE0IEBACiAJCQkJ
Pg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRmb3Jt
XEdlb2xvY2F0aW9uU2VydmljZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxHZW9sb2NhdGlvblNlcnZpY2UuaCINCisJ
CQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXEhvc3RXaW5kb3cuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0xMzEyOSw2ICsxMzIw
MSwxNCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCINCisJCQkJ
CT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAiDQorCQkJCQk+DQorCQkJ
CTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNc
SlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4N
CkBAIC0xMzI1Nyw2ICsxMzMzNywxMCBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4NCiAJCQkJPEZp
bGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNHZW9sb2NhdGlvbkN1c3Rv
bS5jcHAiDQorCQkJCQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCiAJCQkJCVJlbGF0aXZl
UGF0aD0iLi5cYmluZGluZ3NcanNcSlNIaXN0b3J5Q3VzdG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJ
PC9GaWxlPg0KSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiAzNzYwOSkKKysrIFdlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC00MjIwLDYgKzQyMjAsMzUgQEAKIAkJRjkxNkM0OEQw
REI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhCMERCNTEw
RjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgKi87IH07CiAJ
CUY5MTZDNDhFMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0
OEMwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87
IH07CiAJCUY5RjBFRDdBMERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNz
RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5
RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAq
LzsgfTsKKwkJRkU4MEQ3QTcwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxs
YmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTgwRDdBMjBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCAq
LzsgfTsKKwkJRkU4MEQ3QTgwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4
MEQ3QTMwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oICovOyB9
OworCQlGRTgwRDdBOTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU4MEQ3QTQwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
LmNwcCAqLzsgfTsKKwkJRkU4MEQ3QUEwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRp
b25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9y
Q2FsbGJhY2suaCAqLzsgfTsKKwkJRkU4MEQ3QUIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9j
YXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3Bw
ICovOyB9OworCQlGRTgwRDdDNTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QjcwRTlD
MUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCAqLzsgfTsKKwkJRkU4MEQ3QzYwRTlDMUYy
NTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCODBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24u
aCAqLzsgfTsKKwkJRkU4MEQ3QzcwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmlkbCBp
biBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3Qjkw
RTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmlkbCAqLzsgfTsKKwkJRkU4MEQ3QzgwRTlD
MUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JBMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3Np
dGlvbi5jcHAgKi87IH07CisJCUZFODBEN0M5MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3
QkIwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi87IH07CisJCUZFODBEN0NBMEU5
QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9w
b3NpdGlvbi5pZGwgKi87IH07CisJCUZFODBEN0NCMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlv
bkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5oICovOyB9Owor
CQlGRTgwRDdDQzBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5pZGwgaW4gUmVz
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JFMEU5QzFG
MjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAqLzsgfTsKKwkJRkU4MEQ3Q0QwRTlD
MUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JGMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlv
bkVycm9yLmggKi87IH07CisJCUZFODBEN0NFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVy
cm9yLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU4MEQ3QzAwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaWRsICovOyB9OworCQlG
RTgwRDdDRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdDMTBFOUMxRjI1
MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggKi87IH07CisJCUZFODBEN0QwMEU5
QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsIGluIFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdDMjBFOUMxRjI1MDAwRDZG
NzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbCAqLzsgfTsKKwkJRkU4MEQ3RDEwRTlDMUYy
NTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzMwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9u
T3B0aW9ucy5oICovOyB9OworCQlGRTgwRDdEMjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25P
cHRpb25zLmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4MEQ3QzQwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5pZGwgKi87IH07
CisJCUZFODBEQTYzMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTVGMEU5QzQ3MDMw
MDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCAqLzsgfTsKKwkJRkU4MERBNjQwRTlDNDcwMzAw
MEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFODBEQTYwMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9u
LmggKi87IH07CisJCUZFODBEQTY1MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYx
MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCAqLzsgfTsKKwkJRkU4MERBNjYw
RTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dl
b3Bvc2l0aW9uLmggKi87IH07CisJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi87IH07
CisJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZFMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkU4MERBNzMwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZGMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uT3B0aW9ucy5jcHAgKi87IH07CisJCUZFODBEQTc0MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bv
c2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU4MERBNzAwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi87
IH07CisJCUZFQUI5MDEyMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVBQjkwMTAw
RUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5jcHAgKi87IH07CisJCUZFQUI5
MDEzMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQUI5MDExMEVBNTFCOUMwMDYzNDhD
MyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuaCAqLzsgfTsKIC8qIEVuZCBQQlhCdWlsZEZpbGUgc2Vj
dGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlvbiAqLwpAQCAt
ODgzNCw2ICs4ODYzLDM1IEBACiAJCUY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAvKiBYTUxIdHRw
UmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGOUYwRUQ3ODBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2
ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0OUVGOTcwREM1MTQ2MjAw
NDI2NkUxIC8qIERhc2hib2FyZFN1cHBvcnRDU1NQcm9wZXJ0eU5hbWVzLmluICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IERhc2hib2FyZFN1cHBvcnRDU1NQcm9wZXJ0eU5hbWVzLmluOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBMjBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFODBEN0EzMEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJh
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21Qb3NpdGlvbkNh
bGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0E0MEU5QzFFRDIw
MDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0E1MEU5QzFFRDIwMDBENkY3
NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBNjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2Nh
dGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dl
b2xvY2F0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3
QjcwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEdlb2xvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU4MEQ3QjgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFODBEN0I5MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2VvbG9jYXRpb24uaWRsOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTgwRDdCQTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvcG9zaXRpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCQjBFOUMxRjI1MDAwRDZGNzUg
LyogR2VvcG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2VvcG9z
aXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkMwRTlDMUYyNTAw
MEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBHZW9wb3Np
dGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JEMEU5QzFGMjUw
MDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBvc2l0aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
RkU4MEQ3QkUwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2suaWRsICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9IFBvc2l0aW9uQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRTgwRDdCRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkVycm9yLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0MwMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlv
bkVycm9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQb3NpdGlvbkVycm9yLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QzEwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBv
c2l0aW9uRXJyb3JDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQ
b3NpdGlvbkVycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4
MEQ3QzIwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QzMwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0
aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbk9wdGlvbnMu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QzQwRTlDMUYyNTAwMEQ2Rjc1
IC8qIFBvc2l0aW9uT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25P
cHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNUYwRTlDNDcw
MzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNHZW9sb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFODBEQTYwMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VvbG9jYXRpb24uaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkU4MERBNjEwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW9wb3NpdGlvbi5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTYyMEU5QzQ3MDMwMDBENkY3
NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
R2VvcG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNkQwRTlD
NDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25FcnJvci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2RjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQ
b3NpdGlvbk9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
SlNQb3NpdGlvbk9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgw
REE3MDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbk9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkVBQjkwMTAwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2Vy
dmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9sb2NhdGlv
blNlcnZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUFCOTAxMTBFQTUx
QjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IEdlb2xvY2F0aW9uU2VydmljZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhG
cmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC05NTgzLDYgKzk2NDEsMTIgQEAKIAkJ
CQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8sCiAJCQkJNjVDQkZF
RjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCiAJCQkJNjVDQkZFRjgwOTc0
RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovLAorCQkJCUZFODBEN0I3MEU5QzFGMjUwMDBE
NkY3NSAvKiBHZW9sb2NhdGlvbi5jcHAgKi8sCisJCQkJRkU4MEQ3QjgwRTlDMUYyNTAwMEQ2Rjc1
IC8qIEdlb2xvY2F0aW9uLmggKi8sCisJCQkJRkU4MEQ3QjkwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdl
b2xvY2F0aW9uLmlkbCAqLywKKwkJCQlGRTgwRDdCQTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9z
aXRpb24uY3BwICovLAorCQkJCUZFODBEN0JCMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlv
bi5oICovLAorCQkJCUZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwg
Ki8sCiAJCQkJQkM5NEQxNTAwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuY3BwICovLAogCQkJ
CUJDOTREMTUxMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmggKi8sCiAJCQkJQkM5NEQxNTIw
QzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaWRsICovLApAQCAtOTU5OCw2ICs5NjYyLDE0IEBA
CiAJCQkJNjVBMjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLywKIAkJCQk5MzAyQjBC
QzBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNwcCAqLywKIAkJCQk5MzAyQjBCRTBENzlG
ODJDMDBDN0VFODMgLyogUGFnZUdyb3VwLmggKi8sCisJCQkJRkU4MEQ3QkQwRTlDMUYyNTAwMEQ2
Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQlGRTgwRDdCRTBFOUMxRjI1MDAwRDZG
NzUgLyogUG9zaXRpb25DYWxsYmFjay5pZGwgKi8sCisJCQkJRkU4MEQ3QkYwRTlDMUYyNTAwMEQ2
Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCAqLywKKwkJCQlGRTgwRDdDMDBFOUMxRjI1MDAwRDZGNzUg
LyogUG9zaXRpb25FcnJvci5pZGwgKi8sCisJCQkJRkU4MEQ3QzEwRTlDMUYyNTAwMEQ2Rjc1IC8q
IFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICovLAorCQkJCUZFODBEN0MyMEU5QzFGMjUwMDBENkY3
NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsICovLAorCQkJCUZFODBEN0MzMEU5QzFGMjUw
MDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCAqLywKKwkJCQlGRTgwRDdDNDBFOUMxRjI1MDAw
RDZGNzUgLyogUG9zaXRpb25PcHRpb25zLmlkbCAqLywKIAkJCQlCQ0VDMDFCQTBDMjc0REFDMDA5
RjRFQzkgLyogU2NyZWVuLmNwcCAqLywKIAkJCQlCQ0VDMDFCQjBDMjc0REFDMDA5RjRFQzkgLyog
U2NyZWVuLmggKi8sCiAJCQkJQkNFQzAxQkMwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5pZGwg
Ki8sCkBAIC0xMTc2MSw2ICsxMTgzMywxMCBAQAogCQkJCTY1REYzMjJFMDlEMUREQkMwMDBCRTMy
NSAvKiBKU0VudGl0eS5oICovLAogCQkJCTkzRjlCNzcyMEJBNUZEREMwMDg1NDA2NCAvKiBKU0Vu
dGl0eVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJOTNGOUI3NzMwQkE1RkREQzAwODU0MDY0IC8qIEpT
RW50aXR5UmVmZXJlbmNlLmggKi8sCisJCQkJRkU4MERBNUYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpT
R2VvbG9jYXRpb24uY3BwICovLAorCQkJCUZFODBEQTYwMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dl
b2xvY2F0aW9uLmggKi8sCisJCQkJRkU4MERBNjEwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9z
aXRpb24uY3BwICovLAorCQkJCUZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0
aW9uLmggKi8sCiAJCQkJQkNEOUMyQkMwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFw
LmNwcCAqLywKIAkJCQlCQ0Q5QzJCRDBDMTdCNjlFMDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAu
aCAqLywKIAkJCQkxNERDMEQzNTA5RkVEMDczMDA3QjAyMzUgLyogSlNOb2RlLmNwcCAqLywKQEAg
LTExNzY5LDYgKzExODQ1LDEwIEBACiAJCQkJQkNEOUMyQkYwQzE3QjY5RTAwNUM5MEEyIC8qIEpT
Tm9kZUxpc3QuaCAqLywKIAkJCQk2NURGMzFFOTA5RDFDQzYwMDAwQkUzMjUgLyogSlNOb3RhdGlv
bi5jcHAgKi8sCiAJCQkJNjVERjMxRUEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTm90YXRpb24uaCAq
LywKKwkJCQlGRTgwREE2RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAq
LywKKwkJCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi8s
CisJCQkJRkU4MERBNkYwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCAq
LywKKwkJCQlGRTgwREE3MDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCAq
LywKIAkJCQk2NURGMzFFQjA5RDFDQzYwMDAwQkUzMjUgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rp
b24uY3BwICovLAogCQkJCTY1REYzMUVDMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1Byb2Nlc3NpbmdJ
bnN0cnVjdGlvbi5oICovLAogCQkJCUU0QjQyMzg1MENCRkI3M0MwMEFGMkVDRSAvKiBKU1Byb2dy
ZXNzRXZlbnQuY3BwICovLApAQCAtMTI4MzMsNiArMTI5MTMsMTAgQEAKIAkJCQlCQzQ2QzFFRDBD
MEREQkRGMDAyMENGQzMgLyogSlNDU1NSdWxlQ3VzdG9tLmNwcCAqLywKIAkJCQlCQzU4MjVGMjBD
MEI4OTM4MDA1M0YxQjUgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCAqLywKIAkJ
CQlCQzIwRkI3RTBDMEU4RTZDMDBEMTQ0N0YgLyogSlNDU1NWYWx1ZUN1c3RvbS5jcHAgKi8sCisJ
CQkJRkU4MEQ3QTIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5j
cHAgKi8sCisJCQkJRkU4MEQ3QTMwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjay5oICovLAorCQkJCUZFODBEN0E0MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgKi8sCisJCQkJRkU4MEQ3QTUwRTlDMUVEMjAwMEQ2Rjc1
IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmggKi8sCiAJCQkJNTFFQzkyNUIwQ0U5
MERENDAwRjkwMzA4IC8qIEpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwICovLAogCQkJ
CTUxRUM5MjVDMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNr
LmggKi8sCiAJCQkJNTFFQzkyNUQwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3VzdG9tU1FMU3RhdGVt
ZW50RXJyb3JDYWxsYmFjay5jcHAgKi8sCkBAIC0xMjg1Miw2ICsxMjkzNiw3IEBACiAJCQkJQkMy
RUQ1NTQwQzZCOUJEMzAwOTIwQkZGIC8qIEpTRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNF
RkFGNEQwQzMxN0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwICovLAogCQkJCUJDM0I3
QjIwMEU5MUFBRjQwMEQ1NDA2NSAvKiBKU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAgKi8sCisJ
CQkJRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICov
LAogCQkJCUJDRTdCMTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICov
LAogCQkJCUJDNEVERUYzMEMwOEYzRkIwMDdFREQ0OSAvKiBKU0hUTUxBcHBsZXRFbGVtZW50Q3Vz
dG9tLmNwcCAqLywKIAkJCQlCQ0NCQUQzQTBDMThCRkY4MDBDRTg5MEYgLyogSlNIVE1MQ29sbGVj
dGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0xMzE2Miw2ICsxMzI0Nyw4IEBACiAJCQkJMDY2Qzc3MkEw
QUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8sCiAJCQkJNTE0QjNGNzIwQzcyMjA0
NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLywKIAkJCQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5
NzkgLyogRmxvYXRDb252ZXJzaW9uLmggKi8sCisJCQkJRkVBQjkwMTAwRUE1MUI5QzAwNjM0OEMz
IC8qIEdlb2xvY2F0aW9uU2VydmljZS5jcHAgKi8sCisJCQkJRkVBQjkwMTEwRUE1MUI5QzAwNjM0
OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5oICovLAogCQkJCUJDM0JDMjlCMEU5MUFCMEYwMDgz
NTU4OCAvKiBIb3N0V2luZG93LmggKi8sCiAJCQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8q
IEtVUkwuY3BwICovLAogCQkJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmggKi8s
CkBAIC0xNTk3NSw2ICsxNjA2MiwxOCBAQAogCQkJCTFDODFCQTBDMEU5NzM0ODMwMDI2NkUwNyAv
KiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUJBMEUw
RTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMzQkUxMkIwRTk4MDkyRjAwODM1NTg4IC8qIFBvcHVwTWVudVN0eWxlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGRTgwRDdBODBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlv
bkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdBQTBFOUMxRUQyMDAwRDZGNzUg
LyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUZF
ODBEN0M2MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJRkU4MEQ3QzkwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGRTgwRDdDQjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3Q0QwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJy
b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0NGMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0QxMEU5QzFGMjUw
MDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEQTY0
MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTgwREE2NjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkU4MERBNzIwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkU4MERBNzQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRp
b25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNCRTk5NDBFOUMxQzdDMDA4MzU1ODggLyogUmVu
ZGVyU2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNCRTk5NTBFOUMxQzdDMDA4MzU1
ODggLyogUmVuZGVyU2Nyb2xsYmFyUGFydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkU5OTkw
RTlDMUU1RDAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmggaW4gSGVhZGVycyAqLywK
QEAgLTE1OTgyLDYgKzE2MDgxLDcgQEAKIAkJCQkxQ0Y2QkUxNTBFOUJCNDY3MDAyNUUxQ0QgLyog
T2JqQ05vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCUE4MEQ2NzA4MEU5
RTlERUIwMEU0MjBGMCAvKiBHcmFwaGljc0NvbnRleHRQbGF0Zm9ybVByaXZhdGVDRy5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJOTM5QjAyRUYwRUEyREJDNDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFQUI5MDEzMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2Nh
dGlvblNlcnZpY2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTYwOTUsNiArMTYxOTUsMTIgQEAKIAkJ
CQk4NTEzNkNBODBBRUQ2NjU5MDBGOTBBM0QgLyogd2VzdFJlc2l6ZUN1cnNvci5wbmcgaW4gUmVz
b3VyY2VzICovLAogCQkJCTFBQjFBRTdBMEMwNTFGREUwMDEzOUY0RiAvKiB6b29tSW5DdXJzb3Iu
cG5nIGluIFJlc291cmNlcyAqLywKIAkJCQkxQUIxQUU3QjBDMDUxRkRFMDAxMzlGNEYgLyogem9v
bU91dEN1cnNvci5wbmcgaW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBEN0M3MEU5QzFGMjUwMDBE
NkY3NSAvKiBHZW9sb2NhdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUZFODBEN0NBMEU5
QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUZF
ODBEN0NDMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCBpbiBSZXNvdXJj
ZXMgKi8sCisJCQkJRkU4MEQ3Q0UwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaWRs
IGluIFJlc291cmNlcyAqLywKKwkJCQlGRTgwRDdEMDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRp
b25FcnJvckNhbGxiYWNrLmlkbCBpbiBSZXNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3RDIwRTlDMUYy
NTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJKTsK
IAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTc4
NDIsNiArMTc5NDgsMTUgQEAKIAkJCQkxQzgxQkEwMjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNj
cmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMDkwRTk3MzQ4MzAwMjY2
RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJB
MEQwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGRTgwRDdBNzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNh
bGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEN0E5MEU5QzFFRDIwMDBENkY3NSAv
KiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlG
RTgwRDdBQjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGRTgwRDdDNTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3Bw
IGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3QzgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0
aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEQTYzMEU5QzQ3MDMwMDBENkY3NSAvKiBK
U0dlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEQTY1MEU5QzQ3MDMwMDBE
NkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEQTcxMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RkU4MERBNzMwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUJDM0JFOTkzMEU5QzFDN0MwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXIu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzQkU5QTUwRTlDMjM5NjAwODM1NTg4IC8qIFJlbmRl
clNjcm9sbGJhclRoZW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDM0JFOUFCMEU5QzI0MjAw
MDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTc4
NDksNiArMTc5NjQsNyBAQAogCQkJCTFDRjZCRTE0MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9k
ZUZpbHRlckNvbmRpdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDODBGQTEzMEVBMjg3QjAw
MEIwODIxRCAvKiBMZW5ndGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5QjAyRUUwRUEyREJD
NDAwQzU0NTcwIC8qIFdpZHRoSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVBQjkw
MTIwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJ
fTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxs
YmFjay5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9z
aXRpb25DYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkNvbnNv
bGUuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJKU0dlb3Bvc2l0aW9uLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxranMvSlNMb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpK
U0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2soSlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUp
CisgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICwgbV9mcmFtZShmcmFtZSkKK3sKK30K
Kwordm9pZCBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KEdlb3Bvc2l0aW9u
KiBnZW9wb3NpdGlvbiwgYm9vbCYgcmFpc2VkRXhjZXB0aW9uKQoreworICAgIEFTU0VSVChtX2Nh
bGxiYWNrKTsKKyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgCisgICAgaWYgKCFtX2ZyYW1lLT5z
Y3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9mcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCgp
OworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAg
IAorICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgIAorICAgIEpTVmFsdWUqIGZ1bmN0
aW9uID0gbV9jYWxsYmFjay0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhhbmRsZUV2ZW50
IikpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZnVu
Y3Rpb24tPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5
cGVOb25lKSB7CisgICAgICAgIGNhbGxUeXBlID0gbV9jYWxsYmFjay0+Z2V0Q2FsbERhdGEoY2Fs
bERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAg
ICAgICAvLyBGSVhNRTogU2hvdWxkIGFuIGV4Y2VwdGlvbiBiZSB0aHJvd24gaGVyZT8KKyAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiA9IG1fY2FsbGJhY2s7
CisgICAgfQorICAgIAorICAgIFJlZlB0cjxKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s+IHByb3Rl
Y3QodGhpcyk7CisgICAgCisgICAgQXJnTGlzdCBhcmdzOworICAgIGFyZ3MuYXBwZW5kKHRvSlMo
ZXhlYywgZ2VvcG9zaXRpb24pKTsKKyAgICAKKyAgICBnbG9iYWxPYmplY3QtPnN0YXJ0VGltZW91
dENoZWNrKCk7CisgICAgY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBt
X2NhbGxiYWNrLCBhcmdzKTsKKyAgICBnbG9iYWxPYmplY3QtPnN0b3BUaW1lb3V0Q2hlY2soKTsK
KyAgICAKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgbV9mcmFtZS0+
ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+cmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKKyAg
ICAgICAgcmFpc2VkRXhjZXB0aW9uID0gdHJ1ZTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxi
YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9u
Q2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Q
b3NpdGlvbkNhbGxiYWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2tfaAorI2RlZmluZSBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2tfaAorCisj
aW5jbHVkZSA8a2pzL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8a2pzL3Byb3RlY3QuaD4KKyNpbmNs
dWRlICJQb3NpdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFt
ZXNwYWNlIEpTQyB7CisgICAgY2xhc3MgSlNPYmplY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgRnJhbWU7CitjbGFzcyBHZW9wb3NpdGlvbjsKKworY2xhc3MgSlNDdXN0b21Q
b3NpdGlvbkNhbGxiYWNrIDogcHVibGljIFBvc2l0aW9uQ2FsbGJhY2sgeworcHVibGljOgorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjaz4gY3JlYXRlKEpTQzo6
SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBK
U0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2soY2FsbGJhY2ssIGZyYW1lKSk7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoR2VvcG9zaXRpb24qLCBib29sJiByYWlzZWRFeGNlcHRp
b24pOworCitwcml2YXRlOgorICAgIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayhKU0M6OkpTT2Jq
ZWN0KiBjYWxsYmFjaywgRnJhbWUqKTsKKworICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNP
YmplY3Q+IG1fY2FsbGJhY2s7CisgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOworfTsKKyAgICAK
K30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEpTQ3VzdG9tUG9zaXRpb25DYWxs
YmFja19oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNh
bGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9z
aXRpb25FcnJvckNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
KyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlIDxranMvSlNMb2NrLmg+CisjaW5jbHVkZSAi
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJDb25zb2xlLmgiCisj
aW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiSlNQb3Np
dGlvbkVycm9yLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xs
ZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAordXNpbmcgbmFtZXNwYWNlIEpTQzsK
KworSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OkpTQ3VzdG9tUG9zaXRpb25FcnJvckNh
bGxiYWNrKEpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKQorICAgIDogbV9jYWxsYmFj
ayhjYWxsYmFjaykKKyAgICAsIG1fZnJhbWUoZnJhbWUpCit7Cit9CisKK3ZvaWQgSlNDdXN0b21Q
b3NpdGlvbkVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KFBvc2l0aW9uRXJyb3IqIHBvc2l0aW9u
RXJyb3IpCit7CisgICAgQVNTRVJUKG1fY2FsbGJhY2spOworICAgIEFTU0VSVChtX2ZyYW1lKTsK
KyAgICAKKyAgICBpZiAoIW1fZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ZyYW1l
LT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgCisgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7
CisgICAgCisgICAgSlNWYWx1ZSogZnVuY3Rpb24gPSBtX2NhbGxiYWNrLT5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7Cisg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBmdW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOwor
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgY2FsbFR5cGUgPSBt
X2NhbGxiYWNrLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7CisgICAgICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgYW4gZXhjZXB0
aW9uIGJlIHRocm93biBoZXJlPworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGZ1bmN0aW9uID0gbV9jYWxsYmFjazsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPEpTQ3Vz
dG9tUG9zaXRpb25FcnJvckNhbGxiYWNrPiBwcm90ZWN0KHRoaXMpOworICAgIAorICAgIEFyZ0xp
c3QgYXJnczsKKyAgICBhcmdzLmFwcGVuZCh0b0pTKGV4ZWMsIHBvc2l0aW9uRXJyb3IpKTsKKyAg
ICAKKyAgICBnbG9iYWxPYmplY3QtPnN0YXJ0VGltZW91dENoZWNrKCk7CisgICAgY2FsbChleGVj
LCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNhbGxEYXRhLCBtX2NhbGxiYWNrLCBhcmdzKTsKKyAgICBn
bG9iYWxPYmplY3QtPnN0b3BUaW1lb3V0Q2hlY2soKTsKKyAgICAKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIG1fZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPnJl
cG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxi
YWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9u
RXJyb3JDYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAorI2RlZmluZSBKU0N1c3RvbVBvc2l0aW9u
RXJyb3JDYWxsYmFja19oCisKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCIKKyNp
bmNsdWRlIDxranMvSlNPYmplY3QuaD4KKyNpbmNsdWRlIDxranMvcHJvdGVjdC5oPgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25hbWVzcGFjZSBKU0MgeworICAgIGNsYXNzIEpTT2JqZWN0
OworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBGcmFtZTsKK2NsYXNzIFBv
c2l0aW9uRXJyb3I7CisKK2NsYXNzIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrIDogcHVi
bGljIFBvc2l0aW9uRXJyb3JDYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBj
YWxsYmFjaywgRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21Qb3Np
dGlvbkVycm9yQ2FsbGJhY2soY2FsbGJhY2ssIGZyYW1lKSk7IH0KKyAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgaGFuZGxlRXZlbnQoUG9zaXRpb25FcnJvciopOworCitwcml2YXRlOgorICAgIEpTQ3Vz
dG9tUG9zaXRpb25FcnJvckNhbGxiYWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSop
OworCisgICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNDOjpKU09iamVjdD4gbV9jYWxsYmFjazsKKyAg
ICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2tfaApJbmRleDogV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
YmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAkocmV2aXNpb24gMzc2MDkpCisrKyBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw2ICsy
ODAsMTYgQEAgdm9pZCB1cGRhdGVET01Ob2RlRG9jdW1lbnQoTm9kZSogbm9kZSwgRAogICAgIGFk
ZFdyYXBwZXIod3JhcHBlcik7CiB9CiAKK3ZvaWQgbWFya0RPTU9iamVjdFdyYXBwZXIoSlNHbG9i
YWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lkKiBvYmplY3QpCit7CisgICAgaWYgKCFvYmplY3QpCisg
ICAgICAgIHJldHVybjsKKyAgICBET01PYmplY3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01PYmpl
Y3RXcmFwcGVyKGdsb2JhbERhdGEsIG9iamVjdCk7CisgICAgaWYgKCF3cmFwcGVyIHx8IHdyYXBw
ZXItPm1hcmtlZCgpKQorICAgICAgICByZXR1cm47CisgICAgd3JhcHBlci0+bWFyaygpOworfQor
CiBKU1ZhbHVlKiBqc1N0cmluZ09yTnVsbChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYg
cykKIHsKICAgICBpZiAocy5pc051bGwoKSkKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01CaW5kaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuaAkocmV2aXNpb24gMzc2MDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICB2b2lkIHVwZGF0ZURPTU5vZGVEb2N1bWVudChOb2RlKiwgRG9jdW1lbnQqIG9sZERvY3Vt
ZW50LCBEb2N1bWVudCogbmV3RG9jdW1lbnQpOwogICAgIHZvaWQgbWFya0RPTU5vZGVzRm9yRG9j
dW1lbnQoRG9jdW1lbnQqKTsKICAgICB2b2lkIG1hcmtBY3RpdmVPYmplY3RzRm9yRG9jdW1lbnQo
SlNDOjpKU0dsb2JhbERhdGEmLCBEb2N1bWVudCopOworICAgIHZvaWQgbWFya0RPTU9iamVjdFdy
YXBwZXIoSlNDOjpKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHZvaWQqIG9iamVjdCk7CiAKICAg
ICBKU0M6OlN0cnVjdHVyZUlEKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNDOjpFeGVjU3RhdGUq
LCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwogICAgIEpTQzo6U3RydWN0dXJlSUQqIGNhY2hlRE9N
U3RydWN0dXJlKEpTQzo6RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZUlEPiwg
Y29uc3QgSlNDOjpDbGFzc0luZm8qKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAzNzYwOSkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNiArNDEsNiBAQCB1
c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lk
IG1hcmtET01PYmplY3RXcmFwcGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb2Jq
ZWN0KQotewotICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm47Ci0gICAgRE9NT2JqZWN0
KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcihnbG9iYWxEYXRhLCBvYmplY3Qp
OwotICAgIGlmICghd3JhcHBlciB8fCB3cmFwcGVyLT5tYXJrZWQoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIHdyYXBwZXItPm1hcmsoKTsKLX0KLQogdm9pZCBKU0RPTVdpbmRvdzo6bWFyaygpCiB7
CiAgICAgQmFzZTo6bWFyaygpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0
aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9j
YXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dl
b2xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIkpTR2VvbG9jYXRpb24uaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKKyNp
bmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJKU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVk
ZSAiSlNQb3NpdGlvbk9wdGlvbnMuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitKU1ZhbHVlKiBKU0dlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRp
b24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIC8vIEFyZ3Vt
ZW50czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uRXJyb3JDYWxsYmFjaywg
KG9wdGlvbmFsKVBvc2l0aW9uT3B0aW9ucworICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBw
b3NpdGlvbkNhbGxiYWNrOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMsIDAp
LT5nZXRPYmplY3QoKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgIHNldERPTUV4
Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVm
aW5lZCgpOworICAgIH0KKworICAgIGlmIChGcmFtZSogZnJhbWUgPSB0b0pTRE9NV2luZG93KGV4
ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKSkKKyAgICAgICAgcG9z
aXRpb25DYWxsYmFjayA9IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwg
ZnJhbWUpOworICAgIAorICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9u
RXJyb3JDYWxsYmFjazsKKyAgICBpZiAoIWFyZ3MuYXQoZXhlYywgMSktPmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKKyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoZXhlYywgMSktPmdl
dE9iamVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAgICAgc2V0RE9NRXhj
ZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRvSlNE
T01XaW5kb3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpKQor
ICAgICAgICAgICAgcG9zaXRpb25FcnJvckNhbGxiYWNrID0gSlNDdXN0b21Qb3NpdGlvbkVycm9y
Q2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1lKTsKKyAgICB9CisgICAgCisgICAgUmVmUHRy
PFBvc2l0aW9uT3B0aW9ucz4gcG9zaXRpb25PcHRpb25zOworICAgIGlmICghYXJncy5hdChleGVj
LCAyKS0+aXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcG9zaXRpb25PcHRpb25zID0gdG9Q
b3NpdGlvbk9wdGlvbnMoYXJncy5hdChleGVjLCAyKSk7CisgICAgCisgICAgbV9pbXBsLT5nZXRD
dXJyZW50UG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JD
YWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5nZXQoKSk7CisgICAgCisgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUqIEpTR2VvbG9jYXRpb246OndhdGNoUG9z
aXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIC8vIEFy
Z3VtZW50czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uRXJyb3JDYWxsYmFj
aywgKG9wdGlvbmFsKVBvc2l0aW9uT3B0aW9ucworICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNr
PiBwb3NpdGlvbkNhbGxiYWNrOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMs
IDApLT5nZXRPYmplY3QoKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgIHNldERP
TUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIH0KKyAgICAKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9KU0RPTVdp
bmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCkpCisgICAg
ICAgIHBvc2l0aW9uQ2FsbGJhY2sgPSBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmNyZWF0ZShv
YmplY3QsIGZyYW1lKTsKKyAgICAKKyAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBw
b3NpdGlvbkVycm9yQ2FsbGJhY2s7CisgICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDEpLT5pc1VuZGVm
aW5lZE9yTnVsbCgpKSB7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMs
IDEpLT5nZXRPYmplY3QoKTsKKyAgICAgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgICAgIHNl
dERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgICAgICByZXR1
cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IHRvSlNET01XaW5kb3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1w
bCgpLT5mcmFtZSgpKQorICAgICAgICAgICAgcG9zaXRpb25FcnJvckNhbGxiYWNrID0gSlNDdXN0
b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1lKTsKKyAgICB9Cisg
ICAgCisgICAgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gcG9zaXRpb25PcHRpb25zOworICAgIGlm
ICghYXJncy5hdChleGVjLCAyKS0+aXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcG9zaXRp
b25PcHRpb25zID0gdG9Qb3NpdGlvbk9wdGlvbnMoYXJncy5hdChleGVjLCAyKSk7CisgICAgCisg
ICAgaW50IHcgPSBtX2ltcGwtPndhdGNoUG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNl
KCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5nZXQo
KSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHcpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAko
cmV2aXNpb24gMzc2MDkpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDQgKzExMywxMyBAQCBKU1ZhbHVlKiBKU05hdmln
YXRvcjo6YXBwVmVyc2lvbihFeGVjU3RhCiAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGltcC0+
YXBwVmVyc2lvbigpKTsKIH0KIAordm9pZCBKU05hdmlnYXRvcjo6bWFyaygpCit7CisgICAgQmFz
ZTo6bWFyaygpOworCisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gKkhlYXA6OmhlYXAo
dGhpcyktPmdsb2JhbERhdGEoKTsKKworICAgIG1hcmtET01PYmplY3RXcmFwcGVyKGdsb2JhbERh
dGEsIGltcGwoKS0+b3B0aW9uYWxHZW9sb2NhdGlvbigpKTsKK30KKwogfQpJbmRleDogV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9j
YXRpb24uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlb2xv
Y2F0aW9uLmgiCisjaW5jbHVkZSAiUG9zaXRpb25FcnJvci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0dlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2VvTm90aWZpZXIoUGFzc1JlZlB0cjxQ
b3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCisgICAg
OiBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCisgICAgLCBtX2Vycm9yQ2FsbGJh
Y2soZXJyb3JDYWxsYmFjaykKKyAgICAsIG1fdGltZXIodGhpcywgJkdlb2xvY2F0aW9uOjpHZW9O
b3RpZmllcjo6dGltZXJGaXJlZCkKK3sKKyAgICBpZiAobV9lcnJvckNhbGxiYWNrICYmIG9wdGlv
bnMgJiYgb3B0aW9ucy0+dGltZW91dCgpICE9IC0xKQorICAgICAgICBtX3RpbWVyLnN0YXJ0T25l
U2hvdChvcHRpb25zLT50aW1lb3V0KCkgLyAxMDAwLjApOworfQorCit2b2lkIEdlb2xvY2F0aW9u
OjpHZW9Ob3RpZmllcjo6dGltZXJGaXJlZChUaW1lcjxHZW9Ob3RpZmllcj4qIHRpbWVyKQorewor
ICAgIEFTU0VSVChtX2Vycm9yQ2FsbGJhY2spOworICAgIAorICAgIG1fdGltZXIuc3RvcCgpOwor
CisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gbmV3IFBvc2l0aW9uRXJyb3IoNCwg
IlRpbWVkIG91dCIpOworICAgIG1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0
KCkpOworfQorCitHZW9sb2NhdGlvbjo6R2VvbG9jYXRpb24oRnJhbWUqIGZyYW1lKQorICAgIDog
bV9mcmFtZShmcmFtZSkKKyAgICAsIG1fc2VydmljZShHZW9sb2NhdGlvblNlcnZpY2U6OmNyZWF0
ZSh0aGlzKSkKK3sKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6ZGlzY29ubmVjdEZyYW1lKCkKK3sK
KyAgICBtX2ZyYW1lID0gMDsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0
aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVm
UHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUG9zaXRpb25PcHRpb25z
KiBvcHRpb25zKQoreworICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBuZXcgR2Vv
Tm90aWZpZXIoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsKKworICAg
IGlmICghbV9zZXJ2aWNlLT5zdGFydFVwZGF0aW5nKG9wdGlvbnMpKSB7CisgICAgICAgIGlmIChu
b3RpZmllci0+bV9lcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQdHI8UG9zaXRpb25F
cnJvcj4gZXJyb3IgPSBuZXcgUG9zaXRpb25FcnJvcigxLCAiVW5hYmxlIHRvIFN0YXJ0Iik7Cisg
ICAgICAgICAgICBub3RpZmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5n
ZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fb25lU2hv
dHMuYWRkKG5vdGlmaWVyKTsKK30KKworaW50IEdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKFBh
c3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBv
c2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUG9zaXRpb25PcHRpb25zKiBvcHRp
b25zKQoreworICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBuZXcgR2VvTm90aWZp
ZXIoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsKKworICAgIGlmICgh
bV9zZXJ2aWNlLT5zdGFydFVwZGF0aW5nKG9wdGlvbnMpKSB7CisgICAgICAgIGlmIChub3RpZmll
ci0+bV9lcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4g
ZXJyb3IgPSBuZXcgUG9zaXRpb25FcnJvcigxLCAiVW5hYmxlIHRvIFN0YXJ0Iik7CisgICAgICAg
ICAgICBub3RpZmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIHN0YXRpYyBp
bnQgc0lkZW50aWZpZXIgPSAwOworICAgIAorICAgIG1fd2F0Y2hlcnMuc2V0KCsrc0lkZW50aWZp
ZXIsIG5vdGlmaWVyKTsKKworICAgIHJldHVybiBzSWRlbnRpZmllcjsKK30KKwordm9pZCBHZW9s
b2NhdGlvbjo6Y2xlYXJXYXRjaChpbnQgd2F0Y2hJZCkKK3sKKyAgICBSZWZQdHI8R2VvTm90aWZp
ZXI+IG5vdGlmaWVyID0gbV93YXRjaGVycy5nZXQod2F0Y2hJZCk7CisgICAgaWYgKG5vdGlmaWVy
KQorICAgICAgICBtX3dhdGNoZXJzLnJlbW92ZSh3YXRjaElkKTsKKyAgICAKKyAgICBzdG9wVXBk
YXRpbmdJZkVtcHR5KCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OnN0b3BVcGRhdGluZ0lmRW1w
dHkoKQoreworICAgIGlmIChtX3dhdGNoZXJzLmlzRW1wdHkoKSAmJiBtX29uZVNob3RzLmlzRW1w
dHkoKSkKKyAgICAgICAgbV9zZXJ2aWNlLT5zdG9wVXBkYXRpbmcoKTsKK30KKwordm9pZCBHZW9s
b2NhdGlvbjo6aGFuZGxlRXJyb3IoUG9zaXRpb25FcnJvciogZXJyb3IpCit7CisgICAgR2VvTm90
aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIG9uZVNob3RzRW5kID0gbV9vbmVTaG90cy5lbmQoKTsK
KyAgICBmb3IgKEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fb25lU2hvdHMu
YmVnaW4oKTsgaXQgIT0gb25lU2hvdHNFbmQ7ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPEdlb05v
dGlmaWVyPiBub3RpZmllciA9ICppdDsKKyAgICAgICAgCisgICAgICAgIGlmIChub3RpZmllci0+
bV9lcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgbm90aWZpZXItPm1fZXJyb3JDYWxsYmFjay0+
aGFuZGxlRXZlbnQoZXJyb3IpOworICAgIH0KKyAgICBtX29uZVNob3RzLmNsZWFyKCk7CisgICAg
CisgICAgR2VvTm90aWZpZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIHdhdGNoZXJzRW5kID0gbV93YXRj
aGVycy5lbmQoKTsKKyAgICBmb3IgKEdlb05vdGlmaWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9
IG1fd2F0Y2hlcnMuYmVnaW4oKTsgaXQgIT0gd2F0Y2hlcnNFbmQ7ICsraXQpIHsKKyAgICAgICAg
UmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9ICgqaXQpLnNlY29uZDsKKyAgICAgICAgCisg
ICAgICAgIGlmIChub3RpZmllci0+bV9lcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgbm90aWZp
ZXItPm1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IpOworICAgIH0KK30KKwordm9p
ZCBHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0
aW9uU2VydmljZSogc2VydmljZSkKK3sKKyAgICBBU1NFUlQoc2VydmljZS0+bGFzdFBvc2l0aW9u
KCkpOworICAgIAorICAgIGJvb2wgc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2sgPSBmYWxzZTsKKyAg
ICBHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3Igb25lU2hvdHNFbmQgPSBtX29uZVNob3Rz
LmVuZCgpOworICAgIGZvciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9v
bmVTaG90cy5iZWdpbigpOyBpdCAhPSBvbmVTaG90c0VuZDsgKytpdCkgeworICAgICAgICBSZWZQ
dHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKml0OworICAgICAgICBBU1NFUlQobm90aWZpZXIt
Pm1fc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgCisgICAgICAgIG5vdGlmaWVyLT5tX3RpbWVy
LnN0b3AoKTsKKyAgICAgICAgbm90aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVu
dChzZXJ2aWNlLT5sYXN0UG9zaXRpb24oKSwgc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2spOworICAg
ICAgICBpZiAoc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIFJlZlB0cjxQ
b3NpdGlvbkVycm9yPiBlcnJvciA9IG5ldyBQb3NpdGlvbkVycm9yKDUsICJKYXZhU2NyaXB0IEVy
cm9yIik7CisgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnJvci5nZXQoKSk7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgR2VvTm90aWZpZXJNYXA6OmNv
bnN0X2l0ZXJhdG9yIHdhdGNoZXJzRW5kID0gbV93YXRjaGVycy5lbmQoKTsKKyAgICBmb3IgKEdl
b05vdGlmaWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fd2F0Y2hlcnMuYmVnaW4oKTsgaXQg
IT0gd2F0Y2hlcnNFbmQ7ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3Rp
ZmllciA9ICgqaXQpLnNlY29uZDsKKyAgICAgICAgQVNTRVJUKG5vdGlmaWVyLT5tX3N1Y2Nlc3ND
YWxsYmFjayk7CisgICAgICAgIAorICAgICAgICBub3RpZmllci0+bV90aW1lci5zdG9wKCk7Cisg
ICAgICAgIG5vdGlmaWVyLT5tX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZlbnQoc2VydmljZS0+
bGFzdFBvc2l0aW9uKCksIHNob3VsZENhbGxFcnJvckNhbGxiYWNrKTsKKyAgICAgICAgaWYgKHNo
b3VsZENhbGxFcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJv
cj4gZXJyb3IgPSBuZXcgUG9zaXRpb25FcnJvcig1LCAiSmF2YVNjcmlwdCBFcnJvciIpOworICAg
ICAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgfQorICAgIAorICAgIG1fb25lU2hvdHMuY2xlYXIoKTsKKyAgICBzdG9w
VXBkYXRpbmdJZkVtcHR5KCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246Omdlb2xvY2F0aW9uU2Vy
dmljZUVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25TZXJ2aWNlKiBzZXJ2aWNlKQoreworICAgIEFT
U0VSVChzZXJ2aWNlLT5sYXN0RXJyb3IoKSk7CisgICAgaGFuZGxlRXJyb3Ioc2VydmljZS0+bGFz
dEVycm9yKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24u
aAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4g
QWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgR2VvbG9jYXRpb25faAorI2RlZmluZSBHZW9sb2NhdGlvbl9oCisK
KyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisKKyNpbmNsdWRlICJHZW9sb2NhdGlvblNlcnZpY2UuaCIKKyNpbmNs
dWRlICJQb3NpdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiUG9zaXRpb25FcnJvckNhbGxiYWNr
LmgiCisjaW5jbHVkZSAiUG9zaXRpb25PcHRpb25zLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNzIEdlb3Bvc2l0aW9uOwor
CitjbGFzcyBHZW9sb2NhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0aW9uPiwgcHVi
bGljIEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCB7CitwdWJsaWM6CisgICAgR2VvbG9jYXRpb24o
RnJhbWUqKTsKKyAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvbigpIHt9CisKKyAgICB2b2lkIGRpc2Nv
bm5lY3RGcmFtZSgpOworICAgIAorICAgIEdlb3Bvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBjb25z
dCB7IHJldHVybiBtX3NlcnZpY2UtPmxhc3RQb3NpdGlvbigpOyB9CisKKyAgICB2b2lkIGdldEN1
cnJlbnRQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBv
c2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBvc2l0aW9uT3B0aW9ucyopOworICAgIGludCB3YXRjaFBv
c2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25F
cnJvckNhbGxiYWNrPiwgUG9zaXRpb25PcHRpb25zKik7CisgICAgdm9pZCBjbGVhcldhdGNoKGlu
dCB3YXRjaElkKTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBHZW9Ob3RpZmllciA6IHB1YmxpYyBS
ZWZDb3VudGVkPEdlb05vdGlmaWVyPiB7CisgICAgcHVibGljOgorICAgICAgICBHZW9Ob3RpZmll
cihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JD
YWxsYmFjaz4sIFBvc2l0aW9uT3B0aW9ucyopOworICAgICAgICAKKyAgICAgICAgdm9pZCB0aW1l
ckZpcmVkKFRpbWVyPEdlb05vdGlmaWVyPiopOworICAgICAgICAKKyAgICAgICAgUmVmUHRyPFBv
c2l0aW9uQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOworICAgICAgICBSZWZQdHI8UG9zaXRp
b25FcnJvckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7CisgICAgICAgIFRpbWVyPEdlb05vdGlm
aWVyPiBtX3RpbWVyOworICAgIH07CisgICAgCisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZkVtcHR5
KCk7CisgICAgdm9pZCBoYW5kbGVFcnJvcihQb3NpdGlvbkVycm9yKik7CisKKyAgICB2aXJ0dWFs
IHZvaWQgZ2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uU2Vydmlj
ZSopOworICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3VycmVkKEdl
b2xvY2F0aW9uU2VydmljZSopOworICAgICAgICAgICAgCisgICAgdHlwZWRlZiBIYXNoU2V0PFJl
ZlB0cjxHZW9Ob3RpZmllcj4gPiBHZW9Ob3RpZmllclNldDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8
aW50LCBSZWZQdHI8R2VvTm90aWZpZXI+ID4gR2VvTm90aWZpZXJNYXA7CisgICAgCisgICAgR2Vv
Tm90aWZpZXJTZXQgbV9vbmVTaG90czsKKyAgICBHZW9Ob3RpZmllck1hcCBtX3dhdGNoZXJzOwor
ICAgIEZyYW1lKiBtX2ZyYW1lOworICAgIE93blB0cjxHZW9sb2NhdGlvblNlcnZpY2U+IG1fc2Vy
dmljZTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHZW9s
b2NhdGlvbl9oCkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaWRsCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BhZ2UvR2VvbG9jYXRpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQwIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBjb3JlIHsK
KworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIEdl
b2xvY2F0aW9uIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEdlb3Bvc2l0aW9uIGxhc3RQ
b3NpdGlvbjsKKworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldEN1cnJlbnRQb3NpdGlvbihpbiBQ
b3NpdGlvbkNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gUG9zaXRpb25FcnJvckNhbGxiYWNr
IGVycm9yQ2FsbGJhY2ssIGluIFBvc2l0aW9uT3B0aW9ucyBvcHRpb25zKTsKKworICAgICAgICBb
Q3VzdG9tXSBsb25nIHdhdGNoUG9zaXRpb24oaW4gUG9zaXRpb25DYWxsYmFjayBzdWNjZXNzQ2Fs
bGJhY2ssIGluIFBvc2l0aW9uRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLCBpbiBQb3NpdGlv
bk9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICAgICAgdm9pZCBjbGVhcldhdGNoKGluIGxvbmcgd2F0
Y2hJZCk7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uY3BwCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VvcG9zaXRpb24uaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitTdHJpbmcgR2VvcG9zaXRpb246OnRvU3RyaW5nKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gU3RyaW5nOjpmb3JtYXQoInBvc2l0aW9uKCUuNmxnLCAlLjZsZywgJS42bGcgJS42bGcg
JS42bGcgJS42bGcgJS42bGcgJS5sbGQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbV9s
YXRpdHVkZSwgbV9sb25naXR1ZGUsIG1fYWx0aXR1ZGUsIG1fYWNjdXJhY3ksIAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2FsdGl0dWRlQWNjdXJhY3ksIG1faGVhZGluZywgbV92ZWxvY2l0
eSwgbV90aW1lc3RhbXApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJD
b3JlL3BhZ2UvR2VvcG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvcG9z
aXRpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpZm5kZWYgR2VvcG9zaXRpb25faAorI2RlZmluZSBHZW9wb3NpdGlv
bl9oCisKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisj
aW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGludCBFeGNlcHRpb25Db2RlOworCitjbGFz
cyBHZW9wb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb3Bvc2l0aW9uPiB7CitwdWJsaWM6
CisgICAgR2VvcG9zaXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3Vi
bGUgYWx0aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGRv
dWJsZSBoZWFkaW5nLCBkb3VibGUgdmVsb2NpdHksIERPTVRpbWVTdGFtcCB0aW1lc3RhbXApCisg
ICAgICAgIDogbV9sYXRpdHVkZShsYXRpdHVkZSkKKyAgICAgICAgLCBtX2xvbmdpdHVkZShsb25n
aXR1ZGUpCisgICAgICAgICwgbV9hbHRpdHVkZShhbHRpdHVkZSkKKyAgICAgICAgLCBtX2FjY3Vy
YWN5KGFjY3VyYWN5KQorICAgICAgICAsIG1fYWx0aXR1ZGVBY2N1cmFjeShhbHRpdHVkZUFjY3Vy
YWN5KQorICAgICAgICAsIG1faGVhZGluZyhoZWFkaW5nKQorICAgICAgICAsIG1fdmVsb2NpdHko
dmVsb2NpdHkpCisgICAgICAgICwgbV90aW1lc3RhbXAodGltZXN0YW1wKQorICAgIHsKKyAgICB9
CisgICAgCisgICAgZG91YmxlIGxhdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsg
fQorICAgIGRvdWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQor
ICAgIGRvdWJsZSBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0aXR1ZGU7IH0KKyAgICBk
b3VibGUgYWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2FjY3VyYWN5OyB9CisgICAgZG91Ymxl
IGFsdGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0K
KyAgICBkb3VibGUgaGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGluZzsgfQorICAgIGRv
dWJsZSB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7IH0KKyAgICBET01UaW1l
U3RhbXAgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KKworICAgIFN0
cmluZyB0b1N0cmluZygpIGNvbnN0OworCitwcml2YXRlOgorICAgIGRvdWJsZSBtX2xhdGl0dWRl
OworICAgIGRvdWJsZSBtX2xvbmdpdHVkZTsKKyAgICBkb3VibGUgbV9hbHRpdHVkZTsKKyAgICBk
b3VibGUgbV9hY2N1cmFjeTsKKyAgICBkb3VibGUgbV9hbHRpdHVkZUFjY3VyYWN5OworICAgIGRv
dWJsZSBtX2hlYWRpbmc7CisgICAgZG91YmxlIG1fdmVsb2NpdHk7CisgICAgRE9NVGltZVN0YW1w
IG1fdGltZXN0YW1wOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
IC8vIEdlb3Bvc2l0aW9uX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmlkbAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDIg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxl
IGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3Rvcgor
ICAgIF0gR2VvcG9zaXRpb24geworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGxh
dGl0dWRlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGxvbmdpdHVkZTsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBhbHRpdHVkZTsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGRvdWJsZSBhY2N1cmFjeTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRl
IGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91
YmxlIGhlYWRpbmcKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSB2ZWxvY2l0eQor
ICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NVGltZVN0YW1wIHRpbWVzdGFtcDsKKworICAg
ICAgICBbRG9udEVudW1dIERPTVN0cmluZyB0b1N0cmluZygpOworICAgIH07Cit9CkluZGV4OiBX
ZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2
aWdhdG9yLmNwcAkocmV2aXNpb24gMzc2MDkpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAj
aW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudC5oIgor
I2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCiAjaW5jbHVkZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRl
ICJNaW1lVHlwZUFycmF5LmgiCiAjaW5jbHVkZSAiTmV0d29ya1N0YXRlTm90aWZpZXIuaCIKQEAg
LTg3LDYgKzg4LDEwIEBAIHZvaWQgTmF2aWdhdG9yOjpkaXNjb25uZWN0RnJhbWUoKQogICAgICAg
ICBtX21pbWVUeXBlcy0+ZGlzY29ubmVjdEZyYW1lKCk7CiAgICAgICAgIG1fbWltZVR5cGVzID0g
MDsKICAgICB9CisgICAgaWYgKG1fZ2VvbG9jYXRpb24pIHsKKyAgICAgICAgbV9nZW9sb2NhdGlv
bi0+ZGlzY29ubmVjdEZyYW1lKCk7CisgICAgICAgIG1fZ2VvbG9jYXRpb24gPSAwOworICAgIH0K
ICAgICBtX2ZyYW1lID0gMDsKIH0KIApAQCAtMTk3LDQgKzIwMiwxOCBAQCBib29sIE5hdmlnYXRv
cjo6b25MaW5lKCkgY29uc3QKICAgICByZXR1cm4gbmV0d29ya1N0YXRlTm90aWZpZXIoKS5vbkxp
bmUoKTsKIH0KIAorR2VvbG9jYXRpb24qIE5hdmlnYXRvcjo6Z2VvbG9jYXRpb24oKSBjb25zdAor
eworI2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyAgICBpZiAoR2VvbG9jYXRpb25TZXJ2aWNlOjpp
c0F2YWlsYWJsZSgpKSB7CisgICAgICAgIGlmICghbV9nZW9sb2NhdGlvbikKKyAgICAgICAgICAg
IG1fZ2VvbG9jYXRpb24gPSBuZXcgR2VvbG9jYXRpb24obV9mcmFtZSk7CisgICAgICAgIHJldHVy
biBtX2dlb2xvY2F0aW9uLmdldCgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gMDsKKyNl
bHNlCisgICAgcmV0dXJuIDA7CisjZW5kaWYKK30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvTmF2aWdhdG9yLmgJKHJldmlzaW9uIDM3NjA5KQorKysgV2ViQ29yZS9wYWdlL05hdmln
YXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBHZW9sb2NhdGlvbjsKICAgICBjbGFz
cyBNaW1lVHlwZUFycmF5OwogICAgIGNsYXNzIFBsdWdpbkRhdGE7CiAgICAgY2xhc3MgUGx1Z2lu
QXJyYXk7CkBAIC01NiwxMSArNTcsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBi
b29sIGphdmFFbmFibGVkKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBvbkxpbmUoKSBjb25zdDsK
KyAgICAgICAgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKCkgY29uc3Q7CisgICAgICAgIC8vIFRo
aXMgaXMgdXNlZCBmb3IgR0MgbWFya2luZy4KKyAgICAgICAgR2VvbG9jYXRpb24qIG9wdGlvbmFs
R2VvbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dlb2xvY2F0aW9uLmdldCgpOyB9CiAgICAg
cHJpdmF0ZToKICAgICAgICAgTmF2aWdhdG9yKEZyYW1lKik7CiAgICAgICAgIEZyYW1lKiBtX2Zy
YW1lOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxQbHVnaW5BcnJheT4gbV9wbHVnaW5zOwogICAg
ICAgICBtdXRhYmxlIFJlZlB0cjxNaW1lVHlwZUFycmF5PiBtX21pbWVUeXBlczsKKyAgICAgICAg
bXV0YWJsZSBSZWZQdHI8R2VvbG9jYXRpb24+IG1fZ2VvbG9jYXRpb247CiAgICAgfTsKIAogfQpJ
bmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9w
YWdlL05hdmlnYXRvci5pZGwJKHJldmlzaW9uIDM3NjA5KQorKysgV2ViQ29yZS9wYWdlL05hdmln
YXRvci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDcgKzE5LDkgQEAKIAogbW9kdWxlIHdpbmRv
dyB7CiAKLSAgICBpbnRlcmZhY2UgTmF2aWdhdG9yIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAg
ICBDdXN0b21NYXJrRnVuY3Rpb24KKyAgICBdIE5hdmlnYXRvciB7CiAgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgYXBwQ29kZU5hbWU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJp
YnV0ZSBET01TdHJpbmcgYXBwTmFtZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0
b21HZXR0ZXJdIERPTVN0cmluZyBhcHBWZXJzaW9uOwpAQCAtMzYsNiArMzgsOSBAQCBtb2R1bGUg
d2luZG93IHsKICAgICAgICAgYm9vbGVhbiBqYXZhRW5hYmxlZCgpOwogICAgICAgICAKICAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gb25MaW5lOworI2lmIEVOQUJMRV9HRU9MT0NB
VElPTgorICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgR2VvbG9jYXRpb24gZ2VvbG9jYXRpb247
CisjZW5kaWYKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFj
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5oCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpZm5kZWYgUG9zaXRpb25DYWxsYmFja19oCisjZGVmaW5lIFBvc2l0aW9uQ2FsbGJh
Y2tfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorICAgIGNsYXNzIEdlb3Bvc2l0aW9u
OworICAgIAorICAgIGNsYXNzIFBvc2l0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxQ
b3NpdGlvbkNhbGxiYWNrPiB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5Qb3NpdGlv
bkNhbGxiYWNrKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChHZW9wb3Np
dGlvbiogcG9zaXRpb24sIGJvb2wmIHJhaXNlZEV4Y2VwdGlvbikgPSAwOworICAgIH07CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3NpdGlvbkNhbGxiYWNrX2gK
SW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BhZ2UvUG9zaXRpb25DYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGNv
cmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAg
IF0gUG9zaXRpb25DYWxsYmFjayB7CisgICAgICAgIHZvaWQgaGFuZGxlRXZlbnQoaW4gR2VvcG9z
aXRpb24gcG9zaXRpb24pOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlv
bkVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwg
UmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisg
Ki8KKworI2lmbmRlZiBQb3NpdGlvbkVycm9yX2gKKyNkZWZpbmUgUG9zaXRpb25FcnJvcl9oCisK
KyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAK
K2NsYXNzIFBvc2l0aW9uRXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3NpdGlvbkVycm9yPiB7
CitwdWJsaWM6CisgICAgUG9zaXRpb25FcnJvcihpbnQgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNz
YWdlKSAKKyAgICAgICAgOiBtX2NvZGUoY29kZSkKKyAgICAgICAgLCBtX21lc3NhZ2UobWVzc2Fn
ZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIGludCBjb2RlKCkgY29uc3QgeyByZXR1cm4gbV9j
b2RlOyB9CisgICAgdm9pZCBzZXRDb2RlKGludCBjb2RlKSB7IG1fY29kZSA9IGNvZGU7IH0KKyAg
ICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KKyAg
ICB2b2lkIHNldE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7IG1fbWVzc2FnZSA9IG1l
c3NhZ2U7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgaW50IG1fY29kZTsKKyAgICBTdHJpbmcgbV9t
ZXNzYWdlOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBv
c2l0aW9uRXJyb3JfaApJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmlkbAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwz
NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1
bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9y
CisgICAgXSBQb3NpdGlvbkVycm9yIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcg
Y29kZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBtZXNzYWdlOworICAg
IH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBQb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAorI2RlZmluZSBQb3NpdGlv
bkVycm9yQ2FsbGJhY2tfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgUG9z
aXRpb25FcnJvcjsKKworICAgIGNsYXNzIFBvc2l0aW9uRXJyb3JDYWxsYmFjayA6IHB1YmxpYyBS
ZWZDb3VudGVkPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4geworICAgIHB1YmxpYzoKKyAgICAgICAg
dmlydHVhbCB+UG9zaXRpb25FcnJvckNhbGxiYWNrKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBoYW5kbGVFdmVudChQb3NpdGlvbkVycm9yKiBwb3NpdGlvbikgPSAwOworICAgIH07CisgICAg
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3NpdGlvbkVycm9yQ2FsbGJh
Y2tfaApJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5l
cmF0ZUNvbnN0cnVjdG9yCisgICAgXSBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgeworICAgICAgICB2
b2lkIGhhbmRsZUV2ZW50KGluIFBvc2l0aW9uRXJyb3IgZXJyb3IpOworICAgIH07CisKK30KSW5k
ZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BhZ2UvUG9zaXRpb25PcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9z
aXRpb25PcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQb3NpdGlvbk9wdGlv
bnNfaAorI2RlZmluZSBQb3NpdGlvbk9wdGlvbnNfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3Jt
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
ICAgIAorICAgIGNsYXNzIFBvc2l0aW9uT3B0aW9ucyA6IHB1YmxpYyBSZWZDb3VudGVkPFBvc2l0
aW9uT3B0aW9ucz4geworICAgIHB1YmxpYzoKKyAgICAgICAgUG9zaXRpb25PcHRpb25zKGJvb2wg
aGlnaEFjY3VyYWN5ID0gZmFsc2UsIGxvbmcgdGltZW91dCA9IC0xKQorICAgICAgICAgICAgOiBt
X2hpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3kpCisgICAgICAgICAgICAsIG1fdGltZW91dCh0aW1l
b3V0KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2wgZW5hYmxl
SGlnaEFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9oaWdoQWNjdXJhY3k7IH0KKyAgICAgICAg
dm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGUpIHsgbV9oaWdoQWNjdXJhY3kg
PSBlbmFibGU7IH0KKyAgICAgICAgbG9uZyB0aW1lb3V0KCkgY29uc3QgeyByZXR1cm4gbV90aW1l
b3V0OyB9CisgICAgICAgIHZvaWQgc2V0VGltZW91dChsb25nIHQpIHsgbV90aW1lb3V0ID0gdDsg
fQorICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIG1faGlnaEFjY3VyYWN5Owor
ICAgICAgICBsb25nIG1fdGltZW91dDsKKyAgICB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gUG9zaXRpb25PcHRpb25zX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9Q
b3NpdGlvbk9wdGlvbnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9w
dGlvbnMuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5p
ZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsK
KyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gUG9zaXRpb25PcHRpb25zIHsKKyAg
ICAgICAgYXR0cmlidXRlIGJvb2xlYW4gZW5hYmxlSGlnaEFjY3VyYWN5OworICAgICAgICBhdHRy
aWJ1dGUgbG9uZyB0aW1lb3V0OworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0v
R2VvbG9jYXRpb25TZXJ2aWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0dl
b2xvY2F0aW9uU2VydmljZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL0dl
b2xvY2F0aW9uU2VydmljZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaW5jbHVkZSAiR2VvbG9jYXRpb25TZXJ2aWNlLmgiCisjaW5jbHVkZSAiR2VvcG9z
aXRpb24uaCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiUG9zaXRpb25P
cHRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25TZXJ2aWNlOjpH
ZW9sb2NhdGlvblNlcnZpY2UoR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KiBjbGllbnQpCisgICAg
OiBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudChjbGllbnQpCit7Cit9CisKK3ZvaWQgR2VvbG9j
YXRpb25TZXJ2aWNlOjpwb3NpdGlvbkNoYW5nZWQoKQoreworICAgIGlmIChtX2dlb2xvY2F0aW9u
U2VydmljZUNsaWVudCkKKyAgICAgICAgbV9nZW9sb2NhdGlvblNlcnZpY2VDbGllbnQtPmdlb2xv
Y2F0aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZCh0aGlzKTsKK30KKwordm9pZCBHZW9sb2NhdGlv
blNlcnZpY2U6OmVycm9yT2NjdXJyZWQoKQoreworICAgIGlmIChtX2dlb2xvY2F0aW9uU2Vydmlj
ZUNsaWVudCkKKyAgICAgICAgbV9nZW9sb2NhdGlvblNlcnZpY2VDbGllbnQtPmdlb2xvY2F0aW9u
U2VydmljZUVycm9yT2NjdXJyZWQodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBHZW9sb2NhdGlvblNlcnZpY2VfaAorI2RlZmluZSBHZW9sb2NhdGlvblNlcnZp
Y2VfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlOworY2xhc3MgR2VvcG9zaXRpb247CitjbGFz
cyBQb3NpdGlvbkVycm9yOworY2xhc3MgUG9zaXRpb25PcHRpb25zOworCitjbGFzcyBHZW9sb2Nh
dGlvblNlcnZpY2VDbGllbnQKK3sKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvblNl
cnZpY2VDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25TZXJ2aWNlUG9z
aXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uU2VydmljZSopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBn
ZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uU2VydmljZSopIHsgfQor
fTsKKworY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlIDogcHVibGljIE5vbmNvcHlhYmxlIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgR2VvbG9jYXRpb25TZXJ2aWNlKiBjcmVhdGUoR2VvbG9jYXRpb25T
ZXJ2aWNlQ2xpZW50Kik7CisgICAgdmlydHVhbCB+R2VvbG9jYXRpb25TZXJ2aWNlKCkge30KKyAg
ICAKKyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOworICAgIAorICAgIHZpcnR1YWwgYm9v
bCBzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyopID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c3RvcFVwZGF0aW5nKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgR2VvcG9zaXRpb24qIGxhc3RQ
b3NpdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBvc2l0aW9uRXJyb3IqIGxhc3RFcnJv
cigpIGNvbnN0ID0gMDsKKworICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKCk7CisgICAgdm9pZCBl
cnJvck9jY3VycmVkKCk7CisKK3Byb3RlY3RlZDoKKyAgICBHZW9sb2NhdGlvblNlcnZpY2UoR2Vv
bG9jYXRpb25TZXJ2aWNlQ2xpZW50Kik7CisKK3ByaXZhdGU6CisgICAgR2VvbG9jYXRpb25TZXJ2
aWNlQ2xpZW50KiBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudDsKK307CisgICAgCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHZW9sb2NhdGlvblNlcnZpY2VfaApJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gMzc2MDkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMSBAQAorMjAwOC0xMC0xNSAgR3JlZyBCb2xzaW5nYSAgPGJvbHNpbmdh
QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NzUKKyAgICAg
ICAgCisgICAgICAgIFByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdlb2xvY2F0aW9uIEFQSQorICAg
ICAgICAKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvZ2VvL2FwaS9zcGVjLXNvdXJjZS5odG1s
CisgICAgICAgIAorICAgICAgICBUZXN0IGZvciB3aGVuIGdlb2xvY2F0aW9uIGlzIE5PVCBpbXBs
ZW1lbnRlZCwgdG8gdmVyaWZ5IGl0IGRvZXNuJ3QgbGVhayBpbiB3aGVuIGJ1aWx0LgorCisgICAg
ICAgICogZ2VvbG9jYXRpb246IEFkZGVkLgorICAgICAgICAqIGdlb2xvY2F0aW9uL2dlb2xvY2F0
aW9uLW5vdC1pbXBsZW1lbnRlZC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGdlb2xv
Y2F0aW9uL2dlb2xvY2F0aW9uLW5vdC1pbXBsZW1lbnRlZC5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBnZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi10ZXN0LmpzOiBDb3BpZWQgZnJvbSBMYXlvdXRUZXN0
cy9tZWRpYS92aWRlby10ZXN0LmpzLgorICAgICAgICAocmVsYXRpdmVVUkwpOgorCiAyMDA4LTEw
LTE0ICBQYW1lbGEgR3JlZW5lICA8cGFtQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQgdGVz
dCB0byB2ZXJpZnkgcG9wdXAgcHJvcGVydGllcyB3aGlsZSB0aGV5J3JlIG9wZW5pbmcuCkluZGV4
OiBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0
aW9uLW5vdC1pbXBsZW1lbnRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUgQEAKK1RFU1QobmF2aWdhdG9yLmdlb2xvY2F0aW9u
ID09PSB1bmRlZmluZWQpIE9LCitURVNUKG5hdmlnYXRvci5nZW9sb2NhdGlvbiA9PSBudWxsKSBP
SworVEVTVChoYXNHZW9sb2NhdGlvblByb3BlcnR5ID09IGZhbHNlKSBPSworRU5EIE9GIFRFU1QK
KwpJbmRleDogTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tbm90LWltcGxlbWVu
dGVkLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRp
b24tbm90LWltcGxlbWVudGVkLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9nZW9s
b2NhdGlvbi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQuaHRtbAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSwxNCBAQAorPGJvZHk+PC9ib2R5PgorPHNjcmlwdCBzcmM9Z2VvbG9jYXRpb24tdGVz
dC5qcz48L3NjcmlwdD4KKzxzY3JpcHQ+Cit0ZXN0KCJuYXZpZ2F0b3IuZ2VvbG9jYXRpb24gPT09
IHVuZGVmaW5lZCIpOwordGVzdCgibmF2aWdhdG9yLmdlb2xvY2F0aW9uID09IG51bGwiKTsKK3Zh
ciBoYXNHZW9sb2NhdGlvblByb3BlcnR5ID0gZmFsc2U7Citmb3IgKHZhciBwcm9wZXJ0eSBpbiBu
YXZpZ2F0b3IpIHsKKyAgICBoYXNHZW9sb2NhdGlvblByb3BlcnR5ID0gKHByb3BlcnR5ID09ICJn
ZW9sb2NhdGlvbiIpOworICAgIGlmIChoYXNHZW9sb2NhdGlvblByb3BlcnR5KQorICAgICAgICBi
cmVhazsKK30KK3Rlc3QoImhhc0dlb2xvY2F0aW9uUHJvcGVydHkgPT0gZmFsc2UiKTsKK2VuZFRl
c3QoKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRp
b24tdGVzdC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2Nh
dGlvbi10ZXN0LmpzCShyZXZpc2lvbiAzNzYwNikJKGZyb20gTGF5b3V0VGVzdHMvbWVkaWEvdmlk
ZW8tdGVzdC5qczozNzYwNikKKysrIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9u
LXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTggQEAKK2lmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQordmFyIHZp
ZGVvOwordmFyIG1lZGlhOwordmFyIGNvbnNvbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTsKK2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29uc29sZSk7Cit0cnkgeworICAgIHZp
ZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07CisgICAgaWYg
KHZpZGVvKQorICAgICAgICBtZWRpYSA9IHZpZGVvOworfSBjYXRjaCAoZXgpIHsgfQorCitmdW5j
dGlvbiBoYW5nZWQoKQoreworICAgIGNvbnNvbGVXcml0ZSgiRkFJTDogdGltZWQgb3V0Iik7Cisg
ICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgCit9CitzZXRUaW1lb3V0KGhhbmdlZCwgMTAwMDApOwor
CitmdW5jdGlvbiB0ZXN0QW5kRW5kKHRlc3RGdW5jU3RyaW5nKQoreworICAgIHRlc3QodGVzdEZ1
bmNTdHJpbmcsIHRydWUpOworfQorCitmdW5jdGlvbiB0ZXN0KHRlc3RGdW5jU3RyaW5nLCBlbmRp
dCkKK3sKKyAgICBpZiAoZXZhbCh0ZXN0RnVuY1N0cmluZykpCisgICAgICAgIGNvbnNvbGVXcml0
ZSgiVEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4n
Pk9LPC9zcGFuPiIpOworICAgIGVsc2UKKyAgICAgICAgY29uc29sZVdyaXRlKCJURVNUKCIgKyB0
ZXN0RnVuY1N0cmluZyArICIpIDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPkZBSUw8L3NwYW4+Iik7
ICAgIAorCisgICAgaWYgKGVuZGl0KQorICAgICAgICBlbmRUZXN0KCk7ICAKK30KKworZnVuY3Rp
b24gdGVzdEV4cGVjdGVkKHRlc3RGdW5jU3RyaW5nLCBleHBlY3RlZCkKK3sKKyAgICB0cnkgewor
ICAgICAgICB2YXIgb2JzZXJ2ZWQgPSBldmFsKHRlc3RGdW5jU3RyaW5nKTsKKyAgICB9IGNhdGNo
IChleCkgeworICAgICAgICBjb25zb2xlV3JpdGUoZXgpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIHZhciBtc2cgPSAiZXhwZWN0ZWQgIiArIHRlc3RGdW5jU3RyaW5nICsgIj09
JyIgKyBleHBlY3RlZCArICInLCBvYnNlcnZlZCAnIiArIG9ic2VydmVkICsgIiciOworCisgICAg
aWYgKG9ic2VydmVkID09IGV4cGVjdGVkKQorICAgICAgICBjb25zb2xlV3JpdGUobXNnICsgIiAt
IDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+T0s8L3NwYW4+Iik7CisgICAgZWxzZQorICAgICAg
ICBjb25zb2xlV3JpdGUobXNnICsgIiAtIDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPkZBSUw8L3Nw
YW4+Iik7Cit9CisKK2Z1bmN0aW9uIHJ1bih0ZXN0RnVuY1N0cmluZykKK3sKKyAgICBjb25zb2xl
V3JpdGUoIlJVTigiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSIpOworICAgIHRyeSB7CisgICAgICAg
IGV2YWwodGVzdEZ1bmNTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGNvbnNv
bGVXcml0ZShleCk7CisgICAgfQorfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRFbmQoZXZl
bnROYW1lLCBmdW5jU3RyaW5nKQoreworICAgIHdhaXRGb3JFdmVudChldmVudE5hbWUsIGZ1bmNT
dHJpbmcsIHRydWUpCit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudChldmVudE5hbWUsIGZ1bmMs
IGVuZGl0KQoreworICAgIGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZlbnROYW1lICsgIikiKTsKKyAgICAgICAg
CisgICAgICAgIGlmIChmdW5jKQorICAgICAgICAgICAgZnVuYygpOworICAgICAgICAKKyAgICAg
ICAgaWYgKGVuZGl0KQorICAgICAgICAgICAgZW5kVGVzdCgpOyAgICAKKyAgICB9CisKKyAgICBt
ZWRpYS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2spOyAgICAKK30K
KworZnVuY3Rpb24gd2FpdEZvckV2ZW50VGVzdEFuZEVuZChldmVudE5hbWUsIHRlc3RGdW5jU3Ry
aW5nKQoreworICAgIHdhaXRGb3JFdmVudEFuZFRlc3QoZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmlu
ZywgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZEZhaWwoZXZlbnROYW1lKQor
eworICAgIHdhaXRGb3JFdmVudEFuZFRlc3QoZXZlbnROYW1lLCAiZmFsc2UiLCB0cnVlKTsKK30K
KworZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kVGVzdChldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5n
LCBlbmRpdCkKK3sKKyAgICBmdW5jdGlvbiBfZXZlbnRDYWxsYmFjayhldmVudCkKKyAgICB7Cisg
ICAgICAgIGlmIChldmFsKHRlc3RGdW5jU3RyaW5nKSkKKyAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiRVZFTlQoIiArIGV2ZW50TmFtZSArICIpIFRFU1QoIiArIHRlc3RGdW5jU3RyaW5nICsgIikg
PHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bhbj4iKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZlbnROYW1lICsgIikgVEVTVCgiICsg
dGVzdEZ1bmNTdHJpbmcgKyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlMPC9zcGFuPiIp
OworICAgICAgICAKKyAgICAgICAgaWYgKGVuZGl0KQorICAgICAgICAgICAgZW5kVGVzdCgpOyAg
ICAKKyAgICB9CisgICAgCisgICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF9l
dmVudENhbGxiYWNrKTsKK30KKworZnVuY3Rpb24gdGVzdEV4Y2VwdGlvbih0ZXN0U3RyaW5nLCBl
eGNlcHRpb25TdHJpbmcpCit7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbCh0ZXN0U3RyaW5nKTsK
KyAgICB9IGNhdGNoIChleCkgeyAKKyAgICAgICAgaWYgKGV4LmNvZGUgPT0gZXZhbChleGNlcHRp
b25TdHJpbmcpKQorICAgICAgICAgICAgY29uc29sZVdyaXRlKCJURVNUKCIgKyB0ZXN0U3RyaW5n
ICsgIikgVEhST1dTKCIrZXhjZXB0aW9uU3RyaW5nKyIpIDxzcGFuIHN0eWxlPSdjb2xvcjpncmVl
bic+T0s8L3NwYW4+Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgi
VEVTVCgiICsgdGVzdFN0cmluZyArICIpIFRIUk9XUygiK2V4Y2VwdGlvblN0cmluZysiKSA8c3Bh
biBzdHlsZT0nY29sb3I6cmVkJz5GQUlMPC9zcGFuPiIpOyAgICAKKyAgICB9Cit9CisKK3ZhciB0
ZXN0RW5kZWQgPSBmYWxzZTsKKworZnVuY3Rpb24gZW5kVGVzdCgpCit7CisgICAgY29uc29sZVdy
aXRlKCJFTkQgT0YgVEVTVCIpOworICAgIHRlc3RFbmRlZCA9IHRydWU7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOyAgICAgCit9CisKK2Z1bmN0aW9uIGVuZFRlc3RMYXRlcigpCit7CisgICAgc2V0
VGltZW91dChlbmRUZXN0LCAyNTApOworfQorCitmdW5jdGlvbiBmYWlsVGVzdEluKG1zKQorewor
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgeworICAgICAgICBjb25zb2xlV3JpdGUoIkZBSUw6
IGRpZCBub3QgZW5kIGZhc3QgZW5vdWdoIik7CisgICAgICAgIGVuZFRlc3QoKTsKKyAgICB9LCBt
cyk7Cit9CisKK2Z1bmN0aW9uIGNvbnNvbGVXcml0ZSh0ZXh0KQoreworICAgIGlmICh0ZXN0RW5k
ZWQpCisgICAgICAgIHJldHVybjsKKyAgICBjb25zb2xlLmlubmVySFRNTCArPSB0ZXh0ICsgIjxi
cj4iOworfQorCitmdW5jdGlvbiByZWxhdGl2ZVVSTCh1cmwpCit7CisgICAgcmV0dXJuIHVybC5z
dWJzdHIodXJsLmluZGV4T2YoJy9tZWRpYS8nKSs3KTsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi10ZXN0Lmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLXRlc3Qu
anMJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi10
ZXN0LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0yLDE1ICsyLDggQEAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikgewogICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsK
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9Ci12YXIgdmlkZW87
Ci12YXIgbWVkaWE7CiB2YXIgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2Rpdicp
OwogZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlKTsKLXRyeSB7Ci0gICAgdmlkZW8g
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKLSAgICBpZiAodmlk
ZW8pCi0gICAgICAgIG1lZGlhID0gdmlkZW87Ci19IGNhdGNoIChleCkgeyB9CiAKIGZ1bmN0aW9u
IGhhbmdlZCgpCiB7CkBAIC02Myw1MyArNTYsNiBAQCBmdW5jdGlvbiBydW4odGVzdEZ1bmNTdHJp
bmcpCiAgICAgfQogfQogCi1mdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRFbmQoZXZlbnROYW1lLCBm
dW5jU3RyaW5nKQotewotICAgIHdhaXRGb3JFdmVudChldmVudE5hbWUsIGZ1bmNTdHJpbmcsIHRy
dWUpCi19Ci0KLWZ1bmN0aW9uIHdhaXRGb3JFdmVudChldmVudE5hbWUsIGZ1bmMsIGVuZGl0KQot
ewotICAgIGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQotICAgIHsKLSAgICAgICAgY29u
c29sZVdyaXRlKCJFVkVOVCgiICsgZXZlbnROYW1lICsgIikiKTsKLSAgICAgICAgCi0gICAgICAg
IGlmIChmdW5jKQotICAgICAgICAgICAgZnVuYygpOwotICAgICAgICAKLSAgICAgICAgaWYgKGVu
ZGl0KQotICAgICAgICAgICAgZW5kVGVzdCgpOyAgICAKLSAgICB9Ci0KLSAgICBtZWRpYS5hZGRF
dmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2spOyAgICAKLX0KLQotZnVuY3Rp
b24gd2FpdEZvckV2ZW50VGVzdEFuZEVuZChldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nKQotewot
ICAgIHdhaXRGb3JFdmVudEFuZFRlc3QoZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZywgdHJ1ZSk7
Ci19Ci0KLWZ1bmN0aW9uIHdhaXRGb3JFdmVudEFuZEZhaWwoZXZlbnROYW1lKQotewotICAgIHdh
aXRGb3JFdmVudEFuZFRlc3QoZXZlbnROYW1lLCAiZmFsc2UiLCB0cnVlKTsKLX0KLQotZnVuY3Rp
b24gd2FpdEZvckV2ZW50QW5kVGVzdChldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nLCBlbmRpdCkK
LXsKLSAgICBmdW5jdGlvbiBfZXZlbnRDYWxsYmFjayhldmVudCkKLSAgICB7Ci0gICAgICAgIGlm
IChldmFsKHRlc3RGdW5jU3RyaW5nKSkKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQo
IiArIGV2ZW50TmFtZSArICIpIFRFU1QoIiArIHRlc3RGdW5jU3RyaW5nICsgIikgPHNwYW4gc3R5
bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bhbj4iKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZlbnROYW1lICsgIikgVEVTVCgiICsgdGVzdEZ1bmNT
dHJpbmcgKyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlMPC9zcGFuPiIpOwotICAgICAg
ICAKLSAgICAgICAgaWYgKGVuZGl0KQotICAgICAgICAgICAgZW5kVGVzdCgpOyAgICAKLSAgICB9
Ci0gICAgCi0gICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF9ldmVudENhbGxi
YWNrKTsKLX0KLQogZnVuY3Rpb24gdGVzdEV4Y2VwdGlvbih0ZXN0U3RyaW5nLCBleGNlcHRpb25T
dHJpbmcpCiB7CiAgICAgdHJ5IHsKQEAgLTE1NCw1ICsxMDAsNSBAQCBmdW5jdGlvbiBjb25zb2xl
V3JpdGUodGV4dCkKIAogZnVuY3Rpb24gcmVsYXRpdmVVUkwodXJsKQogewotICAgIHJldHVybiB1
cmwuc3Vic3RyKHVybC5pbmRleE9mKCcvbWVkaWEvJykrNyk7CisgICAgcmV0dXJuIHVybC5zdWJz
dHIodXJsLmluZGV4T2YoJy9nZW9sb2NhdGlvbi8nKSsxMyk7CiB9ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24400</attachid>
            <date>2008-10-16 11:41:26 -0700</date>
            <delta_ts>2008-10-16 14:33:37 -0700</delta_ts>
            <desc>Create test cases!</desc>
            <filename>GeoLocation-WebKit.org.patch.txt</filename>
            <type>text/plain</type>
            <size>132027</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3NjM0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDgtMTAtMTYgIEdyZWcgQm9s
c2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDc1CisgICAgICAgIAorICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9s
b2NhdGlvbiBBUEkKKyAgICAgICAgCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkv
c3BlYy1zb3VyY2UuaHRtbAorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEVOQUJMRV9HRU9M
T0NBVElPTiBkZWZhdWx0cyB0byAwCisKIDIwMDgtMTAtMTYgIE1hY2llaiBTdGFjaG93aWFrICA8
bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDYW1lcm9uIFp3YXJpY2guCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMzc2MzQpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMzQzLDYgKzM0MywxMCBAQAogI2Rl
ZmluZSBFTkFCTEVfU0FNUExJTkdfVE9PTCAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJM
RV9HRU9MT0NBVElPTikKKyNkZWZpbmUgRU5BQkxFX0dFT0xPQ0FUSU9OIDAKKyNlbmRpZgorCiAv
LyBDVEkgb25seSBzdXBwb3J0cyB4ODYgYXQgdGhlIG1vbWVudCwgYW5kIGhhcyBvbmx5IGJlZW4g
dGVzdGVkIG9uIE1hYyBhbmQgV2luZG93cy4KICNpZiAhZGVmaW5lZChFTkFCTEVfQ1RJKSAmJiBQ
TEFURk9STShYODYpICYmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikpCiAjZGVmaW5l
IEVOQUJMRV9DVEkgMQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3NjM0KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMjcgQEAKKzIwMDgtMTAtMTYgIEdyZWcgQm9sc2luZ2Eg
IDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDc1CisgICAgICAgIAorICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9sb2NhdGlv
biBBUEkKKyAgICAgICAgCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkvc3BlYy1z
b3VyY2UuaHRtbAorCisgICAgICAgIFRlc3RzOiBnZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtl
LWN1cnJlbnRwb3NpdGlvbi5odG1sCisgICAgICAgICAgICAgICBnZW9sb2NhdGlvbi9nZW9sb2Nh
dGlvbi1mYWtlLWltcGxlbWVudGF0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGdlb2xvY2F0aW9u
L2dlb2xvY2F0aW9uLWZha2Utd2F0Y2hwb3NpdGlvbi5odG1sCisgICAgICAgICAgICAgICBnZW9s
b2NhdGlvbi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQuaHRtbAorCisgICAgICAgICogQ2hh
bmdlTG9nOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06IEFkZGVkIEdlb2xvY2F0aW9uIHN1cHBvcnQKKyAgICAgICAgKiBXZWJDb3JlLmJh
c2UuZXhwOiBBZGQgV2ViQ29yZShTZXQpU2hvdWxkVXNlRmFrZUdlb2xvY2F0aW9uIGV4cG9ydAor
ICAgICAgICAqIFdlYkNvcmUucHJvOiBBZGRlZCBHZW9sb2NhdGlvbiBzdXBwb3J0CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IEFkZGVkIEdlb2xvY2F0aW9uIHN1cHBv
cnQKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIEdl
b2xvY2F0aW9uIHN1cHBvcnQKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6IEFkZGVkIEdl
b2xvY2F0aW9uIHN1cHBvcnQKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9u
Q2FsbGJhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjazo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q3VzdG9tUG9zaXRpb25DYWxsYmFjazo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OkpTQ3VzdG9tUG9zaXRpb25FcnJv
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxi
YWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlv
bkVycm9yQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0
aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwOiBtb3ZlIG1hcmtET01PYmplY3RXcmFwcGVyIGhlcmUgZnJvbSBKU0RPTVdpbmRv
d0N1c3RvbQorICAgICAgICAoV2ViQ29yZTo6bWFya0RPTU9iamVjdFdyYXBwZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOiBtb3ZlIG1hcmtET01PYmplY3RXcmFwcGVy
IGhlcmUgZnJvbSBKU0RPTVdpbmRvd0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcDogbW92ZSBtYXJrRE9NT2JqZWN0V3JhcHBlciB0byBKU0RPTUJpbmRp
bmcKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OkpTR2VvbG9jYXRp
b246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9u
Ojp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3Rv
bS5jcHA6IGhhbmRsZSBtYXJraW5nIEdlb2xvY2F0aW9uCisgICAgICAgIChXZWJDb3JlOjpKU05h
dmlnYXRvcjo6bWFyayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06IEdlb2xvY2F0aW9uIG5lZWRzIGEgY3VzdG9tIHRvSlMKKyAgICAgICAgKiBwYWdlL0dl
b2xvY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2Vv
Tm90aWZpZXI6Okdlb05vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpH
ZW9Ob3RpZmllcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6
R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmRpc2Nvbm5lY3RG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpjbGVhcldhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uOjpzdG9wVXBkYXRpbmdJZkVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uOjpoYW5kbGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6
Z2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uOjpnZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3VycmVkKToKKyAgICAgICAgKiBw
YWdlL0dlb2xvY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
On5HZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6bGFzdFBvc2l0
aW9uKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmlkbDogQWRkZWQuCisgICAgICAgICog
cGFnZS9HZW9wb3NpdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRp
b246OnRvU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL0dlb3Bvc2l0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246Okdlb3Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb3Bvc2l0aW9uOjpsYXRpdHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlv
bjo6bG9uZ2l0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjphbHRpdHVkZSk6
CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6YWNjdXJhY3kpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvcG9zaXRpb246OmFsdGl0dWRlQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6
R2VvcG9zaXRpb246OmhlYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OnZl
bG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjp0aW1lc3RhbXApOgorICAg
ICAgICAqIHBhZ2UvR2VvcG9zaXRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL05hdmln
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OmRpc2Nvbm5lY3RGcmFtZSk6
IGRpc2Nvbm5lY3QgR2VvbG9jYXRpb24KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6Z2Vv
bG9jYXRpb24pOiBhY2Nlc3NvciBmb3IgR2VvbG9jYXRpb24KKyAgICAgICAgKiBwYWdlL05hdmln
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpvcHRpb25hbEdlb2xvY2F0aW9u
KTogYWNjZXNzb3IgZm9yIEdlb2xvY2F0aW9uCisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaWRs
OiBhY2Nlc3NvciBmb3IgR2VvbG9jYXRpb24KKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uQ2FsbGJh
Y2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkNhbGxiYWNrOjp+UG9zaXRp
b25DYWxsYmFjayk6CisgICAgICAgICogcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmlkbDogQWRkZWQu
CisgICAgICAgICogcGFnZS9Qb3NpdGlvbkVycm9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb25FcnJvcjo6UG9zaXRpb25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpQb3Np
dGlvbkVycm9yOjpjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OnNldENv
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6bWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpzZXRNZXNzYWdlKToKKyAgICAgICAgKiBwYWdlL1Bv
c2l0aW9uRXJyb3IuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uRXJyb3JDYWxs
YmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3JDYWxsYmFjazo6
flBvc2l0aW9uRXJyb3JDYWxsYmFjayk6CisgICAgICAgICogcGFnZS9Qb3NpdGlvbkVycm9yQ2Fs
bGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uT3B0aW9ucy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6UG9zaXRpb25PcHRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6ZW5hYmxlSGlnaEFjY3VyYWN5KToK
KyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6dGltZW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OnNldFRpbWVvdXQpOgorICAgICAgICAqIHBhZ2Uv
UG9zaXRpb25PcHRpb25zLmlkbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vR2VvbG9jYXRp
b25TZXJ2aWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZp
Y2U6Okdlb2xvY2F0aW9uU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNl
cnZpY2U6OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNl
cnZpY2U6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL0dlb2xvY2F0aW9uU2Vy
dmljZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUNsaWVu
dDo6fkdlb2xvY2F0aW9uU2VydmljZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvblNlcnZpY2VDbGllbnQ6Omdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQ6Omdlb2xvY2F0aW9uU2Vy
dmljZUVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNl
Ojp+R2VvbG9jYXRpb25TZXJ2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9HZW9sb2NhdGlvblNl
cnZpY2VGYWtlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZp
Y2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2U6OmlzQXZh
aWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUZha2U6Okdlb2xv
Y2F0aW9uU2VydmljZUZha2UpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNl
RmFrZTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZp
Y2VGYWtlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZp
Y2VGYWtlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNlRmFr
ZTo6fkdlb2xvY2F0aW9uU2VydmljZUZha2UpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b25TZXJ2aWNlRmFrZTo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uU2VydmljZUZha2U6Omxhc3RQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvblNlcnZpY2VGYWtlOjpsYXN0RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL1dlYkNvcmVH
ZW9sb2NhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVNldFNob3Vs
ZFVzZUZha2VHZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU2hvdWxkVXNl
RmFrZUdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9XZWJDb3JlR2VvbG9jYXRpb24u
aDogQWRkZWQuCisKIDIwMDgtMTAtMTUgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEB3ZWJraXQu
b3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogV2ViQ29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQkocmV2aXNpb24gMzc2MzQpCisrKyBXZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UJKHdv
cmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDggQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgRXZlbnRU
YXJnZXROb2RlIFwKICAgICBGaWxlIFwKICAgICBGaWxlTGlzdCBcCisgICAgR2VvbG9jYXRpb24g
XAorICAgIEdlb3Bvc2l0aW9uIFwKICAgICBIVE1MQW5jaG9yRWxlbWVudCBcCiAgICAgSFRNTEFw
cGxldEVsZW1lbnQgXAogICAgIEhUTUxBcmVhRWxlbWVudCBcCkBAIC0xNzksNiArMTgxLDEwIEBA
IERPTV9DTEFTU0VTID0gXAogICAgIE92ZXJmbG93RXZlbnQgXAogICAgIFBsdWdpbiBcCiAgICAg
UGx1Z2luQXJyYXkgXAorICAgIFBvc2l0aW9uQ2FsbGJhY2sgXAorICAgIFBvc2l0aW9uRXJyb3Ig
XAorICAgIFBvc2l0aW9uRXJyb3JDYWxsYmFjayBcCisgICAgUG9zaXRpb25PcHRpb25zIFwKICAg
ICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gXAogICAgIFByb2dyZXNzRXZlbnQgXAogICAgIFJHQkNv
bG9yIFwKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMzc2MzQpCisrKyBXZWJDb3JlL0dOVW1ha2VmaWxl
LmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDEwIEBAIHdlYmNvcmVfc291cmNlcyAr
PSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3Rv
bS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDbGlwYm9hcmRDdXN0b20uY3BwIFwKIAlX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlND
dXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1
c3RvbVZvaWRDYWxsYmFjay5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Wb2lk
Q2FsbGJhY2suaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVhQYXRoTlNSZXNvbHZl
ci5jcHAgXApAQCAtMzQ3LDYgKzM1MSw3IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNF
dmVudFRhcmdldEJhc2UuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9k
ZUN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgXAogCVdl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbi5oIFwKIAlXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwIFwKQEAgLTExODYsNiArMTE5MSwx
MCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGFnZS9GcmFtZVRyZWUuaCBcCiAJ
V2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgXAogCVdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuaCBc
CisJV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcCBcCisJV2ViQ29yZS9wYWdlL0dlb2xvY2F0
aW9uLmggXAorCVdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5jcHAgXAorCVdlYkNvcmUvcGFnZS9H
ZW9wb3NpdGlvbi5oIFwKIAlXZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAgXAogCVdlYkNvcmUvcGFn
ZS9IaXN0b3J5LmggXAogCVdlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAgXApAQCAtMTE5OCw2ICsx
MjA3LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wYWdlL1BhZ2UuaCBcCiAJ
V2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgXAogCVdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuaCBc
CisJV2ViQ29yZS9wYWdlL1Bvc2l0aW9uQ2FsbGJhY2suaCBcCisJV2ViQ29yZS9wYWdlL1Bvc2l0
aW9uRXJyb3IuaCBcCisJV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oIFwKKwlX
ZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmggXAogCVdlYkNvcmUvcGFnZS9QcmludENvbnRl
eHQuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmggXAogCVdlYkNvcmUvcGFnZS9T
Y3JlZW4uY3BwIFwKQEAgLTEyNDMsNiArMTI1Niw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJ
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlQ2hvb3Nlci5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0ZpbGVT
eXN0ZW0uaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9GbG9hdENvbnZlcnNpb24uaCBcCisJV2ViQ29y
ZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwIFwKKwlXZWJDb3JlL3BsYXRmb3JtL0dl
b2xvY2F0aW9uU2VydmljZS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0hvc3RXaW5kb3cuaCBcCiAJ
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggXApJ
bmRleDogV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2Vi
Q29yZS5iYXNlLmV4cAkocmV2aXNpb24gMzc2MzQpCisrKyBXZWJDb3JlL1dlYkNvcmUuYmFzZS5l
eHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsOCBAQCBfV2ViQ29yZVNldEFsd2F5c1Vz
ZXNDb21wbGV4VGV4dENvZGVQYXRoCiBfV2ViQ29yZVNldFNob3VsZFVzZUZvbnRTbW9vdGhpbmcK
IF9XZWJDb3JlU2hvdWxkVXNlRm9udFNtb290aGluZwogX1dlYkNvcmVUZXh0RmxvYXRXaWR0aAor
X19aTjdXZWJDb3JlMzFXZWJDb3JlU2hvdWxkVXNlRmFrZUdlb2xvY2F0aW9uRXYKK19fWk43V2Vi
Q29yZTM0V2ViQ29yZVNldFNob3VsZFVzZUZha2VHZW9sb2NhdGlvbkViCiBfX1oyNlJlcG9ydEJs
b2NrZWRPYmpDRXhjZXB0aW9uUDExTlNFeGNlcHRpb24KIF9fWk43V2ViQ29yZTEwQ2FjaGVkUGFn
ZTE0ZG9jdW1lbnRMb2FkZXJFdgogX19aTjdXZWJDb3JlMTBDYWNoZWRQYWdlMjJjYWNoZWRQYWdl
UGxhdGZvcm1EYXRhRXYKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9XZWJDb3JlLnBybwkocmV2aXNpb24gMzc2MzQpCisrKyBXZWJDb3JlL1dlYkNvcmUu
cHJvCSh3b3JraW5nIGNvcHkpCkBAIC03NzUsNiArNzc1LDggQEAgU09VUkNFUyArPSBcCiAgICAg
cGFnZS9GcmFtZS5jcHAgXAogICAgIHBhZ2UvRnJhbWVUcmVlLmNwcCBcCiAgICAgcGFnZS9GcmFt
ZVZpZXcuY3BwIFwKKyAgICBwYWdlL0dlb2xvY2F0aW9uLmNwcCBcCisgICAgcGFnZS9HZW9wb3Np
dGlvbi5jcHAgXAogICAgIHBhZ2UvSGlzdG9yeS5jcHAgXAogICAgIHBhZ2UvTG9jYXRpb24uY3Bw
IFwKICAgICBwYWdlL01vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwIFwKQEAgLTgwMiw2
ICs4MDQsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAgXAogICAg
IHBsYXRmb3JtL0RyYWdJbWFnZS5jcHAgXAogICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBc
CisgICAgcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udERlc2NyaXB0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZh
bWlseS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0FmZmluZVRyYW5zZm9ybS5jcHAgXApA
QCAtMTE5Nyw3ICsxMjAwLDEwIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9EQVRBQkFTRT0x
KSB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxi
YWNrLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3BwIFwKICAg
ICAgICAgYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBcCi0gICAg
ICAgIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCisgICAgICAgIGJpbmRp
bmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMv
SlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2suY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlv
bkVycm9yQ2FsbGJhY2suY3BwCiAKICAgICBJRExfQklORElOR1MgKz0gXAogICAgICAgICBzdG9y
YWdlL0RhdGFiYXNlLmlkbCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAkocmV2aXNpb24gMzc2MzQpCisr
KyBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIs
OCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNDU1NT
dHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0NTU1ZhbHVl
Q3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2su
Y3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNw
cAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNwcAog
ICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3Bw
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5jcHAK
QEAgLTU5LDYgKzYxLDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5l
ZQogICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
Tm9kZUN1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHAKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAKICAgICAgICAg
YmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hU
TUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtMjM4LDYgKzI0MSw4IEBAIFRoaXMgZmlsZSBj
b250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0V2ZW50VGFyZ2V0Tm9kZS5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0ZpbGUuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlTGlzdC5j
cHAKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dlb2xvY2F0aW9uLmNwcAorICAg
ICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2VvcG9zaXRpb24uY3BwCiAgICAgICAgIERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MQW5jaG9yRWxlbWVudC5jcHAKICAgICAgICAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxBcHBsZXRFbGVtZW50LmNwcAogICAgICAgICBEZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtMzIyLDYgKzMyNyw4
IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgRGVy
aXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQuY3BwCiAgICAgICAgIERlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNQbHVnaW4uY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQbHVnaW5BcnJheS5jcHAKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bv
c2l0aW9uRXJyb3IuY3BwCisgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQb3NpdGlv
bk9wdGlvbnMuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQcm9ncmVz
c0V2ZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmFuZ2UuY3BwCkBA
IC02NjgsNiArNjc1LDggQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5l
ZQogICAgICAgICBwYWdlL0ZyYW1lLmNwcAogICAgICAgICBwYWdlL0ZyYW1lVHJlZS5jcHAKICAg
ICAgICAgcGFnZS9GcmFtZVZpZXcuY3BwCisgICAgICAgIHBhZ2UvR2VvbG9jYXRpb24uY3BwCisg
ICAgICAgIHBhZ2UvR2VvcG9zaXRpb24uY3BwCiAgICAgICAgIHBhZ2UvSGlzdG9yeS5jcHAKICAg
ICAgICAgcGFnZS9Mb2NhdGlvbi5jcHAKICAgICAgICAgcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRl
c3RSZXN1bHRzLmNwcApAQCAtNjkxLDYgKzcwMCw3IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUg
bGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgcGxhdGZvcm0vRGVwcmVjYXRlZFZhbHVlTGlzdElt
cGwuY3BwCiAgICAgICAgIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHAKICAgICAgICAgcGxhdGZvcm0v
RmlsZUNob29zZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZS5jcHAK
ICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvRm9udENhY2hlLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0YS5j
cHAKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMzc2
MzQpCisrKyBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNv
cHkpCkBAIC02ODAsNiArNjgwLDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0K
KwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlc
RGVyaXZlZFNvdXJjZXNcSlNHZW9sb2NhdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2pl
Y3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU0dlb3Bvc2l0aW9uLmgiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2Jq
XCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRXZlbnQuaCINCiAJCQkJPg0KIAkJCTwv
RmlsZT4NCkBAIC0xMDQwLDYgKzEwNDgsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxG
aWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3RO
YW1lKVxEZXJpdmVkU291cmNlc1xKU1Bvc2l0aW9uRXJyb3IuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNQb3NpdGlvbk9wdGlvbnMuaCINCisJCQkJ
Pg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0
cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNPdmVyZmxvd0V2ZW50
LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMjI2MCw2ICsyMjc2LDM4IEBACiAJCQkJPg0K
IAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcR2VvbG9j
YXRpb24uY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0i
UmVsZWFzZV9QR098V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0K
KwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEdlb2xvY2F0aW9uLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEdlb3Bvc2l0
aW9uLmNwcCINCisJCQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJl
bGVhc2VfUEdPfFdpbjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NM
Q29tcGlsZXJUb29sIg0KKwkJCQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSINCisJ
CQkJCS8+DQorCQkJCTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxHZW9wb3NpdGlvbi5oIg0KKwkJCQk+DQorCQkJ
PC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxIaXN0b3J5LmNw
cCINCiAJCQkJPg0KIAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0yMzg4LDYgKzI0MzYsMjIg
QEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGFnZVxQb3NpdGlvbkNhbGxiYWNrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXFBvc2l0aW9uRXJyb3IuaCINCisJCQkJPg0KKwkJ
CTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUG9zaXRpb25F
cnJvckNhbGxiYWNrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwYWdlXFBvc2l0aW9uT3B0aW9ucy5oIg0KKwkJCQk+DQorCQkJPC9GaWxl
Pg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxTY3JlZW4uY3BwIg0KIAkJ
CQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTMwNDAsNiArMzEwNCwxNCBAQAogCQkJ
CT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9y
bVxHZW9sb2NhdGlvblNlcnZpY2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cR2VvbG9jYXRpb25TZXJ2aWNlLmgiDQor
CQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0
Zm9ybVxIb3N0V2luZG93LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTMxMjksNiArMTMy
MDEsMTQgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAiDQorCQkJ
CQk+DQorCQkJCTwvRmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmlu
ZGluZ3NcanNcSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwIg0KKwkJCQkJPg0KKwkJ
CQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpz
XEpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+
DQpAQCAtMTMyNTcsNiArMTMzMzcsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxG
aWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTR2VvbG9jYXRpb25DdXN0
b20uY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTSGlzdG9yeUN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJ
CTwvRmlsZT4NCkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMzc2MzQpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNDIyMCw2ICs0MjIwLDMzIEBACiAJCUY5MTZDNDhE
MERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QjBEQjUx
MEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwICovOyB9Owog
CQlGOTE2QzQ4RTBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZD
NDhDMERCNTEwRjgwMDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICov
OyB9OwogCQlGOUYwRUQ3QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
OUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmgg
Ki87IH07CisJCUZFODBEN0E3MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2Fs
bGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkU4MEQ3QTIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAg
Ki87IH07CisJCUZFODBEN0E4MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2Fs
bGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
ODBEN0EzMEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCAqLzsg
fTsKKwkJRkU4MEQ3QTkwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNh
bGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFODBEN0E0MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
ay5jcHAgKi87IH07CisJCUZFODBEN0FBMEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0
aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRkU4MEQ3QTUwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJv
ckNhbGxiYWNrLmggKi87IH07CisJCUZFODBEN0FCMEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xv
Y2F0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFODBEN0E2MEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNw
cCAqLzsgfTsKKwkJRkU4MEQ3QzUwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0I3MEU5
QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5jcHAgKi87IH07CisJCUZFODBEN0M2MEU5QzFG
MjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QjgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9u
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJRkU4MEQ3QzgwRTlD
MUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JBMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3Np
dGlvbi5jcHAgKi87IH07CisJCUZFODBEN0M5MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlv
bi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3
QkIwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi87IH07CisJCUZFODBEN0NCMEU5
QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9z
aXRpb25DYWxsYmFjay5oICovOyB9OworCQlGRTgwRDdDRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9z
aXRpb25FcnJvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRkU4MEQ3QkYwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJ
RkU4MEQ3Q0YwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzEwRTlDMUYy
NTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICovOyB9OworCQlGRTgwRDdEMTBF
OUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdDMzBFOUMxRjI1MDAwRDZGNzUgLyogUG9z
aXRpb25PcHRpb25zLmggKi87IH07CisJCUZFODBEQTYzMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dl
b2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFODBEQTVGMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCAqLzsgfTsK
KwkJRkU4MERBNjQwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYwMEU5QzQ3MDMwMDBE
NkY3NSAvKiBKU0dlb2xvY2F0aW9uLmggKi87IH07CisJCUZFODBEQTY1MEU5QzQ3MDMwMDBENkY3
NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFODBEQTYxMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNw
cCAqLzsgfTsKKwkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5
QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi87IH07CisJCUZFODBEQTcxMEU5QzQ3
MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9z
aXRpb25FcnJvci5jcHAgKi87IH07CisJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bv
c2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsK
KwkJRkU4MERBNzMwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZGMEU5QzQ3
MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgKi87IH07CisJCUZFODBEQTc0MEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MERBNzAwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpT
UG9zaXRpb25PcHRpb25zLmggKi87IH07CisJCUZFQUI5MDEyMEVBNTFCOUMwMDYzNDhDMyAvKiBH
ZW9sb2NhdGlvblNlcnZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkVBQjkwMTAwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2Vydmlj
ZS5jcHAgKi87IH07CisJCUZFQUI5MDEzMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNl
cnZpY2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
QUI5MDExMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuaCAqLzsgfTsKKwkJ
RkVFMTgxQjUwRUE2QjBDNTAwNUIzM0E5IC8qIFdlYkNvcmVHZW9sb2NhdGlvbi5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUUxODFCMzBFQTZCMEM1
MDA1QjMzQTkgLyogV2ViQ29yZUdlb2xvY2F0aW9uLmNwcCAqLzsgfTsKKwkJRkVFMTgxQjYwRUE2
QjBDNTAwNUIzM0E5IC8qIFdlYkNvcmVHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVFMTgxQjQwRUE2QjBDNTAwNUIzM0E5IC8qIFdl
YkNvcmVHZW9sb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywg
KTsgfTsgfTsKKwkJRkVFMTgyMkQwRUE2QjhFMDAwNUIzM0E5IC8qIEdlb2xvY2F0aW9uU2Vydmlj
ZUZha2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVFMTgyMkIwRUE2QjhFMDAwNUIzM0E5IC8qIEdlb2xvY2F0aW9uU2VydmljZUZha2UuY3BwICov
OyB9OworCQlGRUUxODIyRTBFQTZCOEUwMDA1QjMzQTkgLyogR2VvbG9jYXRpb25TZXJ2aWNlRmFr
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkVFMTgy
MkMwRUE2QjhFMDAwNUIzM0E5IC8qIEdlb2xvY2F0aW9uU2VydmljZUZha2UuaCAqLzsgfTsKIC8q
IEVuZCBQQlhCdWlsZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVt
UHJveHkgc2VjdGlvbiAqLwpAQCAtODgzNCw2ICs4ODYxLDM5IEBACiAJCUY5RjBFRDc3MERCNTBD
QTIwMEQxNkRCOSAvKiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGOUYwRUQ3ODBEQjUwQ0EyMDBEMTZEQjkgLyogWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkU0OUVGOTcwREM1MTQ2MjAwNDI2NkUxIC8qIERhc2hib2FyZFN1cHBvcnRDU1NQcm9wZXJ0
eU5hbWVzLmluICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IERhc2hib2FyZFN1cHBvcnRDU1NQcm9w
ZXJ0eU5hbWVzLmluOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBMjBFOUMx
RUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0EzMEU5QzFFRDIwMDBENkY3NSAvKiBK
U0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFODBEN0E0MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxs
YmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
ODBEN0E1MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbVBvc2l0aW9uRXJyb3JD
YWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBNjBFOUMxRUQy
MDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QjcwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb2xvY2F0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QjgwRTlDMUYyNTAwMEQ2Rjc1IC8q
IEdlb2xvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0I5MEU5QzFGMjUwMDBE
NkY3NSAvKiBHZW9sb2NhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2VvbG9jYXRp
b24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCQTBFOUMxRjI1MDAw
RDZGNzUgLyogR2VvcG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gR2VvcG9zaXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgw
RDdCQjBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gR2VvcG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkU4MEQ3QkMwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmlkbCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQ7IHBhdGggPSBHZW9wb3NpdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFODBEN0JEMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uQ2FsbGJhY2suaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkUwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9u
Q2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBvc2l0aW9uQ2FsbGJhY2suaWRs
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCRjBFOUMxRjI1MDAwRDZGNzUg
LyogUG9zaXRpb25FcnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3Np
dGlvbkVycm9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0MwMEU5QzFG
MjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQ
b3NpdGlvbkVycm9yLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QzEw
RTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QzIwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJy
b3JDYWxsYmFjay5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25FcnJvckNhbGxi
YWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QzMwRTlDMUYyNTAw
MEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBQb3NpdGlvbk9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4
MEQ3QzQwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0
ZXh0OyBwYXRoID0gUG9zaXRpb25PcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkU4MERBNUYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW9sb2NhdGlvbi5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTYwMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dl
b2xvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VvbG9jYXRp
b24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNjEwRTlDNDcwMzAwMEQ2
Rjc1IC8qIEpTR2VvcG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNHZW9wb3NpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZF
ODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VvcG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUg
LyogSlNQb3NpdGlvbkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
UG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2RjBF
OUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNQb3NpdGlvbk9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlGRTgwREE3MDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9w
dGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbk9wdGlv
bnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVBQjkwMTAwRUE1MUI5QzAwNjM0
OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBHZW9sb2NhdGlvblNlcnZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRUFCOTAxMTBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0aW9uU2VydmljZS5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUUxODFCMzBFQTZCMEM1MDA1QjMzQTkgLyog
V2ViQ29yZUdlb2xvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdlYkNvcmVHZW9sb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFRTE4MUI0MEVBNkIwQzUwMDVCMzNBOSAvKiBXZWJDb3JlR2VvbG9jYXRpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29yZUdlb2xvY2F0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFRTE4MjJCMEVBNkI4RTAwMDVCMzNBOSAvKiBHZW9sb2Nh
dGlvblNlcnZpY2VGYWtlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEdlb2xvY2F0aW9uU2VydmljZUZha2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRUUxODIyQzBFQTZCOEUwMDA1QjMzQTkgLyogR2VvbG9jYXRpb25TZXJ2aWNlRmFrZS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW9sb2NhdGlvblNlcnZpY2VGYWtlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAvKiBFbmQgUEJYRmlsZVJlZmVyZW5jZSBzZWN0
aW9uICovCiAKIC8qIEJlZ2luIFBCWEZyYW1ld29ya3NCdWlsZFBoYXNlIHNlY3Rpb24gKi8KQEAg
LTk1ODMsNiArOTY0MywxMiBAQAogCQkJCTY1QTIxNDgzMDk3QTNGNTMwMEI5MDUwQSAvKiBGcmFt
ZVRyZWUuaCAqLywKIAkJCQk2NUNCRkVGNzA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmNw
cCAqLywKIAkJCQk2NUNCRkVGODA5NzRGNjA3MDAxREFDMjUgLyogRnJhbWVWaWV3LmggKi8sCisJ
CQkJRkU4MEQ3QjcwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCAqLywKKwkJCQlG
RTgwRDdCODBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaCAqLywKKwkJCQlGRTgwRDdC
OTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaWRsICovLAorCQkJCUZFODBEN0JBMEU5
QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5jcHAgKi8sCisJCQkJRkU4MEQ3QkIwRTlDMUYy
NTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi8sCisJCQkJRkU4MEQ3QkMwRTlDMUYyNTAwMEQ2
Rjc1IC8qIEdlb3Bvc2l0aW9uLmlkbCAqLywKIAkJCQlCQzk0RDE1MDBDMjc1QzhCMDA2QkM2MTcg
LyogSGlzdG9yeS5jcHAgKi8sCiAJCQkJQkM5NEQxNTEwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3Rv
cnkuaCAqLywKIAkJCQlCQzk0RDE1MjBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5pZGwgKi8s
CkBAIC05NTk4LDYgKzk2NjQsMTQgQEAKIAkJCQk2NUEyMTQ2NzA5N0EzMjkxMDBCOTA1MEEgLyog
UGFnZS5oICovLAogCQkJCTkzMDJCMEJDMEQ3OUY4MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3Bw
ICovLAogCQkJCTkzMDJCMEJFMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLywKKwkJ
CQlGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5oICovLAorCQkJ
CUZFODBEN0JFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAqLywKKwkJ
CQlGRTgwRDdCRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5oICovLAorCQkJCUZF
ODBEN0MwMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmlkbCAqLywKKwkJCQlGRTgw
RDdDMTBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggKi8sCisJCQkJ
RkU4MEQ3QzIwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGwgKi8s
CisJCQkJRkU4MEQ3QzMwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oICovLAor
CQkJCUZFODBEN0M0MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaWRsICovLAog
CQkJCUJDRUMwMUJBMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uY3BwICovLAogCQkJCUJDRUMw
MUJCMEMyNzREQUMwMDlGNEVDOSAvKiBTY3JlZW4uaCAqLywKIAkJCQlCQ0VDMDFCQzBDMjc0REFD
MDA5RjRFQzkgLyogU2NyZWVuLmlkbCAqLywKQEAgLTExNzYxLDYgKzExODM1LDEwIEBACiAJCQkJ
NjVERjMyMkUwOUQxRERCQzAwMEJFMzI1IC8qIEpTRW50aXR5LmggKi8sCiAJCQkJOTNGOUI3NzIw
QkE1RkREQzAwODU0MDY0IC8qIEpTRW50aXR5UmVmZXJlbmNlLmNwcCAqLywKIAkJCQk5M0Y5Qjc3
MzBCQTVGRERDMDA4NTQwNjQgLyogSlNFbnRpdHlSZWZlcmVuY2UuaCAqLywKKwkJCQlGRTgwREE1
RjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgKi8sCisJCQkJRkU4MERBNjAw
RTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCAqLywKKwkJCQlGRTgwREE2MTBFOUM0
NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5jcHAgKi8sCisJCQkJRkU4MERBNjIwRTlDNDcw
MzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCAqLywKIAkJCQlCQ0Q5QzJCQzBDMTdCNjlFMDA1
QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAuY3BwICovLAogCQkJCUJDRDlDMkJEMEMxN0I2OUUwMDVD
OTBBMiAvKiBKU05hbWVkTm9kZU1hcC5oICovLAogCQkJCTE0REMwRDM1MDlGRUQwNzMwMDdCMDIz
NSAvKiBKU05vZGUuY3BwICovLApAQCAtMTE3NjksNiArMTE4NDcsMTAgQEAKIAkJCQlCQ0Q5QzJC
RjBDMTdCNjlFMDA1QzkwQTIgLyogSlNOb2RlTGlzdC5oICovLAogCQkJCTY1REYzMUU5MDlEMUND
NjAwMDBCRTMyNSAvKiBKU05vdGF0aW9uLmNwcCAqLywKIAkJCQk2NURGMzFFQTA5RDFDQzYwMDAw
QkUzMjUgLyogSlNOb3RhdGlvbi5oICovLAorCQkJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAv
KiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovLAorCQkJCUZFODBEQTZFMEU5QzQ3MkYwMDBENkY3NSAv
KiBKU1Bvc2l0aW9uRXJyb3IuaCAqLywKKwkJCQlGRTgwREE2RjBFOUM0NzJGMDAwRDZGNzUgLyog
SlNQb3NpdGlvbk9wdGlvbnMuY3BwICovLAorCQkJCUZFODBEQTcwMEU5QzQ3MkYwMDBENkY3NSAv
KiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovLAogCQkJCTY1REYzMUVCMDlEMUNDNjAwMDBCRTMyNSAv
KiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5jcHAgKi8sCiAJCQkJNjVERjMxRUMwOUQxQ0M2MDAw
MEJFMzI1IC8qIEpTUHJvY2Vzc2luZ0luc3RydWN0aW9uLmggKi8sCiAJCQkJRTRCNDIzODUwQ0JG
QjczQzAwQUYyRUNFIC8qIEpTUHJvZ3Jlc3NFdmVudC5jcHAgKi8sCkBAIC0xMjgzMyw2ICsxMjkx
NSwxMCBAQAogCQkJCUJDNDZDMUVEMEMwRERCREYwMDIwQ0ZDMyAvKiBKU0NTU1J1bGVDdXN0b20u
Y3BwICovLAogCQkJCUJDNTgyNUYyMEMwQjg5MzgwMDUzRjFCNSAvKiBKU0NTU1N0eWxlRGVjbGFy
YXRpb25DdXN0b20uY3BwICovLAogCQkJCUJDMjBGQjdFMEMwRThFNkMwMEQxNDQ3RiAvKiBKU0NT
U1ZhbHVlQ3VzdG9tLmNwcCAqLywKKwkJCQlGRTgwRDdBMjBFOUMxRUQyMDAwRDZGNzUgLyogSlND
dXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCAqLywKKwkJCQlGRTgwRDdBMzBFOUMxRUQyMDAwRDZG
NzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggKi8sCisJCQkJRkU4MEQ3QTQwRTlDMUVE
MjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCAqLywKKwkJCQlG
RTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2su
aCAqLywKIAkJCQk1MUVDOTI1QjBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1l
bnRDYWxsYmFjay5jcHAgKi8sCiAJCQkJNTFFQzkyNUMwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3Vz
dG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suaCAqLywKIAkJCQk1MUVDOTI1RDBDRTkwREQ0MDBGOTAz
MDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcCAqLywKQEAgLTEyODUy
LDYgKzEyOTM4LDcgQEAKIAkJCQlCQzJFRDU1NDBDNkI5QkQzMDA5MjBCRkYgLyogSlNFbGVtZW50
Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0VGQUY0RDBDMzE3RTY5MDBGQTgxRjYgLyogSlNFdmVudEN1
c3RvbS5jcHAgKi8sCiAJCQkJQkMzQjdCMjAwRTkxQUFGNDAwRDU0MDY1IC8qIEpTRXZlbnRUYXJn
ZXROb2RlQ3VzdG9tLmNwcCAqLywKKwkJCQlGRTgwRDdBNjBFOUMxRUQyMDAwRDZGNzUgLyogSlNH
ZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFN0IxOTIwRDRFODY5NjAwNzVBNTM5IC8q
IEpTSGlzdG9yeUN1c3RvbS5jcHAgKi8sCiAJCQkJQkM0RURFRjMwQzA4RjNGQjAwN0VERDQ5IC8q
IEpTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDQ0JBRDNBMEMxOEJGRjgw
MENFODkwRiAvKiBKU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTEzMTYyLDYgKzEz
MjQ5LDEwIEBACiAJCQkJMDY2Qzc3MkEwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmgg
Ki8sCiAJCQkJNTE0QjNGNzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLywKIAkJ
CQlCQzA3M0JBOTBDMzk5QjFGMDAwRjU5NzkgLyogRmxvYXRDb252ZXJzaW9uLmggKi8sCisJCQkJ
RkVBQjkwMTAwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5jcHAgKi8sCisJ
CQkJRkVBQjkwMTEwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5oICovLAor
CQkJCUZFRTE4MjJCMEVBNkI4RTAwMDVCMzNBOSAvKiBHZW9sb2NhdGlvblNlcnZpY2VGYWtlLmNw
cCAqLywKKwkJCQlGRUUxODIyQzBFQTZCOEUwMDA1QjMzQTkgLyogR2VvbG9jYXRpb25TZXJ2aWNl
RmFrZS5oICovLAogCQkJCUJDM0JDMjlCMEU5MUFCMEYwMDgzNTU4OCAvKiBIb3N0V2luZG93Lmgg
Ki8sCiAJCQkJNjU5MzkyMzUwOUFFNDM0NjAwMkM1MzFGIC8qIEtVUkwuY3BwICovLAogCQkJCTY1
OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBLVVJMLmggKi8sCkBAIC0xMzIwMSw2ICsxMzI5Miw4
IEBACiAJCQkJOTMzMDlFQTEwOTlFQjc4QzAwNTZFNTgxIC8qIFRpbWVyLmNwcCAqLywKIAkJCQk5
MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLywKIAkJCQkxNDE5RDJDNDBDRUE2
RjYxMDBGRjUwN0EgLyogVHJlZVNoYXJlZC5oICovLAorCQkJCUZFRTE4MUIzMEVBNkIwQzUwMDVC
MzNBOSAvKiBXZWJDb3JlR2VvbG9jYXRpb24uY3BwICovLAorCQkJCUZFRTE4MUI0MEVBNkIwQzUw
MDVCMzNBOSAvKiBXZWJDb3JlR2VvbG9jYXRpb24uaCAqLywKIAkJCQk5MzgwRjQ3MTA5QTExQUI0
MDAxRkRCMzQgLyogV2lkZ2V0LmNwcCAqLywKIAkJCQk5MzgwRjQ3MjA5QTExQUI0MDAxRkRCMzQg
LyogV2lkZ2V0LmggKi8sCiAJCQkpOwpAQCAtMTU5NzUsNiArMTYwNjgsMTggQEAKIAkJCQkxQzgx
QkEwQzBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFDODFCQTBFMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdT
ZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0JFMTJCMEU5ODA5MkYwMDgzNTU4OCAvKiBQ
b3B1cE1lbnVTdHlsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3QTgwRTlDMUVEMjAwMEQ2
Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4
MEQ3QUEwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdDNjBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRp
b24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0M5MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9w
b3NpdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3Q0IwRTlDMUYyNTAwMEQ2Rjc1IC8q
IFBvc2l0aW9uQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0NEMEU5QzFGMjUw
MDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdDRjBF
OUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTgwRDdEMTBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25PcHRpb25zLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlGRTgwREE2NDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9z
aXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBK
U1Bvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEQTc0MEU5QzQ3MkYwMDBE
NkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkU5OTQw
RTlDMUM3QzAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMzQkU5OTUwRTlDMUM3QzAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclBhcnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDM0JFOTk5MEU5QzFFNUQwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJU
aGVtZS5oIGluIEhlYWRlcnMgKi8sCkBAIC0xNTk4Miw2ICsxNjA4Nyw5IEBACiAJCQkJMUNGNkJF
MTUwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBODBENjcwODBFOUU5REVCMDBFNDIwRjAgLyogR3JhcGhpY3NDb250ZXh0UGxh
dGZvcm1Qcml2YXRlQ0cuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzOUIwMkVGMEVBMkRCQzQwMEM1
NDU3MCAvKiBXaWR0aEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUFCOTAxMzBFQTUx
QjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RUUxODFCNjBFQTZCMEM1MDA1QjMzQTkgLyogV2ViQ29yZUdlb2xvY2F0aW9uLmggaW4gSGVhZGVy
cyAqLywKKwkJCQlGRUUxODIyRTBFQTZCOEUwMDA1QjMzQTkgLyogR2VvbG9jYXRpb25TZXJ2aWNl
RmFrZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC0xNzg0Miw2ICsxNzk1MCwxNSBAQAogCQkJCTFDODFC
QTAyMEU5NzMzQ0IwMDI2NkUwNyAvKiBKYXZhU2NyaXB0UHJvZmlsZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkxQzgxQkEwOTBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQzgxQkEwRDBFOTczNDgzMDAyNjZFMDcgLyogSmF2YVNj
cmlwdERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEN0E3MEU5QzFFRDIw
MDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkU4MEQ3QTkwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxi
YWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEN0FCMEU5QzFFRDIwMDBENkY3NSAvKiBK
U0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEN0M1MEU5QzFG
MjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwRDdD
ODBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
RkU4MERBNjMwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJRkU4MERBNjUwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJRkU4MERBNzEwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25F
cnJvci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwREE3MzBFOUM0NzJGMDAwRDZGNzUgLyog
SlNQb3NpdGlvbk9wdGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzQkU5OTMwRTlDMUM3
QzAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzNC
RTlBNTBFOUMyMzk2MDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyVGhlbWUuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkMzQkU5QUIwRTlDMjQyMDAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclBh
cnQuY3BwIGluIFNvdXJjZXMgKi8sCkBAIC0xNzg0OSw2ICsxNzk2Niw5IEBACiAJCQkJMUNGNkJF
MTQwRTlCQjQ2NzAwMjVFMUNEIC8qIE9iakNOb2RlRmlsdGVyQ29uZGl0aW9uLm1tIGluIFNvdXJj
ZXMgKi8sCiAJCQkJQkM4MEZBMTMwRUEyODdCMDAwQjA4MjFEIC8qIExlbmd0aC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk5MzlCMDJFRTBFQTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVyYXRvci5j
cHAgaW4gU291cmNlcyAqLywKKwkJCQlGRUFCOTAxMjBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9j
YXRpb25TZXJ2aWNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFRTE4MUI1MEVBNkIwQzUwMDVC
MzNBOSAvKiBXZWJDb3JlR2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVFMTgy
MkQwRUE2QjhFMDAwNUIzM0E5IC8qIEdlb2xvY2F0aW9uU2VydmljZUZha2UuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFj
ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9u
Q2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVBvc2l0aW9uQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDg2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJD
b25zb2xlLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5j
bHVkZSAiSlNHZW9wb3NpdGlvbi5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTY3Jp
cHRDb250cm9sbGVyLmgiCisjaW5jbHVkZSA8a2pzL0pTTG9jay5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFj
azo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrKEpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZy
YW1lKQorICAgIDogbV9jYWxsYmFjayhjYWxsYmFjaykKKyAgICAsIG1fZnJhbWUoZnJhbWUpCit7
Cit9CisKK3ZvaWQgSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVudChHZW9wb3Np
dGlvbiogZ2VvcG9zaXRpb24sIGJvb2wmIHJhaXNlZEV4Y2VwdGlvbikKK3sKKyAgICBBU1NFUlQo
bV9jYWxsYmFjayk7CisgICAgQVNTRVJUKG1fZnJhbWUpOworICAgIAorICAgIGlmICghbV9mcmFt
ZS0+c2NyaXB0KCktPmlzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmpl
Y3QoKTsKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsK
KyAgICAKKyAgICBKU0M6OkpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICAKKyAgICBKU1ZhbHVlKiBm
dW5jdGlvbiA9IG1fY2FsbGJhY2stPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVF
dmVudCIpKTsKKyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9
IGZ1bmN0aW9uLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENh
bGxUeXBlTm9uZSkgeworICAgICAgICBjYWxsVHlwZSA9IG1fY2FsbGJhY2stPmdldENhbGxEYXRh
KGNhbGxEYXRhKTsKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgeworICAg
ICAgICAgICAgLy8gRklYTUU6IFNob3VsZCBhbiBleGNlcHRpb24gYmUgdGhyb3duIGhlcmU/Cisg
ICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gPSBtX2NhbGxi
YWNrOworICAgIH0KKyAgICAKKyAgICBSZWZQdHI8SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrPiBw
cm90ZWN0KHRoaXMpOworICAgIAorICAgIEFyZ0xpc3QgYXJnczsKKyAgICBhcmdzLmFwcGVuZCh0
b0pTKGV4ZWMsIGdlb3Bvc2l0aW9uKSk7CisgICAgCisgICAgZ2xvYmFsT2JqZWN0LT5zdGFydFRp
bWVvdXRDaGVjaygpOworICAgIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0
YSwgbV9jYWxsYmFjaywgYXJncyk7CisgICAgZ2xvYmFsT2JqZWN0LT5zdG9wVGltZW91dENoZWNr
KCk7CisgICAgCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKSB7CisgICAgICAgIG1fZnJh
bWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPnJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhlYyk7
CisgICAgICAgIHJhaXNlZEV4Y2VwdGlvbiA9IHRydWU7CisgICAgfQorfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3Np
dGlvbkNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFjay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrX2gKKyNkZWZpbmUgSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrX2gK
KworI2luY2x1ZGUgPGtqcy9KU09iamVjdC5oPgorI2luY2x1ZGUgPGtqcy9wcm90ZWN0Lmg+Cisj
aW5jbHVkZSAiUG9zaXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisK
K25hbWVzcGFjZSBKU0MgeworICAgIGNsYXNzIEpTT2JqZWN0OworfQorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgR2VvcG9zaXRpb247CisKK2NsYXNzIEpTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFjayA6IHB1YmxpYyBQb3NpdGlvbkNhbGxiYWNrIHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s+IGNyZWF0ZShK
U0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKSB7IHJldHVybiBhZG9wdFJlZihu
ZXcgSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrKGNhbGxiYWNrLCBmcmFtZSkpOyB9CisgICAgCisg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KEdlb3Bvc2l0aW9uKiwgYm9vbCYgcmFpc2VkRXhj
ZXB0aW9uKTsKKworcHJpdmF0ZToKKyAgICBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2soSlNDOjpK
U09iamVjdCogY2FsbGJhY2ssIEZyYW1lKik7CisKKyAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0M6
OkpTT2JqZWN0PiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKK307Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBKU0N1c3RvbVBvc2l0aW9u
Q2FsbGJhY2tfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJy
b3JDYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3Rv
bVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBS
aWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSA8a2pzL0pTTG9jay5oPgorI2luY2x1
ZGUgIkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiQ29uc29sZS5o
IgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpT
UG9zaXRpb25FcnJvci5oIgorI2luY2x1ZGUgIlBhZ2UuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBK
U0M7CisKK0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uRXJy
b3JDYWxsYmFjayhKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fY2Fs
bGJhY2soY2FsbGJhY2spCisgICAgLCBtX2ZyYW1lKGZyYW1lKQoreworfQorCit2b2lkIEpTQ3Vz
dG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpoYW5kbGVFdmVudChQb3NpdGlvbkVycm9yKiBwb3Np
dGlvbkVycm9yKQoreworICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKKyAgICBBU1NFUlQobV9mcmFt
ZSk7CisgICAgCisgICAgaWYgKCFtX2ZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAg
ICAgIHJldHVybjsKKyAgICAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9m
cmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCgpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIAorICAgIEpTQzo6SlNMb2NrIGxvY2soZmFs
c2UpOworICAgIAorICAgIEpTVmFsdWUqIGZ1bmN0aW9uID0gbV9jYWxsYmFjay0+Z2V0KGV4ZWMs
IElkZW50aWZpZXIoZXhlYywgImhhbmRsZUV2ZW50IikpOworICAgIENhbGxEYXRhIGNhbGxEYXRh
OworICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZnVuY3Rpb24tPmdldENhbGxEYXRhKGNhbGxEYXRh
KTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgIGNhbGxUeXBl
ID0gbV9jYWxsYmFjay0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5
cGUgPT0gQ2FsbFR5cGVOb25lKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGFuIGV4
Y2VwdGlvbiBiZSB0aHJvd24gaGVyZT8KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgICAgICBmdW5jdGlvbiA9IG1fY2FsbGJhY2s7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxK
U0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKKyAgICAKKyAgICBB
cmdMaXN0IGFyZ3M7CisgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBwb3NpdGlvbkVycm9yKSk7
CisgICAgCisgICAgZ2xvYmFsT2JqZWN0LT5zdGFydFRpbWVvdXRDaGVjaygpOworICAgIGNhbGwo
ZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBjYWxsRGF0YSwgbV9jYWxsYmFjaywgYXJncyk7Cisg
ICAgZ2xvYmFsT2JqZWN0LT5zdG9wVGltZW91dENoZWNrKCk7CisgICAgCisgICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgp
LT5yZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JD
YWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3Np
dGlvbkVycm9yQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZu
ZGVmIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrX2gKKyNkZWZpbmUgSlNDdXN0b21Qb3Np
dGlvbkVycm9yQ2FsbGJhY2tfaAorCisjaW5jbHVkZSAiUG9zaXRpb25FcnJvckNhbGxiYWNrLmgi
CisjaW5jbHVkZSA8a2pzL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8a2pzL3Byb3RlY3QuaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgSlNDIHsKKyAgICBjbGFzcyBKU09i
amVjdDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgRnJhbWU7CitjbGFz
cyBQb3NpdGlvbkVycm9yOworCitjbGFzcyBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayA6
IHB1YmxpYyBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrPiBjcmVhdGUoSlNDOjpKU09iamVj
dCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9t
UG9zaXRpb25FcnJvckNhbGxiYWNrKGNhbGxiYWNrLCBmcmFtZSkpOyB9CisgICAgCisgICAgdmly
dHVhbCB2b2lkIGhhbmRsZUV2ZW50KFBvc2l0aW9uRXJyb3IqKTsKKworcHJpdmF0ZToKKyAgICBK
U0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJh
bWUqKTsKKworICAgIEpTQzo6UHJvdGVjdGVkUHRyPEpTQzo6SlNPYmplY3Q+IG1fY2FsbGJhY2s7
CisgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1lOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrX2gKSW5kZXg6
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAJKHJldmlzaW9uIDM3NjM0KQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcs
NiArMzA3LDE2IEBAIHZvaWQgdXBkYXRlRE9NTm9kZURvY3VtZW50KE5vZGUqIG5vZGUsIEQKICAg
ICBhZGRXcmFwcGVyKHdyYXBwZXIpOwogfQogCit2b2lkIG1hcmtET01PYmplY3RXcmFwcGVyKEpT
R2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb2JqZWN0KQoreworICAgIGlmICghb2JqZWN0
KQorICAgICAgICByZXR1cm47CisgICAgRE9NT2JqZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9N
T2JqZWN0V3JhcHBlcihnbG9iYWxEYXRhLCBvYmplY3QpOworICAgIGlmICghd3JhcHBlciB8fCB3
cmFwcGVyLT5tYXJrZWQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIHdyYXBwZXItPm1hcmsoKTsK
K30KKwogSlNWYWx1ZSoganNTdHJpbmdPck51bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJp
bmcmIHMpCiB7CiAgICAgaWYgKHMuaXNOdWxsKCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQmluZGluZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmgJKHJldmlzaW9uIDM3NjM0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNjksNiArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgdm9pZCB1cGRhdGVET01Ob2RlRG9jdW1lbnQoTm9kZSosIERvY3VtZW50KiBvbGRE
b2N1bWVudCwgRG9jdW1lbnQqIG5ld0RvY3VtZW50KTsKICAgICB2b2lkIG1hcmtET01Ob2Rlc0Zv
ckRvY3VtZW50KERvY3VtZW50Kik7CiAgICAgdm9pZCBtYXJrQWN0aXZlT2JqZWN0c0ZvckRvY3Vt
ZW50KEpTQzo6SlNHbG9iYWxEYXRhJiwgRG9jdW1lbnQqKTsKKyAgICB2b2lkIG1hcmtET01PYmpl
Y3RXcmFwcGVyKEpTQzo6SlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lkKiBvYmplY3QpOwog
ICAgIHZvaWQgbWFya0Nyb3NzSGVhcERlcGVuZGVudE9iamVjdHNGb3JEb2N1bWVudChKU0M6OkpT
R2xvYmFsRGF0YSYsIERvY3VtZW50Kik7CiAKICAgICBKU0M6OlN0cnVjdHVyZUlEKiBnZXRDYWNo
ZWRET01TdHJ1Y3R1cmUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwpJ
bmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9u
IDM3NjM0KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQxLDE2ICs0MSw2IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGljIHZvaWQgbWFya0RPTU9iamVjdFdyYXBwZXIoSlNH
bG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lkKiBvYmplY3QpCi17Ci0gICAgaWYgKCFvYmplY3Qp
Ci0gICAgICAgIHJldHVybjsKLSAgICBET01PYmplY3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01P
YmplY3RXcmFwcGVyKGdsb2JhbERhdGEsIG9iamVjdCk7Ci0gICAgaWYgKCF3cmFwcGVyIHx8IHdy
YXBwZXItPm1hcmtlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgd3JhcHBlci0+bWFyaygpOwot
fQotCiB2b2lkIEpTRE9NV2luZG93OjptYXJrKCkKIHsKICAgICBCYXNlOjptYXJrKCk7CkluZGV4
OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9u
IDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHZW9sb2Nh
dGlvbi5oIgorI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2Vydmlj
ZS5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpT
Q3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIK
KyNpbmNsdWRlICJKU1Bvc2l0aW9uT3B0aW9ucy5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0pTQzo6SlNWYWx1ZSogdG9KUyhKU0M6OkV4ZWNTdGF0
ZSogZXhlYywgR2VvbG9jYXRpb24qIG9iamVjdCkKK3sKKyAgICBpZiAoR2VvbG9jYXRpb25TZXJ2
aWNlOjppc0F2YWlsYWJsZSgpKQorICAgICAgICByZXR1cm4gZ2V0RE9NT2JqZWN0V3JhcHBlcjxK
U0dlb2xvY2F0aW9uPihleGVjLCBvYmplY3QpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUqIEpTR2VvbG9jYXRpb246OmdldEN1cnJlbnRQb3Np
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgLy8gQXJn
dW1lbnRzOiBQb3NpdGlvbkNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25FcnJvckNhbGxiYWNr
LCAob3B0aW9uYWwpUG9zaXRpb25PcHRpb25zCisgICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+
IHBvc2l0aW9uQ2FsbGJhY2s7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoZXhlYywg
MCktPmdldE9iamVjdCgpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgc2V0RE9N
RXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CisgICAgfQorCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRvSlNET01XaW5kb3co
ZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpKQorICAgICAgICBw
b3NpdGlvbkNhbGxiYWNrID0gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0
LCBmcmFtZSk7CisgICAgCisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRp
b25FcnJvckNhbGxiYWNrOworICAgIGlmICghYXJncy5hdChleGVjLCAxKS0+aXNVbmRlZmluZWRP
ck51bGwoKSkgeworICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdChleGVjLCAxKS0+
Z2V0T2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICBzZXRET01F
eGNlcHRpb24oZXhlYywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9K
U0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCkp
CisgICAgICAgICAgICBwb3NpdGlvbkVycm9yQ2FsbGJhY2sgPSBKU0N1c3RvbVBvc2l0aW9uRXJy
b3JDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZnJhbWUpOworICAgIH0KKyAgICAKKyAgICBSZWZQ
dHI8UG9zaXRpb25PcHRpb25zPiBwb3NpdGlvbk9wdGlvbnM7CisgICAgaWYgKCFhcmdzLmF0KGV4
ZWMsIDIpLT5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICBwb3NpdGlvbk9wdGlvbnMgPSB0
b1Bvc2l0aW9uT3B0aW9ucyhhcmdzLmF0KGV4ZWMsIDIpKTsKKyAgICAKKyAgICBtX2ltcGwtPmdl
dEN1cnJlbnRQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25FcnJv
ckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLmdldCgpKTsKKyAgICAKKyAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKworSlNWYWx1ZSogSlNHZW9sb2NhdGlvbjo6d2F0Y2hQ
b3NpdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgLy8g
QXJndW1lbnRzOiBQb3NpdGlvbkNhbGxiYWNrLCAob3B0aW9uYWwpUG9zaXRpb25FcnJvckNhbGxi
YWNrLCAob3B0aW9uYWwpUG9zaXRpb25PcHRpb25zCisgICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJh
Y2s+IHBvc2l0aW9uQ2FsbGJhY2s7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoZXhl
YywgMCktPmdldE9iamVjdCgpOworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgfQorICAgIAorICAgIGlmIChGcmFtZSogZnJhbWUgPSB0b0pTRE9N
V2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKSkKKyAg
ICAgICAgcG9zaXRpb25DYWxsYmFjayA9IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjazo6Y3JlYXRl
KG9iamVjdCwgZnJhbWUpOworICAgIAorICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+
IHBvc2l0aW9uRXJyb3JDYWxsYmFjazsKKyAgICBpZiAoIWFyZ3MuYXQoZXhlYywgMSktPmlzVW5k
ZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgSlNPYmplY3QqIG9iamVjdCA9IGFyZ3MuYXQoZXhl
YywgMSktPmdldE9iamVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkgeworICAgICAgICAgICAg
c2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsKKyAgICAgICAgICAgIHJl
dHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gdG9KU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5p
bXBsKCktPmZyYW1lKCkpCisgICAgICAgICAgICBwb3NpdGlvbkVycm9yQ2FsbGJhY2sgPSBKU0N1
c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZnJhbWUpOworICAgIH0K
KyAgICAKKyAgICBSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBwb3NpdGlvbk9wdGlvbnM7CisgICAg
aWYgKCFhcmdzLmF0KGV4ZWMsIDIpLT5pc1VuZGVmaW5lZE9yTnVsbCgpKQorICAgICAgICBwb3Np
dGlvbk9wdGlvbnMgPSB0b1Bvc2l0aW9uT3B0aW9ucyhhcmdzLmF0KGV4ZWMsIDIpKTsKKyAgICAK
KyAgICBpbnQgdyA9IG1faW1wbC0+d2F0Y2hQb3NpdGlvbihwb3NpdGlvbkNhbGxiYWNrLnJlbGVh
c2UoKSwgcG9zaXRpb25FcnJvckNhbGxiYWNrLnJlbGVhc2UoKSwgcG9zaXRpb25PcHRpb25zLmdl
dCgpKTsKKyAgICByZXR1cm4ganNOdW1iZXIoZXhlYywgdyk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0b20uY3Bw
CShyZXZpc2lvbiAzNzYzNCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNOYXZpZ2F0b3JDdXN0
b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNCArMTEzLDEzIEBAIEpTVmFsdWUqIEpTTmF2
aWdhdG9yOjphcHBWZXJzaW9uKEV4ZWNTdGEKICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgaW1w
LT5hcHBWZXJzaW9uKCkpOwogfQogCit2b2lkIEpTTmF2aWdhdG9yOjptYXJrKCkKK3sKKyAgICBC
YXNlOjptYXJrKCk7CisKKyAgICBKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEgPSAqSGVhcDo6aGVh
cCh0aGlzKS0+Z2xvYmFsRGF0YSgpOworCisgICAgbWFya0RPTU9iamVjdFdyYXBwZXIoZ2xvYmFs
RGF0YSwgaW1wbCgpLT5vcHRpb25hbEdlb2xvY2F0aW9uKCkpOworfQorCiB9CkluZGV4OiBXZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDM3NjM0
KQorKysgV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQkod29ya2lu
ZyBjb3B5KQpAQCAtMTQ1LDcgKzE0NSw3IEBAIHN1YiBVc2VzTWFudWFsVG9KU0ltcGxlbWVudGF0
aW9uCiB7CiAgICAgbXkgJHR5cGUgPSBzaGlmdDsKIAotICAgIHJldHVybiAxIGlmICR0eXBlIGVx
ICJOb2RlIiBvciAkdHlwZSBlcSAiRG9jdW1lbnQiIG9yICR0eXBlIGVxICJIVE1MQ29sbGVjdGlv
biIgb3IgJHR5cGUgZXEgIlNWR1BhdGhTZWciIG9yICR0eXBlIGVxICJTdHlsZVNoZWV0IiBvciAk
dHlwZSBlcSAiQ1NTUnVsZSIgb3IgJHR5cGUgZXEgIkNTU1ZhbHVlIiBvciAkdHlwZSBlcSAiRXZl
bnQiIG9yICR0eXBlIGVxICJJbWFnZURhdGEiIG9yICR0eXBlIGVxICJFbGVtZW50IiBvciAkdHlw
ZSBlcSAiVGV4dCI7CisgICAgcmV0dXJuIDEgaWYgJHR5cGUgZXEgIk5vZGUiIG9yICR0eXBlIGVx
ICJEb2N1bWVudCIgb3IgJHR5cGUgZXEgIkhUTUxDb2xsZWN0aW9uIiBvciAkdHlwZSBlcSAiU1ZH
UGF0aFNlZyIgb3IgJHR5cGUgZXEgIlN0eWxlU2hlZXQiIG9yICR0eXBlIGVxICJDU1NSdWxlIiBv
ciAkdHlwZSBlcSAiQ1NTVmFsdWUiIG9yICR0eXBlIGVxICJFdmVudCIgb3IgJHR5cGUgZXEgIklt
YWdlRGF0YSIgb3IgJHR5cGUgZXEgIkVsZW1lbnQiIG9yICR0eXBlIGVxICJUZXh0IiBvciAkdHlw
ZSBlcSAiR2VvbG9jYXRpb24iOwogICAgIHJldHVybiAwOwogfQogCkluZGV4OiBXZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlv
bi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDE3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRp
b24uaCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcihQYXNzUmVmUHRyPFBvc2l0
aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2Fs
bGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykKKyAgICA6IG1f
c3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAsIG1fZXJyb3JDYWxsYmFjayhl
cnJvckNhbGxiYWNrKQorICAgICwgbV90aW1lcih0aGlzLCAmR2VvbG9jYXRpb246Okdlb05vdGlm
aWVyOjp0aW1lckZpcmVkKQoreworICAgIGlmIChtX2Vycm9yQ2FsbGJhY2sgJiYgb3B0aW9ucyAm
JiBvcHRpb25zLT50aW1lb3V0KCkgIT0gLTEpCisgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90
KG9wdGlvbnMtPnRpbWVvdXQoKSAvIDEwMDAuMCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246Okdl
b05vdGlmaWVyOjp0aW1lckZpcmVkKFRpbWVyPEdlb05vdGlmaWVyPiopCit7CisgICAgQVNTRVJU
KG1fZXJyb3JDYWxsYmFjayk7CisgICAgCisgICAgbV90aW1lci5zdG9wKCk7CisKKyAgICBSZWZQ
dHI8UG9zaXRpb25FcnJvcj4gZXJyb3IgPSBuZXcgUG9zaXRpb25FcnJvcig0LCAiVGltZWQgb3V0
Iik7CisgICAgbV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5nZXQoKSk7Cit9CisK
K0dlb2xvY2F0aW9uOjpHZW9sb2NhdGlvbihGcmFtZSogZnJhbWUpCisgICAgOiBtX2ZyYW1lKGZy
YW1lKQorICAgICwgbV9zZXJ2aWNlKEdlb2xvY2F0aW9uU2VydmljZTo6Y3JlYXRlKHRoaXMpKQor
eworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQoreworICAgIG1fZnJh
bWUgPSAwOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oUGFzc1Jl
ZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRp
b25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMp
Cit7CisgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IG5ldyBHZW9Ob3RpZmllcihz
dWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpOworCisgICAgaWYgKCFtX3Nl
cnZpY2UtPnN0YXJ0VXBkYXRpbmcob3B0aW9ucykpIHsKKyAgICAgICAgaWYgKG5vdGlmaWVyLT5t
X2Vycm9yQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJv
ciA9IG5ldyBQb3NpdGlvbkVycm9yKDEsICJVbmFibGUgdG8gU3RhcnQiKTsKKyAgICAgICAgICAg
IG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9vbmVTaG90cy5hZGQobm90
aWZpZXIpOworfQorCitpbnQgR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oUGFzc1JlZlB0cjxQ
b3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJv
ckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCit7Cisg
ICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IG5ldyBHZW9Ob3RpZmllcihzdWNjZXNz
Q2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIG9wdGlvbnMpOworCisgICAgaWYgKCFtX3NlcnZpY2Ut
PnN0YXJ0VXBkYXRpbmcob3B0aW9ucykpIHsKKyAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9y
Q2FsbGJhY2spIHsKKyAgICAgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IG5l
dyBQb3NpdGlvbkVycm9yKDEsICJVbmFibGUgdG8gU3RhcnQiKTsKKyAgICAgICAgICAgIG5vdGlm
aWVyLT5tX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgc3RhdGljIGludCBzSWRlbnRp
ZmllciA9IDA7CisgICAgCisgICAgbV93YXRjaGVycy5zZXQoKytzSWRlbnRpZmllciwgbm90aWZp
ZXIpOworCisgICAgcmV0dXJuIHNJZGVudGlmaWVyOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpj
bGVhcldhdGNoKGludCB3YXRjaElkKQoreworICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZp
ZXIgPSBtX3dhdGNoZXJzLmdldCh3YXRjaElkKTsKKyAgICBpZiAobm90aWZpZXIpCisgICAgICAg
IG1fd2F0Y2hlcnMucmVtb3ZlKHdhdGNoSWQpOworICAgIAorICAgIHN0b3BVcGRhdGluZ0lmRW1w
dHkoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6c3RvcFVwZGF0aW5nSWZFbXB0eSgpCit7Cisg
ICAgaWYgKG1fd2F0Y2hlcnMuaXNFbXB0eSgpICYmIG1fb25lU2hvdHMuaXNFbXB0eSgpKQorICAg
ICAgICBtX3NlcnZpY2UtPnN0b3BVcGRhdGluZygpOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpo
YW5kbGVFcnJvcihQb3NpdGlvbkVycm9yKiBlcnJvcikKK3sKKyAgICBHZW9Ob3RpZmllclNldDo6
Y29uc3RfaXRlcmF0b3Igb25lU2hvdHNFbmQgPSBtX29uZVNob3RzLmVuZCgpOworICAgIGZvciAo
R2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9vbmVTaG90cy5iZWdpbigpOyBp
dCAhPSBvbmVTaG90c0VuZDsgKytpdCkgeworICAgICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5v
dGlmaWVyID0gKml0OworICAgICAgICAKKyAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2Fs
bGJhY2spCisgICAgICAgICAgICBub3RpZmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVu
dChlcnJvcik7CisgICAgfQorICAgIG1fb25lU2hvdHMuY2xlYXIoKTsKKyAgICAKKyAgICBHZW9O
b3RpZmllck1hcDo6Y29uc3RfaXRlcmF0b3Igd2F0Y2hlcnNFbmQgPSBtX3dhdGNoZXJzLmVuZCgp
OworICAgIGZvciAoR2VvTm90aWZpZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV93YXRjaGVy
cy5iZWdpbigpOyBpdCAhPSB3YXRjaGVyc0VuZDsgKytpdCkgeworICAgICAgICBSZWZQdHI8R2Vv
Tm90aWZpZXI+IG5vdGlmaWVyID0gKCppdCkuc2Vjb25kOworICAgICAgICAKKyAgICAgICAgaWYg
KG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spCisgICAgICAgICAgICBub3RpZmllci0+bV9lcnJv
ckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvcik7CisgICAgfQorfQorCit2b2lkIEdlb2xvY2F0
aW9uOjpnZW9sb2NhdGlvblNlcnZpY2VQb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25TZXJ2aWNl
KiBzZXJ2aWNlKQoreworICAgIEFTU0VSVChzZXJ2aWNlLT5sYXN0UG9zaXRpb24oKSk7CisgICAg
CisgICAgYm9vbCBzaG91bGRDYWxsRXJyb3JDYWxsYmFjayA9IGZhbHNlOworICAgIEdlb05vdGlm
aWVyU2V0Ojpjb25zdF9pdGVyYXRvciBvbmVTaG90c0VuZCA9IG1fb25lU2hvdHMuZW5kKCk7Cisg
ICAgZm9yIChHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX29uZVNob3RzLmJl
Z2luKCk7IGl0ICE9IG9uZVNob3RzRW5kOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxHZW9Ob3Rp
Zmllcj4gbm90aWZpZXIgPSAqaXQ7CisgICAgICAgIEFTU0VSVChub3RpZmllci0+bV9zdWNjZXNz
Q2FsbGJhY2spOworICAgICAgICAKKyAgICAgICAgbm90aWZpZXItPm1fdGltZXIuc3RvcCgpOwor
ICAgICAgICBub3RpZmllci0+bV9zdWNjZXNzQ2FsbGJhY2stPmhhbmRsZUV2ZW50KHNlcnZpY2Ut
Pmxhc3RQb3NpdGlvbigpLCBzaG91bGRDYWxsRXJyb3JDYWxsYmFjayk7CisgICAgICAgIGlmIChz
aG91bGRDYWxsRXJyb3JDYWxsYmFjaykgeworICAgICAgICAgICAgUmVmUHRyPFBvc2l0aW9uRXJy
b3I+IGVycm9yID0gbmV3IFBvc2l0aW9uRXJyb3IoNSwgIkphdmFTY3JpcHQgRXJyb3IiKTsKKyAg
ICAgICAgICAgIGhhbmRsZUVycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBHZW9Ob3RpZmllck1hcDo6Y29uc3RfaXRlcmF0
b3Igd2F0Y2hlcnNFbmQgPSBtX3dhdGNoZXJzLmVuZCgpOworICAgIGZvciAoR2VvTm90aWZpZXJN
YXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV93YXRjaGVycy5iZWdpbigpOyBpdCAhPSB3YXRjaGVy
c0VuZDsgKytpdCkgeworICAgICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKCpp
dCkuc2Vjb25kOworICAgICAgICBBU1NFUlQobm90aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrKTsK
KyAgICAgICAgCisgICAgICAgIG5vdGlmaWVyLT5tX3RpbWVyLnN0b3AoKTsKKyAgICAgICAgbm90
aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChzZXJ2aWNlLT5sYXN0UG9zaXRp
b24oKSwgc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2spOworICAgICAgICBpZiAoc2hvdWxkQ2FsbEVy
cm9yQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9
IG5ldyBQb3NpdGlvbkVycm9yKDUsICJKYXZhU2NyaXB0IEVycm9yIik7CisgICAgICAgICAgICBo
YW5kbGVFcnJvcihlcnJvci5nZXQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0K
KyAgICB9CisgICAgCisgICAgbV9vbmVTaG90cy5jbGVhcigpOworICAgIHN0b3BVcGRhdGluZ0lm
RW1wdHkoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JP
Y2N1cnJlZChHZW9sb2NhdGlvblNlcnZpY2UqIHNlcnZpY2UpCit7CisgICAgQVNTRVJUKHNlcnZp
Y2UtPmxhc3RFcnJvcigpKTsKKyAgICBoYW5kbGVFcnJvcihzZXJ2aWNlLT5sYXN0RXJyb3IoKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2Nh
dGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBHZW9sb2NhdGlvbl9oCisjZGVmaW5lIEdlb2xvY2F0aW9uX2gKKworI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZS5oIgorI2luY2x1ZGUgIlBvc2l0
aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCIKKyNpbmNs
dWRlICJQb3NpdGlvbk9wdGlvbnMuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK2NsYXNzIEZyYW1lOworY2xhc3MgR2VvcG9zaXRpb247CisKK2NsYXNzIEdl
b2xvY2F0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvbG9jYXRpb24+LCBwdWJsaWMgR2VvbG9j
YXRpb25TZXJ2aWNlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICBHZW9sb2NhdGlvbihGcmFtZSopOwor
ICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9uKCkge30KKworICAgIHZvaWQgZGlzY29ubmVjdEZyYW1l
KCk7CisgICAgCisgICAgR2VvcG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJu
IG1fc2VydmljZS0+bGFzdFBvc2l0aW9uKCk7IH0KKworICAgIHZvaWQgZ2V0Q3VycmVudFBvc2l0
aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJv
ckNhbGxiYWNrPiwgUG9zaXRpb25PcHRpb25zKik7CisgICAgaW50IHdhdGNoUG9zaXRpb24oUGFz
c1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiwgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJh
Y2s+LCBQb3NpdGlvbk9wdGlvbnMqKTsKKyAgICB2b2lkIGNsZWFyV2F0Y2goaW50IHdhdGNoSWQp
OworCitwcml2YXRlOgorICAgIGNsYXNzIEdlb05vdGlmaWVyIDogcHVibGljIFJlZkNvdW50ZWQ8
R2VvTm90aWZpZXI+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEdlb05vdGlmaWVyKFBhc3NSZWZQ
dHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiwg
UG9zaXRpb25PcHRpb25zKik7CisgICAgICAgIAorICAgICAgICB2b2lkIHRpbWVyRmlyZWQoVGlt
ZXI8R2VvTm90aWZpZXI+Kik7CisgICAgICAgIAorICAgICAgICBSZWZQdHI8UG9zaXRpb25DYWxs
YmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2Fs
bGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKKyAgICAgICAgVGltZXI8R2VvTm90aWZpZXI+IG1fdGlt
ZXI7CisgICAgfTsKKyAgICAKKyAgICB2b2lkIHN0b3BVcGRhdGluZ0lmRW1wdHkoKTsKKyAgICB2
b2lkIGhhbmRsZUVycm9yKFBvc2l0aW9uRXJyb3IqKTsKKworICAgIHZpcnR1YWwgdm9pZCBnZW9s
b2NhdGlvblNlcnZpY2VQb3NpdGlvbkNoYW5nZWQoR2VvbG9jYXRpb25TZXJ2aWNlKik7CisgICAg
dmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uU2VydmljZUVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25T
ZXJ2aWNlKik7CisgICAgICAgICAgICAKKyAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPEdlb05v
dGlmaWVyPiA+IEdlb05vdGlmaWVyU2V0OworICAgIHR5cGVkZWYgSGFzaE1hcDxpbnQsIFJlZlB0
cjxHZW9Ob3RpZmllcj4gPiBHZW9Ob3RpZmllck1hcDsKKyAgICAKKyAgICBHZW9Ob3RpZmllclNl
dCBtX29uZVNob3RzOworICAgIEdlb05vdGlmaWVyTWFwIG1fd2F0Y2hlcnM7CisgICAgRnJhbWUq
IG1fZnJhbWU7CisgICAgT3duUHRyPEdlb2xvY2F0aW9uU2VydmljZT4gbV9zZXJ2aWNlOworfTsK
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEdlb2xvY2F0aW9uX2gK
SW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL0dlb2xvY2F0aW9uLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9HZW9s
b2NhdGlvbi5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50
ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gR2VvbG9jYXRpb24g
eworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgR2VvcG9zaXRpb24gbGFzdFBvc2l0aW9uOwor
CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0Q3VycmVudFBvc2l0aW9uKGluIFBvc2l0aW9uQ2Fs
bGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxs
YmFjaywgaW4gUG9zaXRpb25PcHRpb25zIG9wdGlvbnMpOworCisgICAgICAgIFtDdXN0b21dIGxv
bmcgd2F0Y2hQb3NpdGlvbihpbiBQb3NpdGlvbkNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4g
UG9zaXRpb25FcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2ssIGluIFBvc2l0aW9uT3B0aW9ucyBv
cHRpb25zKTsKKworICAgICAgICB2b2lkIGNsZWFyV2F0Y2goaW4gbG9uZyB3YXRjaElkKTsKKyAg
ICB9OworCit9CkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BhZ2UvR2VvcG9zaXRpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJHZW9wb3NpdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1N0cmluZyBHZW9wb3NpdGlvbjo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTdHJp
bmc6OmZvcm1hdCgicG9zaXRpb24oJS42bGcsICUuNmxnLCAlLjZsZywgJS42bGcsICUuNmxnLCAl
LjZsZywgJS42bGcsICUubGxkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF0aXR1
ZGUsIG1fbG9uZ2l0dWRlLCBtX2FsdGl0dWRlLCBtX2FjY3VyYWN5LCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9hbHRpdHVkZUFjY3VyYWN5LCBtX2hlYWRpbmcsIG1fdmVsb2NpdHksIG1f
dGltZXN0YW1wKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9w
YWdlL0dlb3Bvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9u
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIEdlb3Bvc2l0aW9uX2gKKyNkZWZpbmUgR2VvcG9zaXRpb25faAor
CisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBpbnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgR2Vv
cG9zaXRpb24gOiBwdWJsaWMgUmVmQ291bnRlZDxHZW9wb3NpdGlvbj4geworcHVibGljOgorICAg
IEdlb3Bvc2l0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFs
dGl0dWRlLCBkb3VibGUgYWNjdXJhY3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUg
aGVhZGluZywgZG91YmxlIHZlbG9jaXR5LCBET01UaW1lU3RhbXAgdGltZXN0YW1wKQorICAgICAg
ICA6IG1fbGF0aXR1ZGUobGF0aXR1ZGUpCisgICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRl
KQorICAgICAgICAsIG1fYWx0aXR1ZGUoYWx0aXR1ZGUpCisgICAgICAgICwgbV9hY2N1cmFjeShh
Y2N1cmFjeSkKKyAgICAgICAgLCBtX2FsdGl0dWRlQWNjdXJhY3koYWx0aXR1ZGVBY2N1cmFjeSkK
KyAgICAgICAgLCBtX2hlYWRpbmcoaGVhZGluZykKKyAgICAgICAgLCBtX3ZlbG9jaXR5KHZlbG9j
aXR5KQorICAgICAgICAsIG1fdGltZXN0YW1wKHRpbWVzdGFtcCkKKyAgICB7CisgICAgfQorICAg
IAorICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF0aXR1ZGU7IH0KKyAg
ICBkb3VibGUgbG9uZ2l0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sb25naXR1ZGU7IH0KKyAgICBk
b3VibGUgYWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9CisgICAgZG91Ymxl
IGFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9hY2N1cmFjeTsgfQorICAgIGRvdWJsZSBhbHRp
dHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9hbHRpdHVkZUFjY3VyYWN5OyB9CisgICAg
ZG91YmxlIGhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2hlYWRpbmc7IH0KKyAgICBkb3VibGUg
dmVsb2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgRE9NVGltZVN0YW1w
IHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CisKKyAgICBTdHJpbmcg
dG9TdHJpbmcoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBkb3VibGUgbV9sYXRpdHVkZTsKKyAg
ICBkb3VibGUgbV9sb25naXR1ZGU7CisgICAgZG91YmxlIG1fYWx0aXR1ZGU7CisgICAgZG91Ymxl
IG1fYWNjdXJhY3k7CisgICAgZG91YmxlIG1fYWx0aXR1ZGVBY2N1cmFjeTsKKyAgICBkb3VibGUg
bV9oZWFkaW5nOworICAgIGRvdWJsZSBtX3ZlbG9jaXR5OworICAgIERPTVRpbWVTdGFtcCBtX3Rp
bWVzdGFtcDsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBH
ZW9wb3NpdGlvbl9oCkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaWRsCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BhZ2UvR2VvcG9zaXRpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBjb3Jl
IHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBd
IEdlb3Bvc2l0aW9uIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBsYXRpdHVk
ZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBsb25naXR1ZGU7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgYWx0aXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBkb3VibGUgYWNjdXJhY3k7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3Vi
bGUgYWx0aXR1ZGVBY2N1cmFjeTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBo
ZWFkaW5nCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgdmVsb2NpdHkKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVRpbWVTdGFtcCB0aW1lc3RhbXA7CisKKyAgICAgICAg
W0RvbnRFbnVtXSBET01TdHJpbmcgdG9TdHJpbmcoKTsKKyAgICB9OworfQpJbmRleDogV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5jcHAJKHJldmlzaW9uIDM3NjM0KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJGcmFtZS5oIgogI2luY2x1
ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNs
dWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiTWlt
ZVR5cGVBcnJheS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlmaWVyLmgiCkBAIC04Nyw2
ICs4OCwxMCBAQCB2b2lkIE5hdmlnYXRvcjo6ZGlzY29ubmVjdEZyYW1lKCkKICAgICAgICAgbV9t
aW1lVHlwZXMtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgICAgICBtX21pbWVUeXBlcyA9IDA7CiAg
ICAgfQorICAgIGlmIChtX2dlb2xvY2F0aW9uKSB7CisgICAgICAgIG1fZ2VvbG9jYXRpb24tPmRp
c2Nvbm5lY3RGcmFtZSgpOworICAgICAgICBtX2dlb2xvY2F0aW9uID0gMDsKKyAgICB9CiAgICAg
bV9mcmFtZSA9IDA7CiB9CiAKQEAgLTE5Nyw0ICsyMDIsMTQgQEAgYm9vbCBOYXZpZ2F0b3I6Om9u
TGluZSgpIGNvbnN0CiAgICAgcmV0dXJuIG5ldHdvcmtTdGF0ZU5vdGlmaWVyKCkub25MaW5lKCk7
CiB9CiAKK0dlb2xvY2F0aW9uKiBOYXZpZ2F0b3I6Omdlb2xvY2F0aW9uKCkgY29uc3QKK3sKKyAg
ICBpZiAoR2VvbG9jYXRpb25TZXJ2aWNlOjppc0F2YWlsYWJsZSgpKSB7CisgICAgICAgIGlmICgh
bV9nZW9sb2NhdGlvbikKKyAgICAgICAgICAgIG1fZ2VvbG9jYXRpb24gPSBuZXcgR2VvbG9jYXRp
b24obV9mcmFtZSk7CisgICAgICAgIHJldHVybiBtX2dlb2xvY2F0aW9uLmdldCgpOworICAgIH0g
ZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvTmF2aWdhdG9yLmgJKHJldmlzaW9uIDM3NjM0KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICAgICBjbGFzcyBGcmFtZTsKKyAgICBjbGFzcyBHZW9sb2NhdGlvbjsKICAgICBjbGFzcyBN
aW1lVHlwZUFycmF5OwogICAgIGNsYXNzIFBsdWdpbkRhdGE7CiAgICAgY2xhc3MgUGx1Z2luQXJy
YXk7CkBAIC01NiwxMSArNTcsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29s
IGphdmFFbmFibGVkKCkgY29uc3Q7CiAKICAgICAgICAgYm9vbCBvbkxpbmUoKSBjb25zdDsKKyAg
ICAgICAgR2VvbG9jYXRpb24qIGdlb2xvY2F0aW9uKCkgY29uc3Q7CisgICAgICAgIC8vIFRoaXMg
aXMgdXNlZCBmb3IgR0MgbWFya2luZy4KKyAgICAgICAgR2VvbG9jYXRpb24qIG9wdGlvbmFsR2Vv
bG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dlb2xvY2F0aW9uLmdldCgpOyB9CiAgICAgcHJp
dmF0ZToKICAgICAgICAgTmF2aWdhdG9yKEZyYW1lKik7CiAgICAgICAgIEZyYW1lKiBtX2ZyYW1l
OwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxQbHVnaW5BcnJheT4gbV9wbHVnaW5zOwogICAgICAg
ICBtdXRhYmxlIFJlZlB0cjxNaW1lVHlwZUFycmF5PiBtX21pbWVUeXBlczsKKyAgICAgICAgbXV0
YWJsZSBSZWZQdHI8R2VvbG9jYXRpb24+IG1fZ2VvbG9jYXRpb247CiAgICAgfTsKIAogfQpJbmRl
eDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L05hdmlnYXRvci5pZGwJKHJldmlzaW9uIDM3NjM0KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE5LDcgKzE5LDkgQEAKIAogbW9kdWxlIHdpbmRvdyB7
CiAKLSAgICBpbnRlcmZhY2UgTmF2aWdhdG9yIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBD
dXN0b21NYXJrRnVuY3Rpb24KKyAgICBdIE5hdmlnYXRvciB7CiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBET01TdHJpbmcgYXBwQ29kZU5hbWU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgYXBwTmFtZTsKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21H
ZXR0ZXJdIERPTVN0cmluZyBhcHBWZXJzaW9uOwpAQCAtMzYsNiArMzgsMTEgQEAgbW9kdWxlIHdp
bmRvdyB7CiAgICAgICAgIGJvb2xlYW4gamF2YUVuYWJsZWQoKTsKICAgICAgICAgCiAgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBib29sZWFuIG9uTGluZTsKKyNpZiBFTkFCTEVfR0VPTE9DQVRJ
T04KKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEdlb2xvY2F0aW9uIGdlb2xvY2F0aW9uOwor
I2Vsc2UKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtEb250RW51bV0gR2VvbG9jYXRpb24g
Z2VvbG9jYXRpb247CisjZW5kaWYKICAgICB9OwogCiB9CkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9z
aXRpb25DYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxi
YWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5oCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUG9zaXRpb25DYWxsYmFja19oCisjZGVmaW5lIFBv
c2l0aW9uQ2FsbGJhY2tfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorICAgIGNsYXNz
IEdlb3Bvc2l0aW9uOworICAgIAorICAgIGNsYXNzIFBvc2l0aW9uQ2FsbGJhY2sgOiBwdWJsaWMg
UmVmQ291bnRlZDxQb3NpdGlvbkNhbGxiYWNrPiB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0
dWFsIH5Qb3NpdGlvbkNhbGxiYWNrKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVF
dmVudChHZW9wb3NpdGlvbiogcG9zaXRpb24sIGJvb2wmIHJhaXNlZEV4Y2VwdGlvbikgPSAwOwor
ICAgIH07CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3NpdGlv
bkNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5pZGwJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25z
dHJ1Y3RvcgorICAgIF0gUG9zaXRpb25DYWxsYmFjayB7CisgICAgICAgIHZvaWQgaGFuZGxlRXZl
bnQoaW4gR2VvcG9zaXRpb24gcG9zaXRpb24pOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUv
cGFnZS9Qb3NpdGlvbkVycm9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0aW9u
RXJyb3IuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQb3NpdGlvbkVycm9yX2gKKyNkZWZpbmUgUG9zaXRp
b25FcnJvcl9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK2NsYXNzIFBvc2l0aW9uRXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3Np
dGlvbkVycm9yPiB7CitwdWJsaWM6CisgICAgUG9zaXRpb25FcnJvcihpbnQgY29kZSwgY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKSAKKyAgICAgICAgOiBtX2NvZGUoY29kZSkKKyAgICAgICAgLCBtX21l
c3NhZ2UobWVzc2FnZSkKKyAgICB7CisgICAgfQorICAgIAorICAgIGludCBjb2RlKCkgY29uc3Qg
eyByZXR1cm4gbV9jb2RlOyB9CisgICAgdm9pZCBzZXRDb2RlKGludCBjb2RlKSB7IG1fY29kZSA9
IGNvZGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBtX21l
c3NhZ2U7IH0KKyAgICB2b2lkIHNldE1lc3NhZ2UoY29uc3QgU3RyaW5nJiBtZXNzYWdlKSB7IG1f
bWVzc2FnZSA9IG1lc3NhZ2U7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgaW50IG1fY29kZTsKKyAg
ICBTdHJpbmcgbV9tZXNzYWdlOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFBvc2l0aW9uRXJyb3JfaApJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJy
b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmlkbAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmlkbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yCisgICAgXSBQb3NpdGlvbkVycm9yIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIGxvbmcgY29kZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBt
ZXNzYWdlOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2Fs
bGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNr
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAorI2Rl
ZmluZSBQb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRmb3JtLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisg
ICAgY2xhc3MgUG9zaXRpb25FcnJvcjsKKworICAgIGNsYXNzIFBvc2l0aW9uRXJyb3JDYWxsYmFj
ayA6IHB1YmxpYyBSZWZDb3VudGVkPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4geworICAgIHB1Ymxp
YzoKKyAgICAgICAgdmlydHVhbCB+UG9zaXRpb25FcnJvckNhbGxiYWNrKCkgeyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChQb3NpdGlvbkVycm9yKiBwb3NpdGlvbikgPSAwOwor
ICAgIH07CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3NpdGlv
bkVycm9yQ2FsbGJhY2tfaApJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFj
ay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5p
ZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmlk
bAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAw
OCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWwor
ICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBQb3NpdGlvbkVycm9yQ2FsbGJhY2sg
eworICAgICAgICB2b2lkIGhhbmRsZUV2ZW50KGluIFBvc2l0aW9uRXJyb3IgZXJyb3IpOworICAg
IH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQ
b3NpdGlvbk9wdGlvbnNfaAorI2RlZmluZSBQb3NpdGlvbk9wdGlvbnNfaAorCisjaW5jbHVkZSA8
d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworICAgIAorICAgIGNsYXNzIFBvc2l0aW9uT3B0aW9ucyA6IHB1YmxpYyBSZWZD
b3VudGVkPFBvc2l0aW9uT3B0aW9ucz4geworICAgIHB1YmxpYzoKKyAgICAgICAgUG9zaXRpb25P
cHRpb25zKGJvb2wgaGlnaEFjY3VyYWN5ID0gZmFsc2UsIGxvbmcgdGltZW91dCA9IC0xKQorICAg
ICAgICAgICAgOiBtX2hpZ2hBY2N1cmFjeShoaWdoQWNjdXJhY3kpCisgICAgICAgICAgICAsIG1f
dGltZW91dCh0aW1lb3V0KQorICAgICAgICB7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAg
IGJvb2wgZW5hYmxlSGlnaEFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9oaWdoQWNjdXJhY3k7
IH0KKyAgICAgICAgdm9pZCBzZXRFbmFibGVIaWdoQWNjdXJhY3koYm9vbCBlbmFibGUpIHsgbV9o
aWdoQWNjdXJhY3kgPSBlbmFibGU7IH0KKyAgICAgICAgbG9uZyB0aW1lb3V0KCkgY29uc3QgeyBy
ZXR1cm4gbV90aW1lb3V0OyB9CisgICAgICAgIHZvaWQgc2V0VGltZW91dChsb25nIHQpIHsgbV90
aW1lb3V0ID0gdDsgfQorICAgICAgICAKKyAgICBwcml2YXRlOgorICAgICAgICBib29sIG1faGln
aEFjY3VyYWN5OworICAgICAgICBsb25nIG1fdGltZW91dDsKKyAgICB9OworICAgIAorfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUG9zaXRpb25PcHRpb25zX2gKSW5kZXg6IFdl
YkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFn
ZS9Qb3NpdGlvbk9wdGlvbnMuaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bvc2l0
aW9uT3B0aW9ucy5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAg
aW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gUG9zaXRpb25P
cHRpb25zIHsKKyAgICAgICAgYXR0cmlidXRlIGJvb2xlYW4gZW5hYmxlSGlnaEFjY3VyYWN5Owor
ICAgICAgICBhdHRyaWJ1dGUgbG9uZyB0aW1lb3V0OworICAgIH07CisKK30KSW5kZXg6IFdlYkNv
cmUvcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEs
NTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAiR2VvbG9jYXRpb25TZXJ2aWNlLmgiCisjaW5j
bHVkZSAiR2VvcG9zaXRpb24uaCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yLmgiCisjaW5jbHVk
ZSAiUG9zaXRpb25PcHRpb25zLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRp
b25TZXJ2aWNlOjpHZW9sb2NhdGlvblNlcnZpY2UoR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KiBj
bGllbnQpCisgICAgOiBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudChjbGllbnQpCit7Cit9CisK
K3ZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlOjpwb3NpdGlvbkNoYW5nZWQoKQoreworICAgIGlmICht
X2dlb2xvY2F0aW9uU2VydmljZUNsaWVudCkKKyAgICAgICAgbV9nZW9sb2NhdGlvblNlcnZpY2VD
bGllbnQtPmdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZCh0aGlzKTsKK30KKwordm9p
ZCBHZW9sb2NhdGlvblNlcnZpY2U6OmVycm9yT2NjdXJyZWQoKQoreworICAgIGlmIChtX2dlb2xv
Y2F0aW9uU2VydmljZUNsaWVudCkKKyAgICAgICAgbV9nZW9sb2NhdGlvblNlcnZpY2VDbGllbnQt
Pmdlb2xvY2F0aW9uU2VydmljZUVycm9yT2NjdXJyZWQodGhpcyk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmgJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2lmbmRlZiBHZW9sb2NhdGlvblNlcnZpY2VfaAorI2RlZmluZSBHZW9s
b2NhdGlvblNlcnZpY2VfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlOworY2xhc3MgR2VvcG9z
aXRpb247CitjbGFzcyBQb3NpdGlvbkVycm9yOworY2xhc3MgUG9zaXRpb25PcHRpb25zOworCitj
bGFzcyBHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQKK3sKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5H
ZW9sb2NhdGlvblNlcnZpY2VDbGllbnQoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRp
b25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKEdlb2xvY2F0aW9uU2VydmljZSopIHsgfQorICAgIHZp
cnR1YWwgdm9pZCBnZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uU2Vy
dmljZSopIHsgfQorfTsKKworY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlIDogcHVibGljIE5vbmNv
cHlhYmxlIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgR2VvbG9jYXRpb25TZXJ2aWNlKiBjcmVhdGUo
R2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50Kik7CisgICAgdmlydHVhbCB+R2VvbG9jYXRpb25TZXJ2
aWNlKCkge30KKyAgICAKKyAgICBzdGF0aWMgYm9vbCBpc0F2YWlsYWJsZSgpOworICAgIAorICAg
IHZpcnR1YWwgYm9vbCBzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyopID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwgR2VvcG9z
aXRpb24qIGxhc3RQb3NpdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBvc2l0aW9uRXJy
b3IqIGxhc3RFcnJvcigpIGNvbnN0ID0gMDsKKworICAgIHZvaWQgcG9zaXRpb25DaGFuZ2VkKCk7
CisgICAgdm9pZCBlcnJvck9jY3VycmVkKCk7CisKK3Byb3RlY3RlZDoKKyAgICBHZW9sb2NhdGlv
blNlcnZpY2UoR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50Kik7CisKK3ByaXZhdGU6CisgICAgR2Vv
bG9jYXRpb25TZXJ2aWNlQ2xpZW50KiBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudDsKK307Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHZW9sb2NhdGlvblNlcnZp
Y2VfaApJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2VGYWtlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZUZha2UuY3Bw
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2VGYWtl
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R2VvbG9jYXRpb25TZXJ2aWNlRmFrZS5oIgorI2luY2x1ZGUgIldlYkNvcmVHZW9sb2NhdGlvbi5o
IgorCisjaWYgRU5BQkxFKEdFT0xPQ0FUSU9OKQorI2Vycm9yIFRoaXMgcGxhdGZvcm0gc3VwcG9y
dHMgR0VPTE9DQVRJT04sIHNvIGRvIG5vdCBidWlsZCB0aGlzIGZpbGUuCisjZWxzZQorbmFtZXNw
YWNlIFdlYkNvcmUgeworCitHZW9sb2NhdGlvblNlcnZpY2UqIEdlb2xvY2F0aW9uU2VydmljZTo6
Y3JlYXRlKEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCogY2xpZW50KQoreworICAgIHJldHVybiBu
ZXcgR2VvbG9jYXRpb25TZXJ2aWNlRmFrZShjbGllbnQpOworfQorCitib29sIEdlb2xvY2F0aW9u
U2VydmljZTo6aXNBdmFpbGFibGUoKQoreworICAgIHJldHVybiBXZWJDb3JlU2hvdWxkVXNlRmFr
ZUdlb2xvY2F0aW9uKCk7Cit9CisKK0dlb2xvY2F0aW9uU2VydmljZUZha2U6Okdlb2xvY2F0aW9u
U2VydmljZUZha2UoR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KiBjbGllbnQpCisgICAgOiBHZW9s
b2NhdGlvblNlcnZpY2UoY2xpZW50KQorICAgICwgbV90aW1lcih0aGlzLCAmR2VvbG9jYXRpb25T
ZXJ2aWNlRmFrZTo6dGltZXJGaXJlZCkKK3sKK30KKworYm9vbCBHZW9sb2NhdGlvblNlcnZpY2VG
YWtlOjpzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyopCit7CisgICAgbV90aW1lci5zdGFy
dE9uZVNob3QoMCk7CisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgR2VvbG9jYXRp
b25TZXJ2aWNlRmFrZTo6dGltZXJGaXJlZChUaW1lcjxHZW9sb2NhdGlvblNlcnZpY2VGYWtlPiop
Cit7CisgICAgbV9sYXN0UG9zaXRpb24gPSBuZXcgR2VvcG9zaXRpb24oMzcuMzMyNjQsLTEyMi4w
MzA5OSwwLjAsMS4wLDAuMCwwLjAsMC4wLDEwMDAuMCk7CisgICAgR2VvbG9jYXRpb25TZXJ2aWNl
Ojpwb3NpdGlvbkNoYW5nZWQoKTsKK30KKworfQorI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL0dlb2xvY2F0aW9uU2VydmljZUZha2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRm
b3JtL0dlb2xvY2F0aW9uU2VydmljZUZha2UuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxh
dGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlRmFrZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgR2VvbG9jYXRpb25TZXJ2aWNlRmFrZV9oCisjZGVmaW5lIEdlb2xvY2F0aW9uU2VydmljZUZh
a2VfaAorCisjaW5jbHVkZSAiR2VvbG9jYXRpb25TZXJ2aWNlLmgiCisjaW5jbHVkZSAiR2VvcG9z
aXRpb24uaCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiVGltZXIuaCIK
KyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
R2VvbG9jYXRpb25TZXJ2aWNlRmFrZSA6IHB1YmxpYyBHZW9sb2NhdGlvblNlcnZpY2UgeworcHVi
bGljOgorICAgIEdlb2xvY2F0aW9uU2VydmljZUZha2UoR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50
Kik7CisgICAgdmlydHVhbCB+R2VvbG9jYXRpb25TZXJ2aWNlRmFrZSgpIHsgfQorICAgIAorICAg
IHZpcnR1YWwgYm9vbCBzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyopOworICAgIHZpcnR1
YWwgdm9pZCBzdG9wVXBkYXRpbmcoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEdlb3Bvc2l0aW9u
KiBsYXN0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xhc3RQb3NpdGlvbi5nZXQoKTsgfQor
ICAgIHZpcnR1YWwgUG9zaXRpb25FcnJvciogbGFzdEVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9s
YXN0RXJyb3IuZ2V0KCk7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgdm9pZCB0aW1lckZpcmVkKFRp
bWVyPEdlb2xvY2F0aW9uU2VydmljZUZha2U+Kik7CisKKyAgICBSZWZQdHI8R2VvcG9zaXRpb24+
IG1fbGFzdFBvc2l0aW9uOworICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBtX2xhc3RFcnJvcjsK
KyAgICBUaW1lcjxHZW9sb2NhdGlvblNlcnZpY2VGYWtlPiBtX3RpbWVyOworfTsKKworfQorCisj
ZW5kaWYKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vV2ViQ29yZUdlb2xvY2F0aW9uLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL1dlYkNvcmVHZW9sb2NhdGlvbi5jcHAJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL1dlYkNvcmVHZW9sb2NhdGlvbi5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUg
SW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4gCisgKi8KKworI2luY2x1ZGUgIldlYkNvcmVHZW9sb2NhdGlvbi5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisgICAgCitzdGF0aWMgYm9vbCBnU2hvdWxkVXNlRmFrZUdlb2xvY2F0aW9u
ID0gZmFsc2U7CisKK3ZvaWQgV2ViQ29yZVNldFNob3VsZFVzZUZha2VHZW9sb2NhdGlvbihib29s
IGZha2UpCit7CisgICAgZ1Nob3VsZFVzZUZha2VHZW9sb2NhdGlvbiA9IGZha2U7Cit9CisKK2Jv
b2wgV2ViQ29yZVNob3VsZFVzZUZha2VHZW9sb2NhdGlvbigpCit7CisgICAgcmV0dXJuIGdTaG91
bGRVc2VGYWtlR2VvbG9jYXRpb247Cit9CisKK30KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vV2Vi
Q29yZUdlb2xvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9XZWJDb3Jl
R2VvbG9jYXRpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vV2ViQ29yZUdl
b2xvY2F0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBXZWJDb3JlR2VvbG9jYXRp
b25faAorI2RlZmluZSBXZWJDb3JlR2VvbG9jYXRpb25faAorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3ZvaWQgV2ViQ29yZVNldFNob3VsZFVzZUZha2VHZW9sb2NhdGlvbihib29sKTsKK2Jvb2wg
V2ViQ29yZVNob3VsZFVzZUZha2VHZW9sb2NhdGlvbigpOworCit9CisKKyNlbmRpZgpJbmRleDog
V2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDM3NjM0KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwyMCBAQAorMjAwOC0xMC0xNiAgR3JlZyBCb2xzaW5nYSAgPGJvbHNpbmdhQGFw
cGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NzUKKyAgICAgICAg
CisgICAgICAgIFByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdlb2xvY2F0aW9uIEFQSQorICAgICAg
ICAKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvZ2VvL2FwaS9zcGVjLXNvdXJjZS5odG1sCisK
KyAgICAgICAgQWRkIGNvZGUgdG8gcHV0IFdlYkNvcmUgaW50byBhIG1vZGUgdG8gZmFrZSBvdXQg
R2VvbG9jYXRpb24gb24gcGxhdGZvcm1zIHdpdGhvdXQgc3VwcG9ydAorCisgICAgICAgICogV2Vi
Vmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9zZXRVc2VGYWtlR2VvbG9jYXRp
b246XSk6CisgICAgICAgICgtW1dlYlZpZXcgX3VzZUZha2VHZW9sb2NhdGlvbl0pOgorICAgICAg
ICAqIFdlYlZpZXcvV2ViVmlld1ByaXZhdGUuaDoKKwogMjAwOC0xMC0xNSAgTWFyayBSb3dlICA8
bXJvd2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEpvbiBIb25leWN1dHQuCklu
ZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
bWFjL1dlYlZpZXcvV2ViVmlldy5tbQkocmV2aXNpb24gMzc2MzQpCisrKyBXZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMTE4LDYgKzExOCw3IEBACiAjaW1w
b3J0IDxXZWJDb3JlL1NlbGVjdGlvbkNvbnRyb2xsZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2V0
dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvVGV4dFJlc291cmNlRGVjb2Rlci5oPgorI2ltcG9y
dCA8V2ViQ29yZS9XZWJDb3JlR2VvbG9jYXRpb24uaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29y
ZU9iakNFeHRyYXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRleHRSZW5kZXJlci5oPgog
I2ltcG9ydCA8V2ViQ29yZS9XZWJDb3JlVmlldy5oPgpAQCAtMTc3Miw2ICsxNzczLDE2IEBAIFdl
YkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50YXRpb25DYWNoZSoKIAogI2VuZGlmIC8qIEVOQUJM
RShEQVNIQk9BUkRfU1VQUE9SVCkgKi8KIAorLSAodm9pZClfc2V0VXNlRmFrZUdlb2xvY2F0aW9u
OihCT09MKWYKK3sKKyAgICBXZWJDb3JlU2V0U2hvdWxkVXNlRmFrZUdlb2xvY2F0aW9uKGYpOwor
fQorCistIChCT09MKV91c2VGYWtlR2VvbG9jYXRpb24KK3sKKyAgICByZXR1cm4gV2ViQ29yZVNo
b3VsZFVzZUZha2VHZW9sb2NhdGlvbigpOworfQorCiArICh2b2lkKV9zZXRTaG91bGRVc2VGb250
U21vb3RoaW5nOihCT09MKWYKIHsKICAgICBXZWJDb3JlU2V0U2hvdWxkVXNlRm9udFNtb290aGlu
ZyhmKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAzNzYz
NCkKKysrIFdlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3UHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yODAsNiArMjgwLDkgQEAgQ291bGQgYmUgd29ydGggYWRkaW5nIHRvIHRoZSBBUEkuCiAt
IChCT09MKV9kYXNoYm9hcmRCZWhhdmlvcjooV2ViRGFzaGJvYXJkQmVoYXZpb3IpYmVoYXZpb3I7
CiAjZW5kaWYKIAorLSAodm9pZClfc2V0VXNlRmFrZUdlb2xvY2F0aW9uOihCT09MKWY7CistIChC
T09MKV91c2VGYWtlR2VvbG9jYXRpb247CisKICsgKHZvaWQpX3NldFNob3VsZFVzZUZvbnRTbW9v
dGhpbmc6KEJPT0wpZjsKICsgKEJPT0wpX3Nob3VsZFVzZUZvbnRTbW9vdGhpbmc7CiAKSW5kZXg6
IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDM3NjM0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMDgtMTAtMTYgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5n
YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc1CisgICAg
ICAgIAorICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9sb2NhdGlvbiBBUEkKKyAg
ICAgICAgCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkvc3BlYy1zb3VyY2UuaHRt
bAorCisgICAgICAgIEFkZCBjb2RlIHRvIHB1dCBXZWJDb3JlIGludG8gYSBtb2RlIHRvIGZha2Ug
b3V0IEdlb2xvY2F0aW9uIG9uIHBsYXRmb3JtcyB3aXRob3V0IHN1cHBvcnQKKyAgICAgICAgCisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAodXNlRmFrZUdlb2xvY2F0aW9uQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW06CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNl
RmFrZUdlb2xvY2F0aW9uKToKKwogMjAwOC0xMC0xNSAgR2xlbm4gV2lsc29uICA8Z3dpbHNvbkBn
b29nbGUuY29tPgogCiAgICAgICAgIEFkZGVkIG5ldyBtZXRob2QgdG8gYWxsb3cgdGVzdHMgdG8g
ZGlzYWJsZSBzbWFydCBlZGl0aW5nIGluIHRoZSBjb3Vyc2Ugb2YgYSB0ZXN0LgpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cAkocmV2aXNpb24gMzc2MzQpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYzNCw2ICs2MzQsMTQgQEAgc3Rh
dGljIEpTVmFsdWVSZWYgZWxlbWVudERvZXNBdXRvQ29tcGxldAogICAgIHJldHVybiBKU1ZhbHVl
TWFrZUJvb2xlYW4oY29udGV4dCwgYXV0b0NvbXBsZXRlcyk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVl
UmVmIHVzZUZha2VHZW9sb2NhdGlvbkNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0
X2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVj
dCkpOworICAgIGNvbnRyb2xsZXItPnNldFVzZUZha2VHZW9sb2NhdGlvbihKU1ZhbHVlVG9Cb29s
ZWFuKGNvbnRleHQsIGFyZ3VtZW50c1swXSkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOworfQorCiAvLyBTdGF0aWMgVmFsdWVzCiAKIHN0YXRpYyBKU1ZhbHVl
UmVmIGdldEdsb2JhbEZsYWdDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RS
ZWYgdGhpc09iamVjdCwgSlNTdHJpbmdSZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNl
cHRpb24pCkBAIC03NDksNiArNzU3LDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENv
bnRyb2xsZXI6OgogICAgICAgICB7ICJ3YWl0VW50aWxEb25lIiwgd2FpdFVudGlsRG9uZUNhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCiAgICAgICAgIHsgIndpbmRvd0NvdW50Iiwgd2luZG93Q291bnRDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAogICAgICAgICB7ICJlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRX
aXRoSWQiLCBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWRDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAorICAgICAgICB7ICJ1c2VGYWtlR2VvbG9jYXRpb24iLCB1c2VGYWtlR2VvbG9jYXRp
b25DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKSW5kZXg6
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIu
aAkocmV2aXNpb24gMzc2MzQpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldFRhYktleUN5Y2xlc1Rocm91Z2hFbGVtZW50cyhib29sIGN5Y2xlcyk7CiAg
ICAgdm9pZCBzZXRTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lk
IHNldFVzZURhc2hib2FyZENvbXBhdGliaWxpdHlNb2RlKGJvb2wgZmxhZyk7CisgICAgdm9pZCBz
ZXRVc2VGYWtlR2VvbG9jYXRpb24oYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFVzZXJTdHlsZVNo
ZWV0RW5hYmxlZChib29sIGZsYWcpOwogICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlv
bihKU1N0cmluZ1JlZiBwYXRoKTsKICAgICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVl
dExvY2F0aW9uKEpTU3RyaW5nUmVmIHBhdGgpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2
aXNpb24gMzc2MzQpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVz
dENvbnRyb2xsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxOCw2ICsyMTgsMTEgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlRGFzaGJvYQogICAgIFtbbWFpbkZyYW1lIHdl
YlZpZXddIF9zZXREYXNoYm9hcmRCZWhhdmlvcjpXZWJEYXNoYm9hcmRCZWhhdmlvclVzZUJhY2t3
YXJkQ29tcGF0aWJpbGl0eU1vZGUgdG86ZmxhZ107CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldFVzZUZha2VHZW9sb2NhdGlvbihib29sIGZsYWcpCit7CisgICAgW1ttYWluRnJh
bWUgd2ViVmlld10gX3NldFVzZUZha2VHZW9sb2NhdGlvbjpmbGFnXTsKK30KKwogdm9pZCBMYXlv
dXRUZXN0Q29udHJvbGxlcjo6c2V0VXNlclN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZmxhZykKIHsK
ICAgICBbW1dlYlByZWZlcmVuY2VzIHN0YW5kYXJkUHJlZmVyZW5jZXNdIHNldFVzZXJTdHlsZVNo
ZWV0RW5hYmxlZDpmbGFnXTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3NjM0KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMDgtMTAtMTYg
IEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNDc1CisgICAgICAgIAorICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9y
IHRoZSBHZW9sb2NhdGlvbiBBUEkKKyAgICAgICAgCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3Jn
L2dlby9hcGkvc3BlYy1zb3VyY2UuaHRtbAorCisgICAgICAgIFRlc3RzIHRvIHZlcmlmeSBHZW9s
b2NhdGlvbiBpc24ndCBpbXBsZW1lbnRlZCAoc28gdGhhdCBpdCBkaWRuJ3QgbGVhayBpbnRvIAor
ICAgICAgICBXZWJDb3JlIGZvciBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBpdCkgYW5k
IHRvIHRlc3QgdGhlIGZha2UgaW1wbGVtZW50YXRpb24uCisgICAgICAgIAorICAgICAgICAqIENo
YW5nZUxvZzoKKyAgICAgICAgKiBnZW9sb2NhdGlvbjogQWRkZWQuCisgICAgICAgICogZ2VvbG9j
YXRpb24vZ2VvbG9jYXRpb24tZmFrZS1jdXJyZW50cG9zaXRpb24tZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBnZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLWN1cnJlbnRwb3NpdGlv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBnZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLWlt
cGxlbWVudGF0aW9uLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZ2VvbG9jYXRpb24v
Z2VvbG9jYXRpb24tZmFrZS1pbXBsZW1lbnRhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBn
ZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLXdhdGNocG9zaXRpb24tZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBnZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLXdhdGNocG9zaXRp
b24uaHRtbDogQWRkZWQuCisgICAgICAgICogZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tbm90LWlt
cGxlbWVudGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZ2VvbG9jYXRpb24vZ2Vv
bG9jYXRpb24tbm90LWltcGxlbWVudGVkLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGdlb2xvY2F0
aW9uL2dlb2xvY2F0aW9uLXRlc3QuanM6IENvcGllZCBmcm9tIExheW91dFRlc3RzL21lZGlhL3Zp
ZGVvLXRlc3QuanMuCisgICAgICAgIChyZXNldCk6CisgICAgICAgIChoYW5nZWQpOgorICAgICAg
ICAod2F0Y2hQb3NpdGlvbkFuZEVuZCk6CisgICAgICAgICh3YXRjaFBvc2l0aW9uLl9wb3NpdGlv
bkNhbGxiYWNrKToKKyAgICAgICAgKHdhdGNoUG9zaXRpb24pOgorICAgICAgICAod2F0Y2hQb3Np
dGlvblRlc3RBbmRFbmQpOgorICAgICAgICAod2F0Y2hQb3NpdGlvbkFuZEZhaWwpOgorICAgICAg
ICAod2F0Y2hQb3NpdGlvbkFuZFRlc3QuX3Bvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAod2F0
Y2hQb3NpdGlvbkFuZFRlc3QpOgorICAgICAgICAoZ2V0Q3VycmVudFBvc2l0aW9uQW5kRW5kKToK
KyAgICAgICAgKGdldEN1cnJlbnRQb3NpdGlvbi5fcG9zaXRpb25DYWxsYmFjayk6CisgICAgICAg
IChnZXRDdXJyZW50UG9zaXRpb24pOgorICAgICAgICAoZ2V0Q3VycmVudFBvc2l0aW9uVGVzdEFu
ZEVuZCk6CisgICAgICAgIChnZXRDdXJyZW50UG9zaXRpb25BbmRGYWlsKToKKyAgICAgICAgKGdl
dEN1cnJlbnRQb3NpdGlvbkFuZFRlc3QuX3Bvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAoZ2V0
Q3VycmVudFBvc2l0aW9uQW5kVGVzdCk6CisgICAgICAgIChlbmRUZXN0KToKKyAgICAgICAgKHJl
bGF0aXZlVVJMKToKKwogMjAwOC0xMC0xNiAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhA
cGxleW8uY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEFsZXhleSBQcm9za3VyeWFr
b3YuCkluZGV4OiBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLWN1cnJl
bnRwb3NpdGlvbi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZ2VvbG9j
YXRpb24vZ2VvbG9jYXRpb24tZmFrZS1jdXJyZW50cG9zaXRpb24tZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tZmFrZS1jdXJy
ZW50cG9zaXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BP
U0lUSU9OKHBvc2l0aW9uKDM3LjMzMjYsIC0xMjIuMDMxLCAwLCAxLCAwLCAwLCAwLCAxMDAwKSkg
VEVTVChwYXNzZWRQb3NpdGlvbiAhPSBudWxsICYmIHBhc3NlZFBvc2l0aW9uID09IG5hdmlnYXRv
ci5nZW9sb2NhdGlvbi5sYXN0UG9zaXRpb24pIE9LCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlv
dXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLWN1cnJlbnRwb3NpdGlvbi5odG1s
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLWZha2Ut
Y3VycmVudHBvc2l0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9nZW9sb2Nh
dGlvbi9nZW9sb2NhdGlvbi1mYWtlLWN1cnJlbnRwb3NpdGlvbi5odG1sCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDYgQEAKKzxib2R5PjwvYm9keT4KKzxzY3JpcHQgc3JjPWdlb2xvY2F0aW9uLXRl
c3QuanM+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbGF5b3V0VGVzdENvbnRyb2xsZXIudXNlRmFrZUdl
b2xvY2F0aW9uKHRydWUpOworZ2V0Q3VycmVudFBvc2l0aW9uVGVzdEFuZEVuZCgicGFzc2VkUG9z
aXRpb24gIT0gbnVsbCAmJiBwYXNzZWRQb3NpdGlvbiA9PSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
bGFzdFBvc2l0aW9uIik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2dlb2xvY2F0aW9u
L2dlb2xvY2F0aW9uLWZha2UtaW1wbGVtZW50YXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLWZha2UtaW1wbGVtZW50YXRp
b24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24v
Z2VvbG9jYXRpb24tZmFrZS1pbXBsZW1lbnRhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNSBAQAorVEVTVChuYXZpZ2F0b3IuZ2VvbG9jYXRpb24gIT0gdW5kZWZpbmVk
KSBPSworVEVTVChuYXZpZ2F0b3IuZ2VvbG9jYXRpb24gIT0gbnVsbCkgT0sKK1RFU1QoaGFzR2Vv
bG9jYXRpb25Qcm9wZXJ0eSA9PSBmYWxzZSkgT0sKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91
dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLWZha2UtaW1wbGVtZW50YXRpb24uaHRtbAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLWlt
cGxlbWVudGF0aW9uLmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9nZW9sb2NhdGlv
bi9nZW9sb2NhdGlvbi1mYWtlLWltcGxlbWVudGF0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTUgQEAKKzxib2R5PjwvYm9keT4KKzxzY3JpcHQgc3JjPWdlb2xvY2F0aW9uLXRlc3Qu
anM+PC9zY3JpcHQ+Cis8c2NyaXB0PgorbGF5b3V0VGVzdENvbnRyb2xsZXIudXNlRmFrZUdlb2xv
Y2F0aW9uKHRydWUpOwordGVzdCgibmF2aWdhdG9yLmdlb2xvY2F0aW9uICE9IHVuZGVmaW5lZCIp
OwordGVzdCgibmF2aWdhdG9yLmdlb2xvY2F0aW9uICE9IG51bGwiKTsKK3ZhciBoYXNHZW9sb2Nh
dGlvblByb3BlcnR5ID0gZmFsc2U7Citmb3IgKHZhciBwcm9wZXJ0eSBpbiBuYXZpZ2F0b3IpIHsK
KyAgICBoYXNHZW9sb2NhdGlvblByb3BlcnR5ID0gKHByb3BlcnR5ID09ICJnZW9sb2NhdGlvbiIp
OworICAgIGlmIChoYXNHZW9sb2NhdGlvblByb3BlcnR5KQorICAgICAgICBicmVhazsKK30KK3Rl
c3QoImhhc0dlb2xvY2F0aW9uUHJvcGVydHkgPT0gZmFsc2UiKTsKK2VuZFRlc3QoKTsKKzwvc2Ny
aXB0PgpJbmRleDogTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tZmFrZS13YXRj
aHBvc2l0aW9uLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9nZW9sb2Nh
dGlvbi9nZW9sb2NhdGlvbi1mYWtlLXdhdGNocG9zaXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tZmFrZS13YXRjaHBv
c2l0aW9uLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitURVNUKHdh
dGNoSUQgPiAwKSBPSworUE9TSVRJT04ocG9zaXRpb24oMzcuMzMyNiwgLTEyMi4wMzEsIDAsIDEs
IDAsIDAsIDAsIDEwMDApKSBURVNUKHBhc3NlZFBvc2l0aW9uICE9IG51bGwgJiYgcGFzc2VkUG9z
aXRpb24gPT0gbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmxhc3RQb3NpdGlvbikgT0sKK0VORCBPRiBU
RVNUCisKSW5kZXg6IExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLWZha2Utd2F0
Y2hwb3NpdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dl
b2xvY2F0aW9uLWZha2Utd2F0Y2hwb3NpdGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0
VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tZmFrZS13YXRjaHBvc2l0aW9uLmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNiBAQAorPGJvZHk+PC9ib2R5PgorPHNjcmlwdCBzcmM9Z2Vv
bG9jYXRpb24tdGVzdC5qcz48L3NjcmlwdD4KKzxzY3JpcHQ+CitsYXlvdXRUZXN0Q29udHJvbGxl
ci51c2VGYWtlR2VvbG9jYXRpb24odHJ1ZSk7Cit3YXRjaFBvc2l0aW9uVGVzdEFuZEVuZCgicGFz
c2VkUG9zaXRpb24gIT0gbnVsbCAmJiBwYXNzZWRQb3NpdGlvbiA9PSBuYXZpZ2F0b3IuZ2VvbG9j
YXRpb24ubGFzdFBvc2l0aW9uIik7Cis8L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2dlb2xv
Y2F0aW9uL2dlb2xvY2F0aW9uLW5vdC1pbXBsZW1lbnRlZC1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tbm90LWltcGxlbWVudGVk
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dl
b2xvY2F0aW9uLW5vdC1pbXBsZW1lbnRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNSBAQAorVEVTVChuYXZpZ2F0b3IuZ2VvbG9jYXRpb24gPT09IHVuZGVmaW5lZCkgT0sK
K1RFU1QobmF2aWdhdG9yLmdlb2xvY2F0aW9uID09IG51bGwpIE9LCitURVNUKGhhc0dlb2xvY2F0
aW9uUHJvcGVydHkgPT0gZmFsc2UpIE9LCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0
cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQuaHRtbAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQu
aHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9u
LW5vdC1pbXBsZW1lbnRlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8Ym9k
eT48L2JvZHk+Cis8c2NyaXB0IHNyYz1nZW9sb2NhdGlvbi10ZXN0LmpzPjwvc2NyaXB0PgorPHNj
cmlwdD4KK3Rlc3QoIm5hdmlnYXRvci5nZW9sb2NhdGlvbiA9PT0gdW5kZWZpbmVkIik7Cit0ZXN0
KCJuYXZpZ2F0b3IuZ2VvbG9jYXRpb24gPT0gbnVsbCIpOwordmFyIGhhc0dlb2xvY2F0aW9uUHJv
cGVydHkgPSBmYWxzZTsKK2ZvciAodmFyIHByb3BlcnR5IGluIG5hdmlnYXRvcikgeworICAgIGhh
c0dlb2xvY2F0aW9uUHJvcGVydHkgPSAocHJvcGVydHkgPT0gImdlb2xvY2F0aW9uIik7CisgICAg
aWYgKGhhc0dlb2xvY2F0aW9uUHJvcGVydHkpCisgICAgICAgIGJyZWFrOworfQordGVzdCgiaGFz
R2VvbG9jYXRpb25Qcm9wZXJ0eSA9PSBmYWxzZSIpOworZW5kVGVzdCgpOworPC9zY3JpcHQ+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi10ZXN0LmpzCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLXRlc3QuanMJKHJldmlz
aW9uIDM3NjA2KQkoZnJvbSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzOjM3NjA2KQor
KysgTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tdGVzdC5qcwkod29ya2luZyBj
b3B5KQpAQCAtMCwwICsxLDE1OCBAQAoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikg
eworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9Cit2YXIgdmlkZW87Cit2YXIgbWVkaWE7Cit2
YXIgY29uc29sZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChjb25zb2xlKTsKK3RyeSB7CisgICAgdmlkZW8gPSBkb2N1bWVudC5nZXRF
bGVtZW50c0J5VGFnTmFtZSgndmlkZW8nKVswXTsKKyAgICBpZiAodmlkZW8pCisgICAgICAgIG1l
ZGlhID0gdmlkZW87Cit9IGNhdGNoIChleCkgeyB9CisKK2Z1bmN0aW9uIGhhbmdlZCgpCit7Cisg
ICAgY29uc29sZVdyaXRlKCJGQUlMOiB0aW1lZCBvdXQiKTsKKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25l
KCk7ICAKK30KK3NldFRpbWVvdXQoaGFuZ2VkLCAxMDAwMCk7CisKK2Z1bmN0aW9uIHRlc3RBbmRF
bmQodGVzdEZ1bmNTdHJpbmcpCit7CisgICAgdGVzdCh0ZXN0RnVuY1N0cmluZywgdHJ1ZSk7Cit9
CisKK2Z1bmN0aW9uIHRlc3QodGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQoreworICAgIGlmIChldmFs
KHRlc3RGdW5jU3RyaW5nKSkKKyAgICAgICAgY29uc29sZVdyaXRlKCJURVNUKCIgKyB0ZXN0RnVu
Y1N0cmluZyArICIpIDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+T0s8L3NwYW4+Iik7CisgICAg
ZWxzZQorICAgICAgICBjb25zb2xlV3JpdGUoIlRFU1QoIiArIHRlc3RGdW5jU3RyaW5nICsgIikg
PHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+RkFJTDwvc3Bhbj4iKTsgICAgCisKKyAgICBpZiAoZW5k
aXQpCisgICAgICAgIGVuZFRlc3QoKTsgIAorfQorCitmdW5jdGlvbiB0ZXN0RXhwZWN0ZWQodGVz
dEZ1bmNTdHJpbmcsIGV4cGVjdGVkKQoreworICAgIHRyeSB7CisgICAgICAgIHZhciBvYnNlcnZl
ZCA9IGV2YWwodGVzdEZ1bmNTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGNv
bnNvbGVXcml0ZShleCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgdmFyIG1z
ZyA9ICJleHBlY3RlZCAiICsgdGVzdEZ1bmNTdHJpbmcgKyAiPT0nIiArIGV4cGVjdGVkICsgIics
IG9ic2VydmVkICciICsgb2JzZXJ2ZWQgKyAiJyI7CisKKyAgICBpZiAob2JzZXJ2ZWQgPT0gZXhw
ZWN0ZWQpCisgICAgICAgIGNvbnNvbGVXcml0ZShtc2cgKyAiIC0gPHNwYW4gc3R5bGU9J2NvbG9y
OmdyZWVuJz5PSzwvc3Bhbj4iKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnNvbGVXcml0ZShtc2cg
KyAiIC0gPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+RkFJTDwvc3Bhbj4iKTsKK30KKworZnVuY3Rp
b24gcnVuKHRlc3RGdW5jU3RyaW5nKQoreworICAgIGNvbnNvbGVXcml0ZSgiUlVOKCIgKyB0ZXN0
RnVuY1N0cmluZyArICIpIik7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbCh0ZXN0RnVuY1N0cmlu
Zyk7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAgICAgICAgY29uc29sZVdyaXRlKGV4KTsKKyAgICB9
Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JFdmVudEFuZEVuZChldmVudE5hbWUsIGZ1bmNTdHJpbmcp
Cit7CisgICAgd2FpdEZvckV2ZW50KGV2ZW50TmFtZSwgZnVuY1N0cmluZywgdHJ1ZSkKK30KKwor
ZnVuY3Rpb24gd2FpdEZvckV2ZW50KGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCit7CisgICAgZnVu
Y3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQpCisgICAgeworICAgICAgICBjb25zb2xlV3JpdGUo
IkVWRU5UKCIgKyBldmVudE5hbWUgKyAiKSIpOworICAgICAgICAKKyAgICAgICAgaWYgKGZ1bmMp
CisgICAgICAgICAgICBmdW5jKCk7CisgICAgICAgIAorICAgICAgICBpZiAoZW5kaXQpCisgICAg
ICAgICAgICBlbmRUZXN0KCk7ICAgIAorICAgIH0KKworICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVu
ZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7ICAgIAorfQorCitmdW5jdGlvbiB3YWl0Rm9y
RXZlbnRUZXN0QW5kRW5kKGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcpCit7CisgICAgd2FpdEZv
ckV2ZW50QW5kVGVzdChldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsKK30KKworZnVu
Y3Rpb24gd2FpdEZvckV2ZW50QW5kRmFpbChldmVudE5hbWUpCit7CisgICAgd2FpdEZvckV2ZW50
QW5kVGVzdChldmVudE5hbWUsICJmYWxzZSIsIHRydWUpOworfQorCitmdW5jdGlvbiB3YWl0Rm9y
RXZlbnRBbmRUZXN0KGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQoreworICAgIGZ1
bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2YWwodGVz
dEZ1bmNTdHJpbmcpKQorICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZlbnRO
YW1lICsgIikgVEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6
Z3JlZW4nPk9LPC9zcGFuPiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIkVWRU5UKCIgKyBldmVudE5hbWUgKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIp
IDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPkZBSUw8L3NwYW4+Iik7CisgICAgICAgIAorICAgICAg
ICBpZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0KCk7ICAgIAorICAgIH0KKyAgICAKKyAg
ICBtZWRpYS5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2spOworfQor
CitmdW5jdGlvbiB0ZXN0RXhjZXB0aW9uKHRlc3RTdHJpbmcsIGV4Y2VwdGlvblN0cmluZykKK3sK
KyAgICB0cnkgeworICAgICAgICBldmFsKHRlc3RTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7
IAorICAgICAgICBpZiAoZXguY29kZSA9PSBldmFsKGV4Y2VwdGlvblN0cmluZykpCisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIlRFU1QoIiArIHRlc3RTdHJpbmcgKyAiKSBUSFJPV1MoIitleGNl
cHRpb25TdHJpbmcrIikgPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bhbj4iKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29uc29sZVdyaXRlKCJURVNUKCIgKyB0ZXN0U3RyaW5n
ICsgIikgVEhST1dTKCIrZXhjZXB0aW9uU3RyaW5nKyIpIDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQn
PkZBSUw8L3NwYW4+Iik7ICAgIAorICAgIH0KK30KKwordmFyIHRlc3RFbmRlZCA9IGZhbHNlOwor
CitmdW5jdGlvbiBlbmRUZXN0KCkKK3sKKyAgICBjb25zb2xlV3JpdGUoIkVORCBPRiBURVNUIik7
CisgICAgdGVzdEVuZGVkID0gdHJ1ZTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7ICAgICAKK30K
KworZnVuY3Rpb24gZW5kVGVzdExhdGVyKCkKK3sKKyAgICBzZXRUaW1lb3V0KGVuZFRlc3QsIDI1
MCk7Cit9CisKK2Z1bmN0aW9uIGZhaWxUZXN0SW4obXMpCit7CisgICAgc2V0VGltZW91dChmdW5j
dGlvbiAoKSB7CisgICAgICAgIGNvbnNvbGVXcml0ZSgiRkFJTDogZGlkIG5vdCBlbmQgZmFzdCBl
bm91Z2giKTsKKyAgICAgICAgZW5kVGVzdCgpOworICAgIH0sIG1zKTsKK30KKworZnVuY3Rpb24g
Y29uc29sZVdyaXRlKHRleHQpCit7CisgICAgaWYgKHRlc3RFbmRlZCkKKyAgICAgICAgcmV0dXJu
OworICAgIGNvbnNvbGUuaW5uZXJIVE1MICs9IHRleHQgKyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9u
IHJlbGF0aXZlVVJMKHVybCkKK3sKKyAgICByZXR1cm4gdXJsLnN1YnN0cih1cmwuaW5kZXhPZign
L21lZGlhLycpKzcpOworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91
dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLXRlc3QuanMKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tdGVzdC5qcwkocmV2aXNpb24gMCkKKysr
IExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLXRlc3QuanMJKHdvcmtpbmcgY29w
eSkKQEAgLTIsMjEgKzIsMjUgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewog
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci53YWl0VW50aWxEb25lKCk7CiB9Ci12YXIgdmlkZW87Ci12YXIgbWVkaWE7Cit2YXIg
d2F0Y2hJRCA9IC0xOwordmFyIHBhc3NlZFBvc2l0aW9uID0gbnVsbDsKIHZhciBjb25zb2xlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CiBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KGNvbnNvbGUpOwotdHJ5IHsKLSAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdO
YW1lKCd2aWRlbycpWzBdOwotICAgIGlmICh2aWRlbykKLSAgICAgICAgbWVkaWEgPSB2aWRlbzsK
LX0gY2F0Y2ggKGV4KSB7IH0KKworZnVuY3Rpb24gcmVzZXQoKQoreworICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90
aWZ5RG9uZSgpOyAgCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLnVzZUZha2VHZW9sb2Nh
dGlvbihmYWxzZSk7CisgICAgICAgIHdhdGNoSUQgPSAtMTsKKyAgICAgICAgcGFzc2VkUG9zaXRp
b24gPSBudWxsOworICAgIH0KK30KIAogZnVuY3Rpb24gaGFuZ2VkKCkKIHsKICAgICBjb25zb2xl
V3JpdGUoIkZBSUw6IHRpbWVkIG91dCIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgIAorICAg
IHJlc2V0KCk7CiB9CiBzZXRUaW1lb3V0KGhhbmdlZCwgMTAwMDApOwogCkBAIC02MywxNiArNjcs
MTkgQEAgZnVuY3Rpb24gcnVuKHRlc3RGdW5jU3RyaW5nKQogICAgIH0KIH0KIAotZnVuY3Rpb24g
d2FpdEZvckV2ZW50QW5kRW5kKGV2ZW50TmFtZSwgZnVuY1N0cmluZykKK2Z1bmN0aW9uIHdhdGNo
UG9zaXRpb25BbmRFbmQoZnVuY1N0cmluZykKIHsKLSAgICB3YWl0Rm9yRXZlbnQoZXZlbnROYW1l
LCBmdW5jU3RyaW5nLCB0cnVlKQorICAgIHdhdGNoUG9zaXRpb24oZnVuY1N0cmluZywgdHJ1ZSkK
IH0KIAotZnVuY3Rpb24gd2FpdEZvckV2ZW50KGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCitmdW5j
dGlvbiB3YXRjaFBvc2l0aW9uKGZ1bmMsIGVuZGl0KQogewotICAgIGZ1bmN0aW9uIF9ldmVudENh
bGxiYWNrKGV2ZW50KQotICAgIHsKLSAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZl
bnROYW1lICsgIikiKTsKKyAgICBmdW5jdGlvbiBfcG9zaXRpb25DYWxsYmFjayhwb3NpdGlvbikK
KyAgICB7ICAgICAgICAKKyAgICAgICAgcGFzc2VkUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAg
ICAgdGVzdCgicGFzc2VkUG9zaXRpb24gPT0gbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmxhc3RQb3Np
dGlvbiIpOworICAgICAgICAKKyAgICAgICAgY29uc29sZVdyaXRlKCJQT1NJVElPTigiICsgcG9z
aXRpb24gKyAiKSIpOwogICAgICAgICAKICAgICAgICAgaWYgKGZ1bmMpCiAgICAgICAgICAgICBm
dW5jKCk7CkBAIC04MCwzNCArODcsODkgQEAgZnVuY3Rpb24gd2FpdEZvckV2ZW50KGV2ZW50TmFt
ZSwgZnVuYywgZQogICAgICAgICBpZiAoZW5kaXQpCiAgICAgICAgICAgICBlbmRUZXN0KCk7ICAg
IAogICAgIH0KKyAgICAKKyAgICB3YXRjaElEID0gbmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNo
UG9zaXRpb24oX3Bvc2l0aW9uQ2FsbGJhY2spOworICAgIHRlc3QoIndhdGNoSUQgPiAwIik7Cit9
CisKK2Z1bmN0aW9uIHdhdGNoUG9zaXRpb25UZXN0QW5kRW5kKHRlc3RGdW5jU3RyaW5nKQorewor
ICAgIHdhdGNoUG9zaXRpb25BbmRUZXN0KHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsKK30KKworZnVu
Y3Rpb24gd2F0Y2hQb3NpdGlvbkFuZEZhaWwoKQoreworICAgIHdhdGNoUG9zaXRpb25BbmRUZXN0
KCJmYWxzZSIsIHRydWUpOworfQorCitmdW5jdGlvbiB3YXRjaFBvc2l0aW9uQW5kVGVzdCh0ZXN0
RnVuY1N0cmluZywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24gX3Bvc2l0aW9uQ2FsbGJhY2socG9z
aXRpb24pCisgICAgeworICAgICAgICBwYXNzZWRQb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAg
ICAKKyAgICAgICAgaWYgKGV2YWwodGVzdEZ1bmNTdHJpbmcpKQorICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCJQT1NJVElPTigiICsgcG9zaXRpb24gKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmlu
ZyArICIpIDxzcGFuIHN0eWxlPSdjb2xvcjpncmVlbic+T0s8L3NwYW4+Iik7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiUE9TSVRJT04oIiArIHBvc2l0aW9uICsgIikg
VEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlM
PC9zcGFuPiIpOworCisgICAgICAgIGlmIChlbmRpdCkKKyAgICAgICAgICAgIGVuZFRlc3QoKTsg
ICAgCisgICAgfQorICAgIAorICAgIHdhdGNoSUQgPSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0
Y2hQb3NpdGlvbihfcG9zaXRpb25DYWxsYmFjayk7CisgICAgdGVzdCgid2F0Y2hJRCA+IDAiKTsK
K30KIAotICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFj
ayk7ICAgIAorZnVuY3Rpb24gZ2V0Q3VycmVudFBvc2l0aW9uQW5kRW5kKGZ1bmNTdHJpbmcpCit7
CisgICAgZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmNTdHJpbmcsIHRydWUpCiB9CiAKLWZ1bmN0aW9u
IHdhaXRGb3JFdmVudFRlc3RBbmRFbmQoZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZykKK2Z1bmN0
aW9uIGdldEN1cnJlbnRQb3NpdGlvbihmdW5jLCBlbmRpdCkKIHsKLSAgICB3YWl0Rm9yRXZlbnRB
bmRUZXN0KGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcsIHRydWUpOworICAgIGZ1bmN0aW9uIF9w
b3NpdGlvbkNhbGxiYWNrKHBvc2l0aW9uKQorICAgIHsgICAgICAgIAorICAgICAgICBwYXNzZWRQ
b3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAKKyAgICAgICAgY29uc29sZVdyaXRlKCJQT1NJ
VElPTigiICsgcG9zaXRpb24gKyAiKSIpOworICAgICAgICAKKyAgICAgICAgaWYgKGZ1bmMpCisg
ICAgICAgICAgICBmdW5jKCk7CisgICAgICAgIAorICAgICAgICBpZiAoZW5kaXQpCisgICAgICAg
ICAgICBlbmRUZXN0KCk7ICAgIAorICAgIH0KKyAgICAKKyAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b24uZ2V0Q3VycmVudFBvc2l0aW9uKF9wb3NpdGlvbkNhbGxiYWNrKTsKIH0KIAotZnVuY3Rpb24g
d2FpdEZvckV2ZW50QW5kRmFpbChldmVudE5hbWUpCitmdW5jdGlvbiBnZXRDdXJyZW50UG9zaXRp
b25UZXN0QW5kRW5kKHRlc3RGdW5jU3RyaW5nKQogewotICAgIHdhaXRGb3JFdmVudEFuZFRlc3Qo
ZXZlbnROYW1lLCAiZmFsc2UiLCB0cnVlKTsKKyAgICBnZXRDdXJyZW50UG9zaXRpb25BbmRUZXN0
KHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsKIH0KIAotZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kVGVz
dChldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nLCBlbmRpdCkKK2Z1bmN0aW9uIGdldEN1cnJlbnRQ
b3NpdGlvbkFuZEZhaWwoKQogewotICAgIGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQor
ICAgIGdldEN1cnJlbnRQb3NpdGlvbkFuZFRlc3QoImZhbHNlIiwgdHJ1ZSk7Cit9CisKK2Z1bmN0
aW9uIGdldEN1cnJlbnRQb3NpdGlvbkFuZFRlc3QodGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQorewor
ICAgIGZ1bmN0aW9uIF9wb3NpdGlvbkNhbGxiYWNrKHBvc2l0aW9uKQogICAgIHsKKyAgICAgICAg
cGFzc2VkUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgCiAgICAgICAgIGlmIChldmFsKHRl
c3RGdW5jU3RyaW5nKSkKLSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoIiArIGV2ZW50
TmFtZSArICIpIFRFU1QoIiArIHRlc3RGdW5jU3RyaW5nICsgIikgPHNwYW4gc3R5bGU9J2NvbG9y
OmdyZWVuJz5PSzwvc3Bhbj4iKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiUE9TSVRJT04o
IiArIHBvc2l0aW9uICsgIikgVEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSA8c3BhbiBzdHls
ZT0nY29sb3I6Z3JlZW4nPk9LPC9zcGFuPiIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBj
b25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudE5hbWUgKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0
cmluZyArICIpIDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPkZBSUw8L3NwYW4+Iik7CisgICAgICAg
ICAgICBjb25zb2xlV3JpdGUoIlBPU0lUSU9OKCIgKyBwb3NpdGlvbiArICIpIFRFU1QoIiArIHRl
c3RGdW5jU3RyaW5nICsgIikgPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+RkFJTDwvc3Bhbj4iKTsK
ICAgICAgICAgCiAgICAgICAgIGlmIChlbmRpdCkKICAgICAgICAgICAgIGVuZFRlc3QoKTsgICAg
CiAgICAgfQogICAgIAotICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZl
bnRDYWxsYmFjayk7CisgICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlv
bihfcG9zaXRpb25DYWxsYmFjayk7CiB9CiAKIGZ1bmN0aW9uIHRlc3RFeGNlcHRpb24odGVzdFN0
cmluZywgZXhjZXB0aW9uU3RyaW5nKQpAQCAtMTI4LDggKzE5MCw3IEBAIGZ1bmN0aW9uIGVuZFRl
c3QoKQogewogICAgIGNvbnNvbGVXcml0ZSgiRU5EIE9GIFRFU1QiKTsKICAgICB0ZXN0RW5kZWQg
PSB0cnVlOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgICAgIAorICAgIHJlc2V0KCk7CiB9CiAK
IGZ1bmN0aW9uIGVuZFRlc3RMYXRlcigpCkBAIC0xNTQsNSArMjE1LDUgQEAgZnVuY3Rpb24gY29u
c29sZVdyaXRlKHRleHQpCiAKIGZ1bmN0aW9uIHJlbGF0aXZlVVJMKHVybCkKIHsKLSAgICByZXR1
cm4gdXJsLnN1YnN0cih1cmwuaW5kZXhPZignL21lZGlhLycpKzcpOworICAgIHJldHVybiB1cmwu
c3Vic3RyKHVybC5pbmRleE9mKCcvZ2VvbG9jYXRpb24vJykrMTMpOwogfQpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24425</attachid>
            <date>2008-10-16 14:33:37 -0700</date>
            <delta_ts>2008-10-17 14:43:26 -0700</delta_ts>
            <desc>Add missed changes to other build systems</desc>
            <filename>GeoLocation-WebKit.org.patch.txt</filename>
            <type>text/plain</type>
            <size>133599</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3NjM2KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDgtMTAtMTYgIEdyZWcgQm9s
c2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDc1CisgICAgICAgIAorICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9s
b2NhdGlvbiBBUEkKKyAgICAgICAgCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkv
c3BlYy1zb3VyY2UuaHRtbAorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEVOQUJMRV9HRU9M
T0NBVElPTiBkZWZhdWx0cyB0byAwCisKIDIwMDgtMTAtMTYgIE1hY2llaiBTdGFjaG93aWFrICA8
bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDYW1lcm9uIFp3YXJpY2guCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMzc2MzYpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMzQzLDYgKzM0MywxMCBAQAogI2Rl
ZmluZSBFTkFCTEVfU0FNUExJTkdfVE9PTCAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJM
RV9HRU9MT0NBVElPTikKKyNkZWZpbmUgRU5BQkxFX0dFT0xPQ0FUSU9OIDAKKyNlbmRpZgorCiAv
LyBDVEkgb25seSBzdXBwb3J0cyB4ODYgYXQgdGhlIG1vbWVudCwgYW5kIGhhcyBvbmx5IGJlZW4g
dGVzdGVkIG9uIE1hYyBhbmQgV2luZG93cy4KICNpZiAhZGVmaW5lZChFTkFCTEVfQ1RJKSAmJiBQ
TEFURk9STShYODYpICYmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikpCiAjZGVmaW5l
IEVOQUJMRV9DVEkgMQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3NjM2KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMjcgQEAKKzIwMDgtMTAtMTYgIEdyZWcgQm9sc2luZ2Eg
IDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIx
NDc1CisgICAgICAgIAorICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9sb2NhdGlv
biBBUEkKKyAgICAgICAgCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkvc3BlYy1z
b3VyY2UuaHRtbAorCisgICAgICAgIFRlc3RzOiBnZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtl
LWN1cnJlbnRwb3NpdGlvbi5odG1sCisgICAgICAgICAgICAgICBnZW9sb2NhdGlvbi9nZW9sb2Nh
dGlvbi1mYWtlLWltcGxlbWVudGF0aW9uLmh0bWwKKyAgICAgICAgICAgICAgIGdlb2xvY2F0aW9u
L2dlb2xvY2F0aW9uLWZha2Utd2F0Y2hwb3NpdGlvbi5odG1sCisgICAgICAgICAgICAgICBnZW9s
b2NhdGlvbi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQuaHRtbAorCisgICAgICAgICogQ2hh
bmdlTG9nOgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFr
ZWZpbGUuYW06IEFkZGVkIEdlb2xvY2F0aW9uIHN1cHBvcnQKKyAgICAgICAgKiBXZWJDb3JlLmJh
c2UuZXhwOiBBZGQgV2ViQ29yZShTZXQpU2hvdWxkVXNlRmFrZUdlb2xvY2F0aW9uIGV4cG9ydAor
ICAgICAgICAqIFdlYkNvcmUucHJvOiBBZGRlZCBHZW9sb2NhdGlvbiBzdXBwb3J0CisgICAgICAg
ICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2o6IEFkZGVkIEdlb2xvY2F0aW9uIHN1cHBv
cnQKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IEFkZGVkIEdl
b2xvY2F0aW9uIHN1cHBvcnQKKyAgICAgICAgKiBXZWJDb3JlU291cmNlcy5ia2w6IEFkZGVkIEdl
b2xvY2F0aW9uIHN1cHBvcnQKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9u
Q2FsbGJhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjazo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
Q3VzdG9tUG9zaXRpb25DYWxsYmFjazo6aGFuZGxlRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdz
L2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OkpTQ3VzdG9tUG9zaXRpb25FcnJv
ckNhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxi
YWNrOjpoYW5kbGVFdmVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlv
bkVycm9yQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0
aW9uRXJyb3JDYWxsYmFjazo6Y3JlYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwOiBtb3ZlIG1hcmtET01PYmplY3RXcmFwcGVyIGhlcmUgZnJvbSBKU0RPTVdpbmRv
d0N1c3RvbQorICAgICAgICAoV2ViQ29yZTo6bWFya0RPTU9iamVjdFdyYXBwZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oOiBtb3ZlIG1hcmtET01PYmplY3RXcmFwcGVy
IGhlcmUgZnJvbSBKU0RPTVdpbmRvd0N1c3RvbQorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcDogbW92ZSBtYXJrRE9NT2JqZWN0V3JhcHBlciB0byBKU0RPTUJpbmRp
bmcKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjp0b0pTKToKKyAgICAgICAgKFdlYkNvcmU6OkpTR2VvbG9jYXRp
b246OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9u
Ojp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3Rv
bS5jcHA6IGhhbmRsZSBtYXJraW5nIEdlb2xvY2F0aW9uCisgICAgICAgIChXZWJDb3JlOjpKU05h
dmlnYXRvcjo6bWFyayk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG06IEdlb2xvY2F0aW9uIG5lZWRzIGEgY3VzdG9tIHRvSlMKKyAgICAgICAgKiBwYWdlL0dl
b2xvY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2Vv
Tm90aWZpZXI6Okdlb05vdGlmaWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpH
ZW9Ob3RpZmllcjo6dGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6
R2VvbG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmRpc2Nvbm5lY3RG
cmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpjbGVhcldhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uOjpzdG9wVXBkYXRpbmdJZkVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uOjpoYW5kbGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6
Z2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdl
b2xvY2F0aW9uOjpnZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3VycmVkKToKKyAgICAgICAgKiBw
YWdlL0dlb2xvY2F0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
On5HZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6bGFzdFBvc2l0
aW9uKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmlkbDogQWRkZWQuCisgICAgICAgICog
cGFnZS9HZW9wb3NpdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRp
b246OnRvU3RyaW5nKToKKyAgICAgICAgKiBwYWdlL0dlb3Bvc2l0aW9uLmg6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246Okdlb3Bvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb3Bvc2l0aW9uOjpsYXRpdHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlv
bjo6bG9uZ2l0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjphbHRpdHVkZSk6
CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6YWNjdXJhY3kpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvcG9zaXRpb246OmFsdGl0dWRlQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6
R2VvcG9zaXRpb246OmhlYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OnZl
bG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjp0aW1lc3RhbXApOgorICAg
ICAgICAqIHBhZ2UvR2VvcG9zaXRpb24uaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL05hdmln
YXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OmRpc2Nvbm5lY3RGcmFtZSk6
IGRpc2Nvbm5lY3QgR2VvbG9jYXRpb24KKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6Z2Vv
bG9jYXRpb24pOiBhY2Nlc3NvciBmb3IgR2VvbG9jYXRpb24KKyAgICAgICAgKiBwYWdlL05hdmln
YXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpvcHRpb25hbEdlb2xvY2F0aW9u
KTogYWNjZXNzb3IgZm9yIEdlb2xvY2F0aW9uCisgICAgICAgICogcGFnZS9OYXZpZ2F0b3IuaWRs
OiBhY2Nlc3NvciBmb3IgR2VvbG9jYXRpb24KKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uQ2FsbGJh
Y2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkNhbGxiYWNrOjp+UG9zaXRp
b25DYWxsYmFjayk6CisgICAgICAgICogcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmlkbDogQWRkZWQu
CisgICAgICAgICogcGFnZS9Qb3NpdGlvbkVycm9yLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6UG9zaXRpb25FcnJvcjo6UG9zaXRpb25FcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpQb3Np
dGlvbkVycm9yOjpjb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3I6OnNldENv
ZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6bWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpzZXRNZXNzYWdlKToKKyAgICAgICAgKiBwYWdlL1Bv
c2l0aW9uRXJyb3IuaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uRXJyb3JDYWxs
YmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uRXJyb3JDYWxsYmFjazo6
flBvc2l0aW9uRXJyb3JDYWxsYmFjayk6CisgICAgICAgICogcGFnZS9Qb3NpdGlvbkVycm9yQ2Fs
bGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uT3B0aW9ucy5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6UG9zaXRpb25PcHRpb25zKToK
KyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6ZW5hYmxlSGlnaEFjY3VyYWN5KToK
KyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6c2V0RW5hYmxlSGlnaEFjY3VyYWN5
KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6dGltZW91dCk6CisgICAgICAg
IChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OnNldFRpbWVvdXQpOgorICAgICAgICAqIHBhZ2Uv
UG9zaXRpb25PcHRpb25zLmlkbDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vR2VvbG9jYXRp
b25TZXJ2aWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZp
Y2U6Okdlb2xvY2F0aW9uU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNl
cnZpY2U6OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNl
cnZpY2U6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL0dlb2xvY2F0aW9uU2Vy
dmljZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUNsaWVu
dDo6fkdlb2xvY2F0aW9uU2VydmljZUNsaWVudCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvblNlcnZpY2VDbGllbnQ6Omdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQ6Omdlb2xvY2F0aW9uU2Vy
dmljZUVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNl
Ojp+R2VvbG9jYXRpb25TZXJ2aWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9HZW9sb2NhdGlvblNl
cnZpY2VGYWtlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZp
Y2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2U6OmlzQXZh
aWxhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUZha2U6Okdlb2xv
Y2F0aW9uU2VydmljZUZha2UpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNl
RmFrZTo6c3RhcnRVcGRhdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZp
Y2VGYWtlOjp0aW1lckZpcmVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZp
Y2VGYWtlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNlRmFr
ZTo6fkdlb2xvY2F0aW9uU2VydmljZUZha2UpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRp
b25TZXJ2aWNlRmFrZTo6c3RvcFVwZGF0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uU2VydmljZUZha2U6Omxhc3RQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2Nh
dGlvblNlcnZpY2VGYWtlOjpsYXN0RXJyb3IpOgorICAgICAgICAqIHBsYXRmb3JtL1dlYkNvcmVH
ZW9sb2NhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZVNldFNob3Vs
ZFVzZUZha2VHZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpXZWJDb3JlU2hvdWxkVXNl
RmFrZUdlb2xvY2F0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9XZWJDb3JlR2VvbG9jYXRpb24u
aDogQWRkZWQuCisKIDIwMDgtMTAtMTYgIEtlbm5ldGggUnVzc2VsbCAgPGtlbm5ldGgucnVzc2Vs
bEBzdW4uY29tPgogCiAgICAgICAgIFJldmlld2VkIGFuZCBsYW5kZWQgYnkgQW5kZXJzIENhcmxz
c29uLgpJbmRleDogV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQkocmV2aXNpb24gMzc2MzYpCisrKyBXZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLm1ha2UJKHdvcmtpbmcgY29weSkKQEAgLTkyLDYgKzkyLDggQEAgRE9NX0NM
QVNTRVMgPSBcCiAgICAgRXZlbnRUYXJnZXROb2RlIFwKICAgICBGaWxlIFwKICAgICBGaWxlTGlz
dCBcCisgICAgR2VvbG9jYXRpb24gXAorICAgIEdlb3Bvc2l0aW9uIFwKICAgICBIVE1MQW5jaG9y
RWxlbWVudCBcCiAgICAgSFRNTEFwcGxldEVsZW1lbnQgXAogICAgIEhUTUxBcmVhRWxlbWVudCBc
CkBAIC0xNzksNiArMTgxLDEwIEBAIERPTV9DTEFTU0VTID0gXAogICAgIE92ZXJmbG93RXZlbnQg
XAogICAgIFBsdWdpbiBcCiAgICAgUGx1Z2luQXJyYXkgXAorICAgIFBvc2l0aW9uQ2FsbGJhY2sg
XAorICAgIFBvc2l0aW9uRXJyb3IgXAorICAgIFBvc2l0aW9uRXJyb3JDYWxsYmFjayBcCisgICAg
UG9zaXRpb25PcHRpb25zIFwKICAgICBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24gXAogICAgIFByb2dy
ZXNzRXZlbnQgXAogICAgIFJHQkNvbG9yIFwKSW5kZXg6IFdlYkNvcmUvR05VbWFrZWZpbGUuYW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQkocmV2aXNpb24gMzc2MzYpCisr
KyBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCSh3b3JraW5nIGNvcHkpCkBAIC0zMjUsNiArMzI1LDEw
IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDbGlw
Ym9hcmRDdXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ29uc29sZUN1c3RvbS5j
cHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCBc
CisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCBcCisJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgXAorCVdl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBcCiAJV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVZvaWRDYWxsYmFjay5jcHAgXAogCVdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21Wb2lkQ2FsbGJhY2suaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbVhQYXRoTlNSZXNvbHZlci5jcHAgXApAQCAtMzQ3LDYgKzM1MSw3IEBAIHdlYmNvcmVf
c291cmNlcyArPSBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmggXAogCVdl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2UuaCBcCiAJV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAgXAorCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxs
Q29sbGVjdGlvbi5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlv
bi5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFwcGxldEVsZW1lbnRDdXN0b20uY3Bw
IFwKQEAgLTExODYsNiArMTE5MSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUv
cGFnZS9GcmFtZVRyZWUuaCBcCiAJV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAgXAogCVdlYkNv
cmUvcGFnZS9GcmFtZVZpZXcuaCBcCisJV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcCBcCisJ
V2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmggXAorCVdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5j
cHAgXAorCVdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5oIFwKIAlXZWJDb3JlL3BhZ2UvSGlzdG9y
eS5jcHAgXAogCVdlYkNvcmUvcGFnZS9IaXN0b3J5LmggXAogCVdlYkNvcmUvcGFnZS9Mb2NhdGlv
bi5jcHAgXApAQCAtMTE5OCw2ICsxMjA3LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2Vi
Q29yZS9wYWdlL1BhZ2UuaCBcCiAJV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5jcHAgXAogCVdlYkNv
cmUvcGFnZS9QYWdlR3JvdXAuaCBcCisJV2ViQ29yZS9wYWdlL1Bvc2l0aW9uQ2FsbGJhY2suaCBc
CisJV2ViQ29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaCBcCisJV2ViQ29yZS9wYWdlL1Bvc2l0aW9u
RXJyb3JDYWxsYmFjay5oIFwKKwlXZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmggXAogCVdl
YkNvcmUvcGFnZS9QcmludENvbnRleHQuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0
LmggXAogCVdlYkNvcmUvcGFnZS9TY3JlZW4uY3BwIFwKQEAgLTEyNDMsNiArMTI1NiwxMCBAQCB3
ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaCBcCiAJ
V2ViQ29yZS9wbGF0Zm9ybS9GaWxlU3lzdGVtLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vRmxvYXRD
b252ZXJzaW9uLmggXAorCVdlYkNvcmUvcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBc
CisJV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuaCBcCisJV2ViQ29yZS9wbGF0
Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2VGYWtlLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9ybS9HZW9s
b2NhdGlvblNlcnZpY2VGYWtlLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaCBc
CkBAIC0xMjg0LDYgKzEzMDEsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGxh
dGZvcm0vVGltZXIuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL1RpbWVyLmggXAogCVdlYkNvcmUv
cGxhdGZvcm0vVHJlZVNoYXJlZC5oIFwKKwlXZWJDb3JlL3BsYXRmb3JtL1dlYkNvcmVHZW9sb2Nh
dGlvbi5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0vV2ViQ29yZUdlb2xvY2F0aW9uLmggXAogCVdl
YkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmNwcCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaCBc
CiAJV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9BZmZpbmVUcmFuc2Zvcm0uY3BwIFwKSW5kZXg6
IFdlYkNvcmUvV2ViQ29yZS5iYXNlLmV4cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUu
YmFzZS5leHAJKHJldmlzaW9uIDM3NjM2KQorKysgV2ViQ29yZS9XZWJDb3JlLmJhc2UuZXhwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDggQEAgX1dlYkNvcmVTZXRBbHdheXNVc2VzQ29t
cGxleFRleHRDb2RlUGF0aAogX1dlYkNvcmVTZXRTaG91bGRVc2VGb250U21vb3RoaW5nCiBfV2Vi
Q29yZVNob3VsZFVzZUZvbnRTbW9vdGhpbmcKIF9XZWJDb3JlVGV4dEZsb2F0V2lkdGgKK19fWk43
V2ViQ29yZTMxV2ViQ29yZVNob3VsZFVzZUZha2VHZW9sb2NhdGlvbkV2CitfX1pON1dlYkNvcmUz
NFdlYkNvcmVTZXRTaG91bGRVc2VGYWtlR2VvbG9jYXRpb25FYgogX19aMjZSZXBvcnRCbG9ja2Vk
T2JqQ0V4Y2VwdGlvblAxMU5TRXhjZXB0aW9uCiBfX1pON1dlYkNvcmUxMENhY2hlZFBhZ2UxNGRv
Y3VtZW50TG9hZGVyRXYKIF9fWk43V2ViQ29yZTEwQ2FjaGVkUGFnZTIyY2FjaGVkUGFnZVBsYXRm
b3JtRGF0YUV2CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvV2ViQ29yZS5wcm8JKHJldmlzaW9uIDM3NjM2KQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwko
d29ya2luZyBjb3B5KQpAQCAtNzc1LDYgKzc3NSw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHBhZ2Uv
RnJhbWUuY3BwIFwKICAgICBwYWdlL0ZyYW1lVHJlZS5jcHAgXAogICAgIHBhZ2UvRnJhbWVWaWV3
LmNwcCBcCisgICAgcGFnZS9HZW9sb2NhdGlvbi5jcHAgXAorICAgIHBhZ2UvR2VvcG9zaXRpb24u
Y3BwIFwKICAgICBwYWdlL0hpc3RvcnkuY3BwIFwKICAgICBwYWdlL0xvY2F0aW9uLmNwcCBcCiAg
ICAgcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcCBcCkBAIC04MDIsNiArODA0
LDggQEAgU09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuY3BwIFwKICAgICBwbGF0
Zm9ybS9EcmFnSW1hZ2UuY3BwIFwKICAgICBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgXAorICAg
IHBsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZS5jcHAgXAorICAgIHBsYXRmb3JtL0dlb2xvY2F0
aW9uU2VydmljZUZha2UuY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGVzY3JpcHRp
b24uY3BwIFwKICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RmFtaWx5LmNwcCBcCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvQWZmaW5lVHJhbnNmb3JtLmNwcCBcCkBAIC04NTYsNiArODYwLDcgQEAg
U09VUkNFUyArPSBcCiAgICAgcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmNwcCBcCiAgICAgcGxh
dGZvcm0vVGltZXIuY3BwIFwKICAgICBwbGF0Zm9ybS90ZXh0L1VuaWNvZGVSYW5nZS5jcHAgXAor
ICAgIHBsYXRmb3JtL1dlYkNvcmVHZW9sb2NhdGlvbi5jcHAgXAogICAgIHBsYXRmb3JtL1dpZGdl
dC5jcHAgXAogICAgIHBsdWdpbnMvUGx1Z2luRGF0YWJhc2UuY3BwIFwKICAgICBwbHVnaW5zL1Bs
dWdpbkluZm9TdG9yZS5jcHAgXApAQCAtMTE5Nyw3ICsxMjAyLDEwIEBAIGNvbnRhaW5zKERFRklO
RVMsIEVOQUJMRV9EQVRBQkFTRT0xKSB7CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FM
VHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRGF0
YWJhc2VDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGluZ3MvanMvSlNTUUxSZXN1bHRTZXRSb3dM
aXN0Q3VzdG9tLmNwcCBcCi0gICAgICAgIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0
b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwIFwK
KyAgICAgICAgYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgXAorICAgICAgICBi
aW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwIFwKKyAgICAgICAgYmluZGlu
Z3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCiAKICAgICBJRExfQklORElO
R1MgKz0gXAogICAgICAgICBzdG9yYWdlL0RhdGFiYXNlLmlkbCBcCkluZGV4OiBXZWJDb3JlL1dl
YkNvcmVTb3VyY2VzLmJrbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJr
bAkocmV2aXNpb24gMzc2MzYpCisrKyBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAkod29ya2lu
ZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2Yg
ZmlsZXMgbmVlCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ1NTUnVsZUN1c3RvbS5jcHAKICAgICAg
ICAgYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcAogICAgICAgICBi
aW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU0N1
c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9z
aXRpb25FcnJvckNhbGxiYWNrLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0
YXRlbWVudENhbGxiYWNrLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRl
bWVudEVycm9yQ2FsbGJhY2suY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJh
bnNhY3Rpb25DYWxsYmFjay5jcHAKQEAgLTU5LDYgKzYxLDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5z
IHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9t
LmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcAogICAgICAgICBiaW5k
aW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMv
SlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MQWxsQ29s
bGVjdGlvbi5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNIaXN0b3J5Q3VzdG9tLmNwcAogICAg
ICAgICBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcApAQCAtMjM4LDYg
KzI0MSw4IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAg
ICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0V2ZW50VGFyZ2V0Tm9kZS5jcHAKICAgICAgICAg
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGUuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNGaWxlTGlzdC5jcHAKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9K
U0dlb2xvY2F0aW9uLmNwcAorICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTR2VvcG9z
aXRpb24uY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNIVE1MQW5jaG9yRWxl
bWVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0hUTUxBcHBsZXRFbGVt
ZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTSFRNTEFyZWFFbGVtZW50
LmNwcApAQCAtMzIyLDYgKzMyNyw4IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBm
aWxlcyBuZWUKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU092ZXJmbG93RXZlbnQu
Y3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQbHVnaW4uY3BwCiAgICAgICAg
IERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQbHVnaW5BcnJheS5jcHAKKyAgICAgICAgRGVyaXZl
ZFNvdXJjZXMvV2ViQ29yZS9KU1Bvc2l0aW9uRXJyb3IuY3BwCisgICAgICAgIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNQb3NpdGlvbk9wdGlvbnMuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwCiAgICAgICAgIERlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNQcm9ncmVzc0V2ZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTUmFuZ2UuY3BwCkBAIC02NjgsNiArNjc1LDggQEAgVGhpcyBmaWxlIGNvbnRhaW5z
IHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBwYWdlL0ZyYW1lLmNwcAogICAgICAgICBw
YWdlL0ZyYW1lVHJlZS5jcHAKICAgICAgICAgcGFnZS9GcmFtZVZpZXcuY3BwCisgICAgICAgIHBh
Z2UvR2VvbG9jYXRpb24uY3BwCisgICAgICAgIHBhZ2UvR2VvcG9zaXRpb24uY3BwCiAgICAgICAg
IHBhZ2UvSGlzdG9yeS5jcHAKICAgICAgICAgcGFnZS9Mb2NhdGlvbi5jcHAKICAgICAgICAgcGFn
ZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcApAQCAtNjkxLDYgKzcwMCw4IEBAIFRo
aXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgcGxhdGZvcm0v
RGVwcmVjYXRlZFZhbHVlTGlzdEltcGwuY3BwCiAgICAgICAgIHBsYXRmb3JtL0RyYWdJbWFnZS5j
cHAKICAgICAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL0dl
b2xvY2F0aW9uU2VydmljZS5jcHAKKyAgICAgICAgcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNl
RmFrZS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udENhY2hlLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9G
b250RGF0YS5jcHAKQEAgLTcyNSw2ICs3MzYsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxp
c3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0
cnkuY3BwCiAgICAgICAgIHBsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAKICAgICAgICAgcGxh
dGZvcm0vVGltZXIuY3BwCisgICAgICAgIHBsYXRmb3JtL1dlYkNvcmVHZW9sb2NhdGlvbi5jcHAK
ICAgICAgICAgcGxhdGZvcm0vV2lkZ2V0LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9B
ZmZpbmVUcmFuc2Zvcm0uY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0JpdG1hcEltYWdl
LmNwcApJbmRleDogV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lvbiAz
NzYzNikKKysrIFdlYkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcg
Y29weSkKQEAgLTY4MCw2ICs2ODAsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxl
DQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU0dlb2xvY2F0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJv
amVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTR2VvcG9zaXRpb24uaCINCisJCQkJPg0KKwkJCTwv
RmlsZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxv
YmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNFdmVudC5oIg0KIAkJCQk+DQogCQkJ
PC9GaWxlPg0KQEAgLTEwNDAsNiArMTA0OCwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVj
dE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTUG9zaXRpb25FcnJvci5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9i
alwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU1Bvc2l0aW9uT3B0aW9ucy5oIg0KKwkJ
CQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRP
dXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVkU291cmNlc1xKU092ZXJmbG93RXZl
bnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0yMjYwLDYgKzIyNzYsMzggQEAKIAkJCQk+
DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxHZW9s
b2NhdGlvbi5jcHAiDQorCQkJCT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1l
PSJSZWxlYXNlX1BHT3xXaW4zMiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0i
VkNDTENvbXBpbGVyVG9vbCINCisJCQkJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249InRydWUi
DQorCQkJCQkvPg0KKwkJCQk8L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8
RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcR2VvbG9jYXRpb24uaCINCisJCQkJPg0K
KwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcR2VvcG9z
aXRpb24uY3BwIg0KKwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0i
UmVsZWFzZV9QR098V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZD
Q0xDb21waWxlclRvb2wiDQorCQkJCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0K
KwkJCQkJLz4NCisJCQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEdlb3Bvc2l0aW9uLmgiDQorCQkJCT4NCisJ
CQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEhpc3Rvcnku
Y3BwIg0KIAkJCQk+DQogCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KQEAgLTIzODgsNiArMjQzNiwy
MiBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwYWdlXFBvc2l0aW9uQ2FsbGJhY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUG9zaXRpb25FcnJvci5oIg0KKwkJCQk+DQor
CQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxQb3NpdGlv
bkVycm9yQ2FsbGJhY2suaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUG9zaXRpb25PcHRpb25zLmgiDQorCQkJCT4NCisJCQk8L0Zp
bGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXFNjcmVlbi5jcHAiDQog
CQkJCT4NCiAJCQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMzA0MCw2ICszMTA0LDIyIEBACiAJ
CQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBsYXRm
b3JtXEdlb2xvY2F0aW9uU2VydmljZS5jcHAiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxHZW9sb2NhdGlvblNlcnZpY2UuaCIN
CisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBs
YXRmb3JtXEdlb2xvY2F0aW9uU2VydmljZUZha2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0K
KwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cR2VvbG9jYXRpb25TZXJ2
aWNlRmFrZS5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGxhdGZvcm1cSG9zdFdpbmRvdy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAg
LTMyMDgsNiArMzI4OCwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJ
UmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxXZWJDb3JlR2VvbG9jYXRpb24uY3BwIg0KKwkJCQk+
DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1c
V2ViQ29yZUdlb2xvY2F0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCiAJ
CQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxXaWRnZXQuY3BwIg0KIAkJCQk+DQogCQkJPC9G
aWxlPg0KQEAgLTEzMTI5LDYgKzEzMjE3LDE0IEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJ
CQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0N1c3RvbVBvc2l0
aW9uQ2FsbGJhY2suY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQorCQkJ
CQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxi
YWNrLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRp
dmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNwcCIN
CiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KQEAgLTEzMjU3LDYgKzEzMzUzLDEwIEBACiAJCQkJCT4N
CiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5n
c1xqc1xKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJ
CQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0hpc3RvcnlDdXN0
b20uY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpJbmRleDogV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM3NjM2KQorKysgV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTQyMjAsNiAr
NDIyMCwzMyBAQAogCQlGOTE2QzQ4RDBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjkxNkM0OEIwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9n
cmVzc0V2ZW50LmNwcCAqLzsgfTsKIAkJRjkxNkM0OEUwREI1MTBGODAwNzZDRDgzIC8qIEpTWE1M
SHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QzBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVx
dWVzdFByb2dyZXNzRXZlbnQuaCAqLzsgfTsKIAkJRjlGMEVEN0EwREI1MENBMjAwRDE2REI5IC8q
IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRjlGMEVENzcwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBS
ZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OworCQlGRTgwRDdBNzBFOUMxRUQyMDAwRDZGNzUg
LyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0EyMEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3Rv
bVBvc2l0aW9uQ2FsbGJhY2suY3BwICovOyB9OworCQlGRTgwRDdBODBFOUMxRUQyMDAwRDZGNzUg
LyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBMzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Q
b3NpdGlvbkNhbGxiYWNrLmggKi87IH07CisJCUZFODBEN0E5MEU5QzFFRDIwMDBENkY3NSAvKiBK
U0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBNDBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0
b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwICovOyB9OworCQlGRTgwRDdBQTBFOUMxRUQyMDAw
RDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0E1MEU5QzFFRDIwMDBENkY3NSAv
KiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICovOyB9OworCQlGRTgwRDdBQjBFOUMx
RUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBNjBFOUMxRUQyMDAwRDZGNzUgLyog
SlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi87IH07CisJCUZFODBEN0M1MEU5QzFGMjUwMDBENkY3
NSAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTgwRDdCNzBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3BwICov
OyB9OworCQlGRTgwRDdDNjBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0I4MEU5QzFGMjUw
MDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKCk7
IH07IH07CisJCUZFODBEN0M4MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCQTBFOUMx
RjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uY3BwICovOyB9OworCQlGRTgwRDdDOTBFOUMxRjI1
MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFODBEN0JCMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5o
ICovOyB9OworCQlGRTgwRDdDQjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QkQw
RTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2suaCAqLzsgfTsKKwkJRkU4MEQ3Q0Qw
RTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JGMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbkVycm9yLmggKi87IH07CisJCUZFODBEN0NGMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlv
bkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEZFODBEN0MxMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2su
aCAqLzsgfTsKKwkJRkU4MEQ3RDEwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzMw
RTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5oICovOyB9OworCQlGRTgwREE2MzBF
OUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE1RjBFOUM0NzAzMDAwRDZGNzUgLyogSlNH
ZW9sb2NhdGlvbi5jcHAgKi87IH07CisJCUZFODBEQTY0MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dl
b2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGRTgwREE2MDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oICovOyB9OworCQlG
RTgwREE2NTBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2MTBFOUM0NzAzMDAwRDZG
NzUgLyogSlNHZW9wb3NpdGlvbi5jcHAgKi87IH07CisJCUZFODBEQTY2MEU5QzQ3MDMwMDBENkY3
NSAvKiBKU0dlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oICov
OyB9OworCQlGRTgwREE3MTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZEMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovOyB9OworCQlGRTgwREE3MjBF
OUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQ
b3NpdGlvbkVycm9yLmggKi87IH07CisJCUZFODBEQTczMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bv
c2l0aW9uT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTgwREE2RjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3Bw
ICovOyB9OworCQlGRTgwREE3NDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTcw
MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oICovOyB9OworCQlGRUFCOTAx
MjBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQUI5MDEwMEVBNTFCOUMwMDYzNDhD
MyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuY3BwICovOyB9OworCQlGRUFCOTAxMzBFQTUxQjlDMDA2
MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFCOTAxMTBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRp
b25TZXJ2aWNlLmggKi87IH07CisJCUZFRTE4MUI1MEVBNkIwQzUwMDVCMzNBOSAvKiBXZWJDb3Jl
R2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkVFMTgxQjMwRUE2QjBDNTAwNUIzM0E5IC8qIFdlYkNvcmVHZW9sb2NhdGlvbi5jcHAg
Ki87IH07CisJCUZFRTE4MUI2MEVBNkIwQzUwMDVCMzNBOSAvKiBXZWJDb3JlR2VvbG9jYXRpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRTE4MUI0
MEVBNkIwQzUwMDVCMzNBOSAvKiBXZWJDb3JlR2VvbG9jYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCUZFRTE4MjJEMEVBNkI4RTAwMDVCMzNB
OSAvKiBHZW9sb2NhdGlvblNlcnZpY2VGYWtlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFRTE4MjJCMEVBNkI4RTAwMDVCMzNBOSAvKiBHZW9sb2Nh
dGlvblNlcnZpY2VGYWtlLmNwcCAqLzsgfTsKKwkJRkVFMTgyMkUwRUE2QjhFMDAwNUIzM0E5IC8q
IEdlb2xvY2F0aW9uU2VydmljZUZha2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEZFRTE4MjJDMEVBNkI4RTAwMDVCMzNBOSAvKiBHZW9sb2NhdGlvblNl
cnZpY2VGYWtlLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRGaWxlIHNlY3Rpb24gKi8KIAogLyog
QmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24gKi8KQEAgLTg4MzQsNiArODg2MSwz
OSBAQAogCQlGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVz
c0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjlGMEVENzgw
REI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGwgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDlFRjk3MERDNTE0NjIwMDQyNjZFMSAvKiBEYXNo
Ym9hcmRTdXBwb3J0Q1NTUHJvcGVydHlOYW1lcy5pbiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBE
YXNoYm9hcmRTdXBwb3J0Q1NTUHJvcGVydHlOYW1lcy5pbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU4MEQ3QTIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxs
YmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdB
MzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBNDBFOUMxRUQyMDAwRDZGNzUgLyogSlND
dXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBNTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Q
b3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW9sb2NhdGlvbkN1c3Rv
bS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0I3MEU5QzFGMjUwMDBE
NkY3NSAvKiBHZW9sb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBHZW9sb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBE
N0I4MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBHZW9sb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlGRTgwRDdCOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IEdlb2xvY2F0aW9uLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkU4MEQ3QkEwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb3Bvc2l0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkIwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb3Bvc2l0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9w
b3NpdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2VvcG9zaXRpb24uaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9z
aXRpb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlv
bkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JFMEU5QzFG
MjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBQb3NpdGlvbkNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4
MEQ3QkYwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25FcnJvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGRTgwRDdDMDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5pZGwgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25FcnJvci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFODBEN0MxMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2Fs
bGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25FcnJvckNh
bGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0MyMEU5QzFGMjUw
MDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0
aCA9IFBvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFODBEN0MzMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0M0MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9w
dGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBvc2l0aW9uT3B0aW9ucy5pZGw7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTVGMEU5QzQ3MDMwMDBENkY3NSAvKiBK
U0dlb2xvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
R2VvbG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2MDBF
OUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBKU0dlb2xvY2F0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFODBEQTYxMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VvcG9zaXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3Np
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlb3Bvc2l0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAv
KiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNQb3NpdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4
MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRkU4MERBNkYwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25z
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTUG9zaXRpb25PcHRp
b25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNzAwRTlDNDcyRjAw
MEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFQUI5MDEwMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvbG9jYXRpb25TZXJ2aWNlLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVBQjkwMTEwRUE1MUI5QzAwNjM0OEMzIC8q
IEdlb2xvY2F0aW9uU2VydmljZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBH
ZW9sb2NhdGlvblNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVFMTgx
QjMwRUE2QjBDNTAwNUIzM0E5IC8qIFdlYkNvcmVHZW9sb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJDb3JlR2VvbG9jYXRpb24uY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRUUxODFCNDBFQTZCMEM1MDA1QjMzQTkgLyogV2ViQ29y
ZUdlb2xvY2F0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVH
ZW9sb2NhdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUUxODIyQjBFQTZC
OEUwMDA1QjMzQTkgLyogR2VvbG9jYXRpb25TZXJ2aWNlRmFrZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9sb2NhdGlvblNlcnZpY2VGYWtlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVFMTgyMkMwRUE2QjhFMDAwNUIzM0E5IC8qIEdlb2xv
Y2F0aW9uU2VydmljZUZha2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2Vv
bG9jYXRpb25TZXJ2aWNlRmFrZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogLyogRW5k
IFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhGcmFtZXdvcmtzQnVp
bGRQaGFzZSBzZWN0aW9uICovCkBAIC05NTgzLDYgKzk2NDMsMTIgQEAKIAkJCQk2NUEyMTQ4MzA5
N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8sCiAJCQkJNjVDQkZFRjcwOTc0RjYwNzAw
MURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCiAJCQkJNjVDQkZFRjgwOTc0RjYwNzAwMURBQzI1
IC8qIEZyYW1lVmlldy5oICovLAorCQkJCUZFODBEN0I3MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9s
b2NhdGlvbi5jcHAgKi8sCisJCQkJRkU4MEQ3QjgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0
aW9uLmggKi8sCisJCQkJRkU4MEQ3QjkwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmlk
bCAqLywKKwkJCQlGRTgwRDdCQTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uY3BwICov
LAorCQkJCUZFODBEN0JCMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5oICovLAorCQkJ
CUZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgKi8sCiAJCQkJQkM5
NEQxNTAwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuY3BwICovLAogCQkJCUJDOTREMTUxMEMy
NzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmggKi8sCiAJCQkJQkM5NEQxNTIwQzI3NUM4QjAwNkJD
NjE3IC8qIEhpc3RvcnkuaWRsICovLApAQCAtOTU5OCw2ICs5NjY0LDE0IEBACiAJCQkJNjVBMjE0
NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLywKIAkJCQk5MzAyQjBCQzBENzlGODI5MDBD
N0VFODMgLyogUGFnZUdyb3VwLmNwcCAqLywKIAkJCQk5MzAyQjBCRTBENzlGODJDMDBDN0VFODMg
LyogUGFnZUdyb3VwLmggKi8sCisJCQkJRkU4MEQ3QkQwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0
aW9uQ2FsbGJhY2suaCAqLywKKwkJCQlGRTgwRDdCRTBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRp
b25DYWxsYmFjay5pZGwgKi8sCisJCQkJRkU4MEQ3QkYwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0
aW9uRXJyb3IuaCAqLywKKwkJCQlGRTgwRDdDMDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25F
cnJvci5pZGwgKi8sCisJCQkJRkU4MEQ3QzEwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJy
b3JDYWxsYmFjay5oICovLAorCQkJCUZFODBEN0MyMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlv
bkVycm9yQ2FsbGJhY2suaWRsICovLAorCQkJCUZFODBEN0MzMEU5QzFGMjUwMDBENkY3NSAvKiBQ
b3NpdGlvbk9wdGlvbnMuaCAqLywKKwkJCQlGRTgwRDdDNDBFOUMxRjI1MDAwRDZGNzUgLyogUG9z
aXRpb25PcHRpb25zLmlkbCAqLywKIAkJCQlCQ0VDMDFCQTBDMjc0REFDMDA5RjRFQzkgLyogU2Ny
ZWVuLmNwcCAqLywKIAkJCQlCQ0VDMDFCQjBDMjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmggKi8s
CiAJCQkJQkNFQzAxQkMwQzI3NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5pZGwgKi8sCkBAIC0xMTc2
MSw2ICsxMTgzNSwxMCBAQAogCQkJCTY1REYzMjJFMDlEMUREQkMwMDBCRTMyNSAvKiBKU0VudGl0
eS5oICovLAogCQkJCTkzRjlCNzcyMEJBNUZEREMwMDg1NDA2NCAvKiBKU0VudGl0eVJlZmVyZW5j
ZS5jcHAgKi8sCiAJCQkJOTNGOUI3NzMwQkE1RkREQzAwODU0MDY0IC8qIEpTRW50aXR5UmVmZXJl
bmNlLmggKi8sCisJCQkJRkU4MERBNUYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24u
Y3BwICovLAorCQkJCUZFODBEQTYwMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmgg
Ki8sCisJCQkJRkU4MERBNjEwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uY3BwICov
LAorCQkJCUZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi8sCiAJ
CQkJQkNEOUMyQkMwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmNwcCAqLywKIAkJ
CQlCQ0Q5QzJCRDBDMTdCNjlFMDA1QzkwQTIgLyogSlNOYW1lZE5vZGVNYXAuaCAqLywKIAkJCQkx
NERDMEQzNTA5RkVEMDczMDA3QjAyMzUgLyogSlNOb2RlLmNwcCAqLywKQEAgLTExNzY5LDYgKzEx
ODQ3LDEwIEBACiAJCQkJQkNEOUMyQkYwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTm9kZUxpc3QuaCAq
LywKIAkJCQk2NURGMzFFOTA5RDFDQzYwMDAwQkUzMjUgLyogSlNOb3RhdGlvbi5jcHAgKi8sCiAJ
CQkJNjVERjMxRUEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTm90YXRpb24uaCAqLywKKwkJCQlGRTgw
REE2RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmNwcCAqLywKKwkJCQlGRTgw
REE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi8sCisJCQkJRkU4MERB
NkYwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCAqLywKKwkJCQlGRTgw
REE3MDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCAqLywKIAkJCQk2NURG
MzFFQjA5RDFDQzYwMDAwQkUzMjUgLyogSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uY3BwICovLAog
CQkJCTY1REYzMUVDMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1Byb2Nlc3NpbmdJbnN0cnVjdGlvbi5o
ICovLAogCQkJCUU0QjQyMzg1MENCRkI3M0MwMEFGMkVDRSAvKiBKU1Byb2dyZXNzRXZlbnQuY3Bw
ICovLApAQCAtMTI4MzMsNiArMTI5MTUsMTAgQEAKIAkJCQlCQzQ2QzFFRDBDMEREQkRGMDAyMENG
QzMgLyogSlNDU1NSdWxlQ3VzdG9tLmNwcCAqLywKIAkJCQlCQzU4MjVGMjBDMEI4OTM4MDA1M0Yx
QjUgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlCQzIwRkI3RTBD
MEU4RTZDMDBEMTQ0N0YgLyogSlNDU1NWYWx1ZUN1c3RvbS5jcHAgKi8sCisJCQkJRkU4MEQ3QTIw
RTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgKi8sCisJCQkJ
RkU4MEQ3QTMwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oICov
LAorCQkJCUZFODBEN0E0MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JD
YWxsYmFjay5jcHAgKi8sCisJCQkJRkU4MEQ3QTUwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9t
UG9zaXRpb25FcnJvckNhbGxiYWNrLmggKi8sCiAJCQkJNTFFQzkyNUIwQ0U5MERENDAwRjkwMzA4
IC8qIEpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3BwICovLAogCQkJCTUxRUM5MjVDMENF
OTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmggKi8sCiAJCQkJ
NTFFQzkyNUQwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3VzdG9tU1FMU3RhdGVtZW50RXJyb3JDYWxs
YmFjay5jcHAgKi8sCkBAIC0xMjg1Miw2ICsxMjkzOCw3IEBACiAJCQkJQkMyRUQ1NTQwQzZCOUJE
MzAwOTIwQkZGIC8qIEpTRWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNFRkFGNEQwQzMxN0U2
OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwICovLAogCQkJCUJDM0I3QjIwMEU5MUFBRjQw
MEQ1NDA2NSAvKiBKU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAgKi8sCisJCQkJRkU4MEQ3QTYw
RTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwICovLAogCQkJCUJDRTdC
MTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0b20uY3BwICovLAogCQkJCUJDNEVE
RUYzMEMwOEYzRkIwMDdFREQ0OSAvKiBKU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCAqLywK
IAkJCQlCQ0NCQUQzQTBDMThCRkY4MDBDRTg5MEYgLyogSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5j
cHAgKi8sCkBAIC0xMzE2Miw2ICsxMzI0OSwxMCBAQAogCQkJCTA2NkM3NzJBMEFCNjAzQjcwMDIz
OENDNCAvKiBGaWxlQ2hvb3Nlci5oICovLAogCQkJCTUxNEIzRjcyMEM3MjIwNDcwMDA1MzBERiAv
KiBGaWxlU3lzdGVtLmggKi8sCiAJCQkJQkMwNzNCQTkwQzM5OUIxRjAwMEY1OTc5IC8qIEZsb2F0
Q29udmVyc2lvbi5oICovLAorCQkJCUZFQUI5MDEwMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2Nh
dGlvblNlcnZpY2UuY3BwICovLAorCQkJCUZFQUI5MDExMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9s
b2NhdGlvblNlcnZpY2UuaCAqLywKKwkJCQlGRUUxODIyQjBFQTZCOEUwMDA1QjMzQTkgLyogR2Vv
bG9jYXRpb25TZXJ2aWNlRmFrZS5jcHAgKi8sCisJCQkJRkVFMTgyMkMwRUE2QjhFMDAwNUIzM0E5
IC8qIEdlb2xvY2F0aW9uU2VydmljZUZha2UuaCAqLywKIAkJCQlCQzNCQzI5QjBFOTFBQjBGMDA4
MzU1ODggLyogSG9zdFdpbmRvdy5oICovLAogCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJDNTMxRiAv
KiBLVVJMLmNwcCAqLywKIAkJCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VSTC5oICov
LApAQCAtMTMyMDEsNiArMTMyOTIsOCBAQAogCQkJCTkzMzA5RUExMDk5RUI3OEMwMDU2RTU4MSAv
KiBUaW1lci5jcHAgKi8sCiAJCQkJOTMwNUIyNEMwOThGMUI2QjAwQzI4ODU1IC8qIFRpbWVyLmgg
Ki8sCiAJCQkJMTQxOUQyQzQwQ0VBNkY2MTAwRkY1MDdBIC8qIFRyZWVTaGFyZWQuaCAqLywKKwkJ
CQlGRUUxODFCMzBFQTZCMEM1MDA1QjMzQTkgLyogV2ViQ29yZUdlb2xvY2F0aW9uLmNwcCAqLywK
KwkJCQlGRUUxODFCNDBFQTZCMEM1MDA1QjMzQTkgLyogV2ViQ29yZUdlb2xvY2F0aW9uLmggKi8s
CiAJCQkJOTM4MEY0NzEwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5jcHAgKi8sCiAJCQkJOTM4
MEY0NzIwOUExMUFCNDAwMUZEQjM0IC8qIFdpZGdldC5oICovLAogCQkJKTsKQEAgLTE1OTc1LDYg
KzE2MDY4LDE4IEBACiAJCQkJMUM4MUJBMEMwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRE
ZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQkEwRTBFOTczNDgzMDAyNjZF
MDcgLyogSmF2YVNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNCRTEy
QjBFOTgwOTJGMDA4MzU1ODggLyogUG9wdXBNZW51U3R5bGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZFODBEN0E4MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCBp
biBIZWFkZXJzICovLAorCQkJCUZFODBEN0FBMEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBv
c2l0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3QzYwRTlDMUYy
NTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdDOTBF
OUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBE
N0NCMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTgwRDdDRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkU4MEQ3Q0YwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3RDEwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBv
c2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MERBNjQwRTlDNDcwMzAwMEQ2
Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEQTY2MEU5QzQ3
MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwREE3
MjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJ
CQlGRTgwREE3NDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDM0JFOTk0MEU5QzFDN0MwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXIu
aCBpbiBIZWFkZXJzICovLAogCQkJCUJDM0JFOTk1MEU5QzFDN0MwMDgzNTU4OCAvKiBSZW5kZXJT
Y3JvbGxiYXJQYXJ0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNCRTk5OTBFOUMxRTVEMDA4MzU1
ODggLyogUmVuZGVyU2Nyb2xsYmFyVGhlbWUuaCBpbiBIZWFkZXJzICovLApAQCAtMTU5ODIsNiAr
MTYwODcsOSBAQAogCQkJCTFDRjZCRTE1MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRl
ckNvbmRpdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTgwRDY3MDgwRTlFOURFQjAwRTQyMEYw
IC8qIEdyYXBoaWNzQ29udGV4dFBsYXRmb3JtUHJpdmF0ZUNHLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk5MzlCMDJFRjBFQTJEQkM0MDBDNTQ1NzAgLyogV2lkdGhJdGVyYXRvci5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJRkVBQjkwMTMwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRkVFMTgxQjYwRUE2QjBDNTAwNUIzM0E5IC8qIFdlYkNvcmVH
ZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVFMTgyMkUwRUE2QjhFMDAwNUIzM0E5
IC8qIEdlb2xvY2F0aW9uU2VydmljZUZha2UuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTc4NDIsNiAr
MTc5NTAsMTUgQEAKIAkJCQkxQzgxQkEwMjBFOTczM0NCMDAyNjZFMDcgLyogSmF2YVNjcmlwdFBy
b2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMDkwRTk3MzQ4MzAwMjY2RTA3IC8q
IEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJBMEQwRTk3
MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLywK
KwkJCQlGRTgwRDdBNzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNr
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEN0E5MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1
c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwRDdB
QjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGRTgwRDdDNTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRkU4MEQ3QzgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEQTYzMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xv
Y2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEQTY1MEU5QzQ3MDMwMDBENkY3NSAv
KiBKU0dlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEQTcxMEU5QzQ3MkYw
MDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MERB
NzMwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUJDM0JFOTkzMEU5QzFDN0MwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXIuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQkMzQkU5QTUwRTlDMjM5NjAwODM1NTg4IC8qIFJlbmRlclNjcm9s
bGJhclRoZW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDM0JFOUFCMEU5QzI0MjAwMDgzNTU4
OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCBpbiBTb3VyY2VzICovLApAQCAtMTc4NDksNiAr
MTc5NjYsOSBAQAogCQkJCTFDRjZCRTE0MEU5QkI0NjcwMDI1RTFDRCAvKiBPYmpDTm9kZUZpbHRl
ckNvbmRpdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUJDODBGQTEzMEVBMjg3QjAwMEIwODIx
RCAvKiBMZW5ndGguY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJOTM5QjAyRUUwRUEyREJDNDAwQzU0
NTcwIC8qIFdpZHRoSXRlcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVBQjkwMTIwRUE1
MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQlGRUUxODFCNTBFQTZCMEM1MDA1QjMzQTkgLyogV2ViQ29yZUdlb2xvY2F0aW9uLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUZFRTE4MjJEMEVBNkI4RTAwMDVCMzNBOSAvKiBHZW9sb2NhdGlvblNl
cnZpY2VGYWtlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3lt
ZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNDdXN0b21Qb3NpdGlvbkNh
bGxiYWNrLmgiCisjaW5jbHVkZSAiQ29uc29sZS5oIgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKKyNp
bmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTR2VvcG9zaXRpb24uaCIKKyNpbmNsdWRlICJQ
YWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPGtqcy9KU0xv
Y2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitK
U0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayhKU09iamVj
dCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisg
ICAgLCBtX2ZyYW1lKGZyYW1lKQoreworfQorCit2b2lkIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFj
azo6aGFuZGxlRXZlbnQoR2VvcG9zaXRpb24qIGdlb3Bvc2l0aW9uLCBib29sJiByYWlzZWRFeGNl
cHRpb24pCit7CisgICAgQVNTRVJUKG1fY2FsbGJhY2spOworICAgIEFTU0VSVChtX2ZyYW1lKTsK
KyAgICAKKyAgICBpZiAoIW1fZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2ZyYW1l
LT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgRXhlY1N0YXRlKiBleGVjID0gZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgCisgICAgSlNDOjpKU0xvY2sgbG9jayhmYWxzZSk7
CisgICAgCisgICAgSlNWYWx1ZSogZnVuY3Rpb24gPSBtX2NhbGxiYWNrLT5nZXQoZXhlYywgSWRl
bnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7Cisg
ICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBmdW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOwor
ICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgY2FsbFR5cGUgPSBt
X2NhbGxiYWNrLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7CisgICAgICAgIGlmIChjYWxsVHlwZSA9
PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgYW4gZXhjZXB0
aW9uIGJlIHRocm93biBoZXJlPworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAg
ICAgIGZ1bmN0aW9uID0gbV9jYWxsYmFjazsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPEpTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKKyAgICAKKyAgICBBcmdMaXN0IGFy
Z3M7CisgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBnZW9wb3NpdGlvbikpOworICAgIAorICAg
IGdsb2JhbE9iamVjdC0+c3RhcnRUaW1lb3V0Q2hlY2soKTsKKyAgICBjYWxsKGV4ZWMsIGZ1bmN0
aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fY2FsbGJhY2ssIGFyZ3MpOworICAgIGdsb2JhbE9i
amVjdC0+c3RvcFRpbWVvdXRDaGVjaygpOworICAgIAorICAgIGlmIChleGVjLT5oYWRFeGNlcHRp
b24oKSkgeworICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5yZXBvcnRD
dXJyZW50RXhjZXB0aW9uKGV4ZWMpOworICAgICAgICByYWlzZWRFeGNlcHRpb24gPSB0cnVlOwor
ICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaWZuZGVmIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFja19oCisjZGVmaW5lIEpTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFja19oCisKKyNpbmNsdWRlIDxranMvSlNPYmplY3QuaD4KKyNpbmNs
dWRlIDxranMvcHJvdGVjdC5oPgorI2luY2x1ZGUgIlBvc2l0aW9uQ2FsbGJhY2suaCIKKyNpbmNs
dWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgSlNDIHsKKyAgICBjbGFzcyBKU09iamVj
dDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNzIEdlb3Bv
c2l0aW9uOworCitjbGFzcyBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUG9zaXRp
b25DYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21Qb3Np
dGlvbkNhbGxiYWNrPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFt
ZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayhjYWxsYmFj
aywgZnJhbWUpKTsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChHZW9wb3Np
dGlvbiosIGJvb2wmIHJhaXNlZEV4Y2VwdGlvbik7CisKK3ByaXZhdGU6CisgICAgSlNDdXN0b21Q
b3NpdGlvbkNhbGxiYWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSopOworCisgICAg
SlNDOjpQcm90ZWN0ZWRQdHI8SlNDOjpKU09iamVjdD4gbV9jYWxsYmFjazsKKyAgICBSZWZQdHI8
RnJhbWU+IG1fZnJhbWU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
ay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUg
PGtqcy9KU0xvY2suaD4KKyNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5o
IgorI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisjaW5jbHVkZSAi
RnJhbWUuaCIKKyNpbmNsdWRlICJKU1Bvc2l0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7Cisg
ICAgCit1c2luZyBuYW1lc3BhY2UgSlNDOworCitKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
azo6SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2soSlNPYmplY3QqIGNhbGxiYWNrLCBGcmFt
ZSogZnJhbWUpCisgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQorICAgICwgbV9mcmFtZShmcmFt
ZSkKK3sKK30KKwordm9pZCBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6aGFuZGxlRXZl
bnQoUG9zaXRpb25FcnJvciogcG9zaXRpb25FcnJvcikKK3sKKyAgICBBU1NFUlQobV9jYWxsYmFj
ayk7CisgICAgQVNTRVJUKG1fZnJhbWUpOworICAgIAorICAgIGlmICghbV9mcmFtZS0+c2NyaXB0
KCktPmlzRW5hYmxlZCgpKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCA9IG1fZnJhbWUtPnNjcmlwdCgpLT5nbG9iYWxPYmplY3QoKTsKKyAg
ICBFeGVjU3RhdGUqIGV4ZWMgPSBnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKTsKKyAgICAKKyAg
ICBKU0M6OkpTTG9jayBsb2NrKGZhbHNlKTsKKyAgICAKKyAgICBKU1ZhbHVlKiBmdW5jdGlvbiA9
IG1fY2FsbGJhY2stPmdldChleGVjLCBJZGVudGlmaWVyKGV4ZWMsICJoYW5kbGVFdmVudCIpKTsK
KyAgICBDYWxsRGF0YSBjYWxsRGF0YTsKKyAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGZ1bmN0aW9u
LT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7CisgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9u
ZSkgeworICAgICAgICBjYWxsVHlwZSA9IG1fY2FsbGJhY2stPmdldENhbGxEYXRhKGNhbGxEYXRh
KTsKKyAgICAgICAgaWYgKGNhbGxUeXBlID09IENhbGxUeXBlTm9uZSkgeworICAgICAgICAgICAg
Ly8gRklYTUU6IFNob3VsZCBhbiBleGNlcHRpb24gYmUgdGhyb3duIGhlcmU/CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZnVuY3Rpb24gPSBtX2NhbGxiYWNrOworICAg
IH0KKyAgICAKKyAgICBSZWZQdHI8SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s+IHByb3Rl
Y3QodGhpcyk7CisgICAgCisgICAgQXJnTGlzdCBhcmdzOworICAgIGFyZ3MuYXBwZW5kKHRvSlMo
ZXhlYywgcG9zaXRpb25FcnJvcikpOworICAgIAorICAgIGdsb2JhbE9iamVjdC0+c3RhcnRUaW1l
b3V0Q2hlY2soKTsKKyAgICBjYWxsKGV4ZWMsIGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEs
IG1fY2FsbGJhY2ssIGFyZ3MpOworICAgIGdsb2JhbE9iamVjdC0+c3RvcFRpbWVvdXRDaGVjaygp
OworICAgIAorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgbV9mcmFtZS0+
ZG9tV2luZG93KCktPmNvbnNvbGUoKS0+cmVwb3J0Q3VycmVudEV4Y2VwdGlvbihleGVjKTsKK30K
KyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisr
KyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBw
bGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFja19o
CisjZGVmaW5lIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrX2gKKworI2luY2x1ZGUgIlBv
c2l0aW9uRXJyb3JDYWxsYmFjay5oIgorI2luY2x1ZGUgPGtqcy9KU09iamVjdC5oPgorI2luY2x1
ZGUgPGtqcy9wcm90ZWN0Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKworbmFtZXNwYWNl
IEpTQyB7CisgICAgY2xhc3MgSlNPYmplY3Q7Cit9CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAg
ICAKK2NsYXNzIEZyYW1lOworY2xhc3MgUG9zaXRpb25FcnJvcjsKKworY2xhc3MgSlNDdXN0b21Q
b3NpdGlvbkVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgUG9zaXRpb25FcnJvckNhbGxiYWNrIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
az4gY3JlYXRlKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayhjYWxsYmFjaywgZnJh
bWUpKTsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChQb3NpdGlvbkVycm9y
Kik7CisKK3ByaXZhdGU6CisgICAgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2soSlNDOjpK
U09iamVjdCogY2FsbGJhY2ssIEZyYW1lKik7CisKKyAgICBKU0M6OlByb3RlY3RlZFB0cjxKU0M6
OkpTT2JqZWN0PiBtX2NhbGxiYWNrOworICAgIFJlZlB0cjxGcmFtZT4gbV9mcmFtZTsKK307Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBKU0N1c3RvbVBvc2l0aW9u
RXJyb3JDYWxsYmFja19oCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCShy
ZXZpc2lvbiAzNzYzNikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzA3LDYgKzMwNywxNiBAQCB2b2lkIHVwZGF0ZURPTU5vZGVEb2N1
bWVudChOb2RlKiBub2RlLCBECiAgICAgYWRkV3JhcHBlcih3cmFwcGVyKTsKIH0KIAordm9pZCBt
YXJrRE9NT2JqZWN0V3JhcHBlcihKU0dsb2JhbERhdGEmIGdsb2JhbERhdGEsIHZvaWQqIG9iamVj
dCkKK3sKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuOworICAgIERPTU9iamVjdCog
d3JhcHBlciA9IGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoZ2xvYmFsRGF0YSwgb2JqZWN0KTsK
KyAgICBpZiAoIXdyYXBwZXIgfHwgd3JhcHBlci0+bWFya2VkKCkpCisgICAgICAgIHJldHVybjsK
KyAgICB3cmFwcGVyLT5tYXJrKCk7Cit9CisKIEpTVmFsdWUqIGpzU3RyaW5nT3JOdWxsKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKQogewogICAgIGlmIChzLmlzTnVsbCgpKQpJbmRl
eDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAzNzYzNikKKysrIFdlYkNv
cmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHZvaWQgdXBkYXRlRE9NTm9kZURvY3VtZW50
KE5vZGUqLCBEb2N1bWVudCogb2xkRG9jdW1lbnQsIERvY3VtZW50KiBuZXdEb2N1bWVudCk7CiAg
ICAgdm9pZCBtYXJrRE9NTm9kZXNGb3JEb2N1bWVudChEb2N1bWVudCopOwogICAgIHZvaWQgbWFy
a0FjdGl2ZU9iamVjdHNGb3JEb2N1bWVudChKU0M6OkpTR2xvYmFsRGF0YSYsIERvY3VtZW50Kik7
CisgICAgdm9pZCBtYXJrRE9NT2JqZWN0V3JhcHBlcihKU0M6OkpTR2xvYmFsRGF0YSYgZ2xvYmFs
RGF0YSwgdm9pZCogb2JqZWN0KTsKICAgICB2b2lkIG1hcmtDcm9zc0hlYXBEZXBlbmRlbnRPYmpl
Y3RzRm9yRG9jdW1lbnQoSlNDOjpKU0dsb2JhbERhdGEmLCBEb2N1bWVudCopOwogCiAgICAgSlND
OjpTdHJ1Y3R1cmVJRCogZ2V0Q2FjaGVkRE9NU3RydWN0dXJlKEpTQzo6RXhlY1N0YXRlKiwgY29u
c3QgSlNDOjpDbGFzc0luZm8qKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5k
b3dDdXN0b20uY3BwCShyZXZpc2lvbiAzNzYzNikKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNiArNDEsNiBAQCB1c2lu
ZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRpYyB2b2lkIG1h
cmtET01PYmplY3RXcmFwcGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9pZCogb2JqZWN0
KQotewotICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm47Ci0gICAgRE9NT2JqZWN0KiB3
cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcihnbG9iYWxEYXRhLCBvYmplY3QpOwot
ICAgIGlmICghd3JhcHBlciB8fCB3cmFwcGVyLT5tYXJrZWQoKSkKLSAgICAgICAgcmV0dXJuOwot
ICAgIHdyYXBwZXItPm1hcmsoKTsKLX0KLQogdm9pZCBKU0RPTVdpbmRvdzo6bWFyaygpCiB7CiAg
ICAgQmFzZTo6bWFyaygpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9u
Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRp
b25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xv
Y2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMjAgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkpTR2VvbG9jYXRpb24uaCIKKyNpbmNsdWRlICJET01XaW5kb3cuaCIKKyNp
bmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKKyNpbmNs
dWRlICJHZW9sb2NhdGlvblNlcnZpY2UuaCIKKyNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uQ2Fs
bGJhY2suaCIKKyNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIgorI2lu
Y2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNQb3NpdGlvbk9wdGlvbnMuaCIKKwor
dXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU0M6OkpTVmFs
dWUqIHRvSlMoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIEdlb2xvY2F0aW9uKiBvYmplY3QpCit7Cisg
ICAgaWYgKEdlb2xvY2F0aW9uU2VydmljZTo6aXNBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJu
IGdldERPTU9iamVjdFdyYXBwZXI8SlNHZW9sb2NhdGlvbj4oZXhlYywgb2JqZWN0KTsKKyAgICBl
bHNlCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitKU1ZhbHVlKiBKU0dlb2xv
Y2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0
JiBhcmdzKQoreworICAgIC8vIEFyZ3VtZW50czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlvbmFs
KVBvc2l0aW9uRXJyb3JDYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uT3B0aW9ucworICAgIFJl
ZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrOworICAgIEpTT2JqZWN0KiBv
YmplY3QgPSBhcmdzLmF0KGV4ZWMsIDApLT5nZXRPYmplY3QoKTsKKyAgICBpZiAoZXhlYy0+aGFk
RXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmICghb2Jq
ZWN0KSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VSUik7
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKworICAgIGlmIChGcmFtZSog
ZnJhbWUgPSB0b0pTRE9NV2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwo
KS0+ZnJhbWUoKSkKKyAgICAgICAgcG9zaXRpb25DYWxsYmFjayA9IEpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjazo6Y3JlYXRlKG9iamVjdCwgZnJhbWUpOworICAgIAorICAgIFJlZlB0cjxQb3NpdGlv
bkVycm9yQ2FsbGJhY2s+IHBvc2l0aW9uRXJyb3JDYWxsYmFjazsKKyAgICBpZiAoIWFyZ3MuYXQo
ZXhlYywgMSktPmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgSlNPYmplY3QqIG9iamVj
dCA9IGFyZ3MuYXQoZXhlYywgMSktPmdldE9iamVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkg
eworICAgICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIFRZUEVfTUlTTUFUQ0hfRVJSKTsK
KyAgICAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKEZyYW1lKiBmcmFtZSA9IHRvSlNET01XaW5kb3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpKS0+aW1wbCgpLT5mcmFtZSgpKQorICAgICAgICAgICAgcG9zaXRpb25FcnJvckNhbGxiYWNr
ID0gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1lKTsK
KyAgICB9CisgICAgCisgICAgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4gcG9zaXRpb25PcHRpb25z
OworICAgIGlmICghYXJncy5hdChleGVjLCAyKS0+aXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAg
ICAgcG9zaXRpb25PcHRpb25zID0gdG9Qb3NpdGlvbk9wdGlvbnMoYXJncy5hdChleGVjLCAyKSk7
CisgICAgCisgICAgbV9pbXBsLT5nZXRDdXJyZW50UG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5y
ZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9u
cy5nZXQoKSk7CisgICAgCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFsdWUq
IEpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdM
aXN0JiBhcmdzKQoreworICAgIC8vIEFyZ3VtZW50czogUG9zaXRpb25DYWxsYmFjaywgKG9wdGlv
bmFsKVBvc2l0aW9uRXJyb3JDYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uT3B0aW9ucworICAg
IFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNhbGxiYWNrOworICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMsIDApLT5nZXRPYmplY3QoKTsKKyAgICBpZiAoZXhlYy0+
aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIGlmICgh
b2JqZWN0KSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENIX0VS
Uik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIH0KKyAgICAKKyAgICBpZiAo
RnJhbWUqIGZyYW1lID0gdG9KU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkp
LT5pbXBsKCktPmZyYW1lKCkpCisgICAgICAgIHBvc2l0aW9uQ2FsbGJhY2sgPSBKU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1lKTsKKyAgICAKKyAgICBSZWZQdHI8
UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2s7CisgICAgaWYgKCFh
cmdzLmF0KGV4ZWMsIDEpLT5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIEpTT2JqZWN0
KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMsIDEpLT5nZXRPYmplY3QoKTsKKyAgICAgICAgaWYgKCFv
YmplY3QpIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBFX01JU01BVENI
X0VSUik7CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgfQorICAg
ICAgICAKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRvSlNET01XaW5kb3coZXhlYy0+bGV4
aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpKQorICAgICAgICAgICAgcG9zaXRp
b25FcnJvckNhbGxiYWNrID0gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OmNyZWF0ZShv
YmplY3QsIGZyYW1lKTsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPFBvc2l0aW9uT3B0aW9ucz4g
cG9zaXRpb25PcHRpb25zOworICAgIGlmICghYXJncy5hdChleGVjLCAyKS0+aXNVbmRlZmluZWRP
ck51bGwoKSkKKyAgICAgICAgcG9zaXRpb25PcHRpb25zID0gdG9Qb3NpdGlvbk9wdGlvbnMoYXJn
cy5hdChleGVjLCAyKSk7CisgICAgCisgICAgaW50IHcgPSBtX2ltcGwtPndhdGNoUG9zaXRpb24o
cG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNl
KCksIHBvc2l0aW9uT3B0aW9ucy5nZXQoKSk7CisgICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHcp
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAkocmV2aXNpb24gMzc2MzYpCisrKyBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDQgKzEx
MywxMyBAQCBKU1ZhbHVlKiBKU05hdmlnYXRvcjo6YXBwVmVyc2lvbihFeGVjU3RhCiAgICAgcmV0
dXJuIGpzU3RyaW5nKGV4ZWMsIGltcC0+YXBwVmVyc2lvbigpKTsKIH0KIAordm9pZCBKU05hdmln
YXRvcjo6bWFyaygpCit7CisgICAgQmFzZTo6bWFyaygpOworCisgICAgSlNHbG9iYWxEYXRhJiBn
bG9iYWxEYXRhID0gKkhlYXA6OmhlYXAodGhpcyktPmdsb2JhbERhdGEoKTsKKworICAgIG1hcmtE
T01PYmplY3RXcmFwcGVyKGdsb2JhbERhdGEsIGltcGwoKS0+b3B0aW9uYWxHZW9sb2NhdGlvbigp
KTsKK30KKwogfQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JK
Uy5wbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
ckpTLnBtCShyZXZpc2lvbiAzNzYzNikKKysrIFdlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTE0NSw3ICsxNDUsNyBAQCBzdWIgVXNl
c01hbnVhbFRvSlNJbXBsZW1lbnRhdGlvbgogewogICAgIG15ICR0eXBlID0gc2hpZnQ7CiAKLSAg
ICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiTm9kZSIgb3IgJHR5cGUgZXEgIkRvY3VtZW50IiBvciAk
dHlwZSBlcSAiSFRNTENvbGxlY3Rpb24iIG9yICR0eXBlIGVxICJTVkdQYXRoU2VnIiBvciAkdHlw
ZSBlcSAiU3R5bGVTaGVldCIgb3IgJHR5cGUgZXEgIkNTU1J1bGUiIG9yICR0eXBlIGVxICJDU1NW
YWx1ZSIgb3IgJHR5cGUgZXEgIkV2ZW50IiBvciAkdHlwZSBlcSAiSW1hZ2VEYXRhIiBvciAkdHlw
ZSBlcSAiRWxlbWVudCIgb3IgJHR5cGUgZXEgIlRleHQiOworICAgIHJldHVybiAxIGlmICR0eXBl
IGVxICJOb2RlIiBvciAkdHlwZSBlcSAiRG9jdW1lbnQiIG9yICR0eXBlIGVxICJIVE1MQ29sbGVj
dGlvbiIgb3IgJHR5cGUgZXEgIlNWR1BhdGhTZWciIG9yICR0eXBlIGVxICJTdHlsZVNoZWV0IiBv
ciAkdHlwZSBlcSAiQ1NTUnVsZSIgb3IgJHR5cGUgZXEgIkNTU1ZhbHVlIiBvciAkdHlwZSBlcSAi
RXZlbnQiIG9yICR0eXBlIGVxICJJbWFnZURhdGEiIG9yICR0eXBlIGVxICJFbGVtZW50IiBvciAk
dHlwZSBlcSAiVGV4dCIgb3IgJHR5cGUgZXEgIkdlb2xvY2F0aW9uIjsKICAgICByZXR1cm4gMDsK
IH0KIApJbmRleDogV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdl
L0dlb2xvY2F0aW9uLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNzQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uLmgiCisjaW5jbHVkZSAiUG9zaXRpb25FcnJvci5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0dlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6R2VvTm90
aWZpZXIoUGFzc1JlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NS
ZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlv
bnMqIG9wdGlvbnMpCisgICAgOiBtX3N1Y2Nlc3NDYWxsYmFjayhzdWNjZXNzQ2FsbGJhY2spCisg
ICAgLCBtX2Vycm9yQ2FsbGJhY2soZXJyb3JDYWxsYmFjaykKKyAgICAsIG1fdGltZXIodGhpcywg
Jkdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6dGltZXJGaXJlZCkKK3sKKyAgICBpZiAobV9lcnJv
ckNhbGxiYWNrICYmIG9wdGlvbnMgJiYgb3B0aW9ucy0+dGltZW91dCgpICE9IC0xKQorICAgICAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdChvcHRpb25zLT50aW1lb3V0KCkgLyAxMDAwLjApOworfQor
Cit2b2lkIEdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6dGltZXJGaXJlZChUaW1lcjxHZW9Ob3Rp
Zmllcj4qKQoreworICAgIEFTU0VSVChtX2Vycm9yQ2FsbGJhY2spOworICAgIAorICAgIG1fdGlt
ZXIuc3RvcCgpOworCisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gbmV3IFBvc2l0
aW9uRXJyb3IoNCwgIlRpbWVkIG91dCIpOworICAgIG1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZl
bnQoZXJyb3IuZ2V0KCkpOworfQorCitHZW9sb2NhdGlvbjo6R2VvbG9jYXRpb24oRnJhbWUqIGZy
YW1lKQorICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICAsIG1fc2VydmljZShHZW9sb2NhdGlvblNl
cnZpY2U6OmNyZWF0ZSh0aGlzKSkKK3sKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6ZGlzY29ubmVj
dEZyYW1lKCkKK3sKKyAgICBtX2ZyYW1lID0gMDsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6Z2V0
Q3VycmVudFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUG9z
aXRpb25PcHRpb25zKiBvcHRpb25zKQoreworICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZp
ZXIgPSBuZXcgR2VvTm90aWZpZXIoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRp
b25zKTsKKworICAgIGlmICghbV9zZXJ2aWNlLT5zdGFydFVwZGF0aW5nKG9wdGlvbnMpKSB7Cisg
ICAgICAgIGlmIChub3RpZmllci0+bV9lcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQ
dHI8UG9zaXRpb25FcnJvcj4gZXJyb3IgPSBuZXcgUG9zaXRpb25FcnJvcigxLCAiVW5hYmxlIHRv
IFN0YXJ0Iik7CisgICAgICAgICAgICBub3RpZmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVF
dmVudChlcnJvci5nZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKwor
ICAgIG1fb25lU2hvdHMuYWRkKG5vdGlmaWVyKTsKK30KKworaW50IEdlb2xvY2F0aW9uOjp3YXRj
aFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxiYWNrLCBQ
YXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUG9zaXRpb25P
cHRpb25zKiBvcHRpb25zKQoreworICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSBu
ZXcgR2VvTm90aWZpZXIoc3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsK
KworICAgIGlmICghbV9zZXJ2aWNlLT5zdGFydFVwZGF0aW5nKG9wdGlvbnMpKSB7CisgICAgICAg
IGlmIChub3RpZmllci0+bV9lcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQdHI8UG9z
aXRpb25FcnJvcj4gZXJyb3IgPSBuZXcgUG9zaXRpb25FcnJvcigxLCAiVW5hYmxlIHRvIFN0YXJ0
Iik7CisgICAgICAgICAgICBub3RpZmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChl
cnJvci5nZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAor
ICAgIHN0YXRpYyBpbnQgc0lkZW50aWZpZXIgPSAwOworICAgIAorICAgIG1fd2F0Y2hlcnMuc2V0
KCsrc0lkZW50aWZpZXIsIG5vdGlmaWVyKTsKKworICAgIHJldHVybiBzSWRlbnRpZmllcjsKK30K
Kwordm9pZCBHZW9sb2NhdGlvbjo6Y2xlYXJXYXRjaChpbnQgd2F0Y2hJZCkKK3sKKyAgICBSZWZQ
dHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gbV93YXRjaGVycy5nZXQod2F0Y2hJZCk7CisgICAg
aWYgKG5vdGlmaWVyKQorICAgICAgICBtX3dhdGNoZXJzLnJlbW92ZSh3YXRjaElkKTsKKyAgICAK
KyAgICBzdG9wVXBkYXRpbmdJZkVtcHR5KCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OnN0b3BV
cGRhdGluZ0lmRW1wdHkoKQoreworICAgIGlmIChtX3dhdGNoZXJzLmlzRW1wdHkoKSAmJiBtX29u
ZVNob3RzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zZXJ2aWNlLT5zdG9wVXBkYXRpbmcoKTsKK30K
Kwordm9pZCBHZW9sb2NhdGlvbjo6aGFuZGxlRXJyb3IoUG9zaXRpb25FcnJvciogZXJyb3IpCit7
CisgICAgR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJhdG9yIG9uZVNob3RzRW5kID0gbV9vbmVT
aG90cy5lbmQoKTsKKyAgICBmb3IgKEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9
IG1fb25lU2hvdHMuYmVnaW4oKTsgaXQgIT0gb25lU2hvdHNFbmQ7ICsraXQpIHsKKyAgICAgICAg
UmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9ICppdDsKKyAgICAgICAgCisgICAgICAgIGlm
IChub3RpZmllci0+bV9lcnJvckNhbGxiYWNrKQorICAgICAgICAgICAgbm90aWZpZXItPm1fZXJy
b3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IpOworICAgIH0KKyAgICBtX29uZVNob3RzLmNs
ZWFyKCk7CisgICAgCisgICAgR2VvTm90aWZpZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIHdhdGNoZXJz
RW5kID0gbV93YXRjaGVycy5lbmQoKTsKKyAgICBmb3IgKEdlb05vdGlmaWVyTWFwOjpjb25zdF9p
dGVyYXRvciBpdCA9IG1fd2F0Y2hlcnMuYmVnaW4oKTsgaXQgIT0gd2F0Y2hlcnNFbmQ7ICsraXQp
IHsKKyAgICAgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9ICgqaXQpLnNlY29uZDsK
KyAgICAgICAgCisgICAgICAgIGlmIChub3RpZmllci0+bV9lcnJvckNhbGxiYWNrKQorICAgICAg
ICAgICAgbm90aWZpZXItPm1fZXJyb3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IpOworICAg
IH0KK30KKwordm9pZCBHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFu
Z2VkKEdlb2xvY2F0aW9uU2VydmljZSogc2VydmljZSkKK3sKKyAgICBBU1NFUlQoc2VydmljZS0+
bGFzdFBvc2l0aW9uKCkpOworICAgIAorICAgIGJvb2wgc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2sg
PSBmYWxzZTsKKyAgICBHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3Igb25lU2hvdHNFbmQg
PSBtX29uZVNob3RzLmVuZCgpOworICAgIGZvciAoR2VvTm90aWZpZXJTZXQ6OmNvbnN0X2l0ZXJh
dG9yIGl0ID0gbV9vbmVTaG90cy5iZWdpbigpOyBpdCAhPSBvbmVTaG90c0VuZDsgKytpdCkgewor
ICAgICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKml0OworICAgICAgICBBU1NF
UlQobm90aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICAgICAgCisgICAgICAgIG5vdGlm
aWVyLT5tX3RpbWVyLnN0b3AoKTsKKyAgICAgICAgbm90aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNr
LT5oYW5kbGVFdmVudChzZXJ2aWNlLT5sYXN0UG9zaXRpb24oKSwgc2hvdWxkQ2FsbEVycm9yQ2Fs
bGJhY2spOworICAgICAgICBpZiAoc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2spIHsKKyAgICAgICAg
ICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IG5ldyBQb3NpdGlvbkVycm9yKDUsICJK
YXZhU2NyaXB0IEVycm9yIik7CisgICAgICAgICAgICBoYW5kbGVFcnJvcihlcnJvci5nZXQoKSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgR2VvTm90
aWZpZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIHdhdGNoZXJzRW5kID0gbV93YXRjaGVycy5lbmQoKTsK
KyAgICBmb3IgKEdlb05vdGlmaWVyTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fd2F0Y2hlcnMu
YmVnaW4oKTsgaXQgIT0gd2F0Y2hlcnNFbmQ7ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPEdlb05v
dGlmaWVyPiBub3RpZmllciA9ICgqaXQpLnNlY29uZDsKKyAgICAgICAgQVNTRVJUKG5vdGlmaWVy
LT5tX3N1Y2Nlc3NDYWxsYmFjayk7CisgICAgICAgIAorICAgICAgICBub3RpZmllci0+bV90aW1l
ci5zdG9wKCk7CisgICAgICAgIG5vdGlmaWVyLT5tX3N1Y2Nlc3NDYWxsYmFjay0+aGFuZGxlRXZl
bnQoc2VydmljZS0+bGFzdFBvc2l0aW9uKCksIHNob3VsZENhbGxFcnJvckNhbGxiYWNrKTsKKyAg
ICAgICAgaWYgKHNob3VsZENhbGxFcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQdHI8
UG9zaXRpb25FcnJvcj4gZXJyb3IgPSBuZXcgUG9zaXRpb25FcnJvcig1LCAiSmF2YVNjcmlwdCBF
cnJvciIpOworICAgICAgICAgICAgaGFuZGxlRXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIG1fb25lU2hvdHMuY2xlYXIo
KTsKKyAgICBzdG9wVXBkYXRpbmdJZkVtcHR5KCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246Omdl
b2xvY2F0aW9uU2VydmljZUVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25TZXJ2aWNlKiBzZXJ2aWNl
KQoreworICAgIEFTU0VSVChzZXJ2aWNlLT5sYXN0RXJyb3IoKSk7CisgICAgaGFuZGxlRXJyb3Io
c2VydmljZS0+bGFzdEVycm9yKCkpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4
OiBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb24uaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5o
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4
IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgR2VvbG9jYXRpb25faAorI2RlZmluZSBHZW9s
b2NhdGlvbl9oCisKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL093blB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisKKyNpbmNsdWRlICJHZW9sb2NhdGlvblNlcnZp
Y2UuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiUG9zaXRpb25F
cnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSAiUG9zaXRpb25PcHRpb25zLmgiCisjaW5jbHVkZSAi
VGltZXIuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNzIEdl
b3Bvc2l0aW9uOworCitjbGFzcyBHZW9sb2NhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xv
Y2F0aW9uPiwgcHVibGljIEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCB7CitwdWJsaWM6CisgICAg
R2VvbG9jYXRpb24oRnJhbWUqKTsKKyAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvbigpIHt9CisKKyAg
ICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOworICAgIAorICAgIEdlb3Bvc2l0aW9uKiBsYXN0UG9z
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2UtPmxhc3RQb3NpdGlvbigpOyB9CisKKyAg
ICB2b2lkIGdldEN1cnJlbnRQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQ
YXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBvc2l0aW9uT3B0aW9ucyopOworICAg
IGludCB3YXRjaFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQ
dHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiwgUG9zaXRpb25PcHRpb25zKik7CisgICAgdm9pZCBj
bGVhcldhdGNoKGludCB3YXRjaElkKTsKKworcHJpdmF0ZToKKyAgICBjbGFzcyBHZW9Ob3RpZmll
ciA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb05vdGlmaWVyPiB7CisgICAgcHVibGljOgorICAgICAg
ICBHZW9Ob3RpZmllcihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBv
c2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBvc2l0aW9uT3B0aW9ucyopOworICAgICAgICAKKyAgICAg
ICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPEdlb05vdGlmaWVyPiopOworICAgICAgICAKKyAgICAg
ICAgUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IG1fc3VjY2Vzc0NhbGxiYWNrOworICAgICAgICBS
ZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBtX2Vycm9yQ2FsbGJhY2s7CisgICAgICAgIFRp
bWVyPEdlb05vdGlmaWVyPiBtX3RpbWVyOworICAgIH07CisgICAgCisgICAgdm9pZCBzdG9wVXBk
YXRpbmdJZkVtcHR5KCk7CisgICAgdm9pZCBoYW5kbGVFcnJvcihQb3NpdGlvbkVycm9yKik7CisK
KyAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKEdlb2xv
Y2F0aW9uU2VydmljZSopOworICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvblNlcnZpY2VFcnJv
ck9jY3VycmVkKEdlb2xvY2F0aW9uU2VydmljZSopOworICAgICAgICAgICAgCisgICAgdHlwZWRl
ZiBIYXNoU2V0PFJlZlB0cjxHZW9Ob3RpZmllcj4gPiBHZW9Ob3RpZmllclNldDsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8aW50LCBSZWZQdHI8R2VvTm90aWZpZXI+ID4gR2VvTm90aWZpZXJNYXA7Cisg
ICAgCisgICAgR2VvTm90aWZpZXJTZXQgbV9vbmVTaG90czsKKyAgICBHZW9Ob3RpZmllck1hcCBt
X3dhdGNoZXJzOworICAgIEZyYW1lKiBtX2ZyYW1lOworICAgIE93blB0cjxHZW9sb2NhdGlvblNl
cnZpY2U+IG1fc2VydmljZTsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZiAvLyBHZW9sb2NhdGlvbl9oCkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5pZGwJKHJldmlzaW9uIDAp
CisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21v
ZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0
b3IKKyAgICBdIEdlb2xvY2F0aW9uIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEdlb3Bv
c2l0aW9uIGxhc3RQb3NpdGlvbjsKKworICAgICAgICBbQ3VzdG9tXSB2b2lkIGdldEN1cnJlbnRQ
b3NpdGlvbihpbiBQb3NpdGlvbkNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4gUG9zaXRpb25F
cnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2ssIGluIFBvc2l0aW9uT3B0aW9ucyBvcHRpb25zKTsK
KworICAgICAgICBbQ3VzdG9tXSBsb25nIHdhdGNoUG9zaXRpb24oaW4gUG9zaXRpb25DYWxsYmFj
ayBzdWNjZXNzQ2FsbGJhY2ssIGluIFBvc2l0aW9uRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNr
LCBpbiBQb3NpdGlvbk9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICAgICAgdm9pZCBjbGVhcldhdGNo
KGluIGxvbmcgd2F0Y2hJZCk7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9wYWdlL0dlb3Bv
c2l0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiR2VvcG9zaXRpb24uaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitTdHJpbmcgR2VvcG9zaXRpb246OnRvU3RyaW5nKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoInBvc2l0aW9uKCUuNmxnLCAlLjZsZywg
JS42bGcsICUuNmxnLCAlLjZsZywgJS42bGcsICUuNmxnLCAlLmxsZCkiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2xhdGl0dWRlLCBtX2xvbmdpdHVkZSwgbV9hbHRpdHVkZSwgbV9hY2N1
cmFjeSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYWx0aXR1ZGVBY2N1cmFjeSwgbV9o
ZWFkaW5nLCBtX3ZlbG9jaXR5LCBtX3RpbWVzdGFtcCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL0dl
b3Bvc2l0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBHZW9wb3NpdGlvbl9oCisj
ZGVmaW5lIEdlb3Bvc2l0aW9uX2gKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3R5cGVkZWYgaW50IEV4Y2Vw
dGlvbkNvZGU7CisKK2NsYXNzIEdlb3Bvc2l0aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8R2VvcG9z
aXRpb24+IHsKK3B1YmxpYzoKKyAgICBHZW9wb3NpdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJs
ZSBsb25naXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgZG91YmxlIGFjY3VyYWN5LCBkb3VibGUgYWx0
aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGhlYWRpbmcsIGRvdWJsZSB2ZWxvY2l0eSwgRE9NVGltZVN0
YW1wIHRpbWVzdGFtcCkKKyAgICAgICAgOiBtX2xhdGl0dWRlKGxhdGl0dWRlKQorICAgICAgICAs
IG1fbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBtX2FsdGl0dWRlKGFsdGl0dWRlKQor
ICAgICAgICAsIG1fYWNjdXJhY3koYWNjdXJhY3kpCisgICAgICAgICwgbV9hbHRpdHVkZUFjY3Vy
YWN5KGFsdGl0dWRlQWNjdXJhY3kpCisgICAgICAgICwgbV9oZWFkaW5nKGhlYWRpbmcpCisgICAg
ICAgICwgbV92ZWxvY2l0eSh2ZWxvY2l0eSkKKyAgICAgICAgLCBtX3RpbWVzdGFtcCh0aW1lc3Rh
bXApCisgICAgeworICAgIH0KKyAgICAKKyAgICBkb3VibGUgbGF0aXR1ZGUoKSBjb25zdCB7IHJl
dHVybiBtX2xhdGl0dWRlOyB9CisgICAgZG91YmxlIGxvbmdpdHVkZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbG9uZ2l0dWRlOyB9CisgICAgZG91YmxlIGFsdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9h
bHRpdHVkZTsgfQorICAgIGRvdWJsZSBhY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWNjdXJh
Y3k7IH0KKyAgICBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0
aXR1ZGVBY2N1cmFjeTsgfQorICAgIGRvdWJsZSBoZWFkaW5nKCkgY29uc3QgeyByZXR1cm4gbV9o
ZWFkaW5nOyB9CisgICAgZG91YmxlIHZlbG9jaXR5KCkgY29uc3QgeyByZXR1cm4gbV92ZWxvY2l0
eTsgfQorICAgIERPTVRpbWVTdGFtcCB0aW1lc3RhbXAoKSBjb25zdCB7IHJldHVybiBtX3RpbWVz
dGFtcDsgfQorCisgICAgU3RyaW5nIHRvU3RyaW5nKCkgY29uc3Q7CisKK3ByaXZhdGU6CisgICAg
ZG91YmxlIG1fbGF0aXR1ZGU7CisgICAgZG91YmxlIG1fbG9uZ2l0dWRlOworICAgIGRvdWJsZSBt
X2FsdGl0dWRlOworICAgIGRvdWJsZSBtX2FjY3VyYWN5OworICAgIGRvdWJsZSBtX2FsdGl0dWRl
QWNjdXJhY3k7CisgICAgZG91YmxlIG1faGVhZGluZzsKKyAgICBkb3VibGUgbV92ZWxvY2l0eTsK
KyAgICBET01UaW1lU3RhbXAgbV90aW1lc3RhbXA7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQorCisjZW5kaWYgLy8gR2VvcG9zaXRpb25faApJbmRleDogV2ViQ29yZS9wYWdlL0dl
b3Bvc2l0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaWRs
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmlkbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5l
cmF0ZUNvbnN0cnVjdG9yCisgICAgXSBHZW9wb3NpdGlvbiB7CisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBkb3VibGUgbGF0aXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3Vi
bGUgbG9uZ2l0dWRlOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGFsdGl0dWRl
OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGFjY3VyYWN5OworICAgICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3k7CisgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBkb3VibGUgaGVhZGluZworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
ZG91YmxlIHZlbG9jaXR5CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01UaW1lU3RhbXAg
dGltZXN0YW1wOworCisgICAgICAgIFtEb250RW51bV0gRE9NU3RyaW5nIHRvU3RyaW5nKCk7Cisg
ICAgfTsKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCShyZXZpc2lvbiAzNzYzNikKKysrIFdlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1l
TG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJMYW5n
dWFnZS5oIgogI2luY2x1ZGUgIk1pbWVUeXBlQXJyYXkuaCIKICNpbmNsdWRlICJOZXR3b3JrU3Rh
dGVOb3RpZmllci5oIgpAQCAtODcsNiArODgsMTAgQEAgdm9pZCBOYXZpZ2F0b3I6OmRpc2Nvbm5l
Y3RGcmFtZSgpCiAgICAgICAgIG1fbWltZVR5cGVzLT5kaXNjb25uZWN0RnJhbWUoKTsKICAgICAg
ICAgbV9taW1lVHlwZXMgPSAwOwogICAgIH0KKyAgICBpZiAobV9nZW9sb2NhdGlvbikgeworICAg
ICAgICBtX2dlb2xvY2F0aW9uLT5kaXNjb25uZWN0RnJhbWUoKTsKKyAgICAgICAgbV9nZW9sb2Nh
dGlvbiA9IDA7CisgICAgfQogICAgIG1fZnJhbWUgPSAwOwogfQogCkBAIC0xOTcsNCArMjAyLDE0
IEBAIGJvb2wgTmF2aWdhdG9yOjpvbkxpbmUoKSBjb25zdAogICAgIHJldHVybiBuZXR3b3JrU3Rh
dGVOb3RpZmllcigpLm9uTGluZSgpOwogfQogCitHZW9sb2NhdGlvbiogTmF2aWdhdG9yOjpnZW9s
b2NhdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKEdlb2xvY2F0aW9uU2VydmljZTo6aXNBdmFpbGFi
bGUoKSkgeworICAgICAgICBpZiAoIW1fZ2VvbG9jYXRpb24pCisgICAgICAgICAgICBtX2dlb2xv
Y2F0aW9uID0gbmV3IEdlb2xvY2F0aW9uKG1fZnJhbWUpOworICAgICAgICByZXR1cm4gbV9nZW9s
b2NhdGlvbi5nZXQoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIDA7Cit9CisgICAgCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCShyZXZpc2lvbiAzNzYzNikKKysr
IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBA
QAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgY2xhc3MgRnJhbWU7CisgICAgY2xhc3MgR2Vv
bG9jYXRpb247CiAgICAgY2xhc3MgTWltZVR5cGVBcnJheTsKICAgICBjbGFzcyBQbHVnaW5EYXRh
OwogICAgIGNsYXNzIFBsdWdpbkFycmF5OwpAQCAtNTYsMTEgKzU3LDE1IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgYm9vbCBqYXZhRW5hYmxlZCgpIGNvbnN0OwogCiAgICAgICAgIGJv
b2wgb25MaW5lKCkgY29uc3Q7CisgICAgICAgIEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbigpIGNv
bnN0OworICAgICAgICAvLyBUaGlzIGlzIHVzZWQgZm9yIEdDIG1hcmtpbmcuCisgICAgICAgIEdl
b2xvY2F0aW9uKiBvcHRpb25hbEdlb2xvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9nZW9sb2Nh
dGlvbi5nZXQoKTsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIE5hdmlnYXRvcihGcmFtZSopOwog
ICAgICAgICBGcmFtZSogbV9mcmFtZTsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8UGx1Z2luQXJy
YXk+IG1fcGx1Z2luczsKICAgICAgICAgbXV0YWJsZSBSZWZQdHI8TWltZVR5cGVBcnJheT4gbV9t
aW1lVHlwZXM7CisgICAgICAgIG11dGFibGUgUmVmUHRyPEdlb2xvY2F0aW9uPiBtX2dlb2xvY2F0
aW9uOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCShyZXZpc2lvbiAzNzYzNikKKysr
IFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw5
IEBACiAKIG1vZHVsZSB3aW5kb3cgewogCi0gICAgaW50ZXJmYWNlIE5hdmlnYXRvciB7CisgICAg
aW50ZXJmYWNlIFsKKyAgICAgICAgQ3VzdG9tTWFya0Z1bmN0aW9uCisgICAgXSBOYXZpZ2F0b3Ig
ewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFwcENvZGVOYW1lOwogICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGFwcE5hbWU7CiAgICAgICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBET01TdHJpbmcgYXBwVmVyc2lvbjsKQEAgLTM2
LDYgKzM4LDExIEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBib29sZWFuIGphdmFFbmFibGVk
KCk7CiAgICAgICAgIAogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBvbkxpbmU7
CisjaWYgRU5BQkxFX0dFT0xPQ0FUSU9OCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBHZW9s
b2NhdGlvbiBnZW9sb2NhdGlvbjsKKyNlbHNlCisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBb
RG9udEVudW1dIEdlb2xvY2F0aW9uIGdlb2xvY2F0aW9uOworI2VuZGlmCiAgICAgfTsKIAogfQpJ
bmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdl
L1Bvc2l0aW9uQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFBvc2l0aW9u
Q2FsbGJhY2tfaAorI2RlZmluZSBQb3NpdGlvbkNhbGxiYWNrX2gKKworI2luY2x1ZGUgPHd0Zi9Q
bGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKKyAgICBjbGFzcyBHZW9wb3NpdGlvbjsKKyAgICAKKyAgICBjbGFzcyBQb3Np
dGlvbkNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8UG9zaXRpb25DYWxsYmFjaz4geworICAg
IHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+UG9zaXRpb25DYWxsYmFjaygpIHsgfQorICAgICAg
ICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoR2VvcG9zaXRpb24qIHBvc2l0aW9uLCBib29sJiBy
YWlzZWRFeGNlcHRpb24pID0gMDsKKyAgICB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gUG9zaXRpb25DYWxsYmFja19oCkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9z
aXRpb25DYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0aW9uQ2Fs
bGJhY2suaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bvc2l0aW9uQ2FsbGJhY2su
aWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBb
CisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIFBvc2l0aW9uQ2FsbGJhY2sgewor
ICAgICAgICB2b2lkIGhhbmRsZUV2ZW50KGluIEdlb3Bvc2l0aW9uIHBvc2l0aW9uKTsKKyAgICB9
OworCit9CkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvci5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3Bh
Z2UvUG9zaXRpb25FcnJvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUG9zaXRpb25F
cnJvcl9oCisjZGVmaW5lIFBvc2l0aW9uRXJyb3JfaAorCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJp
bmcuaCIKKyNpbmNsdWRlIDx3dGYvUGxhdGZvcm0uaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBQb3NpdGlvbkVycm9yIDog
cHVibGljIFJlZkNvdW50ZWQ8UG9zaXRpb25FcnJvcj4geworcHVibGljOgorICAgIFBvc2l0aW9u
RXJyb3IoaW50IGNvZGUsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgCisgICAgICAgIDogbV9jb2Rl
KGNvZGUpCisgICAgICAgICwgbV9tZXNzYWdlKG1lc3NhZ2UpCisgICAgeworICAgIH0KKyAgICAK
KyAgICBpbnQgY29kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29kZTsgfQorICAgIHZvaWQgc2V0Q29k
ZShpbnQgY29kZSkgeyBtX2NvZGUgPSBjb2RlOyB9CisgICAgY29uc3QgU3RyaW5nJiBtZXNzYWdl
KCkgY29uc3QgeyByZXR1cm4gbV9tZXNzYWdlOyB9CisgICAgdm9pZCBzZXRNZXNzYWdlKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkgeyBtX21lc3NhZ2UgPSBtZXNzYWdlOyB9CisgICAgCitwcml2YXRl
OgorICAgIGludCBtX2NvZGU7CisgICAgU3RyaW5nIG1fbWVzc2FnZTsKK307CisgICAgCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3NpdGlvbkVycm9yX2gKSW5kZXg6IFdl
YkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
UG9zaXRpb25FcnJvci5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25F
cnJvci5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJm
YWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gUG9zaXRpb25FcnJvciB7
CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGNvZGU7CisgICAgICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBET01TdHJpbmcgbWVzc2FnZTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3Jl
L3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdl
L1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bv
c2l0aW9uRXJyb3JDYWxsYmFjay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUG9zaXRp
b25FcnJvckNhbGxiYWNrX2gKKyNkZWZpbmUgUG9zaXRpb25FcnJvckNhbGxiYWNrX2gKKworI2lu
Y2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFBvc2l0aW9uRXJyb3I7CisKKyAgICBjbGFz
cyBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3NpdGlvbkVycm9y
Q2FsbGJhY2s+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflBvc2l0aW9uRXJyb3JD
YWxsYmFjaygpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoUG9zaXRpb25F
cnJvciogcG9zaXRpb24pID0gMDsKKyAgICB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gUG9zaXRpb25FcnJvckNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Q
b3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bv
c2l0aW9uRXJyb3JDYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGNvcmUg
eworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0g
UG9zaXRpb25FcnJvckNhbGxiYWNrIHsKKyAgICAgICAgdm9pZCBoYW5kbGVFdmVudChpbiBQb3Np
dGlvbkVycm9yIGVycm9yKTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRp
b25PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5o
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgUG9zaXRpb25PcHRpb25zX2gKKyNkZWZpbmUgUG9zaXRpb25P
cHRpb25zX2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKKyAgICBjbGFzcyBQb3NpdGlv
bk9wdGlvbnMgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3NpdGlvbk9wdGlvbnM+IHsKKyAgICBwdWJs
aWM6CisgICAgICAgIFBvc2l0aW9uT3B0aW9ucyhib29sIGhpZ2hBY2N1cmFjeSA9IGZhbHNlLCBs
b25nIHRpbWVvdXQgPSAtMSkKKyAgICAgICAgICAgIDogbV9oaWdoQWNjdXJhY3koaGlnaEFjY3Vy
YWN5KQorICAgICAgICAgICAgLCBtX3RpbWVvdXQodGltZW91dCkKKyAgICAgICAgeworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSgpIGNvbnN0IHsg
cmV0dXJuIG1faGlnaEFjY3VyYWN5OyB9CisgICAgICAgIHZvaWQgc2V0RW5hYmxlSGlnaEFjY3Vy
YWN5KGJvb2wgZW5hYmxlKSB7IG1faGlnaEFjY3VyYWN5ID0gZW5hYmxlOyB9CisgICAgICAgIGxv
bmcgdGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZW91dDsgfQorICAgICAgICB2b2lkIHNl
dFRpbWVvdXQobG9uZyB0KSB7IG1fdGltZW91dCA9IHQ7IH0KKyAgICAgICAgCisgICAgcHJpdmF0
ZToKKyAgICAgICAgYm9vbCBtX2hpZ2hBY2N1cmFjeTsKKyAgICAgICAgbG9uZyBtX3RpbWVvdXQ7
CisgICAgfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBvc2l0
aW9uT3B0aW9uc19oCkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmlkbAkocmV2aXNpb24gMCkK
KysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaWRsCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0
cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisK
K21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3Ry
dWN0b3IKKyAgICBdIFBvc2l0aW9uT3B0aW9ucyB7CisgICAgICAgIGF0dHJpYnV0ZSBib29sZWFu
IGVuYWJsZUhpZ2hBY2N1cmFjeTsKKyAgICAgICAgYXR0cmlidXRlIGxvbmcgdGltZW91dDsKKyAg
ICB9OworCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFw
cGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgIkdlb2xv
Y2F0aW9uU2VydmljZS5oIgorI2luY2x1ZGUgIkdlb3Bvc2l0aW9uLmgiCisjaW5jbHVkZSAiUG9z
aXRpb25FcnJvci5oIgorI2luY2x1ZGUgIlBvc2l0aW9uT3B0aW9ucy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK0dlb2xvY2F0aW9uU2VydmljZTo6R2VvbG9jYXRpb25TZXJ2aWNlKEdlb2xv
Y2F0aW9uU2VydmljZUNsaWVudCogY2xpZW50KQorICAgIDogbV9nZW9sb2NhdGlvblNlcnZpY2VD
bGllbnQoY2xpZW50KQoreworfQorCit2b2lkIEdlb2xvY2F0aW9uU2VydmljZTo6cG9zaXRpb25D
aGFuZ2VkKCkKK3sKKyAgICBpZiAobV9nZW9sb2NhdGlvblNlcnZpY2VDbGllbnQpCisgICAgICAg
IG1fZ2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50LT5nZW9sb2NhdGlvblNlcnZpY2VQb3NpdGlvbkNo
YW5nZWQodGhpcyk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlOjplcnJvck9jY3VycmVk
KCkKK3sKKyAgICBpZiAobV9nZW9sb2NhdGlvblNlcnZpY2VDbGllbnQpCisgICAgICAgIG1fZ2Vv
bG9jYXRpb25TZXJ2aWNlQ2xpZW50LT5nZW9sb2NhdGlvblNlcnZpY2VFcnJvck9jY3VycmVkKHRo
aXMpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BsYXRmb3Jt
L0dlb2xvY2F0aW9uU2VydmljZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vR2Vv
bG9jYXRpb25TZXJ2aWNlLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL0dlb2xv
Y2F0aW9uU2VydmljZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgR2VvbG9jYXRpb25T
ZXJ2aWNlX2gKKyNkZWZpbmUgR2VvbG9jYXRpb25TZXJ2aWNlX2gKKworI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEdlb2xvY2F0aW9u
U2VydmljZTsKK2NsYXNzIEdlb3Bvc2l0aW9uOworY2xhc3MgUG9zaXRpb25FcnJvcjsKK2NsYXNz
IFBvc2l0aW9uT3B0aW9uczsKKworY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50Cit7Citw
dWJsaWM6CisgICAgdmlydHVhbCB+R2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KCkgeyB9CisgICAg
dmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlv
blNlcnZpY2UqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JP
Y2N1cnJlZChHZW9sb2NhdGlvblNlcnZpY2UqKSB7IH0KK307CisKK2NsYXNzIEdlb2xvY2F0aW9u
U2VydmljZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJsaWM6CisgICAgc3RhdGljIEdlb2xv
Y2F0aW9uU2VydmljZSogY3JlYXRlKEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCopOworICAgIHZp
cnR1YWwgfkdlb2xvY2F0aW9uU2VydmljZSgpIHt9CisgICAgCisgICAgc3RhdGljIGJvb2wgaXNB
dmFpbGFibGUoKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRVcGRhdGluZyhQb3NpdGlv
bk9wdGlvbnMqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0b3BVcGRhdGluZygpID0gMDsKKyAg
ICAKKyAgICB2aXJ0dWFsIEdlb3Bvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBjb25zdCA9IDA7Cisg
ICAgdmlydHVhbCBQb3NpdGlvbkVycm9yKiBsYXN0RXJyb3IoKSBjb25zdCA9IDA7CisKKyAgICB2
b2lkIHBvc2l0aW9uQ2hhbmdlZCgpOworICAgIHZvaWQgZXJyb3JPY2N1cnJlZCgpOworCitwcm90
ZWN0ZWQ6CisgICAgR2VvbG9jYXRpb25TZXJ2aWNlKEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCop
OworCitwcml2YXRlOgorICAgIEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCogbV9nZW9sb2NhdGlv
blNlcnZpY2VDbGllbnQ7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gR2VvbG9jYXRpb25TZXJ2aWNlX2gKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vR2VvbG9j
YXRpb25TZXJ2aWNlRmFrZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9HZW9s
b2NhdGlvblNlcnZpY2VGYWtlLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
R2VvbG9jYXRpb25TZXJ2aWNlRmFrZS5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjUgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZUZha2UuaCIKKyNpbmNsdWRl
ICJXZWJDb3JlR2VvbG9jYXRpb24uaCIKKworI2lmIEVOQUJMRShHRU9MT0NBVElPTikKKyNlcnJv
ciBUaGlzIHBsYXRmb3JtIHN1cHBvcnRzIEdFT0xPQ0FUSU9OLCBzbyBkbyBub3QgYnVpbGQgdGhp
cyBmaWxlLgorI2Vsc2UKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb25TZXJ2aWNl
KiBHZW9sb2NhdGlvblNlcnZpY2U6OmNyZWF0ZShHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQqIGNs
aWVudCkKK3sKKyAgICByZXR1cm4gbmV3IEdlb2xvY2F0aW9uU2VydmljZUZha2UoY2xpZW50KTsK
K30KKworYm9vbCBHZW9sb2NhdGlvblNlcnZpY2U6OmlzQXZhaWxhYmxlKCkKK3sKKyAgICByZXR1
cm4gV2ViQ29yZVNob3VsZFVzZUZha2VHZW9sb2NhdGlvbigpOworfQorCitHZW9sb2NhdGlvblNl
cnZpY2VGYWtlOjpHZW9sb2NhdGlvblNlcnZpY2VGYWtlKEdlb2xvY2F0aW9uU2VydmljZUNsaWVu
dCogY2xpZW50KQorICAgIDogR2VvbG9jYXRpb25TZXJ2aWNlKGNsaWVudCkKKyAgICAsIG1fdGlt
ZXIodGhpcywgJkdlb2xvY2F0aW9uU2VydmljZUZha2U6OnRpbWVyRmlyZWQpCit7Cit9CisKK2Jv
b2wgR2VvbG9jYXRpb25TZXJ2aWNlRmFrZTo6c3RhcnRVcGRhdGluZyhQb3NpdGlvbk9wdGlvbnMq
KQoreworICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOworICAgIAorICAgIHJldHVybiB0cnVl
OworfQorCit2b2lkIEdlb2xvY2F0aW9uU2VydmljZUZha2U6OnRpbWVyRmlyZWQoVGltZXI8R2Vv
bG9jYXRpb25TZXJ2aWNlRmFrZT4qKQoreworICAgIG1fbGFzdFBvc2l0aW9uID0gbmV3IEdlb3Bv
c2l0aW9uKDM3LjMzMjY0LC0xMjIuMDMwOTksMC4wLDEuMCwwLjAsMC4wLDAuMCwxMDAwLjApOwor
ICAgIEdlb2xvY2F0aW9uU2VydmljZTo6cG9zaXRpb25DaGFuZ2VkKCk7Cit9CisKK30KKyNlbmRp
ZgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2VGYWtlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2VGYWtlLmgJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZUZha2UuaAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBs
ZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLiAKKyAqLworCisjaWZuZGVmIEdlb2xvY2F0aW9uU2VydmljZUZha2VfaAorI2RlZmlu
ZSBHZW9sb2NhdGlvblNlcnZpY2VGYWtlX2gKKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2Vydmlj
ZS5oIgorI2luY2x1ZGUgIkdlb3Bvc2l0aW9uLmgiCisjaW5jbHVkZSAiUG9zaXRpb25FcnJvci5o
IgorI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK2NsYXNzIEdlb2xvY2F0aW9uU2VydmljZUZha2UgOiBwdWJsaWMgR2Vv
bG9jYXRpb25TZXJ2aWNlIHsKK3B1YmxpYzoKKyAgICBHZW9sb2NhdGlvblNlcnZpY2VGYWtlKEdl
b2xvY2F0aW9uU2VydmljZUNsaWVudCopOworICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9uU2Vydmlj
ZUZha2UoKSB7IH0KKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgc3RhcnRVcGRhdGluZyhQb3NpdGlv
bk9wdGlvbnMqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgeyB9CisgICAgCisg
ICAgdmlydHVhbCBHZW9wb3NpdGlvbiogbGFzdFBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9s
YXN0UG9zaXRpb24uZ2V0KCk7IH0KKyAgICB2aXJ0dWFsIFBvc2l0aW9uRXJyb3IqIGxhc3RFcnJv
cigpIGNvbnN0IHsgcmV0dXJuIG1fbGFzdEVycm9yLmdldCgpOyB9CisgICAgCitwcml2YXRlOgor
ICAgIHZvaWQgdGltZXJGaXJlZChUaW1lcjxHZW9sb2NhdGlvblNlcnZpY2VGYWtlPiopOworCisg
ICAgUmVmUHRyPEdlb3Bvc2l0aW9uPiBtX2xhc3RQb3NpdGlvbjsKKyAgICBSZWZQdHI8UG9zaXRp
b25FcnJvcj4gbV9sYXN0RXJyb3I7CisgICAgVGltZXI8R2VvbG9jYXRpb25TZXJ2aWNlRmFrZT4g
bV90aW1lcjsKK307CisKK30KKworI2VuZGlmCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL1dlYkNv
cmVHZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9XZWJDb3Jl
R2VvbG9jYXRpb24uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9XZWJDb3Jl
R2VvbG9jYXRpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJXZWJDb3JlR2Vv
bG9jYXRpb24uaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorc3RhdGljIGJvb2wgZ1No
b3VsZFVzZUZha2VHZW9sb2NhdGlvbiA9IGZhbHNlOworCit2b2lkIFdlYkNvcmVTZXRTaG91bGRV
c2VGYWtlR2VvbG9jYXRpb24oYm9vbCBmYWtlKQoreworICAgIGdTaG91bGRVc2VGYWtlR2VvbG9j
YXRpb24gPSBmYWtlOworfQorCitib29sIFdlYkNvcmVTaG91bGRVc2VGYWtlR2VvbG9jYXRpb24o
KQoreworICAgIHJldHVybiBnU2hvdWxkVXNlRmFrZUdlb2xvY2F0aW9uOworfQorCit9CkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL1dlYkNvcmVHZW9sb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvcGxhdGZvcm0vV2ViQ29yZUdlb2xvY2F0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL3BsYXRmb3JtL1dlYkNvcmVHZW9sb2NhdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBS
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
CisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNp
Zm5kZWYgV2ViQ29yZUdlb2xvY2F0aW9uX2gKKyNkZWZpbmUgV2ViQ29yZUdlb2xvY2F0aW9uX2gK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFdlYkNvcmVTZXRTaG91bGRVc2VGYWtlR2Vv
bG9jYXRpb24oYm9vbCk7Citib29sIFdlYkNvcmVTaG91bGRVc2VGYWtlR2VvbG9jYXRpb24oKTsK
KworfQorCisjZW5kaWYKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNzYzNikKKysrIFdlYktpdC9tYWMvQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMDgtMTAtMTYgIEdyZWcg
Qm9sc2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxNDc1CisgICAgICAgIAorICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBH
ZW9sb2NhdGlvbiBBUEkKKyAgICAgICAgCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9h
cGkvc3BlYy1zb3VyY2UuaHRtbAorCisgICAgICAgIEFkZCBjb2RlIHRvIHB1dCBXZWJDb3JlIGlu
dG8gYSBtb2RlIHRvIGZha2Ugb3V0IEdlb2xvY2F0aW9uIG9uIHBsYXRmb3JtcyB3aXRob3V0IHN1
cHBvcnQKKworICAgICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmll
dyBfc2V0VXNlRmFrZUdlb2xvY2F0aW9uOl0pOgorICAgICAgICAoLVtXZWJWaWV3IF91c2VGYWtl
R2VvbG9jYXRpb25dKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXdQcml2YXRlLmg6CisKIDIw
MDgtMTAtMTUgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBKb24gSG9uZXljdXR0LgpJbmRleDogV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHJldmlzaW9uIDM3
NjM2KQorKysgV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAg
LTExOCw2ICsxMTgsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9TZWxlY3Rpb25Db250cm9sbGVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RleHRSZXNv
dXJjZURlY29kZXIuaD4KKyNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZUdlb2xvY2F0aW9uLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVPYmpDRXh0cmFzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1dl
YkNvcmVUZXh0UmVuZGVyZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVZpZXcuaD4KQEAg
LTE3NzIsNiArMTc3MywxNiBAQCBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2Fj
aGUqCiAKICNlbmRpZiAvKiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQpICovCiAKKy0gKHZvaWQp
X3NldFVzZUZha2VHZW9sb2NhdGlvbjooQk9PTClmCit7CisgICAgV2ViQ29yZVNldFNob3VsZFVz
ZUZha2VHZW9sb2NhdGlvbihmKTsKK30KKworLSAoQk9PTClfdXNlRmFrZUdlb2xvY2F0aW9uCit7
CisgICAgcmV0dXJuIFdlYkNvcmVTaG91bGRVc2VGYWtlR2VvbG9jYXRpb24oKTsKK30KKwogKyAo
dm9pZClfc2V0U2hvdWxkVXNlRm9udFNtb290aGluZzooQk9PTClmCiB7CiAgICAgV2ViQ29yZVNl
dFNob3VsZFVzZUZvbnRTbW9vdGhpbmcoZik7CkluZGV4OiBXZWJLaXQvbWFjL1dlYlZpZXcvV2Vi
Vmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1By
aXZhdGUuaAkocmV2aXNpb24gMzc2MzYpCisrKyBXZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlld1By
aXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgwLDYgKzI4MCw5IEBAIENvdWxkIGJlIHdvcnRo
IGFkZGluZyB0byB0aGUgQVBJLgogLSAoQk9PTClfZGFzaGJvYXJkQmVoYXZpb3I6KFdlYkRhc2hi
b2FyZEJlaGF2aW9yKWJlaGF2aW9yOwogI2VuZGlmCiAKKy0gKHZvaWQpX3NldFVzZUZha2VHZW9s
b2NhdGlvbjooQk9PTClmOworLSAoQk9PTClfdXNlRmFrZUdlb2xvY2F0aW9uOworCiArICh2b2lk
KV9zZXRTaG91bGRVc2VGb250U21vb3RoaW5nOihCT09MKWY7CiArIChCT09MKV9zaG91bGRVc2VG
b250U21vb3RoaW5nOwogCkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAzNzYzNikKKysrIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDA4LTEwLTE2ICBH
cmVnIEJvbHNpbmdhICA8Ym9sc2luZ2FAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMTQ3NQorICAgICAgICAKKyAgICAgICAgUHJvdmlkZSBzdXBwb3J0IGZvciB0
aGUgR2VvbG9jYXRpb24gQVBJCisgICAgICAgIAorICAgICAgICBodHRwOi8vZGV2LnczLm9yZy9n
ZW8vYXBpL3NwZWMtc291cmNlLmh0bWwKKworICAgICAgICBBZGQgY29kZSB0byBwdXQgV2ViQ29y
ZSBpbnRvIGEgbW9kZSB0byBmYWtlIG91dCBHZW9sb2NhdGlvbiBvbiBwbGF0Zm9ybXMgd2l0aG91
dCBzdXBwb3J0CisgICAgICAgIAorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKHVzZUZha2VHZW9sb2NhdGlvbkNhbGxiYWNrKToKKyAg
ICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250cm9sbGVyTWFjLm1tOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldFVzZUZha2VHZW9sb2NhdGlvbik6CisKIDIwMDgtMTAtMTYgIEph
biBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CiAKICAgICAgICAgR3RrIGJ1
aWxkIGZpeC4gTm90IHJldmlld2VkLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMzc2MzYpCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTYzNCw2ICs2MzQsMTQgQEAgc3RhdGljIEpTVmFsdWVSZWYgZWxlbWVudERv
ZXNBdXRvQ29tcGxldAogICAgIHJldHVybiBKU1ZhbHVlTWFrZUJvb2xlYW4oY29udGV4dCwgYXV0
b0NvbXBsZXRlcyk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIHVzZUZha2VHZW9sb2NhdGlvbkNh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29u
dHJvbGxlciogY29udHJvbGxlciA9IHJlaW50ZXJwcmV0X2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xs
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNl
dFVzZUZha2VHZW9sb2NhdGlvbihKU1ZhbHVlVG9Cb29sZWFuKGNvbnRleHQsIGFyZ3VtZW50c1sw
XSkpOworCisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiAv
LyBTdGF0aWMgVmFsdWVzCiAKIHN0YXRpYyBKU1ZhbHVlUmVmIGdldEdsb2JhbEZsYWdDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgSlNTdHJpbmdS
ZWYgcHJvcGVydHlOYW1lLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCkBAIC03NDksNiArNzU3LDcg
QEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJ3
YWl0VW50aWxEb25lIiwgd2FpdFVudGlsRG9uZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
IndpbmRvd0NvdW50Iiwgd2luZG93Q291bnRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJl
bGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCBlbGVtZW50RG9lc0F1dG9D
b21wbGV0ZUZvckVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJ1c2VG
YWtlR2VvbG9jYXRpb24iLCB1c2VGYWtlR2VvbG9jYXRpb25DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
ICAgICB7IDAsIDAsIDAgfQogICAgIH07CiAKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gMzc2MzYpCisrKyBX
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5n
IGNvcHkpCkBAIC02NSw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRhYktleUN5Y2xl
c1Rocm91Z2hFbGVtZW50cyhib29sIGN5Y2xlcyk7CiAgICAgdm9pZCBzZXRTbWFydEluc2VydERl
bGV0ZUVuYWJsZWQoYm9vbCBmbGFnKTsKICAgICB2b2lkIHNldFVzZURhc2hib2FyZENvbXBhdGli
aWxpdHlNb2RlKGJvb2wgZmxhZyk7CisgICAgdm9pZCBzZXRVc2VGYWtlR2VvbG9jYXRpb24oYm9v
bCBmbGFnKTsKICAgICB2b2lkIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZChib29sIGZsYWcpOwog
ICAgIHZvaWQgc2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihKU1N0cmluZ1JlZiBwYXRoKTsKICAg
ICB2b2lkIHNldFBlcnNpc3RlbnRVc2VyU3R5bGVTaGVldExvY2F0aW9uKEpTU3RyaW5nUmVmIHBh
dGgpOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0xheW91dFRlc3RDb250
cm9sbGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL21h
Yy9MYXlvdXRUZXN0Q29udHJvbGxlck1hYy5tbQkocmV2aXNpb24gMzc2MzYpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9tYWMvTGF5b3V0VGVzdENvbnRyb2xsZXJNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTIxOCw2ICsyMTgsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0VXNlRGFzaGJvYQogICAgIFtbbWFpbkZyYW1lIHdlYlZpZXddIF9zZXREYXNoYm9hcmRCZWhh
dmlvcjpXZWJEYXNoYm9hcmRCZWhhdmlvclVzZUJhY2t3YXJkQ29tcGF0aWJpbGl0eU1vZGUgdG86
ZmxhZ107CiB9CiAKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldFVzZUZha2VHZW9sb2Nh
dGlvbihib29sIGZsYWcpCit7CisgICAgW1ttYWluRnJhbWUgd2ViVmlld10gX3NldFVzZUZha2VH
ZW9sb2NhdGlvbjpmbGFnXTsKK30KKwogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0VXNl
clN0eWxlU2hlZXRFbmFibGVkKGJvb2wgZmxhZykKIHsKICAgICBbW1dlYlByZWZlcmVuY2VzIHN0
YW5kYXJkUHJlZmVyZW5jZXNdIHNldFVzZXJTdHlsZVNoZWV0RW5hYmxlZDpmbGFnXTsKSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDM3NjM2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMDgtMTAtMTYgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5n
YUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc1CisgICAg
ICAgIAorICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9sb2NhdGlvbiBBUEkKKyAg
ICAgICAgCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkvc3BlYy1zb3VyY2UuaHRt
bAorCisgICAgICAgIFRlc3RzIHRvIHZlcmlmeSBHZW9sb2NhdGlvbiBpc24ndCBpbXBsZW1lbnRl
ZCAoc28gdGhhdCBpdCBkaWRuJ3QgbGVhayBpbnRvIAorICAgICAgICBXZWJDb3JlIGZvciBwbGF0
Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBpdCkgYW5kIHRvIHRlc3QgdGhlIGZha2UgaW1wbGVt
ZW50YXRpb24uCisgICAgICAgIAorICAgICAgICAqIENoYW5nZUxvZzoKKyAgICAgICAgKiBnZW9s
b2NhdGlvbjogQWRkZWQuCisgICAgICAgICogZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tZmFrZS1j
dXJyZW50cG9zaXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBnZW9sb2NhdGlv
bi9nZW9sb2NhdGlvbi1mYWtlLWN1cnJlbnRwb3NpdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBnZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLWltcGxlbWVudGF0aW9uLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tZmFrZS1pbXBsZW1l
bnRhdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBnZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1m
YWtlLXdhdGNocG9zaXRpb24tZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBnZW9sb2Nh
dGlvbi9nZW9sb2NhdGlvbi1mYWtlLXdhdGNocG9zaXRpb24uaHRtbDogQWRkZWQuCisgICAgICAg
ICogZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tbm90LWltcGxlbWVudGVkLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tbm90LWltcGxlbWVudGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIGdlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLXRlc3QuanM6
IENvcGllZCBmcm9tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanMuCisgICAgICAgIChy
ZXNldCk6CisgICAgICAgIChoYW5nZWQpOgorICAgICAgICAod2F0Y2hQb3NpdGlvbkFuZEVuZCk6
CisgICAgICAgICh3YXRjaFBvc2l0aW9uLl9wb3NpdGlvbkNhbGxiYWNrKToKKyAgICAgICAgKHdh
dGNoUG9zaXRpb24pOgorICAgICAgICAod2F0Y2hQb3NpdGlvblRlc3RBbmRFbmQpOgorICAgICAg
ICAod2F0Y2hQb3NpdGlvbkFuZEZhaWwpOgorICAgICAgICAod2F0Y2hQb3NpdGlvbkFuZFRlc3Qu
X3Bvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAod2F0Y2hQb3NpdGlvbkFuZFRlc3QpOgorICAg
ICAgICAoZ2V0Q3VycmVudFBvc2l0aW9uQW5kRW5kKToKKyAgICAgICAgKGdldEN1cnJlbnRQb3Np
dGlvbi5fcG9zaXRpb25DYWxsYmFjayk6CisgICAgICAgIChnZXRDdXJyZW50UG9zaXRpb24pOgor
ICAgICAgICAoZ2V0Q3VycmVudFBvc2l0aW9uVGVzdEFuZEVuZCk6CisgICAgICAgIChnZXRDdXJy
ZW50UG9zaXRpb25BbmRGYWlsKToKKyAgICAgICAgKGdldEN1cnJlbnRQb3NpdGlvbkFuZFRlc3Qu
X3Bvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAoZ2V0Q3VycmVudFBvc2l0aW9uQW5kVGVzdCk6
CisgICAgICAgIChlbmRUZXN0KToKKyAgICAgICAgKHJlbGF0aXZlVVJMKToKKwogMjAwOC0xMC0x
NiAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAcGxleW8uY29tPgogCiAgICAgICAgIFJ1
YmJlci1zdGFtcGVkIGJ5IEFsZXhleSBQcm9za3VyeWFrb3YuCkluZGV4OiBMYXlvdXRUZXN0cy9n
ZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLWN1cnJlbnRwb3NpdGlvbi1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tZmFrZS1j
dXJyZW50cG9zaXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
Z2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tZmFrZS1jdXJyZW50cG9zaXRpb24tZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDMgQEAKK1BPU0lUSU9OKHBvc2l0aW9uKDM3LjMzMjYs
IC0xMjIuMDMxLCAwLCAxLCAwLCAwLCAwLCAxMDAwKSkgVEVTVChwYXNzZWRQb3NpdGlvbiAhPSBu
dWxsICYmIHBhc3NlZFBvc2l0aW9uID09IG5hdmlnYXRvci5nZW9sb2NhdGlvbi5sYXN0UG9zaXRp
b24pIE9LCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9s
b2NhdGlvbi1mYWtlLWN1cnJlbnRwb3NpdGlvbi5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLWZha2UtY3VycmVudHBvc2l0aW9uLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLWN1
cnJlbnRwb3NpdGlvbi5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKzxib2R5Pjwv
Ym9keT4KKzxzY3JpcHQgc3JjPWdlb2xvY2F0aW9uLXRlc3QuanM+PC9zY3JpcHQ+Cis8c2NyaXB0
PgorbGF5b3V0VGVzdENvbnRyb2xsZXIudXNlRmFrZUdlb2xvY2F0aW9uKHRydWUpOworZ2V0Q3Vy
cmVudFBvc2l0aW9uVGVzdEFuZEVuZCgicGFzc2VkUG9zaXRpb24gIT0gbnVsbCAmJiBwYXNzZWRQ
b3NpdGlvbiA9PSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ubGFzdFBvc2l0aW9uIik7Cis8L3Njcmlw
dD4KSW5kZXg6IExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLWZha2UtaW1wbGVt
ZW50YXRpb24tZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2dlb2xvY2F0
aW9uL2dlb2xvY2F0aW9uLWZha2UtaW1wbGVtZW50YXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tZmFrZS1pbXBsZW1l
bnRhdGlvbi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVEVTVChu
YXZpZ2F0b3IuZ2VvbG9jYXRpb24gIT0gdW5kZWZpbmVkKSBPSworVEVTVChuYXZpZ2F0b3IuZ2Vv
bG9jYXRpb24gIT0gbnVsbCkgT0sKK1RFU1QoaGFzR2VvbG9jYXRpb25Qcm9wZXJ0eSA9PSBmYWxz
ZSkgT0sKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xv
Y2F0aW9uLWZha2UtaW1wbGVtZW50YXRpb24uaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLWltcGxlbWVudGF0aW9uLmh0bWwJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLWltcGxl
bWVudGF0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTUgQEAKKzxib2R5PjwvYm9k
eT4KKzxzY3JpcHQgc3JjPWdlb2xvY2F0aW9uLXRlc3QuanM+PC9zY3JpcHQ+Cis8c2NyaXB0Pgor
bGF5b3V0VGVzdENvbnRyb2xsZXIudXNlRmFrZUdlb2xvY2F0aW9uKHRydWUpOwordGVzdCgibmF2
aWdhdG9yLmdlb2xvY2F0aW9uICE9IHVuZGVmaW5lZCIpOwordGVzdCgibmF2aWdhdG9yLmdlb2xv
Y2F0aW9uICE9IG51bGwiKTsKK3ZhciBoYXNHZW9sb2NhdGlvblByb3BlcnR5ID0gZmFsc2U7Citm
b3IgKHZhciBwcm9wZXJ0eSBpbiBuYXZpZ2F0b3IpIHsKKyAgICBoYXNHZW9sb2NhdGlvblByb3Bl
cnR5ID0gKHByb3BlcnR5ID09ICJnZW9sb2NhdGlvbiIpOworICAgIGlmIChoYXNHZW9sb2NhdGlv
blByb3BlcnR5KQorICAgICAgICBicmVhazsKK30KK3Rlc3QoImhhc0dlb2xvY2F0aW9uUHJvcGVy
dHkgPT0gZmFsc2UiKTsKK2VuZFRlc3QoKTsKKzwvc2NyaXB0PgpJbmRleDogTGF5b3V0VGVzdHMv
Z2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tZmFrZS13YXRjaHBvc2l0aW9uLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1mYWtlLXdh
dGNocG9zaXRpb24tZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZ2Vv
bG9jYXRpb24vZ2VvbG9jYXRpb24tZmFrZS13YXRjaHBvc2l0aW9uLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitURVNUKHdhdGNoSUQgPiAwKSBPSworUE9TSVRJT04o
cG9zaXRpb24oMzcuMzMyNiwgLTEyMi4wMzEsIDAsIDEsIDAsIDAsIDAsIDEwMDApKSBURVNUKHBh
c3NlZFBvc2l0aW9uICE9IG51bGwgJiYgcGFzc2VkUG9zaXRpb24gPT0gbmF2aWdhdG9yLmdlb2xv
Y2F0aW9uLmxhc3RQb3NpdGlvbikgT0sKK0VORCBPRiBURVNUCisKSW5kZXg6IExheW91dFRlc3Rz
L2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLWZha2Utd2F0Y2hwb3NpdGlvbi5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLWZha2Utd2F0Y2hwb3Np
dGlvbi5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9j
YXRpb24tZmFrZS13YXRjaHBvc2l0aW9uLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNiBA
QAorPGJvZHk+PC9ib2R5PgorPHNjcmlwdCBzcmM9Z2VvbG9jYXRpb24tdGVzdC5qcz48L3Njcmlw
dD4KKzxzY3JpcHQ+CitsYXlvdXRUZXN0Q29udHJvbGxlci51c2VGYWtlR2VvbG9jYXRpb24odHJ1
ZSk7Cit3YXRjaFBvc2l0aW9uVGVzdEFuZEVuZCgicGFzc2VkUG9zaXRpb24gIT0gbnVsbCAmJiBw
YXNzZWRQb3NpdGlvbiA9PSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ubGFzdFBvc2l0aW9uIik7Cis8
L3NjcmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLW5vdC1p
bXBsZW1lbnRlZC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZ2VvbG9j
YXRpb24vZ2VvbG9jYXRpb24tbm90LWltcGxlbWVudGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLW5vdC1pbXBsZW1lbnRl
ZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNSBAQAorVEVTVChuYXZpZ2F0
b3IuZ2VvbG9jYXRpb24gPT09IHVuZGVmaW5lZCkgT0sKK1RFU1QobmF2aWdhdG9yLmdlb2xvY2F0
aW9uID09IG51bGwpIE9LCitURVNUKGhhc0dlb2xvY2F0aW9uUHJvcGVydHkgPT0gZmFsc2UpIE9L
CitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlv
bi1ub3QtaW1wbGVtZW50ZWQuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9nZW9sb2Nh
dGlvbi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQuaHRtbAkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLW5vdC1pbXBsZW1lbnRlZC5odG1sCShy
ZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE0IEBACis8Ym9keT48L2JvZHk+Cis8c2NyaXB0IHNyYz1n
ZW9sb2NhdGlvbi10ZXN0LmpzPjwvc2NyaXB0PgorPHNjcmlwdD4KK3Rlc3QoIm5hdmlnYXRvci5n
ZW9sb2NhdGlvbiA9PT0gdW5kZWZpbmVkIik7Cit0ZXN0KCJuYXZpZ2F0b3IuZ2VvbG9jYXRpb24g
PT0gbnVsbCIpOwordmFyIGhhc0dlb2xvY2F0aW9uUHJvcGVydHkgPSBmYWxzZTsKK2ZvciAodmFy
IHByb3BlcnR5IGluIG5hdmlnYXRvcikgeworICAgIGhhc0dlb2xvY2F0aW9uUHJvcGVydHkgPSAo
cHJvcGVydHkgPT0gImdlb2xvY2F0aW9uIik7CisgICAgaWYgKGhhc0dlb2xvY2F0aW9uUHJvcGVy
dHkpCisgICAgICAgIGJyZWFrOworfQordGVzdCgiaGFzR2VvbG9jYXRpb25Qcm9wZXJ0eSA9PSBm
YWxzZSIpOworZW5kVGVzdCgpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9nZW9sb2Nh
dGlvbi9nZW9sb2NhdGlvbi10ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2dlb2xv
Y2F0aW9uL2dlb2xvY2F0aW9uLXRlc3QuanMJKHJldmlzaW9uIDM3NjA2KQkoZnJvbSBMYXlvdXRU
ZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzOjM3NjA2KQorKysgTGF5b3V0VGVzdHMvZ2VvbG9jYXRp
b24vZ2VvbG9jYXRpb24tdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDE1OCBAQAor
aWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25l
KCk7Cit9Cit2YXIgdmlkZW87Cit2YXIgbWVkaWE7Cit2YXIgY29uc29sZSA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25zb2xlKTsK
K3RyeSB7CisgICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgndmlkZW8n
KVswXTsKKyAgICBpZiAodmlkZW8pCisgICAgICAgIG1lZGlhID0gdmlkZW87Cit9IGNhdGNoIChl
eCkgeyB9CisKK2Z1bmN0aW9uIGhhbmdlZCgpCit7CisgICAgY29uc29sZVdyaXRlKCJGQUlMOiB0
aW1lZCBvdXQiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7ICAKK30KK3NldFRpbWVvdXQoaGFu
Z2VkLCAxMDAwMCk7CisKK2Z1bmN0aW9uIHRlc3RBbmRFbmQodGVzdEZ1bmNTdHJpbmcpCit7Cisg
ICAgdGVzdCh0ZXN0RnVuY1N0cmluZywgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHRlc3QodGVzdEZ1
bmNTdHJpbmcsIGVuZGl0KQoreworICAgIGlmIChldmFsKHRlc3RGdW5jU3RyaW5nKSkKKyAgICAg
ICAgY29uc29sZVdyaXRlKCJURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIDxzcGFuIHN0eWxl
PSdjb2xvcjpncmVlbic+T0s8L3NwYW4+Iik7CisgICAgZWxzZQorICAgICAgICBjb25zb2xlV3Jp
dGUoIlRFU1QoIiArIHRlc3RGdW5jU3RyaW5nICsgIikgPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+
RkFJTDwvc3Bhbj4iKTsgICAgCisKKyAgICBpZiAoZW5kaXQpCisgICAgICAgIGVuZFRlc3QoKTsg
IAorfQorCitmdW5jdGlvbiB0ZXN0RXhwZWN0ZWQodGVzdEZ1bmNTdHJpbmcsIGV4cGVjdGVkKQor
eworICAgIHRyeSB7CisgICAgICAgIHZhciBvYnNlcnZlZCA9IGV2YWwodGVzdEZ1bmNTdHJpbmcp
OworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGNvbnNvbGVXcml0ZShleCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisgICAgCisgICAgdmFyIG1zZyA9ICJleHBlY3RlZCAiICsgdGVzdEZ1
bmNTdHJpbmcgKyAiPT0nIiArIGV4cGVjdGVkICsgIicsIG9ic2VydmVkICciICsgb2JzZXJ2ZWQg
KyAiJyI7CisKKyAgICBpZiAob2JzZXJ2ZWQgPT0gZXhwZWN0ZWQpCisgICAgICAgIGNvbnNvbGVX
cml0ZShtc2cgKyAiIC0gPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bhbj4iKTsKKyAg
ICBlbHNlCisgICAgICAgIGNvbnNvbGVXcml0ZShtc2cgKyAiIC0gPHNwYW4gc3R5bGU9J2NvbG9y
OnJlZCc+RkFJTDwvc3Bhbj4iKTsKK30KKworZnVuY3Rpb24gcnVuKHRlc3RGdW5jU3RyaW5nKQor
eworICAgIGNvbnNvbGVXcml0ZSgiUlVOKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIik7CisgICAg
dHJ5IHsKKyAgICAgICAgZXZhbCh0ZXN0RnVuY1N0cmluZyk7CisgICAgfSBjYXRjaCAoZXgpIHsK
KyAgICAgICAgY29uc29sZVdyaXRlKGV4KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9uIHdhaXRGb3JF
dmVudEFuZEVuZChldmVudE5hbWUsIGZ1bmNTdHJpbmcpCit7CisgICAgd2FpdEZvckV2ZW50KGV2
ZW50TmFtZSwgZnVuY1N0cmluZywgdHJ1ZSkKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50KGV2
ZW50TmFtZSwgZnVuYywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZl
bnQpCisgICAgeworICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudE5hbWUgKyAi
KSIpOworICAgICAgICAKKyAgICAgICAgaWYgKGZ1bmMpCisgICAgICAgICAgICBmdW5jKCk7Cisg
ICAgICAgIAorICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0KCk7ICAgIAor
ICAgIH0KKworICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxs
YmFjayk7ICAgIAorfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRUZXN0QW5kRW5kKGV2ZW50TmFt
ZSwgdGVzdEZ1bmNTdHJpbmcpCit7CisgICAgd2FpdEZvckV2ZW50QW5kVGVzdChldmVudE5hbWUs
IHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsKK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kRmFp
bChldmVudE5hbWUpCit7CisgICAgd2FpdEZvckV2ZW50QW5kVGVzdChldmVudE5hbWUsICJmYWxz
ZSIsIHRydWUpOworfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRUZXN0KGV2ZW50TmFtZSwg
dGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQoreworICAgIGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2
ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2YWwodGVzdEZ1bmNTdHJpbmcpKQorICAgICAgICAg
ICAgY29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZlbnROYW1lICsgIikgVEVTVCgiICsgdGVzdEZ1
bmNTdHJpbmcgKyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPk9LPC9zcGFuPiIpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVudE5hbWUg
KyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQn
PkZBSUw8L3NwYW4+Iik7CisgICAgICAgIAorICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAg
ICBlbmRUZXN0KCk7ICAgIAorICAgIH0KKyAgICAKKyAgICBtZWRpYS5hZGRFdmVudExpc3RlbmVy
KGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2spOworfQorCitmdW5jdGlvbiB0ZXN0RXhjZXB0aW9u
KHRlc3RTdHJpbmcsIGV4Y2VwdGlvblN0cmluZykKK3sKKyAgICB0cnkgeworICAgICAgICBldmFs
KHRlc3RTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7IAorICAgICAgICBpZiAoZXguY29kZSA9
PSBldmFsKGV4Y2VwdGlvblN0cmluZykpCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRFU1Qo
IiArIHRlc3RTdHJpbmcgKyAiKSBUSFJPV1MoIitleGNlcHRpb25TdHJpbmcrIikgPHNwYW4gc3R5
bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bhbj4iKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
Y29uc29sZVdyaXRlKCJURVNUKCIgKyB0ZXN0U3RyaW5nICsgIikgVEhST1dTKCIrZXhjZXB0aW9u
U3RyaW5nKyIpIDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPkZBSUw8L3NwYW4+Iik7ICAgIAorICAg
IH0KK30KKwordmFyIHRlc3RFbmRlZCA9IGZhbHNlOworCitmdW5jdGlvbiBlbmRUZXN0KCkKK3sK
KyAgICBjb25zb2xlV3JpdGUoIkVORCBPRiBURVNUIik7CisgICAgdGVzdEVuZGVkID0gdHJ1ZTsK
KyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5ub3RpZnlEb25lKCk7ICAgICAKK30KKworZnVuY3Rpb24gZW5kVGVzdExhdGVy
KCkKK3sKKyAgICBzZXRUaW1lb3V0KGVuZFRlc3QsIDI1MCk7Cit9CisKK2Z1bmN0aW9uIGZhaWxU
ZXN0SW4obXMpCit7CisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAgICAgIGNvbnNv
bGVXcml0ZSgiRkFJTDogZGlkIG5vdCBlbmQgZmFzdCBlbm91Z2giKTsKKyAgICAgICAgZW5kVGVz
dCgpOworICAgIH0sIG1zKTsKK30KKworZnVuY3Rpb24gY29uc29sZVdyaXRlKHRleHQpCit7Cisg
ICAgaWYgKHRlc3RFbmRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnNvbGUuaW5uZXJIVE1M
ICs9IHRleHQgKyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9uIHJlbGF0aXZlVVJMKHVybCkKK3sKKyAg
ICByZXR1cm4gdXJsLnN1YnN0cih1cmwuaW5kZXhPZignL21lZGlhLycpKzcpOworfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xv
Y2F0aW9uLXRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2Vv
bG9jYXRpb24tdGVzdC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2dlb2xvY2F0aW9u
L2dlb2xvY2F0aW9uLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTIsMjEgKzIsMjUgQEAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgIGxheW91dFRlc3RDb250cm9sbGVy
LmR1bXBBc1RleHQoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7
CiB9Ci12YXIgdmlkZW87Ci12YXIgbWVkaWE7Cit2YXIgd2F0Y2hJRCA9IC0xOwordmFyIHBhc3Nl
ZFBvc2l0aW9uID0gbnVsbDsKIHZhciBjb25zb2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CiBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOwotdHJ5IHsKLSAgICB2
aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOwotICAgIGlm
ICh2aWRlbykKLSAgICAgICAgbWVkaWEgPSB2aWRlbzsKLX0gY2F0Y2ggKGV4KSB7IH0KKworZnVu
Y3Rpb24gcmVzZXQoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsK
KyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLnVzZUZha2VHZW9sb2NhdGlvbihmYWxzZSk7CisgICAgICAgIHdh
dGNoSUQgPSAtMTsKKyAgICAgICAgcGFzc2VkUG9zaXRpb24gPSBudWxsOworICAgIH0KK30KIAog
ZnVuY3Rpb24gaGFuZ2VkKCkKIHsKICAgICBjb25zb2xlV3JpdGUoIkZBSUw6IHRpbWVkIG91dCIp
OwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRl
c3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgIAorICAgIHJlc2V0KCk7CiB9CiBzZXRUaW1lb3V0
KGhhbmdlZCwgMTAwMDApOwogCkBAIC02MywxNiArNjcsMTkgQEAgZnVuY3Rpb24gcnVuKHRlc3RG
dW5jU3RyaW5nKQogICAgIH0KIH0KIAotZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kRW5kKGV2ZW50
TmFtZSwgZnVuY1N0cmluZykKK2Z1bmN0aW9uIHdhdGNoUG9zaXRpb25BbmRFbmQoZnVuY1N0cmlu
ZykKIHsKLSAgICB3YWl0Rm9yRXZlbnQoZXZlbnROYW1lLCBmdW5jU3RyaW5nLCB0cnVlKQorICAg
IHdhdGNoUG9zaXRpb24oZnVuY1N0cmluZywgdHJ1ZSkKIH0KIAotZnVuY3Rpb24gd2FpdEZvckV2
ZW50KGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCitmdW5jdGlvbiB3YXRjaFBvc2l0aW9uKGZ1bmMs
IGVuZGl0KQogewotICAgIGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQotICAgIHsKLSAg
ICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZlbnROYW1lICsgIikiKTsKKyAgICBmdW5j
dGlvbiBfcG9zaXRpb25DYWxsYmFjayhwb3NpdGlvbikKKyAgICB7ICAgICAgICAKKyAgICAgICAg
cGFzc2VkUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgdGVzdCgicGFzc2VkUG9zaXRpb24g
PT0gbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmxhc3RQb3NpdGlvbiIpOworICAgICAgICAKKyAgICAg
ICAgY29uc29sZVdyaXRlKCJQT1NJVElPTigiICsgcG9zaXRpb24gKyAiKSIpOwogICAgICAgICAK
ICAgICAgICAgaWYgKGZ1bmMpCiAgICAgICAgICAgICBmdW5jKCk7CkBAIC04MCwzNCArODcsODkg
QEAgZnVuY3Rpb24gd2FpdEZvckV2ZW50KGV2ZW50TmFtZSwgZnVuYywgZQogICAgICAgICBpZiAo
ZW5kaXQpCiAgICAgICAgICAgICBlbmRUZXN0KCk7ICAgIAogICAgIH0KKyAgICAKKyAgICB3YXRj
aElEID0gbmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oX3Bvc2l0aW9uQ2FsbGJh
Y2spOworICAgIHRlc3QoIndhdGNoSUQgPiAwIik7Cit9CisKK2Z1bmN0aW9uIHdhdGNoUG9zaXRp
b25UZXN0QW5kRW5kKHRlc3RGdW5jU3RyaW5nKQoreworICAgIHdhdGNoUG9zaXRpb25BbmRUZXN0
KHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsKK30KKworZnVuY3Rpb24gd2F0Y2hQb3NpdGlvbkFuZEZh
aWwoKQoreworICAgIHdhdGNoUG9zaXRpb25BbmRUZXN0KCJmYWxzZSIsIHRydWUpOworfQorCitm
dW5jdGlvbiB3YXRjaFBvc2l0aW9uQW5kVGVzdCh0ZXN0RnVuY1N0cmluZywgZW5kaXQpCit7Cisg
ICAgZnVuY3Rpb24gX3Bvc2l0aW9uQ2FsbGJhY2socG9zaXRpb24pCisgICAgeworICAgICAgICBw
YXNzZWRQb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAKKyAgICAgICAgaWYgKGV2YWwodGVz
dEZ1bmNTdHJpbmcpKQorICAgICAgICAgICAgY29uc29sZVdyaXRlKCJQT1NJVElPTigiICsgcG9z
aXRpb24gKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIDxzcGFuIHN0eWxlPSdjb2xv
cjpncmVlbic+T0s8L3NwYW4+Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNvbnNvbGVX
cml0ZSgiUE9TSVRJT04oIiArIHBvc2l0aW9uICsgIikgVEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcg
KyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlMPC9zcGFuPiIpOworCisgICAgICAgIGlm
IChlbmRpdCkKKyAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCisgICAgfQorICAgIAorICAgIHdh
dGNoSUQgPSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihfcG9zaXRpb25DYWxs
YmFjayk7CisgICAgdGVzdCgid2F0Y2hJRCA+IDAiKTsKK30KIAotICAgIG1lZGlhLmFkZEV2ZW50
TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7ICAgIAorZnVuY3Rpb24gZ2V0Q3Vy
cmVudFBvc2l0aW9uQW5kRW5kKGZ1bmNTdHJpbmcpCit7CisgICAgZ2V0Q3VycmVudFBvc2l0aW9u
KGZ1bmNTdHJpbmcsIHRydWUpCiB9CiAKLWZ1bmN0aW9uIHdhaXRGb3JFdmVudFRlc3RBbmRFbmQo
ZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZykKK2Z1bmN0aW9uIGdldEN1cnJlbnRQb3NpdGlvbihm
dW5jLCBlbmRpdCkKIHsKLSAgICB3YWl0Rm9yRXZlbnRBbmRUZXN0KGV2ZW50TmFtZSwgdGVzdEZ1
bmNTdHJpbmcsIHRydWUpOworICAgIGZ1bmN0aW9uIF9wb3NpdGlvbkNhbGxiYWNrKHBvc2l0aW9u
KQorICAgIHsgICAgICAgIAorICAgICAgICBwYXNzZWRQb3NpdGlvbiA9IHBvc2l0aW9uOworICAg
ICAgICAKKyAgICAgICAgY29uc29sZVdyaXRlKCJQT1NJVElPTigiICsgcG9zaXRpb24gKyAiKSIp
OworICAgICAgICAKKyAgICAgICAgaWYgKGZ1bmMpCisgICAgICAgICAgICBmdW5jKCk7CisgICAg
ICAgIAorICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0KCk7ICAgIAorICAg
IH0KKyAgICAKKyAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBvc2l0aW9uKF9w
b3NpdGlvbkNhbGxiYWNrKTsKIH0KIAotZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kRmFpbChldmVu
dE5hbWUpCitmdW5jdGlvbiBnZXRDdXJyZW50UG9zaXRpb25UZXN0QW5kRW5kKHRlc3RGdW5jU3Ry
aW5nKQogewotICAgIHdhaXRGb3JFdmVudEFuZFRlc3QoZXZlbnROYW1lLCAiZmFsc2UiLCB0cnVl
KTsKKyAgICBnZXRDdXJyZW50UG9zaXRpb25BbmRUZXN0KHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsK
IH0KIAotZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kVGVzdChldmVudE5hbWUsIHRlc3RGdW5jU3Ry
aW5nLCBlbmRpdCkKK2Z1bmN0aW9uIGdldEN1cnJlbnRQb3NpdGlvbkFuZEZhaWwoKQogewotICAg
IGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQorICAgIGdldEN1cnJlbnRQb3NpdGlvbkFu
ZFRlc3QoImZhbHNlIiwgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIGdldEN1cnJlbnRQb3NpdGlvbkFu
ZFRlc3QodGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQoreworICAgIGZ1bmN0aW9uIF9wb3NpdGlvbkNh
bGxiYWNrKHBvc2l0aW9uKQogICAgIHsKKyAgICAgICAgcGFzc2VkUG9zaXRpb24gPSBwb3NpdGlv
bjsKKyAgICAgICAgCiAgICAgICAgIGlmIChldmFsKHRlc3RGdW5jU3RyaW5nKSkKLSAgICAgICAg
ICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoIiArIGV2ZW50TmFtZSArICIpIFRFU1QoIiArIHRlc3RG
dW5jU3RyaW5nICsgIikgPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bhbj4iKTsKKyAg
ICAgICAgICAgIGNvbnNvbGVXcml0ZSgiUE9TSVRJT04oIiArIHBvc2l0aW9uICsgIikgVEVTVCgi
ICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPk9LPC9zcGFu
PiIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBl
dmVudE5hbWUgKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIDxzcGFuIHN0eWxlPSdj
b2xvcjpyZWQnPkZBSUw8L3NwYW4+Iik7CisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlBPU0lU
SU9OKCIgKyBwb3NpdGlvbiArICIpIFRFU1QoIiArIHRlc3RGdW5jU3RyaW5nICsgIikgPHNwYW4g
c3R5bGU9J2NvbG9yOnJlZCc+RkFJTDwvc3Bhbj4iKTsKICAgICAgICAgCiAgICAgICAgIGlmIChl
bmRpdCkKICAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCiAgICAgfQogICAgIAotICAgIG1lZGlh
LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7CisgICAgbmF2aWdh
dG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihfcG9zaXRpb25DYWxsYmFjayk7CiB9
CiAKIGZ1bmN0aW9uIHRlc3RFeGNlcHRpb24odGVzdFN0cmluZywgZXhjZXB0aW9uU3RyaW5nKQpA
QCAtMTI4LDggKzE5MCw3IEBAIGZ1bmN0aW9uIGVuZFRlc3QoKQogewogICAgIGNvbnNvbGVXcml0
ZSgiRU5EIE9GIFRFU1QiKTsKICAgICB0ZXN0RW5kZWQgPSB0cnVlOwotICAgIGlmICh3aW5kb3cu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKTsgICAgIAorICAgIHJlc2V0KCk7CiB9CiAKIGZ1bmN0aW9uIGVuZFRlc3RMYXRlcigp
CkBAIC0xNTQsNSArMjE1LDUgQEAgZnVuY3Rpb24gY29uc29sZVdyaXRlKHRleHQpCiAKIGZ1bmN0
aW9uIHJlbGF0aXZlVVJMKHVybCkKIHsKLSAgICByZXR1cm4gdXJsLnN1YnN0cih1cmwuaW5kZXhP
ZignL21lZGlhLycpKzcpOworICAgIHJldHVybiB1cmwuc3Vic3RyKHVybC5pbmRleE9mKCcvZ2Vv
bG9jYXRpb24vJykrMTMpOwogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="11119"
          type_id="1"
          status="-"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24463</attachid>
            <date>2008-10-17 14:43:26 -0700</date>
            <delta_ts>2008-10-24 00:45:28 -0700</delta_ts>
            <desc>updated</desc>
            <filename>GeoLocation-WebKit.org.patch.txt</filename>
            <type>text/plain</type>
            <size>112575</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3NjYxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDgtMTAtMTcgIEdyZWcgQm9s
c2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIxNDc1CisgICAgICAgIAorICAgICAgICBQcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9s
b2NhdGlvbiBBUEkKKyAgICAgICAgCisgICAgICAgIGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkv
c3BlYy1zb3VyY2UuaHRtbAorCisgICAgICAgICogd3RmL1BsYXRmb3JtLmg6IEVOQUJMRV9HRU9M
T0NBVElPTiBkZWZhdWx0cyB0byAwCisKIDIwMDgtMTAtMTcgIE1hcmNvIEJhcmlzaW9uZSAgPG1h
cmNvLmJhcmlzaW9uZUBjb2xsYWJvcmEuY28udWs+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2Ft
IFdlaW5pZy4gTGFuZGVkIGJ5IEphbiBBbG9uem8uCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYv
UGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAko
cmV2aXNpb24gMzc2NTgpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzQzLDYgKzM0MywxMCBAQAogI2RlZmluZSBFTkFCTEVfU0FNUExJTkdfVE9P
TCAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJMRV9HRU9MT0NBVElPTikKKyNkZWZpbmUg
RU5BQkxFX0dFT0xPQ0FUSU9OIDAKKyNlbmRpZgorCiAvLyBDVEkgb25seSBzdXBwb3J0cyB4ODYg
YXQgdGhlIG1vbWVudCwgYW5kIGhhcyBvbmx5IGJlZW4gdGVzdGVkIG9uIE1hYyBhbmQgV2luZG93
cy4KICNpZiAhZGVmaW5lZChFTkFCTEVfQ1RJKSAmJiBQTEFURk9STShYODYpICYmIChQTEFURk9S
TShNQUMpIHx8IFBMQVRGT1JNKFdJTikpCiAjZGVmaW5lIEVOQUJMRV9DVEkgMQpJbmRleDogV2Vi
Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9u
IDM3NjYxKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
MjAgQEAKKzIwMDgtMTAtMTcgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNDc1CisgICAgICAgIAorICAgICAgICBQ
cm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHZW9sb2NhdGlvbiBBUEkKKyAgICAgICAgCisgICAgICAg
IGh0dHA6Ly9kZXYudzMub3JnL2dlby9hcGkvc3BlYy1zb3VyY2UuaHRtbAorCisgICAgICAgIFRl
c3Q6IGdlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLW5vdC1pbXBsZW1lbnRlZC5odG1sCisKKyAgICAg
ICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAgICAqIEdOVW1ha2VmaWxlLmFtOiBBZGRl
ZCBHZW9sb2NhdGlvbiBzdXBwb3J0CisgICAgICAgICogV2ViQ29yZS5wcm86IEFkZGVkIEdlb2xv
Y2F0aW9uIHN1cHBvcnQKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvajog
QWRkZWQgR2VvbG9jYXRpb24gc3VwcG9ydAorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvajogQWRkZWQgR2VvbG9jYXRpb24gc3VwcG9ydAorICAgICAgICAqIFdlYkNv
cmVTb3VyY2VzLmJrbDogQWRkZWQgR2VvbG9jYXRpb24gc3VwcG9ydAorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpoYW5kbGVFdmVu
dCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVhdGUp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNw
cDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
azo6SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZTo6SlND
dXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUpOgorICAgICAg
ICAqIGJpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHA6IG1vdmUgbWFya0RPTU9iamVjdFdyYXBw
ZXIgaGVyZSBmcm9tIEpTRE9NV2luZG93Q3VzdG9tCisgICAgICAgIChXZWJDb3JlOjptYXJrRE9N
T2JqZWN0V3JhcHBlcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmg6IG1v
dmUgbWFya0RPTU9iamVjdFdyYXBwZXIgaGVyZSBmcm9tIEpTRE9NV2luZG93Q3VzdG9tCisgICAg
ICAgICogYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwOiBtb3ZlIG1hcmtET01PYmpl
Y3RXcmFwcGVyIHRvIEpTRE9NQmluZGluZworICAgICAgICAqIGJpbmRpbmdzL2pzL0pTR2VvbG9j
YXRpb25DdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTR2VvbG9jYXRpb246
OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0dlb2xvY2F0aW9uOjp3
YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5j
cHA6IGhhbmRsZSBtYXJraW5nIEdlb2xvY2F0aW9uCisgICAgICAgIChXZWJDb3JlOjpKU05hdmln
YXRvcjo6bWFyayk6CisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpEb2N1bWVudCk6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0VXNpbmdHZW9sb2NhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6dXNpbmdHZW9sb2NhdGlvbik6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmNwcDogZG9uJ3QgYWRkIHRvIGJhY2sgZm9yd2FyZCBjYWNoZSBpZiB1c2luZyBH
ZW9sb2NhdGlvbgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNhbkNhY2hlUGFnZSk6
CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29y
ZTo6R2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcik6CisgICAgICAgIChXZWJD
b3JlOjpHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnRpbWVyRmlyZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6R2VvbG9jYXRpb246Okdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uOjpkaXNjb25uZWN0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246
OmdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6d2F0
Y2hQb3NpdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Y2xlYXJXYXRjaCk6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c3RvcFVwZGF0aW5nSWZFbXB0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2VuZEVycm9yVG9PbmVTaG90cyk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2VuZEVycm9yVG9XYXRjaGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2VuZFBvc2l0aW9uVG9PbmVTaG90cyk6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6c2VuZFBvc2l0aW9uVG9XYXRjaGVycyk6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6aGFuZGxlRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6
R2VvbG9jYXRpb246Omdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZCk6
CisgICAgICAgICogcGFnZS9HZW9sb2NhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
Okdlb2xvY2F0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246On5H
ZW9sb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6bGFzdFBvc2l0aW9u
KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6Y3JlYXRlKToK
KyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9H
ZW9wb3NpdGlvbi5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OnRv
U3RyaW5nKToKKyAgICAgICAgKiBwYWdlL0dlb3Bvc2l0aW9uLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6R2VvcG9zaXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3Np
dGlvbjo6bGF0aXR1ZGUpOgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OmxvbmdpdHVk
ZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6YWx0aXR1ZGUpOgorICAgICAgICAo
V2ViQ29yZTo6R2VvcG9zaXRpb246OmFjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bv
c2l0aW9uOjphbHRpdHVkZUFjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9u
OjpoZWFkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjp2ZWxvY2l0eSk6Cisg
ICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6dGltZXN0YW1wKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb3Bvc2l0aW9uOjpHZW9wb3NpdGlvbik6CisgICAgICAgICogcGFnZS9HZW9wb3NpdGlv
bi5pZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5hdmlnYXRvcjo6ZGlzY29ubmVjdEZyYW1lKTogZGlzY29ubmVjdCBHZW9sb2NhdGlv
bgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpnZW9sb2NhdGlvbik6IGFjY2Vzc29yIGZv
ciBHZW9sb2NhdGlvbgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpOYXZpZ2F0b3I6Om9wdGlvbmFsR2VvbG9jYXRpb24pOiBhY2Nlc3NvciBmb3IgR2VvbG9j
YXRpb24KKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5pZGw6IGFjY2Vzc29yIGZvciBHZW9sb2Nh
dGlvbgorICAgICAgICAqIHBhZ2UvUG9zaXRpb25DYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlBvc2l0aW9uQ2FsbGJhY2s6On5Qb3NpdGlvbkNhbGxiYWNrKToKKyAgICAgICAg
KiBwYWdlL1Bvc2l0aW9uQ2FsbGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL1Bvc2l0
aW9uRXJyb3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjopOgor
ICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlBvc2l0aW9uRXJyb3I6OmNvZGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25FcnJv
cjo6bWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpQb3NpdGlvbkVy
cm9yKToKKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uRXJyb3IuaWRsOiBBZGRlZC4KKyAgICAgICAg
KiBwYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uRXJyb3JDYWxsYmFjazo6flBvc2l0aW9uRXJyb3JDYWxsYmFjayk6CisgICAgICAg
ICogcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBwYWdl
L1Bvc2l0aW9uT3B0aW9ucy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0
aW9uczo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6ZW5hYmxl
SGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6c2V0RW5h
YmxlSGlnaEFjY3VyYWN5KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0aW9uczo6dGlt
ZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OnNldFRpbWVvdXQpOgor
ICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpQb3NpdGlvbk9wdGlvbnMpOgorICAg
ICAgICAqIHBhZ2UvUG9zaXRpb25PcHRpb25zLmlkbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9s
b2NhdGlvblNlcnZpY2U6Okdlb2xvY2F0aW9uU2VydmljZSk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvblNlcnZpY2U6OnBvc2l0aW9uQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9sb2NhdGlvblNlcnZpY2U6OmVycm9yT2NjdXJyZWQpOgorICAgICAgICAqIHBsYXRmb3JtL0dl
b2xvY2F0aW9uU2VydmljZS5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9u
U2VydmljZUNsaWVudDo6fkdlb2xvY2F0aW9uU2VydmljZUNsaWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQ6Omdlb2xvY2F0aW9uU2VydmljZVBvc2l0aW9u
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQ6Omdl
b2xvY2F0aW9uU2VydmljZUVycm9yT2NjdXJyZWQpOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9j
YXRpb25TZXJ2aWNlOjp+R2VvbG9jYXRpb25TZXJ2aWNlKToKKwogMjAwOC0xMC0xNyAgTWFyY28g
QmFyaXNpb25lICA8bWFyY28uYmFyaXNpb25lQGNvbGxhYm9yYS5jby51az4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBTYW0gV2VpbmlnLiBMYW5kZWQgYnkgSmFuIEFsb256by4KSW5kZXg6IFdlYkNv
cmUvRGVyaXZlZFNvdXJjZXMubWFrZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UJKHJldmlzaW9uIDM3NjU4KQorKysgV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CSh3b3JraW5nIGNvcHkpCkBAIC05Miw2ICs5Miw4IEBAIERPTV9DTEFTU0VTID0gXAogICAgIEV2
ZW50VGFyZ2V0Tm9kZSBcCiAgICAgRmlsZSBcCiAgICAgRmlsZUxpc3QgXAorICAgIEdlb2xvY2F0
aW9uIFwKKyAgICBHZW9wb3NpdGlvbiBcCiAgICAgSFRNTEFuY2hvckVsZW1lbnQgXAogICAgIEhU
TUxBcHBsZXRFbGVtZW50IFwKICAgICBIVE1MQXJlYUVsZW1lbnQgXApAQCAtMTc5LDYgKzE4MSwx
MCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBPdmVyZmxvd0V2ZW50IFwKICAgICBQbHVnaW4gXAog
ICAgIFBsdWdpbkFycmF5IFwKKyAgICBQb3NpdGlvbkNhbGxiYWNrIFwKKyAgICBQb3NpdGlvbkVy
cm9yIFwKKyAgICBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgXAorICAgIFBvc2l0aW9uT3B0aW9ucyBc
CiAgICAgUHJvY2Vzc2luZ0luc3RydWN0aW9uIFwKICAgICBQcm9ncmVzc0V2ZW50IFwKICAgICBS
R0JDb2xvciBcCkluZGV4OiBXZWJDb3JlL0dOVW1ha2VmaWxlLmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvR05VbWFrZWZpbGUuYW0JKHJldmlzaW9uIDM3NjU4KQorKysgV2ViQ29yZS9HTlVtYWtl
ZmlsZS5hbQkod29ya2luZyBjb3B5KQpAQCAtMzI1LDYgKzMyNSwxMCBAQCB3ZWJjb3JlX3NvdXJj
ZXMgKz0gXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRD
dXN0b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2xpcGJvYXJkQ3VzdG9tLmNwcCBc
CiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NvbnNvbGVDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgXAorCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggXAorCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNDdXN0b21Wb2lkQ2FsbGJhY2suY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9t
Vm9pZENhbGxiYWNrLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21YUGF0aE5TUmVz
b2x2ZXIuY3BwIFwKQEAgLTM0Nyw2ICszNTEsNyBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdl
YkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldC5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRXZlbnRUYXJnZXRCYXNlLmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dE5vZGVDdXN0b20uY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0
b20uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb24uY3BwIFwK
IAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb24uaCBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNwcCBcCkBAIC0xMTg4LDYgKzEx
OTMsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmgg
XAogCVdlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3
LmggXAorCVdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAgXAorCVdlYkNvcmUvcGFnZS9HZW9s
b2NhdGlvbi5oIFwKKwlXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uY3BwIFwKKwlXZWJDb3JlL3Bh
Z2UvR2VvcG9zaXRpb24uaCBcCiAJV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwIFwKIAlXZWJDb3Jl
L3BhZ2UvSGlzdG9yeS5oIFwKIAlXZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwIFwKQEAgLTEyMDAs
NiArMTIwOSwxMCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVdlYkNvcmUvcGFnZS9QYWdlLmgg
XAogCVdlYkNvcmUvcGFnZS9QYWdlR3JvdXAuY3BwIFwKIAlXZWJDb3JlL3BhZ2UvUGFnZUdyb3Vw
LmggXAorCVdlYkNvcmUvcGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmggXAorCVdlYkNvcmUvcGFnZS9Q
b3NpdGlvbkVycm9yLmggXAorCVdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBc
CisJV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5oIFwKIAlXZWJDb3JlL3BhZ2UvUHJpbnRD
b250ZXh0LmNwcCBcCiAJV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4dC5oIFwKIAlXZWJDb3JlL3Bh
Z2UvU2NyZWVuLmNwcCBcCkBAIC0xMjQ1LDYgKzEyNTgsOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0g
XAogCVdlYkNvcmUvcGxhdGZvcm0vRmlsZUNob29zZXIuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9G
aWxlU3lzdGVtLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vRmxvYXRDb252ZXJzaW9uLmggXAorCVdl
YkNvcmUvcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBcCisJV2ViQ29yZS9wbGF0Zm9y
bS9HZW9sb2NhdGlvblNlcnZpY2UuaCBcCiAJV2ViQ29yZS9wbGF0Zm9ybS9Ib3N0V2luZG93Lmgg
XAogCVdlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgXAogCVdlYkNvcmUvcGxhdGZvcm0vS1VSTC5o
IFwKSW5kZXg6IFdlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9XZWJD
b3JlLnBybwkocmV2aXNpb24gMzc2NTgpCisrKyBXZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5n
IGNvcHkpCkBAIC03NzYsNiArNzc2LDggQEAgU09VUkNFUyArPSBcCiAgICAgcGFnZS9GcmFtZS5j
cHAgXAogICAgIHBhZ2UvRnJhbWVUcmVlLmNwcCBcCiAgICAgcGFnZS9GcmFtZVZpZXcuY3BwIFwK
KyAgICBwYWdlL0dlb2xvY2F0aW9uLmNwcCBcCisgICAgcGFnZS9HZW9wb3NpdGlvbi5jcHAgXAog
ICAgIHBhZ2UvSGlzdG9yeS5jcHAgXAogICAgIHBhZ2UvTG9jYXRpb24uY3BwIFwKICAgICBwYWdl
L01vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMuY3BwIFwKQEAgLTgwMyw2ICs4MDUsNyBAQCBT
T1VSQ0VTICs9IFwKICAgICBwbGF0Zm9ybS9EcmFnRGF0YS5jcHAgXAogICAgIHBsYXRmb3JtL0Ry
YWdJbWFnZS5jcHAgXAogICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNwcCBcCisgICAgcGxhdGZv
cm0vR2VvbG9jYXRpb25TZXJ2aWNlLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERl
c2NyaXB0aW9uLmNwcCBcCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udEZhbWlseS5jcHAgXAog
ICAgIHBsYXRmb3JtL2dyYXBoaWNzL0FmZmluZVRyYW5zZm9ybS5jcHAgXApAQCAtMTE5OCw3ICsx
MjAxLDEwIEBAIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9EQVRBQkFTRT0xKSB7CiAgICAgICAg
IGJpbmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25FcnJvckNhbGxiYWNrLmNwcCBcCiAg
ICAgICAgIGJpbmRpbmdzL2pzL0pTRGF0YWJhc2VDdXN0b20uY3BwIFwKICAgICAgICAgYmluZGlu
Z3MvanMvSlNTUUxSZXN1bHRTZXRSb3dMaXN0Q3VzdG9tLmNwcCBcCi0gICAgICAgIGJpbmRpbmdz
L2pzL0pTU1FMVHJhbnNhY3Rpb25DdXN0b20uY3BwCisgICAgICAgIGJpbmRpbmdzL2pzL0pTU1FM
VHJhbnNhY3Rpb25DdXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNHZW9sb2NhdGlv
bkN1c3RvbS5jcHAgXAorICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJh
Y2suY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2suY3BwCiAKICAgICBJRExfQklORElOR1MgKz0gXAogICAgICAgICBzdG9yYWdlL0RhdGFiYXNl
LmlkbCBcCkluZGV4OiBXZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL1dlYkNvcmVTb3VyY2VzLmJrbAkocmV2aXNpb24gMzc2NTgpCisrKyBXZWJDb3JlL1dl
YkNvcmVTb3VyY2VzLmJrbAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsOCBAQCBUaGlzIGZp
bGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
Q1NTUnVsZUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNDU1NTdHlsZURlY2xhcmF0
aW9uQ3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0NTU1ZhbHVlQ3VzdG9tLmNwcAor
ICAgICAgICBiaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwCisgICAgICAg
IGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcAogICAgICAgICBi
aW5kaW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNwcAogICAgICAgICBiaW5k
aW5ncy9qcy9KU0N1c3RvbVNRTFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTQ3VzdG9tU1FMVHJhbnNhY3Rpb25DYWxsYmFjay5jcHAKQEAgLTU5LDYgKzYx
LDcgQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBi
aW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0LmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5j
cHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAKICAgICAgICAg
YmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAKICAgICAgICAgYmluZGluZ3MvanMv
SlNIaXN0b3J5Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVt
ZW50Q3VzdG9tLmNwcApAQCAtMjM4LDYgKzI0MSw4IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUg
bGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0V2ZW50
VGFyZ2V0Tm9kZS5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0ZpbGUuY3Bw
CiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlTGlzdC5jcHAKKyAgICAgICAg
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0dlb2xvY2F0aW9uLmNwcAorICAgICAgICBEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTR2VvcG9zaXRpb24uY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNIVE1MQW5jaG9yRWxlbWVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0hUTUxBcHBsZXRFbGVtZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTSFRNTEFyZWFFbGVtZW50LmNwcApAQCAtMzIyLDYgKzMyNyw4IEBAIFRoaXMgZmls
ZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU092ZXJmbG93RXZlbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNQbHVnaW4uY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQbHVnaW5B
cnJheS5jcHAKKyAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1Bvc2l0aW9uRXJyb3Iu
Y3BwCisgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQb3NpdGlvbk9wdGlvbnMuY3Bw
CiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24u
Y3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQcm9ncmVzc0V2ZW50LmNwcAog
ICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUmFuZ2UuY3BwCkBAIC02NjksNiArNjc2
LDggQEAgVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBw
YWdlL0ZyYW1lLmNwcAogICAgICAgICBwYWdlL0ZyYW1lVHJlZS5jcHAKICAgICAgICAgcGFnZS9G
cmFtZVZpZXcuY3BwCisgICAgICAgIHBhZ2UvR2VvbG9jYXRpb24uY3BwCisgICAgICAgIHBhZ2Uv
R2VvcG9zaXRpb24uY3BwCiAgICAgICAgIHBhZ2UvSGlzdG9yeS5jcHAKICAgICAgICAgcGFnZS9M
b2NhdGlvbi5jcHAKICAgICAgICAgcGFnZS9Nb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNw
cApAQCAtNjkyLDYgKzcwMSw3IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxl
cyBuZWUKICAgICAgICAgcGxhdGZvcm0vRGVwcmVjYXRlZFZhbHVlTGlzdEltcGwuY3BwCiAgICAg
ICAgIHBsYXRmb3JtL0RyYWdJbWFnZS5jcHAKICAgICAgICAgcGxhdGZvcm0vRmlsZUNob29zZXIu
Y3BwCisgICAgICAgIHBsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZS5jcHAKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvRm9udC5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udENh
Y2hlLmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy9Gb250RGF0YS5jcHAKSW5kZXg6IFdl
YkNvcmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkocmV2aXNpb24gMzc2NTgpCisrKyBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC02ODAs
NiArNjgwLDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJj
ZXNcSlNHZW9sb2NhdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJ
CVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJp
dmVkU291cmNlc1xKU0dlb3Bvc2l0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZp
bGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5h
bWUpXERlcml2ZWRTb3VyY2VzXEpTRXZlbnQuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCkBAIC0x
MDQwLDYgKzEwNDgsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJl
bGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1lKVxEZXJpdmVk
U291cmNlc1xKU1Bvc2l0aW9uRXJyb3IuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8Rmls
ZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFt
ZSlcRGVyaXZlZFNvdXJjZXNcSlNQb3NpdGlvbk9wdGlvbnMuaCINCisJCQkJPg0KKwkJCTwvRmls
ZT4NCisJCQk8RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpc
JChQcm9qZWN0TmFtZSlcRGVyaXZlZFNvdXJjZXNcSlNPdmVyZmxvd0V2ZW50LmgiDQogCQkJCT4N
CiAJCQk8L0ZpbGU+DQpAQCAtMjI2MCw2ICsyMjc2LDM4IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4N
CiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcR2VvbG9jYXRpb24uY3BwIg0K
KwkJCQk+DQorCQkJCTxGaWxlQ29uZmlndXJhdGlvbg0KKwkJCQkJTmFtZT0iUmVsZWFzZV9QR098
V2luMzIiDQorCQkJCQk+DQorCQkJCQk8VG9vbA0KKwkJCQkJCU5hbWU9IlZDQ0xDb21waWxlclRv
b2wiDQorCQkJCQkJV2hvbGVQcm9ncmFtT3B0aW1pemF0aW9uPSJ0cnVlIg0KKwkJCQkJLz4NCisJ
CQkJPC9GaWxlQ29uZmlndXJhdGlvbj4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVs
YXRpdmVQYXRoPSIuLlxwYWdlXEdlb2xvY2F0aW9uLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQor
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEdlb3Bvc2l0aW9uLmNwcCINCisJ
CQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdp
bjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSINCisJCQkJCS8+DQorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGFnZVxHZW9wb3NpdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxIaXN0b3J5LmNwcCINCiAJCQkJPg0K
IAkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCkBAIC0yMzg4LDYgKzI0MzYsMjIgQEAKIAkJCQk+DQog
CQkJPC9GaWxlPg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxQb3NpdGlv
bkNhbGxiYWNrLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRp
dmVQYXRoPSIuLlxwYWdlXFBvc2l0aW9uRXJyb3IuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJ
CQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUG9zaXRpb25FcnJvckNhbGxiYWNr
LmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlxwYWdlXFBvc2l0aW9uT3B0aW9ucy5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxTY3JlZW4uY3BwIg0KIAkJCQk+DQogCQkJCTxG
aWxlQ29uZmlndXJhdGlvbg0KQEAgLTMwNDAsNiArMzEwNCwxNCBAQAogCQkJCT4NCiAJCQk8L0Zp
bGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxHZW9sb2NhdGlv
blNlcnZpY2UuY3BwIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGxhdGZvcm1cR2VvbG9jYXRpb25TZXJ2aWNlLmgiDQorCQkJCT4NCisJCQk8
L0ZpbGU+DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIuLlxwbGF0Zm9ybVxIb3N0V2lu
ZG93LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTMxMzcsNiArMTMyMDksMTQgQEAKIAkJ
CQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAiDQorCQkJCQk+DQorCQkJCTwv
RmlsZT4NCisJCQkJPEZpbGUNCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlND
dXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0ZpbGU+DQor
CQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTQ3VzdG9tU1FM
U3RhdGVtZW50Q2FsbGJhY2suY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpAQCAtMTMyNjUs
NiArMTMzNDUsMTAgQEAKIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxlDQorCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTR2VvbG9jYXRpb25DdXN0b20uY3BwIg0KKwkJ
CQkJPg0KKwkJCQk8L0ZpbGU+DQorCQkJCTxGaWxlDQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJp
bmRpbmdzXGpzXEpTSGlzdG9yeUN1c3RvbS5jcHAiDQogCQkJCQk+DQogCQkJCTwvRmlsZT4NCklu
ZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24g
Mzc2NTgpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtNDIyMiw2ICs0MjIyLDI5IEBACiAJCUY5MTZDNDhEMERCNTEwRjgwMDc2
Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QjBEQjUxMEY4MDA3NkNEODMg
LyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwICovOyB9OwogCQlGOTE2QzQ4RTBE
QjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY5MTZDNDhDMERCNTEwRjgw
MDc2Q0Q4MyAvKiBKU1hNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OwogCQlGOUYw
RUQ3QTBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOUYwRUQ3NzBEQjUw
Q0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi87IH07CisJCUZF
ODBEN0E3MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QTIwRTlD
MUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgKi87IH07CisJCUZF
ODBEN0E4MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0EzMEU5QzFF
RDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaCAqLzsgfTsKKwkJRkU4MEQ3
QTkwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0E0MEU5
QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgKi87IH07
CisJCUZFODBEN0FBMEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4
MEQ3QTUwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgg
Ki87IH07CisJCUZFODBEN0FCMEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3VzdG9t
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBE
N0E2MEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCAqLzsgfTsKKwkJ
RkU4MEQ3QzUwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0I3MEU5QzFGMjUwMDBENkY3
NSAvKiBHZW9sb2NhdGlvbi5jcHAgKi87IH07CisJCUZFODBEN0M2MEU5QzFGMjUwMDBENkY3NSAv
KiBHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRkU4MEQ3QjgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoKTsgfTsgfTsKKwkJRkU4MEQ3QzgwRTlDMUYyNTAwMEQ2Rjc1
IC8qIEdlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFODBEN0JBMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5jcHAgKi87
IH07CisJCUZFODBEN0M5MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QkIwRTlDMUYyNTAw
MEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi87IH07CisJCUZFODBEN0NCMEU5QzFGMjUwMDBENkY3
NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTgwRDdCRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFj
ay5oICovOyB9OworCQlGRTgwRDdDRDBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QkYw
RTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkU4MEQ3Q0YwRTlD
MUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4MEQ3QzEwRTlDMUYyNTAwMEQ2Rjc1IC8q
IFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICovOyB9OworCQlGRTgwRDdEMTBFOUMxRjI1MDAwRDZG
NzUgLyogUG9zaXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGRTgwRDdDMzBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25PcHRpb25z
LmggKi87IH07CisJCUZFODBEQTYzMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTVG
MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCAqLzsgfTsKKwkJRkU4MERBNjQw
RTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYwMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dl
b2xvY2F0aW9uLmggKi87IH07CisJCUZFODBEQTY1MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bv
c2l0aW9uLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEZFODBEQTYxMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCAqLzsgfTsKKwkJ
RkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTYyMEU5QzQ3MDMwMDBENkY3
NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi87IH07CisJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAv
KiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5j
cHAgKi87IH07CisJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZF
MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuaCAqLzsgfTsKKwkJRkU4MERBNzMw
RTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEQTZGMEU5QzQ3MkYwMDBENkY3NSAv
KiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgKi87IH07CisJCUZFODBEQTc0MEU5QzQ3MkYwMDBENkY3
NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRkU4MERBNzAwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRp
b25zLmggKi87IH07CisJCUZFQUI5MDEyMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNl
cnZpY2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVBQjkwMTAwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5jcHAgKi87IH07
CisJCUZFQUI5MDEzMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFQUI5MDExMEVBNTFC
OUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuaCAqLzsgfTsKIC8qIEVuZCBQQlhCdWls
ZEZpbGUgc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhDb250YWluZXJJdGVtUHJveHkgc2VjdGlv
biAqLwpAQCAtODgzOCw2ICs4ODYxLDM1IEBACiAJCUY5RjBFRDc3MERCNTBDQTIwMEQxNkRCOSAv
KiBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGOUYwRUQ3ODBEQjUwQ0EyMDBEMTZEQjkgLyogWE1MSHR0cFJlcXVlc3RQ
cm9ncmVzc0V2ZW50LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gWE1MSHR0cFJlcXVlc3RQ
cm9ncmVzc0V2ZW50LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRkU0OUVGOTcw
REM1MTQ2MjAwNDI2NkUxIC8qIERhc2hib2FyZFN1cHBvcnRDU1NQcm9wZXJ0eU5hbWVzLmluICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IERhc2hib2FyZFN1cHBvcnRDU1NQcm9wZXJ0eU5hbWVzLmlu
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBMjBFOUMxRUQyMDAwRDZGNzUg
LyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFODBEN0EzMEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0
aW9uQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21Q
b3NpdGlvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0E0
MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0N1c3RvbVBvc2l0aW9uRXJyb3JD
YWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0E1MEU5QzFF
RDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBNjBFOUMxRUQyMDAwRDZGNzUgLyog
SlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkU4MEQ3QjcwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb2xvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QjgwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0aW9uLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0I5MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9s
b2NhdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2VvbG9jYXRpb24uaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCQTBFOUMxRjI1MDAwRDZGNzUgLyogR2Vv
cG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2VvcG9z
aXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCQjBFOUMxRjI1
MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gR2VvcG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkMw
RTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBHZW9wb3NpdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JE
MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFBvc2l0aW9uQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJRkU4MEQ3QkUwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2suaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBvc2l0aW9uQ2FsbGJhY2suaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCRjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25F
cnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlvbkVycm9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0MwMEU5QzFGMjUwMDBENkY3NSAv
KiBQb3NpdGlvbkVycm9yLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQb3NpdGlvbkVycm9y
LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QzEwRTlDMUYyNTAwMEQ2
Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJRkU4MEQ3QzIwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QzMwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBv
c2l0aW9uT3B0aW9ucy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3NpdGlv
bk9wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QzQwRTlDMUYy
NTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
UG9zaXRpb25PcHRpb25zLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERB
NUYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW9sb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUZFODBEQTYwMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTR2VvbG9jYXRpb24uaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNjEwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2Vv
cG9zaXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHZW9w
b3NpdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTYyMEU5QzQ3
MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IEpTR2VvcG9zaXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4
MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3IuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlv
bkVycm9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25FcnJv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2RjBFOUM0NzJGMDAwRDZG
NzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNQb3NpdGlvbk9wdGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGRTgwREE3MDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9wdGlvbnMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNQb3NpdGlvbk9wdGlvbnMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVBQjkwMTAwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xv
Y2F0aW9uU2VydmljZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
ZW9sb2NhdGlvblNlcnZpY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRUFC
OTAxMTBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdlb2xvY2F0aW9uU2VydmljZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogLyogRW5kIFBCWEZpbGVSZWZlcmVuY2Ugc2VjdGlvbiAqLwogCiAvKiBC
ZWdpbiBQQlhGcmFtZXdvcmtzQnVpbGRQaGFzZSBzZWN0aW9uICovCkBAIC05NTg3LDYgKzk2Mzks
MTIgQEAKIAkJCQk2NUEyMTQ4MzA5N0EzRjUzMDBCOTA1MEEgLyogRnJhbWVUcmVlLmggKi8sCiAJ
CQkJNjVDQkZFRjcwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5jcHAgKi8sCiAJCQkJNjVD
QkZFRjgwOTc0RjYwNzAwMURBQzI1IC8qIEZyYW1lVmlldy5oICovLAorCQkJCUZFODBEN0I3MEU5
QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5jcHAgKi8sCisJCQkJRkU4MEQ3QjgwRTlDMUYy
NTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmggKi8sCisJCQkJRkU4MEQ3QjkwRTlDMUYyNTAwMEQ2
Rjc1IC8qIEdlb2xvY2F0aW9uLmlkbCAqLywKKwkJCQlGRTgwRDdCQTBFOUMxRjI1MDAwRDZGNzUg
LyogR2VvcG9zaXRpb24uY3BwICovLAorCQkJCUZFODBEN0JCMEU5QzFGMjUwMDBENkY3NSAvKiBH
ZW9wb3NpdGlvbi5oICovLAorCQkJCUZFODBEN0JDMEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3Np
dGlvbi5pZGwgKi8sCiAJCQkJQkM5NEQxNTAwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuY3Bw
ICovLAogCQkJCUJDOTREMTUxMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmggKi8sCiAJCQkJ
QkM5NEQxNTIwQzI3NUM4QjAwNkJDNjE3IC8qIEhpc3RvcnkuaWRsICovLApAQCAtOTYwMiw2ICs5
NjYwLDE0IEBACiAJCQkJNjVBMjE0NjcwOTdBMzI5MTAwQjkwNTBBIC8qIFBhZ2UuaCAqLywKIAkJ
CQk5MzAyQjBCQzBENzlGODI5MDBDN0VFODMgLyogUGFnZUdyb3VwLmNwcCAqLywKIAkJCQk5MzAy
QjBCRTBENzlGODJDMDBDN0VFODMgLyogUGFnZUdyb3VwLmggKi8sCisJCQkJRkU4MEQ3QkQwRTlD
MUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQlGRTgwRDdCRTBFOUMx
RjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5pZGwgKi8sCisJCQkJRkU4MEQ3QkYwRTlD
MUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCAqLywKKwkJCQlGRTgwRDdDMDBFOUMxRjI1
MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvci5pZGwgKi8sCisJCQkJRkU4MEQ3QzEwRTlDMUYyNTAw
MEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICovLAorCQkJCUZFODBEN0MyMEU5QzFG
MjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsICovLAorCQkJCUZFODBEN0Mz
MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCAqLywKKwkJCQlGRTgwRDdDNDBF
OUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25PcHRpb25zLmlkbCAqLywKIAkJCQlCQ0VDMDFCQTBD
Mjc0REFDMDA5RjRFQzkgLyogU2NyZWVuLmNwcCAqLywKIAkJCQlCQ0VDMDFCQjBDMjc0REFDMDA5
RjRFQzkgLyogU2NyZWVuLmggKi8sCiAJCQkJQkNFQzAxQkMwQzI3NERBQzAwOUY0RUM5IC8qIFNj
cmVlbi5pZGwgKi8sCkBAIC0xMTc2NSw2ICsxMTgzMSwxMCBAQAogCQkJCTY1REYzMjJFMDlEMURE
QkMwMDBCRTMyNSAvKiBKU0VudGl0eS5oICovLAogCQkJCTkzRjlCNzcyMEJBNUZEREMwMDg1NDA2
NCAvKiBKU0VudGl0eVJlZmVyZW5jZS5jcHAgKi8sCiAJCQkJOTNGOUI3NzMwQkE1RkREQzAwODU0
MDY0IC8qIEpTRW50aXR5UmVmZXJlbmNlLmggKi8sCisJCQkJRkU4MERBNUYwRTlDNDcwMzAwMEQ2
Rjc1IC8qIEpTR2VvbG9jYXRpb24uY3BwICovLAorCQkJCUZFODBEQTYwMEU5QzQ3MDMwMDBENkY3
NSAvKiBKU0dlb2xvY2F0aW9uLmggKi8sCisJCQkJRkU4MERBNjEwRTlDNDcwMzAwMEQ2Rjc1IC8q
IEpTR2VvcG9zaXRpb24uY3BwICovLAorCQkJCUZFODBEQTYyMEU5QzQ3MDMwMDBENkY3NSAvKiBK
U0dlb3Bvc2l0aW9uLmggKi8sCiAJCQkJQkNEOUMyQkMwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFt
ZWROb2RlTWFwLmNwcCAqLywKIAkJCQlCQ0Q5QzJCRDBDMTdCNjlFMDA1QzkwQTIgLyogSlNOYW1l
ZE5vZGVNYXAuaCAqLywKIAkJCQkxNERDMEQzNTA5RkVEMDczMDA3QjAyMzUgLyogSlNOb2RlLmNw
cCAqLywKQEAgLTExNzczLDYgKzExODQzLDEwIEBACiAJCQkJQkNEOUMyQkYwQzE3QjY5RTAwNUM5
MEEyIC8qIEpTTm9kZUxpc3QuaCAqLywKIAkJCQk2NURGMzFFOTA5RDFDQzYwMDAwQkUzMjUgLyog
SlNOb3RhdGlvbi5jcHAgKi8sCiAJCQkJNjVERjMxRUEwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTTm90
YXRpb24uaCAqLywKKwkJCQlGRTgwREE2RDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVy
cm9yLmNwcCAqLywKKwkJCQlGRTgwREE2RTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVy
cm9yLmggKi8sCisJCQkJRkU4MERBNkYwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRp
b25zLmNwcCAqLywKKwkJCQlGRTgwREE3MDBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbk9w
dGlvbnMuaCAqLywKIAkJCQk2NURGMzFFQjA5RDFDQzYwMDAwQkUzMjUgLyogSlNQcm9jZXNzaW5n
SW5zdHJ1Y3Rpb24uY3BwICovLAogCQkJCTY1REYzMUVDMDlEMUNDNjAwMDBCRTMyNSAvKiBKU1By
b2Nlc3NpbmdJbnN0cnVjdGlvbi5oICovLAogCQkJCUU0QjQyMzg1MENCRkI3M0MwMEFGMkVDRSAv
KiBKU1Byb2dyZXNzRXZlbnQuY3BwICovLApAQCAtMTI4MzcsNiArMTI5MTEsMTAgQEAKIAkJCQlC
QzQ2QzFFRDBDMEREQkRGMDAyMENGQzMgLyogSlNDU1NSdWxlQ3VzdG9tLmNwcCAqLywKIAkJCQlC
QzU4MjVGMjBDMEI4OTM4MDA1M0YxQjUgLyogSlNDU1NTdHlsZURlY2xhcmF0aW9uQ3VzdG9tLmNw
cCAqLywKIAkJCQlCQzIwRkI3RTBDMEU4RTZDMDBEMTQ0N0YgLyogSlNDU1NWYWx1ZUN1c3RvbS5j
cHAgKi8sCisJCQkJRkU4MEQ3QTIwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjay5jcHAgKi8sCisJCQkJRkU4MEQ3QTMwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9t
UG9zaXRpb25DYWxsYmFjay5oICovLAorCQkJCUZFODBEN0E0MEU5QzFFRDIwMDBENkY3NSAvKiBK
U0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgKi8sCisJCQkJRkU4MEQ3QTUwRTlDMUVE
MjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmggKi8sCiAJCQkJNTFF
QzkyNUIwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3VzdG9tU1FMU3RhdGVtZW50Q2FsbGJhY2suY3Bw
ICovLAogCQkJCTUxRUM5MjVDMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFN0YXRlbWVu
dENhbGxiYWNrLmggKi8sCiAJCQkJNTFFQzkyNUQwQ0U5MERENDAwRjkwMzA4IC8qIEpTQ3VzdG9t
U1FMU3RhdGVtZW50RXJyb3JDYWxsYmFjay5jcHAgKi8sCkBAIC0xMjg1Niw2ICsxMjkzNCw3IEBA
CiAJCQkJQkMyRUQ1NTQwQzZCOUJEMzAwOTIwQkZGIC8qIEpTRWxlbWVudEN1c3RvbS5jcHAgKi8s
CiAJCQkJQkNFRkFGNEQwQzMxN0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwICovLAog
CQkJCUJDM0I3QjIwMEU5MUFBRjQwMEQ1NDA2NSAvKiBKU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5j
cHAgKi8sCisJCQkJRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0
b20uY3BwICovLAogCQkJCUJDRTdCMTkyMEQ0RTg2OTYwMDc1QTUzOSAvKiBKU0hpc3RvcnlDdXN0
b20uY3BwICovLAogCQkJCUJDNEVERUYzMEMwOEYzRkIwMDdFREQ0OSAvKiBKU0hUTUxBcHBsZXRF
bGVtZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQ0NCQUQzQTBDMThCRkY4MDBDRTg5MEYgLyogSlNI
VE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAgKi8sCkBAIC0xMzE2Niw2ICsxMzI0NSw4IEBACiAJCQkJ
MDY2Qzc3MkEwQUI2MDNCNzAwMjM4Q0M0IC8qIEZpbGVDaG9vc2VyLmggKi8sCiAJCQkJNTE0QjNG
NzIwQzcyMjA0NzAwMDUzMERGIC8qIEZpbGVTeXN0ZW0uaCAqLywKIAkJCQlCQzA3M0JBOTBDMzk5
QjFGMDAwRjU5NzkgLyogRmxvYXRDb252ZXJzaW9uLmggKi8sCisJCQkJRkVBQjkwMTAwRUE1MUI5
QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5jcHAgKi8sCisJCQkJRkVBQjkwMTEwRUE1
MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5oICovLAogCQkJCUJDM0JDMjlCMEU5
MUFCMEYwMDgzNTU4OCAvKiBIb3N0V2luZG93LmggKi8sCiAJCQkJNjU5MzkyMzUwOUFFNDM0NjAw
MkM1MzFGIC8qIEtVUkwuY3BwICovLAogCQkJCTY1OTM5MjM2MDlBRTQzNDYwMDJDNTMxRiAvKiBL
VVJMLmggKi8sCkBAIC0xNTk4MSw2ICsxNjA2MiwxOCBAQAogCQkJCTFDODFCQTBDMEU5NzM0ODMw
MDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MUM4MUJBMEUwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQkMzQkUxMkIwRTk4MDkyRjAwODM1NTg4IC8qIFBvcHVwTWVudVN0eWxl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdBODBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdBQTBFOUMxRUQy
MDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICov
LAorCQkJCUZFODBEN0M2MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oIGluIEhlYWRl
cnMgKi8sCisJCQkJRkU4MEQ3QzkwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggaW4g
SGVhZGVycyAqLywKKwkJCQlGRTgwRDdDQjBFOUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxs
YmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3Q0QwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBv
c2l0aW9uRXJyb3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0NGMEU5QzFGMjUwMDBENkY3
NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0Qx
MEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUZFODBEQTY0MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAq
LywKKwkJCQlGRTgwREE2NjBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkU4MERBNzIwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJv
ci5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MERBNzQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9z
aXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNCRTk5NDBFOUMxQzdDMDA4MzU1
ODggLyogUmVuZGVyU2Nyb2xsYmFyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNCRTk5NTBFOUMx
QzdDMDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyUGFydC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QkMzQkU5OTkwRTlDMUU1RDAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmggaW4gSGVh
ZGVycyAqLywKQEAgLTE1OTg5LDYgKzE2MDgyLDcgQEAKIAkJCQlBODBENjcwODBFOUU5REVCMDBF
NDIwRjAgLyogR3JhcGhpY3NDb250ZXh0UGxhdGZvcm1Qcml2YXRlQ0cuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzOUIwMkVGMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0aEl0ZXJhdG9yLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFMUM0REU2OTBFQTc1QzFFMDAyM0NDRDYgLyogQWN0aXZlRE9NT2JqZWN0
LmggaW4gSGVhZGVycyAqLywKKwkJCQlGRUFCOTAxMzBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9j
YXRpb25TZXJ2aWNlLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTE3ODQ5LDYgKzE3OTQzLDE1IEBACiAJ
CQkJMUM4MUJBMDIwRTk3MzNDQjAwMjY2RTA3IC8qIEphdmFTY3JpcHRQcm9maWxlLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFDODFCQTA5MEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFDODFCQTBEMEU5NzM0ODMwMDI2NkUwNyAv
KiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3QTcw
RTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlGRTgwRDdBOTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVy
cm9yQ2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3QUIwRTlDMUVEMjAwMEQ2
Rjc1IC8qIEpTR2VvbG9jYXRpb25DdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3
QzUwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUZFODBEN0M4MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5jcHAgaW4gU291cmNlcyAq
LywKKwkJCQlGRTgwREE2MzBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQlGRTgwREE2NTBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlv
bi5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwREE3MTBFOUM0NzJGMDAwRDZGNzUgLyogSlNQ
b3NpdGlvbkVycm9yLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEQTczMEU5QzQ3MkYwMDBE
NkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzNCRTk5
MzBFOUMxQzdDMDA4MzU1ODggLyogUmVuZGVyU2Nyb2xsYmFyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUJDM0JFOUE1MEU5QzIzOTYwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJUaGVtZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlCQzNCRTlBQjBFOUMyNDIwMDA4MzU1ODggLyogUmVuZGVyU2Ny
b2xsYmFyUGFydC5jcHAgaW4gU291cmNlcyAqLywKQEAgLTE3ODU3LDYgKzE3OTYwLDcgQEAKIAkJ
CQlCQzgwRkExMzBFQTI4N0IwMDBCMDgyMUQgLyogTGVuZ3RoLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTkzOUIwMkVFMEVBMkRCQzQwMEM1NDU3MCAvKiBXaWR0aEl0ZXJhdG9yLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUUxQzRERTZFMEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3Qu
Y3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkVBQjkwMTIwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xv
Y2F0aW9uU2VydmljZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3Mv
anMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRp
b25DYWxsYmFjay5oIgorCisjaW5jbHVkZSAiQ29uc29sZS5oIgorI2luY2x1ZGUgIkNTdHJpbmcu
aCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkpTR2VvcG9zaXRpb24uaCIKKyNpbmNs
dWRlICJQYWdlLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1ZGUgPGtq
cy9KU0xvY2suaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit1c2luZyBuYW1lc3BhY2UgSlND
OworCitKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OkpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayhK
U09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fY2FsbGJhY2soY2FsbGJh
Y2spCisgICAgLCBtX2ZyYW1lKGZyYW1lKQoreworfQorCit2b2lkIEpTQ3VzdG9tUG9zaXRpb25D
YWxsYmFjazo6aGFuZGxlRXZlbnQoR2VvcG9zaXRpb24qIGdlb3Bvc2l0aW9uLCBib29sJiByYWlz
ZWRFeGNlcHRpb24pCit7CisgICAgQVNTRVJUKG1fY2FsbGJhY2spOworICAgIEFTU0VSVChtX2Zy
YW1lKTsKKyAgICAKKyAgICBpZiAoIW1fZnJhbWUtPnNjcmlwdCgpLT5pc0VuYWJsZWQoKSkKKyAg
ICAgICAgcmV0dXJuOworICAgIAorICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBt
X2ZyYW1lLT5zY3JpcHQoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgRXhlY1N0YXRlKiBleGVjID0g
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCk7CisgICAgCisgICAgSlNDOjpKU0xvY2sgbG9jayhm
YWxzZSk7CisgICAgCisgICAgSlNWYWx1ZSogZnVuY3Rpb24gPSBtX2NhbGxiYWNrLT5nZXQoZXhl
YywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CisgICAgQ2FsbERhdGEgY2FsbERh
dGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBmdW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2FsbERh
dGEpOworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgY2FsbFR5
cGUgPSBtX2NhbGxiYWNrLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7CisgICAgICAgIGlmIChjYWxs
VHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgYW4g
ZXhjZXB0aW9uIGJlIHRocm93biBoZXJlPworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisgICAgICAgIGZ1bmN0aW9uID0gbV9jYWxsYmFjazsKKyAgICB9CisgICAgCisgICAgUmVmUHRy
PEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKKyAgICAKKyAgICBBcmdM
aXN0IGFyZ3M7CisgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBnZW9wb3NpdGlvbikpOworICAg
IAorICAgIGdsb2JhbE9iamVjdC0+c3RhcnRUaW1lb3V0Q2hlY2soKTsKKyAgICBjYWxsKGV4ZWMs
IGZ1bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fY2FsbGJhY2ssIGFyZ3MpOworICAgIGds
b2JhbE9iamVjdC0+c3RvcFRpbWVvdXRDaGVjaygpOworICAgIAorICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgeworICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5y
ZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOworICAgICAgICByYWlzZWRFeGNlcHRpb24gPSB0
cnVlOworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oCShyZXZpc2lvbiAwKQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCisjaWZuZGVmIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFja19oCisjZGVmaW5l
IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFja19oCisKKyNpbmNsdWRlICJQb3NpdGlvbkNhbGxiYWNr
LmgiCisjaW5jbHVkZSA8a2pzL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8a2pzL3Byb3RlY3QuaD4K
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgSlNDIHsKKyAgICBjbGFzcyBK
U09iamVjdDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNz
IEdlb3Bvc2l0aW9uOworCitjbGFzcyBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2sgOiBwdWJsaWMg
UG9zaXRpb25DYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1l
KiBmcmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayhj
YWxsYmFjaywgZnJhbWUpKTsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChH
ZW9wb3NpdGlvbiosIGJvb2wmIHJhaXNlZEV4Y2VwdGlvbik7CisKK3ByaXZhdGU6CisgICAgSlND
dXN0b21Qb3NpdGlvbkNhbGxiYWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSopOwor
CisgICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNDOjpKU09iamVjdD4gbV9jYWxsYmFjazsKKyAgICBS
ZWZQdHI8RnJhbWU+IG1fZnJhbWU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjZW5kaWYgLy8gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCShy
ZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JD
YWxsYmFjay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICog
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJDb25z
b2xlLmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiSlNQb3NpdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNjcmlw
dENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxranMvSlNMb2NrLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK0pTQ3VzdG9tUG9zaXRpb25FcnJv
ckNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayhKU09iamVjdCogY2FsbGJh
Y2ssIEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgLCBtX2Zy
YW1lKGZyYW1lKQoreworfQorCit2b2lkIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpo
YW5kbGVFdmVudChQb3NpdGlvbkVycm9yKiBwb3NpdGlvbkVycm9yKQoreworICAgIEFTU0VSVCht
X2NhbGxiYWNrKTsKKyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgCisgICAgaWYgKCFtX2ZyYW1l
LT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9mcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVj
dCgpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOwor
ICAgIAorICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgIAorICAgIEpTVmFsdWUqIGZ1
bmN0aW9uID0gbV9jYWxsYmFjay0+Z2V0KGV4ZWMsIElkZW50aWZpZXIoZXhlYywgImhhbmRsZUV2
ZW50IikpOworICAgIENhbGxEYXRhIGNhbGxEYXRhOworICAgIENhbGxUeXBlIGNhbGxUeXBlID0g
ZnVuY3Rpb24tPmdldENhbGxEYXRhKGNhbGxEYXRhKTsKKyAgICBpZiAoY2FsbFR5cGUgPT0gQ2Fs
bFR5cGVOb25lKSB7CisgICAgICAgIGNhbGxUeXBlID0gbV9jYWxsYmFjay0+Z2V0Q2FsbERhdGEo
Y2FsbERhdGEpOworICAgICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKSB7CisgICAg
ICAgICAgICAvLyBGSVhNRTogU2hvdWxkIGFuIGV4Y2VwdGlvbiBiZSB0aHJvd24gaGVyZT8KKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBmdW5jdGlvbiA9IG1fY2FsbGJh
Y2s7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
az4gcHJvdGVjdCh0aGlzKTsKKyAgICAKKyAgICBBcmdMaXN0IGFyZ3M7CisgICAgYXJncy5hcHBl
bmQodG9KUyhleGVjLCBwb3NpdGlvbkVycm9yKSk7CisgICAgCisgICAgZ2xvYmFsT2JqZWN0LT5z
dGFydFRpbWVvdXRDaGVjaygpOworICAgIGNhbGwoZXhlYywgZnVuY3Rpb24sIGNhbGxUeXBlLCBj
YWxsRGF0YSwgbV9jYWxsYmFjaywgYXJncyk7CisgICAgZ2xvYmFsT2JqZWN0LT5zdG9wVGltZW91
dENoZWNrKCk7CisgICAgCisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICBt
X2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5yZXBvcnRDdXJyZW50RXhjZXB0aW9uKGV4
ZWMpOworfQorICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNh
bGxiYWNrX2gKKyNkZWZpbmUgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAorCisjaW5j
bHVkZSAiUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCisjaW5jbHVkZSA8a2pzL0pTT2JqZWN0Lmg+
CisjaW5jbHVkZSA8a2pzL3Byb3RlY3QuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCitu
YW1lc3BhY2UgSlNDIHsKKyAgICBjbGFzcyBKU09iamVjdDsKK30KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworICAgIAorY2xhc3MgRnJhbWU7CitjbGFzcyBQb3NpdGlvbkVycm9yOworCitjbGFzcyBK
U0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayA6IHB1YmxpYyBQb3NpdGlvbkVycm9yQ2FsbGJh
Y2sgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEpTQ3VzdG9tUG9zaXRpb25FcnJv
ckNhbGxiYWNrPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBmcmFtZSkg
eyByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrKGNhbGxi
YWNrLCBmcmFtZSkpOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIGhhbmRsZUV2ZW50KFBvc2l0
aW9uRXJyb3IqKTsKKworcHJpdmF0ZToKKyAgICBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
ayhKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqKTsKKworICAgIEpTQzo6UHJvdGVjdGVk
UHRyPEpTQzo6SlNPYmplY3Q+IG1fY2FsbGJhY2s7CisgICAgUmVmUHRyPEZyYW1lPiBtX2ZyYW1l
OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEpTQ3VzdG9t
UG9zaXRpb25FcnJvckNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01C
aW5kaW5nLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAJKHJldmlzaW9uIDM3NjU4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRp
bmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDcsNiArMzA3LDE2IEBAIHZvaWQgdXBkYXRlRE9N
Tm9kZURvY3VtZW50KE5vZGUqIG5vZGUsIEQKICAgICBhZGRXcmFwcGVyKHdyYXBwZXIpOwogfQog
Cit2b2lkIG1hcmtET01PYmplY3RXcmFwcGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9p
ZCogb2JqZWN0KQoreworICAgIGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm47CisgICAgRE9N
T2JqZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcihnbG9iYWxEYXRhLCBv
YmplY3QpOworICAgIGlmICghd3JhcHBlciB8fCB3cmFwcGVyLT5tYXJrZWQoKSkKKyAgICAgICAg
cmV0dXJuOworICAgIHdyYXBwZXItPm1hcmsoKTsKK30KKwogSlNWYWx1ZSoganNTdHJpbmdPck51
bGwoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBTdHJpbmcmIHMpCiB7CiAgICAgaWYgKHMuaXNOdWxs
KCkpCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHJldmlzaW9uIDM3NjU4KQor
KysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAt
NjksNiArNjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgdm9pZCB1cGRhdGVET01Ob2Rl
RG9jdW1lbnQoTm9kZSosIERvY3VtZW50KiBvbGREb2N1bWVudCwgRG9jdW1lbnQqIG5ld0RvY3Vt
ZW50KTsKICAgICB2b2lkIG1hcmtET01Ob2Rlc0ZvckRvY3VtZW50KERvY3VtZW50Kik7CiAgICAg
dm9pZCBtYXJrQWN0aXZlT2JqZWN0c0ZvckRvY3VtZW50KEpTQzo6SlNHbG9iYWxEYXRhJiwgRG9j
dW1lbnQqKTsKKyAgICB2b2lkIG1hcmtET01PYmplY3RXcmFwcGVyKEpTQzo6SlNHbG9iYWxEYXRh
JiBnbG9iYWxEYXRhLCB2b2lkKiBvYmplY3QpOwogICAgIHZvaWQgbWFya0Nyb3NzSGVhcERlcGVu
ZGVudE9iamVjdHNGb3JEb2N1bWVudChKU0M6OkpTR2xvYmFsRGF0YSYsIERvY3VtZW50Kik7CiAK
ICAgICBKU0M6OlN0cnVjdHVyZUlEKiBnZXRDYWNoZWRET01TdHJ1Y3R1cmUoSlNDOjpFeGVjU3Rh
dGUqLCBjb25zdCBKU0M6OkNsYXNzSW5mbyopOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlzaW9uIDM3NjU4KQorKysgV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQxLDE2ICs0MSw2
IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RhdGlj
IHZvaWQgbWFya0RPTU9iamVjdFdyYXBwZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lk
KiBvYmplY3QpCi17Ci0gICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybjsKLSAgICBET01P
YmplY3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKGdsb2JhbERhdGEsIG9i
amVjdCk7Ci0gICAgaWYgKCF3cmFwcGVyIHx8IHdyYXBwZXItPm1hcmtlZCgpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgd3JhcHBlci0+bWFyaygpOwotfQotCiB2b2lkIEpTRE9NV2luZG93OjptYXJr
KCkKIHsKICAgICBCYXNlOjptYXJrKCk7CkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTR2Vv
bG9jYXRpb25DdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNH
ZW9sb2NhdGlvbkN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pz
L0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMyBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiSlNHZW9sb2NhdGlvbi5oIgorCisjaW5jbHVkZSAiRE9NV2lu
ZG93LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9u
LmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb25TZXJ2aWNlLmgiCisjaW5jbHVkZSAiSlNDdXN0b21Q
b3NpdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2suaCIKKyNpbmNsdWRlICJKU0RPTVdpbmRvdy5oIgorI2luY2x1ZGUgIkpTUG9zaXRpb25PcHRp
b25zLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
SlNWYWx1ZSogSlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKEV4ZWNTdGF0ZSogZXhl
YywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICAvLyBBcmd1bWVudHM6IFBvc2l0aW9uQ2Fs
bGJhY2ssIChvcHRpb25hbClQb3NpdGlvbkVycm9yQ2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlv
bk9wdGlvbnMKKyAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFjazsK
KyAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdChleGVjLCAwKS0+Z2V0T2JqZWN0KCk7Cisg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKKyAgICBpZiAoIW9iamVjdCkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgVFlQ
RV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9CisK
KyAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9KU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCkpCisgICAgICAgIHBvc2l0aW9uQ2FsbGJhY2sgPSBK
U0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1lKTsKKyAgICAKKyAg
ICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2s7Cisg
ICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDEpLT5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAg
IEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMsIDEpLT5nZXRPYmplY3QoKTsKKyAgICAg
ICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBUWVBF
X01JU01BVENIX0VSUik7CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAg
ICAgfQorCisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSB0b0pTRE9NV2luZG93KGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKSkKKyAgICAgICAgICAgIHBvc2l0
aW9uRXJyb3JDYWxsYmFjayA9IEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpjcmVhdGUo
b2JqZWN0LCBmcmFtZSk7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxQb3NpdGlvbk9wdGlvbnM+
IHBvc2l0aW9uT3B0aW9uczsKKyAgICBpZiAoIWFyZ3MuYXQoZXhlYywgMiktPmlzVW5kZWZpbmVk
T3JOdWxsKCkpCisgICAgICAgIHBvc2l0aW9uT3B0aW9ucyA9IHRvUG9zaXRpb25PcHRpb25zKGFy
Z3MuYXQoZXhlYywgMikpOworICAgIAorICAgIG1faW1wbC0+Z2V0Q3VycmVudFBvc2l0aW9uKHBv
c2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVsZWFzZSgp
LCBwb3NpdGlvbk9wdGlvbnMuZ2V0KCkpOworICAgIAorICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworfQorCitKU1ZhbHVlKiBKU0dlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICAvLyBBcmd1bWVudHM6IFBvc2l0aW9u
Q2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlvbkVycm9yQ2FsbGJhY2ssIChvcHRpb25hbClQb3Np
dGlvbk9wdGlvbnMKKyAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFj
azsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdChleGVjLCAwKS0+Z2V0T2JqZWN0KCk7
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICBpZiAoIW9iamVjdCkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
VFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9
CisgICAgCisgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRvSlNET01XaW5kb3coZXhlYy0+bGV4aWNh
bEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgpKQorICAgICAgICBwb3NpdGlvbkNhbGxi
YWNrID0gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpjcmVhdGUob2JqZWN0LCBmcmFtZSk7Cisg
ICAgCisgICAgUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gcG9zaXRpb25FcnJvckNhbGxi
YWNrOworICAgIGlmICghYXJncy5hdChleGVjLCAxKS0+aXNVbmRlZmluZWRPck51bGwoKSkgewor
ICAgICAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdChleGVjLCAxKS0+Z2V0T2JqZWN0KCk7
CisgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICBzZXRET01FeGNlcHRpb24oZXhl
YywgVFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSB0b0pTRE9N
V2luZG93KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKSkKKyAg
ICAgICAgICAgIHBvc2l0aW9uRXJyb3JDYWxsYmFjayA9IEpTQ3VzdG9tUG9zaXRpb25FcnJvckNh
bGxiYWNrOjpjcmVhdGUob2JqZWN0LCBmcmFtZSk7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxQ
b3NpdGlvbk9wdGlvbnM+IHBvc2l0aW9uT3B0aW9uczsKKyAgICBpZiAoIWFyZ3MuYXQoZXhlYywg
MiktPmlzVW5kZWZpbmVkT3JOdWxsKCkpCisgICAgICAgIHBvc2l0aW9uT3B0aW9ucyA9IHRvUG9z
aXRpb25PcHRpb25zKGFyZ3MuYXQoZXhlYywgMikpOworICAgIAorICAgIGludCB3YXRjaElEID0g
bV9pbXBsLT53YXRjaFBvc2l0aW9uKHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlv
bkVycm9yQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbk9wdGlvbnMuZ2V0KCkpOworICAgIHJl
dHVybiBqc051bWJlcihleGVjLCB3YXRjaElEKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAJKHJldmlz
aW9uIDM3NjU4KQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hdmlnYXRvckN1c3RvbS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTExMyw0ICsxMTMsMTMgQEAgSlNWYWx1ZSogSlNOYXZpZ2F0b3I6
OmFwcFZlcnNpb24oRXhlY1N0YQogICAgIHJldHVybiBqc1N0cmluZyhleGVjLCBpbXAtPmFwcFZl
cnNpb24oKSk7CiB9CiAKK3ZvaWQgSlNOYXZpZ2F0b3I6Om1hcmsoKQoreworICAgIEJhc2U6Om1h
cmsoKTsKKworICAgIEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSA9ICpIZWFwOjpoZWFwKHRoaXMp
LT5nbG9iYWxEYXRhKCk7CisKKyAgICBtYXJrRE9NT2JqZWN0V3JhcHBlcihnbG9iYWxEYXRhLCBp
bXBsKCktPm9wdGlvbmFsR2VvbG9jYXRpb24oKSk7Cit9CisKIH0KSW5kZXg6IFdlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJl
dmlzaW9uIDM3NjU4KQorKysgV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0zMTYsNiArMzE2LDcgQEAgRG9jdW1lbnQ6OkRvY3VtZW50KEZyYW1lKiBmcmFtZSwgYm9v
bCBpcwogI2lmIEVOQUJMRShEQVRBQkFTRSkKICAgICAsIG1faGFzT3BlbkRhdGFiYXNlcyhmYWxz
ZSkKICNlbmRpZgorICAgICwgbV91c2luZ0dlb2xvY2F0aW9uKGZhbHNlKQogI2lmIFVTRShMT1df
QkFORFdJRFRIX0RJU1BMQVkpCiAgICAgLCBtX2luTG93QmFuZHdpZHRoRGlzcGxheShmYWxzZSkK
ICNlbmRpZgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCShyZXZpc2lvbiAzNzY1OCkKKysrIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5OCw2ICs5OTgsMTEgQEAgcHVibGljOgogICAgIGJv
b2wgaGFzT3BlbkRhdGFiYXNlcygpIHsgcmV0dXJuIG1faGFzT3BlbkRhdGFiYXNlczsgfQogICAg
IHZvaWQgc3RvcERhdGFiYXNlcygpOwogI2VuZGlmCisgICAgCisgICAgLy8gc2hvdWxkIHRoaXMg
YmUgb24gdGhlIEZyYW1lPworICAgIHZvaWQgc2V0VXNpbmdHZW9sb2NhdGlvbihib29sIGYpIHsg
bV91c2luZ0dlb2xvY2F0aW9uID0gZjsgfQorICAgIGJvb2wgdXNpbmdHZW9sb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fdXNpbmdHZW9sb2NhdGlvbjsgfTsKKyAgICAKIHByb3RlY3RlZDoKICAg
ICB2b2lkIGNsZWFyWE1MVmVyc2lvbigpIHsgbV94bWxWZXJzaW9uID0gU3RyaW5nKCk7IH0KIApA
QCAtMTA3NCw2ICsxMDc5LDggQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hTZXQ8RGF0YWJh
c2UqPiBEYXRhYmFzZVNldDsKICAgICBPd25QdHI8RGF0YWJhc2VTZXQ+IG1fb3BlbkRhdGFiYXNl
U2V0OwogI2VuZGlmCisgICAgCisgICAgYm9vbCBtX3VzaW5nR2VvbG9jYXRpb247CiAKICNpZiBV
U0UoTE9XX0JBTkRXSURUSF9ESVNQTEFZKQogICAgIGJvb2wgbV9pbkxvd0JhbmR3aWR0aERpc3Bs
YXk7CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiAzNzY1OCkKKysrIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTkxNyw2ICsxOTE3
LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2FuQ2FjaGVQYWdlKCkKICNpZiBFTkFCTEUoREFUQUJB
U0UpCiAgICAgICAgICYmICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5oYXNPcGVuRGF0YWJhc2VzKCkK
ICNlbmRpZgorICAgICAgICAmJiAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXNpbmdHZW9sb2NhdGlv
bigpCiAgICAgICAgICYmIG1fZnJhbWUtPnBhZ2UoKQogICAgICAgICAmJiBtX2ZyYW1lLT5wYWdl
KCktPmJhY2tGb3J3YXJkTGlzdCgpLT5lbmFibGVkKCkKICAgICAgICAgJiYgbV9mcmFtZS0+cGFn
ZSgpLT5iYWNrRm9yd2FyZExpc3QoKS0+Y2FwYWNpdHkoKSA+IDAKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9HZW9sb2NhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9u
LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlv
bi5oIgorCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1
ZGUgIlBvc2l0aW9uRXJyb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitHZW9sb2NhdGlv
bjo6R2VvTm90aWZpZXI6Okdlb05vdGlmaWVyKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4g
c3VjY2Vzc0NhbGxiYWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JD
YWxsYmFjaywgUG9zaXRpb25PcHRpb25zKiBvcHRpb25zKQorICAgIDogbV9zdWNjZXNzQ2FsbGJh
Y2soc3VjY2Vzc0NhbGxiYWNrKQorICAgICwgbV9lcnJvckNhbGxiYWNrKGVycm9yQ2FsbGJhY2sp
CisgICAgLCBtX3RpbWVyKHRoaXMsICZHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnRpbWVyRmly
ZWQpCit7CisgICAgaWYgKG1fZXJyb3JDYWxsYmFjayAmJiBvcHRpb25zICYmIG9wdGlvbnMtPnRp
bWVvdXQoKSAhPSAtMSkKKyAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3Qob3B0aW9ucy0+dGlt
ZW91dCgpIC8gMTAwMC4wKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6OnRp
bWVyRmlyZWQoVGltZXI8R2VvTm90aWZpZXI+KikKK3sKKyAgICBBU1NFUlQobV9lcnJvckNhbGxi
YWNrKTsKKyAgICAKKyAgICBtX3RpbWVyLnN0b3AoKTsKKworICAgIFJlZlB0cjxQb3NpdGlvbkVy
cm9yPiBlcnJvciA9IFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpUSU1FT1VU
X0VSUk9SLCAiVGltZWQgb3V0Iik7CisgICAgbV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChl
cnJvci5nZXQoKSk7Cit9CisKK0dlb2xvY2F0aW9uOjpHZW9sb2NhdGlvbihGcmFtZSogZnJhbWUp
CisgICAgOiBtX2ZyYW1lKGZyYW1lKQorICAgICwgbV9zZXJ2aWNlKEdlb2xvY2F0aW9uU2Vydmlj
ZTo6Y3JlYXRlKHRoaXMpKQoreworICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRVc2luZ0dlb2xvY2F0aW9uKHRydWUpOworfQorCit2
b2lkIEdlb2xvY2F0aW9uOjpkaXNjb25uZWN0RnJhbWUoKQoreworICAgIG1fc2VydmljZS0+c3Rv
cFVwZGF0aW5nKCk7CisgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPnNldFVzaW5nR2VvbG9jYXRpb24oZmFsc2UpOworICAgIG1fZnJhbWUg
PSAwOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpnZXRDdXJyZW50UG9zaXRpb24oUGFzc1JlZlB0
cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25F
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCit7
CisgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsKKworICAgIGlmICghbV9z
ZXJ2aWNlLT5zdGFydFVwZGF0aW5nKG9wdGlvbnMpKSB7CisgICAgICAgIGlmIChub3RpZmllci0+
bV9lcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gZXJy
b3IgPSBQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9FUlJP
UiwgIlVuYWJsZSB0byBTdGFydCIpOworICAgICAgICAgICAgbm90aWZpZXItPm1fZXJyb3JDYWxs
YmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICBtX29uZVNob3RzLmFkZChub3RpZmllcik7Cit9CisKK2ludCBHZW9s
b2NhdGlvbjo6d2F0Y2hQb3NpdGlvbihQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nl
c3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJh
Y2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykKK3sKKyAgICBSZWZQdHI8R2VvTm90aWZpZXI+
IG5vdGlmaWVyID0gR2VvTm90aWZpZXI6OmNyZWF0ZShzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2Fs
bGJhY2ssIG9wdGlvbnMpOworCisgICAgaWYgKCFtX3NlcnZpY2UtPnN0YXJ0VXBkYXRpbmcob3B0
aW9ucykpIHsKKyAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spIHsKKyAgICAg
ICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IFBvc2l0aW9uRXJyb3I6OmNyZWF0
ZShQb3NpdGlvbkVycm9yOjpQRVJNSVNTSU9OX0VSUk9SLCAiVW5hYmxlIHRvIFN0YXJ0Iik7Cisg
ICAgICAgICAgICBub3RpZmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvci5n
ZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIHN0
YXRpYyBpbnQgc0lkZW50aWZpZXIgPSAwOworICAgIAorICAgIG1fd2F0Y2hlcnMuc2V0KCsrc0lk
ZW50aWZpZXIsIG5vdGlmaWVyKTsKKworICAgIHJldHVybiBzSWRlbnRpZmllcjsKK30KKwordm9p
ZCBHZW9sb2NhdGlvbjo6Y2xlYXJXYXRjaChpbnQgd2F0Y2hJZCkKK3sKKyAgICBtX3dhdGNoZXJz
LnJlbW92ZSh3YXRjaElkKTsKKyAgICAKKyAgICBzdG9wVXBkYXRpbmdJZkVtcHR5KCk7Cit9CisK
K3ZvaWQgR2VvbG9jYXRpb246OnN0b3BVcGRhdGluZ0lmRW1wdHkoKQoreworICAgIGlmIChtX3dh
dGNoZXJzLmlzRW1wdHkoKSAmJiBtX29uZVNob3RzLmlzRW1wdHkoKSkKKyAgICAgICAgbV9zZXJ2
aWNlLT5zdG9wVXBkYXRpbmcoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6c2VuZEVycm9yVG9P
bmVTaG90cyhQb3NpdGlvbkVycm9yKiBlcnJvcikKK3sKKyAgICBjb25zdCBHZW9Ob3RpZmllclNl
dCBjb3B5ID0gbV9vbmVTaG90czsKKyAgICBHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3Ig
ZW5kID0gY29weS5lbmQoKTsKKyAgICBmb3IgKEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRv
ciBpdCA9IGNvcHkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxH
ZW9Ob3RpZmllcj4gbm90aWZpZXIgPSAqaXQ7CisgICAgICAgIAorICAgICAgICBpZiAobm90aWZp
ZXItPm1fZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgIG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJh
Y2stPmhhbmRsZUV2ZW50KGVycm9yKTsKKyAgICB9Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OnNl
bmRFcnJvclRvV2F0Y2hlcnMoUG9zaXRpb25FcnJvciogZXJyb3IpCit7CisgICAgY29uc3QgR2Vv
Tm90aWZpZXJNYXAgY29weSA9IG1fd2F0Y2hlcnM7CisgICAgR2VvTm90aWZpZXJNYXA6OmNvbnN0
X2l0ZXJhdG9yIGVuZCA9IGNvcHkuZW5kKCk7CisgICAgZm9yIChHZW9Ob3RpZmllck1hcDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBjb3B5LmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgeworICAgICAg
ICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKCppdCkuc2Vjb25kOworICAgICAgICAK
KyAgICAgICAgaWYgKG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2spCisgICAgICAgICAgICBub3Rp
Zmllci0+bV9lcnJvckNhbGxiYWNrLT5oYW5kbGVFdmVudChlcnJvcik7CisgICAgfQorfQorCit2
b2lkIEdlb2xvY2F0aW9uOjpzZW5kUG9zaXRpb25Ub09uZVNob3RzKEdlb3Bvc2l0aW9uKiBwb3Np
dGlvbikKK3sKKyAgICBjb25zdCBHZW9Ob3RpZmllclNldCBjb3B5ID0gbV9vbmVTaG90czsKKyAg
ICBHZW9Ob3RpZmllclNldDo6Y29uc3RfaXRlcmF0b3IgZW5kID0gY29weS5lbmQoKTsKKyAgICBm
b3IgKEdlb05vdGlmaWVyU2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNvcHkuYmVnaW4oKTsgaXQg
IT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSAq
aXQ7CisgICAgICAgIEFTU0VSVChub3RpZmllci0+bV9zdWNjZXNzQ2FsbGJhY2spOworICAgICAg
ICAKKyAgICAgICAgbm90aWZpZXItPm1fdGltZXIuc3RvcCgpOworICAgICAgICBib29sIHNob3Vs
ZENhbGxFcnJvckNhbGxiYWNrID0gZmFsc2U7CisgICAgICAgIG5vdGlmaWVyLT5tX3N1Y2Nlc3ND
YWxsYmFjay0+aGFuZGxlRXZlbnQocG9zaXRpb24sIHNob3VsZENhbGxFcnJvckNhbGxiYWNrKTsK
KyAgICAgICAgaWYgKHNob3VsZENhbGxFcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQ
dHI8UG9zaXRpb25FcnJvcj4gZXJyb3IgPSBQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25F
cnJvcjo6VU5LTk9XTl9FUlJPUiwgIkFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duIik7CisgICAgICAg
ICAgICBoYW5kbGVFcnJvcihlcnJvci5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3Zv
aWQgR2VvbG9jYXRpb246OnNlbmRQb3NpdGlvblRvV2F0Y2hlcnMoR2VvcG9zaXRpb24qIHBvc2l0
aW9uKQoreworICAgIGNvbnN0IEdlb05vdGlmaWVyTWFwIGNvcHkgPSBtX3dhdGNoZXJzOworICAg
IEdlb05vdGlmaWVyTWFwOjpjb25zdF9pdGVyYXRvciBlbmQgPSBjb3B5LmVuZCgpOworICAgIGZv
ciAoR2VvTm90aWZpZXJNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29weS5iZWdpbigpOyBpdCAh
PSBlbmQ7ICsraXQpIHsKKyAgICAgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9ICgq
aXQpLnNlY29uZDsKKyAgICAgICAgQVNTRVJUKG5vdGlmaWVyLT5tX3N1Y2Nlc3NDYWxsYmFjayk7
CisgICAgICAgIAorICAgICAgICBub3RpZmllci0+bV90aW1lci5zdG9wKCk7CisgICAgICAgIGJv
b2wgc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICAgICAgbm90aWZpZXItPm1f
c3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVFdmVudChwb3NpdGlvbiwgc2hvdWxkQ2FsbEVycm9yQ2Fs
bGJhY2spOworICAgICAgICBpZiAoc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2spIHsKKyAgICAgICAg
ICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yPiBlcnJvciA9IFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQ
b3NpdGlvbkVycm9yOjpVTktOT1dOX0VSUk9SLCAiQW4gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsK
KyAgICAgICAgICAgIGhhbmRsZUVycm9yKGVycm9yLmdldCgpKTsKKyAgICAgICAgfQorICAgIH0K
K30KKwordm9pZCBHZW9sb2NhdGlvbjo6aGFuZGxlRXJyb3IoUG9zaXRpb25FcnJvciogZXJyb3Ip
Cit7CisgICAgQVNTRVJUKGVycm9yKTsKKyAgICAKKyAgICBzZW5kRXJyb3JUb09uZVNob3RzKGVy
cm9yKTsgICAgCisgICAgc2VuZEVycm9yVG9XYXRjaGVycyhlcnJvcik7CisKKyAgICBtX29uZVNo
b3RzLmNsZWFyKCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246Omdlb2xvY2F0aW9uU2VydmljZVBv
c2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblNlcnZpY2UqIHNlcnZpY2UpCit7CisgICAgQVNTRVJU
KHNlcnZpY2UtPmxhc3RQb3NpdGlvbigpKTsKKyAgICAKKyAgICBzZW5kUG9zaXRpb25Ub09uZVNo
b3RzKHNlcnZpY2UtPmxhc3RQb3NpdGlvbigpKTsKKyAgICBzZW5kUG9zaXRpb25Ub1dhdGNoZXJz
KHNlcnZpY2UtPmxhc3RQb3NpdGlvbigpKTsKKyAgICAgICAgCisgICAgbV9vbmVTaG90cy5jbGVh
cigpOworICAgIHN0b3BVcGRhdGluZ0lmRW1wdHkoKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6
Z2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZChHZW9sb2NhdGlvblNlcnZpY2UqIHNlcnZp
Y2UpCit7CisgICAgQVNTRVJUKHNlcnZpY2UtPmxhc3RFcnJvcigpKTsKKyAgICAKKyAgICBoYW5k
bGVFcnJvcihzZXJ2aWNlLT5sYXN0RXJyb3IoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvcGFnZS9HZW9sb2NhdGlvbi5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL0dlb2xv
Y2F0aW9uLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgR2VvbG9jYXRpb25faAorI2Rl
ZmluZSBHZW9sb2NhdGlvbl9oCisKKyNpbmNsdWRlICJHZW9sb2NhdGlvblNlcnZpY2UuaCIKKyNp
bmNsdWRlICJQb3NpdGlvbkNhbGxiYWNrLmgiCisjaW5jbHVkZSAiUG9zaXRpb25FcnJvckNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiUG9zaXRpb25PcHRpb25zLmgiCisjaW5jbHVkZSAiVGltZXIuaCIK
KworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Cisj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsK
K2NsYXNzIEdlb3Bvc2l0aW9uOworCitjbGFzcyBHZW9sb2NhdGlvbiA6IHB1YmxpYyBSZWZDb3Vu
dGVkPEdlb2xvY2F0aW9uPiwgcHVibGljIEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCB7CitwdWJs
aWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2VvbG9jYXRpb24+IGNyZWF0ZShGcmFtZSogZnJh
bWUpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBHZW9sb2NhdGlvbihmcmFtZSkpOyB9CisKKyAgICB2
aXJ0dWFsIH5HZW9sb2NhdGlvbigpIHt9CisKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOwor
ICAgIAorICAgIEdlb3Bvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Nl
cnZpY2UtPmxhc3RQb3NpdGlvbigpOyB9CisKKyAgICB2b2lkIGdldEN1cnJlbnRQb3NpdGlvbihQ
YXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxs
YmFjaz4sIFBvc2l0aW9uT3B0aW9ucyopOworICAgIGludCB3YXRjaFBvc2l0aW9uKFBhc3NSZWZQ
dHI8UG9zaXRpb25DYWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiwg
UG9zaXRpb25PcHRpb25zKik7CisgICAgdm9pZCBjbGVhcldhdGNoKGludCB3YXRjaElkKTsKKwor
cHJpdmF0ZToKKyAgICBHZW9sb2NhdGlvbihGcmFtZSopOworCisgICAgY2xhc3MgR2VvTm90aWZp
ZXIgOiBwdWJsaWMgUmVmQ291bnRlZDxHZW9Ob3RpZmllcj4geworICAgIHB1YmxpYzoKKyAgICAg
ICAgc3RhdGljIFBhc3NSZWZQdHI8R2VvTm90aWZpZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFBvc2l0
aW9uQ2FsbGJhY2s+IHBvc2l0aW9uQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNh
bGxiYWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykg
eyByZXR1cm4gYWRvcHRSZWYobmV3IEdlb05vdGlmaWVyKHBvc2l0aW9uQ2FsbGJhY2ssIHBvc2l0
aW9uRXJyb3JDYWxsYmFjaywgb3B0aW9ucykpOyB9CisgICAgICAgIAorICAgICAgICB2b2lkIHRp
bWVyRmlyZWQoVGltZXI8R2VvTm90aWZpZXI+Kik7CisgICAgICAgIAorICAgICAgICBSZWZQdHI8
UG9zaXRpb25DYWxsYmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAgICAgIFJlZlB0cjxQb3Np
dGlvbkVycm9yQ2FsbGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKKyAgICAgICAgVGltZXI8R2VvTm90
aWZpZXI+IG1fdGltZXI7CisKKyAgICBwcml2YXRlOgorICAgICAgICBHZW9Ob3RpZmllcihQYXNz
UmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFj
az4sIFBvc2l0aW9uT3B0aW9ucyopOworICAgIH07CisgICAgCisgICAgdm9pZCBzdG9wVXBkYXRp
bmdJZkVtcHR5KCk7CisKKyAgICB2b2lkIHNlbmRFcnJvclRvT25lU2hvdHMoUG9zaXRpb25FcnJv
ciopOworICAgIHZvaWQgc2VuZEVycm9yVG9XYXRjaGVycyhQb3NpdGlvbkVycm9yKik7CisgICAg
dm9pZCBzZW5kUG9zaXRpb25Ub09uZVNob3RzKEdlb3Bvc2l0aW9uKik7CisgICAgdm9pZCBzZW5k
UG9zaXRpb25Ub1dhdGNoZXJzKEdlb3Bvc2l0aW9uKik7CisgICAgCisgICAgdm9pZCBoYW5kbGVF
cnJvcihQb3NpdGlvbkVycm9yKik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9u
U2VydmljZVBvc2l0aW9uQ2hhbmdlZChHZW9sb2NhdGlvblNlcnZpY2UqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZChHZW9sb2NhdGlvblNlcnZpY2Uq
KTsKKyAgICAgICAgICAgIAorICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8R2VvTm90aWZpZXI+
ID4gR2VvTm90aWZpZXJTZXQ7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPEdlb05v
dGlmaWVyPiA+IEdlb05vdGlmaWVyTWFwOworICAgIAorICAgIEdlb05vdGlmaWVyU2V0IG1fb25l
U2hvdHM7CisgICAgR2VvTm90aWZpZXJNYXAgbV93YXRjaGVyczsKKyAgICBGcmFtZSogbV9mcmFt
ZTsKKyAgICBPd25QdHI8R2VvbG9jYXRpb25TZXJ2aWNlPiBtX3NlcnZpY2U7Cit9OworICAgIAor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR2VvbG9jYXRpb25faApJbmRleDog
V2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2Uv
R2VvbG9jYXRpb24uaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9u
LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2Ug
WworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBHZW9sb2NhdGlvbiB7CisgICAg
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBHZW9wb3NpdGlvbiBsYXN0UG9zaXRpb247CisKKyAgICAg
ICAgW0N1c3RvbV0gdm9pZCBnZXRDdXJyZW50UG9zaXRpb24oaW4gUG9zaXRpb25DYWxsYmFjayBz
dWNjZXNzQ2FsbGJhY2ssIGluIFBvc2l0aW9uRXJyb3JDYWxsYmFjayBlcnJvckNhbGxiYWNrLCBp
biBQb3NpdGlvbk9wdGlvbnMgb3B0aW9ucyk7CisKKyAgICAgICAgW0N1c3RvbV0gbG9uZyB3YXRj
aFBvc2l0aW9uKGluIFBvc2l0aW9uQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBQb3NpdGlv
bkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxsYmFjaywgaW4gUG9zaXRpb25PcHRpb25zIG9wdGlvbnMp
OworCisgICAgICAgIHZvaWQgY2xlYXJXYXRjaChpbiBsb25nIHdhdGNoSWQpOworICAgIH07CisK
K30KSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL0dlb3Bvc2l0aW9uLmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9H
ZW9wb3NpdGlvbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIkdlb3Bvc2l0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworU3RyaW5n
IEdlb3Bvc2l0aW9uOjp0b1N0cmluZygpIGNvbnN0Cit7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9y
bWF0KCJwb3NpdGlvbiglLjZsZywgJS42bGcsICUuNmxnLCAlLjZsZywgJS42bGcsICUuNmxnLCAl
LjZsZywgJS5sbGQpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbV9sYXRpdHVkZSwgbV9s
b25naXR1ZGUsIG1fYWx0aXR1ZGUsIG1fYWNjdXJhY3ksIAorICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2FsdGl0dWRlQWNjdXJhY3ksIG1faGVhZGluZywgbV92ZWxvY2l0eSwgbV90aW1lc3Rh
bXApOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL3BhZ2UvR2Vv
cG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaAkocmV2
aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5oCShyZXZpc2lvbiAwKQpAQCAt
MCwwICsxLDc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJp
Z2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICov
CisKKyNpZm5kZWYgR2VvcG9zaXRpb25faAorI2RlZmluZSBHZW9wb3NpdGlvbl9oCisKKyNpbmNs
dWRlICJFdmVudC5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit0eXBlZGVmIGludCBFeGNl
cHRpb25Db2RlOworCitjbGFzcyBHZW9wb3NpdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb3Bv
c2l0aW9uPiB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8R2VvcG9zaXRpb24+IGNy
ZWF0ZShkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwg
ZG91YmxlIGFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGhlYWRpbmcs
IGRvdWJsZSB2ZWxvY2l0eSwgRE9NVGltZVN0YW1wIHRpbWVzdGFtcCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IEdlb3Bvc2l0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUsIGFsdGl0dWRlLCBhY2N1cmFj
eSwgYWx0aXR1ZGVBY2N1cmFjeSwgaGVhZGluZywgdmVsb2NpdHksIHRpbWVzdGFtcCkpOyB9Cisg
ICAgCisgICAgZG91YmxlIGxhdGl0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sYXRpdHVkZTsgfQor
ICAgIGRvdWJsZSBsb25naXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2xvbmdpdHVkZTsgfQorICAg
IGRvdWJsZSBhbHRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fYWx0aXR1ZGU7IH0KKyAgICBkb3Vi
bGUgYWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2FjY3VyYWN5OyB9CisgICAgZG91YmxlIGFs
dGl0dWRlQWNjdXJhY3koKSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlQWNjdXJhY3k7IH0KKyAg
ICBkb3VibGUgaGVhZGluZygpIGNvbnN0IHsgcmV0dXJuIG1faGVhZGluZzsgfQorICAgIGRvdWJs
ZSB2ZWxvY2l0eSgpIGNvbnN0IHsgcmV0dXJuIG1fdmVsb2NpdHk7IH0KKyAgICBET01UaW1lU3Rh
bXAgdGltZXN0YW1wKCkgY29uc3QgeyByZXR1cm4gbV90aW1lc3RhbXA7IH0KKworICAgIFN0cmlu
ZyB0b1N0cmluZygpIGNvbnN0OworCitwcml2YXRlOgorICAgIEdlb3Bvc2l0aW9uKGRvdWJsZSBs
YXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgZG91YmxlIGFsdGl0dWRlLCBkb3VibGUgYWNjdXJh
Y3ksIGRvdWJsZSBhbHRpdHVkZUFjY3VyYWN5LCBkb3VibGUgaGVhZGluZywgZG91YmxlIHZlbG9j
aXR5LCBET01UaW1lU3RhbXAgdGltZXN0YW1wKQorICAgICAgICA6IG1fbGF0aXR1ZGUobGF0aXR1
ZGUpCisgICAgICAgICwgbV9sb25naXR1ZGUobG9uZ2l0dWRlKQorICAgICAgICAsIG1fYWx0aXR1
ZGUoYWx0aXR1ZGUpCisgICAgICAgICwgbV9hY2N1cmFjeShhY2N1cmFjeSkKKyAgICAgICAgLCBt
X2FsdGl0dWRlQWNjdXJhY3koYWx0aXR1ZGVBY2N1cmFjeSkKKyAgICAgICAgLCBtX2hlYWRpbmco
aGVhZGluZykKKyAgICAgICAgLCBtX3ZlbG9jaXR5KHZlbG9jaXR5KQorICAgICAgICAsIG1fdGlt
ZXN0YW1wKHRpbWVzdGFtcCkKKyAgICB7CisgICAgfQorCisgICAgZG91YmxlIG1fbGF0aXR1ZGU7
CisgICAgZG91YmxlIG1fbG9uZ2l0dWRlOworICAgIGRvdWJsZSBtX2FsdGl0dWRlOworICAgIGRv
dWJsZSBtX2FjY3VyYWN5OworICAgIGRvdWJsZSBtX2FsdGl0dWRlQWNjdXJhY3k7CisgICAgZG91
YmxlIG1faGVhZGluZzsKKyAgICBkb3VibGUgbV92ZWxvY2l0eTsKKyAgICBET01UaW1lU3RhbXAg
bV90aW1lc3RhbXA7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYg
Ly8gR2VvcG9zaXRpb25faApJbmRleDogV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaWRsCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUg
Y29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisg
ICAgXSBHZW9wb3NpdGlvbiB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgbGF0
aXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgbG9uZ2l0dWRlOworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIGFsdGl0dWRlOworICAgICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgZG91YmxlIGFjY3VyYWN5OworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
ZG91YmxlIGFsdGl0dWRlQWNjdXJhY3k7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3Vi
bGUgaGVhZGluZworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIHZlbG9jaXR5Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01UaW1lU3RhbXAgdGltZXN0YW1wOworCisgICAg
ICAgIFtEb250RW51bV0gRE9NU3RyaW5nIHRvU3RyaW5nKCk7CisgICAgfTsKK30KSW5kZXg6IFdl
YkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuY3BwCShyZXZpc2lvbiAzNzY1OCkKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiRnJhbWUuaCIKICNp
bmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50LmgiCisj
aW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKICNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUg
Ik1pbWVUeXBlQXJyYXkuaCIKICNpbmNsdWRlICJOZXR3b3JrU3RhdGVOb3RpZmllci5oIgpAQCAt
ODcsNiArODgsMTAgQEAgdm9pZCBOYXZpZ2F0b3I6OmRpc2Nvbm5lY3RGcmFtZSgpCiAgICAgICAg
IG1fbWltZVR5cGVzLT5kaXNjb25uZWN0RnJhbWUoKTsKICAgICAgICAgbV9taW1lVHlwZXMgPSAw
OwogICAgIH0KKyAgICBpZiAobV9nZW9sb2NhdGlvbikgeworICAgICAgICBtX2dlb2xvY2F0aW9u
LT5kaXNjb25uZWN0RnJhbWUoKTsKKyAgICAgICAgbV9nZW9sb2NhdGlvbiA9IDA7CisgICAgfQog
ICAgIG1fZnJhbWUgPSAwOwogfQogCkBAIC0xOTcsNCArMjAyLDExIEBAIGJvb2wgTmF2aWdhdG9y
OjpvbkxpbmUoKSBjb25zdAogICAgIHJldHVybiBuZXR3b3JrU3RhdGVOb3RpZmllcigpLm9uTGlu
ZSgpOwogfQogCitHZW9sb2NhdGlvbiogTmF2aWdhdG9yOjpnZW9sb2NhdGlvbigpIGNvbnN0Cit7
CisgICAgaWYgKCFtX2dlb2xvY2F0aW9uKQorICAgICAgICBtX2dlb2xvY2F0aW9uID0gR2VvbG9j
YXRpb246OmNyZWF0ZShtX2ZyYW1lKTsKKyAgICByZXR1cm4gbV9nZW9sb2NhdGlvbi5nZXQoKTsK
K30KKyAgICAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFdlYkNvcmUvcGFnZS9OYXZp
Z2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHJldmlzaW9u
IDM3NjU4KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
Nyw2ICsyNyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICBjbGFzcyBGcmFtZTsKKyAg
ICBjbGFzcyBHZW9sb2NhdGlvbjsKICAgICBjbGFzcyBNaW1lVHlwZUFycmF5OwogICAgIGNsYXNz
IFBsdWdpbkRhdGE7CiAgICAgY2xhc3MgUGx1Z2luQXJyYXk7CkBAIC01NiwxMSArNTcsMTUgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGphdmFFbmFibGVkKCkgY29uc3Q7CiAK
ICAgICAgICAgYm9vbCBvbkxpbmUoKSBjb25zdDsKKyAgICAgICAgR2VvbG9jYXRpb24qIGdlb2xv
Y2F0aW9uKCkgY29uc3Q7CisgICAgICAgIC8vIFRoaXMgaXMgdXNlZCBmb3IgR0MgbWFya2luZy4K
KyAgICAgICAgR2VvbG9jYXRpb24qIG9wdGlvbmFsR2VvbG9jYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX2dlb2xvY2F0aW9uLmdldCgpOyB9CiAgICAgcHJpdmF0ZToKICAgICAgICAgTmF2aWdhdG9y
KEZyYW1lKik7CiAgICAgICAgIEZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBtdXRhYmxlIFJlZlB0
cjxQbHVnaW5BcnJheT4gbV9wbHVnaW5zOwogICAgICAgICBtdXRhYmxlIFJlZlB0cjxNaW1lVHlw
ZUFycmF5PiBtX21pbWVUeXBlczsKKyAgICAgICAgbXV0YWJsZSBSZWZQdHI8R2VvbG9jYXRpb24+
IG1fZ2VvbG9jYXRpb247CiAgICAgfTsKIAogfQpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRv
ci5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwJKHJldmlzaW9u
IDM3NjU4KQorKysgV2ViQ29yZS9wYWdlL05hdmlnYXRvci5pZGwJKHdvcmtpbmcgY29weSkKQEAg
LTE5LDcgKzE5LDkgQEAKIAogbW9kdWxlIHdpbmRvdyB7CiAKLSAgICBpbnRlcmZhY2UgTmF2aWdh
dG9yIHsKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb24KKyAgICBd
IE5hdmlnYXRvciB7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgYXBwQ29k
ZU5hbWU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgYXBwTmFtZTsKICAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFtDdXN0b21HZXR0ZXJdIERPTVN0cmluZyBhcHBWZXJz
aW9uOwpAQCAtMzYsNiArMzgsOSBAQCBtb2R1bGUgd2luZG93IHsKICAgICAgICAgYm9vbGVhbiBq
YXZhRW5hYmxlZCgpOwogICAgICAgICAKICAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xl
YW4gb25MaW5lOworI2lmIEVOQUJMRV9HRU9MT0NBVElPTgorICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgR2VvbG9jYXRpb24gZ2VvbG9jYXRpb247CisjZW5kaWYKICAgICB9OwogCiB9CkluZGV4
OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGFnZS9Qb3NpdGlvbkNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9z
aXRpb25DYWxsYmFjay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgUG9zaXRpb25DYWxs
YmFja19oCisjZGVmaW5lIFBvc2l0aW9uQ2FsbGJhY2tfaAorCisjaW5jbHVkZSA8d3RmL1BsYXRm
b3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworICAgIAorICAgIGNsYXNzIEdlb3Bvc2l0aW9uOworICAgIAorICAgIGNsYXNzIFBvc2l0aW9u
Q2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3NpdGlvbkNhbGxiYWNrPiB7CisgICAgcHVi
bGljOgorICAgICAgICB2aXJ0dWFsIH5Qb3NpdGlvbkNhbGxiYWNrKCkgeyB9CisgICAgICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFdmVudChHZW9wb3NpdGlvbiogcG9zaXRpb24sIGJvb2wmIHJhaXNl
ZEV4Y2VwdGlvbikgPSAwOworICAgIH07CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBQb3NpdGlvbkNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlv
bkNhbGxiYWNrLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFj
ay5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5pZGwJ
KHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAg
ICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gUG9zaXRpb25DYWxsYmFjayB7CisgICAg
ICAgIHZvaWQgaGFuZGxlRXZlbnQoaW4gR2VvcG9zaXRpb24gcG9zaXRpb24pOworICAgIH07CisK
K30KSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Q
b3NpdGlvbkVycm9yLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQb3NpdGlvbkVycm9y
X2gKKyNkZWZpbmUgUG9zaXRpb25FcnJvcl9oCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5o
IgorI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgUG9zaXRpb25FcnJvciA6IHB1
YmxpYyBSZWZDb3VudGVkPFBvc2l0aW9uRXJyb3I+IHsKK3B1YmxpYzoKKyAgICBlbnVtIEVycm9y
Q29kZSB7CisgICAgICAgIFBFUk1JU1NJT05fRVJST1IgPSAxLAorICAgICAgICBMT0NBVElPTl9Q
Uk9WSURFUl9FUlJPUiwKKyAgICAgICAgUE9TSVRJT05fTk9UX0ZPVU5EX0VSUk9SLAorICAgICAg
ICBUSU1FT1VUX0VSUk9SLAorICAgICAgICBVTktOT1dOX0VSUk9SCisgICAgfTsKKyAgICAKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxQb3NpdGlvbkVycm9yPiBjcmVhdGUoRXJyb3JDb2RlIGNvZGUs
IGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IFBvc2l0aW9uRXJy
b3IoY29kZSwgbWVzc2FnZSkpOyB9CisKKyAgICBFcnJvckNvZGUgY29kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fY29kZTsgfQorICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVzc2FnZTsgfQorICAgIAorcHJpdmF0ZToKKyAgICBQb3NpdGlvbkVycm9yKEVycm9yQ29k
ZSBjb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIAorICAgICAgICA6IG1fY29kZShjb2RlKQor
ICAgICAgICAsIG1fbWVzc2FnZShtZXNzYWdlKQorICAgIHsKKyAgICB9CisgICAgCisgICAgRXJy
b3JDb2RlIG1fY29kZTsKKyAgICBTdHJpbmcgbV9tZXNzYWdlOworfTsKKyAgICAKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFBvc2l0aW9uRXJyb3JfaApJbmRleDogV2ViQ29y
ZS9wYWdlL1Bvc2l0aW9uRXJyb3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3Np
dGlvbkVycm9yLmlkbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9y
LmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2Ug
WworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBQb3NpdGlvbkVycm9yIHsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgY29kZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0
cmlidXRlIERPTVN0cmluZyBtZXNzYWdlOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGFn
ZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9z
aXRpb25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRp
b25FcnJvckNhbGxiYWNrLmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBQb3NpdGlvbkVy
cm9yQ2FsbGJhY2tfaAorI2RlZmluZSBQb3NpdGlvbkVycm9yQ2FsbGJhY2tfaAorCisjaW5jbHVk
ZSA8d3RmL1BsYXRmb3JtLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisgICAgY2xhc3MgUG9zaXRpb25FcnJvcjsKKworICAgIGNsYXNzIFBv
c2l0aW9uRXJyb3JDYWxsYmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFBvc2l0aW9uRXJyb3JDYWxs
YmFjaz4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+UG9zaXRpb25FcnJvckNhbGxi
YWNrKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChQb3NpdGlvbkVycm9y
KiBwb3NpdGlvbikgPSAwOworICAgIH07CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZiAvLyBQb3NpdGlvbkVycm9yQ2FsbGJhY2tfaApJbmRleDogV2ViQ29yZS9wYWdlL1Bv
c2l0aW9uRXJyb3JDYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0
aW9uRXJyb3JDYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRp
b25FcnJvckNhbGxiYWNrLmlkbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgY29yZSB7CisK
KyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0ZUNvbnN0cnVjdG9yCisgICAgXSBQb3Np
dGlvbkVycm9yQ2FsbGJhY2sgeworICAgICAgICB2b2lkIGhhbmRsZUV2ZW50KGluIFBvc2l0aW9u
RXJyb3IgZXJyb3IpOworICAgIH07CisKK30KSW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9w
dGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmgJKHJl
dmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBB
bGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBQb3NpdGlvbk9wdGlvbnNfaAorI2RlZmluZSBQb3NpdGlvbk9wdGlv
bnNfaAorCisjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBQb3NpdGlvbk9wdGlv
bnMgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3NpdGlvbk9wdGlvbnM+IHsKK3B1YmxpYzoKKyAgICBz
dGF0aWMgUGFzc1JlZlB0cjxQb3NpdGlvbk9wdGlvbnM+IGNyZWF0ZShib29sIGhpZ2hBY2N1cmFj
eSwgbG9uZyB0aW1lb3V0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgUG9zaXRpb25PcHRpb25zKGhp
Z2hBY2N1cmFjeSwgdGltZW91dCkpOyB9CisKKyAgICBib29sIGVuYWJsZUhpZ2hBY2N1cmFjeSgp
IGNvbnN0IHsgcmV0dXJuIG1faGlnaEFjY3VyYWN5OyB9CisgICAgdm9pZCBzZXRFbmFibGVIaWdo
QWNjdXJhY3koYm9vbCBlbmFibGUpIHsgbV9oaWdoQWNjdXJhY3kgPSBlbmFibGU7IH0KKyAgICBs
b25nIHRpbWVvdXQoKSBjb25zdCB7IHJldHVybiBtX3RpbWVvdXQ7IH0KKyAgICB2b2lkIHNldFRp
bWVvdXQobG9uZyB0KSB7IG1fdGltZW91dCA9IHQ7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgUG9z
aXRpb25PcHRpb25zKGJvb2wgaGlnaEFjY3VyYWN5LCBsb25nIHRpbWVvdXQpCisgICAgICAgIDog
bV9oaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5KQorICAgICAgICAsIG1fdGltZW91dCh0aW1lb3V0
KQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBtX2hpZ2hBY2N1cmFjeTsKKyAgICBsb25n
IG1fdGltZW91dDsKK307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBQb3NpdGlvbk9wdGlvbnNfaApJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5pZGwJKHJldmlz
aW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmlkbAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFs
bCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IK
KyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAK
KyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBHZW5lcmF0
ZUNvbnN0cnVjdG9yCisgICAgXSBQb3NpdGlvbk9wdGlvbnMgeworICAgICAgICBhdHRyaWJ1dGUg
Ym9vbGVhbiBlbmFibGVIaWdoQWNjdXJhY3k7CisgICAgICAgIGF0dHJpYnV0ZSBsb25nIHRpbWVv
dXQ7CisgICAgfTsKKworfQpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZp
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNl
LmNwcAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNl
LmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
R2VvbG9jYXRpb25TZXJ2aWNlLmgiCisKKyNpbmNsdWRlICJHZW9wb3NpdGlvbi5oIgorI2luY2x1
ZGUgIlBvc2l0aW9uRXJyb3IuaCIKKyNpbmNsdWRlICJQb3NpdGlvbk9wdGlvbnMuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCitHZW9sb2NhdGlvblNlcnZpY2U6Okdlb2xvY2F0aW9uU2Vydmlj
ZShHZW9sb2NhdGlvblNlcnZpY2VDbGllbnQqIGNsaWVudCkKKyAgICA6IG1fZ2VvbG9jYXRpb25T
ZXJ2aWNlQ2xpZW50KGNsaWVudCkKK3sKKyAgICBBU1NFUlQobV9nZW9sb2NhdGlvblNlcnZpY2VD
bGllbnQpOworfQorCit2b2lkIEdlb2xvY2F0aW9uU2VydmljZTo6cG9zaXRpb25DaGFuZ2VkKCkK
K3sKKyAgICBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudC0+Z2VvbG9jYXRpb25TZXJ2aWNlUG9z
aXRpb25DaGFuZ2VkKHRoaXMpOworfQorCit2b2lkIEdlb2xvY2F0aW9uU2VydmljZTo6ZXJyb3JP
Y2N1cnJlZCgpCit7CisgICAgbV9nZW9sb2NhdGlvblNlcnZpY2VDbGllbnQtPmdlb2xvY2F0aW9u
U2VydmljZUVycm9yT2NjdXJyZWQodGhpcyk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
SW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuaAkocmV2aXNpb24gMCkKKysr
IFdlYkNvcmUvcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmgJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8K
KworI2lmbmRlZiBHZW9sb2NhdGlvblNlcnZpY2VfaAorI2RlZmluZSBHZW9sb2NhdGlvblNlcnZp
Y2VfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgR2VvbG9jYXRpb25TZXJ2aWNlOworY2xhc3MgR2VvcG9zaXRpb247CitjbGFz
cyBQb3NpdGlvbkVycm9yOworY2xhc3MgUG9zaXRpb25PcHRpb25zOworCitjbGFzcyBHZW9sb2Nh
dGlvblNlcnZpY2VDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9uU2Vy
dmljZUNsaWVudCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBnZW9sb2NhdGlvblNlcnZpY2VQb3Np
dGlvbkNoYW5nZWQoR2VvbG9jYXRpb25TZXJ2aWNlKikgeyB9CisgICAgdmlydHVhbCB2b2lkIGdl
b2xvY2F0aW9uU2VydmljZUVycm9yT2NjdXJyZWQoR2VvbG9jYXRpb25TZXJ2aWNlKikgeyB9Cit9
OworCitjbGFzcyBHZW9sb2NhdGlvblNlcnZpY2UgOiBwdWJsaWMgTm9uY29weWFibGUgeworcHVi
bGljOgorICAgIHN0YXRpYyBHZW9sb2NhdGlvblNlcnZpY2UqIGNyZWF0ZShHZW9sb2NhdGlvblNl
cnZpY2VDbGllbnQqKTsKKyAgICB2aXJ0dWFsIH5HZW9sb2NhdGlvblNlcnZpY2UoKSB7fQorICAg
IAorICAgIHZpcnR1YWwgYm9vbCBzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyopID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc3RvcFVwZGF0aW5nKCkgPSAwOworICAgIAorICAgIHZpcnR1YWwg
R2VvcG9zaXRpb24qIGxhc3RQb3NpdGlvbigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFBvc2l0
aW9uRXJyb3IqIGxhc3RFcnJvcigpIGNvbnN0ID0gMDsKKworICAgIHZvaWQgcG9zaXRpb25DaGFu
Z2VkKCk7CisgICAgdm9pZCBlcnJvck9jY3VycmVkKCk7CisKK3Byb3RlY3RlZDoKKyAgICBHZW9s
b2NhdGlvblNlcnZpY2UoR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50Kik7CisKK3ByaXZhdGU6Cisg
ICAgR2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50KiBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudDsK
K307CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBHZW9sb2NhdGlv
blNlcnZpY2VfaApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMzc2NjEpCisrKyBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzOSBAQAorMjAwOC0xMC0xNyAgR3JlZyBC
b2xzaW5nYSAgPGJvbHNpbmdhQGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE0NzUKKyAgICAgICAgCisgICAgICAgIFByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdl
b2xvY2F0aW9uIEFQSQorICAgICAgICAKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvZ2VvL2Fw
aS9zcGVjLXNvdXJjZS5odG1sCisKKyAgICAgICAgVGVzdHMgdG8gdmVyaWZ5IEdlb2xvY2F0aW9u
IGlzbid0IGltcGxlbWVudGVkIChzbyB0aGF0IGl0IGRpZG4ndCBsZWFrIGludG8gCisgICAgICAg
IFdlYkNvcmUgZm9yIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IGl0KS4KKworICAgICAg
ICAqIGdlb2xvY2F0aW9uOiBBZGRlZC4KKyAgICAgICAgKiBnZW9sb2NhdGlvbi9nZW9sb2NhdGlv
bi1ub3QtaW1wbGVtZW50ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBnZW9sb2Nh
dGlvbi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQuaHRtbDogQWRkZWQuCisgICAgICAgICog
Z2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tdGVzdC5qczogQ29waWVkIGZyb20gTGF5b3V0VGVzdHMv
bWVkaWEvdmlkZW8tdGVzdC5qcy4KKyAgICAgICAgKHJlc2V0KToKKyAgICAgICAgKGhhbmdlZCk6
CisgICAgICAgICh3YXRjaFBvc2l0aW9uQW5kRW5kKToKKyAgICAgICAgKHdhdGNoUG9zaXRpb24u
X3Bvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAod2F0Y2hQb3NpdGlvbik6CisgICAgICAgICh3
YXRjaFBvc2l0aW9uVGVzdEFuZEVuZCk6CisgICAgICAgICh3YXRjaFBvc2l0aW9uQW5kRmFpbCk6
CisgICAgICAgICh3YXRjaFBvc2l0aW9uQW5kVGVzdC5fcG9zaXRpb25DYWxsYmFjayk6CisgICAg
ICAgICh3YXRjaFBvc2l0aW9uQW5kVGVzdCk6CisgICAgICAgIChnZXRDdXJyZW50UG9zaXRpb25B
bmRFbmQpOgorICAgICAgICAoZ2V0Q3VycmVudFBvc2l0aW9uLl9wb3NpdGlvbkNhbGxiYWNrKToK
KyAgICAgICAgKGdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChnZXRDdXJyZW50UG9zaXRp
b25UZXN0QW5kRW5kKToKKyAgICAgICAgKGdldEN1cnJlbnRQb3NpdGlvbkFuZEZhaWwpOgorICAg
ICAgICAoZ2V0Q3VycmVudFBvc2l0aW9uQW5kVGVzdC5fcG9zaXRpb25DYWxsYmFjayk6CisgICAg
ICAgIChnZXRDdXJyZW50UG9zaXRpb25BbmRUZXN0KToKKyAgICAgICAgKGVuZFRlc3QpOgorICAg
ICAgICAocmVsYXRpdmVVUkwpOgorCiAyMDA4LTEwLTE3ICBQYW1lbGEgR3JlZW5lICA8cGFtQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBGaXggcG90ZW50aWFsIHJhY2UgYnkgcnVubmluZyB0d28g
cGFzc2VzIG9mIHRlc3QgdG8gZGVmZXIgbm90aWZ5RG9uZS4KSW5kZXg6IExheW91dFRlc3RzL2dl
b2xvY2F0aW9uL2dlb2xvY2F0aW9uLW5vdC1pbXBsZW1lbnRlZC1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tbm90LWltcGxlbWVu
dGVkLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2dlb2xvY2F0aW9u
L2dlb2xvY2F0aW9uLW5vdC1pbXBsZW1lbnRlZC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNyBAQAorVEVTVChuYXZpZ2F0b3IuZ2VvbG9jYXRpb24gPT09IHVuZGVmaW5lZCkg
T0sKK1RFU1QobmF2aWdhdG9yLmdlb2xvY2F0aW9uID09IG51bGwpIE9LCitURVNUKGhhc0dlb2xv
Y2F0aW9uUHJvcGVydHkgPT0gZmFsc2UpIE9LCitURVNUKCdnZW9sb2NhdGlvbicgaW4gbmF2aWdh
dG9yID09IGZhbHNlKSBPSworVEVTVChuYXZpZ2F0b3IuaGFzT3duUHJvcGVydHkoJ2dlb2xvY2F0
aW9uJykgPT0gZmFsc2UpIE9LCitFTkQgT0YgVEVTVAorCkluZGV4OiBMYXlvdXRUZXN0cy9nZW9s
b2NhdGlvbi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQuaHRtbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLW5vdC1p
bXBsZW1lbnRlZC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE2IEBACis8Ym9keT48L2Jv
ZHk+Cis8c2NyaXB0IHNyYz1nZW9sb2NhdGlvbi10ZXN0LmpzPjwvc2NyaXB0PgorPHNjcmlwdD4K
K3Rlc3QoIm5hdmlnYXRvci5nZW9sb2NhdGlvbiA9PT0gdW5kZWZpbmVkIik7Cit0ZXN0KCJuYXZp
Z2F0b3IuZ2VvbG9jYXRpb24gPT0gbnVsbCIpOwordmFyIGhhc0dlb2xvY2F0aW9uUHJvcGVydHkg
PSBmYWxzZTsKK2ZvciAodmFyIHByb3BlcnR5IGluIG5hdmlnYXRvcikgeworICAgIGhhc0dlb2xv
Y2F0aW9uUHJvcGVydHkgPSAocHJvcGVydHkgPT0gImdlb2xvY2F0aW9uIik7CisgICAgaWYgKGhh
c0dlb2xvY2F0aW9uUHJvcGVydHkpCisgICAgICAgIGJyZWFrOworfQordGVzdCgiaGFzR2VvbG9j
YXRpb25Qcm9wZXJ0eSA9PSBmYWxzZSIpOwordGVzdCgiJ2dlb2xvY2F0aW9uJyBpbiBuYXZpZ2F0
b3IgPT0gZmFsc2UiKTsKK3Rlc3QoIm5hdmlnYXRvci5oYXNPd25Qcm9wZXJ0eSgnZ2VvbG9jYXRp
b24nKSA9PSBmYWxzZSIpOworZW5kVGVzdCgpOworPC9zY3JpcHQ+CkluZGV4OiBMYXlvdXRUZXN0
cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi10ZXN0LmpzCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLXRlc3QuanMJKHJldmlzaW9uIDM3NjA2KQkoZnJv
bSBMYXlvdXRUZXN0cy9tZWRpYS92aWRlby10ZXN0LmpzOjM3NjA2KQorKysgTGF5b3V0VGVzdHMv
Z2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tdGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDE1OCBAQAoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgIGxheW91dFRl
c3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0
VW50aWxEb25lKCk7Cit9Cit2YXIgdmlkZW87Cit2YXIgbWVkaWE7Cit2YXIgY29uc29sZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChj
b25zb2xlKTsKK3RyeSB7CisgICAgdmlkZW8gPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgndmlkZW8nKVswXTsKKyAgICBpZiAodmlkZW8pCisgICAgICAgIG1lZGlhID0gdmlkZW87Cit9
IGNhdGNoIChleCkgeyB9CisKK2Z1bmN0aW9uIGhhbmdlZCgpCit7CisgICAgY29uc29sZVdyaXRl
KCJGQUlMOiB0aW1lZCBvdXQiKTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7ICAKK30KK3NldFRp
bWVvdXQoaGFuZ2VkLCAxMDAwMCk7CisKK2Z1bmN0aW9uIHRlc3RBbmRFbmQodGVzdEZ1bmNTdHJp
bmcpCit7CisgICAgdGVzdCh0ZXN0RnVuY1N0cmluZywgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHRl
c3QodGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQoreworICAgIGlmIChldmFsKHRlc3RGdW5jU3RyaW5n
KSkKKyAgICAgICAgY29uc29sZVdyaXRlKCJURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIDxz
cGFuIHN0eWxlPSdjb2xvcjpncmVlbic+T0s8L3NwYW4+Iik7CisgICAgZWxzZQorICAgICAgICBj
b25zb2xlV3JpdGUoIlRFU1QoIiArIHRlc3RGdW5jU3RyaW5nICsgIikgPHNwYW4gc3R5bGU9J2Nv
bG9yOnJlZCc+RkFJTDwvc3Bhbj4iKTsgICAgCisKKyAgICBpZiAoZW5kaXQpCisgICAgICAgIGVu
ZFRlc3QoKTsgIAorfQorCitmdW5jdGlvbiB0ZXN0RXhwZWN0ZWQodGVzdEZ1bmNTdHJpbmcsIGV4
cGVjdGVkKQoreworICAgIHRyeSB7CisgICAgICAgIHZhciBvYnNlcnZlZCA9IGV2YWwodGVzdEZ1
bmNTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7CisgICAgICAgIGNvbnNvbGVXcml0ZShleCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgdmFyIG1zZyA9ICJleHBlY3RlZCAi
ICsgdGVzdEZ1bmNTdHJpbmcgKyAiPT0nIiArIGV4cGVjdGVkICsgIicsIG9ic2VydmVkICciICsg
b2JzZXJ2ZWQgKyAiJyI7CisKKyAgICBpZiAob2JzZXJ2ZWQgPT0gZXhwZWN0ZWQpCisgICAgICAg
IGNvbnNvbGVXcml0ZShtc2cgKyAiIC0gPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bh
bj4iKTsKKyAgICBlbHNlCisgICAgICAgIGNvbnNvbGVXcml0ZShtc2cgKyAiIC0gPHNwYW4gc3R5
bGU9J2NvbG9yOnJlZCc+RkFJTDwvc3Bhbj4iKTsKK30KKworZnVuY3Rpb24gcnVuKHRlc3RGdW5j
U3RyaW5nKQoreworICAgIGNvbnNvbGVXcml0ZSgiUlVOKCIgKyB0ZXN0RnVuY1N0cmluZyArICIp
Iik7CisgICAgdHJ5IHsKKyAgICAgICAgZXZhbCh0ZXN0RnVuY1N0cmluZyk7CisgICAgfSBjYXRj
aCAoZXgpIHsKKyAgICAgICAgY29uc29sZVdyaXRlKGV4KTsKKyAgICB9Cit9CisKK2Z1bmN0aW9u
IHdhaXRGb3JFdmVudEFuZEVuZChldmVudE5hbWUsIGZ1bmNTdHJpbmcpCit7CisgICAgd2FpdEZv
ckV2ZW50KGV2ZW50TmFtZSwgZnVuY1N0cmluZywgdHJ1ZSkKK30KKworZnVuY3Rpb24gd2FpdEZv
ckV2ZW50KGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCit7CisgICAgZnVuY3Rpb24gX2V2ZW50Q2Fs
bGJhY2soZXZlbnQpCisgICAgeworICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBldmVu
dE5hbWUgKyAiKSIpOworICAgICAgICAKKyAgICAgICAgaWYgKGZ1bmMpCisgICAgICAgICAgICBm
dW5jKCk7CisgICAgICAgIAorICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0
KCk7ICAgIAorICAgIH0KKworICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBf
ZXZlbnRDYWxsYmFjayk7ICAgIAorfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRUZXN0QW5kRW5k
KGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcpCit7CisgICAgd2FpdEZvckV2ZW50QW5kVGVzdChl
dmVudE5hbWUsIHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsKK30KKworZnVuY3Rpb24gd2FpdEZvckV2
ZW50QW5kRmFpbChldmVudE5hbWUpCit7CisgICAgd2FpdEZvckV2ZW50QW5kVGVzdChldmVudE5h
bWUsICJmYWxzZSIsIHRydWUpOworfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRUZXN0KGV2
ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQoreworICAgIGZ1bmN0aW9uIF9ldmVudENh
bGxiYWNrKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2YWwodGVzdEZ1bmNTdHJpbmcpKQor
ICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZlbnROYW1lICsgIikgVEVTVCgi
ICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPk9LPC9zcGFu
PiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIgKyBl
dmVudE5hbWUgKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIDxzcGFuIHN0eWxlPSdj
b2xvcjpyZWQnPkZBSUw8L3NwYW4+Iik7CisgICAgICAgIAorICAgICAgICBpZiAoZW5kaXQpCisg
ICAgICAgICAgICBlbmRUZXN0KCk7ICAgIAorICAgIH0KKyAgICAKKyAgICBtZWRpYS5hZGRFdmVu
dExpc3RlbmVyKGV2ZW50TmFtZSwgX2V2ZW50Q2FsbGJhY2spOworfQorCitmdW5jdGlvbiB0ZXN0
RXhjZXB0aW9uKHRlc3RTdHJpbmcsIGV4Y2VwdGlvblN0cmluZykKK3sKKyAgICB0cnkgeworICAg
ICAgICBldmFsKHRlc3RTdHJpbmcpOworICAgIH0gY2F0Y2ggKGV4KSB7IAorICAgICAgICBpZiAo
ZXguY29kZSA9PSBldmFsKGV4Y2VwdGlvblN0cmluZykpCisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIlRFU1QoIiArIHRlc3RTdHJpbmcgKyAiKSBUSFJPV1MoIitleGNlcHRpb25TdHJpbmcrIikg
PHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bhbj4iKTsKKyAgICAgICAgZWxzZQorICAg
ICAgICAgICAgY29uc29sZVdyaXRlKCJURVNUKCIgKyB0ZXN0U3RyaW5nICsgIikgVEhST1dTKCIr
ZXhjZXB0aW9uU3RyaW5nKyIpIDxzcGFuIHN0eWxlPSdjb2xvcjpyZWQnPkZBSUw8L3NwYW4+Iik7
ICAgIAorICAgIH0KK30KKwordmFyIHRlc3RFbmRlZCA9IGZhbHNlOworCitmdW5jdGlvbiBlbmRU
ZXN0KCkKK3sKKyAgICBjb25zb2xlV3JpdGUoIkVORCBPRiBURVNUIik7CisgICAgdGVzdEVuZGVk
ID0gdHJ1ZTsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7ICAgICAKK30KKworZnVuY3Rpb24gZW5k
VGVzdExhdGVyKCkKK3sKKyAgICBzZXRUaW1lb3V0KGVuZFRlc3QsIDI1MCk7Cit9CisKK2Z1bmN0
aW9uIGZhaWxUZXN0SW4obXMpCit7CisgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisgICAg
ICAgIGNvbnNvbGVXcml0ZSgiRkFJTDogZGlkIG5vdCBlbmQgZmFzdCBlbm91Z2giKTsKKyAgICAg
ICAgZW5kVGVzdCgpOworICAgIH0sIG1zKTsKK30KKworZnVuY3Rpb24gY29uc29sZVdyaXRlKHRl
eHQpCit7CisgICAgaWYgKHRlc3RFbmRlZCkKKyAgICAgICAgcmV0dXJuOworICAgIGNvbnNvbGUu
aW5uZXJIVE1MICs9IHRleHQgKyAiPGJyPiI7Cit9CisKK2Z1bmN0aW9uIHJlbGF0aXZlVVJMKHVy
bCkKK3sKKyAgICByZXR1cm4gdXJsLnN1YnN0cih1cmwuaW5kZXhPZignL21lZGlhLycpKzcpOwor
fQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL2dlb2xvY2F0
aW9uL2dlb2xvY2F0aW9uLXRlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZ2VvbG9j
YXRpb24vZ2VvbG9jYXRpb24tdGVzdC5qcwkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2dl
b2xvY2F0aW9uL2dlb2xvY2F0aW9uLXRlc3QuanMJKHdvcmtpbmcgY29weSkKQEAgLTIsMjEgKzIs
MjQgQEAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgewogICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50
aWxEb25lKCk7CiB9Ci12YXIgdmlkZW87Ci12YXIgbWVkaWE7Cit2YXIgd2F0Y2hJRCA9IC0xOwor
dmFyIHBhc3NlZFBvc2l0aW9uID0gbnVsbDsKIHZhciBjb25zb2xlID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnZGl2Jyk7CiBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOwotdHJ5
IHsKLSAgICB2aWRlbyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBd
OwotICAgIGlmICh2aWRlbykKLSAgICAgICAgbWVkaWEgPSB2aWRlbzsKLX0gY2F0Y2ggKGV4KSB7
IH0KKworZnVuY3Rpb24gcmVzZXQoKQoreworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgCisg
ICAgICAgIHdhdGNoSUQgPSAtMTsKKyAgICAgICAgcGFzc2VkUG9zaXRpb24gPSBudWxsOworICAg
IH0KK30KIAogZnVuY3Rpb24gaGFuZ2VkKCkKIHsKICAgICBjb25zb2xlV3JpdGUoIkZBSUw6IHRp
bWVkIG91dCIpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAg
IGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsgIAorICAgIHJlc2V0KCk7CiB9CiBz
ZXRUaW1lb3V0KGhhbmdlZCwgMTAwMDApOwogCkBAIC02MywxNiArNjYsMTkgQEAgZnVuY3Rpb24g
cnVuKHRlc3RGdW5jU3RyaW5nKQogICAgIH0KIH0KIAotZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5k
RW5kKGV2ZW50TmFtZSwgZnVuY1N0cmluZykKK2Z1bmN0aW9uIHdhdGNoUG9zaXRpb25BbmRFbmQo
ZnVuY1N0cmluZykKIHsKLSAgICB3YWl0Rm9yRXZlbnQoZXZlbnROYW1lLCBmdW5jU3RyaW5nLCB0
cnVlKQorICAgIHdhdGNoUG9zaXRpb24oZnVuY1N0cmluZywgdHJ1ZSkKIH0KIAotZnVuY3Rpb24g
d2FpdEZvckV2ZW50KGV2ZW50TmFtZSwgZnVuYywgZW5kaXQpCitmdW5jdGlvbiB3YXRjaFBvc2l0
aW9uKGZ1bmMsIGVuZGl0KQogewotICAgIGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQot
ICAgIHsKLSAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgiICsgZXZlbnROYW1lICsgIikiKTsK
KyAgICBmdW5jdGlvbiBfcG9zaXRpb25DYWxsYmFjayhwb3NpdGlvbikKKyAgICB7ICAgICAgICAK
KyAgICAgICAgcGFzc2VkUG9zaXRpb24gPSBwb3NpdGlvbjsKKyAgICAgICAgdGVzdCgicGFzc2Vk
UG9zaXRpb24gPT0gbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmxhc3RQb3NpdGlvbiIpOworICAgICAg
ICAKKyAgICAgICAgY29uc29sZVdyaXRlKCJQT1NJVElPTigiICsgcG9zaXRpb24gKyAiKSIpOwog
ICAgICAgICAKICAgICAgICAgaWYgKGZ1bmMpCiAgICAgICAgICAgICBmdW5jKCk7CkBAIC04MCwz
NCArODYsODkgQEAgZnVuY3Rpb24gd2FpdEZvckV2ZW50KGV2ZW50TmFtZSwgZnVuYywgZQogICAg
ICAgICBpZiAoZW5kaXQpCiAgICAgICAgICAgICBlbmRUZXN0KCk7ICAgIAogICAgIH0KKyAgICAK
KyAgICB3YXRjaElEID0gbmF2aWdhdG9yLmdlb2xvY2F0aW9uLndhdGNoUG9zaXRpb24oX3Bvc2l0
aW9uQ2FsbGJhY2spOworICAgIHRlc3QoIndhdGNoSUQgPiAwIik7Cit9CisKK2Z1bmN0aW9uIHdh
dGNoUG9zaXRpb25UZXN0QW5kRW5kKHRlc3RGdW5jU3RyaW5nKQoreworICAgIHdhdGNoUG9zaXRp
b25BbmRUZXN0KHRlc3RGdW5jU3RyaW5nLCB0cnVlKTsKK30KKworZnVuY3Rpb24gd2F0Y2hQb3Np
dGlvbkFuZEZhaWwoKQoreworICAgIHdhdGNoUG9zaXRpb25BbmRUZXN0KCJmYWxzZSIsIHRydWUp
OworfQorCitmdW5jdGlvbiB3YXRjaFBvc2l0aW9uQW5kVGVzdCh0ZXN0RnVuY1N0cmluZywgZW5k
aXQpCit7CisgICAgZnVuY3Rpb24gX3Bvc2l0aW9uQ2FsbGJhY2socG9zaXRpb24pCisgICAgewor
ICAgICAgICBwYXNzZWRQb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAKKyAgICAgICAgaWYg
KGV2YWwodGVzdEZ1bmNTdHJpbmcpKQorICAgICAgICAgICAgY29uc29sZVdyaXRlKCJQT1NJVElP
TigiICsgcG9zaXRpb24gKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIDxzcGFuIHN0
eWxlPSdjb2xvcjpncmVlbic+T0s8L3NwYW4+Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiUE9TSVRJT04oIiArIHBvc2l0aW9uICsgIikgVEVTVCgiICsgdGVzdEZ1
bmNTdHJpbmcgKyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlMPC9zcGFuPiIpOworCisg
ICAgICAgIGlmIChlbmRpdCkKKyAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCisgICAgfQorICAg
IAorICAgIHdhdGNoSUQgPSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24ud2F0Y2hQb3NpdGlvbihfcG9z
aXRpb25DYWxsYmFjayk7CisgICAgdGVzdCgid2F0Y2hJRCA+IDAiKTsKK30KIAotICAgIG1lZGlh
LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7ICAgIAorZnVuY3Rp
b24gZ2V0Q3VycmVudFBvc2l0aW9uQW5kRW5kKGZ1bmNTdHJpbmcpCit7CisgICAgZ2V0Q3VycmVu
dFBvc2l0aW9uKGZ1bmNTdHJpbmcsIHRydWUpCiB9CiAKLWZ1bmN0aW9uIHdhaXRGb3JFdmVudFRl
c3RBbmRFbmQoZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZykKK2Z1bmN0aW9uIGdldEN1cnJlbnRQ
b3NpdGlvbihmdW5jLCBlbmRpdCkKIHsKLSAgICB3YWl0Rm9yRXZlbnRBbmRUZXN0KGV2ZW50TmFt
ZSwgdGVzdEZ1bmNTdHJpbmcsIHRydWUpOworICAgIGZ1bmN0aW9uIF9wb3NpdGlvbkNhbGxiYWNr
KHBvc2l0aW9uKQorICAgIHsgICAgICAgIAorICAgICAgICBwYXNzZWRQb3NpdGlvbiA9IHBvc2l0
aW9uOworICAgICAgICAKKyAgICAgICAgY29uc29sZVdyaXRlKCJQT1NJVElPTigiICsgcG9zaXRp
b24gKyAiKSIpOworICAgICAgICAKKyAgICAgICAgaWYgKGZ1bmMpCisgICAgICAgICAgICBmdW5j
KCk7CisgICAgICAgIAorICAgICAgICBpZiAoZW5kaXQpCisgICAgICAgICAgICBlbmRUZXN0KCk7
ICAgIAorICAgIH0KKyAgICAKKyAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVudFBv
c2l0aW9uKF9wb3NpdGlvbkNhbGxiYWNrKTsKIH0KIAotZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5k
RmFpbChldmVudE5hbWUpCitmdW5jdGlvbiBnZXRDdXJyZW50UG9zaXRpb25UZXN0QW5kRW5kKHRl
c3RGdW5jU3RyaW5nKQogewotICAgIHdhaXRGb3JFdmVudEFuZFRlc3QoZXZlbnROYW1lLCAiZmFs
c2UiLCB0cnVlKTsKKyAgICBnZXRDdXJyZW50UG9zaXRpb25BbmRUZXN0KHRlc3RGdW5jU3RyaW5n
LCB0cnVlKTsKIH0KIAotZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kVGVzdChldmVudE5hbWUsIHRl
c3RGdW5jU3RyaW5nLCBlbmRpdCkKK2Z1bmN0aW9uIGdldEN1cnJlbnRQb3NpdGlvbkFuZEZhaWwo
KQogewotICAgIGZ1bmN0aW9uIF9ldmVudENhbGxiYWNrKGV2ZW50KQorICAgIGdldEN1cnJlbnRQ
b3NpdGlvbkFuZFRlc3QoImZhbHNlIiwgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIGdldEN1cnJlbnRQ
b3NpdGlvbkFuZFRlc3QodGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQoreworICAgIGZ1bmN0aW9uIF9w
b3NpdGlvbkNhbGxiYWNrKHBvc2l0aW9uKQogICAgIHsKKyAgICAgICAgcGFzc2VkUG9zaXRpb24g
PSBwb3NpdGlvbjsKKyAgICAgICAgCiAgICAgICAgIGlmIChldmFsKHRlc3RGdW5jU3RyaW5nKSkK
LSAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoIiArIGV2ZW50TmFtZSArICIpIFRFU1Qo
IiArIHRlc3RGdW5jU3RyaW5nICsgIikgPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bh
bj4iKTsKKyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiUE9TSVRJT04oIiArIHBvc2l0aW9uICsg
IikgVEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4n
Pk9LPC9zcGFuPiIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVW
RU5UKCIgKyBldmVudE5hbWUgKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIDxzcGFu
IHN0eWxlPSdjb2xvcjpyZWQnPkZBSUw8L3NwYW4+Iik7CisgICAgICAgICAgICBjb25zb2xlV3Jp
dGUoIlBPU0lUSU9OKCIgKyBwb3NpdGlvbiArICIpIFRFU1QoIiArIHRlc3RGdW5jU3RyaW5nICsg
IikgPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+RkFJTDwvc3Bhbj4iKTsKICAgICAgICAgCiAgICAg
ICAgIGlmIChlbmRpdCkKICAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCiAgICAgfQogICAgIAot
ICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFjayk7Cisg
ICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihfcG9zaXRpb25DYWxs
YmFjayk7CiB9CiAKIGZ1bmN0aW9uIHRlc3RFeGNlcHRpb24odGVzdFN0cmluZywgZXhjZXB0aW9u
U3RyaW5nKQpAQCAtMTI4LDggKzE4OSw3IEBAIGZ1bmN0aW9uIGVuZFRlc3QoKQogewogICAgIGNv
bnNvbGVXcml0ZSgiRU5EIE9GIFRFU1QiKTsKICAgICB0ZXN0RW5kZWQgPSB0cnVlOwotICAgIGlm
ICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLm5vdGlmeURvbmUoKTsgICAgIAorICAgIHJlc2V0KCk7CiB9CiAKIGZ1bmN0aW9uIGVuZFRl
c3RMYXRlcigpCkBAIC0xNTQsNSArMjE0LDUgQEAgZnVuY3Rpb24gY29uc29sZVdyaXRlKHRleHQp
CiAKIGZ1bmN0aW9uIHJlbGF0aXZlVVJMKHVybCkKIHsKLSAgICByZXR1cm4gdXJsLnN1YnN0cih1
cmwuaW5kZXhPZignL21lZGlhLycpKzcpOworICAgIHJldHVybiB1cmwuc3Vic3RyKHVybC5pbmRl
eE9mKCcvZ2VvbG9jYXRpb24vJykrMTMpOwogfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
</data>
<flag name="review"
          id="11130"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>24627</attachid>
            <date>2008-10-23 17:53:13 -0700</date>
            <delta_ts>2008-10-24 00:45:06 -0700</delta_ts>
            <desc>updated patch (so ddkilzer can apply it for me)</desc>
            <filename>GeoLocation-WebKit.org.patch.txt</filename>
            <type>text/plain</type>
            <size>112883</size>
            <attacher name="Greg Bolsinga">bolsinga</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3ODMxKQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDgtMTAtMjMgIEdyZWcgQm9s
c2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdl
aW5pZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjE0NzUKKyAgICAgICAgCisgICAgICAgIFByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdlb2xvY2F0
aW9uIEFQSQorICAgICAgICAKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvZ2VvL2FwaS9zcGVj
LXNvdXJjZS5odG1sCisKKyAgICAgICAgKiB3dGYvUGxhdGZvcm0uaDogRU5BQkxFX0dFT0xPQ0FU
SU9OIGRlZmF1bHRzIHRvIDAKKwogMjAwOC0xMC0yMyAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJy
YWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgT2xpdmVyIEh1bnQuCklu
ZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvUGxhdGZvcm0uaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2Ny
aXB0Q29yZS93dGYvUGxhdGZvcm0uaAkocmV2aXNpb24gMzc4MzEpCisrKyBKYXZhU2NyaXB0Q29y
ZS93dGYvUGxhdGZvcm0uaAkod29ya2luZyBjb3B5KQpAQCAtMzUxLDYgKzM1MSwxMCBAQAogI2Rl
ZmluZSBFTkFCTEVfU0FNUExJTkdfVE9PTCAwCiAjZW5kaWYKIAorI2lmICFkZWZpbmVkKEVOQUJM
RV9HRU9MT0NBVElPTikKKyNkZWZpbmUgRU5BQkxFX0dFT0xPQ0FUSU9OIDAKKyNlbmRpZgorCiAv
LyBDVEkgb25seSBzdXBwb3J0cyB4ODYgYXQgdGhlIG1vbWVudCwgYW5kIGhhcyBvbmx5IGJlZW4g
dGVzdGVkIG9uIE1hYyBhbmQgV2luZG93cy4KICNpZiAhZGVmaW5lZChFTkFCTEVfQ1RJKSAmJiBQ
TEFURk9STShYODYpICYmIChQTEFURk9STShNQUMpIHx8IFBMQVRGT1JNKFdJTikpCiAjZGVmaW5l
IEVOQUJMRV9DVEkgMQpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3ODMxKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMjAgQEAKKzIwMDgtMTAtMjMgIEdyZWcgQm9sc2luZ2Eg
IDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NzUK
KyAgICAgICAgCisgICAgICAgIFByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdlb2xvY2F0aW9uIEFQ
SQorICAgICAgICAKKyAgICAgICAgaHR0cDovL2Rldi53My5vcmcvZ2VvL2FwaS9zcGVjLXNvdXJj
ZS5odG1sCisKKyAgICAgICAgVGVzdDogZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tbm90LWltcGxl
bWVudGVkLmh0bWwKKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICog
R05VbWFrZWZpbGUuYW06IEFkZGVkIEdlb2xvY2F0aW9uIHN1cHBvcnQKKyAgICAgICAgKiBXZWJD
b3JlLnBybzogQWRkZWQgR2VvbG9jYXRpb24gc3VwcG9ydAorICAgICAgICAqIFdlYkNvcmUudmNw
cm9qL1dlYkNvcmUudmNwcm9qOiBBZGRlZCBHZW9sb2NhdGlvbiBzdXBwb3J0CisgICAgICAgICog
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOiBBZGRlZCBHZW9sb2NhdGlvbiBzdXBw
b3J0CisgICAgICAgICogV2ViQ29yZVNvdXJjZXMuYmtsOiBBZGRlZCBHZW9sb2NhdGlvbiBzdXBw
b3J0CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OkpTQ3Vz
dG9tUG9zaXRpb25DYWxsYmFjayk6CisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0aW9u
Q2FsbGJhY2s6OmhhbmRsZUV2ZW50KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2suaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0
aW9uQ2FsbGJhY2s6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNDdXN0b21Qb3Np
dGlvbkVycm9yQ2FsbGJhY2suY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkpTQ3VzdG9t
UG9zaXRpb25FcnJvckNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayk6Cisg
ICAgICAgIChXZWJDb3JlOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjazo6aGFuZGxlRXZl
bnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2s6OmNyZWF0ZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcDogbW92
ZSBtYXJrRE9NT2JqZWN0V3JhcHBlciBoZXJlIGZyb20gSlNET01XaW5kb3dDdXN0b20KKyAgICAg
ICAgKFdlYkNvcmU6Om1hcmtET01PYmplY3RXcmFwcGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU0RPTUJpbmRpbmcuaDogbW92ZSBtYXJrRE9NT2JqZWN0V3JhcHBlciBoZXJlIGZyb20gSlNE
T01XaW5kb3dDdXN0b20KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5j
cHA6IG1vdmUgbWFya0RPTU9iamVjdFdyYXBwZXIgdG8gSlNET01CaW5kaW5nCisgICAgICAgICog
YmluZGluZ3MvanMvSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTmF2aWdhdG9yQ3VzdG9tLmNwcDogaGFuZGxlIG1hcmtpbmcgR2VvbG9jYXRpb24KKyAgICAg
ICAgKFdlYkNvcmU6OkpTTmF2aWdhdG9yOjptYXJrKToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OkRvY3VtZW50KToKKyAgICAgICAgKiBk
b20vRG9jdW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpzZXRVc2luZ0dlb2xv
Y2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp1c2luZ0dlb2xvY2F0aW9uKToK
KyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOiBkb24ndCBhZGQgdG8gYmFjayBmb3J3
YXJkIGNhY2hlIGlmIHVzaW5nIEdlb2xvY2F0aW9uCisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6Y2FuQ2FjaGVQYWdlKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2VvTm90aWZpZXI6Okdlb05vdGlm
aWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpHZW9Ob3RpZmllcjo6dGltZXJG
aXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6R2VvbG9jYXRpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmRpc2Nvbm5lY3RGcmFtZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6Okdlb2xvY2F0aW9uOjp3YXRjaFBvc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uOjpjbGVhcldhdGNoKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzdG9w
VXBkYXRpbmdJZkVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzZW5kRXJy
b3JUb09uZVNob3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzZW5kRXJyb3JU
b1dhdGNoZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzZW5kUG9zaXRpb25U
b09uZVNob3RzKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpzZW5kUG9zaXRpb25U
b1dhdGNoZXJzKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpoYW5kbGVFcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRp
b25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uOjpnZW9sb2NhdGlvblNl
cnZpY2VFcnJvck9jY3VycmVkKToKKyAgICAgICAgKiBwYWdlL0dlb2xvY2F0aW9uLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpHZW9sb2NhdGlvbjo6fkdlb2xvY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xv
Y2F0aW9uOjpsYXN0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6R2VvbG9jYXRpb246Okdl
b05vdGlmaWVyOjpjcmVhdGUpOgorICAgICAgICAqIHBhZ2UvR2VvbG9jYXRpb24uaWRsOiBBZGRl
ZC4KKyAgICAgICAgKiBwYWdlL0dlb3Bvc2l0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpHZW9wb3NpdGlvbjo6dG9TdHJpbmcpOgorICAgICAgICAqIHBhZ2UvR2VvcG9zaXRpb24u
aDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjpsYXRpdHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpH
ZW9wb3NpdGlvbjo6bG9uZ2l0dWRlKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjph
bHRpdHVkZSk6CisgICAgICAgIChXZWJDb3JlOjpHZW9wb3NpdGlvbjo6YWNjdXJhY3kpOgorICAg
ICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246OmFsdGl0dWRlQWNjdXJhY3kpOgorICAgICAgICAo
V2ViQ29yZTo6R2VvcG9zaXRpb246OmhlYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9z
aXRpb246OnZlbG9jaXR5KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb3Bvc2l0aW9uOjp0aW1lc3Rh
bXApOgorICAgICAgICAoV2ViQ29yZTo6R2VvcG9zaXRpb246Okdlb3Bvc2l0aW9uKToKKyAgICAg
ICAgKiBwYWdlL0dlb3Bvc2l0aW9uLmlkbDogQWRkZWQuCisgICAgICAgICogcGFnZS9OYXZpZ2F0
b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpkaXNjb25uZWN0RnJhbWUpOiBk
aXNjb25uZWN0IEdlb2xvY2F0aW9uCisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6Omdlb2xv
Y2F0aW9uKTogYWNjZXNzb3IgZm9yIEdlb2xvY2F0aW9uCisgICAgICAgICogcGFnZS9OYXZpZ2F0
b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvcjo6b3B0aW9uYWxHZW9sb2NhdGlvbik6
IGFjY2Vzc29yIGZvciBHZW9sb2NhdGlvbgorICAgICAgICAqIHBhZ2UvTmF2aWdhdG9yLmlkbDog
YWNjZXNzb3IgZm9yIEdlb2xvY2F0aW9uCisgICAgICAgICogcGFnZS9Qb3NpdGlvbkNhbGxiYWNr
Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25DYWxsYmFjazo6flBvc2l0aW9u
Q2FsbGJhY2spOgorICAgICAgICAqIHBhZ2UvUG9zaXRpb25DYWxsYmFjay5pZGw6IEFkZGVkLgor
ICAgICAgICAqIHBhZ2UvUG9zaXRpb25FcnJvci5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OlBvc2l0aW9uRXJyb3I6Oik6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbkVycm9yOjpjcmVh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvcjo6Y29kZSk6CisgICAgICAgIChX
ZWJDb3JlOjpQb3NpdGlvbkVycm9yOjptZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0
aW9uRXJyb3I6OlBvc2l0aW9uRXJyb3IpOgorICAgICAgICAqIHBhZ2UvUG9zaXRpb25FcnJvci5p
ZGw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6UG9zaXRpb25FcnJvckNhbGxiYWNrOjp+UG9zaXRpb25FcnJv
ckNhbGxiYWNrKToKKyAgICAgICAgKiBwYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGw6IEFk
ZGVkLgorICAgICAgICAqIHBhZ2UvUG9zaXRpb25PcHRpb25zLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6UG9zaXRpb25PcHRpb25zOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb25PcHRpb25zOjplbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6UG9z
aXRpb25PcHRpb25zOjpzZXRFbmFibGVIaWdoQWNjdXJhY3kpOgorICAgICAgICAoV2ViQ29yZTo6
UG9zaXRpb25PcHRpb25zOjp0aW1lb3V0KToKKyAgICAgICAgKFdlYkNvcmU6OlBvc2l0aW9uT3B0
aW9uczo6c2V0VGltZW91dCk6CisgICAgICAgIChXZWJDb3JlOjpQb3NpdGlvbk9wdGlvbnM6OlBv
c2l0aW9uT3B0aW9ucyk6CisgICAgICAgICogcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaWRsOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZTo6R2VvbG9jYXRpb25TZXJ2aWNlKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZTo6cG9zaXRpb25DaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZTo6ZXJyb3JPY2N1cnJlZCk6Cisg
ICAgICAgICogcGxhdGZvcm0vR2VvbG9jYXRpb25TZXJ2aWNlLmg6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6R2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50Ojp+R2VvbG9jYXRpb25TZXJ2aWNlQ2xp
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0aW9uU2VydmljZUNsaWVudDo6Z2VvbG9j
YXRpb25TZXJ2aWNlUG9zaXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okdlb2xvY2F0
aW9uU2VydmljZUNsaWVudDo6Z2VvbG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpHZW9sb2NhdGlvblNlcnZpY2U6On5HZW9sb2NhdGlvblNlcnZpY2UpOgor
CiAyMDA4LTEwLTIzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZyB3aXRoIG5vIGhlc2l0YXRpb24uCkluZGV4OiBXZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9EZXJpdmVkU291cmNl
cy5tYWtlCShyZXZpc2lvbiAzNzgzMSkKKysrIFdlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQko
d29ya2luZyBjb3B5KQpAQCAtOTMsNiArOTMsOCBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBFdmVu
dFRhcmdldE5vZGUgXAogICAgIEZpbGUgXAogICAgIEZpbGVMaXN0IFwKKyAgICBHZW9sb2NhdGlv
biBcCisgICAgR2VvcG9zaXRpb24gXAogICAgIEhUTUxBbmNob3JFbGVtZW50IFwKICAgICBIVE1M
QXBwbGV0RWxlbWVudCBcCiAgICAgSFRNTEFyZWFFbGVtZW50IFwKQEAgLTE4MCw2ICsxODIsMTAg
QEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgT3ZlcmZsb3dFdmVudCBcCiAgICAgUGx1Z2luIFwKICAg
ICBQbHVnaW5BcnJheSBcCisgICAgUG9zaXRpb25DYWxsYmFjayBcCisgICAgUG9zaXRpb25FcnJv
ciBcCisgICAgUG9zaXRpb25FcnJvckNhbGxiYWNrIFwKKyAgICBQb3NpdGlvbk9wdGlvbnMgXAog
ICAgIFByb2Nlc3NpbmdJbnN0cnVjdGlvbiBcCiAgICAgUHJvZ3Jlc3NFdmVudCBcCiAgICAgUkdC
Q29sb3IgXApJbmRleDogV2ViQ29yZS9HTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL0dOVW1ha2VmaWxlLmFtCShyZXZpc2lvbiAzNzgzMSkKKysrIFdlYkNvcmUvR05VbWFrZWZp
bGUuYW0JKHdvcmtpbmcgY29weSkKQEAgLTMyNSw2ICszMjUsMTAgQEAgd2ViY29yZV9zb3VyY2Vz
ICs9IFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3Vz
dG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0NsaXBib2FyZEN1c3RvbS5jcHAgXAog
CVdlYkNvcmUvYmluZGluZ3MvanMvSlNDb25zb2xlQ3VzdG9tLmNwcCBcCisJV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwIFwKKwlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tVm9pZENhbGxiYWNrLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVZv
aWRDYWxsYmFjay5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3VzdG9tWFBhdGhOU1Jlc29s
dmVyLmNwcCBcCkBAIC0zNDksNiArMzUzLDcgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJD
b3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0QmFzZS5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRO
b2RlQ3VzdG9tLmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dlb2xvY2F0aW9uQ3VzdG9t
LmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uLmNwcCBcCiAJ
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uLmggXAogCVdlYkNvcmUvYmlu
ZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAgXApAQCAtMTE5MCw2ICsxMTk1
LDEwIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5oIFwK
IAlXZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcCBcCiAJV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5o
IFwKKwlXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwIFwKKwlXZWJDb3JlL3BhZ2UvR2VvbG9j
YXRpb24uaCBcCisJV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmNwcCBcCisJV2ViQ29yZS9wYWdl
L0dlb3Bvc2l0aW9uLmggXAogCVdlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcCBcCiAJV2ViQ29yZS9w
YWdlL0hpc3RvcnkuaCBcCiAJV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcCBcCkBAIC0xMjAyLDYg
KzEyMTEsMTAgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlXZWJDb3JlL3BhZ2UvUGFnZS5oIFwK
IAlXZWJDb3JlL3BhZ2UvUGFnZUdyb3VwLmNwcCBcCiAJV2ViQ29yZS9wYWdlL1BhZ2VHcm91cC5o
IFwKKwlXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5oIFwKKwlXZWJDb3JlL3BhZ2UvUG9z
aXRpb25FcnJvci5oIFwKKwlXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmggXAor
CVdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaCBcCiAJV2ViQ29yZS9wYWdlL1ByaW50Q29u
dGV4dC5jcHAgXAogCVdlYkNvcmUvcGFnZS9QcmludENvbnRleHQuaCBcCiAJV2ViQ29yZS9wYWdl
L1NjcmVlbi5jcHAgXApAQCAtMTI0Nyw2ICsxMjYwLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlXZWJDb3JlL3BsYXRmb3JtL0ZpbGVDaG9vc2VyLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vRmls
ZVN5c3RlbS5oIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0Zsb2F0Q29udmVyc2lvbi5oIFwKKwlXZWJD
b3JlL3BsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZS5jcHAgXAorCVdlYkNvcmUvcGxhdGZvcm0v
R2VvbG9jYXRpb25TZXJ2aWNlLmggXAogCVdlYkNvcmUvcGxhdGZvcm0vSG9zdFdpbmRvdy5oIFwK
IAlXZWJDb3JlL3BsYXRmb3JtL0tVUkwuY3BwIFwKIAlXZWJDb3JlL3BsYXRmb3JtL0tVUkwuaCBc
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvV2ViQ29y
ZS5wcm8JKHJldmlzaW9uIDM3ODMxKQorKysgV2ViQ29yZS9XZWJDb3JlLnBybwkod29ya2luZyBj
b3B5KQpAQCAtNzc3LDYgKzc3Nyw4IEBAIFNPVVJDRVMgKz0gXAogICAgIHBhZ2UvRnJhbWUuY3Bw
IFwKICAgICBwYWdlL0ZyYW1lVHJlZS5jcHAgXAogICAgIHBhZ2UvRnJhbWVWaWV3LmNwcCBcCisg
ICAgcGFnZS9HZW9sb2NhdGlvbi5jcHAgXAorICAgIHBhZ2UvR2VvcG9zaXRpb24uY3BwIFwKICAg
ICBwYWdlL0hpc3RvcnkuY3BwIFwKICAgICBwYWdlL0xvY2F0aW9uLmNwcCBcCiAgICAgcGFnZS9N
b3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzLmNwcCBcCkBAIC04MDQsNiArODA2LDcgQEAgU09V
UkNFUyArPSBcCiAgICAgcGxhdGZvcm0vRHJhZ0RhdGEuY3BwIFwKICAgICBwbGF0Zm9ybS9EcmFn
SW1hZ2UuY3BwIFwKICAgICBwbGF0Zm9ybS9GaWxlQ2hvb3Nlci5jcHAgXAorICAgIHBsYXRmb3Jt
L0dlb2xvY2F0aW9uU2VydmljZS5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnREZXNj
cmlwdGlvbi5jcHAgXAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRGYW1pbHkuY3BwIFwKICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy9BZmZpbmVUcmFuc2Zvcm0uY3BwIFwKQEAgLTExOTksNyArMTIw
MiwxMCBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfREFUQUJBU0U9MSkgewogICAgICAgICBi
aW5kaW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uRXJyb3JDYWxsYmFjay5jcHAgXAogICAg
ICAgICBiaW5kaW5ncy9qcy9KU0RhdGFiYXNlQ3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdz
L2pzL0pTU1FMUmVzdWx0U2V0Um93TGlzdEN1c3RvbS5jcHAgXAotICAgICAgICBiaW5kaW5ncy9q
cy9KU1NRTFRyYW5zYWN0aW9uQ3VzdG9tLmNwcAorICAgICAgICBiaW5kaW5ncy9qcy9KU1NRTFRy
YW5zYWN0aW9uQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25D
dXN0b20uY3BwIFwKKyAgICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNr
LmNwcCBcCisgICAgICAgIGJpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
LmNwcAogCiAgICAgSURMX0JJTkRJTkdTICs9IFwKICAgICAgICAgc3RvcmFnZS9EYXRhYmFzZS5p
ZGwgXApJbmRleDogV2ViQ29yZS9XZWJDb3JlU291cmNlcy5ia2wKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9XZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDM3ODMxKQorKysgV2ViQ29yZS9XZWJD
b3JlU291cmNlcy5ia2wJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDggQEAgVGhpcyBmaWxl
IGNvbnRhaW5zIHRoZSBsaXN0IG9mIGZpbGVzIG5lZQogICAgICAgICBiaW5kaW5ncy9qcy9KU0NT
U1J1bGVDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTQ1NTU3R5bGVEZWNsYXJhdGlv
bkN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNDU1NWYWx1ZUN1c3RvbS5jcHAKKyAg
ICAgICAgYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcAorICAgICAgICBi
aW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRDYWxsYmFjay5jcHAKICAgICAgICAgYmluZGlu
Z3MvanMvSlNDdXN0b21TUUxTdGF0ZW1lbnRFcnJvckNhbGxiYWNrLmNwcAogICAgICAgICBiaW5k
aW5ncy9qcy9KU0N1c3RvbVNRTFRyYW5zYWN0aW9uQ2FsbGJhY2suY3BwCkBAIC02MCw2ICs2Miw3
IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgYmlu
ZGluZ3MvanMvSlNFdmVudEN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldC5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3Bw
CisgICAgICAgIGJpbmRpbmdzL2pzL0pTR2VvbG9jYXRpb25DdXN0b20uY3BwCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pT
SGlzdG9yeUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1MQXBwbGV0RWxlbWVu
dEN1c3RvbS5jcHAKQEAgLTIzOSw2ICsyNDIsOCBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxp
c3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNFdmVudFRh
cmdldE5vZGUuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGaWxlLmNwcAog
ICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmlsZUxpc3QuY3BwCisgICAgICAgIERl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNHZW9sb2NhdGlvbi5jcHAKKyAgICAgICAgRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0dlb3Bvc2l0aW9uLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTSFRNTEFuY2hvckVsZW1lbnQuY3BwCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNIVE1MQXBwbGV0RWxlbWVudC5jcHAKICAgICAgICAgRGVyaXZlZFNvdXJjZXMvV2Vi
Q29yZS9KU0hUTUxBcmVhRWxlbWVudC5jcHAKQEAgLTMyMyw2ICszMjgsOCBAQCBUaGlzIGZpbGUg
Y29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMgbmVlCiAgICAgICAgIERlcml2ZWRTb3VyY2VzL1dl
YkNvcmUvSlNPdmVyZmxvd0V2ZW50LmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTUGx1Z2luLmNwcAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUGx1Z2luQXJy
YXkuY3BwCisgICAgICAgIERlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNQb3NpdGlvbkVycm9yLmNw
cAorICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUG9zaXRpb25PcHRpb25zLmNwcAog
ICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUHJvY2Vzc2luZ0luc3RydWN0aW9uLmNw
cAogICAgICAgICBEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTUHJvZ3Jlc3NFdmVudC5jcHAKICAg
ICAgICAgRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU1JhbmdlLmNwcApAQCAtNjcwLDYgKzY3Nyw4
IEBAIFRoaXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgcGFn
ZS9GcmFtZS5jcHAKICAgICAgICAgcGFnZS9GcmFtZVRyZWUuY3BwCiAgICAgICAgIHBhZ2UvRnJh
bWVWaWV3LmNwcAorICAgICAgICBwYWdlL0dlb2xvY2F0aW9uLmNwcAorICAgICAgICBwYWdlL0dl
b3Bvc2l0aW9uLmNwcAogICAgICAgICBwYWdlL0hpc3RvcnkuY3BwCiAgICAgICAgIHBhZ2UvTG9j
YXRpb24uY3BwCiAgICAgICAgIHBhZ2UvTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cy5jcHAK
QEAgLTY5Myw2ICs3MDIsNyBAQCBUaGlzIGZpbGUgY29udGFpbnMgdGhlIGxpc3Qgb2YgZmlsZXMg
bmVlCiAgICAgICAgIHBsYXRmb3JtL0RlcHJlY2F0ZWRWYWx1ZUxpc3RJbXBsLmNwcAogICAgICAg
ICBwbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCiAgICAgICAgIHBsYXRmb3JtL0ZpbGVDaG9vc2VyLmNw
cAorICAgICAgICBwbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuY3BwCiAgICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL0ZvbnQuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL0ZvbnRDYWNo
ZS5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvRm9udERhdGEuY3BwCkluZGV4OiBXZWJD
b3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
V2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDM3ODMxKQorKysgV2ViQ29y
ZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjgwLDYg
KzY4MCwxNCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQogCQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQ
YXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2Vz
XEpTR2VvbG9jYXRpb24uaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlS
ZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZl
ZFNvdXJjZXNcSlNHZW9wb3NpdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxl
DQogCQkJCVJlbGF0aXZlUGF0aD0iJChXZWJLaXRPdXRwdXREaXIpXG9ialwkKFByb2plY3ROYW1l
KVxEZXJpdmVkU291cmNlc1xKU0V2ZW50LmgiDQogCQkJCT4NCiAJCQk8L0ZpbGU+DQpAQCAtMTA0
MCw2ICsxMDQ4LDE0IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxh
dGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVyaXZlZFNv
dXJjZXNcSlNQb3NpdGlvbkVycm9yLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJPEZpbGUN
CisJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQoUHJvamVjdE5hbWUp
XERlcml2ZWRTb3VyY2VzXEpTUG9zaXRpb25PcHRpb25zLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+
DQorCQkJPEZpbGUNCiAJCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTT3ZlcmZsb3dFdmVudC5oIg0KIAkJCQk+DQog
CQkJPC9GaWxlPg0KQEAgLTIyNjAsNiArMjI3NiwzOCBAQAogCQkJCT4NCiAJCQk8L0ZpbGU+DQog
CQkJPEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXEdlb2xvY2F0aW9uLmNwcCINCisJ
CQkJPg0KKwkJCQk8RmlsZUNvbmZpZ3VyYXRpb24NCisJCQkJCU5hbWU9IlJlbGVhc2VfUEdPfFdp
bjMyIg0KKwkJCQkJPg0KKwkJCQkJPFRvb2wNCisJCQkJCQlOYW1lPSJWQ0NMQ29tcGlsZXJUb29s
Ig0KKwkJCQkJCVdob2xlUHJvZ3JhbU9wdGltaXphdGlvbj0idHJ1ZSINCisJCQkJCS8+DQorCQkJ
CTwvRmlsZUNvbmZpZ3VyYXRpb24+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0
aXZlUGF0aD0iLi5ccGFnZVxHZW9sb2NhdGlvbi5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJ
CTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGFnZVxHZW9wb3NpdGlvbi5jcHAiDQorCQkJ
CT4NCisJCQkJPEZpbGVDb25maWd1cmF0aW9uDQorCQkJCQlOYW1lPSJSZWxlYXNlX1BHT3xXaW4z
MiINCisJCQkJCT4NCisJCQkJCTxUb29sDQorCQkJCQkJTmFtZT0iVkNDTENvbXBpbGVyVG9vbCIN
CisJCQkJCQlXaG9sZVByb2dyYW1PcHRpbWl6YXRpb249InRydWUiDQorCQkJCQkvPg0KKwkJCQk8
L0ZpbGVDb25maWd1cmF0aW9uPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBhZ2VcR2VvcG9zaXRpb24uaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8
RmlsZQ0KIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcSGlzdG9yeS5jcHAiDQogCQkJCT4NCiAJ
CQkJPEZpbGVDb25maWd1cmF0aW9uDQpAQCAtMjM4OCw2ICsyNDM2LDIyIEBACiAJCQkJPg0KIAkJ
CTwvRmlsZT4NCiAJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcUG9zaXRpb25D
YWxsYmFjay5oIg0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZl
UGF0aD0iLi5ccGFnZVxQb3NpdGlvbkVycm9yLmgiDQorCQkJCT4NCisJCQk8L0ZpbGU+DQorCQkJ
PEZpbGUNCisJCQkJUmVsYXRpdmVQYXRoPSIuLlxwYWdlXFBvc2l0aW9uRXJyb3JDYWxsYmFjay5o
Ig0KKwkJCQk+DQorCQkJPC9GaWxlPg0KKwkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5c
cGFnZVxQb3NpdGlvbk9wdGlvbnMuaCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0K
IAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHBhZ2VcU2NyZWVuLmNwcCINCiAJCQkJPg0KIAkJCQk8Rmls
ZUNvbmZpZ3VyYXRpb24NCkBAIC0zMDQwLDYgKzMxMDQsMTQgQEAKIAkJCQk+DQogCQkJPC9GaWxl
Pg0KIAkJCTxGaWxlDQorCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cR2VvbG9jYXRpb25T
ZXJ2aWNlLmNwcCINCisJCQkJPg0KKwkJCTwvRmlsZT4NCisJCQk8RmlsZQ0KKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHBsYXRmb3JtXEdlb2xvY2F0aW9uU2VydmljZS5oIg0KKwkJCQk+DQorCQkJPC9G
aWxlPg0KKwkJCTxGaWxlDQogCQkJCVJlbGF0aXZlUGF0aD0iLi5ccGxhdGZvcm1cSG9zdFdpbmRv
dy5oIg0KIAkJCQk+DQogCQkJPC9GaWxlPg0KQEAgLTEzMjAxLDYgKzEzMjczLDE0IEBACiAJCQkJ
CT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwIg0KKwkJCQkJPg0KKwkJCQk8L0Zp
bGU+DQorCQkJCTxGaWxlDQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTQ3Vz
dG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmNwcCINCisJCQkJCT4NCisJCQkJPC9GaWxlPg0KKwkJ
CQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0N1c3RvbVNRTFN0
YXRlbWVudENhbGxiYWNrLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KQEAgLTEzMzM3LDYg
KzEzNDE3LDEwIEBACiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcCINCisJCQkJ
CT4NCisJCQkJPC9GaWxlPg0KKwkJCQk8RmlsZQ0KIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5k
aW5nc1xqc1xKU0hpc3RvcnlDdXN0b20uY3BwIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQpJbmRl
eDogV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM3
ODMxKQorKysgV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTQyMzgsNiArNDIzOCwyOSBAQAogCQlGOTE2QzQ4RDBEQjUxMEY4MDA3NkNE
ODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjkxNkM0OEIwREI1MTBGODAwNzZDRDgzIC8q
IEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmNwcCAqLzsgfTsKIAkJRjkxNkM0OEUwREI1
MTBGODAwNzZDRDgzIC8qIEpTWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGOTE2QzQ4QzBEQjUxMEY4MDA3
NkNEODMgLyogSlNYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaCAqLzsgfTsKIAkJRjlGMEVE
N0EwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjlGMEVENzcwREI1MENB
MjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJvZ3Jlc3NFdmVudC5oICovOyB9OworCQlGRTgw
RDdBNzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0EyMEU5QzFF
RDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwICovOyB9OworCQlGRTgw
RDdBODBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBMzBFOUMxRUQy
MDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrLmggKi87IH07CisJCUZFODBEN0E5
MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdBNDBFOUMx
RUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwICovOyB9Owor
CQlGRTgwRDdBQTBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBE
N0E1MEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICov
OyB9OworCQlGRTgwRDdBQjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdB
NjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHAgKi87IH07CisJCUZF
ODBEN0M1MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwRDdCNzBFOUMxRjI1MDAwRDZGNzUg
LyogR2VvbG9jYXRpb24uY3BwICovOyB9OworCQlGRTgwRDdDNjBFOUMxRjI1MDAwRDZGNzUgLyog
R2VvbG9jYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEZFODBEN0I4MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKCk7IH07IH07CisJCUZFODBEN0M4MEU5QzFGMjUwMDBENkY3NSAv
KiBHZW9wb3NpdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGRTgwRDdCQTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uY3BwICovOyB9
OworCQlGRTgwRDdDOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRpb24uaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JCMEU5QzFGMjUwMDBE
NkY3NSAvKiBHZW9wb3NpdGlvbi5oICovOyB9OworCQlGRTgwRDdDQjBFOUMxRjI1MDAwRDZGNzUg
LyogUG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU4MEQ3QkQwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2su
aCAqLzsgfTsKKwkJRkU4MEQ3Q0QwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0JGMEU5
QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmggKi87IH07CisJCUZFODBEN0NGMEU5QzFG
MjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZFODBEN0MxMEU5QzFGMjUwMDBENkY3NSAvKiBQ
b3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLzsgfTsKKwkJRkU4MEQ3RDEwRTlDMUYyNTAwMEQ2Rjc1
IC8qIFBvc2l0aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRkU4MEQ3QzMwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5o
ICovOyB9OworCQlGRTgwREE2MzBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE1RjBF
OUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5jcHAgKi87IH07CisJCUZFODBEQTY0MEU5
QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2MDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9s
b2NhdGlvbi5oICovOyB9OworCQlGRTgwREE2NTBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3Np
dGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
RTgwREE2MTBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5jcHAgKi87IH07CisJCUZF
ODBEQTY2MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUg
LyogSlNHZW9wb3NpdGlvbi5oICovOyB9OworCQlGRTgwREE3MTBFOUM0NzJGMDAwRDZGNzUgLyog
SlNQb3NpdGlvbkVycm9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEZFODBEQTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3Bw
ICovOyB9OworCQlGRTgwREE3MjBFOUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RTBF
OUM0NzJGMDAwRDZGNzUgLyogSlNQb3NpdGlvbkVycm9yLmggKi87IH07CisJCUZFODBEQTczMEU5
QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9ucy5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTgwREE2RjBFOUM0NzJGMDAwRDZGNzUgLyog
SlNQb3NpdGlvbk9wdGlvbnMuY3BwICovOyB9OworCQlGRTgwREE3NDBFOUM0NzJGMDAwRDZGNzUg
LyogSlNQb3NpdGlvbk9wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEZFODBEQTcwMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9u
cy5oICovOyB9OworCQlGRUFCOTAxMjBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2
aWNlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEZF
QUI5MDEwMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuY3BwICovOyB9Owor
CQlGRUFCOTAxMzBFQTUxQjlDMDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRUFCOTAxMTBFQTUxQjlD
MDA2MzQ4QzMgLyogR2VvbG9jYXRpb25TZXJ2aWNlLmggKi87IH07CiAvKiBFbmQgUEJYQnVpbGRG
aWxlIHNlY3Rpb24gKi8KIAogLyogQmVnaW4gUEJYQ29udGFpbmVySXRlbVByb3h5IHNlY3Rpb24g
Ki8KQEAgLTg4NzEsNiArODg5NCwzNSBAQAogCQlGOUYwRUQ3NzBEQjUwQ0EyMDBEMTZEQjkgLyog
WE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBYTUxIdHRwUmVxdWVzdFByb2dyZXNzRXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJRjlGMEVENzgwREI1MENBMjAwRDE2REI5IC8qIFhNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFhNTEh0dHBSZXF1ZXN0UHJv
Z3Jlc3NFdmVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFNDlFRjk3MERD
NTE0NjIwMDQyNjZFMSAvKiBEYXNoYm9hcmRTdXBwb3J0Q1NTUHJvcGVydHlOYW1lcy5pbiAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQ7IHBhdGggPSBEYXNoYm9hcmRTdXBwb3J0Q1NTUHJvcGVydHlOYW1lcy5pbjsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QTIwRTlDMUVEMjAwMEQ2Rjc1IC8q
IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlGRTgwRDdBMzBFOUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlv
bkNhbGxiYWNrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQ3VzdG9tUG9z
aXRpb25DYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBNDBF
OUMxRUQyMDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2Fs
bGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdBNTBFOUMxRUQy
MDAwRDZGNzUgLyogSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QTYwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpT
R2VvbG9jYXRpb25DdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gSlNHZW9sb2NhdGlvbkN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUZFODBEN0I3MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHZW9sb2NhdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUZFODBEN0I4MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9sb2NhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBHZW9sb2NhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCOTBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9j
YXRpb24uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEdlb2xvY2F0aW9uLmlkbDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkEwRTlDMUYyNTAwMEQ2Rjc1IC8qIEdlb3Bv
c2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEdlb3Bvc2l0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkIwRTlDMUYyNTAw
MEQ2Rjc1IC8qIEdlb3Bvc2l0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEdlb3Bvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0JDMEU5
QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0g
R2VvcG9zaXRpb24uaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdCRDBF
OUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25DYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBQb3NpdGlvbkNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUZFODBEN0JFMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHRleHQ7IHBhdGggPSBQb3NpdGlvbkNhbGxiYWNrLmlkbDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MEQ3QkYwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uRXJy
b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25FcnJvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwRDdDMDBFOUMxRjI1MDAwRDZGNzUgLyog
UG9zaXRpb25FcnJvci5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUG9zaXRpb25FcnJvci5p
ZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0MxMEU5QzFGMjUwMDBENkY3
NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUG9zaXRpb25FcnJvckNhbGxiYWNrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUZFODBEN0MyMEU5QzFGMjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBvc2l0aW9uRXJyb3JDYWxsYmFjay5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0MzMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbk9wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9zaXRpb25P
cHRpb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEN0M0MEU5QzFGMjUw
MDBENkY3NSAvKiBQb3NpdGlvbk9wdGlvbnMuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFBv
c2l0aW9uT3B0aW9ucy5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTVG
MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VvbG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlGRTgwREE2MDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dlb2xvY2F0aW9uLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBEQTYxMEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bv
c2l0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2VvcG9z
aXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTgwREE2MjBFOUM0NzAz
MDAwRDZGNzUgLyogSlNHZW9wb3NpdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0dlb3Bvc2l0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFODBE
QTZEMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNQb3NpdGlvbkVycm9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25F
cnJvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1Bvc2l0aW9uRXJyb3Iu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkU4MERBNkYwRTlDNDcyRjAwMEQ2Rjc1
IC8qIEpTUG9zaXRpb25PcHRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTUG9zaXRpb25PcHRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJRkU4MERBNzAwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRpb25zLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUG9zaXRpb25PcHRpb25zLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFQUI5MDEwMEVBNTFCOUMwMDYzNDhDMyAvKiBHZW9sb2Nh
dGlvblNlcnZpY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gR2Vv
bG9jYXRpb25TZXJ2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRkVBQjkw
MTEwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBHZW9sb2NhdGlvblNlcnZpY2UuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIC8qIEVuZCBQQlhGaWxlUmVmZXJlbmNlIHNlY3Rpb24gKi8KIAogLyogQmVn
aW4gUEJYRnJhbWV3b3Jrc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwpAQCAtOTYyMyw2ICs5Njc1LDEy
IEBACiAJCQkJNjVBMjE0ODMwOTdBM0Y1MzAwQjkwNTBBIC8qIEZyYW1lVHJlZS5oICovLAogCQkJ
CTY1Q0JGRUY3MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuY3BwICovLAogCQkJCTY1Q0JG
RUY4MDk3NEY2MDcwMDFEQUMyNSAvKiBGcmFtZVZpZXcuaCAqLywKKwkJCQlGRTgwRDdCNzBFOUMx
RjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uY3BwICovLAorCQkJCUZFODBEN0I4MEU5QzFGMjUw
MDBENkY3NSAvKiBHZW9sb2NhdGlvbi5oICovLAorCQkJCUZFODBEN0I5MEU5QzFGMjUwMDBENkY3
NSAvKiBHZW9sb2NhdGlvbi5pZGwgKi8sCisJCQkJRkU4MEQ3QkEwRTlDMUYyNTAwMEQ2Rjc1IC8q
IEdlb3Bvc2l0aW9uLmNwcCAqLywKKwkJCQlGRTgwRDdCQjBFOUMxRjI1MDAwRDZGNzUgLyogR2Vv
cG9zaXRpb24uaCAqLywKKwkJCQlGRTgwRDdCQzBFOUMxRjI1MDAwRDZGNzUgLyogR2VvcG9zaXRp
b24uaWRsICovLAogCQkJCUJDOTREMTUwMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmNwcCAq
LywKIAkJCQlCQzk0RDE1MTBDMjc1QzhCMDA2QkM2MTcgLyogSGlzdG9yeS5oICovLAogCQkJCUJD
OTREMTUyMEMyNzVDOEIwMDZCQzYxNyAvKiBIaXN0b3J5LmlkbCAqLywKQEAgLTk2MzgsNiArOTY5
NiwxNCBAQAogCQkJCTY1QTIxNDY3MDk3QTMyOTEwMEI5MDUwQSAvKiBQYWdlLmggKi8sCiAJCQkJ
OTMwMkIwQkMwRDc5RjgyOTAwQzdFRTgzIC8qIFBhZ2VHcm91cC5jcHAgKi8sCiAJCQkJOTMwMkIw
QkUwRDc5RjgyQzAwQzdFRTgzIC8qIFBhZ2VHcm91cC5oICovLAorCQkJCUZFODBEN0JEMEU5QzFG
MjUwMDBENkY3NSAvKiBQb3NpdGlvbkNhbGxiYWNrLmggKi8sCisJCQkJRkU4MEQ3QkUwRTlDMUYy
NTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJhY2suaWRsICovLAorCQkJCUZFODBEN0JGMEU5QzFG
MjUwMDBENkY3NSAvKiBQb3NpdGlvbkVycm9yLmggKi8sCisJCQkJRkU4MEQ3QzAwRTlDMUYyNTAw
MEQ2Rjc1IC8qIFBvc2l0aW9uRXJyb3IuaWRsICovLAorCQkJCUZFODBEN0MxMEU5QzFGMjUwMDBE
NkY3NSAvKiBQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCAqLywKKwkJCQlGRTgwRDdDMjBFOUMxRjI1
MDAwRDZGNzUgLyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmlkbCAqLywKKwkJCQlGRTgwRDdDMzBF
OUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25PcHRpb25zLmggKi8sCisJCQkJRkU4MEQ3QzQwRTlD
MUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uT3B0aW9ucy5pZGwgKi8sCiAJCQkJQkNFQzAxQkEwQzI3
NERBQzAwOUY0RUM5IC8qIFNjcmVlbi5jcHAgKi8sCiAJCQkJQkNFQzAxQkIwQzI3NERBQzAwOUY0
RUM5IC8qIFNjcmVlbi5oICovLAogCQkJCUJDRUMwMUJDMEMyNzREQUMwMDlGNEVDOSAvKiBTY3Jl
ZW4uaWRsICovLApAQCAtMTE4MDEsNiArMTE4NjcsMTAgQEAKIAkJCQk2NURGMzIyRTA5RDFEREJD
MDAwQkUzMjUgLyogSlNFbnRpdHkuaCAqLywKIAkJCQk5M0Y5Qjc3MjBCQTVGRERDMDA4NTQwNjQg
LyogSlNFbnRpdHlSZWZlcmVuY2UuY3BwICovLAogCQkJCTkzRjlCNzczMEJBNUZEREMwMDg1NDA2
NCAvKiBKU0VudGl0eVJlZmVyZW5jZS5oICovLAorCQkJCUZFODBEQTVGMEU5QzQ3MDMwMDBENkY3
NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCAqLywKKwkJCQlGRTgwREE2MDBFOUM0NzAzMDAwRDZGNzUg
LyogSlNHZW9sb2NhdGlvbi5oICovLAorCQkJCUZFODBEQTYxMEU5QzQ3MDMwMDBENkY3NSAvKiBK
U0dlb3Bvc2l0aW9uLmNwcCAqLywKKwkJCQlGRTgwREE2MjBFOUM0NzAzMDAwRDZGNzUgLyogSlNH
ZW9wb3NpdGlvbi5oICovLAogCQkJCUJDRDlDMkJDMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVk
Tm9kZU1hcC5jcHAgKi8sCiAJCQkJQkNEOUMyQkQwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWRO
b2RlTWFwLmggKi8sCiAJCQkJMTREQzBEMzUwOUZFRDA3MzAwN0IwMjM1IC8qIEpTTm9kZS5jcHAg
Ki8sCkBAIC0xMTgwOSw2ICsxMTg3OSwxMCBAQAogCQkJCUJDRDlDMkJGMEMxN0I2OUUwMDVDOTBB
MiAvKiBKU05vZGVMaXN0LmggKi8sCiAJCQkJNjVERjMxRTkwOUQxQ0M2MDAwMEJFMzI1IC8qIEpT
Tm90YXRpb24uY3BwICovLAogCQkJCTY1REYzMUVBMDlEMUNDNjAwMDBCRTMyNSAvKiBKU05vdGF0
aW9uLmggKi8sCisJCQkJRkU4MERBNkQwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJv
ci5jcHAgKi8sCisJCQkJRkU4MERBNkUwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25FcnJv
ci5oICovLAorCQkJCUZFODBEQTZGMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uT3B0aW9u
cy5jcHAgKi8sCisJCQkJRkU4MERBNzAwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRp
b25zLmggKi8sCiAJCQkJNjVERjMxRUIwOUQxQ0M2MDAwMEJFMzI1IC8qIEpTUHJvY2Vzc2luZ0lu
c3RydWN0aW9uLmNwcCAqLywKIAkJCQk2NURGMzFFQzA5RDFDQzYwMDAwQkUzMjUgLyogSlNQcm9j
ZXNzaW5nSW5zdHJ1Y3Rpb24uaCAqLywKIAkJCQlFNEI0MjM4NTBDQkZCNzNDMDBBRjJFQ0UgLyog
SlNQcm9ncmVzc0V2ZW50LmNwcCAqLywKQEAgLTEyODc1LDYgKzEyOTQ5LDEwIEBACiAJCQkJQkM0
NkMxRUQwQzBEREJERjAwMjBDRkMzIC8qIEpTQ1NTUnVsZUN1c3RvbS5jcHAgKi8sCiAJCQkJQkM1
ODI1RjIwQzBCODkzODAwNTNGMUI1IC8qIEpTQ1NTU3R5bGVEZWNsYXJhdGlvbkN1c3RvbS5jcHAg
Ki8sCiAJCQkJQkMyMEZCN0UwQzBFOEU2QzAwRDE0NDdGIC8qIEpTQ1NTVmFsdWVDdXN0b20uY3Bw
ICovLAorCQkJCUZFODBEN0EyMEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uQ2Fs
bGJhY2suY3BwICovLAorCQkJCUZFODBEN0EzMEU5QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBv
c2l0aW9uQ2FsbGJhY2suaCAqLywKKwkJCQlGRTgwRDdBNDBFOUMxRUQyMDAwRDZGNzUgLyogSlND
dXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwICovLAorCQkJCUZFODBEN0E1MEU5QzFFRDIw
MDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oICovLAogCQkJCTUxRUM5
MjVCMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNRTFN0YXRlbWVudENhbGxiYWNrLmNwcCAq
LywKIAkJCQk1MUVDOTI1QzBDRTkwREQ0MDBGOTAzMDggLyogSlNDdXN0b21TUUxTdGF0ZW1lbnRD
YWxsYmFjay5oICovLAogCQkJCTUxRUM5MjVEMENFOTBERDQwMEY5MDMwOCAvKiBKU0N1c3RvbVNR
TFN0YXRlbWVudEVycm9yQ2FsbGJhY2suY3BwICovLApAQCAtMTI4OTcsNiArMTI5NzUsNyBAQAog
CQkJCUJDMkVENTU0MEM2QjlCRDMwMDkyMEJGRiAvKiBKU0VsZW1lbnRDdXN0b20uY3BwICovLAog
CQkJCUJDRUZBRjREMEMzMTdFNjkwMEZBODFGNiAvKiBKU0V2ZW50Q3VzdG9tLmNwcCAqLywKIAkJ
CQlCQzNCN0IyMDBFOTFBQUY0MDBENTQwNjUgLyogSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3Bw
ICovLAorCQkJCUZFODBEN0E2MEU5QzFFRDIwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uQ3VzdG9t
LmNwcCAqLywKIAkJCQlCQ0U3QjE5MjBENEU4Njk2MDA3NUE1MzkgLyogSlNIaXN0b3J5Q3VzdG9t
LmNwcCAqLywKIAkJCQlCQzRFREVGMzBDMDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBwbGV0RWxl
bWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNDQkFEM0EwQzE4QkZGODAwQ0U4OTBGIC8qIEpTSFRN
TENvbGxlY3Rpb25DdXN0b20uY3BwICovLApAQCAtMTMyMDcsNiArMTMyODYsOCBAQAogCQkJCTA2
NkM3NzJBMEFCNjAzQjcwMDIzOENDNCAvKiBGaWxlQ2hvb3Nlci5oICovLAogCQkJCTUxNEIzRjcy
MEM3MjIwNDcwMDA1MzBERiAvKiBGaWxlU3lzdGVtLmggKi8sCiAJCQkJQkMwNzNCQTkwQzM5OUIx
RjAwMEY1OTc5IC8qIEZsb2F0Q29udmVyc2lvbi5oICovLAorCQkJCUZFQUI5MDEwMEVBNTFCOUMw
MDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuY3BwICovLAorCQkJCUZFQUI5MDExMEVBNTFC
OUMwMDYzNDhDMyAvKiBHZW9sb2NhdGlvblNlcnZpY2UuaCAqLywKIAkJCQlCQzNCQzI5QjBFOTFB
QjBGMDA4MzU1ODggLyogSG9zdFdpbmRvdy5oICovLAogCQkJCTY1OTM5MjM1MDlBRTQzNDYwMDJD
NTMxRiAvKiBLVVJMLmNwcCAqLywKIAkJCQk2NTkzOTIzNjA5QUU0MzQ2MDAyQzUzMUYgLyogS1VS
TC5oICovLApAQCAtMTYwNDEsNiArMTYxMjIsMTggQEAKIAkJCQkxQzgxQkEwQzBFOTczNDgzMDAy
NjZFMDcgLyogSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFD
ODFCQTBFMEU5NzM0ODMwMDI2NkUwNyAvKiBKYXZhU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDM0JFMTJCMEU5ODA5MkYwMDgzNTU4OCAvKiBQb3B1cE1lbnVTdHlsZS5o
IGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3QTgwRTlDMUVEMjAwMEQ2Rjc1IC8qIEpTQ3VzdG9t
UG9zaXRpb25DYWxsYmFjay5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkU4MEQ3QUEwRTlDMUVEMjAw
MEQ2Rjc1IC8qIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywK
KwkJCQlGRTgwRDdDNjBFOUMxRjI1MDAwRDZGNzUgLyogR2VvbG9jYXRpb24uaCBpbiBIZWFkZXJz
ICovLAorCQkJCUZFODBEN0M5MEU5QzFGMjUwMDBENkY3NSAvKiBHZW9wb3NpdGlvbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJRkU4MEQ3Q0IwRTlDMUYyNTAwMEQ2Rjc1IC8qIFBvc2l0aW9uQ2FsbGJh
Y2suaCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEN0NEMEU5QzFGMjUwMDBENkY3NSAvKiBQb3Np
dGlvbkVycm9yLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdDRjBFOUMxRjI1MDAwRDZGNzUg
LyogUG9zaXRpb25FcnJvckNhbGxiYWNrLmggaW4gSGVhZGVycyAqLywKKwkJCQlGRTgwRDdEMTBF
OUMxRjI1MDAwRDZGNzUgLyogUG9zaXRpb25PcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQlG
RTgwREE2NDBFOUM0NzAzMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbi5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRkU4MERBNjYwRTlDNDcwMzAwMEQ2Rjc1IC8qIEpTR2VvcG9zaXRpb24uaCBpbiBIZWFk
ZXJzICovLAorCQkJCUZFODBEQTcyMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3Iu
aCBpbiBIZWFkZXJzICovLAorCQkJCUZFODBEQTc0MEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0
aW9uT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkU5OTQwRTlDMUM3QzAwODM1NTg4
IC8qIFJlbmRlclNjcm9sbGJhci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMzQkU5OTUwRTlDMUM3
QzAwODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclBhcnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
M0JFOTk5MEU5QzFFNUQwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJUaGVtZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xNjA1Miw2ICsxNjE0NSw3IEBACiAJCQkJQkNFNjU5QTkwRUE5MjdCOTAwN0U0
NTMzIC8qIFRoZW1lVHlwZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRTY1OUU2MEVBOTJGQjIw
MDdFNDUzMyAvKiBUaGVtZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTFDNERFNjkwRUE3NUMx
RTAwMjNDQ0Q2IC8qIEFjdGl2ZURPTU9iamVjdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRkVBQjkw
MTMwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNFNjVCRUIwRUFDREYxNjAwN0U0NTMzIC8qIExlbmd0aC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkNGRjY0OTEwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aEJveC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkNGRjY0OTIwRUFEMTVDMjAwQzFENkY3IC8qIExlbmd0aFNpemUuaCBpbiBIZWFk
ZXJzICovLApAQCAtMTc5MjAsNiArMTgwMTQsMTUgQEAKIAkJCQkxQzgxQkEwMjBFOTczM0NCMDAy
NjZFMDcgLyogSmF2YVNjcmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUM4MUJB
MDkwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMUM4MUJBMEQwRTk3MzQ4MzAwMjY2RTA3IC8qIEphdmFTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwRDdBNzBFOUMxRUQyMDAwRDZGNzUgLyogSlND
dXN0b21Qb3NpdGlvbkNhbGxiYWNrLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEN0E5MEU5
QzFFRDIwMDBENkY3NSAvKiBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlGRTgwRDdBQjBFOUMxRUQyMDAwRDZGNzUgLyogSlNHZW9sb2NhdGlvbkN1
c3RvbS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGRTgwRDdDNTBFOUMxRjI1MDAwRDZGNzUgLyog
R2VvbG9jYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkU4MEQ3QzgwRTlDMUYyNTAwMEQ2
Rjc1IC8qIEdlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBEQTYzMEU5QzQ3
MDMwMDBENkY3NSAvKiBKU0dlb2xvY2F0aW9uLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFODBE
QTY1MEU5QzQ3MDMwMDBENkY3NSAvKiBKU0dlb3Bvc2l0aW9uLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUZFODBEQTcxMEU5QzQ3MkYwMDBENkY3NSAvKiBKU1Bvc2l0aW9uRXJyb3IuY3BwIGluIFNv
dXJjZXMgKi8sCisJCQkJRkU4MERBNzMwRTlDNDcyRjAwMEQ2Rjc1IC8qIEpTUG9zaXRpb25PcHRp
b25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDM0JFOTkzMEU5QzFDN0MwMDgzNTU4OCAvKiBS
ZW5kZXJTY3JvbGxiYXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkMzQkU5QTUwRTlDMjM5NjAw
ODM1NTg4IC8qIFJlbmRlclNjcm9sbGJhclRoZW1lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJD
M0JFOUFCMEU5QzI0MjAwMDgzNTU4OCAvKiBSZW5kZXJTY3JvbGxiYXJQYXJ0LmNwcCBpbiBTb3Vy
Y2VzICovLApAQCAtMTc5MjgsNiArMTgwMzEsNyBAQAogCQkJCTkzOUIwMkVFMEVBMkRCQzQwMEM1
NDU3MCAvKiBXaWR0aEl0ZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRTY1OUU5MEVB
OTJGRkEwMDdFNDUzMyAvKiBUaGVtZU1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUUxQzRERTZF
MEVBNzVDNjUwMDIzQ0NENiAvKiBBY3RpdmVET01PYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCisJ
CQkJRkVBQjkwMTIwRUE1MUI5QzAwNjM0OEMzIC8qIEdlb2xvY2F0aW9uU2VydmljZS5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlCQ0U2NUJFQTBFQUNERjE2MDA3RTQ1MzMgLyogTGVuZ3RoLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDRTY1RDMyMEVBRDEyMTEwMDdFNDUzMyAvKiBUaGVtZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlFMUMzNkNCRDBFQjA4MDYyMDA3NDEwQkMgLyogSlNET01HbG9i
YWxPYmplY3QuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
Q3VzdG9tUG9zaXRpb25DYWxsYmFjay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suY3BwCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0N1c3RvbVBvc2l0aW9uQ2Fs
bGJhY2suaCIKKworI2luY2x1ZGUgIkNvbnNvbGUuaCIKKyNpbmNsdWRlICJDU3RyaW5nLmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJKU0dlb3Bvc2l0aW9uLmgiCisjaW5jbHVkZSAi
UGFnZS5oIgorI2luY2x1ZGUgIlNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxranMvSlNM
b2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKwor
SlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2soSlNPYmpl
Y3QqIGNhbGxiYWNrLCBGcmFtZSogZnJhbWUpCisgICAgOiBtX2NhbGxiYWNrKGNhbGxiYWNrKQor
ICAgICwgbV9mcmFtZShmcmFtZSkKK3sKK30KKwordm9pZCBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJh
Y2s6OmhhbmRsZUV2ZW50KEdlb3Bvc2l0aW9uKiBnZW9wb3NpdGlvbiwgYm9vbCYgcmFpc2VkRXhj
ZXB0aW9uKQoreworICAgIEFTU0VSVChtX2NhbGxiYWNrKTsKKyAgICBBU1NFUlQobV9mcmFtZSk7
CisgICAgCisgICAgaWYgKCFtX2ZyYW1lLT5zY3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAgICAg
IHJldHVybjsKKyAgICAKKyAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9mcmFt
ZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCgpOworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAgIAorICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2Up
OworICAgIAorICAgIEpTVmFsdWVQdHIgZnVuY3Rpb24gPSBtX2NhbGxiYWNrLT5nZXQoZXhlYywg
SWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZlbnQiKSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7
CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBmdW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEp
OworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgY2FsbFR5cGUg
PSBtX2NhbGxiYWNrLT5nZXRDYWxsRGF0YShjYWxsRGF0YSk7CisgICAgICAgIGlmIChjYWxsVHlw
ZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgYW4gZXhj
ZXB0aW9uIGJlIHRocm93biBoZXJlPworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGZ1bmN0aW9uID0gbV9jYWxsYmFjazsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPEpT
Q3VzdG9tUG9zaXRpb25DYWxsYmFjaz4gcHJvdGVjdCh0aGlzKTsKKyAgICAKKyAgICBBcmdMaXN0
IGFyZ3M7CisgICAgYXJncy5hcHBlbmQodG9KUyhleGVjLCBnZW9wb3NpdGlvbikpOworICAgIAor
ICAgIGdsb2JhbE9iamVjdC0+c3RhcnRUaW1lb3V0Q2hlY2soKTsKKyAgICBjYWxsKGV4ZWMsIGZ1
bmN0aW9uLCBjYWxsVHlwZSwgY2FsbERhdGEsIG1fY2FsbGJhY2ssIGFyZ3MpOworICAgIGdsb2Jh
bE9iamVjdC0+c3RvcFRpbWVvdXRDaGVjaygpOworICAgIAorICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkgeworICAgICAgICBtX2ZyYW1lLT5kb21XaW5kb3coKS0+Y29uc29sZSgpLT5yZXBv
cnRDdXJyZW50RXhjZXB0aW9uKGV4ZWMpOworICAgICAgICByYWlzZWRFeGNlcHRpb24gPSB0cnVl
OworICAgIH0KK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25DYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2suaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFja19oCisjZGVmaW5lIEpT
Q3VzdG9tUG9zaXRpb25DYWxsYmFja19oCisKKyNpbmNsdWRlICJQb3NpdGlvbkNhbGxiYWNrLmgi
CisjaW5jbHVkZSA8a2pzL0pTT2JqZWN0Lmg+CisjaW5jbHVkZSA8a2pzL3Byb3RlY3QuaD4KKyNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgSlNDIHsKKyAgICBjbGFzcyBKU09i
amVjdDsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNzIEdl
b3Bvc2l0aW9uOworCitjbGFzcyBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2sgOiBwdWJsaWMgUG9z
aXRpb25DYWxsYmFjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21Q
b3NpdGlvbkNhbGxiYWNrPiBjcmVhdGUoSlNDOjpKU09iamVjdCogY2FsbGJhY2ssIEZyYW1lKiBm
cmFtZSkgeyByZXR1cm4gYWRvcHRSZWYobmV3IEpTQ3VzdG9tUG9zaXRpb25DYWxsYmFjayhjYWxs
YmFjaywgZnJhbWUpKTsgfQorICAgIAorICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFdmVudChHZW9w
b3NpdGlvbiosIGJvb2wmIHJhaXNlZEV4Y2VwdGlvbik7CisKK3ByaXZhdGU6CisgICAgSlNDdXN0
b21Qb3NpdGlvbkNhbGxiYWNrKEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSopOworCisg
ICAgSlNDOjpQcm90ZWN0ZWRQdHI8SlNDOjpKU09iamVjdD4gbV9jYWxsYmFjazsKKyAgICBSZWZQ
dHI8RnJhbWU+IG1fZnJhbWU7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gSlNDdXN0b21Qb3NpdGlvbkNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvYmluZGluZ3MvanMvSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2suY3BwCShyZXZp
c2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxs
YmFjay5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgiCisKKyNpbmNsdWRlICJDb25zb2xl
LmgiCisjaW5jbHVkZSAiQ1N0cmluZy5oIgorI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAi
SlNQb3NpdGlvbkVycm9yLmgiCisjaW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlNjcmlwdENv
bnRyb2xsZXIuaCIKKyNpbmNsdWRlIDxranMvSlNMb2NrLmg+CisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKyAgICAKK3VzaW5nIG5hbWVzcGFjZSBKU0M7CisKK0pTQ3VzdG9tUG9zaXRpb25FcnJvckNh
bGxiYWNrOjpKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjayhKU09iamVjdCogY2FsbGJhY2ss
IEZyYW1lKiBmcmFtZSkKKyAgICA6IG1fY2FsbGJhY2soY2FsbGJhY2spCisgICAgLCBtX2ZyYW1l
KGZyYW1lKQoreworfQorCit2b2lkIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpoYW5k
bGVFdmVudChQb3NpdGlvbkVycm9yKiBwb3NpdGlvbkVycm9yKQoreworICAgIEFTU0VSVChtX2Nh
bGxiYWNrKTsKKyAgICBBU1NFUlQobV9mcmFtZSk7CisgICAgCisgICAgaWYgKCFtX2ZyYW1lLT5z
Y3JpcHQoKS0+aXNFbmFibGVkKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9mcmFtZS0+c2NyaXB0KCktPmdsb2JhbE9iamVjdCgp
OworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpOworICAg
IAorICAgIEpTQzo6SlNMb2NrIGxvY2soZmFsc2UpOworICAgIAorICAgIEpTVmFsdWVQdHIgZnVu
Y3Rpb24gPSBtX2NhbGxiYWNrLT5nZXQoZXhlYywgSWRlbnRpZmllcihleGVjLCAiaGFuZGxlRXZl
bnQiKSk7CisgICAgQ2FsbERhdGEgY2FsbERhdGE7CisgICAgQ2FsbFR5cGUgY2FsbFR5cGUgPSBm
dW5jdGlvbi0+Z2V0Q2FsbERhdGEoY2FsbERhdGEpOworICAgIGlmIChjYWxsVHlwZSA9PSBDYWxs
VHlwZU5vbmUpIHsKKyAgICAgICAgY2FsbFR5cGUgPSBtX2NhbGxiYWNrLT5nZXRDYWxsRGF0YShj
YWxsRGF0YSk7CisgICAgICAgIGlmIChjYWxsVHlwZSA9PSBDYWxsVHlwZU5vbmUpIHsKKyAgICAg
ICAgICAgIC8vIEZJWE1FOiBTaG91bGQgYW4gZXhjZXB0aW9uIGJlIHRocm93biBoZXJlPworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGZ1bmN0aW9uID0gbV9jYWxsYmFj
azsKKyAgICB9CisgICAgCisgICAgUmVmUHRyPEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
PiBwcm90ZWN0KHRoaXMpOworICAgIAorICAgIEFyZ0xpc3QgYXJnczsKKyAgICBhcmdzLmFwcGVu
ZCh0b0pTKGV4ZWMsIHBvc2l0aW9uRXJyb3IpKTsKKyAgICAKKyAgICBnbG9iYWxPYmplY3QtPnN0
YXJ0VGltZW91dENoZWNrKCk7CisgICAgY2FsbChleGVjLCBmdW5jdGlvbiwgY2FsbFR5cGUsIGNh
bGxEYXRhLCBtX2NhbGxiYWNrLCBhcmdzKTsKKyAgICBnbG9iYWxPYmplY3QtPnN0b3BUaW1lb3V0
Q2hlY2soKTsKKyAgICAKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIG1f
ZnJhbWUtPmRvbVdpbmRvdygpLT5jb25zb2xlKCktPnJlcG9ydEN1cnJlbnRFeGNlcHRpb24oZXhl
Yyk7Cit9CisgICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRp
bmdzL2pzL0pTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFjay5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFj
ay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2Fs
bGJhY2tfaAorI2RlZmluZSBKU0N1c3RvbVBvc2l0aW9uRXJyb3JDYWxsYmFja19oCisKKyNpbmNs
dWRlICJQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCIKKyNpbmNsdWRlIDxranMvSlNPYmplY3QuaD4K
KyNpbmNsdWRlIDxranMvcHJvdGVjdC5oPgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisKK25h
bWVzcGFjZSBKU0MgeworICAgIGNsYXNzIEpTT2JqZWN0OworfQorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisgICAgCitjbGFzcyBGcmFtZTsKK2NsYXNzIFBvc2l0aW9uRXJyb3I7CisKK2NsYXNzIEpT
Q3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrIDogcHVibGljIFBvc2l0aW9uRXJyb3JDYWxsYmFj
ayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8SlNDdXN0b21Qb3NpdGlvbkVycm9y
Q2FsbGJhY2s+IGNyZWF0ZShKU0M6OkpTT2JqZWN0KiBjYWxsYmFjaywgRnJhbWUqIGZyYW1lKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgSlNDdXN0b21Qb3NpdGlvbkVycm9yQ2FsbGJhY2soY2FsbGJh
Y2ssIGZyYW1lKSk7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoUG9zaXRp
b25FcnJvciopOworCitwcml2YXRlOgorICAgIEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNr
KEpTQzo6SlNPYmplY3QqIGNhbGxiYWNrLCBGcmFtZSopOworCisgICAgSlNDOjpQcm90ZWN0ZWRQ
dHI8SlNDOjpKU09iamVjdD4gbV9jYWxsYmFjazsKKyAgICBSZWZQdHI8RnJhbWU+IG1fZnJhbWU7
Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gSlNDdXN0b21Q
b3NpdGlvbkVycm9yQ2FsbGJhY2tfaApJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5n
LmNwcAkocmV2aXNpb24gMzc4MzEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGlu
Zy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1Myw2ICszNTMsMTYgQEAgdm9pZCB1cGRhdGVET01O
b2RlRG9jdW1lbnQoTm9kZSogbm9kZSwgRAogICAgIGFkZFdyYXBwZXIod3JhcHBlcik7CiB9CiAK
K3ZvaWQgbWFya0RPTU9iamVjdFdyYXBwZXIoSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhLCB2b2lk
KiBvYmplY3QpCit7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAgIHJldHVybjsKKyAgICBET01P
YmplY3QqIHdyYXBwZXIgPSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKGdsb2JhbERhdGEsIG9i
amVjdCk7CisgICAgaWYgKCF3cmFwcGVyIHx8IHdyYXBwZXItPm1hcmtlZCgpKQorICAgICAgICBy
ZXR1cm47CisgICAgd3JhcHBlci0+bWFyaygpOworfQorCiBKU1ZhbHVlUHRyIGpzU3RyaW5nT3JO
dWxsKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBzKQogewogICAgIGlmIChzLmlzTnVs
bCgpKQpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5oCShyZXZpc2lvbiAzNzgzMSkK
KysrIFdlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmgJKHdvcmtpbmcgY29weSkKQEAg
LTY5LDYgKzY5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHZvaWQgdXBkYXRlRE9NTm9k
ZURvY3VtZW50KE5vZGUqLCBEb2N1bWVudCogb2xkRG9jdW1lbnQsIERvY3VtZW50KiBuZXdEb2N1
bWVudCk7CiAgICAgdm9pZCBtYXJrRE9NTm9kZXNGb3JEb2N1bWVudChEb2N1bWVudCopOwogICAg
IHZvaWQgbWFya0FjdGl2ZU9iamVjdHNGb3JEb2N1bWVudChKU0M6OkpTR2xvYmFsRGF0YSYsIERv
Y3VtZW50Kik7CisgICAgdm9pZCBtYXJrRE9NT2JqZWN0V3JhcHBlcihKU0M6OkpTR2xvYmFsRGF0
YSYgZ2xvYmFsRGF0YSwgdm9pZCogb2JqZWN0KTsKICAgICB2b2lkIG1hcmtDcm9zc0hlYXBEZXBl
bmRlbnRPYmplY3RzRm9yRG9jdW1lbnQoSlNDOjpKU0dsb2JhbERhdGEmLCBEb2N1bWVudCopOwog
CiAgICAgSlNDOjpTdHJ1Y3R1cmVJRCogZ2V0Q2FjaGVkRE9NU3RydWN0dXJlKEpTQzo6RXhlY1N0
YXRlKiwgY29uc3QgSlNDOjpDbGFzc0luZm8qKTsKSW5kZXg6IFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvYmluZGluZ3MvanMv
SlNET01XaW5kb3dDdXN0b20uY3BwCShyZXZpc2lvbiAzNzgzMSkKKysrIFdlYkNvcmUvYmluZGlu
Z3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSwxNiArNDEs
NiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLXN0YXRp
YyB2b2lkIG1hcmtET01PYmplY3RXcmFwcGVyKEpTR2xvYmFsRGF0YSYgZ2xvYmFsRGF0YSwgdm9p
ZCogb2JqZWN0KQotewotICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1cm47Ci0gICAgRE9N
T2JqZWN0KiB3cmFwcGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcihnbG9iYWxEYXRhLCBv
YmplY3QpOwotICAgIGlmICghd3JhcHBlciB8fCB3cmFwcGVyLT5tYXJrZWQoKSkKLSAgICAgICAg
cmV0dXJuOwotICAgIHdyYXBwZXItPm1hcmsoKTsKLX0KLQogdm9pZCBKU0RPTVdpbmRvdzo6bWFy
aygpCiB7CiAgICAgQmFzZTo6bWFyaygpOwpJbmRleDogV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0dl
b2xvY2F0aW9uQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pT
R2VvbG9jYXRpb25DdXN0b20uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0dlb2xvY2F0aW9uQ3VzdG9tLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisg
KiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2VvbG9jYXRpb24uaCIKKworI2luY2x1ZGUgIkRPTVdp
bmRvdy5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlv
bi5oIgorI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZS5oIgorI2luY2x1ZGUgIkpTQ3VzdG9t
UG9zaXRpb25DYWxsYmFjay5oIgorI2luY2x1ZGUgIkpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxi
YWNrLmgiCisjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKKyNpbmNsdWRlICJKU1Bvc2l0aW9uT3B0
aW9ucy5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K0pTVmFsdWVQdHIgSlNHZW9sb2NhdGlvbjo6Z2V0Q3VycmVudFBvc2l0aW9uKEV4ZWNTdGF0ZSog
ZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICAvLyBBcmd1bWVudHM6IFBvc2l0aW9u
Q2FsbGJhY2ssIChvcHRpb25hbClQb3NpdGlvbkVycm9yQ2FsbGJhY2ssIChvcHRpb25hbClQb3Np
dGlvbk9wdGlvbnMKKyAgICBSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gcG9zaXRpb25DYWxsYmFj
azsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gYXJncy5hdChleGVjLCAwKS0+Z2V0T2JqZWN0KCk7
CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICBpZiAoIW9iamVjdCkgeworICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywg
VFlQRV9NSVNNQVRDSF9FUlIpOworICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICB9
CisKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9KU0RPTVdpbmRvdyhleGVjLT5sZXhpY2FsR2xv
YmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCkpCisgICAgICAgIHBvc2l0aW9uQ2FsbGJhY2sg
PSBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1lKTsKKyAgICAK
KyAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9yQ2FsbGJhY2s7
CisgICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDEpLT5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAg
ICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMsIDEpLT5nZXRPYmplY3QoKTsKKyAg
ICAgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBU
WVBFX01JU01BVENIX0VSUik7CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAg
ICAgICAgfQorCisgICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSB0b0pTRE9NV2luZG93KGV4ZWMt
PmxleGljYWxHbG9iYWxPYmplY3QoKSktPmltcGwoKS0+ZnJhbWUoKSkKKyAgICAgICAgICAgIHBv
c2l0aW9uRXJyb3JDYWxsYmFjayA9IEpTQ3VzdG9tUG9zaXRpb25FcnJvckNhbGxiYWNrOjpjcmVh
dGUob2JqZWN0LCBmcmFtZSk7CisgICAgfQorICAgIAorICAgIFJlZlB0cjxQb3NpdGlvbk9wdGlv
bnM+IHBvc2l0aW9uT3B0aW9uczsKKyAgICBpZiAoIWFyZ3MuYXQoZXhlYywgMiktPmlzVW5kZWZp
bmVkT3JOdWxsKCkpCisgICAgICAgIHBvc2l0aW9uT3B0aW9ucyA9IHRvUG9zaXRpb25PcHRpb25z
KGFyZ3MuYXQoZXhlYywgMikpOworICAgIAorICAgIG1faW1wbC0+Z2V0Q3VycmVudFBvc2l0aW9u
KHBvc2l0aW9uQ2FsbGJhY2sucmVsZWFzZSgpLCBwb3NpdGlvbkVycm9yQ2FsbGJhY2sucmVsZWFz
ZSgpLCBwb3NpdGlvbk9wdGlvbnMuZ2V0KCkpOworICAgIAorICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworfQorCitKU1ZhbHVlUHRyIEpTR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oRXhlY1N0
YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQoreworICAgIC8vIEFyZ3VtZW50czogUG9z
aXRpb25DYWxsYmFjaywgKG9wdGlvbmFsKVBvc2l0aW9uRXJyb3JDYWxsYmFjaywgKG9wdGlvbmFs
KVBvc2l0aW9uT3B0aW9ucworICAgIFJlZlB0cjxQb3NpdGlvbkNhbGxiYWNrPiBwb3NpdGlvbkNh
bGxiYWNrOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMsIDApLT5nZXRPYmpl
Y3QoKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgIHNldERPTUV4Y2VwdGlvbihl
eGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwor
ICAgIH0KKyAgICAKKyAgICBpZiAoRnJhbWUqIGZyYW1lID0gdG9KU0RPTVdpbmRvdyhleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLT5pbXBsKCktPmZyYW1lKCkpCisgICAgICAgIHBvc2l0aW9u
Q2FsbGJhY2sgPSBKU0N1c3RvbVBvc2l0aW9uQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1l
KTsKKyAgICAKKyAgICBSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3NpdGlvbkVycm9y
Q2FsbGJhY2s7CisgICAgaWYgKCFhcmdzLmF0KGV4ZWMsIDEpLT5pc1VuZGVmaW5lZE9yTnVsbCgp
KSB7CisgICAgICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhcmdzLmF0KGV4ZWMsIDEpLT5nZXRPYmpl
Y3QoKTsKKyAgICAgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgICAgICAgIHNldERPTUV4Y2VwdGlv
bihleGVjLCBUWVBFX01JU01BVENIX0VSUik7CisgICAgICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IHRv
SlNET01XaW5kb3coZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5mcmFtZSgp
KQorICAgICAgICAgICAgcG9zaXRpb25FcnJvckNhbGxiYWNrID0gSlNDdXN0b21Qb3NpdGlvbkVy
cm9yQ2FsbGJhY2s6OmNyZWF0ZShvYmplY3QsIGZyYW1lKTsKKyAgICB9CisgICAgCisgICAgUmVm
UHRyPFBvc2l0aW9uT3B0aW9ucz4gcG9zaXRpb25PcHRpb25zOworICAgIGlmICghYXJncy5hdChl
eGVjLCAyKS0+aXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgcG9zaXRpb25PcHRpb25zID0g
dG9Qb3NpdGlvbk9wdGlvbnMoYXJncy5hdChleGVjLCAyKSk7CisgICAgCisgICAgaW50IHdhdGNo
SUQgPSBtX2ltcGwtPndhdGNoUG9zaXRpb24ocG9zaXRpb25DYWxsYmFjay5yZWxlYXNlKCksIHBv
c2l0aW9uRXJyb3JDYWxsYmFjay5yZWxlYXNlKCksIHBvc2l0aW9uT3B0aW9ucy5nZXQoKSk7Cisg
ICAgcmV0dXJuIGpzTnVtYmVyKGV4ZWMsIHdhdGNoSUQpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCkluZGV4OiBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9tLmNwcAko
cmV2aXNpb24gMzc4MzEpCisrKyBXZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmF2aWdhdG9yQ3VzdG9t
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTEzLDQgKzExMywxMyBAQCBKU1ZhbHVlUHRyIEpTTmF2
aWdhdG9yOjphcHBWZXJzaW9uKEV4ZWNTCiAgICAgcmV0dXJuIGpzU3RyaW5nKGV4ZWMsIGltcC0+
YXBwVmVyc2lvbigpKTsKIH0KIAordm9pZCBKU05hdmlnYXRvcjo6bWFyaygpCit7CisgICAgQmFz
ZTo6bWFyaygpOworCisgICAgSlNHbG9iYWxEYXRhJiBnbG9iYWxEYXRhID0gKkhlYXA6OmhlYXAo
dGhpcyktPmdsb2JhbERhdGEoKTsKKworICAgIG1hcmtET01PYmplY3RXcmFwcGVyKGdsb2JhbERh
dGEsIGltcGwoKS0+b3B0aW9uYWxHZW9sb2NhdGlvbigpKTsKK30KKwogfQpJbmRleDogV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cAkocmV2aXNpb24gMzc4MzEpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTMxNiw2ICszMTYsNyBAQCBEb2N1bWVudDo6RG9jdW1lbnQoRnJhbWUqIGZyYW1l
LCBib29sIGlzCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgICwgbV9oYXNPcGVuRGF0YWJhc2Vz
KGZhbHNlKQogI2VuZGlmCisgICAgLCBtX3VzaW5nR2VvbG9jYXRpb24oZmFsc2UpCiAjaWYgVVNF
KExPV19CQU5EV0lEVEhfRElTUExBWSkKICAgICAsIG1faW5Mb3dCYW5kd2lkdGhEaXNwbGF5KGZh
bHNlKQogI2VuZGlmCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDM3ODMxKQorKysgV2ViQ29yZS9kb20v
RG9jdW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTk4LDYgKzk5OCwxMCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBoYXNPcGVuRGF0YWJhc2VzKCkgeyByZXR1cm4gbV9oYXNPcGVuRGF0YWJhc2VzOyB9
CiAgICAgdm9pZCBzdG9wRGF0YWJhc2VzKCk7CiAjZW5kaWYKKyAgICAKKyAgICB2b2lkIHNldFVz
aW5nR2VvbG9jYXRpb24oYm9vbCBmKSB7IG1fdXNpbmdHZW9sb2NhdGlvbiA9IGY7IH0KKyAgICBi
b29sIHVzaW5nR2VvbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX3VzaW5nR2VvbG9jYXRpb247
IH07CisgICAgCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbGVhclhNTFZlcnNpb24oKSB7IG1feG1s
VmVyc2lvbiA9IFN0cmluZygpOyB9CiAKQEAgLTEwNzQsNiArMTA3OCw4IEBAIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBIYXNoU2V0PERhdGFiYXNlKj4gRGF0YWJhc2VTZXQ7CiAgICAgT3duUHRyPERh
dGFiYXNlU2V0PiBtX29wZW5EYXRhYmFzZVNldDsKICNlbmRpZgorICAgIAorICAgIGJvb2wgbV91
c2luZ0dlb2xvY2F0aW9uOwogCiAjaWYgVVNFKExPV19CQU5EV0lEVEhfRElTUExBWSkKICAgICBi
b29sIG1faW5Mb3dCYW5kd2lkdGhEaXNwbGF5OwpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAko
cmV2aXNpb24gMzc4MzEpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE5MTUsNiArMTkxNSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmNhbkNhY2hl
UGFnZSgpCiAjaWYgRU5BQkxFKERBVEFCQVNFKQogICAgICAgICAmJiAhbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+aGFzT3BlbkRhdGFiYXNlcygpCiAjZW5kaWYKKyAgICAgICAgJiYgIW1fZnJhbWUtPmRv
Y3VtZW50KCktPnVzaW5nR2VvbG9jYXRpb24oKQogICAgICAgICAmJiBtX2ZyYW1lLT5wYWdlKCkK
ICAgICAgICAgJiYgbV9mcmFtZS0+cGFnZSgpLT5iYWNrRm9yd2FyZExpc3QoKS0+ZW5hYmxlZCgp
CiAgICAgICAgICYmIG1fZnJhbWUtPnBhZ2UoKS0+YmFja0ZvcndhcmRMaXN0KCktPmNhcGFjaXR5
KCkgPiAwCkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvcGFnZS9HZW9sb2NhdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3Bh
Z2UvR2VvbG9jYXRpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDIxMyBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiR2VvbG9jYXRpb24uaCIKKworI2luY2x1ZGUgIkRvY3VtZW50LmgiCisj
aW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yLmgiCisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworR2VvbG9jYXRpb246Okdlb05vdGlmaWVyOjpHZW9Ob3RpZmllcihQYXNz
UmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+IHN1Y2Nlc3NDYWxsYmFjaywgUGFzc1JlZlB0cjxQb3Np
dGlvbkVycm9yQ2FsbGJhY2s+IGVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9u
cykKKyAgICA6IG1fc3VjY2Vzc0NhbGxiYWNrKHN1Y2Nlc3NDYWxsYmFjaykKKyAgICAsIG1fZXJy
b3JDYWxsYmFjayhlcnJvckNhbGxiYWNrKQorICAgICwgbV90aW1lcih0aGlzLCAmR2VvbG9jYXRp
b246Okdlb05vdGlmaWVyOjp0aW1lckZpcmVkKQoreworICAgIGlmIChtX2Vycm9yQ2FsbGJhY2sg
JiYgb3B0aW9ucyAmJiBvcHRpb25zLT50aW1lb3V0KCkgIT0gLTEpCisgICAgICAgIG1fdGltZXIu
c3RhcnRPbmVTaG90KG9wdGlvbnMtPnRpbWVvdXQoKSAvIDEwMDAuMCk7Cit9CisKK3ZvaWQgR2Vv
bG9jYXRpb246Okdlb05vdGlmaWVyOjp0aW1lckZpcmVkKFRpbWVyPEdlb05vdGlmaWVyPiopCit7
CisgICAgQVNTRVJUKG1fZXJyb3JDYWxsYmFjayk7CisgICAgCisgICAgbV90aW1lci5zdG9wKCk7
CisKKyAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gZXJyb3IgPSBQb3NpdGlvbkVycm9yOjpjcmVh
dGUoUG9zaXRpb25FcnJvcjo6VElNRU9VVF9FUlJPUiwgIlRpbWVkIG91dCIpOworICAgIG1fZXJy
b3JDYWxsYmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworfQorCitHZW9sb2NhdGlvbjo6
R2VvbG9jYXRpb24oRnJhbWUqIGZyYW1lKQorICAgIDogbV9mcmFtZShmcmFtZSkKKyAgICAsIG1f
c2VydmljZShHZW9sb2NhdGlvblNlcnZpY2U6OmNyZWF0ZSh0aGlzKSkKK3sKKyAgICBBU1NFUlQo
bV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0VXNpbmdH
ZW9sb2NhdGlvbih0cnVlKTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6ZGlzY29ubmVjdEZyYW1l
KCkKK3sKKyAgICBtX3NlcnZpY2UtPnN0b3BVcGRhdGluZygpOworICAgIGlmIChtX2ZyYW1lLT5k
b2N1bWVudCgpKQorICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRVc2luZ0dlb2xvY2F0
aW9uKGZhbHNlKTsKKyAgICBtX2ZyYW1lID0gMDsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6Z2V0
Q3VycmVudFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25DYWxsYmFjaz4gc3VjY2Vzc0NhbGxi
YWNrLCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4gZXJyb3JDYWxsYmFjaywgUG9z
aXRpb25PcHRpb25zKiBvcHRpb25zKQoreworICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZp
ZXIgPSBHZW9Ob3RpZmllcjo6Y3JlYXRlKHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JDYWxsYmFjaywg
b3B0aW9ucyk7CisKKyAgICBpZiAoIW1fc2VydmljZS0+c3RhcnRVcGRhdGluZyhvcHRpb25zKSkg
eworICAgICAgICBpZiAobm90aWZpZXItPm1fZXJyb3JDYWxsYmFjaykgeworICAgICAgICAgICAg
UmVmUHRyPFBvc2l0aW9uRXJyb3I+IGVycm9yID0gUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0
aW9uRXJyb3I6OlBFUk1JU1NJT05fRVJST1IsICJVbmFibGUgdG8gU3RhcnQiKTsKKyAgICAgICAg
ICAgIG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yLmdldCgpKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9vbmVTaG90cy5hZGQo
bm90aWZpZXIpOworfQorCitpbnQgR2VvbG9jYXRpb246OndhdGNoUG9zaXRpb24oUGFzc1JlZlB0
cjxQb3NpdGlvbkNhbGxiYWNrPiBzdWNjZXNzQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25F
cnJvckNhbGxiYWNrPiBlcnJvckNhbGxiYWNrLCBQb3NpdGlvbk9wdGlvbnMqIG9wdGlvbnMpCit7
CisgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9IEdlb05vdGlmaWVyOjpjcmVhdGUo
c3VjY2Vzc0NhbGxiYWNrLCBlcnJvckNhbGxiYWNrLCBvcHRpb25zKTsKKworICAgIGlmICghbV9z
ZXJ2aWNlLT5zdGFydFVwZGF0aW5nKG9wdGlvbnMpKSB7CisgICAgICAgIGlmIChub3RpZmllci0+
bV9lcnJvckNhbGxiYWNrKSB7CisgICAgICAgICAgICBSZWZQdHI8UG9zaXRpb25FcnJvcj4gZXJy
b3IgPSBQb3NpdGlvbkVycm9yOjpjcmVhdGUoUG9zaXRpb25FcnJvcjo6UEVSTUlTU0lPTl9FUlJP
UiwgIlVuYWJsZSB0byBTdGFydCIpOworICAgICAgICAgICAgbm90aWZpZXItPm1fZXJyb3JDYWxs
YmFjay0+aGFuZGxlRXZlbnQoZXJyb3IuZ2V0KCkpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biAwOworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgaW50IHNJZGVudGlmaWVyID0gMDsKKyAgICAK
KyAgICBtX3dhdGNoZXJzLnNldCgrK3NJZGVudGlmaWVyLCBub3RpZmllcik7CisKKyAgICByZXR1
cm4gc0lkZW50aWZpZXI7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OmNsZWFyV2F0Y2goaW50IHdh
dGNoSWQpCit7CisgICAgbV93YXRjaGVycy5yZW1vdmUod2F0Y2hJZCk7CisgICAgCisgICAgc3Rv
cFVwZGF0aW5nSWZFbXB0eSgpOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpzdG9wVXBkYXRpbmdJ
ZkVtcHR5KCkKK3sKKyAgICBpZiAobV93YXRjaGVycy5pc0VtcHR5KCkgJiYgbV9vbmVTaG90cy5p
c0VtcHR5KCkpCisgICAgICAgIG1fc2VydmljZS0+c3RvcFVwZGF0aW5nKCk7Cit9CisKK3ZvaWQg
R2VvbG9jYXRpb246OnNlbmRFcnJvclRvT25lU2hvdHMoUG9zaXRpb25FcnJvciogZXJyb3IpCit7
CisgICAgVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPiBjb3B5OworICAgIGNvcHlUb1ZlY3Rv
cihtX29uZVNob3RzLCBjb3B5KTsKKworICAgIFZlY3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+ID46
OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNvcHkuZW5kKCk7CisgICAgZm9yIChWZWN0b3I8UmVmUHRy
PEdlb05vdGlmaWVyPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNvcHkuYmVnaW4oKTsgaXQgIT0g
ZW5kOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxHZW9Ob3RpZmllcj4gbm90aWZpZXIgPSAqaXQ7
CisgICAgICAgIAorICAgICAgICBpZiAobm90aWZpZXItPm1fZXJyb3JDYWxsYmFjaykKKyAgICAg
ICAgICAgIG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2stPmhhbmRsZUV2ZW50KGVycm9yKTsKKyAg
ICB9Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OnNlbmRFcnJvclRvV2F0Y2hlcnMoUG9zaXRpb25F
cnJvciogZXJyb3IpCit7CisgICAgVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPiBjb3B5Owor
ICAgIGNvcHlWYWx1ZXNUb1ZlY3RvcihtX3dhdGNoZXJzLCBjb3B5KTsKKworICAgIFZlY3RvcjxS
ZWZQdHI8R2VvTm90aWZpZXI+ID46OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGNvcHkuZW5kKCk7Cisg
ICAgZm9yIChWZWN0b3I8UmVmUHRyPEdlb05vdGlmaWVyPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9
IGNvcHkuYmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7CisgICAgICAgIFJlZlB0cjxHZW9Ob3Rp
Zmllcj4gbm90aWZpZXIgPSAqaXQ7CisgICAgICAgIAorICAgICAgICBpZiAobm90aWZpZXItPm1f
ZXJyb3JDYWxsYmFjaykKKyAgICAgICAgICAgIG5vdGlmaWVyLT5tX2Vycm9yQ2FsbGJhY2stPmhh
bmRsZUV2ZW50KGVycm9yKTsKKyAgICB9Cit9CisKK3ZvaWQgR2VvbG9jYXRpb246OnNlbmRQb3Np
dGlvblRvT25lU2hvdHMoR2VvcG9zaXRpb24qIHBvc2l0aW9uKQoreworICAgIFZlY3RvcjxSZWZQ
dHI8R2VvTm90aWZpZXI+ID4gY29weTsKKyAgICBjb3B5VG9WZWN0b3IobV9vbmVTaG90cywgY29w
eSk7CisgICAgCisgICAgVmVjdG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPjo6Y29uc3RfaXRlcmF0
b3IgZW5kID0gY29weS5lbmQoKTsKKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8R2VvTm90aWZpZXI+
ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY29weS5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQpIHsK
KyAgICAgICAgUmVmUHRyPEdlb05vdGlmaWVyPiBub3RpZmllciA9ICppdDsKKyAgICAgICAgQVNT
RVJUKG5vdGlmaWVyLT5tX3N1Y2Nlc3NDYWxsYmFjayk7CisgICAgICAgIAorICAgICAgICBub3Rp
Zmllci0+bV90aW1lci5zdG9wKCk7CisgICAgICAgIGJvb2wgc2hvdWxkQ2FsbEVycm9yQ2FsbGJh
Y2sgPSBmYWxzZTsKKyAgICAgICAgbm90aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrLT5oYW5kbGVF
dmVudChwb3NpdGlvbiwgc2hvdWxkQ2FsbEVycm9yQ2FsbGJhY2spOworICAgICAgICBpZiAoc2hv
dWxkQ2FsbEVycm9yQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9y
PiBlcnJvciA9IFBvc2l0aW9uRXJyb3I6OmNyZWF0ZShQb3NpdGlvbkVycm9yOjpVTktOT1dOX0VS
Uk9SLCAiQW4gZXhjZXB0aW9uIHdhcyB0aHJvd24iKTsKKyAgICAgICAgICAgIGhhbmRsZUVycm9y
KGVycm9yLmdldCgpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBHZW9sb2NhdGlvbjo6
c2VuZFBvc2l0aW9uVG9XYXRjaGVycyhHZW9wb3NpdGlvbiogcG9zaXRpb24pCit7CisgICAgVmVj
dG9yPFJlZlB0cjxHZW9Ob3RpZmllcj4gPiBjb3B5OworICAgIGNvcHlWYWx1ZXNUb1ZlY3Rvciht
X3dhdGNoZXJzLCBjb3B5KTsKKyAgICAKKyAgICBWZWN0b3I8UmVmUHRyPEdlb05vdGlmaWVyPiA+
Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBjb3B5LmVuZCgpOworICAgIGZvciAoVmVjdG9yPFJlZlB0
cjxHZW9Ob3RpZmllcj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjb3B5LmJlZ2luKCk7IGl0ICE9
IGVuZDsgKytpdCkgeworICAgICAgICBSZWZQdHI8R2VvTm90aWZpZXI+IG5vdGlmaWVyID0gKml0
OworICAgICAgICBBU1NFUlQobm90aWZpZXItPm1fc3VjY2Vzc0NhbGxiYWNrKTsKKyAgICAgICAg
CisgICAgICAgIG5vdGlmaWVyLT5tX3RpbWVyLnN0b3AoKTsKKyAgICAgICAgYm9vbCBzaG91bGRD
YWxsRXJyb3JDYWxsYmFjayA9IGZhbHNlOworICAgICAgICBub3RpZmllci0+bV9zdWNjZXNzQ2Fs
bGJhY2stPmhhbmRsZUV2ZW50KHBvc2l0aW9uLCBzaG91bGRDYWxsRXJyb3JDYWxsYmFjayk7Cisg
ICAgICAgIGlmIChzaG91bGRDYWxsRXJyb3JDYWxsYmFjaykgeworICAgICAgICAgICAgUmVmUHRy
PFBvc2l0aW9uRXJyb3I+IGVycm9yID0gUG9zaXRpb25FcnJvcjo6Y3JlYXRlKFBvc2l0aW9uRXJy
b3I6OlVOS05PV05fRVJST1IsICJBbiBleGNlcHRpb24gd2FzIHRocm93biIpOworICAgICAgICAg
ICAgaGFuZGxlRXJyb3IoZXJyb3IuZ2V0KCkpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lk
IEdlb2xvY2F0aW9uOjpoYW5kbGVFcnJvcihQb3NpdGlvbkVycm9yKiBlcnJvcikKK3sKKyAgICBB
U1NFUlQoZXJyb3IpOworICAgIAorICAgIHNlbmRFcnJvclRvT25lU2hvdHMoZXJyb3IpOyAgICAK
KyAgICBzZW5kRXJyb3JUb1dhdGNoZXJzKGVycm9yKTsKKworICAgIG1fb25lU2hvdHMuY2xlYXIo
KTsKK30KKwordm9pZCBHZW9sb2NhdGlvbjo6Z2VvbG9jYXRpb25TZXJ2aWNlUG9zaXRpb25DaGFu
Z2VkKEdlb2xvY2F0aW9uU2VydmljZSogc2VydmljZSkKK3sKKyAgICBBU1NFUlQoc2VydmljZS0+
bGFzdFBvc2l0aW9uKCkpOworICAgIAorICAgIHNlbmRQb3NpdGlvblRvT25lU2hvdHMoc2Vydmlj
ZS0+bGFzdFBvc2l0aW9uKCkpOworICAgIHNlbmRQb3NpdGlvblRvV2F0Y2hlcnMoc2VydmljZS0+
bGFzdFBvc2l0aW9uKCkpOworICAgICAgICAKKyAgICBtX29uZVNob3RzLmNsZWFyKCk7CisgICAg
c3RvcFVwZGF0aW5nSWZFbXB0eSgpOworfQorCit2b2lkIEdlb2xvY2F0aW9uOjpnZW9sb2NhdGlv
blNlcnZpY2VFcnJvck9jY3VycmVkKEdlb2xvY2F0aW9uU2VydmljZSogc2VydmljZSkKK3sKKyAg
ICBBU1NFUlQoc2VydmljZS0+bGFzdEVycm9yKCkpOworICAgIAorICAgIGhhbmRsZUVycm9yKHNl
cnZpY2UtPmxhc3RFcnJvcigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDog
V2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dl
b2xvY2F0aW9uLmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24uaAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
QXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBHZW9sb2NhdGlvbl9oCisjZGVmaW5lIEdlb2xv
Y2F0aW9uX2gKKworI2luY2x1ZGUgIkdlb2xvY2F0aW9uU2VydmljZS5oIgorI2luY2x1ZGUgIlBv
c2l0aW9uQ2FsbGJhY2suaCIKKyNpbmNsdWRlICJQb3NpdGlvbkVycm9yQ2FsbGJhY2suaCIKKyNp
bmNsdWRlICJQb3NpdGlvbk9wdGlvbnMuaCIKKyNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUg
PHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGcmFtZTsKK2NsYXNzIEdlb3Bv
c2l0aW9uOworCitjbGFzcyBHZW9sb2NhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEdlb2xvY2F0
aW9uPiwgcHVibGljIEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8R2VvbG9jYXRpb24+IGNyZWF0ZShGcmFtZSogZnJhbWUpIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBHZW9sb2NhdGlvbihmcmFtZSkpOyB9CisKKyAgICB2aXJ0dWFsIH5HZW9s
b2NhdGlvbigpIHt9CisKKyAgICB2b2lkIGRpc2Nvbm5lY3RGcmFtZSgpOworICAgIAorICAgIEdl
b3Bvc2l0aW9uKiBsYXN0UG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3NlcnZpY2UtPmxhc3RQ
b3NpdGlvbigpOyB9CisKKyAgICB2b2lkIGdldEN1cnJlbnRQb3NpdGlvbihQYXNzUmVmUHRyPFBv
c2l0aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBvc2l0
aW9uT3B0aW9ucyopOworICAgIGludCB3YXRjaFBvc2l0aW9uKFBhc3NSZWZQdHI8UG9zaXRpb25D
YWxsYmFjaz4sIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiwgUG9zaXRpb25PcHRp
b25zKik7CisgICAgdm9pZCBjbGVhcldhdGNoKGludCB3YXRjaElkKTsKKworcHJpdmF0ZToKKyAg
ICBHZW9sb2NhdGlvbihGcmFtZSopOworCisgICAgY2xhc3MgR2VvTm90aWZpZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxHZW9Ob3RpZmllcj4geworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIFBh
c3NSZWZQdHI8R2VvTm90aWZpZXI+IGNyZWF0ZShQYXNzUmVmUHRyPFBvc2l0aW9uQ2FsbGJhY2s+
IHBvc2l0aW9uQ2FsbGJhY2ssIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvckNhbGxiYWNrPiBwb3Np
dGlvbkVycm9yQ2FsbGJhY2ssIFBvc2l0aW9uT3B0aW9ucyogb3B0aW9ucykgeyByZXR1cm4gYWRv
cHRSZWYobmV3IEdlb05vdGlmaWVyKHBvc2l0aW9uQ2FsbGJhY2ssIHBvc2l0aW9uRXJyb3JDYWxs
YmFjaywgb3B0aW9ucykpOyB9CisgICAgICAgIAorICAgICAgICB2b2lkIHRpbWVyRmlyZWQoVGlt
ZXI8R2VvTm90aWZpZXI+Kik7CisgICAgICAgIAorICAgICAgICBSZWZQdHI8UG9zaXRpb25DYWxs
YmFjaz4gbV9zdWNjZXNzQ2FsbGJhY2s7CisgICAgICAgIFJlZlB0cjxQb3NpdGlvbkVycm9yQ2Fs
bGJhY2s+IG1fZXJyb3JDYWxsYmFjazsKKyAgICAgICAgVGltZXI8R2VvTm90aWZpZXI+IG1fdGlt
ZXI7CisKKyAgICBwcml2YXRlOgorICAgICAgICBHZW9Ob3RpZmllcihQYXNzUmVmUHRyPFBvc2l0
aW9uQ2FsbGJhY2s+LCBQYXNzUmVmUHRyPFBvc2l0aW9uRXJyb3JDYWxsYmFjaz4sIFBvc2l0aW9u
T3B0aW9ucyopOworICAgIH07CisgICAgCisgICAgdm9pZCBzdG9wVXBkYXRpbmdJZkVtcHR5KCk7
CisKKyAgICB2b2lkIHNlbmRFcnJvclRvT25lU2hvdHMoUG9zaXRpb25FcnJvciopOworICAgIHZv
aWQgc2VuZEVycm9yVG9XYXRjaGVycyhQb3NpdGlvbkVycm9yKik7CisgICAgdm9pZCBzZW5kUG9z
aXRpb25Ub09uZVNob3RzKEdlb3Bvc2l0aW9uKik7CisgICAgdm9pZCBzZW5kUG9zaXRpb25Ub1dh
dGNoZXJzKEdlb3Bvc2l0aW9uKik7CisgICAgCisgICAgdm9pZCBoYW5kbGVFcnJvcihQb3NpdGlv
bkVycm9yKik7CisgICAgCisgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uU2VydmljZVBvc2l0
aW9uQ2hhbmdlZChHZW9sb2NhdGlvblNlcnZpY2UqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2VvbG9j
YXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZChHZW9sb2NhdGlvblNlcnZpY2UqKTsKKyAgICAgICAg
ICAgIAorICAgIHR5cGVkZWYgSGFzaFNldDxSZWZQdHI8R2VvTm90aWZpZXI+ID4gR2VvTm90aWZp
ZXJTZXQ7CisgICAgdHlwZWRlZiBIYXNoTWFwPGludCwgUmVmUHRyPEdlb05vdGlmaWVyPiA+IEdl
b05vdGlmaWVyTWFwOworICAgIAorICAgIEdlb05vdGlmaWVyU2V0IG1fb25lU2hvdHM7CisgICAg
R2VvTm90aWZpZXJNYXAgbV93YXRjaGVyczsKKyAgICBGcmFtZSogbV9mcmFtZTsKKyAgICBPd25Q
dHI8R2VvbG9jYXRpb25TZXJ2aWNlPiBtX3NlcnZpY2U7Cit9OworICAgIAorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gR2VvbG9jYXRpb25faApJbmRleDogV2ViQ29yZS9wYWdl
L0dlb2xvY2F0aW9uLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvR2VvbG9jYXRpb24u
aWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL0dlb2xvY2F0aW9uLmlkbAkocmV2aXNp
b24gMCkKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJ
bmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLiAKKyAqLworCittb2R1bGUgY29yZSB7CisKKyAgICBpbnRlcmZhY2UgR2VvbG9jYXRpb24g
eworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgR2VvcG9zaXRpb24gbGFzdFBvc2l0aW9uOwor
CisgICAgICAgIFtDdXN0b21dIHZvaWQgZ2V0Q3VycmVudFBvc2l0aW9uKGluIFBvc2l0aW9uQ2Fs
bGJhY2sgc3VjY2Vzc0NhbGxiYWNrLCBpbiBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgZXJyb3JDYWxs
YmFjaywgaW4gUG9zaXRpb25PcHRpb25zIG9wdGlvbnMpOworCisgICAgICAgIFtDdXN0b21dIGxv
bmcgd2F0Y2hQb3NpdGlvbihpbiBQb3NpdGlvbkNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjaywgaW4g
UG9zaXRpb25FcnJvckNhbGxiYWNrIGVycm9yQ2FsbGJhY2ssIGluIFBvc2l0aW9uT3B0aW9ucyBv
cHRpb25zKTsKKworICAgICAgICB2b2lkIGNsZWFyV2F0Y2goaW4gbG9uZyB3YXRjaElkKTsKKyAg
ICB9OworCit9CkluZGV4OiBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BhZ2UvR2VvcG9zaXRpb24uY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJHZW9wb3NpdGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1N0cmluZyBHZW9wb3NpdGlvbjo6dG9TdHJpbmcoKSBjb25zdAoreworICAgIHJldHVybiBTdHJp
bmc6OmZvcm1hdCgicG9zaXRpb24oJS42bGcsICUuNmxnLCAlLjZsZywgJS42bGcsICUuNmxnLCAl
LjZsZywgJS42bGcsICUubGxkKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1fbGF0aXR1
ZGUsIG1fbG9uZ2l0dWRlLCBtX2FsdGl0dWRlLCBtX2FjY3VyYWN5LCAKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9hbHRpdHVkZUFjY3VyYWN5LCBtX2hlYWRpbmcsIG1fdmVsb2NpdHksIG1f
dGltZXN0YW1wKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29yZS9w
YWdlL0dlb3Bvc2l0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9u
LmgJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2UvR2VvcG9zaXRpb24uaAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMu
IEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LiAKKyAqLworCisjaWZuZGVmIEdlb3Bvc2l0aW9uX2gKKyNkZWZpbmUgR2VvcG9zaXRpb25faAor
CisjaW5jbHVkZSAiRXZlbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordHlwZWRlZiBp
bnQgRXhjZXB0aW9uQ29kZTsKKworY2xhc3MgR2VvcG9zaXRpb24gOiBwdWJsaWMgUmVmQ291bnRl
ZDxHZW9wb3NpdGlvbj4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdlb3Bvc2l0
aW9uPiBjcmVhdGUoZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWx0
aXR1ZGUsIGRvdWJsZSBhY2N1cmFjeSwgZG91YmxlIGFsdGl0dWRlQWNjdXJhY3ksIGRvdWJsZSBo
ZWFkaW5nLCBkb3VibGUgdmVsb2NpdHksIERPTVRpbWVTdGFtcCB0aW1lc3RhbXApIHsgcmV0dXJu
IGFkb3B0UmVmKG5ldyBHZW9wb3NpdGlvbihsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhbHRpdHVkZSwg
YWNjdXJhY3ksIGFsdGl0dWRlQWNjdXJhY3ksIGhlYWRpbmcsIHZlbG9jaXR5LCB0aW1lc3RhbXAp
KTsgfQorICAgIAorICAgIGRvdWJsZSBsYXRpdHVkZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF0aXR1
ZGU7IH0KKyAgICBkb3VibGUgbG9uZ2l0dWRlKCkgY29uc3QgeyByZXR1cm4gbV9sb25naXR1ZGU7
IH0KKyAgICBkb3VibGUgYWx0aXR1ZGUoKSBjb25zdCB7IHJldHVybiBtX2FsdGl0dWRlOyB9Cisg
ICAgZG91YmxlIGFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9hY2N1cmFjeTsgfQorICAgIGRv
dWJsZSBhbHRpdHVkZUFjY3VyYWN5KCkgY29uc3QgeyByZXR1cm4gbV9hbHRpdHVkZUFjY3VyYWN5
OyB9CisgICAgZG91YmxlIGhlYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX2hlYWRpbmc7IH0KKyAg
ICBkb3VibGUgdmVsb2NpdHkoKSBjb25zdCB7IHJldHVybiBtX3ZlbG9jaXR5OyB9CisgICAgRE9N
VGltZVN0YW1wIHRpbWVzdGFtcCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZXN0YW1wOyB9CisKKyAg
ICBTdHJpbmcgdG9TdHJpbmcoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBHZW9wb3NpdGlvbihk
b3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwgZG91Ymxl
IGFjY3VyYWN5LCBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeSwgZG91YmxlIGhlYWRpbmcsIGRvdWJs
ZSB2ZWxvY2l0eSwgRE9NVGltZVN0YW1wIHRpbWVzdGFtcCkKKyAgICAgICAgOiBtX2xhdGl0dWRl
KGxhdGl0dWRlKQorICAgICAgICAsIG1fbG9uZ2l0dWRlKGxvbmdpdHVkZSkKKyAgICAgICAgLCBt
X2FsdGl0dWRlKGFsdGl0dWRlKQorICAgICAgICAsIG1fYWNjdXJhY3koYWNjdXJhY3kpCisgICAg
ICAgICwgbV9hbHRpdHVkZUFjY3VyYWN5KGFsdGl0dWRlQWNjdXJhY3kpCisgICAgICAgICwgbV9o
ZWFkaW5nKGhlYWRpbmcpCisgICAgICAgICwgbV92ZWxvY2l0eSh2ZWxvY2l0eSkKKyAgICAgICAg
LCBtX3RpbWVzdGFtcCh0aW1lc3RhbXApCisgICAgeworICAgIH0KKworICAgIGRvdWJsZSBtX2xh
dGl0dWRlOworICAgIGRvdWJsZSBtX2xvbmdpdHVkZTsKKyAgICBkb3VibGUgbV9hbHRpdHVkZTsK
KyAgICBkb3VibGUgbV9hY2N1cmFjeTsKKyAgICBkb3VibGUgbV9hbHRpdHVkZUFjY3VyYWN5Owor
ICAgIGRvdWJsZSBtX2hlYWRpbmc7CisgICAgZG91YmxlIG1fdmVsb2NpdHk7CisgICAgRE9NVGlt
ZVN0YW1wIG1fdGltZXN0YW1wOworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEdlb3Bvc2l0aW9uX2gKSW5kZXg6IFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5p
ZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL0dlb3Bvc2l0aW9uLmlkbAkocmV2aXNpb24g
MCkKKysrIFdlYkNvcmUvcGFnZS9HZW9wb3NpdGlvbi5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRz
IFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
bW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIEdlb3Bvc2l0aW9uIHsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBsYXRpdHVkZTsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIGRvdWJsZSBsb25naXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUg
YWx0aXR1ZGU7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgYWNjdXJhY3k7Cisg
ICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBkb3VibGUgYWx0aXR1ZGVBY2N1cmFjeTsKKyAgICAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIGRvdWJsZSBoZWFkaW5nCisgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBkb3VibGUgdmVsb2NpdHkKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVRp
bWVTdGFtcCB0aW1lc3RhbXA7CisKKyNpZiBkZWZpbmVkKExBTkdVQUdFX0pBVkFTQ1JJUFQpCisg
ICAgICAgIFtEb250RW51bV0gRE9NU3RyaW5nIHRvU3RyaW5nKCk7CisjZW5kaWYKKyAgICB9Owor
fQpJbmRleDogV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5jcHAJKHJldmlzaW9uIDM3ODMxKQorKysgV2ViQ29yZS9wYWdlL05h
dmlnYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJG
cmFtZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJD
bGllbnQuaCIKKyNpbmNsdWRlICJHZW9sb2NhdGlvbi5oIgogI2luY2x1ZGUgIkxhbmd1YWdlLmgi
CiAjaW5jbHVkZSAiTWltZVR5cGVBcnJheS5oIgogI2luY2x1ZGUgIk5ldHdvcmtTdGF0ZU5vdGlm
aWVyLmgiCkBAIC04Nyw2ICs4OCwxMCBAQCB2b2lkIE5hdmlnYXRvcjo6ZGlzY29ubmVjdEZyYW1l
KCkKICAgICAgICAgbV9taW1lVHlwZXMtPmRpc2Nvbm5lY3RGcmFtZSgpOwogICAgICAgICBtX21p
bWVUeXBlcyA9IDA7CiAgICAgfQorICAgIGlmIChtX2dlb2xvY2F0aW9uKSB7CisgICAgICAgIG1f
Z2VvbG9jYXRpb24tPmRpc2Nvbm5lY3RGcmFtZSgpOworICAgICAgICBtX2dlb2xvY2F0aW9uID0g
MDsKKyAgICB9CiAgICAgbV9mcmFtZSA9IDA7CiB9CiAKQEAgLTE5Nyw0ICsyMDIsMTEgQEAgYm9v
bCBOYXZpZ2F0b3I6Om9uTGluZSgpIGNvbnN0CiAgICAgcmV0dXJuIG5ldHdvcmtTdGF0ZU5vdGlm
aWVyKCkub25MaW5lKCk7CiB9CiAKK0dlb2xvY2F0aW9uKiBOYXZpZ2F0b3I6Omdlb2xvY2F0aW9u
KCkgY29uc3QKK3sKKyAgICBpZiAoIW1fZ2VvbG9jYXRpb24pCisgICAgICAgIG1fZ2VvbG9jYXRp
b24gPSBHZW9sb2NhdGlvbjo6Y3JlYXRlKG1fZnJhbWUpOworICAgIHJldHVybiBtX2dlb2xvY2F0
aW9uLmdldCgpOworfQorICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogV2ViQ29y
ZS9wYWdlL05hdmlnYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
aAkocmV2aXNpb24gMzc4MzEpCisrKyBXZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDYgKzI3LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNz
IEZyYW1lOworICAgIGNsYXNzIEdlb2xvY2F0aW9uOwogICAgIGNsYXNzIE1pbWVUeXBlQXJyYXk7
CiAgICAgY2xhc3MgUGx1Z2luRGF0YTsKICAgICBjbGFzcyBQbHVnaW5BcnJheTsKQEAgLTU2LDEx
ICs1NywxNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgamF2YUVuYWJsZWQo
KSBjb25zdDsKIAogICAgICAgICBib29sIG9uTGluZSgpIGNvbnN0OworICAgICAgICBHZW9sb2Nh
dGlvbiogZ2VvbG9jYXRpb24oKSBjb25zdDsKKyAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBH
QyBtYXJraW5nLgorICAgICAgICBHZW9sb2NhdGlvbiogb3B0aW9uYWxHZW9sb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fZ2VvbG9jYXRpb24uZ2V0KCk7IH0KKwogICAgIHByaXZhdGU6CiAgICAg
ICAgIE5hdmlnYXRvcihGcmFtZSopOwogICAgICAgICBGcmFtZSogbV9mcmFtZTsKICAgICAgICAg
bXV0YWJsZSBSZWZQdHI8UGx1Z2luQXJyYXk+IG1fcGx1Z2luczsKICAgICAgICAgbXV0YWJsZSBS
ZWZQdHI8TWltZVR5cGVBcnJheT4gbV9taW1lVHlwZXM7CisgICAgICAgIG11dGFibGUgUmVmUHRy
PEdlb2xvY2F0aW9uPiBtX2dlb2xvY2F0aW9uOwogICAgIH07CiAKIH0KSW5kZXg6IFdlYkNvcmUv
cGFnZS9OYXZpZ2F0b3IuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3Iu
aWRsCShyZXZpc2lvbiAzNzgzMSkKKysrIFdlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuaWRsCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xOSw3ICsxOSw5IEBACiAKIG1vZHVsZSB3aW5kb3cgewogCi0gICAgaW50
ZXJmYWNlIE5hdmlnYXRvciB7CisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ3VzdG9tTWFya0Z1
bmN0aW9uCisgICAgXSBOYXZpZ2F0b3IgewogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGFwcENvZGVOYW1lOwogICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGFwcE5hbWU7CiAgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBbQ3VzdG9tR2V0dGVyXSBET01T
dHJpbmcgYXBwVmVyc2lvbjsKQEAgLTM2LDYgKzM4LDkgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAg
ICAgIGJvb2xlYW4gamF2YUVuYWJsZWQoKTsKICAgICAgICAgCiAgICAgICAgIHJlYWRvbmx5IGF0
dHJpYnV0ZSBib29sZWFuIG9uTGluZTsKKyNpZiBFTkFCTEVfR0VPTE9DQVRJT04KKyAgICAgICAg
cmVhZG9ubHkgYXR0cmlidXRlIEdlb2xvY2F0aW9uIGdlb2xvY2F0aW9uOworI2VuZGlmCiAgICAg
fTsKIAogfQpJbmRleDogV2ViQ29yZS9wYWdlL1Bvc2l0aW9uQ2FsbGJhY2suaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25DYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysgV2Vi
Q29yZS9wYWdlL1Bvc2l0aW9uQ2FsbGJhY2suaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
KyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVm
IFBvc2l0aW9uQ2FsbGJhY2tfaAorI2RlZmluZSBQb3NpdGlvbkNhbGxiYWNrX2gKKworI2luY2x1
ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKyAgICAKKyAgICBjbGFzcyBHZW9wb3NpdGlvbjsKKyAgICAKKyAgICBj
bGFzcyBQb3NpdGlvbkNhbGxiYWNrIDogcHVibGljIFJlZkNvdW50ZWQ8UG9zaXRpb25DYWxsYmFj
az4geworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+UG9zaXRpb25DYWxsYmFjaygpIHsg
fQorICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQoR2VvcG9zaXRpb24qIHBvc2l0aW9u
LCBib29sJiByYWlzZWRFeGNlcHRpb24pID0gMDsKKyAgICB9OworICAgIAorfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCisjZW5kaWYgLy8gUG9zaXRpb25DYWxsYmFja19oCkluZGV4OiBXZWJDb3Jl
L3BhZ2UvUG9zaXRpb25DYWxsYmFjay5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bv
c2l0aW9uQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bvc2l0aW9u
Q2FsbGJhY2suaWRsCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGlu
dGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRlQ29uc3RydWN0b3IKKyAgICBdIFBvc2l0aW9uQ2Fs
bGJhY2sgeworICAgICAgICB2b2lkIGhhbmRsZUV2ZW50KGluIEdlb3Bvc2l0aW9uIHBvc2l0aW9u
KTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmgJKHJldmlzaW9uIDApCisrKyBX
ZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYg
UG9zaXRpb25FcnJvcl9oCisjZGVmaW5lIFBvc2l0aW9uRXJyb3JfaAorCisjaW5jbHVkZSAiUGxh
dGZvcm1TdHJpbmcuaCIKKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFBvc2l0
aW9uRXJyb3IgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3NpdGlvbkVycm9yPiB7CitwdWJsaWM6Cisg
ICAgZW51bSBFcnJvckNvZGUgeworICAgICAgICBQRVJNSVNTSU9OX0VSUk9SID0gMSwKKyAgICAg
ICAgTE9DQVRJT05fUFJPVklERVJfRVJST1IsCisgICAgICAgIFBPU0lUSU9OX05PVF9GT1VORF9F
UlJPUiwKKyAgICAgICAgVElNRU9VVF9FUlJPUiwKKyAgICAgICAgVU5LTk9XTl9FUlJPUgorICAg
IH07CisgICAgCisgICAgc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRpb25FcnJvcj4gY3JlYXRlKEVy
cm9yQ29kZSBjb2RlLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIHsgcmV0dXJuIGFkb3B0UmVmKG5l
dyBQb3NpdGlvbkVycm9yKGNvZGUsIG1lc3NhZ2UpKTsgfQorCisgICAgRXJyb3JDb2RlIGNvZGUo
KSBjb25zdCB7IHJldHVybiBtX2NvZGU7IH0KKyAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UoKSBj
b25zdCB7IHJldHVybiBtX21lc3NhZ2U7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgUG9zaXRpb25F
cnJvcihFcnJvckNvZGUgY29kZSwgY29uc3QgU3RyaW5nJiBtZXNzYWdlKSAKKyAgICAgICAgOiBt
X2NvZGUoY29kZSkKKyAgICAgICAgLCBtX21lc3NhZ2UobWVzc2FnZSkKKyAgICB7CisgICAgfQor
ICAgIAorICAgIEVycm9yQ29kZSBtX2NvZGU7CisgICAgU3RyaW5nIG1fbWVzc2FnZTsKK307Cisg
ICAgCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBQb3NpdGlvbkVycm9yX2gK
SW5kZXg6IFdlYkNvcmUvcGFnZS9Qb3NpdGlvbkVycm9yLmlkbAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3BhZ2UvUG9zaXRpb25FcnJvci5pZGwJKHJldmlzaW9uIDApCisrKyBXZWJDb3JlL3BhZ2Uv
UG9zaXRpb25FcnJvci5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGNvcmUgeworCisg
ICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0gUG9zaXRp
b25FcnJvciB7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGNvZGU7CisgICAgICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgbWVzc2FnZTsKKyAgICB9OworCit9CkluZGV4
OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25FcnJvckNhbGxiYWNrLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oCShyZXZpc2lvbiAwKQorKysgV2ViQ29y
ZS9wYWdlL1Bvc2l0aW9uRXJyb3JDYWxsYmFjay5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ0
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5k
ZWYgUG9zaXRpb25FcnJvckNhbGxiYWNrX2gKKyNkZWZpbmUgUG9zaXRpb25FcnJvckNhbGxiYWNr
X2gKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVk
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworICAgIGNsYXNzIFBvc2l0aW9uRXJyb3I7CisK
KyAgICBjbGFzcyBQb3NpdGlvbkVycm9yQ2FsbGJhY2sgOiBwdWJsaWMgUmVmQ291bnRlZDxQb3Np
dGlvbkVycm9yQ2FsbGJhY2s+IHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpcnR1YWwgflBvc2l0
aW9uRXJyb3JDYWxsYmFjaygpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlRXZlbnQo
UG9zaXRpb25FcnJvciopID0gMDsKKyAgICB9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gUG9zaXRpb25FcnJvckNhbGxiYWNrX2gKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9Qb3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9Q
b3NpdGlvbkVycm9yQ2FsbGJhY2suaWRsCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bv
c2l0aW9uRXJyb3JDYWxsYmFjay5pZGwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMzQgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworbW9kdWxlIGNvcmUg
eworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgR2VuZXJhdGVDb25zdHJ1Y3RvcgorICAgIF0g
UG9zaXRpb25FcnJvckNhbGxiYWNrIHsKKyAgICAgICAgdm9pZCBoYW5kbGVFdmVudChpbiBQb3Np
dGlvbkVycm9yIGVycm9yKTsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRp
b25PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5o
CShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wYWdlL1Bvc2l0aW9uT3B0aW9ucy5oCShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIElu
Yy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuIAorICovCisKKyNpZm5kZWYgUG9zaXRpb25PcHRpb25zX2gKKyNkZWZpbmUgUG9zaXRpb25P
cHRpb25zX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworICAgIAorY2xhc3MgUG9zaXRpb25P
cHRpb25zIDogcHVibGljIFJlZkNvdW50ZWQ8UG9zaXRpb25PcHRpb25zPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFBhc3NSZWZQdHI8UG9zaXRpb25PcHRpb25zPiBjcmVhdGUoYm9vbCBoaWdoQWNj
dXJhY3ksIGludCB0aW1lb3V0KSB7IHJldHVybiBhZG9wdFJlZihuZXcgUG9zaXRpb25PcHRpb25z
KGhpZ2hBY2N1cmFjeSwgdGltZW91dCkpOyB9CisKKyAgICBib29sIGVuYWJsZUhpZ2hBY2N1cmFj
eSgpIGNvbnN0IHsgcmV0dXJuIG1faGlnaEFjY3VyYWN5OyB9CisgICAgdm9pZCBzZXRFbmFibGVI
aWdoQWNjdXJhY3koYm9vbCBlbmFibGUpIHsgbV9oaWdoQWNjdXJhY3kgPSBlbmFibGU7IH0KKyAg
ICBpbnQgdGltZW91dCgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZW91dDsgfQorICAgIHZvaWQgc2V0
VGltZW91dChpbnQgdCkgeyBtX3RpbWVvdXQgPSB0OyB9CisgICAgCitwcml2YXRlOgorICAgIFBv
c2l0aW9uT3B0aW9ucyhib29sIGhpZ2hBY2N1cmFjeSwgaW50IHRpbWVvdXQpCisgICAgICAgIDog
bV9oaWdoQWNjdXJhY3koaGlnaEFjY3VyYWN5KQorICAgICAgICAsIG1fdGltZW91dCh0aW1lb3V0
KQorICAgIHsKKyAgICB9CisgICAgCisgICAgYm9vbCBtX2hpZ2hBY2N1cmFjeTsKKyAgICBpbnQg
bV90aW1lb3V0OworfTsKKyAgICAKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8v
IFBvc2l0aW9uT3B0aW9uc19oCkluZGV4OiBXZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmlk
bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvUG9zaXRpb25PcHRpb25zLmlkbAkocmV2aXNp
b24gMCkKKysrIFdlYkNvcmUvcGFnZS9Qb3NpdGlvbk9wdGlvbnMuaWRsCShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxs
IFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKK21vZHVsZSBjb3JlIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIEdlbmVyYXRl
Q29uc3RydWN0b3IKKyAgICBdIFBvc2l0aW9uT3B0aW9ucyB7CisgICAgICAgIGF0dHJpYnV0ZSBi
b29sZWFuIGVuYWJsZUhpZ2hBY2N1cmFjeTsKKyAgICAgICAgYXR0cmlidXRlIGxvbmcgdGltZW91
dDsKKyAgICB9OworCit9CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL0dlb2xvY2F0aW9uU2Vydmlj
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2Uu
Y3BwCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2Uu
Y3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJH
ZW9sb2NhdGlvblNlcnZpY2UuaCIKKworI2luY2x1ZGUgIkdlb3Bvc2l0aW9uLmgiCisjaW5jbHVk
ZSAiUG9zaXRpb25FcnJvci5oIgorI2luY2x1ZGUgIlBvc2l0aW9uT3B0aW9ucy5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0dlb2xvY2F0aW9uU2VydmljZTo6R2VvbG9jYXRpb25TZXJ2aWNl
KEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCogY2xpZW50KQorICAgIDogbV9nZW9sb2NhdGlvblNl
cnZpY2VDbGllbnQoY2xpZW50KQoreworICAgIEFTU0VSVChtX2dlb2xvY2F0aW9uU2VydmljZUNs
aWVudCk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlOjpwb3NpdGlvbkNoYW5nZWQoKQor
eworICAgIG1fZ2VvbG9jYXRpb25TZXJ2aWNlQ2xpZW50LT5nZW9sb2NhdGlvblNlcnZpY2VQb3Np
dGlvbkNoYW5nZWQodGhpcyk7Cit9CisKK3ZvaWQgR2VvbG9jYXRpb25TZXJ2aWNlOjplcnJvck9j
Y3VycmVkKCkKK3sKKyAgICBtX2dlb2xvY2F0aW9uU2VydmljZUNsaWVudC0+Z2VvbG9jYXRpb25T
ZXJ2aWNlRXJyb3JPY2N1cnJlZCh0aGlzKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogV2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL3BsYXRmb3JtL0dlb2xvY2F0aW9uU2VydmljZS5oCShyZXZpc2lvbiAwKQorKysg
V2ViQ29yZS9wbGF0Zm9ybS9HZW9sb2NhdGlvblNlcnZpY2UuaAkocmV2aXNpb24gMCkKQEAgLTAs
MCArMSw2OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBBcHBsZSBJbmMuIEFsbCBSaWdo
dHMgUmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIEdlb2xvY2F0aW9uU2VydmljZV9oCisjZGVmaW5lIEdlb2xvY2F0aW9uU2Vydmlj
ZV9oCisKKyNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBHZW9sb2NhdGlvblNlcnZpY2U7CitjbGFzcyBHZW9wb3NpdGlvbjsKK2NsYXNz
IFBvc2l0aW9uRXJyb3I7CitjbGFzcyBQb3NpdGlvbk9wdGlvbnM7CisKK2NsYXNzIEdlb2xvY2F0
aW9uU2VydmljZUNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+R2VvbG9jYXRpb25TZXJ2
aWNlQ2xpZW50KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGdlb2xvY2F0aW9uU2VydmljZVBvc2l0
aW9uQ2hhbmdlZChHZW9sb2NhdGlvblNlcnZpY2UqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZ2Vv
bG9jYXRpb25TZXJ2aWNlRXJyb3JPY2N1cnJlZChHZW9sb2NhdGlvblNlcnZpY2UqKSB7IH0KK307
CisKK2NsYXNzIEdlb2xvY2F0aW9uU2VydmljZSA6IHB1YmxpYyBOb25jb3B5YWJsZSB7CitwdWJs
aWM6CisgICAgc3RhdGljIEdlb2xvY2F0aW9uU2VydmljZSogY3JlYXRlKEdlb2xvY2F0aW9uU2Vy
dmljZUNsaWVudCopOworICAgIHZpcnR1YWwgfkdlb2xvY2F0aW9uU2VydmljZSgpIHt9CisgICAg
CisgICAgYm9vbCBzdGFydFVwZGF0aW5nKFBvc2l0aW9uT3B0aW9ucyopOworICAgIHZpcnR1YWwg
dm9pZCBzdG9wVXBkYXRpbmcoKTsKKyAgICAKKyAgICBHZW9wb3NpdGlvbiogbGFzdFBvc2l0aW9u
KCkgY29uc3Q7CisgICAgUG9zaXRpb25FcnJvciogbGFzdEVycm9yKCkgY29uc3Q7CisKKyAgICB2
b2lkIHBvc2l0aW9uQ2hhbmdlZCgpOworICAgIHZvaWQgZXJyb3JPY2N1cnJlZCgpOworCitwcm90
ZWN0ZWQ6CisgICAgR2VvbG9jYXRpb25TZXJ2aWNlKEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCop
OworCitwcml2YXRlOgorICAgIEdlb2xvY2F0aW9uU2VydmljZUNsaWVudCogbV9nZW9sb2NhdGlv
blNlcnZpY2VDbGllbnQ7Cit9OworICAgIAorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gR2VvbG9jYXRpb25TZXJ2aWNlX2gKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDM3ODMxKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIw
MDgtMTAtMjMgIEdyZWcgQm9sc2luZ2EgIDxib2xzaW5nYUBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgU2FtIFdlaW5pZy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE0NzUKKyAgICAgICAgCisgICAgICAgIFByb3ZpZGUgc3VwcG9y
dCBmb3IgdGhlIEdlb2xvY2F0aW9uIEFQSQorICAgICAgICAKKyAgICAgICAgaHR0cDovL2Rldi53
My5vcmcvZ2VvL2FwaS9zcGVjLXNvdXJjZS5odG1sCisKKyAgICAgICAgVGVzdHMgdG8gdmVyaWZ5
IEdlb2xvY2F0aW9uIGlzbid0IGltcGxlbWVudGVkIChzbyB0aGF0IGl0IGRpZG4ndCBsZWFrIGlu
dG8gCisgICAgICAgIFdlYkNvcmUgZm9yIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IGl0
KS4KKworICAgICAgICAqIGdlb2xvY2F0aW9uOiBBZGRlZC4KKyAgICAgICAgKiBnZW9sb2NhdGlv
bi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBnZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQuaHRtbDogQWRkZWQu
CisgICAgICAgICogZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tdGVzdC5qczogQ29waWVkIGZyb20g
TGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tdGVzdC5qcy4KKyAgICAgICAgKHJlc2V0KToKKyAgICAg
ICAgKGhhbmdlZCk6CisgICAgICAgICh3YXRjaFBvc2l0aW9uQW5kRW5kKToKKyAgICAgICAgKHdh
dGNoUG9zaXRpb24uX3Bvc2l0aW9uQ2FsbGJhY2spOgorICAgICAgICAod2F0Y2hQb3NpdGlvbik6
CisgICAgICAgICh3YXRjaFBvc2l0aW9uVGVzdEFuZEVuZCk6CisgICAgICAgICh3YXRjaFBvc2l0
aW9uQW5kRmFpbCk6CisgICAgICAgICh3YXRjaFBvc2l0aW9uQW5kVGVzdC5fcG9zaXRpb25DYWxs
YmFjayk6CisgICAgICAgICh3YXRjaFBvc2l0aW9uQW5kVGVzdCk6CisgICAgICAgIChnZXRDdXJy
ZW50UG9zaXRpb25BbmRFbmQpOgorICAgICAgICAoZ2V0Q3VycmVudFBvc2l0aW9uLl9wb3NpdGlv
bkNhbGxiYWNrKToKKyAgICAgICAgKGdldEN1cnJlbnRQb3NpdGlvbik6CisgICAgICAgIChnZXRD
dXJyZW50UG9zaXRpb25UZXN0QW5kRW5kKToKKyAgICAgICAgKGdldEN1cnJlbnRQb3NpdGlvbkFu
ZEZhaWwpOgorICAgICAgICAoZ2V0Q3VycmVudFBvc2l0aW9uQW5kVGVzdC5fcG9zaXRpb25DYWxs
YmFjayk6CisgICAgICAgIChnZXRDdXJyZW50UG9zaXRpb25BbmRUZXN0KToKKyAgICAgICAgKGVu
ZFRlc3QpOgorICAgICAgICAocmVsYXRpdmVVUkwpOgorCiAyMDA4LTEwLTIzICBLZXZpbiBNY0N1
bGxvdWdoICA8a21jY3VsbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIEZvcmdvdCB0byByZW1v
dmUgdGhlIHRlc3RzIGZyb20gdGhlIHNraXBwZWQgbGlzdHMsIHRoaXMgc2hvdWxkIGhhdmUgYmVl
bgpJbmRleDogTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tbm90LWltcGxlbWVu
dGVkLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9n
ZW9sb2NhdGlvbi1ub3QtaW1wbGVtZW50ZWQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysg
TGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tbm90LWltcGxlbWVudGVkLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3IEBACitURVNUKG5hdmlnYXRvci5nZW9s
b2NhdGlvbiA9PT0gdW5kZWZpbmVkKSBPSworVEVTVChuYXZpZ2F0b3IuZ2VvbG9jYXRpb24gPT0g
bnVsbCkgT0sKK1RFU1QoaGFzR2VvbG9jYXRpb25Qcm9wZXJ0eSA9PSBmYWxzZSkgT0sKK1RFU1Qo
J2dlb2xvY2F0aW9uJyBpbiBuYXZpZ2F0b3IgPT0gZmFsc2UpIE9LCitURVNUKG5hdmlnYXRvci5o
YXNPd25Qcm9wZXJ0eSgnZ2VvbG9jYXRpb24nKSA9PSBmYWxzZSkgT0sKK0VORCBPRiBURVNUCisK
SW5kZXg6IExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLW5vdC1pbXBsZW1lbnRl
ZC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9u
LW5vdC1pbXBsZW1lbnRlZC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZ2VvbG9j
YXRpb24vZ2VvbG9jYXRpb24tbm90LWltcGxlbWVudGVkLmh0bWwJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsMTYgQEAKKzxib2R5PjwvYm9keT4KKzxzY3JpcHQgc3JjPWdlb2xvY2F0aW9uLXRlc3Qu
anM+PC9zY3JpcHQ+Cis8c2NyaXB0PgordGVzdCgibmF2aWdhdG9yLmdlb2xvY2F0aW9uID09PSB1
bmRlZmluZWQiKTsKK3Rlc3QoIm5hdmlnYXRvci5nZW9sb2NhdGlvbiA9PSBudWxsIik7Cit2YXIg
aGFzR2VvbG9jYXRpb25Qcm9wZXJ0eSA9IGZhbHNlOworZm9yICh2YXIgcHJvcGVydHkgaW4gbmF2
aWdhdG9yKSB7CisgICAgaGFzR2VvbG9jYXRpb25Qcm9wZXJ0eSA9IChwcm9wZXJ0eSA9PSAiZ2Vv
bG9jYXRpb24iKTsKKyAgICBpZiAoaGFzR2VvbG9jYXRpb25Qcm9wZXJ0eSkKKyAgICAgICAgYnJl
YWs7Cit9Cit0ZXN0KCJoYXNHZW9sb2NhdGlvblByb3BlcnR5ID09IGZhbHNlIik7Cit0ZXN0KCIn
Z2VvbG9jYXRpb24nIGluIG5hdmlnYXRvciA9PSBmYWxzZSIpOwordGVzdCgibmF2aWdhdG9yLmhh
c093blByb3BlcnR5KCdnZW9sb2NhdGlvbicpID09IGZhbHNlIik7CitlbmRUZXN0KCk7Cis8L3Nj
cmlwdD4KSW5kZXg6IExheW91dFRlc3RzL2dlb2xvY2F0aW9uL2dlb2xvY2F0aW9uLXRlc3QuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tdGVzdC5q
cwkocmV2aXNpb24gMzc2MDYpCShmcm9tIExheW91dFRlc3RzL21lZGlhL3ZpZGVvLXRlc3QuanM6
Mzc2MDYpCisrKyBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi10ZXN0LmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTU4IEBACitpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKK30KK3ZhciB2aWRlbzsKK3ZhciBt
ZWRpYTsKK3ZhciBjb25zb2xlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Citkb2N1
bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnNvbGUpOwordHJ5IHsKKyAgICB2aWRlbyA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCd2aWRlbycpWzBdOworICAgIGlmICh2aWRlbykKKyAg
ICAgICAgbWVkaWEgPSB2aWRlbzsKK30gY2F0Y2ggKGV4KSB7IH0KKworZnVuY3Rpb24gaGFuZ2Vk
KCkKK3sKKyAgICBjb25zb2xlV3JpdGUoIkZBSUw6IHRpbWVkIG91dCIpOworICAgIGlmICh3aW5k
b3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5v
dGlmeURvbmUoKTsgIAorfQorc2V0VGltZW91dChoYW5nZWQsIDEwMDAwKTsKKworZnVuY3Rpb24g
dGVzdEFuZEVuZCh0ZXN0RnVuY1N0cmluZykKK3sKKyAgICB0ZXN0KHRlc3RGdW5jU3RyaW5nLCB0
cnVlKTsKK30KKworZnVuY3Rpb24gdGVzdCh0ZXN0RnVuY1N0cmluZywgZW5kaXQpCit7CisgICAg
aWYgKGV2YWwodGVzdEZ1bmNTdHJpbmcpKQorICAgICAgICBjb25zb2xlV3JpdGUoIlRFU1QoIiAr
IHRlc3RGdW5jU3RyaW5nICsgIikgPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bhbj4i
KTsKKyAgICBlbHNlCisgICAgICAgIGNvbnNvbGVXcml0ZSgiVEVTVCgiICsgdGVzdEZ1bmNTdHJp
bmcgKyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlMPC9zcGFuPiIpOyAgICAKKworICAg
IGlmIChlbmRpdCkKKyAgICAgICAgZW5kVGVzdCgpOyAgCit9CisKK2Z1bmN0aW9uIHRlc3RFeHBl
Y3RlZCh0ZXN0RnVuY1N0cmluZywgZXhwZWN0ZWQpCit7CisgICAgdHJ5IHsKKyAgICAgICAgdmFy
IG9ic2VydmVkID0gZXZhbCh0ZXN0RnVuY1N0cmluZyk7CisgICAgfSBjYXRjaCAoZXgpIHsKKyAg
ICAgICAgY29uc29sZVdyaXRlKGV4KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAg
ICB2YXIgbXNnID0gImV4cGVjdGVkICIgKyB0ZXN0RnVuY1N0cmluZyArICI9PSciICsgZXhwZWN0
ZWQgKyAiJywgb2JzZXJ2ZWQgJyIgKyBvYnNlcnZlZCArICInIjsKKworICAgIGlmIChvYnNlcnZl
ZCA9PSBleHBlY3RlZCkKKyAgICAgICAgY29uc29sZVdyaXRlKG1zZyArICIgLSA8c3BhbiBzdHls
ZT0nY29sb3I6Z3JlZW4nPk9LPC9zcGFuPiIpOworICAgIGVsc2UKKyAgICAgICAgY29uc29sZVdy
aXRlKG1zZyArICIgLSA8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlMPC9zcGFuPiIpOworfQor
CitmdW5jdGlvbiBydW4odGVzdEZ1bmNTdHJpbmcpCit7CisgICAgY29uc29sZVdyaXRlKCJSVU4o
IiArIHRlc3RGdW5jU3RyaW5nICsgIikiKTsKKyAgICB0cnkgeworICAgICAgICBldmFsKHRlc3RG
dW5jU3RyaW5nKTsKKyAgICB9IGNhdGNoIChleCkgeworICAgICAgICBjb25zb2xlV3JpdGUoZXgp
OworICAgIH0KK30KKworZnVuY3Rpb24gd2FpdEZvckV2ZW50QW5kRW5kKGV2ZW50TmFtZSwgZnVu
Y1N0cmluZykKK3sKKyAgICB3YWl0Rm9yRXZlbnQoZXZlbnROYW1lLCBmdW5jU3RyaW5nLCB0cnVl
KQorfQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnQoZXZlbnROYW1lLCBmdW5jLCBlbmRpdCkKK3sK
KyAgICBmdW5jdGlvbiBfZXZlbnRDYWxsYmFjayhldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNv
bGVXcml0ZSgiRVZFTlQoIiArIGV2ZW50TmFtZSArICIpIik7CisgICAgICAgIAorICAgICAgICBp
ZiAoZnVuYykKKyAgICAgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChlbmRp
dCkKKyAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCisgICAgfQorCisgICAgbWVkaWEuYWRkRXZl
bnRMaXN0ZW5lcihldmVudE5hbWUsIF9ldmVudENhbGxiYWNrKTsgICAgCit9CisKK2Z1bmN0aW9u
IHdhaXRGb3JFdmVudFRlc3RBbmRFbmQoZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZykKK3sKKyAg
ICB3YWl0Rm9yRXZlbnRBbmRUZXN0KGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcsIHRydWUpOwor
fQorCitmdW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRGYWlsKGV2ZW50TmFtZSkKK3sKKyAgICB3YWl0
Rm9yRXZlbnRBbmRUZXN0KGV2ZW50TmFtZSwgImZhbHNlIiwgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9u
IHdhaXRGb3JFdmVudEFuZFRlc3QoZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZywgZW5kaXQpCit7
CisgICAgZnVuY3Rpb24gX2V2ZW50Q2FsbGJhY2soZXZlbnQpCisgICAgeworICAgICAgICBpZiAo
ZXZhbCh0ZXN0RnVuY1N0cmluZykpCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5UKCIg
KyBldmVudE5hbWUgKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIDxzcGFuIHN0eWxl
PSdjb2xvcjpncmVlbic+T0s8L3NwYW4+Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNv
bnNvbGVXcml0ZSgiRVZFTlQoIiArIGV2ZW50TmFtZSArICIpIFRFU1QoIiArIHRlc3RGdW5jU3Ry
aW5nICsgIikgPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+RkFJTDwvc3Bhbj4iKTsKKyAgICAgICAg
CisgICAgICAgIGlmIChlbmRpdCkKKyAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCisgICAgfQor
ICAgIAorICAgIG1lZGlhLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCBfZXZlbnRDYWxsYmFj
ayk7Cit9CisKK2Z1bmN0aW9uIHRlc3RFeGNlcHRpb24odGVzdFN0cmluZywgZXhjZXB0aW9uU3Ry
aW5nKQoreworICAgIHRyeSB7CisgICAgICAgIGV2YWwodGVzdFN0cmluZyk7CisgICAgfSBjYXRj
aCAoZXgpIHsgCisgICAgICAgIGlmIChleC5jb2RlID09IGV2YWwoZXhjZXB0aW9uU3RyaW5nKSkK
KyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVEVTVCgiICsgdGVzdFN0cmluZyArICIpIFRIUk9X
UygiK2V4Y2VwdGlvblN0cmluZysiKSA8c3BhbiBzdHlsZT0nY29sb3I6Z3JlZW4nPk9LPC9zcGFu
PiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRFU1QoIiArIHRl
c3RTdHJpbmcgKyAiKSBUSFJPV1MoIitleGNlcHRpb25TdHJpbmcrIikgPHNwYW4gc3R5bGU9J2Nv
bG9yOnJlZCc+RkFJTDwvc3Bhbj4iKTsgICAgCisgICAgfQorfQorCit2YXIgdGVzdEVuZGVkID0g
ZmFsc2U7CisKK2Z1bmN0aW9uIGVuZFRlc3QoKQoreworICAgIGNvbnNvbGVXcml0ZSgiRU5EIE9G
IFRFU1QiKTsKKyAgICB0ZXN0RW5kZWQgPSB0cnVlOworICAgIGlmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsg
ICAgIAorfQorCitmdW5jdGlvbiBlbmRUZXN0TGF0ZXIoKQoreworICAgIHNldFRpbWVvdXQoZW5k
VGVzdCwgMjUwKTsKK30KKworZnVuY3Rpb24gZmFpbFRlc3RJbihtcykKK3sKKyAgICBzZXRUaW1l
b3V0KGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY29uc29sZVdyaXRlKCJGQUlMOiBkaWQgbm90IGVu
ZCBmYXN0IGVub3VnaCIpOworICAgICAgICBlbmRUZXN0KCk7CisgICAgfSwgbXMpOworfQorCitm
dW5jdGlvbiBjb25zb2xlV3JpdGUodGV4dCkKK3sKKyAgICBpZiAodGVzdEVuZGVkKQorICAgICAg
ICByZXR1cm47CisgICAgY29uc29sZS5pbm5lckhUTUwgKz0gdGV4dCArICI8YnI+IjsKK30KKwor
ZnVuY3Rpb24gcmVsYXRpdmVVUkwodXJsKQoreworICAgIHJldHVybiB1cmwuc3Vic3RyKHVybC5p
bmRleE9mKCcvbWVkaWEvJykrNyk7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpJbmRl
eDogTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tdGVzdC5qcwo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9nZW9sb2NhdGlvbi9nZW9sb2NhdGlvbi10ZXN0LmpzCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZ2VvbG9jYXRpb24vZ2VvbG9jYXRpb24tdGVzdC5qcwkod29y
a2luZyBjb3B5KQpAQCAtMiwyMSArMiwyNCBAQCBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9s
bGVyKSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwogICAgIGxheW91
dFRlc3RDb250cm9sbGVyLndhaXRVbnRpbERvbmUoKTsKIH0KLXZhciB2aWRlbzsKLXZhciBtZWRp
YTsKK3ZhciB3YXRjaElEID0gLTE7Cit2YXIgcGFzc2VkUG9zaXRpb24gPSBudWxsOwogdmFyIGNv
bnNvbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKIGRvY3VtZW50LmJvZHkuYXBw
ZW5kQ2hpbGQoY29uc29sZSk7Ci10cnkgewotICAgIHZpZGVvID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3ZpZGVvJylbMF07Ci0gICAgaWYgKHZpZGVvKQotICAgICAgICBtZWRpYSA9
IHZpZGVvOwotfSBjYXRjaCAoZXgpIHsgfQorCitmdW5jdGlvbiByZXNldCgpCit7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5ub3RpZnlEb25lKCk7ICAKKyAgICAgICAgd2F0Y2hJRCA9IC0xOworICAgICAgICBwYXNz
ZWRQb3NpdGlvbiA9IG51bGw7CisgICAgfQorfQogCiBmdW5jdGlvbiBoYW5nZWQoKQogewogICAg
IGNvbnNvbGVXcml0ZSgiRkFJTDogdGltZWQgb3V0Iik7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRU
ZXN0Q29udHJvbGxlcikKLSAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgp
OyAgCisgICAgcmVzZXQoKTsKIH0KIHNldFRpbWVvdXQoaGFuZ2VkLCAxMDAwMCk7CiAKQEAgLTYz
LDE2ICs2NiwxOSBAQCBmdW5jdGlvbiBydW4odGVzdEZ1bmNTdHJpbmcpCiAgICAgfQogfQogCi1m
dW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRFbmQoZXZlbnROYW1lLCBmdW5jU3RyaW5nKQorZnVuY3Rp
b24gd2F0Y2hQb3NpdGlvbkFuZEVuZChmdW5jU3RyaW5nKQogewotICAgIHdhaXRGb3JFdmVudChl
dmVudE5hbWUsIGZ1bmNTdHJpbmcsIHRydWUpCisgICAgd2F0Y2hQb3NpdGlvbihmdW5jU3RyaW5n
LCB0cnVlKQogfQogCi1mdW5jdGlvbiB3YWl0Rm9yRXZlbnQoZXZlbnROYW1lLCBmdW5jLCBlbmRp
dCkKK2Z1bmN0aW9uIHdhdGNoUG9zaXRpb24oZnVuYywgZW5kaXQpCiB7Ci0gICAgZnVuY3Rpb24g
X2V2ZW50Q2FsbGJhY2soZXZlbnQpCi0gICAgewotICAgICAgICBjb25zb2xlV3JpdGUoIkVWRU5U
KCIgKyBldmVudE5hbWUgKyAiKSIpOworICAgIGZ1bmN0aW9uIF9wb3NpdGlvbkNhbGxiYWNrKHBv
c2l0aW9uKQorICAgIHsgICAgICAgIAorICAgICAgICBwYXNzZWRQb3NpdGlvbiA9IHBvc2l0aW9u
OworICAgICAgICB0ZXN0KCJwYXNzZWRQb3NpdGlvbiA9PSBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24u
bGFzdFBvc2l0aW9uIik7CisgICAgICAgIAorICAgICAgICBjb25zb2xlV3JpdGUoIlBPU0lUSU9O
KCIgKyBwb3NpdGlvbiArICIpIik7CiAgICAgICAgIAogICAgICAgICBpZiAoZnVuYykKICAgICAg
ICAgICAgIGZ1bmMoKTsKQEAgLTgwLDM0ICs4Niw4OSBAQCBmdW5jdGlvbiB3YWl0Rm9yRXZlbnQo
ZXZlbnROYW1lLCBmdW5jLCBlCiAgICAgICAgIGlmIChlbmRpdCkKICAgICAgICAgICAgIGVuZFRl
c3QoKTsgICAgCiAgICAgfQorICAgIAorICAgIHdhdGNoSUQgPSBuYXZpZ2F0b3IuZ2VvbG9jYXRp
b24ud2F0Y2hQb3NpdGlvbihfcG9zaXRpb25DYWxsYmFjayk7CisgICAgdGVzdCgid2F0Y2hJRCA+
IDAiKTsKK30KKworZnVuY3Rpb24gd2F0Y2hQb3NpdGlvblRlc3RBbmRFbmQodGVzdEZ1bmNTdHJp
bmcpCit7CisgICAgd2F0Y2hQb3NpdGlvbkFuZFRlc3QodGVzdEZ1bmNTdHJpbmcsIHRydWUpOwor
fQorCitmdW5jdGlvbiB3YXRjaFBvc2l0aW9uQW5kRmFpbCgpCit7CisgICAgd2F0Y2hQb3NpdGlv
bkFuZFRlc3QoImZhbHNlIiwgdHJ1ZSk7Cit9CisKK2Z1bmN0aW9uIHdhdGNoUG9zaXRpb25BbmRU
ZXN0KHRlc3RGdW5jU3RyaW5nLCBlbmRpdCkKK3sKKyAgICBmdW5jdGlvbiBfcG9zaXRpb25DYWxs
YmFjayhwb3NpdGlvbikKKyAgICB7CisgICAgICAgIHBhc3NlZFBvc2l0aW9uID0gcG9zaXRpb247
CisgICAgICAgIAorICAgICAgICBpZiAoZXZhbCh0ZXN0RnVuY1N0cmluZykpCisgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIlBPU0lUSU9OKCIgKyBwb3NpdGlvbiArICIpIFRFU1QoIiArIHRlc3RG
dW5jU3RyaW5nICsgIikgPHNwYW4gc3R5bGU9J2NvbG9yOmdyZWVuJz5PSzwvc3Bhbj4iKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgY29uc29sZVdyaXRlKCJQT1NJVElPTigiICsgcG9zaXRp
b24gKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIDxzcGFuIHN0eWxlPSdjb2xvcjpy
ZWQnPkZBSUw8L3NwYW4+Iik7CisKKyAgICAgICAgaWYgKGVuZGl0KQorICAgICAgICAgICAgZW5k
VGVzdCgpOyAgICAKKyAgICB9CisgICAgCisgICAgd2F0Y2hJRCA9IG5hdmlnYXRvci5nZW9sb2Nh
dGlvbi53YXRjaFBvc2l0aW9uKF9wb3NpdGlvbkNhbGxiYWNrKTsKKyAgICB0ZXN0KCJ3YXRjaElE
ID4gMCIpOworfQogCi0gICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIF9ldmVu
dENhbGxiYWNrKTsgICAgCitmdW5jdGlvbiBnZXRDdXJyZW50UG9zaXRpb25BbmRFbmQoZnVuY1N0
cmluZykKK3sKKyAgICBnZXRDdXJyZW50UG9zaXRpb24oZnVuY1N0cmluZywgdHJ1ZSkKIH0KIAot
ZnVuY3Rpb24gd2FpdEZvckV2ZW50VGVzdEFuZEVuZChldmVudE5hbWUsIHRlc3RGdW5jU3RyaW5n
KQorZnVuY3Rpb24gZ2V0Q3VycmVudFBvc2l0aW9uKGZ1bmMsIGVuZGl0KQogewotICAgIHdhaXRG
b3JFdmVudEFuZFRlc3QoZXZlbnROYW1lLCB0ZXN0RnVuY1N0cmluZywgdHJ1ZSk7CisgICAgZnVu
Y3Rpb24gX3Bvc2l0aW9uQ2FsbGJhY2socG9zaXRpb24pCisgICAgeyAgICAgICAgCisgICAgICAg
IHBhc3NlZFBvc2l0aW9uID0gcG9zaXRpb247CisgICAgICAgIAorICAgICAgICBjb25zb2xlV3Jp
dGUoIlBPU0lUSU9OKCIgKyBwb3NpdGlvbiArICIpIik7CisgICAgICAgIAorICAgICAgICBpZiAo
ZnVuYykKKyAgICAgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChlbmRpdCkK
KyAgICAgICAgICAgIGVuZFRlc3QoKTsgICAgCisgICAgfQorICAgIAorICAgIG5hdmlnYXRvci5n
ZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oX3Bvc2l0aW9uQ2FsbGJhY2spOwogfQogCi1m
dW5jdGlvbiB3YWl0Rm9yRXZlbnRBbmRGYWlsKGV2ZW50TmFtZSkKK2Z1bmN0aW9uIGdldEN1cnJl
bnRQb3NpdGlvblRlc3RBbmRFbmQodGVzdEZ1bmNTdHJpbmcpCiB7Ci0gICAgd2FpdEZvckV2ZW50
QW5kVGVzdChldmVudE5hbWUsICJmYWxzZSIsIHRydWUpOworICAgIGdldEN1cnJlbnRQb3NpdGlv
bkFuZFRlc3QodGVzdEZ1bmNTdHJpbmcsIHRydWUpOwogfQogCi1mdW5jdGlvbiB3YWl0Rm9yRXZl
bnRBbmRUZXN0KGV2ZW50TmFtZSwgdGVzdEZ1bmNTdHJpbmcsIGVuZGl0KQorZnVuY3Rpb24gZ2V0
Q3VycmVudFBvc2l0aW9uQW5kRmFpbCgpCiB7Ci0gICAgZnVuY3Rpb24gX2V2ZW50Q2FsbGJhY2so
ZXZlbnQpCisgICAgZ2V0Q3VycmVudFBvc2l0aW9uQW5kVGVzdCgiZmFsc2UiLCB0cnVlKTsKK30K
KworZnVuY3Rpb24gZ2V0Q3VycmVudFBvc2l0aW9uQW5kVGVzdCh0ZXN0RnVuY1N0cmluZywgZW5k
aXQpCit7CisgICAgZnVuY3Rpb24gX3Bvc2l0aW9uQ2FsbGJhY2socG9zaXRpb24pCiAgICAgewor
ICAgICAgICBwYXNzZWRQb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgICAKICAgICAgICAgaWYg
KGV2YWwodGVzdEZ1bmNTdHJpbmcpKQotICAgICAgICAgICAgY29uc29sZVdyaXRlKCJFVkVOVCgi
ICsgZXZlbnROYW1lICsgIikgVEVTVCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSA8c3BhbiBzdHls
ZT0nY29sb3I6Z3JlZW4nPk9LPC9zcGFuPiIpOworICAgICAgICAgICAgY29uc29sZVdyaXRlKCJQ
T1NJVElPTigiICsgcG9zaXRpb24gKyAiKSBURVNUKCIgKyB0ZXN0RnVuY1N0cmluZyArICIpIDxz
cGFuIHN0eWxlPSdjb2xvcjpncmVlbic+T0s8L3NwYW4+Iik7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIGNvbnNvbGVXcml0ZSgiRVZFTlQoIiArIGV2ZW50TmFtZSArICIpIFRFU1QoIiArIHRl
c3RGdW5jU3RyaW5nICsgIikgPHNwYW4gc3R5bGU9J2NvbG9yOnJlZCc+RkFJTDwvc3Bhbj4iKTsK
KyAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiUE9TSVRJT04oIiArIHBvc2l0aW9uICsgIikgVEVT
VCgiICsgdGVzdEZ1bmNTdHJpbmcgKyAiKSA8c3BhbiBzdHlsZT0nY29sb3I6cmVkJz5GQUlMPC9z
cGFuPiIpOwogICAgICAgICAKICAgICAgICAgaWYgKGVuZGl0KQogICAgICAgICAgICAgZW5kVGVz
dCgpOyAgICAKICAgICB9CiAgICAgCi0gICAgbWVkaWEuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5h
bWUsIF9ldmVudENhbGxiYWNrKTsKKyAgICBuYXZpZ2F0b3IuZ2VvbG9jYXRpb24uZ2V0Q3VycmVu
dFBvc2l0aW9uKF9wb3NpdGlvbkNhbGxiYWNrKTsKIH0KIAogZnVuY3Rpb24gdGVzdEV4Y2VwdGlv
bih0ZXN0U3RyaW5nLCBleGNlcHRpb25TdHJpbmcpCkBAIC0xMjgsOCArMTg5LDcgQEAgZnVuY3Rp
b24gZW5kVGVzdCgpCiB7CiAgICAgY29uc29sZVdyaXRlKCJFTkQgT0YgVEVTVCIpOwogICAgIHRl
c3RFbmRlZCA9IHRydWU7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKLSAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOyAgICAgCisgICAgcmVzZXQo
KTsKIH0KIAogZnVuY3Rpb24gZW5kVGVzdExhdGVyKCkKQEAgLTE1NCw1ICsyMTQsNSBAQCBmdW5j
dGlvbiBjb25zb2xlV3JpdGUodGV4dCkKIAogZnVuY3Rpb24gcmVsYXRpdmVVUkwodXJsKQogewot
ICAgIHJldHVybiB1cmwuc3Vic3RyKHVybC5pbmRleE9mKCcvbWVkaWEvJykrNyk7CisgICAgcmV0
dXJuIHVybC5zdWJzdHIodXJsLmluZGV4T2YoJy9nZW9sb2NhdGlvbi8nKSsxMyk7CiB9ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="11253"
          type_id="1"
          status="-"
          setter="ddkilzer"
    />
          </attachment>
      

    </bug>

</bugzilla>