<?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>206310</bug_id>
          
          <creation_ts>2020-01-15 13:28:51 -0800</creation_ts>
          <short_desc>Add WKContentWorld SPI, and use it in JavaScript execution</short_desc>
          <delta_ts>2020-03-04 15:42:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit API</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>berto</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1607122</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-15 13:28:51 -0800</bug_when>
    <thetext>Add WKContentWorld SPI, and use it in JavaScript execution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607133</commentid>
    <comment_count>1</comment_count>
      <attachid>387837</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-15 13:39:51 -0800</bug_when>
    <thetext>Created attachment 387837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607150</commentid>
    <comment_count>2</comment_count>
      <attachid>387842</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-15 13:54:21 -0800</bug_when>
    <thetext>Created attachment 387842
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607151</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-01-15 13:55:06 -0800</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607156</commentid>
    <comment_count>4</comment_count>
      <attachid>387843</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-15 14:08:39 -0800</bug_when>
    <thetext>Created attachment 387843
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607195</commentid>
    <comment_count>5</comment_count>
      <attachid>387843</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-15 15:19:37 -0800</bug_when>
    <thetext>Comment on attachment 387843
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=387843&amp;action=review

&gt; Source/WebKit/UIProcess/API/APIContentWorld.cpp:55
&gt; +        world = new ContentWorld();

In general, a pattern of calling an empty constructor and then setting members is an anti-pattern.  Just add to the constructor parameters.

&gt; Source/WebKit/UIProcess/API/APIContentWorld.cpp:56
&gt; +        world-&gt;m_identifier = API::UserContentWorld::normalWorldIdentifer();

Is there really something special about this identifier, or could we use just another generated identifier?

&gt; Source/WebKit/UIProcess/API/APIContentWorld.cpp:63
&gt; +    static ContentWorld* world;

I think we might prefer something like NeverDestroyed&lt;RefPtr&lt;ContentWorld&gt;&gt; for some reason.

&gt; Source/WebKit/UIProcess/API/APIContentWorld.cpp:67
&gt; +        world-&gt;m_identifier = API::UserContentWorld::generateIdentifier();

It would probably be useful to give this world a name for future debugging help.  But then we wouldn&apos;t be able to use those names for other worlds, so maybe not.

&gt; Source/WebKit/UIProcess/API/APIContentWorld.cpp:80
&gt; +ContentWorld::ContentWorld()
&gt; +{
&gt; +}

I think = default is the cool new way to write this.

&gt; Source/WebKit/UIProcess/API/APIContentWorld.h:50
&gt; +    uint64_t m_identifier;

Strongly-typed identifiers are all the new hotness.
using ContentWorldIdentifier = ObjectIdentifier&lt;ContentWorldType&gt;

&gt; Source/WebKit/UIProcess/API/APIUserContentWorld.h:49
&gt; +    friend class ContentWorld;

Could we add the necessary public interface instead of befriending?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:910
&gt; +    

whitespace.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607222</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-15 16:20:45 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #5)
&gt; Comment on attachment 387843 [details]
&gt; Patch
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIContentWorld.cpp:56
&gt; &gt; +        world-&gt;m_identifier = API::UserContentWorld::normalWorldIdentifer();
&gt; 
&gt; Is there really something special about this identifier, or could we use
&gt; just another generated identifier?

Yes, there is something special about it.

&gt; &gt; Source/WebKit/UIProcess/API/APIContentWorld.cpp:63
&gt; &gt; +    static ContentWorld* world;
&gt; 
&gt; I think we might prefer something like NeverDestroyed&lt;RefPtr&lt;ContentWorld&gt;&gt;
&gt; for some reason.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIContentWorld.cpp:67
&gt; &gt; +        world-&gt;m_identifier = API::UserContentWorld::generateIdentifier();
&gt; 
&gt; It would probably be useful to give this world a name for future debugging
&gt; help.  But then we wouldn&apos;t be able to use those names for other worlds, so
&gt; maybe not.

Right - These are explicitly name-free on purpose.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIContentWorld.cpp:80
&gt; &gt; +ContentWorld::ContentWorld()
&gt; &gt; +{
&gt; &gt; +}
&gt; 
&gt; I think = default is the cool new way to write this.
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIContentWorld.h:50
&gt; &gt; +    uint64_t m_identifier;
&gt; 
&gt; Strongly-typed identifiers are all the new hotness.
&gt; using ContentWorldIdentifier = ObjectIdentifier&lt;ContentWorldType&gt;

I dodged that on purpose because the other classes these interact with (InjectedBundleScriptWorld, etc) don&apos;t have them.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/APIUserContentWorld.h:49
&gt; &gt; +    friend class ContentWorld;
&gt; 
&gt; Could we add the necessary public interface instead of befriending?

Nah, generateIdentifier() should remain private to all who have no business touching it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607223</commentid>
    <comment_count>7</comment_count>
      <attachid>387864</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-15 16:29:02 -0800</bug_when>
    <thetext>Created attachment 387864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607240</commentid>
    <comment_count>8</comment_count>
      <attachid>387864</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-15 16:42:42 -0800</bug_when>
    <thetext>Comment on attachment 387864
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=387864&amp;action=review

r=me

&gt; Source/WebKit/UIProcess/API/APIContentWorld.cpp:68
&gt; +ContentWorld::ContentWorld(uint64_t identifier)

Could you add a FIXME here saying we should use ObjectIdentifier?

&gt; Source/WebKit/UIProcess/API/APIUserContentWorld.h:49
&gt; +    friend class ContentWorld;

I still don&apos;t think this is great.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:3385
&gt; +        send(Messages::WebPageProxy::ScriptValueCallback({ }, ExceptionDetails { &quot;Unable to execute JavaScript: Cannot find specified content world&quot;_s }, callbackID));

Could you add a FIXME somewhere saying to use sendWithAsyncReply rather than two messages with a CallbackID?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607241</commentid>
    <comment_count>9</comment_count>
      <attachid>387864</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-01-15 16:44:03 -0800</bug_when>
    <thetext>Comment on attachment 387864
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=387864&amp;action=review

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKContentWorld.mm:43
&gt; +    return wrapper(API::ContentWorld::sharedWorldWithName(name));

Even though name is non-nullable, do you think it would be worth throwing if name is nil?  Should we add such a test that ignores compiler warnings and does a horrible thing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607246</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-15 16:59:26 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #9)
&gt; Comment on attachment 387864 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=387864&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/_WKContentWorld.mm:43
&gt; &gt; +    return wrapper(API::ContentWorld::sharedWorldWithName(name));
&gt; 
&gt; Even though name is non-nullable, do you think it would be worth throwing if
&gt; name is nil?  Should we add such a test that ignores compiler warnings and
&gt; does a horrible thing?

In our brave new world of playing nice with Swift, throwing is strongly frowned upon. I don&apos;t think it would pass muster.

In Obj-C land, you shoot yourself in the foot purposefully misbehaving with a non-nullable argument like that.

In Swift land the compiler doesn&apos;t even let you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607247</commentid>
    <comment_count>11</comment_count>
      <attachid>387871</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-15 17:02:20 -0800</bug_when>
    <thetext>Created attachment 387871
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607342</commentid>
    <comment_count>12</comment_count>
      <attachid>387871</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-15 21:41:08 -0800</bug_when>
    <thetext>Comment on attachment 387871
Patch

Clearing flags on attachment: 387871

Committed r254668: &lt;https://trac.webkit.org/changeset/254668&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607343</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-01-15 21:41:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607344</commentid>
    <comment_count>14</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-01-15 21:42:12 -0800</bug_when>
    <thetext>&lt;rdar://problem/58633355&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607483</commentid>
    <comment_count>15</comment_count>
    <who name="Truitt Savell">tsavell</who>
    <bug_when>2020-01-16 08:12:11 -0800</bug_when>
    <thetext>It looks like the changes in https://trac.webkit.org/changeset/254668/webkit

broke 21 tests with an assert. Tracking in https://bugs.webkit.org/show_bug.cgi?id=206357</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1607499</commentid>
    <comment_count>16</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2020-01-16 09:00:49 -0800</bug_when>
    <thetext>(In reply to Truitt Savell from comment #15)
&gt; It looks like the changes in https://trac.webkit.org/changeset/254668/webkit
&gt; 
&gt; broke 21 tests with an assert. Tracking in
&gt; https://bugs.webkit.org/show_bug.cgi?id=206357

Does Mac-debug only run WK1 debug?
Do we seriously not have a WK2-debug EWS bot?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1625821</commentid>
    <comment_count>17</comment_count>
      <attachid>387871</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-03-04 15:42:40 -0800</bug_when>
    <thetext>Comment on attachment 387871
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=387871&amp;action=review

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKWebViewEvaluateJavaScript.mm:199
&gt; +        isDone = true;
&gt; +    }];
&gt; +    isDone = false;

These tests don&apos;t actually wait until isDone is set to true.  This test finishes in one runloop iteration without waiting for any results.  I&apos;m fixing this in a patch I&apos;m working on now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387837</attachid>
            <date>2020-01-15 13:39:51 -0800</date>
            <delta_ts>2020-01-15 13:54:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206310-20200115133950.patch</filename>
            <type>text/plain</type>
            <size>67047</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0Mjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMyYmFhYTVkZDdmNjI1MTIz
NDc0Y2UwNmVjNTFiOWVkMzVlMDRjYzUuLjA1ODg1MDlkNjI3ZDljNmYwMDM2OGQ2MDlmMTIxMzhm
MDhiM2Q3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMjAtMDEtMTUgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS0NvbnRlbnRXb3JsZCBT
UEksIGFuZCB1c2UgaXQgaW4gSmF2YVNjcmlwdCBleGVjdXRpb24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzMTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKyAg
ICAgICAgCisgICAgICAgIF9XS0NvbnRlbnRXb3JsZCBpcyBhIFVJIFByb2Nlc3Mgd3JhcHBlciBm
b3IgYW4gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC4KKyAgICAgICAgTXVjaCBsaWtlIF9XS1Vz
ZXJDb250ZW50V29ybGQgaXMuIEJ1dCBkaWZmZXJlbnQgaW4gdGhhdDoKKyAgICAgICAgLSBJdHMg
QVBJcyBhcmUgbmFtZWQgZGlmZmVyZW50IHRoaW5ncworICAgICAgICAtIE9ubHkgb25lIHVuaXF1
ZSBpbnN0YW5jZSBwZXIgc3RyaW5nIG5hbWUKKyAgICAgICAgLSBJdCBpcyB1c2VkIHdpdGggZXZh
bHVhdGVKYXZhc2NyaXB0OiBhbmQgY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOiBpbnN0ZWFk
IG9mIFdLVXNlckNvbnRlbnRDb250cm9sbGVyLgorICAgICAgICAKKyAgICAgICAgQnV0IF9XS0Nv
bnRlbnRXb3JsZCBhbmQgX1dLVXNlckNvbnRlbnRXb3JsZCBkbyBoYXZlIHRvIHdvcmsgdG9nZXRo
ZXIgYSBsaXR0bGUgYml0IHRvIGF2b2lkIGNvbmZsaWN0cyBpbiB0aGUgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgCisgICAgICAgIFRoZSBuZXcgdmVyc2lvbnMgb2YgZXZhbHVhdGVKYXZhc2NyaXB0OiBh
bmQgY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOiBhcmUgYWxzbyBpbmNsdWRlZCwgYXMgd2Vs
bCBhcyBBUEkgdGVzdHMgZm9yIGFsbCB0aGUgbmV3IHN0dWZmLgorCisgICAgICAgICogU2hhcmVk
L0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgor
ICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRXb3JsZC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmNwcC4KKyAgICAgICAgKEFQSTo6Q29udGVudFdv
cmxkOjpzaGFyZWRXb3JsZFdpdGhOYW1lKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkOjpw
YWdlQ29udGVudFdvcmxkKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkOjpkZWZhdWx0Q2xp
ZW50V29ybGQpOgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZCk6Cisg
ICAgICAgIChBUEk6OkNvbnRlbnRXb3JsZDo6fkNvbnRlbnRXb3JsZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50
V29ybGQ6OmdlbmVyYXRlSWRlbnRpZmllcik6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50V29y
bGQ6OlVzZXJDb250ZW50V29ybGQpOgorICAgICAgICAoQVBJOjpnZW5lcmF0ZUlkZW50aWZpZXIp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5o
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmFzQXN5bmNGdW5jdGlvbjp3
aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRsZXI6aW5Xb3JsZDpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246d2l0
aEFyZ3VtZW50czppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVy
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUph
dmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTpj
b21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYWxs
QXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGQuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGQubW06IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmguCisg
ICAgICAgICgrW19XS0NvbnRlbnRXb3JsZCBwYWdlQ29udGVudFdvcmxkXSk6CisgICAgICAgICgr
W19XS0NvbnRlbnRXb3JsZCBkZWZhdWx0Q2xpZW50V29ybGRdKToKKyAgICAgICAgKCtbX1dLQ29u
dGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6XSk6CisgICAgICAgICgtW19XS0NvbnRlbnRXb3JsZCBk
ZWFsbG9jXSk6CisgICAgICAgICgtW19XS0NvbnRlbnRXb3JsZCBuYW1lXSk6CisgICAgICAgICgt
W19XS0NvbnRlbnRXb3JsZCBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tDb250ZW50V29ybGRJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6d29ybGRNYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OndvcmxkRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDEtMDkgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IFsgTWFjIHdrMiBdIGZhc3QvbWVkaWFz
dHJlYW0vY2FwdHVyZUluR1BVUHJvY2Vzcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDhiNzFmZTBkMmY1M2ZmMGQzODVmZGMyOGU5
YWFkODkyNzRmNWQwNDcuLjcyODEwOGEwNWZlZjJlMWIyOTY0OGZlZDhhMmIxMzQ4NDQyYjg2ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTEwOSw2ICsxMDksNyBAQCBw
dWJsaWM6CiAgICAgICAgIENvbnRlbnRSdWxlTGlzdCwKICAgICAgICAgQ29udGVudFJ1bGVMaXN0
QWN0aW9uLAogICAgICAgICBDb250ZW50UnVsZUxpc3RTdG9yZSwKKyAgICAgICAgQ29udGVudFdv
cmxkLAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIENvbnRleHRNZW51RWxlbWVu
dEluZm8sCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRl
eCBkYjY1ZTZmOWU0MDlkNDA3MTViNjk4ZWZiMjA2MDY5ZjllOWViYzBlLi40NDE0MDI4ZmVhMzhi
NjYwYmQ1NTI0NWJjMmJhMzU1NjIwNGJjOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tCkBAIC03MSw2ICs3MSw3IEBACiAjaW1wb3J0ICJfV0tBdHRhY2htZW50SW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJfV0tDb250
ZW50V29ybGRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJu
YWwuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0V4cGVy
aW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIgpAQCAtMzQwLDYgKzM0MSwxMCBAQCB2b2lkKiBPYmpl
Y3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0g
W19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5IGFsbG9jXTsKICAgICAgICAgYnJl
YWs7CiAKKyAgICBjYXNlIFR5cGU6OkNvbnRlbnRXb3JsZDoKKyAgICAgICAgd3JhcHBlciA9IFtf
V0tDb250ZW50V29ybGQgYWxsb2NdOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6
VXNlckNvbnRlbnRXb3JsZDoKICAgICAgICAgd3JhcHBlciA9IFtfV0tVc2VyQ29udGVudFdvcmxk
IGFsbG9jXTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzMDZjZDFlNjkzNTY2MWFk
NDFjMDYwOTI4NDhiZjlhZjM2YjFiNzI2Li5jNDQzMmU1NWRkOTZhNzQ5MmEyYzZkNWFhOWViZjZi
ODg4ZjBiNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTMyMSw2ICszMjEsNyBAQCBVSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdC5jcHAK
IFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0QWN0aW9uLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFdv
cmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUVsZW1lbnRJbmZvLmNwcAogVUlQ
cm9jZXNzL0FQSS9BUElEZWJ1Z2dhYmxlSW5mby5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJRXhwZXJp
bWVudGFsRmVhdHVyZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50V29ybGQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRXb3JsZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVhN2NkZGVmMDNkZTFlNzU0MDVjYmZmMDVkYTVj
Njg0OTcxMzlhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50V29ybGQuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCisKKyNpbmNsdWRl
ICJBUElVc2VyQ29udGVudFdvcmxkLmgiCisKK25hbWVzcGFjZSBBUEkgeworCitzdGF0aWMgSGFz
aE1hcDxXVEY6OlN0cmluZywgQ29udGVudFdvcmxkKj4mIHNoYXJlZFdvcmxkTWFwKCkKK3sKKyAg
ICBzdGF0aWMgSGFzaE1hcDxXVEY6OlN0cmluZywgQ29udGVudFdvcmxkKj4qIHNoYXJlZE1hcCA9
IG5ldyBIYXNoTWFwPFdURjo6U3RyaW5nLCBDb250ZW50V29ybGQqPjsKKyAgICByZXR1cm4gKnNo
YXJlZE1hcDsKK30KKworUmVmPENvbnRlbnRXb3JsZD4gQ29udGVudFdvcmxkOjpzaGFyZWRXb3Js
ZFdpdGhOYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQoreworICAgIGF1dG8gcmVzdWx0ID0g
c2hhcmVkV29ybGRNYXAoKS5hZGQobmFtZSwgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KSB7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBuZXcgQ29udGVudFdv
cmxkKG5hbWUpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKnJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpOworICAgIH0KKworICAgIHJldHVybiBtYWtlUmVmKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVl
KTsKK30KKworQ29udGVudFdvcmxkJiBDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKQor
eworICAgIHN0YXRpYyBDb250ZW50V29ybGQqIHdvcmxkOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAg
ICB3b3JsZCA9IG5ldyBDb250ZW50V29ybGQoKTsKKyAgICAgICAgd29ybGQtPm1faWRlbnRpZmll
ciA9IEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGRJZGVudGlmZXIoKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gKndvcmxkOworfQorCitDb250ZW50V29ybGQmIENvbnRlbnRXb3JsZDo6
ZGVmYXVsdENsaWVudFdvcmxkKCkKK3sKKyAgICBzdGF0aWMgQ29udGVudFdvcmxkKiB3b3JsZDsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyAgICAgICAgd29ybGQgPSBuZXcgQ29udGVudFdvcmxkKCk7CisgICAg
ICAgIHdvcmxkLT5tX2lkZW50aWZpZXIgPSBBUEk6OlVzZXJDb250ZW50V29ybGQ6OmdlbmVyYXRl
SWRlbnRpZmllcigpOworICAgIH0pOworICAgIHJldHVybiAqd29ybGQ7Cit9CisKK0NvbnRlbnRX
b3JsZDo6Q29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQorICAgIDogbV9pZGVu
dGlmaWVyKEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6Z2VuZXJhdGVJZGVudGlmaWVyKCkpCisgICAg
LCBtX25hbWUobmFtZSkKK3sKK30KKworQ29udGVudFdvcmxkOjpDb250ZW50V29ybGQoKQorewor
fQorCitDb250ZW50V29ybGQ6On5Db250ZW50V29ybGQoKQoreworICAgIGlmIChtX25hbWUuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFrZW4gPSBzaGFyZWRXb3JsZE1h
cCgpLnRha2UobV9uYW1lKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbiA9PSB0aGlz
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFdvcmxkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFdvcmxkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM1Y2JhNjRjMzA0MTFlMzNmZDZiZWEw
ODZmNGUyYTMxOWFiNTA3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50V29ybGQuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIENvbnRlbnRXb3JsZCBm
aW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkNvbnRlbnRX
b3JsZD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q29udGVudFdvcmxkPiBzaGFyZWRXb3Js
ZFdpdGhOYW1lKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgc3RhdGljIENvbnRlbnRXb3JsZCYg
cGFnZUNvbnRlbnRXb3JsZCgpOworICAgIHN0YXRpYyBDb250ZW50V29ybGQmIGRlZmF1bHRDbGll
bnRXb3JsZCgpOworCisgICAgdmlydHVhbCB+Q29udGVudFdvcmxkKCk7CisKKyAgICBjb25zdCBX
VEY6OlN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIHVpbnQ2NF90
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHN0ZDo6
cGFpcjx1aW50NjRfdCwgV1RGOjpTdHJpbmc+IHdvcmxkRGF0YSgpIHsgcmV0dXJuIHsgbV9pZGVu
dGlmaWVyLCBtX25hbWUgfTsgfQorCitwcml2YXRlOgorICAgIENvbnRlbnRXb3JsZChjb25zdCBX
VEY6OlN0cmluZyYpOworICAgIENvbnRlbnRXb3JsZCgpOworCisgICAgdWludDY0X3QgbV9pZGVu
dGlmaWVyOworICAgIFdURjo6U3RyaW5nIG1fbmFtZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
V29ybGQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29y
bGQuY3BwCmluZGV4IDRkYWRmYmZiZDJkZTIxMDViNDk3MWE2NWZiNzhjMjAyZDExODAxOTYuLmE4
NWExNWIzYWU2NWRiNGEyZDJhYjZlZGMxZmY5NmVjOTE4MDUzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAKQEAgLTI4LDEx
ICsyOCw5IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1zdGF0aWMgY29uc3QgdWludDY0X3Qgbm9y
bWFsV29ybGRJZGVudGlmZXIgPSAxOwotCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVJZGVudGlm
aWVyKCkKK3VpbnQ2NF90IFVzZXJDb250ZW50V29ybGQ6OmdlbmVyYXRlSWRlbnRpZmllcigpCiB7
Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIgPSBub3JtYWxXb3JsZElkZW50aWZlcjsK
KyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IG5vcm1hbFdvcmxkSWRlbnRpZmVyKCk7
CiAKICAgICByZXR1cm4gKytpZGVudGlmaWVyOwogfQpAQCAtNTUsNyArNTMsNyBAQCBVc2VyQ29u
dGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQogfQog
CiBVc2VyQ29udGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKEZvck5vcm1hbFdvcmxkT25seSkK
LSAgICA6IG1faWRlbnRpZmllcihub3JtYWxXb3JsZElkZW50aWZlcikKKyAgICA6IG1faWRlbnRp
Zmllcihub3JtYWxXb3JsZElkZW50aWZlcigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaAppbmRleCA4NDBmZTFjMzAzZTc2
M2ZkNmUwZWVhNWRlMTFiNGE5OWFlZDRiNjRjLi5mZTlmYzU0OGJkZWE0YzZmNTE4NzE3ZGYyNTM1
YWM2MzY1YjFkYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlckNvbnRlbnRXb3JsZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
c2VyQ29udGVudFdvcmxkLmgKQEAgLTMxLDYgKzMxLDggQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAK
K2NsYXNzIENvbnRlbnRXb3JsZDsKKwogY2xhc3MgVXNlckNvbnRlbnRXb3JsZCBmaW5hbCA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50V29ybGQ+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFVzZXJDb250ZW50V29ybGQ+IHdvcmxkV2l0aE5h
bWUoY29uc3QgV1RGOjpTdHJpbmcmKTsKQEAgLTQxLDEyICs0MywxOCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB1
aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKKyAg
ICBzdGF0aWMgdWludDY0X3Qgbm9ybWFsV29ybGRJZGVudGlmZXIoKSB7IHJldHVybiAxOyB9Owor
CiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDb250ZW50V29ybGQ7CisKICAgICBVc2VyQ29u
dGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAKICAgICBlbnVtIGNsYXNzIEZvck5vcm1h
bFdvcmxkT25seSB7IE5vcm1hbFdvcmxkIH07CiAgICAgVXNlckNvbnRlbnRXb3JsZChGb3JOb3Jt
YWxXb3JsZE9ubHkpOwogCisgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigp
OworCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIFdURjo6U3RyaW5nIG1fbmFtZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpp
bmRleCBkMzI5ZDFlNmNlNGUwOGUwNDQyMzY3ZGNjNTA5OTQ3YzdiYmViZjlkLi43ZDRkNDFiOTk1
MDgwNjg0MzAxZjA2ZDEzOTdiYjdlNjc3Yzk2NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTkxLDYgKzkxLDcgQEAKICNpbXBvcnQg
IldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oIgogI2ltcG9ydCAiV2ViVmlld0ltcGwuaCIKICNp
bXBvcnQgIl9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0Nv
bnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVn
YXRlLmgiCiAjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFu
ZGxlSW50ZXJuYWwuaCIKQEAgLTgzMyw3ICs4MzQsNyBAQCBzdGF0aWMgV0tFcnJvckNvZGUgY2Fs
bGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogCiAtICh2
b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5j
RnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxl
dGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFT
Y3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpu
aWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRs
ZXIgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZF07CiB9CiAKIHN0YXRp
YyBib29sIHZhbGlkYXRlQXJndW1lbnQoaWQgYXJndW1lbnQpCkBAIC04NzAsNyArODcxLDcgQEAg
c3RhdGljIGJvb2wgdmFsaWRhdGVBcmd1bWVudChpZCBhcmd1bWVudCkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLS0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2Ny
aXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhc0FzeW5jRnVuY3Rpb24gd2l0aEFyZ3Vt
ZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBmb3JjZVVzZXJH
ZXN0dXJlOihCT09MKWZvcmNlVXNlckdlc3R1cmUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9ldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wp
YXNBc3luY0Z1bmN0aW9uIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBp
ZD4gKilhcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVzZXJHZXN0dXJlIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
ciBpbldvcmxkOihfV0tDb250ZW50V29ybGQgKil3b3JsZAogewogICAgIGF1dG8gaGFuZGxlciA9
IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsKIApAQCAtOTA2LDggKzkwNyw4IEBA
IC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5n
IGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAg
IF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMgeyBqYXZhU2NyaXB0U3RyaW5nLCAhIWFzQXN5bmNGdW5jdGlvbiwgV1RGTW92ZShh
cmd1bWVudHNNYXApLCAhIWZvcmNlVXNlckdlc3R1cmUgfSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6
RXJyb3IgZXJyb3JDb2RlKSB7CisgICAgCisgICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHsgamF2YVNj
cmlwdFN0cmluZywgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzTWFwKSwgISFm
b3JjZVVzZXJHZXN0dXJlIH0sICp3b3JsZC0+X2NvbnRlbnRXb3JsZC5nZXQoKSwgW2hhbmRsZXJd
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFs
dWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CiAgICAgICAgIGlmICghaGFuZGxlcikKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMTQ2Nyw2ICsxNDY4LDE2IEBAIFdFQkNPUkVfUFJJVkFU
RV9DT01NQU5EKHBhc3RlQW5kTWF0Y2hTdHlsZSkKIAogI3VuZGVmIFdFQkNPUkVfUFJJVkFURV9D
T01NQU5ECiAKKy0gKHZvaWQpX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjooTlNTdHJpbmcg
KilqYXZhU2NyaXB0U3RyaW5nIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAq
LCBpZD4gKilhcmd1bWVudHMgaW5Xb3JsZDooX1dLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3Ry
aW5nIGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2Vy
R2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIgaW5Xb3JsZDpj
b250ZW50V29ybGRdOworfQorCistICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5n
ICopamF2YVNjcmlwdFN0cmluZyBpbldvcmxkOihfV0tDb250ZW50V29ybGQgKiljb250ZW50V29y
bGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5n
IGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllF
UyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlciBpbldvcmxkOmNvbnRlbnRXb3Js
ZF07Cit9CisKIC0gKHZvaWQpX3RvZ2dsZVN0cmlrZVRocm91Z2g6KGlkKXNlbmRlcgogewogICAg
IF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoInN0cmlrZXRocm91Z2giX3MpOwpAQCAtMjAwNiwx
MSArMjAxNyw2IEBAIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihX
S1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uCiAgICAgW3NlbGYgY3JlYXRlUERG
V2l0aENvbmZpZ3VyYXRpb246cGRmQ29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjpjb21w
bGV0aW9uSGFuZGxlcl07CiB9CiAKLS0gKHZvaWQpX2NhbGxBc3luY0Z1bmN0aW9uOihOU1N0cmlu
ZyAqKWphdmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIGlkPiAqKWFyZ3VtZW50cyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJy
b3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFT
Y3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246WUVTIHdpdGhBcmd1bWVudHM6
YXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRp
b25IYW5kbGVyXTsKLX0KLQogLSAoTlNEYXRhICopX3Nlc3Npb25TdGF0ZURhdGEKIHsKICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgbm90IHVzZSB0aGUgbGVnYWN5IHNlc3Npb24gc3RhdGUgZW5j
b2Rlci4KQEAgLTIxNTMsNyArMjE1OSw3IEBAIC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9pZChe
KShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRX
aXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAg
ICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0
aW9uOk5PIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlvbkhh
bmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6
amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9y
Y2VVc2VyR2VzdHVyZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlciBpbldv
cmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkXTsKIH0KIAogLSAodm9pZClfdXBk
YXRlV2Vic2l0ZVBvbGljaWVzOihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IGQzZmU3MDcyMGE3M2ZhMTFjNmJiMjcyMjEyMzY1NDA2YjFjMjZlNjQuLjZh
ZTYxY2M0ZTkzZjNkMDNiMGM0ZjgwZDBmYmVjNTQxYjFlYWY4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTA2
LDYgKzEwNiw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkg
ewogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlOwogQGNsYXNzIFdLV2VicGFnZVByZWZl
cmVuY2VzOwogQGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q7CitAY2xhc3MgX1dLQ29udGVu
dFdvcmxkOwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwogQGNsYXNzIF9XS0hpdFRlc3RSZXN1bHQ7
CiBAY2xhc3MgX1dLSW5zcGVjdG9yOwpAQCAtMzE4LDcgKzMxOSw1OCBAQCB0eXBlZGVmIE5TX09Q
VElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIAogLSAodm9pZClfdGFrZVBERlNuYXBz
aG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RD
b25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKnBkZlNuYXBz
aG90RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKLS0gKHZvaWQpX2NhbGxB
c3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3VtZW50czoo
TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKy8qIEBh
YnN0cmFjdCBDYWxscyB0aGUgZ2l2ZW4gSmF2YVNjcmlwdCBzdHJpbmcgYXMgYSBmdW5jdGlvbiwg
cGFzc2luZyB0aGUgZ2l2ZW4gbmFtZWQgYXJndW1lbnRzIHRvIHRoYXQgZnVuY3Rpb24uCisgQHBh
cmFtIGphdmFTY3JpcHRTdHJpbmcgVGhlIEphdmFTY3JpcHQgc3RyaW5nIHRvIGNhbGwgYXMgYSBm
dW5jdGlvbi4KKyBAcGFyYW0gYXJndW1lbnRzIEEgZGljdGlvbmFyeSByZXByZXNlbnRpbmcgdGhl
IGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGNhbGwuCisgQHBhcmFtIGNv
bnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gY2FsbCB0aGUgSmF2YVNj
cmlwdCBmdW5jdGlvbi4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZv
a2Ugd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBjYWxsLCBvciB3aXRoIHRo
ZSBhc3luY2hyb25vdXMgcmVzb2x1dGlvbiBvZiB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUu
CisgQGRpc2N1c3Npb24gVGhlIEphdmFTY3JpcHQgc3RyaW5nIGlzIHRyZWF0ZWQgYXMgYW4gYW5v
bnltb3VzIEphdmFTY3JpcHQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHdpdGggbmFtZWQg
YXJndW1lbnRzLgorIFBhc3MgaW4gSmF2YVNjcmlwdCBzdHJpbmcgZm9ybWF0dGVkIGZvciBldmFs
dWF0aW9uLCBub3QgYXMgb25lIG9mIHRoZSB2YXJpYW50cyBvZiBmdW5jdGlvbiBjYWxsIGF2YWls
YWJsZSBpbiBKYXZhU2NyaXB0LgorIEZvciBleGFtcGxlOgorICAgICByZXR1cm4geCA/IHkgOiB6
OworCisgVGhlIGFyZ3VtZW50cyBkaWN0aW9uYXJ5IHN1cHBsaWVzIHRoZSB2YWx1ZXMgZm9yIHRo
b3NlIGFyZ3VtZW50cyB3aGljaCBhcmUgc2VyaWFsaXplZCBpbnRvIEphdmFTY3JpcHQgZXF1aXZh
bGVudHMuCisgRm9yIGV4YW1wbGU6CisgICAgIEB7IEAieCIgOiBAWUVTLCBAInkiIDogQDEsIEAi
eiIgOiBAMiB9OworCisgQ29tYmluaW5nIHRoZSBhYm92ZSBhcmd1bWVudHMgZGljdGlvbmFyeSB3
aXRoIHRoZSBhYm92ZSBKYXZhU2NyaXB0IHN0cmluZywgYSBmdW5jdGlvbiB3aXRoIHRoZSBhcmd1
bWVudHMgIngiLCAieSIsIGFuZCAieiIgaXMgY2FsbGVkIHdpdGggdmFsdWVzIFlFUywgMSwgYW5k
IDIgcmVzcGVjdGl2ZWx5LgorCisgQWxsb3dlZCBhcmd1bWVudCB0eXBlcyBhcmU6CisgTlNOdW1i
ZXIsIE5TU3RyaW5nLCBOU0RhdGUsIE5TQXJyYXksIE5TRGljdGlvbmFyeSwgYW5kIE5TTnVsbC4K
KyBBbnkgTlNBcnJheSBvciBOU0RpY3Rpb25hcnkgY29udGFpbmVycyBjYW4gb25seSBjb250YWlu
IG9iamVjdHMgb2YgdGhvc2UgdHlwZXMuCisKKyBObyBtYXR0ZXIgd2hpY2ggV0tDb250ZW50V29y
bGQgeW91IHVzZSB0byBjYWxsIHlvdXIgSmF2YVNjcmlwdCBmdW5jdGlvbiwgeW91IGNhbiBtYWtl
IGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgd2ViIGNvbnRlbnQuIChlLmcuIHRoZSBEb2N1bWVu
dCBhbmQgaXRzIERPTSBzdHJ1Y3R1cmUpCisgU3VjaCBjaGFuZ2VzIHdpbGwgYmUgdmlzaWJsZSB0
byBzY3JpcHQgZXhlY3V0aW5nIGluIGFsbCBXS0NvbnRlbnRXb3JsZHMuCisgQ2FsbGluZyB5b3Vy
IEphdmFTY3JpcHQgZnVuY3Rpb24gY2FuIGxlYXZlIGJlaGluZCBvdGhlciBjaGFuZ2VzIHRvIGds
b2JhbCBzdGF0ZSB2aXNpYmlsZSB0byBKYXZhU2NyaXB0LiAoZS5nLiBgd2luZG93Lm15VmFyaWFi
bGUgPSAxO2ApCisgVGhvc2UgY2hhbmdlcyB3aWxsIG9ubHkgYmUgdmlzaWJpbGUgdG8gc2NyaXB0
cyBleGVjdXRlZCBpbiB0aGUgc2FtZSBXS0NvbnRlbnRXb3JsZC4KKworIFlvdXIgY29tcGxldGlv
biBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB5b3VyIEph
dmFTY3JpcHQgZnVuY3Rpb24uCisgSWYgeW91ciBKYXZhU2NyaXB0IGRvZXMgbm90IGV4cGxpY2l0
bHkgcmV0dXJuIGFueSB2YWx1ZSwgdGhhdCB1bmRlZmluZWQgcmVzdWx0IG1hbmlmZXN0cyBhcyBu
aWwgYmVpbmcgcGFzc2VkIHRvIHlvdXIgY29tcGxldGlvbiBoYW5kbGVyLgorIElmIHlvdXIgSmF2
YVNjcmlwdCByZXR1cm5zIG51bGwsIHRoYXQgcmVzdWx0IG1hbmlmZXN0cyBhcyBOU051bGwgYmVp
bmcgcGFzc2VkIHRvIHlvdXIgY29tcGxldGlvbiBoYW5kbGVyLgorCisgSmF2YVNjcmlwdCBoYXMg
dGhlIGNvbmNlcHQgb2YgYSAidGhlbmFibGUiIG9iamVjdCwgd2hpY2ggaXMgYW55IEphdmFTY3Jp
cHQgb2JqZWN0IHRoYXQgaGFzIGEgY2FsbGFibGUgInRoZW4iIHByb3BlcnR5LgorIFRoZSBtb3N0
IHdlbGwga25vd24gZXhhbXBsZSBvZiBhICJ0aGVuYWJsZSIgb2JqZWN0IGlzIGEgSmF2YVNjcmlw
dCBwcm9taXNlLgorIElmIHlvdXIgSmF2YVNjcmlwdCByZXR1cm5zIGEgInRoZW5hYmxlIiBvYmpl
Y3QgV2ViS2l0IHdpbGwgY2FsbCAidGhlbiIgb24gdGhlIHJlc3VsdGluZyBvYmplY3QgYW5kIHdh
aXQgZm9yIGl0IHRvIGJlIHJlc29sdmVkLgorCisgSWYgdGhlIG9iamVjdCBjYWxscyAiZnVsZmls
bCIsIHlvdXIgY29tcGxldGlvbiBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHJlc3Vs
dC4KKyBJZiB0aGUgb2JqZWN0IGNhbGxzICJyZWplY3QiLCB5b3VyIGNvbXBsZXRpb24gaGFuZGxl
ciB3aWxsIGJlIGNhbGxlZCB3aXRoIGEgV0tFcnJvckphdmFTY3JpcHRBc3luY0Z1bmN0aW9uUmVz
dWx0UmVqZWN0ZWQgZXJyb3IgY29udGFpbmluZyB0aGUgcmVqZWN0IHJlYXNvbiBpbiB0aGUgdXNl
ckluZm8gZGljdGlvbmFyeS4KKyBJZiB0aGUgb2JqZWN0IGlzIGdhcmJhZ2UgY29sbGVjdGVkIGJl
Zm9yZSBpdCBpcyByZXNvbHZlZCwgeW91ciBjb21wbGV0aW9uIGhhbmRsZXIgd2lsbCBiZSBjYWxs
ZWQgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIHRoYXQgaXQgd2lsbCBuZXZlciBiZSByZXNvbHZl
ZC4KKyovCistICh2b2lkKV9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246KE5TU3RyaW5nICop
amF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
aWQ+ICopYXJndW1lbnRzIGluV29ybGQ6KF9XS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9u
SGFuZGxlcjsKKworLyogQGFic3RyYWN0IEV2YWx1YXRlcyB0aGUgZ2l2ZW4gSmF2YVNjcmlwdCBz
dHJpbmcuCisgQHBhcmFtIGphdmFTY3JpcHRTdHJpbmcgVGhlIEphdmFTY3JpcHQgc3RyaW5nIHRv
IGV2YWx1YXRlLgorIEBwYXJhbSBjb250ZW50V29ybGQgVGhlIFdLQ29udGVudFdvcmxkIGluIHdo
aWNoIHRvIGV2YWx1YXRlIHRoZSBKYXZhU2NyaXB0IHN0cmluZy4KKyBAcGFyYW0gY29tcGxldGlv
bkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiBzY3JpcHQgZXZhbHVhdGlvbiBjb21wbGV0
ZXMgb3IgZmFpbHMuCisgQGRpc2N1c3Npb24gVGhlIGNvbXBsZXRpb25IYW5kbGVyIGlzIHBhc3Nl
ZCB0aGUgcmVzdWx0IG9mIHRoZSBzY3JpcHQgZXZhbHVhdGlvbiBvciBhbiBlcnJvci4KKyBObyBt
YXR0ZXIgd2hpY2ggV0tDb250ZW50V29ybGQgeW91IHVzZSB0byBldmFsdWF0ZSB5b3VyIEphdmFT
Y3JpcHQgc3RyaW5nLCB5b3UgY2FuIG1ha2UgY2hhbmdlcyB0byB0aGUgdW5kZXJseWluZyB3ZWIg
Y29udGVudC4gKGUuZy4gdGhlIERvY3VtZW50IGFuZCBpdHMgRE9NIHN0cnVjdHVyZSkKKyBTdWNo
IGNoYW5nZXMgd2lsbCBiZSB2aXNpYmxlIHRvIHNjcmlwdCBleGVjdXRpbmcgaW4gYWxsIFdLQ29u
dGVudFdvcmxkcy4KKyBFdmFsdWF0aW5nIHlvdXIgSmF2YVNjcmlwdCBzdHJpbmcgY2FuIGxlYXZl
IGJlaGluZCBvdGhlciBjaGFuZ2VzIHRvIGdsb2JhbCBzdGF0ZSB2aXNpYmlsZSB0byBKYXZhU2Ny
aXB0LiAoZS5nLiBgd2luZG93Lm15VmFyaWFibGUgPSAxO2ApCisgVGhvc2UgY2hhbmdlcyB3aWxs
IG9ubHkgYmUgdmlzaWJpbGUgdG8gc2NyaXB0cyBleGVjdXRlZCBpbiB0aGUgc2FtZSBXS0NvbnRl
bnRXb3JsZC4KKyBldmFsdWF0ZUphdmFTY3JpcHQ6IGlzIHRoZSBiZXN0IHdheSB0byBzZXQgdXAg
Z2xvYmFsIHN0YXRlIGZvciBmdXR1cmUgSmF2YVNjcmlwdCBleGVjdXRpb24gaW4gYSBnaXZlbiB3
b3JsZC4gKGUuZy4gSW1wb3J0aW5nIGxpYnJhcmllcy91dGlsaXRpZXMgdGhhdCBmdXR1cmUgSmF2
YVNjcmlwdCBleGVjdXRpb24gd2lsbCByZWx5IG9uKQorIE9uY2UgeW91ciBnbG9iYWwgc3RhdGUg
aXMgc2V0IHVwLCBjb25zaWRlciB1c2luZyBjYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246IGZv
ciBtb3JlIGZsZXhpYmxlIGludGVyYWN0aW9uIHdpdGggdGhlIEphdmFTY3JpcHQgcHJvZ3JhbW1p
bmcgbW9kZWwuCisqLworLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWph
dmFTY3JpcHRTdHJpbmcgaW5Xb3JsZDooX1dLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25I
YW5kbGVyOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tDb250ZW50V29ybGQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tDb250ZW50V29ybGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDI1YWQ2ZjIyM2UyZGVmYTJkNmYw
NWE2YWQzY2U5OWQzZjFkMjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCisKKy8qIQorQSBXS0NvbnRlbnRXb3JsZCBvYmplY3QgYWxsb3dzIHlvdSB0byBz
ZXBlcmF0ZSB5b3VyIGFwcGxpY2F0aW9uJ3MgaW50ZXJhY3Rpb24gd2l0aCBjb250ZW50IGRpc3Bs
YXllZCBpbiBhIFdLV2ViVmlldyBpbnRvIGRpZmZlcmVudCByb2xlcyB0aGF0IGNhbm5vdCBpbnRl
cmZlcmUgd2l0aCBvbmUgYW5vdGhlci4KKyovCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dLQ29udGVudFdvcmxkIDog
TlNPYmplY3QKKworKyAoaW5zdGFuY2V0eXBlKW5ldyBOU19VTkFWQUlMQUJMRTsKKy0gKGluc3Rh
bmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworCisvKiEgQGFic3RyYWN0IFJldHJpZXZlIHRo
ZSBtYWluIHdvcmxkIHRoYXQgcGFnZSBjb250ZW50IGl0c2VsZiB1c2VzLgorIEBkaXNjdXNzaW9u
IFdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBwYWdlIGNvbnRlbnQgaW4gYSBXS1dlYlZpZXcgdXNpbmcg
dGhlIHBhZ2UgY29udGVudCB3b3JsZCB5b3UgY2FuIGRpc3J1cHQgdGhlIG9wZXJhdGlvbiBvZiBw
YWdlIGNvbnRlbnQgKGUuZy4gYnkgY29uZmxpY3Rpbmcgd2l0aCB2YXJpYWJsZSBuYW1lcyBpbiBK
YXZhU2NyaXB0IHNldCBieSB0aGUgd2ViIHBhZ2UgY29udGVudCBpdHNlbGYpLgorKi8KK0Bwcm9w
ZXJ0eSAoY2xhc3MsIG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0NvbnRlbnRXb3JsZCAqcGFnZUNv
bnRlbnRXb3JsZDsKKworLyohIEBhYnN0cmFjdCBSZXRyaWV2ZSB0aGUgZGVmYXVsdCBub24tcGFn
ZSBjb250ZW50IHdvcmxkIGZvciBBUEkgY2xpZW50cy4KKyBAZGlzY3Vzc2lvbiBJbnRlcmFjdGlu
ZyB3aXRoIHBhZ2UgY29udGVudCBpbiBhIFdLV2ViVmlldyB1c2luZyBhIGNvbnRlbnQgd29ybGQg
ZGlmZmVyZW50IGZyb20gdGhlIHBhZ2UgY29udGVudCB3b3JsZCBlbmFibGVzIHVzaW5nIERPTSBh
bmQgYnVpbHQtaW4gRE9NIEFQSXMKKyB3aXRob3V0IGNvbmZsaWN0aW5nIHdpdGggb3RoZXIgYXNw
ZWN0cyBvZiB0aGUgcGFnZSBjb250ZW50IChlLmcuIEphdmFTY3JpcHQgZnJvbSB0aGUgd2ViIHBh
Z2UgY29udGVudCBpdHNlbGYpCisqLworQHByb3BlcnR5IChjbGFzcywgbm9uYXRvbWljLCByZWFk
b25seSkgX1dLQ29udGVudFdvcmxkICpkZWZhdWx0Q2xpZW50V29ybGQ7CisKKy8qISBAYWJzdHJh
Y3QgUmV0cmlldmVzIGEgbmFtZWQgY29udGVudCB3b3JsZCBmb3IgQVBJIHVzZXJzLgorIEBwYXJh
bSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBXS0NvbnRlbnRXb3JsZCB0byByZXRyaWV2ZS4KKyBAZGlz
Y3Vzc2lvbiBCeSBpbnRlcmFjdGluZyB3aXRoIHBhZ2UgY29udGVudCBpbiBhIFdLV2ViVmlldyB1
c2luZyBhIG5vbi1tYWluIGNvbnRlbnQgd29ybGQgeW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBE
T00gYW5kIGJ1aWx0LWluIERPTSBBUElzCisgd2l0aG91dCBjb25mbGljdGluZyB3aXRoIG90aGVy
IGFzcGVjdHMgb2YgdGhlIHBhZ2UgY29udGVudCAoZS5nLiBKYXZhU2NyaXB0IGZyb20gdGhlIHdl
YiBjb250ZW50IGl0c2VsZikKKyBSZXBlYXRlZCBjYWxscyB3aXRoIHRoZSBzYW1lIG5hbWUgd2ls
bCByZXRyaWV2ZSB0aGUgc2FtZSBXS0NvbnRlbnRXb3JsZCBpbnN0YW5jZS4KKyBFYWNoIG5hbWVk
IGNvbnRlbnQgd29ybGQgaXMgZGlzdGluY3QgZnJvbSBhbGwgb3RoZXIgbmFtZWQgY29udGVudCB3
b3JsZHMsIHRoZSBkZWZhdWx0Q2xpZW50V29ybGQsIGFuZCB0aGUgcGFnZUNvbnRlbnRXb3JsZC4K
KyBUaGUgbmFtZSBjYW4gYmUgdXNlZCB0byBrZWVwIGRpc3RpbmN0IHdvcmxkcyBpZGVudGlmaWFi
bGUgYW55d2hlcmUgYSB3b3JsZCBtaWdodCBiZSBzdXJmYWNlZCBpbiBhIHVzZXIgaW50ZXJmYWNl
LgorIEZvciBleGFtcGxlLCB0aGUgZGlmZmVyZW50IHdvcmxkcyB1c2VkIGluIHlvdXIgYXBwbGlj
YXRpb24gd2lsbCBiZSBzdXJmYWNlZCBieSBuYW1lIGluIHRoZSBXZWJLaXQgV2ViIEluc3BlY3Rv
ci4KKyovCisrIChfV0tDb250ZW50V29ybGQgKil3b3JsZFdpdGhOYW1lOihOU1N0cmluZyAqKW5h
bWUgTlNfUkVGSU5FRF9GT1JfU1dJRlQ7CisKKy8qISBAYWJzdHJhY3QgVGhlIG5hbWUgb2YgdGhl
IFdLQ29udGVudFdvcmxkCisgQGRpc2N1c3Npb24gVGhlIHBhZ2VDb250ZW50V29ybGQgYW5kIGRl
ZmF1bHRDbGllbnRXb3JsZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGEgbmlsIG5hbWUuCisgQWxsIG90
aGVyIGluc3RhbmNlcyB3aWxsIGhhdmUgdGhlIG5vbi1uaWwgbmFtZSB0aGV5IHdlcmUgYWNjZXNz
ZWQgYnkuCisqLworQHByb3BlcnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNTdHJpbmcgKm5hbWU7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxk
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZC5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYTM2NWYyNWM1YjY0N2E4OTA4M2VhYzJhNjEwMWY4YjI5NDViZmJhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Nv
bnRlbnRXb3JsZC5tbQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJfV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgorCitAaW1wbGVtZW50
YXRpb24gX1dLQ29udGVudFdvcmxkCisKKysgKF9XS0NvbnRlbnRXb3JsZCAqKXBhZ2VDb250ZW50
V29ybGQKK3sKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRl
bnRXb3JsZCgpKTsKK30KKworKyAoX1dLQ29udGVudFdvcmxkICopZGVmYXVsdENsaWVudFdvcmxk
Cit7CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50V29ybGQ6OmRlZmF1bHRDbGllbnRX
b3JsZCgpKTsKK30KKworKyAoX1dLQ29udGVudFdvcmxkICopd29ybGRXaXRoTmFtZTooTlNTdHJp
bmcgKiluYW1lCit7CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50V29ybGQ6OnNoYXJl
ZFdvcmxkV2l0aE5hbWUobmFtZSkpOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfY29u
dGVudFdvcmxkLT5+Q29udGVudFdvcmxkKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisK
Ky0gKE5TU3RyaW5nICopbmFtZQoreworICAgIGlmIChfY29udGVudFdvcmxkLT5uYW1lKCkuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gX2NvbnRlbnRXb3JsZC0+
bmFtZSgpOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRp
b24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9jb250ZW50
V29ybGQ7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZEludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDgwMGMx
MjQxMzI0Y2EyZDVhM2I5ODUyMTlmZjJkZWRhNzNlYjg4ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGRJbnRlcm5hbC5o
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tDb250ZW50V29ybGQu
aCIKKworI2ltcG9ydCAiQVBJQ29udGVudFdvcmxkLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgor
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6Q29udGVudFdvcmxkPiB7CisgICAg
dXNpbmcgV3JhcHBlckNsYXNzID0gX1dLQ29udGVudFdvcmxkOworfTsKKworfQorCitAaW50ZXJm
YWNlIF9XS0NvbnRlbnRXb3JsZCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpP
YmplY3RTdG9yYWdlPEFQSTo6Q29udGVudFdvcmxkPiBfY29udGVudFdvcmxkOworfQorQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4IGQxMGU3YjVjMTI0
NmJkZjliYjAzZWZhZWMwNGQxMDE2NDJhM2MwOTEuLmQwMTQxM2RjNTUyNjQzOTdkY2Y2ZDRiYWNl
N2MxZmE4NTMyNTE3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5j
cHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eS5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRlICJBUElDb250ZW50V29y
bGQuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJVXNl
clNjcmlwdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xs
ZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCA2NzFmYjI5MmQyMDE5NjAzMzdiMDM4M2VkMDdi
MjdmZGI5N2UyYzRkLi42NzZkMjM3YzMzOTZmOTQxNmM2NDlhMmQwYjI1ZGVlOTI3MjEwMzZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTQxLDYgKzQxLDcgQEAK
IG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXJyYXk7CiBjbGFzcyBDb250ZW50UnVsZUxpc3Q7Citj
bGFzcyBDb250ZW50V29ybGQ7CiBjbGFzcyBVc2VyQ29udGVudFdvcmxkOwogY2xhc3MgVXNlclNj
cmlwdDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5jcHAKaW5kZXggZWY0NWE4YzI5ZDliZjRhYTU4ZmFiOGQyNDY3NzMzMDJlM2ZmOGE5
Ny4uZTE2M2Q4ZWE5NDM0Nzg5NWQwMzM4ODEwOTQ3NTc2ZmVhMDQ3NWYyNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNs
dWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUF0dGFjaG1lbnQuaCIKKyNpbmNsdWRlICJB
UElDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElDb250ZXh0TWVudUNsaWVudC5oIgogI2lu
Y2x1ZGUgIkFQSUZpbmRDbGllbnQuaCIKICNpbmNsdWRlICJBUElGaW5kTWF0Y2hlc0NsaWVudC5o
IgpAQCAtMzg2MSwxMCArMzg2MiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6bGF1bmNoSW5pdGlh
bFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWUoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBXVEY6OkZ1
bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29y
ZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCiB7Ci0gICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV1RGTW92
ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsK
KyAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXVEZNb3ZlKHBhcmFtZXRl
cnMpLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpLCBXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywg
Y29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJ
OjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2Fs
bGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCwgV1RGOjpGdW5jdGlv
bjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0
YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAg
Ly8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9ydCBydW5uaW5nIHNjcmlwdCBpbiBh
IFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2FkcyB5ZXRzLgogICAgIGxhdW5jaElu
aXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKQEAgLTM4NzUsNyArMzg3Niw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lEID0gbV9jYWxsYmFj
a3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFt
ZVNjcmlwdFdvcmxkIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQocGFyYW1ldGVycywgd29ybGROYW1lLCBjYWxsYmFj
a0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lU2NyaXB0V29ybGQocGFyYW1ldGVycywgd29ybGQud29ybGREYXRhKCksIGNhbGxiYWNrSUQp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKEZyYW1lSWRl
bnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0
dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRp
b25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tG
dW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMWYwZTZi
NmJlMTI0N2IwZDM3M2JmNTI3Mzc3Yjk2MDc1NmM4NjdiMC4uZTFmYzIwNGJlY2E1NTNhOTE5NTBj
NzBlMWM5ZTUzZjRhMDhmMWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKQEAgLTE2Myw2ICsxNjMsNyBAQCBpbnRlcmZhY2UgSUQzRDExRGV2aWNlMTsKIAogbmFtZXNw
YWNlIEFQSSB7CiBjbGFzcyBBdHRhY2htZW50OworY2xhc3MgQ29udGVudFdvcmxkOwogY2xhc3Mg
Q29udGV4dE1lbnVDbGllbnQ7CiBjbGFzcyBGaW5kQ2xpZW50OwogY2xhc3MgRmluZE1hdGNoZXND
bGllbnQ7CkBAIC0xMDcwLDcgKzEwNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBnZXRTb3VyY2VG
b3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcm
LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZlT2ZGcmFt
ZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIFdURjo6RnVuY3Rpb248dm9pZCAoQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0gICAgdm9pZCBydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIFdURjo6RnVuY3Rp
b248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6
OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIEFQSTo6Q29udGVudFdvcmxkJiwgV1RGOjpGdW5j
dGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pOwogICAgIC8vIEZvciBzdWIgZnJhbWVzLgogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluRnJh
bWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNl
OjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoUmVm
UHRyPFZvaWRDYWxsYmFjaz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBhZDhiNmRlZjIxNzhjZjI4ZjNlYWVlMGU3YjZiYWE0ZmQx
NjczNTA4Li4yMDQwNmUzNTE1NDBhMmYwYzE2MzlkZjc5NGI2YzJjZjRhZThkY2UxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMjUs
NiArMTAyNSwxMCBAQAogCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nl
c3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTdDRjBFMzE2
M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNl
aXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxN0NGMEU0MTYzQTQ4NkMwMEMyOTUwRSAvKiBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Q0YwRTIxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CisJCTUxODM3MjFEMjNDRTg1RjYw
MDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM3MjFBMjNDRDQ5QjIwMDAzQ0Y4MyAvKiBfV0tDb250ZW50
V29ybGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQk1MTgzNzIxRTIzQ0U4NUZCMDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM3MjFDMjND
RDRBNzQwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGRJbnRlcm5hbC5oICovOyB9OworCQk1MTgz
NzIxRjIzQ0U5NTIxMDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MzcyMUIyM0NENDlCMjAwMDNDRjgz
IC8qIF9XS0NvbnRlbnRXb3JsZC5tbSAqLzsgfTsKKwkJNTE4MzcyMjIyM0NFOTc0MTAwMDNDRjgz
IC8qIEFQSUNvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE4MzcyMjAyM0NFOTczQTAwMDNDRjgzIC8qIEFQSUNvbnRlbnRXb3JsZC5o
ICovOyB9OwogCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODcxQjVBMTI3
Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovOyB9OwogCQk1MThBQ0FFQTEyQUVF
NkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4QUNBRTkxMkFFRTZCQjAwQjA0QjgzIC8q
IFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk1MThBQ0YxMTEyQjAxNUY4MDBCMDRCODMgLyogV0tDcmVkZW50
aWFsVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxOEFDRjEwMTJCMDE1RjgwMEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxUeXBlcy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0zNTgwLDYgKzM1ODQs
MTEgQEAKIAkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1MTdDRjBF
MTE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBDYWNoZVN0
b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0aCA9IERlcml2ZWRT
b3VyY2VzL1dlYktpdDIvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJCTUxN0NGMEUyMTYz
QTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNz
YWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OworCQk1
MTgzNzIxQTIzQ0Q0OUIyMDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0NvbnRlbnRXb3JsZC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTgzNzIxQjIzQ0Q0OUIyMDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxk
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gX1dLQ29udGVudFdv
cmxkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgzNzIxQzIzQ0Q0QTc0MDAw
M0NGODMgLyogX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNTE4MzcyMjAyM0NFOTczQTAwMDNDRjgzIC8qIEFQSUNvbnRlbnRXb3JsZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElDb250ZW50V29ybGQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4MzcyMjEyM0NFOTczQTAwMDNDRjgzIC8qIEFQ
SUNvbnRlbnRXb3JsZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBB
UElDb250ZW50V29ybGQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTgzQjM5
MzEzNzlGODVDMDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQueGNjb25m
aWc7IHBhdGggPSBTaGltLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4
dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViQ29udGV4dE1lbnUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3MjksNiArNjczOCw5IEBACiAJCQkJ
NUM0NjA5RTIyMjQzMEU0QzAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbi5oICov
LAogCQkJCTVDNDYwOUUzMjI0MzBFNEQwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rp
b24ubW0gKi8sCiAJCQkJNUM0NjA5RTQyMjQzMEU0RDAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxl
TGlzdEFjdGlvbkludGVybmFsLmggKi8sCisJCQkJNTE4MzcyMUEyM0NENDlCMjAwMDNDRjgzIC8q
IF9XS0NvbnRlbnRXb3JsZC5oICovLAorCQkJCTUxODM3MjFCMjNDRDQ5QjIwMDAzQ0Y4MyAvKiBf
V0tDb250ZW50V29ybGQubW0gKi8sCisJCQkJNTE4MzcyMUMyM0NENEE3NDAwMDNDRjgzIC8qIF9X
S0NvbnRlbnRXb3JsZEludGVybmFsLmggKi8sCiAJCQkJMUE1NzA0RjYxQkUwMUZGNDAwODc0QUYx
IC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCAqLywKIAkJCQkxQTU3MDRGNTFCRTAxRkY0
MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywKIAkJCQk1QzVEMjM4
OTIyN0ExODkyMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLmggKi8sCkBAIC04NDQ1
LDYgKzg0NTcsOCBAQAogCQkJCTVDNDYwOUU2MjI0MzBGQTcwMDk5NDNDMiAvKiBBUElDb250ZW50
UnVsZUxpc3RBY3Rpb24uaCAqLywKIAkJCQk3QzNBMDZBNTFBQUI5MDNFMDA5RDc0QkEgLyogQVBJ
Q29udGVudFJ1bGVMaXN0U3RvcmUuY3BwICovLAogCQkJCTdDM0EwNkE2MUFBQjkwM0UwMDlENzRC
QSAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZS5oICovLAorCQkJCTUxODM3MjIxMjNDRTk3M0Ew
MDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuY3BwICovLAorCQkJCTUxODM3MjIwMjNDRTk3M0Ew
MDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuaCAqLywKIAkJCQkwNzZFODg0RDFBMTNDQURGMDA1
RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLywKIAkJCQk1Q0UwQzM2NjIyOUYyRDNE
MDAzNjk1RjAgLyogQVBJQ29udGV4dE1lbnVFbGVtZW50SW5mby5jcHAgKi8sCiAJCQkJNUNFMEMz
NjcyMjlGMkQzRTAwMzY5NUYwIC8qIEFQSUNvbnRleHRNZW51RWxlbWVudEluZm8uaCAqLywKQEAg
LTk3OTAsNiArOTgwNCw4IEBACiAJCQkJOTkwRDI4QjExQzY1MjA4RDAwOTg2OTc3IC8qIF9XS0F1
dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNDYwOUU3MjI0
MzE3QjQwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTVDNDYwOUU4MjI0MzE3QkIwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rp
b25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4MzcyMUQyM0NFODVGNjAwMDNDRjgz
IC8qIF9XS0NvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4MzcyMUUyM0NFODVG
QjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxQTU3MDRGODFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1RDIzOEMyMjdBMkNEQTAwMEI5QkRBIC8qIF9XS0N1c3Rv
bUhlYWRlckZpZWxkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4OTFCNjkxQTY4QkVCQzAwMzBG
Mzg2IC8qIF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLApAQCAt
OTg5NSw2ICs5OTExLDcgQEAKIAkJCQkxQTNERDIwNjEyNUU1QTJGMDA0NTE1RTYgLyogQVBJQ2xp
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg5RDJCNDFBNkIwNjhDMDAzQTVGREUgLyogQVBJ
Q29udGVudFJ1bGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzNBMDZBODFBQUI5MDNFMDA5
RDc0QkEgLyogQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
ODM3MjIyMjNDRTk3NDEwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTA3NkU4ODRFMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0TWVudUNsaWVudC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJN0E4MjFGNTAxRTJGN0E3NTAwNjA0NTc3IC8qIEFQSUN1c3Rv
bVByb3RvY29sTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE1NzhCODMxMjA5
RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMTE4NjUsNiArMTE4
ODIsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1h
c2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJNTE4MzcyMUYyM0NFOTUyMTAwMDND
RjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTVDQkQ1OTVDMjI4
MEVERjQwMDJCMjJBQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk0OUZCRUZGRDIzOUIwMTFEMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGlj
c0ZpcnN0UGFydHkubW0gaW4gU291cmNlcyAqLywKIAkJCQk0OUZCRUZGRjIzOUIwMTJGMDBCRDAz
MkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJV
c2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJD
b250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggYzQ0YWRiMjZhMGYxYzk1
MzQ0MGI4OThjMGU3ZGZmNTVmOTZhYTA1OS4uNmVjNjcyMTgzYjNiNDQzYWQ1MzBiMzJiMDVmZmJm
MzNjMjBmYTFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTYyLDcg
KzYyLDcgQEAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8UmVmUHRyPEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQ+LCB1bnNpZ25lZD4KIAogc3RhdGljIFdvcmxkTWFwJiB3b3Js
ZE1hcCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdvcmxkTWFwPiBtYXAoc3RkOjpp
bml0aWFsaXplcl9saXN0PFdvcmxkTWFwOjpLZXlWYWx1ZVBhaXJUeXBlPiB7IHsgMSwgc3RkOjpt
YWtlX3BhaXIoJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIDEpIH0g
fSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdvcmxkTWFwPiBtYXAoc3RkOjppbml0aWFs
aXplcl9saXN0PFdvcmxkTWFwOjpLZXlWYWx1ZVBhaXJUeXBlPiB7IHsgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjppZGVudGlmaWVyRm9yTm9ybWFsV29ybGQoKSwgc3RkOjptYWtlX3BhaXIoJklu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIDEpIH0gfSk7CiAKICAgICBy
ZXR1cm4gbWFwOwogfQpAQCAtOTQsMjMgKzk0LDMzIEBAIFdlYlVzZXJDb250ZW50Q29udHJvbGxl
cjo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlcigpCiAgICAgdXNlckNvbnRlbnRDb250cm9sbGVy
cygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRf
dCwgU3RyaW5nPj4mIHdvcmxkcykKK0luamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6d29ybGRGb3JJZGVudGlmaWVyKHVpbnQ2NF90IGlkZW50aWZpZXIp
Cit7CisgICAgYXV0byBpdGVyYXRvciA9IHdvcmxkTWFwKCkuZmluZChpZGVudGlmaWVyKTsKKyAg
ICByZXR1cm4gaXRlcmF0b3IgPT0gd29ybGRNYXAoKS5lbmQoKSA/IG51bGxwdHIgOiBpdGVyYXRv
ci0+dmFsdWUuZmlyc3QuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjphZGRVc2VyQ29udGVudFdvcmxkKGNvbnN0IHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPiYg
d29ybGQpCiB7Ci0gICAgZm9yIChhdXRvJiB3b3JsZCA6IHdvcmxkcykgewotICAgICAgICBBU1NF
UlQod29ybGQuZmlyc3QpOwotICAgICAgICBBU1NFUlQod29ybGQuZmlyc3QgIT0gMSk7CisgICAg
QVNTRVJUKHdvcmxkLmZpcnN0KTsKKyAgICBBU1NFUlQod29ybGQuZmlyc3QgIT0gMSk7CiAKLSAg
ICAgICAgd29ybGRNYXAoKS5lbnN1cmUod29ybGQuZmlyc3QsIFsmXSB7CisgICAgd29ybGRNYXAo
KS5lbnN1cmUod29ybGQuZmlyc3QsIFsmXSB7CiAjaWYgUExBVEZPUk0oR1RLKSB8fCBQTEFURk9S
TShXUEUpCi0gICAgICAgICAgICAvLyBUaGUgR0xpYiBBUEkgZG9lc24ndCBhbGxvdyB0byBjcmVh
dGUgc2NyaXB0IHdvcmxkcyBmcm9tIHRoZSBVSSBwcm9jZXNzLiBXZSBuZWVkIHRvCi0gICAgICAg
ICAgICAvLyB1c2UgdGhlIGV4aXN0aW5nIHdvcmxkIGNyZWF0ZWQgYnkgdGhlIHdlYiBleHRlbnNp
b24gaWYgYW55LiBUaGUgd29ybGQgbmFtZSBpcyB1c2VkCi0gICAgICAgICAgICAvLyBhcyB0aGUg
aWRlbnRpZmllci4KLSAgICAgICAgICAgIGlmIChhdXRvKiBleGlzdGluZ1dvcmxkID0gSW5qZWN0
ZWRCdW5kbGVTY3JpcHRXb3JsZDo6ZmluZCh3b3JsZC5zZWNvbmQpKQotICAgICAgICAgICAgICAg
IHJldHVybiBzdGQ6Om1ha2VfcGFpcihSZWY8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4oKmV4
aXN0aW5nV29ybGQpLCAxKTsKKyAgICAgICAgLy8gVGhlIEdMaWIgQVBJIGRvZXNuJ3QgYWxsb3cg
dG8gY3JlYXRlIHNjcmlwdCB3b3JsZHMgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gV2UgbmVlZCB0bwor
ICAgICAgICAvLyB1c2UgdGhlIGV4aXN0aW5nIHdvcmxkIGNyZWF0ZWQgYnkgdGhlIHdlYiBleHRl
bnNpb24gaWYgYW55LiBUaGUgd29ybGQgbmFtZSBpcyB1c2VkCisgICAgICAgIC8vIGFzIHRoZSBp
ZGVudGlmaWVyLgorICAgICAgICBpZiAoYXV0byogZXhpc3RpbmdXb3JsZCA9IEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGQuc2Vjb25kKSkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om1ha2VfcGFpcihSZWY8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4oKmV4aXN0aW5nV29y
bGQpLCAxKTsKICNlbmRpZgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZSh3b3JsZC5zZWNvbmQpLCAxKTsKLSAgICAgICAg
fSk7Ci0gICAgfQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZDo6Y3JlYXRlKHdvcmxkLnNlY29uZCksIDEpOworICAgIH0pOworfQorCit2b2lk
IFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMoY29uc3QgVmVj
dG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4mIHdvcmxkcykKK3sKKyAgICBmb3IgKGF1
dG8mIHdvcmxkIDogd29ybGRzKQorICAgICAgICBhZGRVc2VyQ29udGVudFdvcmxkKHdvcmxkKTsK
IH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVzZXJDb250ZW50V29y
bGRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHdvcmxkSWRlbnRpZmllcnMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyLmgKaW5kZXggZDZmOGMxY2I3NmY3ZTQ3ODRjMzdmNDY1ZjY0NTcwYmQ1
ZjgyZDQyNC4uNDhlN2Q2YWM1YzdlMmQ5NWEyYzFhODI2MGM5NDkwMGJlYjBhYzhmMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtNjQsNyArNjQsMTEgQEAgcHVibGljOgogICAg
IHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQmKTsK
ICAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KCk7CiAKKyAgICBzdGF0aWMgdWludDY0X3Qg
aWRlbnRpZmllckZvck5vcm1hbFdvcmxkKCkgeyByZXR1cm4gMTsgfQorICAgIEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQqIHdvcmxkRm9ySWRlbnRpZmllcih1aW50NjRfdCk7CisKICAgICB2b2lk
IGFkZFVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFN0
cmluZz4+Jik7CisgICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxkKGNvbnN0IHN0ZDo6cGFpcjx1
aW50NjRfdCwgU3RyaW5nPiYpOwogICAgIHZvaWQgYWRkVXNlclNjcmlwdHMoVmVjdG9yPFdlYlVz
ZXJTY3JpcHREYXRhPiYmLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkpOwogICAgIHZvaWQg
YWRkVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxXZWJVc2VyU3R5bGVTaGVldERhdGE+Jik7
CiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0IFZlY3RvcjxXZWJT
Y3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGI4MmE3MTFjNWVkOWZkOGYzMDI2YjVjOWQwZmI0Nzk1
OGM5ODNiNWIuLjk0ZGNkZTU3MmJhMWU4MjIwMGIyMWZhYWFmOGU4MzFjYzEwMDYwNGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMzY5LDE3
ICszMzY5LDIzIEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6OmtleWJvYXJkVUlNb2RlKCkKICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+KChmdWxsS2V5Ym9hcmRBY2Nlc3NF
bmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9hcmRBY2Nlc3NEZWZhdWx0KSB8ICht
X3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogMCkpOwogfQogCi12b2lk
IFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwg
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZy
YW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCB1aW50NjRf
dCB3b3JsZElkZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICAvLyBOT1RF
OiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMgdGhhdCB0aGUgb2Jq
ZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVyaW5nIHNjcmlwdCBl
eGVjdXRpb24uCiAKLSAgICBhdXRvKiB3b3JsZCA9IHdvcmxkTmFtZSA/IEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVlKCkpIDogJkluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ6Om5vcm1hbFdvcmxkKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAhZnJhbWUtPmNvcmVG
cmFtZSgpIHx8ICF3b3JsZCkgeworICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5jb3JlRnJhbWUo
KSkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2Fs
bGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3Jp
cHQ6IFBhZ2UgaXMgaW4gaW52YWxpZCBzdGF0ZSJfcyB9LCBjYWxsYmFja0lEKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQod29ybGRJZGVudGlmaWVyKTsKKyAgICBhdXRv
KiB3b3JsZCA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT53b3JsZEZvcklkZW50aWZpZXIod29y
bGRJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmxkKSB7CisgICAgICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIEV4Y2VwdGlvbkRldGFpbHMg
eyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdDogQ2Fubm90IGZpbmQgc3BlY2lmaWVkIGNv
bnRlbnQgd29ybGQiX3MgfSwgY2FsbGJhY2tJRCkpOworICAgICAgICByZXR1cm47CisgICAgfQor
CiAgICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRo
aXMpLCB0aGlzLCB3b3JsZCA9IG1ha2VSZWYoKndvcmxkKSwgZnJhbWUgPSBtYWtlUmVmKCpmcmFt
ZSksIGNhbGxiYWNrSURdKFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0KSB7CiAgICAgICAgIFJlZlB0
cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1ZTsKICAgICAgICAg
aWYgKHJlc3VsdCkgewpAQCAtMzQwMiwxNiArMzQwOCwxNyBAQCB2b2lkIFdlYlBhZ2U6OnJ1bkph
dmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFt
ZXRlcgogICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0ZUFzeW5jaHJvbm91
c1VzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNj
cmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3Qgc3Rk
OjpwYWlyPHVpbnQ2NF90LCBTdHJpbmc+JiB3b3JsZERhdGEsIENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKIHsKLSAgICBydW5KYXZhU2NyaXB0KG1haW5XZWJGcmFtZSgpLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOworICAgIG1fdXNlckNvbnRlbnRDb250cm9sbGVy
LT5hZGRVc2VyQ29udGVudFdvcmxkKHdvcmxkRGF0YSk7CisgICAgcnVuSmF2YVNjcmlwdChtYWlu
V2ViRnJhbWUoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGREYXRhLmZpcnN0LCBjYWxsYmFj
a0lEKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFtZUlkZW50
aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVy
ZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFdlYkZyYW1lKiBmcmFtZSA9IFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIEFTU0VSVChtYWluV2Vi
RnJhbWUoKSAhPSBmcmFtZSk7Ci0gICAgcnVuSmF2YVNjcmlwdChmcmFtZSwgeyBzY3JpcHQsIGZh
bHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSwgV1RGOjpudWxsb3B0LCBjYWxs
YmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCB7IHNjcmlwdCwgZmFsc2UsIFdURjo6
bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9LCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6Omlk
ZW50aWZpZXJGb3JOb3JtYWxXb3JsZCgpLCBjYWxsYmFja0lEKTsKIH0KIAogdm9pZCBXZWJQYWdl
OjpnZXRDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjYTRjOTc0MTgwM2U2MzdhZjFj
ODMwZmUyNjNjMThkZjMwYTA3OWE1Li5kMTdiMjRiYjRjZmZiMzQ3MjE4NjkxMGU5M2M1ODg1YTMy
NTQwOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBA
IC0xNDQxLDggKzE0NDEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U2VsZWN0aW9uQXNXZWJB
cmNoaXZlRGF0YShDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFNvdXJjZUZvckZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRXZWJBcmNoaXZl
T2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwotICAgIHZvaWQg
cnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCk7Ci0gICAg
dm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1
bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIHVpbnQ2NF90IHdvcmxkSWRlbnRpZmllciwgQ2FsbGJh
Y2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBzdGQ6OnBhaXI8dWludDY0X3Qs
IFN0cmluZz4mIHdvcmxkRGF0YSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBydW5KYXZhU2NyaXB0
SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBmb3JjZVJlcGFpbnQoQ2FsbGJh
Y2tJRCk7CiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVjdCBzbmFwc2hvdFJl
Y3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0aW9ucywgQ2FsbGJh
Y2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCBlOTBlMzFiMWIzNWY2NjIyOTVjMjEyNjdmNjEzYzkxNWNmMzdm
OWQ2Li43MTRmZjliODFlNjdhZjQ2MGFmMjA2ZGEzZGQ3NjlmZmEwNzM2NjE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTIwNCw3ICsyMDQsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIEdldFNlbGVj
dGlvbkFzV2ViQXJjaGl2ZURhdGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAg
R2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFdlYkFyY2hpdmVPZkZyYW1lKFdlYkNv
cmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKLSAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29y
ZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9uYWw8U3RyaW5nPiB3
b3JsZE5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAgIFJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyBwYXJhbWV0ZXJzLCBzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmluZz4gd29ybGQsIFdl
YktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lKFdl
YkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgc2NyaXB0LCBib29sIGZvcmNl
VXNlckdlc3R1cmUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEZvcmNlUmVw
YWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
Q2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA1N2JhN2QzNTU5OGUyYmNkZjRkNDBl
MjgzOGYyNzMyYjUzZDhiYWMuLjY0NDhmMWE2NjYyYmMxODEzNDQ5NWFlNGY1OTg1YmMzZGU3MTgz
NDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyMSBAQAorMjAyMC0wMS0xNSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5j
b20+CisKKyAgICAgICAgQWRkIFdLQ29udGVudFdvcmxkIFNQSSwgYW5kIHVzZSBpdCBpbiBKYXZh
U2NyaXB0IGV4ZWN1dGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwNjMxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
ICAgICAgICAKKyAgICAgICAgVXBkYXRlIHByZXZpb3VzIGNhbGxBc3luY0Z1bmN0aW9uIGNhbGxz
IHdpdGggdGhlIG5ldyBzaWduYXR1cmUuCisgICAgICAgIEFkZCB0ZXN0cyBmb3IgbmV3IF9XS0Nv
bnRlbnRXb3JsZCBjbGFzcyBhbmQgaXRzIGJlaGF2aW9yIHdpdGggcmVnYXJkIHRvIGV4ZWN1dGlu
ZyBKYXZhU2NyaXB0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Bc3luY0Z1bmN0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dHJ5R0NQcm9taXNl
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tOgorICAg
ICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjp3
aXRoQXJndW1lbnRzOmVycm9yOl0pOgorCiAyMDIwLTAxLTA5ICBEYXZpZCBLaWx6ZXIgIDxkZGtp
bHplckBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBsZWFrcyBvYmplY3Rz
IGluIGEgdG9wLWxldmVsIGF1dG9yZWxlYXNlUG9vbCB0aGF0J3MgbmV2ZXIgY2xlYXJlZApkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0
aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0
aW9uLm1tCmluZGV4IDA5Y2FmZTQ3OTY4MmQ3MzgyODZkODgwYmZlYjdkYzY2MjNmOGFkODAuLjc4
Y2RkNzcyMDQ3NWVmYzA5YTIzNzQwY2U4MDg2NzNhYmM2OTQ0YTUgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KQEAg
LTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcu
aCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
X1dLQ29udGVudFdvcmxkLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKIApAQCAtMTgz
LDcgKzE4NCw3IEBAIHN0YXRpYyB2b2lkIHRyeUdDUHJvbWlzZShXS1dlYlZpZXcgKndlYlZpZXcs
IGJvb2wmIGRvbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TU3RyaW5nICpmdW5jdGlvbkJv
ZHkgPSBAInJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsgfSki
OwotICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3Vt
ZW50czpuaWwgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpmdW5jdGlvbkJv
ZHkgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRX
b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsK
ICAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKICAgICAgICAgRVhQRUNUX1RSVUUoZXJyb3Ig
IT0gbmlsKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlwdGlvbl0gY29udGFp
bnNTdHJpbmc6QCJubyBsb25nZXIgcmVhY2hhYmxlIl0pOwpAQCAtMjAwLDcgKzIwMSw3IEBAIFRF
U1QoQXN5bmNGdW5jdGlvbiwgUHJvbWlzZSkKICAgICBOU1N0cmluZyAqZnVuY3Rpb25Cb2R5ID0g
QCJyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IHNldFRpbWVv
dXQoZnVuY3Rpb24oKXsgcmVzb2x2ZSg0MikgfSwgMCk7IH0pIjsKIAogICAgIGJvb2wgZG9uZSA9
IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0
aEFyZ3VtZW50czpuaWwgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpmdW5j
dGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNv
bnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJy
b3IpIHsKICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgICAgICBFWFBFQ1RfVFJVRShb
cmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOwogICAgICAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpANDJdKTsKQEAgLTIxMiw3ICsyMTMsNyBAQCBU
RVNUKEFzeW5jRnVuY3Rpb24sIFByb21pc2UpCiAgICAgZnVuY3Rpb25Cb2R5ID0gQCJyZXR1cm4g
bmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IHNldFRpbWVvdXQoZnVuY3Rp
b24oKXsgcmVqZWN0KCdSZWplY3RlZCEnKSB9LCAwKTsgfSkiOwogCiAgICAgZG9uZSA9IGZhbHNl
OwotICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3Vt
ZW50czpuaWwgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpmdW5jdGlvbkJv
ZHkgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRX
b3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsK
ICAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKICAgICAgICAgRVhQRUNUX1RSVUUoZXJyb3Ig
IT0gbmlsKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlwdGlvbl0gY29udGFp
bnNTdHJpbmc6QCJSZWplY3RlZCEiXSk7CkBAIC0yMjMsNyArMjI0LDcgQEAgVEVTVChBc3luY0Z1
bmN0aW9uLCBQcm9taXNlKQogICAgIGZ1bmN0aW9uQm9keSA9IEAibGV0IHAgPSBuZXcgUHJveHko
ZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJlc29s
dmUoNDIpOyB9LCAwKTsgfSwgeyB9KTsgcmV0dXJuIHsgdGhlbjogcCB9OyI7CiAKICAgICBkb25l
ID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NhbGxBc3luY0Z1bmN0aW9uOmZ1bmN0aW9uQm9keSB3
aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOmZ1
bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdl
Q29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICpl
cnJvcikgewogICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAgICAgICAgIEVYUEVDVF9UUlVF
KFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7CiAgICAgICAgIEVYUEVD
VF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkA0Ml0pOwpAQCAtMjM0LDcgKzIzNSw3IEBA
IFRFU1QoQXN5bmNGdW5jdGlvbiwgUHJvbWlzZSkKICAgICBmdW5jdGlvbkJvZHkgPSBAImxldCBw
ID0gbmV3IFByb3h5KGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyByZWplY3QoJ1JlamVjdGVkIScpOyB9LCAwKTsgfSwgeyB9KTsgcmV0dXJuIHsgdGhl
bjogcCB9OyI7CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NhbGxBc3luY0Z1
bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpb
Jl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5j
SmF2YVNjcmlwdEZ1bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBpbldvcmxk
Ol9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAo
aWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQp
OwogICAgICAgICBFWFBFQ1RfVFJVRShlcnJvciAhPSBuaWwpOwogICAgICAgICBFWFBFQ1RfVFJV
RShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIlJlamVjdGVkISJdKTsKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3
RXZhbHVhdGVKYXZhU2NyaXB0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KaW5kZXggOTg0YmMzNmI2ZDI1ZjVl
NGExOTlhNTViMWY1OWM4YzhjZDhhYWE1Mi4uOGM3MGMyNGNjNzBhMDBkN2FlNWIyZGIxNTFlNmY5
OWY0ZDI2MGVkNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KQEAg
LTI5LDggKzI5LDEwIEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgogI2ltcG9ydCAi
VGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgotI2ltcG9ydCA8V2Vi
S2l0L1dLV2ViVmlldy5oPgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2Vi
S2l0L1dLRXJyb3JQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5o
PgorI2ltcG9ydCA8V2ViS2l0L19XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8d3RmL1JldGFp
blB0ci5oPgogCiBzdGF0aWMgYm9vbCBpc0RvbmU7CkBAIC0xMTEsMyArMTEzLDExNCBAQCBURVNU
KFdLV2ViVmlldywgRXZhbHVhdGVKYXZhU2NyaXB0RXJyb3JDYXNlcykKICAgICBpc0RvbmUgPSBm
YWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CiB9CisKK1RFU1Qo
V0tXZWJWaWV3LCBXS0NvbnRlbnRXb3JsZCkKK3sKKyAgICBFWFBFQ1RfTlVMTChfV0tDb250ZW50
V29ybGQucGFnZUNvbnRlbnRXb3JsZC5uYW1lKTsKKyAgICBFWFBFQ1RfTlVMTChfV0tDb250ZW50
V29ybGQuZGVmYXVsdENsaWVudFdvcmxkLm5hbWUpOworICAgIEVYUEVDVF9GQUxTRShfV0tDb250
ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCA9PSBfV0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVu
dFdvcmxkKTsKKworICAgIF9XS0NvbnRlbnRXb3JsZCAqbmFtZWRXb3JsZCA9IFtfV0tDb250ZW50
V29ybGQgd29ybGRXaXRoTmFtZTpAIk5hbWUiXTsKKyAgICBFWFBFQ1RfVFJVRShbbmFtZWRXb3Js
ZC5uYW1lIGlzRXF1YWxUb1N0cmluZzpAIk5hbWUiXSk7CisgICAgRVhQRUNUX0VRKG5hbWVkV29y
bGQsIFtfV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIk5hbWUiXSk7Cit9CisKK1RFU1Qo
V0tXZWJWaWV3LCBFdmFsdWF0ZUphdmFTY3JpcHRJbldvcmxkcykKK3sKKyAgICBSZXRhaW5QdHI8
VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7CisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PC9odG1sPiJdOworCisgICAgLy8g
U2V0IGEgdmFyaWFibGUgaW4gdGhlIG1haW4gd29ybGQgdmlhICJub3JtYWwiIGV2YWx1YXRlSmF2
YVNjcmlwdAorICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNj
cmlwdDpAInZhciBmb28gPSAnYmFyJyIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNE
b25lID0gZmFsc2U7CisKKyAgICAvLyBWZXJpZnkgdGhhdCB2YWx1ZSBpcyB2aXNpYmxlIHdoZW4g
ZXZhbHVhdGluZyBpbiB0aGUgcGFnZUNvbnRlbnRXb3JsZAorICAgIFt3ZWJWaWV3IF9ldmFsdWF0
ZUphdmFTY3JpcHQ6QCJmb28iIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50V29y
bGQgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiYmFyIl0pOwor
ICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9IGZhbHNlOworCisg
ICAgLy8gVmVyaWZ5IHRoYXQgdmFsdWUgaXMgbm90IHZpc2libGUgd2hlbiBldmFsdWF0aW5nIGlu
IHRoZSBkZWZhdWx0Q2xpZW50V29ybGQKKyAgICBbd2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0
OkAiZm9vIiBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxl
dGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVD
VF9OVUxMKHJlc3VsdCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNE
b25lID0gZmFsc2U7CisKKyAgICAvLyBWZXJpZnkgdGhhdCB2YWx1ZSBpcyB2aXNpYmxlIHdoZW4g
Y2FsbGluZyBhIGZ1bmN0aW9uIGluIHRoZSBwYWdlQ29udGVudFdvcmxkCisgICAgW3dlYlZpZXcg
X2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpAInJldHVybiBmb28iIHdpdGhBcmd1bWVudHM6
bmlsIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50V29ybGQgY29tcGxldGlvbkhh
bmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9U
UlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVY
UEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiYmFyIl0pOworICAgICAgICBpc0Rv
bmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgLy8gVmVyaWZ5
IHRoYXQgdmFsdWUgaXMgbm90IHZpc2libGUgd2hlbiBjYWxsaW5nIGEgZnVuY3Rpb24gaW4gdGhl
IGRlZmF1bHRDbGllbnRXb3JsZAorICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVu
Y3Rpb246QCJyZXR1cm4gZm9vIiB3aXRoQXJndW1lbnRzOm5pbCBpbldvcmxkOl9XS0NvbnRlbnRX
b3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAg
IGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICAvLyBT
ZXQgYSB2YXJpYmFsZSB2YWx1ZSBpbiBhIG5hbWVkIHdvcmxkLgorICAgIFJldGFpblB0cjxfV0tD
b250ZW50V29ybGQ+IG5hbWVkV29ybGQgPSBbX1dLQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6
QCJOYW1lZFdvcmxkIl07CisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAInZhciBi
YXIgPSBiYXoiIGluV29ybGQ6bmFtZWRXb3JsZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKGlk
IHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsK
KyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKwor
ICAgIC8vIFNldCBhIGdsb2JhbCB2YXJpYmFsZSB2YWx1ZSBpbiBhIG5hbWVkIHdvcmxkIHZpYSBh
IGZ1bmN0aW9uIGNhbGwuCisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlv
bjpAIndpbmRvdy5iYXogPSBiYXQiIHdpdGhBcmd1bWVudHM6bmlsIGluV29ybGQ6bmFtZWRXb3Js
ZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsK
KyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNUX05VTEwoZXJyb3Ip
OworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9IGZhbHNlOwor
CisgICAgLy8gVmVyaWZ5IHRoZXkgYXJlIHRoZXJlIGluIHRoYXQgbmFtZWQgd29ybGQuCisgICAg
W3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAImJhciIgaW5Xb3JsZDpuYW1lZFdvcmxkLmdl
dCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0p
OworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImJheiJdKTsK
KyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKwor
ICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuYmF6IiBpbldvcmxkOm5h
bWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVy
cm9yKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5n
OkAiYmF0Il0pOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9
IGZhbHNlOworCisgICAgLy8gVmVyaWZ5IHRoZXkgYXJlbid0IHRoZXJlIGluIHRoZSBkZWZhdWx0
Q2xpZW50V29ybGQuCisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAImJhciIgaW5X
b3JsZDpfV0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVy
Ol4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1
bHQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9IGZhbHNl
OworCisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy5iYXoiIGluV29y
bGQ6X1dLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpe
KGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0
KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUgPSBmYWxzZTsK
KworICAgIC8vIFZlcmlmeSB0aGV5IGFyZW4ndCB0aGVyZSBpbiB0aGUgcGFnZUNvbnRlbnRXb3Js
ZC4KKyAgICBbd2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OkAiYmFyIiBpbldvcmxkOl9XS0Nv
bnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgW3dl
YlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy5iYXoiIGluV29ybGQ6X1dLQ29udGVu
dFdvcmxkLnBhZ2VDb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIGlz
RG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNEb25lID0gZmFsc2U7Cit9CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggNzRhZDU4MTI1MDE2YzAzMWY4
YzVlNGVkYmI5NDhlMTgwNWViNTUwZS4uMjAyODE0YTFlOWY3NzBlYzk2ZDlkYmI3ZDQ3ZWRhODJl
NTYwM2Y3YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQpA
QCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Q
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2Vi
S2l0L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLQ29udGVu
dFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+
CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAg
LTE4NSw3ICsxODYsNyBAQCAtIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOihOU1N0
cmluZyAqKXNjcmlwdCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcgogICAgICAgICAqZXJyb3JP
dXQgPSBuaWw7CiAKICAgICBSZXRhaW5QdHI8aWQ+IGV2YWxSZXN1bHQ7Ci0gICAgW3NlbGYgX2Nh
bGxBc3luY0Z1bmN0aW9uOnNjcmlwdCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBjb21wbGV0aW9u
SGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbc2VsZiBfY2Fs
bEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOnNjcmlwdCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50cyBp
bldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVy
OlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBldmFsUmVzdWx0ID0g
cmVzdWx0OwogICAgICAgICBpZiAoZXJyb3JPdXQpCiAgICAgICAgICAgICAqZXJyb3JPdXQgPSBb
ZXJyb3IgcmV0YWluXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387842</attachid>
            <date>2020-01-15 13:54:21 -0800</date>
            <delta_ts>2020-01-15 14:08:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206310-20200115135421.patch</filename>
            <type>text/plain</type>
            <size>68542</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0Mjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMyYmFhYTVkZDdmNjI1MTIz
NDc0Y2UwNmVjNTFiOWVkMzVlMDRjYzUuLjA1ODg1MDlkNjI3ZDljNmYwMDM2OGQ2MDlmMTIxMzhm
MDhiM2Q3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMjAtMDEtMTUgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS0NvbnRlbnRXb3JsZCBT
UEksIGFuZCB1c2UgaXQgaW4gSmF2YVNjcmlwdCBleGVjdXRpb24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzMTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKyAg
ICAgICAgCisgICAgICAgIF9XS0NvbnRlbnRXb3JsZCBpcyBhIFVJIFByb2Nlc3Mgd3JhcHBlciBm
b3IgYW4gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC4KKyAgICAgICAgTXVjaCBsaWtlIF9XS1Vz
ZXJDb250ZW50V29ybGQgaXMuIEJ1dCBkaWZmZXJlbnQgaW4gdGhhdDoKKyAgICAgICAgLSBJdHMg
QVBJcyBhcmUgbmFtZWQgZGlmZmVyZW50IHRoaW5ncworICAgICAgICAtIE9ubHkgb25lIHVuaXF1
ZSBpbnN0YW5jZSBwZXIgc3RyaW5nIG5hbWUKKyAgICAgICAgLSBJdCBpcyB1c2VkIHdpdGggZXZh
bHVhdGVKYXZhc2NyaXB0OiBhbmQgY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOiBpbnN0ZWFk
IG9mIFdLVXNlckNvbnRlbnRDb250cm9sbGVyLgorICAgICAgICAKKyAgICAgICAgQnV0IF9XS0Nv
bnRlbnRXb3JsZCBhbmQgX1dLVXNlckNvbnRlbnRXb3JsZCBkbyBoYXZlIHRvIHdvcmsgdG9nZXRo
ZXIgYSBsaXR0bGUgYml0IHRvIGF2b2lkIGNvbmZsaWN0cyBpbiB0aGUgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgCisgICAgICAgIFRoZSBuZXcgdmVyc2lvbnMgb2YgZXZhbHVhdGVKYXZhc2NyaXB0OiBh
bmQgY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOiBhcmUgYWxzbyBpbmNsdWRlZCwgYXMgd2Vs
bCBhcyBBUEkgdGVzdHMgZm9yIGFsbCB0aGUgbmV3IHN0dWZmLgorCisgICAgICAgICogU2hhcmVk
L0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgor
ICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRXb3JsZC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmNwcC4KKyAgICAgICAgKEFQSTo6Q29udGVudFdv
cmxkOjpzaGFyZWRXb3JsZFdpdGhOYW1lKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkOjpw
YWdlQ29udGVudFdvcmxkKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkOjpkZWZhdWx0Q2xp
ZW50V29ybGQpOgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZCk6Cisg
ICAgICAgIChBUEk6OkNvbnRlbnRXb3JsZDo6fkNvbnRlbnRXb3JsZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50
V29ybGQ6OmdlbmVyYXRlSWRlbnRpZmllcik6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50V29y
bGQ6OlVzZXJDb250ZW50V29ybGQpOgorICAgICAgICAoQVBJOjpnZW5lcmF0ZUlkZW50aWZpZXIp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5o
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmFzQXN5bmNGdW5jdGlvbjp3
aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRsZXI6aW5Xb3JsZDpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246d2l0
aEFyZ3VtZW50czppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVy
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUph
dmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTpj
b21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYWxs
QXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGQuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGQubW06IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmguCisg
ICAgICAgICgrW19XS0NvbnRlbnRXb3JsZCBwYWdlQ29udGVudFdvcmxkXSk6CisgICAgICAgICgr
W19XS0NvbnRlbnRXb3JsZCBkZWZhdWx0Q2xpZW50V29ybGRdKToKKyAgICAgICAgKCtbX1dLQ29u
dGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6XSk6CisgICAgICAgICgtW19XS0NvbnRlbnRXb3JsZCBk
ZWFsbG9jXSk6CisgICAgICAgICgtW19XS0NvbnRlbnRXb3JsZCBuYW1lXSk6CisgICAgICAgICgt
W19XS0NvbnRlbnRXb3JsZCBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tDb250ZW50V29ybGRJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6d29ybGRNYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OndvcmxkRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDEtMDkgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IFsgTWFjIHdrMiBdIGZhc3QvbWVkaWFz
dHJlYW0vY2FwdHVyZUluR1BVUHJvY2Vzcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDhiNzFmZTBkMmY1M2ZmMGQzODVmZGMyOGU5
YWFkODkyNzRmNWQwNDcuLjcyODEwOGEwNWZlZjJlMWIyOTY0OGZlZDhhMmIxMzQ4NDQyYjg2ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTEwOSw2ICsxMDksNyBAQCBw
dWJsaWM6CiAgICAgICAgIENvbnRlbnRSdWxlTGlzdCwKICAgICAgICAgQ29udGVudFJ1bGVMaXN0
QWN0aW9uLAogICAgICAgICBDb250ZW50UnVsZUxpc3RTdG9yZSwKKyAgICAgICAgQ29udGVudFdv
cmxkLAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIENvbnRleHRNZW51RWxlbWVu
dEluZm8sCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRl
eCBkYjY1ZTZmOWU0MDlkNDA3MTViNjk4ZWZiMjA2MDY5ZjllOWViYzBlLi40NDE0MDI4ZmVhMzhi
NjYwYmQ1NTI0NWJjMmJhMzU1NjIwNGJjOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tCkBAIC03MSw2ICs3MSw3IEBACiAjaW1wb3J0ICJfV0tBdHRhY2htZW50SW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJfV0tDb250
ZW50V29ybGRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJu
YWwuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0V4cGVy
aW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIgpAQCAtMzQwLDYgKzM0MSwxMCBAQCB2b2lkKiBPYmpl
Y3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0g
W19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5IGFsbG9jXTsKICAgICAgICAgYnJl
YWs7CiAKKyAgICBjYXNlIFR5cGU6OkNvbnRlbnRXb3JsZDoKKyAgICAgICAgd3JhcHBlciA9IFtf
V0tDb250ZW50V29ybGQgYWxsb2NdOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6
VXNlckNvbnRlbnRXb3JsZDoKICAgICAgICAgd3JhcHBlciA9IFtfV0tVc2VyQ29udGVudFdvcmxk
IGFsbG9jXTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzMDZjZDFlNjkzNTY2MWFk
NDFjMDYwOTI4NDhiZjlhZjM2YjFiNzI2Li5jNDQzMmU1NWRkOTZhNzQ5MmEyYzZkNWFhOWViZjZi
ODg4ZjBiNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTMyMSw2ICszMjEsNyBAQCBVSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdC5jcHAK
IFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0QWN0aW9uLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFdv
cmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUVsZW1lbnRJbmZvLmNwcAogVUlQ
cm9jZXNzL0FQSS9BUElEZWJ1Z2dhYmxlSW5mby5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJRXhwZXJp
bWVudGFsRmVhdHVyZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50V29ybGQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRXb3JsZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVhN2NkZGVmMDNkZTFlNzU0MDVjYmZmMDVkYTVj
Njg0OTcxMzlhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50V29ybGQuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCisKKyNpbmNsdWRl
ICJBUElVc2VyQ29udGVudFdvcmxkLmgiCisKK25hbWVzcGFjZSBBUEkgeworCitzdGF0aWMgSGFz
aE1hcDxXVEY6OlN0cmluZywgQ29udGVudFdvcmxkKj4mIHNoYXJlZFdvcmxkTWFwKCkKK3sKKyAg
ICBzdGF0aWMgSGFzaE1hcDxXVEY6OlN0cmluZywgQ29udGVudFdvcmxkKj4qIHNoYXJlZE1hcCA9
IG5ldyBIYXNoTWFwPFdURjo6U3RyaW5nLCBDb250ZW50V29ybGQqPjsKKyAgICByZXR1cm4gKnNo
YXJlZE1hcDsKK30KKworUmVmPENvbnRlbnRXb3JsZD4gQ29udGVudFdvcmxkOjpzaGFyZWRXb3Js
ZFdpdGhOYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQoreworICAgIGF1dG8gcmVzdWx0ID0g
c2hhcmVkV29ybGRNYXAoKS5hZGQobmFtZSwgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KSB7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBuZXcgQ29udGVudFdv
cmxkKG5hbWUpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKnJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpOworICAgIH0KKworICAgIHJldHVybiBtYWtlUmVmKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVl
KTsKK30KKworQ29udGVudFdvcmxkJiBDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKQor
eworICAgIHN0YXRpYyBDb250ZW50V29ybGQqIHdvcmxkOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAg
ICB3b3JsZCA9IG5ldyBDb250ZW50V29ybGQoKTsKKyAgICAgICAgd29ybGQtPm1faWRlbnRpZmll
ciA9IEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGRJZGVudGlmZXIoKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gKndvcmxkOworfQorCitDb250ZW50V29ybGQmIENvbnRlbnRXb3JsZDo6
ZGVmYXVsdENsaWVudFdvcmxkKCkKK3sKKyAgICBzdGF0aWMgQ29udGVudFdvcmxkKiB3b3JsZDsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyAgICAgICAgd29ybGQgPSBuZXcgQ29udGVudFdvcmxkKCk7CisgICAg
ICAgIHdvcmxkLT5tX2lkZW50aWZpZXIgPSBBUEk6OlVzZXJDb250ZW50V29ybGQ6OmdlbmVyYXRl
SWRlbnRpZmllcigpOworICAgIH0pOworICAgIHJldHVybiAqd29ybGQ7Cit9CisKK0NvbnRlbnRX
b3JsZDo6Q29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQorICAgIDogbV9pZGVu
dGlmaWVyKEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6Z2VuZXJhdGVJZGVudGlmaWVyKCkpCisgICAg
LCBtX25hbWUobmFtZSkKK3sKK30KKworQ29udGVudFdvcmxkOjpDb250ZW50V29ybGQoKQorewor
fQorCitDb250ZW50V29ybGQ6On5Db250ZW50V29ybGQoKQoreworICAgIGlmIChtX25hbWUuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFrZW4gPSBzaGFyZWRXb3JsZE1h
cCgpLnRha2UobV9uYW1lKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbiA9PSB0aGlz
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFdvcmxkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFdvcmxkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM1Y2JhNjRjMzA0MTFlMzNmZDZiZWEw
ODZmNGUyYTMxOWFiNTA3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50V29ybGQuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIENvbnRlbnRXb3JsZCBm
aW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkNvbnRlbnRX
b3JsZD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q29udGVudFdvcmxkPiBzaGFyZWRXb3Js
ZFdpdGhOYW1lKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgc3RhdGljIENvbnRlbnRXb3JsZCYg
cGFnZUNvbnRlbnRXb3JsZCgpOworICAgIHN0YXRpYyBDb250ZW50V29ybGQmIGRlZmF1bHRDbGll
bnRXb3JsZCgpOworCisgICAgdmlydHVhbCB+Q29udGVudFdvcmxkKCk7CisKKyAgICBjb25zdCBX
VEY6OlN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIHVpbnQ2NF90
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHN0ZDo6
cGFpcjx1aW50NjRfdCwgV1RGOjpTdHJpbmc+IHdvcmxkRGF0YSgpIHsgcmV0dXJuIHsgbV9pZGVu
dGlmaWVyLCBtX25hbWUgfTsgfQorCitwcml2YXRlOgorICAgIENvbnRlbnRXb3JsZChjb25zdCBX
VEY6OlN0cmluZyYpOworICAgIENvbnRlbnRXb3JsZCgpOworCisgICAgdWludDY0X3QgbV9pZGVu
dGlmaWVyOworICAgIFdURjo6U3RyaW5nIG1fbmFtZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
V29ybGQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29y
bGQuY3BwCmluZGV4IDRkYWRmYmZiZDJkZTIxMDViNDk3MWE2NWZiNzhjMjAyZDExODAxOTYuLmE4
NWExNWIzYWU2NWRiNGEyZDJhYjZlZGMxZmY5NmVjOTE4MDUzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAKQEAgLTI4LDEx
ICsyOCw5IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1zdGF0aWMgY29uc3QgdWludDY0X3Qgbm9y
bWFsV29ybGRJZGVudGlmZXIgPSAxOwotCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVJZGVudGlm
aWVyKCkKK3VpbnQ2NF90IFVzZXJDb250ZW50V29ybGQ6OmdlbmVyYXRlSWRlbnRpZmllcigpCiB7
Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIgPSBub3JtYWxXb3JsZElkZW50aWZlcjsK
KyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IG5vcm1hbFdvcmxkSWRlbnRpZmVyKCk7
CiAKICAgICByZXR1cm4gKytpZGVudGlmaWVyOwogfQpAQCAtNTUsNyArNTMsNyBAQCBVc2VyQ29u
dGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQogfQog
CiBVc2VyQ29udGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKEZvck5vcm1hbFdvcmxkT25seSkK
LSAgICA6IG1faWRlbnRpZmllcihub3JtYWxXb3JsZElkZW50aWZlcikKKyAgICA6IG1faWRlbnRp
Zmllcihub3JtYWxXb3JsZElkZW50aWZlcigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaAppbmRleCA4NDBmZTFjMzAzZTc2
M2ZkNmUwZWVhNWRlMTFiNGE5OWFlZDRiNjRjLi5mZTlmYzU0OGJkZWE0YzZmNTE4NzE3ZGYyNTM1
YWM2MzY1YjFkYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlckNvbnRlbnRXb3JsZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
c2VyQ29udGVudFdvcmxkLmgKQEAgLTMxLDYgKzMxLDggQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAK
K2NsYXNzIENvbnRlbnRXb3JsZDsKKwogY2xhc3MgVXNlckNvbnRlbnRXb3JsZCBmaW5hbCA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50V29ybGQ+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFVzZXJDb250ZW50V29ybGQ+IHdvcmxkV2l0aE5h
bWUoY29uc3QgV1RGOjpTdHJpbmcmKTsKQEAgLTQxLDEyICs0MywxOCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB1
aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKKyAg
ICBzdGF0aWMgdWludDY0X3Qgbm9ybWFsV29ybGRJZGVudGlmZXIoKSB7IHJldHVybiAxOyB9Owor
CiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDb250ZW50V29ybGQ7CisKICAgICBVc2VyQ29u
dGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAKICAgICBlbnVtIGNsYXNzIEZvck5vcm1h
bFdvcmxkT25seSB7IE5vcm1hbFdvcmxkIH07CiAgICAgVXNlckNvbnRlbnRXb3JsZChGb3JOb3Jt
YWxXb3JsZE9ubHkpOwogCisgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigp
OworCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIFdURjo6U3RyaW5nIG1fbmFtZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpp
bmRleCBkMzI5ZDFlNmNlNGUwOGUwNDQyMzY3ZGNjNTA5OTQ3YzdiYmViZjlkLi43ZDRkNDFiOTk1
MDgwNjg0MzAxZjA2ZDEzOTdiYjdlNjc3Yzk2NmUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTkxLDYgKzkxLDcgQEAKICNpbXBvcnQg
IldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oIgogI2ltcG9ydCAiV2ViVmlld0ltcGwuaCIKICNp
bXBvcnQgIl9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0Nv
bnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVn
YXRlLmgiCiAjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFu
ZGxlSW50ZXJuYWwuaCIKQEAgLTgzMyw3ICs4MzQsNyBAQCBzdGF0aWMgV0tFcnJvckNvZGUgY2Fs
bGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogCiAtICh2
b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5j
RnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxl
dGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFT
Y3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpu
aWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRs
ZXIgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZF07CiB9CiAKIHN0YXRp
YyBib29sIHZhbGlkYXRlQXJndW1lbnQoaWQgYXJndW1lbnQpCkBAIC04NzAsNyArODcxLDcgQEAg
c3RhdGljIGJvb2wgdmFsaWRhdGVBcmd1bWVudChpZCBhcmd1bWVudCkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLS0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2Ny
aXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhc0FzeW5jRnVuY3Rpb24gd2l0aEFyZ3Vt
ZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBmb3JjZVVzZXJH
ZXN0dXJlOihCT09MKWZvcmNlVXNlckdlc3R1cmUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9ldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wp
YXNBc3luY0Z1bmN0aW9uIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBp
ZD4gKilhcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVzZXJHZXN0dXJlIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
ciBpbldvcmxkOihfV0tDb250ZW50V29ybGQgKil3b3JsZAogewogICAgIGF1dG8gaGFuZGxlciA9
IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsKIApAQCAtOTA2LDggKzkwNyw4IEBA
IC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5n
IGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAg
IF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMgeyBqYXZhU2NyaXB0U3RyaW5nLCAhIWFzQXN5bmNGdW5jdGlvbiwgV1RGTW92ZShh
cmd1bWVudHNNYXApLCAhIWZvcmNlVXNlckdlc3R1cmUgfSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6
RXJyb3IgZXJyb3JDb2RlKSB7CisgICAgCisgICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHsgamF2YVNj
cmlwdFN0cmluZywgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzTWFwKSwgISFm
b3JjZVVzZXJHZXN0dXJlIH0sICp3b3JsZC0+X2NvbnRlbnRXb3JsZC5nZXQoKSwgW2hhbmRsZXJd
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFs
dWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CiAgICAgICAgIGlmICghaGFuZGxlcikKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMTQ2Nyw2ICsxNDY4LDE2IEBAIFdFQkNPUkVfUFJJVkFU
RV9DT01NQU5EKHBhc3RlQW5kTWF0Y2hTdHlsZSkKIAogI3VuZGVmIFdFQkNPUkVfUFJJVkFURV9D
T01NQU5ECiAKKy0gKHZvaWQpX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjooTlNTdHJpbmcg
KilqYXZhU2NyaXB0U3RyaW5nIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAq
LCBpZD4gKilhcmd1bWVudHMgaW5Xb3JsZDooX1dLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3Ry
aW5nIGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgZm9yY2VVc2Vy
R2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIgaW5Xb3JsZDpj
b250ZW50V29ybGRdOworfQorCistICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5n
ICopamF2YVNjcmlwdFN0cmluZyBpbldvcmxkOihfV0tDb250ZW50V29ybGQgKiljb250ZW50V29y
bGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5n
IGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllF
UyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlciBpbldvcmxkOmNvbnRlbnRXb3Js
ZF07Cit9CisKIC0gKHZvaWQpX3RvZ2dsZVN0cmlrZVRocm91Z2g6KGlkKXNlbmRlcgogewogICAg
IF9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQoInN0cmlrZXRocm91Z2giX3MpOwpAQCAtMjAwNiwx
MSArMjAxNyw2IEBAIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihX
S1NuYXBzaG90Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uCiAgICAgW3NlbGYgY3JlYXRlUERG
V2l0aENvbmZpZ3VyYXRpb246cGRmQ29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjpjb21w
bGV0aW9uSGFuZGxlcl07CiB9CiAKLS0gKHZvaWQpX2NhbGxBc3luY0Z1bmN0aW9uOihOU1N0cmlu
ZyAqKWphdmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5n
ICosIGlkPiAqKWFyZ3VtZW50cyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJy
b3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFT
Y3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246WUVTIHdpdGhBcmd1bWVudHM6
YXJndW1lbnRzIGZvcmNlVXNlckdlc3R1cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRp
b25IYW5kbGVyXTsKLX0KLQogLSAoTlNEYXRhICopX3Nlc3Npb25TdGF0ZURhdGEKIHsKICAgICAv
LyBGSVhNRTogVGhpcyBzaG91bGQgbm90IHVzZSB0aGUgbGVnYWN5IHNlc3Npb24gc3RhdGUgZW5j
b2Rlci4KQEAgLTIxNTMsNyArMjE1OSw3IEBAIC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9pZChe
KShCT09MKSljb21wbGV0aW9uSGFuZGxlcgogCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRX
aXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAg
ICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0
aW9uOk5PIHdpdGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlvbkhh
bmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6
amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9y
Y2VVc2VyR2VzdHVyZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlciBpbldv
cmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkXTsKIH0KIAogLSAodm9pZClfdXBk
YXRlV2Vic2l0ZVBvbGljaWVzOihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IGQzZmU3MDcyMGE3M2ZhMTFjNmJiMjcyMjEyMzY1NDA2YjFjMjZlNjQuLjZh
ZTYxY2M0ZTkzZjNkMDNiMGM0ZjgwZDBmYmVjNTQxYjFlYWY4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTA2
LDYgKzEwNiw3IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkg
ewogQGNsYXNzIFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlOwogQGNsYXNzIFdLV2VicGFnZVByZWZl
cmVuY2VzOwogQGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q7CitAY2xhc3MgX1dLQ29udGVu
dFdvcmxkOwogQGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwogQGNsYXNzIF9XS0hpdFRlc3RSZXN1bHQ7
CiBAY2xhc3MgX1dLSW5zcGVjdG9yOwpAQCAtMzE4LDcgKzMxOSw1OCBAQCB0eXBlZGVmIE5TX09Q
VElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIAogLSAodm9pZClfdGFrZVBERlNuYXBz
aG90V2l0aENvbmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RD
b25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKnBkZlNuYXBz
aG90RGF0YSwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKLS0gKHZvaWQpX2NhbGxB
c3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3VtZW50czoo
TlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKy8qIEBh
YnN0cmFjdCBDYWxscyB0aGUgZ2l2ZW4gSmF2YVNjcmlwdCBzdHJpbmcgYXMgYSBmdW5jdGlvbiwg
cGFzc2luZyB0aGUgZ2l2ZW4gbmFtZWQgYXJndW1lbnRzIHRvIHRoYXQgZnVuY3Rpb24uCisgQHBh
cmFtIGphdmFTY3JpcHRTdHJpbmcgVGhlIEphdmFTY3JpcHQgc3RyaW5nIHRvIGNhbGwgYXMgYSBm
dW5jdGlvbi4KKyBAcGFyYW0gYXJndW1lbnRzIEEgZGljdGlvbmFyeSByZXByZXNlbnRpbmcgdGhl
IGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGNhbGwuCisgQHBhcmFtIGNv
bnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gY2FsbCB0aGUgSmF2YVNj
cmlwdCBmdW5jdGlvbi4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZv
a2Ugd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBjYWxsLCBvciB3aXRoIHRo
ZSBhc3luY2hyb25vdXMgcmVzb2x1dGlvbiBvZiB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUu
CisgQGRpc2N1c3Npb24gVGhlIEphdmFTY3JpcHQgc3RyaW5nIGlzIHRyZWF0ZWQgYXMgYW4gYW5v
bnltb3VzIEphdmFTY3JpcHQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHdpdGggbmFtZWQg
YXJndW1lbnRzLgorIFBhc3MgaW4gSmF2YVNjcmlwdCBzdHJpbmcgZm9ybWF0dGVkIGZvciBldmFs
dWF0aW9uLCBub3QgYXMgb25lIG9mIHRoZSB2YXJpYW50cyBvZiBmdW5jdGlvbiBjYWxsIGF2YWls
YWJsZSBpbiBKYXZhU2NyaXB0LgorIEZvciBleGFtcGxlOgorICAgICByZXR1cm4geCA/IHkgOiB6
OworCisgVGhlIGFyZ3VtZW50cyBkaWN0aW9uYXJ5IHN1cHBsaWVzIHRoZSB2YWx1ZXMgZm9yIHRo
b3NlIGFyZ3VtZW50cyB3aGljaCBhcmUgc2VyaWFsaXplZCBpbnRvIEphdmFTY3JpcHQgZXF1aXZh
bGVudHMuCisgRm9yIGV4YW1wbGU6CisgICAgIEB7IEAieCIgOiBAWUVTLCBAInkiIDogQDEsIEAi
eiIgOiBAMiB9OworCisgQ29tYmluaW5nIHRoZSBhYm92ZSBhcmd1bWVudHMgZGljdGlvbmFyeSB3
aXRoIHRoZSBhYm92ZSBKYXZhU2NyaXB0IHN0cmluZywgYSBmdW5jdGlvbiB3aXRoIHRoZSBhcmd1
bWVudHMgIngiLCAieSIsIGFuZCAieiIgaXMgY2FsbGVkIHdpdGggdmFsdWVzIFlFUywgMSwgYW5k
IDIgcmVzcGVjdGl2ZWx5LgorCisgQWxsb3dlZCBhcmd1bWVudCB0eXBlcyBhcmU6CisgTlNOdW1i
ZXIsIE5TU3RyaW5nLCBOU0RhdGUsIE5TQXJyYXksIE5TRGljdGlvbmFyeSwgYW5kIE5TTnVsbC4K
KyBBbnkgTlNBcnJheSBvciBOU0RpY3Rpb25hcnkgY29udGFpbmVycyBjYW4gb25seSBjb250YWlu
IG9iamVjdHMgb2YgdGhvc2UgdHlwZXMuCisKKyBObyBtYXR0ZXIgd2hpY2ggV0tDb250ZW50V29y
bGQgeW91IHVzZSB0byBjYWxsIHlvdXIgSmF2YVNjcmlwdCBmdW5jdGlvbiwgeW91IGNhbiBtYWtl
IGNoYW5nZXMgdG8gdGhlIHVuZGVybHlpbmcgd2ViIGNvbnRlbnQuIChlLmcuIHRoZSBEb2N1bWVu
dCBhbmQgaXRzIERPTSBzdHJ1Y3R1cmUpCisgU3VjaCBjaGFuZ2VzIHdpbGwgYmUgdmlzaWJsZSB0
byBzY3JpcHQgZXhlY3V0aW5nIGluIGFsbCBXS0NvbnRlbnRXb3JsZHMuCisgQ2FsbGluZyB5b3Vy
IEphdmFTY3JpcHQgZnVuY3Rpb24gY2FuIGxlYXZlIGJlaGluZCBvdGhlciBjaGFuZ2VzIHRvIGds
b2JhbCBzdGF0ZSB2aXNpYmlsZSB0byBKYXZhU2NyaXB0LiAoZS5nLiBgd2luZG93Lm15VmFyaWFi
bGUgPSAxO2ApCisgVGhvc2UgY2hhbmdlcyB3aWxsIG9ubHkgYmUgdmlzaWJpbGUgdG8gc2NyaXB0
cyBleGVjdXRlZCBpbiB0aGUgc2FtZSBXS0NvbnRlbnRXb3JsZC4KKworIFlvdXIgY29tcGxldGlv
biBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB5b3VyIEph
dmFTY3JpcHQgZnVuY3Rpb24uCisgSWYgeW91ciBKYXZhU2NyaXB0IGRvZXMgbm90IGV4cGxpY2l0
bHkgcmV0dXJuIGFueSB2YWx1ZSwgdGhhdCB1bmRlZmluZWQgcmVzdWx0IG1hbmlmZXN0cyBhcyBu
aWwgYmVpbmcgcGFzc2VkIHRvIHlvdXIgY29tcGxldGlvbiBoYW5kbGVyLgorIElmIHlvdXIgSmF2
YVNjcmlwdCByZXR1cm5zIG51bGwsIHRoYXQgcmVzdWx0IG1hbmlmZXN0cyBhcyBOU051bGwgYmVp
bmcgcGFzc2VkIHRvIHlvdXIgY29tcGxldGlvbiBoYW5kbGVyLgorCisgSmF2YVNjcmlwdCBoYXMg
dGhlIGNvbmNlcHQgb2YgYSAidGhlbmFibGUiIG9iamVjdCwgd2hpY2ggaXMgYW55IEphdmFTY3Jp
cHQgb2JqZWN0IHRoYXQgaGFzIGEgY2FsbGFibGUgInRoZW4iIHByb3BlcnR5LgorIFRoZSBtb3N0
IHdlbGwga25vd24gZXhhbXBsZSBvZiBhICJ0aGVuYWJsZSIgb2JqZWN0IGlzIGEgSmF2YVNjcmlw
dCBwcm9taXNlLgorIElmIHlvdXIgSmF2YVNjcmlwdCByZXR1cm5zIGEgInRoZW5hYmxlIiBvYmpl
Y3QgV2ViS2l0IHdpbGwgY2FsbCAidGhlbiIgb24gdGhlIHJlc3VsdGluZyBvYmplY3QgYW5kIHdh
aXQgZm9yIGl0IHRvIGJlIHJlc29sdmVkLgorCisgSWYgdGhlIG9iamVjdCBjYWxscyAiZnVsZmls
bCIsIHlvdXIgY29tcGxldGlvbiBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHJlc3Vs
dC4KKyBJZiB0aGUgb2JqZWN0IGNhbGxzICJyZWplY3QiLCB5b3VyIGNvbXBsZXRpb24gaGFuZGxl
ciB3aWxsIGJlIGNhbGxlZCB3aXRoIGEgV0tFcnJvckphdmFTY3JpcHRBc3luY0Z1bmN0aW9uUmVz
dWx0UmVqZWN0ZWQgZXJyb3IgY29udGFpbmluZyB0aGUgcmVqZWN0IHJlYXNvbiBpbiB0aGUgdXNl
ckluZm8gZGljdGlvbmFyeS4KKyBJZiB0aGUgb2JqZWN0IGlzIGdhcmJhZ2UgY29sbGVjdGVkIGJl
Zm9yZSBpdCBpcyByZXNvbHZlZCwgeW91ciBjb21wbGV0aW9uIGhhbmRsZXIgd2lsbCBiZSBjYWxs
ZWQgd2l0aCBhbiBlcnJvciBpbmRpY2F0aW5nIHRoYXQgaXQgd2lsbCBuZXZlciBiZSByZXNvbHZl
ZC4KKyovCistICh2b2lkKV9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246KE5TU3RyaW5nICop
amF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwg
aWQ+ICopYXJndW1lbnRzIGluV29ybGQ6KF9XS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9u
SGFuZGxlcjsKKworLyogQGFic3RyYWN0IEV2YWx1YXRlcyB0aGUgZ2l2ZW4gSmF2YVNjcmlwdCBz
dHJpbmcuCisgQHBhcmFtIGphdmFTY3JpcHRTdHJpbmcgVGhlIEphdmFTY3JpcHQgc3RyaW5nIHRv
IGV2YWx1YXRlLgorIEBwYXJhbSBjb250ZW50V29ybGQgVGhlIFdLQ29udGVudFdvcmxkIGluIHdo
aWNoIHRvIGV2YWx1YXRlIHRoZSBKYXZhU2NyaXB0IHN0cmluZy4KKyBAcGFyYW0gY29tcGxldGlv
bkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiBzY3JpcHQgZXZhbHVhdGlvbiBjb21wbGV0
ZXMgb3IgZmFpbHMuCisgQGRpc2N1c3Npb24gVGhlIGNvbXBsZXRpb25IYW5kbGVyIGlzIHBhc3Nl
ZCB0aGUgcmVzdWx0IG9mIHRoZSBzY3JpcHQgZXZhbHVhdGlvbiBvciBhbiBlcnJvci4KKyBObyBt
YXR0ZXIgd2hpY2ggV0tDb250ZW50V29ybGQgeW91IHVzZSB0byBldmFsdWF0ZSB5b3VyIEphdmFT
Y3JpcHQgc3RyaW5nLCB5b3UgY2FuIG1ha2UgY2hhbmdlcyB0byB0aGUgdW5kZXJseWluZyB3ZWIg
Y29udGVudC4gKGUuZy4gdGhlIERvY3VtZW50IGFuZCBpdHMgRE9NIHN0cnVjdHVyZSkKKyBTdWNo
IGNoYW5nZXMgd2lsbCBiZSB2aXNpYmxlIHRvIHNjcmlwdCBleGVjdXRpbmcgaW4gYWxsIFdLQ29u
dGVudFdvcmxkcy4KKyBFdmFsdWF0aW5nIHlvdXIgSmF2YVNjcmlwdCBzdHJpbmcgY2FuIGxlYXZl
IGJlaGluZCBvdGhlciBjaGFuZ2VzIHRvIGdsb2JhbCBzdGF0ZSB2aXNpYmlsZSB0byBKYXZhU2Ny
aXB0LiAoZS5nLiBgd2luZG93Lm15VmFyaWFibGUgPSAxO2ApCisgVGhvc2UgY2hhbmdlcyB3aWxs
IG9ubHkgYmUgdmlzaWJpbGUgdG8gc2NyaXB0cyBleGVjdXRlZCBpbiB0aGUgc2FtZSBXS0NvbnRl
bnRXb3JsZC4KKyBldmFsdWF0ZUphdmFTY3JpcHQ6IGlzIHRoZSBiZXN0IHdheSB0byBzZXQgdXAg
Z2xvYmFsIHN0YXRlIGZvciBmdXR1cmUgSmF2YVNjcmlwdCBleGVjdXRpb24gaW4gYSBnaXZlbiB3
b3JsZC4gKGUuZy4gSW1wb3J0aW5nIGxpYnJhcmllcy91dGlsaXRpZXMgdGhhdCBmdXR1cmUgSmF2
YVNjcmlwdCBleGVjdXRpb24gd2lsbCByZWx5IG9uKQorIE9uY2UgeW91ciBnbG9iYWwgc3RhdGUg
aXMgc2V0IHVwLCBjb25zaWRlciB1c2luZyBjYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246IGZv
ciBtb3JlIGZsZXhpYmxlIGludGVyYWN0aW9uIHdpdGggdGhlIEphdmFTY3JpcHQgcHJvZ3JhbW1p
bmcgbW9kZWwuCisqLworLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWph
dmFTY3JpcHRTdHJpbmcgaW5Xb3JsZDooX1dLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25I
YW5kbGVyOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tDb250ZW50V29ybGQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tDb250ZW50V29ybGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDI1YWQ2ZjIyM2UyZGVmYTJkNmYw
NWE2YWQzY2U5OWQzZjFkMjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05O
VUxMX0JFR0lOCisKKy8qIQorQSBXS0NvbnRlbnRXb3JsZCBvYmplY3QgYWxsb3dzIHlvdSB0byBz
ZXBlcmF0ZSB5b3VyIGFwcGxpY2F0aW9uJ3MgaW50ZXJhY3Rpb24gd2l0aCBjb250ZW50IGRpc3Bs
YXllZCBpbiBhIFdLV2ViVmlldyBpbnRvIGRpZmZlcmVudCByb2xlcyB0aGF0IGNhbm5vdCBpbnRl
cmZlcmUgd2l0aCBvbmUgYW5vdGhlci4KKyovCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dLQ29udGVudFdvcmxkIDog
TlNPYmplY3QKKworKyAoaW5zdGFuY2V0eXBlKW5ldyBOU19VTkFWQUlMQUJMRTsKKy0gKGluc3Rh
bmNldHlwZSlpbml0IE5TX1VOQVZBSUxBQkxFOworCisvKiEgQGFic3RyYWN0IFJldHJpZXZlIHRo
ZSBtYWluIHdvcmxkIHRoYXQgcGFnZSBjb250ZW50IGl0c2VsZiB1c2VzLgorIEBkaXNjdXNzaW9u
IFdoZW4gaW50ZXJhY3Rpbmcgd2l0aCBwYWdlIGNvbnRlbnQgaW4gYSBXS1dlYlZpZXcgdXNpbmcg
dGhlIHBhZ2UgY29udGVudCB3b3JsZCB5b3UgY2FuIGRpc3J1cHQgdGhlIG9wZXJhdGlvbiBvZiBw
YWdlIGNvbnRlbnQgKGUuZy4gYnkgY29uZmxpY3Rpbmcgd2l0aCB2YXJpYWJsZSBuYW1lcyBpbiBK
YXZhU2NyaXB0IHNldCBieSB0aGUgd2ViIHBhZ2UgY29udGVudCBpdHNlbGYpLgorKi8KK0Bwcm9w
ZXJ0eSAoY2xhc3MsIG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0NvbnRlbnRXb3JsZCAqcGFnZUNv
bnRlbnRXb3JsZDsKKworLyohIEBhYnN0cmFjdCBSZXRyaWV2ZSB0aGUgZGVmYXVsdCBub24tcGFn
ZSBjb250ZW50IHdvcmxkIGZvciBBUEkgY2xpZW50cy4KKyBAZGlzY3Vzc2lvbiBJbnRlcmFjdGlu
ZyB3aXRoIHBhZ2UgY29udGVudCBpbiBhIFdLV2ViVmlldyB1c2luZyBhIGNvbnRlbnQgd29ybGQg
ZGlmZmVyZW50IGZyb20gdGhlIHBhZ2UgY29udGVudCB3b3JsZCBlbmFibGVzIHVzaW5nIERPTSBh
bmQgYnVpbHQtaW4gRE9NIEFQSXMKKyB3aXRob3V0IGNvbmZsaWN0aW5nIHdpdGggb3RoZXIgYXNw
ZWN0cyBvZiB0aGUgcGFnZSBjb250ZW50IChlLmcuIEphdmFTY3JpcHQgZnJvbSB0aGUgd2ViIHBh
Z2UgY29udGVudCBpdHNlbGYpCisqLworQHByb3BlcnR5IChjbGFzcywgbm9uYXRvbWljLCByZWFk
b25seSkgX1dLQ29udGVudFdvcmxkICpkZWZhdWx0Q2xpZW50V29ybGQ7CisKKy8qISBAYWJzdHJh
Y3QgUmV0cmlldmVzIGEgbmFtZWQgY29udGVudCB3b3JsZCBmb3IgQVBJIHVzZXJzLgorIEBwYXJh
bSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBXS0NvbnRlbnRXb3JsZCB0byByZXRyaWV2ZS4KKyBAZGlz
Y3Vzc2lvbiBCeSBpbnRlcmFjdGluZyB3aXRoIHBhZ2UgY29udGVudCBpbiBhIFdLV2ViVmlldyB1
c2luZyBhIG5vbi1tYWluIGNvbnRlbnQgd29ybGQgeW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBE
T00gYW5kIGJ1aWx0LWluIERPTSBBUElzCisgd2l0aG91dCBjb25mbGljdGluZyB3aXRoIG90aGVy
IGFzcGVjdHMgb2YgdGhlIHBhZ2UgY29udGVudCAoZS5nLiBKYXZhU2NyaXB0IGZyb20gdGhlIHdl
YiBjb250ZW50IGl0c2VsZikKKyBSZXBlYXRlZCBjYWxscyB3aXRoIHRoZSBzYW1lIG5hbWUgd2ls
bCByZXRyaWV2ZSB0aGUgc2FtZSBXS0NvbnRlbnRXb3JsZCBpbnN0YW5jZS4KKyBFYWNoIG5hbWVk
IGNvbnRlbnQgd29ybGQgaXMgZGlzdGluY3QgZnJvbSBhbGwgb3RoZXIgbmFtZWQgY29udGVudCB3
b3JsZHMsIHRoZSBkZWZhdWx0Q2xpZW50V29ybGQsIGFuZCB0aGUgcGFnZUNvbnRlbnRXb3JsZC4K
KyBUaGUgbmFtZSBjYW4gYmUgdXNlZCB0byBrZWVwIGRpc3RpbmN0IHdvcmxkcyBpZGVudGlmaWFi
bGUgYW55d2hlcmUgYSB3b3JsZCBtaWdodCBiZSBzdXJmYWNlZCBpbiBhIHVzZXIgaW50ZXJmYWNl
LgorIEZvciBleGFtcGxlLCB0aGUgZGlmZmVyZW50IHdvcmxkcyB1c2VkIGluIHlvdXIgYXBwbGlj
YXRpb24gd2lsbCBiZSBzdXJmYWNlZCBieSBuYW1lIGluIHRoZSBXZWJLaXQgV2ViIEluc3BlY3Rv
ci4KKyovCisrIChfV0tDb250ZW50V29ybGQgKil3b3JsZFdpdGhOYW1lOihOU1N0cmluZyAqKW5h
bWUgTlNfUkVGSU5FRF9GT1JfU1dJRlQ7CisKKy8qISBAYWJzdHJhY3QgVGhlIG5hbWUgb2YgdGhl
IFdLQ29udGVudFdvcmxkCisgQGRpc2N1c3Npb24gVGhlIHBhZ2VDb250ZW50V29ybGQgYW5kIGRl
ZmF1bHRDbGllbnRXb3JsZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGEgbmlsIG5hbWUuCisgQWxsIG90
aGVyIGluc3RhbmNlcyB3aWxsIGhhdmUgdGhlIG5vbi1uaWwgbmFtZSB0aGV5IHdlcmUgYWNjZXNz
ZWQgYnkuCisqLworQHByb3BlcnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCByZWFkb25seSwgY29w
eSkgTlNTdHJpbmcgKm5hbWU7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxk
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZC5t
bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5lYTM2NWYyNWM1YjY0N2E4OTA4M2VhYzJhNjEwMWY4YjI5NDViZmJhCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0Nv
bnRlbnRXb3JsZC5tbQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIw
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29u
ZmlnLmgiCisjaW1wb3J0ICJfV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgorCitAaW1wbGVtZW50
YXRpb24gX1dLQ29udGVudFdvcmxkCisKKysgKF9XS0NvbnRlbnRXb3JsZCAqKXBhZ2VDb250ZW50
V29ybGQKK3sKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRl
bnRXb3JsZCgpKTsKK30KKworKyAoX1dLQ29udGVudFdvcmxkICopZGVmYXVsdENsaWVudFdvcmxk
Cit7CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50V29ybGQ6OmRlZmF1bHRDbGllbnRX
b3JsZCgpKTsKK30KKworKyAoX1dLQ29udGVudFdvcmxkICopd29ybGRXaXRoTmFtZTooTlNTdHJp
bmcgKiluYW1lCit7CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50V29ybGQ6OnNoYXJl
ZFdvcmxkV2l0aE5hbWUobmFtZSkpOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfY29u
dGVudFdvcmxkLT5+Q29udGVudFdvcmxkKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisK
Ky0gKE5TU3RyaW5nICopbmFtZQoreworICAgIGlmIChfY29udGVudFdvcmxkLT5uYW1lKCkuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gX2NvbnRlbnRXb3JsZC0+
bmFtZSgpOworfQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRp
b24KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9jb250ZW50
V29ybGQ7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZEludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDgwMGMx
MjQxMzI0Y2EyZDVhM2I5ODUyMTlmZjJkZWRhNzNlYjg4ZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGRJbnRlcm5hbC5o
CkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tDb250ZW50V29ybGQu
aCIKKworI2ltcG9ydCAiQVBJQ29udGVudFdvcmxkLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgor
I2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0
ZW1wbGF0ZTw+IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6Q29udGVudFdvcmxkPiB7CisgICAg
dXNpbmcgV3JhcHBlckNsYXNzID0gX1dLQ29udGVudFdvcmxkOworfTsKKworfQorCitAaW50ZXJm
YWNlIF9XS0NvbnRlbnRXb3JsZCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpP
YmplY3RTdG9yYWdlPEFQSTo6Q29udGVudFdvcmxkPiBfY29udGVudFdvcmxkOworfQorQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNw
cAppbmRleCBmOWRhMWJiNTk0NWRkMGFiOGRjZGUxZmVlNjBjMTgwMWE0MjQ1NTNkLi5mZjg2ZWNm
MGY5NjZjNGY5NzQxYTJhMzZhMjhjM2RmYTE0MDJmNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjMsNiArMjMsNyBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKIAorI2lu
Y2x1ZGUgIkFQSUNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRl
ICJBUElOYXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgi
CkBAIC0zNzQyLDcgKzM3NDMsOCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlw
dF9pbl93b3JsZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhcgogICAgIGdfcmV0
dXJuX2lmX2ZhaWwod29ybGROYW1lKTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9w
dEdSZWYoZ190YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRh
KSk7Ci0gICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZCh7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1
ZSB9LCBTdHJpbmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0o
QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9y
KSB7CisgICAgYXV0byB3b3JsZCA9IEFQSTo6Q29udGVudFdvcmxkOjpzaGFyZWRXb3JsZFdpdGhO
YW1lKFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5y
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCh7IFN0cmluZzo6ZnJvbVVURjgoc2Ny
aXB0KSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCB3b3JsZC5nZXQoKSwgW3Rhc2sgPSBX
VEZNb3ZlKHRhc2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlw
dFZhbHVlLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxi
YWNrQmFzZTo6RXJyb3IpIHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRh
aWxzOwogICAgICAgICBpZiAoZGV0YWlscykKICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMg
PSAqZGV0YWlsczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRl
eCBkMTBlN2I1YzEyNDZiZGY5YmIwM2VmYWVjMDRkMTAxNjQyYTNjMDkxLi5kMDE0MTNkYzU1MjY0
Mzk3ZGNmNmQ0YmFjZTdjMWZhODUzMjUxNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyUHJveHkuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5jbHVkZSAi
QVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2lu
Y2x1ZGUgIkFQSVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggNjcxZmIyOTJkMjAxOTYw
MzM3YjAzODNlZDA3YjI3ZmRiOTdlMmM0ZC4uNjc2ZDIzN2MzMzk2Zjk0MTZjNjQ5YTJkMGIyNWRl
ZTkyNzIxMDM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC00
MSw2ICs0MSw3IEBACiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEFycmF5OwogY2xhc3MgQ29udGVu
dFJ1bGVMaXN0OworY2xhc3MgQ29udGVudFdvcmxkOwogY2xhc3MgVXNlckNvbnRlbnRXb3JsZDsK
IGNsYXNzIFVzZXJTY3JpcHQ7CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGVmNDVhOGMyOWQ5YmY0YWE1OGZhYjhkMjQ2
NzczMzAyZTNmZjhhOTcuLmUxNjNkOGVhOTQzNDc4OTVkMDMzODgxMDk0NzU3NmZlYTA0NzVmMjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjksNiArMjks
NyBAQAogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElBdHRhY2htZW50Lmgi
CisjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJQ29udGV4dE1lbnVD
bGllbnQuaCIKICNpbmNsdWRlICJBUElGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRmluZE1h
dGNoZXNDbGllbnQuaCIKQEAgLTM4NjEsMTAgKzM4NjIsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycywgV1RGOjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4m
JiBjYWxsYmFja0Z1bmN0aW9uKQogewotICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKFdURk1vdmUocGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CisgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV1RG
TW92ZShwYXJhbWV0ZXJzKSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSwg
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYm
IHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5j
dGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9u
RGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQs
IFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFs
PEV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQogewogICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHN1cHBvcnQgcnVubmlu
ZyBzY3JpcHQgaW4gYSBXZWJWaWV3IHdoaWNoIGhhcyBub3QgZG9uZSBhbnkgbG9hZHMgeWV0cy4K
ICAgICBsYXVuY2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CkBAIC0zODc1LDcgKzM4NzYs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29y
bGQoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJgogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJ
RCA9IG1fY2FsbGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3Mt
PnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIHdvcmxk
TmFtZSwgY2FsbGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIHdvcmxkLndvcmxkRGF0YSgp
LCBjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5G
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlw
dFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CmluZGV4IDFmMGU2YjZiZTEyNDdiMGQzNzNiZjUyNzM3N2I5NjA3NTZjODY3YjAuLmUxZmMyMDRi
ZWNhNTUzYTkxOTUwYzcwZTFjOWU1M2Y0YTA4ZjFiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCkBAIC0xNjMsNiArMTYzLDcgQEAgaW50ZXJmYWNlIElEM0QxMURldmlj
ZTE7CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXR0YWNobWVudDsKK2NsYXNzIENvbnRlbnRX
b3JsZDsKIGNsYXNzIENvbnRleHRNZW51Q2xpZW50OwogY2xhc3MgRmluZENsaWVudDsKIGNsYXNz
IEZpbmRNYXRjaGVzQ2xpZW50OwpAQCAtMTA3MCw3ICsxMDcxLDcgQEAgcHVibGljOgogICAgIHZv
aWQgZ2V0U291cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAo
Y29uc3QgU3RyaW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2Vi
QXJjaGl2ZU9mRnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSos
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZShXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBXVEY6OkZ1bmN0aW9uPHZv
aWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0
aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwot
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25h
bDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2Fs
bGJhY2tGdW5jdGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBBUEk6OkNvbnRlbnRXb3Js
ZCYsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKTsKICAgICAvLyBGb3Igc3ViIGZyYW1lcy4KICAgICB2b2lkIHJ1bkph
dmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBz
Y3JpcHQsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4s
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwogICAgIHZvaWQgZm9y
Y2VSZXBhaW50KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2Vi
S2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQ4YjZkZWYyMTc4Y2YyOGYzZWFl
ZTBlN2I2YmFhNGZkMTY3MzUwOC4uMjA0MDZlMzUxNTQwYTJmMGMxNjM5ZGY3OTRiNmMyY2Y0YWU4
ZGNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0xMDI1LDYgKzEwMjUsMTAgQEAKIAkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBFIC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZDMDBDMjk1
MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsK
IAkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2lu
ZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTdDRjBFNDE2M0E0ODZD
MDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0NGMEUyMTYzQTQ4NkMwMEMy
OTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OworCQk1MTgz
NzIxRDIzQ0U4NUY2MDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgzNzIxQTIzQ0Q0OUIyMDAwM0NGODMg
LyogX1dLQ29udGVudFdvcmxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNTE4MzcyMUUyM0NFODVGQjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3Js
ZEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTgzNzIxQzIzQ0Q0QTc0MDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaCAq
LzsgfTsKKwkJNTE4MzcyMUYyM0NFOTUyMTAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM3MjFCMjND
RDQ5QjIwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQubW0gKi87IH07CisJCTUxODM3MjIyMjND
RTk3NDEwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM3MjIwMjNDRTk3M0EwMDAzQ0Y4MyAvKiBBUElD
b250ZW50V29ybGQuaCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNv
bnRleHRNZW51LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJ
NTE4QUNBRUExMkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEFDQUU5MTJBRUU2
QkIwMEIwNEI4MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE4QUNGMTExMkIwMTVGODAwQjA0Qjgz
IC8qIFdLQ3JlZGVudGlhbFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MThBQ0YxMDEyQjAxNUY4MDBCMDRCODMgLyogV0tDcmVkZW50aWFsVHlw
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MzU4MCw2ICszNTg0LDExIEBACiAJCTUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVy
LmNwcDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsg
fTsKIAkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBu
YW1lID0gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBh
dGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQyL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25N
ZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9Owog
CQk1MTdDRjBFMjE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVz
c2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RT
X0RJUjsgfTsKKwkJNTE4MzcyMUEyM0NENDlCMjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tDb250ZW50V29ybGQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4MzcyMUIyM0NENDlCMjAwMDNDRjgzIC8qIF9X
S0NvbnRlbnRXb3JsZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IF9XS0NvbnRlbnRXb3JsZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4Mzcy
MUMyM0NENEE3NDAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODM3MjIwMjNDRTk3M0EwMDAzQ0Y4MyAvKiBBUElD
b250ZW50V29ybGQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQ29udGVu
dFdvcmxkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODM3MjIxMjNDRTk3M0Ew
MDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQVBJQ29udGVudFdvcmxkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE4M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSB0ZXh0LnhjY29uZmlnOyBwYXRoID0gU2hpbS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMy
IC8qIFdlYkNvbnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YkNvbnRleHRNZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzI5LDYgKzY3
MzgsOSBAQAogCQkJCTVDNDYwOUUyMjI0MzBFNEMwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxp
c3RBY3Rpb24uaCAqLywKIAkJCQk1QzQ2MDlFMzIyNDMwRTREMDA5OTQzQzIgLyogX1dLQ29udGVu
dFJ1bGVMaXN0QWN0aW9uLm1tICovLAogCQkJCTVDNDYwOUU0MjI0MzBFNEQwMDk5NDNDMiAvKiBf
V0tDb250ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oICovLAorCQkJCTUxODM3MjFBMjNDRDQ5
QjIwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQuaCAqLywKKwkJCQk1MTgzNzIxQjIzQ0Q0OUIy
MDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkLm1tICovLAorCQkJCTUxODM3MjFDMjNDRDRBNzQw
MDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGRJbnRlcm5hbC5oICovLAogCQkJCTFBNTcwNEY2MUJF
MDFGRjQwMDg3NEFGMSAvKiBfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMUE1
NzA0RjUxQkUwMUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0gKi8s
CiAJCQkJNUM1RDIzODkyMjdBMTg5MjAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5o
ICovLApAQCAtODQ0NSw2ICs4NDU3LDggQEAKIAkJCQk1QzQ2MDlFNjIyNDMwRkE3MDA5OTQzQzIg
LyogQVBJQ29udGVudFJ1bGVMaXN0QWN0aW9uLmggKi8sCiAJCQkJN0MzQTA2QTUxQUFCOTAzRTAw
OUQ3NEJBIC8qIEFQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCAqLywKIAkJCQk3QzNBMDZBNjFB
QUI5MDNFMDA5RDc0QkEgLyogQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCAqLywKKwkJCQk1MTgz
NzIyMTIzQ0U5NzNBMDAwM0NGODMgLyogQVBJQ29udGVudFdvcmxkLmNwcCAqLywKKwkJCQk1MTgz
NzIyMDIzQ0U5NzNBMDAwM0NGODMgLyogQVBJQ29udGVudFdvcmxkLmggKi8sCiAJCQkJMDc2RTg4
NEQxQTEzQ0FERjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi8sCiAJCQkJNUNF
MEMzNjYyMjlGMkQzRDAwMzY5NUYwIC8qIEFQSUNvbnRleHRNZW51RWxlbWVudEluZm8uY3BwICov
LAogCQkJCTVDRTBDMzY3MjI5RjJEM0UwMDM2OTVGMCAvKiBBUElDb250ZXh0TWVudUVsZW1lbnRJ
bmZvLmggKi8sCkBAIC05NzkwLDYgKzk4MDQsOCBAQAogCQkJCTk5MEQyOEIxMUM2NTIwOEQwMDk4
Njk3NyAvKiBfV0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1QzQ2MDlFNzIyNDMxN0I0MDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk1QzQ2MDlFODIyNDMxN0JCMDA5OTQzQzIgLyogX1dLQ29udGVu
dFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODM3MjFEMjND
RTg1RjYwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUx
ODM3MjFFMjNDRTg1RkIwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJMUE1NzA0RjgxQkUwMUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51
RWxlbWVudEluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNUQyMzhDMjI3QTJDREEwMDBCOUJE
QSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzODkxQjY5
MUE2OEJFQkMwMDMwRjM4NiAvKiBfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmggaW4gSGVh
ZGVycyAqLywKQEAgLTk4OTUsNiArOTkxMSw3IEBACiAJCQkJMUEzREQyMDYxMjVFNUEyRjAwNDUx
NUU2IC8qIEFQSUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4OUQyQjQxQTZCMDY4QzAw
M0E1RkRFIC8qIEFQSUNvbnRlbnRSdWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzQTA2
QTgxQUFCOTAzRTAwOUQ3NEJBIC8qIEFQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk1MTgzNzIyMjIzQ0U5NzQxMDAwM0NGODMgLyogQVBJQ29udGVudFdvcmxkLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwNzZFODg0RTFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4
dE1lbnVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBODIxRjUwMUUyRjdBNzUwMDYwNDU3
NyAvKiBBUElDdXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTUxNTc4QjgzMTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLywKQEAg
LTExODY1LDYgKzExODgyLDcgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJ
YnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTUxODM3MjFG
MjNDRTk1MjEwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk1Q0JENTk1QzIyODBFREY0MDAyQjIyQUEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNDlGQkVGRkQyMzlCMDExRDAwQkQwMzJGIC8qIF9XS1Jlc291cmNl
TG9hZFN0YXRpc3RpY3NGaXJzdFBhcnR5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlGQkVGRkYy
MzlCMDEyRjAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lm1t
IGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNl
ckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IGM0
NGFkYjI2YTBmMWM5NTM0NDBiODk4YzBlN2RmZjU1Zjk2YWEwNTkuLjZlYzY3MjE4M2IzYjQ0M2Fk
NTMwYjMyYjA1ZmZiZjMzYzIwZmExZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwCkBAIC02Miw3ICs2Miw3IEBAIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpwYWly
PFJlZlB0cjxJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiwgdW5zaWduZWQ+CiAKIHN0YXRpYyBX
b3JsZE1hcCYgd29ybGRNYXAoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXb3JsZE1h
cD4gbWFwKHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXb3JsZE1hcDo6S2V5VmFsdWVQYWlyVHlwZT4g
eyB7IDEsIHN0ZDo6bWFrZV9wYWlyKCZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxX
b3JsZCgpLCAxKSB9IH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXb3JsZE1hcD4gbWFw
KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXb3JsZE1hcDo6S2V5VmFsdWVQYWlyVHlwZT4geyB7IFdl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6aWRlbnRpZmllckZvck5vcm1hbFdvcmxkKCksIHN0ZDo6
bWFrZV9wYWlyKCZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCAxKSB9
IH0pOwogCiAgICAgcmV0dXJuIG1hcDsKIH0KQEAgLTk0LDIzICs5NCwzMyBAQCBXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKQogICAgIHVzZXJDb250
ZW50Q29udHJvbGxlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJVc2Vy
Q29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxzdGQ6
OnBhaXI8dWludDY0X3QsIFN0cmluZz4+JiB3b3JsZHMpCitJbmplY3RlZEJ1bmRsZVNjcmlwdFdv
cmxkKiBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OndvcmxkRm9ySWRlbnRpZmllcih1aW50NjRf
dCBpZGVudGlmaWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSB3b3JsZE1hcCgpLmZpbmQoaWRl
bnRpZmllcik7CisgICAgcmV0dXJuIGl0ZXJhdG9yID09IHdvcmxkTWFwKCkuZW5kKCkgPyBudWxs
cHRyIDogaXRlcmF0b3ItPnZhbHVlLmZpcnN0LmdldCgpOworfQorCit2b2lkIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZChjb25zdCBzdGQ6OnBhaXI8dWludDY0
X3QsIFN0cmluZz4mIHdvcmxkKQogewotICAgIGZvciAoYXV0byYgd29ybGQgOiB3b3JsZHMpIHsK
LSAgICAgICAgQVNTRVJUKHdvcmxkLmZpcnN0KTsKLSAgICAgICAgQVNTRVJUKHdvcmxkLmZpcnN0
ICE9IDEpOworICAgIEFTU0VSVCh3b3JsZC5maXJzdCk7CisgICAgQVNTRVJUKHdvcmxkLmZpcnN0
ICE9IDEpOwogCi0gICAgICAgIHdvcmxkTWFwKCkuZW5zdXJlKHdvcmxkLmZpcnN0LCBbJl0gewor
ICAgIHdvcmxkTWFwKCkuZW5zdXJlKHdvcmxkLmZpcnN0LCBbJl0gewogI2lmIFBMQVRGT1JNKEdU
SykgfHwgUExBVEZPUk0oV1BFKQotICAgICAgICAgICAgLy8gVGhlIEdMaWIgQVBJIGRvZXNuJ3Qg
YWxsb3cgdG8gY3JlYXRlIHNjcmlwdCB3b3JsZHMgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gV2UgbmVl
ZCB0bwotICAgICAgICAgICAgLy8gdXNlIHRoZSBleGlzdGluZyB3b3JsZCBjcmVhdGVkIGJ5IHRo
ZSB3ZWIgZXh0ZW5zaW9uIGlmIGFueS4gVGhlIHdvcmxkIG5hbWUgaXMgdXNlZAotICAgICAgICAg
ICAgLy8gYXMgdGhlIGlkZW50aWZpZXIuCi0gICAgICAgICAgICBpZiAoYXV0byogZXhpc3RpbmdX
b3JsZCA9IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGQuc2Vjb25kKSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoUmVmPEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQ+KCpleGlzdGluZ1dvcmxkKSwgMSk7CisgICAgICAgIC8vIFRoZSBHTGliIEFQSSBk
b2Vzbid0IGFsbG93IHRvIGNyZWF0ZSBzY3JpcHQgd29ybGRzIGZyb20gdGhlIFVJIHByb2Nlc3Mu
IFdlIG5lZWQgdG8KKyAgICAgICAgLy8gdXNlIHRoZSBleGlzdGluZyB3b3JsZCBjcmVhdGVkIGJ5
IHRoZSB3ZWIgZXh0ZW5zaW9uIGlmIGFueS4gVGhlIHdvcmxkIG5hbWUgaXMgdXNlZAorICAgICAg
ICAvLyBhcyB0aGUgaWRlbnRpZmllci4KKyAgICAgICAgaWYgKGF1dG8qIGV4aXN0aW5nV29ybGQg
PSBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkLnNlY29uZCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+
KCpleGlzdGluZ1dvcmxkKSwgMSk7CiAjZW5kaWYKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1h
a2VfcGFpcihJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpjcmVhdGUod29ybGQuc2Vjb25kKSwg
MSk7Ci0gICAgICAgIH0pOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZSh3b3JsZC5zZWNvbmQpLCAxKTsKKyAgICB9
KTsKK30KKwordm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250ZW50V29y
bGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmluZz4+JiB3b3JsZHMpCit7
CisgICAgZm9yIChhdXRvJiB3b3JsZCA6IHdvcmxkcykKKyAgICAgICAgYWRkVXNlckNvbnRlbnRX
b3JsZCh3b3JsZCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVV
c2VyQ29udGVudFdvcmxkcyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiB3b3JsZElkZW50aWZpZXJz
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250
ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IGQ2ZjhjMWNiNzZmN2U0Nzg0YzM3
ZjQ2NWY2NDU3MGJkNWY4MmQ0MjQuLjQ4ZTdkNmFjNWM3ZTJkOTVhMmMxYTgyNjBjOTQ5MDBiZWIw
YWM4ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9X
ZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
VXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTY0LDcgKzY0LDExIEBA
IHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0cyhJbmplY3RlZEJ1bmRsZVNj
cmlwdFdvcmxkJik7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyQ29udGVudCgpOwogCisgICAgc3Rh
dGljIHVpbnQ2NF90IGlkZW50aWZpZXJGb3JOb3JtYWxXb3JsZCgpIHsgcmV0dXJuIDE7IH0KKyAg
ICBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZEZvcklkZW50aWZpZXIodWludDY0X3Qp
OworCiAgICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxkcyhjb25zdCBWZWN0b3I8c3RkOjpwYWly
PHVpbnQ2NF90LCBTdHJpbmc+PiYpOworICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZChjb25z
dCBzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmluZz4mKTsKICAgICB2b2lkIGFkZFVzZXJTY3JpcHRz
KFZlY3RvcjxXZWJVc2VyU2NyaXB0RGF0YT4mJiwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5
KTsKICAgICB2b2lkIGFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8V2ViVXNlclN0eWxl
U2hlZXREYXRhPiYpOwogICAgIHZvaWQgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25z
dCBWZWN0b3I8V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhPiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiODJhNzExYzVlZDlmZDhmMzAy
NmI1YzlkMGZiNDc5NThjOTgzYjViLi45NGRjZGU1NzJiYTFlODIyMDBiMjFmYWFhZjhlODMxY2Mx
MDA2MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cApAQCAtMzM2OSwxNyArMzM2OSwyMyBAQCBLZXlib2FyZFVJTW9kZSBXZWJQYWdlOjprZXlib2Fy
ZFVJTW9kZSgpCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJkVUlNb2RlPigoZnVsbEtl
eWJvYXJkQWNjZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6IEtleWJvYXJkQWNjZXNz
RGVmYXVsdCkgfCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA6IDAp
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+
JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2
YVNjcmlwdChXZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycywgdWludDY0X3Qgd29ybGRJZGVudGlmaWVyLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7
CiAgICAgLy8gTk9URTogV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRz
IHRoYXQgdGhlIG9iamVjdHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1
cmluZyBzY3JpcHQgZXhlY3V0aW9uLgogCi0gICAgYXV0byogd29ybGQgPSB3b3JsZE5hbWUgPyBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFtZS52YWx1ZSgpKSA6ICZJbmpl
Y3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwotICAgIGlmICghZnJhbWUgfHwg
IWZyYW1lLT5jb3JlRnJhbWUoKSB8fCAhd29ybGQpIHsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFt
ZS0+Y29yZUZyYW1lKCkpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpT
Y3JpcHRWYWx1ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhl
Y3V0ZSBKYXZhU2NyaXB0OiBQYWdlIGlzIGluIGludmFsaWQgc3RhdGUiX3MgfSwgY2FsbGJhY2tJ
RCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgQVNTRVJUKHdvcmxkSWRlbnRpZmll
cik7CisgICAgYXV0byogd29ybGQgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+d29ybGRGb3JJ
ZGVudGlmaWVyKHdvcmxkSWRlbnRpZmllcik7CisgICAgaWYgKCF3b3JsZCkgeworICAgICAgICBz
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNl
cHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IENhbm5vdCBmaW5k
IHNwZWNpZmllZCBjb250ZW50IHdvcmxkIl9zIH0sIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKwogICAgIGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMg
PSBtYWtlUmVmKCp0aGlzKSwgdGhpcywgd29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIGZyYW1lID0g
bWFrZVJlZigqZnJhbWUpLCBjYWxsYmFja0lEXShWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgewog
ICAgICAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFs
dWU7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKQEAgLTM0MDIsMTYgKzM0MDgsMTcgQEAgdm9pZCBX
ZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFt
ZXRlcnMmJiBwYXJhbWV0ZXIKICAgICBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1
dGVBc3luY2hyb25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAotdm9p
ZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxk
TmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMsIGNvbnN0IHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPiYgd29ybGREYXRhLCBDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgV1RG
TW92ZShwYXJhbWV0ZXJzKSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKKyAgICBtX3VzZXJDb250
ZW50Q29udHJvbGxlci0+YWRkVXNlckNvbnRlbnRXb3JsZCh3b3JsZERhdGEpOworICAgIHJ1bkph
dmFTY3JpcHQobWFpbldlYkZyYW1lKCksIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5m
aXJzdCwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJh
bWUoRnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZv
cmNlVXNlckdlc3R1cmUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFtZSog
ZnJhbWUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBB
U1NFUlQobWFpbldlYkZyYW1lKCkgIT0gZnJhbWUpOwotICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUs
IHsgc2NyaXB0LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0sIFdURjo6
bnVsbG9wdCwgY2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdChmcmFtZSwgeyBzY3JpcHQs
IGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSwgV2ViVXNlckNvbnRlbnRD
b250cm9sbGVyOjppZGVudGlmaWVyRm9yTm9ybWFsV29ybGQoKSwgY2FsbGJhY2tJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggY2E0Yzk3
NDE4MDNlNjM3YWYxYzgzMGZlMjYzYzE4ZGYzMGEwNzlhNS4uZDE3YjI0YmI0Y2ZmYjM0NzIxODY5
MTBlOTNjNTg4NWEzMjU0MDhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuaApAQCAtMTQ0MSw4ICsxNDQxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNl
bGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRTb3VyY2VG
b3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
Z2V0V2ViQXJjaGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lE
KTsKLSAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpSdW5KYXZhU2Ny
aXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxi
YWNrSUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2Vi
Q29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYg
d29ybGROYW1lLCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUq
LCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCB1aW50NjRfdCB3b3JsZElkZW50
aWZpZXIsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29uc3Qgc3RkOjpw
YWlyPHVpbnQ2NF90LCBTdHJpbmc+JiB3b3JsZERhdGEsIENhbGxiYWNrSUQpOwogICAgIHZvaWQg
cnVuSmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJp
bmcmLCBib29sIGZvcmNlVXNlckdlc3R1cmUsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZm9yY2VS
ZXBhaW50KENhbGxiYWNrSUQpOwogICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJl
Y3Qgc25hcHNob3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9w
dGlvbnMsIENhbGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZTkwZTMxYjFiMzVmNjYyMjk1YzIxMjY3
ZjYxM2M5MTVjZjM3ZjlkNi4uNzE0ZmY5YjgxZTY3YWY0NjBhZjIwNmRhM2RkNzY5ZmZhMDczNjYx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC0yMDQsNyArMjA0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
ICAgICBHZXRTZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBm
cmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRXZWJBcmNoaXZl
T2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFj
a0lEIGNhbGxiYWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQo
c3RydWN0IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlv
bmFsPFN0cmluZz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAg
ICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVycywgc3RkOjpwYWlyPHVpbnQ2NF90LCBTdHJp
bmc+IHdvcmxkLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSdW5KYXZhU2Ny
aXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHNjcmlw
dCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ICAgICBGb3JjZVJlcGFpbnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKZGlmZiAt
LWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNTdiYTdkMzU1
OThlMmJjZGY0ZDQwZTI4MzhmMjczMmI1M2Q4YmFjLi42NDQ4ZjFhNjY2MmJjMTgxMzQ0OTVhZTRm
NTk4NWJjM2RlNzE4MzQ0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDEtMTUgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS0NvbnRlbnRXb3JsZCBTUEksIGFuZCB1
c2UgaXQgaW4gSmF2YVNjcmlwdCBleGVjdXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKyAgICAgICAgCisgICAgICAgIFVwZGF0ZSBwcmV2aW91cyBjYWxsQXN5bmNG
dW5jdGlvbiBjYWxscyB3aXRoIHRoZSBuZXcgc2lnbmF0dXJlLgorICAgICAgICBBZGQgdGVzdHMg
Zm9yIG5ldyBfV0tDb250ZW50V29ybGQgY2xhc3MgYW5kIGl0cyBiZWhhdmlvciB3aXRoIHJlZ2Fy
ZCB0byBleGVjdXRpbmcgSmF2YVNjcmlwdC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnRyeUdDUHJvbWlzZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNj
cmlwdC5tbToKKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0Fz
eW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czplcnJvcjpdKToKKwogMjAyMC0wMS0wOSAgRGF2aWQg
S2lsemVyICA8ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdFRlc3RSdW5uZXIg
bGVha3Mgb2JqZWN0cyBpbiBhIHRvcC1sZXZlbCBhdXRvcmVsZWFzZVBvb2wgdGhhdCdzIG5ldmVy
IGNsZWFyZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQXN5bmNGdW5jdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvQXN5bmNGdW5jdGlvbi5tbQppbmRleCAwOWNhZmU0Nzk2ODJkNzM4Mjg2ZDg4MGJmZWI3ZGM2
NjIzZjhhZDgwLi43OGNkZDc3MjA0NzVlZmMwOWEyMzc0MGNlODA4NjczYWJjNjk0NGE1IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rp
b24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1
bmN0aW9uLm1tCkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJU
ZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2lt
cG9ydCA8V2ViS2l0L19XS0NvbnRlbnRXb3JsZC5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQ
SSB7CiAKQEAgLTE4Myw3ICsxODQsNyBAQCBzdGF0aWMgdm9pZCB0cnlHQ1Byb21pc2UoV0tXZWJW
aWV3ICp3ZWJWaWV3LCBib29sJiBkb25lKQogICAgICAgICByZXR1cm47CiAKICAgICBOU1N0cmlu
ZyAqZnVuY3Rpb25Cb2R5ID0gQCJyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwg
cmVqZWN0KSB7IH0pIjsKLSAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246ZnVuY3Rpb25C
b2R5IHdpdGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBO
U0Vycm9yICplcnJvcikgeworICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rp
b246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVudFdvcmxk
LnBhZ2VDb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJy
b3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CiAgICAgICAgIEVYUEVD
VF9UUlVFKGVycm9yICE9IG5pbCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3Jp
cHRpb25dIGNvbnRhaW5zU3RyaW5nOkAibm8gbG9uZ2VyIHJlYWNoYWJsZSJdKTsKQEAgLTIwMCw3
ICsyMDEsNyBAQCBURVNUKEFzeW5jRnVuY3Rpb24sIFByb21pc2UpCiAgICAgTlNTdHJpbmcgKmZ1
bmN0aW9uQm9keSA9IEAicmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVj
dCkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IHJlc29sdmUoNDIpIH0sIDApOyB9KSI7CiAKICAg
ICBib29sIGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246ZnVu
Y3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVz
dWx0LCBOU0Vycm9yICplcnJvcikgeworICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0
RnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVu
dFdvcmxkLnBhZ2VDb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQs
IE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKICAgICAgICAg
RVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsKICAg
ICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDQyXSk7CkBAIC0yMTIs
NyArMjEzLDcgQEAgVEVTVChBc3luY0Z1bmN0aW9uLCBQcm9taXNlKQogICAgIGZ1bmN0aW9uQm9k
eSA9IEAicmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCl7IHJlamVjdCgnUmVqZWN0ZWQhJykgfSwgMCk7IH0pIjsKIAogICAg
IGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246ZnVuY3Rpb25C
b2R5IHdpdGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBO
U0Vycm9yICplcnJvcikgeworICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rp
b246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVudFdvcmxk
LnBhZ2VDb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJy
b3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CiAgICAgICAgIEVYUEVD
VF9UUlVFKGVycm9yICE9IG5pbCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3Jp
cHRpb25dIGNvbnRhaW5zU3RyaW5nOkAiUmVqZWN0ZWQhIl0pOwpAQCAtMjIzLDcgKzIyNCw3IEBA
IFRFU1QoQXN5bmNGdW5jdGlvbiwgUHJvbWlzZSkKICAgICBmdW5jdGlvbkJvZHkgPSBAImxldCBw
ID0gbmV3IFByb3h5KGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgeyByZXNvbHZlKDQyKTsgfSwgMCk7IH0sIHsgfSk7IHJldHVybiB7IHRoZW46IHAgfTsi
OwogCiAgICAgZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjpm
dW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3Jp
cHRGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpfV0tDb250
ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3Vs
dCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgICAg
ICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOwog
ICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpANDJdKTsKQEAgLTIz
NCw3ICsyMzUsNyBAQCBURVNUKEFzeW5jRnVuY3Rpb24sIFByb21pc2UpCiAgICAgZnVuY3Rpb25C
b2R5ID0gQCJsZXQgcCA9IG5ldyBQcm94eShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsgc2V0
VGltZW91dChmdW5jdGlvbigpIHsgcmVqZWN0KCdSZWplY3RlZCEnKTsgfSwgMCk7IH0sIHsgfSk7
IHJldHVybiB7IHRoZW46IHAgfTsiOwogCiAgICAgZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3
IF9jYWxsQXN5bmNGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgY29tcGxl
dGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW3dlYlZp
ZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50
czpuaWwgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9u
SGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNU
X05VTEwocmVzdWx0KTsKICAgICAgICAgRVhQRUNUX1RSVUUoZXJyb3IgIT0gbmlsKTsKICAgICAg
ICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlwdGlvbl0gY29udGFpbnNTdHJpbmc6QCJSZWpl
Y3RlZCEiXSk7CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCmluZGV4IDk4
NGJjMzZiNmQyNWY1ZTRhMTk5YTU1YjFmNTljOGM4Y2Q4YWFhNTIuLjhjNzBjMjRjYzcwYTAwZDdh
ZTViMmRiMTUxZTZmOTlmNGQyNjBlZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZh
U2NyaXB0Lm1tCkBAIC0yOSw4ICsyOSwxMCBAQAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMu
aCIKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIK
LSNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIK
ICNpbXBvcnQgPFdlYktpdC9XS0Vycm9yUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
Vmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tDb250ZW50V29ybGQuaD4KICNpbXBv
cnQgPHd0Zi9SZXRhaW5QdHIuaD4KIAogc3RhdGljIGJvb2wgaXNEb25lOwpAQCAtMTExLDMgKzEx
MywxMTQgQEAgVEVTVChXS1dlYlZpZXcsIEV2YWx1YXRlSmF2YVNjcmlwdEVycm9yQ2FzZXMpCiAg
ICAgaXNEb25lID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUp
OwogfQorCitURVNUKFdLV2ViVmlldywgV0tDb250ZW50V29ybGQpCit7CisgICAgRVhQRUNUX05V
TEwoX1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50V29ybGQubmFtZSk7CisgICAgRVhQRUNUX05V
TEwoX1dLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZC5uYW1lKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoX1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50V29ybGQgPT0gX1dLQ29udGVudFdvcmxk
LmRlZmF1bHRDbGllbnRXb3JsZCk7CisKKyAgICBfV0tDb250ZW50V29ybGQgKm5hbWVkV29ybGQg
PSBbX1dLQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJOYW1lIl07CisgICAgRVhQRUNUX1RS
VUUoW25hbWVkV29ybGQubmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJOYW1lIl0pOworICAgIEVYUEVD
VF9FUShuYW1lZFdvcmxkLCBbX1dLQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJOYW1lIl0p
OworfQorCitURVNUKFdLV2ViVmlldywgRXZhbHVhdGVKYXZhU2NyaXB0SW5Xb3JsZHMpCit7Cisg
ICAgUmV0YWluUHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOwor
ICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxodG1sPjwvaHRtbD4i
XTsKKworICAgIC8vIFNldCBhIHZhcmlhYmxlIGluIHRoZSBtYWluIHdvcmxkIHZpYSAibm9ybWFs
IiBldmFsdWF0ZUphdmFTY3JpcHQKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBl
dmFsdWF0ZUphdmFTY3JpcHQ6QCJ2YXIgZm9vID0gJ2JhciciIGNvbXBsZXRpb25IYW5kbGVyOl4o
aWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAg
IH1dOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgLy8gVmVyaWZ5IHRoYXQgdmFsdWUgaXMg
dmlzaWJsZSB3aGVuIGV2YWx1YXRpbmcgaW4gdGhlIHBhZ2VDb250ZW50V29ybGQKKyAgICBbd2Vi
VmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OkAiZm9vIiBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5w
YWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICpl
cnJvcikgeworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmlu
ZzpAImJhciJdKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUg
PSBmYWxzZTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHZhbHVlIGlzIG5vdCB2aXNpYmxlIHdoZW4g
ZXZhbHVhdGluZyBpbiB0aGUgZGVmYXVsdENsaWVudFdvcmxkCisgICAgW3dlYlZpZXcgX2V2YWx1
YXRlSmF2YVNjcmlwdDpAImZvbyIgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVu
dFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAg
IH1dOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgLy8gVmVyaWZ5IHRoYXQgdmFsdWUgaXMg
dmlzaWJsZSB3aGVuIGNhbGxpbmcgYSBmdW5jdGlvbiBpbiB0aGUgcGFnZUNvbnRlbnRXb3JsZAor
ICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246QCJyZXR1cm4gZm9vIiB3
aXRoQXJndW1lbnRzOm5pbCBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxk
IGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0p
OworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImJhciJdKTsK
KyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKwor
ICAgIC8vIFZlcmlmeSB0aGF0IHZhbHVlIGlzIG5vdCB2aXNpYmxlIHdoZW4gY2FsbGluZyBhIGZ1
bmN0aW9uIGluIHRoZSBkZWZhdWx0Q2xpZW50V29ybGQKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5j
SmF2YVNjcmlwdEZ1bmN0aW9uOkAicmV0dXJuIGZvbyIgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3Js
ZDpfV0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsm
XSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1
bHQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9IGZhbHNl
OworCisgICAgLy8gU2V0IGEgdmFyaWJhbGUgdmFsdWUgaW4gYSBuYW1lZCB3b3JsZC4KKyAgICBS
ZXRhaW5QdHI8X1dLQ29udGVudFdvcmxkPiBuYW1lZFdvcmxkID0gW19XS0NvbnRlbnRXb3JsZCB3
b3JsZFdpdGhOYW1lOkAiTmFtZWRXb3JsZCJdOworICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFT
Y3JpcHQ6QCJ2YXIgYmFyID0gYmF6IiBpbldvcmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9O
VUxMKHJlc3VsdCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNEb25l
ID0gZmFsc2U7CisKKyAgICAvLyBTZXQgYSBnbG9iYWwgdmFyaWJhbGUgdmFsdWUgaW4gYSBuYW1l
ZCB3b3JsZCB2aWEgYSBmdW5jdGlvbiBjYWxsLgorICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZh
U2NyaXB0RnVuY3Rpb246QCJ3aW5kb3cuYmF6ID0gYmF0IiB3aXRoQXJndW1lbnRzOm5pbCBpbldv
cmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJy
b3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVD
VF9OVUxMKGVycm9yKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0Rv
bmUgPSBmYWxzZTsKKworICAgIC8vIFZlcmlmeSB0aGV5IGFyZSB0aGVyZSBpbiB0aGF0IG5hbWVk
IHdvcmxkLgorICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJiYXIiIGluV29ybGQ6
bmFtZWRXb3JsZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAq
ZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJp
bmc6QCJiYXoiXSk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNEb25l
ID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LmJh
eiIgaW5Xb3JsZDpuYW1lZFdvcmxkLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlz
RXF1YWxUb1N0cmluZzpAImJhdCJdKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIC8vIFZlcmlmeSB0aGV5IGFyZW4ndCB0aGVyZSBp
biB0aGUgZGVmYXVsdENsaWVudFdvcmxkLgorICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3Jp
cHQ6QCJiYXIiIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21w
bGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBp
c0RvbmUgPSBmYWxzZTsKKworICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5k
b3cuYmF6IiBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxl
dGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVD
VF9OVUxMKHJlc3VsdCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNE
b25lID0gZmFsc2U7CisKKyAgICAvLyBWZXJpZnkgdGhleSBhcmVuJ3QgdGhlcmUgaW4gdGhlIHBh
Z2VDb250ZW50V29ybGQuCisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAImJhciIg
aW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxl
cjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVz
dWx0KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUgPSBmYWxz
ZTsKKworICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuYmF6IiBpbldv
cmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4o
aWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQp
OworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9IGZhbHNlOwor
fQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDc0YWQ1
ODEyNTAxNmMwMzFmOGM1ZTRlZGJiOTQ4ZTE4MDVlYjU1MGUuLjIwMjgxNGExZTlmNzcwZWM5NmQ5
ZGJiN2Q0N2VkYTgyZTU2MDNmN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdD
b25maWd1cmF0aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdFByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oPgorI2ltcG9ydCA8V2Vi
S2l0L19XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0
YWluUHRyLmg+CkBAIC0xODUsNyArMTg2LDcgQEAgLSAoaWQpb2JqZWN0QnlDYWxsaW5nQXN5bmNG
dW5jdGlvbjooTlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXIKICAg
ICAgICAgKmVycm9yT3V0ID0gbmlsOwogCiAgICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0Owot
ICAgIFtzZWxmIF9jYWxsQXN5bmNGdW5jdGlvbjpzY3JpcHQgd2l0aEFyZ3VtZW50czphcmd1bWVu
dHMgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgW3NlbGYgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpzY3JpcHQgd2l0aEFyZ3VtZW50
czphcmd1bWVudHMgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCBjb21w
bGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAg
ZXZhbFJlc3VsdCA9IHJlc3VsdDsKICAgICAgICAgaWYgKGVycm9yT3V0KQogICAgICAgICAgICAg
KmVycm9yT3V0ID0gW2Vycm9yIHJldGFpbl07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387843</attachid>
            <date>2020-01-15 14:08:39 -0800</date>
            <delta_ts>2020-01-15 16:29:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206310-20200115140838.patch</filename>
            <type>text/plain</type>
            <size>68541</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0Mjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMyYmFhYTVkZDdmNjI1MTIz
NDc0Y2UwNmVjNTFiOWVkMzVlMDRjYzUuLjA1ODg1MDlkNjI3ZDljNmYwMDM2OGQ2MDlmMTIxMzhm
MDhiM2Q3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMjAtMDEtMTUgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS0NvbnRlbnRXb3JsZCBT
UEksIGFuZCB1c2UgaXQgaW4gSmF2YVNjcmlwdCBleGVjdXRpb24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzMTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKyAg
ICAgICAgCisgICAgICAgIF9XS0NvbnRlbnRXb3JsZCBpcyBhIFVJIFByb2Nlc3Mgd3JhcHBlciBm
b3IgYW4gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC4KKyAgICAgICAgTXVjaCBsaWtlIF9XS1Vz
ZXJDb250ZW50V29ybGQgaXMuIEJ1dCBkaWZmZXJlbnQgaW4gdGhhdDoKKyAgICAgICAgLSBJdHMg
QVBJcyBhcmUgbmFtZWQgZGlmZmVyZW50IHRoaW5ncworICAgICAgICAtIE9ubHkgb25lIHVuaXF1
ZSBpbnN0YW5jZSBwZXIgc3RyaW5nIG5hbWUKKyAgICAgICAgLSBJdCBpcyB1c2VkIHdpdGggZXZh
bHVhdGVKYXZhc2NyaXB0OiBhbmQgY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOiBpbnN0ZWFk
IG9mIFdLVXNlckNvbnRlbnRDb250cm9sbGVyLgorICAgICAgICAKKyAgICAgICAgQnV0IF9XS0Nv
bnRlbnRXb3JsZCBhbmQgX1dLVXNlckNvbnRlbnRXb3JsZCBkbyBoYXZlIHRvIHdvcmsgdG9nZXRo
ZXIgYSBsaXR0bGUgYml0IHRvIGF2b2lkIGNvbmZsaWN0cyBpbiB0aGUgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgCisgICAgICAgIFRoZSBuZXcgdmVyc2lvbnMgb2YgZXZhbHVhdGVKYXZhc2NyaXB0OiBh
bmQgY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOiBhcmUgYWxzbyBpbmNsdWRlZCwgYXMgd2Vs
bCBhcyBBUEkgdGVzdHMgZm9yIGFsbCB0aGUgbmV3IHN0dWZmLgorCisgICAgICAgICogU2hhcmVk
L0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgor
ICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRXb3JsZC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmNwcC4KKyAgICAgICAgKEFQSTo6Q29udGVudFdv
cmxkOjpzaGFyZWRXb3JsZFdpdGhOYW1lKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkOjpw
YWdlQ29udGVudFdvcmxkKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkOjpkZWZhdWx0Q2xp
ZW50V29ybGQpOgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZCk6Cisg
ICAgICAgIChBUEk6OkNvbnRlbnRXb3JsZDo6fkNvbnRlbnRXb3JsZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50
V29ybGQ6OmdlbmVyYXRlSWRlbnRpZmllcik6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50V29y
bGQ6OlVzZXJDb250ZW50V29ybGQpOgorICAgICAgICAoQVBJOjpnZW5lcmF0ZUlkZW50aWZpZXIp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5o
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmFzQXN5bmNGdW5jdGlvbjp3
aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRsZXI6aW5Xb3JsZDpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246d2l0
aEFyZ3VtZW50czppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVy
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUph
dmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTpj
b21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYWxs
QXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGQuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGQubW06IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmguCisg
ICAgICAgICgrW19XS0NvbnRlbnRXb3JsZCBwYWdlQ29udGVudFdvcmxkXSk6CisgICAgICAgICgr
W19XS0NvbnRlbnRXb3JsZCBkZWZhdWx0Q2xpZW50V29ybGRdKToKKyAgICAgICAgKCtbX1dLQ29u
dGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6XSk6CisgICAgICAgICgtW19XS0NvbnRlbnRXb3JsZCBk
ZWFsbG9jXSk6CisgICAgICAgICgtW19XS0NvbnRlbnRXb3JsZCBuYW1lXSk6CisgICAgICAgICgt
W19XS0NvbnRlbnRXb3JsZCBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tDb250ZW50V29ybGRJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6d29ybGRNYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OndvcmxkRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDEtMDkgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IFsgTWFjIHdrMiBdIGZhc3QvbWVkaWFz
dHJlYW0vY2FwdHVyZUluR1BVUHJvY2Vzcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDhiNzFmZTBkMmY1M2ZmMGQzODVmZGMyOGU5
YWFkODkyNzRmNWQwNDcuLjcyODEwOGEwNWZlZjJlMWIyOTY0OGZlZDhhMmIxMzQ4NDQyYjg2ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTEwOSw2ICsxMDksNyBAQCBw
dWJsaWM6CiAgICAgICAgIENvbnRlbnRSdWxlTGlzdCwKICAgICAgICAgQ29udGVudFJ1bGVMaXN0
QWN0aW9uLAogICAgICAgICBDb250ZW50UnVsZUxpc3RTdG9yZSwKKyAgICAgICAgQ29udGVudFdv
cmxkLAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIENvbnRleHRNZW51RWxlbWVu
dEluZm8sCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRl
eCBkYjY1ZTZmOWU0MDlkNDA3MTViNjk4ZWZiMjA2MDY5ZjllOWViYzBlLi40NDE0MDI4ZmVhMzhi
NjYwYmQ1NTI0NWJjMmJhMzU1NjIwNGJjOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tCkBAIC03MSw2ICs3MSw3IEBACiAjaW1wb3J0ICJfV0tBdHRhY2htZW50SW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJfV0tDb250
ZW50V29ybGRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJu
YWwuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0V4cGVy
aW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIgpAQCAtMzQwLDYgKzM0MSwxMCBAQCB2b2lkKiBPYmpl
Y3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0g
W19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5IGFsbG9jXTsKICAgICAgICAgYnJl
YWs7CiAKKyAgICBjYXNlIFR5cGU6OkNvbnRlbnRXb3JsZDoKKyAgICAgICAgd3JhcHBlciA9IFtf
V0tDb250ZW50V29ybGQgYWxsb2NdOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6
VXNlckNvbnRlbnRXb3JsZDoKICAgICAgICAgd3JhcHBlciA9IFtfV0tVc2VyQ29udGVudFdvcmxk
IGFsbG9jXTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzMDZjZDFlNjkzNTY2MWFk
NDFjMDYwOTI4NDhiZjlhZjM2YjFiNzI2Li5jNDQzMmU1NWRkOTZhNzQ5MmEyYzZkNWFhOWViZjZi
ODg4ZjBiNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTMyMSw2ICszMjEsNyBAQCBVSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdC5jcHAK
IFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0QWN0aW9uLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFdv
cmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUVsZW1lbnRJbmZvLmNwcAogVUlQ
cm9jZXNzL0FQSS9BUElEZWJ1Z2dhYmxlSW5mby5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJRXhwZXJp
bWVudGFsRmVhdHVyZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50V29ybGQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRXb3JsZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVhN2NkZGVmMDNkZTFlNzU0MDVjYmZmMDVkYTVj
Njg0OTcxMzlhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50V29ybGQuY3BwCkBAIC0wLDAgKzEsOTEgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCisKKyNpbmNsdWRl
ICJBUElVc2VyQ29udGVudFdvcmxkLmgiCisKK25hbWVzcGFjZSBBUEkgeworCitzdGF0aWMgSGFz
aE1hcDxXVEY6OlN0cmluZywgQ29udGVudFdvcmxkKj4mIHNoYXJlZFdvcmxkTWFwKCkKK3sKKyAg
ICBzdGF0aWMgSGFzaE1hcDxXVEY6OlN0cmluZywgQ29udGVudFdvcmxkKj4qIHNoYXJlZE1hcCA9
IG5ldyBIYXNoTWFwPFdURjo6U3RyaW5nLCBDb250ZW50V29ybGQqPjsKKyAgICByZXR1cm4gKnNo
YXJlZE1hcDsKK30KKworUmVmPENvbnRlbnRXb3JsZD4gQ29udGVudFdvcmxkOjpzaGFyZWRXb3Js
ZFdpdGhOYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQoreworICAgIGF1dG8gcmVzdWx0ID0g
c2hhcmVkV29ybGRNYXAoKS5hZGQobmFtZSwgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KSB7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBuZXcgQ29udGVudFdv
cmxkKG5hbWUpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKnJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpOworICAgIH0KKworICAgIHJldHVybiBtYWtlUmVmKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVl
KTsKK30KKworQ29udGVudFdvcmxkJiBDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKQor
eworICAgIHN0YXRpYyBDb250ZW50V29ybGQqIHdvcmxkOworICAgIHN0YXRpYyBzdGQ6Om9uY2Vf
ZmxhZyBvbmNlRmxhZzsKKyAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10geworICAgICAg
ICB3b3JsZCA9IG5ldyBDb250ZW50V29ybGQoKTsKKyAgICAgICAgd29ybGQtPm1faWRlbnRpZmll
ciA9IEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFsV29ybGRJZGVudGlmZXIoKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gKndvcmxkOworfQorCitDb250ZW50V29ybGQmIENvbnRlbnRXb3JsZDo6
ZGVmYXVsdENsaWVudFdvcmxkKCkKK3sKKyAgICBzdGF0aWMgQ29udGVudFdvcmxkKiB3b3JsZDsK
KyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25jZUZsYWc7CisgICAgc3RkOjpjYWxsX29uY2Uo
b25jZUZsYWcsIFtdIHsKKyAgICAgICAgd29ybGQgPSBuZXcgQ29udGVudFdvcmxkKCk7CisgICAg
ICAgIHdvcmxkLT5tX2lkZW50aWZpZXIgPSBBUEk6OlVzZXJDb250ZW50V29ybGQ6OmdlbmVyYXRl
SWRlbnRpZmllcigpOworICAgIH0pOworICAgIHJldHVybiAqd29ybGQ7Cit9CisKK0NvbnRlbnRX
b3JsZDo6Q29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQorICAgIDogbV9pZGVu
dGlmaWVyKEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6Z2VuZXJhdGVJZGVudGlmaWVyKCkpCisgICAg
LCBtX25hbWUobmFtZSkKK3sKK30KKworQ29udGVudFdvcmxkOjpDb250ZW50V29ybGQoKQorewor
fQorCitDb250ZW50V29ybGQ6On5Db250ZW50V29ybGQoKQoreworICAgIGlmIChtX25hbWUuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gdGFrZW4gPSBzaGFyZWRXb3JsZE1h
cCgpLnRha2UobV9uYW1lKTsKKyAgICBBU1NFUlRfVU5VU0VEKHRha2VuLCB0YWtlbiA9PSB0aGlz
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQVBJQ29udGVudFdvcmxkLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQVBJQ29udGVudFdvcmxkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWM1Y2JhNjRjMzA0MTFlMzNmZDZiZWEw
ODZmNGUyYTMxOWFiNTA3YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElDb250ZW50V29ybGQuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBUElPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEFQSSB7CisKK2NsYXNzIENvbnRlbnRXb3JsZCBm
aW5hbCA6IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkNvbnRlbnRX
b3JsZD4geworcHVibGljOgorICAgIHN0YXRpYyBSZWY8Q29udGVudFdvcmxkPiBzaGFyZWRXb3Js
ZFdpdGhOYW1lKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgc3RhdGljIENvbnRlbnRXb3JsZCYg
cGFnZUNvbnRlbnRXb3JsZCgpOworICAgIHN0YXRpYyBDb250ZW50V29ybGQmIGRlZmF1bHRDbGll
bnRXb3JsZCgpOworCisgICAgdmlydHVhbCB+Q29udGVudFdvcmxkKCk7CisKKyAgICBjb25zdCBX
VEY6OlN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFtZTsgfQorICAgIHVpbnQ2NF90
IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KKworICAgIHN0ZDo6
cGFpcjx1aW50NjRfdCwgV1RGOjpTdHJpbmc+IHdvcmxkRGF0YSgpIHsgcmV0dXJuIHsgbV9pZGVu
dGlmaWVyLCBtX25hbWUgfTsgfQorCitwcml2YXRlOgorICAgIENvbnRlbnRXb3JsZChjb25zdCBX
VEY6OlN0cmluZyYpOworICAgIENvbnRlbnRXb3JsZCgpOworCisgICAgdWludDY0X3QgbV9pZGVu
dGlmaWVyOworICAgIFdURjo6U3RyaW5nIG1fbmFtZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
V29ybGQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29y
bGQuY3BwCmluZGV4IDRkYWRmYmZiZDJkZTIxMDViNDk3MWE2NWZiNzhjMjAyZDExODAxOTYuLmE4
NWExNWIzYWU2NWRiNGEyZDJhYjZlZGMxZmY5NmVjOTE4MDUzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAKQEAgLTI4LDEx
ICsyOCw5IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1zdGF0aWMgY29uc3QgdWludDY0X3Qgbm9y
bWFsV29ybGRJZGVudGlmZXIgPSAxOwotCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVJZGVudGlm
aWVyKCkKK3VpbnQ2NF90IFVzZXJDb250ZW50V29ybGQ6OmdlbmVyYXRlSWRlbnRpZmllcigpCiB7
Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIgPSBub3JtYWxXb3JsZElkZW50aWZlcjsK
KyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IG5vcm1hbFdvcmxkSWRlbnRpZmVyKCk7
CiAKICAgICByZXR1cm4gKytpZGVudGlmaWVyOwogfQpAQCAtNTUsNyArNTMsNyBAQCBVc2VyQ29u
dGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQogfQog
CiBVc2VyQ29udGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKEZvck5vcm1hbFdvcmxkT25seSkK
LSAgICA6IG1faWRlbnRpZmllcihub3JtYWxXb3JsZElkZW50aWZlcikKKyAgICA6IG1faWRlbnRp
Zmllcihub3JtYWxXb3JsZElkZW50aWZlcigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaAppbmRleCA4NDBmZTFjMzAzZTc2
M2ZkNmUwZWVhNWRlMTFiNGE5OWFlZDRiNjRjLi5mZTlmYzU0OGJkZWE0YzZmNTE4NzE3ZGYyNTM1
YWM2MzY1YjFkYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlckNvbnRlbnRXb3JsZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
c2VyQ29udGVudFdvcmxkLmgKQEAgLTMxLDYgKzMxLDggQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAK
K2NsYXNzIENvbnRlbnRXb3JsZDsKKwogY2xhc3MgVXNlckNvbnRlbnRXb3JsZCBmaW5hbCA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50V29ybGQ+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFVzZXJDb250ZW50V29ybGQ+IHdvcmxkV2l0aE5h
bWUoY29uc3QgV1RGOjpTdHJpbmcmKTsKQEAgLTQxLDEyICs0MywxOCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB1
aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKKyAg
ICBzdGF0aWMgdWludDY0X3Qgbm9ybWFsV29ybGRJZGVudGlmZXIoKSB7IHJldHVybiAxOyB9Owor
CiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDb250ZW50V29ybGQ7CisKICAgICBVc2VyQ29u
dGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAKICAgICBlbnVtIGNsYXNzIEZvck5vcm1h
bFdvcmxkT25seSB7IE5vcm1hbFdvcmxkIH07CiAgICAgVXNlckNvbnRlbnRXb3JsZChGb3JOb3Jt
YWxXb3JsZE9ubHkpOwogCisgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigp
OworCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIFdURjo6U3RyaW5nIG1fbmFtZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpp
bmRleCBkMzI5ZDFlNmNlNGUwOGUwNDQyMzY3ZGNjNTA5OTQ3YzdiYmViZjlkLi5mNTdkYWYyODQ5
ZGU4YjJjOWFhMTg4N2FhYWM1ODgyMDRjZGNlZmEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTkxLDYgKzkxLDcgQEAKICNpbXBvcnQg
IldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oIgogI2ltcG9ydCAiV2ViVmlld0ltcGwuaCIKICNp
bXBvcnQgIl9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0Nv
bnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVn
YXRlLmgiCiAjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFu
ZGxlSW50ZXJuYWwuaCIKQEAgLTgzMyw3ICs4MzQsNyBAQCBzdGF0aWMgV0tFcnJvckNvZGUgY2Fs
bGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogCiAtICh2
b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5j
RnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxl
dGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFT
Y3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpu
aWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRs
ZXIgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZF07CiB9CiAKIHN0YXRp
YyBib29sIHZhbGlkYXRlQXJndW1lbnQoaWQgYXJndW1lbnQpCkBAIC04NzAsNyArODcxLDcgQEAg
c3RhdGljIGJvb2wgdmFsaWRhdGVBcmd1bWVudChpZCBhcmd1bWVudCkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLS0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2Ny
aXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhc0FzeW5jRnVuY3Rpb24gd2l0aEFyZ3Vt
ZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBmb3JjZVVzZXJH
ZXN0dXJlOihCT09MKWZvcmNlVXNlckdlc3R1cmUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9ldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wp
YXNBc3luY0Z1bmN0aW9uIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBp
ZD4gKilhcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVzZXJHZXN0dXJlIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
ciBpbldvcmxkOihfV0tDb250ZW50V29ybGQgKil3b3JsZAogewogICAgIGF1dG8gaGFuZGxlciA9
IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsKIApAQCAtOTA2LDggKzkwNyw4IEBA
IC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5n
IGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KLQotICAg
IF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMgeyBqYXZhU2NyaXB0U3RyaW5nLCAhIWFzQXN5bmNGdW5jdGlvbiwgV1RGTW92ZShh
cmd1bWVudHNNYXApLCAhIWZvcmNlVXNlckdlc3R1cmUgfSwgW2hhbmRsZXJdKEFQSTo6U2VyaWFs
aXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFsPFdlYkNvcmU6
OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVDYWxsYmFjazo6
RXJyb3IgZXJyb3JDb2RlKSB7CisgICAgCisgICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1haW5G
cmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHsgamF2YVNj
cmlwdFN0cmluZywgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzTWFwKSwgISFm
b3JjZVVzZXJHZXN0dXJlIH0sICp3b3JsZC0+X2NvbnRlbnRXb3JsZC5nZXQoKSwgW2hhbmRsZXJd
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFs
dWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CiAgICAgICAgIGlmICghaGFuZGxlcikKICAg
ICAgICAgICAgIHJldHVybjsKIApAQCAtMTUyMyw2ICsxNTI0LDE2IEBAIC0gKFVJVGV4dElucHV0
QXNzaXN0YW50SXRlbSAqKWlucHV0QXNzaXN0YW50SXRlbQogCiAjcHJhZ21hIG1hcmsgLSBtYWNP
Uy9pT1MgV0tQcml2YXRlCiAKKy0gKHZvaWQpX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjoo
TlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxO
U1N0cmluZyAqLCBpZD4gKilhcmd1bWVudHMgaW5Xb3JsZDooX1dLQ29udGVudFdvcmxkICopY29u
dGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3Ip
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZh
U2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aEFyZ3VtZW50czphcmd1bWVudHMg
Zm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIg
aW5Xb3JsZDpjb250ZW50V29ybGRdOworfQorCistICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6
KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBpbldvcmxkOihfV0tDb250ZW50V29ybGQgKilj
b250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNv
bXBsZXRpb25IYW5kbGVyCit7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2Ny
aXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJH
ZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlciBpbldvcmxkOmNv
bnRlbnRXb3JsZF07Cit9CisKIC0gKF9XS1NlbGVjdGlvbkF0dHJpYnV0ZXMpX3NlbGVjdGlvbkF0
dHJpYnV0ZXMKIHsKICAgICByZXR1cm4gX3NlbGVjdGlvbkF0dHJpYnV0ZXM7CkBAIC0yMDA2LDEx
ICsyMDE3LDYgQEAgLSAodm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246KFdL
U25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb24KICAgICBbc2VsZiBjcmVhdGVQREZX
aXRoQ29uZmlndXJhdGlvbjpwZGZDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBs
ZXRpb25IYW5kbGVyXTsKIH0KIAotLSAodm9pZClfY2FsbEFzeW5jRnVuY3Rpb246KE5TU3RyaW5n
ICopamF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICopYXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJv
ciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNj
cmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aEFyZ3VtZW50czph
cmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlv
bkhhbmRsZXJdOwotfQotCiAtIChOU0RhdGEgKilfc2Vzc2lvblN0YXRlRGF0YQogewogICAgIC8v
IEZJWE1FOiBUaGlzIHNob3VsZCBub3QgdXNlIHRoZSBsZWdhY3kgc2Vzc2lvbiBzdGF0ZSBlbmNv
ZGVyLgpAQCAtMjE1Myw3ICsyMTU5LDcgQEAgLSAodm9pZClfaXNKSVRFbmFibGVkOih2b2lkKF4p
KEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdp
dGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewotICAg
IFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rp
b246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpOTyBjb21wbGV0aW9uSGFu
ZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpq
YXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3Jj
ZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyIGluV29y
bGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50V29ybGRdOwogfQogCiAtICh2b2lkKV91cGRh
dGVXZWJzaXRlUG9saWNpZXM6KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2llcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKaW5kZXggZDNmZTcwNzIwYTczZmExMWM2YmIyNzIyMTIzNjU0MDZiMWMyNmU2NC4uNmFl
NjFjYzRlOTNmM2QwM2IwYzRmODBkMGZiZWM1NDFiMWVhZjhhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0xMDYs
NiArMTA2LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7
CiBAY2xhc3MgV0tCcm93c2luZ0NvbnRleHRIYW5kbGU7CiBAY2xhc3MgV0tXZWJwYWdlUHJlZmVy
ZW5jZXM7CiBAY2xhc3MgX1dLQXBwbGljYXRpb25NYW5pZmVzdDsKK0BjbGFzcyBfV0tDb250ZW50
V29ybGQ7CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CiBAY2xhc3MgX1dLSGl0VGVzdFJlc3VsdDsK
IEBjbGFzcyBfV0tJbnNwZWN0b3I7CkBAIC0zMTgsNyArMzE5LDU4IEBAIHR5cGVkZWYgTlNfT1BU
SU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiAtICh2b2lkKV90YWtlUERGU25hcHNo
b3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hvdENv
bmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25hcHNo
b3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAotLSAodm9pZClfY2FsbEFz
eW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihO
U0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOworLyogQGFi
c3RyYWN0IENhbGxzIHRoZSBnaXZlbiBKYXZhU2NyaXB0IHN0cmluZyBhcyBhIGZ1bmN0aW9uLCBw
YXNzaW5nIHRoZSBnaXZlbiBuYW1lZCBhcmd1bWVudHMgdG8gdGhhdCBmdW5jdGlvbi4KKyBAcGFy
YW0gamF2YVNjcmlwdFN0cmluZyBUaGUgSmF2YVNjcmlwdCBzdHJpbmcgdG8gY2FsbCBhcyBhIGZ1
bmN0aW9uLgorIEBwYXJhbSBhcmd1bWVudHMgQSBkaWN0aW9uYXJ5IHJlcHJlc2VudGluZyB0aGUg
YXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gY2FsbC4KKyBAcGFyYW0gY29u
dGVudFdvcmxkIFRoZSBXS0NvbnRlbnRXb3JsZCBpbiB3aGljaCB0byBjYWxsIHRoZSBKYXZhU2Ny
aXB0IGZ1bmN0aW9uLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9r
ZSB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwsIG9yIHdpdGggdGhl
IGFzeW5jaHJvbm91cyByZXNvbHV0aW9uIG9mIHRoZSBmdW5jdGlvbidzIHJldHVybiB2YWx1ZS4K
KyBAZGlzY3Vzc2lvbiBUaGUgSmF2YVNjcmlwdCBzdHJpbmcgaXMgdHJlYXRlZCBhcyBhbiBhbm9u
eW1vdXMgSmF2YVNjcmlwdCBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgd2l0aCBuYW1lZCBh
cmd1bWVudHMuCisgUGFzcyBpbiBKYXZhU2NyaXB0IHN0cmluZyBmb3JtYXR0ZWQgZm9yIGV2YWx1
YXRpb24sIG5vdCBhcyBvbmUgb2YgdGhlIHZhcmlhbnRzIG9mIGZ1bmN0aW9uIGNhbGwgYXZhaWxh
YmxlIGluIEphdmFTY3JpcHQuCisgRm9yIGV4YW1wbGU6CisgICAgIHJldHVybiB4ID8geSA6IHo7
CisKKyBUaGUgYXJndW1lbnRzIGRpY3Rpb25hcnkgc3VwcGxpZXMgdGhlIHZhbHVlcyBmb3IgdGhv
c2UgYXJndW1lbnRzIHdoaWNoIGFyZSBzZXJpYWxpemVkIGludG8gSmF2YVNjcmlwdCBlcXVpdmFs
ZW50cy4KKyBGb3IgZXhhbXBsZToKKyAgICAgQHsgQCJ4IiA6IEBZRVMsIEAieSIgOiBAMSwgQCJ6
IiA6IEAyIH07CisKKyBDb21iaW5pbmcgdGhlIGFib3ZlIGFyZ3VtZW50cyBkaWN0aW9uYXJ5IHdp
dGggdGhlIGFib3ZlIEphdmFTY3JpcHQgc3RyaW5nLCBhIGZ1bmN0aW9uIHdpdGggdGhlIGFyZ3Vt
ZW50cyAieCIsICJ5IiwgYW5kICJ6IiBpcyBjYWxsZWQgd2l0aCB2YWx1ZXMgWUVTLCAxLCBhbmQg
MiByZXNwZWN0aXZlbHkuCisKKyBBbGxvd2VkIGFyZ3VtZW50IHR5cGVzIGFyZToKKyBOU051bWJl
ciwgTlNTdHJpbmcsIE5TRGF0ZSwgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBhbmQgTlNOdWxsLgor
IEFueSBOU0FycmF5IG9yIE5TRGljdGlvbmFyeSBjb250YWluZXJzIGNhbiBvbmx5IGNvbnRhaW4g
b2JqZWN0cyBvZiB0aG9zZSB0eXBlcy4KKworIE5vIG1hdHRlciB3aGljaCBXS0NvbnRlbnRXb3Js
ZCB5b3UgdXNlIHRvIGNhbGwgeW91ciBKYXZhU2NyaXB0IGZ1bmN0aW9uLCB5b3UgY2FuIG1ha2Ug
Y2hhbmdlcyB0byB0aGUgdW5kZXJseWluZyB3ZWIgY29udGVudC4gKGUuZy4gdGhlIERvY3VtZW50
IGFuZCBpdHMgRE9NIHN0cnVjdHVyZSkKKyBTdWNoIGNoYW5nZXMgd2lsbCBiZSB2aXNpYmxlIHRv
IHNjcmlwdCBleGVjdXRpbmcgaW4gYWxsIFdLQ29udGVudFdvcmxkcy4KKyBDYWxsaW5nIHlvdXIg
SmF2YVNjcmlwdCBmdW5jdGlvbiBjYW4gbGVhdmUgYmVoaW5kIG90aGVyIGNoYW5nZXMgdG8gZ2xv
YmFsIHN0YXRlIHZpc2liaWxlIHRvIEphdmFTY3JpcHQuIChlLmcuIGB3aW5kb3cubXlWYXJpYWJs
ZSA9IDE7YCkKKyBUaG9zZSBjaGFuZ2VzIHdpbGwgb25seSBiZSB2aXNpYmlsZSB0byBzY3JpcHRz
IGV4ZWN1dGVkIGluIHRoZSBzYW1lIFdLQ29udGVudFdvcmxkLgorCisgWW91ciBjb21wbGV0aW9u
IGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHlvdXIgSmF2
YVNjcmlwdCBmdW5jdGlvbi4KKyBJZiB5b3VyIEphdmFTY3JpcHQgZG9lcyBub3QgZXhwbGljaXRs
eSByZXR1cm4gYW55IHZhbHVlLCB0aGF0IHVuZGVmaW5lZCByZXN1bHQgbWFuaWZlc3RzIGFzIG5p
bCBiZWluZyBwYXNzZWQgdG8geW91ciBjb21wbGV0aW9uIGhhbmRsZXIuCisgSWYgeW91ciBKYXZh
U2NyaXB0IHJldHVybnMgbnVsbCwgdGhhdCByZXN1bHQgbWFuaWZlc3RzIGFzIE5TTnVsbCBiZWlu
ZyBwYXNzZWQgdG8geW91ciBjb21wbGV0aW9uIGhhbmRsZXIuCisKKyBKYXZhU2NyaXB0IGhhcyB0
aGUgY29uY2VwdCBvZiBhICJ0aGVuYWJsZSIgb2JqZWN0LCB3aGljaCBpcyBhbnkgSmF2YVNjcmlw
dCBvYmplY3QgdGhhdCBoYXMgYSBjYWxsYWJsZSAidGhlbiIgcHJvcGVydHkuCisgVGhlIG1vc3Qg
d2VsbCBrbm93biBleGFtcGxlIG9mIGEgInRoZW5hYmxlIiBvYmplY3QgaXMgYSBKYXZhU2NyaXB0
IHByb21pc2UuCisgSWYgeW91ciBKYXZhU2NyaXB0IHJldHVybnMgYSAidGhlbmFibGUiIG9iamVj
dCBXZWJLaXQgd2lsbCBjYWxsICJ0aGVuIiBvbiB0aGUgcmVzdWx0aW5nIG9iamVjdCBhbmQgd2Fp
dCBmb3IgaXQgdG8gYmUgcmVzb2x2ZWQuCisKKyBJZiB0aGUgb2JqZWN0IGNhbGxzICJmdWxmaWxs
IiwgeW91ciBjb21wbGV0aW9uIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0
LgorIElmIHRoZSBvYmplY3QgY2FsbHMgInJlamVjdCIsIHlvdXIgY29tcGxldGlvbiBoYW5kbGVy
IHdpbGwgYmUgY2FsbGVkIHdpdGggYSBXS0Vycm9ySmF2YVNjcmlwdEFzeW5jRnVuY3Rpb25SZXN1
bHRSZWplY3RlZCBlcnJvciBjb250YWluaW5nIHRoZSByZWplY3QgcmVhc29uIGluIHRoZSB1c2Vy
SW5mbyBkaWN0aW9uYXJ5LgorIElmIHRoZSBvYmplY3QgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQgYmVm
b3JlIGl0IGlzIHJlc29sdmVkLCB5b3VyIGNvbXBsZXRpb24gaGFuZGxlciB3aWxsIGJlIGNhbGxl
ZCB3aXRoIGFuIGVycm9yIGluZGljYXRpbmcgdGhhdCBpdCB3aWxsIG5ldmVyIGJlIHJlc29sdmVk
LgorKi8KKy0gKHZvaWQpX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjooTlNTdHJpbmcgKilq
YXZhU2NyaXB0U3RyaW5nIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBp
ZD4gKilhcmd1bWVudHMgaW5Xb3JsZDooX1dLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25I
YW5kbGVyOworCisvKiBAYWJzdHJhY3QgRXZhbHVhdGVzIHRoZSBnaXZlbiBKYXZhU2NyaXB0IHN0
cmluZy4KKyBAcGFyYW0gamF2YVNjcmlwdFN0cmluZyBUaGUgSmF2YVNjcmlwdCBzdHJpbmcgdG8g
ZXZhbHVhdGUuCisgQHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hp
Y2ggdG8gZXZhbHVhdGUgdGhlIEphdmFTY3JpcHQgc3RyaW5nLgorIEBwYXJhbSBjb21wbGV0aW9u
SGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aGVuIHNjcmlwdCBldmFsdWF0aW9uIGNvbXBsZXRl
cyBvciBmYWlscy4KKyBAZGlzY3Vzc2lvbiBUaGUgY29tcGxldGlvbkhhbmRsZXIgaXMgcGFzc2Vk
IHRoZSByZXN1bHQgb2YgdGhlIHNjcmlwdCBldmFsdWF0aW9uIG9yIGFuIGVycm9yLgorIE5vIG1h
dHRlciB3aGljaCBXS0NvbnRlbnRXb3JsZCB5b3UgdXNlIHRvIGV2YWx1YXRlIHlvdXIgSmF2YVNj
cmlwdCBzdHJpbmcsIHlvdSBjYW4gbWFrZSBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5aW5nIHdlYiBj
b250ZW50LiAoZS5nLiB0aGUgRG9jdW1lbnQgYW5kIGl0cyBET00gc3RydWN0dXJlKQorIFN1Y2gg
Y2hhbmdlcyB3aWxsIGJlIHZpc2libGUgdG8gc2NyaXB0IGV4ZWN1dGluZyBpbiBhbGwgV0tDb250
ZW50V29ybGRzLgorIEV2YWx1YXRpbmcgeW91ciBKYXZhU2NyaXB0IHN0cmluZyBjYW4gbGVhdmUg
YmVoaW5kIG90aGVyIGNoYW5nZXMgdG8gZ2xvYmFsIHN0YXRlIHZpc2liaWxlIHRvIEphdmFTY3Jp
cHQuIChlLmcuIGB3aW5kb3cubXlWYXJpYWJsZSA9IDE7YCkKKyBUaG9zZSBjaGFuZ2VzIHdpbGwg
b25seSBiZSB2aXNpYmlsZSB0byBzY3JpcHRzIGV4ZWN1dGVkIGluIHRoZSBzYW1lIFdLQ29udGVu
dFdvcmxkLgorIGV2YWx1YXRlSmF2YVNjcmlwdDogaXMgdGhlIGJlc3Qgd2F5IHRvIHNldCB1cCBn
bG9iYWwgc3RhdGUgZm9yIGZ1dHVyZSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBpbiBhIGdpdmVuIHdv
cmxkLiAoZS5nLiBJbXBvcnRpbmcgbGlicmFyaWVzL3V0aWxpdGllcyB0aGF0IGZ1dHVyZSBKYXZh
U2NyaXB0IGV4ZWN1dGlvbiB3aWxsIHJlbHkgb24pCisgT25jZSB5b3VyIGdsb2JhbCBzdGF0ZSBp
cyBzZXQgdXAsIGNvbnNpZGVyIHVzaW5nIGNhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjogZm9y
IG1vcmUgZmxleGlibGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgSmF2YVNjcmlwdCBwcm9ncmFtbWlu
ZyBtb2RlbC4KKyovCistICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICopamF2
YVNjcmlwdFN0cmluZyBpbldvcmxkOihfV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQgY29t
cGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhh
bmRsZXI7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0NvbnRlbnRXb3JsZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0NvbnRlbnRXb3JsZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkMjVhZDZmMjIzZTJkZWZhMmQ2ZjA1
YTZhZDNjZTk5ZDNmMWQyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxkLmgKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KKworLyohCitBIFdLQ29udGVudFdvcmxkIG9iamVjdCBhbGxvd3MgeW91IHRvIHNl
cGVyYXRlIHlvdXIgYXBwbGljYXRpb24ncyBpbnRlcmFjdGlvbiB3aXRoIGNvbnRlbnQgZGlzcGxh
eWVkIGluIGEgV0tXZWJWaWV3IGludG8gZGlmZmVyZW50IHJvbGVzIHRoYXQgY2Fubm90IGludGVy
ZmVyZSB3aXRoIG9uZSBhbm90aGVyLgorKi8KK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tDb250ZW50V29ybGQgOiBO
U09iamVjdAorCisrIChpbnN0YW5jZXR5cGUpbmV3IE5TX1VOQVZBSUxBQkxFOworLSAoaW5zdGFu
Y2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisKKy8qISBAYWJzdHJhY3QgUmV0cmlldmUgdGhl
IG1haW4gd29ybGQgdGhhdCBwYWdlIGNvbnRlbnQgaXRzZWxmIHVzZXMuCisgQGRpc2N1c3Npb24g
V2hlbiBpbnRlcmFjdGluZyB3aXRoIHBhZ2UgY29udGVudCBpbiBhIFdLV2ViVmlldyB1c2luZyB0
aGUgcGFnZSBjb250ZW50IHdvcmxkIHlvdSBjYW4gZGlzcnVwdCB0aGUgb3BlcmF0aW9uIG9mIHBh
Z2UgY29udGVudCAoZS5nLiBieSBjb25mbGljdGluZyB3aXRoIHZhcmlhYmxlIG5hbWVzIGluIEph
dmFTY3JpcHQgc2V0IGJ5IHRoZSB3ZWIgcGFnZSBjb250ZW50IGl0c2VsZikuCisqLworQHByb3Bl
cnR5IChjbGFzcywgbm9uYXRvbWljLCByZWFkb25seSkgX1dLQ29udGVudFdvcmxkICpwYWdlQ29u
dGVudFdvcmxkOworCisvKiEgQGFic3RyYWN0IFJldHJpZXZlIHRoZSBkZWZhdWx0IG5vbi1wYWdl
IGNvbnRlbnQgd29ybGQgZm9yIEFQSSBjbGllbnRzLgorIEBkaXNjdXNzaW9uIEludGVyYWN0aW5n
IHdpdGggcGFnZSBjb250ZW50IGluIGEgV0tXZWJWaWV3IHVzaW5nIGEgY29udGVudCB3b3JsZCBk
aWZmZXJlbnQgZnJvbSB0aGUgcGFnZSBjb250ZW50IHdvcmxkIGVuYWJsZXMgdXNpbmcgRE9NIGFu
ZCBidWlsdC1pbiBET00gQVBJcworIHdpdGhvdXQgY29uZmxpY3Rpbmcgd2l0aCBvdGhlciBhc3Bl
Y3RzIG9mIHRoZSBwYWdlIGNvbnRlbnQgKGUuZy4gSmF2YVNjcmlwdCBmcm9tIHRoZSB3ZWIgcGFn
ZSBjb250ZW50IGl0c2VsZikKKyovCitAcHJvcGVydHkgKGNsYXNzLCBub25hdG9taWMsIHJlYWRv
bmx5KSBfV0tDb250ZW50V29ybGQgKmRlZmF1bHRDbGllbnRXb3JsZDsKKworLyohIEBhYnN0cmFj
dCBSZXRyaWV2ZXMgYSBuYW1lZCBjb250ZW50IHdvcmxkIGZvciBBUEkgdXNlcnMuCisgQHBhcmFt
IG5hbWUgVGhlIG5hbWUgb2YgdGhlIFdLQ29udGVudFdvcmxkIHRvIHJldHJpZXZlLgorIEBkaXNj
dXNzaW9uIEJ5IGludGVyYWN0aW5nIHdpdGggcGFnZSBjb250ZW50IGluIGEgV0tXZWJWaWV3IHVz
aW5nIGEgbm9uLW1haW4gY29udGVudCB3b3JsZCB5b3UgY2FuIGludGVyYWN0IHdpdGggdGhlIERP
TSBhbmQgYnVpbHQtaW4gRE9NIEFQSXMKKyB3aXRob3V0IGNvbmZsaWN0aW5nIHdpdGggb3RoZXIg
YXNwZWN0cyBvZiB0aGUgcGFnZSBjb250ZW50IChlLmcuIEphdmFTY3JpcHQgZnJvbSB0aGUgd2Vi
IGNvbnRlbnQgaXRzZWxmKQorIFJlcGVhdGVkIGNhbGxzIHdpdGggdGhlIHNhbWUgbmFtZSB3aWxs
IHJldHJpZXZlIHRoZSBzYW1lIFdLQ29udGVudFdvcmxkIGluc3RhbmNlLgorIEVhY2ggbmFtZWQg
Y29udGVudCB3b3JsZCBpcyBkaXN0aW5jdCBmcm9tIGFsbCBvdGhlciBuYW1lZCBjb250ZW50IHdv
cmxkcywgdGhlIGRlZmF1bHRDbGllbnRXb3JsZCwgYW5kIHRoZSBwYWdlQ29udGVudFdvcmxkLgor
IFRoZSBuYW1lIGNhbiBiZSB1c2VkIHRvIGtlZXAgZGlzdGluY3Qgd29ybGRzIGlkZW50aWZpYWJs
ZSBhbnl3aGVyZSBhIHdvcmxkIG1pZ2h0IGJlIHN1cmZhY2VkIGluIGEgdXNlciBpbnRlcmZhY2Uu
CisgRm9yIGV4YW1wbGUsIHRoZSBkaWZmZXJlbnQgd29ybGRzIHVzZWQgaW4geW91ciBhcHBsaWNh
dGlvbiB3aWxsIGJlIHN1cmZhY2VkIGJ5IG5hbWUgaW4gdGhlIFdlYktpdCBXZWIgSW5zcGVjdG9y
LgorKi8KKysgKF9XS0NvbnRlbnRXb3JsZCAqKXdvcmxkV2l0aE5hbWU6KE5TU3RyaW5nICopbmFt
ZSBOU19SRUZJTkVEX0ZPUl9TV0lGVDsKKworLyohIEBhYnN0cmFjdCBUaGUgbmFtZSBvZiB0aGUg
V0tDb250ZW50V29ybGQKKyBAZGlzY3Vzc2lvbiBUaGUgcGFnZUNvbnRlbnRXb3JsZCBhbmQgZGVm
YXVsdENsaWVudFdvcmxkIGluc3RhbmNlcyB3aWxsIGhhdmUgYSBuaWwgbmFtZS4KKyBBbGwgb3Ro
ZXIgaW5zdGFuY2VzIHdpbGwgaGF2ZSB0aGUgbm9uLW5pbCBuYW1lIHRoZXkgd2VyZSBhY2Nlc3Nl
ZCBieS4KKyovCitAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5LCBjb3B5
KSBOU1N0cmluZyAqbmFtZTsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGQu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxkLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmVhMzY1ZjI1YzViNjQ3YTg5MDgzZWFjMmE2MTAxZjhiMjk0NWJmYmEKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29u
dGVudFdvcmxkLm1tCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKyNpbXBvcnQgIl9XS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCisKK0BpbXBsZW1lbnRh
dGlvbiBfV0tDb250ZW50V29ybGQKKworKyAoX1dLQ29udGVudFdvcmxkICopcGFnZUNvbnRlbnRX
b3JsZAoreworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29udGVu
dFdvcmxkKCkpOworfQorCisrIChfV0tDb250ZW50V29ybGQgKilkZWZhdWx0Q2xpZW50V29ybGQK
K3sKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRXb3JsZDo6ZGVmYXVsdENsaWVudFdv
cmxkKCkpOworfQorCisrIChfV0tDb250ZW50V29ybGQgKil3b3JsZFdpdGhOYW1lOihOU1N0cmlu
ZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRXb3JsZDo6c2hhcmVk
V29ybGRXaXRoTmFtZShuYW1lKSk7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9jb250
ZW50V29ybGQtPn5Db250ZW50V29ybGQoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30KKwor
LSAoTlNTdHJpbmcgKiluYW1lCit7CisgICAgaWYgKF9jb250ZW50V29ybGQtPm5hbWUoKS5pc051
bGwoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBfY29udGVudFdvcmxkLT5u
YW1lKCk7Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlv
bgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2NvbnRlbnRX
b3JsZDsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0NvbnRlbnRXb3JsZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODAwYzEy
NDEzMjRjYTJkNWEzYjk4NTIxOWZmMmRlZGE3M2ViODhkCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZEludGVybmFsLmgK
QEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS0NvbnRlbnRXb3JsZC5o
IgorCisjaW1wb3J0ICJBUElDb250ZW50V29ybGQuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisj
aW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3Rl
bXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpDb250ZW50V29ybGQ+IHsKKyAgICB1
c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tDb250ZW50V29ybGQ7Cit9OworCit9CisKK0BpbnRlcmZh
Y2UgX1dLQ29udGVudFdvcmxkICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6Ok9i
amVjdFN0b3JhZ2U8QVBJOjpDb250ZW50V29ybGQ+IF9jb250ZW50V29ybGQ7Cit9CitAZW5kCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3Bw
CmluZGV4IGY5ZGExYmI1OTQ1ZGQwYWI4ZGNkZTFmZWU2MGMxODAxYTQyNDU1M2QuLmZmODZlY2Yw
Zjk2NmM0Zjk3NDFhMmEzNmEyOGMzZGZhMTQwMmY0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMyw2ICsyMyw3IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgogCisjaW5j
bHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUg
IkFQSU5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUuaCIK
QEAgLTM3NDIsNyArMzc0Myw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2NyaXB0
X2luX3dvcmxkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyCiAgICAgZ19yZXR1
cm5faWZfZmFpbCh3b3JsZE5hbWUpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFkb3B0
R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRhdGEp
KTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVl
IH0sIFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2spXShB
UEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25h
bDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3Ip
IHsKKyAgICBhdXRvIHdvcmxkID0gQVBJOjpDb250ZW50V29ybGQ6OnNoYXJlZFdvcmxkV2l0aE5h
bWUoU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3Jp
cHQpLCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sIHdvcmxkLmdldCgpLCBbdGFzayA9IFdU
Rk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0
VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2FsbGJh
Y2tCYXNlOjpFcnJvcikgewogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRldGFp
bHM7CiAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAgZXhjZXB0aW9uRGV0YWlscyA9
ICpkZXRhaWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmluZGV4
IGQxMGU3YjVjMTI0NmJkZjliYjAzZWZhZWMwNGQxMDE2NDJhM2MwOTEuLmQwMTQxM2RjNTUyNjQz
OTdkY2Y2ZDRiYWNlN2MxZmE4NTMyNTE3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRy
b2xsZXJQcm94eS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXJQcm94eS5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRlICJB
UElDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAjaW5j
bHVkZSAiQVBJVXNlclNjcmlwdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0LmgiCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCA2NzFmYjI5MmQyMDE5NjAz
MzdiMDM4M2VkMDdiMjdmZGI5N2UyYzRkLi42NzZkMjM3YzMzOTZmOTQxNmM2NDlhMmQwYjI1ZGVl
OTI3MjEwMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVu
dC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAgLTQx
LDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXJyYXk7CiBjbGFzcyBDb250ZW50
UnVsZUxpc3Q7CitjbGFzcyBDb250ZW50V29ybGQ7CiBjbGFzcyBVc2VyQ29udGVudFdvcmxkOwog
Y2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZWY0NWE4YzI5ZDliZjRhYTU4ZmFiOGQyNDY3
NzMzMDJlM2ZmOGE5Ny4uZTE2M2Q4ZWE5NDM0Nzg5NWQwMzM4ODEwOTQ3NTc2ZmVhMDQ3NWYyNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yOSw2ICsyOSw3
IEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUF0dGFjaG1lbnQuaCIK
KyNpbmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElDb250ZXh0TWVudUNs
aWVudC5oIgogI2luY2x1ZGUgIkFQSUZpbmRDbGllbnQuaCIKICNpbmNsdWRlICJBUElGaW5kTWF0
Y2hlc0NsaWVudC5oIgpAQCAtMzg2MSwxMCArMzg2MiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpy
dW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0
V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pKTsKKyAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXVEZN
b3ZlKHBhcmFtZXRlcnMpLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgpLCBX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYg
cGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1bmN0
aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25E
ZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3ZvaWQg
V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChSdW5KYXZh
U2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIEFQSTo6Q29udGVudFdvcmxkJiB3b3JsZCwg
V1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8
RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rp
b24pCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9ydCBydW5uaW5n
IHNjcmlwdCBpbiBhIFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2FkcyB5ZXRzLgog
ICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKQEAgLTM4NzUsNyArMzg3Niw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQocGFyYW1ldGVycywgd29ybGRO
YW1lLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQocGFyYW1ldGVycywgd29ybGQud29ybGREYXRhKCks
IGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbkZy
YW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgK
aW5kZXggMWYwZTZiNmJlMTI0N2IwZDM3M2JmNTI3Mzc3Yjk2MDc1NmM4NjdiMC4uZTFmYzIwNGJl
Y2E1NTNhOTE5NTBjNzBlMWM5ZTUzZjRhMDhmMWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmgKQEAgLTE2Myw2ICsxNjMsNyBAQCBpbnRlcmZhY2UgSUQzRDExRGV2aWNl
MTsKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBdHRhY2htZW50OworY2xhc3MgQ29udGVudFdv
cmxkOwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CiBjbGFzcyBGaW5kQ2xpZW50OwogY2xhc3Mg
RmluZE1hdGNoZXNDbGllbnQ7CkBAIC0xMDcwLDcgKzEwNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lkIChj
b25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRXZWJB
cmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRhKiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZy
YW1lKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIFdURjo6RnVuY3Rpb248dm9p
ZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRp
b25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7Ci0g
ICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUs
IFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIEFQSTo6Q29udGVudFdvcmxk
JiwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNh
bGxiYWNrRnVuY3Rpb24pOwogICAgIC8vIEZvciBzdWIgZnJhbWVzLgogICAgIHZvaWQgcnVuSmF2
YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHNj
cmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzPiwg
Q2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgdm9pZCBmb3Jj
ZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZDhiNmRlZjIxNzhjZjI4ZjNlYWVl
MGU3YjZiYWE0ZmQxNjczNTA4Li4yMDQwNmUzNTE1NDBhMmYwYzE2MzlkZjc5NGI2YzJjZjRhZThk
Y2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEwMjUsNiArMTAyNSwxMCBAQAogCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEUgLyog
TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUw
RSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9Owog
CQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5l
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxN0NGMEU0MTYzQTQ4NkMw
MEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Q0YwRTIxNjNBNDg2QzAwQzI5
NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CisJCTUxODM3
MjFEMjNDRTg1RjYwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM3MjFBMjNDRDQ5QjIwMDAzQ0Y4MyAv
KiBfV0tDb250ZW50V29ybGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQk1MTgzNzIxRTIzQ0U4NUZCMDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxk
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxODM3MjFDMjNDRDRBNzQwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGRJbnRlcm5hbC5oICov
OyB9OworCQk1MTgzNzIxRjIzQ0U5NTIxMDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MzcyMUIyM0NE
NDlCMjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5tbSAqLzsgfTsKKwkJNTE4MzcyMjIyM0NF
OTc0MTAwMDNDRjgzIC8qIEFQSUNvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MzcyMjAyM0NFOTczQTAwMDNDRjgzIC8qIEFQSUNv
bnRlbnRXb3JsZC5oICovOyB9OwogCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29u
dGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovOyB9OwogCQk1
MThBQ0FFQTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4QUNBRTkxMkFFRTZC
QjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MThBQ0YxMTEyQjAxNUY4MDBCMDRCODMg
LyogV0tDcmVkZW50aWFsVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxOEFDRjEwMTJCMDE1RjgwMEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxUeXBl
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0z
NTgwLDYgKzM1ODQsMTEgQEAKIAkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwogCQk1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5h
bWUgPSBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNz
YWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OworCQk1MTgzNzIxQTIzQ0Q0OUIyMDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0NvbnRlbnRXb3JsZC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgzNzIxQjIzQ0Q0OUIyMDAwM0NGODMgLyogX1dL
Q29udGVudFdvcmxkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
X1dLQ29udGVudFdvcmxkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgzNzIx
QzIzQ0Q0QTc0MDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4MzcyMjAyM0NFOTczQTAwMDNDRjgzIC8qIEFQSUNv
bnRlbnRXb3JsZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElDb250ZW50
V29ybGQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4MzcyMjEyM0NFOTczQTAw
MDNDRjgzIC8qIEFQSUNvbnRlbnRXb3JsZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBBUElDb250ZW50V29ybGQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1MTgzQjM5MzEzNzlGODVDMDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQueGNjb25maWc7IHBhdGggPSBTaGltLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnUuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYyMzIg
LyogV2ViQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2Vi
Q29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3MjksNiArNjcz
OCw5IEBACiAJCQkJNUM0NjA5RTIyMjQzMEU0QzAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxlTGlz
dEFjdGlvbi5oICovLAogCQkJCTVDNDYwOUUzMjI0MzBFNEQwMDk5NDNDMiAvKiBfV0tDb250ZW50
UnVsZUxpc3RBY3Rpb24ubW0gKi8sCiAJCQkJNUM0NjA5RTQyMjQzMEU0RDAwOTk0M0MyIC8qIF9X
S0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmggKi8sCisJCQkJNTE4MzcyMUEyM0NENDlC
MjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5oICovLAorCQkJCTUxODM3MjFCMjNDRDQ5QjIw
MDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQubW0gKi8sCisJCQkJNTE4MzcyMUMyM0NENEE3NDAw
MDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmggKi8sCiAJCQkJMUE1NzA0RjYxQkUw
MUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCAqLywKIAkJCQkxQTU3
MDRGNTFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAqLywK
IAkJCQk1QzVEMjM4OTIyN0ExODkyMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLmgg
Ki8sCkBAIC04NDQ1LDYgKzg0NTcsOCBAQAogCQkJCTVDNDYwOUU2MjI0MzBGQTcwMDk5NDNDMiAv
KiBBUElDb250ZW50UnVsZUxpc3RBY3Rpb24uaCAqLywKIAkJCQk3QzNBMDZBNTFBQUI5MDNFMDA5
RDc0QkEgLyogQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwICovLAogCQkJCTdDM0EwNkE2MUFB
QjkwM0UwMDlENzRCQSAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZS5oICovLAorCQkJCTUxODM3
MjIxMjNDRTk3M0EwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuY3BwICovLAorCQkJCTUxODM3
MjIwMjNDRTk3M0EwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuaCAqLywKIAkJCQkwNzZFODg0
RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLywKIAkJCQk1Q0Uw
QzM2NjIyOUYyRDNEMDAzNjk1RjAgLyogQVBJQ29udGV4dE1lbnVFbGVtZW50SW5mby5jcHAgKi8s
CiAJCQkJNUNFMEMzNjcyMjlGMkQzRTAwMzY5NUYwIC8qIEFQSUNvbnRleHRNZW51RWxlbWVudElu
Zm8uaCAqLywKQEAgLTk3OTAsNiArOTgwNCw4IEBACiAJCQkJOTkwRDI4QjExQzY1MjA4RDAwOTg2
OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTVDNDYwOUU3MjI0MzE3QjQwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24uaCBp
biBIZWFkZXJzICovLAogCQkJCTVDNDYwOUU4MjI0MzE3QkIwMDk5NDNDMiAvKiBfV0tDb250ZW50
UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4MzcyMUQyM0NF
ODVGNjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4
MzcyMUUyM0NFODVGQjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkxQTU3MDRGODFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVF
bGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1RDIzOEMyMjdBMkNEQTAwMEI5QkRB
IC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4OTFCNjkx
QTY4QkVCQzAwMzBGMzg2IC8qIF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCBpbiBIZWFk
ZXJzICovLApAQCAtOTg5NSw2ICs5OTExLDcgQEAKIAkJCQkxQTNERDIwNjEyNUU1QTJGMDA0NTE1
RTYgLyogQVBJQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg5RDJCNDFBNkIwNjhDMDAz
QTVGREUgLyogQVBJQ29udGVudFJ1bGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzNBMDZB
ODFBQUI5MDNFMDA5RDc0QkEgLyogQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxODM3MjIyMjNDRTk3NDEwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuaCBp
biBIZWFkZXJzICovLAogCQkJCTA3NkU4ODRFMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250ZXh0
TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E4MjFGNTAxRTJGN0E3NTAwNjA0NTc3
IC8qIEFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAt
MTE4NjUsNiArMTE4ODIsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJCQli
dWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJNTE4MzcyMUYy
M0NFOTUyMTAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTVDQkQ1OTVDMjI4MEVERjQwMDJCMjJBQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk0OUZCRUZGRDIzOUIwMTFEMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VM
b2FkU3RhdGlzdGljc0ZpcnN0UGFydHkubW0gaW4gU291cmNlcyAqLywKIAkJCQk0OUZCRUZGRjIz
OUIwMTJGMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkubW0g
aW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXggYzQ0
YWRiMjZhMGYxYzk1MzQ0MGI4OThjMGU3ZGZmNTVmOTZhYTA1OS4uNmVjNjcyMTgzYjNiNDQzYWQ1
MzBiMzJiMDVmZmJmMzNjMjBmYTFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5j
cHAKQEAgLTYyLDcgKzYyLDcgQEAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBhaXI8
UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+LCB1bnNpZ25lZD4KIAogc3RhdGljIFdv
cmxkTWFwJiB3b3JsZE1hcCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdvcmxkTWFw
PiBtYXAoc3RkOjppbml0aWFsaXplcl9saXN0PFdvcmxkTWFwOjpLZXlWYWx1ZVBhaXJUeXBlPiB7
IHsgMSwgc3RkOjptYWtlX3BhaXIoJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdv
cmxkKCksIDEpIH0gfSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdvcmxkTWFwPiBtYXAo
c3RkOjppbml0aWFsaXplcl9saXN0PFdvcmxkTWFwOjpLZXlWYWx1ZVBhaXJUeXBlPiB7IHsgV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyOjppZGVudGlmaWVyRm9yTm9ybWFsV29ybGQoKSwgc3RkOjpt
YWtlX3BhaXIoJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIDEpIH0g
fSk7CiAKICAgICByZXR1cm4gbWFwOwogfQpAQCAtOTQsMjMgKzk0LDMzIEBAIFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlcigpCiAgICAgdXNlckNvbnRl
bnRDb250cm9sbGVycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6
cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4mIHdvcmxkcykKK0luamVjdGVkQnVuZGxlU2NyaXB0V29y
bGQqIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6d29ybGRGb3JJZGVudGlmaWVyKHVpbnQ2NF90
IGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IHdvcmxkTWFwKCkuZmluZChpZGVu
dGlmaWVyKTsKKyAgICByZXR1cm4gaXRlcmF0b3IgPT0gd29ybGRNYXAoKS5lbmQoKSA/IG51bGxw
dHIgOiBpdGVyYXRvci0+dmFsdWUuZmlyc3QuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyOjphZGRVc2VyQ29udGVudFdvcmxkKGNvbnN0IHN0ZDo6cGFpcjx1aW50NjRf
dCwgU3RyaW5nPiYgd29ybGQpCiB7Ci0gICAgZm9yIChhdXRvJiB3b3JsZCA6IHdvcmxkcykgewot
ICAgICAgICBBU1NFUlQod29ybGQuZmlyc3QpOwotICAgICAgICBBU1NFUlQod29ybGQuZmlyc3Qg
IT0gMSk7CisgICAgQVNTRVJUKHdvcmxkLmZpcnN0KTsKKyAgICBBU1NFUlQod29ybGQuZmlyc3Qg
IT0gMSk7CiAKLSAgICAgICAgd29ybGRNYXAoKS5lbnN1cmUod29ybGQuZmlyc3QsIFsmXSB7Cisg
ICAgd29ybGRNYXAoKS5lbnN1cmUod29ybGQuZmlyc3QsIFsmXSB7CiAjaWYgUExBVEZPUk0oR1RL
KSB8fCBQTEFURk9STShXUEUpCi0gICAgICAgICAgICAvLyBUaGUgR0xpYiBBUEkgZG9lc24ndCBh
bGxvdyB0byBjcmVhdGUgc2NyaXB0IHdvcmxkcyBmcm9tIHRoZSBVSSBwcm9jZXNzLiBXZSBuZWVk
IHRvCi0gICAgICAgICAgICAvLyB1c2UgdGhlIGV4aXN0aW5nIHdvcmxkIGNyZWF0ZWQgYnkgdGhl
IHdlYiBleHRlbnNpb24gaWYgYW55LiBUaGUgd29ybGQgbmFtZSBpcyB1c2VkCi0gICAgICAgICAg
ICAvLyBhcyB0aGUgaWRlbnRpZmllci4KLSAgICAgICAgICAgIGlmIChhdXRvKiBleGlzdGluZ1dv
cmxkID0gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6ZmluZCh3b3JsZC5zZWNvbmQpKQotICAg
ICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihSZWY8SW5qZWN0ZWRCdW5kbGVTY3Jp
cHRXb3JsZD4oKmV4aXN0aW5nV29ybGQpLCAxKTsKKyAgICAgICAgLy8gVGhlIEdMaWIgQVBJIGRv
ZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIHNjcmlwdCB3b3JsZHMgZnJvbSB0aGUgVUkgcHJvY2Vzcy4g
V2UgbmVlZCB0bworICAgICAgICAvLyB1c2UgdGhlIGV4aXN0aW5nIHdvcmxkIGNyZWF0ZWQgYnkg
dGhlIHdlYiBleHRlbnNpb24gaWYgYW55LiBUaGUgd29ybGQgbmFtZSBpcyB1c2VkCisgICAgICAg
IC8vIGFzIHRoZSBpZGVudGlmaWVyLgorICAgICAgICBpZiAoYXV0byogZXhpc3RpbmdXb3JsZCA9
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGQuc2Vjb25kKSkKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihSZWY8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZD4o
KmV4aXN0aW5nV29ybGQpLCAxKTsKICNlbmRpZgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bWFr
ZV9wYWlyKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZSh3b3JsZC5zZWNvbmQpLCAx
KTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3JlYXRlKHdvcmxkLnNlY29uZCksIDEpOworICAgIH0p
OworfQorCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3Js
ZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4mIHdvcmxkcykKK3sK
KyAgICBmb3IgKGF1dG8mIHdvcmxkIDogd29ybGRzKQorICAgICAgICBhZGRVc2VyQ29udGVudFdv
cmxkKHdvcmxkKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92ZVVz
ZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHdvcmxkSWRlbnRpZmllcnMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5kZXggZDZmOGMxY2I3NmY3ZTQ3ODRjMzdm
NDY1ZjY0NTcwYmQ1ZjgyZDQyNC4uNDhlN2Q2YWM1YzdlMmQ5NWEyYzFhODI2MGM5NDkwMGJlYjBh
YzhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dl
YlVzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtNjQsNyArNjQsMTEgQEAg
cHVibGljOgogICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzKEluamVjdGVkQnVuZGxlU2Ny
aXB0V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KCk7CiAKKyAgICBzdGF0
aWMgdWludDY0X3QgaWRlbnRpZmllckZvck5vcm1hbFdvcmxkKCkgeyByZXR1cm4gMTsgfQorICAg
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkRm9ySWRlbnRpZmllcih1aW50NjRfdCk7
CisKICAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8
dWludDY0X3QsIFN0cmluZz4+Jik7CisgICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxkKGNvbnN0
IHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPiYpOwogICAgIHZvaWQgYWRkVXNlclNjcmlwdHMo
VmVjdG9yPFdlYlVzZXJTY3JpcHREYXRhPiYmLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRlbHkp
OwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxXZWJVc2VyU3R5bGVT
aGVldERhdGE+Jik7CiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNvbnN0
IFZlY3RvcjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+Jik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGI4MmE3MTFjNWVkOWZkOGYzMDI2
YjVjOWQwZmI0Nzk1OGM5ODNiNWIuLjk0ZGNkZTU3MmJhMWU4MjIwMGIyMWZhYWFmOGU4MzFjYzEw
MDYwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CkBAIC0zMzY5LDE3ICszMzY5LDIzIEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6OmtleWJvYXJk
VUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+KChmdWxsS2V5
Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9hcmRBY2Nlc3NE
ZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDogMCkp
OwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4m
IHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZh
U2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJhbWV0
ZXJzLCB1aW50NjRfdCB3b3JsZElkZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsK
ICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlwdHMg
dGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIgZHVy
aW5nIHNjcmlwdCBleGVjdXRpb24uCiAKLSAgICBhdXRvKiB3b3JsZCA9IHdvcmxkTmFtZSA/IElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVlKCkpIDogJkluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCk7Ci0gICAgaWYgKCFmcmFtZSB8fCAh
ZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICF3b3JsZCkgeworICAgIGlmICghZnJhbWUgfHwgIWZyYW1l
LT5jb3JlRnJhbWUoKSkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlNj
cmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBleGVj
dXRlIEphdmFTY3JpcHQ6IFBhZ2UgaXMgaW4gaW52YWxpZCBzdGF0ZSJfcyB9LCBjYWxsYmFja0lE
KSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQod29ybGRJZGVudGlmaWVy
KTsKKyAgICBhdXRvKiB3b3JsZCA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT53b3JsZEZvcklk
ZW50aWZpZXIod29ybGRJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmxkKSB7CisgICAgICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIEV4Y2Vw
dGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdDogQ2Fubm90IGZpbmQg
c3BlY2lmaWVkIGNvbnRlbnQgd29ybGQiX3MgfSwgY2FsbGJhY2tJRCkpOworICAgICAgICByZXR1
cm47CisgICAgfQorCiAgICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCB3b3JsZCA9IG1ha2VSZWYoKndvcmxkKSwgZnJhbWUgPSBt
YWtlUmVmKCpmcmFtZSksIGNhbGxiYWNrSURdKFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0KSB7CiAg
ICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRWYWx1
ZTsKICAgICAgICAgaWYgKHJlc3VsdCkgewpAQCAtMzQwMiwxNiArMzQwOCwxNyBAQCB2b2lkIFdl
YlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmIHBhcmFtZXRlcgogICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhlY3V0
ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgpLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12b2lk
IFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGRO
YW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJ
bk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cywgY29uc3Qgc3RkOjpwYWlyPHVpbnQ2NF90LCBTdHJpbmc+JiB3b3JsZERhdGEsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKLSAgICBydW5KYXZhU2NyaXB0KG1haW5XZWJGcmFtZSgpLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOworICAgIG1fdXNlckNvbnRl
bnRDb250cm9sbGVyLT5hZGRVc2VyQ29udGVudFdvcmxkKHdvcmxkRGF0YSk7CisgICAgcnVuSmF2
YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGREYXRhLmZp
cnN0LCBjYWxsYmFja0lEKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5GcmFt
ZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9y
Y2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFdlYkZyYW1lKiBm
cmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAgIEFT
U0VSVChtYWluV2ViRnJhbWUoKSAhPSBmcmFtZSk7Ci0gICAgcnVuSmF2YVNjcmlwdChmcmFtZSwg
eyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSwgV1RGOjpu
dWxsb3B0LCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCB7IHNjcmlwdCwg
ZmFsc2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9LCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OmlkZW50aWZpZXJGb3JOb3JtYWxXb3JsZCgpLCBjYWxsYmFja0lEKTsKIH0KIAog
dm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjYTRjOTc0
MTgwM2U2MzdhZjFjODMwZmUyNjNjMThkZjMwYTA3OWE1Li5kMTdiMjRiYjRjZmZiMzQ3MjE4Njkx
MGU5M2M1ODg1YTMyNTQwOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCkBAIC0xNDQxLDggKzE0NDEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0U2Vs
ZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFNvdXJjZUZv
ckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBn
ZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQp
OwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFTY3Jp
cHRQYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2FsbGJh
Y2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3
b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSos
IFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIHVpbnQ2NF90IHdvcmxkSWRlbnRp
ZmllciwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBzdGQ6OnBh
aXI8dWludDY0X3QsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBy
dW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0cmlu
ZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBmb3JjZVJl
cGFpbnQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50UmVj
dCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qgb3B0
aW9ucywgQ2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlOTBlMzFiMWIzNWY2NjIyOTVjMjEyNjdm
NjEzYzkxNWNmMzdmOWQ2Li43MTRmZjliODFlNjdhZjQ2MGFmMjA2ZGEzZGQ3NjlmZmEwNzM2NjE3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1l
c3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KQEAgLTIwNCw3ICsyMDQsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdD
b21tYW5kKGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQog
ICAgIEdldFNlbGVjdGlvbkFzV2ViQXJjaGl2ZURhdGEoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiAgICAgR2V0U291cmNlRm9yRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZy
YW1lSUQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEdldFdlYkFyY2hpdmVP
ZkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKLSAgICBSdW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChz
dHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMgcGFyYW1ldGVycywgT3B0aW9u
YWw8U3RyaW5nPiB3b3JsZE5hbWUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQorICAg
IFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmlu
Zz4gd29ybGQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIFJ1bkphdmFTY3Jp
cHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBTdHJpbmcgc2NyaXB0
LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ICAgIEZvcmNlUmVwYWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIApkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDA1N2JhN2QzNTU5
OGUyYmNkZjRkNDBlMjgzOGYyNzMyYjUzZDhiYWMuLjY0NDhmMWE2NjYyYmMxODEzNDQ5NWFlNGY1
OTg1YmMzZGU3MTgzNDQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wMS0xNSAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdLQ29udGVudFdvcmxkIFNQSSwgYW5kIHVz
ZSBpdCBpbiBKYXZhU2NyaXB0IGV4ZWN1dGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjMxMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVXBkYXRlIHByZXZpb3VzIGNhbGxBc3luY0Z1
bmN0aW9uIGNhbGxzIHdpdGggdGhlIG5ldyBzaWduYXR1cmUuCisgICAgICAgIEFkZCB0ZXN0cyBm
b3IgbmV3IF9XS0NvbnRlbnRXb3JsZCBjbGFzcyBhbmQgaXRzIGJlaGF2aW9yIHdpdGggcmVnYXJk
IHRvIGV4ZWN1dGluZyBKYXZhU2NyaXB0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1tOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
dHJ5R0NQcm9taXNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2Ny
aXB0Lm1tOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2NvYS9U
ZXN0V0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgb2JqZWN0QnlDYWxsaW5nQXN5
bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmVycm9yOl0pOgorCiAyMDIwLTAxLTA5ICBEYXZpZCBL
aWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0VGVzdFJ1bm5lciBs
ZWFrcyBvYmplY3RzIGluIGEgdG9wLWxldmVsIGF1dG9yZWxlYXNlUG9vbCB0aGF0J3MgbmV2ZXIg
Y2xlYXJlZApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Bc3luY0Z1bmN0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9Bc3luY0Z1bmN0aW9uLm1tCmluZGV4IDA5Y2FmZTQ3OTY4MmQ3MzgyODZkODgwYmZlYjdkYzY2
MjNmOGFkODAuLjc4Y2RkNzcyMDQ3NWVmYzA5YTIzNzQwY2U4MDg2NzNhYmM2OTQ0YTUgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNGdW5jdGlv
bi5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVu
Y3Rpb24ubW0KQEAgLTI5LDYgKzI5LDcgQEAKICNpbXBvcnQgIlRlc3QuaCIKICNpbXBvcnQgIlRl
c3RXS1dlYlZpZXcuaCIKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1w
b3J0IDxXZWJLaXQvX1dLQ29udGVudFdvcmxkLmg+CiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKIApAQCAtMTgzLDcgKzE4NCw3IEBAIHN0YXRpYyB2b2lkIHRyeUdDUHJvbWlzZShXS1dlYlZp
ZXcgKndlYlZpZXcsIGJvb2wmIGRvbmUpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TU3RyaW5n
ICpmdW5jdGlvbkJvZHkgPSBAInJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCBy
ZWplY3QpIHsgfSkiOwotICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjpmdW5jdGlvbkJv
ZHkgd2l0aEFyZ3VtZW50czpuaWwgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlv
bjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQu
cGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKICAgICAgICAgRVhQRUNU
X1RSVUUoZXJyb3IgIT0gbmlsKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlw
dGlvbl0gY29udGFpbnNTdHJpbmc6QCJubyBsb25nZXIgcmVhY2hhYmxlIl0pOwpAQCAtMjAwLDcg
KzIwMSw3IEBAIFRFU1QoQXN5bmNGdW5jdGlvbiwgUHJvbWlzZSkKICAgICBOU1N0cmluZyAqZnVu
Y3Rpb25Cb2R5ID0gQCJyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0
KSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKXsgcmVzb2x2ZSg0MikgfSwgMCk7IH0pIjsKIAogICAg
IGJvb2wgZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjpmdW5j
dGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1
bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRG
dW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpfV0tDb250ZW50
V29ybGQucGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwg
TlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgICAgICBF
WFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOwogICAg
ICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpANDJdKTsKQEAgLTIxMiw3
ICsyMTMsNyBAQCBURVNUKEFzeW5jRnVuY3Rpb24sIFByb21pc2UpCiAgICAgZnVuY3Rpb25Cb2R5
ID0gQCJyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IHNldFRp
bWVvdXQoZnVuY3Rpb24oKXsgcmVqZWN0KCdSZWplY3RlZCEnKSB9LCAwKTsgfSkiOwogCiAgICAg
ZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjpmdW5jdGlvbkJv
ZHkgd2l0aEFyZ3VtZW50czpuaWwgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlv
bjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQu
cGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKICAgICAgICAgRVhQRUNU
X1RSVUUoZXJyb3IgIT0gbmlsKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW1tlcnJvciBkZXNjcmlw
dGlvbl0gY29udGFpbnNTdHJpbmc6QCJSZWplY3RlZCEiXSk7CkBAIC0yMjMsNyArMjI0LDcgQEAg
VEVTVChBc3luY0Z1bmN0aW9uLCBQcm9taXNlKQogICAgIGZ1bmN0aW9uQm9keSA9IEAibGV0IHAg
PSBuZXcgUHJveHkoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7IHNldFRpbWVvdXQoZnVuY3Rp
b24oKSB7IHJlc29sdmUoNDIpOyB9LCAwKTsgfSwgeyB9KTsgcmV0dXJuIHsgdGhlbjogcCB9OyI7
CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NhbGxBc3luY0Z1bmN0aW9uOmZ1
bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJl
c3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5jSmF2YVNjcmlw
dEZ1bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBpbldvcmxkOl9XS0NvbnRl
bnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CiAgICAgICAg
IEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSk7CiAg
ICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVyOkA0Ml0pOwpAQCAtMjM0
LDcgKzIzNSw3IEBAIFRFU1QoQXN5bmNGdW5jdGlvbiwgUHJvbWlzZSkKICAgICBmdW5jdGlvbkJv
ZHkgPSBAImxldCBwID0gbmV3IFByb3h5KGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCkgeyByZWplY3QoJ1JlamVjdGVkIScpOyB9LCAwKTsgfSwgeyB9KTsg
cmV0dXJuIHsgdGhlbjogcCB9OyI7CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcg
X2NhbGxBc3luY0Z1bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0
aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbd2ViVmll
dyBfY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRz
Om5pbCBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25I
YW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1Rf
TlVMTChyZXN1bHQpOwogICAgICAgICBFWFBFQ1RfVFJVRShlcnJvciAhPSBuaWwpOwogICAgICAg
ICBFWFBFQ1RfVFJVRShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIlJlamVj
dGVkISJdKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KaW5kZXggOTg0
YmMzNmI2ZDI1ZjVlNGExOTlhNTViMWY1OWM4YzhjZDhhYWE1Mi4uOGM3MGMyNGNjNzBhMDBkN2Fl
NWIyZGIxNTFlNmY5OWY0ZDI2MGVkNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFT
Y3JpcHQubW0KQEAgLTI5LDggKzI5LDEwIEBACiAjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oIgot
I2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlldy5oPgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgog
I2ltcG9ydCA8V2ViS2l0L1dLRXJyb3JQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJW
aWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0NvbnRlbnRXb3JsZC5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogCiBzdGF0aWMgYm9vbCBpc0RvbmU7CkBAIC0xMTEsMyArMTEz
LDExNCBAQCBURVNUKFdLV2ViVmlldywgRXZhbHVhdGVKYXZhU2NyaXB0RXJyb3JDYXNlcykKICAg
ICBpc0RvbmUgPSBmYWxzZTsKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7
CiB9CisKK1RFU1QoV0tXZWJWaWV3LCBXS0NvbnRlbnRXb3JsZCkKK3sKKyAgICBFWFBFQ1RfTlVM
TChfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZC5uYW1lKTsKKyAgICBFWFBFQ1RfTlVM
TChfV0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkLm5hbWUpOworICAgIEVYUEVDVF9G
QUxTRShfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCA9PSBfV0tDb250ZW50V29ybGQu
ZGVmYXVsdENsaWVudFdvcmxkKTsKKworICAgIF9XS0NvbnRlbnRXb3JsZCAqbmFtZWRXb3JsZCA9
IFtfV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIk5hbWUiXTsKKyAgICBFWFBFQ1RfVFJV
RShbbmFtZWRXb3JsZC5uYW1lIGlzRXF1YWxUb1N0cmluZzpAIk5hbWUiXSk7CisgICAgRVhQRUNU
X0VRKG5hbWVkV29ybGQsIFtfV0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIk5hbWUiXSk7
Cit9CisKK1RFU1QoV0tXZWJWaWV3LCBFdmFsdWF0ZUphdmFTY3JpcHRJbldvcmxkcykKK3sKKyAg
ICBSZXRhaW5QdHI8VGVzdFdLV2ViVmlldz4gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApXSk7Cisg
ICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGh0bWw+PC9odG1sPiJd
OworCisgICAgLy8gU2V0IGEgdmFyaWFibGUgaW4gdGhlIG1haW4gd29ybGQgdmlhICJub3JtYWwi
IGV2YWx1YXRlSmF2YVNjcmlwdAorICAgIGlzRG9uZSA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGV2
YWx1YXRlSmF2YVNjcmlwdDpAInZhciBmb28gPSAnYmFyJyIgY29tcGxldGlvbkhhbmRsZXI6Xihp
ZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAg
fV07CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICAvLyBWZXJpZnkgdGhhdCB2YWx1ZSBpcyB2
aXNpYmxlIHdoZW4gZXZhbHVhdGluZyBpbiB0aGUgcGFnZUNvbnRlbnRXb3JsZAorICAgIFt3ZWJW
aWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJmb28iIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBh
Z2VDb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVy
cm9yKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5n
OkAiYmFyIl0pOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9
IGZhbHNlOworCisgICAgLy8gVmVyaWZ5IHRoYXQgdmFsdWUgaXMgbm90IHZpc2libGUgd2hlbiBl
dmFsdWF0aW5nIGluIHRoZSBkZWZhdWx0Q2xpZW50V29ybGQKKyAgICBbd2ViVmlldyBfZXZhbHVh
dGVKYXZhU2NyaXB0OkAiZm9vIiBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50
V29ybGQgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7Cisg
ICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAg
fV07CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICAvLyBWZXJpZnkgdGhhdCB2YWx1ZSBpcyB2
aXNpYmxlIHdoZW4gY2FsbGluZyBhIGZ1bmN0aW9uIGluIHRoZSBwYWdlQ29udGVudFdvcmxkCisg
ICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpAInJldHVybiBmb28iIHdp
dGhBcmd1bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50V29ybGQg
Y29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7
CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvU3RyaW5nOkAiYmFyIl0pOwor
ICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9IGZhbHNlOworCisg
ICAgLy8gVmVyaWZ5IHRoYXQgdmFsdWUgaXMgbm90IHZpc2libGUgd2hlbiBjYWxsaW5nIGEgZnVu
Y3Rpb24gaW4gdGhlIGRlZmF1bHRDbGllbnRXb3JsZAorICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNK
YXZhU2NyaXB0RnVuY3Rpb246QCJyZXR1cm4gZm9vIiB3aXRoQXJndW1lbnRzOm5pbCBpbldvcmxk
Ol9XS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZd
IChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3Vs
dCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNEb25lID0gZmFsc2U7
CisKKyAgICAvLyBTZXQgYSB2YXJpYmFsZSB2YWx1ZSBpbiBhIG5hbWVkIHdvcmxkLgorICAgIFJl
dGFpblB0cjxfV0tDb250ZW50V29ybGQ+IG5hbWVkV29ybGQgPSBbX1dLQ29udGVudFdvcmxkIHdv
cmxkV2l0aE5hbWU6QCJOYW1lZFdvcmxkIl07CisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNj
cmlwdDpAInZhciBiYXIgPSBiYXoiIGluV29ybGQ6bmFtZWRXb3JsZC5nZXQoKSBjb21wbGV0aW9u
SGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05V
TEwocmVzdWx0KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUg
PSBmYWxzZTsKKworICAgIC8vIFNldCBhIGdsb2JhbCB2YXJpYmFsZSB2YWx1ZSBpbiBhIG5hbWVk
IHdvcmxkIHZpYSBhIGZ1bmN0aW9uIGNhbGwuCisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFT
Y3JpcHRGdW5jdGlvbjpAIndpbmRvdy5iYXogPSBiYXQiIHdpdGhBcmd1bWVudHM6bmlsIGluV29y
bGQ6bmFtZWRXb3JsZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgRVhQRUNU
X05VTEwoZXJyb3IpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9u
ZSA9IGZhbHNlOworCisgICAgLy8gVmVyaWZ5IHRoZXkgYXJlIHRoZXJlIGluIHRoYXQgbmFtZWQg
d29ybGQuCisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAImJhciIgaW5Xb3JsZDpu
YW1lZFdvcmxkLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICpl
cnJvcikgeworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3Ry
aW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmlu
ZzpAImJheiJdKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUg
PSBmYWxzZTsKKworICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuYmF6
IiBpbldvcmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQs
IE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNF
cXVhbFRvU3RyaW5nOkAiYmF0Il0pOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgLy8gVmVyaWZ5IHRoZXkgYXJlbid0IHRoZXJlIGlu
IHRoZSBkZWZhdWx0Q2xpZW50V29ybGQuCisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlw
dDpAImJhciIgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBs
ZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBF
Q1RfTlVMTChyZXN1bHQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlz
RG9uZSA9IGZhbHNlOworCisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRv
dy5iYXoiIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0
aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNU
X05VTEwocmVzdWx0KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0Rv
bmUgPSBmYWxzZTsKKworICAgIC8vIFZlcmlmeSB0aGV5IGFyZW4ndCB0aGVyZSBpbiB0aGUgcGFn
ZUNvbnRlbnRXb3JsZC4KKyAgICBbd2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OkAiYmFyIiBp
bldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVy
Ol4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1
bHQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9IGZhbHNl
OworCisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAIndpbmRvdy5iYXoiIGluV29y
bGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6Xihp
ZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7
CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNEb25lID0gZmFsc2U7Cit9
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KaW5kZXggNzRhZDU4
MTI1MDE2YzAzMWY4YzVlNGVkYmI5NDhlMTgwNWViNTUwZS4uMjAyODE0YTFlOWY3NzBlYzk2ZDlk
YmI3ZDQ3ZWRhODJlNTYwM2Y3YiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3Lm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0Nv
bmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV2ViS2l0UHJpdmF0ZS5oPgog
I2ltcG9ydCA8V2ViS2l0L19XS0FjdGl2YXRlZEVsZW1lbnRJbmZvLmg+CisjaW1wb3J0IDxXZWJL
aXQvX1dLQ29udGVudFdvcmxkLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KICNpbXBvcnQgPHd0Zi9SZXRh
aW5QdHIuaD4KQEAgLTE4NSw3ICsxODYsNyBAQCAtIChpZClvYmplY3RCeUNhbGxpbmdBc3luY0Z1
bmN0aW9uOihOU1N0cmluZyAqKXNjcmlwdCB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcgogICAg
ICAgICAqZXJyb3JPdXQgPSBuaWw7CiAKICAgICBSZXRhaW5QdHI8aWQ+IGV2YWxSZXN1bHQ7Ci0g
ICAgW3NlbGYgX2NhbGxBc3luY0Z1bmN0aW9uOnNjcmlwdCB3aXRoQXJndW1lbnRzOmFyZ3VtZW50
cyBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAg
ICBbc2VsZiBfY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOnNjcmlwdCB3aXRoQXJndW1lbnRz
OmFyZ3VtZW50cyBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBs
ZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBl
dmFsUmVzdWx0ID0gcmVzdWx0OwogICAgICAgICBpZiAoZXJyb3JPdXQpCiAgICAgICAgICAgICAq
ZXJyb3JPdXQgPSBbZXJyb3IgcmV0YWluXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387864</attachid>
            <date>2020-01-15 16:29:02 -0800</date>
            <delta_ts>2020-01-15 17:02:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206310-20200115162901.patch</filename>
            <type>text/plain</type>
            <size>68419</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0Mjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMyYmFhYTVkZDdmNjI1MTIz
NDc0Y2UwNmVjNTFiOWVkMzVlMDRjYzUuLjA1ODg1MDlkNjI3ZDljNmYwMDM2OGQ2MDlmMTIxMzhm
MDhiM2Q3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMjAtMDEtMTUgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS0NvbnRlbnRXb3JsZCBT
UEksIGFuZCB1c2UgaXQgaW4gSmF2YVNjcmlwdCBleGVjdXRpb24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzMTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKyAg
ICAgICAgCisgICAgICAgIF9XS0NvbnRlbnRXb3JsZCBpcyBhIFVJIFByb2Nlc3Mgd3JhcHBlciBm
b3IgYW4gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZC4KKyAgICAgICAgTXVjaCBsaWtlIF9XS1Vz
ZXJDb250ZW50V29ybGQgaXMuIEJ1dCBkaWZmZXJlbnQgaW4gdGhhdDoKKyAgICAgICAgLSBJdHMg
QVBJcyBhcmUgbmFtZWQgZGlmZmVyZW50IHRoaW5ncworICAgICAgICAtIE9ubHkgb25lIHVuaXF1
ZSBpbnN0YW5jZSBwZXIgc3RyaW5nIG5hbWUKKyAgICAgICAgLSBJdCBpcyB1c2VkIHdpdGggZXZh
bHVhdGVKYXZhc2NyaXB0OiBhbmQgY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOiBpbnN0ZWFk
IG9mIFdLVXNlckNvbnRlbnRDb250cm9sbGVyLgorICAgICAgICAKKyAgICAgICAgQnV0IF9XS0Nv
bnRlbnRXb3JsZCBhbmQgX1dLVXNlckNvbnRlbnRXb3JsZCBkbyBoYXZlIHRvIHdvcmsgdG9nZXRo
ZXIgYSBsaXR0bGUgYml0IHRvIGF2b2lkIGNvbmZsaWN0cyBpbiB0aGUgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgCisgICAgICAgIFRoZSBuZXcgdmVyc2lvbnMgb2YgZXZhbHVhdGVKYXZhc2NyaXB0OiBh
bmQgY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOiBhcmUgYWxzbyBpbmNsdWRlZCwgYXMgd2Vs
bCBhcyBBUEkgdGVzdHMgZm9yIGFsbCB0aGUgbmV3IHN0dWZmLgorCisgICAgICAgICogU2hhcmVk
L0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tOgor
ICAgICAgICAoQVBJOjpPYmplY3Q6Om5ld09iamVjdCk6CisKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRXb3JsZC5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmNwcC4KKyAgICAgICAgKEFQSTo6Q29udGVudFdv
cmxkOjpzaGFyZWRXb3JsZFdpdGhOYW1lKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkOjpw
YWdlQ29udGVudFdvcmxkKToKKyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkOjpkZWZhdWx0Q2xp
ZW50V29ybGQpOgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZCk6Cisg
ICAgICAgIChBUEk6OkNvbnRlbnRXb3JsZDo6fkNvbnRlbnRXb3JsZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaC4KKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHA6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50
V29ybGQ6OmdlbmVyYXRlSWRlbnRpZmllcik6CisgICAgICAgIChBUEk6OlVzZXJDb250ZW50V29y
bGQ6OlVzZXJDb250ZW50V29ybGQpOgorICAgICAgICAoQVBJOjpnZW5lcmF0ZUlkZW50aWZpZXIp
OiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5o
OgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAg
ICgtW1dLV2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmFzQXN5bmNGdW5jdGlvbjp3
aXRoQXJndW1lbnRzOmZvcmNlVXNlckdlc3R1cmU6Y29tcGxldGlvbkhhbmRsZXI6aW5Xb3JsZDpd
KToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246d2l0
aEFyZ3VtZW50czppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dl
YlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDppbldvcmxkOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2VyR2VzdHVy
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUph
dmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTpj
b21wbGV0aW9uSGFuZGxlcjpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYWxs
QXN5bmNGdW5jdGlvbjp3aXRoQXJndW1lbnRzOmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVk
LgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGQuaDogQWRkZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGQubW06IENvcGllZCBm
cm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmguCisg
ICAgICAgICgrW19XS0NvbnRlbnRXb3JsZCBwYWdlQ29udGVudFdvcmxkXSk6CisgICAgICAgICgr
W19XS0NvbnRlbnRXb3JsZCBkZWZhdWx0Q2xpZW50V29ybGRdKToKKyAgICAgICAgKCtbX1dLQ29u
dGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6XSk6CisgICAgICAgICgtW19XS0NvbnRlbnRXb3JsZCBk
ZWFsbG9jXSk6CisgICAgICAgICgtW19XS0NvbnRlbnRXb3JsZCBuYW1lXSk6CisgICAgICAgICgt
W19XS0NvbnRlbnRXb3JsZCBfYXBpT2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tDb250ZW50V29ybGRJbnRlcm5hbC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oLgorCisgICAgICAgICogVUlQcm9j
ZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcDoKKyAgICAg
ICAgKiBVSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHku
aDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKworICAgICAgICAqIFdlYlBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6d29ybGRNYXApOgorICAgICAgICAoV2ViS2l0OjpXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6OndvcmxkRm9ySWRlbnRpZmllcik6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmg6CisKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OnJ1bkphdmFTY3JpcHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpydW5K
YXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OnJ1bkphdmFTY3JpcHRJbkZyYW1lKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjAtMDEtMDkgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT046IFsgTWFjIHdrMiBdIGZhc3QvbWVkaWFz
dHJlYW0vY2FwdHVyZUluR1BVUHJvY2Vzcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCmluZGV4IDhiNzFmZTBkMmY1M2ZmMGQzODVmZGMyOGU5
YWFkODkyNzRmNWQwNDcuLjcyODEwOGEwNWZlZjJlMWIyOTY0OGZlZDhhMmIxMzQ4NDQyYjg2ODkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKQEAgLTEwOSw2ICsxMDksNyBAQCBw
dWJsaWM6CiAgICAgICAgIENvbnRlbnRSdWxlTGlzdCwKICAgICAgICAgQ29udGVudFJ1bGVMaXN0
QWN0aW9uLAogICAgICAgICBDb250ZW50UnVsZUxpc3RTdG9yZSwKKyAgICAgICAgQ29udGVudFdv
cmxkLAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIENvbnRleHRNZW51RWxlbWVu
dEluZm8sCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQ
SU9iamVjdC5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQppbmRl
eCBkYjY1ZTZmOWU0MDlkNDA3MTViNjk4ZWZiMjA2MDY5ZjllOWViYzBlLi40NDE0MDI4ZmVhMzhi
NjYwYmQ1NTI0NWJjMmJhMzU1NjIwNGJjOTgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9BUElPYmplY3QubW0KKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tCkBAIC03MSw2ICs3MSw3IEBACiAjaW1wb3J0ICJfV0tBdHRhY2htZW50SW50
ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCIKICNpbXBv
cnQgIl9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmgiCisjaW1wb3J0ICJfV0tDb250
ZW50V29ybGRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQ3VzdG9tSGVhZGVyRmllbGRzSW50ZXJu
YWwuaCIKICNpbXBvcnQgIl9XS0Rvd25sb2FkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0V4cGVy
aW1lbnRhbEZlYXR1cmVJbnRlcm5hbC5oIgpAQCAtMzQwLDYgKzM0MSwxMCBAQCB2b2lkKiBPYmpl
Y3Q6Om5ld09iamVjdChzaXplX3Qgc2l6ZSwgVHlwZSB0eXBlKQogICAgICAgICB3cmFwcGVyID0g
W19XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5IGFsbG9jXTsKICAgICAgICAgYnJl
YWs7CiAKKyAgICBjYXNlIFR5cGU6OkNvbnRlbnRXb3JsZDoKKyAgICAgICAgd3JhcHBlciA9IFtf
V0tDb250ZW50V29ybGQgYWxsb2NdOworICAgICAgICBicmVhazsKKwogICAgIGNhc2UgVHlwZTo6
VXNlckNvbnRlbnRXb3JsZDoKICAgICAgICAgd3JhcHBlciA9IFtfV0tVc2VyQ29udGVudFdvcmxk
IGFsbG9jXTsKICAgICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJj
ZXMudHh0IGIvU291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dAppbmRleCAzMDZjZDFlNjkzNTY2MWFk
NDFjMDYwOTI4NDhiZjlhZjM2YjFiNzI2Li5jNDQzMmU1NWRkOTZhNzQ5MmEyYzZkNWFhOWViZjZi
ODg4ZjBiNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CisrKyBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlcy50eHQKQEAgLTMyMSw2ICszMjEsNyBAQCBVSVByb2Nlc3MvQVBJ
L0FQSUF0dGFjaG1lbnQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRSdWxlTGlzdC5jcHAK
IFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0QWN0aW9uLmNwcAogVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50UnVsZUxpc3RTdG9yZS5jcHAKK1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFdv
cmxkLmNwcAogVUlQcm9jZXNzL0FQSS9BUElDb250ZXh0TWVudUVsZW1lbnRJbmZvLmNwcAogVUlQ
cm9jZXNzL0FQSS9BUElEZWJ1Z2dhYmxlSW5mby5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJRXhwZXJp
bWVudGFsRmVhdHVyZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50V29ybGQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRXb3JsZC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM0NTQ3NmE0NmFhMjEyNjVmZTY2ZTdjOTgyZTVj
M2Q5M2MwMmQxMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElDb250ZW50V29ybGQuY3BwCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCisKKyNpbmNsdWRl
ICJBUElVc2VyQ29udGVudFdvcmxkLmgiCisKK25hbWVzcGFjZSBBUEkgeworCitzdGF0aWMgSGFz
aE1hcDxXVEY6OlN0cmluZywgQ29udGVudFdvcmxkKj4mIHNoYXJlZFdvcmxkTWFwKCkKK3sKKyAg
ICBzdGF0aWMgSGFzaE1hcDxXVEY6OlN0cmluZywgQ29udGVudFdvcmxkKj4qIHNoYXJlZE1hcCA9
IG5ldyBIYXNoTWFwPFdURjo6U3RyaW5nLCBDb250ZW50V29ybGQqPjsKKyAgICByZXR1cm4gKnNo
YXJlZE1hcDsKK30KKworUmVmPENvbnRlbnRXb3JsZD4gQ29udGVudFdvcmxkOjpzaGFyZWRXb3Js
ZFdpdGhOYW1lKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQoreworICAgIGF1dG8gcmVzdWx0ID0g
c2hhcmVkV29ybGRNYXAoKS5hZGQobmFtZSwgbnVsbHB0cik7CisgICAgaWYgKHJlc3VsdC5pc05l
d0VudHJ5KSB7CisgICAgICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBuZXcgQ29udGVudFdv
cmxkKG5hbWUpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKnJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpOworICAgIH0KKworICAgIHJldHVybiBtYWtlUmVmKCpyZXN1bHQuaXRlcmF0b3ItPnZhbHVl
KTsKK30KKworQ29udGVudFdvcmxkJiBDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKQor
eworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxSZWZQdHI8Q29udGVudFdvcmxkPj4gd29ybGQo
YWRvcHRSZWYobmV3IENvbnRlbnRXb3JsZChBUEk6OlVzZXJDb250ZW50V29ybGQ6Om5vcm1hbFdv
cmxkSWRlbnRpZmVyKCkpKSk7CisgICAgcmV0dXJuICp3b3JsZC5nZXQoKTsKK30KKworQ29udGVu
dFdvcmxkJiBDb250ZW50V29ybGQ6OmRlZmF1bHRDbGllbnRXb3JsZCgpCit7CisgICAgc3RhdGlj
IE5ldmVyRGVzdHJveWVkPFJlZlB0cjxDb250ZW50V29ybGQ+PiB3b3JsZChhZG9wdFJlZihuZXcg
Q29udGVudFdvcmxkKEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6Z2VuZXJhdGVJZGVudGlmaWVyKCkp
KSk7CisgICAgcmV0dXJuICp3b3JsZC5nZXQoKTsKK30KKworQ29udGVudFdvcmxkOjpDb250ZW50
V29ybGQoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpCisgICAgOiBtX2lkZW50aWZpZXIoQVBJOjpV
c2VyQ29udGVudFdvcmxkOjpnZW5lcmF0ZUlkZW50aWZpZXIoKSkKKyAgICAsIG1fbmFtZShuYW1l
KQoreworfQorCitDb250ZW50V29ybGQ6OkNvbnRlbnRXb3JsZCh1aW50NjRfdCBpZGVudGlmaWVy
KQorICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZpZXIpCit7Cit9CisKK0NvbnRlbnRXb3JsZDo6
fkNvbnRlbnRXb3JsZCgpCit7CisgICAgaWYgKG1fbmFtZS5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byB0YWtlbiA9IHNoYXJlZFdvcmxkTWFwKCkudGFrZShtX25hbWUpOwor
ICAgIEFTU0VSVF9VTlVTRUQodGFrZW4sIHRha2VuID09IHRoaXMpOworfQorCit9IC8vIG5hbWVz
cGFjZSBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250
ZW50V29ybGQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElDb250ZW50V29ybGQu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi41YjY3YmYzNThkYjgzZjBiMDJmOWYwOWVhMmIzMGU3ODJlNWFjMjFiCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRX
b3JsZC5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIkFQSU9iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCitu
YW1lc3BhY2UgQVBJIHsKKworY2xhc3MgQ29udGVudFdvcmxkIGZpbmFsIDogcHVibGljIEFQSTo6
T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6Q29udGVudFdvcmxkPiB7CitwdWJsaWM6Cisg
ICAgc3RhdGljIFJlZjxDb250ZW50V29ybGQ+IHNoYXJlZFdvcmxkV2l0aE5hbWUoY29uc3QgV1RG
OjpTdHJpbmcmKTsKKyAgICBzdGF0aWMgQ29udGVudFdvcmxkJiBwYWdlQ29udGVudFdvcmxkKCk7
CisgICAgc3RhdGljIENvbnRlbnRXb3JsZCYgZGVmYXVsdENsaWVudFdvcmxkKCk7CisKKyAgICB2
aXJ0dWFsIH5Db250ZW50V29ybGQoKTsKKworICAgIGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV9uYW1lOyB9CisgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorCisgICAgc3RkOjpwYWlyPHVpbnQ2NF90LCBXVEY6
OlN0cmluZz4gd29ybGREYXRhKCkgeyByZXR1cm4geyBtX2lkZW50aWZpZXIsIG1fbmFtZSB9OyB9
CisKK3ByaXZhdGU6CisgICAgQ29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAg
Q29udGVudFdvcmxkKHVpbnQ2NF90IGlkZW50aWZpZXIpOworCisgICAgdWludDY0X3QgbV9pZGVu
dGlmaWVyOworICAgIFdURjo6U3RyaW5nIG1fbmFtZTsKK307CisKK30gLy8gbmFtZXNwYWNlIEFQ
SQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50
V29ybGQuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29y
bGQuY3BwCmluZGV4IDRkYWRmYmZiZDJkZTIxMDViNDk3MWE2NWZiNzhjMjAyZDExODAxOTYuLmE4
NWExNWIzYWU2NWRiNGEyZDJhYjZlZGMxZmY5NmVjOTE4MDUzZGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5jcHAKQEAgLTI4LDEx
ICsyOCw5IEBACiAKIG5hbWVzcGFjZSBBUEkgewogCi1zdGF0aWMgY29uc3QgdWludDY0X3Qgbm9y
bWFsV29ybGRJZGVudGlmZXIgPSAxOwotCi1zdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVJZGVudGlm
aWVyKCkKK3VpbnQ2NF90IFVzZXJDb250ZW50V29ybGQ6OmdlbmVyYXRlSWRlbnRpZmllcigpCiB7
Ci0gICAgc3RhdGljIHVpbnQ2NF90IGlkZW50aWZpZXIgPSBub3JtYWxXb3JsZElkZW50aWZlcjsK
KyAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IG5vcm1hbFdvcmxkSWRlbnRpZmVyKCk7
CiAKICAgICByZXR1cm4gKytpZGVudGlmaWVyOwogfQpAQCAtNTUsNyArNTMsNyBAQCBVc2VyQ29u
dGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJiBuYW1lKQogfQog
CiBVc2VyQ29udGVudFdvcmxkOjpVc2VyQ29udGVudFdvcmxkKEZvck5vcm1hbFdvcmxkT25seSkK
LSAgICA6IG1faWRlbnRpZmllcihub3JtYWxXb3JsZElkZW50aWZlcikKKyAgICA6IG1faWRlbnRp
Zmllcihub3JtYWxXb3JsZElkZW50aWZlcigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaAppbmRleCA4NDBmZTFjMzAzZTc2
M2ZkNmUwZWVhNWRlMTFiNGE5OWFlZDRiNjRjLi5mZTlmYzU0OGJkZWE0YzZmNTE4NzE3ZGYyNTM1
YWM2MzY1YjFkYTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlckNvbnRlbnRXb3JsZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElV
c2VyQ29udGVudFdvcmxkLmgKQEAgLTMxLDYgKzMxLDggQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAK
K2NsYXNzIENvbnRlbnRXb3JsZDsKKwogY2xhc3MgVXNlckNvbnRlbnRXb3JsZCBmaW5hbCA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OlVzZXJDb250ZW50V29ybGQ+
IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFVzZXJDb250ZW50V29ybGQ+IHdvcmxkV2l0aE5h
bWUoY29uc3QgV1RGOjpTdHJpbmcmKTsKQEAgLTQxLDEyICs0MywxOCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KICAgICB1
aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKKyAg
ICBzdGF0aWMgdWludDY0X3Qgbm9ybWFsV29ybGRJZGVudGlmZXIoKSB7IHJldHVybiAxOyB9Owor
CiBwcml2YXRlOgorICAgIGZyaWVuZCBjbGFzcyBDb250ZW50V29ybGQ7CisKICAgICBVc2VyQ29u
dGVudFdvcmxkKGNvbnN0IFdURjo6U3RyaW5nJik7CiAKICAgICBlbnVtIGNsYXNzIEZvck5vcm1h
bFdvcmxkT25seSB7IE5vcm1hbFdvcmxkIH07CiAgICAgVXNlckNvbnRlbnRXb3JsZChGb3JOb3Jt
YWxXb3JsZE9ubHkpOwogCisgICAgc3RhdGljIHVpbnQ2NF90IGdlbmVyYXRlSWRlbnRpZmllcigp
OworCiAgICAgdWludDY0X3QgbV9pZGVudGlmaWVyOwogICAgIFdURjo6U3RyaW5nIG1fbmFtZTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpp
bmRleCBkMzI5ZDFlNmNlNGUwOGUwNDQyMzY3ZGNjNTA5OTQ3YzdiYmViZjlkLi4yMDZmOTJhNDY1
OWE1MTFiZmYzMWMxNzRkYTA2MmE5MzcyMmFlZTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTkxLDYgKzkxLDcgQEAKICNpbXBvcnQg
IldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oIgogI2ltcG9ydCAiV2ViVmlld0ltcGwuaCIKICNp
bXBvcnQgIl9XS0FjdGl2YXRlZEVsZW1lbnRJbmZvSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0Nv
bnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVn
YXRlLmgiCiAjaW1wb3J0ICJfV0tGaW5kRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0ZyYW1lSGFu
ZGxlSW50ZXJuYWwuaCIKQEAgLTgzMyw3ICs4MzQsNyBAQCBzdGF0aWMgV0tFcnJvckNvZGUgY2Fs
bGJhY2tFcnJvckNvZGUoV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKQogCiAtICh2
b2lkKWV2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgog
ewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5j
RnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxl
dGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFT
Y3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpu
aWwgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRs
ZXIgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZF07CiB9CiAKIHN0YXRp
YyBib29sIHZhbGlkYXRlQXJndW1lbnQoaWQgYXJndW1lbnQpCkBAIC04NzAsNyArODcxLDcgQEAg
c3RhdGljIGJvb2wgdmFsaWRhdGVBcmd1bWVudChpZCBhcmd1bWVudCkKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLS0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2Ny
aXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjooQk9PTClhc0FzeW5jRnVuY3Rpb24gd2l0aEFyZ3Vt
ZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBmb3JjZVVzZXJH
ZXN0dXJlOihCT09MKWZvcmNlVXNlckdlc3R1cmUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4p
KGlkLCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCistICh2b2lkKV9ldmFsdWF0ZUphdmFT
Y3JpcHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246KEJPT0wp
YXNBc3luY0Z1bmN0aW9uIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAqLCBp
ZD4gKilhcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTooQk9PTClmb3JjZVVzZXJHZXN0dXJlIGNv
bXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxl
ciBpbldvcmxkOihfV0tDb250ZW50V29ybGQgKil3b3JsZAogewogICAgIGF1dG8gaGFuZGxlciA9
IGFkb3B0TlMoW2NvbXBsZXRpb25IYW5kbGVyIGNvcHldKTsKIApAQCAtOTA3LDcgKzkwOCw3IEBA
IC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5n
IGFzQXN5bmNGdW5jdGlvbjooQk9PTClhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBf
cGFnZS0+cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJh
bWV0ZXJzIHsgamF2YVNjcmlwdFN0cmluZywgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJn
dW1lbnRzTWFwKSwgISFmb3JjZVVzZXJHZXN0dXJlIH0sIFtoYW5kbGVyXShBUEk6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJDb3JlOjpF
eGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJhY2s6OkVy
cm9yIGVycm9yQ29kZSkgeworICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3Jp
cHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyB7IGphdmFTY3JpcHRTdHJp
bmcsICEhYXNBc3luY0Z1bmN0aW9uLCBXVEZNb3ZlKGFyZ3VtZW50c01hcCksICEhZm9yY2VVc2Vy
R2VzdHVyZSB9LCAqd29ybGQtPl9jb250ZW50V29ybGQuZ2V0KCksIFtoYW5kbGVyXShBUEk6OlNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRpb25hbDxXZWJD
b3JlOjpFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OlNjcmlwdFZhbHVlQ2FsbGJh
Y2s6OkVycm9yIGVycm9yQ29kZSkgewogICAgICAgICBpZiAoIWhhbmRsZXIpCiAgICAgICAgICAg
ICByZXR1cm47CiAKQEAgLTE1MjMsNiArMTUyNCwxNiBAQCAtIChVSVRleHRJbnB1dEFzc2lzdGFu
dEl0ZW0gKilpbnB1dEFzc2lzdGFudEl0ZW0KIAogI3ByYWdtYSBtYXJrIC0gbWFjT1MvaU9TIFdL
UHJpdmF0ZQogCistICh2b2lkKV9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246KE5TU3RyaW5n
ICopamF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcg
KiwgaWQ+ICopYXJndW1lbnRzIGluV29ybGQ6KF9XS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3Js
ZCBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0
aW9uSGFuZGxlcgoreworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0
cmluZyBhc0FzeW5jRnVuY3Rpb246WUVTIHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGZvcmNlVXNl
ckdlc3R1cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyIGluV29ybGQ6
Y29udGVudFdvcmxkXTsKK30KKworLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmlu
ZyAqKWphdmFTY3JpcHRTdHJpbmcgaW5Xb3JsZDooX1dLQ29udGVudFdvcmxkICopY29udGVudFdv
cmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9u
SGFuZGxlcgoreworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmlu
ZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpZ
RVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRsZXIgaW5Xb3JsZDpjb250ZW50V29y
bGRdOworfQorCiAtIChfV0tTZWxlY3Rpb25BdHRyaWJ1dGVzKV9zZWxlY3Rpb25BdHRyaWJ1dGVz
CiB7CiAgICAgcmV0dXJuIF9zZWxlY3Rpb25BdHRyaWJ1dGVzOwpAQCAtMjAwNiwxMSArMjAxNyw2
IEBAIC0gKHZvaWQpX3Rha2VQREZTbmFwc2hvdFdpdGhDb25maWd1cmF0aW9uOihXS1NuYXBzaG90
Q29uZmlndXJhdGlvbiAqKXNuYXBzaG90Q29uCiAgICAgW3NlbGYgY3JlYXRlUERGV2l0aENvbmZp
Z3VyYXRpb246cGRmQ29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFu
ZGxlcl07CiB9CiAKLS0gKHZvaWQpX2NhbGxBc3luY0Z1bmN0aW9uOihOU1N0cmluZyAqKWphdmFT
Y3JpcHRTdHJpbmcgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5PE5TU3RyaW5nICosIGlkPiAq
KWFyZ3VtZW50cyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9y
KSljb21wbGV0aW9uSGFuZGxlcgotewotICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2
YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVuY3Rpb246WUVTIHdpdGhBcmd1bWVudHM6YXJndW1lbnRz
IGZvcmNlVXNlckdlc3R1cmU6WUVTIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVy
XTsKLX0KLQogLSAoTlNEYXRhICopX3Nlc3Npb25TdGF0ZURhdGEKIHsKICAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQgbm90IHVzZSB0aGUgbGVnYWN5IHNlc3Npb24gc3RhdGUgZW5jb2Rlci4KQEAg
LTIxNTMsNyArMjE1OSw3IEBAIC0gKHZvaWQpX2lzSklURW5hYmxlZDoodm9pZCheKShCT09MKSlj
b21wbGV0aW9uSGFuZGxlcgogCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHRXaXRob3V0VXNl
ckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKIHsKLSAgICBbc2VsZiBf
ZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOk5PIHdp
dGhBcmd1bWVudHM6bmlsIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlvbkhhbmRsZXI6Y29t
cGxldGlvbkhhbmRsZXJdOworICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlw
dFN0cmluZyBhc0FzeW5jRnVuY3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2Vz
dHVyZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlciBpbldvcmxkOl9XS0Nv
bnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkXTsKIH0KIAogLSAodm9pZClfdXBkYXRlV2Vic2l0
ZVBvbGljaWVzOihfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmlu
ZGV4IGQzZmU3MDcyMGE3M2ZhMTFjNmJiMjcyMjEyMzY1NDA2YjFjMjZlNjQuLjZhZTYxY2M0ZTkz
ZjNkMDNiMGM0ZjgwZDBmYmVjNTQxYjFlYWY4YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMTA2LDYgKzEwNiw3
IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogQGNsYXNz
IFdLQnJvd3NpbmdDb250ZXh0SGFuZGxlOwogQGNsYXNzIFdLV2VicGFnZVByZWZlcmVuY2VzOwog
QGNsYXNzIF9XS0FwcGxpY2F0aW9uTWFuaWZlc3Q7CitAY2xhc3MgX1dLQ29udGVudFdvcmxkOwog
QGNsYXNzIF9XS0ZyYW1lSGFuZGxlOwogQGNsYXNzIF9XS0hpdFRlc3RSZXN1bHQ7CiBAY2xhc3Mg
X1dLSW5zcGVjdG9yOwpAQCAtMzE4LDcgKzMxOSw1OCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNV
SW50ZWdlciwgX1dLUmVjdEVkZ2UpIHsKIAogLSAodm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENv
bmZpZ3VyYXRpb246KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb25maWd1cmF0
aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKnBkZlNuYXBzaG90RGF0YSwg
TlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKLS0gKHZvaWQpX2NhbGxBc3luY0Z1bmN0
aW9uOihOU1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAo
XikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsKKy8qIEBhYnN0cmFjdCBD
YWxscyB0aGUgZ2l2ZW4gSmF2YVNjcmlwdCBzdHJpbmcgYXMgYSBmdW5jdGlvbiwgcGFzc2luZyB0
aGUgZ2l2ZW4gbmFtZWQgYXJndW1lbnRzIHRvIHRoYXQgZnVuY3Rpb24uCisgQHBhcmFtIGphdmFT
Y3JpcHRTdHJpbmcgVGhlIEphdmFTY3JpcHQgc3RyaW5nIHRvIGNhbGwgYXMgYSBmdW5jdGlvbi4K
KyBAcGFyYW0gYXJndW1lbnRzIEEgZGljdGlvbmFyeSByZXByZXNlbnRpbmcgdGhlIGFyZ3VtZW50
cyB0byBiZSBwYXNzZWQgdG8gdGhlIGZ1bmN0aW9uIGNhbGwuCisgQHBhcmFtIGNvbnRlbnRXb3Js
ZCBUaGUgV0tDb250ZW50V29ybGQgaW4gd2hpY2ggdG8gY2FsbCB0aGUgSmF2YVNjcmlwdCBmdW5j
dGlvbi4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2l0aCB0
aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiBjYWxsLCBvciB3aXRoIHRoZSBhc3luY2hy
b25vdXMgcmVzb2x1dGlvbiBvZiB0aGUgZnVuY3Rpb24ncyByZXR1cm4gdmFsdWUuCisgQGRpc2N1
c3Npb24gVGhlIEphdmFTY3JpcHQgc3RyaW5nIGlzIHRyZWF0ZWQgYXMgYW4gYW5vbnltb3VzIEph
dmFTY3JpcHQgZnVuY3Rpb24gdGhhdCBjYW4gYmUgY2FsbGVkIHdpdGggbmFtZWQgYXJndW1lbnRz
LgorIFBhc3MgaW4gSmF2YVNjcmlwdCBzdHJpbmcgZm9ybWF0dGVkIGZvciBldmFsdWF0aW9uLCBu
b3QgYXMgb25lIG9mIHRoZSB2YXJpYW50cyBvZiBmdW5jdGlvbiBjYWxsIGF2YWlsYWJsZSBpbiBK
YXZhU2NyaXB0LgorIEZvciBleGFtcGxlOgorICAgICByZXR1cm4geCA/IHkgOiB6OworCisgVGhl
IGFyZ3VtZW50cyBkaWN0aW9uYXJ5IHN1cHBsaWVzIHRoZSB2YWx1ZXMgZm9yIHRob3NlIGFyZ3Vt
ZW50cyB3aGljaCBhcmUgc2VyaWFsaXplZCBpbnRvIEphdmFTY3JpcHQgZXF1aXZhbGVudHMuCisg
Rm9yIGV4YW1wbGU6CisgICAgIEB7IEAieCIgOiBAWUVTLCBAInkiIDogQDEsIEAieiIgOiBAMiB9
OworCisgQ29tYmluaW5nIHRoZSBhYm92ZSBhcmd1bWVudHMgZGljdGlvbmFyeSB3aXRoIHRoZSBh
Ym92ZSBKYXZhU2NyaXB0IHN0cmluZywgYSBmdW5jdGlvbiB3aXRoIHRoZSBhcmd1bWVudHMgIngi
LCAieSIsIGFuZCAieiIgaXMgY2FsbGVkIHdpdGggdmFsdWVzIFlFUywgMSwgYW5kIDIgcmVzcGVj
dGl2ZWx5LgorCisgQWxsb3dlZCBhcmd1bWVudCB0eXBlcyBhcmU6CisgTlNOdW1iZXIsIE5TU3Ry
aW5nLCBOU0RhdGUsIE5TQXJyYXksIE5TRGljdGlvbmFyeSwgYW5kIE5TTnVsbC4KKyBBbnkgTlNB
cnJheSBvciBOU0RpY3Rpb25hcnkgY29udGFpbmVycyBjYW4gb25seSBjb250YWluIG9iamVjdHMg
b2YgdGhvc2UgdHlwZXMuCisKKyBObyBtYXR0ZXIgd2hpY2ggV0tDb250ZW50V29ybGQgeW91IHVz
ZSB0byBjYWxsIHlvdXIgSmF2YVNjcmlwdCBmdW5jdGlvbiwgeW91IGNhbiBtYWtlIGNoYW5nZXMg
dG8gdGhlIHVuZGVybHlpbmcgd2ViIGNvbnRlbnQuIChlLmcuIHRoZSBEb2N1bWVudCBhbmQgaXRz
IERPTSBzdHJ1Y3R1cmUpCisgU3VjaCBjaGFuZ2VzIHdpbGwgYmUgdmlzaWJsZSB0byBzY3JpcHQg
ZXhlY3V0aW5nIGluIGFsbCBXS0NvbnRlbnRXb3JsZHMuCisgQ2FsbGluZyB5b3VyIEphdmFTY3Jp
cHQgZnVuY3Rpb24gY2FuIGxlYXZlIGJlaGluZCBvdGhlciBjaGFuZ2VzIHRvIGdsb2JhbCBzdGF0
ZSB2aXNpYmlsZSB0byBKYXZhU2NyaXB0LiAoZS5nLiBgd2luZG93Lm15VmFyaWFibGUgPSAxO2Ap
CisgVGhvc2UgY2hhbmdlcyB3aWxsIG9ubHkgYmUgdmlzaWJpbGUgdG8gc2NyaXB0cyBleGVjdXRl
ZCBpbiB0aGUgc2FtZSBXS0NvbnRlbnRXb3JsZC4KKworIFlvdXIgY29tcGxldGlvbiBoYW5kbGVy
IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB5b3VyIEphdmFTY3JpcHQg
ZnVuY3Rpb24uCisgSWYgeW91ciBKYXZhU2NyaXB0IGRvZXMgbm90IGV4cGxpY2l0bHkgcmV0dXJu
IGFueSB2YWx1ZSwgdGhhdCB1bmRlZmluZWQgcmVzdWx0IG1hbmlmZXN0cyBhcyBuaWwgYmVpbmcg
cGFzc2VkIHRvIHlvdXIgY29tcGxldGlvbiBoYW5kbGVyLgorIElmIHlvdXIgSmF2YVNjcmlwdCBy
ZXR1cm5zIG51bGwsIHRoYXQgcmVzdWx0IG1hbmlmZXN0cyBhcyBOU051bGwgYmVpbmcgcGFzc2Vk
IHRvIHlvdXIgY29tcGxldGlvbiBoYW5kbGVyLgorCisgSmF2YVNjcmlwdCBoYXMgdGhlIGNvbmNl
cHQgb2YgYSAidGhlbmFibGUiIG9iamVjdCwgd2hpY2ggaXMgYW55IEphdmFTY3JpcHQgb2JqZWN0
IHRoYXQgaGFzIGEgY2FsbGFibGUgInRoZW4iIHByb3BlcnR5LgorIFRoZSBtb3N0IHdlbGwga25v
d24gZXhhbXBsZSBvZiBhICJ0aGVuYWJsZSIgb2JqZWN0IGlzIGEgSmF2YVNjcmlwdCBwcm9taXNl
LgorIElmIHlvdXIgSmF2YVNjcmlwdCByZXR1cm5zIGEgInRoZW5hYmxlIiBvYmplY3QgV2ViS2l0
IHdpbGwgY2FsbCAidGhlbiIgb24gdGhlIHJlc3VsdGluZyBvYmplY3QgYW5kIHdhaXQgZm9yIGl0
IHRvIGJlIHJlc29sdmVkLgorCisgSWYgdGhlIG9iamVjdCBjYWxscyAiZnVsZmlsbCIsIHlvdXIg
Y29tcGxldGlvbiBoYW5kbGVyIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIHJlc3VsdC4KKyBJZiB0
aGUgb2JqZWN0IGNhbGxzICJyZWplY3QiLCB5b3VyIGNvbXBsZXRpb24gaGFuZGxlciB3aWxsIGJl
IGNhbGxlZCB3aXRoIGEgV0tFcnJvckphdmFTY3JpcHRBc3luY0Z1bmN0aW9uUmVzdWx0UmVqZWN0
ZWQgZXJyb3IgY29udGFpbmluZyB0aGUgcmVqZWN0IHJlYXNvbiBpbiB0aGUgdXNlckluZm8gZGlj
dGlvbmFyeS4KKyBJZiB0aGUgb2JqZWN0IGlzIGdhcmJhZ2UgY29sbGVjdGVkIGJlZm9yZSBpdCBp
cyByZXNvbHZlZCwgeW91ciBjb21wbGV0aW9uIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2l0aCBh
biBlcnJvciBpbmRpY2F0aW5nIHRoYXQgaXQgd2lsbCBuZXZlciBiZSByZXNvbHZlZC4KKyovCist
ICh2b2lkKV9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlw
dFN0cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJn
dW1lbnRzIGluV29ybGQ6KF9XS0NvbnRlbnRXb3JsZCAqKWNvbnRlbnRXb3JsZCBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKmVycm9yKSljb21wbGV0aW9uSGFuZGxlcjsK
KworLyogQGFic3RyYWN0IEV2YWx1YXRlcyB0aGUgZ2l2ZW4gSmF2YVNjcmlwdCBzdHJpbmcuCisg
QHBhcmFtIGphdmFTY3JpcHRTdHJpbmcgVGhlIEphdmFTY3JpcHQgc3RyaW5nIHRvIGV2YWx1YXRl
LgorIEBwYXJhbSBjb250ZW50V29ybGQgVGhlIFdLQ29udGVudFdvcmxkIGluIHdoaWNoIHRvIGV2
YWx1YXRlIHRoZSBKYXZhU2NyaXB0IHN0cmluZy4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIg
QSBibG9jayB0byBpbnZva2Ugd2hlbiBzY3JpcHQgZXZhbHVhdGlvbiBjb21wbGV0ZXMgb3IgZmFp
bHMuCisgQGRpc2N1c3Npb24gVGhlIGNvbXBsZXRpb25IYW5kbGVyIGlzIHBhc3NlZCB0aGUgcmVz
dWx0IG9mIHRoZSBzY3JpcHQgZXZhbHVhdGlvbiBvciBhbiBlcnJvci4KKyBObyBtYXR0ZXIgd2hp
Y2ggV0tDb250ZW50V29ybGQgeW91IHVzZSB0byBldmFsdWF0ZSB5b3VyIEphdmFTY3JpcHQgc3Ry
aW5nLCB5b3UgY2FuIG1ha2UgY2hhbmdlcyB0byB0aGUgdW5kZXJseWluZyB3ZWIgY29udGVudC4g
KGUuZy4gdGhlIERvY3VtZW50IGFuZCBpdHMgRE9NIHN0cnVjdHVyZSkKKyBTdWNoIGNoYW5nZXMg
d2lsbCBiZSB2aXNpYmxlIHRvIHNjcmlwdCBleGVjdXRpbmcgaW4gYWxsIFdLQ29udGVudFdvcmxk
cy4KKyBFdmFsdWF0aW5nIHlvdXIgSmF2YVNjcmlwdCBzdHJpbmcgY2FuIGxlYXZlIGJlaGluZCBv
dGhlciBjaGFuZ2VzIHRvIGdsb2JhbCBzdGF0ZSB2aXNpYmlsZSB0byBKYXZhU2NyaXB0LiAoZS5n
LiBgd2luZG93Lm15VmFyaWFibGUgPSAxO2ApCisgVGhvc2UgY2hhbmdlcyB3aWxsIG9ubHkgYmUg
dmlzaWJpbGUgdG8gc2NyaXB0cyBleGVjdXRlZCBpbiB0aGUgc2FtZSBXS0NvbnRlbnRXb3JsZC4K
KyBldmFsdWF0ZUphdmFTY3JpcHQ6IGlzIHRoZSBiZXN0IHdheSB0byBzZXQgdXAgZ2xvYmFsIHN0
YXRlIGZvciBmdXR1cmUgSmF2YVNjcmlwdCBleGVjdXRpb24gaW4gYSBnaXZlbiB3b3JsZC4gKGUu
Zy4gSW1wb3J0aW5nIGxpYnJhcmllcy91dGlsaXRpZXMgdGhhdCBmdXR1cmUgSmF2YVNjcmlwdCBl
eGVjdXRpb24gd2lsbCByZWx5IG9uKQorIE9uY2UgeW91ciBnbG9iYWwgc3RhdGUgaXMgc2V0IHVw
LCBjb25zaWRlciB1c2luZyBjYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246IGZvciBtb3JlIGZs
ZXhpYmxlIGludGVyYWN0aW9uIHdpdGggdGhlIEphdmFTY3JpcHQgcHJvZ3JhbW1pbmcgbW9kZWwu
CisqLworLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgaW5Xb3JsZDooX1dLQ29udGVudFdvcmxkICopY29udGVudFdvcmxkIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOwog
CiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tDb250ZW50V29ybGQuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tD
b250ZW50V29ybGQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZDI1YWQ2ZjIyM2UyZGVmYTJkNmYwNWE2YWQzY2U5
OWQzZjFkMjk4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0NvbnRlbnRXb3JsZC5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lO
CisKKy8qIQorQSBXS0NvbnRlbnRXb3JsZCBvYmplY3QgYWxsb3dzIHlvdSB0byBzZXBlcmF0ZSB5
b3VyIGFwcGxpY2F0aW9uJ3MgaW50ZXJhY3Rpb24gd2l0aCBjb250ZW50IGRpc3BsYXllZCBpbiBh
IFdLV2ViVmlldyBpbnRvIGRpZmZlcmVudCByb2xlcyB0aGF0IGNhbm5vdCBpbnRlcmZlcmUgd2l0
aCBvbmUgYW5vdGhlci4KKyovCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dLQ29udGVudFdvcmxkIDogTlNPYmplY3QK
KworKyAoaW5zdGFuY2V0eXBlKW5ldyBOU19VTkFWQUlMQUJMRTsKKy0gKGluc3RhbmNldHlwZSlp
bml0IE5TX1VOQVZBSUxBQkxFOworCisvKiEgQGFic3RyYWN0IFJldHJpZXZlIHRoZSBtYWluIHdv
cmxkIHRoYXQgcGFnZSBjb250ZW50IGl0c2VsZiB1c2VzLgorIEBkaXNjdXNzaW9uIFdoZW4gaW50
ZXJhY3Rpbmcgd2l0aCBwYWdlIGNvbnRlbnQgaW4gYSBXS1dlYlZpZXcgdXNpbmcgdGhlIHBhZ2Ug
Y29udGVudCB3b3JsZCB5b3UgY2FuIGRpc3J1cHQgdGhlIG9wZXJhdGlvbiBvZiBwYWdlIGNvbnRl
bnQgKGUuZy4gYnkgY29uZmxpY3Rpbmcgd2l0aCB2YXJpYWJsZSBuYW1lcyBpbiBKYXZhU2NyaXB0
IHNldCBieSB0aGUgd2ViIHBhZ2UgY29udGVudCBpdHNlbGYpLgorKi8KK0Bwcm9wZXJ0eSAoY2xh
c3MsIG5vbmF0b21pYywgcmVhZG9ubHkpIF9XS0NvbnRlbnRXb3JsZCAqcGFnZUNvbnRlbnRXb3Js
ZDsKKworLyohIEBhYnN0cmFjdCBSZXRyaWV2ZSB0aGUgZGVmYXVsdCBub24tcGFnZSBjb250ZW50
IHdvcmxkIGZvciBBUEkgY2xpZW50cy4KKyBAZGlzY3Vzc2lvbiBJbnRlcmFjdGluZyB3aXRoIHBh
Z2UgY29udGVudCBpbiBhIFdLV2ViVmlldyB1c2luZyBhIGNvbnRlbnQgd29ybGQgZGlmZmVyZW50
IGZyb20gdGhlIHBhZ2UgY29udGVudCB3b3JsZCBlbmFibGVzIHVzaW5nIERPTSBhbmQgYnVpbHQt
aW4gRE9NIEFQSXMKKyB3aXRob3V0IGNvbmZsaWN0aW5nIHdpdGggb3RoZXIgYXNwZWN0cyBvZiB0
aGUgcGFnZSBjb250ZW50IChlLmcuIEphdmFTY3JpcHQgZnJvbSB0aGUgd2ViIHBhZ2UgY29udGVu
dCBpdHNlbGYpCisqLworQHByb3BlcnR5IChjbGFzcywgbm9uYXRvbWljLCByZWFkb25seSkgX1dL
Q29udGVudFdvcmxkICpkZWZhdWx0Q2xpZW50V29ybGQ7CisKKy8qISBAYWJzdHJhY3QgUmV0cmll
dmVzIGEgbmFtZWQgY29udGVudCB3b3JsZCBmb3IgQVBJIHVzZXJzLgorIEBwYXJhbSBuYW1lIFRo
ZSBuYW1lIG9mIHRoZSBXS0NvbnRlbnRXb3JsZCB0byByZXRyaWV2ZS4KKyBAZGlzY3Vzc2lvbiBC
eSBpbnRlcmFjdGluZyB3aXRoIHBhZ2UgY29udGVudCBpbiBhIFdLV2ViVmlldyB1c2luZyBhIG5v
bi1tYWluIGNvbnRlbnQgd29ybGQgeW91IGNhbiBpbnRlcmFjdCB3aXRoIHRoZSBET00gYW5kIGJ1
aWx0LWluIERPTSBBUElzCisgd2l0aG91dCBjb25mbGljdGluZyB3aXRoIG90aGVyIGFzcGVjdHMg
b2YgdGhlIHBhZ2UgY29udGVudCAoZS5nLiBKYXZhU2NyaXB0IGZyb20gdGhlIHdlYiBjb250ZW50
IGl0c2VsZikKKyBSZXBlYXRlZCBjYWxscyB3aXRoIHRoZSBzYW1lIG5hbWUgd2lsbCByZXRyaWV2
ZSB0aGUgc2FtZSBXS0NvbnRlbnRXb3JsZCBpbnN0YW5jZS4KKyBFYWNoIG5hbWVkIGNvbnRlbnQg
d29ybGQgaXMgZGlzdGluY3QgZnJvbSBhbGwgb3RoZXIgbmFtZWQgY29udGVudCB3b3JsZHMsIHRo
ZSBkZWZhdWx0Q2xpZW50V29ybGQsIGFuZCB0aGUgcGFnZUNvbnRlbnRXb3JsZC4KKyBUaGUgbmFt
ZSBjYW4gYmUgdXNlZCB0byBrZWVwIGRpc3RpbmN0IHdvcmxkcyBpZGVudGlmaWFibGUgYW55d2hl
cmUgYSB3b3JsZCBtaWdodCBiZSBzdXJmYWNlZCBpbiBhIHVzZXIgaW50ZXJmYWNlLgorIEZvciBl
eGFtcGxlLCB0aGUgZGlmZmVyZW50IHdvcmxkcyB1c2VkIGluIHlvdXIgYXBwbGljYXRpb24gd2ls
bCBiZSBzdXJmYWNlZCBieSBuYW1lIGluIHRoZSBXZWJLaXQgV2ViIEluc3BlY3Rvci4KKyovCisr
IChfV0tDb250ZW50V29ybGQgKil3b3JsZFdpdGhOYW1lOihOU1N0cmluZyAqKW5hbWUgTlNfUkVG
SU5FRF9GT1JfU1dJRlQ7CisKKy8qISBAYWJzdHJhY3QgVGhlIG5hbWUgb2YgdGhlIFdLQ29udGVu
dFdvcmxkCisgQGRpc2N1c3Npb24gVGhlIHBhZ2VDb250ZW50V29ybGQgYW5kIGRlZmF1bHRDbGll
bnRXb3JsZCBpbnN0YW5jZXMgd2lsbCBoYXZlIGEgbmlsIG5hbWUuCisgQWxsIG90aGVyIGluc3Rh
bmNlcyB3aWxsIGhhdmUgdGhlIG5vbi1uaWwgbmFtZSB0aGV5IHdlcmUgYWNjZXNzZWQgYnkuCisq
LworQHByb3BlcnR5IChudWxsYWJsZSwgbm9uYXRvbWljLCByZWFkb25seSwgY29weSkgTlNTdHJp
bmcgKm5hbWU7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxkLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZC5tbQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5lYTM2NWYyNWM1YjY0N2E4OTA4M2VhYzJhNjEwMWY4YjI5NDViZmJhCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3Js
ZC5tbQpAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisj
aW1wb3J0ICJfV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIgorCitAaW1wbGVtZW50YXRpb24gX1dL
Q29udGVudFdvcmxkCisKKysgKF9XS0NvbnRlbnRXb3JsZCAqKXBhZ2VDb250ZW50V29ybGQKK3sK
KyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgp
KTsKK30KKworKyAoX1dLQ29udGVudFdvcmxkICopZGVmYXVsdENsaWVudFdvcmxkCit7CisgICAg
cmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50V29ybGQ6OmRlZmF1bHRDbGllbnRXb3JsZCgpKTsK
K30KKworKyAoX1dLQ29udGVudFdvcmxkICopd29ybGRXaXRoTmFtZTooTlNTdHJpbmcgKiluYW1l
Cit7CisgICAgcmV0dXJuIHdyYXBwZXIoQVBJOjpDb250ZW50V29ybGQ6OnNoYXJlZFdvcmxkV2l0
aE5hbWUobmFtZSkpOworfQorCistICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfY29udGVudFdvcmxk
LT5+Q29udGVudFdvcmxkKCk7CisKKyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKE5TU3Ry
aW5nICopbmFtZQoreworICAgIGlmIChfY29udGVudFdvcmxkLT5uYW1lKCkuaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiBuaWw7CisKKyAgICByZXR1cm4gX2NvbnRlbnRXb3JsZC0+bmFtZSgpOwor
fQorCisjcHJhZ21hIG1hcmsgV0tPYmplY3QgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24KKworLSAo
QVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl9jb250ZW50V29ybGQ7Cit9
CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tDb250ZW50V29ybGRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS0NvbnRlbnRXb3JsZEludGVybmFsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDgwMGMxMjQxMzI0Y2Ey
ZDVhM2I5ODUyMTlmZjJkZWRhNzNlYjg4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29ybGRJbnRlcm5hbC5oCkBAIC0wLDAg
KzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJfV0tDb250ZW50V29ybGQuaCIKKworI2lt
cG9ydCAiQVBJQ29udGVudFdvcmxkLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgorI2ltcG9ydCA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworCit0ZW1wbGF0ZTw+
IHN0cnVjdCBXcmFwcGVyVHJhaXRzPEFQSTo6Q29udGVudFdvcmxkPiB7CisgICAgdXNpbmcgV3Jh
cHBlckNsYXNzID0gX1dLQ29udGVudFdvcmxkOworfTsKKworfQorCitAaW50ZXJmYWNlIF9XS0Nv
bnRlbnRXb3JsZCAoKSA8V0tPYmplY3Q+IHsKK0BwYWNrYWdlCisgICAgQVBJOjpPYmplY3RTdG9y
YWdlPEFQSTo6Q29udGVudFdvcmxkPiBfY29udGVudFdvcmxkOworfQorQGVuZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL2dsaWIvV2ViS2l0V2ViVmlldy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAppbmRleCBm
OWRhMWJiNTk0NWRkMGFiOGRjZGUxZmVlNjBjMTgwMWE0MjQ1NTNkLi5mZjg2ZWNmMGY5NjZjNGY5
NzQxYTJhMzZhMjhjM2RmYTE0MDJmNDUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJWaWV3LmNwcApAQCAtMjMsNiArMjMsNyBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYktpdFdlYlZpZXcuaCIKIAorI2luY2x1ZGUgIkFQ
SUNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQSURhdGEuaCIKICNpbmNsdWRlICJBUElOYXZp
Z2F0aW9uLmgiCiAjaW5jbHVkZSAiQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgiCkBAIC0zNzQy
LDcgKzM3NDMsOCBAQCB2b2lkIHdlYmtpdF93ZWJfdmlld19ydW5famF2YXNjcmlwdF9pbl93b3Js
ZChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhcgogICAgIGdfcmV0dXJuX2lmX2Zh
aWwod29ybGROYW1lKTsKIAogICAgIEdSZWZQdHI8R1Rhc2s+IHRhc2sgPSBhZG9wdEdSZWYoZ190
YXNrX25ldyh3ZWJWaWV3LCBjYW5jZWxsYWJsZSwgY2FsbGJhY2ssIHVzZXJEYXRhKSk7Ci0gICAg
Z2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCh7IFN0
cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgZmFsc2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCBTdHJp
bmc6OmZyb21VVEY4KHdvcmxkTmFtZSksIFt0YXNrID0gV1RGTW92ZSh0YXNrKV0oQVBJOjpTZXJp
YWxpemVkU2NyaXB0VmFsdWUqIHNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSwgT3B0aW9uYWw8RXhjZXB0
aW9uRGV0YWlscz4gZGV0YWlscywgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yKSB7CisgICAg
YXV0byB3b3JsZCA9IEFQSTo6Q29udGVudFdvcmxkOjpzaGFyZWRXb3JsZFdpdGhOYW1lKFN0cmlu
Zzo6ZnJvbVVURjgod29ybGROYW1lKSk7CisgICAgZ2V0UGFnZSh3ZWJWaWV3KS5ydW5KYXZhU2Ny
aXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZCh7IFN0cmluZzo6ZnJvbVVURjgoc2NyaXB0KSwgZmFs
c2UsIFdURjo6bnVsbG9wdCwgdHJ1ZSB9LCB3b3JsZC5nZXQoKSwgW3Rhc2sgPSBXVEZNb3ZlKHRh
c2spXShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBP
cHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6
RXJyb3IpIHsKICAgICAgICAgRXhjZXB0aW9uRGV0YWlscyBleGNlcHRpb25EZXRhaWxzOwogICAg
ICAgICBpZiAoZGV0YWlscykKICAgICAgICAgICAgIGV4Y2VwdGlvbkRldGFpbHMgPSAqZGV0YWls
czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAppbmRleCBkMTBlN2I1
YzEyNDZiZGY5YmIwM2VmYWVjMDRkMTAxNjQyYTNjMDkxLi5kMDE0MTNkYzU1MjY0Mzk3ZGNmNmQ0
YmFjZTdjMWZhODUzMjUxNzEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJv
eHkuY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViVXNlckNvbnRlbnRDb250cm9s
bGVyUHJveHkuaCIKIAogI2luY2x1ZGUgIkFQSUFycmF5LmgiCisjaW5jbHVkZSAiQVBJQ29udGVu
dFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJVXNlckNvbnRlbnRXb3JsZC5oIgogI2luY2x1ZGUgIkFQ
SVVzZXJTY3JpcHQuaCIKICNpbmNsdWRlICJBUElVc2VyU3R5bGVTaGVldC5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250
cm9sbGVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKaW5kZXggNjcxZmIyOTJkMjAxOTYwMzM3YjAzODNl
ZDA3YjI3ZmRiOTdlMmM0ZC4uNjc2ZDIzN2MzMzk2Zjk0MTZjNjQ5YTJkMGIyNWRlZTkyNzIxMDM2
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCkBAIC00MSw2ICs0MSw3
IEBACiBuYW1lc3BhY2UgQVBJIHsKIGNsYXNzIEFycmF5OwogY2xhc3MgQ29udGVudFJ1bGVMaXN0
OworY2xhc3MgQ29udGVudFdvcmxkOwogY2xhc3MgVXNlckNvbnRlbnRXb3JsZDsKIGNsYXNzIFVz
ZXJTY3JpcHQ7CiBjbGFzcyBVc2VyU3R5bGVTaGVldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCmluZGV4IGVmNDVhOGMyOWQ5YmY0YWE1OGZhYjhkMjQ2NzczMzAyZTNm
ZjhhOTcuLmUxNjNkOGVhOTQzNDc4OTVkMDMzODgxMDk0NzU3NmZlYTA0NzVmMjUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApAQCAtMjksNiArMjksNyBAQAogCiAj
aW5jbHVkZSAiQVBJQXJyYXkuaCIKICNpbmNsdWRlICJBUElBdHRhY2htZW50LmgiCisjaW5jbHVk
ZSAiQVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJQ29udGV4dE1lbnVDbGllbnQuaCIK
ICNpbmNsdWRlICJBUElGaW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiQVBJRmluZE1hdGNoZXNDbGll
bnQuaCIKQEAgLTM4NjEsMTAgKzM4NjIsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmxhdW5jaElu
aXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNj
cmlwdEluTWFpbkZyYW1lKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgV1RG
OjpGdW5jdGlvbjx2b2lkIChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdl
YkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQogewotICAgIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFdU
Rk1vdmUocGFyYW1ldGVycyksIFdURjo6bnVsbG9wdCwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSk7CisgICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV1RGTW92ZShwYXJh
bWV0ZXJzKSwgQVBJOjpDb250ZW50V29ybGQ6OnBhZ2VDb250ZW50V29ybGQoKSwgV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0
SW5NYWluRnJhbWVTY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRl
cnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgV1RGOjpGdW5jdGlvbjx2b2lk
KEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4s
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCit2b2lkIFdlYlBhZ2VQ
cm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2YVNjcmlwdFBh
cmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBBUEk6OkNvbnRlbnRXb3JsZCYgd29ybGQsIFdURjo6RnVu
Y3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPEV4Y2VwdGlv
bkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
ICAgIC8vIEZvciBiYWNrd2FyZC1jb21wYXRpYmlsaXR5IHN1cHBvcnQgcnVubmluZyBzY3JpcHQg
aW4gYSBXZWJWaWV3IHdoaWNoIGhhcyBub3QgZG9uZSBhbnkgbG9hZHMgeWV0cy4KICAgICBsYXVu
Y2hJbml0aWFsUHJvY2Vzc0lmTmVjZXNzYXJ5KCk7CkBAIC0zODc1LDcgKzM4NzYsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoUnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMmJgogICAgIH0KIAogICAgIGF1dG8gY2FsbGJhY2tJRCA9IG1fY2Fs
bGJhY2tzLnB1dChXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBtX3Byb2Nlc3MtPnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWlu
RnJhbWVTY3JpcHRXb3JsZCJfcykpOwotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkph
dmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIHdvcmxkTmFtZSwgY2Fs
bGJhY2tJRCkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKHBhcmFtZXRlcnMsIHdvcmxkLndvcmxkRGF0YSgpLCBjYWxsYmFj
a0lEKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5GcmFtZShGcmFt
ZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wgZm9yY2VVc2Vy
R2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
T3B0aW9uYWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDFm
MGU2YjZiZTEyNDdiMGQzNzNiZjUyNzM3N2I5NjA3NTZjODY3YjAuLmUxZmMyMDRiZWNhNTUzYTkx
OTUwYzcwZTFjOWU1M2Y0YTA4ZjFiNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCkBAIC0xNjMsNiArMTYzLDcgQEAgaW50ZXJmYWNlIElEM0QxMURldmljZTE7CiAKIG5h
bWVzcGFjZSBBUEkgewogY2xhc3MgQXR0YWNobWVudDsKK2NsYXNzIENvbnRlbnRXb3JsZDsKIGNs
YXNzIENvbnRleHRNZW51Q2xpZW50OwogY2xhc3MgRmluZENsaWVudDsKIGNsYXNzIEZpbmRNYXRj
aGVzQ2xpZW50OwpAQCAtMTA3MCw3ICsxMDcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgZ2V0U291
cmNlRm9yRnJhbWUoV2ViRnJhbWVQcm94eSosIFdURjo6RnVuY3Rpb248dm9pZCAoY29uc3QgU3Ry
aW5nJiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgZ2V0V2ViQXJjaGl2ZU9m
RnJhbWUoV2ViRnJhbWVQcm94eSosIEZ1bmN0aW9uPHZvaWQgKEFQSTo6RGF0YSosIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmKTsKICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZShXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6
U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWls
cz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwotICAgIHZvaWQg
cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3Jl
OjpFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5j
dGlvbik7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJD
b3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBBUEk6OkNvbnRlbnRXb3JsZCYsIFdURjo6
RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlvbmFsPFdlYkNv
cmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1
bmN0aW9uKTsKICAgICAvLyBGb3Igc3ViIGZyYW1lcy4KICAgICB2b2lkIHJ1bkphdmFTY3JpcHRJ
bkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJv
b2wgZm9yY2VVc2VyR2VzdHVyZSwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgT3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pOwogICAgIHZvaWQgZm9yY2VSZXBhaW50
KFJlZlB0cjxWb2lkQ2FsbGJhY2s+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggYWQ4YjZkZWYyMTc4Y2YyOGYzZWFlZTBlN2I2YmFh
NGZkMTY3MzUwOC4uMjA0MDZlMzUxNTQwYTJmMGMxNjM5ZGY3OTRiNmMyY2Y0YWU4ZGNlMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0x
MDI1LDYgKzEwMjUsMTAgQEAKIAkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQ
cm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEUgLyogTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE3Q0Yw
RTMxNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rp
b25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTdDRjBFNDE2M0E0ODZDMDBDMjk1MEUg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OworCQk1MTgzNzIxRDIzQ0U4
NUY2MDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgzNzIxQTIzQ0Q0OUIyMDAwM0NGODMgLyogX1dLQ29u
dGVudFdvcmxkLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJNTE4MzcyMUUyM0NFODVGQjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZEludGVybmFs
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTgzNzIx
QzIzQ0Q0QTc0MDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaCAqLzsgfTsKKwkJ
NTE4MzcyMUYyM0NFOTUyMTAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM3MjFCMjNDRDQ5QjIwMDAz
Q0Y4MyAvKiBfV0tDb250ZW50V29ybGQubW0gKi87IH07CisJCTUxODM3MjIyMjNDRTk3NDEwMDAz
Q0Y4MyAvKiBBUElDb250ZW50V29ybGQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxODM3MjIwMjNDRTk3M0EwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29y
bGQuaCAqLzsgfTsKIAkJNTE4NzFCNUMxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTg3MUI1
QTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLzsgfTsKIAkJNTE4QUNBRUEx
MkFFRTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxOEFDQUU5MTJBRUU2QkIwMEIwNEI4
MyAvKiBXS1Byb3RlY3Rpb25TcGFjZVR5cGVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTE4QUNGMTExMkIwMTVGODAwQjA0QjgzIC8qIFdLQ3Jl
ZGVudGlhbFR5cGVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MThBQ0YxMDEyQjAxNUY4MDBCMDRCODMgLyogV0tDcmVkZW50aWFsVHlwZXMuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMzU4MCw2ICsz
NTg0LDExIEBACiAJCTUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgcGF0
aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2Fn
ZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsKIAkJNTE3
Q0YwRTExNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ2Fj
aGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJp
dmVkU291cmNlcy9XZWJLaXQyL0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVj
ZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1MTdDRjBF
MjE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
TWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZXMuaDsgc291cmNlVHJlZSA9IEJVSUxUX1BST0RVQ1RTX0RJUjsgfTsK
KwkJNTE4MzcyMUEyM0NENDlCMjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tDb250ZW50V29ybGQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE4MzcyMUIyM0NENDlCMjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRX
b3JsZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS0NvbnRl
bnRXb3JsZC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4MzcyMUMyM0NENEE3
NDAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTUxODM3MjIwMjNDRTk3M0EwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29y
bGQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJQ29udGVudFdvcmxkLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxODM3MjIxMjNDRTk3M0EwMDAzQ0Y4MyAv
KiBBUElDb250ZW50V29ybGQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRo
ID0gQVBJQ29udGVudFdvcmxkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4
M0IzOTMxMzc5Rjg1QzAwRTg3NTRFIC8qIFNoaW0ueGNjb25maWcgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lnhj
Y29uZmlnOyBwYXRoID0gU2hpbS54Y2NvbmZpZzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE4NzFCNTkxMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNvbnRleHRNZW51LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdlYkNvbnRleHRNZW51LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE4NzFCNUExMjdDQjg5RDAwRjc2MjMyIC8qIFdlYkNv
bnRleHRNZW51LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvbnRleHRN
ZW51Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NzI5LDYgKzY3MzgsOSBAQAog
CQkJCTVDNDYwOUUyMjI0MzBFNEMwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24u
aCAqLywKIAkJCQk1QzQ2MDlFMzIyNDMwRTREMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0
QWN0aW9uLm1tICovLAogCQkJCTVDNDYwOUU0MjI0MzBFNEQwMDk5NDNDMiAvKiBfV0tDb250ZW50
UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oICovLAorCQkJCTUxODM3MjFBMjNDRDQ5QjIwMDAzQ0Y4
MyAvKiBfV0tDb250ZW50V29ybGQuaCAqLywKKwkJCQk1MTgzNzIxQjIzQ0Q0OUIyMDAwM0NGODMg
LyogX1dLQ29udGVudFdvcmxkLm1tICovLAorCQkJCTUxODM3MjFDMjNDRDRBNzQwMDAzQ0Y4MyAv
KiBfV0tDb250ZW50V29ybGRJbnRlcm5hbC5oICovLAogCQkJCTFBNTcwNEY2MUJFMDFGRjQwMDg3
NEFGMSAvKiBfV0tDb250ZXh0TWVudUVsZW1lbnRJbmZvLmggKi8sCiAJCQkJMUE1NzA0RjUxQkUw
MUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0gKi8sCiAJCQkJNUM1
RDIzODkyMjdBMTg5MjAwMEI5QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5oICovLApAQCAt
ODQ0NSw2ICs4NDU3LDggQEAKIAkJCQk1QzQ2MDlFNjIyNDMwRkE3MDA5OTQzQzIgLyogQVBJQ29u
dGVudFJ1bGVMaXN0QWN0aW9uLmggKi8sCiAJCQkJN0MzQTA2QTUxQUFCOTAzRTAwOUQ3NEJBIC8q
IEFQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcCAqLywKIAkJCQk3QzNBMDZBNjFBQUI5MDNFMDA5
RDc0QkEgLyogQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCAqLywKKwkJCQk1MTgzNzIyMTIzQ0U5
NzNBMDAwM0NGODMgLyogQVBJQ29udGVudFdvcmxkLmNwcCAqLywKKwkJCQk1MTgzNzIyMDIzQ0U5
NzNBMDAwM0NGODMgLyogQVBJQ29udGVudFdvcmxkLmggKi8sCiAJCQkJMDc2RTg4NEQxQTEzQ0FE
RjAwNUU5MEZDIC8qIEFQSUNvbnRleHRNZW51Q2xpZW50LmggKi8sCiAJCQkJNUNFMEMzNjYyMjlG
MkQzRDAwMzY5NUYwIC8qIEFQSUNvbnRleHRNZW51RWxlbWVudEluZm8uY3BwICovLAogCQkJCTVD
RTBDMzY3MjI5RjJEM0UwMDM2OTVGMCAvKiBBUElDb250ZXh0TWVudUVsZW1lbnRJbmZvLmggKi8s
CkBAIC05NzkwLDYgKzk4MDQsOCBAQAogCQkJCTk5MEQyOEIxMUM2NTIwOEQwMDk4Njk3NyAvKiBf
V0tBdXRvbWF0aW9uU2Vzc2lvbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQk1QzQ2MDlF
NzIyNDMxN0I0MDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1QzQ2MDlFODIyNDMxN0JCMDA5OTQzQzIgLyogX1dLQ29udGVudFJ1bGVMaXN0
QWN0aW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODM3MjFEMjNDRTg1RjYwMDAz
Q0Y4MyAvKiBfV0tDb250ZW50V29ybGQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxODM3MjFFMjND
RTg1RkIwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMUE1NzA0RjgxQkUwMUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudElu
Zm8uaCBpbiBIZWFkZXJzICovLAogCQkJCTVDNUQyMzhDMjI3QTJDREEwMDBCOUJEQSAvKiBfV0tD
dXN0b21IZWFkZXJGaWVsZHMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzODkxQjY5MUE2OEJFQkMw
MDMwRjM4NiAvKiBfV0tEaWFnbm9zdGljTG9nZ2luZ0RlbGVnYXRlLmggaW4gSGVhZGVycyAqLywK
QEAgLTk4OTUsNiArOTkxMSw3IEBACiAJCQkJMUEzREQyMDYxMjVFNUEyRjAwNDUxNUU2IC8qIEFQ
SUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0M4OUQyQjQxQTZCMDY4QzAwM0E1RkRFIC8q
IEFQSUNvbnRlbnRSdWxlTGlzdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0MzQTA2QTgxQUFCOTAz
RTAwOUQ3NEJBIC8qIEFQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmggaW4gSGVhZGVycyAqLywKKwkJ
CQk1MTgzNzIyMjIzQ0U5NzQxMDAwM0NGODMgLyogQVBJQ29udGVudFdvcmxkLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwNzZFODg0RTFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGll
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTdBODIxRjUwMUUyRjdBNzUwMDYwNDU3NyAvKiBBUElD
dXN0b21Qcm90b2NvbE1hbmFnZXJDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNTc4Qjgz
MTIwOUVDRUYwMEEzN0M0QSAvKiBBUElEYXRhLmggaW4gSGVhZGVycyAqLywKQEAgLTExODY1LDYg
KzExODgyLDcgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rp
b25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJCTUxODM3MjFGMjNDRTk1MjEw
MDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0JENTk1
QzIyODBFREY0MDAyQjIyQUEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRzLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNDlGQkVGRkQyMzlCMDExRDAwQkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRp
c3RpY3NGaXJzdFBhcnR5Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNDlGQkVGRkYyMzlCMDEyRjAw
QkQwMzJGIC8qIF9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5Lm1tIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQv
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4IGM0NGFkYjI2YTBm
MWM5NTM0NDBiODk4YzBlN2RmZjU1Zjk2YWEwNTkuLjZlYzY3MjE4M2IzYjQ0M2FkNTMwYjMyYjA1
ZmZiZjMzYzIwZmExZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2Vy
Q29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCkBAIC02
Miw3ICs2Miw3IEBAIHR5cGVkZWYgSGFzaE1hcDx1aW50NjRfdCwgc3RkOjpwYWlyPFJlZlB0cjxJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkPiwgdW5zaWduZWQ+CiAKIHN0YXRpYyBXb3JsZE1hcCYg
d29ybGRNYXAoKQogewotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXb3JsZE1hcD4gbWFwKHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxXb3JsZE1hcDo6S2V5VmFsdWVQYWlyVHlwZT4geyB7IDEsIHN0
ZDo6bWFrZV9wYWlyKCZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCAx
KSB9IH0pOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxXb3JsZE1hcD4gbWFwKHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxXb3JsZE1hcDo6S2V5VmFsdWVQYWlyVHlwZT4geyB7IFdlYlVzZXJDb250
ZW50Q29udHJvbGxlcjo6aWRlbnRpZmllckZvck5vcm1hbFdvcmxkKCksIHN0ZDo6bWFrZV9wYWly
KCZJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpLCAxKSB9IH0pOwogCiAg
ICAgcmV0dXJuIG1hcDsKIH0KQEAgLTk0LDIzICs5NCwzMyBAQCBXZWJVc2VyQ29udGVudENvbnRy
b2xsZXI6On5XZWJVc2VyQ29udGVudENvbnRyb2xsZXIoKQogICAgIHVzZXJDb250ZW50Q29udHJv
bGxlcnMoKS5yZW1vdmUobV9pZGVudGlmaWVyKTsKIH0KIAotdm9pZCBXZWJVc2VyQ29udGVudENv
bnRyb2xsZXI6OmFkZFVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8dWlu
dDY0X3QsIFN0cmluZz4+JiB3b3JsZHMpCitJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkKiBXZWJV
c2VyQ29udGVudENvbnRyb2xsZXI6OndvcmxkRm9ySWRlbnRpZmllcih1aW50NjRfdCBpZGVudGlm
aWVyKQoreworICAgIGF1dG8gaXRlcmF0b3IgPSB3b3JsZE1hcCgpLmZpbmQoaWRlbnRpZmllcik7
CisgICAgcmV0dXJuIGl0ZXJhdG9yID09IHdvcmxkTWFwKCkuZW5kKCkgPyBudWxscHRyIDogaXRl
cmF0b3ItPnZhbHVlLmZpcnN0LmdldCgpOworfQorCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZChjb25zdCBzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmlu
Zz4mIHdvcmxkKQogewotICAgIGZvciAoYXV0byYgd29ybGQgOiB3b3JsZHMpIHsKLSAgICAgICAg
QVNTRVJUKHdvcmxkLmZpcnN0KTsKLSAgICAgICAgQVNTRVJUKHdvcmxkLmZpcnN0ICE9IDEpOwor
ICAgIEFTU0VSVCh3b3JsZC5maXJzdCk7CisgICAgQVNTRVJUKHdvcmxkLmZpcnN0ICE9IDEpOwog
Ci0gICAgICAgIHdvcmxkTWFwKCkuZW5zdXJlKHdvcmxkLmZpcnN0LCBbJl0geworICAgIHdvcmxk
TWFwKCkuZW5zdXJlKHdvcmxkLmZpcnN0LCBbJl0gewogI2lmIFBMQVRGT1JNKEdUSykgfHwgUExB
VEZPUk0oV1BFKQotICAgICAgICAgICAgLy8gVGhlIEdMaWIgQVBJIGRvZXNuJ3QgYWxsb3cgdG8g
Y3JlYXRlIHNjcmlwdCB3b3JsZHMgZnJvbSB0aGUgVUkgcHJvY2Vzcy4gV2UgbmVlZCB0bwotICAg
ICAgICAgICAgLy8gdXNlIHRoZSBleGlzdGluZyB3b3JsZCBjcmVhdGVkIGJ5IHRoZSB3ZWIgZXh0
ZW5zaW9uIGlmIGFueS4gVGhlIHdvcmxkIG5hbWUgaXMgdXNlZAotICAgICAgICAgICAgLy8gYXMg
dGhlIGlkZW50aWZpZXIuCi0gICAgICAgICAgICBpZiAoYXV0byogZXhpc3RpbmdXb3JsZCA9IElu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGQuc2Vjb25kKSkKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIoUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+
KCpleGlzdGluZ1dvcmxkKSwgMSk7CisgICAgICAgIC8vIFRoZSBHTGliIEFQSSBkb2Vzbid0IGFs
bG93IHRvIGNyZWF0ZSBzY3JpcHQgd29ybGRzIGZyb20gdGhlIFVJIHByb2Nlc3MuIFdlIG5lZWQg
dG8KKyAgICAgICAgLy8gdXNlIHRoZSBleGlzdGluZyB3b3JsZCBjcmVhdGVkIGJ5IHRoZSB3ZWIg
ZXh0ZW5zaW9uIGlmIGFueS4gVGhlIHdvcmxkIG5hbWUgaXMgdXNlZAorICAgICAgICAvLyBhcyB0
aGUgaWRlbnRpZmllci4KKyAgICAgICAgaWYgKGF1dG8qIGV4aXN0aW5nV29ybGQgPSBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkLnNlY29uZCkpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjptYWtlX3BhaXIoUmVmPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+KCpleGlzdGlu
Z1dvcmxkKSwgMSk7CiAjZW5kaWYKLSAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOjpjcmVhdGUod29ybGQuc2Vjb25kKSwgMSk7Ci0gICAg
ICAgIH0pOwotICAgIH0KKyAgICAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKEluamVjdGVkQnVu
ZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZSh3b3JsZC5zZWNvbmQpLCAxKTsKKyAgICB9KTsKK30KKwor
dm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OmFkZFVzZXJDb250ZW50V29ybGRzKGNvbnN0
IFZlY3RvcjxzdGQ6OnBhaXI8dWludDY0X3QsIFN0cmluZz4+JiB3b3JsZHMpCit7CisgICAgZm9y
IChhdXRvJiB3b3JsZCA6IHdvcmxkcykKKyAgICAgICAgYWRkVXNlckNvbnRlbnRXb3JsZCh3b3Js
ZCk7CiB9CiAKIHZvaWQgV2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjpyZW1vdmVVc2VyQ29udGVu
dFdvcmxkcyhjb25zdCBWZWN0b3I8dWludDY0X3Q+JiB3b3JsZElkZW50aWZpZXJzKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50
Q29udHJvbGxlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVz
ZXJDb250ZW50Q29udHJvbGxlci5oCmluZGV4IGQ2ZjhjMWNiNzZmN2U0Nzg0YzM3ZjQ2NWY2NDU3
MGJkNWY4MmQ0MjQuLjQ4ZTdkNmFjNWM3ZTJkOTVhMmMxYTgyNjBjOTQ5MDBiZWIwYWM4ZjMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29u
dGVudENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRl
bnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKQEAgLTY0LDcgKzY0LDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlbW92ZVVzZXJTdHlsZVNoZWV0cyhJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxk
Jik7CiAgICAgdm9pZCByZW1vdmVBbGxVc2VyQ29udGVudCgpOwogCisgICAgc3RhdGljIHVpbnQ2
NF90IGlkZW50aWZpZXJGb3JOb3JtYWxXb3JsZCgpIHsgcmV0dXJuIDE7IH0KKyAgICBJbmplY3Rl
ZEJ1bmRsZVNjcmlwdFdvcmxkKiB3b3JsZEZvcklkZW50aWZpZXIodWludDY0X3QpOworCiAgICAg
dm9pZCBhZGRVc2VyQ29udGVudFdvcmxkcyhjb25zdCBWZWN0b3I8c3RkOjpwYWlyPHVpbnQ2NF90
LCBTdHJpbmc+PiYpOworICAgIHZvaWQgYWRkVXNlckNvbnRlbnRXb3JsZChjb25zdCBzdGQ6OnBh
aXI8dWludDY0X3QsIFN0cmluZz4mKTsKICAgICB2b2lkIGFkZFVzZXJTY3JpcHRzKFZlY3RvcjxX
ZWJVc2VyU2NyaXB0RGF0YT4mJiwgSW5qZWN0VXNlclNjcmlwdEltbWVkaWF0ZWx5KTsKICAgICB2
b2lkIGFkZFVzZXJTdHlsZVNoZWV0cyhjb25zdCBWZWN0b3I8V2ViVXNlclN0eWxlU2hlZXREYXRh
PiYpOwogICAgIHZvaWQgYWRkVXNlclNjcmlwdE1lc3NhZ2VIYW5kbGVycyhjb25zdCBWZWN0b3I8
V2ViU2NyaXB0TWVzc2FnZUhhbmRsZXJEYXRhPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcAppbmRleCBiODJhNzExYzVlZDlmZDhmMzAyNmI1YzlkMGZi
NDc5NThjOTgzYjViLi45NGRjZGU1NzJiYTFlODIyMDBiMjFmYWFhZjhlODMxY2MxMDA2MDRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtMzM2
OSwxNyArMzM2OSwyMyBAQCBLZXlib2FyZFVJTW9kZSBXZWJQYWdlOjprZXlib2FyZFVJTW9kZSgp
CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEtleWJvYXJkVUlNb2RlPigoZnVsbEtleWJvYXJkQWNj
ZXNzRW5hYmxlZCA/IEtleWJvYXJkQWNjZXNzRnVsbCA6IEtleWJvYXJkQWNjZXNzRGVmYXVsdCkg
fCAobV90YWJUb0xpbmtzID8gS2V5Ym9hcmRBY2Nlc3NUYWJzVG9MaW5rcyA6IDApKTsKIH0KIAot
dm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5h
bWUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKK3ZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdChX
ZWJGcmFtZSogZnJhbWUsIFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgdWlu
dDY0X3Qgd29ybGRJZGVudGlmaWVyLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7CiAgICAgLy8g
Tk9URTogV2UgbmVlZCB0byBiZSBjYXJlZnVsIHdoZW4gcnVubmluZyBzY3JpcHRzIHRoYXQgdGhl
IG9iamVjdHMgd2UgZGVwZW5kIG9uIGRvbid0CiAgICAgLy8gZGlzYXBwZWFyIGR1cmluZyBzY3Jp
cHQgZXhlY3V0aW9uLgogCi0gICAgYXV0byogd29ybGQgPSB3b3JsZE5hbWUgPyBJbmplY3RlZEJ1
bmRsZVNjcmlwdFdvcmxkOjpmaW5kKHdvcmxkTmFtZS52YWx1ZSgpKSA6ICZJbmplY3RlZEJ1bmRs
ZVNjcmlwdFdvcmxkOjpub3JtYWxXb3JsZCgpOwotICAgIGlmICghZnJhbWUgfHwgIWZyYW1lLT5j
b3JlRnJhbWUoKSB8fCAhd29ybGQpIHsKKyAgICBpZiAoIWZyYW1lIHx8ICFmcmFtZS0+Y29yZUZy
YW1lKCkpIHsKICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpTY3JpcHRWYWx1
ZUNhbGxiYWNrKHsgfSwgRXhjZXB0aW9uRGV0YWlscyB7ICJVbmFibGUgdG8gZXhlY3V0ZSBKYXZh
U2NyaXB0OiBQYWdlIGlzIGluIGludmFsaWQgc3RhdGUiX3MgfSwgY2FsbGJhY2tJRCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCisgICAgQVNTRVJUKHdvcmxkSWRlbnRpZmllcik7CisgICAg
YXV0byogd29ybGQgPSBtX3VzZXJDb250ZW50Q29udHJvbGxlci0+d29ybGRGb3JJZGVudGlmaWVy
KHdvcmxkSWRlbnRpZmllcik7CisgICAgaWYgKCF3b3JsZCkgeworICAgICAgICBzZW5kKE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRh
aWxzIHsgIlVuYWJsZSB0byBleGVjdXRlIEphdmFTY3JpcHQ6IENhbm5vdCBmaW5kIHNwZWNpZmll
ZCBjb250ZW50IHdvcmxkIl9zIH0sIGNhbGxiYWNrSUQpKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKwogICAgIGF1dG8gcmVzb2x2ZUZ1bmN0aW9uID0gW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgdGhpcywgd29ybGQgPSBtYWtlUmVmKCp3b3JsZCksIGZyYW1lID0gbWFrZVJlZigq
ZnJhbWUpLCBjYWxsYmFja0lEXShWYWx1ZU9yRXhjZXB0aW9uIHJlc3VsdCkgewogICAgICAgICBS
ZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJpYWxpemVkUmVzdWx0VmFsdWU7CiAgICAg
ICAgIGlmIChyZXN1bHQpIHsKQEAgLTM0MDIsMTYgKzM0MDgsMTcgQEAgdm9pZCBXZWJQYWdlOjpy
dW5KYXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBw
YXJhbWV0ZXIKICAgICBmcmFtZS0+Y29yZUZyYW1lKCktPnNjcmlwdCgpLmV4ZWN1dGVBc3luY2hy
b25vdXNVc2VyQWdlbnRTY3JpcHRJbldvcmxkKHdvcmxkLT5jb3JlV29ybGQoKSwgV1RGTW92ZShw
YXJhbWV0ZXJzKSwgV1RGTW92ZShyZXNvbHZlRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdl
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5NYWluRnJh
bWVTY3JpcHRXb3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0
IHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPiYgd29ybGREYXRhLCBDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCiB7Ci0gICAgcnVuSmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgV1RGTW92ZShwYXJh
bWV0ZXJzKSwgd29ybGROYW1lLCBjYWxsYmFja0lEKTsKKyAgICBtX3VzZXJDb250ZW50Q29udHJv
bGxlci0+YWRkVXNlckNvbnRlbnRXb3JsZCh3b3JsZERhdGEpOworICAgIHJ1bkphdmFTY3JpcHQo
bWFpbldlYkZyYW1lKCksIFdURk1vdmUocGFyYW1ldGVycyksIHdvcmxkRGF0YS5maXJzdCwgY2Fs
bGJhY2tJRCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWUoRnJhbWVJ
ZGVudGlmaWVyIGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdl
c3R1cmUsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBX
ZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBBU1NFUlQobWFp
bldlYkZyYW1lKCkgIT0gZnJhbWUpOwotICAgIHJ1bkphdmFTY3JpcHQoZnJhbWUsIHsgc2NyaXB0
LCBmYWxzZSwgV1RGOjpudWxsb3B0LCBmb3JjZVVzZXJHZXN0dXJlIH0sIFdURjo6bnVsbG9wdCwg
Y2FsbGJhY2tJRCk7CisgICAgcnVuSmF2YVNjcmlwdChmcmFtZSwgeyBzY3JpcHQsIGZhbHNlLCBX
VEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSwgV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
OjppZGVudGlmaWVyRm9yTm9ybWFsV29ybGQoKSwgY2FsbGJhY2tJRCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZTo6Z2V0Q29udGVudHNBc1N0cmluZyhDYWxsYmFja0lEIGNhbGxiYWNrSUQpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggY2E0Yzk3NDE4MDNlNjM3
YWYxYzgzMGZlMjYzYzE4ZGYzMGEwNzlhNS4uZDE3YjI0YmI0Y2ZmYjM0NzIxODY5MTBlOTNjNTg4
NWEzMjU0MDhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aApAQCAtMTQ0MSw4ICsxNDQxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIGdldFNlbGVjdGlvbkFz
V2ViQXJjaGl2ZURhdGEoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBnZXRTb3VyY2VGb3JGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZ2V0V2ViQXJj
aGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBDYWxsYmFja0lEKTsKLSAgICB2
b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1l
dGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOwot
ICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoV2ViQ29yZTo6UnVu
SmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1l
LCBDYWxsYmFja0lEKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqLCBXZWJDb3Jl
OjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCB1aW50NjRfdCB3b3JsZElkZW50aWZpZXIsIENh
bGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQo
V2ViQ29yZTo6UnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiwgY29uc3Qgc3RkOjpwYWlyPHVpbnQ2
NF90LCBTdHJpbmc+JiB3b3JsZERhdGEsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgcnVuSmF2YVNj
cmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmLCBib29s
IGZvcmNlVXNlckdlc3R1cmUsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZm9yY2VSZXBhaW50KENh
bGxiYWNrSUQpOwogICAgIHZvaWQgdGFrZVNuYXBzaG90KFdlYkNvcmU6OkludFJlY3Qgc25hcHNo
b3RSZWN0LCBXZWJDb3JlOjpJbnRTaXplIGJpdG1hcFNpemUsIHVpbnQzMl90IG9wdGlvbnMsIENh
bGxiYWNrSUQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggZTkwZTMxYjFiMzVmNjYyMjk1YzIxMjY3ZjYxM2M5MTVj
ZjM3ZjlkNi4uNzE0ZmY5YjgxZTY3YWY0NjBhZjIwNmRhM2RkNzY5ZmZhMDczNjYxNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC0yMDQsNyArMjA0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBHZXRT
ZWxlY3Rpb25Bc1dlYkFyY2hpdmVEYXRhKFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
ICAgIEdldFNvdXJjZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBX
ZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBHZXRXZWJBcmNoaXZlT2ZGcmFtZShX
ZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxi
YWNrSUQpCi0gICAgUnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQoc3RydWN0IFdl
YkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHBhcmFtZXRlcnMsIE9wdGlvbmFsPFN0cmlu
Zz4gd29ybGROYW1lLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKKyAgICBSdW5KYXZh
U2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChzdHJ1Y3QgV2ViQ29yZTo6UnVuSmF2YVNjcmlw
dFBhcmFtZXRlcnMgcGFyYW1ldGVycywgc3RkOjpwYWlyPHVpbnQ2NF90LCBTdHJpbmc+IHdvcmxk
LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBSdW5KYXZhU2NyaXB0SW5GcmFt
ZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgU3RyaW5nIHNjcmlwdCwgYm9vbCBm
b3JjZVVzZXJHZXN0dXJlLCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBGb3Jj
ZVJlcGFpbnQoV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwNTdiYTdkMzU1OThlMmJjZGY0
ZDQwZTI4MzhmMjczMmI1M2Q4YmFjLi42NDQ4ZjFhNjY2MmJjMTgxMzQ0OTVhZTRmNTk4NWJjM2Rl
NzE4MzQ0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMjEgQEAKKzIwMjAtMDEtMTUgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBw
bGUuY29tPgorCisgICAgICAgIEFkZCBXS0NvbnRlbnRXb3JsZCBTUEksIGFuZCB1c2UgaXQgaW4g
SmF2YVNjcmlwdCBleGVjdXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDYzMTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKyAgICAgICAgCisgICAgICAgIFVwZGF0ZSBwcmV2aW91cyBjYWxsQXN5bmNGdW5jdGlvbiBj
YWxscyB3aXRoIHRoZSBuZXcgc2lnbmF0dXJlLgorICAgICAgICBBZGQgdGVzdHMgZm9yIG5ldyBf
V0tDb250ZW50V29ybGQgY2xhc3MgYW5kIGl0cyBiZWhhdmlvciB3aXRoIHJlZ2FyZCB0byBleGVj
dXRpbmcgSmF2YVNjcmlwdC4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0
Q29jb2EvQXN5bmNGdW5jdGlvbi5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnRyeUdDUHJv
bWlzZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbToK
KyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2Vi
Vmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IG9iamVjdEJ5Q2FsbGluZ0FzeW5jRnVuY3Rp
b246d2l0aEFyZ3VtZW50czplcnJvcjpdKToKKwogMjAyMC0wMS0wOSAgRGF2aWQgS2lsemVyICA8
ZGRraWx6ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYktpdFRlc3RSdW5uZXIgbGVha3Mgb2Jq
ZWN0cyBpbiBhIHRvcC1sZXZlbCBhdXRvcmVsZWFzZVBvb2wgdGhhdCdzIG5ldmVyIGNsZWFyZWQK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNG
dW5jdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvQXN5bmNG
dW5jdGlvbi5tbQppbmRleCAwOWNhZmU0Nzk2ODJkNzM4Mjg2ZDg4MGJmZWI3ZGM2NjIzZjhhZDgw
Li43OGNkZDc3MjA0NzVlZmMwOWEyMzc0MGNlODA4NjczYWJjNjk0NGE1IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Bc3luY0Z1bmN0aW9uLm1t
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0V0tXZWJW
aWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L19XS0NvbnRlbnRXb3JsZC5oPgogCiBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSSB7CiAKQEAg
LTE4Myw3ICsxODQsNyBAQCBzdGF0aWMgdm9pZCB0cnlHQ1Byb21pc2UoV0tXZWJWaWV3ICp3ZWJW
aWV3LCBib29sJiBkb25lKQogICAgICAgICByZXR1cm47CiAKICAgICBOU1N0cmluZyAqZnVuY3Rp
b25Cb2R5ID0gQCJyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7
IH0pIjsKLSAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhB
cmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICpl
cnJvcikgeworICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246ZnVuY3Rp
b25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250
ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGVy
cm9yICE9IG5pbCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNv
bnRhaW5zU3RyaW5nOkAibm8gbG9uZ2VyIHJlYWNoYWJsZSJdKTsKQEAgLTIwMCw3ICsyMDEsNyBA
QCBURVNUKEFzeW5jRnVuY3Rpb24sIFByb21pc2UpCiAgICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9k
eSA9IEAicmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyBzZXRU
aW1lb3V0KGZ1bmN0aW9uKCl7IHJlc29sdmUoNDIpIH0sIDApOyB9KSI7CiAKICAgICBib29sIGRv
bmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246ZnVuY3Rpb25Cb2R5
IHdpdGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vy
cm9yICplcnJvcikgeworICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246
ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBh
Z2VDb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3Ig
KmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKICAgICAgICAgRVhQRUNUX1RS
VUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKTsKICAgICAgICAgRVhQ
RUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1iZXI6QDQyXSk7CkBAIC0yMTIsNyArMjEzLDcg
QEAgVEVTVChBc3luY0Z1bmN0aW9uLCBQcm9taXNlKQogICAgIGZ1bmN0aW9uQm9keSA9IEAicmV0
dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyBzZXRUaW1lb3V0KGZ1
bmN0aW9uKCl7IHJlamVjdCgnUmVqZWN0ZWQhJykgfSwgMCk7IH0pIjsKIAogICAgIGRvbmUgPSBm
YWxzZTsKLSAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhB
cmd1bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICpl
cnJvcikgeworICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246ZnVuY3Rp
b25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250
ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CiAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGVy
cm9yICE9IG5pbCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNv
bnRhaW5zU3RyaW5nOkAiUmVqZWN0ZWQhIl0pOwpAQCAtMjIzLDcgKzIyNCw3IEBAIFRFU1QoQXN5
bmNGdW5jdGlvbiwgUHJvbWlzZSkKICAgICBmdW5jdGlvbkJvZHkgPSBAImxldCBwID0gbmV3IFBy
b3h5KGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBy
ZXNvbHZlKDQyKTsgfSwgMCk7IH0sIHsgfSk7IHJldHVybiB7IHRoZW46IHAgfTsiOwogCiAgICAg
ZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNGdW5jdGlvbjpmdW5jdGlvbkJv
ZHkgd2l0aEFyZ3VtZW50czpuaWwgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5T
RXJyb3IgKmVycm9yKSB7CisgICAgW3dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlv
bjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQu
cGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogICAgICAgICBFWFBFQ1Rf
VFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pOwogICAgICAgICBF
WFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb051bWJlcjpANDJdKTsKQEAgLTIzNCw3ICsyMzUs
NyBAQCBURVNUKEFzeW5jRnVuY3Rpb24sIFByb21pc2UpCiAgICAgZnVuY3Rpb25Cb2R5ID0gQCJs
ZXQgcCA9IG5ldyBQcm94eShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsgc2V0VGltZW91dChm
dW5jdGlvbigpIHsgcmVqZWN0KCdSZWplY3RlZCEnKTsgfSwgMCk7IH0sIHsgfSk7IHJldHVybiB7
IHRoZW46IHAgfTsiOwogCiAgICAgZG9uZSA9IGZhbHNlOwotICAgIFt3ZWJWaWV3IF9jYWxsQXN5
bmNGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgY29tcGxldGlvbkhhbmRs
ZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW3dlYlZpZXcgX2NhbGxB
c3luY0phdmFTY3JpcHRGdW5jdGlvbjpmdW5jdGlvbkJvZHkgd2l0aEFyZ3VtZW50czpuaWwgaW5X
b3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpb
Jl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgRVhQRUNUX05VTEwocmVz
dWx0KTsKICAgICAgICAgRVhQRUNUX1RSVUUoZXJyb3IgIT0gbmlsKTsKICAgICAgICAgRVhQRUNU
X1RSVUUoW1tlcnJvciBkZXNjcmlwdGlvbl0gY29udGFpbnNTdHJpbmc6QCJSZWplY3RlZCEiXSk7
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCmluZGV4IDk4NGJjMzZiNmQy
NWY1ZTRhMTk5YTU1YjFmNTljOGM4Y2Q4YWFhNTIuLjhjNzBjMjRjYzcwYTAwZDdhZTViMmRiMTUx
ZTZmOTlmNGQyNjBlZDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1tCisrKyBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tXZWJWaWV3RXZhbHVhdGVKYXZhU2NyaXB0Lm1t
CkBAIC0yOSw4ICsyOSwxMCBAQAogI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKICNpbXBv
cnQgIlRlc3QuaCIKICNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKLSNpbXBvcnQg
PFdlYktpdC9XS1dlYlZpZXcuaD4KKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKICNpbXBvcnQg
PFdlYktpdC9XS0Vycm9yUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZh
dGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tDb250ZW50V29ybGQuaD4KICNpbXBvcnQgPHd0Zi9S
ZXRhaW5QdHIuaD4KIAogc3RhdGljIGJvb2wgaXNEb25lOwpAQCAtMTExLDMgKzExMywxMTQgQEAg
VEVTVChXS1dlYlZpZXcsIEV2YWx1YXRlSmF2YVNjcmlwdEVycm9yQ2FzZXMpCiAgICAgaXNEb25l
ID0gZmFsc2U7CiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOwogfQorCitU
RVNUKFdLV2ViVmlldywgV0tDb250ZW50V29ybGQpCit7CisgICAgRVhQRUNUX05VTEwoX1dLQ29u
dGVudFdvcmxkLnBhZ2VDb250ZW50V29ybGQubmFtZSk7CisgICAgRVhQRUNUX05VTEwoX1dLQ29u
dGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZC5uYW1lKTsKKyAgICBFWFBFQ1RfRkFMU0UoX1dL
Q29udGVudFdvcmxkLnBhZ2VDb250ZW50V29ybGQgPT0gX1dLQ29udGVudFdvcmxkLmRlZmF1bHRD
bGllbnRXb3JsZCk7CisKKyAgICBfV0tDb250ZW50V29ybGQgKm5hbWVkV29ybGQgPSBbX1dLQ29u
dGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJOYW1lIl07CisgICAgRVhQRUNUX1RSVUUoW25hbWVk
V29ybGQubmFtZSBpc0VxdWFsVG9TdHJpbmc6QCJOYW1lIl0pOworICAgIEVYUEVDVF9FUShuYW1l
ZFdvcmxkLCBbX1dLQ29udGVudFdvcmxkIHdvcmxkV2l0aE5hbWU6QCJOYW1lIl0pOworfQorCitU
RVNUKFdLV2ViVmlldywgRXZhbHVhdGVKYXZhU2NyaXB0SW5Xb3JsZHMpCit7CisgICAgUmV0YWlu
UHRyPFRlc3RXS1dlYlZpZXc+IHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxv
Y10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKV0pOworICAgIFt3ZWJW
aWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxodG1sPjwvaHRtbD4iXTsKKworICAg
IC8vIFNldCBhIHZhcmlhYmxlIGluIHRoZSBtYWluIHdvcmxkIHZpYSAibm9ybWFsIiBldmFsdWF0
ZUphdmFTY3JpcHQKKyAgICBpc0RvbmUgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBldmFsdWF0ZUph
dmFTY3JpcHQ6QCJ2YXIgZm9vID0gJ2JhciciIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAg
IGlzRG9uZSA9IGZhbHNlOworCisgICAgLy8gVmVyaWZ5IHRoYXQgdmFsdWUgaXMgdmlzaWJsZSB3
aGVuIGV2YWx1YXRpbmcgaW4gdGhlIHBhZ2VDb250ZW50V29ybGQKKyAgICBbd2ViVmlldyBfZXZh
bHVhdGVKYXZhU2NyaXB0OkAiZm9vIiBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVu
dFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNz
XV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImJhciJd
KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUgPSBmYWxzZTsK
KworICAgIC8vIFZlcmlmeSB0aGF0IHZhbHVlIGlzIG5vdCB2aXNpYmxlIHdoZW4gZXZhbHVhdGlu
ZyBpbiB0aGUgZGVmYXVsdENsaWVudFdvcmxkCisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNj
cmlwdDpAImZvbyIgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNv
bXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBF
WFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAg
IGlzRG9uZSA9IGZhbHNlOworCisgICAgLy8gVmVyaWZ5IHRoYXQgdmFsdWUgaXMgdmlzaWJsZSB3
aGVuIGNhbGxpbmcgYSBmdW5jdGlvbiBpbiB0aGUgcGFnZUNvbnRlbnRXb3JsZAorICAgIFt3ZWJW
aWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246QCJyZXR1cm4gZm9vIiB3aXRoQXJndW1l
bnRzOm5pbCBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRp
b25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBF
Q1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pOworICAgICAg
ICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0cmluZzpAImJhciJdKTsKKyAgICAgICAg
aXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIC8vIFZl
cmlmeSB0aGF0IHZhbHVlIGlzIG5vdCB2aXNpYmxlIHdoZW4gY2FsbGluZyBhIGZ1bmN0aW9uIGlu
IHRoZSBkZWZhdWx0Q2xpZW50V29ybGQKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5jSmF2YVNjcmlw
dEZ1bmN0aW9uOkAicmV0dXJuIGZvbyIgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpfV0tDb250
ZW50V29ybGQuZGVmYXVsdENsaWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVz
dWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAg
ICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAg
Ly8gU2V0IGEgdmFyaWJhbGUgdmFsdWUgaW4gYSBuYW1lZCB3b3JsZC4KKyAgICBSZXRhaW5QdHI8
X1dLQ29udGVudFdvcmxkPiBuYW1lZFdvcmxkID0gW19XS0NvbnRlbnRXb3JsZCB3b3JsZFdpdGhO
YW1lOkAiTmFtZWRXb3JsZCJdOworICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJ2
YXIgYmFyID0gYmF6IiBpbldvcmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3Vs
dCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNEb25lID0gZmFsc2U7
CisKKyAgICAvLyBTZXQgYSBnbG9iYWwgdmFyaWJhbGUgdmFsdWUgaW4gYSBuYW1lZCB3b3JsZCB2
aWEgYSBmdW5jdGlvbiBjYWxsLgorICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVu
Y3Rpb246QCJ3aW5kb3cuYmF6ID0gYmF0IiB3aXRoQXJndW1lbnRzOm5pbCBpbldvcmxkOm5hbWVk
V29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIEVYUEVDVF9OVUxMKGVy
cm9yKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUgPSBmYWxz
ZTsKKworICAgIC8vIFZlcmlmeSB0aGV5IGFyZSB0aGVyZSBpbiB0aGF0IG5hbWVkIHdvcmxkLgor
ICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJiYXIiIGluV29ybGQ6bmFtZWRXb3Js
ZC5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsK
KyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJiYXoi
XSk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNEb25lID0gZmFsc2U7
CisKKyAgICBbd2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OkAid2luZG93LmJheiIgaW5Xb3Js
ZDpuYW1lZFdvcmxkLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9y
ICplcnJvcikgeworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzS2luZE9mQ2xhc3M6W05T
U3RyaW5nIGNsYXNzXV0pOworICAgICAgICBFWFBFQ1RfVFJVRShbcmVzdWx0IGlzRXF1YWxUb1N0
cmluZzpAImJhdCJdKTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0Rv
bmUgPSBmYWxzZTsKKworICAgIC8vIFZlcmlmeSB0aGV5IGFyZW4ndCB0aGVyZSBpbiB0aGUgZGVm
YXVsdENsaWVudFdvcmxkLgorICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJiYXIi
IGluV29ybGQ6X1dLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFu
ZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwo
cmVzdWx0KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUgPSBm
YWxzZTsKKworICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuYmF6IiBp
bldvcmxkOl9XS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRs
ZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJl
c3VsdCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNEb25lID0gZmFs
c2U7CisKKyAgICAvLyBWZXJpZnkgdGhleSBhcmVuJ3QgdGhlcmUgaW4gdGhlIHBhZ2VDb250ZW50
V29ybGQuCisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAImJhciIgaW5Xb3JsZDpf
V0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJl
c3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAg
ICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAg
IFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuYmF6IiBpbldvcmxkOl9XS0Nv
bnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIGlzRG9uZSA9IGZhbHNlOworfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDc0YWQ1ODEyNTAxNmMw
MzFmOGM1ZTRlZGJiOTQ4ZTE4MDVlYjU1MGUuLjIwMjgxNGExZTlmNzcwZWM5NmQ5ZGJiN2Q0N2Vk
YTgyZTU2MDNmN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdL
V2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
bW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0
aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdFByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tBY3RpdmF0ZWRFbGVtZW50SW5mby5oPgorI2ltcG9ydCA8V2ViS2l0L19XS0Nv
bnRlbnRXb3JsZC5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oPgogI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+
CkBAIC0xODUsNyArMTg2LDcgQEAgLSAoaWQpb2JqZWN0QnlDYWxsaW5nQXN5bmNGdW5jdGlvbjoo
TlNTdHJpbmcgKilzY3JpcHQgd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXIKICAgICAgICAgKmVy
cm9yT3V0ID0gbmlsOwogCiAgICAgUmV0YWluUHRyPGlkPiBldmFsUmVzdWx0OwotICAgIFtzZWxm
IF9jYWxsQXN5bmNGdW5jdGlvbjpzY3JpcHQgd2l0aEFyZ3VtZW50czphcmd1bWVudHMgY29tcGxl
dGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgW3NlbGYg
X2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpzY3JpcHQgd2l0aEFyZ3VtZW50czphcmd1bWVu
dHMgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFu
ZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKICAgICAgICAgZXZhbFJlc3Vs
dCA9IHJlc3VsdDsKICAgICAgICAgaWYgKGVycm9yT3V0KQogICAgICAgICAgICAgKmVycm9yT3V0
ID0gW2Vycm9yIHJldGFpbl07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>387871</attachid>
            <date>2020-01-15 17:02:20 -0800</date>
            <delta_ts>2020-01-15 21:41:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-206310-20200115170219.patch</filename>
            <type>text/plain</type>
            <size>68729</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU0Mjc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGMyYmFhYTVkZDdmNjI1MTIz
NDc0Y2UwNmVjNTFiOWVkMzVlMDRjYzUuLjA5OTgxNGU4MTE5MTlkYWIwZjdiYjU0MzViNzE2NGZm
YjRkNGI0YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsODUgQEAKKzIwMjAtMDEtMTUgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBXS0NvbnRlbnRXb3JsZCBT
UEksIGFuZCB1c2UgaXQgaW4gSmF2YVNjcmlwdCBleGVjdXRpb24uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDYzMTAKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIENvdmVyZWQgYnkgQVBJIHRlc3RzLgor
ICAgICAgICAKKyAgICAgICAgX1dLQ29udGVudFdvcmxkIGlzIGEgVUkgUHJvY2VzcyB3cmFwcGVy
IGZvciBhbiBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkLgorICAgICAgICBNdWNoIGxpa2UgX1dL
VXNlckNvbnRlbnRXb3JsZCBpcy4gQnV0IGRpZmZlcmVudCBpbiB0aGF0OgorICAgICAgICAtIEl0
cyBBUElzIGFyZSBuYW1lZCBkaWZmZXJlbnQgdGhpbmdzCisgICAgICAgIC0gT25seSBvbmUgdW5p
cXVlIGluc3RhbmNlIHBlciBzdHJpbmcgbmFtZQorICAgICAgICAtIEl0IGlzIHVzZWQgd2l0aCBl
dmFsdWF0ZUphdmFzY3JpcHQ6IGFuZCBjYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246IGluc3Rl
YWQgb2YgV0tVc2VyQ29udGVudENvbnRyb2xsZXIuCisgICAgICAgIAorICAgICAgICBCdXQgX1dL
Q29udGVudFdvcmxkIGFuZCBfV0tVc2VyQ29udGVudFdvcmxkIGRvIGhhdmUgdG8gd29yayB0b2dl
dGhlciBhIGxpdHRsZSBiaXQgdG8gYXZvaWQgY29uZmxpY3RzIGluIHRoZSBXZWJQcm9jZXNzLgor
ICAgICAgICAKKyAgICAgICAgVGhlIG5ldyB2ZXJzaW9ucyBvZiBldmFsdWF0ZUphdmFzY3JpcHQ6
IGFuZCBjYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246IGFyZSBhbHNvIGluY2x1ZGVkLCBhcyB3
ZWxsIGFzIEFQSSB0ZXN0cyBmb3IgYWxsIHRoZSBuZXcgc3R1ZmYuCisKKyAgICAgICAgKiBTaGFy
ZWQvQVBJL0FQSU9iamVjdC5oOgorICAgICAgICAqIFNoYXJlZC9Db2NvYS9BUElPYmplY3QubW06
CisgICAgICAgIChBUEk6Ok9iamVjdDo6bmV3T2JqZWN0KToKKworICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQVBJQ29udGVudFdvcmxkLmNwcDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3BwLgorICAgICAgICAoQVBJOjpDb250ZW50
V29ybGQ6OnNoYXJlZFdvcmxkV2l0aE5hbWUpOgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGQ6
OnBhZ2VDb250ZW50V29ybGQpOgorICAgICAgICAoQVBJOjpDb250ZW50V29ybGQ6OmRlZmF1bHRD
bGllbnRXb3JsZCk6CisgICAgICAgIChBUEk6OkNvbnRlbnRXb3JsZDo6Q29udGVudFdvcmxkKToK
KyAgICAgICAgKEFQSTo6Q29udGVudFdvcmxkOjp+Q29udGVudFdvcmxkKToKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3JsZC5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oLgorCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmNwcDoKKyAgICAgICAgKEFQSTo6VXNlckNvbnRl
bnRXb3JsZDo6Z2VuZXJhdGVJZGVudGlmaWVyKToKKyAgICAgICAgKEFQSTo6VXNlckNvbnRlbnRX
b3JsZDo6VXNlckNvbnRlbnRXb3JsZCk6CisgICAgICAgIChBUEk6OmdlbmVyYXRlSWRlbnRpZmll
cik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxk
Lmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6YXNBc3luY0Z1bmN0aW9u
OndpdGhBcmd1bWVudHM6Zm9yY2VVc2VyR2VzdHVyZTpjb21wbGV0aW9uSGFuZGxlcjppbldvcmxk
Ol0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjp3
aXRoQXJndW1lbnRzOmluV29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dL
V2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OmluV29ybGQ6Y29tcGxldGlvbkhhbmRsZXI6XSk6
CisgICAgICAgICgtW1dLV2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0
dXJlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYlZpZXcgX2V2YWx1YXRl
SmF2YVNjcmlwdDphc0FzeW5jRnVuY3Rpb246d2l0aEFyZ3VtZW50czpmb3JjZVVzZXJHZXN0dXJl
OmNvbXBsZXRpb25IYW5kbGVyOl0pOiBEZWxldGVkLgorICAgICAgICAoLVtXS1dlYlZpZXcgX2Nh
bGxBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6Y29tcGxldGlvbkhhbmRsZXI6XSk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZC5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZC5tbTogQ29waWVk
IGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaC4K
KyAgICAgICAgKCtbX1dLQ29udGVudFdvcmxkIHBhZ2VDb250ZW50V29ybGRdKToKKyAgICAgICAg
KCtbX1dLQ29udGVudFdvcmxkIGRlZmF1bHRDbGllbnRXb3JsZF0pOgorICAgICAgICAoK1tfV0tD
b250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpdKToKKyAgICAgICAgKC1bX1dLQ29udGVudFdvcmxk
IGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLQ29udGVudFdvcmxkIG5hbWVdKToKKyAgICAgICAg
KC1bX1dLQ29udGVudFdvcmxkIF9hcGlPYmplY3RdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0NvbnRlbnRXb3JsZEludGVybmFsLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmguCisKKyAgICAgICAgKiBVSVBy
b2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94
eS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lKToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3Js
ZCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0Ojp3b3JsZE1hcCk6CisgICAgICAgIChXZWJLaXQ6OldlYlVzZXJDb250ZW50Q29u
dHJvbGxlcjo6d29ybGRGb3JJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjphZGRVc2VyQ29udGVudFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjphZGRVc2VyQ29udGVudFdvcmxkcyk6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaDoKKwor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6cnVuSmF2YVNjcmlwdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cnVuSmF2YVNjcmlwdEluRnJhbWUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW46CisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAyMC0wMS0wOSAgeW91ZW5uIGZhYmxldCAgPHlvdWVu
bkBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogWyBNYWMgd2syIF0gZmFzdC9tZWRp
YXN0cmVhbS9jYXB0dXJlSW5HUFVQcm9jZXNzLmh0bWwgaXMgYSBmbGFreSBmYWlsdXJlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKaW5kZXggOGI3MWZlMGQyZjUzZmYwZDM4NWZkYzI4
ZTlhYWQ4OTI3NGY1ZDA0Ny4uNzI4MTA4YTA1ZmVmMmUxYjI5NjQ4ZmVkOGEyYjEzNDg0NDJiODY4
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL0FQSS9BUElPYmplY3QuaApAQCAtMTA5LDYgKzEwOSw3IEBA
IHB1YmxpYzoKICAgICAgICAgQ29udGVudFJ1bGVMaXN0LAogICAgICAgICBDb250ZW50UnVsZUxp
c3RBY3Rpb24sCiAgICAgICAgIENvbnRlbnRSdWxlTGlzdFN0b3JlLAorICAgICAgICBDb250ZW50
V29ybGQsCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgQ29udGV4dE1lbnVFbGVt
ZW50SW5mbywKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2Ev
QVBJT2JqZWN0Lm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvQVBJT2JqZWN0Lm1tCmlu
ZGV4IGRiNjVlNmY5ZTQwOWQ0MDcxNWI2OThlZmIyMDYwNjlmOWU5ZWJjMGUuLjQ0MTQwMjhmZWEz
OGI2NjBiZDU1MjQ1YmMyYmEzNTU2MjA0YmM5ODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL0NvY29hL0FQSU9iamVjdC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9BUElPYmplY3QubW0KQEAgLTcxLDYgKzcxLDcgQEAKICNpbXBvcnQgIl9XS0F0dGFjaG1lbnRJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLQXV0b21hdGlvblNlc3Npb25JbnRlcm5hbC5oIgogI2lt
cG9ydCAiX1dLQ29udGVudFJ1bGVMaXN0QWN0aW9uSW50ZXJuYWwuaCIKKyNpbXBvcnQgIl9XS0Nv
bnRlbnRXb3JsZEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tDdXN0b21IZWFkZXJGaWVsZHNJbnRl
cm5hbC5oIgogI2ltcG9ydCAiX1dLRG93bmxvYWRJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLRXhw
ZXJpbWVudGFsRmVhdHVyZUludGVybmFsLmgiCkBAIC0zNDAsNiArMzQxLDEwIEBAIHZvaWQqIE9i
amVjdDo6bmV3T2JqZWN0KHNpemVfdCBzaXplLCBUeXBlIHR5cGUpCiAgICAgICAgIHdyYXBwZXIg
PSBbX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHkgYWxsb2NdOwogICAgICAgICBi
cmVhazsKIAorICAgIGNhc2UgVHlwZTo6Q29udGVudFdvcmxkOgorICAgICAgICB3cmFwcGVyID0g
W19XS0NvbnRlbnRXb3JsZCBhbGxvY107CisgICAgICAgIGJyZWFrOworCiAgICAgY2FzZSBUeXBl
OjpVc2VyQ29udGVudFdvcmxkOgogICAgICAgICB3cmFwcGVyID0gW19XS1VzZXJDb250ZW50V29y
bGQgYWxsb2NdOwogICAgICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291
cmNlcy50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXMudHh0CmluZGV4IDMwNmNkMWU2OTM1NjYx
YWQ0MWMwNjA5Mjg0OGJmOWFmMzZiMWI3MjYuLmM0NDMyZTU1ZGQ5NmE3NDkyYTJjNmQ1YWE5ZWJm
NmI4ODhmMGI2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlcy50eHQKKysrIGIv
U291cmNlL1dlYktpdC9Tb3VyY2VzLnR4dApAQCAtMzIxLDYgKzMyMSw3IEBAIFVJUHJvY2Vzcy9B
UEkvQVBJQXR0YWNobWVudC5jcHAKIFVJUHJvY2Vzcy9BUEkvQVBJQ29udGVudFJ1bGVMaXN0LmNw
cAogVUlQcm9jZXNzL0FQSS9BUElDb250ZW50UnVsZUxpc3RBY3Rpb24uY3BwCiBVSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRSdWxlTGlzdFN0b3JlLmNwcAorVUlQcm9jZXNzL0FQSS9BUElDb250ZW50
V29ybGQuY3BwCiBVSVByb2Nlc3MvQVBJL0FQSUNvbnRleHRNZW51RWxlbWVudEluZm8uY3BwCiBV
SVByb2Nlc3MvQVBJL0FQSURlYnVnZ2FibGVJbmZvLmNwcAogVUlQcm9jZXNzL0FQSS9BUElFeHBl
cmltZW50YWxGZWF0dXJlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
Q29udGVudFdvcmxkLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzQ1NDc2YTQ2YWEyMTI2NWZlNjZlN2M5ODJl
NWMzZDkzYzAyZDEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0FQSUNvbnRlbnRXb3JsZC5jcHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKKworI2luY2x1
ZGUgIkFQSVVzZXJDb250ZW50V29ybGQuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK3N0YXRpYyBI
YXNoTWFwPFdURjo6U3RyaW5nLCBDb250ZW50V29ybGQqPiYgc2hhcmVkV29ybGRNYXAoKQorewor
ICAgIHN0YXRpYyBIYXNoTWFwPFdURjo6U3RyaW5nLCBDb250ZW50V29ybGQqPiogc2hhcmVkTWFw
ID0gbmV3IEhhc2hNYXA8V1RGOjpTdHJpbmcsIENvbnRlbnRXb3JsZCo+OworICAgIHJldHVybiAq
c2hhcmVkTWFwOworfQorCitSZWY8Q29udGVudFdvcmxkPiBDb250ZW50V29ybGQ6OnNoYXJlZFdv
cmxkV2l0aE5hbWUoY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUpCit7CisgICAgYXV0byByZXN1bHQg
PSBzaGFyZWRXb3JsZE1hcCgpLmFkZChuYW1lLCBudWxscHRyKTsKKyAgICBpZiAocmVzdWx0Lmlz
TmV3RW50cnkpIHsKKyAgICAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZSA9IG5ldyBDb250ZW50
V29ybGQobmFtZSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZSk7CisgICAgfQorCisgICAgcmV0dXJuIG1ha2VSZWYoKnJlc3VsdC5pdGVyYXRvci0+dmFs
dWUpOworfQorCitDb250ZW50V29ybGQmIENvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgp
Cit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZlB0cjxDb250ZW50V29ybGQ+PiB3b3Js
ZChhZG9wdFJlZihuZXcgQ29udGVudFdvcmxkKEFQSTo6VXNlckNvbnRlbnRXb3JsZDo6bm9ybWFs
V29ybGRJZGVudGlmZXIoKSkpKTsKKyAgICByZXR1cm4gKndvcmxkLmdldCgpOworfQorCitDb250
ZW50V29ybGQmIENvbnRlbnRXb3JsZDo6ZGVmYXVsdENsaWVudFdvcmxkKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8UmVmUHRyPENvbnRlbnRXb3JsZD4+IHdvcmxkKGFkb3B0UmVmKG5l
dyBDb250ZW50V29ybGQoQVBJOjpVc2VyQ29udGVudFdvcmxkOjpnZW5lcmF0ZUlkZW50aWZpZXIo
KSkpKTsKKyAgICByZXR1cm4gKndvcmxkLmdldCgpOworfQorCitDb250ZW50V29ybGQ6OkNvbnRl
bnRXb3JsZChjb25zdCBXVEY6OlN0cmluZyYgbmFtZSkKKyAgICA6IG1faWRlbnRpZmllcihBUEk6
OlVzZXJDb250ZW50V29ybGQ6OmdlbmVyYXRlSWRlbnRpZmllcigpKQorICAgICwgbV9uYW1lKG5h
bWUpCit7Cit9CisKK0NvbnRlbnRXb3JsZDo6Q29udGVudFdvcmxkKHVpbnQ2NF90IGlkZW50aWZp
ZXIpCisgICAgOiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKK3sKK30KKworQ29udGVudFdvcmxk
Ojp+Q29udGVudFdvcmxkKCkKK3sKKyAgICBpZiAobV9uYW1lLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIHRha2VuID0gc2hhcmVkV29ybGRNYXAoKS50YWtlKG1fbmFtZSk7
CisgICAgQVNTRVJUX1VOVVNFRCh0YWtlbiwgdGFrZW4gPT0gdGhpcyk7Cit9CisKK30gLy8gbmFt
ZXNwYWNlIEFQSQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNv
bnRlbnRXb3JsZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSUNvbnRlbnRXb3Js
ZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkzZTkwYWNiMzQ2N2Y5MmZlYmNjNDY3M2E4YTZkNzhiMTBjMTNkNDYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJQ29udGVu
dFdvcmxkLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBBUEkgeworCitjbGFzcyBDb250ZW50V29ybGQgZmluYWwgOiBwdWJsaWMgQVBJ
OjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpDb250ZW50V29ybGQ+IHsKK3B1YmxpYzoK
KyAgICBzdGF0aWMgUmVmPENvbnRlbnRXb3JsZD4gc2hhcmVkV29ybGRXaXRoTmFtZShjb25zdCBX
VEY6OlN0cmluZyYpOworICAgIHN0YXRpYyBDb250ZW50V29ybGQmIHBhZ2VDb250ZW50V29ybGQo
KTsKKyAgICBzdGF0aWMgQ29udGVudFdvcmxkJiBkZWZhdWx0Q2xpZW50V29ybGQoKTsKKworICAg
IHZpcnR1YWwgfkNvbnRlbnRXb3JsZCgpOworCisgICAgY29uc3QgV1RGOjpTdHJpbmcmIG5hbWUo
KSBjb25zdCB7IHJldHVybiBtX25hbWU7IH0KKyAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisKKyAgICBzdGQ6OnBhaXI8dWludDY0X3QsIFdU
Rjo6U3RyaW5nPiB3b3JsZERhdGEoKSB7IHJldHVybiB7IG1faWRlbnRpZmllciwgbV9uYW1lIH07
IH0KKworcHJpdmF0ZToKKyAgICBDb250ZW50V29ybGQoY29uc3QgV1RGOjpTdHJpbmcmKTsKKyAg
ICBDb250ZW50V29ybGQodWludDY0X3QgaWRlbnRpZmllcik7CisKKyAgICAvLyBGSVhNRTogVGhp
cyBzaG91bGQgYmUgYW4gT2JqZWN0SWRlbnRpZmllciBvbmNlIHdlIGNhbiBnZXQgYWxsIFNjcmlw
dFdvcmxkIHJlbGF0ZWQgY2xhc3NlcyB0byB1c2UgT2JqZWN0SWRlbnRpZmllci4KKyAgICB1aW50
NjRfdCBtX2lkZW50aWZpZXI7CisgICAgV1RGOjpTdHJpbmcgbV9uYW1lOworfTsKKworfSAvLyBu
YW1lc3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
VXNlckNvbnRlbnRXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNl
ckNvbnRlbnRXb3JsZC5jcHAKaW5kZXggNGRhZGZiZmJkMmRlMjEwNWI0OTcxYTY1ZmI3OGMyMDJk
MTE4MDE5Ni4uYTg1YTE1YjNhZTY1ZGI0YTJkMmFiNmVkYzFmZjk2ZWM5MTgwNTNkZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmNw
cApAQCAtMjgsMTEgKzI4LDkgQEAKIAogbmFtZXNwYWNlIEFQSSB7CiAKLXN0YXRpYyBjb25zdCB1
aW50NjRfdCBub3JtYWxXb3JsZElkZW50aWZlciA9IDE7Ci0KLXN0YXRpYyB1aW50NjRfdCBnZW5l
cmF0ZUlkZW50aWZpZXIoKQordWludDY0X3QgVXNlckNvbnRlbnRXb3JsZDo6Z2VuZXJhdGVJZGVu
dGlmaWVyKCkKIHsKLSAgICBzdGF0aWMgdWludDY0X3QgaWRlbnRpZmllciA9IG5vcm1hbFdvcmxk
SWRlbnRpZmVyOworICAgIHN0YXRpYyB1aW50NjRfdCBpZGVudGlmaWVyID0gbm9ybWFsV29ybGRJ
ZGVudGlmZXIoKTsKIAogICAgIHJldHVybiArK2lkZW50aWZpZXI7CiB9CkBAIC01NSw3ICs1Myw3
IEBAIFVzZXJDb250ZW50V29ybGQ6OlVzZXJDb250ZW50V29ybGQoY29uc3QgV1RGOjpTdHJpbmcm
IG5hbWUpCiB9CiAKIFVzZXJDb250ZW50V29ybGQ6OlVzZXJDb250ZW50V29ybGQoRm9yTm9ybWFs
V29ybGRPbmx5KQotICAgIDogbV9pZGVudGlmaWVyKG5vcm1hbFdvcmxkSWRlbnRpZmVyKQorICAg
IDogbV9pZGVudGlmaWVyKG5vcm1hbFdvcmxkSWRlbnRpZmVyKCkpCiB7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJVXNlckNvbnRlbnRXb3JsZC5oCmluZGV4IDg0
MGZlMWMzMDNlNzYzZmQ2ZTBlZWE1ZGUxMWI0YTk5YWVkNGI2NGMuLmZlOWZjNTQ4YmRlYTRjNmY1
MTg3MTdkZjI1MzVhYzYzNjViMWRhMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9BUElVc2VyQ29udGVudFdvcmxkLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0FQSVVzZXJDb250ZW50V29ybGQuaApAQCAtMzEsNiArMzEsOCBAQAogCiBuYW1lc3Bh
Y2UgQVBJIHsKIAorY2xhc3MgQ29udGVudFdvcmxkOworCiBjbGFzcyBVc2VyQ29udGVudFdvcmxk
IGZpbmFsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6VXNlckNv
bnRlbnRXb3JsZD4gewogcHVibGljOgogICAgIHN0YXRpYyBSZWY8VXNlckNvbnRlbnRXb3JsZD4g
d29ybGRXaXRoTmFtZShjb25zdCBXVEY6OlN0cmluZyYpOwpAQCAtNDEsMTIgKzQzLDE4IEBAIHB1
YmxpYzoKICAgICBjb25zdCBXVEY6OlN0cmluZyYgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmFt
ZTsgfQogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZp
ZXI7IH0KIAorICAgIHN0YXRpYyB1aW50NjRfdCBub3JtYWxXb3JsZElkZW50aWZlcigpIHsgcmV0
dXJuIDE7IH07CisKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIENvbnRlbnRXb3JsZDsKKwog
ICAgIFVzZXJDb250ZW50V29ybGQoY29uc3QgV1RGOjpTdHJpbmcmKTsKIAogICAgIGVudW0gY2xh
c3MgRm9yTm9ybWFsV29ybGRPbmx5IHsgTm9ybWFsV29ybGQgfTsKICAgICBVc2VyQ29udGVudFdv
cmxkKEZvck5vcm1hbFdvcmxkT25seSk7CiAKKyAgICBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVJ
ZGVudGlmaWVyKCk7CisKICAgICB1aW50NjRfdCBtX2lkZW50aWZpZXI7CiAgICAgV1RGOjpTdHJp
bmcgbV9uYW1lOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Lm1tCmluZGV4IGQzMjlkMWU2Y2U0ZTA4ZTA0NDIzNjdkY2M1MDk5NDdjN2JiZWJmOWQu
LjIwNmY5MmE0NjU5YTUxMWJmZjMxYzE3NGRhMDYyYTkzNzIyYWVlNGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtOTEsNiArOTEsNyBA
QAogI2ltcG9ydCAiV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmgiCiAjaW1wb3J0ICJXZWJWaWV3
SW1wbC5oIgogI2ltcG9ydCAiX1dLQWN0aXZhdGVkRWxlbWVudEluZm9JbnRlcm5hbC5oIgorI2lt
cG9ydCAiX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS0RpYWdub3N0aWNM
b2dnaW5nRGVsZWdhdGUuaCIKICNpbXBvcnQgIl9XS0ZpbmREZWxlZ2F0ZS5oIgogI2ltcG9ydCAi
X1dLRnJhbWVIYW5kbGVJbnRlcm5hbC5oIgpAQCAtODMzLDcgKzgzNCw3IEBAIHN0YXRpYyBXS0Vy
cm9yQ29kZSBjYWxsYmFja0Vycm9yQ29kZShXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJy
b3IpCiAKIC0gKHZvaWQpZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFTY3JpcHRT
dHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBsZXRp
b25IYW5kbGVyCiB7Ci0gICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3Ry
aW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJl
OllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW3NlbGYgX2V2
YWx1YXRlSmF2YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRo
QXJndW1lbnRzOm5pbCBmb3JjZVVzZXJHZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21w
bGV0aW9uSGFuZGxlciBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkXTsK
IH0KIAogc3RhdGljIGJvb2wgdmFsaWRhdGVBcmd1bWVudChpZCBhcmd1bWVudCkKQEAgLTg3MCw3
ICs4NzEsNyBAQCBzdGF0aWMgYm9vbCB2YWxpZGF0ZUFyZ3VtZW50KGlkIGFyZ3VtZW50KQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAotLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmlu
ZyAqKWphdmFTY3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOihCT09MKWFzQXN5bmNGdW5jdGlv
biB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRz
IGZvcmNlVXNlckdlc3R1cmU6KEJPT0wpZm9yY2VVc2VyR2VzdHVyZSBjb21wbGV0aW9uSGFuZGxl
cjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIKKy0gKHZvaWQpX2V2
YWx1YXRlSmF2YVNjcmlwdDooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5j
dGlvbjooQk9PTClhc0FzeW5jRnVuY3Rpb24gd2l0aEFyZ3VtZW50czooTlNEaWN0aW9uYXJ5PE5T
U3RyaW5nICosIGlkPiAqKWFyZ3VtZW50cyBmb3JjZVVzZXJHZXN0dXJlOihCT09MKWZvcmNlVXNl
ckdlc3R1cmUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICopKWNvbXBs
ZXRpb25IYW5kbGVyIGluV29ybGQ6KF9XS0NvbnRlbnRXb3JsZCAqKXdvcmxkCiB7CiAgICAgYXV0
byBoYW5kbGVyID0gYWRvcHROUyhbY29tcGxldGlvbkhhbmRsZXIgY29weV0pOwogCkBAIC05MDcs
NyArOTA4LDcgQEAgLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0OihOU1N0cmluZyAqKWphdmFT
Y3JpcHRTdHJpbmcgYXNBc3luY0Z1bmN0aW9uOihCT09MKWEKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIF9wYWdlLT5ydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoV2ViQ29yZTo6UnVuSmF2
YVNjcmlwdFBhcmFtZXRlcnMgeyBqYXZhU2NyaXB0U3RyaW5nLCAhIWFzQXN5bmNGdW5jdGlvbiwg
V1RGTW92ZShhcmd1bWVudHNNYXApLCAhIWZvcmNlVXNlckdlc3R1cmUgfSwgW2hhbmRsZXJdKEFQ
STo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9wdGlvbmFs
PFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0VmFsdWVD
YWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CisgICAgX3BhZ2UtPnJ1bkphdmFTY3JpcHRJbk1h
aW5GcmFtZVNjcmlwdFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzIHsgamF2
YVNjcmlwdFN0cmluZywgISFhc0FzeW5jRnVuY3Rpb24sIFdURk1vdmUoYXJndW1lbnRzTWFwKSwg
ISFmb3JjZVVzZXJHZXN0dXJlIH0sICp3b3JsZC0+X2NvbnRlbnRXb3JsZC5nZXQoKSwgW2hhbmRs
ZXJdKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2NyaXB0VmFsdWUsIE9w
dGlvbmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6U2NyaXB0
VmFsdWVDYWxsYmFjazo6RXJyb3IgZXJyb3JDb2RlKSB7CiAgICAgICAgIGlmICghaGFuZGxlcikK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTUyMyw2ICsxNTI0LDE2IEBAIC0gKFVJVGV4dElu
cHV0QXNzaXN0YW50SXRlbSAqKWlucHV0QXNzaXN0YW50SXRlbQogCiAjcHJhZ21hIG1hcmsgLSBt
YWNPUy9pT1MgV0tQcml2YXRlCiAKKy0gKHZvaWQpX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlv
bjooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFy
eTxOU1N0cmluZyAqLCBpZD4gKilhcmd1bWVudHMgaW5Xb3JsZDooX1dLQ29udGVudFdvcmxkICop
Y29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJy
b3IpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpq
YXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aEFyZ3VtZW50czphcmd1bWVu
dHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxldGlvbkhhbmRs
ZXIgaW5Xb3JsZDpjb250ZW50V29ybGRdOworfQorCistICh2b2lkKV9ldmFsdWF0ZUphdmFTY3Jp
cHQ6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBpbldvcmxkOihfV0tDb250ZW50V29ybGQg
Kiljb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICop
KWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlwdDpqYXZh
U2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBmb3JjZVVz
ZXJHZXN0dXJlOllFUyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlciBpbldvcmxk
OmNvbnRlbnRXb3JsZF07Cit9CisKIC0gKF9XS1NlbGVjdGlvbkF0dHJpYnV0ZXMpX3NlbGVjdGlv
bkF0dHJpYnV0ZXMKIHsKICAgICByZXR1cm4gX3NlbGVjdGlvbkF0dHJpYnV0ZXM7CkBAIC0yMDA2
LDExICsyMDE3LDYgQEAgLSAodm9pZClfdGFrZVBERlNuYXBzaG90V2l0aENvbmZpZ3VyYXRpb246
KFdLU25hcHNob3RDb25maWd1cmF0aW9uICopc25hcHNob3RDb24KICAgICBbc2VsZiBjcmVhdGVQ
REZXaXRoQ29uZmlndXJhdGlvbjpwZGZDb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOmNv
bXBsZXRpb25IYW5kbGVyXTsKIH0KIAotLSAodm9pZClfY2FsbEFzeW5jRnVuY3Rpb246KE5TU3Ry
aW5nICopamF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRzOihOU0RpY3Rpb25hcnk8TlNTdHJp
bmcgKiwgaWQ+ICopYXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNF
cnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyCi17Ci0gICAgW3NlbGYgX2V2YWx1YXRlSmF2
YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpZRVMgd2l0aEFyZ3VtZW50
czphcmd1bWVudHMgZm9yY2VVc2VyR2VzdHVyZTpZRVMgY29tcGxldGlvbkhhbmRsZXI6Y29tcGxl
dGlvbkhhbmRsZXJdOwotfQotCiAtIChOU0RhdGEgKilfc2Vzc2lvblN0YXRlRGF0YQogewogICAg
IC8vIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgdXNlIHRoZSBsZWdhY3kgc2Vzc2lvbiBzdGF0ZSBl
bmNvZGVyLgpAQCAtMjE1Myw3ICsyMTU5LDcgQEAgLSAodm9pZClfaXNKSVRFbmFibGVkOih2b2lk
KF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCiAKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlw
dFdpdGhvdXRVc2VyR2VzdHVyZTooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewot
ICAgIFtzZWxmIF9ldmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBhc0FzeW5jRnVu
Y3Rpb246Tk8gd2l0aEFyZ3VtZW50czpuaWwgZm9yY2VVc2VyR2VzdHVyZTpOTyBjb21wbGV0aW9u
SGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CisgICAgW3NlbGYgX2V2YWx1YXRlSmF2YVNjcmlw
dDpqYXZhU2NyaXB0U3RyaW5nIGFzQXN5bmNGdW5jdGlvbjpOTyB3aXRoQXJndW1lbnRzOm5pbCBm
b3JjZVVzZXJHZXN0dXJlOk5PIGNvbXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyIGlu
V29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50V29ybGRdOwogfQogCiAtICh2b2lkKV91
cGRhdGVXZWJzaXRlUG9saWNpZXM6KF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xpY2ll
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgKaW5kZXggZDNmZTcwNzIwYTczZmExMWM2YmIyNzIyMTIzNjU0MDZiMWMyNmU2NC4u
NmFlNjFjYzRlOTNmM2QwM2IwYzRmODBkMGZiZWM1NDFiMWVhZjhhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0x
MDYsNiArMTA2LDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdl
KSB7CiBAY2xhc3MgV0tCcm93c2luZ0NvbnRleHRIYW5kbGU7CiBAY2xhc3MgV0tXZWJwYWdlUHJl
ZmVyZW5jZXM7CiBAY2xhc3MgX1dLQXBwbGljYXRpb25NYW5pZmVzdDsKK0BjbGFzcyBfV0tDb250
ZW50V29ybGQ7CiBAY2xhc3MgX1dLRnJhbWVIYW5kbGU7CiBAY2xhc3MgX1dLSGl0VGVzdFJlc3Vs
dDsKIEBjbGFzcyBfV0tJbnNwZWN0b3I7CkBAIC0zMTgsNyArMzE5LDU4IEBAIHR5cGVkZWYgTlNf
T1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogCiAtICh2b2lkKV90YWtlUERGU25h
cHNob3RXaXRoQ29uZmlndXJhdGlvbjooV0tTbmFwc2hvdENvbmZpZ3VyYXRpb24gKilzbmFwc2hv
dENvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqcGRmU25h
cHNob3REYXRhLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAotLSAodm9pZClfY2Fs
bEFzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyB3aXRoQXJndW1lbnRz
OihOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgaWQ+ICopYXJndW1lbnRzIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRpb25IYW5kbGVyOworLyog
QGFic3RyYWN0IENhbGxzIHRoZSBnaXZlbiBKYXZhU2NyaXB0IHN0cmluZyBhcyBhIGZ1bmN0aW9u
LCBwYXNzaW5nIHRoZSBnaXZlbiBuYW1lZCBhcmd1bWVudHMgdG8gdGhhdCBmdW5jdGlvbi4KKyBA
cGFyYW0gamF2YVNjcmlwdFN0cmluZyBUaGUgSmF2YVNjcmlwdCBzdHJpbmcgdG8gY2FsbCBhcyBh
IGZ1bmN0aW9uLgorIEBwYXJhbSBhcmd1bWVudHMgQSBkaWN0aW9uYXJ5IHJlcHJlc2VudGluZyB0
aGUgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgZnVuY3Rpb24gY2FsbC4KKyBAcGFyYW0g
Y29udGVudFdvcmxkIFRoZSBXS0NvbnRlbnRXb3JsZCBpbiB3aGljaCB0byBjYWxsIHRoZSBKYXZh
U2NyaXB0IGZ1bmN0aW9uLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRvIGlu
dm9rZSB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlIGZ1bmN0aW9uIGNhbGwsIG9yIHdpdGgg
dGhlIGFzeW5jaHJvbm91cyByZXNvbHV0aW9uIG9mIHRoZSBmdW5jdGlvbidzIHJldHVybiB2YWx1
ZS4KKyBAZGlzY3Vzc2lvbiBUaGUgSmF2YVNjcmlwdCBzdHJpbmcgaXMgdHJlYXRlZCBhcyBhbiBh
bm9ueW1vdXMgSmF2YVNjcmlwdCBmdW5jdGlvbiB0aGF0IGNhbiBiZSBjYWxsZWQgd2l0aCBuYW1l
ZCBhcmd1bWVudHMuCisgUGFzcyBpbiBKYXZhU2NyaXB0IHN0cmluZyBmb3JtYXR0ZWQgZm9yIGV2
YWx1YXRpb24sIG5vdCBhcyBvbmUgb2YgdGhlIHZhcmlhbnRzIG9mIGZ1bmN0aW9uIGNhbGwgYXZh
aWxhYmxlIGluIEphdmFTY3JpcHQuCisgRm9yIGV4YW1wbGU6CisgICAgIHJldHVybiB4ID8geSA6
IHo7CisKKyBUaGUgYXJndW1lbnRzIGRpY3Rpb25hcnkgc3VwcGxpZXMgdGhlIHZhbHVlcyBmb3Ig
dGhvc2UgYXJndW1lbnRzIHdoaWNoIGFyZSBzZXJpYWxpemVkIGludG8gSmF2YVNjcmlwdCBlcXVp
dmFsZW50cy4KKyBGb3IgZXhhbXBsZToKKyAgICAgQHsgQCJ4IiA6IEBZRVMsIEAieSIgOiBAMSwg
QCJ6IiA6IEAyIH07CisKKyBDb21iaW5pbmcgdGhlIGFib3ZlIGFyZ3VtZW50cyBkaWN0aW9uYXJ5
IHdpdGggdGhlIGFib3ZlIEphdmFTY3JpcHQgc3RyaW5nLCBhIGZ1bmN0aW9uIHdpdGggdGhlIGFy
Z3VtZW50cyAieCIsICJ5IiwgYW5kICJ6IiBpcyBjYWxsZWQgd2l0aCB2YWx1ZXMgWUVTLCAxLCBh
bmQgMiByZXNwZWN0aXZlbHkuCisKKyBBbGxvd2VkIGFyZ3VtZW50IHR5cGVzIGFyZToKKyBOU051
bWJlciwgTlNTdHJpbmcsIE5TRGF0ZSwgTlNBcnJheSwgTlNEaWN0aW9uYXJ5LCBhbmQgTlNOdWxs
LgorIEFueSBOU0FycmF5IG9yIE5TRGljdGlvbmFyeSBjb250YWluZXJzIGNhbiBvbmx5IGNvbnRh
aW4gb2JqZWN0cyBvZiB0aG9zZSB0eXBlcy4KKworIE5vIG1hdHRlciB3aGljaCBXS0NvbnRlbnRX
b3JsZCB5b3UgdXNlIHRvIGNhbGwgeW91ciBKYXZhU2NyaXB0IGZ1bmN0aW9uLCB5b3UgY2FuIG1h
a2UgY2hhbmdlcyB0byB0aGUgdW5kZXJseWluZyB3ZWIgY29udGVudC4gKGUuZy4gdGhlIERvY3Vt
ZW50IGFuZCBpdHMgRE9NIHN0cnVjdHVyZSkKKyBTdWNoIGNoYW5nZXMgd2lsbCBiZSB2aXNpYmxl
IHRvIHNjcmlwdCBleGVjdXRpbmcgaW4gYWxsIFdLQ29udGVudFdvcmxkcy4KKyBDYWxsaW5nIHlv
dXIgSmF2YVNjcmlwdCBmdW5jdGlvbiBjYW4gbGVhdmUgYmVoaW5kIG90aGVyIGNoYW5nZXMgdG8g
Z2xvYmFsIHN0YXRlIHZpc2liaWxlIHRvIEphdmFTY3JpcHQuIChlLmcuIGB3aW5kb3cubXlWYXJp
YWJsZSA9IDE7YCkKKyBUaG9zZSBjaGFuZ2VzIHdpbGwgb25seSBiZSB2aXNpYmlsZSB0byBzY3Jp
cHRzIGV4ZWN1dGVkIGluIHRoZSBzYW1lIFdLQ29udGVudFdvcmxkLgorCisgWW91ciBjb21wbGV0
aW9uIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgcmV0dXJuIHZhbHVlIG9mIHlvdXIg
SmF2YVNjcmlwdCBmdW5jdGlvbi4KKyBJZiB5b3VyIEphdmFTY3JpcHQgZG9lcyBub3QgZXhwbGlj
aXRseSByZXR1cm4gYW55IHZhbHVlLCB0aGF0IHVuZGVmaW5lZCByZXN1bHQgbWFuaWZlc3RzIGFz
IG5pbCBiZWluZyBwYXNzZWQgdG8geW91ciBjb21wbGV0aW9uIGhhbmRsZXIuCisgSWYgeW91ciBK
YXZhU2NyaXB0IHJldHVybnMgbnVsbCwgdGhhdCByZXN1bHQgbWFuaWZlc3RzIGFzIE5TTnVsbCBi
ZWluZyBwYXNzZWQgdG8geW91ciBjb21wbGV0aW9uIGhhbmRsZXIuCisKKyBKYXZhU2NyaXB0IGhh
cyB0aGUgY29uY2VwdCBvZiBhICJ0aGVuYWJsZSIgb2JqZWN0LCB3aGljaCBpcyBhbnkgSmF2YVNj
cmlwdCBvYmplY3QgdGhhdCBoYXMgYSBjYWxsYWJsZSAidGhlbiIgcHJvcGVydHkuCisgVGhlIG1v
c3Qgd2VsbCBrbm93biBleGFtcGxlIG9mIGEgInRoZW5hYmxlIiBvYmplY3QgaXMgYSBKYXZhU2Ny
aXB0IHByb21pc2UuCisgSWYgeW91ciBKYXZhU2NyaXB0IHJldHVybnMgYSAidGhlbmFibGUiIG9i
amVjdCBXZWJLaXQgd2lsbCBjYWxsICJ0aGVuIiBvbiB0aGUgcmVzdWx0aW5nIG9iamVjdCBhbmQg
d2FpdCBmb3IgaXQgdG8gYmUgcmVzb2x2ZWQuCisKKyBJZiB0aGUgb2JqZWN0IGNhbGxzICJmdWxm
aWxsIiwgeW91ciBjb21wbGV0aW9uIGhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVz
dWx0LgorIElmIHRoZSBvYmplY3QgY2FsbHMgInJlamVjdCIsIHlvdXIgY29tcGxldGlvbiBoYW5k
bGVyIHdpbGwgYmUgY2FsbGVkIHdpdGggYSBXS0Vycm9ySmF2YVNjcmlwdEFzeW5jRnVuY3Rpb25S
ZXN1bHRSZWplY3RlZCBlcnJvciBjb250YWluaW5nIHRoZSByZWplY3QgcmVhc29uIGluIHRoZSB1
c2VySW5mbyBkaWN0aW9uYXJ5LgorIElmIHRoZSBvYmplY3QgaXMgZ2FyYmFnZSBjb2xsZWN0ZWQg
YmVmb3JlIGl0IGlzIHJlc29sdmVkLCB5b3VyIGNvbXBsZXRpb24gaGFuZGxlciB3aWxsIGJlIGNh
bGxlZCB3aXRoIGFuIGVycm9yIGluZGljYXRpbmcgdGhhdCBpdCB3aWxsIG5ldmVyIGJlIHJlc29s
dmVkLgorKi8KKy0gKHZvaWQpX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjooTlNTdHJpbmcg
KilqYXZhU2NyaXB0U3RyaW5nIHdpdGhBcmd1bWVudHM6KE5TRGljdGlvbmFyeTxOU1N0cmluZyAq
LCBpZD4gKilhcmd1bWVudHMgaW5Xb3JsZDooX1dLQ29udGVudFdvcmxkICopY29udGVudFdvcmxk
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShpZCwgTlNFcnJvciAqZXJyb3IpKWNvbXBsZXRp
b25IYW5kbGVyOworCisvKiBAYWJzdHJhY3QgRXZhbHVhdGVzIHRoZSBnaXZlbiBKYXZhU2NyaXB0
IHN0cmluZy4KKyBAcGFyYW0gamF2YVNjcmlwdFN0cmluZyBUaGUgSmF2YVNjcmlwdCBzdHJpbmcg
dG8gZXZhbHVhdGUuCisgQHBhcmFtIGNvbnRlbnRXb3JsZCBUaGUgV0tDb250ZW50V29ybGQgaW4g
d2hpY2ggdG8gZXZhbHVhdGUgdGhlIEphdmFTY3JpcHQgc3RyaW5nLgorIEBwYXJhbSBjb21wbGV0
aW9uSGFuZGxlciBBIGJsb2NrIHRvIGludm9rZSB3aGVuIHNjcmlwdCBldmFsdWF0aW9uIGNvbXBs
ZXRlcyBvciBmYWlscy4KKyBAZGlzY3Vzc2lvbiBUaGUgY29tcGxldGlvbkhhbmRsZXIgaXMgcGFz
c2VkIHRoZSByZXN1bHQgb2YgdGhlIHNjcmlwdCBldmFsdWF0aW9uIG9yIGFuIGVycm9yLgorIE5v
IG1hdHRlciB3aGljaCBXS0NvbnRlbnRXb3JsZCB5b3UgdXNlIHRvIGV2YWx1YXRlIHlvdXIgSmF2
YVNjcmlwdCBzdHJpbmcsIHlvdSBjYW4gbWFrZSBjaGFuZ2VzIHRvIHRoZSB1bmRlcmx5aW5nIHdl
YiBjb250ZW50LiAoZS5nLiB0aGUgRG9jdW1lbnQgYW5kIGl0cyBET00gc3RydWN0dXJlKQorIFN1
Y2ggY2hhbmdlcyB3aWxsIGJlIHZpc2libGUgdG8gc2NyaXB0IGV4ZWN1dGluZyBpbiBhbGwgV0tD
b250ZW50V29ybGRzLgorIEV2YWx1YXRpbmcgeW91ciBKYXZhU2NyaXB0IHN0cmluZyBjYW4gbGVh
dmUgYmVoaW5kIG90aGVyIGNoYW5nZXMgdG8gZ2xvYmFsIHN0YXRlIHZpc2liaWxlIHRvIEphdmFT
Y3JpcHQuIChlLmcuIGB3aW5kb3cubXlWYXJpYWJsZSA9IDE7YCkKKyBUaG9zZSBjaGFuZ2VzIHdp
bGwgb25seSBiZSB2aXNpYmlsZSB0byBzY3JpcHRzIGV4ZWN1dGVkIGluIHRoZSBzYW1lIFdLQ29u
dGVudFdvcmxkLgorIGV2YWx1YXRlSmF2YVNjcmlwdDogaXMgdGhlIGJlc3Qgd2F5IHRvIHNldCB1
cCBnbG9iYWwgc3RhdGUgZm9yIGZ1dHVyZSBKYXZhU2NyaXB0IGV4ZWN1dGlvbiBpbiBhIGdpdmVu
IHdvcmxkLiAoZS5nLiBJbXBvcnRpbmcgbGlicmFyaWVzL3V0aWxpdGllcyB0aGF0IGZ1dHVyZSBK
YXZhU2NyaXB0IGV4ZWN1dGlvbiB3aWxsIHJlbHkgb24pCisgT25jZSB5b3VyIGdsb2JhbCBzdGF0
ZSBpcyBzZXQgdXAsIGNvbnNpZGVyIHVzaW5nIGNhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjog
Zm9yIG1vcmUgZmxleGlibGUgaW50ZXJhY3Rpb24gd2l0aCB0aGUgSmF2YVNjcmlwdCBwcm9ncmFt
bWluZyBtb2RlbC4KKyovCistICh2b2lkKV9ldmFsdWF0ZUphdmFTY3JpcHQ6KE5TU3RyaW5nICop
amF2YVNjcmlwdFN0cmluZyBpbldvcmxkOihfV0tDb250ZW50V29ybGQgKiljb250ZW50V29ybGQg
Y29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlkLCBOU0Vycm9yICplcnJvcikpY29tcGxldGlv
bkhhbmRsZXI7CiAKIEBlbmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS0NvbnRlbnRXb3JsZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZkMjVhZDZmMjIzZTJkZWZhMmQ2
ZjA1YTZhZDNjZTk5ZDNmMWQyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxkLmgKQEAgLTAsMCArMSw2OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1FX05P
Tk5VTExfQkVHSU4KKworLyohCitBIFdLQ29udGVudFdvcmxkIG9iamVjdCBhbGxvd3MgeW91IHRv
IHNlcGVyYXRlIHlvdXIgYXBwbGljYXRpb24ncyBpbnRlcmFjdGlvbiB3aXRoIGNvbnRlbnQgZGlz
cGxheWVkIGluIGEgV0tXZWJWaWV3IGludG8gZGlmZmVyZW50IHJvbGVzIHRoYXQgY2Fubm90IGlu
dGVyZmVyZSB3aXRoIG9uZSBhbm90aGVyLgorKi8KK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tDb250ZW50V29ybGQg
OiBOU09iamVjdAorCisrIChpbnN0YW5jZXR5cGUpbmV3IE5TX1VOQVZBSUxBQkxFOworLSAoaW5z
dGFuY2V0eXBlKWluaXQgTlNfVU5BVkFJTEFCTEU7CisKKy8qISBAYWJzdHJhY3QgUmV0cmlldmUg
dGhlIG1haW4gd29ybGQgdGhhdCBwYWdlIGNvbnRlbnQgaXRzZWxmIHVzZXMuCisgQGRpc2N1c3Np
b24gV2hlbiBpbnRlcmFjdGluZyB3aXRoIHBhZ2UgY29udGVudCBpbiBhIFdLV2ViVmlldyB1c2lu
ZyB0aGUgcGFnZSBjb250ZW50IHdvcmxkIHlvdSBjYW4gZGlzcnVwdCB0aGUgb3BlcmF0aW9uIG9m
IHBhZ2UgY29udGVudCAoZS5nLiBieSBjb25mbGljdGluZyB3aXRoIHZhcmlhYmxlIG5hbWVzIGlu
IEphdmFTY3JpcHQgc2V0IGJ5IHRoZSB3ZWIgcGFnZSBjb250ZW50IGl0c2VsZikuCisqLworQHBy
b3BlcnR5IChjbGFzcywgbm9uYXRvbWljLCByZWFkb25seSkgX1dLQ29udGVudFdvcmxkICpwYWdl
Q29udGVudFdvcmxkOworCisvKiEgQGFic3RyYWN0IFJldHJpZXZlIHRoZSBkZWZhdWx0IG5vbi1w
YWdlIGNvbnRlbnQgd29ybGQgZm9yIEFQSSBjbGllbnRzLgorIEBkaXNjdXNzaW9uIEludGVyYWN0
aW5nIHdpdGggcGFnZSBjb250ZW50IGluIGEgV0tXZWJWaWV3IHVzaW5nIGEgY29udGVudCB3b3Js
ZCBkaWZmZXJlbnQgZnJvbSB0aGUgcGFnZSBjb250ZW50IHdvcmxkIGVuYWJsZXMgdXNpbmcgRE9N
IGFuZCBidWlsdC1pbiBET00gQVBJcworIHdpdGhvdXQgY29uZmxpY3Rpbmcgd2l0aCBvdGhlciBh
c3BlY3RzIG9mIHRoZSBwYWdlIGNvbnRlbnQgKGUuZy4gSmF2YVNjcmlwdCBmcm9tIHRoZSB3ZWIg
cGFnZSBjb250ZW50IGl0c2VsZikKKyovCitAcHJvcGVydHkgKGNsYXNzLCBub25hdG9taWMsIHJl
YWRvbmx5KSBfV0tDb250ZW50V29ybGQgKmRlZmF1bHRDbGllbnRXb3JsZDsKKworLyohIEBhYnN0
cmFjdCBSZXRyaWV2ZXMgYSBuYW1lZCBjb250ZW50IHdvcmxkIGZvciBBUEkgdXNlcnMuCisgQHBh
cmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIFdLQ29udGVudFdvcmxkIHRvIHJldHJpZXZlLgorIEBk
aXNjdXNzaW9uIEJ5IGludGVyYWN0aW5nIHdpdGggcGFnZSBjb250ZW50IGluIGEgV0tXZWJWaWV3
IHVzaW5nIGEgbm9uLW1haW4gY29udGVudCB3b3JsZCB5b3UgY2FuIGludGVyYWN0IHdpdGggdGhl
IERPTSBhbmQgYnVpbHQtaW4gRE9NIEFQSXMKKyB3aXRob3V0IGNvbmZsaWN0aW5nIHdpdGggb3Ro
ZXIgYXNwZWN0cyBvZiB0aGUgcGFnZSBjb250ZW50IChlLmcuIEphdmFTY3JpcHQgZnJvbSB0aGUg
d2ViIGNvbnRlbnQgaXRzZWxmKQorIFJlcGVhdGVkIGNhbGxzIHdpdGggdGhlIHNhbWUgbmFtZSB3
aWxsIHJldHJpZXZlIHRoZSBzYW1lIFdLQ29udGVudFdvcmxkIGluc3RhbmNlLgorIEVhY2ggbmFt
ZWQgY29udGVudCB3b3JsZCBpcyBkaXN0aW5jdCBmcm9tIGFsbCBvdGhlciBuYW1lZCBjb250ZW50
IHdvcmxkcywgdGhlIGRlZmF1bHRDbGllbnRXb3JsZCwgYW5kIHRoZSBwYWdlQ29udGVudFdvcmxk
LgorIFRoZSBuYW1lIGNhbiBiZSB1c2VkIHRvIGtlZXAgZGlzdGluY3Qgd29ybGRzIGlkZW50aWZp
YWJsZSBhbnl3aGVyZSBhIHdvcmxkIG1pZ2h0IGJlIHN1cmZhY2VkIGluIGEgdXNlciBpbnRlcmZh
Y2UuCisgRm9yIGV4YW1wbGUsIHRoZSBkaWZmZXJlbnQgd29ybGRzIHVzZWQgaW4geW91ciBhcHBs
aWNhdGlvbiB3aWxsIGJlIHN1cmZhY2VkIGJ5IG5hbWUgaW4gdGhlIFdlYktpdCBXZWIgSW5zcGVj
dG9yLgorKi8KKysgKF9XS0NvbnRlbnRXb3JsZCAqKXdvcmxkV2l0aE5hbWU6KE5TU3RyaW5nICop
bmFtZSBOU19SRUZJTkVEX0ZPUl9TV0lGVDsKKworLyohIEBhYnN0cmFjdCBUaGUgbmFtZSBvZiB0
aGUgV0tDb250ZW50V29ybGQKKyBAZGlzY3Vzc2lvbiBUaGUgcGFnZUNvbnRlbnRXb3JsZCBhbmQg
ZGVmYXVsdENsaWVudFdvcmxkIGluc3RhbmNlcyB3aWxsIGhhdmUgYSBuaWwgbmFtZS4KKyBBbGwg
b3RoZXIgaW5zdGFuY2VzIHdpbGwgaGF2ZSB0aGUgbm9uLW5pbCBuYW1lIHRoZXkgd2VyZSBhY2Nl
c3NlZCBieS4KKyovCitAcHJvcGVydHkgKG51bGxhYmxlLCBub25hdG9taWMsIHJlYWRvbmx5LCBj
b3B5KSBOU1N0cmluZyAqbmFtZTsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tDb250ZW50V29y
bGQubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxk
Lm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmVhMzY1ZjI1YzViNjQ3YTg5MDgzZWFjMmE2MTAxZjhiMjk0NWJmYmEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
Q29udGVudFdvcmxkLm1tCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJj
b25maWcuaCIKKyNpbXBvcnQgIl9XS0NvbnRlbnRXb3JsZEludGVybmFsLmgiCisKK0BpbXBsZW1l
bnRhdGlvbiBfV0tDb250ZW50V29ybGQKKworKyAoX1dLQ29udGVudFdvcmxkICopcGFnZUNvbnRl
bnRXb3JsZAoreworICAgIHJldHVybiB3cmFwcGVyKEFQSTo6Q29udGVudFdvcmxkOjpwYWdlQ29u
dGVudFdvcmxkKCkpOworfQorCisrIChfV0tDb250ZW50V29ybGQgKilkZWZhdWx0Q2xpZW50V29y
bGQKK3sKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRXb3JsZDo6ZGVmYXVsdENsaWVu
dFdvcmxkKCkpOworfQorCisrIChfV0tDb250ZW50V29ybGQgKil3b3JsZFdpdGhOYW1lOihOU1N0
cmluZyAqKW5hbWUKK3sKKyAgICByZXR1cm4gd3JhcHBlcihBUEk6OkNvbnRlbnRXb3JsZDo6c2hh
cmVkV29ybGRXaXRoTmFtZShuYW1lKSk7Cit9CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF9j
b250ZW50V29ybGQtPn5Db250ZW50V29ybGQoKTsKKworICAgIFtzdXBlciBkZWFsbG9jXTsKK30K
KworLSAoTlNTdHJpbmcgKiluYW1lCit7CisgICAgaWYgKF9jb250ZW50V29ybGQtPm5hbWUoKS5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIHJldHVybiBfY29udGVudFdvcmxk
LT5uYW1lKCk7Cit9CisKKyNwcmFnbWEgbWFyayBXS09iamVjdCBwcm90b2NvbCBpbXBsZW1lbnRh
dGlvbgorCistIChBUEk6Ok9iamVjdCYpX2FwaU9iamVjdAoreworICAgIHJldHVybiAqX2NvbnRl
bnRXb3JsZDsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ODAw
YzEyNDEzMjRjYTJkNWEzYjk4NTIxOWZmMmRlZGE3M2ViODhkCi0tLSAvZGV2L251bGwKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS0NvbnRlbnRXb3JsZEludGVybmFs
LmgKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS0NvbnRlbnRXb3Js
ZC5oIgorCisjaW1wb3J0ICJBUElDb250ZW50V29ybGQuaCIKKyNpbXBvcnQgIldLT2JqZWN0Lmgi
CisjaW1wb3J0IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
K3RlbXBsYXRlPD4gc3RydWN0IFdyYXBwZXJUcmFpdHM8QVBJOjpDb250ZW50V29ybGQ+IHsKKyAg
ICB1c2luZyBXcmFwcGVyQ2xhc3MgPSBfV0tDb250ZW50V29ybGQ7Cit9OworCit9CisKK0BpbnRl
cmZhY2UgX1dLQ29udGVudFdvcmxkICgpIDxXS09iamVjdD4geworQHBhY2thZ2UKKyAgICBBUEk6
Ok9iamVjdFN0b3JhZ2U8QVBJOjpDb250ZW50V29ybGQ+IF9jb250ZW50V29ybGQ7Cit9CitAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvZ2xpYi9XZWJLaXRXZWJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcu
Y3BwCmluZGV4IGY5ZGExYmI1OTQ1ZGQwYWI4ZGNkZTFmZWU2MGMxODAxYTQyNDU1M2QuLmZmODZl
Y2YwZjk2NmM0Zjk3NDFhMmEzNmEyOGMzZGZhMTQwMmY0NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9nbGliL1dlYktpdFdlYlZpZXcuY3BwCkBAIC0yMyw2ICsyMyw3
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViS2l0V2ViVmlldy5oIgogCisj
aW5jbHVkZSAiQVBJQ29udGVudFdvcmxkLmgiCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1
ZGUgIkFQSU5hdmlnYXRpb24uaCIKICNpbmNsdWRlICJBUElTZXJpYWxpemVkU2NyaXB0VmFsdWUu
aCIKQEAgLTM3NDIsNyArMzc0Myw4IEBAIHZvaWQgd2Via2l0X3dlYl92aWV3X3J1bl9qYXZhc2Ny
aXB0X2luX3dvcmxkKFdlYktpdFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyCiAgICAgZ19y
ZXR1cm5faWZfZmFpbCh3b3JsZE5hbWUpOwogCiAgICAgR1JlZlB0cjxHVGFzaz4gdGFzayA9IGFk
b3B0R1JlZihnX3Rhc2tfbmV3KHdlYlZpZXcsIGNhbmNlbGxhYmxlLCBjYWxsYmFjaywgdXNlckRh
dGEpKTsKLSAgICBnZXRQYWdlKHdlYlZpZXcpLnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChzY3JpcHQpLCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0
cnVlIH0sIFN0cmluZzo6ZnJvbVVURjgod29ybGROYW1lKSwgW3Rhc2sgPSBXVEZNb3ZlKHRhc2sp
XShBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSogc2VyaWFsaXplZFNjcmlwdFZhbHVlLCBPcHRp
b25hbDxFeGNlcHRpb25EZXRhaWxzPiBkZXRhaWxzLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJy
b3IpIHsKKyAgICBhdXRvIHdvcmxkID0gQVBJOjpDb250ZW50V29ybGQ6OnNoYXJlZFdvcmxkV2l0
aE5hbWUoU3RyaW5nOjpmcm9tVVRGOCh3b3JsZE5hbWUpKTsKKyAgICBnZXRQYWdlKHdlYlZpZXcp
LnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKHsgU3RyaW5nOjpmcm9tVVRGOChz
Y3JpcHQpLCBmYWxzZSwgV1RGOjpudWxsb3B0LCB0cnVlIH0sIHdvcmxkLmdldCgpLCBbdGFzayA9
IFdURk1vdmUodGFzayldKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiBzZXJpYWxpemVkU2Ny
aXB0VmFsdWUsIE9wdGlvbmFsPEV4Y2VwdGlvbkRldGFpbHM+IGRldGFpbHMsIFdlYktpdDo6Q2Fs
bGJhY2tCYXNlOjpFcnJvcikgewogICAgICAgICBFeGNlcHRpb25EZXRhaWxzIGV4Y2VwdGlvbkRl
dGFpbHM7CiAgICAgICAgIGlmIChkZXRhaWxzKQogICAgICAgICAgICAgZXhjZXB0aW9uRGV0YWls
cyA9ICpkZXRhaWxzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVXNlckNvbnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuY3BwCmlu
ZGV4IGQxMGU3YjVjMTI0NmJkZjliYjAzZWZhZWMwNGQxMDE2NDJhM2MwOTEuLmQwMTQxM2RjNTUy
NjQzOTdkY2Y2ZDRiYWNlN2MxZmE4NTMyNTE3MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENv
bnRyb2xsZXJQcm94eS5jcHAKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJVc2VyQ29u
dGVudENvbnRyb2xsZXJQcm94eS5oIgogCiAjaW5jbHVkZSAiQVBJQXJyYXkuaCIKKyNpbmNsdWRl
ICJBUElDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElVc2VyQ29udGVudFdvcmxkLmgiCiAj
aW5jbHVkZSAiQVBJVXNlclNjcmlwdC5oIgogI2luY2x1ZGUgIkFQSVVzZXJTdHlsZVNoZWV0Lmgi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29udGVudC9XZWJVc2Vy
Q29udGVudENvbnRyb2xsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyUHJveHkuaAppbmRleCA2NzFmYjI5MmQyMDE5
NjAzMzdiMDM4M2VkMDdiMjdmZGI5N2UyYzRkLi42NzZkMjM3YzMzOTZmOTQxNmM2NDlhMmQwYjI1
ZGVlOTI3MjEwMzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyQ29u
dGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5LmgKQEAg
LTQxLDYgKzQxLDcgQEAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgQXJyYXk7CiBjbGFzcyBDb250
ZW50UnVsZUxpc3Q7CitjbGFzcyBDb250ZW50V29ybGQ7CiBjbGFzcyBVc2VyQ29udGVudFdvcmxk
OwogY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFVzZXJTdHlsZVNoZWV0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggZWY0NWE4YzI5ZDliZjRhYTU4ZmFiOGQy
NDY3NzMzMDJlM2ZmOGE5Ny4uZTE2M2Q4ZWE5NDM0Nzg5NWQwMzM4ODEwOTQ3NTc2ZmVhMDQ3NWYy
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0yOSw2ICsy
OSw3IEBACiAKICNpbmNsdWRlICJBUElBcnJheS5oIgogI2luY2x1ZGUgIkFQSUF0dGFjaG1lbnQu
aCIKKyNpbmNsdWRlICJBUElDb250ZW50V29ybGQuaCIKICNpbmNsdWRlICJBUElDb250ZXh0TWVu
dUNsaWVudC5oIgogI2luY2x1ZGUgIkFQSUZpbmRDbGllbnQuaCIKICNpbmNsdWRlICJBUElGaW5k
TWF0Y2hlc0NsaWVudC5oIgpAQCAtMzg2MSwxMCArMzg2MiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6bGF1bmNoSW5pdGlhbFByb2Nlc3NJZk5lY2Vzc2FyeSgpCiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWUoUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzLCBXVEY6OkZ1bmN0aW9uPHZvaWQgKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwg
T3B0aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgcnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2Ny
aXB0V29ybGQoV1RGTW92ZShwYXJhbWV0ZXJzKSwgV1RGOjpudWxsb3B0LCBXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pKTsKKyAgICBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChX
VEZNb3ZlKHBhcmFtZXRlcnMpLCBBUEk6OkNvbnRlbnRXb3JsZDo6cGFnZUNvbnRlbnRXb3JsZCgp
LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJ1
bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJz
JiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29ybGROYW1lLCBXVEY6OkZ1
bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRp
b25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbikKK3Zv
aWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChSdW5K
YXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIEFQSTo6Q29udGVudFdvcmxkJiB3b3Js
ZCwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0aW9u
YWw8RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVu
Y3Rpb24pCiB7CiAgICAgLy8gRm9yIGJhY2t3YXJkLWNvbXBhdGliaWxpdHkgc3VwcG9ydCBydW5u
aW5nIHNjcmlwdCBpbiBhIFdlYlZpZXcgd2hpY2ggaGFzIG5vdCBkb25lIGFueSBsb2FkcyB5ZXRz
LgogICAgIGxhdW5jaEluaXRpYWxQcm9jZXNzSWZOZWNlc3NhcnkoKTsKQEAgLTM4NzUsNyArMzg3
Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRX
b3JsZChSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmCiAgICAgfQogCiAgICAgYXV0byBjYWxsYmFj
a0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vz
cy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OnJ1bkphdmFT
Y3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkIl9zKSk7Ci0gICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UnVuSmF2YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQocGFyYW1ldGVycywgd29y
bGROYW1lLCBjYWxsYmFja0lEKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UnVuSmF2
YVNjcmlwdEluTWFpbkZyYW1lU2NyaXB0V29ybGQocGFyYW1ldGVycywgd29ybGQud29ybGREYXRh
KCksIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJ1bkphdmFTY3JpcHRJ
bkZyYW1lKEZyYW1lSWRlbnRpZmllciBmcmFtZUlELCBjb25zdCBTdHJpbmcmIHNjcmlwdCwgYm9v
bCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpTZXJpYWxpemVkU2Ny
aXB0VmFsdWUqLCBPcHRpb25hbDxFeGNlcHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJv
cik+JiYgY2FsbGJhY2tGdW5jdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKaW5kZXggMWYwZTZiNmJlMTI0N2IwZDM3M2JmNTI3Mzc3Yjk2MDc1NmM4NjdiMC4uZTFmYzIw
NGJlY2E1NTNhOTE5NTBjNzBlMWM5ZTUzZjRhMDhmMWI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKQEAgLTE2Myw2ICsxNjMsNyBAQCBpbnRlcmZhY2UgSUQzRDExRGV2
aWNlMTsKIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBBdHRhY2htZW50OworY2xhc3MgQ29udGVu
dFdvcmxkOwogY2xhc3MgQ29udGV4dE1lbnVDbGllbnQ7CiBjbGFzcyBGaW5kQ2xpZW50OwogY2xh
c3MgRmluZE1hdGNoZXNDbGllbnQ7CkBAIC0xMDcwLDcgKzEwNzEsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBnZXRTb3VyY2VGb3JGcmFtZShXZWJGcmFtZVByb3h5KiwgV1RGOjpGdW5jdGlvbjx2b2lk
IChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJik7CiAgICAgdm9pZCBnZXRX
ZWJBcmNoaXZlT2ZGcmFtZShXZWJGcmFtZVByb3h5KiwgRnVuY3Rpb248dm9pZCAoQVBJOjpEYXRh
KiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYpOwogICAgIHZvaWQgcnVuSmF2YVNjcmlwdEluTWFp
bkZyYW1lKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIFdURjo6RnVuY3Rpb248
dm9pZCAoQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNl
cHRpb25EZXRhaWxzPiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7
Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChXZWJDb3JlOjpS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+JiB3b3JsZE5h
bWUsIFdURjo6RnVuY3Rpb248dm9pZChBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIE9wdGlv
bmFsPFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHM+LCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKTsKKyAgICB2b2lkIHJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlw
dFdvcmxkKFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIEFQSTo6Q29udGVudFdv
cmxkJiwgV1RGOjpGdW5jdGlvbjx2b2lkKEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKiwgT3B0
aW9uYWw8V2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscz4sIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pOwogICAgIC8vIEZvciBzdWIgZnJhbWVzLgogICAgIHZvaWQgcnVu
SmF2YVNjcmlwdEluRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyLCBjb25zdCBTdHJpbmcm
IHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlLCBXVEY6OkZ1bmN0aW9uPHZvaWQoQVBJOjpT
ZXJpYWxpemVkU2NyaXB0VmFsdWUqLCBPcHRpb25hbDxXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxz
PiwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgY2FsbGJhY2tGdW5jdGlvbik7CiAgICAgdm9pZCBm
b3JjZVJlcGFpbnQoUmVmUHRyPFZvaWRDYWxsYmFjaz4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhZDhiNmRlZjIxNzhjZjI4ZjNl
YWVlMGU3YjZiYWE0ZmQxNjczNTA4Li4yMDQwNmUzNTE1NDBhMmYwYzE2MzlkZjc5NGI2YzJjZjRh
ZThkY2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEwMjUsNiArMTAyNSwxMCBAQAogCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEUg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0NGMEUxMTYzQTQ4NkMwMEMy
OTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxN0NGMEU0MTYzQTQ4
NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Q0YwRTIxNjNBNDg2QzAw
QzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CisJCTUx
ODM3MjFEMjNDRTg1RjYwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxODM3MjFBMjNDRDQ5QjIwMDAzQ0Y4
MyAvKiBfV0tDb250ZW50V29ybGQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OworCQk1MTgzNzIxRTIzQ0U4NUZCMDAwM0NGODMgLyogX1dLQ29udGVudFdv
cmxkSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxODM3MjFDMjNDRDRBNzQwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGRJbnRlcm5hbC5o
ICovOyB9OworCQk1MTgzNzIxRjIzQ0U5NTIxMDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MzcyMUIy
M0NENDlCMjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5tbSAqLzsgfTsKKwkJNTE4MzcyMjIy
M0NFOTc0MTAwMDNDRjgzIC8qIEFQSUNvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4MzcyMjAyM0NFOTczQTAwMDNDRjgzIC8qIEFQ
SUNvbnRlbnRXb3JsZC5oICovOyB9OwogCQk1MTg3MUI1QzEyN0NCODlEMDBGNzYyMzIgLyogV2Vi
Q29udGV4dE1lbnUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxODcxQjVBMTI3Q0I4OUQwMEY3NjIzMiAvKiBXZWJDb250ZXh0TWVudS5oICovOyB9Owog
CQk1MThBQ0FFQTEyQUVFNkJCMDBCMDRCODMgLyogV0tQcm90ZWN0aW9uU3BhY2VUeXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE4QUNBRTkxMkFF
RTZCQjAwQjA0QjgzIC8qIFdLUHJvdGVjdGlvblNwYWNlVHlwZXMuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MThBQ0YxMTEyQjAxNUY4MDBCMDRC
ODMgLyogV0tDcmVkZW50aWFsVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUxOEFDRjEwMTJCMDE1RjgwMEIwNEI4MyAvKiBXS0NyZWRlbnRpYWxU
eXBlcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBA
IC0zNTgwLDYgKzM1ODQsMTEgQEAKIAkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdv
cmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQk1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsg
cGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdDIvQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07
CiAJCTUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0Mi9OZXR3
b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVD
VFNfRElSOyB9OworCQk1MTgzNzIxQTIzQ0Q0OUIyMDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxk
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0NvbnRlbnRXb3JsZC5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgzNzIxQjIzQ0Q0OUIyMDAwM0NGODMgLyog
X1dLQ29udGVudFdvcmxkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gX1dLQ29udGVudFdvcmxkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTgz
NzIxQzIzQ0Q0QTc0MDAwM0NGODMgLyogX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLQ29udGVudFdvcmxkSW50ZXJuYWwuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4MzcyMjAyM0NFOTczQTAwMDNDRjgzIC8qIEFQ
SUNvbnRlbnRXb3JsZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBUElDb250
ZW50V29ybGQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE4MzcyMjEyM0NFOTcz
QTAwMDNDRjgzIC8qIEFQSUNvbnRlbnRXb3JsZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBUElDb250ZW50V29ybGQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTgzQjM5MzEzNzlGODVDMDBFODc1NEUgLyogU2hpbS54Y2NvbmZpZyAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQueGNjb25maWc7IHBhdGggPSBTaGltLnhjY29uZmlnOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MTg3MUI1OTEyN0NCODlEMDBGNzYyMzIgLyogV2ViQ29udGV4dE1lbnUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViQ29udGV4dE1lbnUu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTg3MUI1QTEyN0NCODlEMDBGNzYy
MzIgLyogV2ViQ29udGV4dE1lbnUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViQ29udGV4dE1lbnUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY3MjksNiAr
NjczOCw5IEBACiAJCQkJNUM0NjA5RTIyMjQzMEU0QzAwOTk0M0MyIC8qIF9XS0NvbnRlbnRSdWxl
TGlzdEFjdGlvbi5oICovLAogCQkJCTVDNDYwOUUzMjI0MzBFNEQwMDk5NDNDMiAvKiBfV0tDb250
ZW50UnVsZUxpc3RBY3Rpb24ubW0gKi8sCiAJCQkJNUM0NjA5RTQyMjQzMEU0RDAwOTk0M0MyIC8q
IF9XS0NvbnRlbnRSdWxlTGlzdEFjdGlvbkludGVybmFsLmggKi8sCisJCQkJNTE4MzcyMUEyM0NE
NDlCMjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5oICovLAorCQkJCTUxODM3MjFCMjNDRDQ5
QjIwMDAzQ0Y4MyAvKiBfV0tDb250ZW50V29ybGQubW0gKi8sCisJCQkJNTE4MzcyMUMyM0NENEE3
NDAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmggKi8sCiAJCQkJMUE1NzA0RjYx
QkUwMUZGNDAwODc0QUYxIC8qIF9XS0NvbnRleHRNZW51RWxlbWVudEluZm8uaCAqLywKIAkJCQkx
QTU3MDRGNTFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1lbnVFbGVtZW50SW5mby5tbSAq
LywKIAkJCQk1QzVEMjM4OTIyN0ExODkyMDAwQjlCREEgLyogX1dLQ3VzdG9tSGVhZGVyRmllbGRz
LmggKi8sCkBAIC04NDQ1LDYgKzg0NTcsOCBAQAogCQkJCTVDNDYwOUU2MjI0MzBGQTcwMDk5NDND
MiAvKiBBUElDb250ZW50UnVsZUxpc3RBY3Rpb24uaCAqLywKIAkJCQk3QzNBMDZBNTFBQUI5MDNF
MDA5RDc0QkEgLyogQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuY3BwICovLAogCQkJCTdDM0EwNkE2
MUFBQjkwM0UwMDlENzRCQSAvKiBBUElDb250ZW50UnVsZUxpc3RTdG9yZS5oICovLAorCQkJCTUx
ODM3MjIxMjNDRTk3M0EwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuY3BwICovLAorCQkJCTUx
ODM3MjIwMjNDRTk3M0EwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQuaCAqLywKIAkJCQkwNzZF
ODg0RDFBMTNDQURGMDA1RTkwRkMgLyogQVBJQ29udGV4dE1lbnVDbGllbnQuaCAqLywKIAkJCQk1
Q0UwQzM2NjIyOUYyRDNEMDAzNjk1RjAgLyogQVBJQ29udGV4dE1lbnVFbGVtZW50SW5mby5jcHAg
Ki8sCiAJCQkJNUNFMEMzNjcyMjlGMkQzRTAwMzY5NUYwIC8qIEFQSUNvbnRleHRNZW51RWxlbWVu
dEluZm8uaCAqLywKQEAgLTk3OTAsNiArOTgwNCw4IEBACiAJCQkJOTkwRDI4QjExQzY1MjA4RDAw
OTg2OTc3IC8qIF9XS0F1dG9tYXRpb25TZXNzaW9uSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAog
CQkJCTVDNDYwOUU3MjI0MzE3QjQwMDk5NDNDMiAvKiBfV0tDb250ZW50UnVsZUxpc3RBY3Rpb24u
aCBpbiBIZWFkZXJzICovLAogCQkJCTVDNDYwOUU4MjI0MzE3QkIwMDk5NDNDMiAvKiBfV0tDb250
ZW50UnVsZUxpc3RBY3Rpb25JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE4MzcyMUQy
M0NFODVGNjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTE4MzcyMUUyM0NFODVGQjAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZEludGVybmFsLmggaW4g
SGVhZGVycyAqLywKIAkJCQkxQTU3MDRGODFCRTAxRkY0MDA4NzRBRjEgLyogX1dLQ29udGV4dE1l
bnVFbGVtZW50SW5mby5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUM1RDIzOEMyMjdBMkNEQTAwMEI5
QkRBIC8qIF9XS0N1c3RvbUhlYWRlckZpZWxkcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM4OTFC
NjkxQTY4QkVCQzAwMzBGMzg2IC8qIF9XS0RpYWdub3N0aWNMb2dnaW5nRGVsZWdhdGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtOTg5NSw2ICs5OTExLDcgQEAKIAkJCQkxQTNERDIwNjEyNUU1QTJGMDA0
NTE1RTYgLyogQVBJQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3Qzg5RDJCNDFBNkIwNjhD
MDAzQTVGREUgLyogQVBJQ29udGVudFJ1bGVMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzNB
MDZBODFBQUI5MDNFMDA5RDc0QkEgLyogQVBJQ29udGVudFJ1bGVMaXN0U3RvcmUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTUxODM3MjIyMjNDRTk3NDEwMDAzQ0Y4MyAvKiBBUElDb250ZW50V29ybGQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTA3NkU4ODRFMUExM0NBREYwMDVFOTBGQyAvKiBBUElDb250
ZXh0TWVudUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0E4MjFGNTAxRTJGN0E3NTAwNjA0
NTc3IC8qIEFQSUN1c3RvbVByb3RvY29sTWFuYWdlckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTE1NzhCODMxMjA5RUNFRjAwQTM3QzRBIC8qIEFQSURhdGEuaCBpbiBIZWFkZXJzICovLApA
QCAtMTE4NjUsNiArMTE4ODIsNyBAQAogCQkJaXNhID0gUEJYU291cmNlc0J1aWxkUGhhc2U7CiAJ
CQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmlsZXMgPSAoCisJCQkJNTE4Mzcy
MUYyM0NFOTUyMTAwMDNDRjgzIC8qIF9XS0NvbnRlbnRXb3JsZC5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTVDQkQ1OTVDMjI4MEVERjQwMDJCMjJBQSAvKiBfV0tDdXN0b21IZWFkZXJGaWVsZHMubW0g
aW4gU291cmNlcyAqLywKIAkJCQk0OUZCRUZGRDIzOUIwMTFEMDBCRDAzMkYgLyogX1dLUmVzb3Vy
Y2VMb2FkU3RhdGlzdGljc0ZpcnN0UGFydHkubW0gaW4gU291cmNlcyAqLywKIAkJCQk0OUZCRUZG
RjIzOUIwMTJGMDBCRDAzMkYgLyogX1dLUmVzb3VyY2VMb2FkU3RhdGlzdGljc1RoaXJkUGFydHku
bW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9V
c2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKaW5kZXgg
YzQ0YWRiMjZhMGYxYzk1MzQ0MGI4OThjMGU3ZGZmNTVmOTZhYTA1OS4uNmVjNjcyMTgzYjNiNDQz
YWQ1MzBiMzJiMDVmZmJmMzNjMjBmYTFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50L1dlYlVzZXJDb250ZW50Q29udHJvbGxl
ci5jcHAKQEAgLTYyLDcgKzYyLDcgQEAgdHlwZWRlZiBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OnBh
aXI8UmVmUHRyPEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ+LCB1bnNpZ25lZD4KIAogc3RhdGlj
IFdvcmxkTWFwJiB3b3JsZE1hcCgpCiB7Ci0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdvcmxk
TWFwPiBtYXAoc3RkOjppbml0aWFsaXplcl9saXN0PFdvcmxkTWFwOjpLZXlWYWx1ZVBhaXJUeXBl
PiB7IHsgMSwgc3RkOjptYWtlX3BhaXIoJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1h
bFdvcmxkKCksIDEpIH0gfSk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFdvcmxkTWFwPiBt
YXAoc3RkOjppbml0aWFsaXplcl9saXN0PFdvcmxkTWFwOjpLZXlWYWx1ZVBhaXJUeXBlPiB7IHsg
V2ViVXNlckNvbnRlbnRDb250cm9sbGVyOjppZGVudGlmaWVyRm9yTm9ybWFsV29ybGQoKSwgc3Rk
OjptYWtlX3BhaXIoJkluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCksIDEp
IH0gfSk7CiAKICAgICByZXR1cm4gbWFwOwogfQpAQCAtOTQsMjMgKzk0LDMzIEBAIFdlYlVzZXJD
b250ZW50Q29udHJvbGxlcjo6fldlYlVzZXJDb250ZW50Q29udHJvbGxlcigpCiAgICAgdXNlckNv
bnRlbnRDb250cm9sbGVycygpLnJlbW92ZShtX2lkZW50aWZpZXIpOwogfQogCi12b2lkIFdlYlVz
ZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRXb3JsZHMoY29uc3QgVmVjdG9yPHN0
ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4mIHdvcmxkcykKK0luamVjdGVkQnVuZGxlU2NyaXB0
V29ybGQqIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6d29ybGRGb3JJZGVudGlmaWVyKHVpbnQ2
NF90IGlkZW50aWZpZXIpCit7CisgICAgYXV0byBpdGVyYXRvciA9IHdvcmxkTWFwKCkuZmluZChp
ZGVudGlmaWVyKTsKKyAgICByZXR1cm4gaXRlcmF0b3IgPT0gd29ybGRNYXAoKS5lbmQoKSA/IG51
bGxwdHIgOiBpdGVyYXRvci0+dmFsdWUuZmlyc3QuZ2V0KCk7Cit9CisKK3ZvaWQgV2ViVXNlckNv
bnRlbnRDb250cm9sbGVyOjphZGRVc2VyQ29udGVudFdvcmxkKGNvbnN0IHN0ZDo6cGFpcjx1aW50
NjRfdCwgU3RyaW5nPiYgd29ybGQpCiB7Ci0gICAgZm9yIChhdXRvJiB3b3JsZCA6IHdvcmxkcykg
ewotICAgICAgICBBU1NFUlQod29ybGQuZmlyc3QpOwotICAgICAgICBBU1NFUlQod29ybGQuZmly
c3QgIT0gMSk7CisgICAgQVNTRVJUKHdvcmxkLmZpcnN0KTsKKyAgICBBU1NFUlQod29ybGQuZmly
c3QgIT0gMSk7CiAKLSAgICAgICAgd29ybGRNYXAoKS5lbnN1cmUod29ybGQuZmlyc3QsIFsmXSB7
CisgICAgd29ybGRNYXAoKS5lbnN1cmUod29ybGQuZmlyc3QsIFsmXSB7CiAjaWYgUExBVEZPUk0o
R1RLKSB8fCBQTEFURk9STShXUEUpCi0gICAgICAgICAgICAvLyBUaGUgR0xpYiBBUEkgZG9lc24n
dCBhbGxvdyB0byBjcmVhdGUgc2NyaXB0IHdvcmxkcyBmcm9tIHRoZSBVSSBwcm9jZXNzLiBXZSBu
ZWVkIHRvCi0gICAgICAgICAgICAvLyB1c2UgdGhlIGV4aXN0aW5nIHdvcmxkIGNyZWF0ZWQgYnkg
dGhlIHdlYiBleHRlbnNpb24gaWYgYW55LiBUaGUgd29ybGQgbmFtZSBpcyB1c2VkCi0gICAgICAg
ICAgICAvLyBhcyB0aGUgaWRlbnRpZmllci4KLSAgICAgICAgICAgIGlmIChhdXRvKiBleGlzdGlu
Z1dvcmxkID0gSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6ZmluZCh3b3JsZC5zZWNvbmQpKQot
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihSZWY8SW5qZWN0ZWRCdW5kbGVT
Y3JpcHRXb3JsZD4oKmV4aXN0aW5nV29ybGQpLCAxKTsKKyAgICAgICAgLy8gVGhlIEdMaWIgQVBJ
IGRvZXNuJ3QgYWxsb3cgdG8gY3JlYXRlIHNjcmlwdCB3b3JsZHMgZnJvbSB0aGUgVUkgcHJvY2Vz
cy4gV2UgbmVlZCB0bworICAgICAgICAvLyB1c2UgdGhlIGV4aXN0aW5nIHdvcmxkIGNyZWF0ZWQg
YnkgdGhlIHdlYiBleHRlbnNpb24gaWYgYW55LiBUaGUgd29ybGQgbmFtZSBpcyB1c2VkCisgICAg
ICAgIC8vIGFzIHRoZSBpZGVudGlmaWVyLgorICAgICAgICBpZiAoYXV0byogZXhpc3RpbmdXb3Js
ZCA9IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGQuc2Vjb25kKSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihSZWY8SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3Js
ZD4oKmV4aXN0aW5nV29ybGQpLCAxKTsKICNlbmRpZgotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bWFrZV9wYWlyKEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmNyZWF0ZSh3b3JsZC5zZWNvbmQp
LCAxKTsKLSAgICAgICAgfSk7Ci0gICAgfQorICAgICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
SW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDo6Y3JlYXRlKHdvcmxkLnNlY29uZCksIDEpOworICAg
IH0pOworfQorCit2b2lkIFdlYlVzZXJDb250ZW50Q29udHJvbGxlcjo6YWRkVXNlckNvbnRlbnRX
b3JsZHMoY29uc3QgVmVjdG9yPHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPj4mIHdvcmxkcykK
K3sKKyAgICBmb3IgKGF1dG8mIHdvcmxkIDogd29ybGRzKQorICAgICAgICBhZGRVc2VyQ29udGVu
dFdvcmxkKHdvcmxkKTsKIH0KIAogdm9pZCBXZWJVc2VyQ29udGVudENvbnRyb2xsZXI6OnJlbW92
ZVVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3Rvcjx1aW50NjRfdD4mIHdvcmxkSWRlbnRpZmll
cnMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNvbnRlbnQvV2Vi
VXNlckNvbnRlbnRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvVXNlckNv
bnRlbnQvV2ViVXNlckNvbnRlbnRDb250cm9sbGVyLmgKaW5kZXggZDZmOGMxY2I3NmY3ZTQ3ODRj
MzdmNDY1ZjY0NTcwYmQ1ZjgyZDQyNC4uNDhlN2Q2YWM1YzdlMmQ5NWEyYzFhODI2MGM5NDkwMGJl
YjBhYzhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1VzZXJDb250ZW50
L1dlYlVzZXJDb250ZW50Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9Vc2VyQ29udGVudC9XZWJVc2VyQ29udGVudENvbnRyb2xsZXIuaApAQCAtNjQsNyArNjQsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlVXNlclN0eWxlU2hlZXRzKEluamVjdGVkQnVuZGxl
U2NyaXB0V29ybGQmKTsKICAgICB2b2lkIHJlbW92ZUFsbFVzZXJDb250ZW50KCk7CiAKKyAgICBz
dGF0aWMgdWludDY0X3QgaWRlbnRpZmllckZvck5vcm1hbFdvcmxkKCkgeyByZXR1cm4gMTsgfQor
ICAgIEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkRm9ySWRlbnRpZmllcih1aW50NjRf
dCk7CisKICAgICB2b2lkIGFkZFVzZXJDb250ZW50V29ybGRzKGNvbnN0IFZlY3RvcjxzdGQ6OnBh
aXI8dWludDY0X3QsIFN0cmluZz4+Jik7CisgICAgdm9pZCBhZGRVc2VyQ29udGVudFdvcmxkKGNv
bnN0IHN0ZDo6cGFpcjx1aW50NjRfdCwgU3RyaW5nPiYpOwogICAgIHZvaWQgYWRkVXNlclNjcmlw
dHMoVmVjdG9yPFdlYlVzZXJTY3JpcHREYXRhPiYmLCBJbmplY3RVc2VyU2NyaXB0SW1tZWRpYXRl
bHkpOwogICAgIHZvaWQgYWRkVXNlclN0eWxlU2hlZXRzKGNvbnN0IFZlY3RvcjxXZWJVc2VyU3R5
bGVTaGVldERhdGE+Jik7CiAgICAgdm9pZCBhZGRVc2VyU2NyaXB0TWVzc2FnZUhhbmRsZXJzKGNv
bnN0IFZlY3RvcjxXZWJTY3JpcHRNZXNzYWdlSGFuZGxlckRhdGE+Jik7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGI4MmE3MTFjNWVkOWZkOGYz
MDI2YjVjOWQwZmI0Nzk1OGM5ODNiNWIuLjk0ZGNkZTU3MmJhMWU4MjIwMGIyMWZhYWFmOGU4MzFj
YzEwMDYwNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCkBAIC0zMzY5LDE3ICszMzY5LDIzIEBAIEtleWJvYXJkVUlNb2RlIFdlYlBhZ2U6OmtleWJv
YXJkVUlNb2RlKCkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8S2V5Ym9hcmRVSU1vZGU+KChmdWxs
S2V5Ym9hcmRBY2Nlc3NFbmFibGVkID8gS2V5Ym9hcmRBY2Nlc3NGdWxsIDogS2V5Ym9hcmRBY2Nl
c3NEZWZhdWx0KSB8IChtX3RhYlRvTGlua3MgPyBLZXlib2FyZEFjY2Vzc1RhYnNUb0xpbmtzIDog
MCkpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBS
dW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmIHBhcmFtZXRlcnMsIGNvbnN0IE9wdGlvbmFsPFN0cmlu
Zz4mIHdvcmxkTmFtZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQordm9pZCBXZWJQYWdlOjpydW5K
YXZhU2NyaXB0KFdlYkZyYW1lKiBmcmFtZSwgUnVuSmF2YVNjcmlwdFBhcmFtZXRlcnMmJiBwYXJh
bWV0ZXJzLCB1aW50NjRfdCB3b3JsZElkZW50aWZpZXIsIENhbGxiYWNrSUQgY2FsbGJhY2tJRCkK
IHsKICAgICAvLyBOT1RFOiBXZSBuZWVkIHRvIGJlIGNhcmVmdWwgd2hlbiBydW5uaW5nIHNjcmlw
dHMgdGhhdCB0aGUgb2JqZWN0cyB3ZSBkZXBlbmQgb24gZG9uJ3QKICAgICAvLyBkaXNhcHBlYXIg
ZHVyaW5nIHNjcmlwdCBleGVjdXRpb24uCiAKLSAgICBhdXRvKiB3b3JsZCA9IHdvcmxkTmFtZSA/
IEluamVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6OmZpbmQod29ybGROYW1lLnZhbHVlKCkpIDogJklu
amVjdGVkQnVuZGxlU2NyaXB0V29ybGQ6Om5vcm1hbFdvcmxkKCk7Ci0gICAgaWYgKCFmcmFtZSB8
fCAhZnJhbWUtPmNvcmVGcmFtZSgpIHx8ICF3b3JsZCkgeworICAgIGlmICghZnJhbWUgfHwgIWZy
YW1lLT5jb3JlRnJhbWUoKSkgewogICAgICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlNjcmlwdFZhbHVlQ2FsbGJhY2soeyB9LCBFeGNlcHRpb25EZXRhaWxzIHsgIlVuYWJsZSB0byBl
eGVjdXRlIEphdmFTY3JpcHQ6IFBhZ2UgaXMgaW4gaW52YWxpZCBzdGF0ZSJfcyB9LCBjYWxsYmFj
a0lEKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBBU1NFUlQod29ybGRJZGVudGlm
aWVyKTsKKyAgICBhdXRvKiB3b3JsZCA9IG1fdXNlckNvbnRlbnRDb250cm9sbGVyLT53b3JsZEZv
cklkZW50aWZpZXIod29ybGRJZGVudGlmaWVyKTsKKyAgICBpZiAoIXdvcmxkKSB7CisgICAgICAg
IHNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6U2NyaXB0VmFsdWVDYWxsYmFjayh7IH0sIEV4
Y2VwdGlvbkRldGFpbHMgeyAiVW5hYmxlIHRvIGV4ZWN1dGUgSmF2YVNjcmlwdDogQ2Fubm90IGZp
bmQgc3BlY2lmaWVkIGNvbnRlbnQgd29ybGQiX3MgfSwgY2FsbGJhY2tJRCkpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCiAgICAgYXV0byByZXNvbHZlRnVuY3Rpb24gPSBbcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCB0aGlzLCB3b3JsZCA9IG1ha2VSZWYoKndvcmxkKSwgZnJhbWUg
PSBtYWtlUmVmKCpmcmFtZSksIGNhbGxiYWNrSURdKFZhbHVlT3JFeGNlcHRpb24gcmVzdWx0KSB7
CiAgICAgICAgIFJlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+IHNlcmlhbGl6ZWRSZXN1bHRW
YWx1ZTsKICAgICAgICAgaWYgKHJlc3VsdCkgewpAQCAtMzQwMiwxNiArMzQwOCwxNyBAQCB2b2lk
IFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHQoV2ViRnJhbWUqIGZyYW1lLCBSdW5KYXZhU2NyaXB0UGFy
YW1ldGVycyYmIHBhcmFtZXRlcgogICAgIGZyYW1lLT5jb3JlRnJhbWUoKS0+c2NyaXB0KCkuZXhl
Y3V0ZUFzeW5jaHJvbm91c1VzZXJBZ2VudFNjcmlwdEluV29ybGQod29ybGQtPmNvcmVXb3JsZCgp
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBXVEZNb3ZlKHJlc29sdmVGdW5jdGlvbikpOwogfQogCi12
b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycywgY29uc3QgT3B0aW9uYWw8U3RyaW5nPiYgd29y
bGROYW1lLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit2b2lkIFdlYlBhZ2U6OnJ1bkphdmFTY3Jp
cHRJbk1haW5GcmFtZVNjcmlwdFdvcmxkKFJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYgcGFyYW1l
dGVycywgY29uc3Qgc3RkOjpwYWlyPHVpbnQ2NF90LCBTdHJpbmc+JiB3b3JsZERhdGEsIENhbGxi
YWNrSUQgY2FsbGJhY2tJRCkKIHsKLSAgICBydW5KYXZhU2NyaXB0KG1haW5XZWJGcmFtZSgpLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpLCB3b3JsZE5hbWUsIGNhbGxiYWNrSUQpOworICAgIG1fdXNlckNv
bnRlbnRDb250cm9sbGVyLT5hZGRVc2VyQ29udGVudFdvcmxkKHdvcmxkRGF0YSk7CisgICAgcnVu
SmF2YVNjcmlwdChtYWluV2ViRnJhbWUoKSwgV1RGTW92ZShwYXJhbWV0ZXJzKSwgd29ybGREYXRh
LmZpcnN0LCBjYWxsYmFja0lEKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpydW5KYXZhU2NyaXB0SW5G
cmFtZShGcmFtZUlkZW50aWZpZXIgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGJvb2wg
Zm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQogewogICAgIFdlYkZyYW1l
KiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZyYW1lSUQpOwogICAg
IEFTU0VSVChtYWluV2ViRnJhbWUoKSAhPSBmcmFtZSk7Ci0gICAgcnVuSmF2YVNjcmlwdChmcmFt
ZSwgeyBzY3JpcHQsIGZhbHNlLCBXVEY6Om51bGxvcHQsIGZvcmNlVXNlckdlc3R1cmUgfSwgV1RG
OjpudWxsb3B0LCBjYWxsYmFja0lEKTsKKyAgICBydW5KYXZhU2NyaXB0KGZyYW1lLCB7IHNjcmlw
dCwgZmFsc2UsIFdURjo6bnVsbG9wdCwgZm9yY2VVc2VyR2VzdHVyZSB9LCBXZWJVc2VyQ29udGVu
dENvbnRyb2xsZXI6OmlkZW50aWZpZXJGb3JOb3JtYWxXb3JsZCgpLCBjYWxsYmFja0lEKTsKIH0K
IAogdm9pZCBXZWJQYWdlOjpnZXRDb250ZW50c0FzU3RyaW5nKENhbGxiYWNrSUQgY2FsbGJhY2tJ
RCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjYTRj
OTc0MTgwM2U2MzdhZjFjODMwZmUyNjNjMThkZjMwYTA3OWE1Li5kMTdiMjRiYjRjZmZiMzQ3MjE4
NjkxMGU5M2M1ODg1YTMyNTQwOGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC0xNDQxLDggKzE0NDEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgZ2V0
U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShDYWxsYmFja0lEKTsKICAgICB2b2lkIGdldFNvdXJj
ZUZvckZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmllciwgQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBnZXRXZWJBcmNoaXZlT2ZGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIENhbGxiYWNr
SUQpOwotICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFtZSosIFdlYkNvcmU6OlJ1bkphdmFT
Y3JpcHRQYXJhbWV0ZXJzJiYsIGNvbnN0IE9wdGlvbmFsPFN0cmluZz4mIHdvcmxkTmFtZSwgQ2Fs
bGJhY2tJRCk7Ci0gICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVTY3JpcHRXb3JsZChX
ZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBPcHRpb25hbDxTdHJpbmc+
JiB3b3JsZE5hbWUsIENhbGxiYWNrSUQpOworICAgIHZvaWQgcnVuSmF2YVNjcmlwdChXZWJGcmFt
ZSosIFdlYkNvcmU6OlJ1bkphdmFTY3JpcHRQYXJhbWV0ZXJzJiYsIHVpbnQ2NF90IHdvcmxkSWRl
bnRpZmllciwgQ2FsbGJhY2tJRCk7CisgICAgdm9pZCBydW5KYXZhU2NyaXB0SW5NYWluRnJhbWVT
Y3JpcHRXb3JsZChXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyYmLCBjb25zdCBzdGQ6
OnBhaXI8dWludDY0X3QsIFN0cmluZz4mIHdvcmxkRGF0YSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBydW5KYXZhU2NyaXB0SW5GcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZpZXIsIGNvbnN0IFN0
cmluZyYsIGJvb2wgZm9yY2VVc2VyR2VzdHVyZSwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBmb3Jj
ZVJlcGFpbnQoQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCB0YWtlU25hcHNob3QoV2ViQ29yZTo6SW50
UmVjdCBzbmFwc2hvdFJlY3QsIFdlYkNvcmU6OkludFNpemUgYml0bWFwU2l6ZSwgdWludDMyX3Qg
b3B0aW9ucywgQ2FsbGJhY2tJRCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCBlOTBlMzFiMWIzNWY2NjIyOTVjMjEy
NjdmNjEzYzkxNWNmMzdmOWQ2Li40Njk2YzcwMzdlMTY2YmY5ZmMyZDllMGJjYmFmNzFhOTJmODNj
YmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW4KQEAgLTIwNCwxMCArMjA0LDEyIEBAIEdlbmVyYXRlU3ludGhldGljRWRp
dGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRU
eXBlCiAgICAgR2V0U2VsZWN0aW9uQXNXZWJBcmNoaXZlRGF0YShXZWJLaXQ6OkNhbGxiYWNrSUQg
Y2FsbGJhY2tJRCkKICAgICBHZXRTb3VyY2VGb3JGcmFtZShXZWJDb3JlOjpGcmFtZUlkZW50aWZp
ZXIgZnJhbWVJRCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgR2V0V2ViQXJj
aGl2ZU9mRnJhbWUoV2ViQ29yZTo6RnJhbWVJZGVudGlmaWVyIGZyYW1lSUQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQotICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBP
cHRpb25hbDxTdHJpbmc+IHdvcmxkTmFtZSwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQp
CisKKyAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIHVzZSBzZW5kV2l0aEFzeW5jUmVwbHkgaW5z
dGVhZCBvZiBjYWxsYmFja0lEcworICAgIFJ1bkphdmFTY3JpcHRJbk1haW5GcmFtZVNjcmlwdFdv
cmxkKHN0cnVjdCBXZWJDb3JlOjpSdW5KYXZhU2NyaXB0UGFyYW1ldGVycyBwYXJhbWV0ZXJzLCBz
dGQ6OnBhaXI8dWludDY0X3QsIFN0cmluZz4gd29ybGQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogICAgIFJ1bkphdmFTY3JpcHRJbkZyYW1lKFdlYkNvcmU6OkZyYW1lSWRlbnRpZmll
ciBmcmFtZUlELCBTdHJpbmcgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQotICAgIEZvcmNlUmVwYWludChXZWJLaXQ6OkNhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIAorICAgIEZvcmNlUmVwYWludChXZWJLaXQ6OkNhbGxiYWNrSUQgY2Fs
bGJhY2tJRCkKICAgICBTZWxlY3RBbGwoKQogICAgIFNjaGVkdWxlRnVsbEVkaXRvclN0YXRlVXBk
YXRlKCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDA1N2JhN2QzNTU5OGUyYmNkZjRkNDBlMjgzOGYyNzMyYjUzZDhiYWMuLjY1NjJlYTA1NzY3
ZDhjZWUyNGRkMWVjNTcyYjYxMTI0ZDc0M2EzZTMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAyMC0wMS0xNSAgQnJh
ZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFdLQ29udGVudFdv
cmxkIFNQSSwgYW5kIHVzZSBpdCBpbiBKYXZhU2NyaXB0IGV4ZWN1dGlvbi4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNjMxMAorCisgICAgICAgIFJl
dmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisgICAgICAgIAorICAgICAgICBVcGRhdGUgcHJl
dmlvdXMgY2FsbEFzeW5jRnVuY3Rpb24gY2FsbHMgd2l0aCB0aGUgbmV3IHNpZ25hdHVyZS4KKyAg
ICAgICAgQWRkIHRlc3RzIGZvciBuZXcgX1dLQ29udGVudFdvcmxkIGNsYXNzIGFuZCBpdHMgYmVo
YXZpb3Igd2l0aCByZWdhcmQgdG8gZXhlY3V0aW5nIEphdmFTY3JpcHQuCisKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjp0cnlHQ1Byb21pc2UpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6
VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZp
ZXdFdmFsdWF0ZUphdmFTY3JpcHQubW06CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBv
YmplY3RCeUNhbGxpbmdBc3luY0Z1bmN0aW9uOndpdGhBcmd1bWVudHM6ZXJyb3I6XSk6CisKIDIw
MjAtMDEtMDkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBX
ZWJLaXRUZXN0UnVubmVyIGxlYWtzIG9iamVjdHMgaW4gYSB0b3AtbGV2ZWwgYXV0b3JlbGVhc2VQ
b29sIHRoYXQncyBuZXZlciBjbGVhcmVkCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL0FzeW5jRnVuY3Rpb24ubW0KaW5kZXggMDljYWZlNDc5NjgyZDcz
ODI4NmQ4ODBiZmViN2RjNjYyM2Y4YWQ4MC4uNzhjZGQ3NzIwNDc1ZWZjMDlhMjM3NDBjZTgwODY3
M2FiYzY5NDRhNSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9Bc3luY0Z1bmN0aW9uLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvQXN5bmNGdW5jdGlvbi5tbQpAQCAtMjksNiArMjksNyBAQAogI2ltcG9ydCAiVGVz
dC5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
d1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tDb250ZW50V29ybGQuaD4KIAogbmFtZXNw
YWNlIFRlc3RXZWJLaXRBUEkgewogCkBAIC0xODMsNyArMTg0LDcgQEAgc3RhdGljIHZvaWQgdHJ5
R0NQcm9taXNlKFdLV2ViVmlldyAqd2ViVmlldywgYm9vbCYgZG9uZSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgTlNTdHJpbmcgKmZ1bmN0aW9uQm9keSA9IEAicmV0dXJuIG5ldyBQcm9taXNlKGZ1
bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgeyB9KSI7Ci0gICAgW3dlYlZpZXcgX2NhbGxBc3luY0Z1
bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpb
Jl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5j
SmF2YVNjcmlwdEZ1bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBpbldvcmxk
Ol9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAo
aWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQp
OwogICAgICAgICBFWFBFQ1RfVFJVRShlcnJvciAhPSBuaWwpOwogICAgICAgICBFWFBFQ1RfVFJV
RShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIm5vIGxvbmdlciByZWFjaGFi
bGUiXSk7CkBAIC0yMDAsNyArMjAxLDcgQEAgVEVTVChBc3luY0Z1bmN0aW9uLCBQcm9taXNlKQog
ICAgIE5TU3RyaW5nICpmdW5jdGlvbkJvZHkgPSBAInJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlv
bihyZXNvbHZlLCByZWplY3QpIHsgc2V0VGltZW91dChmdW5jdGlvbigpeyByZXNvbHZlKDQyKSB9
LCAwKTsgfSkiOwogCiAgICAgYm9vbCBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NhbGxB
c3luY0Z1bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0aW9uSGFu
ZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbd2ViVmlldyBfY2Fs
bEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBp
bldvcmxkOl9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVy
OlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfTlVMTChl
cnJvcik7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNLaW5kT2ZDbGFzczpbTlNOdW1i
ZXIgY2xhc3NdXSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNFcXVhbFRvTnVtYmVy
OkA0Ml0pOwpAQCAtMjEyLDcgKzIxMyw3IEBAIFRFU1QoQXN5bmNGdW5jdGlvbiwgUHJvbWlzZSkK
ICAgICBmdW5jdGlvbkJvZHkgPSBAInJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZl
LCByZWplY3QpIHsgc2V0VGltZW91dChmdW5jdGlvbigpeyByZWplY3QoJ1JlamVjdGVkIScpIH0s
IDApOyB9KSI7CiAKICAgICBkb25lID0gZmFsc2U7Ci0gICAgW3dlYlZpZXcgX2NhbGxBc3luY0Z1
bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBjb21wbGV0aW9uSGFuZGxlcjpb
Jl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5j
SmF2YVNjcmlwdEZ1bmN0aW9uOmZ1bmN0aW9uQm9keSB3aXRoQXJndW1lbnRzOm5pbCBpbldvcmxk
Ol9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAo
aWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewogICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQp
OwogICAgICAgICBFWFBFQ1RfVFJVRShlcnJvciAhPSBuaWwpOwogICAgICAgICBFWFBFQ1RfVFJV
RShbW2Vycm9yIGRlc2NyaXB0aW9uXSBjb250YWluc1N0cmluZzpAIlJlamVjdGVkISJdKTsKQEAg
LTIyMyw3ICsyMjQsNyBAQCBURVNUKEFzeW5jRnVuY3Rpb24sIFByb21pc2UpCiAgICAgZnVuY3Rp
b25Cb2R5ID0gQCJsZXQgcCA9IG5ldyBQcm94eShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsg
c2V0VGltZW91dChmdW5jdGlvbigpIHsgcmVzb2x2ZSg0Mik7IH0sIDApOyB9LCB7IH0pOyByZXR1
cm4geyB0aGVuOiBwIH07IjsKIAogICAgIGRvbmUgPSBmYWxzZTsKLSAgICBbd2ViVmlldyBfY2Fs
bEFzeW5jRnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmlsIGNvbXBsZXRpb25I
YW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgIFt3ZWJWaWV3IF9j
YWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1bWVudHM6bmls
IGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50V29ybGQgY29tcGxldGlvbkhhbmRs
ZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CiAgICAgICAgIEVYUEVDVF9OVUxM
KGVycm9yKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU051
bWJlciBjbGFzc11dKTsKICAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9OdW1i
ZXI6QDQyXSk7CkBAIC0yMzQsNyArMjM1LDcgQEAgVEVTVChBc3luY0Z1bmN0aW9uLCBQcm9taXNl
KQogICAgIGZ1bmN0aW9uQm9keSA9IEAibGV0IHAgPSBuZXcgUHJveHkoZnVuY3Rpb24ocmVzb2x2
ZSwgcmVqZWN0KSB7IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IHJlamVjdCgnUmVqZWN0ZWQhJyk7
IH0sIDApOyB9LCB7IH0pOyByZXR1cm4geyB0aGVuOiBwIH07IjsKIAogICAgIGRvbmUgPSBmYWxz
ZTsKLSAgICBbd2ViVmlldyBfY2FsbEFzeW5jRnVuY3Rpb246ZnVuY3Rpb25Cb2R5IHdpdGhBcmd1
bWVudHM6bmlsIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vycm9yICplcnJv
cikgeworICAgIFt3ZWJWaWV3IF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246ZnVuY3Rpb25C
b2R5IHdpdGhBcmd1bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50
V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7
CiAgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKGVycm9y
ICE9IG5pbCk7CiAgICAgICAgIEVYUEVDVF9UUlVFKFtbZXJyb3IgZGVzY3JpcHRpb25dIGNvbnRh
aW5zU3RyaW5nOkAiUmVqZWN0ZWQhIl0pOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9XS1dlYlZpZXdFdmFsdWF0ZUphdmFTY3JpcHQubW0gYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNj
cmlwdC5tbQppbmRleCA5ODRiYzM2YjZkMjVmNWU0YTE5OWE1NWIxZjU5YzhjOGNkOGFhYTUyLi44
YzcwYzI0Y2M3MGEwMGQ3YWU1YjJkYjE1MWU2Zjk5ZjRkMjYwZWQ3IDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2ViVmlld0V2YWx1YXRlSmF2YVNj
cmlwdC5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLV2Vi
Vmlld0V2YWx1YXRlSmF2YVNjcmlwdC5tbQpAQCAtMjksOCArMjksMTAgQEAKICNpbXBvcnQgIlBs
YXRmb3JtVXRpbGl0aWVzLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJUZXN0TmF2aWdh
dGlvbkRlbGVnYXRlLmgiCi0jaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisjaW1wb3J0ICJU
ZXN0V0tXZWJWaWV3LmgiCiAjaW1wb3J0IDxXZWJLaXQvV0tFcnJvclByaXZhdGUuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLQ29udGVu
dFdvcmxkLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKIHN0YXRpYyBib29sIGlzRG9u
ZTsKQEAgLTExMSwzICsxMTMsMTE0IEBAIFRFU1QoV0tXZWJWaWV3LCBFdmFsdWF0ZUphdmFTY3Jp
cHRFcnJvckNhc2VzKQogICAgIGlzRG9uZSA9IGZhbHNlOwogICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmaXNEb25lKTsKIH0KKworVEVTVChXS1dlYlZpZXcsIFdLQ29udGVudFdvcmxkKQor
eworICAgIEVYUEVDVF9OVUxMKF9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkLm5hbWUp
OworICAgIEVYUEVDVF9OVUxMKF9XS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQubmFt
ZSk7CisgICAgRVhQRUNUX0ZBTFNFKF9XS0NvbnRlbnRXb3JsZC5wYWdlQ29udGVudFdvcmxkID09
IF9XS0NvbnRlbnRXb3JsZC5kZWZhdWx0Q2xpZW50V29ybGQpOworCisgICAgX1dLQ29udGVudFdv
cmxkICpuYW1lZFdvcmxkID0gW19XS0NvbnRlbnRXb3JsZCB3b3JsZFdpdGhOYW1lOkAiTmFtZSJd
OworICAgIEVYUEVDVF9UUlVFKFtuYW1lZFdvcmxkLm5hbWUgaXNFcXVhbFRvU3RyaW5nOkAiTmFt
ZSJdKTsKKyAgICBFWFBFQ1RfRVEobmFtZWRXb3JsZCwgW19XS0NvbnRlbnRXb3JsZCB3b3JsZFdp
dGhOYW1lOkAiTmFtZSJdKTsKK30KKworVEVTVChXS1dlYlZpZXcsIEV2YWx1YXRlSmF2YVNjcmlw
dEluV29ybGRzKQoreworICAgIFJldGFpblB0cjxUZXN0V0tXZWJWaWV3PiB3ZWJWaWV3ID0gYWRv
cHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAw
LCA4MDAsIDYwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
QCI8aHRtbD48L2h0bWw+Il07CisKKyAgICAvLyBTZXQgYSB2YXJpYWJsZSBpbiB0aGUgbWFpbiB3
b3JsZCB2aWEgIm5vcm1hbCIgZXZhbHVhdGVKYXZhU2NyaXB0CisgICAgaXNEb25lID0gZmFsc2U7
CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAidmFyIGZvbyA9ICdiYXInIiBjb21w
bGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgaXNE
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIC8vIFZlcmlm
eSB0aGF0IHZhbHVlIGlzIHZpc2libGUgd2hlbiBldmFsdWF0aW5nIGluIHRoZSBwYWdlQ29udGVu
dFdvcmxkCisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNjcmlwdDpAImZvbyIgaW5Xb3JsZDpf
V0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJl
c3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tp
bmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3Vs
dCBpc0VxdWFsVG9TdHJpbmc6QCJiYXIiXSk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAg
fV07CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICAvLyBWZXJpZnkgdGhhdCB2YWx1ZSBpcyBu
b3QgdmlzaWJsZSB3aGVuIGV2YWx1YXRpbmcgaW4gdGhlIGRlZmF1bHRDbGllbnRXb3JsZAorICAg
IFt3ZWJWaWV3IF9ldmFsdWF0ZUphdmFTY3JpcHQ6QCJmb28iIGluV29ybGQ6X1dLQ29udGVudFdv
cmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNF
cnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgaXNE
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBpc0RvbmUgPSBmYWxzZTsKKworICAgIC8vIFZlcmlm
eSB0aGF0IHZhbHVlIGlzIHZpc2libGUgd2hlbiBjYWxsaW5nIGEgZnVuY3Rpb24gaW4gdGhlIHBh
Z2VDb250ZW50V29ybGQKKyAgICBbd2ViVmlldyBfY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9u
OkAicmV0dXJuIGZvbyIgd2l0aEFyZ3VtZW50czpuaWwgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQu
cGFnZUNvbnRlbnRXb3JsZCBjb21wbGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJv
ciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9T
dHJpbmc6QCJiYXIiXSk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07CisgICAgaXNE
b25lID0gZmFsc2U7CisKKyAgICAvLyBWZXJpZnkgdGhhdCB2YWx1ZSBpcyBub3QgdmlzaWJsZSB3
aGVuIGNhbGxpbmcgYSBmdW5jdGlvbiBpbiB0aGUgZGVmYXVsdENsaWVudFdvcmxkCisgICAgW3dl
YlZpZXcgX2NhbGxBc3luY0phdmFTY3JpcHRGdW5jdGlvbjpAInJldHVybiBmb28iIHdpdGhBcmd1
bWVudHM6bmlsIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLmRlZmF1bHRDbGllbnRXb3JsZCBjb21w
bGV0aW9uSGFuZGxlcjpbJl0gKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAg
RVhQRUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBpc0RvbmUgPSBmYWxzZTsKKworICAgIC8vIFNldCBhIHZhcmliYWxlIHZhbHVlIGluIGEgbmFt
ZWQgd29ybGQuCisgICAgUmV0YWluUHRyPF9XS0NvbnRlbnRXb3JsZD4gbmFtZWRXb3JsZCA9IFtf
V0tDb250ZW50V29ybGQgd29ybGRXaXRoTmFtZTpAIk5hbWVkV29ybGQiXTsKKyAgICBbd2ViVmll
dyBfZXZhbHVhdGVKYXZhU2NyaXB0OkAidmFyIGJhciA9IGJheiIgaW5Xb3JsZDpuYW1lZFdvcmxk
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgewor
ICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAg
IH1dOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgLy8gU2V0IGEgZ2xvYmFsIHZhcmliYWxl
IHZhbHVlIGluIGEgbmFtZWQgd29ybGQgdmlhIGEgZnVuY3Rpb24gY2FsbC4KKyAgICBbd2ViVmll
dyBfY2FsbEFzeW5jSmF2YVNjcmlwdEZ1bmN0aW9uOkAid2luZG93LmJheiA9IGJhdCIgd2l0aEFy
Z3VtZW50czpuaWwgaW5Xb3JsZDpuYW1lZFdvcmxkLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4o
aWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQp
OworICAgICAgICBFWFBFQ1RfTlVMTChlcnJvcik7CisgICAgICAgIGlzRG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICAvLyBWZXJpZnkgdGhleSBhcmUgdGhl
cmUgaW4gdGhhdCBuYW1lZCB3b3JsZC4KKyAgICBbd2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0
OkAiYmFyIiBpbldvcmxkOm5hbWVkV29ybGQuZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihpZCBy
ZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1bHQgaXNL
aW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSk7CisgICAgICAgIEVYUEVDVF9UUlVFKFtyZXN1
bHQgaXNFcXVhbFRvU3RyaW5nOkAiYmF6Il0pOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAg
IH1dOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgW3dlYlZpZXcgX2V2YWx1YXRlSmF2YVNj
cmlwdDpAIndpbmRvdy5iYXoiIGluV29ybGQ6bmFtZWRXb3JsZC5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUo
W3Jlc3VsdCBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoW3Jlc3VsdCBpc0VxdWFsVG9TdHJpbmc6QCJiYXQiXSk7CisgICAgICAgIGlzRG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICAvLyBWZXJpZnkgdGhl
eSBhcmVuJ3QgdGhlcmUgaW4gdGhlIGRlZmF1bHRDbGllbnRXb3JsZC4KKyAgICBbd2ViVmlldyBf
ZXZhbHVhdGVKYXZhU2NyaXB0OkAiYmFyIiBpbldvcmxkOl9XS0NvbnRlbnRXb3JsZC5kZWZhdWx0
Q2xpZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgaXNEb25lID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBfZXZhbHVhdGVK
YXZhU2NyaXB0OkAid2luZG93LmJheiIgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQuZGVmYXVsdENs
aWVudFdvcmxkIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikg
eworICAgICAgICBFWFBFQ1RfTlVMTChyZXN1bHQpOworICAgICAgICBpc0RvbmUgPSB0cnVlOwor
ICAgIH1dOworICAgIGlzRG9uZSA9IGZhbHNlOworCisgICAgLy8gVmVyaWZ5IHRoZXkgYXJlbid0
IHRoZXJlIGluIHRoZSBwYWdlQ29udGVudFdvcmxkLgorICAgIFt3ZWJWaWV3IF9ldmFsdWF0ZUph
dmFTY3JpcHQ6QCJiYXIiIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VDb250ZW50V29ybGQg
Y29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAg
IEVYUEVDVF9OVUxMKHJlc3VsdCk7CisgICAgICAgIGlzRG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgaXNEb25lID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBfZXZhbHVhdGVKYXZhU2NyaXB0OkAi
d2luZG93LmJheiIgaW5Xb3JsZDpfV0tDb250ZW50V29ybGQucGFnZUNvbnRlbnRXb3JsZCBjb21w
bGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQ
RUNUX05VTEwocmVzdWx0KTsKKyAgICAgICAgaXNEb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBp
c0RvbmUgPSBmYWxzZTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmll
dy5tbQppbmRleCA3NGFkNTgxMjUwMTZjMDMxZjhjNWU0ZWRiYjk0OGUxODA1ZWI1NTBlLi4yMDI4
MTRhMWU5Zjc3MGVjOTZkOWRiYjdkNDdlZGE4MmU1NjAzZjdiIDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9X
ZWJLaXRQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLQWN0aXZhdGVkRWxlbWVudEluZm8u
aD4KKyNpbXBvcnQgPFdlYktpdC9fV0tDb250ZW50V29ybGQuaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KICNpbXBvcnQgPG9iamMvcnVudGltZS5oPgog
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgpAQCAtMTg1LDcgKzE4Niw3IEBAIC0gKGlkKW9iamVj
dEJ5Q2FsbGluZ0FzeW5jRnVuY3Rpb246KE5TU3RyaW5nICopc2NyaXB0IHdpdGhBcmd1bWVudHM6
KE5TRGljdGlvbmFyCiAgICAgICAgICplcnJvck91dCA9IG5pbDsKIAogICAgIFJldGFpblB0cjxp
ZD4gZXZhbFJlc3VsdDsKLSAgICBbc2VsZiBfY2FsbEFzeW5jRnVuY3Rpb246c2NyaXB0IHdpdGhB
cmd1bWVudHM6YXJndW1lbnRzIGNvbXBsZXRpb25IYW5kbGVyOlsmXSAoaWQgcmVzdWx0LCBOU0Vy
cm9yICplcnJvcikgeworICAgIFtzZWxmIF9jYWxsQXN5bmNKYXZhU2NyaXB0RnVuY3Rpb246c2Ny
aXB0IHdpdGhBcmd1bWVudHM6YXJndW1lbnRzIGluV29ybGQ6X1dLQ29udGVudFdvcmxkLnBhZ2VD
b250ZW50V29ybGQgY29tcGxldGlvbkhhbmRsZXI6WyZdIChpZCByZXN1bHQsIE5TRXJyb3IgKmVy
cm9yKSB7CiAgICAgICAgIGV2YWxSZXN1bHQgPSByZXN1bHQ7CiAgICAgICAgIGlmIChlcnJvck91
dCkKICAgICAgICAgICAgICplcnJvck91dCA9IFtlcnJvciByZXRhaW5dOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>