<?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>187682</bug_id>
          
          <creation_ts>2018-07-14 17:07:49 -0700</creation_ts>
          <short_desc>Add an SPI hook to allow clients to yield document parsing and script execution</short_desc>
          <delta_ts>2018-07-19 11:44:08 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</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="Wenson Hsieh">wenson_hsieh</reporter>
          <assigned_to name="Wenson Hsieh">wenson_hsieh</assigned_to>
          <cc>bdakin</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1442252</commentid>
    <comment_count>0</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-14 17:07:49 -0700</bug_when>
    <thetext>The intended use case is to allow Safari modal sheet on watchOS to avoid carrying out performing costly work on the main document after we&apos;ve already determined that the page should be represented using Reader.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442253</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-07-14 17:08:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/42207453&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442263</commentid>
    <comment_count>2</comment_count>
      <attachid>345047</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-14 17:49:54 -0700</bug_when>
    <thetext>Created attachment 345047
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442264</commentid>
    <comment_count>3</comment_count>
      <attachid>345048</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-14 18:14:03 -0700</bug_when>
    <thetext>Created attachment 345048
First pass</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442383</commentid>
    <comment_count>4</comment_count>
      <attachid>345048</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2018-07-16 08:32:04 -0700</bug_when>
    <thetext>Comment on attachment 345048
First pass

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

&gt; Source/WebCore/dom/Document.h:1276
&gt; +    class ParserYieldToken {
&gt; +    public:
&gt; +        WEBCORE_EXPORT ParserYieldToken(Document&amp;);
&gt; +        WEBCORE_EXPORT ~ParserYieldToken();
&gt; +
&gt; +    private:
&gt; +        Ref&lt;Document&gt; m_document;
&gt; +    };

Does this thing really need to keep a Ref to the Document? It seems like this would possibly keep the Document alive longer than normal (especially since this is wrapped in an ObjC class that clients can make mistakes with). This goes against all the Document lifetime fixes that I&apos;ve been making.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442397</commentid>
    <comment_count>5</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-16 09:10:27 -0700</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #4)
&gt; Comment on attachment 345048 [details]
&gt; First pass
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=345048&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/Document.h:1276
&gt; &gt; +    class ParserYieldToken {
&gt; &gt; +    public:
&gt; &gt; +        WEBCORE_EXPORT ParserYieldToken(Document&amp;);
&gt; &gt; +        WEBCORE_EXPORT ~ParserYieldToken();
&gt; &gt; +
&gt; &gt; +    private:
&gt; &gt; +        Ref&lt;Document&gt; m_document;
&gt; &gt; +    };
&gt; 
&gt; Does this thing really need to keep a Ref to the Document? It seems like
&gt; this would possibly keep the Document alive longer than normal (especially
&gt; since this is wrapped in an ObjC class that clients can make mistakes with).
&gt; This goes against all the Document lifetime fixes that I&apos;ve been making.

Fair point. What about a weak pointer instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442435</commentid>
    <comment_count>6</comment_count>
      <attachid>345048</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-16 11:09:33 -0700</bug_when>
    <thetext>Comment on attachment 345048
First pass

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

r- due to perf concerns.

&gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:118
&gt; +    if (UNLIKELY(m_parser.document()-&gt;hasActiveParserYieldToken()))

We can&apos;t load parser &amp; document like this. This will regress perf.
Add a flag on the HTMLParserScheduler itself and have Document&apos;s method update that instead.

&gt; Source/WebCore/html/parser/HTMLParserScheduler.h:-66
&gt; -    bool shouldYieldBeforeToken(PumpSession&amp; session)

We can&apos;t move this out of the header. It&apos;s very important that this function is inlined.
Otherwise, we&apos;d regress the perf.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442439</commentid>
    <comment_count>7</comment_count>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-16 11:23:08 -0700</bug_when>
    <thetext>(In reply to Ryosuke Niwa from comment #6)
&gt; Comment on attachment 345048 [details]
&gt; First pass
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=345048&amp;action=review
&gt; 
&gt; r- due to perf concerns.
&gt; 
&gt; &gt; Source/WebCore/html/parser/HTMLParserScheduler.cpp:118
&gt; &gt; +    if (UNLIKELY(m_parser.document()-&gt;hasActiveParserYieldToken()))
&gt; 
&gt; We can&apos;t load parser &amp; document like this. This will regress perf.
&gt; Add a flag on the HTMLParserScheduler itself and have Document&apos;s method
&gt; update that instead.

Good call!

&gt; 
&gt; &gt; Source/WebCore/html/parser/HTMLParserScheduler.h:-66
&gt; &gt; -    bool shouldYieldBeforeToken(PumpSession&amp; session)
&gt; 
&gt; We can&apos;t move this out of the header. It&apos;s very important that this function
&gt; is inlined.
&gt; Otherwise, we&apos;d regress the perf.

Understood. I&apos;ll consult a flag on HTMLParserScheduler instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442483</commentid>
    <comment_count>8</comment_count>
      <attachid>345113</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-16 12:59:25 -0700</bug_when>
    <thetext>Created attachment 345113
Address feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442485</commentid>
    <comment_count>9</comment_count>
      <attachid>345114</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-16 13:02:09 -0700</bug_when>
    <thetext>Created attachment 345114
Address feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442640</commentid>
    <comment_count>10</comment_count>
      <attachid>345114</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2018-07-16 21:15:41 -0700</bug_when>
    <thetext>Comment on attachment 345114
Address feedback.

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

&gt; Source/WebCore/dom/Document.h:1269
&gt; +    class ParserYieldToken {

I don&apos;t think this needs to be an inner class of Document.

&gt; Source/WebCore/html/parser/HTMLParserScheduler.h:90
&gt; +    void didBeginYieldingParser() { m_documentHasActiveParserYieldTokens = true; }
&gt; +    void didEndYieldingParser() { m_documentHasActiveParserYieldTokens = false; }

Let&apos;s assert that m_documentHasActiveParserYieldTokens is false &amp; true respectively here.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ParserYieldTokenTests.mm:93
&gt; +    waitForDelay(1_s);

Instead of waiting for 1s like this, can we have:
1. &lt;script src=&quot;a.js&quot; async&gt;&lt;/a&gt;
2. &lt;script&gt;fetch(&apos;a.js&apos;).then(/* 3. post-to-test */)&lt;/script&gt;
and make sure (2) happens before (1) runs?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ParserYieldTokenTests.mm:110
&gt; +    waitForDelay(0.5_s);

Ditto.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ParserYieldTokenTests.mm:134
&gt; +    waitForDelay(0.5_s);

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442644</commentid>
    <comment_count>11</comment_count>
      <attachid>345114</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-16 22:12:54 -0700</bug_when>
    <thetext>Comment on attachment 345114
Address feedback.

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

&gt;&gt; Source/WebCore/dom/Document.h:1269
&gt;&gt; +    class ParserYieldToken {
&gt; 
&gt; I don&apos;t think this needs to be an inner class of Document.

Fair enough — I moved this outside of the Document class.

&gt;&gt; Source/WebCore/html/parser/HTMLParserScheduler.h:90
&gt;&gt; +    void didEndYieldingParser() { m_documentHasActiveParserYieldTokens = false; }
&gt; 
&gt; Let&apos;s assert that m_documentHasActiveParserYieldTokens is false &amp; true respectively here.

Ok! Added the assertions.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ParserYieldTokenTests.mm:93
&gt;&gt; +    waitForDelay(1_s);
&gt; 
&gt; Instead of waiting for 1s like this, can we have:
&gt; 1. &lt;script src=&quot;a.js&quot; async&gt;&lt;/a&gt;
&gt; 2. &lt;script&gt;fetch(&apos;a.js&apos;).then(/* 3. post-to-test */)&lt;/script&gt;
&gt; and make sure (2) happens before (1) runs?

Ryosuke and I discussed this in person — this doesn&apos;t really fulfill the same purpose as waiting 1 sec. here, which is to ensure that the document load (DOMContentLoaded) as well as page load are deferred while the token is held (hence, why we check that -finishedDocumentLoad and -finishedLoad are still false afterwards). We also couldn&apos;t think of a great way to test this behavior without using a timeout like this.

That being said, this is still a good scenario to test, so I&apos;ll add it as a fourth test case in this suite.

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ParserYieldTokenTests.mm:110
&gt;&gt; +    waitForDelay(0.5_s);
&gt; 
&gt; Ditto.

(See above ^)

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/ParserYieldTokenTests.mm:134
&gt;&gt; +    waitForDelay(0.5_s);
&gt; 
&gt; Ditto.

(See above ^)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442676</commentid>
    <comment_count>12</comment_count>
      <attachid>345155</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-17 08:55:53 -0700</bug_when>
    <thetext>Created attachment 345155
Patch for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442713</commentid>
    <comment_count>13</comment_count>
      <attachid>345167</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2018-07-17 10:43:15 -0700</bug_when>
    <thetext>Created attachment 345167
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1442729</commentid>
    <comment_count>14</comment_count>
      <attachid>345167</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-07-17 11:23:43 -0700</bug_when>
    <thetext>Comment on attachment 345167
Patch for landing

Clearing flags on attachment: 345167

Committed r233891: &lt;https://trac.webkit.org/changeset/233891&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345047</attachid>
            <date>2018-07-14 17:49:54 -0700</date>
            <delta_ts>2018-07-14 18:14:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-187682-20180714174954.patch</filename>
            <type>text/plain</type>
            <size>41015</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI4Mzc1NjVkY2MzMTdh
ZDg4NWRlZDBiYTEwMjkwZmI5YTFhNDI5MC4uNTkwYmUwZmRjYjBjODQzMTc1ZDRhYmVmY2U0MTkw
ZWEzMGU5Mzk5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE4LTA3LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkg
aG9vayB0byBhbGxvdyBjbGllbnRzIHRvIHlpZWxkIGRvY3VtZW50IHBhcnNpbmcgYW5kIHNjcmlw
dCBleGVjdXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NzY4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDIyMDc0NTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgYSBzaW5nbGUgd2Vi
IHByb2Nlc3MgZm9yIGJvdGggdGhlIFJlYWRlciBwYWdlIGFuZCBvcmlnaW5hbCB3ZWIgcGFnZSBv
biB3YXRjaE9TIGhhcyBtdWx0aXBsZSBiZW5lZml0cywKKyAgICAgICAgaW5jbHVkaW5nOiAoMSkg
YWxsb3dpbmcgdGhlIHVzZXIgdG8gYmFpbCBvdXQgb2YgUmVhZGVyIGFuZCB2aWV3IHRoZSBvcmln
aW5hbCB3ZWIgcGFnZSB3aXRob3V0IGhhdmluZyB0byBsb2FkIGl0CisgICAgICAgIGFnYWluLCBh
bmQgKDIpIGltcHJvdmluZyB0aGUgYnJpbmd1cCB0aW1lIG9mIHRoZSBSZWFkZXIgcGFnZSwgc2lu
Y2Ugc3VicmVzb3VyY2VzIGFyZSBhbHJlYWR5IGNhY2hlZCBpbiBwcm9jZXNzCisgICAgICAgIGFu
ZCB3ZSBkb24ndCBlYXQgdGhlIGFkZGl0aW9uYWwgY29zdCBvZiBhIHdlYiBwcm9jZXNzIGxhdW5j
aCBpZiBwcmV3YXJtaW5nIGZhaWxzLgorCisgICAgICAgIEhvd2V2ZXIsIHRoaXMgaGFzIHNvbWUg
ZHJhd2JhY2tzIGFzIHdlbGwsIG9uZSBvZiB3aGljaCBpcyB0aGF0IG1haW4gdGhyZWFkIHdvcmsg
YmVpbmcgZG9uZSBvbiBiZWhhbGYgb2YgdGhlCisgICAgICAgIG9yaWdpbmFsIHBhZ2UgbWF5IGNv
bnRlbmQgd2l0aCB3b3JrIGJlaW5nIGRvbmUgdG8gbG9hZCBhbmQgcmVuZGVyIHRoZSBSZWFkZXIg
cGFnZS4gVGhpcyBpcyBlc3BlY2lhbGx5IGJhZCB3aGVuCisgICAgICAgIHRoZSBwYWdlIGlzIGlu
IHRoZSBtaWRkbGUgb2YgZXhlY3V0aW5nIGhlYXZ5IHNjcmlwdCBhZnRlciBTYWZhcmkgaGFzIGFs
cmVhZHkgZGV0ZWN0ZWQgdGhhdCB0aGUgUmVhZGVyIHZlcnNpb24gb2YKKyAgICAgICAgdGhlIHBh
Z2UgaXMgYXZhaWxhYmxlLCBidXQgYmVmb3JlIGl0IGhhcyBmaW5pc2hlZCBsb2FkaW5nIHRoZSBS
ZWFkZXIgcGFnZS4gVGhlIHJlc3VsdCBpcyB0aGF0IHNjcmlwdCBvbiB0aGUKKyAgICAgICAgb3Jp
Z2luYWwgcGFnZSBtYXkgYmxvY2sgdGhlIGZpcnN0IHBhaW50IG9mIHRoZSBSZWFkZXIgcGFnZSAo
b24gTmV3IFlvcmsgVGltZXMgYXJ0aWNsZXMsIHRoaXMgb2Z0ZW4gbGVhZHMgdG8gYW4KKyAgICAg
ICAgYXBwYXJlbnQgcGFnZSBsb2FkIHRpbWUgb2YgMjUtMzUgc2Vjb25kcyBiZWZvcmUgdGhlIHVz
ZXIgc2VlcyBhbnl0aGluZyBiZXNpZGVzIGEgYmxhbmsgc2NyZWVuKS4KKworICAgICAgICBUbyBt
aXRpZ2F0ZSB0aGlzLCB3ZSBpbnRyb2R1Y2UgYSB3YXkgZm9yIGluamVjdGVkIGJ1bmRsZSBjbGll
bnRzIHRvIHlpZWxkIHBhcnNpbmcgYW5kIGFzeW5jIHNjcmlwdCBleGVjdXRpb24gb24KKyAgICAg
ICAgYSBkb2N1bWVudC4gVGhpcyBjYXBhYmlsaXR5IGlzIHN1cmZhY2VkIGluIHRoZSBmb3JtIG9m
IGFuIG9wYXF1ZSB0b2tlbiB3aGljaCBjbGllbnRzIG1heSByZXF1ZXN0IGZyb20gYQorICAgICAg
ICBXS0RvY3VtZW50LiBDb25zdHJ1Y3Rpb24gb2YgdGhlIHRva2VuIGNhdXNlcyB0aGUgZG9jdW1l
bnQgdG8gYmVnaW4geWllbGRpbmcgYW5kIGRlZmVyIGV4ZWN1dGlvbiBvZiBwcmV2aW91c2x5Cisg
ICAgICAgIHNjaGVkdWxlZCBzY3JpcHRzLCBvbmx5IGlmIHRoZXJlIHdlcmUgbm8gYWN0aXZlIHRv
a2VucyBvbiB0aGUgZG9jdW1lbnQgYWxyZWFkeS4gU2ltaWxhcmx5LCBkZXN0cnVjdGlvbiBvZiBh
bGwKKyAgICAgICAgYWN0aXZlIHRva2VucyBvbiB0aGUgZG9jdW1lbnQgY2F1c2VzIGl0IHRvIHN0
b3AgeWllbGRpbmcgYW5kIHJlc3VtZSBleGVjdXRpb24gb2Ygc2NyaXB0cyBpZiBuZWVkZWQuCisK
KyAgICAgICAgVGVzdHM6ICBQYXJzZXJZaWVsZFRva2VuVGVzdHMuUHJldmVudERvY3VtZW50TG9h
ZEJ5VGFraW5nUGFyc2VyWWllbGRUb2tlbgorICAgICAgICAgICAgICAgIFBhcnNlcllpZWxkVG9r
ZW5UZXN0cy5UYWtlTXVsdGlwbGVQYXJzZXJZaWVsZFRva2VucworICAgICAgICAgICAgICAgIFBh
cnNlcllpZWxkVG9rZW5UZXN0cy5EZWZlcnJlZFNjcmlwdEV4ZWN1dGVzQmVmb3JlRG9jdW1lbnRM
b2FkV2hlblRha2luZ1BhcnNlcllpZWxkVG9rZW4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6UGFyc2VyWWllbGRUb2tlbjo6UGFyc2Vy
WWllbGRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6UGFyc2VyWWllbGRUb2tl
bjo6flBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorCisgICAg
ICAgIEludHJvZHVjZSBhIHBhcnNlciB5aWVsZCBjb3VudCB0byBEb2N1bWVudDsgYXMgbG9uZyBh
cyB0aGlzIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiAwLCB3ZSBjb25zaWRlciB0aGUgRG9jdW1lbnQg
dG8KKyAgICAgICAgaGF2ZSBhY3RpdmUgeWllbGQgdG9rZW5zLiBXaGVuIGNvbnN0cnVjdGluZyBv
ciBkZXN0cm95aW5nIGEgUGFyc2VyWWllbGRUb2tlbiwgd2UgaW5jcmVtZW50IGFuZCBkZWNyZW1l
bnQgdGhlCisgICAgICAgIHBhcnNlciB5aWVsZCBjb3VudCAocmVzcGVjdGl2ZWx5KS4KKworICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4gY29uc3QpOgor
ICAgICAgICAqIGRvbS9TY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0
UnVubmVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjpub3RpZnlG
aW5pc2hlZCk6CisgICAgICAgICogZG9tL1NjcmlwdFJ1bm5lci5oOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0UnVubmVyOjpkaWRCZWdpbllpZWxkaW5nUGFyc2VyKToKKyAgICAgICAgKFdlYkNv
cmU6OlNjcmlwdFJ1bm5lcjo6ZGlkRW5kWWllbGRpbmdQYXJzZXIpOgorCisgICAgICAgIEhvb2tz
IGZvciBEb2N1bWVudCB0byB0ZWxsIGl0cyBTY3JpcHRSdW5uZXIgdGhhdCB3ZSd2ZSBzdGFydGVk
IG9yIGZpbmlzaGVkIHlpZWxkaW5nLiBUaGVzZSB3cmFwIGNhbGxzIHRvIHN1c3BlbmQKKyAgICAg
ICAgYW5kIHJlc3VtZS4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWll
bGRCZWZvcmVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVyOjpz
aG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdCk6CisKKyAgICAgICAgTWFrZSB0aGVzZSBy
ZXR1cm4gYHRydWVgIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBEb2N1bWVudCBpcyB5aWVsZGluZyBk
dWUgdG8gYWN0aXZlIHlpZWxkIHRva2Vucywgc3VjaCB0aGF0IHdlCisgICAgICAgIGJhaWwgd2hl
biBwdW1waW5nIHRoZSB0b2tlbml6ZXIgaW4gSFRNTERvY3VtZW50UGFyc2VyLiBBbHNvIG1vdmUg
dGhlIGltcGxlbWVudGF0aW9uIG9mIHNob3VsZFlpZWxkQmVmb3JlVG9rZW4gdG8KKyAgICAgICAg
dGhlIGltcGxlbWVudGF0aW9uIGZpbGUsIHNpbmNlIGl0IG5vdyBuZWVkcyB0byBrbm93IGFib3V0
IERvY3VtZW50ICh3aGljaCBpcyBjdXJyZW50bHkganVzdCBhIGZvcndhcmQKKyAgICAgICAgZGVj
bGFyYXRpb24gaW4gdGhlIGhlYWRlcikuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFy
c2VyU2NoZWR1bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVyOjpz
aG91bGRZaWVsZEJlZm9yZVRva2VuKTogRGVsZXRlZC4KKwogMjAxOC0wNy0xNCAgU2ltb24gRnJh
c2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTaHJpbmsgc29tZSBzdHls
ZS1yZWxhdGVkIGNsYXNzZXMgYW5kIGVudW1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA4YTlmOGY5YmQ3ODMwMTY5
ZTYzMTA4MTA0MzY2MTM0Y2M5ZmE4NjMuLjE5MDY2MDM4NDhkYzNlMmUxMDlhMjdiN2U3YmQwMDBh
MDM0Y2MwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDctMTQgIFdlbnNvbiBI
c2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQSSBob29r
IHRvIGFsbG93IGNsaWVudHMgdG8geWllbGQgZG9jdW1lbnQgcGFyc2luZyBhbmQgc2NyaXB0IGV4
ZWN1dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg3NjgyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjIwNzQ1Mz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaG9va3MgdG8gV0tEb2N1bWVu
dCB0byBjcmVhdGUgYW5kIHJldHVybiBhbiBpbnRlcm5hbCBXS0RPTURvY3VtZW50UGFyc2VyWWll
bGRUb2tlbiBvYmplY3QsIHdob3NlIGxpZmV0aW1lIGlzCisgICAgICAgIHRpZWQgdG8gYSBkb2N1
bWVudCBwYXJzZXIgeWllbGQgdG9rZW4uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tOgorICAgICAgICAoLVtXS0RPTURv
Y3VtZW50UGFyc2VyWWllbGRUb2tlbiBpbml0V2l0aERvY3VtZW50Ol0pOgorICAgICAgICAoLVtX
S0RPTURvY3VtZW50IHBhcnNlcllpZWxkVG9rZW5dKToKKwogMjAxOC0wNy0xMyAgVGltb3RoeSBI
YXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIF9kcmF3c0JhY2tncm91
bmQgdG8gV0tXZWJWaWV3Q29uZmlndXJhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4
IGU5ZjQ4MjNlYWJiZmRiNTcxNjQyZWM2OWQ3MzMzYmVjNjIxZjVhYWYuLjQ0NjUxMWY3OGYxYWZk
ZTk0MDA2NjQ1NzFiODRmMDc2NDdkZDBiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAt
Njg5Nyw2ICs2ODk3LDIwIEBAIHZvaWQgRG9jdW1lbnQ6OmRlY3JlbWVudEFjdGl2ZVBhcnNlckNv
dW50KCkKICAgICBmcmFtZSgpLT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgpOwogfQogCitE
b2N1bWVudDo6UGFyc2VyWWllbGRUb2tlbjo6UGFyc2VyWWllbGRUb2tlbihEb2N1bWVudCYgZG9j
dW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQoreworICAgIGlmICgrK2RvY3VtZW50
Lm1fcGFyc2VyWWllbGRUb2tlbkNvdW50ID09IDEpCisgICAgICAgIGRvY3VtZW50LnNjcmlwdFJ1
bm5lcigpLT5kaWRCZWdpbllpZWxkaW5nUGFyc2VyKCk7Cit9CisKK0RvY3VtZW50OjpQYXJzZXJZ
aWVsZFRva2VuOjp+UGFyc2VyWWllbGRUb2tlbigpCit7CisgICAgQVNTRVJUKG1fZG9jdW1lbnQt
Pm1fcGFyc2VyWWllbGRUb2tlbkNvdW50KTsKKyAgICBpZiAoISgtLW1fZG9jdW1lbnQtPm1fcGFy
c2VyWWllbGRUb2tlbkNvdW50KSkKKyAgICAgICAgbV9kb2N1bWVudC0+c2NyaXB0UnVubmVyKCkt
PmRpZEVuZFlpZWxkaW5nUGFyc2VyKCk7Cit9CisKIHN0YXRpYyBSZW5kZXJFbGVtZW50KiBuZWFy
ZXN0Q29tbW9uSG92ZXJBbmNlc3RvcihSZW5kZXJFbGVtZW50KiBvYmoxLCBSZW5kZXJFbGVtZW50
KiBvYmoyKQogewogICAgIGlmICghb2JqMSB8fCAhb2JqMikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5k
ZXggZGI0NTk3OTU5Mjg2MWU0ZWJlYzQzZGI2YmEyNWE0NmQ2M2UzOWE4Yy4uMjg0YTg2OWZlNmQ2
YzEwNDRkMzA1NmY0ZjBiNzVhNjY3Y2Y4ZWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTEy
NjYsNiArMTI2NiwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVQYXJzZXJD
b3VudCgpIHsgKyttX2FjdGl2ZVBhcnNlckNvdW50OyB9CiAgICAgdm9pZCBkZWNyZW1lbnRBY3Rp
dmVQYXJzZXJDb3VudCgpOwogCisgICAgY2xhc3MgUGFyc2VyWWllbGRUb2tlbiB7CisgICAgcHVi
bGljOgorICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXJzZXJZaWVsZFRva2VuKERvY3VtZW50Jik7
CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIH5QYXJzZXJZaWVsZFRva2VuKCk7CisKKyAgICBwcml2
YXRlOgorICAgICAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgfTsKKworICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYXJzZXJZaWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRva2VuKCkK
KyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhcnNlcllpZWxkVG9rZW4+
KCp0aGlzKTsKKyAgICB9CisKKyAgICBib29sIGhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSBj
b25zdCB7IHJldHVybiBtX3BhcnNlcllpZWxkVG9rZW5Db3VudDsgfQorCiAgICAgRG9jdW1lbnRT
aGFyZWRPYmplY3RQb29sKiBzaGFyZWRPYmplY3RQb29sKCkgeyByZXR1cm4gbV9zaGFyZWRPYmpl
Y3RQb29sLmdldCgpOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0Nh
Y2hlQW5kRm9yY2VTdHlsZVJlY2FsYygpOwpAQCAtMTU3OCw2ICsxNTk0LDggQEAgcHJpdmF0ZToK
ICAgICBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAg
ICAgUmVmUHRyPERvY3VtZW50UGFyc2VyPiBtX3BhcnNlcjsKIAorICAgIHVuc2lnbmVkIG1fcGFy
c2VyWWllbGRUb2tlbkNvdW50IHsgMCB9OworCiAgICAgLy8gRG9jdW1lbnQgVVJMcy4KICAgICBV
UkwgbV91cmw7IC8vIERvY3VtZW50LlVSTDogVGhlIFVSTCBmcm9tIHdoaWNoIHRoaXMgZG9jdW1l
bnQgd2FzIHJldHJpZXZlZC4KICAgICBVUkwgbV9iYXNlVVJMOyAvLyBOb2RlLmJhc2VVUkk6IFRo
ZSBVUkwgdG8gdXNlIHdoZW4gcmVzb2x2aW5nIHJlbGF0aXZlIFVSTHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9T
Y3JpcHRSdW5uZXIuY3BwCmluZGV4IDczZmI4YjA0ZGU0MDU3MDFkOTdmNjJlNmM5YTQ1MzkwM2My
ZGY3ZTkuLjYyZTU2ZjJmYjQ5YmE0YTA0MGIyMzFjN2U1NzgyNzYyYzhmOGFmZTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgU2NyaXB0UnVu
bmVyOjpzdXNwZW5kKCkKIAogdm9pZCBTY3JpcHRSdW5uZXI6OnJlc3VtZSgpCiB7Ci0gICAgaWYg
KGhhc1BlbmRpbmdTY3JpcHRzKCkpCisgICAgaWYgKGhhc1BlbmRpbmdTY3JpcHRzKCkgJiYgIW1f
ZG9jdW1lbnQuaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigpKQogICAgICAgICBtX3RpbWVyLnN0
YXJ0T25lU2hvdCgwX3MpOwogfQogCkBAIC05NSw3ICs5NSw5IEBAIHZvaWQgU2NyaXB0UnVubmVy
Ojpub3RpZnlGaW5pc2hlZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogICAgICAgICBt
X3NjcmlwdHNUb0V4ZWN1dGVTb29uLmFwcGVuZChtX3BlbmRpbmdBc3luY1NjcmlwdHMudGFrZShw
ZW5kaW5nU2NyaXB0KS0+cHRyKCkpOwogICAgIH0KICAgICBwZW5kaW5nU2NyaXB0LmNsZWFyQ2xp
ZW50KCk7Ci0gICAgbV90aW1lci5zdGFydE9uZVNob3QoMF9zKTsKKworICAgIGlmICghbV9kb2N1
bWVudC5oYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VuKCkpCisgICAgICAgIG1fdGltZXIuc3RhcnRP
bmVTaG90KDBfcyk7CiB9CiAKIHZvaWQgU2NyaXB0UnVubmVyOjp0aW1lckZpcmVkKCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRSdW5uZXIuaAppbmRleCA4ZThmNDg2YWQxZGIwZGJjMGQwYmU2NDUyMTExZWVk
NzcwZjE1MzEyLi42N2VlY2JlODA5Y2QwNDNkM2JhYjE3NmYyMTkwY2Y0ZjI5M2NlOWYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5oCkBAIC01MCw2ICs1MCw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlc3VtZSgpOwogICAgIHZvaWQgbm90aWZ5U2NyaXB0UmVhZHkoU2NyaXB0RWxlbWVudCos
IEV4ZWN1dGlvblR5cGUpOwogCisgICAgdm9pZCBkaWRCZWdpbllpZWxkaW5nUGFyc2VyKCkgeyBz
dXNwZW5kKCk7IH0KKyAgICB2b2lkIGRpZEVuZFlpZWxkaW5nUGFyc2VyKCkgeyByZXN1bWUoKTsg
fQorCiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCmluZGV4IDM1YjZhNTlk
ODcyMjAzZTgxNjU3YjNiMTFkNTA2MzAzNGZhNmRjM2UuLmE3ODBmZDQ3YjRmOTRmYzc3OWQ5YWY5
ZDIxZmVlZTMyMWI2ZDJlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUgIkhU
TUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKIAorI2lmIFBMQVRGT1JNKElP
UykKKyNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCisjZW5kaWYKKwogLy8gZGVmYXVsdFBhcnNl
clRpbWVMaW1pdCBpcyB0aGUgc2Vjb25kcyB0aGUgcGFyc2VyIHdpbGwgcnVuIGluIG9uZSB3cml0
ZSgpIGNhbGwKIC8vIGJlZm9yZSB5aWVsZGluZy4gSW5saW5lIDxzY3JpcHQ+IGV4ZWN1dGlvbiBj
YW4gY2F1c2UgaXQgdG8gZXhjZWVkIHRoZSBsaW1pdC4KIC8vIEZJWE1FOiBXZSB3b3VsZCBsaWtl
IHRoaXMgdmFsdWUgdG8gYmUgMC4yLgpAQCAtMTA0LDYgKzEwOCwyMyBAQCB2b2lkIEhUTUxQYXJz
ZXJTY2hlZHVsZXI6OmNvbnRpbnVlTmV4dENodW5rVGltZXJGaXJlZCgpCiAgICAgbV9wYXJzZXIu
cmVzdW1lUGFyc2luZ0FmdGVyWWllbGQoKTsKIH0KIAorYm9vbCBIVE1MUGFyc2VyU2NoZWR1bGVy
OjpzaG91bGRZaWVsZEJlZm9yZVRva2VuKFB1bXBTZXNzaW9uJiBzZXNzaW9uKQoreworI2lmIFBM
QVRGT1JNKElPUykKKyAgICBpZiAoV2ViVGhyZWFkU2hvdWxkWWllbGQoKSkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisjZW5kaWYKKworICAgIGlmIChVTkxJS0VMWShtX3BhcnNlci5kb2N1bWVudCgp
LT5oYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VuKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgIGlmIChVTkxJS0VMWShzZXNzaW9uLnByb2Nlc3NlZFRva2VucyA+IG51bWJlck9mVG9rZW5z
QmVmb3JlQ2hlY2tpbmdGb3JZaWVsZCB8fCBzZXNzaW9uLmRpZFNlZVNjcmlwdCkpCisgICAgICAg
IHJldHVybiBjaGVja0ZvcllpZWxkKHNlc3Npb24pOworCisgICAgKytzZXNzaW9uLnByb2Nlc3Nl
ZFRva2VuczsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgSFRNTFBhcnNlclNjaGVkdWxl
cjo6c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQoUHVtcFNlc3Npb24mIHNlc3Npb24p
CiB7CiAgICAgLy8gSWYgd2UndmUgbmV2ZXIgcGFpbnRlZCBiZWZvcmUgYW5kIGEgbGF5b3V0IGlz
IHBlbmRpbmcsIHlpZWxkIHByaW9yIHRvIHJ1bm5pbmcKQEAgLTExMSw2ICsxMzIsMTAgQEAgYm9v
bCBIVE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChQ
dW1wU2Vzc2lvbiYgc2Vzc2lvbikKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gbV9w
YXJzZXIuZG9jdW1lbnQoKTsKICAgICBib29sIG5lZWRzRmlyc3RQYWludCA9IGRvY3VtZW50LT52
aWV3KCkgJiYgIWRvY3VtZW50LT52aWV3KCktPmhhc0V2ZXJQYWludGVkKCk7CiAgICAgc2Vzc2lv
bi5kaWRTZWVTY3JpcHQgPSB0cnVlOworCisgICAgaWYgKFVOTElLRUxZKGRvY3VtZW50LT5oYXNB
Y3RpdmVQYXJzZXJZaWVsZFRva2VuKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgIHJl
dHVybiBuZWVkc0ZpcnN0UGFpbnQgJiYgZG9jdW1lbnQtPmlzTGF5b3V0VGltZXJBY3RpdmUoKTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNj
aGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxl
ci5oCmluZGV4IGI1OTM0Y2U5MDY3ZjA2NzFhYTk5ZjEyYjYxODA5ZGIwN2FiZTU1MTguLjEzYTc1
N2ZlY2JiODQ4ZmRkM2I0YjFiM2UwNjk1MDQ1ZWQwYmFhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgKQEAgLTI5LDEwICsyOSw2IEBA
CiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLSNpZiBQTEFU
Rk9STShJT1MpCi0jaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgotI2VuZGlmCi0KIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC02MywxOCArNTksNyBAQCBwdWJsaWM6
CiAgICAgZXhwbGljaXQgSFRNTFBhcnNlclNjaGVkdWxlcihIVE1MRG9jdW1lbnRQYXJzZXImKTsK
ICAgICB+SFRNTFBhcnNlclNjaGVkdWxlcigpOwogCi0gICAgYm9vbCBzaG91bGRZaWVsZEJlZm9y
ZVRva2VuKFB1bXBTZXNzaW9uJiBzZXNzaW9uKQotICAgIHsKLSNpZiBQTEFURk9STShJT1MpCi0g
ICAgICAgIGlmIChXZWJUaHJlYWRTaG91bGRZaWVsZCgpKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0jZW5kaWYKLSAgICAgICAgaWYgKFVOTElLRUxZKHNlc3Npb24ucHJvY2Vzc2VkVG9rZW5z
ID4gbnVtYmVyT2ZUb2tlbnNCZWZvcmVDaGVja2luZ0ZvcllpZWxkIHx8IHNlc3Npb24uZGlkU2Vl
U2NyaXB0KSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja0ZvcllpZWxkKHNlc3Npb24pOwotCi0g
ICAgICAgICsrc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnM7Ci0gICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICB9CisgICAgYm9vbCBzaG91bGRZaWVsZEJlZm9yZVRva2VuKFB1bXBTZXNzaW9uJik7CiAg
ICAgYm9vbCBzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChQdW1wU2Vzc2lvbiYpOwog
CiAgICAgdm9pZCBzY2hlZHVsZUZvclJlc3VtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVu
dC5oCmluZGV4IDlhNTRhYjdhOGZmN2IzMTgzNWU5M2Y1NzYxMzhhZWJkZDEzNDYwZDYuLmZkY2Vi
MTMyOTNhYTE1NGU0YmYwYTQ5NDFlN2ZkZWJlZGEwMWE4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RP
TURvY3VtZW50LmgKQEAgLTQyLDYgKzQyLDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgx
MC4xMCksIGlvcyg4LjApKQogCiBAcHJvcGVydHkocmVhZG9ubHkpIFdLRE9NRWxlbWVudCAqYm9k
eTsKIAorLSAoTlNPYmplY3QgKilwYXJzZXJZaWVsZFRva2VuIFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KaW5kZXggM2FkMDRj
NzFkODM2M2YwY2NmNTQ5MmFmM2UyMzMyNjhjMTkzN2M4My4uOTRlMjYyYjdkZWZlYzYwM2NhOGJk
OWIxOGY1MmE2NTZiYWIwYmZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCkBA
IC0zNSw2ICszNSwyMyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Lmg+CiAjaW1wb3J0IDxXZWJD
b3JlL21hcmt1cC5oPgogCitAaW50ZXJmYWNlIFdLRE9NRG9jdW1lbnRQYXJzZXJZaWVsZFRva2Vu
IDogTlNPYmplY3QKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tET01Eb2N1bWVudFBhcnNl
cllpZWxkVG9rZW4geworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpEb2N1bWVudDo6UGFy
c2VyWWllbGRUb2tlbj4gX3Rva2VuOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhEb2N1
bWVudDooV2ViQ29yZTo6RG9jdW1lbnQmKWRvY3VtZW50Cit7CisgICAgaWYgKHNlbGYgPSBbc3Vw
ZXIgaW5pdF0pCisgICAgICAgIF90b2tlbiA9IGRvY3VtZW50LmNyZWF0ZVBhcnNlcllpZWxkVG9r
ZW4oKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24gV0tE
T01Eb2N1bWVudAogCiAtIChXS0RPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmluZyAq
KXRhZ05hbWUKQEAgLTY2LDYgKzgzLDExIEBACiAgICAgcmV0dXJuIFdlYktpdDo6dG9XS0RPTU5v
ZGUoY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4oKl9p
bXBsKS5jcmVhdGVSYW5nZSgpLmdldCgpLCB0ZXh0KS5wdHIoKSk7CiB9CiAKKy0gKE5TT2JqZWN0
ICopcGFyc2VyWWllbGRUb2tlbgoreworICAgIHJldHVybiBbW1tXS0RPTURvY3VtZW50UGFyc2Vy
WWllbGRUb2tlbiBhbGxvY10gaW5pdFdpdGhEb2N1bWVudDpkb3duY2FzdDxXZWJDb3JlOjpEb2N1
bWVudD4oKl9pbXBsKV0gYXV0b3JlbGVhc2VdOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBXS19B
UElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IDNmYmI2N2I5NzVkZjAyZDg4YWMzZjQ3OGNiODBjYTBiNTVmNzg0MDIuLjQ3OWY3YjM5
M2IyMDZmMDhkMDIxYzYyZDRmMzZhZWVhOTBjY2YzNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0wNy0xNCAg
V2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4g
U1BJIGhvb2sgdG8gYWxsb3cgY2xpZW50cyB0byB5aWVsZCBkb2N1bWVudCBwYXJzaW5nIGFuZCBz
Y3JpcHQgZXhlY3V0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xODc2ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyMjA3NDUzPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGZldyB0ZXN0
cyB0byBleGVyY2lzZSB0aGUgbmV3IGRvY3VtZW50IHlpZWxkIHRva2VuIFNQSSwgdmVyaWZ5aW5n
IHRoYXQgY2xpZW50cyBjYW4gdXNlIHRoZSBTUEkgdG8gZGVmZXIKKyAgICAgICAgZG9jdW1lbnQg
bG9hZCwgYW5kIHRoYXQgZG9pbmcgc28gZG9lc24ndCBjYXVzZSBkZWZlcnJlZCBgc2NyaXB0YCB0
byBleGVjdXRlIGluIHRoZSB3cm9uZyBvcmRlciAoaS5lLiBiZWZvcmUKKyAgICAgICAgc3luY2hy
b25vdXMgc2NyaXB0LCBvciBhZnRlciAiRE9NQ29udGVudExvYWRlZCIpLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6Cisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2Vu
UGx1Z0luLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bUGFyc2VyWWllbGRUb2tlblBsdWdJbiB0YWtl
RG9jdW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdKToKKyAgICAgICAgKC1bUGFy
c2VyWWllbGRUb2tlblBsdWdJbiByZWxlYXNlRG9jdW1lbnRQYXJzZXJUb2tlbl0pOgorICAgICAg
ICAoLVtQYXJzZXJZaWVsZFRva2VuUGx1Z0luIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4
dENvbnRyb2xsZXI6ZGlkQ29tbWl0TG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtQYXJzZXJZ
aWVsZFRva2VuUGx1Z0luIHdlYlByb2Nlc3NQbHVnSW46ZGlkQ3JlYXRlQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOl0pOgorICAgICAgICAoLVtQYXJzZXJZaWVsZFRva2VuUGx1Z0luIHdlYlByb2Nl
c3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWU6XSk6CisgICAgICAgICgtW1BhcnNlcllpZWxkVG9rZW5QbHVnSW4gd2ViUHJvY2Vzc1Bs
dWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6XSk6CisK
KyAgICAgICAgSW5qZWN0ZWQgYnVuZGxlIG9iamVjdCB0aGF0IGtub3dzIGhvdyB0byB0YWtlIGFu
ZCByZWxlYXNlIG11bHRpcGxlIGRvY3VtZW50IHBhcnNlciB5aWVsZCB0b2tlbnMuCisKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5UZXN0
cy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTURvY3VtZW50LmguCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuVGVzdHMubW06IEFkZGVkLgorICAgICAgICAoK1tQ
YXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgd2ViVmlld10pOgorICAgICAgICAoLVtQYXJzZXJZ
aWVsZFRva2VuVGVzdFdlYlZpZXcgYnVuZGxlXSk6CisgICAgICAgICgtW1BhcnNlcllpZWxkVG9r
ZW5UZXN0V2ViVmlldyBkaWRGaW5pc2hEb2N1bWVudExvYWRdKToKKyAgICAgICAgKC1bUGFyc2Vy
WWllbGRUb2tlblRlc3RXZWJWaWV3IGRpZEZpbmlzaExvYWRdKToKKyAgICAgICAgKHdhaXRGb3JE
ZWxheSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL3RleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbDogQWRkZWQuCisKKyAgICAg
ICAgTmV3IHRlc3QgSFRNTCBwYWdlIHRoYXQgY29udGFpbnMgYSBkZWZlcnJlZCBzY3JpcHQgZWxl
bWVudCwgYSBzeW5jaHJvbm91cyBzY3JpcHQgZWxlbWVudCwgYW5vdGhlciBkZWZlcnJlZAorICAg
ICAgICBzY3JpcHQgZWxlbWVudCwgYW5kIHRoZW4gc29tZSB0ZXh0LCBpbWFnZXMsIGFuZCBsaW5r
cy4KKwogMjAxOC0wNy0xMyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+
CiAKICAgICAgICAgW1dpbkNhaXJvXSBydW4tYXBpLXRlc3RzIGlzIHRpbWluZyBvdXQgZm9yIGFs
bW9zdCBhbGwgdGVzdCBjYXNlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZTI3MTJiMmQ2
NjNlMWZiYzc0YjIzYzA3ZDJhZTEyMDc2MGQ0M2EwLi4zNjBiZjA3MTFiY2YyZGE5Y2RmNTllMTI3
ZDcyN2FkZTI0NjAyYzkwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJL
aXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzgxLDYgKzc4MSw5
IEBACiAJCUY0M0UzQkJGMjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0cy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0M0UzQkJFMjBE
QURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0cy5tbSAqLzsgfTsKIAkJRjQzRTNCQzEy
MERBREJDNTAwQTRFN0VEIC8qIGZpeGVkLW5hdi1iYXIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDNFM0JDMDIwREFEQjgwMDBBNEU3
RUQgLyogZml4ZWQtbmF2LWJhci5odG1sICovOyB9OwogCQlGNDQ1MUM3NjFFQjhGRDg5MDAyMEM1
REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQ1MUM3NTFFQjhGRDdDMDAy
MEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCAqLzsgfTsKKwkJRjQ0
Qzc5RkYyMEY5RTg3MTAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5UZXN0cy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEM3OUZFMjBGOUU4NzEw
MDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gKi87IH07CisJCUY0NEM3QTAwMjBG
OUVFQkYwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Qzc5RkIyMEY5RTUwQzAwMTQ0NzhD
IC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gKi87IH07CisJCUY0NEM3QTA1MjBGQUFFM0Mw
MDE0NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0QzdBMDQyMEZBQUUzMjAw
MTQ0NzhDIC8qIHRleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbCAqLzsgfTsKIAkJRjQ0RDA2
NDUxRjM5NUMyNjAwMUEwRTI5IC8qIGVkaXRvci1zdGF0ZS10ZXN0LWhhcm5lc3MuaHRtbCBpbiBD
b3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDREMDY0
NDFGMzk1QzBEMDAxQTBFMjkgLyogZWRpdG9yLXN0YXRlLXRlc3QtaGFybmVzcy5odG1sICovOyB9
OwogCQlGNDREMDY0NzFGMzk2MjdBMDAxQTBFMjkgLyogRWRpdG9yU3RhdGVUZXN0cy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEQwNjQ2MUYzOTVD
NEQwMDFBMEUyOSAvKiBFZGl0b3JTdGF0ZVRlc3RzLm1tICovOyB9OwogCQlGNDREMDY0QTFGMzk2
MkYyMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0RDA2NDkxRjM5NjJFMzAwMUEwRTI5IC8qIEVk
aXRpbmdUZXN0SGFybmVzcy5tbSAqLzsgfTsKQEAgLTg5OCw3ICs5MDEsNiBAQAogCQkJZHN0UGF0
aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJ
CQlmaWxlcyA9ICgKLQkJCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2ltcGxlU2Vydmlj
ZVdvcmtlclJlZ2lzdHJhdGlvbnMtMy5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTFBOUU1MkM5MTNFNjVFRjQwMDY5MTdGNSAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCiAJCQkJMzc5MDI4QjkxNEZBQzI0QzAwN0U2QjQzIC8qIGFjY2VwdHNGaXJz
dE1vdXNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUMyQjgxODcxQzg5MjVBMDAw
QTU1MjlGIC8qIEFoZW0udHRmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTEyNSw2ICsxMTI3
LDcgQEAKIAkJCQlCQzkwOTc4NDEyNTU3MUNGMDAwODM3NTYgLyogc2ltcGxlLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJNTFFNUM3MDIxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTIu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MUU1QzcwMzE5MTlDM0IyMDBEOEIzRTEg
Lyogc2ltcGxlMy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTQ2QUU1QTM3MjBGOTA2
NkQwMEUwODczRSAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy0zLnNxbGl0ZTMg
aW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8qIHNr
aW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJQzAxQTIzRjIxMjY2MTU2NzAwQzlFRDU1IC8qIHNwYWNlYmFyLXNjcm9sbGluZy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0RSAv
KiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKQEAgLTExMzgsNiArMTE0MSw3IEBACiAJCQkJNTI0QkJDQTExOUUzMEM3NzAwMkYxQUYx
IC8qIHRlc3QubXA0IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTdBRTlFNTA5MUFFNUFFOEIw
MENGODc0QiAvKiB0ZXN0LnBkZiBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkyRTk4OTYxNTFE
OEYwOTM4MDA3Mzk4OTIgLyogdGV4dC1hbmQtcGFzc3dvcmQtaW5wdXRzLmh0bWwgaW4gQ29weSBS
ZXNvdXJjZXMgKi8sCisJCQkJRjQ0QzdBMDUyMEZBQUUzQzAwMTQ0NzhDIC8qIHRleHQtd2l0aC1k
ZWZlcnJlZC1zY3JpcHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBQTFF
RjQ2OTZCMDA4M0ZBMDggLyogdGV4dGFyZWEtdG8taW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLywKIAkJCQlGNDQ1MUM3NjFFQjhGRDg5MDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250
ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDNTQwRjc4NDE1MkU1
QTlBMDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApA
QCAtMTk3Niw2ICsxOTgwLDEwIEBACiAJCUY0M0UzQkJFMjBEQURBMUUwMEE0RTdFRCAvKiBXS1Nj
cm9sbFZpZXdUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU2Nyb2xsVmlld1Rlc3Rz
Lm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDNFM0JDMDIwREFEQjgwMDBBNEU3
RUQgLyogZml4ZWQtbmF2LWJhci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImZpeGVkLW5hdi1iYXIuaHRtbCI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDUxQzc1MUVCOEZEN0MwMDIwQzVEQSAv
KiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gInR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3OEMgLyogUGFyc2VyWWll
bGRUb2tlblBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhcnNlcllpZWxkVG9rZW5Q
bHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NEM3OUZEMjBGOUU4NzEw
MDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2Vy
WWllbGRUb2tlblRlc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NEM3OUZF
MjBGOUU4NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUY0NEM3QTA0MjBGQUFFMzIwMDE0NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJyZWQt
c2NyaXB0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidGV4dC13aXRoLWRlZmVy
cmVkLXNjcmlwdC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0RDA2NDQx
RjM5NUMwRDAwMUEwRTI5IC8qIGVkaXRvci1zdGF0ZS10ZXN0LWhhcm5lc3MuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJlZGl0b3Itc3RhdGUtdGVzdC1oYXJuZXNzLmh0bWwiOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDREMDY0NjFGMzk1QzREMDAxQTBFMjkgLyog
RWRpdG9yU3RhdGVUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEVkaXRvclN0YXRlVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
NEQwNjQ4MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC0yMjc0LDYgKzIyODIsOSBAQAogCQkJCTM3QTIyQUE1MURDQUEy
NzIwMEFGQkZDNCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzQWZ0ZXJDcmFzaC5t
bSAqLywKIAkJCQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyogT3BlbkFuZENsb3NlV2luZG93
Lm1tICovLAogCQkJCUNFQkNBMTJFMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRlbnRT
ZWN1cml0eVBvbGljeS5tbSAqLywKKwkJCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3OEMgLyogUGFy
c2VyWWllbGRUb2tlblBsdWdJbi5tbSAqLywKKwkJCQlGNDRDNzlGRDIwRjlFODcxMDAxNDQ3OEMg
LyogUGFyc2VyWWllbGRUb2tlblRlc3RzLmggKi8sCisJCQkJRjQ0Qzc5RkUyMEY5RTg3MTAwMTQ0
NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5UZXN0cy5tbSAqLywKIAkJCQk5QkNCN0MyNjIwMTMwNjAw
MDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tICovLAogCQkJCTlCRENDRDg1MUY3RDBCMDcwMDAwOUEx
OCAvKiBQYXN0ZUltYWdlLm1tICovLAogCQkJCUY0NTdBOUI2MjAyRDVDREMwMEY3RTlENSAvKiBQ
YXN0ZU1peGVkQ29udGVudC5tbSAqLywKQEAgLTI2NDMsNiArMjY1NCw3IEBACiAJCQkJOUJENkQz
OUYxRjdCMjAyMDAwQkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tNDAwcHguZ2lmICovLAog
CQkJCTlCRDZEMzlFMUY3QjIwMUUwMEJENDk2MiAvKiBzdW5zZXQtaW4tY3VwZXJ0aW5vLTYwMHB4
LmpwZyAqLywKIAkJCQkyRTk4OTYxNDFEOEYwOTJCMDA3Mzk4OTIgLyogdGV4dC1hbmQtcGFzc3dv
cmQtaW5wdXRzLmh0bWwgKi8sCisJCQkJRjQ0QzdBMDQyMEZBQUUzMjAwMTQ0NzhDIC8qIHRleHQt
d2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbCAqLywKIAkJCQlGNDFBQjk5NTFFRjQ2OTJDMDA4M0ZB
MDggLyogdGV4dGFyZWEtdG8taW5wdXQuaHRtbCAqLywKIAkJCQlGNDQ1MUM3NTFFQjhGRDdDMDAy
MEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKIAkJCQk1MTcx
NEVCMjFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRtbCAq
LywKQEAgLTM3NTksNiArMzc3MSw3IEBACiAJCQkJN0NDRTdFQzcxQTQxMUE3RTAwNDQ3QzRDIC8q
IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSBpbiBTb3VyY2VzICovLAog
CQkJCTdDQ0U3RjA5MUE0MTFBRTYwMDQ0N0M0QyAvKiBQYXJlbnRGcmFtZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk3QzgzRTA1MTFEMEE2NDE4MDBGRUJDRjMgLyogUGFyc2VkQ29udGVudFJhbmdl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY0NEM3OUZGMjBGOUU4NzEwMDE0NDc4QyAvKiBQYXJz
ZXJZaWVsZFRva2VuVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQTFBNDExQUU2
MDA0NDdDNEMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJ
CQk5QkNCN0MyODIwMTMwNjAwMDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJOUJEQ0NEODcxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gaW4gU291cmNl
cyAqLywKQEAgLTM5NjYsNiArMzk3OSw3IEBACiAJCQkJNTE4RUU1MTkyMEE3OENFNTAwRTAyNEYz
IC8qIERvdWJsZURlZmVyc0xvYWRpbmdQbHVnaW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1Q0I1
QjNDMjFGRkM1NUNGMDBDMjdCQjAgLyogRnJhbWVIYW5kbGVTZXJpYWxpemF0aW9uLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNzlDNUQ0MzEyMDlENzY4MzAwRjFFN0NBIC8qIEluamVjdGVkQnVuZGxl
Tm9kZUhhbmRsZUlzVGV4dEZpZWxkLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0QzdBMDAyMEY5
RUVCRjAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBMTNFQkJBQjFCODc0MzQ2MDAwOTcxMTAgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCTFBNEY4MUNGMUJERkZENTMwMDRFNjcyRSAvKiBSZW1vdGVP
YmplY3RSZWdpc3RyeVBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExMkREQzAyMUU4MzdD
MjQwMENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQbHVnSW4ubW0gaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODg1NjgyOTdj
MDA3MDQ0MWE3MTM2NmUyMDRhNjVkYTczMDllYWJjCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuUGx1Z0luLm1t
CkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbXBvcnQgImNvbmZpZy5oIgorCisj
aWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiUGFyc2VyWWllbGRUb2tlblRlc3RzLmgiCisj
aW1wb3J0IDxXZWJLaXQvV0tET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJv
Y2Vzc1BsdWdJbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQ
bHVnSW5Mb2FkRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RJbnRl
cmZhY2UuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oPgorI2lt
cG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIFBhcnNlcllpZWxkVG9rZW5QbHVn
SW4gOiBOU09iamVjdCA8V0tXZWJQcm9jZXNzUGx1Z0luLCBXS1dlYlByb2Nlc3NQbHVnSW5Mb2Fk
RGVsZWdhdGUsIFBhcnNlcllpZWxkVG9rZW5UZXN0QnVuZGxlPgorQGVuZAorCitAaW1wbGVtZW50
YXRpb24gUGFyc2VyWWllbGRUb2tlblBsdWdJbiB7CisgICAgUmV0YWluUHRyPE5TTXV0YWJsZUFy
cmF5PE5TT2JqZWN0ICo+PiBfcGFyc2VyWWllbGRUb2tlbnM7CisgICAgUmV0YWluUHRyPGlkPFBh
cnNlcllpZWxkVG9rZW5UZXN0UnVubmVyPj4gX3Rlc3RSdW5uZXI7CisgICAgUmV0YWluUHRyPFdL
V2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcj4gX2NvbnRyb2xsZXI7Cisg
ICAgQk9PTCBfbG9hZENvbW1pdHRlZDsKKyAgICBCT09MIF9udW1iZXJPZlRva2Vuc1RvVGFrZUFm
dGVyQ29taXR0aW5nTG9hZDsKK30KKworLSAodm9pZCl0YWtlRG9jdW1lbnRQYXJzZXJUb2tlbkFm
dGVyQ29tbWl0dGluZ0xvYWQKK3sKKyAgICBpZiAoX2xvYWRDb21taXR0ZWQpCisgICAgICAgIFtf
cGFyc2VyWWllbGRUb2tlbnMgYWRkT2JqZWN0OltfY29udHJvbGxlciBtYWluRnJhbWVEb2N1bWVu
dF0ucGFyc2VyWWllbGRUb2tlbl07CisgICAgZWxzZQorICAgICAgICArK19udW1iZXJPZlRva2Vu
c1RvVGFrZUFmdGVyQ29taXR0aW5nTG9hZDsKK30KKworLSAodm9pZClyZWxlYXNlRG9jdW1lbnRQ
YXJzZXJUb2tlbgoreworICAgIGlmIChfbG9hZENvbW1pdHRlZCkKKyAgICAgICAgW19wYXJzZXJZ
aWVsZFRva2VucyByZW1vdmVPYmplY3RBdEluZGV4OjBdOworICAgIGVsc2UKKyAgICAgICAgLS1f
bnVtYmVyT2ZUb2tlbnNUb1Rha2VBZnRlckNvbWl0dGluZ0xvYWQ7Cit9CisKKy0gKHZvaWQpd2Vi
UHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBkaWRDb21taXRMb2FkRm9yRnJh
bWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUKK3sKKyAgICBfbG9hZENvbW1pdHRl
ZCA9IFlFUzsKKyAgICB3aGlsZSAoX251bWJlck9mVG9rZW5zVG9UYWtlQWZ0ZXJDb21pdHRpbmdM
b2FkKSB7CisgICAgICAgIFtzZWxmIHRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0ZXJDb21taXR0
aW5nTG9hZF07CisgICAgICAgIC0tX251bWJlck9mVG9rZW5zVG9UYWtlQWZ0ZXJDb21pdHRpbmdM
b2FkOworICAgIH0KK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luOihXS1dlYlByb2Nlc3NQ
bHVnSW5Db250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciBkaWRDcmVhdGVCcm93c2VyQ29udGV4
dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAq
KWJyb3dzZXJDb250ZXh0Q29udHJvbGxlcgoreworICAgIF9wYXJzZXJZaWVsZFRva2VucyA9IGFk
b3B0TlMoW05TTXV0YWJsZUFycmF5IG5ld10pOworICAgIF9jb250cm9sbGVyID0gYnJvd3NlckNv
bnRleHRDb250cm9sbGVyOworICAgIGJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5sb2FkRGVsZWdh
dGUgPSBzZWxmOworICAgIFticm93c2VyQ29udGV4dENvbnRyb2xsZXIuX3JlbW90ZU9iamVjdFJl
Z2lzdHJ5IHJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6c2VsZiBpbnRlcmZhY2U6W19XS1JlbW90ZU9i
amVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6QHByb3RvY29s
KFBhcnNlcllpZWxkVG9rZW5UZXN0QnVuZGxlKV1dOworICAgIF90ZXN0UnVubmVyID0gW2Jyb3dz
ZXJDb250ZXh0Q29udHJvbGxlci5fcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVtb3RlT2JqZWN0UHJv
eHlXaXRoSW50ZXJmYWNlOltfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVtb3RlT2JqZWN0SW50
ZXJmYWNlV2l0aFByb3RvY29sOkBwcm90b2NvbChQYXJzZXJZaWVsZFRva2VuVGVzdFJ1bm5lcild
XTsKK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
OihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIqKWNvbnRyb2xsZXIg
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICop
ZnJhbWUKK3sKKyAgICBbX3Rlc3RSdW5uZXIgZGlkRmluaXNoRG9jdW1lbnRMb2FkXTsKK30KKwor
LSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIqKWNvbnRyb2xsZXIgZGlkRmluaXNo
TG9hZEZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lCit7CisgICAgW190
ZXN0UnVubmVyIGRpZEZpbmlzaExvYWRdOworfQorCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElf
RU5BQkxFRAorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1BhcnNlcllpZWxkVG9rZW5UZXN0cy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuVGVzdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYTY2ODQzYTY3
ZmFhM2ZkODNiMTI5NjRmYWMyZjRjZmE3YmM1ZDFmCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuVGVzdHMuaApA
QCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK0Bwcm90b2NvbCBQ
YXJzZXJZaWVsZFRva2VuVGVzdFJ1bm5lciA8TlNPYmplY3Q+CistICh2b2lkKWRpZEZpbmlzaERv
Y3VtZW50TG9hZDsKKy0gKHZvaWQpZGlkRmluaXNoTG9hZDsKK0BlbmQKKworQHByb3RvY29sIFBh
cnNlcllpZWxkVG9rZW5UZXN0QnVuZGxlIDxOU09iamVjdD4KKy0gKHZvaWQpdGFrZURvY3VtZW50
UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2FkOworLSAodm9pZClyZWxlYXNlRG9jdW1lbnRQ
YXJzZXJUb2tlbjsKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblRlc3RzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuVGVzdHMubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZTVmNDEyMTQ2MTY4NTlkMTE3ZGQ3M2Q2NGQ0ZGM3YmExMTc4YjU4NgotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tl
blRlc3RzLm1tCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2ltcG9ydCAiUGFyc2VyWWllbGRUb2tlblRlc3RzLmgiCisKKyNpZiBXS19BUElfRU5B
QkxFRAorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdFdLV2Vi
Vmlldy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5oIgorI2ltcG9y
dCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVP
YmplY3RJbnRlcmZhY2UuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RSZWdpc3Ry
eS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvU2Vjb25kcy5oPgor
CitAaW50ZXJmYWNlIFBhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyA6IFRlc3RXS1dlYlZpZXcg
PFBhcnNlcllpZWxkVG9rZW5UZXN0UnVubmVyPgorQHByb3BlcnR5IChub25hdG9taWMsIHJlYWRv
bmx5KSBCT09MIGZpbmlzaGVkRG9jdW1lbnRMb2FkOworQHByb3BlcnR5IChub25hdG9taWMsIHJl
YWRvbmx5KSBCT09MIGZpbmlzaGVkTG9hZDsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFBhcnNl
cllpZWxkVG9rZW5UZXN0V2ViVmlldyB7CisgICAgUmV0YWluUHRyPGlkIDxQYXJzZXJZaWVsZFRv
a2VuVGVzdEJ1bmRsZT4+IF9idW5kbGU7Cit9CisKKysgKFJldGFpblB0cjxQYXJzZXJZaWVsZFRv
a2VuVGVzdFdlYlZpZXc+KXdlYlZpZXcKK3sKKyAgICBhdXRvICpjb25maWd1cmF0aW9uID0gW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiUGFyc2VyWWllbGRUb2tlblBsdWdJbiJdOworICAgIGF1dG8gd2ViVmlldyA9IGFk
b3B0TlMoW1tQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6
Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7
CisgICAgW1t3ZWJWaWV3IF9yZW1vdGVPYmplY3RSZWdpc3RyeV0gcmVnaXN0ZXJFeHBvcnRlZE9i
amVjdDp3ZWJWaWV3LmdldCgpIGludGVyZmFjZTpbX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJl
bW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woUGFyc2VyWWllbGRUb2tl
blRlc3RSdW5uZXIpXV07CisgICAgd2ViVmlldy0+X2J1bmRsZSA9IFtbd2ViVmlldyBfcmVtb3Rl
T2JqZWN0UmVnaXN0cnldIHJlbW90ZU9iamVjdFByb3h5V2l0aEludGVyZmFjZTpbX1dLUmVtb3Rl
T2JqZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9j
b2woUGFyc2VyWWllbGRUb2tlblRlc3RCdW5kbGUpXV07CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9
CisKKy0gKGlkIDxQYXJzZXJZaWVsZFRva2VuVGVzdEJ1bmRsZT4pYnVuZGxlCit7CisgICAgcmV0
dXJuIF9idW5kbGUuZ2V0KCk7Cit9CisKKy0gKHZvaWQpZGlkRmluaXNoRG9jdW1lbnRMb2FkCit7
CisgICAgX2ZpbmlzaGVkRG9jdW1lbnRMb2FkID0gWUVTOworfQorCistICh2b2lkKWRpZEZpbmlz
aExvYWQKK3sKKyAgICBfZmluaXNoZWRMb2FkID0gWUVTOworfQorCitAZW5kCisKK3N0YXRpYyB2
b2lkIHdhaXRGb3JEZWxheShTZWNvbmRzIGRlbGF5KQoreworICAgIF9fYmxvY2sgYm9vbCBkb25l
ID0gZmFsc2U7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQQVRDSF9USU1F
X05PVywgZGVsYXkubmFub3NlY29uZHMoKSksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF57
CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH0pOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoUGFyc2VyWWllbGRUb2tlblRlc3RzLCBQcmV2ZW50RG9j
dW1lbnRMb2FkQnlUYWtpbmdQYXJzZXJZaWVsZFRva2VuKQoreworICAgIGF1dG8gd2ViVmlldyA9
IFtQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgd2ViVmlld107CisgICAgW1t3ZWJWaWV3IGJ1
bmRsZV0gdGFrZURvY3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2FkXTsKKyAgICBb
d2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOworCisgICAgLy8gR2l2ZSB0aGUg
d2ViIHZpZXcgYSBjaGFuY2UgdG8gbG9hZCB0aGUgcGFnZS4gSW4gdGhlIGNhc2Ugd2hlcmUgdGhl
IHRva2VuIGZhaWxzIHRvIHlpZWxkIGRvY3VtZW50IHBhcnNpbmcsIGl0J3MgdmVyeSBsaWtlbHkg
dGhhdAorICAgIC8vIHRoZSBkb2N1bWVudCB3aWxsIGZpbmlzaCBsb2FkaW5nLCBhbmQgd2UnbGwg
ZmFpbCB0aGUgdGVzdCBleHBlY3RhdGlvbnMgYmVsb3cuIEluIHRoZSB1bmxpa2VseSBldmVudCB3
aGVyZSBwYWdlIGxvYWQgbWF5IHRha2UKKyAgICAvLyBsb25nZXIgdGhhbiAxIHNlY29uZCwgdGhp
cyB0ZXN0IHNob3VsZCBzdGlsbCBwYXNzLgorICAgIHdhaXRGb3JEZWxheSgxX3MpOworICAgIEVY
UEVDVF9GQUxTRShbd2ViVmlldyBmaW5pc2hlZERvY3VtZW50TG9hZF0pOworICAgIEVYUEVDVF9G
QUxTRShbd2ViVmlldyBmaW5pc2hlZExvYWRdKTsKKworICAgIC8vIE5vdywgYWxsb3cgZG9jdW1l
bnQgcGFyc2luZyB0byBjb250aW51ZSwgYW5kIHdhaXQgZm9yIHRoZSBwYWdlIHRvIGZpbmlzaCBs
b2FkaW5nLgorICAgIFtbd2ViVmlldyBidW5kbGVdIHJlbGVhc2VEb2N1bWVudFBhcnNlclRva2Vu
XTsKKworICAgIHdoaWxlICghW3dlYlZpZXcgZmluaXNoZWRMb2FkXSB8fCAhW3dlYlZpZXcgZmlu
aXNoZWREb2N1bWVudExvYWRdKQorICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0g
cnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0RhdGUgZGlzdGFudFBh
c3RdXTsKK30KKworVEVTVChQYXJzZXJZaWVsZFRva2VuVGVzdHMsIFRha2VNdWx0aXBsZVBhcnNl
cllpZWxkVG9rZW5zKQoreworICAgIGF1dG8gd2ViVmlldyA9IFtQYXJzZXJZaWVsZFRva2VuVGVz
dFdlYlZpZXcgd2ViVmlld107CisgICAgW1t3ZWJWaWV3IGJ1bmRsZV0gdGFrZURvY3VtZW50UGFy
c2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2FkXTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VO
YW1lZDpAInNpbXBsZSJdOworCisgICAgd2FpdEZvckRlbGF5KDAuNV9zKTsKKyAgICBFWFBFQ1Rf
RkFMU0UoW3dlYlZpZXcgZmluaXNoZWREb2N1bWVudExvYWRdKTsKKyAgICBFWFBFQ1RfRkFMU0Uo
W3dlYlZpZXcgZmluaXNoZWRMb2FkXSk7CisKKyAgICBbW3dlYlZpZXcgYnVuZGxlXSB0YWtlRG9j
dW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdOworICAgIFtbd2ViVmlldyBidW5k
bGVdIHJlbGVhc2VEb2N1bWVudFBhcnNlclRva2VuXTsKKworICAgIHdhaXRGb3JEZWxheSgwLjVf
cyk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGZpbmlzaGVkRG9jdW1lbnRMb2FkXSk7Cisg
ICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGZpbmlzaGVkTG9hZF0pOworCisgICAgW1t3ZWJWaWV3
IGJ1bmRsZV0gcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW5dOworCisgICAgd2hpbGUgKCFbd2Vi
VmlldyBmaW5pc2hlZExvYWRdIHx8ICFbd2ViVmlldyBmaW5pc2hlZERvY3VtZW50TG9hZF0pCisg
ICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5Nb2RlOk5TRGVmYXVsdFJ1bkxv
b3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBkaXN0YW50UGFzdF1dOworfQorCitURVNUKFBhcnNl
cllpZWxkVG9rZW5UZXN0cywgRGVmZXJyZWRTY3JpcHRFeGVjdXRlc0JlZm9yZURvY3VtZW50TG9h
ZFdoZW5UYWtpbmdQYXJzZXJZaWVsZFRva2VuKQoreworICAgIGF1dG8gd2ViVmlldyA9IFtQYXJz
ZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgd2ViVmlld107CisKKyAgICBbW3dlYlZpZXcgYnVuZGxl
XSB0YWtlRG9jdW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdOworICAgIFt3ZWJW
aWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAidGV4dC13aXRoLWRlZmVycmVkLXNjcmlwdCJdOworCisg
ICAgd2FpdEZvckRlbGF5KDAuNV9zKTsKKyAgICBbW3dlYlZpZXcgYnVuZGxlXSByZWxlYXNlRG9j
dW1lbnRQYXJzZXJUb2tlbl07CisKKyAgICB3aGlsZSAoIVt3ZWJWaWV3IGZpbmlzaGVkTG9hZF0g
fHwgIVt3ZWJWaWV3IGZpbmlzaGVkRG9jdW1lbnRMb2FkXSkKKyAgICAgICAgW1tOU1J1bkxvb3Ag
Y3VycmVudFJ1bkxvb3BdIHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgYmVmb3JlRGF0ZTpb
TlNEYXRlIGRpc3RhbnRQYXN0XV07CisKKyAgICAvLyBWZXJpZnkgdGhhdCBzeW5jaHJvbm91cyBz
Y3JpcHQgaXMgZXhlY3V0ZWQgYmVmb3JlIGRlZmVycmVkIHNjcmlwdCBhbmQgZGVmZXJyZWQgc2Ny
aXB0IGlzIHJ1biBiZWZvcmUgZG9jdW1lbnQgbG9hZC4KKyAgICBOU0FycmF5PE5TU3RyaW5nICo+
ICpldmVudE1lc3NhZ2VzID0gW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpA
IndpbmRvdy5ldmVudE1lc3NhZ2VzIl07CisgICAgRVhQRUNUX0VRKGV2ZW50TWVzc2FnZXMuY291
bnQsIDhVKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIlJ1bm5pbmcgc3luYyIsIGV2ZW50TWVzc2Fn
ZXNbMF0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiTG9hZGVkIHNjcmlwdDogc3luYyIsIGV2ZW50
TWVzc2FnZXNbMV0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiUnVubmluZyBkZWZlci1iZWZvcmUi
LCBldmVudE1lc3NhZ2VzWzJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkxvYWRlZCBzY3JpcHQ6
IGRlZmVyLWJlZm9yZSIsIGV2ZW50TWVzc2FnZXNbM10pOworICAgIEVYUEVDVF9XS19TVFJFUSgi
UnVubmluZyBkZWZlci1hZnRlciIsIGV2ZW50TWVzc2FnZXNbNF0pOworICAgIEVYUEVDVF9XS19T
VFJFUSgiTG9hZGVkIHNjcmlwdDogZGVmZXItYWZ0ZXIiLCBldmVudE1lc3NhZ2VzWzVdKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoIkRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmciLCBldmVudE1lc3Nh
Z2VzWzZdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkZpbmlzaGVkIGxvYWRpbmciLCBldmVudE1l
c3NhZ2VzWzddKTsKK30KKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RleHQtd2l0aC1kZWZlcnJlZC1z
Y3JpcHQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvdGV4dC13
aXRoLWRlZmVycmVkLXNjcmlwdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4OTQwYjMwNDEwMjdkNGI2MjYx
ZTk0OTNkNjE1MTBjYzE1ZjVjYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL3RleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbApAQCAt
MCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgICAgPG1ldGEg
bmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2Fs
ZT0xIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBldmVudE1lc3NhZ2VzID0gW10KKworICAgICAg
ICBmdW5jdGlvbiBzY3JpcHRMb2FkZWQoc2NyaXB0KQorICAgICAgICB7CisgICAgICAgICAgICBl
dmVudE1lc3NhZ2VzLnB1c2goYExvYWRlZCBzY3JpcHQ6ICR7c2NyaXB0LmlkfWApOworICAgICAg
ICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c2NyaXB0PgorICAgICAg
ICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwgKCkgPT4gZXZl
bnRNZXNzYWdlcy5wdXNoKCJEb2N1bWVudCBmaW5pc2hlZCBsb2FkaW5nIikpOworICAgICAgICBh
ZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgKCkgPT4gZXZlbnRNZXNzYWdlcy5wdXNoKCJGaW5pc2hl
ZCBsb2FkaW5nIikpOworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgaWQ9ImRlZmVyLWJlZm9y
ZSIgb25sb2FkPSJzY3JpcHRMb2FkZWQodGhpcykiIGRlZmVyIHNyYz0iZGF0YTp0ZXh0L2phdmFz
Y3JpcHQsZXZlbnRNZXNzYWdlcy5wdXNoKCdSdW5uaW5nIGRlZmVyLWJlZm9yZScpIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IGlkPSJzeW5jIiBvbmxvYWQ9InNjcmlwdExvYWRlZCh0aGlzKSIgc3Jj
PSJkYXRhOnRleHQvamF2YXNjcmlwdCxldmVudE1lc3NhZ2VzLnB1c2goJ1J1bm5pbmcgc3luYycp
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IGlkPSJkZWZlci1hZnRlciIgb25sb2FkPSJzY3JpcHRM
b2FkZWQodGhpcykiIGRlZmVyIHNyYz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsZXZlbnRNZXNzYWdl
cy5wdXNoKCdSdW5uaW5nIGRlZmVyLWFmdGVyJykiPjwvc2NyaXB0PgorICAgIDxwPkxvcmVtIGlw
c3VtIGRvbG9yIHNpdCBhbWV0LCA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPmNvbnNlY3Rl
dHVyIGFkaXBpc2NpbmcgZWxpdDwvYT4sIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBpbmNpZGlkdW50
IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiA8YSBocmVmPSJodHRwczovL3dlYmtp
dC5vcmciPlRlbXBvciBpZCBldSBuaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMgdml0YWUuPC9h
PiBTZWQgdGVtcHVzIHVybmEgZXQgcGhhcmV0cmEgcGhhcmV0cmEgbWFzc2EgbWFzc2EuIFZpdGFl
IHRvcnRvciBjb25kaW1lbnR1bSBsYWNpbmlhIHF1aXMgdmVsIGVyb3MgZG9uZWMgYWMuIDxhIGhy
ZWY9Imh0dHBzOi8vd2Via2l0Lm9yZyI+VWxsYW1jb3JwZXIgdmVsaXQgc2VkIHVsbGFtY29ycGVy
IG1vcmJpPC9hPiB0aW5jaWR1bnQgb3JuYXJlIG1hc3NhIGVnZXQuIFNpdCBhbWV0IGN1cnN1cyBz
aXQgYW1ldCBkaWN0dW0uIElkIGV1IG5pc2wgbnVuYyBtaSBpcHN1bSBmYXVjaWJ1cyB2aXRhZSBh
bGlxdWV0IG5lYy4gU3VzY2lwaXQgdGVsbHVzIG1hdXJpcyBhIGRpYW0gbWFlY2VuYXMgc2VkLiBD
b25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIDxhIGhyZWY9Imh0
dHBzOi8vd2Via2l0Lm9yZyI+TmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1cnBpcyBlZ2Vz
dGFzIGludGVnZXIuPC9hPiBRdWFtIGxhY3VzIHN1c3BlbmRpc3NlIGZhdWNpYnVzIGludGVyZHVt
IHBvc3VlcmUgbG9yZW0gaXBzdW0uIFNlbSBpbnRlZ2VyIHZpdGFlIGp1c3RvIGVnZXQgbWFnbmEg
ZmVybWVudHVtIGlhY3VsaXMuIEEgY29uZGltZW50dW0gdml0YWUgc2FwaWVuIHBlbGxlbnRlc3F1
ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUuIFZhcml1cyBkdWlzIGF0IGNvbnNlY3RldHVyIGxv
cmVtLiBJcHN1bSBmYXVjaWJ1cyB2aXRhZSBhbGlxdWV0IG5lYyB1bGxhbWNvcnBlciBzaXQuPC9w
PgorICAgIDxwPlNlZCBmYXVjaWJ1cyA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPnR1cnBp
cyBpbiBldSBtaSBiaWJlbmR1bTwvYT4uIERvbmVjIGVuaW0gZGlhbSB2dWxwdXRhdGUgdXQgcGhh
cmV0cmEgc2l0IGFtZXQgYWxpcXVhbS4gPGltZyBzcmM9ImFwcGxlLmdpZiI+PC9pbWc+IENvbnNl
cXVhdCBpZCBwb3J0YSBuaWJoIHZlbmVuYXRpcyBjcmFzIHNlZCBmZWxpcyBlZ2V0IHZlbGl0LiBB
dCBsZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzIGlkIGludGVyZHVt
IHZlbGl0LiBJZCBjb25zZWN0ZXR1ciBwdXJ1cyB1dCBmYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50
dW0gaW50ZWdlciBlbmltLiBJcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNj
aW5nIGVsaXQgdXQgYWxpcXVhbS4gQXQgdGVsbHVzIGF0IHVybmEgY29uZGltZW50dW0gbWF0dGlz
LiBGYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0gaW50ZWdlciBlbmltLiBBdCBlbGVtZW50dW0g
ZXUgZmFjaWxpc2lzIHNlZCBvZGlvIG1vcmJpLiBGYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBpbnRl
Z2VyIGVnZXQgYWxpcXVldC4gQ29uc2VxdWF0IGludGVyZHVtIHZhcml1cyBzaXQgYW1ldCBtYXR0
aXMgdnVscHV0YXRlIGVuaW0gbnVsbGEuIExlY3R1cyBzaXQgYW1ldCBlc3QgcGxhY2VyYXQgaW4g
ZWdlc3Rhcy4gRG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHBlbGxl
bnRlc3F1ZSBoYWJpdGFudCBtb3JiaS4gVXJuYSBldCBwaGFyZXRyYSBwaGFyZXRyYSBtYXNzYSBt
YXNzYSB1bHRyaWNpZXMgbWkuPC9wPgorICAgIDxwPlNlZCBsZWN0dXMgdmVzdGlidWx1bSBtYXR0
aXMgdWxsYW1jb3JwZXIgdmVsaXQgc2VkIHVsbGFtY29ycGVyLiA8YSBocmVmPSJodHRwczovL3dl
YmtpdC5vcmciPlF1YW0gbGFjdXMgc3VzcGVuZGlzc2U8L2E+IGZhdWNpYnVzIGludGVyZHVtIHBv
c3VlcmUgbG9yZW0uIFNhZ2l0dGlzIHZpdGFlIGV0IGxlbyBkdWlzIHV0IGRpYW0uIFR1cnBpcyBt
YXNzYSBzZWQgZWxlbWVudHVtIHRlbXB1cy4gQWxpcXVhbSBzZW0gZnJpbmdpbGxhIHV0IG1vcmJp
LiA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPkZyaW5naWxsYSBlc3QgdWxsYW1jb3JwZXI8
L2E+IGVnZXQgbnVsbGEgZmFjaWxpc2kgZXRpYW0gZGlnbmlzc2ltLiBJZCB2ZWxpdCB1dCB0b3J0
b3IgcHJldGl1bS4gQmliZW5kdW0gYXQgdmFyaXVzIHZlbCBwaGFyZXRyYSB2ZWwgdHVycGlzIG51
bmMuIFNpdCBhbWV0IGFsaXF1YW0gaWQgZGlhbSBtYWVjZW5hcy4gTG9ib3J0aXMgZmV1Z2lhdCB2
aXZhbXVzIGF0IGF1Z3VlIDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZyI+ZWdldCBhcmN1IGRp
Y3R1bTwvYT4gdmFyaXVzIGR1aXMuIExpYmVybyBqdXN0byBsYW9yZWV0IHNpdCBhbWV0LiBFZ2Vz
dGFzIHRlbGx1cyBydXRydW0gdGVsbHVzIHBlbGxlbnRlc3F1ZSBldSB0aW5jaWR1bnQgdG9ydG9y
IGFsaXF1YW0uPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345048</attachid>
            <date>2018-07-14 18:14:03 -0700</date>
            <delta_ts>2018-07-16 12:59:23 -0700</delta_ts>
            <desc>First pass</desc>
            <filename>bug-187682-20180714181402.patch</filename>
            <type>text/plain</type>
            <size>41024</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI4Mzc1NjVkY2MzMTdh
ZDg4NWRlZDBiYTEwMjkwZmI5YTFhNDI5MC4uODk3MzJkZGRmZDlmZjM2MjMxYTE0MTJjZGQ4OWQ0
ZTAxZTg4MGI2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDE4LTA3LTE0ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkg
aG9vayB0byBhbGxvdyBjbGllbnRzIHRvIHlpZWxkIGRvY3VtZW50IHBhcnNpbmcgYW5kIHNjcmlw
dCBleGVjdXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NzY4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDIyMDc0NTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgYSBzaW5nbGUgd2Vi
IHByb2Nlc3MgZm9yIGJvdGggdGhlIFJlYWRlciBwYWdlIGFuZCBvcmlnaW5hbCB3ZWIgcGFnZSBv
biB3YXRjaE9TIGhhcyBtdWx0aXBsZSBiZW5lZml0cywKKyAgICAgICAgaW5jbHVkaW5nOiAoMSkg
YWxsb3dpbmcgdGhlIHVzZXIgdG8gYmFpbCBvdXQgb2YgUmVhZGVyIGFuZCB2aWV3IHRoZSBvcmln
aW5hbCB3ZWIgcGFnZSB3aXRob3V0IGhhdmluZyB0byBsb2FkIGl0CisgICAgICAgIGFnYWluLCBh
bmQgKDIpIGltcHJvdmluZyB0aGUgYnJpbmd1cCB0aW1lIG9mIHRoZSBSZWFkZXIgcGFnZSwgc2lu
Y2Ugc3VicmVzb3VyY2VzIGFyZSBhbHJlYWR5IGNhY2hlZCBpbiBwcm9jZXNzCisgICAgICAgIGFu
ZCB3ZSBkb24ndCBlYXQgdGhlIGFkZGl0aW9uYWwgY29zdCBvZiBhIHdlYiBwcm9jZXNzIGxhdW5j
aCBpZiBwcmV3YXJtaW5nIGZhaWxzLgorCisgICAgICAgIEhvd2V2ZXIsIHRoaXMgaGFzIHNvbWUg
ZHJhd2JhY2tzIGFzIHdlbGwsIG9uZSBvZiB3aGljaCBpcyB0aGF0IG1haW4gdGhyZWFkIHdvcmsg
YmVpbmcgZG9uZSBvbiBiZWhhbGYgb2YgdGhlCisgICAgICAgIG9yaWdpbmFsIHBhZ2UgbWF5IGNv
bnRlbmQgd2l0aCB3b3JrIGJlaW5nIGRvbmUgdG8gbG9hZCBhbmQgcmVuZGVyIHRoZSBSZWFkZXIg
cGFnZS4gVGhpcyBpcyBlc3BlY2lhbGx5IGJhZCB3aGVuCisgICAgICAgIHRoZSBwYWdlIGlzIGlu
IHRoZSBtaWRkbGUgb2YgZXhlY3V0aW5nIGhlYXZ5IHNjcmlwdCBhZnRlciBTYWZhcmkgaGFzIGFs
cmVhZHkgZGV0ZWN0ZWQgdGhhdCB0aGUgUmVhZGVyIHZlcnNpb24gb2YKKyAgICAgICAgdGhlIHBh
Z2UgaXMgYXZhaWxhYmxlLCBidXQgYmVmb3JlIGl0IGhhcyBmaW5pc2hlZCBsb2FkaW5nIHRoZSBS
ZWFkZXIgcGFnZS4gVGhlIHJlc3VsdCBpcyB0aGF0IHNjcmlwdCBvbiB0aGUKKyAgICAgICAgb3Jp
Z2luYWwgcGFnZSBtYXkgYmxvY2sgdGhlIGZpcnN0IHBhaW50IG9mIHRoZSBSZWFkZXIgcGFnZSAo
b24gTmV3IFlvcmsgVGltZXMgYXJ0aWNsZXMsIHRoaXMgb2Z0ZW4gbGVhZHMgdG8gYW4KKyAgICAg
ICAgYXBwYXJlbnQgcGFnZSBsb2FkIHRpbWUgb2YgMjUtMzUgc2Vjb25kcyBiZWZvcmUgdGhlIHVz
ZXIgc2VlcyBhbnl0aGluZyBiZXNpZGVzIGEgYmxhbmsgc2NyZWVuKS4KKworICAgICAgICBUbyBt
aXRpZ2F0ZSB0aGlzLCB3ZSBpbnRyb2R1Y2UgYSB3YXkgZm9yIGluamVjdGVkIGJ1bmRsZSBjbGll
bnRzIHRvIHlpZWxkIHBhcnNpbmcgYW5kIGFzeW5jIHNjcmlwdCBleGVjdXRpb24gb24KKyAgICAg
ICAgYSBkb2N1bWVudC4gVGhpcyBjYXBhYmlsaXR5IGlzIHN1cmZhY2VkIGluIHRoZSBmb3JtIG9m
IGFuIG9wYXF1ZSB0b2tlbiB3aGljaCBjbGllbnRzIG1heSByZXF1ZXN0IGZyb20gYQorICAgICAg
ICBXS0RPTURvY3VtZW50LiBDb25zdHJ1Y3Rpb24gb2YgdGhlIHRva2VuIGNhdXNlcyB0aGUgZG9j
dW1lbnQgdG8gYmVnaW4geWllbGRpbmcgYW5kIGRlZmVyIGV4ZWN1dGlvbiBvZiBwcmV2aW91c2x5
CisgICAgICAgIHNjaGVkdWxlZCBzY3JpcHRzLCBvbmx5IGlmIHRoZXJlIHdlcmUgbm8gYWN0aXZl
IHRva2VucyBvbiB0aGUgZG9jdW1lbnQgYWxyZWFkeS4gU2ltaWxhcmx5LCBkZXN0cnVjdGlvbiBv
ZiBhbGwKKyAgICAgICAgYWN0aXZlIHRva2VucyBvbiB0aGUgZG9jdW1lbnQgY2F1c2VzIGl0IHRv
IHN0b3AgeWllbGRpbmcgYW5kIHJlc3VtZSBleGVjdXRpb24gb2Ygc2NyaXB0cyBpZiBuZWVkZWQu
CisKKyAgICAgICAgVGVzdHM6ICBQYXJzZXJZaWVsZFRva2VuVGVzdHMuUHJldmVudERvY3VtZW50
TG9hZEJ5VGFraW5nUGFyc2VyWWllbGRUb2tlbgorICAgICAgICAgICAgICAgIFBhcnNlcllpZWxk
VG9rZW5UZXN0cy5UYWtlTXVsdGlwbGVQYXJzZXJZaWVsZFRva2VucworICAgICAgICAgICAgICAg
IFBhcnNlcllpZWxkVG9rZW5UZXN0cy5EZWZlcnJlZFNjcmlwdEV4ZWN1dGVzQmVmb3JlRG9jdW1l
bnRMb2FkV2hlblRha2luZ1BhcnNlcllpZWxkVG9rZW4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6UGFyc2VyWWllbGRUb2tlbjo6UGFy
c2VyWWllbGRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6UGFyc2VyWWllbGRU
b2tlbjo6flBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorCisg
ICAgICAgIEludHJvZHVjZSBhIHBhcnNlciB5aWVsZCBjb3VudCB0byBEb2N1bWVudDsgYXMgbG9u
ZyBhcyB0aGlzIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiAwLCB3ZSBjb25zaWRlciB0aGUgRG9jdW1l
bnQgdG8KKyAgICAgICAgaGF2ZSBhY3RpdmUgeWllbGQgdG9rZW5zLiBXaGVuIGNvbnN0cnVjdGlu
ZyBvciBkZXN0cm95aW5nIGEgUGFyc2VyWWllbGRUb2tlbiwgd2UgaW5jcmVtZW50IGFuZCBkZWNy
ZW1lbnQgdGhlCisgICAgICAgIHBhcnNlciB5aWVsZCBjb3VudCAocmVzcGVjdGl2ZWx5KS4KKwor
ICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4pOgorICAg
ICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4gY29uc3Qp
OgorICAgICAgICAqIGRvbS9TY3JpcHRSdW5uZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0UnVubmVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjpub3Rp
ZnlGaW5pc2hlZCk6CisgICAgICAgICogZG9tL1NjcmlwdFJ1bm5lci5oOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0UnVubmVyOjpkaWRCZWdpbllpZWxkaW5nUGFyc2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdFJ1bm5lcjo6ZGlkRW5kWWllbGRpbmdQYXJzZXIpOgorCisgICAgICAgIEhv
b2tzIGZvciBEb2N1bWVudCB0byB0ZWxsIGl0cyBTY3JpcHRSdW5uZXIgdGhhdCB3ZSd2ZSBzdGFy
dGVkIG9yIGZpbmlzaGVkIHlpZWxkaW5nLiBUaGVzZSB3cmFwIGNhbGxzIHRvIHN1c3BlbmQKKyAg
ICAgICAgYW5kIHJlc3VtZS4KKworICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hl
ZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxk
WWllbGRCZWZvcmVUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVy
OjpzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdCk6CisKKyAgICAgICAgTWFrZSB0aGVz
ZSByZXR1cm4gYHRydWVgIGluIHRoZSBjYXNlIHdoZXJlIHRoZSBEb2N1bWVudCBpcyB5aWVsZGlu
ZyBkdWUgdG8gYWN0aXZlIHlpZWxkIHRva2Vucywgc3VjaCB0aGF0IHdlCisgICAgICAgIGJhaWwg
d2hlbiBwdW1waW5nIHRoZSB0b2tlbml6ZXIgaW4gSFRNTERvY3VtZW50UGFyc2VyLiBBbHNvIG1v
dmUgdGhlIGltcGxlbWVudGF0aW9uIG9mIHNob3VsZFlpZWxkQmVmb3JlVG9rZW4gdG8KKyAgICAg
ICAgdGhlIGltcGxlbWVudGF0aW9uIGZpbGUsIHNpbmNlIGl0IG5vdyBuZWVkcyB0byBrbm93IGFi
b3V0IERvY3VtZW50ICh3aGljaCBpcyBjdXJyZW50bHkganVzdCBhIGZvcndhcmQKKyAgICAgICAg
ZGVjbGFyYXRpb24gaW4gdGhlIGhlYWRlcikuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
UGFyc2VyU2NoZWR1bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVy
OjpzaG91bGRZaWVsZEJlZm9yZVRva2VuKTogRGVsZXRlZC4KKwogMjAxOC0wNy0xNCAgU2ltb24g
RnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTaHJpbmsgc29tZSBz
dHlsZS1yZWxhdGVkIGNsYXNzZXMgYW5kIGVudW1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA4YTlmOGY5YmQ3ODMw
MTY5ZTYzMTA4MTA0MzY2MTM0Y2M5ZmE4NjMuLjE5MDY2MDM4NDhkYzNlMmUxMDlhMjdiN2U3YmQw
MDBhMDM0Y2MwMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDctMTQgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQSSBo
b29rIHRvIGFsbG93IGNsaWVudHMgdG8geWllbGQgZG9jdW1lbnQgcGFyc2luZyBhbmQgc2NyaXB0
IGV4ZWN1dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg3NjgyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjIwNzQ1Mz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgaG9va3MgdG8gV0tEb2N1
bWVudCB0byBjcmVhdGUgYW5kIHJldHVybiBhbiBpbnRlcm5hbCBXS0RPTURvY3VtZW50UGFyc2Vy
WWllbGRUb2tlbiBvYmplY3QsIHdob3NlIGxpZmV0aW1lIGlzCisgICAgICAgIHRpZWQgdG8gYSBk
b2N1bWVudCBwYXJzZXIgeWllbGQgdG9rZW4uCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVj
dGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tOgorICAgICAgICAoLVtXS0RP
TURvY3VtZW50UGFyc2VyWWllbGRUb2tlbiBpbml0V2l0aERvY3VtZW50Ol0pOgorICAgICAgICAo
LVtXS0RPTURvY3VtZW50IHBhcnNlcllpZWxkVG9rZW5dKToKKwogMjAxOC0wNy0xMyAgVGltb3Ro
eSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIF9kcmF3c0JhY2tn
cm91bmQgdG8gV0tXZWJWaWV3Q29uZmlndXJhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmlu
ZGV4IGU5ZjQ4MjNlYWJiZmRiNTcxNjQyZWM2OWQ3MzMzYmVjNjIxZjVhYWYuLjQ0NjUxMWY3OGYx
YWZkZTk0MDA2NjQ1NzFiODRmMDc2NDdkZDBiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApA
QCAtNjg5Nyw2ICs2ODk3LDIwIEBAIHZvaWQgRG9jdW1lbnQ6OmRlY3JlbWVudEFjdGl2ZVBhcnNl
ckNvdW50KCkKICAgICBmcmFtZSgpLT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgpOwogfQog
CitEb2N1bWVudDo6UGFyc2VyWWllbGRUb2tlbjo6UGFyc2VyWWllbGRUb2tlbihEb2N1bWVudCYg
ZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQoreworICAgIGlmICgrK2RvY3Vt
ZW50Lm1fcGFyc2VyWWllbGRUb2tlbkNvdW50ID09IDEpCisgICAgICAgIGRvY3VtZW50LnNjcmlw
dFJ1bm5lcigpLT5kaWRCZWdpbllpZWxkaW5nUGFyc2VyKCk7Cit9CisKK0RvY3VtZW50OjpQYXJz
ZXJZaWVsZFRva2VuOjp+UGFyc2VyWWllbGRUb2tlbigpCit7CisgICAgQVNTRVJUKG1fZG9jdW1l
bnQtPm1fcGFyc2VyWWllbGRUb2tlbkNvdW50KTsKKyAgICBpZiAoISgtLW1fZG9jdW1lbnQtPm1f
cGFyc2VyWWllbGRUb2tlbkNvdW50KSkKKyAgICAgICAgbV9kb2N1bWVudC0+c2NyaXB0UnVubmVy
KCktPmRpZEVuZFlpZWxkaW5nUGFyc2VyKCk7Cit9CisKIHN0YXRpYyBSZW5kZXJFbGVtZW50KiBu
ZWFyZXN0Q29tbW9uSG92ZXJBbmNlc3RvcihSZW5kZXJFbGVtZW50KiBvYmoxLCBSZW5kZXJFbGVt
ZW50KiBvYmoyKQogewogICAgIGlmICghb2JqMSB8fCAhb2JqMikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
aW5kZXggZGI0NTk3OTU5Mjg2MWU0ZWJlYzQzZGI2YmEyNWE0NmQ2M2UzOWE4Yy4uMjg0YTg2OWZl
NmQ2YzEwNDRkMzA1NmY0ZjBiNzVhNjY3Y2Y4ZWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAg
LTEyNjYsNiArMTI2NiwyMiBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbmNyZW1lbnRBY3RpdmVQYXJz
ZXJDb3VudCgpIHsgKyttX2FjdGl2ZVBhcnNlckNvdW50OyB9CiAgICAgdm9pZCBkZWNyZW1lbnRB
Y3RpdmVQYXJzZXJDb3VudCgpOwogCisgICAgY2xhc3MgUGFyc2VyWWllbGRUb2tlbiB7CisgICAg
cHVibGljOgorICAgICAgICBXRUJDT1JFX0VYUE9SVCBQYXJzZXJZaWVsZFRva2VuKERvY3VtZW50
Jik7CisgICAgICAgIFdFQkNPUkVfRVhQT1JUIH5QYXJzZXJZaWVsZFRva2VuKCk7CisKKyAgICBw
cml2YXRlOgorICAgICAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgfTsKKworICAg
IHN0ZDo6dW5pcXVlX3B0cjxQYXJzZXJZaWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRva2Vu
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhcnNlcllpZWxkVG9r
ZW4+KCp0aGlzKTsKKyAgICB9CisKKyAgICBib29sIGhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4o
KSBjb25zdCB7IHJldHVybiBtX3BhcnNlcllpZWxkVG9rZW5Db3VudDsgfQorCiAgICAgRG9jdW1l
bnRTaGFyZWRPYmplY3RQb29sKiBzaGFyZWRPYmplY3RQb29sKCkgeyByZXR1cm4gbV9zaGFyZWRP
YmplY3RQb29sLmdldCgpOyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVNYXRjaGVkUHJvcGVydGll
c0NhY2hlQW5kRm9yY2VTdHlsZVJlY2FsYygpOwpAQCAtMTU3OCw2ICsxNTk0LDggQEAgcHJpdmF0
ZToKICAgICBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7
CiAgICAgUmVmUHRyPERvY3VtZW50UGFyc2VyPiBtX3BhcnNlcjsKIAorICAgIHVuc2lnbmVkIG1f
cGFyc2VyWWllbGRUb2tlbkNvdW50IHsgMCB9OworCiAgICAgLy8gRG9jdW1lbnQgVVJMcy4KICAg
ICBVUkwgbV91cmw7IC8vIERvY3VtZW50LlVSTDogVGhlIFVSTCBmcm9tIHdoaWNoIHRoaXMgZG9j
dW1lbnQgd2FzIHJldHJpZXZlZC4KICAgICBVUkwgbV9iYXNlVVJMOyAvLyBOb2RlLmJhc2VVUkk6
IFRoZSBVUkwgdG8gdXNlIHdoZW4gcmVzb2x2aW5nIHJlbGF0aXZlIFVSTHMuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9TY3JpcHRSdW5uZXIuY3BwCmluZGV4IDczZmI4YjA0ZGU0MDU3MDFkOTdmNjJlNmM5YTQ1Mzkw
M2MyZGY3ZTkuLjYyZTU2ZjJmYjQ5YmE0YTA0MGIyMzFjN2U1NzgyNzYyYzhmOGFmZTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHZvaWQgU2NyaXB0
UnVubmVyOjpzdXNwZW5kKCkKIAogdm9pZCBTY3JpcHRSdW5uZXI6OnJlc3VtZSgpCiB7Ci0gICAg
aWYgKGhhc1BlbmRpbmdTY3JpcHRzKCkpCisgICAgaWYgKGhhc1BlbmRpbmdTY3JpcHRzKCkgJiYg
IW1fZG9jdW1lbnQuaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigpKQogICAgICAgICBtX3RpbWVy
LnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCkBAIC05NSw3ICs5NSw5IEBAIHZvaWQgU2NyaXB0UnVu
bmVyOjpub3RpZnlGaW5pc2hlZChQZW5kaW5nU2NyaXB0JiBwZW5kaW5nU2NyaXB0KQogICAgICAg
ICBtX3NjcmlwdHNUb0V4ZWN1dGVTb29uLmFwcGVuZChtX3BlbmRpbmdBc3luY1NjcmlwdHMudGFr
ZShwZW5kaW5nU2NyaXB0KS0+cHRyKCkpOwogICAgIH0KICAgICBwZW5kaW5nU2NyaXB0LmNsZWFy
Q2xpZW50KCk7Ci0gICAgbV90aW1lci5zdGFydE9uZVNob3QoMF9zKTsKKworICAgIGlmICghbV9k
b2N1bWVudC5oYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VuKCkpCisgICAgICAgIG1fdGltZXIuc3Rh
cnRPbmVTaG90KDBfcyk7CiB9CiAKIHZvaWQgU2NyaXB0UnVubmVyOjp0aW1lckZpcmVkKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9TY3JpcHRSdW5uZXIuaAppbmRleCA4ZThmNDg2YWQxZGIwZGJjMGQwYmU2NDUyMTEx
ZWVkNzcwZjE1MzEyLi42N2VlY2JlODA5Y2QwNDNkM2JhYjE3NmYyMTkwY2Y0ZjI5M2NlOWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5oCkBAIC01MCw2ICs1MCw5IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHJlc3VtZSgpOwogICAgIHZvaWQgbm90aWZ5U2NyaXB0UmVhZHkoU2NyaXB0RWxlbWVu
dCosIEV4ZWN1dGlvblR5cGUpOwogCisgICAgdm9pZCBkaWRCZWdpbllpZWxkaW5nUGFyc2VyKCkg
eyBzdXNwZW5kKCk7IH0KKyAgICB2b2lkIGRpZEVuZFlpZWxkaW5nUGFyc2VyKCkgeyByZXN1bWUo
KTsgfQorCiBwcml2YXRlOgogICAgIHZvaWQgdGltZXJGaXJlZCgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCmluZGV4IDM1YjZh
NTlkODcyMjAzZTgxNjU3YjNiMTFkNTA2MzAzNGZhNmRjM2UuLmE3ODBmZDQ3YjRmOTRmYzc3OWQ5
YWY5ZDIxZmVlZTMyMWI2ZDJlYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFy
c2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwCkBAIC0zMiw2ICszMiwxMCBAQAogI2luY2x1ZGUg
IkhUTUxEb2N1bWVudFBhcnNlci5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKIAorI2lmIFBMQVRGT1JN
KElPUykKKyNpbmNsdWRlICJXZWJDb3JlVGhyZWFkLmgiCisjZW5kaWYKKwogLy8gZGVmYXVsdFBh
cnNlclRpbWVMaW1pdCBpcyB0aGUgc2Vjb25kcyB0aGUgcGFyc2VyIHdpbGwgcnVuIGluIG9uZSB3
cml0ZSgpIGNhbGwKIC8vIGJlZm9yZSB5aWVsZGluZy4gSW5saW5lIDxzY3JpcHQ+IGV4ZWN1dGlv
biBjYW4gY2F1c2UgaXQgdG8gZXhjZWVkIHRoZSBsaW1pdC4KIC8vIEZJWE1FOiBXZSB3b3VsZCBs
aWtlIHRoaXMgdmFsdWUgdG8gYmUgMC4yLgpAQCAtMTA0LDYgKzEwOCwyMyBAQCB2b2lkIEhUTUxQ
YXJzZXJTY2hlZHVsZXI6OmNvbnRpbnVlTmV4dENodW5rVGltZXJGaXJlZCgpCiAgICAgbV9wYXJz
ZXIucmVzdW1lUGFyc2luZ0FmdGVyWWllbGQoKTsKIH0KIAorYm9vbCBIVE1MUGFyc2VyU2NoZWR1
bGVyOjpzaG91bGRZaWVsZEJlZm9yZVRva2VuKFB1bXBTZXNzaW9uJiBzZXNzaW9uKQoreworI2lm
IFBMQVRGT1JNKElPUykKKyAgICBpZiAoV2ViVGhyZWFkU2hvdWxkWWllbGQoKSkKKyAgICAgICAg
cmV0dXJuIHRydWU7CisjZW5kaWYKKworICAgIGlmIChVTkxJS0VMWShtX3BhcnNlci5kb2N1bWVu
dCgpLT5oYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VuKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KworICAgIGlmIChVTkxJS0VMWShzZXNzaW9uLnByb2Nlc3NlZFRva2VucyA+IG51bWJlck9mVG9r
ZW5zQmVmb3JlQ2hlY2tpbmdGb3JZaWVsZCB8fCBzZXNzaW9uLmRpZFNlZVNjcmlwdCkpCisgICAg
ICAgIHJldHVybiBjaGVja0ZvcllpZWxkKHNlc3Npb24pOworCisgICAgKytzZXNzaW9uLnByb2Nl
c3NlZFRva2VuczsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIGJvb2wgSFRNTFBhcnNlclNjaGVk
dWxlcjo6c2hvdWxkWWllbGRCZWZvcmVFeGVjdXRpbmdTY3JpcHQoUHVtcFNlc3Npb24mIHNlc3Np
b24pCiB7CiAgICAgLy8gSWYgd2UndmUgbmV2ZXIgcGFpbnRlZCBiZWZvcmUgYW5kIGEgbGF5b3V0
IGlzIHBlbmRpbmcsIHlpZWxkIHByaW9yIHRvIHJ1bm5pbmcKQEAgLTExMSw2ICsxMzIsMTAgQEAg
Ym9vbCBIVE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1Njcmlw
dChQdW1wU2Vzc2lvbiYgc2Vzc2lvbikKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0g
bV9wYXJzZXIuZG9jdW1lbnQoKTsKICAgICBib29sIG5lZWRzRmlyc3RQYWludCA9IGRvY3VtZW50
LT52aWV3KCkgJiYgIWRvY3VtZW50LT52aWV3KCktPmhhc0V2ZXJQYWludGVkKCk7CiAgICAgc2Vz
c2lvbi5kaWRTZWVTY3JpcHQgPSB0cnVlOworCisgICAgaWYgKFVOTElLRUxZKGRvY3VtZW50LT5o
YXNBY3RpdmVQYXJzZXJZaWVsZFRva2VuKCkpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAg
IHJldHVybiBuZWVkc0ZpcnN0UGFpbnQgJiYgZG9jdW1lbnQtPmlzTGF5b3V0VGltZXJBY3RpdmUo
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNl
clNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVk
dWxlci5oCmluZGV4IGI1OTM0Y2U5MDY3ZjA2NzFhYTk5ZjEyYjYxODA5ZGIwN2FiZTU1MTguLjEz
YTc1N2ZlY2JiODQ4ZmRkM2I0YjFiM2UwNjk1MDQ1ZWQwYmFhZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgKQEAgLTI5LDEwICsyOSw2
IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKLSNpZiBQ
TEFURk9STShJT1MpCi0jaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgotI2VuZGlmCi0KIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC02MywxOCArNTksNyBAQCBwdWJs
aWM6CiAgICAgZXhwbGljaXQgSFRNTFBhcnNlclNjaGVkdWxlcihIVE1MRG9jdW1lbnRQYXJzZXIm
KTsKICAgICB+SFRNTFBhcnNlclNjaGVkdWxlcigpOwogCi0gICAgYm9vbCBzaG91bGRZaWVsZEJl
Zm9yZVRva2VuKFB1bXBTZXNzaW9uJiBzZXNzaW9uKQotICAgIHsKLSNpZiBQTEFURk9STShJT1Mp
Ci0gICAgICAgIGlmIChXZWJUaHJlYWRTaG91bGRZaWVsZCgpKQotICAgICAgICAgICAgcmV0dXJu
IHRydWU7Ci0jZW5kaWYKLSAgICAgICAgaWYgKFVOTElLRUxZKHNlc3Npb24ucHJvY2Vzc2VkVG9r
ZW5zID4gbnVtYmVyT2ZUb2tlbnNCZWZvcmVDaGVja2luZ0ZvcllpZWxkIHx8IHNlc3Npb24uZGlk
U2VlU2NyaXB0KSkKLSAgICAgICAgICAgIHJldHVybiBjaGVja0ZvcllpZWxkKHNlc3Npb24pOwot
Ci0gICAgICAgICsrc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnM7Ci0gICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICB9CisgICAgYm9vbCBzaG91bGRZaWVsZEJlZm9yZVRva2VuKFB1bXBTZXNzaW9uJik7
CiAgICAgYm9vbCBzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChQdW1wU2Vzc2lvbiYp
OwogCiAgICAgdm9pZCBzY2hlZHVsZUZvclJlc3VtZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1
bWVudC5oCmluZGV4IDlhNTRhYjdhOGZmN2IzMTgzNWU5M2Y1NzYxMzhhZWJkZDEzNDYwZDYuLmZk
Y2ViMTMyOTNhYTE1NGU0YmYwYTQ5NDFlN2ZkZWJlZGEwMWE4MDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9X
S0RPTURvY3VtZW50LmgKQEAgLTQyLDYgKzQyLDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMCksIGlvcyg4LjApKQogCiBAcHJvcGVydHkocmVhZG9ubHkpIFdLRE9NRWxlbWVudCAq
Ym9keTsKIAorLSAoTlNPYmplY3QgKilwYXJzZXJZaWVsZFRva2VuIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiBAZW5kCiAKICNlbmRpZiAv
LyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KaW5kZXggM2Fk
MDRjNzFkODM2M2YwY2NmNTQ5MmFmM2UyMzMyNjhjMTkzN2M4My4uOTRlMjYyYjdkZWZlYzYwM2Nh
OGJkOWIxOGY1MmE2NTZiYWIwYmZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1t
CkBAIC0zNSw2ICszNSwyMyBAQAogI2ltcG9ydCA8V2ViQ29yZS9UZXh0Lmg+CiAjaW1wb3J0IDxX
ZWJDb3JlL21hcmt1cC5oPgogCitAaW50ZXJmYWNlIFdLRE9NRG9jdW1lbnRQYXJzZXJZaWVsZFRv
a2VuIDogTlNPYmplY3QKKworQGVuZAorCitAaW1wbGVtZW50YXRpb24gV0tET01Eb2N1bWVudFBh
cnNlcllpZWxkVG9rZW4geworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpEb2N1bWVudDo6
UGFyc2VyWWllbGRUb2tlbj4gX3Rva2VuOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdFdpdGhE
b2N1bWVudDooV2ViQ29yZTo6RG9jdW1lbnQmKWRvY3VtZW50Cit7CisgICAgaWYgKHNlbGYgPSBb
c3VwZXIgaW5pdF0pCisgICAgICAgIF90b2tlbiA9IGRvY3VtZW50LmNyZWF0ZVBhcnNlcllpZWxk
VG9rZW4oKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZAorCiBAaW1wbGVtZW50YXRpb24g
V0tET01Eb2N1bWVudAogCiAtIChXS0RPTUVsZW1lbnQgKiljcmVhdGVFbGVtZW50OihOU1N0cmlu
ZyAqKXRhZ05hbWUKQEAgLTY2LDYgKzgzLDExIEBACiAgICAgcmV0dXJuIFdlYktpdDo6dG9XS0RP
TU5vZGUoY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4o
Kl9pbXBsKS5jcmVhdGVSYW5nZSgpLmdldCgpLCB0ZXh0KS5wdHIoKSk7CiB9CiAKKy0gKE5TT2Jq
ZWN0ICopcGFyc2VyWWllbGRUb2tlbgoreworICAgIHJldHVybiBbW1tXS0RPTURvY3VtZW50UGFy
c2VyWWllbGRUb2tlbiBhbGxvY10gaW5pdFdpdGhEb2N1bWVudDpkb3duY2FzdDxXZWJDb3JlOjpE
b2N1bWVudD4oKl9pbXBsKV0gYXV0b3JlbGVhc2VdOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDNmYmI2N2I5NzVkZjAyZDg4YWMzZjQ3OGNiODBjYTBiNTVmNzg0MDIuLjQ3OWY3
YjM5M2IyMDZmMDhkMDIxYzYyZDRmMzZhZWVhOTBjY2YzNjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0wNy0x
NCAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YW4gU1BJIGhvb2sgdG8gYWxsb3cgY2xpZW50cyB0byB5aWVsZCBkb2N1bWVudCBwYXJzaW5nIGFu
ZCBzY3JpcHQgZXhlY3V0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODc2ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyMjA3NDUzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGZldyB0
ZXN0cyB0byBleGVyY2lzZSB0aGUgbmV3IGRvY3VtZW50IHlpZWxkIHRva2VuIFNQSSwgdmVyaWZ5
aW5nIHRoYXQgY2xpZW50cyBjYW4gdXNlIHRoZSBTUEkgdG8gZGVmZXIKKyAgICAgICAgZG9jdW1l
bnQgbG9hZCwgYW5kIHRoYXQgZG9pbmcgc28gZG9lc24ndCBjYXVzZSBkZWZlcnJlZCBgc2NyaXB0
YCB0byBleGVjdXRlIGluIHRoZSB3cm9uZyBvcmRlciAoaS5lLiBiZWZvcmUKKyAgICAgICAgc3lu
Y2hyb25vdXMgc2NyaXB0LCBvciBhZnRlciAiRE9NQ29udGVudExvYWRlZCIpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRv
a2VuUGx1Z0luLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bUGFyc2VyWWllbGRUb2tlblBsdWdJbiB0
YWtlRG9jdW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdKToKKyAgICAgICAgKC1b
UGFyc2VyWWllbGRUb2tlblBsdWdJbiByZWxlYXNlRG9jdW1lbnRQYXJzZXJUb2tlbl0pOgorICAg
ICAgICAoLVtQYXJzZXJZaWVsZFRva2VuUGx1Z0luIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXI6ZGlkQ29tbWl0TG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtQYXJz
ZXJZaWVsZFRva2VuUGx1Z0luIHdlYlByb2Nlc3NQbHVnSW46ZGlkQ3JlYXRlQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyOl0pOgorICAgICAgICAoLVtQYXJzZXJZaWVsZFRva2VuUGx1Z0luIHdlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkRmluaXNoRG9jdW1lbnRMb2Fk
Rm9yRnJhbWU6XSk6CisgICAgICAgICgtW1BhcnNlcllpZWxkVG9rZW5QbHVnSW4gd2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6XSk6
CisKKyAgICAgICAgSW5qZWN0ZWQgYnVuZGxlIG9iamVjdCB0aGF0IGtub3dzIGhvdyB0byB0YWtl
IGFuZCByZWxlYXNlIG11bHRpcGxlIGRvY3VtZW50IHBhcnNlciB5aWVsZCB0b2tlbnMuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5U
ZXN0cy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTURvY3VtZW50LmguCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuVGVzdHMubW06IEFkZGVkLgorICAgICAgICAo
K1tQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgd2ViVmlld10pOgorICAgICAgICAoLVtQYXJz
ZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgYnVuZGxlXSk6CisgICAgICAgICgtW1BhcnNlcllpZWxk
VG9rZW5UZXN0V2ViVmlldyBkaWRGaW5pc2hEb2N1bWVudExvYWRdKToKKyAgICAgICAgKC1bUGFy
c2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IGRpZEZpbmlzaExvYWRdKToKKyAgICAgICAgKHdhaXRG
b3JEZWxheSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3RleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbDogQWRkZWQuCisKKyAg
ICAgICAgTmV3IHRlc3QgSFRNTCBwYWdlIHRoYXQgY29udGFpbnMgYSBkZWZlcnJlZCBzY3JpcHQg
ZWxlbWVudCwgYSBzeW5jaHJvbm91cyBzY3JpcHQgZWxlbWVudCwgYW5vdGhlciBkZWZlcnJlZAor
ICAgICAgICBzY3JpcHQgZWxlbWVudCwgYW5kIHRoZW4gc29tZSB0ZXh0LCBpbWFnZXMsIGFuZCBs
aW5rcy4KKwogMjAxOC0wNy0xMyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5j
b20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBydW4tYXBpLXRlc3RzIGlzIHRpbWluZyBvdXQgZm9y
IGFsbW9zdCBhbGwgdGVzdCBjYXNlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZTI3MTJi
MmQ2NjNlMWZiYzc0YjIzYzA3ZDJhZTEyMDc2MGQ0M2EwLi4zNjBiZjA3MTFiY2YyZGE5Y2RmNTll
MTI3ZDcyN2FkZTI0NjAyYzkwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzgxLDYgKzc4
MSw5IEBACiAJCUY0M0UzQkJGMjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0cy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0M0UzQkJF
MjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0cy5tbSAqLzsgfTsKIAkJRjQzRTNC
QzEyMERBREJDNTAwQTRFN0VEIC8qIGZpeGVkLW5hdi1iYXIuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDNFM0JDMDIwREFEQjgwMDBB
NEU3RUQgLyogZml4ZWQtbmF2LWJhci5odG1sICovOyB9OwogCQlGNDQ1MUM3NjFFQjhGRDg5MDAy
MEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQ1MUM3NTFFQjhGRDdD
MDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCAqLzsgfTsKKwkJ
RjQ0Qzc5RkYyMEY5RTg3MTAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5UZXN0cy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEM3OUZFMjBGOUU4
NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gKi87IH07CisJCUY0NEM3QTAw
MjBGOUVFQkYwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0luLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Qzc5RkIyMEY5RTUwQzAwMTQ0
NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gKi87IH07CisJCUY0NEM3QTA1MjBGQUFF
M0MwMDE0NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0QzdBMDQyMEZBQUUz
MjAwMTQ0NzhDIC8qIHRleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbCAqLzsgfTsKIAkJRjQ0
RDA2NDUxRjM5NUMyNjAwMUEwRTI5IC8qIGVkaXRvci1zdGF0ZS10ZXN0LWhhcm5lc3MuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRE
MDY0NDFGMzk1QzBEMDAxQTBFMjkgLyogZWRpdG9yLXN0YXRlLXRlc3QtaGFybmVzcy5odG1sICov
OyB9OwogCQlGNDREMDY0NzFGMzk2MjdBMDAxQTBFMjkgLyogRWRpdG9yU3RhdGVUZXN0cy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEQwNjQ2MUYz
OTVDNEQwMDFBMEUyOSAvKiBFZGl0b3JTdGF0ZVRlc3RzLm1tICovOyB9OwogCQlGNDREMDY0QTFG
Mzk2MkYyMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0RDA2NDkxRjM5NjJFMzAwMUEwRTI5IC8q
IEVkaXRpbmdUZXN0SGFybmVzcy5tbSAqLzsgfTsKQEAgLTg5OCw3ICs5MDEsNiBAQAogCQkJZHN0
UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7
CiAJCQlmaWxlcyA9ICgKLQkJCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2ltcGxlU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtMy5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCTFBOUU1MkM5MTNFNjVFRjQwMDY5MTdGNSAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJMzc5MDI4QjkxNEZBQzI0QzAwN0U2QjQzIC8qIGFjY2VwdHNG
aXJzdE1vdXNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUMyQjgxODcxQzg5MjVB
MDAwQTU1MjlGIC8qIEFoZW0udHRmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTEyNSw2ICsx
MTI3LDcgQEAKIAkJCQlCQzkwOTc4NDEyNTU3MUNGMDAwODM3NTYgLyogc2ltcGxlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTFFNUM3MDIxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBs
ZTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MUU1QzcwMzE5MTlDM0IyMDBEOEIz
RTEgLyogc2ltcGxlMy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTQ2QUU1QTM3MjBG
OTA2NkQwMEUwODczRSAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy0zLnNxbGl0
ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8q
IHNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJQzAxQTIzRjIxMjY2MTU2NzAwQzlFRDU1IC8qIHNwYWNlYmFyLXNjcm9sbGlu
Zy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0
RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKQEAgLTExMzgsNiArMTE0MSw3IEBACiAJCQkJNTI0QkJDQTExOUUzMEM3NzAwMkYx
QUYxIC8qIHRlc3QubXA0IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTdBRTlFNTA5MUFFNUFF
OEIwMENGODc0QiAvKiB0ZXN0LnBkZiBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkyRTk4OTYx
NTFEOEYwOTM4MDA3Mzk4OTIgLyogdGV4dC1hbmQtcGFzc3dvcmQtaW5wdXRzLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCisJCQkJRjQ0QzdBMDUyMEZBQUUzQzAwMTQ0NzhDIC8qIHRleHQtd2l0
aC1kZWZlcnJlZC1zY3JpcHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlB
QTFFRjQ2OTZCMDA4M0ZBMDggLyogdGV4dGFyZWEtdG8taW5wdXQuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlGNDQ1MUM3NjFFQjhGRDg5MDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1j
b250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDNTQwRjc4NDE1
MkU1QTlBMDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LApAQCAtMTk3Niw2ICsxOTgwLDEwIEBACiAJCUY0M0UzQkJFMjBEQURBMUUwMEE0RTdFRCAvKiBX
S1Njcm9sbFZpZXdUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU2Nyb2xsVmlld1Rl
c3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDNFM0JDMDIwREFEQjgwMDBB
NEU3RUQgLyogZml4ZWQtbmF2LWJhci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImZpeGVkLW5hdi1iYXIuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDUxQzc1MUVCOEZEN0MwMDIwQzVE
QSAvKiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gInR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3OEMgLyogUGFyc2Vy
WWllbGRUb2tlblBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhcnNlcllpZWxkVG9r
ZW5QbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NEM3OUZEMjBGOUU4
NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFy
c2VyWWllbGRUb2tlblRlc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NEM3
OUZFMjBGOUU4NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0NEM3QTA0MjBGQUFFMzIwMDE0NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJy
ZWQtc2NyaXB0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidGV4dC13aXRoLWRl
ZmVycmVkLXNjcmlwdC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0RDA2
NDQxRjM5NUMwRDAwMUEwRTI5IC8qIGVkaXRvci1zdGF0ZS10ZXN0LWhhcm5lc3MuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJlZGl0b3Itc3RhdGUtdGVzdC1oYXJuZXNzLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDREMDY0NjFGMzk1QzREMDAxQTBFMjkg
LyogRWRpdG9yU3RhdGVUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEVkaXRvclN0YXRlVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0NEQwNjQ4MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjc0LDYgKzIyODIsOSBAQAogCQkJCTM3QTIyQUE1MURD
QUEyNzIwMEFGQkZDNCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzQWZ0ZXJDcmFz
aC5tbSAqLywKIAkJCQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyogT3BlbkFuZENsb3NlV2lu
ZG93Lm1tICovLAogCQkJCUNFQkNBMTJFMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeS5tbSAqLywKKwkJCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3OEMgLyog
UGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSAqLywKKwkJCQlGNDRDNzlGRDIwRjlFODcxMDAxNDQ3
OEMgLyogUGFyc2VyWWllbGRUb2tlblRlc3RzLmggKi8sCisJCQkJRjQ0Qzc5RkUyMEY5RTg3MTAw
MTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5UZXN0cy5tbSAqLywKIAkJCQk5QkNCN0MyNjIwMTMw
NjAwMDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tICovLAogCQkJCTlCRENDRDg1MUY3RDBCMDcwMDAw
OUExOCAvKiBQYXN0ZUltYWdlLm1tICovLAogCQkJCUY0NTdBOUI2MjAyRDVDREMwMEY3RTlENSAv
KiBQYXN0ZU1peGVkQ29udGVudC5tbSAqLywKQEAgLTI2NDMsNiArMjY1NCw3IEBACiAJCQkJOUJE
NkQzOUYxRjdCMjAyMDAwQkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tNDAwcHguZ2lmICov
LAogCQkJCTlCRDZEMzlFMUY3QjIwMUUwMEJENDk2MiAvKiBzdW5zZXQtaW4tY3VwZXJ0aW5vLTYw
MHB4LmpwZyAqLywKIAkJCQkyRTk4OTYxNDFEOEYwOTJCMDA3Mzk4OTIgLyogdGV4dC1hbmQtcGFz
c3dvcmQtaW5wdXRzLmh0bWwgKi8sCisJCQkJRjQ0QzdBMDQyMEZBQUUzMjAwMTQ0NzhDIC8qIHRl
eHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbCAqLywKIAkJCQlGNDFBQjk5NTFFRjQ2OTJDMDA4
M0ZBMDggLyogdGV4dGFyZWEtdG8taW5wdXQuaHRtbCAqLywKIAkJCQlGNDQ1MUM3NTFFQjhGRDdD
MDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKIAkJCQk1
MTcxNEVCMjFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRt
bCAqLywKQEAgLTM3NTksNiArMzc3MSw3IEBACiAJCQkJN0NDRTdFQzcxQTQxMUE3RTAwNDQ3QzRD
IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RjA5MUE0MTFBRTYwMDQ0N0M0QyAvKiBQYXJlbnRGcmFtZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzRTA1MTFEMEE2NDE4MDBGRUJDRjMgLyogUGFyc2VkQ29udGVudFJh
bmdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY0NEM3OUZGMjBGOUU4NzEwMDE0NDc4QyAvKiBQ
YXJzZXJZaWVsZFRva2VuVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQTFBNDEx
QUU2MDA0NDdDNEMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk5QkNCN0MyODIwMTMwNjAwMDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOUJEQ0NEODcxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gaW4gU291
cmNlcyAqLywKQEAgLTM5NjYsNiArMzk3OSw3IEBACiAJCQkJNTE4RUU1MTkyMEE3OENFNTAwRTAy
NEYzIC8qIERvdWJsZURlZmVyc0xvYWRpbmdQbHVnaW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1
Q0I1QjNDMjFGRkM1NUNGMDBDMjdCQjAgLyogRnJhbWVIYW5kbGVTZXJpYWxpemF0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNzlDNUQ0MzEyMDlENzY4MzAwRjFFN0NBIC8qIEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZUlzVGV4dEZpZWxkLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0QzdBMDAy
MEY5RUVCRjAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gaW4gU291cmNlcyAq
LywKIAkJCQlBMTNFQkJBQjFCODc0MzQ2MDAwOTcxMTAgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNEY4MUNGMUJERkZENTMwMDRFNjcyRSAvKiBSZW1v
dGVPYmplY3RSZWdpc3RyeVBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExMkREQzAyMUU4
MzdDMjQwMENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQbHVnSW4ubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWZlMTk4
N2E3NDJmNjQ2MjViZmFjZWZhMGE5YjA5NGU0M2JiN2E3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuUGx1Z0lu
Lm1tCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
CisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiUGFyc2VyWWllbGRUb2tlblRlc3RzLmgi
CisjaW1wb3J0IDxXZWJLaXQvV0tET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
UHJvY2Vzc1BsdWdJbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nl
c3NQbHVnSW5Mb2FkRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RJ
bnRlcmZhY2UuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oPgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIFBhcnNlcllpZWxkVG9rZW5Q
bHVnSW4gOiBOU09iamVjdCA8V0tXZWJQcm9jZXNzUGx1Z0luLCBXS1dlYlByb2Nlc3NQbHVnSW5M
b2FkRGVsZWdhdGUsIFBhcnNlcllpZWxkVG9rZW5UZXN0QnVuZGxlPgorQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gUGFyc2VyWWllbGRUb2tlblBsdWdJbiB7CisgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PE5TT2JqZWN0ICo+PiBfcGFyc2VyWWllbGRUb2tlbnM7CisgICAgUmV0YWluUHRyPGlk
PFBhcnNlcllpZWxkVG9rZW5UZXN0UnVubmVyPj4gX3Rlc3RSdW5uZXI7CisgICAgUmV0YWluUHRy
PFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcj4gX2NvbnRyb2xsZXI7
CisgICAgQk9PTCBfbG9hZENvbW1pdHRlZDsKKyAgICBOU1VJbnRlZ2VyIF9udW1iZXJPZlRva2Vu
c1RvVGFrZUFmdGVyQ29taXR0aW5nTG9hZDsKK30KKworLSAodm9pZCl0YWtlRG9jdW1lbnRQYXJz
ZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWQKK3sKKyAgICBpZiAoX2xvYWRDb21taXR0ZWQpCisg
ICAgICAgIFtfcGFyc2VyWWllbGRUb2tlbnMgYWRkT2JqZWN0OltfY29udHJvbGxlciBtYWluRnJh
bWVEb2N1bWVudF0ucGFyc2VyWWllbGRUb2tlbl07CisgICAgZWxzZQorICAgICAgICArK19udW1i
ZXJPZlRva2Vuc1RvVGFrZUFmdGVyQ29taXR0aW5nTG9hZDsKK30KKworLSAodm9pZClyZWxlYXNl
RG9jdW1lbnRQYXJzZXJUb2tlbgoreworICAgIGlmIChfbG9hZENvbW1pdHRlZCkKKyAgICAgICAg
W19wYXJzZXJZaWVsZFRva2VucyByZW1vdmVPYmplY3RBdEluZGV4OjBdOworICAgIGVsc2UKKyAg
ICAgICAgLS1fbnVtYmVyT2ZUb2tlbnNUb1Rha2VBZnRlckNvbWl0dGluZ0xvYWQ7Cit9CisKKy0g
KHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBkaWRDb21taXRM
b2FkRm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUKK3sKKyAgICBfbG9h
ZENvbW1pdHRlZCA9IFlFUzsKKyAgICB3aGlsZSAoX251bWJlck9mVG9rZW5zVG9UYWtlQWZ0ZXJD
b21pdHRpbmdMb2FkKSB7CisgICAgICAgIFtzZWxmIHRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0
ZXJDb21taXR0aW5nTG9hZF07CisgICAgICAgIC0tX251bWJlck9mVG9rZW5zVG9UYWtlQWZ0ZXJD
b21pdHRpbmdMb2FkOworICAgIH0KK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luOihXS1dl
YlByb2Nlc3NQbHVnSW5Db250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciBkaWRDcmVhdGVCcm93
c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlciAqKWJyb3dzZXJDb250ZXh0Q29udHJvbGxlcgoreworICAgIF9wYXJzZXJZaWVsZFRv
a2VucyA9IGFkb3B0TlMoW05TTXV0YWJsZUFycmF5IG5ld10pOworICAgIF9jb250cm9sbGVyID0g
YnJvd3NlckNvbnRleHRDb250cm9sbGVyOworICAgIGJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5s
b2FkRGVsZWdhdGUgPSBzZWxmOworICAgIFticm93c2VyQ29udGV4dENvbnRyb2xsZXIuX3JlbW90
ZU9iamVjdFJlZ2lzdHJ5IHJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6c2VsZiBpbnRlcmZhY2U6W19X
S1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6
QHByb3RvY29sKFBhcnNlcllpZWxkVG9rZW5UZXN0QnVuZGxlKV1dOworICAgIF90ZXN0UnVubmVy
ID0gW2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlci5fcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVtb3Rl
T2JqZWN0UHJveHlXaXRoSW50ZXJmYWNlOltfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVtb3Rl
T2JqZWN0SW50ZXJmYWNlV2l0aFByb3RvY29sOkBwcm90b2NvbChQYXJzZXJZaWVsZFRva2VuVGVz
dFJ1bm5lcildXTsKK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIqKWNv
bnRyb2xsZXIgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJ
bkZyYW1lICopZnJhbWUKK3sKKyAgICBbX3Rlc3RSdW5uZXIgZGlkRmluaXNoRG9jdW1lbnRMb2Fk
XTsKK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
OihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIqKWNvbnRyb2xsZXIg
ZGlkRmluaXNoTG9hZEZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lCit7
CisgICAgW190ZXN0UnVubmVyIGRpZEZpbmlzaExvYWRdOworfQorCitAZW5kCisKKyNlbmRpZiAv
LyBXS19BUElfRU5BQkxFRAorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5UZXN0cy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuVGVzdHMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YTY2ODQzYTY3ZmFhM2ZkODNiMTI5NjRmYWMyZjRjZmE3YmM1ZDFmCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2Vu
VGVzdHMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK0Bw
cm90b2NvbCBQYXJzZXJZaWVsZFRva2VuVGVzdFJ1bm5lciA8TlNPYmplY3Q+CistICh2b2lkKWRp
ZEZpbmlzaERvY3VtZW50TG9hZDsKKy0gKHZvaWQpZGlkRmluaXNoTG9hZDsKK0BlbmQKKworQHBy
b3RvY29sIFBhcnNlcllpZWxkVG9rZW5UZXN0QnVuZGxlIDxOU09iamVjdD4KKy0gKHZvaWQpdGFr
ZURvY3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2FkOworLSAodm9pZClyZWxlYXNl
RG9jdW1lbnRQYXJzZXJUb2tlbjsKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblRlc3RzLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuVGVzdHMubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTVmNDEyMTQ2MTY4NTlkMTE3ZGQ3M2Q2NGQ0ZGM3YmExMTc4YjU4NgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2Vy
WWllbGRUb2tlblRlc3RzLm1tCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2ltcG9ydCAiUGFyc2VyWWllbGRUb2tlblRlc3RzLmgiCisKKyNpZiBX
S19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAi
VGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5o
IgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvU2Vj
b25kcy5oPgorCitAaW50ZXJmYWNlIFBhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyA6IFRlc3RX
S1dlYlZpZXcgPFBhcnNlcllpZWxkVG9rZW5UZXN0UnVubmVyPgorQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBCT09MIGZpbmlzaGVkRG9jdW1lbnRMb2FkOworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIGZpbmlzaGVkTG9hZDsKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFBhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyB7CisgICAgUmV0YWluUHRyPGlkIDxQYXJz
ZXJZaWVsZFRva2VuVGVzdEJ1bmRsZT4+IF9idW5kbGU7Cit9CisKKysgKFJldGFpblB0cjxQYXJz
ZXJZaWVsZFRva2VuVGVzdFdlYlZpZXc+KXdlYlZpZXcKK3sKKyAgICBhdXRvICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiUGFyc2VyWWllbGRUb2tlblBsdWdJbiJdOworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uXSk7CisgICAgW1t3ZWJWaWV3IF9yZW1vdGVPYmplY3RSZWdpc3RyeV0gcmVnaXN0ZXJF
eHBvcnRlZE9iamVjdDp3ZWJWaWV3LmdldCgpIGludGVyZmFjZTpbX1dLUmVtb3RlT2JqZWN0SW50
ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woUGFyc2Vy
WWllbGRUb2tlblRlc3RSdW5uZXIpXV07CisgICAgd2ViVmlldy0+X2J1bmRsZSA9IFtbd2ViVmll
dyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlbW90ZU9iamVjdFByb3h5V2l0aEludGVyZmFjZTpb
X1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2Nv
bDpAcHJvdG9jb2woUGFyc2VyWWllbGRUb2tlblRlc3RCdW5kbGUpXV07CisgICAgcmV0dXJuIHdl
YlZpZXc7Cit9CisKKy0gKGlkIDxQYXJzZXJZaWVsZFRva2VuVGVzdEJ1bmRsZT4pYnVuZGxlCit7
CisgICAgcmV0dXJuIF9idW5kbGUuZ2V0KCk7Cit9CisKKy0gKHZvaWQpZGlkRmluaXNoRG9jdW1l
bnRMb2FkCit7CisgICAgX2ZpbmlzaGVkRG9jdW1lbnRMb2FkID0gWUVTOworfQorCistICh2b2lk
KWRpZEZpbmlzaExvYWQKK3sKKyAgICBfZmluaXNoZWRMb2FkID0gWUVTOworfQorCitAZW5kCisK
K3N0YXRpYyB2b2lkIHdhaXRGb3JEZWxheShTZWNvbmRzIGRlbGF5KQoreworICAgIF9fYmxvY2sg
Ym9vbCBkb25lID0gZmFsc2U7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQ
QVRDSF9USU1FX05PVywgZGVsYXkubmFub3NlY29uZHMoKSksIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH0pOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoUGFyc2VyWWllbGRUb2tlblRlc3RzLCBQ
cmV2ZW50RG9jdW1lbnRMb2FkQnlUYWtpbmdQYXJzZXJZaWVsZFRva2VuKQoreworICAgIGF1dG8g
d2ViVmlldyA9IFtQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgd2ViVmlld107CisgICAgW1t3
ZWJWaWV3IGJ1bmRsZV0gdGFrZURvY3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2Fk
XTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOworCisgICAgLy8g
R2l2ZSB0aGUgd2ViIHZpZXcgYSBjaGFuY2UgdG8gbG9hZCB0aGUgcGFnZS4gSW4gdGhlIGNhc2Ug
d2hlcmUgdGhlIHRva2VuIGZhaWxzIHRvIHlpZWxkIGRvY3VtZW50IHBhcnNpbmcsIGl0J3MgdmVy
eSBsaWtlbHkgdGhhdAorICAgIC8vIHRoZSBkb2N1bWVudCB3aWxsIGZpbmlzaCBsb2FkaW5nLCBh
bmQgd2UnbGwgZmFpbCB0aGUgdGVzdCBleHBlY3RhdGlvbnMgYmVsb3cuIEluIHRoZSB1bmxpa2Vs
eSBldmVudCB3aGVyZSBwYWdlIGxvYWQgbWF5IHRha2UKKyAgICAvLyBsb25nZXIgdGhhbiAxIHNl
Y29uZCwgdGhpcyB0ZXN0IHNob3VsZCBzdGlsbCBwYXNzLgorICAgIHdhaXRGb3JEZWxheSgxX3Mp
OworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBmaW5pc2hlZERvY3VtZW50TG9hZF0pOworICAg
IEVYUEVDVF9GQUxTRShbd2ViVmlldyBmaW5pc2hlZExvYWRdKTsKKworICAgIC8vIE5vdywgYWxs
b3cgZG9jdW1lbnQgcGFyc2luZyB0byBjb250aW51ZSwgYW5kIHdhaXQgZm9yIHRoZSBwYWdlIHRv
IGZpbmlzaCBsb2FkaW5nLgorICAgIFtbd2ViVmlldyBidW5kbGVdIHJlbGVhc2VEb2N1bWVudFBh
cnNlclRva2VuXTsKKworICAgIHdoaWxlICghW3dlYlZpZXcgZmluaXNoZWRMb2FkXSB8fCAhW3dl
YlZpZXcgZmluaXNoZWREb2N1bWVudExvYWRdKQorICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50
UnVuTG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0RhdGUg
ZGlzdGFudFBhc3RdXTsKK30KKworVEVTVChQYXJzZXJZaWVsZFRva2VuVGVzdHMsIFRha2VNdWx0
aXBsZVBhcnNlcllpZWxkVG9rZW5zKQoreworICAgIGF1dG8gd2ViVmlldyA9IFtQYXJzZXJZaWVs
ZFRva2VuVGVzdFdlYlZpZXcgd2ViVmlld107CisgICAgW1t3ZWJWaWV3IGJ1bmRsZV0gdGFrZURv
Y3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2FkXTsKKyAgICBbd2ViVmlldyBsb2Fk
VGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOworCisgICAgd2FpdEZvckRlbGF5KDAuNV9zKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgZmluaXNoZWREb2N1bWVudExvYWRdKTsKKyAgICBFWFBF
Q1RfRkFMU0UoW3dlYlZpZXcgZmluaXNoZWRMb2FkXSk7CisKKyAgICBbW3dlYlZpZXcgYnVuZGxl
XSB0YWtlRG9jdW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdOworICAgIFtbd2Vi
VmlldyBidW5kbGVdIHJlbGVhc2VEb2N1bWVudFBhcnNlclRva2VuXTsKKworICAgIHdhaXRGb3JE
ZWxheSgwLjVfcyk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGZpbmlzaGVkRG9jdW1lbnRM
b2FkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGZpbmlzaGVkTG9hZF0pOworCisgICAg
W1t3ZWJWaWV3IGJ1bmRsZV0gcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW5dOworCisgICAgd2hp
bGUgKCFbd2ViVmlldyBmaW5pc2hlZExvYWRdIHx8ICFbd2ViVmlldyBmaW5pc2hlZERvY3VtZW50
TG9hZF0pCisgICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5Nb2RlOk5TRGVm
YXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBkaXN0YW50UGFzdF1dOworfQorCitU
RVNUKFBhcnNlcllpZWxkVG9rZW5UZXN0cywgRGVmZXJyZWRTY3JpcHRFeGVjdXRlc0JlZm9yZURv
Y3VtZW50TG9hZFdoZW5UYWtpbmdQYXJzZXJZaWVsZFRva2VuKQoreworICAgIGF1dG8gd2ViVmll
dyA9IFtQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgd2ViVmlld107CisKKyAgICBbW3dlYlZp
ZXcgYnVuZGxlXSB0YWtlRG9jdW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdOwor
ICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAidGV4dC13aXRoLWRlZmVycmVkLXNjcmlw
dCJdOworCisgICAgd2FpdEZvckRlbGF5KDAuNV9zKTsKKyAgICBbW3dlYlZpZXcgYnVuZGxlXSBy
ZWxlYXNlRG9jdW1lbnRQYXJzZXJUb2tlbl07CisKKyAgICB3aGlsZSAoIVt3ZWJWaWV3IGZpbmlz
aGVkTG9hZF0gfHwgIVt3ZWJWaWV3IGZpbmlzaGVkRG9jdW1lbnRMb2FkXSkKKyAgICAgICAgW1tO
U1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgYmVm
b3JlRGF0ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XV07CisKKyAgICAvLyBWZXJpZnkgdGhhdCBzeW5j
aHJvbm91cyBzY3JpcHQgaXMgZXhlY3V0ZWQgYmVmb3JlIGRlZmVycmVkIHNjcmlwdCBhbmQgZGVm
ZXJyZWQgc2NyaXB0IGlzIHJ1biBiZWZvcmUgZG9jdW1lbnQgbG9hZC4KKyAgICBOU0FycmF5PE5T
U3RyaW5nICo+ICpldmVudE1lc3NhZ2VzID0gW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAIndpbmRvdy5ldmVudE1lc3NhZ2VzIl07CisgICAgRVhQRUNUX0VRKGV2ZW50TWVz
c2FnZXMuY291bnQsIDhVKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIlJ1bm5pbmcgc3luYyIsIGV2
ZW50TWVzc2FnZXNbMF0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiTG9hZGVkIHNjcmlwdDogc3lu
YyIsIGV2ZW50TWVzc2FnZXNbMV0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiUnVubmluZyBkZWZl
ci1iZWZvcmUiLCBldmVudE1lc3NhZ2VzWzJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkxvYWRl
ZCBzY3JpcHQ6IGRlZmVyLWJlZm9yZSIsIGV2ZW50TWVzc2FnZXNbM10pOworICAgIEVYUEVDVF9X
S19TVFJFUSgiUnVubmluZyBkZWZlci1hZnRlciIsIGV2ZW50TWVzc2FnZXNbNF0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgiTG9hZGVkIHNjcmlwdDogZGVmZXItYWZ0ZXIiLCBldmVudE1lc3NhZ2Vz
WzVdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmciLCBl
dmVudE1lc3NhZ2VzWzZdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkZpbmlzaGVkIGxvYWRpbmci
LCBldmVudE1lc3NhZ2VzWzddKTsKK30KKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RleHQtd2l0aC1k
ZWZlcnJlZC1zY3JpcHQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvdGV4dC13aXRoLWRlZmVycmVkLXNjcmlwdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4OTQwYjMwNDEw
MjdkNGI2MjYxZTk0OTNkNjE1MTBjYzE1ZjVjYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQu
aHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cisg
ICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5p
dGlhbC1zY2FsZT0xIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBldmVudE1lc3NhZ2VzID0gW10K
KworICAgICAgICBmdW5jdGlvbiBzY3JpcHRMb2FkZWQoc2NyaXB0KQorICAgICAgICB7CisgICAg
ICAgICAgICBldmVudE1lc3NhZ2VzLnB1c2goYExvYWRlZCBzY3JpcHQ6ICR7c2NyaXB0LmlkfWAp
OworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c2NyaXB0
PgorICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwg
KCkgPT4gZXZlbnRNZXNzYWdlcy5wdXNoKCJEb2N1bWVudCBmaW5pc2hlZCBsb2FkaW5nIikpOwor
ICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgKCkgPT4gZXZlbnRNZXNzYWdlcy5wdXNo
KCJGaW5pc2hlZCBsb2FkaW5nIikpOworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgaWQ9ImRl
ZmVyLWJlZm9yZSIgb25sb2FkPSJzY3JpcHRMb2FkZWQodGhpcykiIGRlZmVyIHNyYz0iZGF0YTp0
ZXh0L2phdmFzY3JpcHQsZXZlbnRNZXNzYWdlcy5wdXNoKCdSdW5uaW5nIGRlZmVyLWJlZm9yZScp
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IGlkPSJzeW5jIiBvbmxvYWQ9InNjcmlwdExvYWRlZCh0
aGlzKSIgc3JjPSJkYXRhOnRleHQvamF2YXNjcmlwdCxldmVudE1lc3NhZ2VzLnB1c2goJ1J1bm5p
bmcgc3luYycpIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IGlkPSJkZWZlci1hZnRlciIgb25sb2Fk
PSJzY3JpcHRMb2FkZWQodGhpcykiIGRlZmVyIHNyYz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsZXZl
bnRNZXNzYWdlcy5wdXNoKCdSdW5uaW5nIGRlZmVyLWFmdGVyJykiPjwvc2NyaXB0PgorICAgIDxw
PkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmci
PmNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdDwvYT4sIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBp
bmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiA8YSBocmVmPSJodHRw
czovL3dlYmtpdC5vcmciPlRlbXBvciBpZCBldSBuaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMg
dml0YWUuPC9hPiBTZWQgdGVtcHVzIHVybmEgZXQgcGhhcmV0cmEgcGhhcmV0cmEgbWFzc2EgbWFz
c2EuIFZpdGFlIHRvcnRvciBjb25kaW1lbnR1bSBsYWNpbmlhIHF1aXMgdmVsIGVyb3MgZG9uZWMg
YWMuIDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZyI+VWxsYW1jb3JwZXIgdmVsaXQgc2VkIHVs
bGFtY29ycGVyIG1vcmJpPC9hPiB0aW5jaWR1bnQgb3JuYXJlIG1hc3NhIGVnZXQuIFNpdCBhbWV0
IGN1cnN1cyBzaXQgYW1ldCBkaWN0dW0uIElkIGV1IG5pc2wgbnVuYyBtaSBpcHN1bSBmYXVjaWJ1
cyB2aXRhZSBhbGlxdWV0IG5lYy4gU3VzY2lwaXQgdGVsbHVzIG1hdXJpcyBhIGRpYW0gbWFlY2Vu
YXMgc2VkLiBDb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIDxh
IGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZyI+TmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1
cnBpcyBlZ2VzdGFzIGludGVnZXIuPC9hPiBRdWFtIGxhY3VzIHN1c3BlbmRpc3NlIGZhdWNpYnVz
IGludGVyZHVtIHBvc3VlcmUgbG9yZW0gaXBzdW0uIFNlbSBpbnRlZ2VyIHZpdGFlIGp1c3RvIGVn
ZXQgbWFnbmEgZmVybWVudHVtIGlhY3VsaXMuIEEgY29uZGltZW50dW0gdml0YWUgc2FwaWVuIHBl
bGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUuIFZhcml1cyBkdWlzIGF0IGNvbnNl
Y3RldHVyIGxvcmVtLiBJcHN1bSBmYXVjaWJ1cyB2aXRhZSBhbGlxdWV0IG5lYyB1bGxhbWNvcnBl
ciBzaXQuPC9wPgorICAgIDxwPlNlZCBmYXVjaWJ1cyA8YSBocmVmPSJodHRwczovL3dlYmtpdC5v
cmciPnR1cnBpcyBpbiBldSBtaSBiaWJlbmR1bTwvYT4uIERvbmVjIGVuaW0gZGlhbSB2dWxwdXRh
dGUgdXQgcGhhcmV0cmEgc2l0IGFtZXQgYWxpcXVhbS4gPGltZyBzcmM9ImFwcGxlLmdpZiI+PC9p
bWc+IENvbnNlcXVhdCBpZCBwb3J0YSBuaWJoIHZlbmVuYXRpcyBjcmFzIHNlZCBmZWxpcyBlZ2V0
IHZlbGl0LiBBdCBsZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzIGlk
IGludGVyZHVtIHZlbGl0LiBJZCBjb25zZWN0ZXR1ciBwdXJ1cyB1dCBmYXVjaWJ1cyBwdWx2aW5h
ciBlbGVtZW50dW0gaW50ZWdlciBlbmltLiBJcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1
ciBhZGlwaXNjaW5nIGVsaXQgdXQgYWxpcXVhbS4gQXQgdGVsbHVzIGF0IHVybmEgY29uZGltZW50
dW0gbWF0dGlzLiBGYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0gaW50ZWdlciBlbmltLiBBdCBl
bGVtZW50dW0gZXUgZmFjaWxpc2lzIHNlZCBvZGlvIG1vcmJpLiBGYW1lcyBhYyB0dXJwaXMgZWdl
c3RhcyBpbnRlZ2VyIGVnZXQgYWxpcXVldC4gQ29uc2VxdWF0IGludGVyZHVtIHZhcml1cyBzaXQg
YW1ldCBtYXR0aXMgdnVscHV0YXRlIGVuaW0gbnVsbGEuIExlY3R1cyBzaXQgYW1ldCBlc3QgcGxh
Y2VyYXQgaW4gZWdlc3Rhcy4gRG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBl
bGl0IHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaS4gVXJuYSBldCBwaGFyZXRyYSBwaGFyZXRy
YSBtYXNzYSBtYXNzYSB1bHRyaWNpZXMgbWkuPC9wPgorICAgIDxwPlNlZCBsZWN0dXMgdmVzdGli
dWx1bSBtYXR0aXMgdWxsYW1jb3JwZXIgdmVsaXQgc2VkIHVsbGFtY29ycGVyLiA8YSBocmVmPSJo
dHRwczovL3dlYmtpdC5vcmciPlF1YW0gbGFjdXMgc3VzcGVuZGlzc2U8L2E+IGZhdWNpYnVzIGlu
dGVyZHVtIHBvc3VlcmUgbG9yZW0uIFNhZ2l0dGlzIHZpdGFlIGV0IGxlbyBkdWlzIHV0IGRpYW0u
IFR1cnBpcyBtYXNzYSBzZWQgZWxlbWVudHVtIHRlbXB1cy4gQWxpcXVhbSBzZW0gZnJpbmdpbGxh
IHV0IG1vcmJpLiA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPkZyaW5naWxsYSBlc3QgdWxs
YW1jb3JwZXI8L2E+IGVnZXQgbnVsbGEgZmFjaWxpc2kgZXRpYW0gZGlnbmlzc2ltLiBJZCB2ZWxp
dCB1dCB0b3J0b3IgcHJldGl1bS4gQmliZW5kdW0gYXQgdmFyaXVzIHZlbCBwaGFyZXRyYSB2ZWwg
dHVycGlzIG51bmMuIFNpdCBhbWV0IGFsaXF1YW0gaWQgZGlhbSBtYWVjZW5hcy4gTG9ib3J0aXMg
ZmV1Z2lhdCB2aXZhbXVzIGF0IGF1Z3VlIDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZyI+ZWdl
dCBhcmN1IGRpY3R1bTwvYT4gdmFyaXVzIGR1aXMuIExpYmVybyBqdXN0byBsYW9yZWV0IHNpdCBh
bWV0LiBFZ2VzdGFzIHRlbGx1cyBydXRydW0gdGVsbHVzIHBlbGxlbnRlc3F1ZSBldSB0aW5jaWR1
bnQgdG9ydG9yIGFsaXF1YW0uPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345113</attachid>
            <date>2018-07-16 12:59:25 -0700</date>
            <delta_ts>2018-07-16 13:02:07 -0700</delta_ts>
            <desc>Address feedback.</desc>
            <filename>bug-187682-20180716125924.patch</filename>
            <type>text/plain</type>
            <size>43817</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI4Mzc1NjVkY2MzMTdh
ZDg4NWRlZDBiYTEwMjkwZmI5YTFhNDI5MC4uZGQ0YTc1MzZjNGQ0ZjFjMDg5ZmRjYTQ1MWQ5YTNk
MTJjOWM2MzRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE4LTA3LTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkg
aG9vayB0byBhbGxvdyBjbGllbnRzIHRvIHlpZWxkIGRvY3VtZW50IHBhcnNpbmcgYW5kIHNjcmlw
dCBleGVjdXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NzY4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDIyMDc0NTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgYSBzaW5nbGUgd2Vi
IHByb2Nlc3MgZm9yIGJvdGggdGhlIFJlYWRlciBwYWdlIGFuZCBvcmlnaW5hbCB3ZWIgcGFnZSBv
biB3YXRjaE9TIGhhcyBtdWx0aXBsZSBiZW5lZml0cywKKyAgICAgICAgaW5jbHVkaW5nOiAoMSkg
YWxsb3dpbmcgdGhlIHVzZXIgdG8gYmFpbCBvdXQgb2YgUmVhZGVyIGFuZCB2aWV3IHRoZSBvcmln
aW5hbCB3ZWIgcGFnZSB3aXRob3V0IGhhdmluZyB0byBsb2FkIGl0CisgICAgICAgIGFnYWluLCBh
bmQgKDIpIGltcHJvdmluZyB0aGUgYnJpbmd1cCB0aW1lIG9mIHRoZSBSZWFkZXIgcGFnZSwgc2lu
Y2Ugc3VicmVzb3VyY2VzIGFyZSBhbHJlYWR5IGNhY2hlZCBpbiBwcm9jZXNzCisgICAgICAgIGFu
ZCB3ZSBkb24ndCBlYXQgdGhlIGFkZGl0aW9uYWwgY29zdCBvZiBhIHdlYiBwcm9jZXNzIGxhdW5j
aCBpZiBwcmV3YXJtaW5nIGZhaWxzLgorCisgICAgICAgIEhvd2V2ZXIsIHRoaXMgaGFzIHNvbWUg
ZHJhd2JhY2tzIGFzIHdlbGwsIG9uZSBvZiB3aGljaCBpcyB0aGF0IG1haW4gdGhyZWFkIHdvcmsg
YmVpbmcgZG9uZSBvbiBiZWhhbGYgb2YgdGhlCisgICAgICAgIG9yaWdpbmFsIHBhZ2UgbWF5IGNv
bnRlbmQgd2l0aCB3b3JrIGJlaW5nIGRvbmUgdG8gbG9hZCBhbmQgcmVuZGVyIHRoZSBSZWFkZXIg
cGFnZS4gVGhpcyBpcyBlc3BlY2lhbGx5IGJhZCB3aGVuCisgICAgICAgIHRoZSBwYWdlIGlzIGlu
IHRoZSBtaWRkbGUgb2YgZXhlY3V0aW5nIGhlYXZ5IHNjcmlwdCBhZnRlciBTYWZhcmkgaGFzIGFs
cmVhZHkgZGV0ZWN0ZWQgdGhhdCB0aGUgUmVhZGVyIHZlcnNpb24gb2YKKyAgICAgICAgdGhlIHBh
Z2UgaXMgYXZhaWxhYmxlLCBidXQgYmVmb3JlIGl0IGhhcyBmaW5pc2hlZCBsb2FkaW5nIHRoZSBS
ZWFkZXIgcGFnZS4gVGhlIHJlc3VsdCBpcyB0aGF0IHNjcmlwdCBvbiB0aGUKKyAgICAgICAgb3Jp
Z2luYWwgcGFnZSBtYXkgYmxvY2sgdGhlIGZpcnN0IHBhaW50IG9mIHRoZSBSZWFkZXIgcGFnZSAo
b24gTmV3IFlvcmsgVGltZXMgYXJ0aWNsZXMsIHRoaXMgb2Z0ZW4gbGVhZHMgdG8gYW4KKyAgICAg
ICAgYXBwYXJlbnQgcGFnZSBsb2FkIHRpbWUgb2YgMjUtMzUgc2Vjb25kcyBiZWZvcmUgdGhlIHVz
ZXIgc2VlcyBhbnl0aGluZyBiZXNpZGVzIGEgYmxhbmsgc2NyZWVuKS4KKworICAgICAgICBUbyBt
aXRpZ2F0ZSB0aGlzLCB3ZSBpbnRyb2R1Y2UgYSB3YXkgZm9yIGluamVjdGVkIGJ1bmRsZSBjbGll
bnRzIHRvIHlpZWxkIHBhcnNpbmcgYW5kIGFzeW5jIHNjcmlwdCBleGVjdXRpb24gb24KKyAgICAg
ICAgYSBkb2N1bWVudC4gVGhpcyBjYXBhYmlsaXR5IGlzIHN1cmZhY2VkIGluIHRoZSBmb3JtIG9m
IGFuIG9wYXF1ZSB0b2tlbiB3aGljaCBjbGllbnRzIG1heSByZXF1ZXN0IGZyb20gYQorICAgICAg
ICBXS0RPTURvY3VtZW50LiBDb25zdHJ1Y3Rpb24gb2YgdGhlIHRva2VuIGNhdXNlcyB0aGUgZG9j
dW1lbnQgdG8gYmVnaW4geWllbGRpbmcgYW5kIGRlZmVyIGV4ZWN1dGlvbiBvZiBwcmV2aW91c2x5
CisgICAgICAgIHNjaGVkdWxlZCBzY3JpcHRzLCBvbmx5IGlmIHRoZXJlIHdlcmUgbm8gYWN0aXZl
IHRva2VucyBvbiB0aGUgZG9jdW1lbnQgYWxyZWFkeS4gU2ltaWxhcmx5LCBkZXN0cnVjdGlvbiBv
ZiBhbGwKKyAgICAgICAgYWN0aXZlIHRva2VucyBvbiB0aGUgZG9jdW1lbnQgY2F1c2VzIGl0IHRv
IHN0b3AgeWllbGRpbmcgYW5kIHJlc3VtZSBleGVjdXRpb24gb2Ygc2NyaXB0cyBpZiBuZWVkZWQu
CisKKyAgICAgICAgVGVzdHM6ICBQYXJzZXJZaWVsZFRva2VuVGVzdHMuUHJldmVudERvY3VtZW50
TG9hZEJ5VGFraW5nUGFyc2VyWWllbGRUb2tlbgorICAgICAgICAgICAgICAgIFBhcnNlcllpZWxk
VG9rZW5UZXN0cy5UYWtlTXVsdGlwbGVQYXJzZXJZaWVsZFRva2VucworICAgICAgICAgICAgICAg
IFBhcnNlcllpZWxkVG9rZW5UZXN0cy5EZWZlcnJlZFNjcmlwdEV4ZWN1dGVzQmVmb3JlRG9jdW1l
bnRMb2FkV2hlblRha2luZ1BhcnNlcllpZWxkVG9rZW4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRPcGVuKToKKworICAg
ICAgICBJZiB0aGUgcGFyc2VyIHlpZWxkIHRva2VuIHdhcyB0YWtlbiBiZWZvcmUgdGhlIGRvY3Vt
ZW50J3MgcGFyc2VyIHdhcyBjcmVhdGVkLCB0ZWxsIHRoZSBwYXJzZXIncyBzY2hlZHVsZXIgdG8K
KyAgICAgICAgc3RhcnQgeWllbGRpbmcgaW1tZWRpYXRlbHkgYWZ0ZXIgY3JlYXRpb24uCisKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpQYXJzZXJZaWVsZFRva2VuOjpQYXJzZXJZaWVsZFRv
a2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpQYXJzZXJZaWVsZFRva2VuOjp+UGFy
c2VyWWllbGRUb2tlbik6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKKyAgICAgICAgSW50
cm9kdWNlIGEgcGFyc2VyIHlpZWxkIGNvdW50IHRvIERvY3VtZW50OyBhcyBsb25nIGFzIHRoaXMg
Y291bnQgaXMgZ3JlYXRlciB0aGFuIDAsIHdlIGNvbnNpZGVyIHRoZSBEb2N1bWVudCB0bworICAg
ICAgICBoYXZlIGFjdGl2ZSB5aWVsZCB0b2tlbnMuIFdoZW4gY29uc3RydWN0aW5nIG9yIGRlc3Ry
b3lpbmcgYSBQYXJzZXJZaWVsZFRva2VuLCB3ZSBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCB0aGUK
KyAgICAgICAgcGFyc2VyIHlpZWxkIGNvdW50IChyZXNwZWN0aXZlbHkpLgorCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlUGFyc2VyWWllbGRUb2tlbik6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6aGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbiBjb25zdCk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFBhcnNl
cjo6ZGlkQmVnaW5ZaWVsZGluZ1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFBh
cnNlcjo6ZGlkRW5kWWllbGRpbmdQYXJzZXIpOgorCisgICAgICAgIEhvb2tzIGZvciBEb2N1bWVu
dCB0byB0ZWxsIGl0cyBwYXJzZXIgdGhhdCB3ZSd2ZSBzdGFydGVkIG9yIGZpbmlzaGVkIHlpZWxk
aW5nLiBUaGlzIHVwZGF0ZXMgYSBmbGFnIG9uIHRoZQorICAgICAgICBwYXJzZXIncyBzY2hlZHVs
ZXIgd2hpY2ggaXMgY29uc3VsdGVkIHdoZW4gd2UgZGV0ZXJtaW5lIHdoZXRoZXIgdG8geWllbGQg
YmVmb3JlIGEgcHVtcGluZyB0b2tlbiBvciBleGVjdXRpbmcKKyAgICAgICAgc2NyaXB0LgorCisg
ICAgICAgICogZG9tL1NjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRS
dW5uZXI6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiBkb20vU2NyaXB0UnVubmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRSdW5uZXI6OmRpZEJlZ2luWWllbGRpbmdQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0UnVubmVyOjpkaWRFbmRZaWVsZGluZ1BhcnNlcik6CisKKyAgICAgICAgSG9va3Mg
Zm9yIERvY3VtZW50IHRvIHRlbGwgaXRzIFNjcmlwdFJ1bm5lciB0aGF0IHdlJ3ZlIHN0YXJ0ZWQg
b3IgZmluaXNoZWQgeWllbGRpbmcuIFRoZXNlIHdyYXAgY2FsbHMgdG8gc3VzcGVuZAorICAgICAg
ICBhbmQgcmVzdW1lLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkQmVnaW5ZaWVs
ZGluZ1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZEVu
ZFlpZWxkaW5nUGFyc2VyKToKKworICAgICAgICBQbHVtYiB0byBkaWRCZWdpbi9kaWRFbmQgY2Fs
bHMgdG8gdGhlIEhUTUxQYXJzZXJTY2hlZHVsZXIuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VyU2No
ZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXJTY2hlZHVsZXI6OnNob3Vs
ZFlpZWxkQmVmb3JlRXhlY3V0aW5nU2NyaXB0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
UGFyc2VyU2NoZWR1bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVy
OjpzaG91bGRZaWVsZEJlZm9yZVRva2VuKToKKworICAgICAgICBDb25zdWx0IGEgZmxhZyB3aGVu
IGRldGVybWluaW5nIHdoZXRoZXIgdG8geWllbGQuIFRoaXMgZmxhZyBpcyBzZXQgdG8gdHJ1ZSBv
bmx5IHdoaWxlIHRoZSBkb2N1bWVudCBoYXMgYW4gYWN0aXZlCisgICAgICAgIHBhcnNlciB5aWVs
ZCB0b2tlbi4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6ZGlkQmVn
aW5ZaWVsZGluZ1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVy
OjpkaWRFbmRZaWVsZGluZ1BhcnNlcik6CisKKyAgICAgICAgV2hlbiB0aGUgRG9jdW1lbnQgYmVn
aW5zIHlpZWxkaW5nIGR1ZSB0byBhY3RpdmUgdG9rZW5zIG9yIGVuZHMgeWllbGRpbmcgYWZ0ZXIg
aXQgbG9zZXMgYWxsIG9mIGl0cyB5aWVsZCB0b2tlbnMsCisgICAgICAgIHVwZGF0ZSBhIGZsYWcg
b24gdGhlIHBhcnNlciBzY2hlZHVsZXIuCisKIDIwMTgtMDctMTQgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2hyaW5rIHNvbWUgc3R5bGUtcmVsYXRl
ZCBjbGFzc2VzIGFuZCBlbnVtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwOGE5ZjhmOWJkNzgzMDE2OWU2MzEwODEw
NDM2NjEzNGNjOWZhODYzLi5mZmY5ZGQxMTNhZjQ1ZjA4ZDhkN2VhYmJiNWI2ZjkzN2Y4ZmE4NTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTA3LTE2ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkgaG9vayB0byBhbGxv
dyBjbGllbnRzIHRvIHlpZWxkIGRvY3VtZW50IHBhcnNpbmcgYW5kIHNjcmlwdCBleGVjdXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzY4Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDIyMDc0NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGhvb2tzIHRvIFdLRG9jdW1lbnQgdG8gY3Jl
YXRlIGFuZCByZXR1cm4gYW4gaW50ZXJuYWwgV0tET01Eb2N1bWVudFBhcnNlcllpZWxkVG9rZW4g
b2JqZWN0LCB3aG9zZSBsaWZldGltZSBpcworICAgICAgICB0aWVkIHRvIGEgZG9jdW1lbnQgcGFy
c2VyIHlpZWxkIHRva2VuLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NRG9jdW1lbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbToKKyAgICAgICAgKC1bV0tET01Eb2N1bWVudFBh
cnNlcllpZWxkVG9rZW4gaW5pdFdpdGhEb2N1bWVudDpdKToKKyAgICAgICAgKC1bV0tET01Eb2N1
bWVudCBwYXJzZXJZaWVsZFRva2VuXSk6CisKIDIwMTgtMDctMTMgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBfZHJhd3NCYWNrZ3JvdW5kIHRvIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlOWY0ODIz
ZWFiYmZkYjU3MTY0MmVjNjlkNzMzM2JlYzYyMWY1YWFmLi40MGFiMGJmYjdlMzAwODA3ZjZmNWMz
ODE2ZTE0MzFkMmExN2Q3YTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI2ODYsNiAr
MjY4NiwxMCBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdE9wZW4oKQogCiAgICAgY2FuY2VsUGFy
c2luZygpOwogICAgIG1fcGFyc2VyID0gY3JlYXRlUGFyc2VyKCk7CisKKyAgICBpZiAoaGFzQWN0
aXZlUGFyc2VyWWllbGRUb2tlbigpKQorICAgICAgICBtX3BhcnNlci0+ZGlkQmVnaW5ZaWVsZGlu
Z1BhcnNlcigpOworCiAgICAgc2V0UGFyc2luZyh0cnVlKTsKICAgICBzZXRSZWFkeVN0YXRlKExv
YWRpbmcpOwogfQpAQCAtNjg5Nyw2ICs2OTAxLDMxIEBAIHZvaWQgRG9jdW1lbnQ6OmRlY3JlbWVu
dEFjdGl2ZVBhcnNlckNvdW50KCkKICAgICBmcmFtZSgpLT5sb2FkZXIoKS5jaGVja0xvYWRDb21w
bGV0ZSgpOwogfQogCitEb2N1bWVudDo6UGFyc2VyWWllbGRUb2tlbjo6UGFyc2VyWWllbGRUb2tl
bihEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3Vt
ZW50KSkKK3sKKyAgICBpZiAoKytkb2N1bWVudC5tX3BhcnNlcllpZWxkVG9rZW5Db3VudCAhPSAx
KQorICAgICAgICByZXR1cm47CisKKyAgICBkb2N1bWVudC5zY3JpcHRSdW5uZXIoKS0+ZGlkQmVn
aW5ZaWVsZGluZ1BhcnNlcigpOworICAgIGlmIChhdXRvKiBwYXJzZXIgPSBkb2N1bWVudC5wYXJz
ZXIoKSkKKyAgICAgICAgcGFyc2VyLT5kaWRCZWdpbllpZWxkaW5nUGFyc2VyKCk7Cit9CisKK0Rv
Y3VtZW50OjpQYXJzZXJZaWVsZFRva2VuOjp+UGFyc2VyWWllbGRUb2tlbigpCit7CisgICAgaWYg
KCFtX2RvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9kb2N1bWVudC0+
bV9wYXJzZXJZaWVsZFRva2VuQ291bnQpOworICAgIGlmICgtLW1fZG9jdW1lbnQtPm1fcGFyc2Vy
WWllbGRUb2tlbkNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RvY3VtZW50LT5zY3Jp
cHRSdW5uZXIoKS0+ZGlkRW5kWWllbGRpbmdQYXJzZXIoKTsKKyAgICBpZiAoYXV0byogcGFyc2Vy
ID0gbV9kb2N1bWVudC0+cGFyc2VyKCkpCisgICAgICAgIHBhcnNlci0+ZGlkRW5kWWllbGRpbmdQ
YXJzZXIoKTsKK30KKwogc3RhdGljIFJlbmRlckVsZW1lbnQqIG5lYXJlc3RDb21tb25Ib3ZlckFu
Y2VzdG9yKFJlbmRlckVsZW1lbnQqIG9iajEsIFJlbmRlckVsZW1lbnQqIG9iajIpCiB7CiAgICAg
aWYgKCFvYmoxIHx8ICFvYmoyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBkYjQ1OTc5NTkyODYx
ZTRlYmVjNDNkYjZiYTI1YTQ2ZDYzZTM5YThjLi4xZDk1OTIwZjY1ZDkwYzJmYWUzMWEwOWU0ZGVl
NTRjMDhmYmJlMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTI2Niw2ICsxMjY2LDIyIEBA
IHB1YmxpYzoKICAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVBhcnNlckNvdW50KCkgeyArK21fYWN0
aXZlUGFyc2VyQ291bnQ7IH0KICAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVBhcnNlckNvdW50KCk7
CiAKKyAgICBjbGFzcyBQYXJzZXJZaWVsZFRva2VuIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdF
QkNPUkVfRVhQT1JUIFBhcnNlcllpZWxkVG9rZW4oRG9jdW1lbnQmKTsKKyAgICAgICAgV0VCQ09S
RV9FWFBPUlQgflBhcnNlcllpZWxkVG9rZW4oKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdl
YWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZXJZaWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRva2VuKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhcnNlcllpZWxkVG9rZW4+KCp0aGlzKTsKKyAg
ICB9CisKKyAgICBib29sIGhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSBjb25zdCB7IHJldHVy
biBtX3BhcnNlcllpZWxkVG9rZW5Db3VudDsgfQorCiAgICAgRG9jdW1lbnRTaGFyZWRPYmplY3RQ
b29sKiBzaGFyZWRPYmplY3RQb29sKCkgeyByZXR1cm4gbV9zaGFyZWRPYmplY3RQb29sLmdldCgp
OyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlQW5kRm9yY2VT
dHlsZVJlY2FsYygpOwpAQCAtMTU3OCw2ICsxNTk0LDggQEAgcHJpdmF0ZToKICAgICBSZWY8Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAgICAgUmVmUHRyPERv
Y3VtZW50UGFyc2VyPiBtX3BhcnNlcjsKIAorICAgIHVuc2lnbmVkIG1fcGFyc2VyWWllbGRUb2tl
bkNvdW50IHsgMCB9OworCiAgICAgLy8gRG9jdW1lbnQgVVJMcy4KICAgICBVUkwgbV91cmw7IC8v
IERvY3VtZW50LlVSTDogVGhlIFVSTCBmcm9tIHdoaWNoIHRoaXMgZG9jdW1lbnQgd2FzIHJldHJp
ZXZlZC4KICAgICBVUkwgbV9iYXNlVVJMOyAvLyBOb2RlLmJhc2VVUkk6IFRoZSBVUkwgdG8gdXNl
IHdoZW4gcmVzb2x2aW5nIHJlbGF0aXZlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNl
ci5oCmluZGV4IGNhYzMzN2Q3MjE4MGEyNDRjMjllMWI2MjFiMDIwNDNiNWJhYjJlY2EuLjg1ZDYy
MDlmMWJlNWYwY2RmYzE1MjAxZDQzYjM4MzU5ZjZiMzhhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFBhcnNlci5oCkBAIC05Niw2ICs5Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c3VzcGVuZFNjaGVkdWxlZFRhc2tzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVNjaGVkdWxl
ZFRhc2tzKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5ZaWVsZGluZ1BhcnNlcigpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRZaWVsZGluZ1BhcnNlcigpIHsgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0UnVubmVyLmNwcAppbmRleCA3M2ZiOGIwNGRlNDA1NzAxZDk3ZjYyZTZjOWE0NTM5
MDNjMmRmN2U5Li42MmU1NmYyZmI0OWJhNGEwNDBiMjMxYzdlNTc4Mjc2MmM4ZjhhZmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIFNjcmlw
dFJ1bm5lcjo6c3VzcGVuZCgpCiAKIHZvaWQgU2NyaXB0UnVubmVyOjpyZXN1bWUoKQogewotICAg
IGlmIChoYXNQZW5kaW5nU2NyaXB0cygpKQorICAgIGlmIChoYXNQZW5kaW5nU2NyaXB0cygpICYm
ICFtX2RvY3VtZW50Lmhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSkKICAgICAgICAgbV90aW1l
ci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIApAQCAtOTUsNyArOTUsOSBAQCB2b2lkIFNjcmlwdFJ1
bm5lcjo6bm90aWZ5RmluaXNoZWQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkKICAgICAg
ICAgbV9zY3JpcHRzVG9FeGVjdXRlU29vbi5hcHBlbmQobV9wZW5kaW5nQXN5bmNTY3JpcHRzLnRh
a2UocGVuZGluZ1NjcmlwdCktPnB0cigpKTsKICAgICB9CiAgICAgcGVuZGluZ1NjcmlwdC5jbGVh
ckNsaWVudCgpOwotICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisKKyAgICBpZiAoIW1f
ZG9jdW1lbnQuaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigpKQorICAgICAgICBtX3RpbWVyLnN0
YXJ0T25lU2hvdCgwX3MpOwogfQogCiB2b2lkIFNjcmlwdFJ1bm5lcjo6dGltZXJGaXJlZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0UnVubmVyLmgKaW5kZXggOGU4ZjQ4NmFkMWRiMGRiYzBkMGJlNjQ1MjEx
MWVlZDc3MGYxNTMxMi4uNjdlZWNiZTgwOWNkMDQzZDNiYWIxNzZmMjE5MGNmNGYyOTNjZTlmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXN1bWUoKTsKICAgICB2b2lkIG5vdGlmeVNjcmlwdFJlYWR5KFNjcmlwdEVsZW1l
bnQqLCBFeGVjdXRpb25UeXBlKTsKIAorICAgIHZvaWQgZGlkQmVnaW5ZaWVsZGluZ1BhcnNlcigp
IHsgc3VzcGVuZCgpOyB9CisgICAgdm9pZCBkaWRFbmRZaWVsZGluZ1BhcnNlcigpIHsgcmVzdW1l
KCk7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMzRhMTJh
Mjk3MTA2ZDVhOTQxMGNiNjFhMzM4MmQzOWY0YWI5Yjg3NS4uYzljYzNhYzkxZTA4MWZjNGFiMjc2
YzFhYWNlZmZmNDBjNzJmM2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xNDgsNiArMTQ4LDE2IEBAIGlubGluZSBib29s
IEhUTUxEb2N1bWVudFBhcnNlcjo6c2hvdWxkRGVsYXlFbmQoKSBjb25zdAogICAgIHJldHVybiBp
blB1bXBTZXNzaW9uKCkgfHwgaXNXYWl0aW5nRm9yU2NyaXB0cygpIHx8IGlzU2NoZWR1bGVkRm9y
UmVzdW1lKCkgfHwgaXNFeGVjdXRpbmdTY3JpcHQoKTsKIH0KIAordm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OmRpZEJlZ2luWWllbGRpbmdQYXJzZXIoKQoreworICAgIG1fcGFyc2VyU2NoZWR1bGVy
LT5kaWRCZWdpbllpZWxkaW5nUGFyc2VyKCk7Cit9CisKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2Vy
OjpkaWRFbmRZaWVsZGluZ1BhcnNlcigpCit7CisgICAgbV9wYXJzZXJTY2hlZHVsZXItPmRpZEVu
ZFlpZWxkaW5nUGFyc2VyKCk7Cit9CisKIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjppc1BhcnNp
bmdGcmFnbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJlZUJ1aWxkZXItPmlzUGFyc2lu
Z0ZyYWdtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5oCmluZGV4IDlhNzlkNDRjNGZiODVlZWFjMTIyNWI1MmRkMGRlNTdkNTYzNjdlNWUu
Ljk5OTBkOGI4ZDBjMTIwZjNmNGNkYjk4YjkyNDY0ZDNhMWEwNDQ3MWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0xMjEsNiArMTIx
LDkgQEAgcHJpdmF0ZToKICAgICBib29sIGluUHVtcFNlc3Npb24oKSBjb25zdDsKICAgICBib29s
IHNob3VsZERlbGF5RW5kKCkgY29uc3Q7CiAKKyAgICB2b2lkIGRpZEJlZ2luWWllbGRpbmdQYXJz
ZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEVuZFlpZWxkaW5nUGFyc2VyKCkgZmluYWw7CisKICAg
ICBIVE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgSFRNTElucHV0U3RyZWFtIG1faW5w
dXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJT
Y2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVk
dWxlci5jcHAKaW5kZXggMzViNmE1OWQ4NzIyMDNlODE2NTdiM2IxMWQ1MDYzMDM0ZmE2ZGMzZS4u
MjkxMjVkN2FjMDNjM2VlNGRhOWUwZDhjYTRkZjJlMmEyMTUzMDY4OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKQEAgLTMyLDYg
KzMyLDEwIEBACiAjaW5jbHVkZSAiSFRNTERvY3VtZW50UGFyc2VyLmgiCiAjaW5jbHVkZSAiUGFn
ZS5oIgogCisjaWYgUExBVEZPUk0oSU9TKQorI2luY2x1ZGUgIldlYkNvcmVUaHJlYWQuaCIKKyNl
bmRpZgorCiAvLyBkZWZhdWx0UGFyc2VyVGltZUxpbWl0IGlzIHRoZSBzZWNvbmRzIHRoZSBwYXJz
ZXIgd2lsbCBydW4gaW4gb25lIHdyaXRlKCkgY2FsbAogLy8gYmVmb3JlIHlpZWxkaW5nLiBJbmxp
bmUgPHNjcmlwdD4gZXhlY3V0aW9uIGNhbiBjYXVzZSBpdCB0byBleGNlZWQgdGhlIGxpbWl0Lgog
Ly8gRklYTUU6IFdlIHdvdWxkIGxpa2UgdGhpcyB2YWx1ZSB0byBiZSAwLjIuCkBAIC0xMTEsNiAr
MTE1LDEwIEBAIGJvb2wgSFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWZvcmVFeGVj
dXRpbmdTY3JpcHQoUHVtcFNlc3Npb24mIHNlc3Npb24pCiAgICAgUmVmUHRyPERvY3VtZW50PiBk
b2N1bWVudCA9IG1fcGFyc2VyLmRvY3VtZW50KCk7CiAgICAgYm9vbCBuZWVkc0ZpcnN0UGFpbnQg
PSBkb2N1bWVudC0+dmlldygpICYmICFkb2N1bWVudC0+dmlldygpLT5oYXNFdmVyUGFpbnRlZCgp
OwogICAgIHNlc3Npb24uZGlkU2VlU2NyaXB0ID0gdHJ1ZTsKKworICAgIGlmIChVTkxJS0VMWSht
X2RvY3VtZW50SGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbnMpKQorICAgICAgICByZXR1cm4gdHJ1
ZTsKKwogICAgIHJldHVybiBuZWVkc0ZpcnN0UGFpbnQgJiYgZG9jdW1lbnQtPmlzTGF5b3V0VGlt
ZXJBY3RpdmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTFBhcnNlclNjaGVkdWxlci5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBh
cnNlclNjaGVkdWxlci5oCmluZGV4IGI1OTM0Y2U5MDY3ZjA2NzFhYTk5ZjEyYjYxODA5ZGIwN2Fi
ZTU1MTguLmUyMDM5NjA3N2E3YjM5YjcyYjZjYThlOWU3ZjNkNDJiOWFkOTA0NDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgKQEAgLTI5
LDEwICsyOSw2IEBACiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKLSNpZiBQTEFURk9STShJT1MpCi0jaW5jbHVkZSAiV2ViQ29yZVRocmVhZC5oIgotI2VuZGlm
Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgRG9jdW1lbnQ7CkBAIC02OSw2ICs2NSw5
IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKFdlYlRocmVhZFNob3VsZFlpZWxkKCkpCiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgorICAgICAgICBpZiAoVU5MSUtFTFkobV9kb2N1bWVu
dEhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW5zKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwor
CiAgICAgICAgIGlmIChVTkxJS0VMWShzZXNzaW9uLnByb2Nlc3NlZFRva2VucyA+IG51bWJlck9m
VG9rZW5zQmVmb3JlQ2hlY2tpbmdGb3JZaWVsZCB8fCBzZXNzaW9uLmRpZFNlZVNjcmlwdCkpCiAg
ICAgICAgICAgICByZXR1cm4gY2hlY2tGb3JZaWVsZChzZXNzaW9uKTsKIApAQCAtODMsNiArODIs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzdXNwZW5kKCk7CiAgICAgdm9pZCByZXN1bWUoKTsKIAor
ICAgIHZvaWQgZGlkQmVnaW5ZaWVsZGluZ1BhcnNlcigpIHsgbV9kb2N1bWVudEhhc0FjdGl2ZVBh
cnNlcllpZWxkVG9rZW5zID0gdHJ1ZTsgfQorICAgIHZvaWQgZGlkRW5kWWllbGRpbmdQYXJzZXIo
KSB7IG1fZG9jdW1lbnRIYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VucyA9IGZhbHNlOyB9CisKIHBy
aXZhdGU6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIG51bWJlck9mVG9rZW5zQmVmb3JlQ2hl
Y2tpbmdGb3JZaWVsZCA9IDQwOTY7IC8vIFBlcmZvcm1hbmNlIG9wdGltaXphdGlvbgogCkBAIC0x
MTIsNiArMTE0LDcgQEAgcHJpdmF0ZToKICNpZiAhQVNTRVJUX0RJU0FCTEVECiAgICAgYm9vbCBt
X3N1c3BlbmRlZDsKICNlbmRpZgorICAgIGJvb2wgbV9kb2N1bWVudEhhc0FjdGl2ZVBhcnNlcllp
ZWxkVG9rZW5zIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dL
RE9NRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NRG9jdW1lbnQuaAppbmRleCA5YTU0YWI3YThmZjdiMzE4MzVlOTNmNTc2MTM4
YWViZGQxMzQ2MGQ2Li5lYTg4YTI1ZmVmOGJjYmZjZWI3MTdiNDMzNDFmMWVkYjVmMmU0MDcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS0RPTURvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVk
QnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5oCkBAIC00Miw2ICs0Miw4IEBAIFdLX0NMQVNT
X0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4wKSkKIAogQHByb3BlcnR5KHJlYWRvbmx5
KSBXS0RPTUVsZW1lbnQgKmJvZHk7CiAKKy0gKGlkKXBhcnNlcllpZWxkVG9rZW4gV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIEBlbmQKIAog
I2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbQpp
bmRleCAzYWQwNGM3MWQ4MzYzZjBjY2Y1NDkyYWYzZTIzMzI2OGMxOTM3YzgzLi41NDBlNjQ5OTcw
NjU0YjUxMDFiODczZDQzNTA5YjUyZTRjNDM4NzU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9j
dW1lbnQubW0KQEAgLTM1LDYgKzM1LDIzIEBACiAjaW1wb3J0IDxXZWJDb3JlL1RleHQuaD4KICNp
bXBvcnQgPFdlYkNvcmUvbWFya3VwLmg+CiAKK0BpbnRlcmZhY2UgV0tET01Eb2N1bWVudFBhcnNl
cllpZWxkVG9rZW4gOiBOU09iamVjdAorCitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXS0RPTURv
Y3VtZW50UGFyc2VyWWllbGRUb2tlbiB7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6OkRv
Y3VtZW50OjpQYXJzZXJZaWVsZFRva2VuPiBfdG9rZW47Cit9CisKKy0gKGluc3RhbmNldHlwZSlp
bml0V2l0aERvY3VtZW50OihXZWJDb3JlOjpEb2N1bWVudCYpZG9jdW1lbnQKK3sKKyAgICBpZiAo
c2VsZiA9IFtzdXBlciBpbml0XSkKKyAgICAgICAgX3Rva2VuID0gZG9jdW1lbnQuY3JlYXRlUGFy
c2VyWWllbGRUb2tlbigpOworICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisKIEBpbXBsZW1l
bnRhdGlvbiBXS0RPTURvY3VtZW50CiAKIC0gKFdLRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6
KE5TU3RyaW5nICopdGFnTmFtZQpAQCAtNjYsNiArODMsMTEgQEAKICAgICByZXR1cm4gV2ViS2l0
Ojp0b1dLRE9NTm9kZShjcmVhdGVGcmFnbWVudEZyb21UZXh0KGRvd25jYXN0PFdlYkNvcmU6OkRv
Y3VtZW50PigqX2ltcGwpLmNyZWF0ZVJhbmdlKCkuZ2V0KCksIHRleHQpLnB0cigpKTsKIH0KIAor
LSAoaWQpcGFyc2VyWWllbGRUb2tlbgoreworICAgIHJldHVybiBbW1tXS0RPTURvY3VtZW50UGFy
c2VyWWllbGRUb2tlbiBhbGxvY10gaW5pdFdpdGhEb2N1bWVudDpkb3duY2FzdDxXZWJDb3JlOjpE
b2N1bWVudD4oKl9pbXBsKV0gYXV0b3JlbGVhc2VdOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBX
S19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdl
TG9nCmluZGV4IDNmYmI2N2I5NzVkZjAyZDg4YWMzZjQ3OGNiODBjYTBiNTVmNzg0MDIuLmNkYmI1
ZDVkNjZmNDBlZDZlYWEzOTM2YWM3NTlhYzVmMTdmZDhlY2MgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOSBAQAorMjAxOC0wNy0x
NiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQg
YW4gU1BJIGhvb2sgdG8gYWxsb3cgY2xpZW50cyB0byB5aWVsZCBkb2N1bWVudCBwYXJzaW5nIGFu
ZCBzY3JpcHQgZXhlY3V0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xODc2ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyMjA3NDUzPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIGZldyB0
ZXN0cyB0byBleGVyY2lzZSB0aGUgbmV3IGRvY3VtZW50IHlpZWxkIHRva2VuIFNQSSwgdmVyaWZ5
aW5nIHRoYXQgY2xpZW50cyBjYW4gdXNlIHRoZSBTUEkgdG8gZGVmZXIKKyAgICAgICAgZG9jdW1l
bnQgbG9hZCwgYW5kIHRoYXQgZG9pbmcgc28gZG9lc24ndCBjYXVzZSBkZWZlcnJlZCBgc2NyaXB0
YCB0byBleGVjdXRlIGluIHRoZSB3cm9uZyBvcmRlciAoaS5lLiBiZWZvcmUKKyAgICAgICAgc3lu
Y2hyb25vdXMgc2NyaXB0LCBvciBhZnRlciAiRE9NQ29udGVudExvYWRlZCIpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRv
a2VuUGx1Z0luLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bUGFyc2VyWWllbGRUb2tlblBsdWdJbiB0
YWtlRG9jdW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdKToKKyAgICAgICAgKC1b
UGFyc2VyWWllbGRUb2tlblBsdWdJbiByZWxlYXNlRG9jdW1lbnRQYXJzZXJUb2tlbl0pOgorICAg
ICAgICAoLVtQYXJzZXJZaWVsZFRva2VuUGx1Z0luIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29u
dGV4dENvbnRyb2xsZXI6ZGlkQ29tbWl0TG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtQYXJz
ZXJZaWVsZFRva2VuUGx1Z0luIHdlYlByb2Nlc3NQbHVnSW46ZGlkQ3JlYXRlQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyOl0pOgorICAgICAgICAoLVtQYXJzZXJZaWVsZFRva2VuUGx1Z0luIHdlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkRmluaXNoRG9jdW1lbnRMb2Fk
Rm9yRnJhbWU6XSk6CisgICAgICAgICgtW1BhcnNlcllpZWxkVG9rZW5QbHVnSW4gd2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpkaWRGaW5pc2hMb2FkRm9yRnJhbWU6XSk6
CisKKyAgICAgICAgSW5qZWN0ZWQgYnVuZGxlIG9iamVjdCB0aGF0IGtub3dzIGhvdyB0byB0YWtl
IGFuZCByZWxlYXNlIG11bHRpcGxlIGRvY3VtZW50IHBhcnNlciB5aWVsZCB0b2tlbnMuCisKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5U
ZXN0cy5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL21hYy9XS0RPTURvY3VtZW50LmguCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuVGVzdHMubW06IEFkZGVkLgorICAgICAgICAo
K1tQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgd2ViVmlld10pOgorICAgICAgICAoLVtQYXJz
ZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgYnVuZGxlXSk6CisgICAgICAgICgtW1BhcnNlcllpZWxk
VG9rZW5UZXN0V2ViVmlldyBkaWRGaW5pc2hEb2N1bWVudExvYWRdKToKKyAgICAgICAgKC1bUGFy
c2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IGRpZEZpbmlzaExvYWRdKToKKyAgICAgICAgKHdhaXRG
b3JEZWxheSk6CisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3RleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbDogQWRkZWQuCisKKyAg
ICAgICAgTmV3IHRlc3QgSFRNTCBwYWdlIHRoYXQgY29udGFpbnMgYSBkZWZlcnJlZCBzY3JpcHQg
ZWxlbWVudCwgYSBzeW5jaHJvbm91cyBzY3JpcHQgZWxlbWVudCwgYW5vdGhlciBkZWZlcnJlZAor
ICAgICAgICBzY3JpcHQgZWxlbWVudCwgYW5kIHRoZW4gc29tZSB0ZXh0LCBpbWFnZXMsIGFuZCBs
aW5rcy4KKwogMjAxOC0wNy0xMyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5j
b20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBydW4tYXBpLXRlc3RzIGlzIHRpbWluZyBvdXQgZm9y
IGFsbW9zdCBhbGwgdGVzdCBjYXNlcwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZTI3MTJi
MmQ2NjNlMWZiYzc0YjIzYzA3ZDJhZTEyMDc2MGQ0M2EwLi4zNjBiZjA3MTFiY2YyZGE5Y2RmNTll
MTI3ZDcyN2FkZTI0NjAyYzkwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNzgxLDYgKzc4
MSw5IEBACiAJCUY0M0UzQkJGMjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0cy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0M0UzQkJF
MjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0cy5tbSAqLzsgfTsKIAkJRjQzRTNC
QzEyMERBREJDNTAwQTRFN0VEIC8qIGZpeGVkLW5hdi1iYXIuaHRtbCBpbiBDb3B5IFJlc291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDNFM0JDMDIwREFEQjgwMDBB
NEU3RUQgLyogZml4ZWQtbmF2LWJhci5odG1sICovOyB9OwogCQlGNDQ1MUM3NjFFQjhGRDg5MDAy
MEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDQ1MUM3NTFFQjhGRDdD
MDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCAqLzsgfTsKKwkJ
RjQ0Qzc5RkYyMEY5RTg3MTAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5UZXN0cy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEM3OUZFMjBGOUU4
NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gKi87IH07CisJCUY0NEM3QTAw
MjBGOUVFQkYwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0luLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Qzc5RkIyMEY5RTUwQzAwMTQ0
NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gKi87IH07CisJCUY0NEM3QTA1MjBGQUFF
M0MwMDE0NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0QzdBMDQyMEZBQUUz
MjAwMTQ0NzhDIC8qIHRleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbCAqLzsgfTsKIAkJRjQ0
RDA2NDUxRjM5NUMyNjAwMUEwRTI5IC8qIGVkaXRvci1zdGF0ZS10ZXN0LWhhcm5lc3MuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRE
MDY0NDFGMzk1QzBEMDAxQTBFMjkgLyogZWRpdG9yLXN0YXRlLXRlc3QtaGFybmVzcy5odG1sICov
OyB9OwogCQlGNDREMDY0NzFGMzk2MjdBMDAxQTBFMjkgLyogRWRpdG9yU3RhdGVUZXN0cy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEQwNjQ2MUYz
OTVDNEQwMDFBMEUyOSAvKiBFZGl0b3JTdGF0ZVRlc3RzLm1tICovOyB9OwogCQlGNDREMDY0QTFG
Mzk2MkYyMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1tIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0RDA2NDkxRjM5NjJFMzAwMUEwRTI5IC8q
IEVkaXRpbmdUZXN0SGFybmVzcy5tbSAqLzsgfTsKQEAgLTg5OCw3ICs5MDEsNiBAQAogCQkJZHN0
UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7
CiAJCQlmaWxlcyA9ICgKLQkJCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2ltcGxlU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtMy5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCTFBOUU1MkM5MTNFNjVFRjQwMDY5MTdGNSAvKiAxOC1jaGFyYWN0ZXJzLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCiAJCQkJMzc5MDI4QjkxNEZBQzI0QzAwN0U2QjQzIC8qIGFjY2VwdHNG
aXJzdE1vdXNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMUMyQjgxODcxQzg5MjVB
MDAwQTU1MjlGIC8qIEFoZW0udHRmIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTEyNSw2ICsx
MTI3LDcgQEAKIAkJCQlCQzkwOTc4NDEyNTU3MUNGMDAwODM3NTYgLyogc2ltcGxlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTFFNUM3MDIxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBs
ZTIuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk1MUU1QzcwMzE5MTlDM0IyMDBEOEIz
RTEgLyogc2ltcGxlMy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCTQ2QUU1QTM3MjBG
OTA2NkQwMEUwODczRSAvKiBTaW1wbGVTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9ucy0zLnNxbGl0
ZTMgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRGNDA1QkQxRDRDMEQxQzAwN0E5NzA3IC8q
IHNraW5ueS1hdXRvcGxheWluZy12aWRlby13aXRoLWF1ZGlvLmh0bWwgaW4gQ29weSBSZXNvdXJj
ZXMgKi8sCiAJCQkJQzAxQTIzRjIxMjY2MTU2NzAwQzlFRDU1IC8qIHNwYWNlYmFyLXNjcm9sbGlu
Zy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUUxOTRFMUJEMTc3RTUzQzcwMDlDNEQ0
RSAvKiBTdG9wTG9hZGluZ0Zyb21EaWRSZWNlaXZlUmVzcG9uc2UuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKQEAgLTExMzgsNiArMTE0MSw3IEBACiAJCQkJNTI0QkJDQTExOUUzMEM3NzAwMkYx
QUYxIC8qIHRlc3QubXA0IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTdBRTlFNTA5MUFFNUFF
OEIwMENGODc0QiAvKiB0ZXN0LnBkZiBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkyRTk4OTYx
NTFEOEYwOTM4MDA3Mzk4OTIgLyogdGV4dC1hbmQtcGFzc3dvcmQtaW5wdXRzLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCisJCQkJRjQ0QzdBMDUyMEZBQUUzQzAwMTQ0NzhDIC8qIHRleHQtd2l0
aC1kZWZlcnJlZC1zY3JpcHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlB
QTFFRjQ2OTZCMDA4M0ZBMDggLyogdGV4dGFyZWEtdG8taW5wdXQuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlGNDQ1MUM3NjFFQjhGRDg5MDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1j
b250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDNTQwRjc4NDE1
MkU1QTlBMDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LApAQCAtMTk3Niw2ICsxOTgwLDEwIEBACiAJCUY0M0UzQkJFMjBEQURBMUUwMEE0RTdFRCAvKiBX
S1Njcm9sbFZpZXdUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU2Nyb2xsVmlld1Rl
c3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDNFM0JDMDIwREFEQjgwMDBB
NEU3RUQgLyogZml4ZWQtbmF2LWJhci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImZpeGVkLW5hdi1iYXIuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDUxQzc1MUVCOEZEN0MwMDIwQzVE
QSAvKiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gInR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3OEMgLyogUGFyc2Vy
WWllbGRUb2tlblBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhcnNlcllpZWxkVG9r
ZW5QbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NEM3OUZEMjBGOUU4
NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFy
c2VyWWllbGRUb2tlblRlc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NEM3
OUZFMjBGOUU4NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0NEM3QTA0MjBGQUFFMzIwMDE0NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJy
ZWQtc2NyaXB0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidGV4dC13aXRoLWRl
ZmVycmVkLXNjcmlwdC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0RDA2
NDQxRjM5NUMwRDAwMUEwRTI5IC8qIGVkaXRvci1zdGF0ZS10ZXN0LWhhcm5lc3MuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJlZGl0b3Itc3RhdGUtdGVzdC1oYXJuZXNzLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDREMDY0NjFGMzk1QzREMDAxQTBFMjkg
LyogRWRpdG9yU3RhdGVUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEVkaXRvclN0YXRlVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0NEQwNjQ4MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMjc0LDYgKzIyODIsOSBAQAogCQkJCTM3QTIyQUE1MURD
QUEyNzIwMEFGQkZDNCAvKiBPYnNlcnZlZFJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzQWZ0ZXJDcmFz
aC5tbSAqLywKIAkJCQlDRUE2Q0YyMjE5Q0NGNUJEMDA2NEY1QTcgLyogT3BlbkFuZENsb3NlV2lu
ZG93Lm1tICovLAogCQkJCUNFQkNBMTJFMUUzQTY2MDEwMEM3MzI5MyAvKiBPdmVycmlkZUNvbnRl
bnRTZWN1cml0eVBvbGljeS5tbSAqLywKKwkJCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3OEMgLyog
UGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSAqLywKKwkJCQlGNDRDNzlGRDIwRjlFODcxMDAxNDQ3
OEMgLyogUGFyc2VyWWllbGRUb2tlblRlc3RzLmggKi8sCisJCQkJRjQ0Qzc5RkUyMEY5RTg3MTAw
MTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5UZXN0cy5tbSAqLywKIAkJCQk5QkNCN0MyNjIwMTMw
NjAwMDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tICovLAogCQkJCTlCRENDRDg1MUY3RDBCMDcwMDAw
OUExOCAvKiBQYXN0ZUltYWdlLm1tICovLAogCQkJCUY0NTdBOUI2MjAyRDVDREMwMEY3RTlENSAv
KiBQYXN0ZU1peGVkQ29udGVudC5tbSAqLywKQEAgLTI2NDMsNiArMjY1NCw3IEBACiAJCQkJOUJE
NkQzOUYxRjdCMjAyMDAwQkQ0OTYyIC8qIHN1bnNldC1pbi1jdXBlcnRpbm8tNDAwcHguZ2lmICov
LAogCQkJCTlCRDZEMzlFMUY3QjIwMUUwMEJENDk2MiAvKiBzdW5zZXQtaW4tY3VwZXJ0aW5vLTYw
MHB4LmpwZyAqLywKIAkJCQkyRTk4OTYxNDFEOEYwOTJCMDA3Mzk4OTIgLyogdGV4dC1hbmQtcGFz
c3dvcmQtaW5wdXRzLmh0bWwgKi8sCisJCQkJRjQ0QzdBMDQyMEZBQUUzMjAwMTQ0NzhDIC8qIHRl
eHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbCAqLywKIAkJCQlGNDFBQjk5NTFFRjQ2OTJDMDA4
M0ZBMDggLyogdGV4dGFyZWEtdG8taW5wdXQuaHRtbCAqLywKIAkJCQlGNDQ1MUM3NTFFQjhGRDdD
MDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKIAkJCQk1
MTcxNEVCMjFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRt
bCAqLywKQEAgLTM3NTksNiArMzc3MSw3IEBACiAJCQkJN0NDRTdFQzcxQTQxMUE3RTAwNDQ3QzRD
IC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RjA5MUE0MTFBRTYwMDQ0N0M0QyAvKiBQYXJlbnRGcmFtZS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzgzRTA1MTFEMEE2NDE4MDBGRUJDRjMgLyogUGFyc2VkQ29udGVudFJh
bmdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY0NEM3OUZGMjBGOUU4NzEwMDE0NDc4QyAvKiBQ
YXJzZXJZaWVsZFRva2VuVGVzdHMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQTFBNDEx
QUU2MDA0NDdDNEMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk5QkNCN0MyODIwMTMwNjAwMDAzRTdDMEMgLyogUGFzdGVIVE1MLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJOUJEQ0NEODcxRjdEMEIwNzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gaW4gU291
cmNlcyAqLywKQEAgLTM5NjYsNiArMzk3OSw3IEBACiAJCQkJNTE4RUU1MTkyMEE3OENFNTAwRTAy
NEYzIC8qIERvdWJsZURlZmVyc0xvYWRpbmdQbHVnaW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQk1
Q0I1QjNDMjFGRkM1NUNGMDBDMjdCQjAgLyogRnJhbWVIYW5kbGVTZXJpYWxpemF0aW9uLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNzlDNUQ0MzEyMDlENzY4MzAwRjFFN0NBIC8qIEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZUlzVGV4dEZpZWxkLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJRjQ0QzdBMDAy
MEY5RUVCRjAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gaW4gU291cmNlcyAq
LywKIAkJCQlBMTNFQkJBQjFCODc0MzQ2MDAwOTcxMTAgLyogUGxhdGZvcm1VdGlsaXRpZXNDb2Nv
YS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTFBNEY4MUNGMUJERkZENTMwMDRFNjcyRSAvKiBSZW1v
dGVPYmplY3RSZWdpc3RyeVBsdWdJbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCUExMkREQzAyMUU4
MzdDMjQwMENGNkNBRSAvKiBSZW5kZXJlZEltYWdlV2l0aE9wdGlvbnNQbHVnSW4ubW0gaW4gU291
cmNlcyAqLywKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNWZlMTk4
N2E3NDJmNjQ2MjViZmFjZWZhMGE5YjA5NGU0M2JiN2E3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuUGx1Z0lu
Lm1tCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
CisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiUGFyc2VyWWllbGRUb2tlblRlc3RzLmgi
CisjaW1wb3J0IDxXZWJLaXQvV0tET01Eb2N1bWVudC5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2Vi
UHJvY2Vzc1BsdWdJbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlclByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nl
c3NQbHVnSW5Mb2FkRGVsZWdhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RJ
bnRlcmZhY2UuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmplY3RSZWdpc3RyeS5oPgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIFBhcnNlcllpZWxkVG9rZW5Q
bHVnSW4gOiBOU09iamVjdCA8V0tXZWJQcm9jZXNzUGx1Z0luLCBXS1dlYlByb2Nlc3NQbHVnSW5M
b2FkRGVsZWdhdGUsIFBhcnNlcllpZWxkVG9rZW5UZXN0QnVuZGxlPgorQGVuZAorCitAaW1wbGVt
ZW50YXRpb24gUGFyc2VyWWllbGRUb2tlblBsdWdJbiB7CisgICAgUmV0YWluUHRyPE5TTXV0YWJs
ZUFycmF5PE5TT2JqZWN0ICo+PiBfcGFyc2VyWWllbGRUb2tlbnM7CisgICAgUmV0YWluUHRyPGlk
PFBhcnNlcllpZWxkVG9rZW5UZXN0UnVubmVyPj4gX3Rlc3RSdW5uZXI7CisgICAgUmV0YWluUHRy
PFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcj4gX2NvbnRyb2xsZXI7
CisgICAgQk9PTCBfbG9hZENvbW1pdHRlZDsKKyAgICBOU1VJbnRlZ2VyIF9udW1iZXJPZlRva2Vu
c1RvVGFrZUFmdGVyQ29taXR0aW5nTG9hZDsKK30KKworLSAodm9pZCl0YWtlRG9jdW1lbnRQYXJz
ZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWQKK3sKKyAgICBpZiAoX2xvYWRDb21taXR0ZWQpCisg
ICAgICAgIFtfcGFyc2VyWWllbGRUb2tlbnMgYWRkT2JqZWN0OltfY29udHJvbGxlciBtYWluRnJh
bWVEb2N1bWVudF0ucGFyc2VyWWllbGRUb2tlbl07CisgICAgZWxzZQorICAgICAgICArK19udW1i
ZXJPZlRva2Vuc1RvVGFrZUFmdGVyQ29taXR0aW5nTG9hZDsKK30KKworLSAodm9pZClyZWxlYXNl
RG9jdW1lbnRQYXJzZXJUb2tlbgoreworICAgIGlmIChfbG9hZENvbW1pdHRlZCkKKyAgICAgICAg
W19wYXJzZXJZaWVsZFRva2VucyByZW1vdmVPYmplY3RBdEluZGV4OjBdOworICAgIGVsc2UKKyAg
ICAgICAgLS1fbnVtYmVyT2ZUb2tlbnNUb1Rha2VBZnRlckNvbWl0dGluZ0xvYWQ7Cit9CisKKy0g
KHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9j
ZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyICopY29udHJvbGxlciBkaWRDb21taXRM
b2FkRm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJbkZyYW1lICopZnJhbWUKK3sKKyAgICBfbG9h
ZENvbW1pdHRlZCA9IFlFUzsKKyAgICB3aGlsZSAoX251bWJlck9mVG9rZW5zVG9UYWtlQWZ0ZXJD
b21pdHRpbmdMb2FkKSB7CisgICAgICAgIFtzZWxmIHRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0
ZXJDb21taXR0aW5nTG9hZF07CisgICAgICAgIC0tX251bWJlck9mVG9rZW5zVG9UYWtlQWZ0ZXJD
b21pdHRpbmdMb2FkOworICAgIH0KK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luOihXS1dl
YlByb2Nlc3NQbHVnSW5Db250cm9sbGVyICopcGx1Z0luQ29udHJvbGxlciBkaWRDcmVhdGVCcm93
c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlciAqKWJyb3dzZXJDb250ZXh0Q29udHJvbGxlcgoreworICAgIF9wYXJzZXJZaWVsZFRv
a2VucyA9IGFkb3B0TlMoW05TTXV0YWJsZUFycmF5IG5ld10pOworICAgIF9jb250cm9sbGVyID0g
YnJvd3NlckNvbnRleHRDb250cm9sbGVyOworICAgIGJyb3dzZXJDb250ZXh0Q29udHJvbGxlci5s
b2FkRGVsZWdhdGUgPSBzZWxmOworICAgIFticm93c2VyQ29udGV4dENvbnRyb2xsZXIuX3JlbW90
ZU9iamVjdFJlZ2lzdHJ5IHJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6c2VsZiBpbnRlcmZhY2U6W19X
S1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6
QHByb3RvY29sKFBhcnNlcllpZWxkVG9rZW5UZXN0QnVuZGxlKV1dOworICAgIF90ZXN0UnVubmVy
ID0gW2Jyb3dzZXJDb250ZXh0Q29udHJvbGxlci5fcmVtb3RlT2JqZWN0UmVnaXN0cnkgcmVtb3Rl
T2JqZWN0UHJveHlXaXRoSW50ZXJmYWNlOltfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVtb3Rl
T2JqZWN0SW50ZXJmYWNlV2l0aFByb3RvY29sOkBwcm90b2NvbChQYXJzZXJZaWVsZFRva2VuVGVz
dFJ1bm5lcildXTsKK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIqKWNv
bnRyb2xsZXIgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWU6KFdLV2ViUHJvY2Vzc1BsdWdJ
bkZyYW1lICopZnJhbWUKK3sKKyAgICBbX3Rlc3RSdW5uZXIgZGlkRmluaXNoRG9jdW1lbnRMb2Fk
XTsKK30KKworLSAodm9pZCl3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVy
OihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIqKWNvbnRyb2xsZXIg
ZGlkRmluaXNoTG9hZEZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lCit7
CisgICAgW190ZXN0UnVubmVyIGRpZEZpbmlzaExvYWRdOworfQorCitAZW5kCisKKyNlbmRpZiAv
LyBXS19BUElfRU5BQkxFRAorCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5UZXN0cy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuVGVzdHMuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
YTY2ODQzYTY3ZmFhM2ZkODNiMTI5NjRmYWMyZjRjZmE3YmM1ZDFmCi0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2Vu
VGVzdHMuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK0Bw
cm90b2NvbCBQYXJzZXJZaWVsZFRva2VuVGVzdFJ1bm5lciA8TlNPYmplY3Q+CistICh2b2lkKWRp
ZEZpbmlzaERvY3VtZW50TG9hZDsKKy0gKHZvaWQpZGlkRmluaXNoTG9hZDsKK0BlbmQKKworQHBy
b3RvY29sIFBhcnNlcllpZWxkVG9rZW5UZXN0QnVuZGxlIDxOU09iamVjdD4KKy0gKHZvaWQpdGFr
ZURvY3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2FkOworLSAodm9pZClyZWxlYXNl
RG9jdW1lbnRQYXJzZXJUb2tlbjsKK0BlbmQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblRlc3RzLm1tIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuVGVzdHMubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uZTVmNDEyMTQ2MTY4NTlkMTE3ZGQ3M2Q2NGQ0ZGM3YmExMTc4YjU4NgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2Vy
WWllbGRUb2tlblRlc3RzLm1tCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2ltcG9ydCAiUGFyc2VyWWllbGRUb2tlblRlc3RzLmgiCisKKyNpZiBX
S19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAi
VGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvbkV4dHJhcy5o
IgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9f
V0tSZW1vdGVPYmplY3RJbnRlcmZhY2UuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tSZW1vdGVPYmpl
Y3RSZWdpc3RyeS5oPgorI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CisjaW1wb3J0IDx3dGYvU2Vj
b25kcy5oPgorCitAaW50ZXJmYWNlIFBhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyA6IFRlc3RX
S1dlYlZpZXcgPFBhcnNlcllpZWxkVG9rZW5UZXN0UnVubmVyPgorQHByb3BlcnR5IChub25hdG9t
aWMsIHJlYWRvbmx5KSBCT09MIGZpbmlzaGVkRG9jdW1lbnRMb2FkOworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIGZpbmlzaGVkTG9hZDsKK0BlbmQKKworQGltcGxlbWVudGF0
aW9uIFBhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyB7CisgICAgUmV0YWluUHRyPGlkIDxQYXJz
ZXJZaWVsZFRva2VuVGVzdEJ1bmRsZT4+IF9idW5kbGU7Cit9CisKKysgKFJldGFpblB0cjxQYXJz
ZXJZaWVsZFRva2VuVGVzdFdlYlZpZXc+KXdlYlZpZXcKK3sKKyAgICBhdXRvICpjb25maWd1cmF0
aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0
UGx1Z0luQ2xhc3NOYW1lOkAiUGFyc2VyWWllbGRUb2tlblBsdWdJbiJdOworICAgIGF1dG8gd2Vi
VmlldyA9IGFkb3B0TlMoW1tQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAyMDAsIDIwMCkgY29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uXSk7CisgICAgW1t3ZWJWaWV3IF9yZW1vdGVPYmplY3RSZWdpc3RyeV0gcmVnaXN0ZXJF
eHBvcnRlZE9iamVjdDp3ZWJWaWV3LmdldCgpIGludGVyZmFjZTpbX1dLUmVtb3RlT2JqZWN0SW50
ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woUGFyc2Vy
WWllbGRUb2tlblRlc3RSdW5uZXIpXV07CisgICAgd2ViVmlldy0+X2J1bmRsZSA9IFtbd2ViVmll
dyBfcmVtb3RlT2JqZWN0UmVnaXN0cnldIHJlbW90ZU9iamVjdFByb3h5V2l0aEludGVyZmFjZTpb
X1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2Nv
bDpAcHJvdG9jb2woUGFyc2VyWWllbGRUb2tlblRlc3RCdW5kbGUpXV07CisgICAgcmV0dXJuIHdl
YlZpZXc7Cit9CisKKy0gKGlkIDxQYXJzZXJZaWVsZFRva2VuVGVzdEJ1bmRsZT4pYnVuZGxlCit7
CisgICAgcmV0dXJuIF9idW5kbGUuZ2V0KCk7Cit9CisKKy0gKHZvaWQpZGlkRmluaXNoRG9jdW1l
bnRMb2FkCit7CisgICAgX2ZpbmlzaGVkRG9jdW1lbnRMb2FkID0gWUVTOworfQorCistICh2b2lk
KWRpZEZpbmlzaExvYWQKK3sKKyAgICBfZmluaXNoZWRMb2FkID0gWUVTOworfQorCitAZW5kCisK
K3N0YXRpYyB2b2lkIHdhaXRGb3JEZWxheShTZWNvbmRzIGRlbGF5KQoreworICAgIF9fYmxvY2sg
Ym9vbCBkb25lID0gZmFsc2U7CisgICAgZGlzcGF0Y2hfYWZ0ZXIoZGlzcGF0Y2hfdGltZShESVNQ
QVRDSF9USU1FX05PVywgZGVsYXkubmFub3NlY29uZHMoKSksIGRpc3BhdGNoX2dldF9tYWluX3F1
ZXVlKCksIF57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH0pOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK1RFU1QoUGFyc2VyWWllbGRUb2tlblRlc3RzLCBQ
cmV2ZW50RG9jdW1lbnRMb2FkQnlUYWtpbmdQYXJzZXJZaWVsZFRva2VuKQoreworICAgIGF1dG8g
d2ViVmlldyA9IFtQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgd2ViVmlld107CisgICAgW1t3
ZWJWaWV3IGJ1bmRsZV0gdGFrZURvY3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2Fk
XTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOworCisgICAgLy8g
R2l2ZSB0aGUgd2ViIHZpZXcgYSBjaGFuY2UgdG8gbG9hZCB0aGUgcGFnZS4gSW4gdGhlIGNhc2Ug
d2hlcmUgdGhlIHRva2VuIGZhaWxzIHRvIHlpZWxkIGRvY3VtZW50IHBhcnNpbmcsIGl0J3MgdmVy
eSBsaWtlbHkgdGhhdAorICAgIC8vIHRoZSBkb2N1bWVudCB3aWxsIGZpbmlzaCBsb2FkaW5nLCBh
bmQgd2UnbGwgZmFpbCB0aGUgdGVzdCBleHBlY3RhdGlvbnMgYmVsb3cuIEluIHRoZSB1bmxpa2Vs
eSBldmVudCB3aGVyZSBwYWdlIGxvYWQgbWF5IHRha2UKKyAgICAvLyBsb25nZXIgdGhhbiAxIHNl
Y29uZCwgdGhpcyB0ZXN0IHNob3VsZCBzdGlsbCBwYXNzLgorICAgIHdhaXRGb3JEZWxheSgxX3Mp
OworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBmaW5pc2hlZERvY3VtZW50TG9hZF0pOworICAg
IEVYUEVDVF9GQUxTRShbd2ViVmlldyBmaW5pc2hlZExvYWRdKTsKKworICAgIC8vIE5vdywgYWxs
b3cgZG9jdW1lbnQgcGFyc2luZyB0byBjb250aW51ZSwgYW5kIHdhaXQgZm9yIHRoZSBwYWdlIHRv
IGZpbmlzaCBsb2FkaW5nLgorICAgIFtbd2ViVmlldyBidW5kbGVdIHJlbGVhc2VEb2N1bWVudFBh
cnNlclRva2VuXTsKKworICAgIHdoaWxlICghW3dlYlZpZXcgZmluaXNoZWRMb2FkXSB8fCAhW3dl
YlZpZXcgZmluaXNoZWREb2N1bWVudExvYWRdKQorICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50
UnVuTG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0RhdGUg
ZGlzdGFudFBhc3RdXTsKK30KKworVEVTVChQYXJzZXJZaWVsZFRva2VuVGVzdHMsIFRha2VNdWx0
aXBsZVBhcnNlcllpZWxkVG9rZW5zKQoreworICAgIGF1dG8gd2ViVmlldyA9IFtQYXJzZXJZaWVs
ZFRva2VuVGVzdFdlYlZpZXcgd2ViVmlld107CisgICAgW1t3ZWJWaWV3IGJ1bmRsZV0gdGFrZURv
Y3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2FkXTsKKyAgICBbd2ViVmlldyBsb2Fk
VGVzdFBhZ2VOYW1lZDpAInNpbXBsZSJdOworCisgICAgd2FpdEZvckRlbGF5KDAuNV9zKTsKKyAg
ICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgZmluaXNoZWREb2N1bWVudExvYWRdKTsKKyAgICBFWFBF
Q1RfRkFMU0UoW3dlYlZpZXcgZmluaXNoZWRMb2FkXSk7CisKKyAgICBbW3dlYlZpZXcgYnVuZGxl
XSB0YWtlRG9jdW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdOworICAgIFtbd2Vi
VmlldyBidW5kbGVdIHJlbGVhc2VEb2N1bWVudFBhcnNlclRva2VuXTsKKworICAgIHdhaXRGb3JE
ZWxheSgwLjVfcyk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGZpbmlzaGVkRG9jdW1lbnRM
b2FkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGZpbmlzaGVkTG9hZF0pOworCisgICAg
W1t3ZWJWaWV3IGJ1bmRsZV0gcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW5dOworCisgICAgd2hp
bGUgKCFbd2ViVmlldyBmaW5pc2hlZExvYWRdIHx8ICFbd2ViVmlldyBmaW5pc2hlZERvY3VtZW50
TG9hZF0pCisgICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5Nb2RlOk5TRGVm
YXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBkaXN0YW50UGFzdF1dOworfQorCitU
RVNUKFBhcnNlcllpZWxkVG9rZW5UZXN0cywgRGVmZXJyZWRTY3JpcHRFeGVjdXRlc0JlZm9yZURv
Y3VtZW50TG9hZFdoZW5UYWtpbmdQYXJzZXJZaWVsZFRva2VuKQoreworICAgIGF1dG8gd2ViVmll
dyA9IFtQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgd2ViVmlld107CisKKyAgICBbW3dlYlZp
ZXcgYnVuZGxlXSB0YWtlRG9jdW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdOwor
ICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAidGV4dC13aXRoLWRlZmVycmVkLXNjcmlw
dCJdOworCisgICAgd2FpdEZvckRlbGF5KDAuNV9zKTsKKyAgICBbW3dlYlZpZXcgYnVuZGxlXSBy
ZWxlYXNlRG9jdW1lbnRQYXJzZXJUb2tlbl07CisKKyAgICB3aGlsZSAoIVt3ZWJWaWV3IGZpbmlz
aGVkTG9hZF0gfHwgIVt3ZWJWaWV3IGZpbmlzaGVkRG9jdW1lbnRMb2FkXSkKKyAgICAgICAgW1tO
U1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgYmVm
b3JlRGF0ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XV07CisKKyAgICAvLyBWZXJpZnkgdGhhdCBzeW5j
aHJvbm91cyBzY3JpcHQgaXMgZXhlY3V0ZWQgYmVmb3JlIGRlZmVycmVkIHNjcmlwdCBhbmQgZGVm
ZXJyZWQgc2NyaXB0IGlzIHJ1biBiZWZvcmUgZG9jdW1lbnQgbG9hZC4KKyAgICBOU0FycmF5PE5T
U3RyaW5nICo+ICpldmVudE1lc3NhZ2VzID0gW3dlYlZpZXcgb2JqZWN0QnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAIndpbmRvdy5ldmVudE1lc3NhZ2VzIl07CisgICAgRVhQRUNUX0VRKGV2ZW50TWVz
c2FnZXMuY291bnQsIDhVKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIlJ1bm5pbmcgc3luYyIsIGV2
ZW50TWVzc2FnZXNbMF0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiTG9hZGVkIHNjcmlwdDogc3lu
YyIsIGV2ZW50TWVzc2FnZXNbMV0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiUnVubmluZyBkZWZl
ci1iZWZvcmUiLCBldmVudE1lc3NhZ2VzWzJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkxvYWRl
ZCBzY3JpcHQ6IGRlZmVyLWJlZm9yZSIsIGV2ZW50TWVzc2FnZXNbM10pOworICAgIEVYUEVDVF9X
S19TVFJFUSgiUnVubmluZyBkZWZlci1hZnRlciIsIGV2ZW50TWVzc2FnZXNbNF0pOworICAgIEVY
UEVDVF9XS19TVFJFUSgiTG9hZGVkIHNjcmlwdDogZGVmZXItYWZ0ZXIiLCBldmVudE1lc3NhZ2Vz
WzVdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmciLCBl
dmVudE1lc3NhZ2VzWzZdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkZpbmlzaGVkIGxvYWRpbmci
LCBldmVudE1lc3NhZ2VzWzddKTsKK30KKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVECmRpZmYg
LS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RleHQtd2l0aC1k
ZWZlcnJlZC1zY3JpcHQuaHRtbCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvdGV4dC13aXRoLWRlZmVycmVkLXNjcmlwdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU4OTQwYjMwNDEw
MjdkNGI2MjYxZTk0OTNkNjE1MTBjYzE1ZjVjYTcKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQu
aHRtbApAQCAtMCwwICsxLDI2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cisg
ICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5p
dGlhbC1zY2FsZT0xIj4KKyAgICA8c2NyaXB0PgorICAgICAgICBldmVudE1lc3NhZ2VzID0gW10K
KworICAgICAgICBmdW5jdGlvbiBzY3JpcHRMb2FkZWQoc2NyaXB0KQorICAgICAgICB7CisgICAg
ICAgICAgICBldmVudE1lc3NhZ2VzLnB1c2goYExvYWRlZCBzY3JpcHQ6ICR7c2NyaXB0LmlkfWAp
OworICAgICAgICB9CisgICAgPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKyAgICA8c2NyaXB0
PgorICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIiwg
KCkgPT4gZXZlbnRNZXNzYWdlcy5wdXNoKCJEb2N1bWVudCBmaW5pc2hlZCBsb2FkaW5nIikpOwor
ICAgICAgICBhZGRFdmVudExpc3RlbmVyKCJsb2FkIiwgKCkgPT4gZXZlbnRNZXNzYWdlcy5wdXNo
KCJGaW5pc2hlZCBsb2FkaW5nIikpOworICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgaWQ9ImRl
ZmVyLWJlZm9yZSIgb25sb2FkPSJzY3JpcHRMb2FkZWQodGhpcykiIGRlZmVyIHNyYz0iZGF0YTp0
ZXh0L2phdmFzY3JpcHQsZXZlbnRNZXNzYWdlcy5wdXNoKCdSdW5uaW5nIGRlZmVyLWJlZm9yZScp
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IGlkPSJzeW5jIiBvbmxvYWQ9InNjcmlwdExvYWRlZCh0
aGlzKSIgc3JjPSJkYXRhOnRleHQvamF2YXNjcmlwdCxldmVudE1lc3NhZ2VzLnB1c2goJ1J1bm5p
bmcgc3luYycpIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IGlkPSJkZWZlci1hZnRlciIgb25sb2Fk
PSJzY3JpcHRMb2FkZWQodGhpcykiIGRlZmVyIHNyYz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsZXZl
bnRNZXNzYWdlcy5wdXNoKCdSdW5uaW5nIGRlZmVyLWFmdGVyJykiPjwvc2NyaXB0PgorICAgIDxw
PkxvcmVtIGlwc3VtIGRvbG9yIHNpdCBhbWV0LCA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmci
PmNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdDwvYT4sIHNlZCBkbyBlaXVzbW9kIHRlbXBvciBp
bmNpZGlkdW50IHV0IGxhYm9yZSBldCBkb2xvcmUgbWFnbmEgYWxpcXVhLiA8YSBocmVmPSJodHRw
czovL3dlYmtpdC5vcmciPlRlbXBvciBpZCBldSBuaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMg
dml0YWUuPC9hPiBTZWQgdGVtcHVzIHVybmEgZXQgcGhhcmV0cmEgcGhhcmV0cmEgbWFzc2EgbWFz
c2EuIFZpdGFlIHRvcnRvciBjb25kaW1lbnR1bSBsYWNpbmlhIHF1aXMgdmVsIGVyb3MgZG9uZWMg
YWMuIDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZyI+VWxsYW1jb3JwZXIgdmVsaXQgc2VkIHVs
bGFtY29ycGVyIG1vcmJpPC9hPiB0aW5jaWR1bnQgb3JuYXJlIG1hc3NhIGVnZXQuIFNpdCBhbWV0
IGN1cnN1cyBzaXQgYW1ldCBkaWN0dW0uIElkIGV1IG5pc2wgbnVuYyBtaSBpcHN1bSBmYXVjaWJ1
cyB2aXRhZSBhbGlxdWV0IG5lYy4gU3VzY2lwaXQgdGVsbHVzIG1hdXJpcyBhIGRpYW0gbWFlY2Vu
YXMgc2VkLiBDb25zZXF1YXQgbmlzbCB2ZWwgcHJldGl1bSBsZWN0dXMgcXVhbSBpZCBsZW8uIDxh
IGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZyI+TmV0dXMgZXQgbWFsZXN1YWRhIGZhbWVzIGFjIHR1
cnBpcyBlZ2VzdGFzIGludGVnZXIuPC9hPiBRdWFtIGxhY3VzIHN1c3BlbmRpc3NlIGZhdWNpYnVz
IGludGVyZHVtIHBvc3VlcmUgbG9yZW0gaXBzdW0uIFNlbSBpbnRlZ2VyIHZpdGFlIGp1c3RvIGVn
ZXQgbWFnbmEgZmVybWVudHVtIGlhY3VsaXMuIEEgY29uZGltZW50dW0gdml0YWUgc2FwaWVuIHBl
bGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaSB0cmlzdGlxdWUuIFZhcml1cyBkdWlzIGF0IGNvbnNl
Y3RldHVyIGxvcmVtLiBJcHN1bSBmYXVjaWJ1cyB2aXRhZSBhbGlxdWV0IG5lYyB1bGxhbWNvcnBl
ciBzaXQuPC9wPgorICAgIDxwPlNlZCBmYXVjaWJ1cyA8YSBocmVmPSJodHRwczovL3dlYmtpdC5v
cmciPnR1cnBpcyBpbiBldSBtaSBiaWJlbmR1bTwvYT4uIERvbmVjIGVuaW0gZGlhbSB2dWxwdXRh
dGUgdXQgcGhhcmV0cmEgc2l0IGFtZXQgYWxpcXVhbS4gPGltZyBzcmM9ImFwcGxlLmdpZiI+PC9p
bWc+IENvbnNlcXVhdCBpZCBwb3J0YSBuaWJoIHZlbmVuYXRpcyBjcmFzIHNlZCBmZWxpcyBlZ2V0
IHZlbGl0LiBBdCBsZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzIGlk
IGludGVyZHVtIHZlbGl0LiBJZCBjb25zZWN0ZXR1ciBwdXJ1cyB1dCBmYXVjaWJ1cyBwdWx2aW5h
ciBlbGVtZW50dW0gaW50ZWdlciBlbmltLiBJcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1
ciBhZGlwaXNjaW5nIGVsaXQgdXQgYWxpcXVhbS4gQXQgdGVsbHVzIGF0IHVybmEgY29uZGltZW50
dW0gbWF0dGlzLiBGYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0gaW50ZWdlciBlbmltLiBBdCBl
bGVtZW50dW0gZXUgZmFjaWxpc2lzIHNlZCBvZGlvIG1vcmJpLiBGYW1lcyBhYyB0dXJwaXMgZWdl
c3RhcyBpbnRlZ2VyIGVnZXQgYWxpcXVldC4gQ29uc2VxdWF0IGludGVyZHVtIHZhcml1cyBzaXQg
YW1ldCBtYXR0aXMgdnVscHV0YXRlIGVuaW0gbnVsbGEuIExlY3R1cyBzaXQgYW1ldCBlc3QgcGxh
Y2VyYXQgaW4gZWdlc3Rhcy4gRG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBl
bGl0IHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaS4gVXJuYSBldCBwaGFyZXRyYSBwaGFyZXRy
YSBtYXNzYSBtYXNzYSB1bHRyaWNpZXMgbWkuPC9wPgorICAgIDxwPlNlZCBsZWN0dXMgdmVzdGli
dWx1bSBtYXR0aXMgdWxsYW1jb3JwZXIgdmVsaXQgc2VkIHVsbGFtY29ycGVyLiA8YSBocmVmPSJo
dHRwczovL3dlYmtpdC5vcmciPlF1YW0gbGFjdXMgc3VzcGVuZGlzc2U8L2E+IGZhdWNpYnVzIGlu
dGVyZHVtIHBvc3VlcmUgbG9yZW0uIFNhZ2l0dGlzIHZpdGFlIGV0IGxlbyBkdWlzIHV0IGRpYW0u
IFR1cnBpcyBtYXNzYSBzZWQgZWxlbWVudHVtIHRlbXB1cy4gQWxpcXVhbSBzZW0gZnJpbmdpbGxh
IHV0IG1vcmJpLiA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPkZyaW5naWxsYSBlc3QgdWxs
YW1jb3JwZXI8L2E+IGVnZXQgbnVsbGEgZmFjaWxpc2kgZXRpYW0gZGlnbmlzc2ltLiBJZCB2ZWxp
dCB1dCB0b3J0b3IgcHJldGl1bS4gQmliZW5kdW0gYXQgdmFyaXVzIHZlbCBwaGFyZXRyYSB2ZWwg
dHVycGlzIG51bmMuIFNpdCBhbWV0IGFsaXF1YW0gaWQgZGlhbSBtYWVjZW5hcy4gTG9ib3J0aXMg
ZmV1Z2lhdCB2aXZhbXVzIGF0IGF1Z3VlIDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZyI+ZWdl
dCBhcmN1IGRpY3R1bTwvYT4gdmFyaXVzIGR1aXMuIExpYmVybyBqdXN0byBsYW9yZWV0IHNpdCBh
bWV0LiBFZ2VzdGFzIHRlbGx1cyBydXRydW0gdGVsbHVzIHBlbGxlbnRlc3F1ZSBldSB0aW5jaWR1
bnQgdG9ydG9yIGFsaXF1YW0uPC9wPgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345114</attachid>
            <date>2018-07-16 13:02:09 -0700</date>
            <delta_ts>2018-07-16 21:15:41 -0700</delta_ts>
            <desc>Address feedback.</desc>
            <filename>bug-187682-20180716130208.patch</filename>
            <type>text/plain</type>
            <size>43314</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI4Mzc1NjVkY2MzMTdh
ZDg4NWRlZDBiYTEwMjkwZmI5YTFhNDI5MC4uZGQ0YTc1MzZjNGQ0ZjFjMDg5ZmRjYTQ1MWQ5YTNk
MTJjOWM2MzRhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg4IEBACisyMDE4LTA3LTE2ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkg
aG9vayB0byBhbGxvdyBjbGllbnRzIHRvIHlpZWxkIGRvY3VtZW50IHBhcnNpbmcgYW5kIHNjcmlw
dCBleGVjdXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NzY4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDIyMDc0NTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNpbmcgYSBzaW5nbGUgd2Vi
IHByb2Nlc3MgZm9yIGJvdGggdGhlIFJlYWRlciBwYWdlIGFuZCBvcmlnaW5hbCB3ZWIgcGFnZSBv
biB3YXRjaE9TIGhhcyBtdWx0aXBsZSBiZW5lZml0cywKKyAgICAgICAgaW5jbHVkaW5nOiAoMSkg
YWxsb3dpbmcgdGhlIHVzZXIgdG8gYmFpbCBvdXQgb2YgUmVhZGVyIGFuZCB2aWV3IHRoZSBvcmln
aW5hbCB3ZWIgcGFnZSB3aXRob3V0IGhhdmluZyB0byBsb2FkIGl0CisgICAgICAgIGFnYWluLCBh
bmQgKDIpIGltcHJvdmluZyB0aGUgYnJpbmd1cCB0aW1lIG9mIHRoZSBSZWFkZXIgcGFnZSwgc2lu
Y2Ugc3VicmVzb3VyY2VzIGFyZSBhbHJlYWR5IGNhY2hlZCBpbiBwcm9jZXNzCisgICAgICAgIGFu
ZCB3ZSBkb24ndCBlYXQgdGhlIGFkZGl0aW9uYWwgY29zdCBvZiBhIHdlYiBwcm9jZXNzIGxhdW5j
aCBpZiBwcmV3YXJtaW5nIGZhaWxzLgorCisgICAgICAgIEhvd2V2ZXIsIHRoaXMgaGFzIHNvbWUg
ZHJhd2JhY2tzIGFzIHdlbGwsIG9uZSBvZiB3aGljaCBpcyB0aGF0IG1haW4gdGhyZWFkIHdvcmsg
YmVpbmcgZG9uZSBvbiBiZWhhbGYgb2YgdGhlCisgICAgICAgIG9yaWdpbmFsIHBhZ2UgbWF5IGNv
bnRlbmQgd2l0aCB3b3JrIGJlaW5nIGRvbmUgdG8gbG9hZCBhbmQgcmVuZGVyIHRoZSBSZWFkZXIg
cGFnZS4gVGhpcyBpcyBlc3BlY2lhbGx5IGJhZCB3aGVuCisgICAgICAgIHRoZSBwYWdlIGlzIGlu
IHRoZSBtaWRkbGUgb2YgZXhlY3V0aW5nIGhlYXZ5IHNjcmlwdCBhZnRlciBTYWZhcmkgaGFzIGFs
cmVhZHkgZGV0ZWN0ZWQgdGhhdCB0aGUgUmVhZGVyIHZlcnNpb24gb2YKKyAgICAgICAgdGhlIHBh
Z2UgaXMgYXZhaWxhYmxlLCBidXQgYmVmb3JlIGl0IGhhcyBmaW5pc2hlZCBsb2FkaW5nIHRoZSBS
ZWFkZXIgcGFnZS4gVGhlIHJlc3VsdCBpcyB0aGF0IHNjcmlwdCBvbiB0aGUKKyAgICAgICAgb3Jp
Z2luYWwgcGFnZSBtYXkgYmxvY2sgdGhlIGZpcnN0IHBhaW50IG9mIHRoZSBSZWFkZXIgcGFnZSAo
b24gTmV3IFlvcmsgVGltZXMgYXJ0aWNsZXMsIHRoaXMgb2Z0ZW4gbGVhZHMgdG8gYW4KKyAgICAg
ICAgYXBwYXJlbnQgcGFnZSBsb2FkIHRpbWUgb2YgMjUtMzUgc2Vjb25kcyBiZWZvcmUgdGhlIHVz
ZXIgc2VlcyBhbnl0aGluZyBiZXNpZGVzIGEgYmxhbmsgc2NyZWVuKS4KKworICAgICAgICBUbyBt
aXRpZ2F0ZSB0aGlzLCB3ZSBpbnRyb2R1Y2UgYSB3YXkgZm9yIGluamVjdGVkIGJ1bmRsZSBjbGll
bnRzIHRvIHlpZWxkIHBhcnNpbmcgYW5kIGFzeW5jIHNjcmlwdCBleGVjdXRpb24gb24KKyAgICAg
ICAgYSBkb2N1bWVudC4gVGhpcyBjYXBhYmlsaXR5IGlzIHN1cmZhY2VkIGluIHRoZSBmb3JtIG9m
IGFuIG9wYXF1ZSB0b2tlbiB3aGljaCBjbGllbnRzIG1heSByZXF1ZXN0IGZyb20gYQorICAgICAg
ICBXS0RPTURvY3VtZW50LiBDb25zdHJ1Y3Rpb24gb2YgdGhlIHRva2VuIGNhdXNlcyB0aGUgZG9j
dW1lbnQgdG8gYmVnaW4geWllbGRpbmcgYW5kIGRlZmVyIGV4ZWN1dGlvbiBvZiBwcmV2aW91c2x5
CisgICAgICAgIHNjaGVkdWxlZCBzY3JpcHRzLCBvbmx5IGlmIHRoZXJlIHdlcmUgbm8gYWN0aXZl
IHRva2VucyBvbiB0aGUgZG9jdW1lbnQgYWxyZWFkeS4gU2ltaWxhcmx5LCBkZXN0cnVjdGlvbiBv
ZiBhbGwKKyAgICAgICAgYWN0aXZlIHRva2VucyBvbiB0aGUgZG9jdW1lbnQgY2F1c2VzIGl0IHRv
IHN0b3AgeWllbGRpbmcgYW5kIHJlc3VtZSBleGVjdXRpb24gb2Ygc2NyaXB0cyBpZiBuZWVkZWQu
CisKKyAgICAgICAgVGVzdHM6ICBQYXJzZXJZaWVsZFRva2VuVGVzdHMuUHJldmVudERvY3VtZW50
TG9hZEJ5VGFraW5nUGFyc2VyWWllbGRUb2tlbgorICAgICAgICAgICAgICAgIFBhcnNlcllpZWxk
VG9rZW5UZXN0cy5UYWtlTXVsdGlwbGVQYXJzZXJZaWVsZFRva2VucworICAgICAgICAgICAgICAg
IFBhcnNlcllpZWxkVG9rZW5UZXN0cy5EZWZlcnJlZFNjcmlwdEV4ZWN1dGVzQmVmb3JlRG9jdW1l
bnRMb2FkV2hlblRha2luZ1BhcnNlcllpZWxkVG9rZW4KKworICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW1wbGljaXRPcGVuKToKKworICAg
ICAgICBJZiB0aGUgcGFyc2VyIHlpZWxkIHRva2VuIHdhcyB0YWtlbiBiZWZvcmUgdGhlIGRvY3Vt
ZW50J3MgcGFyc2VyIHdhcyBjcmVhdGVkLCB0ZWxsIHRoZSBwYXJzZXIncyBzY2hlZHVsZXIgdG8K
KyAgICAgICAgc3RhcnQgeWllbGRpbmcgaW1tZWRpYXRlbHkgYWZ0ZXIgY3JlYXRpb24uCisKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpQYXJzZXJZaWVsZFRva2VuOjpQYXJzZXJZaWVsZFRv
a2VuKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjpQYXJzZXJZaWVsZFRva2VuOjp+UGFy
c2VyWWllbGRUb2tlbik6CisgICAgICAgICogZG9tL0RvY3VtZW50Lmg6CisKKyAgICAgICAgSW50
cm9kdWNlIGEgcGFyc2VyIHlpZWxkIGNvdW50IHRvIERvY3VtZW50OyBhcyBsb25nIGFzIHRoaXMg
Y291bnQgaXMgZ3JlYXRlciB0aGFuIDAsIHdlIGNvbnNpZGVyIHRoZSBEb2N1bWVudCB0bworICAg
ICAgICBoYXZlIGFjdGl2ZSB5aWVsZCB0b2tlbnMuIFdoZW4gY29uc3RydWN0aW5nIG9yIGRlc3Ry
b3lpbmcgYSBQYXJzZXJZaWVsZFRva2VuLCB3ZSBpbmNyZW1lbnQgYW5kIGRlY3JlbWVudCB0aGUK
KyAgICAgICAgcGFyc2VyIHlpZWxkIGNvdW50IChyZXNwZWN0aXZlbHkpLgorCisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6Y3JlYXRlUGFyc2VyWWllbGRUb2tlbik6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudDo6aGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbiBjb25zdCk6CisgICAgICAg
ICogZG9tL0RvY3VtZW50UGFyc2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFBhcnNl
cjo6ZGlkQmVnaW5ZaWVsZGluZ1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFBh
cnNlcjo6ZGlkRW5kWWllbGRpbmdQYXJzZXIpOgorCisgICAgICAgIEhvb2tzIGZvciBEb2N1bWVu
dCB0byB0ZWxsIGl0cyBwYXJzZXIgdGhhdCB3ZSd2ZSBzdGFydGVkIG9yIGZpbmlzaGVkIHlpZWxk
aW5nLiBUaGlzIHVwZGF0ZXMgYSBmbGFnIG9uIHRoZQorICAgICAgICBwYXJzZXIncyBzY2hlZHVs
ZXIgd2hpY2ggaXMgY29uc3VsdGVkIHdoZW4gd2UgZGV0ZXJtaW5lIHdoZXRoZXIgdG8geWllbGQg
YmVmb3JlIGEgcHVtcGluZyB0b2tlbiBvciBleGVjdXRpbmcKKyAgICAgICAgc2NyaXB0LgorCisg
ICAgICAgICogZG9tL1NjcmlwdFJ1bm5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRS
dW5uZXI6OnJlc3VtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRSdW5uZXI6Om5vdGlmeUZp
bmlzaGVkKToKKyAgICAgICAgKiBkb20vU2NyaXB0UnVubmVyLmg6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JpcHRSdW5uZXI6OmRpZEJlZ2luWWllbGRpbmdQYXJzZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0UnVubmVyOjpkaWRFbmRZaWVsZGluZ1BhcnNlcik6CisKKyAgICAgICAgSG9va3Mg
Zm9yIERvY3VtZW50IHRvIHRlbGwgaXRzIFNjcmlwdFJ1bm5lciB0aGF0IHdlJ3ZlIHN0YXJ0ZWQg
b3IgZmluaXNoZWQgeWllbGRpbmcuIFRoZXNlIHdyYXAgY2FsbHMgdG8gc3VzcGVuZAorICAgICAg
ICBhbmQgcmVzdW1lLgorCisgICAgICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxEb2N1bWVudFBhcnNlcjo6ZGlkQmVnaW5ZaWVs
ZGluZ1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQYXJzZXI6OmRpZEVu
ZFlpZWxkaW5nUGFyc2VyKToKKworICAgICAgICBQbHVtYiB0byBkaWRCZWdpbi9kaWRFbmQgY2Fs
bHMgdG8gdGhlIEhUTUxQYXJzZXJTY2hlZHVsZXIuCisKKyAgICAgICAgKiBodG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuaDoKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1MUGFyc2VyU2No
ZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXJTY2hlZHVsZXI6OnNob3Vs
ZFlpZWxkQmVmb3JlRXhlY3V0aW5nU2NyaXB0KToKKyAgICAgICAgKiBodG1sL3BhcnNlci9IVE1M
UGFyc2VyU2NoZWR1bGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVy
OjpzaG91bGRZaWVsZEJlZm9yZVRva2VuKToKKworICAgICAgICBDb25zdWx0IGEgZmxhZyB3aGVu
IGRldGVybWluaW5nIHdoZXRoZXIgdG8geWllbGQuIFRoaXMgZmxhZyBpcyBzZXQgdG8gdHJ1ZSBv
bmx5IHdoaWxlIHRoZSBkb2N1bWVudCBoYXMgYW4gYWN0aXZlCisgICAgICAgIHBhcnNlciB5aWVs
ZCB0b2tlbi4KKworICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6ZGlkQmVn
aW5ZaWVsZGluZ1BhcnNlcik6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFyc2VyU2NoZWR1bGVy
OjpkaWRFbmRZaWVsZGluZ1BhcnNlcik6CisKKyAgICAgICAgV2hlbiB0aGUgRG9jdW1lbnQgYmVn
aW5zIHlpZWxkaW5nIGR1ZSB0byBhY3RpdmUgdG9rZW5zIG9yIGVuZHMgeWllbGRpbmcgYWZ0ZXIg
aXQgbG9zZXMgYWxsIG9mIGl0cyB5aWVsZCB0b2tlbnMsCisgICAgICAgIHVwZGF0ZSBhIGZsYWcg
b24gdGhlIHBhcnNlciBzY2hlZHVsZXIuCisKIDIwMTgtMDctMTQgIFNpbW9uIEZyYXNlciAgPHNp
bW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgU2hyaW5rIHNvbWUgc3R5bGUtcmVsYXRl
ZCBjbGFzc2VzIGFuZCBlbnVtcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAwOGE5ZjhmOWJkNzgzMDE2OWU2MzEwODEw
NDM2NjEzNGNjOWZhODYzLi5mZmY5ZGQxMTNhZjQ1ZjA4ZDhkN2VhYmJiNWI2ZjkzN2Y4ZmE4NTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDE4LTA3LTE2ICBXZW5zb24gSHNpZWggIDx3
ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkgaG9vayB0byBhbGxv
dyBjbGllbnRzIHRvIHlpZWxkIGRvY3VtZW50IHBhcnNpbmcgYW5kIHNjcmlwdCBleGVjdXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzY4Mgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDIyMDc0NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGhvb2tzIHRvIFdLRG9jdW1lbnQgdG8gY3Jl
YXRlIGFuZCByZXR1cm4gYW4gaW50ZXJuYWwgV0tET01Eb2N1bWVudFBhcnNlcllpZWxkVG9rZW4g
b2JqZWN0LCB3aG9zZSBsaWZldGltZSBpcworICAgICAgICB0aWVkIHRvIGEgZG9jdW1lbnQgcGFy
c2VyIHlpZWxkIHRva2VuLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NRG9jdW1lbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbToKKyAgICAgICAgKC1bV0tET01Eb2N1bWVudFBh
cnNlcllpZWxkVG9rZW4gaW5pdFdpdGhEb2N1bWVudDpdKToKKyAgICAgICAgKC1bV0tET01Eb2N1
bWVudCBwYXJzZXJZaWVsZFRva2VuXSk6CisKIDIwMTgtMDctMTMgIFRpbW90aHkgSGF0Y2hlciAg
PHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBfZHJhd3NCYWNrZ3JvdW5kIHRvIFdL
V2ViVmlld0NvbmZpZ3VyYXRpb24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlOWY0ODIz
ZWFiYmZkYjU3MTY0MmVjNjlkNzMzM2JlYzYyMWY1YWFmLi40MGFiMGJmYjdlMzAwODA3ZjZmNWMz
ODE2ZTE0MzFkMmExN2Q3YTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI2ODYsNiAr
MjY4NiwxMCBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNpdE9wZW4oKQogCiAgICAgY2FuY2VsUGFy
c2luZygpOwogICAgIG1fcGFyc2VyID0gY3JlYXRlUGFyc2VyKCk7CisKKyAgICBpZiAoaGFzQWN0
aXZlUGFyc2VyWWllbGRUb2tlbigpKQorICAgICAgICBtX3BhcnNlci0+ZGlkQmVnaW5ZaWVsZGlu
Z1BhcnNlcigpOworCiAgICAgc2V0UGFyc2luZyh0cnVlKTsKICAgICBzZXRSZWFkeVN0YXRlKExv
YWRpbmcpOwogfQpAQCAtNjg5Nyw2ICs2OTAxLDMxIEBAIHZvaWQgRG9jdW1lbnQ6OmRlY3JlbWVu
dEFjdGl2ZVBhcnNlckNvdW50KCkKICAgICBmcmFtZSgpLT5sb2FkZXIoKS5jaGVja0xvYWRDb21w
bGV0ZSgpOwogfQogCitEb2N1bWVudDo6UGFyc2VyWWllbGRUb2tlbjo6UGFyc2VyWWllbGRUb2tl
bihEb2N1bWVudCYgZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3Vt
ZW50KSkKK3sKKyAgICBpZiAoKytkb2N1bWVudC5tX3BhcnNlcllpZWxkVG9rZW5Db3VudCAhPSAx
KQorICAgICAgICByZXR1cm47CisKKyAgICBkb2N1bWVudC5zY3JpcHRSdW5uZXIoKS0+ZGlkQmVn
aW5ZaWVsZGluZ1BhcnNlcigpOworICAgIGlmIChhdXRvKiBwYXJzZXIgPSBkb2N1bWVudC5wYXJz
ZXIoKSkKKyAgICAgICAgcGFyc2VyLT5kaWRCZWdpbllpZWxkaW5nUGFyc2VyKCk7Cit9CisKK0Rv
Y3VtZW50OjpQYXJzZXJZaWVsZFRva2VuOjp+UGFyc2VyWWllbGRUb2tlbigpCit7CisgICAgaWYg
KCFtX2RvY3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9kb2N1bWVudC0+
bV9wYXJzZXJZaWVsZFRva2VuQ291bnQpOworICAgIGlmICgtLW1fZG9jdW1lbnQtPm1fcGFyc2Vy
WWllbGRUb2tlbkNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RvY3VtZW50LT5zY3Jp
cHRSdW5uZXIoKS0+ZGlkRW5kWWllbGRpbmdQYXJzZXIoKTsKKyAgICBpZiAoYXV0byogcGFyc2Vy
ID0gbV9kb2N1bWVudC0+cGFyc2VyKCkpCisgICAgICAgIHBhcnNlci0+ZGlkRW5kWWllbGRpbmdQ
YXJzZXIoKTsKK30KKwogc3RhdGljIFJlbmRlckVsZW1lbnQqIG5lYXJlc3RDb21tb25Ib3ZlckFu
Y2VzdG9yKFJlbmRlckVsZW1lbnQqIG9iajEsIFJlbmRlckVsZW1lbnQqIG9iajIpCiB7CiAgICAg
aWYgKCFvYmoxIHx8ICFvYmoyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBkYjQ1OTc5NTkyODYx
ZTRlYmVjNDNkYjZiYTI1YTQ2ZDYzZTM5YThjLi4xZDk1OTIwZjY1ZDkwYzJmYWUzMWEwOWU0ZGVl
NTRjMDhmYmJlMzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMTI2Niw2ICsxMjY2LDIyIEBA
IHB1YmxpYzoKICAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVBhcnNlckNvdW50KCkgeyArK21fYWN0
aXZlUGFyc2VyQ291bnQ7IH0KICAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVBhcnNlckNvdW50KCk7
CiAKKyAgICBjbGFzcyBQYXJzZXJZaWVsZFRva2VuIHsKKyAgICBwdWJsaWM6CisgICAgICAgIFdF
QkNPUkVfRVhQT1JUIFBhcnNlcllpZWxkVG9rZW4oRG9jdW1lbnQmKTsKKyAgICAgICAgV0VCQ09S
RV9FWFBPUlQgflBhcnNlcllpZWxkVG9rZW4oKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFdl
YWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CisgICAgfTsKKworICAgIHN0ZDo6dW5pcXVlX3B0
cjxQYXJzZXJZaWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRva2VuKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPFBhcnNlcllpZWxkVG9rZW4+KCp0aGlzKTsKKyAg
ICB9CisKKyAgICBib29sIGhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSBjb25zdCB7IHJldHVy
biBtX3BhcnNlcllpZWxkVG9rZW5Db3VudDsgfQorCiAgICAgRG9jdW1lbnRTaGFyZWRPYmplY3RQ
b29sKiBzaGFyZWRPYmplY3RQb29sKCkgeyByZXR1cm4gbV9zaGFyZWRPYmplY3RQb29sLmdldCgp
OyB9CiAKICAgICB2b2lkIGludmFsaWRhdGVNYXRjaGVkUHJvcGVydGllc0NhY2hlQW5kRm9yY2VT
dHlsZVJlY2FsYygpOwpAQCAtMTU3OCw2ICsxNTk0LDggQEAgcHJpdmF0ZToKICAgICBSZWY8Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAgICAgUmVmUHRyPERv
Y3VtZW50UGFyc2VyPiBtX3BhcnNlcjsKIAorICAgIHVuc2lnbmVkIG1fcGFyc2VyWWllbGRUb2tl
bkNvdW50IHsgMCB9OworCiAgICAgLy8gRG9jdW1lbnQgVVJMcy4KICAgICBVUkwgbV91cmw7IC8v
IERvY3VtZW50LlVSTDogVGhlIFVSTCBmcm9tIHdoaWNoIHRoaXMgZG9jdW1lbnQgd2FzIHJldHJp
ZXZlZC4KICAgICBVUkwgbV9iYXNlVVJMOyAvLyBOb2RlLmJhc2VVUkk6IFRoZSBVUkwgdG8gdXNl
IHdoZW4gcmVzb2x2aW5nIHJlbGF0aXZlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNl
ci5oCmluZGV4IGNhYzMzN2Q3MjE4MGEyNDRjMjllMWI2MjFiMDIwNDNiNWJhYjJlY2EuLjg1ZDYy
MDlmMWJlNWYwY2RmYzE1MjAxZDQzYjM4MzU5ZjZiMzhhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudFBhcnNlci5oCkBAIC05Niw2ICs5Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c3VzcGVuZFNjaGVkdWxlZFRhc2tzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVNjaGVkdWxl
ZFRhc2tzKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5ZaWVsZGluZ1BhcnNlcigpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRZaWVsZGluZ1BhcnNlcigpIHsgfQorCiBwcm90ZWN0
ZWQ6CiAgICAgZXhwbGljaXQgRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vU2NyaXB0UnVubmVyLmNwcAppbmRleCA3M2ZiOGIwNGRlNDA1NzAxZDk3ZjYyZTZjOWE0NTM5
MDNjMmRmN2U5Li42MmU1NmYyZmI0OWJhNGEwNDBiMjMxYzdlNTc4Mjc2MmM4ZjhhZmU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIFNjcmlw
dFJ1bm5lcjo6c3VzcGVuZCgpCiAKIHZvaWQgU2NyaXB0UnVubmVyOjpyZXN1bWUoKQogewotICAg
IGlmIChoYXNQZW5kaW5nU2NyaXB0cygpKQorICAgIGlmIChoYXNQZW5kaW5nU2NyaXB0cygpICYm
ICFtX2RvY3VtZW50Lmhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSkKICAgICAgICAgbV90aW1l
ci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIApAQCAtOTUsNyArOTUsOSBAQCB2b2lkIFNjcmlwdFJ1
bm5lcjo6bm90aWZ5RmluaXNoZWQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkKICAgICAg
ICAgbV9zY3JpcHRzVG9FeGVjdXRlU29vbi5hcHBlbmQobV9wZW5kaW5nQXN5bmNTY3JpcHRzLnRh
a2UocGVuZGluZ1NjcmlwdCktPnB0cigpKTsKICAgICB9CiAgICAgcGVuZGluZ1NjcmlwdC5jbGVh
ckNsaWVudCgpOwotICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisKKyAgICBpZiAoIW1f
ZG9jdW1lbnQuaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigpKQorICAgICAgICBtX3RpbWVyLnN0
YXJ0T25lU2hvdCgwX3MpOwogfQogCiB2b2lkIFNjcmlwdFJ1bm5lcjo6dGltZXJGaXJlZCgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0UnVubmVyLmgKaW5kZXggOGU4ZjQ4NmFkMWRiMGRiYzBkMGJlNjQ1MjEx
MWVlZDc3MGYxNTMxMi4uNjdlZWNiZTgwOWNkMDQzZDNiYWIxNzZmMjE5MGNmNGYyOTNjZTlmMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAg
ICAgdm9pZCByZXN1bWUoKTsKICAgICB2b2lkIG5vdGlmeVNjcmlwdFJlYWR5KFNjcmlwdEVsZW1l
bnQqLCBFeGVjdXRpb25UeXBlKTsKIAorICAgIHZvaWQgZGlkQmVnaW5ZaWVsZGluZ1BhcnNlcigp
IHsgc3VzcGVuZCgpOyB9CisgICAgdm9pZCBkaWRFbmRZaWVsZGluZ1BhcnNlcigpIHsgcmVzdW1l
KCk7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMzRhMTJh
Mjk3MTA2ZDVhOTQxMGNiNjFhMzM4MmQzOWY0YWI5Yjg3NS4uYzljYzNhYzkxZTA4MWZjNGFiMjc2
YzFhYWNlZmZmNDBjNzJmM2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJz
ZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xNDgsNiArMTQ4LDE2IEBAIGlubGluZSBib29s
IEhUTUxEb2N1bWVudFBhcnNlcjo6c2hvdWxkRGVsYXlFbmQoKSBjb25zdAogICAgIHJldHVybiBp
blB1bXBTZXNzaW9uKCkgfHwgaXNXYWl0aW5nRm9yU2NyaXB0cygpIHx8IGlzU2NoZWR1bGVkRm9y
UmVzdW1lKCkgfHwgaXNFeGVjdXRpbmdTY3JpcHQoKTsKIH0KIAordm9pZCBIVE1MRG9jdW1lbnRQ
YXJzZXI6OmRpZEJlZ2luWWllbGRpbmdQYXJzZXIoKQoreworICAgIG1fcGFyc2VyU2NoZWR1bGVy
LT5kaWRCZWdpbllpZWxkaW5nUGFyc2VyKCk7Cit9CisKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2Vy
OjpkaWRFbmRZaWVsZGluZ1BhcnNlcigpCit7CisgICAgbV9wYXJzZXJTY2hlZHVsZXItPmRpZEVu
ZFlpZWxkaW5nUGFyc2VyKCk7Cit9CisKIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjppc1BhcnNp
bmdGcmFnbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJlZUJ1aWxkZXItPmlzUGFyc2lu
Z0ZyYWdtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
RG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVu
dFBhcnNlci5oCmluZGV4IDlhNzlkNDRjNGZiODVlZWFjMTIyNWI1MmRkMGRlNTdkNTYzNjdlNWUu
Ljk5OTBkOGI4ZDBjMTIwZjNmNGNkYjk4YjkyNDY0ZDNhMWEwNDQ3MWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0xMjEsNiArMTIx
LDkgQEAgcHJpdmF0ZToKICAgICBib29sIGluUHVtcFNlc3Npb24oKSBjb25zdDsKICAgICBib29s
IHNob3VsZERlbGF5RW5kKCkgY29uc3Q7CiAKKyAgICB2b2lkIGRpZEJlZ2luWWllbGRpbmdQYXJz
ZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEVuZFlpZWxkaW5nUGFyc2VyKCkgZmluYWw7CisKICAg
ICBIVE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgSFRNTElucHV0U3RyZWFtIG1faW5w
dXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJT
Y2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVk
dWxlci5jcHAKaW5kZXggMzViNmE1OWQ4NzIyMDNlODE2NTdiM2IxMWQ1MDYzMDM0ZmE2ZGMzZS4u
OTZlZjc2NzQwZWRkNDc1NGJjNjE2OTE0ZDg2ZmE4NGY3OTcxNWRjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKQEAgLTExMSw2
ICsxMTEsMTAgQEAgYm9vbCBIVE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJlZm9yZUV4
ZWN1dGluZ1NjcmlwdChQdW1wU2Vzc2lvbiYgc2Vzc2lvbikKICAgICBSZWZQdHI8RG9jdW1lbnQ+
IGRvY3VtZW50ID0gbV9wYXJzZXIuZG9jdW1lbnQoKTsKICAgICBib29sIG5lZWRzRmlyc3RQYWlu
dCA9IGRvY3VtZW50LT52aWV3KCkgJiYgIWRvY3VtZW50LT52aWV3KCktPmhhc0V2ZXJQYWludGVk
KCk7CiAgICAgc2Vzc2lvbi5kaWRTZWVTY3JpcHQgPSB0cnVlOworCisgICAgaWYgKFVOTElLRUxZ
KG1fZG9jdW1lbnRIYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VucykpCisgICAgICAgIHJldHVybiB0
cnVlOworCiAgICAgcmV0dXJuIG5lZWRzRmlyc3RQYWludCAmJiBkb2N1bWVudC0+aXNMYXlvdXRU
aW1lckFjdGl2ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNl
ci9IVE1MUGFyc2VyU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
UGFyc2VyU2NoZWR1bGVyLmgKaW5kZXggYjU5MzRjZTkwNjdmMDY3MWFhOTlmMTJiNjE4MDlkYjA3
YWJlNTUxOC4uYTMyMWQyZWZjYTVjYmU3N2I1MzMyNjU4OWIyY2M3ODY2N2I2YTQ3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaApAQCAt
NjksNiArNjksOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChXZWJUaHJlYWRTaG91bGRZaWVsZCgp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKKyAgICAgICAgaWYgKFVOTElLRUxZ
KG1fZG9jdW1lbnRIYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VucykpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKwogICAgICAgICBpZiAoVU5MSUtFTFkoc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnMg
PiBudW1iZXJPZlRva2Vuc0JlZm9yZUNoZWNraW5nRm9yWWllbGQgfHwgc2Vzc2lvbi5kaWRTZWVT
Y3JpcHQpKQogICAgICAgICAgICAgcmV0dXJuIGNoZWNrRm9yWWllbGQoc2Vzc2lvbik7CiAKQEAg
LTgzLDYgKzg2LDkgQEAgcHVibGljOgogICAgIHZvaWQgc3VzcGVuZCgpOwogICAgIHZvaWQgcmVz
dW1lKCk7CiAKKyAgICB2b2lkIGRpZEJlZ2luWWllbGRpbmdQYXJzZXIoKSB7IG1fZG9jdW1lbnRI
YXNBY3RpdmVQYXJzZXJZaWVsZFRva2VucyA9IHRydWU7IH0KKyAgICB2b2lkIGRpZEVuZFlpZWxk
aW5nUGFyc2VyKCkgeyBtX2RvY3VtZW50SGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbnMgPSBmYWxz
ZTsgfQorCiBwcml2YXRlOgogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBudW1iZXJPZlRva2Vu
c0JlZm9yZUNoZWNraW5nRm9yWWllbGQgPSA0MDk2OyAvLyBQZXJmb3JtYW5jZSBvcHRpbWl6YXRp
b24KIApAQCAtMTEyLDYgKzExOCw3IEBAIHByaXZhdGU6CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAog
ICAgIGJvb2wgbV9zdXNwZW5kZWQ7CiAjZW5kaWYKKyAgICBib29sIG1fZG9jdW1lbnRIYXNBY3Rp
dmVQYXJzZXJZaWVsZFRva2VucyB7IGZhbHNlIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTURvY3VtZW50LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50LmgKaW5kZXggOWE1NGFiN2E4ZmY3YjMxODM1
ZTkzZjU3NjEzOGFlYmRkMTM0NjBkNi4uZWE4OGEyNWZlZjhiY2JmY2ViNzE3YjQzMzQxZjFlZGI1
ZjJlNDA3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQuaApAQCAtNDIsNiArNDIsOCBA
QCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEwLjEwKSwgaW9zKDguMCkpCiAKIEBwcm9wZXJ0
eShyZWFkb25seSkgV0tET01FbGVtZW50ICpib2R5OwogCistIChpZClwYXJzZXJZaWVsZFRva2Vu
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwor
CiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9j
dW1lbnQubW0KaW5kZXggM2FkMDRjNzFkODM2M2YwY2NmNTQ5MmFmM2UyMzMyNjhjMTkzN2M4My4u
NTQwZTY0OTk3MDY1NGI1MTAxYjg3M2Q0MzUwOWI1MmU0YzQzODc1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVu
dC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21h
Yy9XS0RPTURvY3VtZW50Lm1tCkBAIC0zNSw2ICszNSwyMyBAQAogI2ltcG9ydCA8V2ViQ29yZS9U
ZXh0Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL21hcmt1cC5oPgogCitAaW50ZXJmYWNlIFdLRE9NRG9j
dW1lbnRQYXJzZXJZaWVsZFRva2VuIDogTlNPYmplY3QKKworQGVuZAorCitAaW1wbGVtZW50YXRp
b24gV0tET01Eb2N1bWVudFBhcnNlcllpZWxkVG9rZW4geworICAgIHN0ZDo6dW5pcXVlX3B0cjxX
ZWJDb3JlOjpEb2N1bWVudDo6UGFyc2VyWWllbGRUb2tlbj4gX3Rva2VuOworfQorCistIChpbnN0
YW5jZXR5cGUpaW5pdFdpdGhEb2N1bWVudDooV2ViQ29yZTo6RG9jdW1lbnQmKWRvY3VtZW50Cit7
CisgICAgaWYgKHNlbGYgPSBbc3VwZXIgaW5pdF0pCisgICAgICAgIF90b2tlbiA9IGRvY3VtZW50
LmNyZWF0ZVBhcnNlcllpZWxkVG9rZW4oKTsKKyAgICByZXR1cm4gc2VsZjsKK30KKworQGVuZAor
CiBAaW1wbGVtZW50YXRpb24gV0tET01Eb2N1bWVudAogCiAtIChXS0RPTUVsZW1lbnQgKiljcmVh
dGVFbGVtZW50OihOU1N0cmluZyAqKXRhZ05hbWUKQEAgLTY2LDYgKzgzLDExIEBACiAgICAgcmV0
dXJuIFdlYktpdDo6dG9XS0RPTU5vZGUoY3JlYXRlRnJhZ21lbnRGcm9tVGV4dChkb3duY2FzdDxX
ZWJDb3JlOjpEb2N1bWVudD4oKl9pbXBsKS5jcmVhdGVSYW5nZSgpLmdldCgpLCB0ZXh0KS5wdHIo
KSk7CiB9CiAKKy0gKGlkKXBhcnNlcllpZWxkVG9rZW4KK3sKKyAgICByZXR1cm4gW1tbV0tET01E
b2N1bWVudFBhcnNlcllpZWxkVG9rZW4gYWxsb2NdIGluaXRXaXRoRG9jdW1lbnQ6ZG93bmNhc3Q8
V2ViQ29yZTo6RG9jdW1lbnQ+KCpfaW1wbCldIGF1dG9yZWxlYXNlXTsKK30KKwogQGVuZAogCiAj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rv
b2xzL0NoYW5nZUxvZwppbmRleCAzZmJiNjdiOTc1ZGYwMmQ4OGFjM2Y0NzhjYjgwY2EwYjU1Zjc4
NDAyLi5jZGJiNWQ1ZDY2ZjQwZWQ2ZWFhMzkzNmFjNzU5YWM1ZjE3ZmQ4ZWNjIDEwMDY0NAotLS0g
YS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTgtMDctMTYgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAg
ICAgICAgQWRkIGFuIFNQSSBob29rIHRvIGFsbG93IGNsaWVudHMgdG8geWllbGQgZG9jdW1lbnQg
cGFyc2luZyBhbmQgc2NyaXB0IGV4ZWN1dGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3NjgyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjIw
NzQ1Mz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGQgYSBmZXcgdGVzdHMgdG8gZXhlcmNpc2UgdGhlIG5ldyBkb2N1bWVudCB5aWVsZCB0b2tlbiBT
UEksIHZlcmlmeWluZyB0aGF0IGNsaWVudHMgY2FuIHVzZSB0aGUgU1BJIHRvIGRlZmVyCisgICAg
ICAgIGRvY3VtZW50IGxvYWQsIGFuZCB0aGF0IGRvaW5nIHNvIGRvZXNuJ3QgY2F1c2UgZGVmZXJy
ZWQgYHNjcmlwdGAgdG8gZXhlY3V0ZSBpbiB0aGUgd3Jvbmcgb3JkZXIgKGkuZS4gYmVmb3JlCisg
ICAgICAgIHN5bmNocm9ub3VzIHNjcmlwdCwgb3IgYWZ0ZXIgIkRPTUNvbnRlbnRMb2FkZWQiKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFy
c2VyWWllbGRUb2tlblBsdWdJbi5tbTogQWRkZWQuCisgICAgICAgICgtW1BhcnNlcllpZWxkVG9r
ZW5QbHVnSW4gdGFrZURvY3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2FkXSk6Cisg
ICAgICAgICgtW1BhcnNlcllpZWxkVG9rZW5QbHVnSW4gcmVsZWFzZURvY3VtZW50UGFyc2VyVG9r
ZW5dKToKKyAgICAgICAgKC1bUGFyc2VyWWllbGRUb2tlblBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZENvbW1pdExvYWRGb3JGcmFtZTpdKToKKyAgICAg
ICAgKC1bUGFyc2VyWWllbGRUb2tlblBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luOmRpZENyZWF0ZUJy
b3dzZXJDb250ZXh0Q29udHJvbGxlcjpdKToKKyAgICAgICAgKC1bUGFyc2VyWWllbGRUb2tlblBs
dWdJbiB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZEZpbmlzaERv
Y3VtZW50TG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtQYXJzZXJZaWVsZFRva2VuUGx1Z0lu
IHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkRmluaXNoTG9hZEZv
ckZyYW1lOl0pOgorCisgICAgICAgIEluamVjdGVkIGJ1bmRsZSBvYmplY3QgdGhhdCBrbm93cyBo
b3cgdG8gdGFrZSBhbmQgcmVsZWFzZSBtdWx0aXBsZSBkb2N1bWVudCBwYXJzZXIgeWllbGQgdG9r
ZW5zLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZ
aWVsZFRva2VuVGVzdHMuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0lu
amVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5oLgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblRlc3RzLm1tOiBBZGRlZC4K
KyAgICAgICAgKCtbUGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IHdlYlZpZXddKToKKyAgICAg
ICAgKC1bUGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IGJ1bmRsZV0pOgorICAgICAgICAoLVtQ
YXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgZGlkRmluaXNoRG9jdW1lbnRMb2FkXSk6CisgICAg
ICAgICgtW1BhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyBkaWRGaW5pc2hMb2FkXSk6CisgICAg
ICAgICh3YWl0Rm9yRGVsYXkpOgorICAgICAgICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWw6IEFk
ZGVkLgorCisgICAgICAgIE5ldyB0ZXN0IEhUTUwgcGFnZSB0aGF0IGNvbnRhaW5zIGEgZGVmZXJy
ZWQgc2NyaXB0IGVsZW1lbnQsIGEgc3luY2hyb25vdXMgc2NyaXB0IGVsZW1lbnQsIGFub3RoZXIg
ZGVmZXJyZWQKKyAgICAgICAgc2NyaXB0IGVsZW1lbnQsIGFuZCB0aGVuIHNvbWUgdGV4dCwgaW1h
Z2VzLCBhbmQgbGlua3MuCisKIDIwMTgtMDctMTMgIFJvc3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNs
aW5nQHNvbnkuY29tPgogCiAgICAgICAgIFtXaW5DYWlyb10gcnVuLWFwaS10ZXN0cyBpcyB0aW1p
bmcgb3V0IGZvciBhbG1vc3QgYWxsIHRlc3QgY2FzZXMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggMWUyNzEyYjJkNjYzZTFmYmM3NGIyM2MwN2QyYWUxMjA3NjBkNDNhMC4uMzYwYmYwNzExYmNm
MmRhOWNkZjU5ZTEyN2Q3MjdhZGUyNDYwMmM5MCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAg
LTc4MSw2ICs3ODEsOSBAQAogCQlGNDNFM0JCRjIwREFEQTFFMDBBNEU3RUQgLyogV0tTY3JvbGxW
aWV3VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBGNDNFM0JCRTIwREFEQTFFMDBBNEU3RUQgLyogV0tTY3JvbGxWaWV3VGVzdHMubW0gKi87IH07
CiAJCUY0M0UzQkMxMjBEQURCQzUwMEE0RTdFRCAvKiBmaXhlZC1uYXYtYmFyLmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzRTNCQzAy
MERBREI4MDAwQTRFN0VEIC8qIGZpeGVkLW5hdi1iYXIuaHRtbCAqLzsgfTsKIAkJRjQ0NTFDNzYx
RUI4RkQ4OTAwMjBDNURBIC8qIHR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0NTFD
NzUxRUI4RkQ3QzAwMjBDNURBIC8qIHR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwg
Ki87IH07CisJCUY0NEM3OUZGMjBGOUU4NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVz
dHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRD
NzlGRTIwRjlFODcxMDAxNDQ3OEMgLyogUGFyc2VyWWllbGRUb2tlblRlc3RzLm1tICovOyB9Owor
CQlGNDRDN0EwMDIwRjlFRUJGMDAxNDQ3OEMgLyogUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEM3OUZCMjBG
OUU1MEMwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0luLm1tICovOyB9OworCQlGNDRD
N0EwNTIwRkFBRTNDMDAxNDQ3OEMgLyogdGV4dC13aXRoLWRlZmVycmVkLXNjcmlwdC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEM3
QTA0MjBGQUFFMzIwMDE0NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwgKi87
IH07CiAJCUY0NEQwNjQ1MUYzOTVDMjYwMDFBMEUyOSAvKiBlZGl0b3Itc3RhdGUtdGVzdC1oYXJu
ZXNzLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQ0RDA2NDQxRjM5NUMwRDAwMUEwRTI5IC8qIGVkaXRvci1zdGF0ZS10ZXN0LWhhcm5l
c3MuaHRtbCAqLzsgfTsKIAkJRjQ0RDA2NDcxRjM5NjI3QTAwMUEwRTI5IC8qIEVkaXRvclN0YXRl
VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDREMDY0NjFGMzk1QzREMDAxQTBFMjkgLyogRWRpdG9yU3RhdGVUZXN0cy5tbSAqLzsgfTsKIAkJ
RjQ0RDA2NEExRjM5NjJGMjAwMUEwRTI5IC8qIEVkaXRpbmdUZXN0SGFybmVzcy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEQwNjQ5MUYzOTYyRTMw
MDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0gKi87IH07CkBAIC04OTgsNyArOTAxLDYg
QEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRl
clNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCi0JCQkJNDZBRTVBMzcyMEY5MDY2RDAwRTA4NzNFIC8q
IFNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTMuc3FsaXRlMyBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQkxQTlFNTJDOTEzRTY1RUY0MDA2OTE3RjUgLyogMTgtY2hhcmFjdGVycy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTM3OTAyOEI5MTRGQUMyNEMwMDdFNkI0MyAv
KiBhY2NlcHRzRmlyc3RNb3VzZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTFDMkI4
MTg3MUM4OTI1QTAwMEE1NTI5RiAvKiBBaGVtLnR0ZiBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAg
LTExMjUsNiArMTEyNyw3IEBACiAJCQkJQkM5MDk3ODQxMjU1NzFDRjAwMDgzNzU2IC8qIHNpbXBs
ZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTUxRTVDNzAyMTkxOUMzQjIwMEQ4QjNF
MSAvKiBzaW1wbGUyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTFFNUM3MDMxOTE5
QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKKwkJCQk0
NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2ltcGxlU2VydmljZVdvcmtlclJlZ2lzdHJhdGlv
bnMtMy5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0RjQwNUJEMUQ0QzBEMUMw
MDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1sIGluIENv
cHkgUmVzb3VyY2VzICovLAogCQkJCUMwMUEyM0YyMTI2NjE1NjcwMEM5RUQ1NSAvKiBzcGFjZWJh
ci1zY3JvbGxpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlFMTk0RTFCRDE3N0U1
M0M3MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCkBAIC0xMTM4LDYgKzExNDEsNyBAQAogCQkJCTUyNEJCQ0ExMTlF
MzBDNzcwMDJGMUFGMSAvKiB0ZXN0Lm1wNCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk3QUU5
RTUwOTFBRTVBRThCMDBDRjg3NEIgLyogdGVzdC5wZGYgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJMkU5ODk2MTUxRDhGMDkzODAwNzM5ODkyIC8qIHRleHQtYW5kLXBhc3N3b3JkLWlucHV0cy5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUY0NEM3QTA1MjBGQUFFM0MwMDE0NDc4QyAv
KiB0ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJ
CQkJRjQxQUI5QUExRUY0Njk2QjAwODNGQTA4IC8qIHRleHRhcmVhLXRvLWlucHV0Lmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjQ0NTFDNzYxRUI4RkQ4OTAwMjBDNURBIC8qIHR3by1w
YXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJ
QzU0MEY3ODQxNTJFNUE5QTAwQTQwQzhDIC8qIHZlcmJvc2VNYXJrdXAuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLywKQEAgLTE5NzYsNiArMTk4MCwxMCBAQAogCQlGNDNFM0JCRTIwREFEQTFFMDBB
NEU3RUQgLyogV0tTY3JvbGxWaWV3VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS1Nj
cm9sbFZpZXdUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQzRTNCQzAy
MERBREI4MDAwQTRFN0VEIC8qIGZpeGVkLW5hdi1iYXIuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJmaXhlZC1u
YXYtYmFyLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDQ1MUM3NTFFQjhG
RDdDMDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUuaHRtbCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1s
Ijsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjQ0Qzc5RkIyMEY5RTUwQzAwMTQ0NzhD
IC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYXJz
ZXJZaWVsZFRva2VuUGx1Z0luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNDRD
NzlGRDIwRjlFODcxMDAxNDQ3OEMgLyogUGFyc2VyWWllbGRUb2tlblRlc3RzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBhcnNlcllpZWxkVG9rZW5UZXN0cy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGNDRDNzlGRTIwRjlFODcxMDAxNDQ3OEMgLyogUGFyc2VyWWllbGRUb2tlblRlc3RzLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gUGFyc2VyWWllbGRUb2tlblRlc3RzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNDRDN0EwNDIwRkFBRTMyMDAxNDQ3OEMgLyogdGV4dC13
aXRoLWRlZmVycmVkLXNjcmlwdC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInRl
eHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUY0NEQwNjQ0MUYzOTVDMEQwMDFBMEUyOSAvKiBlZGl0b3Itc3RhdGUtdGVzdC1oYXJuZXNz
Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAiZWRpdG9yLXN0YXRlLXRlc3QtaGFy
bmVzcy5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0RDA2NDYxRjM5NUM0
RDAwMUEwRTI5IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBFZGl0b3JTdGF0ZVRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGNDREMDY0ODFGMzk2MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRpbmdUZXN0SGFybmVzcy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI3NCw2ICsyMjgyLDkgQEAKIAkJCQkz
N0EyMkFBNTFEQ0FBMjcyMDBBRkJGQzQgLyogT2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50
c0FmdGVyQ3Jhc2gubW0gKi8sCiAJCQkJQ0VBNkNGMjIxOUNDRjVCRDAwNjRGNUE3IC8qIE9wZW5B
bmRDbG9zZVdpbmRvdy5tbSAqLywKIAkJCQlDRUJDQTEyRTFFM0E2NjAxMDBDNzMyOTMgLyogT3Zl
cnJpZGVDb250ZW50U2VjdXJpdHlQb2xpY3kubW0gKi8sCisJCQkJRjQ0Qzc5RkIyMEY5RTUwQzAw
MTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gKi8sCisJCQkJRjQ0Qzc5RkQyMEY5
RTg3MTAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5UZXN0cy5oICovLAorCQkJCUY0NEM3OUZF
MjBGOUU4NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gKi8sCiAJCQkJOUJD
QjdDMjYyMDEzMDYwMDAwM0U3QzBDIC8qIFBhc3RlSFRNTC5tbSAqLywKIAkJCQk5QkRDQ0Q4NTFG
N0QwQjA3MDAwMDlBMTggLyogUGFzdGVJbWFnZS5tbSAqLywKIAkJCQlGNDU3QTlCNjIwMkQ1Q0RD
MDBGN0U5RDUgLyogUGFzdGVNaXhlZENvbnRlbnQubW0gKi8sCkBAIC0yNjQzLDYgKzI2NTQsNyBA
QAogCQkJCTlCRDZEMzlGMUY3QjIwMjAwMEJENDk2MiAvKiBzdW5zZXQtaW4tY3VwZXJ0aW5vLTQw
MHB4LmdpZiAqLywKIAkJCQk5QkQ2RDM5RTFGN0IyMDFFMDBCRDQ5NjIgLyogc3Vuc2V0LWluLWN1
cGVydGluby02MDBweC5qcGcgKi8sCiAJCQkJMkU5ODk2MTQxRDhGMDkyQjAwNzM5ODkyIC8qIHRl
eHQtYW5kLXBhc3N3b3JkLWlucHV0cy5odG1sICovLAorCQkJCUY0NEM3QTA0MjBGQUFFMzIwMDE0
NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwgKi8sCiAJCQkJRjQxQUI5OTUx
RUY0NjkyQzAwODNGQTA4IC8qIHRleHRhcmVhLXRvLWlucHV0Lmh0bWwgKi8sCiAJCQkJRjQ0NTFD
NzUxRUI4RkQ3QzAwMjBDNURBIC8qIHR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwg
Ki8sCiAJCQkJNTE3MTRFQjIxQ0Y4Qzc2MTAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xl
YW51cC0xLmh0bWwgKi8sCkBAIC0zNzU5LDYgKzM3NzEsNyBAQAogCQkJCTdDQ0U3RUM3MUE0MTFB
N0UwMDQ0N0M0QyAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3Q0NFN0YwOTFBNDExQUU2MDA0NDdDNEMgLyogUGFyZW50RnJhbWUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwNTExRDBBNjQxODAwRkVCQ0YzIC8qIFBhcnNl
ZENvbnRlbnRSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNDRDNzlGRjIwRjlFODcxMDAx
NDQ3OEMgLyogUGFyc2VyWWllbGRUb2tlblRlc3RzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdGMEExQTQxMUFFNjAwNDQ3QzRDIC8qIFBhc3RlYm9hcmROb3RpZmljYXRpb25zLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJOUJDQjdDMjgyMDEzMDYwMDAwM0U3QzBDIC8qIFBhc3RlSFRNTC5tbSBp
biBTb3VyY2VzICovLAogCQkJCTlCRENDRDg3MUY3RDBCMDcwMDAwOUExOCAvKiBQYXN0ZUltYWdl
Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zOTY2LDYgKzM5NzksNyBAQAogCQkJCTUxOEVFNTE5MjBB
NzhDRTUwMEUwMjRGMyAvKiBEb3VibGVEZWZlcnNMb2FkaW5nUGx1Z2luLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUNCNUIzQzIxRkZDNTVDRjAwQzI3QkIwIC8qIEZyYW1lSGFuZGxlU2VyaWFsaXph
dGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTc5QzVENDMxMjA5RDc2ODMwMEYxRTdDQSAvKiBJ
bmplY3RlZEJ1bmRsZU5vZGVIYW5kbGVJc1RleHRGaWVsZC5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CUY0NEM3QTAwMjBGOUVFQkYwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0luLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQTEzRUJCQUIxQjg3NDM0NjAwMDk3MTEwIC8qIFBsYXRmb3JtVXRp
bGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTRGODFDRjFCREZGRDUzMDA0RTY3
MkUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlQbHVnSW4ubW0gaW4gU291cmNlcyAqLywKIAkJCQlB
MTJEREMwMjFFODM3QzI0MDBDRjZDQUUgLyogUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25zUGx1Z0lu
Lm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gYi9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjVmZTE5ODdhNzQyZjY0NjI1YmZhY2VmYTBhOWIwOTRlNDNiYjdhNwotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRU
b2tlblBsdWdJbi5tbQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW1wb3J0ICJj
b25maWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIlBhcnNlcllpZWxkVG9r
ZW5UZXN0cy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLRE9NRG9jdW1lbnQuaD4KKyNpbXBvcnQgPFdl
YktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQ
bHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
V0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVt
b3RlT2JqZWN0SW50ZXJmYWNlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0UmVn
aXN0cnkuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBQYXJzZXJZ
aWVsZFRva2VuUGx1Z0luIDogTlNPYmplY3QgPFdLV2ViUHJvY2Vzc1BsdWdJbiwgV0tXZWJQcm9j
ZXNzUGx1Z0luTG9hZERlbGVnYXRlLCBQYXJzZXJZaWVsZFRva2VuVGVzdEJ1bmRsZT4KK0BlbmQK
KworQGltcGxlbWVudGF0aW9uIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4geworICAgIFJldGFpblB0
cjxOU011dGFibGVBcnJheTxOU09iamVjdCAqPj4gX3BhcnNlcllpZWxkVG9rZW5zOworICAgIFJl
dGFpblB0cjxpZDxQYXJzZXJZaWVsZFRva2VuVGVzdFJ1bm5lcj4+IF90ZXN0UnVubmVyOworICAg
IFJldGFpblB0cjxXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI+IF9j
b250cm9sbGVyOworICAgIEJPT0wgX2xvYWRDb21taXR0ZWQ7CisgICAgTlNVSW50ZWdlciBfbnVt
YmVyT2ZUb2tlbnNUb1Rha2VBZnRlckNvbWl0dGluZ0xvYWQ7Cit9CisKKy0gKHZvaWQpdGFrZURv
Y3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2FkCit7CisgICAgaWYgKF9sb2FkQ29t
bWl0dGVkKQorICAgICAgICBbX3BhcnNlcllpZWxkVG9rZW5zIGFkZE9iamVjdDpbX2NvbnRyb2xs
ZXIgbWFpbkZyYW1lRG9jdW1lbnRdLnBhcnNlcllpZWxkVG9rZW5dOworICAgIGVsc2UKKyAgICAg
ICAgKytfbnVtYmVyT2ZUb2tlbnNUb1Rha2VBZnRlckNvbWl0dGluZ0xvYWQ7Cit9CisKKy0gKHZv
aWQpcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW4KK3sKKyAgICBpZiAoX2xvYWRDb21taXR0ZWQp
CisgICAgICAgIFtfcGFyc2VyWWllbGRUb2tlbnMgcmVtb3ZlT2JqZWN0QXRJbmRleDowXTsKKyAg
ICBlbHNlCisgICAgICAgIC0tX251bWJlck9mVG9rZW5zVG9UYWtlQWZ0ZXJDb21pdHRpbmdMb2Fk
OworfQorCistICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXI6
KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRyb2xsZXIg
ZGlkQ29tbWl0TG9hZEZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lCit7
CisgICAgX2xvYWRDb21taXR0ZWQgPSBZRVM7CisgICAgd2hpbGUgKF9udW1iZXJPZlRva2Vuc1Rv
VGFrZUFmdGVyQ29taXR0aW5nTG9hZCkgeworICAgICAgICBbc2VsZiB0YWtlRG9jdW1lbnRQYXJz
ZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdOworICAgICAgICAtLV9udW1iZXJPZlRva2Vuc1Rv
VGFrZUFmdGVyQ29taXR0aW5nTG9hZDsKKyAgICB9Cit9CisKKy0gKHZvaWQpd2ViUHJvY2Vzc1Bs
dWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKXBsdWdJbkNvbnRyb2xsZXIgZGlk
Q3JlYXRlQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXIgKilicm93c2VyQ29udGV4dENvbnRyb2xsZXIKK3sKKyAgICBfcGFy
c2VyWWllbGRUb2tlbnMgPSBhZG9wdE5TKFtOU011dGFibGVBcnJheSBuZXddKTsKKyAgICBfY29u
dHJvbGxlciA9IGJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjsKKyAgICBicm93c2VyQ29udGV4dENv
bnRyb2xsZXIubG9hZERlbGVnYXRlID0gc2VsZjsKKyAgICBbYnJvd3NlckNvbnRleHRDb250cm9s
bGVyLl9yZW1vdGVPYmplY3RSZWdpc3RyeSByZWdpc3RlckV4cG9ydGVkT2JqZWN0OnNlbGYgaW50
ZXJmYWNlOltfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVtb3RlT2JqZWN0SW50ZXJmYWNlV2l0
aFByb3RvY29sOkBwcm90b2NvbChQYXJzZXJZaWVsZFRva2VuVGVzdEJ1bmRsZSldXTsKKyAgICBf
dGVzdFJ1bm5lciA9IFticm93c2VyQ29udGV4dENvbnRyb2xsZXIuX3JlbW90ZU9iamVjdFJlZ2lz
dHJ5IHJlbW90ZU9iamVjdFByb3h5V2l0aEludGVyZmFjZTpbX1dLUmVtb3RlT2JqZWN0SW50ZXJm
YWNlIHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woUGFyc2VyWWll
bGRUb2tlblRlc3RSdW5uZXIpXV07Cit9CisKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dz
ZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250
cm9sbGVyKiljb250cm9sbGVyIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOihXS1dlYlBy
b2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lCit7CisgICAgW190ZXN0UnVubmVyIGRpZEZpbmlzaERv
Y3VtZW50TG9hZF07Cit9CisKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0
Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyKilj
b250cm9sbGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWUg
KilmcmFtZQoreworICAgIFtfdGVzdFJ1bm5lciBkaWRGaW5pc2hMb2FkXTsKK30KKworQGVuZAor
CisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuVGVzdHMuaCBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblRlc3RzLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMGE2Njg0M2E2N2ZhYTNmZDgzYjEyOTY0ZmFjMmY0Y2ZhN2JjNWQxZgotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2Vy
WWllbGRUb2tlblRlc3RzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEg
b25jZQorCitAcHJvdG9jb2wgUGFyc2VyWWllbGRUb2tlblRlc3RSdW5uZXIgPE5TT2JqZWN0Pgor
LSAodm9pZClkaWRGaW5pc2hEb2N1bWVudExvYWQ7CistICh2b2lkKWRpZEZpbmlzaExvYWQ7CitA
ZW5kCisKK0Bwcm90b2NvbCBQYXJzZXJZaWVsZFRva2VuVGVzdEJ1bmRsZSA8TlNPYmplY3Q+Cist
ICh2b2lkKXRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0ZXJDb21taXR0aW5nTG9hZDsKKy0gKHZv
aWQpcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW47CitAZW5kCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5UZXN0cy5tbSBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblRl
c3RzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmU1ZjQxMjE0NjE2ODU5ZDExN2RkNzNkNjRkNGRjN2JhMTE3OGI1
ODYKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENv
Y29hL1BhcnNlcllpZWxkVG9rZW5UZXN0cy5tbQpAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbXBvcnQgIlBhcnNlcllpZWxkVG9rZW5UZXN0cy5o
IgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
KyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRp
b25FeHRyYXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dL
UmVtb3RlT2JqZWN0UmVnaXN0cnkuaD4KKyNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgorI2ltcG9y
dCA8d3RmL1NlY29uZHMuaD4KKworQGludGVyZmFjZSBQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZp
ZXcgOiBUZXN0V0tXZWJWaWV3IDxQYXJzZXJZaWVsZFRva2VuVGVzdFJ1bm5lcj4KK0Bwcm9wZXJ0
eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBmaW5pc2hlZERvY3VtZW50TG9hZDsKK0Bwcm9w
ZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBmaW5pc2hlZExvYWQ7CitAZW5kCisKK0Bp
bXBsZW1lbnRhdGlvbiBQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgeworICAgIFJldGFpblB0
cjxpZCA8UGFyc2VyWWllbGRUb2tlblRlc3RCdW5kbGU+PiBfYnVuZGxlOworfQorCisrIChSZXRh
aW5QdHI8UGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3Pil3ZWJWaWV3Cit7CisgICAgYXV0byAq
Y29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRp
b25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIlBhcnNlcllpZWxkVG9rZW5QbHVnSW4iXTsKKyAg
ICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbUGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IGFs
bG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMjAwLCAyMDApIGNvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbl0pOworICAgIFtbd2ViVmlldyBfcmVtb3RlT2JqZWN0UmVnaXN0cnld
IHJlZ2lzdGVyRXhwb3J0ZWRPYmplY3Q6d2ViVmlldy5nZXQoKSBpbnRlcmZhY2U6W19XS1JlbW90
ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VXaXRoUHJvdG9jb2w6QHByb3Rv
Y29sKFBhcnNlcllpZWxkVG9rZW5UZXN0UnVubmVyKV1dOworICAgIHdlYlZpZXctPl9idW5kbGUg
PSBbW3dlYlZpZXcgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZW1vdGVPYmplY3RQcm94eVdpdGhJ
bnRlcmZhY2U6W19XS1JlbW90ZU9iamVjdEludGVyZmFjZSByZW1vdGVPYmplY3RJbnRlcmZhY2VX
aXRoUHJvdG9jb2w6QHByb3RvY29sKFBhcnNlcllpZWxkVG9rZW5UZXN0QnVuZGxlKV1dOworICAg
IHJldHVybiB3ZWJWaWV3OworfQorCistIChpZCA8UGFyc2VyWWllbGRUb2tlblRlc3RCdW5kbGU+
KWJ1bmRsZQoreworICAgIHJldHVybiBfYnVuZGxlLmdldCgpOworfQorCistICh2b2lkKWRpZEZp
bmlzaERvY3VtZW50TG9hZAoreworICAgIF9maW5pc2hlZERvY3VtZW50TG9hZCA9IFlFUzsKK30K
KworLSAodm9pZClkaWRGaW5pc2hMb2FkCit7CisgICAgX2ZpbmlzaGVkTG9hZCA9IFlFUzsKK30K
KworQGVuZAorCitzdGF0aWMgdm9pZCB3YWl0Rm9yRGVsYXkoU2Vjb25kcyBkZWxheSkKK3sKKyAg
ICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIGRpc3BhdGNoX2FmdGVyKGRpc3BhdGNo
X3RpbWUoRElTUEFUQ0hfVElNRV9OT1csIGRlbGF5Lm5hbm9zZWNvbmRzKCkpLCBkaXNwYXRjaF9n
ZXRfbWFpbl9xdWV1ZSgpLCBeeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9KTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCitURVNUKFBhcnNlcllpZWxkVG9r
ZW5UZXN0cywgUHJldmVudERvY3VtZW50TG9hZEJ5VGFraW5nUGFyc2VyWWllbGRUb2tlbikKK3sK
KyAgICBhdXRvIHdlYlZpZXcgPSBbUGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IHdlYlZpZXdd
OworICAgIFtbd2ViVmlldyBidW5kbGVdIHRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0ZXJDb21t
aXR0aW5nTG9hZF07CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsK
KworICAgIC8vIEdpdmUgdGhlIHdlYiB2aWV3IGEgY2hhbmNlIHRvIGxvYWQgdGhlIHBhZ2UuIElu
IHRoZSBjYXNlIHdoZXJlIHRoZSB0b2tlbiBmYWlscyB0byB5aWVsZCBkb2N1bWVudCBwYXJzaW5n
LCBpdCdzIHZlcnkgbGlrZWx5IHRoYXQKKyAgICAvLyB0aGUgZG9jdW1lbnQgd2lsbCBmaW5pc2gg
bG9hZGluZywgYW5kIHdlJ2xsIGZhaWwgdGhlIHRlc3QgZXhwZWN0YXRpb25zIGJlbG93LiBJbiB0
aGUgdW5saWtlbHkgZXZlbnQgd2hlcmUgcGFnZSBsb2FkIG1heSB0YWtlCisgICAgLy8gbG9uZ2Vy
IHRoYW4gMSBzZWNvbmQsIHRoaXMgdGVzdCBzaG91bGQgc3RpbGwgcGFzcy4KKyAgICB3YWl0Rm9y
RGVsYXkoMV9zKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgZmluaXNoZWREb2N1bWVudExv
YWRdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgZmluaXNoZWRMb2FkXSk7CisKKyAgICAv
LyBOb3csIGFsbG93IGRvY3VtZW50IHBhcnNpbmcgdG8gY29udGludWUsIGFuZCB3YWl0IGZvciB0
aGUgcGFnZSB0byBmaW5pc2ggbG9hZGluZy4KKyAgICBbW3dlYlZpZXcgYnVuZGxlXSByZWxlYXNl
RG9jdW1lbnRQYXJzZXJUb2tlbl07CisKKyAgICB3aGlsZSAoIVt3ZWJWaWV3IGZpbmlzaGVkTG9h
ZF0gfHwgIVt3ZWJWaWV3IGZpbmlzaGVkRG9jdW1lbnRMb2FkXSkKKyAgICAgICAgW1tOU1J1bkxv
b3AgY3VycmVudFJ1bkxvb3BdIHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgYmVmb3JlRGF0
ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XV07Cit9CisKK1RFU1QoUGFyc2VyWWllbGRUb2tlblRlc3Rz
LCBUYWtlTXVsdGlwbGVQYXJzZXJZaWVsZFRva2VucykKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBb
UGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IHdlYlZpZXddOworICAgIFtbd2ViVmlldyBidW5k
bGVdIHRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0ZXJDb21taXR0aW5nTG9hZF07CisgICAgW3dl
YlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJzaW1wbGUiXTsKKworICAgIHdhaXRGb3JEZWxheSgw
LjVfcyk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGZpbmlzaGVkRG9jdW1lbnRMb2FkXSk7
CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGZpbmlzaGVkTG9hZF0pOworCisgICAgW1t3ZWJW
aWV3IGJ1bmRsZV0gdGFrZURvY3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2FkXTsK
KyAgICBbW3dlYlZpZXcgYnVuZGxlXSByZWxlYXNlRG9jdW1lbnRQYXJzZXJUb2tlbl07CisKKyAg
ICB3YWl0Rm9yRGVsYXkoMC41X3MpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBmaW5pc2hl
ZERvY3VtZW50TG9hZF0pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBmaW5pc2hlZExvYWRd
KTsKKworICAgIFtbd2ViVmlldyBidW5kbGVdIHJlbGVhc2VEb2N1bWVudFBhcnNlclRva2VuXTsK
KworICAgIHdoaWxlICghW3dlYlZpZXcgZmluaXNoZWRMb2FkXSB8fCAhW3dlYlZpZXcgZmluaXNo
ZWREb2N1bWVudExvYWRdKQorICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9vcF0gcnVu
TW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0RhdGUgZGlzdGFudFBhc3Rd
XTsKK30KKworVEVTVChQYXJzZXJZaWVsZFRva2VuVGVzdHMsIERlZmVycmVkU2NyaXB0RXhlY3V0
ZXNCZWZvcmVEb2N1bWVudExvYWRXaGVuVGFraW5nUGFyc2VyWWllbGRUb2tlbikKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSBbUGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IHdlYlZpZXddOworCisg
ICAgW1t3ZWJWaWV3IGJ1bmRsZV0gdGFrZURvY3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRp
bmdMb2FkXTsKKyAgICBbd2ViVmlldyBsb2FkVGVzdFBhZ2VOYW1lZDpAInRleHQtd2l0aC1kZWZl
cnJlZC1zY3JpcHQiXTsKKworICAgIHdhaXRGb3JEZWxheSgwLjVfcyk7CisgICAgW1t3ZWJWaWV3
IGJ1bmRsZV0gcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW5dOworCisgICAgd2hpbGUgKCFbd2Vi
VmlldyBmaW5pc2hlZExvYWRdIHx8ICFbd2ViVmlldyBmaW5pc2hlZERvY3VtZW50TG9hZF0pCisg
ICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5Nb2RlOk5TRGVmYXVsdFJ1bkxv
b3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBkaXN0YW50UGFzdF1dOworCisgICAgLy8gVmVyaWZ5
IHRoYXQgc3luY2hyb25vdXMgc2NyaXB0IGlzIGV4ZWN1dGVkIGJlZm9yZSBkZWZlcnJlZCBzY3Jp
cHQgYW5kIGRlZmVycmVkIHNjcmlwdCBpcyBydW4gYmVmb3JlIGRvY3VtZW50IGxvYWQuCisgICAg
TlNBcnJheTxOU1N0cmluZyAqPiAqZXZlbnRNZXNzYWdlcyA9IFt3ZWJWaWV3IG9iamVjdEJ5RXZh
bHVhdGluZ0phdmFTY3JpcHQ6QCJ3aW5kb3cuZXZlbnRNZXNzYWdlcyJdOworICAgIEVYUEVDVF9F
UShldmVudE1lc3NhZ2VzLmNvdW50LCA4VSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJSdW5uaW5n
IHN5bmMiLCBldmVudE1lc3NhZ2VzWzBdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkxvYWRlZCBz
Y3JpcHQ6IHN5bmMiLCBldmVudE1lc3NhZ2VzWzFdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIlJ1
bm5pbmcgZGVmZXItYmVmb3JlIiwgZXZlbnRNZXNzYWdlc1syXSk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKCJMb2FkZWQgc2NyaXB0OiBkZWZlci1iZWZvcmUiLCBldmVudE1lc3NhZ2VzWzNdKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoIlJ1bm5pbmcgZGVmZXItYWZ0ZXIiLCBldmVudE1lc3NhZ2VzWzRd
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkxvYWRlZCBzY3JpcHQ6IGRlZmVyLWFmdGVyIiwgZXZl
bnRNZXNzYWdlc1s1XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJEb2N1bWVudCBmaW5pc2hlZCBs
b2FkaW5nIiwgZXZlbnRNZXNzYWdlc1s2XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJGaW5pc2hl
ZCBsb2FkaW5nIiwgZXZlbnRNZXNzYWdlc1s3XSk7Cit9CisKKyNlbmRpZiAvLyBXS19BUElfRU5B
QkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90
ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL3RleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41
ODk0MGIzMDQxMDI3ZDRiNjI2MWU5NDkzZDYxNTEwY2MxNWY1Y2E3Ci0tLSAvZGV2L251bGwKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90ZXh0LXdpdGgtZGVmZXJy
ZWQtc2NyaXB0Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4K
KzxoZWFkPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Ut
d2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZXZlbnRNZXNz
YWdlcyA9IFtdCisKKyAgICAgICAgZnVuY3Rpb24gc2NyaXB0TG9hZGVkKHNjcmlwdCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZXZlbnRNZXNzYWdlcy5wdXNoKGBMb2FkZWQgc2NyaXB0OiAke3Nj
cmlwdC5pZH1gKTsKKyAgICAgICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cisg
ICAgPHNjcmlwdD4KKyAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVu
dExvYWRlZCIsICgpID0+IGV2ZW50TWVzc2FnZXMucHVzaCgiRG9jdW1lbnQgZmluaXNoZWQgbG9h
ZGluZyIpKTsKKyAgICAgICAgYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICgpID0+IGV2ZW50TWVz
c2FnZXMucHVzaCgiRmluaXNoZWQgbG9hZGluZyIpKTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2Ny
aXB0IGlkPSJkZWZlci1iZWZvcmUiIG9ubG9hZD0ic2NyaXB0TG9hZGVkKHRoaXMpIiBkZWZlciBz
cmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0LGV2ZW50TWVzc2FnZXMucHVzaCgnUnVubmluZyBkZWZl
ci1iZWZvcmUnKSI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBpZD0ic3luYyIgb25sb2FkPSJzY3Jp
cHRMb2FkZWQodGhpcykiIHNyYz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsZXZlbnRNZXNzYWdlcy5w
dXNoKCdSdW5uaW5nIHN5bmMnKSI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBpZD0iZGVmZXItYWZ0
ZXIiIG9ubG9hZD0ic2NyaXB0TG9hZGVkKHRoaXMpIiBkZWZlciBzcmM9ImRhdGE6dGV4dC9qYXZh
c2NyaXB0LGV2ZW50TWVzc2FnZXMucHVzaCgnUnVubmluZyBkZWZlci1hZnRlcicpIj48L3Njcmlw
dD4KKyAgICA8cD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgPGEgaHJlZj0iaHR0cHM6Ly93
ZWJraXQub3JnIj5jb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQ8L2E+LCBzZWQgZG8gZWl1c21v
ZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gPGEg
aHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj5UZW1wb3IgaWQgZXUgbmlzbCBudW5jIG1pIGlwc3Vt
IGZhdWNpYnVzIHZpdGFlLjwvYT4gU2VkIHRlbXB1cyB1cm5hIGV0IHBoYXJldHJhIHBoYXJldHJh
IG1hc3NhIG1hc3NhLiBWaXRhZSB0b3J0b3IgY29uZGltZW50dW0gbGFjaW5pYSBxdWlzIHZlbCBl
cm9zIGRvbmVjIGFjLiA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPlVsbGFtY29ycGVyIHZl
bGl0IHNlZCB1bGxhbWNvcnBlciBtb3JiaTwvYT4gdGluY2lkdW50IG9ybmFyZSBtYXNzYSBlZ2V0
LiBTaXQgYW1ldCBjdXJzdXMgc2l0IGFtZXQgZGljdHVtLiBJZCBldSBuaXNsIG51bmMgbWkgaXBz
dW0gZmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMuIFN1c2NpcGl0IHRlbGx1cyBtYXVyaXMgYSBk
aWFtIG1hZWNlbmFzIHNlZC4gQ29uc2VxdWF0IG5pc2wgdmVsIHByZXRpdW0gbGVjdHVzIHF1YW0g
aWQgbGVvLiA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPk5ldHVzIGV0IG1hbGVzdWFkYSBm
YW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBpbnRlZ2VyLjwvYT4gUXVhbSBsYWN1cyBzdXNwZW5kaXNz
ZSBmYXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlIGxvcmVtIGlwc3VtLiBTZW0gaW50ZWdlciB2aXRh
ZSBqdXN0byBlZ2V0IG1hZ25hIGZlcm1lbnR1bSBpYWN1bGlzLiBBIGNvbmRpbWVudHVtIHZpdGFl
IHNhcGllbiBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlLiBWYXJpdXMgZHVp
cyBhdCBjb25zZWN0ZXR1ciBsb3JlbS4gSXBzdW0gZmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMg
dWxsYW1jb3JwZXIgc2l0LjwvcD4KKyAgICA8cD5TZWQgZmF1Y2lidXMgPGEgaHJlZj0iaHR0cHM6
Ly93ZWJraXQub3JnIj50dXJwaXMgaW4gZXUgbWkgYmliZW5kdW08L2E+LiBEb25lYyBlbmltIGRp
YW0gdnVscHV0YXRlIHV0IHBoYXJldHJhIHNpdCBhbWV0IGFsaXF1YW0uIDxpbWcgc3JjPSJhcHBs
ZS5naWYiPjwvaW1nPiBDb25zZXF1YXQgaWQgcG9ydGEgbmliaCB2ZW5lbmF0aXMgY3JhcyBzZWQg
ZmVsaXMgZWdldCB2ZWxpdC4gQXQgbGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlz
IHRlbGx1cyBpZCBpbnRlcmR1bSB2ZWxpdC4gSWQgY29uc2VjdGV0dXIgcHVydXMgdXQgZmF1Y2li
dXMgcHVsdmluYXIgZWxlbWVudHVtIGludGVnZXIgZW5pbS4gSXBzdW0gZG9sb3Igc2l0IGFtZXQg
Y29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHV0IGFsaXF1YW0uIEF0IHRlbGx1cyBhdCB1cm5h
IGNvbmRpbWVudHVtIG1hdHRpcy4gRmF1Y2lidXMgcHVsdmluYXIgZWxlbWVudHVtIGludGVnZXIg
ZW5pbS4gQXQgZWxlbWVudHVtIGV1IGZhY2lsaXNpcyBzZWQgb2RpbyBtb3JiaS4gRmFtZXMgYWMg
dHVycGlzIGVnZXN0YXMgaW50ZWdlciBlZ2V0IGFsaXF1ZXQuIENvbnNlcXVhdCBpbnRlcmR1bSB2
YXJpdXMgc2l0IGFtZXQgbWF0dGlzIHZ1bHB1dGF0ZSBlbmltIG51bGxhLiBMZWN0dXMgc2l0IGFt
ZXQgZXN0IHBsYWNlcmF0IGluIGVnZXN0YXMuIERvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyIGFk
aXBpc2NpbmcgZWxpdCBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkuIFVybmEgZXQgcGhhcmV0
cmEgcGhhcmV0cmEgbWFzc2EgbWFzc2EgdWx0cmljaWVzIG1pLjwvcD4KKyAgICA8cD5TZWQgbGVj
dHVzIHZlc3RpYnVsdW0gbWF0dGlzIHVsbGFtY29ycGVyIHZlbGl0IHNlZCB1bGxhbWNvcnBlci4g
PGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj5RdWFtIGxhY3VzIHN1c3BlbmRpc3NlPC9hPiBm
YXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlIGxvcmVtLiBTYWdpdHRpcyB2aXRhZSBldCBsZW8gZHVp
cyB1dCBkaWFtLiBUdXJwaXMgbWFzc2Egc2VkIGVsZW1lbnR1bSB0ZW1wdXMuIEFsaXF1YW0gc2Vt
IGZyaW5naWxsYSB1dCBtb3JiaS4gPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj5GcmluZ2ls
bGEgZXN0IHVsbGFtY29ycGVyPC9hPiBlZ2V0IG51bGxhIGZhY2lsaXNpIGV0aWFtIGRpZ25pc3Np
bS4gSWQgdmVsaXQgdXQgdG9ydG9yIHByZXRpdW0uIEJpYmVuZHVtIGF0IHZhcml1cyB2ZWwgcGhh
cmV0cmEgdmVsIHR1cnBpcyBudW5jLiBTaXQgYW1ldCBhbGlxdWFtIGlkIGRpYW0gbWFlY2VuYXMu
IExvYm9ydGlzIGZldWdpYXQgdml2YW11cyBhdCBhdWd1ZSA8YSBocmVmPSJodHRwczovL3dlYmtp
dC5vcmciPmVnZXQgYXJjdSBkaWN0dW08L2E+IHZhcml1cyBkdWlzLiBMaWJlcm8ganVzdG8gbGFv
cmVldCBzaXQgYW1ldC4gRWdlc3RhcyB0ZWxsdXMgcnV0cnVtIHRlbGx1cyBwZWxsZW50ZXNxdWUg
ZXUgdGluY2lkdW50IHRvcnRvciBhbGlxdWFtLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="363111"
          type_id="1"
          status="+"
          setter="rniwa"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345155</attachid>
            <date>2018-07-17 08:55:53 -0700</date>
            <delta_ts>2018-07-17 08:55:53 -0700</delta_ts>
            <desc>Patch for EWS</desc>
            <filename>bug-187682-20180717085552.patch</filename>
            <type>text/plain</type>
            <size>61122</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzODM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWI4Mzc1NjVkY2MzMTdh
ZDg4NWRlZDBiYTEwMjkwZmI5YTFhNDI5MC4uZWFjODRkNGI1YzYzNjFiZTk0MTg1NTAyMjMxZDBh
OGEyMzY1MzUwMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE4LTA3LTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkg
aG9vayB0byBhbGxvdyBjbGllbnRzIHRvIHlpZWxkIGRvY3VtZW50IHBhcnNpbmcgYW5kIHNjcmlw
dCBleGVjdXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NzY4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDIyMDc0NTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFVzaW5nIGEgc2luZ2xlIHdlYiBw
cm9jZXNzIGZvciBib3RoIHRoZSBSZWFkZXIgcGFnZSBhbmQgb3JpZ2luYWwgd2ViIHBhZ2Ugb24g
d2F0Y2hPUyBoYXMgbXVsdGlwbGUgYmVuZWZpdHMsCisgICAgICAgIGluY2x1ZGluZzogKDEpIGFs
bG93aW5nIHRoZSB1c2VyIHRvIGJhaWwgb3V0IG9mIFJlYWRlciBhbmQgdmlldyB0aGUgb3JpZ2lu
YWwgd2ViIHBhZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbG9hZCBpdAorICAgICAgICBhZ2FpbiwgYW5k
ICgyKSBpbXByb3ZpbmcgdGhlIGJyaW5ndXAgdGltZSBvZiB0aGUgUmVhZGVyIHBhZ2UsIHNpbmNl
IHN1YnJlc291cmNlcyBhcmUgYWxyZWFkeSBjYWNoZWQgaW4gcHJvY2VzcworICAgICAgICBhbmQg
d2UgZG9uJ3QgZWF0IHRoZSBhZGRpdGlvbmFsIGNvc3Qgb2YgYSB3ZWIgcHJvY2VzcyBsYXVuY2gg
aWYgcHJld2FybWluZyBmYWlscy4KKworICAgICAgICBIb3dldmVyLCB0aGlzIGhhcyBzb21lIGRy
YXdiYWNrcyBhcyB3ZWxsLCBvbmUgb2Ygd2hpY2ggaXMgdGhhdCBtYWluIHRocmVhZCB3b3JrIGJl
aW5nIGRvbmUgb24gYmVoYWxmIG9mIHRoZQorICAgICAgICBvcmlnaW5hbCBwYWdlIG1heSBjb250
ZW5kIHdpdGggd29yayBiZWluZyBkb25lIHRvIGxvYWQgYW5kIHJlbmRlciB0aGUgUmVhZGVyIHBh
Z2UuIFRoaXMgaXMgZXNwZWNpYWxseSBiYWQgd2hlbgorICAgICAgICB0aGUgcGFnZSBpcyBpbiB0
aGUgbWlkZGxlIG9mIGV4ZWN1dGluZyBoZWF2eSBzY3JpcHQgYWZ0ZXIgU2FmYXJpIGhhcyBhbHJl
YWR5IGRldGVjdGVkIHRoYXQgdGhlIFJlYWRlciB2ZXJzaW9uIG9mCisgICAgICAgIHRoZSBwYWdl
IGlzIGF2YWlsYWJsZSwgYnV0IGJlZm9yZSBpdCBoYXMgZmluaXNoZWQgbG9hZGluZyB0aGUgUmVh
ZGVyIHBhZ2UuIFRoZSByZXN1bHQgaXMgdGhhdCBzY3JpcHQgb24gdGhlCisgICAgICAgIG9yaWdp
bmFsIHBhZ2UgbWF5IGJsb2NrIHRoZSBmaXJzdCBwYWludCBvZiB0aGUgUmVhZGVyIHBhZ2UgKG9u
IE5ldyBZb3JrIFRpbWVzIGFydGljbGVzLCB0aGlzIG9mdGVuIGxlYWRzIHRvIGFuCisgICAgICAg
IGFwcGFyZW50IHBhZ2UgbG9hZCB0aW1lIG9mIDI1LTM1IHNlY29uZHMgYmVmb3JlIHRoZSB1c2Vy
IHNlZXMgYW55dGhpbmcgYmVzaWRlcyBhIGJsYW5rIHNjcmVlbikuCisKKyAgICAgICAgVG8gbWl0
aWdhdGUgdGhpcywgd2UgaW50cm9kdWNlIGEgd2F5IGZvciBpbmplY3RlZCBidW5kbGUgY2xpZW50
cyB0byB5aWVsZCBwYXJzaW5nIGFuZCBhc3luYyBzY3JpcHQgZXhlY3V0aW9uIG9uCisgICAgICAg
IGEgZG9jdW1lbnQuIFRoaXMgY2FwYWJpbGl0eSBpcyBzdXJmYWNlZCBpbiB0aGUgZm9ybSBvZiBh
biBvcGFxdWUgdG9rZW4gd2hpY2ggY2xpZW50cyBtYXkgcmVxdWVzdCBmcm9tIGEKKyAgICAgICAg
V0tET01Eb2N1bWVudC4gQ29uc3RydWN0aW9uIG9mIHRoZSB0b2tlbiBjYXVzZXMgdGhlIGRvY3Vt
ZW50IHRvIGJlZ2luIHlpZWxkaW5nIGFuZCBkZWZlciBleGVjdXRpb24gb2YgcHJldmlvdXNseQor
ICAgICAgICBzY2hlZHVsZWQgc2NyaXB0cywgb25seSBpZiB0aGVyZSB3ZXJlIG5vIGFjdGl2ZSB0
b2tlbnMgb24gdGhlIGRvY3VtZW50IGFscmVhZHkuIFNpbWlsYXJseSwgZGVzdHJ1Y3Rpb24gb2Yg
YWxsCisgICAgICAgIGFjdGl2ZSB0b2tlbnMgb24gdGhlIGRvY3VtZW50IGNhdXNlcyBpdCB0byBz
dG9wIHlpZWxkaW5nIGFuZCByZXN1bWUgZXhlY3V0aW9uIG9mIHNjcmlwdHMgaWYgbmVlZGVkLgor
CisgICAgICAgIFRlc3RzOiAgUGFyc2VyWWllbGRUb2tlblRlc3RzLlByZXZlbnREb2N1bWVudExv
YWRCeVRha2luZ1BhcnNlcllpZWxkVG9rZW4KKyAgICAgICAgICAgICAgICBQYXJzZXJZaWVsZFRv
a2VuVGVzdHMuVGFrZU11bHRpcGxlUGFyc2VyWWllbGRUb2tlbnMKKyAgICAgICAgICAgICAgICBQ
YXJzZXJZaWVsZFRva2VuVGVzdHMuRGVmZXJyZWRTY3JpcHRFeGVjdXRlc0JlZm9yZURvY3VtZW50
TG9hZFdoZW5UYWtpbmdQYXJzZXJZaWVsZFRva2VuCisgICAgICAgICAgICAgICAgUGFyc2VyWWll
bGRUb2tlblRlc3RzLkFzeW5jU2NyaXB0UnVuc1doZW5GZXRjaGVkCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0T3Blbik6
CisKKyAgICAgICAgSWYgdGhlIHBhcnNlciB5aWVsZCB0b2tlbiB3YXMgdGFrZW4gYmVmb3JlIHRo
ZSBkb2N1bWVudCdzIHBhcnNlciB3YXMgY3JlYXRlZCwgdGVsbCB0aGUgcGFyc2VyJ3Mgc2NoZWR1
bGVyIHRvCisgICAgICAgIHN0YXJ0IHlpZWxkaW5nIGltbWVkaWF0ZWx5IGFmdGVyIGNyZWF0aW9u
LgorCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFBhcnNlcllpZWxkVG9rZW46OkRvY3VtZW50
UGFyc2VyWWllbGRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFBhcnNlcllpZWxk
VG9rZW46On5Eb2N1bWVudFBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorCisgICAgICAgIEludHJvZHVjZSBhIHBhcnNlciB5aWVsZCBjb3VudCB0byBEb2N1bWVu
dDsgYXMgbG9uZyBhcyB0aGlzIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiAwLCB3ZSBjb25zaWRlciB0
aGUgRG9jdW1lbnQgdG8KKyAgICAgICAgaGF2ZSBhY3RpdmUgeWllbGQgdG9rZW5zLiBXaGVuIGNv
bnN0cnVjdGluZyBvciBkZXN0cm95aW5nIGEgUGFyc2VyWWllbGRUb2tlbiwgd2UgaW5jcmVtZW50
IGFuZCBkZWNyZW1lbnQgdGhlCisgICAgICAgIHBhcnNlciB5aWVsZCBjb3VudCAocmVzcGVjdGl2
ZWx5KS4KKworICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9r
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc0FjdGl2ZVBhcnNlcllpZWxkVG9r
ZW4gY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRQYXJzZXI6OmRpZEJlZ2luWWllbGRpbmdQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRQYXJzZXI6OmRpZEVuZFlpZWxkaW5nUGFyc2VyKToKKworICAgICAg
ICBIb29rcyBmb3IgRG9jdW1lbnQgdG8gdGVsbCBpdHMgcGFyc2VyIHRoYXQgd2UndmUgc3RhcnRl
ZCBvciBmaW5pc2hlZCB5aWVsZGluZy4gVGhpcyB1cGRhdGVzIGEgZmxhZyBvbiB0aGUKKyAgICAg
ICAgcGFyc2VyJ3Mgc2NoZWR1bGVyIHdoaWNoIGlzIGNvbnN1bHRlZCB3aGVuIHdlIGRldGVybWlu
ZSB3aGV0aGVyIHRvIHlpZWxkIGJlZm9yZSBhIHB1bXBpbmcgdG9rZW4gb3IgZXhlY3V0aW5nCisg
ICAgICAgIHNjcmlwdC4KKworICAgICAgICAqIGRvbS9TY3JpcHRSdW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0UnVubmVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogZG9tL1NjcmlwdFJ1bm5lci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjpkaWRCZWdpbllpZWxkaW5nUGFyc2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFJ1bm5lcjo6ZGlkRW5kWWllbGRpbmdQYXJzZXIp
OgorCisgICAgICAgIEhvb2tzIGZvciBEb2N1bWVudCB0byB0ZWxsIGl0cyBTY3JpcHRSdW5uZXIg
dGhhdCB3ZSd2ZSBzdGFydGVkIG9yIGZpbmlzaGVkIHlpZWxkaW5nLiBUaGVzZSB3cmFwIGNhbGxz
IHRvIHN1c3BlbmQKKyAgICAgICAgYW5kIHJlc3VtZS4KKworICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQ
YXJzZXI6OmRpZEJlZ2luWWllbGRpbmdQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjpkaWRFbmRZaWVsZGluZ1BhcnNlcik6CisKKyAgICAgICAgUGx1bWIgdG8g
ZGlkQmVnaW4vZGlkRW5kIGNhbGxzIHRvIHRoZSBIVE1MUGFyc2VyU2NoZWR1bGVyLgorCisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFy
c2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdCk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWZvcmVUb2tlbik6CisKKyAgICAgICAg
Q29uc3VsdCBhIGZsYWcgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIHlpZWxkLiBUaGlzIGZs
YWcgaXMgc2V0IHRvIHRydWUgb25seSB3aGlsZSB0aGUgZG9jdW1lbnQgaGFzIGFuIGFjdGl2ZQor
ICAgICAgICBwYXJzZXIgeWllbGQgdG9rZW4uCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJz
ZXJTY2hlZHVsZXI6OmlzU2NoZWR1bGVkRm9yUmVzdW1lIGNvbnN0KToKKworICAgICAgICBDb25z
aWRlciB0aGUgcGFyc2VyIHNjaGVkdWxlciB0byBiZSBzY2hlZHVsZWQgZm9yIHJlc3VtZSBpZiB0
aGVyZSBhcmUgYWN0aXZlIHRva2Vucy4gV2l0aG91dCB0aGlzIGNoYW5nZSwgd2UKKyAgICAgICAg
aW5jb3JyZWN0bHkgY29uc2lkZXIgdGhlIGRvY3VtZW50IHRvIGJlIGZpbmlzaGVkIGxvYWRpbmcg
d2hlbiB3ZSBoYXZlIHlpZWxkIHRva2Vucywgc2luY2UgaXQgYXBwZWFycyB0aGF0IHRoZQorICAg
ICAgICBwYXJzZXIgaXMgbm8gbG9uZ2VyIHNjaGVkdWxlZCB0byBwdW1wIGl0cyB0b2tlbml6ZXIu
CisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXJTY2hlZHVsZXI6OmRpZEJlZ2luWWllbGRp
bmdQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6ZGlkRW5k
WWllbGRpbmdQYXJzZXIpOgorCisgICAgICAgIFdoZW4gdGhlIERvY3VtZW50IGJlZ2lucyB5aWVs
ZGluZyBkdWUgdG8gdGhlIGRvY3VtZXQgaGF2aW5nIGFjdGl2ZSB0b2tlbnMgb3IgZW5kcyB5aWVs
ZGluZyBhZnRlciB0aGUgZG9jdW1lbnQKKyAgICAgICAgbG9zZXMgYWxsIG9mIGl0cyB5aWVsZCB0
b2tlbnMsIHVwZGF0ZSBhIGZsYWcgb24gdGhlIHBhcnNlciBzY2hlZHVsZXIuIEFmdGVyIHdlIGZp
bmlzaCB5aWVsZGluZywgYWRkaXRpb25hbGx5CisgICAgICAgIHJlc2NoZWR1bGUgdGhlIHBhcnNl
ciBpZiBuZWVkZWQgdG8gZW5zdXJlIHRoYXQgd2UgY29udGludWUgcGFyc2luZyB0aGUgZG9jdW1l
bnQ7IHdpdGhvdXQgdGhpcyBhZGRpdGlvbmFsIGNoYW5nZQorICAgICAgICB0byByZXN1bWUsIHdl
J2xsIG5ldmVyIGdldCB0aGUgZG9jdW1lbnQgbG9hZCBvciBsb2FkIGV2ZW50cyBhZnRlciByZWxp
bnF1aXNoaW5nIHRoZSB5aWVsZCB0b2tlbi4KKwogMjAxOC0wNy0xNCAgU2ltb24gRnJhc2VyICA8
c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBTaHJpbmsgc29tZSBzdHlsZS1yZWxh
dGVkIGNsYXNzZXMgYW5kIGVudW1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDA4YTlmOGY5YmQ3ODMwMTY5ZTYzMTA4
MTA0MzY2MTM0Y2M5ZmE4NjMuLjFjODYwZGVkZGJjYmFkYjE3ODEwNWNjMDQ1ODc0ZTJhZWVmMjgy
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTgtMDctMTcgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFuIFNQSSBob29rIHRvIGFs
bG93IGNsaWVudHMgdG8geWllbGQgZG9jdW1lbnQgcGFyc2luZyBhbmQgc2NyaXB0IGV4ZWN1dGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg3Njgy
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MjIwNzQ1Mz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgQWRkIGhvb2tzIHRvIFdLRG9jdW1lbnQgdG8gY3Jl
YXRlIGFuZCByZXR1cm4gYW4gaW50ZXJuYWwgV0tET01Eb2N1bWVudFBhcnNlcllpZWxkVG9rZW4g
b2JqZWN0LCB3aG9zZSBsaWZldGltZSBpcworICAgICAgICB0aWVkIHRvIGEgZG9jdW1lbnQgcGFy
c2VyIHlpZWxkIHRva2VuLiBTZWUgV2ViQ29yZSBDaGFuZ2VMb2cgZm9yIG1vcmUgZGV0YWlsLgor
CisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1l
bnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01E
b2N1bWVudC5tbToKKyAgICAgICAgKC1bV0tET01Eb2N1bWVudFBhcnNlcllpZWxkVG9rZW4gaW5p
dFdpdGhEb2N1bWVudDpdKToKKyAgICAgICAgKC1bV0tET01Eb2N1bWVudCBwYXJzZXJZaWVsZFRv
a2VuXSk6CisKIDIwMTgtMDctMTMgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29t
PgogCiAgICAgICAgIEFkZCBfZHJhd3NCYWNrZ3JvdW5kIHRvIFdLV2ViVmlld0NvbmZpZ3VyYXRp
b24uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRleCBlOWY0ODIzZWFiYmZkYjU3MTY0MmVjNjlk
NzMzM2JlYzYyMWY1YWFmLi5lZTc1YTAyNjIwMGE1ZGEyZmZkMTgyMmQ0MzVmN2JiZmI0ZDI0MmM2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAgLTI2ODYsNiArMjY4NiwxMCBAQCB2b2lkIERv
Y3VtZW50OjppbXBsaWNpdE9wZW4oKQogCiAgICAgY2FuY2VsUGFyc2luZygpOwogICAgIG1fcGFy
c2VyID0gY3JlYXRlUGFyc2VyKCk7CisKKyAgICBpZiAoaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tl
bigpKQorICAgICAgICBtX3BhcnNlci0+ZGlkQmVnaW5ZaWVsZGluZ1BhcnNlcigpOworCiAgICAg
c2V0UGFyc2luZyh0cnVlKTsKICAgICBzZXRSZWFkeVN0YXRlKExvYWRpbmcpOwogfQpAQCAtNjg5
Nyw2ICs2OTAxLDMxIEBAIHZvaWQgRG9jdW1lbnQ6OmRlY3JlbWVudEFjdGl2ZVBhcnNlckNvdW50
KCkKICAgICBmcmFtZSgpLT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgpOwogfQogCitEb2N1
bWVudFBhcnNlcllpZWxkVG9rZW46OkRvY3VtZW50UGFyc2VyWWllbGRUb2tlbihEb2N1bWVudCYg
ZG9jdW1lbnQpCisgICAgOiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKK3sKKyAg
ICBpZiAoKytkb2N1bWVudC5tX3BhcnNlcllpZWxkVG9rZW5Db3VudCAhPSAxKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBkb2N1bWVudC5zY3JpcHRSdW5uZXIoKS0+ZGlkQmVnaW5ZaWVsZGluZ1Bh
cnNlcigpOworICAgIGlmIChhdXRvKiBwYXJzZXIgPSBkb2N1bWVudC5wYXJzZXIoKSkKKyAgICAg
ICAgcGFyc2VyLT5kaWRCZWdpbllpZWxkaW5nUGFyc2VyKCk7Cit9CisKK0RvY3VtZW50UGFyc2Vy
WWllbGRUb2tlbjo6fkRvY3VtZW50UGFyc2VyWWllbGRUb2tlbigpCit7CisgICAgaWYgKCFtX2Rv
Y3VtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQobV9kb2N1bWVudC0+bV9wYXJz
ZXJZaWVsZFRva2VuQ291bnQpOworICAgIGlmICgtLW1fZG9jdW1lbnQtPm1fcGFyc2VyWWllbGRU
b2tlbkNvdW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RvY3VtZW50LT5zY3JpcHRSdW5u
ZXIoKS0+ZGlkRW5kWWllbGRpbmdQYXJzZXIoKTsKKyAgICBpZiAoYXV0byogcGFyc2VyID0gbV9k
b2N1bWVudC0+cGFyc2VyKCkpCisgICAgICAgIHBhcnNlci0+ZGlkRW5kWWllbGRpbmdQYXJzZXIo
KTsKK30KKwogc3RhdGljIFJlbmRlckVsZW1lbnQqIG5lYXJlc3RDb21tb25Ib3ZlckFuY2VzdG9y
KFJlbmRlckVsZW1lbnQqIG9iajEsIFJlbmRlckVsZW1lbnQqIG9iajIpCiB7CiAgICAgaWYgKCFv
YmoxIHx8ICFvYmoyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAppbmRleCBkYjQ1OTc5NTkyODYxZTRlYmVj
NDNkYjZiYTI1YTQ2ZDYzZTM5YThjLi5iOWI0ZmM0ODZhMTdlNmI3ODBmNjAzYTRhY2JkNmVjMTI4
ZTM1MDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaApAQCAtMzE3LDYgKzMxNywxNSBAQCB1c2luZyBS
ZW5kZXJpbmdDb250ZXh0ID0gVmFyaWFudDwKICAgICBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEPgogPjsKIAorY2xhc3MgRG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuIHsKK3B1YmxpYzoK
KyAgICBXRUJDT1JFX0VYUE9SVCBEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4oRG9jdW1lbnQmKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB+RG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuKCk7CisKK3ByaXZh
dGU6CisgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKK307CisKIGNsYXNzIERvY3Vt
ZW50CiAgICAgOiBwdWJsaWMgQ29udGFpbmVyTm9kZQogICAgICwgcHVibGljIFRyZWVTY29wZQpA
QCAtMTI2Niw2ICsxMjc1LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVBh
cnNlckNvdW50KCkgeyArK21fYWN0aXZlUGFyc2VyQ291bnQ7IH0KICAgICB2b2lkIGRlY3JlbWVu
dEFjdGl2ZVBhcnNlckNvdW50KCk7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9jdW1lbnRQYXJz
ZXJZaWVsZFRva2VuPiBjcmVhdGVQYXJzZXJZaWVsZFRva2VuKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBzdGQ6Om1ha2VfdW5pcXVlPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4oKnRoaXMpOwor
ICAgIH0KKworICAgIGJvb2wgaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigpIGNvbnN0IHsgcmV0
dXJuIG1fcGFyc2VyWWllbGRUb2tlbkNvdW50OyB9CisKICAgICBEb2N1bWVudFNoYXJlZE9iamVj
dFBvb2wqIHNoYXJlZE9iamVjdFBvb2woKSB7IHJldHVybiBtX3NoYXJlZE9iamVjdFBvb2wuZ2V0
KCk7IH0KIAogICAgIHZvaWQgaW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVBbmRGb3Jj
ZVN0eWxlUmVjYWxjKCk7CkBAIC0xNDYwLDYgKzE0NzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmly
dHVhbCBSZWY8RG9jdW1lbnQ+IGNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdDsK
IAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgRG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuOwog
ICAgIGZyaWVuZCBjbGFzcyBOb2RlOwogICAgIGZyaWVuZCBjbGFzcyBJZ25vcmVEZXN0cnVjdGl2
ZVdyaXRlQ291bnRJbmNyZW1lbnRlcjsKICAgICBmcmllbmQgY2xhc3MgSWdub3JlT3BlbnNEdXJp
bmdVbmxvYWRDb3VudEluY3JlbWVudGVyOwpAQCAtMTU3OCw2ICsxNTk1LDggQEAgcHJpdmF0ZToK
ICAgICBSZWY8Q2FjaGVkUmVzb3VyY2VMb2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAg
ICAgUmVmUHRyPERvY3VtZW50UGFyc2VyPiBtX3BhcnNlcjsKIAorICAgIHVuc2lnbmVkIG1fcGFy
c2VyWWllbGRUb2tlbkNvdW50IHsgMCB9OworCiAgICAgLy8gRG9jdW1lbnQgVVJMcy4KICAgICBV
UkwgbV91cmw7IC8vIERvY3VtZW50LlVSTDogVGhlIFVSTCBmcm9tIHdoaWNoIHRoaXMgZG9jdW1l
bnQgd2FzIHJldHJpZXZlZC4KICAgICBVUkwgbV9iYXNlVVJMOyAvLyBOb2RlLmJhc2VVUkk6IFRo
ZSBVUkwgdG8gdXNlIHdoZW4gcmVzb2x2aW5nIHJlbGF0aXZlIFVSTHMuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudFBhcnNlci5oCmluZGV4IGNhYzMzN2Q3MjE4MGEyNDRjMjllMWI2MjFiMDIwNDNiNWJh
YjJlY2EuLjg1ZDYyMDlmMWJlNWYwY2RmYzE1MjAxZDQzYjM4MzU5ZjZiMzhhMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCkBAIC05Niw2ICs5Niw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgc3VzcGVuZFNjaGVkdWxlZFRhc2tzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJl
c3VtZVNjaGVkdWxlZFRhc2tzKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5ZaWVsZGlu
Z1BhcnNlcigpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRZaWVsZGluZ1BhcnNlcigpIHsg
fQorCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAppbmRleCA3M2ZiOGIwNGRlNDA1NzAxZDk3
ZjYyZTZjOWE0NTM5MDNjMmRmN2U5Li42MmU1NmYyZmI0OWJhNGEwNDBiMjMxYzdlNTc4Mjc2MmM4
ZjhhZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcApAQCAtODIsNyArODIsNyBA
QCB2b2lkIFNjcmlwdFJ1bm5lcjo6c3VzcGVuZCgpCiAKIHZvaWQgU2NyaXB0UnVubmVyOjpyZXN1
bWUoKQogewotICAgIGlmIChoYXNQZW5kaW5nU2NyaXB0cygpKQorICAgIGlmIChoYXNQZW5kaW5n
U2NyaXB0cygpICYmICFtX2RvY3VtZW50Lmhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSkKICAg
ICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMF9zKTsKIH0KIApAQCAtOTUsNyArOTUsOSBAQCB2
b2lkIFNjcmlwdFJ1bm5lcjo6bm90aWZ5RmluaXNoZWQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1Nj
cmlwdCkKICAgICAgICAgbV9zY3JpcHRzVG9FeGVjdXRlU29vbi5hcHBlbmQobV9wZW5kaW5nQXN5
bmNTY3JpcHRzLnRha2UocGVuZGluZ1NjcmlwdCktPnB0cigpKTsKICAgICB9CiAgICAgcGVuZGlu
Z1NjcmlwdC5jbGVhckNsaWVudCgpOwotICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisK
KyAgICBpZiAoIW1fZG9jdW1lbnQuaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigpKQorICAgICAg
ICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwX3MpOwogfQogCiB2b2lkIFNjcmlwdFJ1bm5lcjo6dGlt
ZXJGaXJlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmgKaW5kZXggOGU4ZjQ4NmFkMWRiMGRi
YzBkMGJlNjQ1MjExMWVlZDc3MGYxNTMxMi4uNjdlZWNiZTgwOWNkMDQzZDNiYWIxNzZmMjE5MGNm
NGYyOTNjZTlmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaApAQCAtNTAsNiArNTAsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZXN1bWUoKTsKICAgICB2b2lkIG5vdGlmeVNjcmlwdFJlYWR5
KFNjcmlwdEVsZW1lbnQqLCBFeGVjdXRpb25UeXBlKTsKIAorICAgIHZvaWQgZGlkQmVnaW5ZaWVs
ZGluZ1BhcnNlcigpIHsgc3VzcGVuZCgpOyB9CisgICAgdm9pZCBkaWRFbmRZaWVsZGluZ1BhcnNl
cigpIHsgcmVzdW1lKCk7IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAK
aW5kZXggMzRhMTJhMjk3MTA2ZDVhOTQxMGNiNjFhMzM4MmQzOWY0YWI5Yjg3NS4uYzljYzNhYzkx
ZTA4MWZjNGFiMjc2YzFhYWNlZmZmNDBjNzJmM2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xNDgsNiArMTQ4LDE2IEBA
IGlubGluZSBib29sIEhUTUxEb2N1bWVudFBhcnNlcjo6c2hvdWxkRGVsYXlFbmQoKSBjb25zdAog
ICAgIHJldHVybiBpblB1bXBTZXNzaW9uKCkgfHwgaXNXYWl0aW5nRm9yU2NyaXB0cygpIHx8IGlz
U2NoZWR1bGVkRm9yUmVzdW1lKCkgfHwgaXNFeGVjdXRpbmdTY3JpcHQoKTsKIH0KIAordm9pZCBI
VE1MRG9jdW1lbnRQYXJzZXI6OmRpZEJlZ2luWWllbGRpbmdQYXJzZXIoKQoreworICAgIG1fcGFy
c2VyU2NoZWR1bGVyLT5kaWRCZWdpbllpZWxkaW5nUGFyc2VyKCk7Cit9CisKK3ZvaWQgSFRNTERv
Y3VtZW50UGFyc2VyOjpkaWRFbmRZaWVsZGluZ1BhcnNlcigpCit7CisgICAgbV9wYXJzZXJTY2hl
ZHVsZXItPmRpZEVuZFlpZWxkaW5nUGFyc2VyKCk7Cit9CisKIGJvb2wgSFRNTERvY3VtZW50UGFy
c2VyOjppc1BhcnNpbmdGcmFnbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJlZUJ1aWxk
ZXItPmlzUGFyc2luZ0ZyYWdtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5oCmluZGV4IDlhNzlkNDRjNGZiODVlZWFjMTIyNWI1MmRkMGRl
NTdkNTYzNjdlNWUuLjk5OTBkOGI4ZDBjMTIwZjNmNGNkYjk4YjkyNDY0ZDNhMWEwNDQ3MWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBA
IC0xMjEsNiArMTIxLDkgQEAgcHJpdmF0ZToKICAgICBib29sIGluUHVtcFNlc3Npb24oKSBjb25z
dDsKICAgICBib29sIHNob3VsZERlbGF5RW5kKCkgY29uc3Q7CiAKKyAgICB2b2lkIGRpZEJlZ2lu
WWllbGRpbmdQYXJzZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRpZEVuZFlpZWxkaW5nUGFyc2VyKCkg
ZmluYWw7CisKICAgICBIVE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgSFRNTElucHV0
U3RyZWFtIG1faW5wdXQ7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxQYXJzZXJTY2hlZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRN
TFBhcnNlclNjaGVkdWxlci5jcHAKaW5kZXggMzViNmE1OWQ4NzIyMDNlODE2NTdiM2IxMWQ1MDYz
MDM0ZmE2ZGMzZS4uOTZlZjc2NzQwZWRkNDc1NGJjNjE2OTE0ZDg2ZmE4NGY3OTcxNWRjYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5j
cHAKQEAgLTExMSw2ICsxMTEsMTAgQEAgYm9vbCBIVE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRZ
aWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChQdW1wU2Vzc2lvbiYgc2Vzc2lvbikKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IGRvY3VtZW50ID0gbV9wYXJzZXIuZG9jdW1lbnQoKTsKICAgICBib29sIG5l
ZWRzRmlyc3RQYWludCA9IGRvY3VtZW50LT52aWV3KCkgJiYgIWRvY3VtZW50LT52aWV3KCktPmhh
c0V2ZXJQYWludGVkKCk7CiAgICAgc2Vzc2lvbi5kaWRTZWVTY3JpcHQgPSB0cnVlOworCisgICAg
aWYgKFVOTElLRUxZKG1fZG9jdW1lbnRIYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VucykpCisgICAg
ICAgIHJldHVybiB0cnVlOworCiAgICAgcmV0dXJuIG5lZWRzRmlyc3RQYWludCAmJiBkb2N1bWVu
dC0+aXNMYXlvdXRUaW1lckFjdGl2ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L3BhcnNlci9IVE1MUGFyc2VyU2NoZWR1bGVyLmgKaW5kZXggYjU5MzRjZTkwNjdmMDY3MWFhOTlm
MTJiNjE4MDlkYjA3YWJlNTUxOC4uM2Q0YjJjZGYzNTRiMDE3NTk0ODg2OWFiY2QyYTkzNDQyNjU2
NTU4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNj
aGVkdWxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hl
ZHVsZXIuaApAQCAtNjksNiArNjksOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChXZWJUaHJlYWRT
aG91bGRZaWVsZCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKKyAgICAgICAg
aWYgKFVOTElLRUxZKG1fZG9jdW1lbnRIYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VucykpCisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKwogICAgICAgICBpZiAoVU5MSUtFTFkoc2Vzc2lvbi5wcm9j
ZXNzZWRUb2tlbnMgPiBudW1iZXJPZlRva2Vuc0JlZm9yZUNoZWNraW5nRm9yWWllbGQgfHwgc2Vz
c2lvbi5kaWRTZWVTY3JpcHQpKQogICAgICAgICAgICAgcmV0dXJuIGNoZWNrRm9yWWllbGQoc2Vz
c2lvbik7CiAKQEAgLTc4LDExICs4MSwyNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRZaWVs
ZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdChQdW1wU2Vzc2lvbiYpOwogCiAgICAgdm9pZCBzY2hlZHVs
ZUZvclJlc3VtZSgpOwotICAgIGJvb2wgaXNTY2hlZHVsZWRGb3JSZXN1bWUoKSBjb25zdCB7IHJl
dHVybiBtX2lzU3VzcGVuZGVkV2l0aEFjdGl2ZVRpbWVyIHx8IG1fY29udGludWVOZXh0Q2h1bmtU
aW1lci5pc0FjdGl2ZSgpOyB9CisgICAgYm9vbCBpc1NjaGVkdWxlZEZvclJlc3VtZSgpIGNvbnN0
IHsgcmV0dXJuIG1faXNTdXNwZW5kZWRXaXRoQWN0aXZlVGltZXIgfHwgbV9jb250aW51ZU5leHRD
aHVua1RpbWVyLmlzQWN0aXZlKCkgfHwgbV9kb2N1bWVudEhhc0FjdGl2ZVBhcnNlcllpZWxkVG9r
ZW5zOyB9CiAKICAgICB2b2lkIHN1c3BlbmQoKTsKICAgICB2b2lkIHJlc3VtZSgpOwogCisgICAg
dm9pZCBkaWRCZWdpbllpZWxkaW5nUGFyc2VyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9k
b2N1bWVudEhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW5zKTsKKyAgICAgICAgbV9kb2N1bWVudEhh
c0FjdGl2ZVBhcnNlcllpZWxkVG9rZW5zID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEVu
ZFlpZWxkaW5nUGFyc2VyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2RvY3VtZW50SGFzQWN0
aXZlUGFyc2VyWWllbGRUb2tlbnMpOworICAgICAgICBtX2RvY3VtZW50SGFzQWN0aXZlUGFyc2Vy
WWllbGRUb2tlbnMgPSBmYWxzZTsKKworICAgICAgICBpZiAoIWlzU2NoZWR1bGVkRm9yUmVzdW1l
KCkpCisgICAgICAgICAgICBzY2hlZHVsZUZvclJlc3VtZSgpOworICAgIH0KKwogcHJpdmF0ZToK
ICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbnVtYmVyT2ZUb2tlbnNCZWZvcmVDaGVja2luZ0Zv
cllpZWxkID0gNDA5NjsgLy8gUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uCiAKQEAgLTExMiw2ICsx
MzAsNyBAQCBwcml2YXRlOgogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIG1fc3VzcGVu
ZGVkOwogI2VuZGlmCisgICAgYm9vbCBtX2RvY3VtZW50SGFzQWN0aXZlUGFyc2VyWWllbGRUb2tl
bnMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1
bWVudC5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMv
V0tET01Eb2N1bWVudC5oCmluZGV4IDlhNTRhYjdhOGZmN2IzMTgzNWU5M2Y1NzYxMzhhZWJkZDEz
NDYwZDYuLmVhODhhMjVmZWY4YmNiZmNlYjcxN2I0MzM0MWYxZWRiNWYyZTQwNzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9N
RG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
QVBJL21hYy9XS0RPTURvY3VtZW50LmgKQEAgLTQyLDYgKzQyLDggQEAgV0tfQ0xBU1NfQVZBSUxB
QkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LjApKQogCiBAcHJvcGVydHkocmVhZG9ubHkpIFdLRE9N
RWxlbWVudCAqYm9keTsKIAorLSAoaWQpcGFyc2VyWWllbGRUb2tlbiBXS19BUElfQVZBSUxBQkxF
KG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiAjZW5kaWYg
Ly8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9J
bmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCmluZGV4IDNh
ZDA0YzcxZDgzNjNmMGNjZjU0OTJhZjNlMjMzMjY4YzE5MzdjODMuLmFhNWIzMTY1YWIzNTcyNTNk
NjQzOGMyMjE3MDFmYzA5MjJjMmI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5t
bQpAQCAtMzUsNiArMzUsMjMgQEAKICNpbXBvcnQgPFdlYkNvcmUvVGV4dC5oPgogI2ltcG9ydCA8
V2ViQ29yZS9tYXJrdXAuaD4KIAorQGludGVyZmFjZSBXS0RPTURvY3VtZW50UGFyc2VyWWllbGRU
b2tlbiA6IE5TT2JqZWN0CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLRE9NRG9jdW1lbnRQ
YXJzZXJZaWVsZFRva2VuIHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RG9jdW1lbnRQ
YXJzZXJZaWVsZFRva2VuPiBfdG9rZW47Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERv
Y3VtZW50OihXZWJDb3JlOjpEb2N1bWVudCYpZG9jdW1lbnQKK3sKKyAgICBpZiAoc2VsZiA9IFtz
dXBlciBpbml0XSkKKyAgICAgICAgX3Rva2VuID0gZG9jdW1lbnQuY3JlYXRlUGFyc2VyWWllbGRU
b2tlbigpOworICAgIHJldHVybiBzZWxmOworfQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBX
S0RPTURvY3VtZW50CiAKIC0gKFdLRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5n
ICopdGFnTmFtZQpAQCAtNjYsNiArODMsMTEgQEAKICAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9N
Tm9kZShjcmVhdGVGcmFnbWVudEZyb21UZXh0KGRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50Pigq
X2ltcGwpLmNyZWF0ZVJhbmdlKCkuZ2V0KCksIHRleHQpLnB0cigpKTsKIH0KIAorLSAoaWQpcGFy
c2VyWWllbGRUb2tlbgoreworICAgIHJldHVybiBbW1tXS0RPTURvY3VtZW50UGFyc2VyWWllbGRU
b2tlbiBhbGxvY10gaW5pdFdpdGhEb2N1bWVudDpkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4o
Kl9pbXBsKV0gYXV0b3JlbGVhc2VdOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5B
QkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4
IDNmYmI2N2I5NzVkZjAyZDg4YWMzZjQ3OGNiODBjYTBiNTVmNzg0MDIuLjBlOTZhYWI4Mzc5MDUx
OTBhODAxMmE4YjIzNzRiYjhmMDBhYmY1NTUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxOC0wNy0xNyAgV2Vuc29u
IEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gU1BJIGhv
b2sgdG8gYWxsb3cgY2xpZW50cyB0byB5aWVsZCBkb2N1bWVudCBwYXJzaW5nIGFuZCBzY3JpcHQg
ZXhlY3V0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xODc2ODIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQyMjA3NDUzPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBBZGQgYSBmZXcgdGVzdHMgdG8gZXhl
cmNpc2UgdGhlIG5ldyBkb2N1bWVudCB5aWVsZCB0b2tlbiBTUEksIHZlcmlmeWluZyB0aGF0IGNs
aWVudHMgY2FuIHVzZSB0aGUgU1BJIHRvIGRlZmVyCisgICAgICAgIGRvY3VtZW50IGxvYWQsIGFu
ZCB0aGF0IGRvaW5nIHNvIGRvZXNuJ3QgY2F1c2UgZGVmZXJyZWQgYHNjcmlwdGAgdG8gZXhlY3V0
ZSBpbiB0aGUgd3Jvbmcgb3JkZXIgKGkuZS4gYmVmb3JlCisgICAgICAgIHN5bmNocm9ub3VzIHNj
cmlwdCwgb3IgYWZ0ZXIgIkRPTUNvbnRlbnRMb2FkZWQiKS4KKworICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblBsdWdJbi5t
bTogQWRkZWQuCisgICAgICAgICgtW1BhcnNlcllpZWxkVG9rZW5QbHVnSW4gdGFrZURvY3VtZW50
UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2FkXSk6CisgICAgICAgICgtW1BhcnNlcllpZWxk
VG9rZW5QbHVnSW4gcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW5dKToKKyAgICAgICAgKC1bUGFy
c2VyWWllbGRUb2tlblBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyOmRpZENvbW1pdExvYWRGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bUGFyc2VyWWllbGRUb2tl
blBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luOmRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxl
cjpdKToKKyAgICAgICAgKC1bUGFyc2VyWWllbGRUb2tlblBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0lu
QnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOl0p
OgorICAgICAgICAoLVtQYXJzZXJZaWVsZFRva2VuUGx1Z0luIHdlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXI6ZGlkRmluaXNoTG9hZEZvckZyYW1lOl0pOgorCisgICAgICAg
IEFkZCBhbiBpbmplY3RlZCBidW5kbGUgb2JqZWN0IHRoYXQga25vd3MgaG93IHRvIHRha2UgYW5k
IHJlbGVhc2UgbXVsdGlwbGUgZG9jdW1lbnQgcGFyc2VyIHlpZWxkIHRva2Vucy4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblRlc3Rz
Lmg6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFy
c2VyWWllbGRUb2tlblRlc3RzLm1tOiBBZGRlZC4KKyAgICAgICAgKCtbUGFyc2VyWWllbGRUb2tl
blRlc3RXZWJWaWV3IHdlYlZpZXddKToKKyAgICAgICAgKC1bUGFyc2VyWWllbGRUb2tlblRlc3RX
ZWJWaWV3IGJ1bmRsZV0pOgorICAgICAgICAoLVtQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcg
c2NoZW1lSGFuZGxlcl0pOgorICAgICAgICAoLVtQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcg
ZGlkRmluaXNoRG9jdW1lbnRMb2FkXSk6CisgICAgICAgICgtW1BhcnNlcllpZWxkVG9rZW5UZXN0
V2ViVmlldyBkaWRGaW5pc2hMb2FkXSk6CisgICAgICAgICh3YWl0Rm9yRGVsYXkpOgorICAgICAg
ICAoVEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0
VVJMU2NoZW1lSGFuZGxlci5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1Rlc3RVUkxTY2hlbWVIYW5kbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1b
VGVzdFVSTFNjaGVtZUhhbmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAg
ICAgICgtW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RvcFVSTFNjaGVtZVRhc2s6XSk6
CisgICAgICAgICgtW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hh
bmRsZXI6XSk6CisgICAgICAgICgtW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIHN0YXJ0VVJMU2NoZW1l
VGFza0hhbmRsZXJdKToKKyAgICAgICAgKC1bVGVzdFVSTFNjaGVtZUhhbmRsZXIgc2V0U3RvcFVS
TFNjaGVtZVRhc2tIYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0VVJMU2NoZW1lSGFuZGxlciBz
dG9wVVJMU2NoZW1lVGFza0hhbmRsZXJdKToKKworICAgICAgICBBZGQgYSBuZXcgdGVzdCBoZWxw
ZXIgY2xhc3MgdG8gaGFuZGxlIGN1c3RvbSBzY2hlbWVzIHZpYSBhIGJsb2NrLWJhc2VkIEFQSS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvdGV4dC13aXRoLWFz
eW5jLXNjcmlwdC5odG1sOiBBZGRlZC4KKworICAgICAgICBOZXcgdGVzdCBIVE1MIHBhZ2UgdGhh
dCBjb250YWlucyBhIGRlZmVycmVkIHNjcmlwdCBlbGVtZW50LCBhIHN5bmNocm9ub3VzIHNjcmlw
dCBlbGVtZW50LCBhbm90aGVyIGRlZmVycmVkCisgICAgICAgIHNjcmlwdCBlbGVtZW50LCBhbmQg
dGhlbiBzb21lIHRleHQsIGltYWdlcywgYW5kIGxpbmtzLgorCisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWw6IEFk
ZGVkLgorCiAyMDE4LTA3LTEzICBSb3NzIEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNv
bT4KIAogICAgICAgICBbV2luQ2Fpcm9dIHJ1bi1hcGktdGVzdHMgaXMgdGltaW5nIG91dCBmb3Ig
YWxtb3N0IGFsbCB0ZXN0IGNhc2VzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDFlMjcxMmIy
ZDY2M2UxZmJjNzRiMjNjMDdkMmFlMTIwNzYwZDQzYTAuLjkyOTFlNGNhZDJhYWYwOGRkYmZhNjVk
NTY0YTcxZTM2NWE4NTA3MmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC03ODEsNiArNzgx
LDkgQEAKIAkJRjQzRTNCQkYyMERBREExRTAwQTRFN0VEIC8qIFdLU2Nyb2xsVmlld1Rlc3RzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQzRTNCQkUy
MERBREExRTAwQTRFN0VEIC8qIFdLU2Nyb2xsVmlld1Rlc3RzLm1tICovOyB9OwogCQlGNDNFM0JD
MTIwREFEQkM1MDBBNEU3RUQgLyogZml4ZWQtbmF2LWJhci5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0M0UzQkMwMjBEQURCODAwMEE0
RTdFRCAvKiBmaXhlZC1uYXYtYmFyLmh0bWwgKi87IH07CiAJCUY0NDUxQzc2MUVCOEZEODkwMDIw
QzVEQSAvKiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sIGluIENvcHkgUmVzb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NDUxQzc1MUVCOEZEN0Mw
MDIwQzVEQSAvKiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sICovOyB9OworCQlG
NDRDNzlGRjIwRjlFODcxMDAxNDQ3OEMgLyogUGFyc2VyWWllbGRUb2tlblRlc3RzLm1tIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0Qzc5RkUyMEY5RTg3
MTAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5UZXN0cy5tbSAqLzsgfTsKKwkJRjQ0QzdBMDAy
MEY5RUVCRjAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3
OEMgLyogUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSAqLzsgfTsKKwkJRjQ0QzdBMDUyMEZBQUUz
QzAwMTQ0NzhDIC8qIHRleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRDN0EwNDIwRkFBRTMy
MDAxNDQ3OEMgLyogdGV4dC13aXRoLWRlZmVycmVkLXNjcmlwdC5odG1sICovOyB9OwogCQlGNDRE
MDY0NTFGMzk1QzI2MDAxQTBFMjkgLyogZWRpdG9yLXN0YXRlLXRlc3QtaGFybmVzcy5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0NEQw
NjQ0MUYzOTVDMEQwMDFBMEUyOSAvKiBlZGl0b3Itc3RhdGUtdGVzdC1oYXJuZXNzLmh0bWwgKi87
IH07CiAJCUY0NEQwNjQ3MUYzOTYyN0EwMDFBMEUyOSAvKiBFZGl0b3JTdGF0ZVRlc3RzLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjQ0RDA2NDYxRjM5
NUM0RDAwMUEwRTI5IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gKi87IH07CiAJCUY0NEQwNjRBMUYz
OTYyRjIwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDREMDY0OTFGMzk2MkUzMDAxQTBFMjkgLyog
RWRpdGluZ1Rlc3RIYXJuZXNzLm1tICovOyB9OwpAQCAtODExLDYgKzgxNCw4IEBACiAJCUY0QkZB
NjhFMUU0QUQwODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0QkZBNjhDMUU0QUQw
ODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbSAqLzsgfTsKIAkJRjRD
MkFCMjIxREQ2RDk1RTAwRTA2RDVCIC8qIGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEMy
QUIyMTFERDZEOTQxMDBFMDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sICov
OyB9OwogCQlGNEM4Nzk3RjIwNTlEOEQzMDA5Q0QwMEIgLyogU2Nyb2xsVmlld0luc2V0VGVzdHMu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNEM4Nzk3
RTIwNTlEOEQzMDA5Q0QwMEIgLyogU2Nyb2xsVmlld0luc2V0VGVzdHMubW0gKi87IH07CisJCUY0
Q0Q3NEM2MjBGREFDRkEwMERFMzc5NCAvKiB0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDRDc0
QzUyMEZEQUNGNTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCAqLzsgfTsK
KwkJRjRDRDc0QzkyMEZEQjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRDRDc0QzgyMEZE
QjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLm1tICovOyB9OwogCQlGNEQ0RjNC
NjFFNEUyQkNCMDBCQjI3NjcgLyogRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENEYzQjQxRTRFMkJDQjAw
QkIyNzY3IC8qIERhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbSAqLzsgfTsKIAkJRjRENEYzQjkx
RTRFMzZFNDAwQkIyNzY3IC8qIERhdGFJbnRlcmFjdGlvblRlc3RzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENEYzQjcxRTRFMzZFNDAwQkIyNzY3
IC8qIERhdGFJbnRlcmFjdGlvblRlc3RzLm1tICovOyB9OwogCQlGNEQ1RTRFODFGMEM1RDM4MDA4
QzFBNDkgLyogZHJhZ3N0YXJ0LWNsZWFyLXNlbGVjdGlvbi5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDVFNEU3MUYwQzVEMjcwMDhD
MUE0OSAvKiBkcmFnc3RhcnQtY2xlYXItc2VsZWN0aW9uLmh0bWwgKi87IH07CkBAIC04OTgsNyAr
OTAzLDYgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1
YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCi0JCQkJNDZBRTVBMzcyMEY5MDY2RDAwRTA4
NzNFIC8qIFNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTMuc3FsaXRlMyBpbiBDb3B5
IFJlc291cmNlcyAqLywKIAkJCQkxQTlFNTJDOTEzRTY1RUY0MDA2OTE3RjUgLyogMTgtY2hhcmFj
dGVycy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTM3OTAyOEI5MTRGQUMyNEMwMDdF
NkI0MyAvKiBhY2NlcHRzRmlyc3RNb3VzZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJ
CTFDMkI4MTg3MUM4OTI1QTAwMEE1NTI5RiAvKiBBaGVtLnR0ZiBpbiBDb3B5IFJlc291cmNlcyAq
LywKQEAgLTExMjUsNiArMTEyOSw3IEBACiAJCQkJQkM5MDk3ODQxMjU1NzFDRjAwMDgzNzU2IC8q
IHNpbXBsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTUxRTVDNzAyMTkxOUMzQjIw
MEQ4QjNFMSAvKiBzaW1wbGUyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJNTFFNUM3
MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
KwkJCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2ltcGxlU2VydmljZVdvcmtlclJlZ2lz
dHJhdGlvbnMtMy5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0RjQwNUJEMUQ0
QzBEMUMwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8td2l0aC1hdWRpby5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUMwMUEyM0YyMTI2NjE1NjcwMEM5RUQ1NSAvKiBz
cGFjZWJhci1zY3JvbGxpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlFMTk0RTFC
RDE3N0U1M0M3MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVjZWl2ZVJlc3BvbnNlLmh0
bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xMTM4LDYgKzExNDMsOCBAQAogCQkJCTUyNEJC
Q0ExMTlFMzBDNzcwMDJGMUFGMSAvKiB0ZXN0Lm1wNCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQk3QUU5RTUwOTFBRTVBRThCMDBDRjg3NEIgLyogdGVzdC5wZGYgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJMkU5ODk2MTUxRDhGMDkzODAwNzM5ODkyIC8qIHRleHQtYW5kLXBhc3N3b3JkLWlu
cHV0cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUY0Q0Q3NEM2MjBGREFDRkEwMERF
Mzc5NCAvKiB0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CisJCQkJRjQ0QzdBMDUyMEZBQUUzQzAwMTQ0NzhDIC8qIHRleHQtd2l0aC1kZWZlcnJlZC1zY3Jp
cHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlBQTFFRjQ2OTZCMDA4M0ZB
MDggLyogdGV4dGFyZWEtdG8taW5wdXQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlG
NDQ1MUM3NjFFQjhGRDg5MDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFibGUu
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDNTQwRjc4NDE1MkU1QTlBMDBBNDBDOEMg
LyogdmVyYm9zZU1hcmt1cC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtMTk3Niw2ICsx
OTgzLDEwIEBACiAJCUY0M0UzQkJFMjBEQURBMUUwMEE0RTdFRCAvKiBXS1Njcm9sbFZpZXdUZXN0
cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU2Nyb2xsVmlld1Rlc3RzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGNDNFM0JDMDIwREFEQjgwMDBBNEU3RUQgLyogZml4ZWQt
bmF2LWJhci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gdGV4dC5odG1sOyBwYXRoID0gImZpeGVkLW5hdi1iYXIuaHRtbCI7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUY0NDUxQzc1MUVCOEZEN0MwMDIwQzVEQSAvKiB0d28tcGFyYWdy
YXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gInR3
by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3OEMgLyogUGFyc2VyWWllbGRUb2tlblBsdWdJ
bi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NEM3OUZEMjBGOUU4NzEwMDE0NDc4QyAvKiBQ
YXJzZXJZaWVsZFRva2VuVGVzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyWWllbGRUb2tlblRl
c3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NEM3OUZFMjBGOUU4NzEwMDE0
NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQ
YXJzZXJZaWVsZFRva2VuVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0
NEM3QTA0MjBGQUFFMzIwMDE0NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidGV4dC13aXRoLWRlZmVycmVkLXNjcmlwdC5o
dG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0RDA2NDQxRjM5NUMwRDAwMUEw
RTI5IC8qIGVkaXRvci1zdGF0ZS10ZXN0LWhhcm5lc3MuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRt
bDsgcGF0aCA9ICJlZGl0b3Itc3RhdGUtdGVzdC1oYXJuZXNzLmh0bWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlGNDREMDY0NjFGMzk1QzREMDAxQTBFMjkgLyogRWRpdG9yU3RhdGVU
ZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEVkaXRvclN0
YXRlVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NEQwNjQ4MUYzOTYy
RTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0yMDEwLDYgKzIwMjEsOSBAQAogCQlGNEJGQTY4QzFFNEFEMDgwMDAxNTQyOTggLyog
RHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRjRDMkFCMjExREQ2RDk0MTAwRTA2RDVCIC8qIGVub3Jtb3VzLXZp
ZGVvLXdpdGgtc291bmQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJlbm9ybW91
cy12aWRlby13aXRoLXNvdW5kLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
NEM4Nzk3RTIwNTlEOEQzMDA5Q0QwMEIgLyogU2Nyb2xsVmlld0luc2V0VGVzdHMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBTY3JvbGxWaWV3SW5zZXRUZXN0cy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJRjRDRDc0QzUyMEZEQUNGNTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3lu
Yy1zY3JpcHQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJ0ZXh0LXdpdGgtYXN5
bmMtc2NyaXB0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGNENENzRDNzIw
RkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
VGVzdFVSTFNjaGVtZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRD
RDc0QzgyMEZEQjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gVGVzdFVSTFNjaGVtZUhhbmRsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0RDRGM0I0MUU0RTJCQ0IwMEJCMjc2NyAvKiBEYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEYXRh
SW50ZXJhY3Rpb25TaW11bGF0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0
RDRGM0I1MUU0RTJCQ0IwMEJCMjc2NyAvKiBEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUludGVyYWN0aW9uU2ltdWxhdG9yLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDRGM0I3MUU0RTM2RTQwMEJCMjc2NyAv
KiBEYXRhSW50ZXJhY3Rpb25UZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERhdGFJbnRlcmFjdGlvblRlc3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjI3NCw2ICsyMjg4LDkgQEAKIAkJCQkzN0EyMkFBNTFEQ0FBMjcyMDBBRkJGQzQg
LyogT2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0FmdGVyQ3Jhc2gubW0gKi8sCiAJCQkJ
Q0VBNkNGMjIxOUNDRjVCRDAwNjRGNUE3IC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5tbSAqLywKIAkJ
CQlDRUJDQTEyRTFFM0E2NjAxMDBDNzMyOTMgLyogT3ZlcnJpZGVDb250ZW50U2VjdXJpdHlQb2xp
Y3kubW0gKi8sCisJCQkJRjQ0Qzc5RkIyMEY5RTUwQzAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9r
ZW5QbHVnSW4ubW0gKi8sCisJCQkJRjQ0Qzc5RkQyMEY5RTg3MTAwMTQ0NzhDIC8qIFBhcnNlcllp
ZWxkVG9rZW5UZXN0cy5oICovLAorCQkJCUY0NEM3OUZFMjBGOUU4NzEwMDE0NDc4QyAvKiBQYXJz
ZXJZaWVsZFRva2VuVGVzdHMubW0gKi8sCiAJCQkJOUJDQjdDMjYyMDEzMDYwMDAwM0U3QzBDIC8q
IFBhc3RlSFRNTC5tbSAqLywKIAkJCQk5QkRDQ0Q4NTFGN0QwQjA3MDAwMDlBMTggLyogUGFzdGVJ
bWFnZS5tbSAqLywKIAkJCQlGNDU3QTlCNjIwMkQ1Q0RDMDBGN0U5RDUgLyogUGFzdGVNaXhlZENv
bnRlbnQubW0gKi8sCkBAIC0yMzAyLDYgKzIzMTksOCBAQAogCQkJCTJERkY3QjZDMURBNDg3QUYw
MDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1tICovLAogCQkJCTUxNUJFMTcwMUQ0MjhCRDEwMERE
N0M2OCAvKiBTdG9yZUJsb2JUaGVuRGVsZXRlLm1tICovLAogCQkJCTFDNzM0QjUyMjA3ODhDNDgw
MEY0MzBFQSAvKiBTeXN0ZW1Db2xvcnMubW0gKi8sCisJCQkJRjRDRDc0QzcyMEZEQjQ5NjAwREUz
Nzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLmggKi8sCisJCQkJRjRDRDc0QzgyMEZEQjQ5NjAw
REUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLm1tICovLAogCQkJCTVDQjQwQjREMUY0Qjk4
QkUwMDdEQzdCOSAvKiBVSURlbGVnYXRlLm1tICovLAogCQkJCTdDQzNFMUZBMTk3RTIzNDEwMEJF
NjI1MiAvKiBVc2VyQ29udGVudENvbnRyb2xsZXIubW0gKi8sCiAJCQkJN0M4ODJFMDMxQzgwQzYy
NDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGQubW0gKi8sCkBAIC0yNjQzLDYgKzI2NjIsOCBA
QAogCQkJCTlCRDZEMzlGMUY3QjIwMjAwMEJENDk2MiAvKiBzdW5zZXQtaW4tY3VwZXJ0aW5vLTQw
MHB4LmdpZiAqLywKIAkJCQk5QkQ2RDM5RTFGN0IyMDFFMDBCRDQ5NjIgLyogc3Vuc2V0LWluLWN1
cGVydGluby02MDBweC5qcGcgKi8sCiAJCQkJMkU5ODk2MTQxRDhGMDkyQjAwNzM5ODkyIC8qIHRl
eHQtYW5kLXBhc3N3b3JkLWlucHV0cy5odG1sICovLAorCQkJCUY0Q0Q3NEM1MjBGREFDRjUwMERF
Mzc5NCAvKiB0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwgKi8sCisJCQkJRjQ0QzdBMDQyMEZB
QUUzMjAwMTQ0NzhDIC8qIHRleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbCAqLywKIAkJCQlG
NDFBQjk5NTFFRjQ2OTJDMDA4M0ZBMDggLyogdGV4dGFyZWEtdG8taW5wdXQuaHRtbCAqLywKIAkJ
CQlGNDQ1MUM3NTFFQjhGRDdDMDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1jb250ZW50ZWRpdGFi
bGUuaHRtbCAqLywKIAkJCQk1MTcxNEVCMjFDRjhDNzYxMDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tp
bGxJREJDbGVhbnVwLTEuaHRtbCAqLywKQEAgLTM3NTksNiArMzc4MCw3IEBACiAJCQkJN0NDRTdF
QzcxQTQxMUE3RTAwNDQ3QzRDIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdl
cy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA5MUE0MTFBRTYwMDQ0N0M0QyAvKiBQYXJl
bnRGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTA1MTFEMEE2NDE4MDBGRUJDRjMg
LyogUGFyc2VkQ29udGVudFJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUY0NEM3OUZGMjBG
OUU4NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gaW4gU291cmNlcyAqLywK
IAkJCQk3Q0NFN0YwQTFBNDExQUU2MDA0NDdDNEMgLyogUGFzdGVib2FyZE5vdGlmaWNhdGlvbnMu
bW0gaW4gU291cmNlcyAqLywKIAkJCQk5QkNCN0MyODIwMTMwNjAwMDAzRTdDMEMgLyogUGFzdGVI
VE1MLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJEQ0NEODcxRjdEMEIwNzAwMDA5QTE4IC8qIFBh
c3RlSW1hZ2UubW0gaW4gU291cmNlcyAqLywKQEAgLTM4NDIsNiArMzg2NCw3IEBACiAJCQkJMkQx
QzA0QTcxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0gaW4gU291
cmNlcyAqLywKIAkJCQlBMTRGQzU5MDFCOEFFMzZGMDBEMTA3RUIgLyogVGVzdFByb3RvY29sLm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQUUxQTQxMUEzNDAwNDQ3QzRDIC8qIFRlc3RzQ29u
dHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNENENzRDOTIwRkRCNDk2MDBERTM3OTQg
LyogVGVzdFVSTFNjaGVtZUhhbmRsZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQkyRUZGMDZENDFE
OEFFREJCMDAwNEJCMzAgLyogVGVzdFdLV2ViVmlldy5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0
NTE3QjY3MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29udHJvbGxlci5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUY0NTAzM0Y1MjA2QkVDOTUwMDkzNTFDRSAvKiBUZXh0QXV0b3Npemlu
Z0Jvb3N0Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zOTY2LDYgKzM5ODksNyBAQAogCQkJCTUxOEVF
NTE5MjBBNzhDRTUwMEUwMjRGMyAvKiBEb3VibGVEZWZlcnNMb2FkaW5nUGx1Z2luLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJNUNCNUIzQzIxRkZDNTVDRjAwQzI3QkIwIC8qIEZyYW1lSGFuZGxlU2Vy
aWFsaXphdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTc5QzVENDMxMjA5RDc2ODMwMEYxRTdD
QSAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGVJc1RleHRGaWVsZC5tbSBpbiBTb3VyY2VzICov
LAorCQkJCUY0NEM3QTAwMjBGOUVFQkYwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuUGx1Z0lu
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEzRUJCQUIxQjg3NDM0NjAwMDk3MTEwIC8qIFBsYXRm
b3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTRGODFDRjFCREZGRDUz
MDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlQbHVnSW4ubW0gaW4gU291cmNlcyAqLywK
IAkJCQlBMTJEREMwMjFFODM3QzI0MDBDRjZDQUUgLyogUmVuZGVyZWRJbWFnZVdpdGhPcHRpb25z
UGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMjVmZTE5ODdhNzQyZjY0NjI1YmZhY2VmYTBhOWIwOTRlNDNiYjdhNwotLS0gL2Rl
di9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2Vy
WWllbGRUb2tlblBsdWdJbi5tbQpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworCisjaW1w
b3J0ICJjb25maWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIlBhcnNlcllp
ZWxkVG9rZW5UZXN0cy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLRE9NRG9jdW1lbnQuaD4KKyNpbXBv
cnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlBy
b2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRlLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmg+CisjaW1wb3J0IDxXZWJLaXQv
X1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2Jq
ZWN0UmVnaXN0cnkuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworQGludGVyZmFjZSBQ
YXJzZXJZaWVsZFRva2VuUGx1Z0luIDogTlNPYmplY3QgPFdLV2ViUHJvY2Vzc1BsdWdJbiwgV0tX
ZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLCBQYXJzZXJZaWVsZFRva2VuVGVzdEJ1bmRsZT4K
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4geworICAgIFJl
dGFpblB0cjxOU011dGFibGVBcnJheTxOU09iamVjdCAqPj4gX3BhcnNlcllpZWxkVG9rZW5zOwor
ICAgIFJldGFpblB0cjxpZDxQYXJzZXJZaWVsZFRva2VuVGVzdFJ1bm5lcj4+IF90ZXN0UnVubmVy
OworICAgIFJldGFpblB0cjxXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xs
ZXI+IF9jb250cm9sbGVyOworICAgIEJPT0wgX2xvYWRDb21taXR0ZWQ7CisgICAgTlNVSW50ZWdl
ciBfbnVtYmVyT2ZUb2tlbnNUb1Rha2VBZnRlckNvbWl0dGluZ0xvYWQ7Cit9CisKKy0gKHZvaWQp
dGFrZURvY3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2FkCit7CisgICAgaWYgKF9s
b2FkQ29tbWl0dGVkKQorICAgICAgICBbX3BhcnNlcllpZWxkVG9rZW5zIGFkZE9iamVjdDpbX2Nv
bnRyb2xsZXIgbWFpbkZyYW1lRG9jdW1lbnRdLnBhcnNlcllpZWxkVG9rZW5dOworICAgIGVsc2UK
KyAgICAgICAgKytfbnVtYmVyT2ZUb2tlbnNUb1Rha2VBZnRlckNvbWl0dGluZ0xvYWQ7Cit9CisK
Ky0gKHZvaWQpcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW4KK3sKKyAgICBpZiAoX2xvYWRDb21t
aXR0ZWQpCisgICAgICAgIFtfcGFyc2VyWWllbGRUb2tlbnMgcmVtb3ZlT2JqZWN0QXRJbmRleDow
XTsKKyAgICBlbHNlCisgICAgICAgIC0tX251bWJlck9mVG9rZW5zVG9UYWtlQWZ0ZXJDb21pdHRp
bmdMb2FkOworfQorCistICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlciAqKWNvbnRy
b2xsZXIgZGlkQ29tbWl0TG9hZEZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZy
YW1lCit7CisgICAgX2xvYWRDb21taXR0ZWQgPSBZRVM7CisgICAgd2hpbGUgKF9udW1iZXJPZlRv
a2Vuc1RvVGFrZUFmdGVyQ29taXR0aW5nTG9hZCkgeworICAgICAgICBbc2VsZiB0YWtlRG9jdW1l
bnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdOworICAgICAgICAtLV9udW1iZXJPZlRv
a2Vuc1RvVGFrZUFmdGVyQ29taXR0aW5nTG9hZDsKKyAgICB9Cit9CisKKy0gKHZvaWQpd2ViUHJv
Y2Vzc1BsdWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAqKXBsdWdJbkNvbnRyb2xs
ZXIgZGlkQ3JlYXRlQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dlYlByb2Nlc3NQbHVnSW5C
cm93c2VyQ29udGV4dENvbnRyb2xsZXIgKilicm93c2VyQ29udGV4dENvbnRyb2xsZXIKK3sKKyAg
ICBfcGFyc2VyWWllbGRUb2tlbnMgPSBhZG9wdE5TKFtOU011dGFibGVBcnJheSBuZXddKTsKKyAg
ICBfY29udHJvbGxlciA9IGJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjsKKyAgICBicm93c2VyQ29u
dGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gc2VsZjsKKyAgICBbYnJvd3NlckNvbnRleHRD
b250cm9sbGVyLl9yZW1vdGVPYmplY3RSZWdpc3RyeSByZWdpc3RlckV4cG9ydGVkT2JqZWN0OnNl
bGYgaW50ZXJmYWNlOltfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVtb3RlT2JqZWN0SW50ZXJm
YWNlV2l0aFByb3RvY29sOkBwcm90b2NvbChQYXJzZXJZaWVsZFRva2VuVGVzdEJ1bmRsZSldXTsK
KyAgICBfdGVzdFJ1bm5lciA9IFticm93c2VyQ29udGV4dENvbnRyb2xsZXIuX3JlbW90ZU9iamVj
dFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFByb3h5V2l0aEludGVyZmFjZTpbX1dLUmVtb3RlT2JqZWN0
SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2NvbDpAcHJvdG9jb2woUGFy
c2VyWWllbGRUb2tlblRlc3RSdW5uZXIpXV07Cit9CisKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJ
bkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRl
eHRDb250cm9sbGVyKiljb250cm9sbGVyIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOihX
S1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lCit7CisgICAgW190ZXN0UnVubmVyIGRpZEZp
bmlzaERvY3VtZW50TG9hZF07Cit9CisKKy0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJD
b250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9s
bGVyKiljb250cm9sbGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV0tXZWJQcm9jZXNzUGx1Z0lu
RnJhbWUgKilmcmFtZQoreworICAgIFtfdGVzdFJ1bm5lciBkaWRGaW5pc2hMb2FkXTsKK30KKwor
QGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRva2VuVGVzdHMuaCBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblRlc3Rz
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMGE2Njg0M2E2N2ZhYTNmZDgzYjEyOTY0ZmFjMmY0Y2ZhN2JjNWQxZgot
LS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
UGFyc2VyWWllbGRUb2tlblRlc3RzLmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCitAcHJvdG9jb2wgUGFyc2VyWWllbGRUb2tlblRlc3RSdW5uZXIgPE5TT2Jq
ZWN0PgorLSAodm9pZClkaWRGaW5pc2hEb2N1bWVudExvYWQ7CistICh2b2lkKWRpZEZpbmlzaExv
YWQ7CitAZW5kCisKK0Bwcm90b2NvbCBQYXJzZXJZaWVsZFRva2VuVGVzdEJ1bmRsZSA8TlNPYmpl
Y3Q+CistICh2b2lkKXRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0ZXJDb21taXR0aW5nTG9hZDsK
Ky0gKHZvaWQpcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW47CitAZW5kCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5UZXN0
cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRU
b2tlblRlc3RzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlMWQ4NDlkZWYzOTQ2MGViMzgwYzJiZTA5ZTY3NTdm
YmY0MTI2MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dl
YktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5UZXN0cy5tbQpAQCAtMCwwICsxLDIwMSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbXBvcnQgIlBhcnNlcllpZWxkVG9rZW5U
ZXN0cy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRp
ZXMuaCIKKyNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCisjaW1wb3J0ICJUZXN0V0tX
ZWJWaWV3LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uRXh0cmFzLmgiCisjaW1w
b3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90
ZU9iamVjdEludGVyZmFjZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1JlbW90ZU9iamVjdFJlZ2lz
dHJ5Lmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQgPHd0Zi9TZWNvbmRzLmg+
CisKK0BpbnRlcmZhY2UgUGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IDogVGVzdFdLV2ViVmll
dyA8UGFyc2VyWWllbGRUb2tlblRlc3RSdW5uZXI+CitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVh
ZG9ubHkpIEJPT0wgZmluaXNoZWREb2N1bWVudExvYWQ7CitAcHJvcGVydHkgKG5vbmF0b21pYywg
cmVhZG9ubHkpIEJPT0wgZmluaXNoZWRMb2FkOworQGVuZAorCitAaW1wbGVtZW50YXRpb24gUGFy
c2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IHsKKyAgICBSZXRhaW5QdHI8aWQgPFBhcnNlcllpZWxk
VG9rZW5UZXN0QnVuZGxlPj4gX2J1bmRsZTsKKyAgICBSZXRhaW5QdHI8VGVzdFVSTFNjaGVtZUhh
bmRsZXI+IF9zY2hlbWVIYW5kbGVyOworfQorCisrIChSZXRhaW5QdHI8UGFyc2VyWWllbGRUb2tl
blRlc3RXZWJWaWV3Pil3ZWJWaWV3Cit7CisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRvcHRO
UyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byAqY29uZmln
dXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRo
VGVzdFBsdWdJbkNsYXNzTmFtZTpAIlBhcnNlcllpZWxkVG9rZW5QbHVnSW4iXTsKKyAgICBbY29u
ZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJM
U2NoZW1lOkAiY3VzdG9tIl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1BhcnNlcllp
ZWxkVG9rZW5UZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAs
IDIwMCwgMjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBbW3dlYlZpZXcg
X3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWdpc3RlckV4cG9ydGVkT2JqZWN0OndlYlZpZXcuZ2V0
KCkgaW50ZXJmYWNlOltfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVtb3RlT2JqZWN0SW50ZXJm
YWNlV2l0aFByb3RvY29sOkBwcm90b2NvbChQYXJzZXJZaWVsZFRva2VuVGVzdFJ1bm5lcildXTsK
KyAgICB3ZWJWaWV3LT5fYnVuZGxlID0gW1t3ZWJWaWV3IF9yZW1vdGVPYmplY3RSZWdpc3RyeV0g
cmVtb3RlT2JqZWN0UHJveHlXaXRoSW50ZXJmYWNlOltfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2Ug
cmVtb3RlT2JqZWN0SW50ZXJmYWNlV2l0aFByb3RvY29sOkBwcm90b2NvbChQYXJzZXJZaWVsZFRv
a2VuVGVzdEJ1bmRsZSldXTsKKyAgICB3ZWJWaWV3LT5fc2NoZW1lSGFuZGxlciA9IFdURk1vdmUo
c2NoZW1lSGFuZGxlcik7CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisKKy0gKGlkIDxQYXJzZXJZ
aWVsZFRva2VuVGVzdEJ1bmRsZT4pYnVuZGxlCit7CisgICAgcmV0dXJuIF9idW5kbGUuZ2V0KCk7
Cit9CisKKy0gKFRlc3RVUkxTY2hlbWVIYW5kbGVyICopc2NoZW1lSGFuZGxlcgoreworICAgIHJl
dHVybiBfc2NoZW1lSGFuZGxlci5nZXQoKTsKK30KKworLSAodm9pZClkaWRGaW5pc2hEb2N1bWVu
dExvYWQKK3sKKyAgICBfZmluaXNoZWREb2N1bWVudExvYWQgPSBZRVM7Cit9CisKKy0gKHZvaWQp
ZGlkRmluaXNoTG9hZAoreworICAgIF9maW5pc2hlZExvYWQgPSBZRVM7Cit9CisKK0BlbmQKKwor
c3RhdGljIHZvaWQgd2FpdEZvckRlbGF5KFNlY29uZHMgZGVsYXkpCit7CisgICAgX19ibG9jayBi
b29sIGRvbmUgPSBmYWxzZTsKKyAgICBkaXNwYXRjaF9hZnRlcihkaXNwYXRjaF90aW1lKERJU1BB
VENIX1RJTUVfTk9XLCBkZWxheS5uYW5vc2Vjb25kcygpKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVl
dWUoKSwgXnsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfSk7CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChQYXJzZXJZaWVsZFRva2VuVGVzdHMsIFBy
ZXZlbnREb2N1bWVudExvYWRCeVRha2luZ1BhcnNlcllpZWxkVG9rZW4pCit7CisgICAgYXV0byB3
ZWJWaWV3ID0gW1BhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyB3ZWJWaWV3XTsKKyAgICBbW3dl
YlZpZXcgYnVuZGxlXSB0YWtlRG9jdW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRd
OworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CisKKyAgICAvLyBH
aXZlIHRoZSB3ZWIgdmlldyBhIGNoYW5jZSB0byBsb2FkIHRoZSBwYWdlLiBJbiB0aGUgY2FzZSB3
aGVyZSB0aGUgdG9rZW4gZmFpbHMgdG8geWllbGQgZG9jdW1lbnQgcGFyc2luZywgaXQncyB2ZXJ5
IGxpa2VseSB0aGF0CisgICAgLy8gdGhlIGRvY3VtZW50IHdpbGwgZmluaXNoIGxvYWRpbmcsIGFu
ZCB3ZSdsbCBmYWlsIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBiZWxvdy4gSW4gdGhlIHVubGlrZWx5
IGV2ZW50IHdoZXJlIHBhZ2UgbG9hZCBtYXkgdGFrZQorICAgIC8vIGxvbmdlciB0aGFuIDEgc2Vj
b25kLCB0aGlzIHRlc3Qgc2hvdWxkIHN0aWxsIHBhc3MuCisgICAgd2FpdEZvckRlbGF5KDFfcyk7
CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGZpbmlzaGVkRG9jdW1lbnRMb2FkXSk7CisgICAg
RVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGZpbmlzaGVkTG9hZF0pOworCisgICAgLy8gTm93LCBhbGxv
dyBkb2N1bWVudCBwYXJzaW5nIHRvIGNvbnRpbnVlLCBhbmQgd2FpdCBmb3IgdGhlIHBhZ2UgdG8g
ZmluaXNoIGxvYWRpbmcuCisgICAgW1t3ZWJWaWV3IGJ1bmRsZV0gcmVsZWFzZURvY3VtZW50UGFy
c2VyVG9rZW5dOworCisgICAgd2hpbGUgKCFbd2ViVmlldyBmaW5pc2hlZExvYWRdIHx8ICFbd2Vi
VmlldyBmaW5pc2hlZERvY3VtZW50TG9hZF0pCisgICAgICAgIFtbTlNSdW5Mb29wIGN1cnJlbnRS
dW5Mb29wXSBydW5Nb2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlIGJlZm9yZURhdGU6W05TRGF0ZSBk
aXN0YW50UGFzdF1dOworfQorCitURVNUKFBhcnNlcllpZWxkVG9rZW5UZXN0cywgVGFrZU11bHRp
cGxlUGFyc2VyWWllbGRUb2tlbnMpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gW1BhcnNlcllpZWxk
VG9rZW5UZXN0V2ViVmlldyB3ZWJWaWV3XTsKKyAgICBbW3dlYlZpZXcgYnVuZGxlXSB0YWtlRG9j
dW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdOworICAgIFt3ZWJWaWV3IGxvYWRU
ZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CisKKyAgICB3YWl0Rm9yRGVsYXkoMC41X3MpOworICAg
IEVYUEVDVF9GQUxTRShbd2ViVmlldyBmaW5pc2hlZERvY3VtZW50TG9hZF0pOworICAgIEVYUEVD
VF9GQUxTRShbd2ViVmlldyBmaW5pc2hlZExvYWRdKTsKKworICAgIFtbd2ViVmlldyBidW5kbGVd
IHRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0ZXJDb21taXR0aW5nTG9hZF07CisgICAgW1t3ZWJW
aWV3IGJ1bmRsZV0gcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW5dOworCisgICAgd2FpdEZvckRl
bGF5KDAuNV9zKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgZmluaXNoZWREb2N1bWVudExv
YWRdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgZmluaXNoZWRMb2FkXSk7CisKKyAgICBb
W3dlYlZpZXcgYnVuZGxlXSByZWxlYXNlRG9jdW1lbnRQYXJzZXJUb2tlbl07CisKKyAgICB3aGls
ZSAoIVt3ZWJWaWV3IGZpbmlzaGVkTG9hZF0gfHwgIVt3ZWJWaWV3IGZpbmlzaGVkRG9jdW1lbnRM
b2FkXSkKKyAgICAgICAgW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3BdIHJ1bk1vZGU6TlNEZWZh
dWx0UnVuTG9vcE1vZGUgYmVmb3JlRGF0ZTpbTlNEYXRlIGRpc3RhbnRQYXN0XV07Cit9CisKK1RF
U1QoUGFyc2VyWWllbGRUb2tlblRlc3RzLCBEZWZlcnJlZFNjcmlwdEV4ZWN1dGVzQmVmb3JlRG9j
dW1lbnRMb2FkV2hlblRha2luZ1BhcnNlcllpZWxkVG9rZW4pCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gW1BhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyB3ZWJWaWV3XTsKKworICAgIFtbd2ViVmll
dyBidW5kbGVdIHRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0ZXJDb21taXR0aW5nTG9hZF07Cisg
ICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJ0ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0
Il07CisKKyAgICB3YWl0Rm9yRGVsYXkoMC41X3MpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmll
dyBmaW5pc2hlZERvY3VtZW50TG9hZF0pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBmaW5p
c2hlZExvYWRdKTsKKworICAgIFtbd2ViVmlldyBidW5kbGVdIHJlbGVhc2VEb2N1bWVudFBhcnNl
clRva2VuXTsKKworICAgIHdoaWxlICghW3dlYlZpZXcgZmluaXNoZWRMb2FkXSB8fCAhW3dlYlZp
ZXcgZmluaXNoZWREb2N1bWVudExvYWRdKQorICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVu
TG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0RhdGUgZGlz
dGFudFBhc3RdXTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHN5bmNocm9ub3VzIHNjcmlwdCBpcyBl
eGVjdXRlZCBiZWZvcmUgZGVmZXJyZWQgc2NyaXB0IGFuZCBkZWZlcnJlZCBzY3JpcHQgaXMgcnVu
IGJlZm9yZSBkb2N1bWVudCBsb2FkLgorICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV2ZW50TWVz
c2FnZXMgPSBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LmV2
ZW50TWVzc2FnZXMiXTsKKyAgICBFWFBFQ1RfRVEoZXZlbnRNZXNzYWdlcy5jb3VudCwgOFUpOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiUnVubmluZyBzeW5jIiwgZXZlbnRNZXNzYWdlc1swXSk7Cisg
ICAgRVhQRUNUX1dLX1NUUkVRKCJMb2FkZWQgc2NyaXB0OiBzeW5jIiwgZXZlbnRNZXNzYWdlc1sx
XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJSdW5uaW5nIGRlZmVyLWJlZm9yZSIsIGV2ZW50TWVz
c2FnZXNbMl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiTG9hZGVkIHNjcmlwdDogZGVmZXItYmVm
b3JlIiwgZXZlbnRNZXNzYWdlc1szXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJSdW5uaW5nIGRl
ZmVyLWFmdGVyIiwgZXZlbnRNZXNzYWdlc1s0XSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJMb2Fk
ZWQgc2NyaXB0OiBkZWZlci1hZnRlciIsIGV2ZW50TWVzc2FnZXNbNV0pOworICAgIEVYUEVDVF9X
S19TVFJFUSgiRG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZyIsIGV2ZW50TWVzc2FnZXNbNl0pOwor
ICAgIEVYUEVDVF9XS19TVFJFUSgiRmluaXNoZWQgbG9hZGluZyIsIGV2ZW50TWVzc2FnZXNbN10p
OworfQorCitURVNUKFBhcnNlcllpZWxkVG9rZW5UZXN0cywgQXN5bmNTY3JpcHRSdW5zV2hlbkZl
dGNoZWQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gW1BhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmll
dyB3ZWJWaWV3XTsKKyAgICBbd2ViVmlldyBzY2hlbWVIYW5kbGVyXS5zdGFydFVSTFNjaGVtZVRh
c2tIYW5kbGVyID0gW10gKFdLV2ViVmlldyAqLCBpZCA8V0tVUkxTY2hlbWVUYXNrPiB0YXNrKSB7
CisgICAgICAgIGF1dG8gc2NyaXB0ID0gcmV0YWluUHRyKEAid2luZG93LmV2ZW50TWVzc2FnZXMu
cHVzaCgnUnVubmluZyBhc3luYyBzY3JpcHQuJyk7Iik7CisgICAgICAgIGF1dG8gcmVzcG9uc2Ug
PSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0
LlVSTCBNSU1FVHlwZTpAInRleHQvamF2YXNjcmlwdCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOltz
Y3JpcHQgbGVuZ3RoXSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgICAgICBkaXNwYXRjaF9h
c3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbdGFzayA9IHJldGFpblB0cih0YXNrKSwg
cmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgc2NyaXB0ID0gV1RGTW92ZShzY3JpcHQpXSB7
CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOwor
ICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W3NjcmlwdCBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAgICAgICAgICAgW3Rhc2sgZGlkRmluaXNoXTsK
KyAgICAgICAgfSk7CisgICAgfTsKKworICAgIFtbd2ViVmlldyBidW5kbGVdIHRha2VEb2N1bWVu
dFBhcnNlclRva2VuQWZ0ZXJDb21taXR0aW5nTG9hZF07CisKKyAgICBOU1VSTCAqcGFnZVVSTCA9
IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ0ZXh0LXdpdGgtYXN5bmMt
c2NyaXB0IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQ
SS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3Ry
aW5nV2l0aENvbnRlbnRzT2ZVUkw6cGFnZVVSTCBlbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGlu
ZyBlcnJvcjpuaWxdIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJjdXN0b206Ly8iXV07
CisKKyAgICB3YWl0Rm9yRGVsYXkoMC41X3MpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBm
aW5pc2hlZERvY3VtZW50TG9hZF0pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBmaW5pc2hl
ZExvYWRdKTsKKworICAgIFtbd2ViVmlldyBidW5kbGVdIHJlbGVhc2VEb2N1bWVudFBhcnNlclRv
a2VuXTsKKworICAgIHdoaWxlICghW3dlYlZpZXcgZmluaXNoZWRMb2FkXSB8fCAhW3dlYlZpZXcg
ZmluaXNoZWREb2N1bWVudExvYWRdKQorICAgICAgICBbW05TUnVuTG9vcCBjdXJyZW50UnVuTG9v
cF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRlOltOU0RhdGUgZGlzdGFu
dFBhc3RdXTsKKworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV2ZW50TWVzc2FnZXMgPSBbd2Vi
VmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93LmV2ZW50TWVzc2FnZXMi
XTsKKyAgICBFWFBFQ1RfRVEoZXZlbnRNZXNzYWdlcy5jb3VudCwgNFUpOworICAgIEVYUEVDVF9X
S19TVFJFUSgiQmVmb3JlIHJlcXVlc3RpbmcgYXN5bmMgc2NyaXB0LiIsIGV2ZW50TWVzc2FnZXNb
MF0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiQWZ0ZXIgcmVxdWVzdGluZyBhc3luYyBzY3JpcHQu
IiwgZXZlbnRNZXNzYWdlc1sxXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJSdW5uaW5nIGFzeW5j
IHNjcmlwdC4iLCBldmVudE1lc3NhZ2VzWzJdKTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoIkZpbmlz
aGVkIHJlcXVlc3RpbmcgYXN5bmMgc2NyaXB0LiIsIGV2ZW50TWVzc2FnZXNbM10pOworfQorCisj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFVSTFNjaGVtZUhhbmRsZXIuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kMTcxM2RmNDA0ZWE0YjViMjczYzBhMjIzNjQxZDAyY2ZlNjUzYWU5Ci0tLSAvZGV2L251bGwK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0VVJMU2NoZW1l
SGFuZGxlci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKwor
I2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworQGludGVy
ZmFjZSBUZXN0VVJMU2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+
CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChec3RhcnRVUkxTY2hlbWVUYXNr
SGFuZGxlcikoV0tXZWJWaWV3ICosIGlkIDxXS1VSTFNjaGVtZVRhc2s+KTsKK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljLCBjb3B5KSB2b2lkIChec3RvcFVSTFNjaGVtZVRhc2tIYW5kbGVyKShXS1dlYlZp
ZXcgKiwgaWQgPFdLVVJMU2NoZW1lVGFzaz4pOworCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElf
RU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9UZXN0VVJMU2NoZW1lSGFuZGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVGVzdFVSTFNjaGVtZUhhbmRsZXIubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmM3MjAxZDQwMzAy
MTc4MmQzZDVmYjJlNGZjYjRkMGYyYjFiZDg5YgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFVSTFNjaGVtZUhhbmRsZXIubW0KQEAg
LTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgorCisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKwor
I2lmIFdLX0FQSV9FTkFCTEVECisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0VVJMU2NoZW1lSGFuZGxl
ciB7CisgICAgQmxvY2tQdHI8dm9pZChXS1dlYlZpZXcgKiwgaWQgPFdLVVJMU2NoZW1lVGFzaz4p
PiBfc3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjsKKyAgICBCbG9ja1B0cjx2b2lkKFdLV2ViVmll
dyAqLCBpZCA8V0tVUkxTY2hlbWVUYXNrPik+IF9zdG9wVVJMU2NoZW1lVGFza0hhbmRsZXI7Cit9
CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRh
c2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKK3sKKyAgICBpZiAoX3N0YXJ0
VVJMU2NoZW1lVGFza0hhbmRsZXIpCisgICAgICAgIF9zdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVy
KHdlYlZpZXcsIHVybFNjaGVtZVRhc2spOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNj
aGVtZVRhc2sKK3sKKyAgICBpZiAoX3N0b3BVUkxTY2hlbWVUYXNrSGFuZGxlcikKKyAgICAgICAg
X3N0b3BVUkxTY2hlbWVUYXNrSGFuZGxlcih3ZWJWaWV3LCB1cmxTY2hlbWVUYXNrKTsKK30KKwor
LSAodm9pZClzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOih2b2lkICheKShXS1dlYlZpZXcg
KiwgaWQgPFdLVVJMU2NoZW1lVGFzaz4pKWJsb2NrCit7CisgICAgX3N0YXJ0VVJMU2NoZW1lVGFz
a0hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoYmxvY2spOworfQorCistICh2b2lkICheKShXS1dlYlZp
ZXcgKiwgaWQgPFdLVVJMU2NoZW1lVGFzaz4pKXN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIKK3sK
KyAgICByZXR1cm4gX3N0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIuZ2V0KCk7Cit9CisKKy0gKHZv
aWQpc2V0U3RvcFVSTFNjaGVtZVRhc2tIYW5kbGVyOih2b2lkICheKShXS1dlYlZpZXcgKiwgaWQg
PFdLVVJMU2NoZW1lVGFzaz4pKWJsb2NrCit7CisgICAgX3N0YXJ0VVJMU2NoZW1lVGFza0hhbmRs
ZXIgPSBtYWtlQmxvY2tQdHIoYmxvY2spOworfQorCistICh2b2lkICheKShXS1dlYlZpZXcgKiwg
aWQgPFdLVVJMU2NoZW1lVGFzaz4pKXN0b3BVUkxTY2hlbWVUYXNrSGFuZGxlcgoreworICAgIHJl
dHVybiBfc3RvcFVSTFNjaGVtZVRhc2tIYW5kbGVyLmdldCgpOworfQorCitAZW5kCisKKyNlbmRp
ZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS90ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wZmIyM2RmMTE5YjZkMTE0MzAwYjc1MzNlMzM0OWU3YjAwYWJkMWVlCi0tLSAvZGV2
L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90ZXh0LXdp
dGgtYXN5bmMtc2NyaXB0Lmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1k
ZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZXZl
bnRNZXNzYWdlcyA9IFtdOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNj
cmlwdCBzcmM9ImFzeW5jLmpzIiBhc3luYz48L3NjcmlwdD4KKyAgICA8c2NyaXB0PgorICAgICAg
ICBldmVudE1lc3NhZ2VzLnB1c2goIkJlZm9yZSByZXF1ZXN0aW5nIGFzeW5jIHNjcmlwdC4iKTsK
KyAgICAgICAgZmV0Y2goImFzeW5jLmpzIikudGhlbihyZXNwb25zZSA9PiBldmVudE1lc3NhZ2Vz
LnB1c2goIkZpbmlzaGVkIHJlcXVlc3RpbmcgYXN5bmMgc2NyaXB0LiIpKTsKKyAgICAgICAgZXZl
bnRNZXNzYWdlcy5wdXNoKCJBZnRlciByZXF1ZXN0aW5nIGFzeW5jIHNjcmlwdC4iKTsKKyAgICA8
L3NjcmlwdD4KKyAgICA8cD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1ldCwgPGEgaHJlZj0iaHR0
cHM6Ly93ZWJraXQub3JnIj5jb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVsaXQ8L2E+LCBzZWQgZG8g
ZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1
YS4gPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj5UZW1wb3IgaWQgZXUgbmlzbCBudW5jIG1p
IGlwc3VtIGZhdWNpYnVzIHZpdGFlLjwvYT4gU2VkIHRlbXB1cyB1cm5hIGV0IHBoYXJldHJhIHBo
YXJldHJhIG1hc3NhIG1hc3NhLiBWaXRhZSB0b3J0b3IgY29uZGltZW50dW0gbGFjaW5pYSBxdWlz
IHZlbCBlcm9zIGRvbmVjIGFjLiA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPlVsbGFtY29y
cGVyIHZlbGl0IHNlZCB1bGxhbWNvcnBlciBtb3JiaTwvYT4gdGluY2lkdW50IG9ybmFyZSBtYXNz
YSBlZ2V0LiBTaXQgYW1ldCBjdXJzdXMgc2l0IGFtZXQgZGljdHVtLiBJZCBldSBuaXNsIG51bmMg
bWkgaXBzdW0gZmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMuIFN1c2NpcGl0IHRlbGx1cyBtYXVy
aXMgYSBkaWFtIG1hZWNlbmFzIHNlZC4gQ29uc2VxdWF0IG5pc2wgdmVsIHByZXRpdW0gbGVjdHVz
IHF1YW0gaWQgbGVvLiA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPk5ldHVzIGV0IG1hbGVz
dWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBpbnRlZ2VyLjwvYT4gUXVhbSBsYWN1cyBzdXNw
ZW5kaXNzZSBmYXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlIGxvcmVtIGlwc3VtLiBTZW0gaW50ZWdl
ciB2aXRhZSBqdXN0byBlZ2V0IG1hZ25hIGZlcm1lbnR1bSBpYWN1bGlzLiBBIGNvbmRpbWVudHVt
IHZpdGFlIHNhcGllbiBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlLiBWYXJp
dXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbS4gSXBzdW0gZmF1Y2lidXMgdml0YWUgYWxpcXVl
dCBuZWMgdWxsYW1jb3JwZXIgc2l0LjwvcD4KKyAgICA8cD5TZWQgZmF1Y2lidXMgPGEgaHJlZj0i
aHR0cHM6Ly93ZWJraXQub3JnIj50dXJwaXMgaW4gZXUgbWkgYmliZW5kdW08L2E+LiBEb25lYyBl
bmltIGRpYW0gdnVscHV0YXRlIHV0IHBoYXJldHJhIHNpdCBhbWV0IGFsaXF1YW0uIENvbnNlcXVh
dCBpZCBwb3J0YSBuaWJoIHZlbmVuYXRpcyBjcmFzIHNlZCBmZWxpcyBlZ2V0IHZlbGl0LiBBdCBs
ZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVzIGlkIGludGVyZHVtIHZl
bGl0LiBJZCBjb25zZWN0ZXR1ciBwdXJ1cyB1dCBmYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0g
aW50ZWdlciBlbmltLiBJcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0ZXR1ciBhZGlwaXNjaW5n
IGVsaXQgdXQgYWxpcXVhbS4gQXQgdGVsbHVzIGF0IHVybmEgY29uZGltZW50dW0gbWF0dGlzLiBG
YXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0gaW50ZWdlciBlbmltLiBBdCBlbGVtZW50dW0gZXUg
ZmFjaWxpc2lzIHNlZCBvZGlvIG1vcmJpLiBGYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBpbnRlZ2Vy
IGVnZXQgYWxpcXVldC4gQ29uc2VxdWF0IGludGVyZHVtIHZhcml1cyBzaXQgYW1ldCBtYXR0aXMg
dnVscHV0YXRlIGVuaW0gbnVsbGEuIExlY3R1cyBzaXQgYW1ldCBlc3QgcGxhY2VyYXQgaW4gZWdl
c3Rhcy4gRG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHBlbGxlbnRl
c3F1ZSBoYWJpdGFudCBtb3JiaS4gVXJuYSBldCBwaGFyZXRyYSBwaGFyZXRyYSBtYXNzYSBtYXNz
YSB1bHRyaWNpZXMgbWkuPC9wPgorICAgIDxwPlNlZCBsZWN0dXMgdmVzdGlidWx1bSBtYXR0aXMg
dWxsYW1jb3JwZXIgdmVsaXQgc2VkIHVsbGFtY29ycGVyLiA8YSBocmVmPSJodHRwczovL3dlYmtp
dC5vcmciPlF1YW0gbGFjdXMgc3VzcGVuZGlzc2U8L2E+IGZhdWNpYnVzIGludGVyZHVtIHBvc3Vl
cmUgbG9yZW0uIFNhZ2l0dGlzIHZpdGFlIGV0IGxlbyBkdWlzIHV0IGRpYW0uIFR1cnBpcyBtYXNz
YSBzZWQgZWxlbWVudHVtIHRlbXB1cy4gQWxpcXVhbSBzZW0gZnJpbmdpbGxhIHV0IG1vcmJpLiA8
YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPkZyaW5naWxsYSBlc3QgdWxsYW1jb3JwZXI8L2E+
IGVnZXQgbnVsbGEgZmFjaWxpc2kgZXRpYW0gZGlnbmlzc2ltLiBJZCB2ZWxpdCB1dCB0b3J0b3Ig
cHJldGl1bS4gQmliZW5kdW0gYXQgdmFyaXVzIHZlbCBwaGFyZXRyYSB2ZWwgdHVycGlzIG51bmMu
IFNpdCBhbWV0IGFsaXF1YW0gaWQgZGlhbSBtYWVjZW5hcy4gTG9ib3J0aXMgZmV1Z2lhdCB2aXZh
bXVzIGF0IGF1Z3VlIDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZyI+ZWdldCBhcmN1IGRpY3R1
bTwvYT4gdmFyaXVzIGR1aXMuIExpYmVybyBqdXN0byBsYW9yZWV0IHNpdCBhbWV0LiBFZ2VzdGFz
IHRlbGx1cyBydXRydW0gdGVsbHVzIHBlbGxlbnRlc3F1ZSBldSB0aW5jaWR1bnQgdG9ydG9yIGFs
aXF1YW0uPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RleHQtd2l0aC1kZWZlcnJlZC1z
Y3JpcHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODk0MGIzMDQxMDI3ZDRiNjI2MWU5NDkzZDYxNTEwY2Mx
NWY1Y2E3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS90ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwKQEAgLTAsMCArMSwyNiBAQAor
PCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0
IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CisgICAgPHNj
cmlwdD4KKyAgICAgICAgZXZlbnRNZXNzYWdlcyA9IFtdCisKKyAgICAgICAgZnVuY3Rpb24gc2Ny
aXB0TG9hZGVkKHNjcmlwdCkKKyAgICAgICAgeworICAgICAgICAgICAgZXZlbnRNZXNzYWdlcy5w
dXNoKGBMb2FkZWQgc2NyaXB0OiAke3NjcmlwdC5pZH1gKTsKKyAgICAgICAgfQorICAgIDwvc2Ny
aXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZG9jdW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsICgpID0+IGV2ZW50TWVzc2FnZXMucHVz
aCgiRG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZyIpKTsKKyAgICAgICAgYWRkRXZlbnRMaXN0ZW5l
cigibG9hZCIsICgpID0+IGV2ZW50TWVzc2FnZXMucHVzaCgiRmluaXNoZWQgbG9hZGluZyIpKTsK
KyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IGlkPSJkZWZlci1iZWZvcmUiIG9ubG9hZD0ic2Ny
aXB0TG9hZGVkKHRoaXMpIiBkZWZlciBzcmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0LGV2ZW50TWVz
c2FnZXMucHVzaCgnUnVubmluZyBkZWZlci1iZWZvcmUnKSI+PC9zY3JpcHQ+CisgICAgPHNjcmlw
dCBpZD0ic3luYyIgb25sb2FkPSJzY3JpcHRMb2FkZWQodGhpcykiIHNyYz0iZGF0YTp0ZXh0L2ph
dmFzY3JpcHQsZXZlbnRNZXNzYWdlcy5wdXNoKCdSdW5uaW5nIHN5bmMnKSI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBpZD0iZGVmZXItYWZ0ZXIiIG9ubG9hZD0ic2NyaXB0TG9hZGVkKHRoaXMpIiBk
ZWZlciBzcmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0LGV2ZW50TWVzc2FnZXMucHVzaCgnUnVubmlu
ZyBkZWZlci1hZnRlcicpIj48L3NjcmlwdD4KKyAgICA8cD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQg
YW1ldCwgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj5jb25zZWN0ZXR1ciBhZGlwaXNjaW5n
IGVsaXQ8L2E+LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQg
ZG9sb3JlIG1hZ25hIGFsaXF1YS4gPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj5UZW1wb3Ig
aWQgZXUgbmlzbCBudW5jIG1pIGlwc3VtIGZhdWNpYnVzIHZpdGFlLjwvYT4gU2VkIHRlbXB1cyB1
cm5hIGV0IHBoYXJldHJhIHBoYXJldHJhIG1hc3NhIG1hc3NhLiBWaXRhZSB0b3J0b3IgY29uZGlt
ZW50dW0gbGFjaW5pYSBxdWlzIHZlbCBlcm9zIGRvbmVjIGFjLiA8YSBocmVmPSJodHRwczovL3dl
YmtpdC5vcmciPlVsbGFtY29ycGVyIHZlbGl0IHNlZCB1bGxhbWNvcnBlciBtb3JiaTwvYT4gdGlu
Y2lkdW50IG9ybmFyZSBtYXNzYSBlZ2V0LiBTaXQgYW1ldCBjdXJzdXMgc2l0IGFtZXQgZGljdHVt
LiBJZCBldSBuaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMuIFN1
c2NpcGl0IHRlbGx1cyBtYXVyaXMgYSBkaWFtIG1hZWNlbmFzIHNlZC4gQ29uc2VxdWF0IG5pc2wg
dmVsIHByZXRpdW0gbGVjdHVzIHF1YW0gaWQgbGVvLiA8YSBocmVmPSJodHRwczovL3dlYmtpdC5v
cmciPk5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBpbnRlZ2VyLjwv
YT4gUXVhbSBsYWN1cyBzdXNwZW5kaXNzZSBmYXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlIGxvcmVt
IGlwc3VtLiBTZW0gaW50ZWdlciB2aXRhZSBqdXN0byBlZ2V0IG1hZ25hIGZlcm1lbnR1bSBpYWN1
bGlzLiBBIGNvbmRpbWVudHVtIHZpdGFlIHNhcGllbiBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9y
YmkgdHJpc3RpcXVlLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbS4gSXBzdW0gZmF1
Y2lidXMgdml0YWUgYWxpcXVldCBuZWMgdWxsYW1jb3JwZXIgc2l0LjwvcD4KKyAgICA8cD5TZWQg
ZmF1Y2lidXMgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj50dXJwaXMgaW4gZXUgbWkgYmli
ZW5kdW08L2E+LiBEb25lYyBlbmltIGRpYW0gdnVscHV0YXRlIHV0IHBoYXJldHJhIHNpdCBhbWV0
IGFsaXF1YW0uIDxpbWcgc3JjPSJhcHBsZS5naWYiPjwvaW1nPiBDb25zZXF1YXQgaWQgcG9ydGEg
bmliaCB2ZW5lbmF0aXMgY3JhcyBzZWQgZmVsaXMgZWdldCB2ZWxpdC4gQXQgbGVjdHVzIHVybmEg
ZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cyBpZCBpbnRlcmR1bSB2ZWxpdC4gSWQgY29u
c2VjdGV0dXIgcHVydXMgdXQgZmF1Y2lidXMgcHVsdmluYXIgZWxlbWVudHVtIGludGVnZXIgZW5p
bS4gSXBzdW0gZG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2luZyBlbGl0IHV0IGFs
aXF1YW0uIEF0IHRlbGx1cyBhdCB1cm5hIGNvbmRpbWVudHVtIG1hdHRpcy4gRmF1Y2lidXMgcHVs
dmluYXIgZWxlbWVudHVtIGludGVnZXIgZW5pbS4gQXQgZWxlbWVudHVtIGV1IGZhY2lsaXNpcyBz
ZWQgb2RpbyBtb3JiaS4gRmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgaW50ZWdlciBlZ2V0IGFsaXF1
ZXQuIENvbnNlcXVhdCBpbnRlcmR1bSB2YXJpdXMgc2l0IGFtZXQgbWF0dGlzIHZ1bHB1dGF0ZSBl
bmltIG51bGxhLiBMZWN0dXMgc2l0IGFtZXQgZXN0IHBsYWNlcmF0IGluIGVnZXN0YXMuIERvbG9y
IHNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCBwZWxsZW50ZXNxdWUgaGFiaXRh
bnQgbW9yYmkuIFVybmEgZXQgcGhhcmV0cmEgcGhhcmV0cmEgbWFzc2EgbWFzc2EgdWx0cmljaWVz
IG1pLjwvcD4KKyAgICA8cD5TZWQgbGVjdHVzIHZlc3RpYnVsdW0gbWF0dGlzIHVsbGFtY29ycGVy
IHZlbGl0IHNlZCB1bGxhbWNvcnBlci4gPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj5RdWFt
IGxhY3VzIHN1c3BlbmRpc3NlPC9hPiBmYXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlIGxvcmVtLiBT
YWdpdHRpcyB2aXRhZSBldCBsZW8gZHVpcyB1dCBkaWFtLiBUdXJwaXMgbWFzc2Egc2VkIGVsZW1l
bnR1bSB0ZW1wdXMuIEFsaXF1YW0gc2VtIGZyaW5naWxsYSB1dCBtb3JiaS4gPGEgaHJlZj0iaHR0
cHM6Ly93ZWJraXQub3JnIj5GcmluZ2lsbGEgZXN0IHVsbGFtY29ycGVyPC9hPiBlZ2V0IG51bGxh
IGZhY2lsaXNpIGV0aWFtIGRpZ25pc3NpbS4gSWQgdmVsaXQgdXQgdG9ydG9yIHByZXRpdW0uIEJp
YmVuZHVtIGF0IHZhcml1cyB2ZWwgcGhhcmV0cmEgdmVsIHR1cnBpcyBudW5jLiBTaXQgYW1ldCBh
bGlxdWFtIGlkIGRpYW0gbWFlY2VuYXMuIExvYm9ydGlzIGZldWdpYXQgdml2YW11cyBhdCBhdWd1
ZSA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPmVnZXQgYXJjdSBkaWN0dW08L2E+IHZhcml1
cyBkdWlzLiBMaWJlcm8ganVzdG8gbGFvcmVldCBzaXQgYW1ldC4gRWdlc3RhcyB0ZWxsdXMgcnV0
cnVtIHRlbGx1cyBwZWxsZW50ZXNxdWUgZXUgdGluY2lkdW50IHRvcnRvciBhbGlxdWFtLjwvcD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>345167</attachid>
            <date>2018-07-17 10:43:15 -0700</date>
            <delta_ts>2018-07-17 11:23:43 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-187682-20180717104314.patch</filename>
            <type>text/plain</type>
            <size>61137</size>
            <attacher name="Wenson Hsieh">wenson_hsieh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMzODg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzFkODRkNzQxOTNhNmRh
Y2QwZDhkNjdjMDdlYzA1YjE3NWJmMWRlNi4uY2FkN2QwYzkzYTI4ZDYyOTE1YmI5MGI4Nzk4ZmVm
N2RkY2JjMjhmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk3IEBACisyMDE4LTA3LTE3ICBXZW5z
b24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhbiBTUEkg
aG9vayB0byBhbGxvdyBjbGllbnRzIHRvIHlpZWxkIGRvY3VtZW50IHBhcnNpbmcgYW5kIHNjcmlw
dCBleGVjdXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE4NzY4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDIyMDc0NTM+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFVzaW5nIGEgc2luZ2xlIHdlYiBw
cm9jZXNzIGZvciBib3RoIHRoZSBSZWFkZXIgcGFnZSBhbmQgb3JpZ2luYWwgd2ViIHBhZ2Ugb24g
d2F0Y2hPUyBoYXMgbXVsdGlwbGUgYmVuZWZpdHMsCisgICAgICAgIGluY2x1ZGluZzogKDEpIGFs
bG93aW5nIHRoZSB1c2VyIHRvIGJhaWwgb3V0IG9mIFJlYWRlciBhbmQgdmlldyB0aGUgb3JpZ2lu
YWwgd2ViIHBhZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbG9hZCBpdAorICAgICAgICBhZ2FpbiwgYW5k
ICgyKSBpbXByb3ZpbmcgdGhlIGJyaW5ndXAgdGltZSBvZiB0aGUgUmVhZGVyIHBhZ2UsIHNpbmNl
IHN1YnJlc291cmNlcyBhcmUgYWxyZWFkeSBjYWNoZWQgaW4gcHJvY2VzcworICAgICAgICBhbmQg
d2UgZG9uJ3QgZWF0IHRoZSBhZGRpdGlvbmFsIGNvc3Qgb2YgYSB3ZWIgcHJvY2VzcyBsYXVuY2gg
aWYgcHJld2FybWluZyBmYWlscy4KKworICAgICAgICBIb3dldmVyLCB0aGlzIGhhcyBzb21lIGRy
YXdiYWNrcyBhcyB3ZWxsLCBvbmUgb2Ygd2hpY2ggaXMgdGhhdCBtYWluIHRocmVhZCB3b3JrIGJl
aW5nIGRvbmUgb24gYmVoYWxmIG9mIHRoZQorICAgICAgICBvcmlnaW5hbCBwYWdlIG1heSBjb250
ZW5kIHdpdGggd29yayBiZWluZyBkb25lIHRvIGxvYWQgYW5kIHJlbmRlciB0aGUgUmVhZGVyIHBh
Z2UuIFRoaXMgaXMgZXNwZWNpYWxseSBiYWQgd2hlbgorICAgICAgICB0aGUgcGFnZSBpcyBpbiB0
aGUgbWlkZGxlIG9mIGV4ZWN1dGluZyBoZWF2eSBzY3JpcHQgYWZ0ZXIgU2FmYXJpIGhhcyBhbHJl
YWR5IGRldGVjdGVkIHRoYXQgdGhlIFJlYWRlciB2ZXJzaW9uIG9mCisgICAgICAgIHRoZSBwYWdl
IGlzIGF2YWlsYWJsZSwgYnV0IGJlZm9yZSBpdCBoYXMgZmluaXNoZWQgbG9hZGluZyB0aGUgUmVh
ZGVyIHBhZ2UuIFRoZSByZXN1bHQgaXMgdGhhdCBzY3JpcHQgb24gdGhlCisgICAgICAgIG9yaWdp
bmFsIHBhZ2UgbWF5IGJsb2NrIHRoZSBmaXJzdCBwYWludCBvZiB0aGUgUmVhZGVyIHBhZ2UgKG9u
IE5ldyBZb3JrIFRpbWVzIGFydGljbGVzLCB0aGlzIG9mdGVuIGxlYWRzIHRvIGFuCisgICAgICAg
IGFwcGFyZW50IHBhZ2UgbG9hZCB0aW1lIG9mIDI1LTM1IHNlY29uZHMgYmVmb3JlIHRoZSB1c2Vy
IHNlZXMgYW55dGhpbmcgYmVzaWRlcyBhIGJsYW5rIHNjcmVlbikuCisKKyAgICAgICAgVG8gbWl0
aWdhdGUgdGhpcywgd2UgaW50cm9kdWNlIGEgd2F5IGZvciBpbmplY3RlZCBidW5kbGUgY2xpZW50
cyB0byB5aWVsZCBwYXJzaW5nIGFuZCBhc3luYyBzY3JpcHQgZXhlY3V0aW9uIG9uCisgICAgICAg
IGEgZG9jdW1lbnQuIFRoaXMgY2FwYWJpbGl0eSBpcyBzdXJmYWNlZCBpbiB0aGUgZm9ybSBvZiBh
biBvcGFxdWUgdG9rZW4gd2hpY2ggY2xpZW50cyBtYXkgcmVxdWVzdCBmcm9tIGEKKyAgICAgICAg
V0tET01Eb2N1bWVudC4gQ29uc3RydWN0aW9uIG9mIHRoZSB0b2tlbiBjYXVzZXMgdGhlIGRvY3Vt
ZW50IHRvIGJlZ2luIHlpZWxkaW5nIGFuZCBkZWZlciBleGVjdXRpb24gb2YgcHJldmlvdXNseQor
ICAgICAgICBzY2hlZHVsZWQgc2NyaXB0cywgb25seSBpZiB0aGVyZSB3ZXJlIG5vIGFjdGl2ZSB0
b2tlbnMgb24gdGhlIGRvY3VtZW50IGFscmVhZHkuIFNpbWlsYXJseSwgZGVzdHJ1Y3Rpb24gb2Yg
YWxsCisgICAgICAgIGFjdGl2ZSB0b2tlbnMgb24gdGhlIGRvY3VtZW50IGNhdXNlcyBpdCB0byBz
dG9wIHlpZWxkaW5nIGFuZCByZXN1bWUgZXhlY3V0aW9uIG9mIHNjcmlwdHMgaWYgbmVlZGVkLgor
CisgICAgICAgIFRlc3RzOiAgUGFyc2VyWWllbGRUb2tlblRlc3RzLlByZXZlbnREb2N1bWVudExv
YWRCeVRha2luZ1BhcnNlcllpZWxkVG9rZW4KKyAgICAgICAgICAgICAgICBQYXJzZXJZaWVsZFRv
a2VuVGVzdHMuVGFrZU11bHRpcGxlUGFyc2VyWWllbGRUb2tlbnMKKyAgICAgICAgICAgICAgICBQ
YXJzZXJZaWVsZFRva2VuVGVzdHMuRGVmZXJyZWRTY3JpcHRFeGVjdXRlc0JlZm9yZURvY3VtZW50
TG9hZFdoZW5UYWtpbmdQYXJzZXJZaWVsZFRva2VuCisgICAgICAgICAgICAgICAgUGFyc2VyWWll
bGRUb2tlblRlc3RzLkFzeW5jU2NyaXB0UnVuc1doZW5GZXRjaGVkCisKKyAgICAgICAgKiBkb20v
RG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmltcGxpY2l0T3Blbik6
CisKKyAgICAgICAgSWYgdGhlIHBhcnNlciB5aWVsZCB0b2tlbiB3YXMgdGFrZW4gYmVmb3JlIHRo
ZSBkb2N1bWVudCdzIHBhcnNlciB3YXMgY3JlYXRlZCwgdGVsbCB0aGUgcGFyc2VyJ3Mgc2NoZWR1
bGVyIHRvCisgICAgICAgIHN0YXJ0IHlpZWxkaW5nIGltbWVkaWF0ZWx5IGFmdGVyIGNyZWF0aW9u
LgorCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFBhcnNlcllpZWxkVG9rZW46OkRvY3VtZW50
UGFyc2VyWWllbGRUb2tlbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFBhcnNlcllpZWxk
VG9rZW46On5Eb2N1bWVudFBhcnNlcllpZWxkVG9rZW4pOgorICAgICAgICAqIGRvbS9Eb2N1bWVu
dC5oOgorCisgICAgICAgIEludHJvZHVjZSBhIHBhcnNlciB5aWVsZCBjb3VudCB0byBEb2N1bWVu
dDsgYXMgbG9uZyBhcyB0aGlzIGNvdW50IGlzIGdyZWF0ZXIgdGhhbiAwLCB3ZSBjb25zaWRlciB0
aGUgRG9jdW1lbnQgdG8KKyAgICAgICAgaGF2ZSBhY3RpdmUgeWllbGQgdG9rZW5zLiBXaGVuIGNv
bnN0cnVjdGluZyBvciBkZXN0cm95aW5nIGEgUGFyc2VyWWllbGRUb2tlbiwgd2UgaW5jcmVtZW50
IGFuZCBkZWNyZW1lbnQgdGhlCisgICAgICAgIHBhcnNlciB5aWVsZCBjb3VudCAocmVzcGVjdGl2
ZWx5KS4KKworICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmNyZWF0ZVBhcnNlcllpZWxkVG9r
ZW4pOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Omhhc0FjdGl2ZVBhcnNlcllpZWxkVG9r
ZW4gY29uc3QpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudFBhcnNlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnRQYXJzZXI6OmRpZEJlZ2luWWllbGRpbmdQYXJzZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRQYXJzZXI6OmRpZEVuZFlpZWxkaW5nUGFyc2VyKToKKworICAgICAg
ICBIb29rcyBmb3IgRG9jdW1lbnQgdG8gdGVsbCBpdHMgcGFyc2VyIHRoYXQgd2UndmUgc3RhcnRl
ZCBvciBmaW5pc2hlZCB5aWVsZGluZy4gVGhpcyB1cGRhdGVzIGEgZmxhZyBvbiB0aGUKKyAgICAg
ICAgcGFyc2VyJ3Mgc2NoZWR1bGVyIHdoaWNoIGlzIGNvbnN1bHRlZCB3aGVuIHdlIGRldGVybWlu
ZSB3aGV0aGVyIHRvIHlpZWxkIGJlZm9yZSBhIHB1bXBpbmcgdG9rZW4gb3IgZXhlY3V0aW5nCisg
ICAgICAgIHNjcmlwdC4KKworICAgICAgICAqIGRvbS9TY3JpcHRSdW5uZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjpyZXN1bWUpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0UnVubmVyOjpub3RpZnlGaW5pc2hlZCk6CisgICAgICAgICogZG9tL1NjcmlwdFJ1bm5lci5o
OgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0UnVubmVyOjpkaWRCZWdpbllpZWxkaW5nUGFyc2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdFJ1bm5lcjo6ZGlkRW5kWWllbGRpbmdQYXJzZXIp
OgorCisgICAgICAgIEhvb2tzIGZvciBEb2N1bWVudCB0byB0ZWxsIGl0cyBTY3JpcHRSdW5uZXIg
dGhhdCB3ZSd2ZSBzdGFydGVkIG9yIGZpbmlzaGVkIHlpZWxkaW5nLiBUaGVzZSB3cmFwIGNhbGxz
IHRvIHN1c3BlbmQKKyAgICAgICAgYW5kIHJlc3VtZS4KKworICAgICAgICAqIGh0bWwvcGFyc2Vy
L0hUTUxEb2N1bWVudFBhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MRG9jdW1lbnRQ
YXJzZXI6OmRpZEJlZ2luWWllbGRpbmdQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTERv
Y3VtZW50UGFyc2VyOjpkaWRFbmRZaWVsZGluZ1BhcnNlcik6CisKKyAgICAgICAgUGx1bWIgdG8g
ZGlkQmVnaW4vZGlkRW5kIGNhbGxzIHRvIHRoZSBIVE1MUGFyc2VyU2NoZWR1bGVyLgorCisgICAg
ICAgICogaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmg6CisgICAgICAgICogaHRtbC9w
YXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MUGFy
c2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGluZ1NjcmlwdCk6CisgICAgICAg
ICogaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFBhcnNlclNjaGVkdWxlcjo6c2hvdWxkWWllbGRCZWZvcmVUb2tlbik6CisKKyAgICAgICAg
Q29uc3VsdCBhIGZsYWcgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIHRvIHlpZWxkLiBUaGlzIGZs
YWcgaXMgc2V0IHRvIHRydWUgb25seSB3aGlsZSB0aGUgZG9jdW1lbnQgaGFzIGFuIGFjdGl2ZQor
ICAgICAgICBwYXJzZXIgeWllbGQgdG9rZW4uCisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJz
ZXJTY2hlZHVsZXI6OmlzU2NoZWR1bGVkRm9yUmVzdW1lIGNvbnN0KToKKworICAgICAgICBDb25z
aWRlciB0aGUgcGFyc2VyIHNjaGVkdWxlciB0byBiZSBzY2hlZHVsZWQgZm9yIHJlc3VtZSBpZiB0
aGVyZSBhcmUgYWN0aXZlIHRva2Vucy4gV2l0aG91dCB0aGlzIGNoYW5nZSwgd2UKKyAgICAgICAg
aW5jb3JyZWN0bHkgY29uc2lkZXIgdGhlIGRvY3VtZW50IHRvIGJlIGZpbmlzaGVkIGxvYWRpbmcg
d2hlbiB3ZSBoYXZlIHlpZWxkIHRva2Vucywgc2luY2UgaXQgYXBwZWFycyB0aGF0IHRoZQorICAg
ICAgICBwYXJzZXIgaXMgbm8gbG9uZ2VyIHNjaGVkdWxlZCB0byBwdW1wIGl0cyB0b2tlbml6ZXIu
CisKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxQYXJzZXJTY2hlZHVsZXI6OmRpZEJlZ2luWWllbGRp
bmdQYXJzZXIpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTFBhcnNlclNjaGVkdWxlcjo6ZGlkRW5k
WWllbGRpbmdQYXJzZXIpOgorCisgICAgICAgIFdoZW4gdGhlIERvY3VtZW50IGJlZ2lucyB5aWVs
ZGluZyBkdWUgdG8gdGhlIGRvY3VtZXQgaGF2aW5nIGFjdGl2ZSB0b2tlbnMgb3IgZW5kcyB5aWVs
ZGluZyBhZnRlciB0aGUgZG9jdW1lbnQKKyAgICAgICAgbG9zZXMgYWxsIG9mIGl0cyB5aWVsZCB0
b2tlbnMsIHVwZGF0ZSBhIGZsYWcgb24gdGhlIHBhcnNlciBzY2hlZHVsZXIuIEFmdGVyIHdlIGZp
bmlzaCB5aWVsZGluZywgYWRkaXRpb25hbGx5CisgICAgICAgIHJlc2NoZWR1bGUgdGhlIHBhcnNl
ciBpZiBuZWVkZWQgdG8gZW5zdXJlIHRoYXQgd2UgY29udGludWUgcGFyc2luZyB0aGUgZG9jdW1l
bnQ7IHdpdGhvdXQgdGhpcyBhZGRpdGlvbmFsIGNoYW5nZQorICAgICAgICB0byByZXN1bWUsIHdl
J2xsIG5ldmVyIGdldCB0aGUgZG9jdW1lbnQgbG9hZCBvciBsb2FkIGV2ZW50cyBhZnRlciByZWxp
bnF1aXNoaW5nIHRoZSB5aWVsZCB0b2tlbi4KKwogMjAxOC0wNy0xNyAgSmF2aWVyIEZlcm5hbmRl
eiAgPGpmZXJuYW5kZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBEZWxldGUgY29udGVudCBvZiBh
IHNpbmdsZSBjZWxsIHRhYmxlIHNob3VsZCBub3QgZGVsZXRlIHRoZSB3aG9sZSB0YWJsZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBiNjQ3ZGNiMGIwOWE1ZjFkMzFiZjBmM2E3ZDE0YjU3NWRlYmRmYzNlLi43MTBjNzEz
ZTczMTQ0MGY4ZjA1ZGRkNjE3NDRhMDcwY2NmYjUxMjg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5
IEBACisyMDE4LTA3LTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhbiBTUEkgaG9vayB0byBhbGxvdyBjbGllbnRzIHRvIHlpZWxkIGRvY3Vt
ZW50IHBhcnNpbmcgYW5kIHNjcmlwdCBleGVjdXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NzY4MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NDIyMDc0NTM+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAg
IEFkZCBob29rcyB0byBXS0RPTURvY3VtZW50IHRvIGNyZWF0ZSBhbmQgcmV0dXJuIGFuIGludGVy
bmFsIFdLRE9NRG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuIG9iamVjdCwgd2hvc2UgbGlmZXRpbWUK
KyAgICAgICAgaXMgdGllZCB0byBhIGRvY3VtZW50IHBhcnNlciB5aWVsZCB0b2tlbi4gU2VlIFdl
YkNvcmUgQ2hhbmdlTG9nIGZvciBtb3JlIGRldGFpbC4KKworICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lmg6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW06CisgICAgICAgICgt
W1dLRE9NRG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuIGluaXRXaXRoRG9jdW1lbnQ6XSk6CisgICAg
ICAgICgtW1dLRE9NRG9jdW1lbnQgcGFyc2VyWWllbGRUb2tlbl0pOgorCiAyMDE4LTA3LTE2ICBT
aW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBjb2xv
ciBmaWx0ZXIgZm9yIHRyYW5zZm9ybWluZyBjb2xvcnMgaW4gRGFyayBNb2RlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAppbmRleCA5MzRlNWNhZTEzYTBhYmE1MzhmZmQwMzUxOTk3MmI3ZmMxMGI4MTk2
Li41NTZhYmNhYjQ5ODBmY2UzMmEyNmJkYTU5ZmE0NzVhOWNmOGI0OGU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAKQEAgLTI2ODYsNiArMjY4NiwxMCBAQCB2b2lkIERvY3VtZW50OjppbXBsaWNp
dE9wZW4oKQogCiAgICAgY2FuY2VsUGFyc2luZygpOwogICAgIG1fcGFyc2VyID0gY3JlYXRlUGFy
c2VyKCk7CisKKyAgICBpZiAoaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigpKQorICAgICAgICBt
X3BhcnNlci0+ZGlkQmVnaW5ZaWVsZGluZ1BhcnNlcigpOworCiAgICAgc2V0UGFyc2luZyh0cnVl
KTsKICAgICBzZXRSZWFkeVN0YXRlKExvYWRpbmcpOwogfQpAQCAtNjkwMSw2ICs2OTA1LDMxIEBA
IHZvaWQgRG9jdW1lbnQ6OmRlY3JlbWVudEFjdGl2ZVBhcnNlckNvdW50KCkKICAgICBmcmFtZSgp
LT5sb2FkZXIoKS5jaGVja0xvYWRDb21wbGV0ZSgpOwogfQogCitEb2N1bWVudFBhcnNlcllpZWxk
VG9rZW46OkRvY3VtZW50UGFyc2VyWWllbGRUb2tlbihEb2N1bWVudCYgZG9jdW1lbnQpCisgICAg
OiBtX2RvY3VtZW50KG1ha2VXZWFrUHRyKGRvY3VtZW50KSkKK3sKKyAgICBpZiAoKytkb2N1bWVu
dC5tX3BhcnNlcllpZWxkVG9rZW5Db3VudCAhPSAxKQorICAgICAgICByZXR1cm47CisKKyAgICBk
b2N1bWVudC5zY3JpcHRSdW5uZXIoKS0+ZGlkQmVnaW5ZaWVsZGluZ1BhcnNlcigpOworICAgIGlm
IChhdXRvKiBwYXJzZXIgPSBkb2N1bWVudC5wYXJzZXIoKSkKKyAgICAgICAgcGFyc2VyLT5kaWRC
ZWdpbllpZWxkaW5nUGFyc2VyKCk7Cit9CisKK0RvY3VtZW50UGFyc2VyWWllbGRUb2tlbjo6fkRv
Y3VtZW50UGFyc2VyWWllbGRUb2tlbigpCit7CisgICAgaWYgKCFtX2RvY3VtZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBBU1NFUlQobV9kb2N1bWVudC0+bV9wYXJzZXJZaWVsZFRva2VuQ291
bnQpOworICAgIGlmICgtLW1fZG9jdW1lbnQtPm1fcGFyc2VyWWllbGRUb2tlbkNvdW50KQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2RvY3VtZW50LT5zY3JpcHRSdW5uZXIoKS0+ZGlkRW5kWWll
bGRpbmdQYXJzZXIoKTsKKyAgICBpZiAoYXV0byogcGFyc2VyID0gbV9kb2N1bWVudC0+cGFyc2Vy
KCkpCisgICAgICAgIHBhcnNlci0+ZGlkRW5kWWllbGRpbmdQYXJzZXIoKTsKK30KKwogc3RhdGlj
IFJlbmRlckVsZW1lbnQqIG5lYXJlc3RDb21tb25Ib3ZlckFuY2VzdG9yKFJlbmRlckVsZW1lbnQq
IG9iajEsIFJlbmRlckVsZW1lbnQqIG9iajIpCiB7CiAgICAgaWYgKCFvYmoxIHx8ICFvYmoyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuaAppbmRleCBkYjQ1OTc5NTkyODYxZTRlYmVjNDNkYjZiYTI1YTQ2ZDYz
ZTM5YThjLi5iOWI0ZmM0ODZhMTdlNmI3ODBmNjAzYTRhY2JkNmVjMTI4ZTM1MDZkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaApAQCAtMzE3LDYgKzMxNywxNSBAQCB1c2luZyBSZW5kZXJpbmdDb250ZXh0
ID0gVmFyaWFudDwKICAgICBSZWZQdHI8Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEPgogPjsKIAor
Y2xhc3MgRG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuIHsKK3B1YmxpYzoKKyAgICBXRUJDT1JFX0VY
UE9SVCBEb2N1bWVudFBhcnNlcllpZWxkVG9rZW4oRG9jdW1lbnQmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB+RG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuKCk7CisKK3ByaXZhdGU6CisgICAgV2Vha1B0
cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKK307CisKIGNsYXNzIERvY3VtZW50CiAgICAgOiBwdWJs
aWMgQ29udGFpbmVyTm9kZQogICAgICwgcHVibGljIFRyZWVTY29wZQpAQCAtMTI2Niw2ICsxMjc1
LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGluY3JlbWVudEFjdGl2ZVBhcnNlckNvdW50KCkgeyAr
K21fYWN0aXZlUGFyc2VyQ291bnQ7IH0KICAgICB2b2lkIGRlY3JlbWVudEFjdGl2ZVBhcnNlckNv
dW50KCk7CiAKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuPiBj
cmVhdGVQYXJzZXJZaWVsZFRva2VuKCkKKyAgICB7CisgICAgICAgIHJldHVybiBzdGQ6Om1ha2Vf
dW5pcXVlPERvY3VtZW50UGFyc2VyWWllbGRUb2tlbj4oKnRoaXMpOworICAgIH0KKworICAgIGJv
b2wgaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigpIGNvbnN0IHsgcmV0dXJuIG1fcGFyc2VyWWll
bGRUb2tlbkNvdW50OyB9CisKICAgICBEb2N1bWVudFNoYXJlZE9iamVjdFBvb2wqIHNoYXJlZE9i
amVjdFBvb2woKSB7IHJldHVybiBtX3NoYXJlZE9iamVjdFBvb2wuZ2V0KCk7IH0KIAogICAgIHZv
aWQgaW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGVBbmRGb3JjZVN0eWxlUmVjYWxjKCk7
CkBAIC0xNDYwLDYgKzE0NzYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCBSZWY8RG9jdW1l
bnQ+IGNsb25lRG9jdW1lbnRXaXRob3V0Q2hpbGRyZW4oKSBjb25zdDsKIAogcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgRG9jdW1lbnRQYXJzZXJZaWVsZFRva2VuOwogICAgIGZyaWVuZCBjbGFz
cyBOb2RlOwogICAgIGZyaWVuZCBjbGFzcyBJZ25vcmVEZXN0cnVjdGl2ZVdyaXRlQ291bnRJbmNy
ZW1lbnRlcjsKICAgICBmcmllbmQgY2xhc3MgSWdub3JlT3BlbnNEdXJpbmdVbmxvYWRDb3VudElu
Y3JlbWVudGVyOwpAQCAtMTU3OCw2ICsxNTk1LDggQEAgcHJpdmF0ZToKICAgICBSZWY8Q2FjaGVk
UmVzb3VyY2VMb2FkZXI+IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXI7CiAgICAgUmVmUHRyPERvY3Vt
ZW50UGFyc2VyPiBtX3BhcnNlcjsKIAorICAgIHVuc2lnbmVkIG1fcGFyc2VyWWllbGRUb2tlbkNv
dW50IHsgMCB9OworCiAgICAgLy8gRG9jdW1lbnQgVVJMcy4KICAgICBVUkwgbV91cmw7IC8vIERv
Y3VtZW50LlVSTDogVGhlIFVSTCBmcm9tIHdoaWNoIHRoaXMgZG9jdW1lbnQgd2FzIHJldHJpZXZl
ZC4KICAgICBVUkwgbV9iYXNlVVJMOyAvLyBOb2RlLmJhc2VVUkk6IFRoZSBVUkwgdG8gdXNlIHdo
ZW4gcmVzb2x2aW5nIHJlbGF0aXZlIFVSTHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudFBhcnNlci5o
CmluZGV4IGNhYzMzN2Q3MjE4MGEyNDRjMjllMWI2MjFiMDIwNDNiNWJhYjJlY2EuLjg1ZDYyMDlm
MWJlNWYwY2RmYzE1MjAxZDQzYjM4MzU5ZjZiMzhhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dFBhcnNlci5oCkBAIC05Niw2ICs5Niw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3Vz
cGVuZFNjaGVkdWxlZFRhc2tzKCk7CiAgICAgdmlydHVhbCB2b2lkIHJlc3VtZVNjaGVkdWxlZFRh
c2tzKCk7CiAKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQmVnaW5ZaWVsZGluZ1BhcnNlcigpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRZaWVsZGluZ1BhcnNlcigpIHsgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgZXhwbGljaXQgRG9jdW1lbnRQYXJzZXIoRG9jdW1lbnQmKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
U2NyaXB0UnVubmVyLmNwcAppbmRleCA3M2ZiOGIwNGRlNDA1NzAxZDk3ZjYyZTZjOWE0NTM5MDNj
MmRmN2U5Li42MmU1NmYyZmI0OWJhNGEwNDBiMjMxYzdlNTc4Mjc2MmM4ZjhhZmU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vU2NyaXB0UnVubmVyLmNwcApAQCAtODIsNyArODIsNyBAQCB2b2lkIFNjcmlwdFJ1
bm5lcjo6c3VzcGVuZCgpCiAKIHZvaWQgU2NyaXB0UnVubmVyOjpyZXN1bWUoKQogewotICAgIGlm
IChoYXNQZW5kaW5nU2NyaXB0cygpKQorICAgIGlmIChoYXNQZW5kaW5nU2NyaXB0cygpICYmICFt
X2RvY3VtZW50Lmhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW4oKSkKICAgICAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoMF9zKTsKIH0KIApAQCAtOTUsNyArOTUsOSBAQCB2b2lkIFNjcmlwdFJ1bm5l
cjo6bm90aWZ5RmluaXNoZWQoUGVuZGluZ1NjcmlwdCYgcGVuZGluZ1NjcmlwdCkKICAgICAgICAg
bV9zY3JpcHRzVG9FeGVjdXRlU29vbi5hcHBlbmQobV9wZW5kaW5nQXN5bmNTY3JpcHRzLnRha2Uo
cGVuZGluZ1NjcmlwdCktPnB0cigpKTsKICAgICB9CiAgICAgcGVuZGluZ1NjcmlwdC5jbGVhckNs
aWVudCgpOwotICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDBfcyk7CisKKyAgICBpZiAoIW1fZG9j
dW1lbnQuaGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbigpKQorICAgICAgICBtX3RpbWVyLnN0YXJ0
T25lU2hvdCgwX3MpOwogfQogCiB2b2lkIFNjcmlwdFJ1bm5lcjo6dGltZXJGaXJlZCgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0UnVubmVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vU2NyaXB0UnVubmVyLmgKaW5kZXggOGU4ZjQ4NmFkMWRiMGRiYzBkMGJlNjQ1MjExMWVl
ZDc3MGYxNTMxMi4uNjdlZWNiZTgwOWNkMDQzZDNiYWIxNzZmMjE5MGNmNGYyOTNjZTlmMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdFJ1bm5lci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9TY3JpcHRSdW5uZXIuaApAQCAtNTAsNiArNTAsOSBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZXN1bWUoKTsKICAgICB2b2lkIG5vdGlmeVNjcmlwdFJlYWR5KFNjcmlwdEVsZW1lbnQq
LCBFeGVjdXRpb25UeXBlKTsKIAorICAgIHZvaWQgZGlkQmVnaW5ZaWVsZGluZ1BhcnNlcigpIHsg
c3VzcGVuZCgpOyB9CisgICAgdm9pZCBkaWRFbmRZaWVsZGluZ1BhcnNlcigpIHsgcmVzdW1lKCk7
IH0KKwogcHJpdmF0ZToKICAgICB2b2lkIHRpbWVyRmlyZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTERvY3VtZW50UGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5jcHAKaW5kZXggMzRhMTJhMjk3
MTA2ZDVhOTQxMGNiNjFhMzM4MmQzOWY0YWI5Yjg3NS4uYzljYzNhYzkxZTA4MWZjNGFiMjc2YzFh
YWNlZmZmNDBjNzJmM2Q5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIv
SFRNTERvY3VtZW50UGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MRG9jdW1lbnRQYXJzZXIuY3BwCkBAIC0xNDgsNiArMTQ4LDE2IEBAIGlubGluZSBib29sIEhU
TUxEb2N1bWVudFBhcnNlcjo6c2hvdWxkRGVsYXlFbmQoKSBjb25zdAogICAgIHJldHVybiBpblB1
bXBTZXNzaW9uKCkgfHwgaXNXYWl0aW5nRm9yU2NyaXB0cygpIHx8IGlzU2NoZWR1bGVkRm9yUmVz
dW1lKCkgfHwgaXNFeGVjdXRpbmdTY3JpcHQoKTsKIH0KIAordm9pZCBIVE1MRG9jdW1lbnRQYXJz
ZXI6OmRpZEJlZ2luWWllbGRpbmdQYXJzZXIoKQoreworICAgIG1fcGFyc2VyU2NoZWR1bGVyLT5k
aWRCZWdpbllpZWxkaW5nUGFyc2VyKCk7Cit9CisKK3ZvaWQgSFRNTERvY3VtZW50UGFyc2VyOjpk
aWRFbmRZaWVsZGluZ1BhcnNlcigpCit7CisgICAgbV9wYXJzZXJTY2hlZHVsZXItPmRpZEVuZFlp
ZWxkaW5nUGFyc2VyKCk7Cit9CisKIGJvb2wgSFRNTERvY3VtZW50UGFyc2VyOjppc1BhcnNpbmdG
cmFnbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdHJlZUJ1aWxkZXItPmlzUGFyc2luZ0Zy
YWdtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MRG9j
dW1lbnRQYXJzZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBh
cnNlci5oCmluZGV4IDlhNzlkNDRjNGZiODVlZWFjMTIyNWI1MmRkMGRlNTdkNTYzNjdlNWUuLjk5
OTBkOGI4ZDBjMTIwZjNmNGNkYjk4YjkyNDY0ZDNhMWEwNDQ3MWYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxEb2N1bWVudFBhcnNlci5oCkBAIC0xMjEsNiArMTIxLDkg
QEAgcHJpdmF0ZToKICAgICBib29sIGluUHVtcFNlc3Npb24oKSBjb25zdDsKICAgICBib29sIHNo
b3VsZERlbGF5RW5kKCkgY29uc3Q7CiAKKyAgICB2b2lkIGRpZEJlZ2luWWllbGRpbmdQYXJzZXIo
KSBmaW5hbDsKKyAgICB2b2lkIGRpZEVuZFlpZWxkaW5nUGFyc2VyKCkgZmluYWw7CisKICAgICBI
VE1MUGFyc2VyT3B0aW9ucyBtX29wdGlvbnM7CiAgICAgSFRNTElucHV0U3RyZWFtIG1faW5wdXQ7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hl
ZHVsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxl
ci5jcHAKaW5kZXggMzViNmE1OWQ4NzIyMDNlODE2NTdiM2IxMWQ1MDYzMDM0ZmE2ZGMzZS4uOTZl
Zjc2NzQwZWRkNDc1NGJjNjE2OTE0ZDg2ZmE4NGY3OTcxNWRjYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5jcHAKQEAgLTExMSw2ICsx
MTEsMTAgQEAgYm9vbCBIVE1MUGFyc2VyU2NoZWR1bGVyOjpzaG91bGRZaWVsZEJlZm9yZUV4ZWN1
dGluZ1NjcmlwdChQdW1wU2Vzc2lvbiYgc2Vzc2lvbikKICAgICBSZWZQdHI8RG9jdW1lbnQ+IGRv
Y3VtZW50ID0gbV9wYXJzZXIuZG9jdW1lbnQoKTsKICAgICBib29sIG5lZWRzRmlyc3RQYWludCA9
IGRvY3VtZW50LT52aWV3KCkgJiYgIWRvY3VtZW50LT52aWV3KCktPmhhc0V2ZXJQYWludGVkKCk7
CiAgICAgc2Vzc2lvbi5kaWRTZWVTY3JpcHQgPSB0cnVlOworCisgICAgaWYgKFVOTElLRUxZKG1f
ZG9jdW1lbnRIYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VucykpCisgICAgICAgIHJldHVybiB0cnVl
OworCiAgICAgcmV0dXJuIG5lZWRzRmlyc3RQYWludCAmJiBkb2N1bWVudC0+aXNMYXlvdXRUaW1l
ckFjdGl2ZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MUGFyc2VyU2NoZWR1bGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MUGFy
c2VyU2NoZWR1bGVyLmgKaW5kZXggYjU5MzRjZTkwNjdmMDY3MWFhOTlmMTJiNjE4MDlkYjA3YWJl
NTUxOC4uM2Q0YjJjZGYzNTRiMDE3NTk0ODg2OWFiY2QyYTkzNDQyNjU2NTU4OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFBhcnNlclNjaGVkdWxlci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxQYXJzZXJTY2hlZHVsZXIuaApAQCAtNjks
NiArNjksOSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChXZWJUaHJlYWRTaG91bGRZaWVsZCgpKQog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAjZW5kaWYKKyAgICAgICAgaWYgKFVOTElLRUxZKG1f
ZG9jdW1lbnRIYXNBY3RpdmVQYXJzZXJZaWVsZFRva2VucykpCisgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKwogICAgICAgICBpZiAoVU5MSUtFTFkoc2Vzc2lvbi5wcm9jZXNzZWRUb2tlbnMgPiBu
dW1iZXJPZlRva2Vuc0JlZm9yZUNoZWNraW5nRm9yWWllbGQgfHwgc2Vzc2lvbi5kaWRTZWVTY3Jp
cHQpKQogICAgICAgICAgICAgcmV0dXJuIGNoZWNrRm9yWWllbGQoc2Vzc2lvbik7CiAKQEAgLTc4
LDExICs4MSwyNiBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRZaWVsZEJlZm9yZUV4ZWN1dGlu
Z1NjcmlwdChQdW1wU2Vzc2lvbiYpOwogCiAgICAgdm9pZCBzY2hlZHVsZUZvclJlc3VtZSgpOwot
ICAgIGJvb2wgaXNTY2hlZHVsZWRGb3JSZXN1bWUoKSBjb25zdCB7IHJldHVybiBtX2lzU3VzcGVu
ZGVkV2l0aEFjdGl2ZVRpbWVyIHx8IG1fY29udGludWVOZXh0Q2h1bmtUaW1lci5pc0FjdGl2ZSgp
OyB9CisgICAgYm9vbCBpc1NjaGVkdWxlZEZvclJlc3VtZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNT
dXNwZW5kZWRXaXRoQWN0aXZlVGltZXIgfHwgbV9jb250aW51ZU5leHRDaHVua1RpbWVyLmlzQWN0
aXZlKCkgfHwgbV9kb2N1bWVudEhhc0FjdGl2ZVBhcnNlcllpZWxkVG9rZW5zOyB9CiAKICAgICB2
b2lkIHN1c3BlbmQoKTsKICAgICB2b2lkIHJlc3VtZSgpOwogCisgICAgdm9pZCBkaWRCZWdpbllp
ZWxkaW5nUGFyc2VyKCkKKyAgICB7CisgICAgICAgIEFTU0VSVCghbV9kb2N1bWVudEhhc0FjdGl2
ZVBhcnNlcllpZWxkVG9rZW5zKTsKKyAgICAgICAgbV9kb2N1bWVudEhhc0FjdGl2ZVBhcnNlcllp
ZWxkVG9rZW5zID0gdHJ1ZTsKKyAgICB9CisKKyAgICB2b2lkIGRpZEVuZFlpZWxkaW5nUGFyc2Vy
KCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2RvY3VtZW50SGFzQWN0aXZlUGFyc2VyWWllbGRU
b2tlbnMpOworICAgICAgICBtX2RvY3VtZW50SGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbnMgPSBm
YWxzZTsKKworICAgICAgICBpZiAoIWlzU2NoZWR1bGVkRm9yUmVzdW1lKCkpCisgICAgICAgICAg
ICBzY2hlZHVsZUZvclJlc3VtZSgpOworICAgIH0KKwogcHJpdmF0ZToKICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbnVtYmVyT2ZUb2tlbnNCZWZvcmVDaGVja2luZ0ZvcllpZWxkID0gNDA5Njsg
Ly8gUGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uCiAKQEAgLTExMiw2ICsxMzAsNyBAQCBwcml2YXRl
OgogI2lmICFBU1NFUlRfRElTQUJMRUQKICAgICBib29sIG1fc3VzcGVuZGVkOwogI2VuZGlmCisg
ICAgYm9vbCBtX2RvY3VtZW50SGFzQWN0aXZlUGFyc2VyWWllbGRUb2tlbnMgeyBmYWxzZSB9Owog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5o
CmluZGV4IDlhNTRhYjdhOGZmN2IzMTgzNWU5M2Y1NzYxMzhhZWJkZDEzNDYwZDYuLmVhODhhMjVm
ZWY4YmNiZmNlYjcxN2I0MzM0MWYxZWRiNWYyZTQwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURv
Y3VtZW50LmgKQEAgLTQyLDYgKzQyLDggQEAgV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeCgxMC4x
MCksIGlvcyg4LjApKQogCiBAcHJvcGVydHkocmVhZG9ubHkpIFdLRE9NRWxlbWVudCAqYm9keTsK
IAorLSAoaWQpcGFyc2VyWWllbGRUb2tlbiBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogQGVuZAogCiAjZW5kaWYgLy8gV0tfQVBJX0VOQUJM
RUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvbWFjL1dLRE9NRG9jdW1lbnQubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvQVBJL21hYy9XS0RPTURvY3VtZW50Lm1tCmluZGV4IDNhZDA0YzcxZDgzNjNmMGNj
ZjU0OTJhZjNlMjMzMjY4YzE5MzdjODMuLmFhNWIzMTY1YWIzNTcyNTNkNjQzOGMyMjE3MDFmYzA5
MjJjMmI2NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1
bmRsZS9BUEkvbWFjL1dLRE9NRG9jdW1lbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9tYWMvV0tET01Eb2N1bWVudC5tbQpAQCAtMzUsNiArMzUs
MjMgQEAKICNpbXBvcnQgPFdlYkNvcmUvVGV4dC5oPgogI2ltcG9ydCA8V2ViQ29yZS9tYXJrdXAu
aD4KIAorQGludGVyZmFjZSBXS0RPTURvY3VtZW50UGFyc2VyWWllbGRUb2tlbiA6IE5TT2JqZWN0
CisKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdLRE9NRG9jdW1lbnRQYXJzZXJZaWVsZFRva2Vu
IHsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6RG9jdW1lbnRQYXJzZXJZaWVsZFRva2Vu
PiBfdG9rZW47Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0V2l0aERvY3VtZW50OihXZWJDb3Jl
OjpEb2N1bWVudCYpZG9jdW1lbnQKK3sKKyAgICBpZiAoc2VsZiA9IFtzdXBlciBpbml0XSkKKyAg
ICAgICAgX3Rva2VuID0gZG9jdW1lbnQuY3JlYXRlUGFyc2VyWWllbGRUb2tlbigpOworICAgIHJl
dHVybiBzZWxmOworfQorCitAZW5kCisKIEBpbXBsZW1lbnRhdGlvbiBXS0RPTURvY3VtZW50CiAK
IC0gKFdLRE9NRWxlbWVudCAqKWNyZWF0ZUVsZW1lbnQ6KE5TU3RyaW5nICopdGFnTmFtZQpAQCAt
NjYsNiArODMsMTEgQEAKICAgICByZXR1cm4gV2ViS2l0Ojp0b1dLRE9NTm9kZShjcmVhdGVGcmFn
bWVudEZyb21UZXh0KGRvd25jYXN0PFdlYkNvcmU6OkRvY3VtZW50PigqX2ltcGwpLmNyZWF0ZVJh
bmdlKCkuZ2V0KCksIHRleHQpLnB0cigpKTsKIH0KIAorLSAoaWQpcGFyc2VyWWllbGRUb2tlbgor
eworICAgIHJldHVybiBbW1tXS0RPTURvY3VtZW50UGFyc2VyWWllbGRUb2tlbiBhbGxvY10gaW5p
dFdpdGhEb2N1bWVudDpkb3duY2FzdDxXZWJDb3JlOjpEb2N1bWVudD4oKl9pbXBsKV0gYXV0b3Jl
bGVhc2VdOworfQorCiBAZW5kCiAKICNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0
IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDVkNWI2MGZiN2U0NzQ2
ZjRhMzc0MGJiNjE5ZjVjYTQyY2IwMDY3MzguLmE2MGE3ZjUyYTg1NjY5OGFmNTE2Y2NjYjgzMDM4
NjIyMTViNzViN2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw1MyBAQAorMjAxOC0wNy0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29u
X2hzaWVoQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYW4gU1BJIGhvb2sgdG8gYWxsb3cgY2xp
ZW50cyB0byB5aWVsZCBkb2N1bWVudCBwYXJzaW5nIGFuZCBzY3JpcHQgZXhlY3V0aW9uCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODc2ODIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzQyMjA3NDUzPgorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1
a2UgTml3YS4KKworICAgICAgICBBZGQgYSBmZXcgdGVzdHMgdG8gZXhlcmNpc2UgdGhlIG5ldyBk
b2N1bWVudCB5aWVsZCB0b2tlbiBTUEksIHZlcmlmeWluZyB0aGF0IGNsaWVudHMgY2FuIHVzZSB0
aGUgU1BJIHRvIGRlZmVyCisgICAgICAgIGRvY3VtZW50IGxvYWQsIGFuZCB0aGF0IGRvaW5nIHNv
IGRvZXNuJ3QgY2F1c2UgZGVmZXJyZWQgYHNjcmlwdGAgdG8gZXhlY3V0ZSBpbiB0aGUgd3Jvbmcg
b3JkZXIgKGkuZS4gYmVmb3JlCisgICAgICAgIHN5bmNocm9ub3VzIHNjcmlwdCwgb3IgYWZ0ZXIg
IkRPTUNvbnRlbnRMb2FkZWQiKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktp
dEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbTogQWRkZWQuCisgICAg
ICAgICgtW1BhcnNlcllpZWxkVG9rZW5QbHVnSW4gdGFrZURvY3VtZW50UGFyc2VyVG9rZW5BZnRl
ckNvbW1pdHRpbmdMb2FkXSk6CisgICAgICAgICgtW1BhcnNlcllpZWxkVG9rZW5QbHVnSW4gcmVs
ZWFzZURvY3VtZW50UGFyc2VyVG9rZW5dKToKKyAgICAgICAgKC1bUGFyc2VyWWllbGRUb2tlblBs
dWdJbiB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyOmRpZENvbW1pdExv
YWRGb3JGcmFtZTpdKToKKyAgICAgICAgKC1bUGFyc2VyWWllbGRUb2tlblBsdWdJbiB3ZWJQcm9j
ZXNzUGx1Z0luOmRpZENyZWF0ZUJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjpdKToKKyAgICAgICAg
KC1bUGFyc2VyWWllbGRUb2tlblBsdWdJbiB3ZWJQcm9jZXNzUGx1Z0luQnJvd3NlckNvbnRleHRD
b250cm9sbGVyOmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lOl0pOgorICAgICAgICAoLVtQ
YXJzZXJZaWVsZFRva2VuUGx1Z0luIHdlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRy
b2xsZXI6ZGlkRmluaXNoTG9hZEZvckZyYW1lOl0pOgorCisgICAgICAgIEFkZCBhbiBpbmplY3Rl
ZCBidW5kbGUgb2JqZWN0IHRoYXQga25vd3MgaG93IHRvIHRha2UgYW5kIHJlbGVhc2UgbXVsdGlw
bGUgZG9jdW1lbnQgcGFyc2VyIHlpZWxkIHRva2Vucy4KKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblRlc3RzLmg6IEFkZGVkLgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblRl
c3RzLm1tOiBBZGRlZC4KKyAgICAgICAgKCtbUGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IHdl
YlZpZXddKToKKyAgICAgICAgKC1bUGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IGJ1bmRsZV0p
OgorICAgICAgICAoLVtQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgc2NoZW1lSGFuZGxlcl0p
OgorICAgICAgICAoLVtQYXJzZXJZaWVsZFRva2VuVGVzdFdlYlZpZXcgZGlkRmluaXNoRG9jdW1l
bnRMb2FkXSk6CisgICAgICAgICgtW1BhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyBkaWRGaW5p
c2hMb2FkXSk6CisgICAgICAgICh3YWl0Rm9yRGVsYXkpOgorICAgICAgICAoVEVTVCk6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UZXN0VVJMU2NoZW1lSGFuZGxl
ci5oOiBBZGRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1Rl
c3RVUkxTY2hlbWVIYW5kbGVyLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bVGVzdFVSTFNjaGVtZUhh
bmRsZXIgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW1Rlc3RVUkxT
Y2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RvcFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW1Rl
c3RVUkxTY2hlbWVIYW5kbGVyIHNldFN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXI6XSk6CisgICAg
ICAgICgtW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIHN0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXJdKToK
KyAgICAgICAgKC1bVGVzdFVSTFNjaGVtZUhhbmRsZXIgc2V0U3RvcFVSTFNjaGVtZVRhc2tIYW5k
bGVyOl0pOgorICAgICAgICAoLVtUZXN0VVJMU2NoZW1lSGFuZGxlciBzdG9wVVJMU2NoZW1lVGFz
a0hhbmRsZXJdKToKKworICAgICAgICBBZGQgYSBuZXcgdGVzdCBoZWxwZXIgY2xhc3MgdG8gaGFu
ZGxlIGN1c3RvbSBzY2hlbWVzIHZpYSBhIGJsb2NrLWJhc2VkIEFQSS4KKworICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvdGV4dC13aXRoLWFzeW5jLXNjcmlwdC5odG1s
OiBBZGRlZC4KKworICAgICAgICBOZXcgdGVzdCBIVE1MIHBhZ2UgdGhhdCBjb250YWlucyBhIGRl
ZmVycmVkIHNjcmlwdCBlbGVtZW50LCBhIHN5bmNocm9ub3VzIHNjcmlwdCBlbGVtZW50LCBhbm90
aGVyIGRlZmVycmVkCisgICAgICAgIHNjcmlwdCBlbGVtZW50LCBhbmQgdGhlbiBzb21lIHRleHQs
IGltYWdlcywgYW5kIGxpbmtzLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS90ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWw6IEFkZGVkLgorCiAyMDE4LTA3
LTE2ICBKZXJlbXkgSm9uZXMgIDxqZXJlbXlqQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggQVBJ
IFRlc3QgZmFpbHVyZXMgaW50cm9kdWNlZCBieSByMjMzODY1CmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDFlMjcxMmIyZDY2M2UxZmJjNzRiMjNjMDdkMmFlMTIwNzYwZDQzYTAuLjkyOTFlNGNh
ZDJhYWYwOGRkYmZhNjVkNTY0YTcxZTM2NWE4NTA3MmMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC03ODEsNiArNzgxLDkgQEAKIAkJRjQzRTNCQkYyMERBREExRTAwQTRFN0VEIC8qIFdLU2Ny
b2xsVmlld1Rlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gRjQzRTNCQkUyMERBREExRTAwQTRFN0VEIC8qIFdLU2Nyb2xsVmlld1Rlc3RzLm1tICov
OyB9OwogCQlGNDNFM0JDMTIwREFEQkM1MDBBNEU3RUQgLyogZml4ZWQtbmF2LWJhci5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0M0Uz
QkMwMjBEQURCODAwMEE0RTdFRCAvKiBmaXhlZC1uYXYtYmFyLmh0bWwgKi87IH07CiAJCUY0NDUx
Qzc2MUVCOEZEODkwMDIwQzVEQSAvKiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0
NDUxQzc1MUVCOEZEN0MwMDIwQzVEQSAvKiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5o
dG1sICovOyB9OworCQlGNDRDNzlGRjIwRjlFODcxMDAxNDQ3OEMgLyogUGFyc2VyWWllbGRUb2tl
blRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjQ0Qzc5RkUyMEY5RTg3MTAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5UZXN0cy5tbSAqLzsg
fTsKKwkJRjQ0QzdBMDAyMEY5RUVCRjAwMTQ0NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5QbHVnSW4u
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDRDNzlG
QjIwRjlFNTBDMDAxNDQ3OEMgLyogUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbSAqLzsgfTsKKwkJ
RjQ0QzdBMDUyMEZBQUUzQzAwMTQ0NzhDIC8qIHRleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
NDRDN0EwNDIwRkFBRTMyMDAxNDQ3OEMgLyogdGV4dC13aXRoLWRlZmVycmVkLXNjcmlwdC5odG1s
ICovOyB9OwogCQlGNDREMDY0NTFGMzk1QzI2MDAxQTBFMjkgLyogZWRpdG9yLXN0YXRlLXRlc3Qt
aGFybmVzcy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEY0NEQwNjQ0MUYzOTVDMEQwMDFBMEUyOSAvKiBlZGl0b3Itc3RhdGUtdGVzdC1o
YXJuZXNzLmh0bWwgKi87IH07CiAJCUY0NEQwNjQ3MUYzOTYyN0EwMDFBMEUyOSAvKiBFZGl0b3JT
dGF0ZVRlc3RzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjQ0RDA2NDYxRjM5NUM0RDAwMUEwRTI5IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gKi87IH07
CiAJCUY0NEQwNjRBMUYzOTYyRjIwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNDREMDY0OTFGMzk2
MkUzMDAxQTBFMjkgLyogRWRpdGluZ1Rlc3RIYXJuZXNzLm1tICovOyB9OwpAQCAtODExLDYgKzgx
NCw4IEBACiAJCUY0QkZBNjhFMUU0QUQwODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9h
cmRUZXN0cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEY0QkZBNjhDMUU0QUQwODAwMDE1NDI5OCAvKiBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5t
bSAqLzsgfTsKIAkJRjRDMkFCMjIxREQ2RDk1RTAwRTA2RDVCIC8qIGVub3Jtb3VzLXZpZGVvLXdp
dGgtc291bmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBGNEMyQUIyMTFERDZEOTQxMDBFMDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0
aC1zb3VuZC5odG1sICovOyB9OwogCQlGNEM4Nzk3RjIwNTlEOEQzMDA5Q0QwMEIgLyogU2Nyb2xs
Vmlld0luc2V0VGVzdHMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBGNEM4Nzk3RTIwNTlEOEQzMDA5Q0QwMEIgLyogU2Nyb2xsVmlld0luc2V0VGVzdHMu
bW0gKi87IH07CisJCUY0Q0Q3NEM2MjBGREFDRkEwMERFMzc5NCAvKiB0ZXh0LXdpdGgtYXN5bmMt
c2NyaXB0Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRjRDRDc0QzUyMEZEQUNGNTAwREUzNzk0IC8qIHRleHQtd2l0aC1hc3luYy1zY3Jp
cHQuaHRtbCAqLzsgfTsKKwkJRjRDRDc0QzkyMEZEQjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hl
bWVIYW5kbGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gRjRDRDc0QzgyMEZEQjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLm1tICov
OyB9OwogCQlGNEQ0RjNCNjFFNEUyQkNCMDBCQjI3NjcgLyogRGF0YUludGVyYWN0aW9uU2ltdWxh
dG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRE
NEYzQjQxRTRFMkJDQjAwQkIyNzY3IC8qIERhdGFJbnRlcmFjdGlvblNpbXVsYXRvci5tbSAqLzsg
fTsKIAkJRjRENEYzQjkxRTRFMzZFNDAwQkIyNzY3IC8qIERhdGFJbnRlcmFjdGlvblRlc3RzLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjRENEYzQjcx
RTRFMzZFNDAwQkIyNzY3IC8qIERhdGFJbnRlcmFjdGlvblRlc3RzLm1tICovOyB9OwogCQlGNEQ1
RTRFODFGMEM1RDM4MDA4QzFBNDkgLyogZHJhZ3N0YXJ0LWNsZWFyLXNlbGVjdGlvbi5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY0RDVF
NEU3MUYwQzVEMjcwMDhDMUE0OSAvKiBkcmFnc3RhcnQtY2xlYXItc2VsZWN0aW9uLmh0bWwgKi87
IH07CkBAIC04OTgsNyArOTAzLDYgQEAKIAkJCWRzdFBhdGggPSBUZXN0V2ViS2l0QVBJLnJlc291
cmNlczsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMgPSAoCi0JCQkJNDZBRTVB
MzcyMEY5MDY2RDAwRTA4NzNFIC8qIFNpbXBsZVNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25zLTMu
c3FsaXRlMyBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQkxQTlFNTJDOTEzRTY1RUY0MDA2OTE3
RjUgLyogMTgtY2hhcmFjdGVycy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTM3OTAy
OEI5MTRGQUMyNEMwMDdFNkI0MyAvKiBhY2NlcHRzRmlyc3RNb3VzZS5odG1sIGluIENvcHkgUmVz
b3VyY2VzICovLAogCQkJCTFDMkI4MTg3MUM4OTI1QTAwMEE1NTI5RiAvKiBBaGVtLnR0ZiBpbiBD
b3B5IFJlc291cmNlcyAqLywKQEAgLTExMjUsNiArMTEyOSw3IEBACiAJCQkJQkM5MDk3ODQxMjU1
NzFDRjAwMDgzNzU2IC8qIHNpbXBsZS5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTUx
RTVDNzAyMTkxOUMzQjIwMEQ4QjNFMSAvKiBzaW1wbGUyLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMg
Ki8sCiAJCQkJNTFFNUM3MDMxOTE5QzNCMjAwRDhCM0UxIC8qIHNpbXBsZTMuaHRtbCBpbiBDb3B5
IFJlc291cmNlcyAqLywKKwkJCQk0NkFFNUEzNzIwRjkwNjZEMDBFMDg3M0UgLyogU2ltcGxlU2Vy
dmljZVdvcmtlclJlZ2lzdHJhdGlvbnMtMy5zcWxpdGUzIGluIENvcHkgUmVzb3VyY2VzICovLAog
CQkJCUY0RjQwNUJEMUQ0QzBEMUMwMDdBOTcwNyAvKiBza2lubnktYXV0b3BsYXlpbmctdmlkZW8t
d2l0aC1hdWRpby5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCUMwMUEyM0YyMTI2NjE1
NjcwMEM5RUQ1NSAvKiBzcGFjZWJhci1zY3JvbGxpbmcuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAq
LywKIAkJCQlFMTk0RTFCRDE3N0U1M0M3MDA5QzRENEUgLyogU3RvcExvYWRpbmdGcm9tRGlkUmVj
ZWl2ZVJlc3BvbnNlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCkBAIC0xMTM4LDYgKzExNDMs
OCBAQAogCQkJCTUyNEJCQ0ExMTlFMzBDNzcwMDJGMUFGMSAvKiB0ZXN0Lm1wNCBpbiBDb3B5IFJl
c291cmNlcyAqLywKIAkJCQk3QUU5RTUwOTFBRTVBRThCMDBDRjg3NEIgLyogdGVzdC5wZGYgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJMkU5ODk2MTUxRDhGMDkzODAwNzM5ODkyIC8qIHRleHQt
YW5kLXBhc3N3b3JkLWlucHV0cy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAorCQkJCUY0Q0Q3
NEM2MjBGREFDRkEwMERFMzc5NCAvKiB0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwgaW4gQ29w
eSBSZXNvdXJjZXMgKi8sCisJCQkJRjQ0QzdBMDUyMEZBQUUzQzAwMTQ0NzhDIC8qIHRleHQtd2l0
aC1kZWZlcnJlZC1zY3JpcHQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlGNDFBQjlB
QTFFRjQ2OTZCMDA4M0ZBMDggLyogdGV4dGFyZWEtdG8taW5wdXQuaHRtbCBpbiBDb3B5IFJlc291
cmNlcyAqLywKIAkJCQlGNDQ1MUM3NjFFQjhGRDg5MDAyMEM1REEgLyogdHdvLXBhcmFncmFwaC1j
b250ZW50ZWRpdGFibGUuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQlDNTQwRjc4NDE1
MkU1QTlBMDBBNDBDOEMgLyogdmVyYm9zZU1hcmt1cC5odG1sIGluIENvcHkgUmVzb3VyY2VzICov
LApAQCAtMTk3Niw2ICsxOTgzLDEwIEBACiAJCUY0M0UzQkJFMjBEQURBMUUwMEE0RTdFRCAvKiBX
S1Njcm9sbFZpZXdUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLU2Nyb2xsVmlld1Rl
c3RzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDNFM0JDMDIwREFEQjgwMDBB
NEU3RUQgLyogZml4ZWQtbmF2LWJhci5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gImZpeGVkLW5hdi1iYXIuaHRt
bCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0NDUxQzc1MUVCOEZEN0MwMDIwQzVE
QSAvKiB0d28tcGFyYWdyYXBoLWNvbnRlbnRlZGl0YWJsZS5odG1sICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5o
dG1sOyBwYXRoID0gInR3by1wYXJhZ3JhcGgtY29udGVudGVkaXRhYmxlLmh0bWwiOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlGNDRDNzlGQjIwRjlFNTBDMDAxNDQ3OEMgLyogUGFyc2Vy
WWllbGRUb2tlblBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFBhcnNlcllpZWxkVG9r
ZW5QbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NEM3OUZEMjBGOUU4
NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFy
c2VyWWllbGRUb2tlblRlc3RzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUY0NEM3
OUZFMjBGOUU4NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCUY0NEM3QTA0MjBGQUFFMzIwMDE0NDc4QyAvKiB0ZXh0LXdpdGgtZGVmZXJy
ZWQtc2NyaXB0Lmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSAidGV4dC13aXRoLWRl
ZmVycmVkLXNjcmlwdC5odG1sIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjQ0RDA2
NDQxRjM5NUMwRDAwMUEwRTI5IC8qIGVkaXRvci1zdGF0ZS10ZXN0LWhhcm5lc3MuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9ICJlZGl0b3Itc3RhdGUtdGVzdC1oYXJuZXNzLmh0bWwi
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNDREMDY0NjFGMzk1QzREMDAxQTBFMjkg
LyogRWRpdG9yU3RhdGVUZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IEVkaXRvclN0YXRlVGVzdHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUY0NEQwNjQ4MUYzOTYyRTMwMDFBMEUyOSAvKiBFZGl0aW5nVGVzdEhhcm5lc3MuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRWRpdGluZ1Rlc3RIYXJuZXNzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDEwLDYgKzIwMjEsOSBAQAogCQlGNEJGQTY4QzFFNEFE
MDgwMDAxNTQyOTggLyogRHJhZ0FuZERyb3BQYXN0ZWJvYXJkVGVzdHMubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEcmFnQW5kRHJvcFBhc3RlYm9hcmRUZXN0cy5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjRDMkFCMjExREQ2RDk0MTAwRTA2RDVC
IC8qIGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsg
cGF0aCA9ICJlbm9ybW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwiOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlGNEM4Nzk3RTIwNTlEOEQzMDA5Q0QwMEIgLyogU2Nyb2xsVmlld0luc2V0
VGVzdHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTY3JvbGxWaWV3SW5zZXRUZXN0cy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJRjRDRDc0QzUyMEZEQUNGNTAwREUzNzk0IC8q
IHRleHQtd2l0aC1hc3luYy1zY3JpcHQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
ICJ0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlGNENENzRDNzIwRkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gVGVzdFVSTFNjaGVtZUhhbmRsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJRjRDRDc0QzgyMEZEQjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5k
bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVGVzdFVSTFNjaGVtZUhhbmRsZXIubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDRGM0I0MUU0RTJCQ0IwMEJCMjc2NyAvKiBE
YXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBEYXRhSW50ZXJhY3Rpb25TaW11bGF0b3IubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUY0RDRGM0I1MUU0RTJCQ0IwMEJCMjc2NyAvKiBEYXRhSW50ZXJhY3Rpb25T
aW11bGF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGF0YUludGVyYWN0
aW9uU2ltdWxhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY0RDRGM0I3MUU0
RTM2RTQwMEJCMjc2NyAvKiBEYXRhSW50ZXJhY3Rpb25UZXN0cy5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IERhdGFJbnRlcmFjdGlvblRlc3RzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjI3NCw2ICsyMjg4LDkgQEAKIAkJCQkzN0EyMkFBNTFE
Q0FBMjcyMDBBRkJGQzQgLyogT2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0FmdGVyQ3Jh
c2gubW0gKi8sCiAJCQkJQ0VBNkNGMjIxOUNDRjVCRDAwNjRGNUE3IC8qIE9wZW5BbmRDbG9zZVdp
bmRvdy5tbSAqLywKIAkJCQlDRUJDQTEyRTFFM0E2NjAxMDBDNzMyOTMgLyogT3ZlcnJpZGVDb250
ZW50U2VjdXJpdHlQb2xpY3kubW0gKi8sCisJCQkJRjQ0Qzc5RkIyMEY5RTUwQzAwMTQ0NzhDIC8q
IFBhcnNlcllpZWxkVG9rZW5QbHVnSW4ubW0gKi8sCisJCQkJRjQ0Qzc5RkQyMEY5RTg3MTAwMTQ0
NzhDIC8qIFBhcnNlcllpZWxkVG9rZW5UZXN0cy5oICovLAorCQkJCUY0NEM3OUZFMjBGOUU4NzEw
MDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0gKi8sCiAJCQkJOUJDQjdDMjYyMDEz
MDYwMDAwM0U3QzBDIC8qIFBhc3RlSFRNTC5tbSAqLywKIAkJCQk5QkRDQ0Q4NTFGN0QwQjA3MDAw
MDlBMTggLyogUGFzdGVJbWFnZS5tbSAqLywKIAkJCQlGNDU3QTlCNjIwMkQ1Q0RDMDBGN0U5RDUg
LyogUGFzdGVNaXhlZENvbnRlbnQubW0gKi8sCkBAIC0yMzAyLDYgKzIzMTksOCBAQAogCQkJCTJE
RkY3QjZDMURBNDg3QUYwMDgxNDYxNCAvKiBTbmFwc2hvdFN0b3JlLm1tICovLAogCQkJCTUxNUJF
MTcwMUQ0MjhCRDEwMEREN0M2OCAvKiBTdG9yZUJsb2JUaGVuRGVsZXRlLm1tICovLAogCQkJCTFD
NzM0QjUyMjA3ODhDNDgwMEY0MzBFQSAvKiBTeXN0ZW1Db2xvcnMubW0gKi8sCisJCQkJRjRDRDc0
QzcyMEZEQjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLmggKi8sCisJCQkJRjRD
RDc0QzgyMEZEQjQ5NjAwREUzNzk0IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLm1tICovLAogCQkJ
CTVDQjQwQjREMUY0Qjk4QkUwMDdEQzdCOSAvKiBVSURlbGVnYXRlLm1tICovLAogCQkJCTdDQzNF
MUZBMTk3RTIzNDEwMEJFNjI1MiAvKiBVc2VyQ29udGVudENvbnRyb2xsZXIubW0gKi8sCiAJCQkJ
N0M4ODJFMDMxQzgwQzYyNDAwNkJGNzMxIC8qIFVzZXJDb250ZW50V29ybGQubW0gKi8sCkBAIC0y
NjQzLDYgKzI2NjIsOCBAQAogCQkJCTlCRDZEMzlGMUY3QjIwMjAwMEJENDk2MiAvKiBzdW5zZXQt
aW4tY3VwZXJ0aW5vLTQwMHB4LmdpZiAqLywKIAkJCQk5QkQ2RDM5RTFGN0IyMDFFMDBCRDQ5NjIg
Lyogc3Vuc2V0LWluLWN1cGVydGluby02MDBweC5qcGcgKi8sCiAJCQkJMkU5ODk2MTQxRDhGMDky
QjAwNzM5ODkyIC8qIHRleHQtYW5kLXBhc3N3b3JkLWlucHV0cy5odG1sICovLAorCQkJCUY0Q0Q3
NEM1MjBGREFDRjUwMERFMzc5NCAvKiB0ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwgKi8sCisJ
CQkJRjQ0QzdBMDQyMEZBQUUzMjAwMTQ0NzhDIC8qIHRleHQtd2l0aC1kZWZlcnJlZC1zY3JpcHQu
aHRtbCAqLywKIAkJCQlGNDFBQjk5NTFFRjQ2OTJDMDA4M0ZBMDggLyogdGV4dGFyZWEtdG8taW5w
dXQuaHRtbCAqLywKIAkJCQlGNDQ1MUM3NTFFQjhGRDdDMDAyMEM1REEgLyogdHdvLXBhcmFncmFw
aC1jb250ZW50ZWRpdGFibGUuaHRtbCAqLywKIAkJCQk1MTcxNEVCMjFDRjhDNzYxMDA0NzIzQzQg
LyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLTEuaHRtbCAqLywKQEAgLTM3NTksNiArMzc4MCw3
IEBACiAJCQkJN0NDRTdFQzcxQTQxMUE3RTAwNDQ3QzRDIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVX
aXRoV2luZG93Q2hhbmdlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RjA5MUE0MTFBRTYw
MDQ0N0M0QyAvKiBQYXJlbnRGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTA1MTFE
MEE2NDE4MDBGRUJDRjMgLyogUGFyc2VkQ29udGVudFJhbmdlLmNwcCBpbiBTb3VyY2VzICovLAor
CQkJCUY0NEM3OUZGMjBGOUU4NzEwMDE0NDc4QyAvKiBQYXJzZXJZaWVsZFRva2VuVGVzdHMubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwQTFBNDExQUU2MDA0NDdDNEMgLyogUGFzdGVib2Fy
ZE5vdGlmaWNhdGlvbnMubW0gaW4gU291cmNlcyAqLywKIAkJCQk5QkNCN0MyODIwMTMwNjAwMDAz
RTdDMEMgLyogUGFzdGVIVE1MLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJOUJEQ0NEODcxRjdEMEIw
NzAwMDA5QTE4IC8qIFBhc3RlSW1hZ2UubW0gaW4gU291cmNlcyAqLywKQEAgLTM4NDIsNiArMzg2
NCw3IEBACiAJCQkJMkQxQzA0QTcxRDc2Mjk4QjAwMEE2ODE2IC8qIFRlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQlBMTRGQzU5MDFCOEFFMzZGMDBEMTA3RUIgLyog
VGVzdFByb3RvY29sLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQUUxQTQxMUEzNDAwNDQ3
QzRDIC8qIFRlc3RzQ29udHJvbGxlci5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlGNENENzRDOTIw
RkRCNDk2MDBERTM3OTQgLyogVGVzdFVSTFNjaGVtZUhhbmRsZXIubW0gaW4gU291cmNlcyAqLywK
IAkJCQkyRUZGMDZENDFEOEFFREJCMDAwNEJCMzAgLyogVGVzdFdLV2ViVmlldy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCUY0NTE3QjY3MjA1NEM0OTUwMEMyNjcyMSAvKiBUZXN0V0tXZWJWaWV3Q29u
dHJvbGxlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCUY0NTAzM0Y1MjA2QkVDOTUwMDkzNTFDRSAv
KiBUZXh0QXV0b3NpemluZ0Jvb3N0Lm1tIGluIFNvdXJjZXMgKi8sCkBAIC0zOTY2LDYgKzM5ODks
NyBAQAogCQkJCTUxOEVFNTE5MjBBNzhDRTUwMEUwMjRGMyAvKiBEb3VibGVEZWZlcnNMb2FkaW5n
UGx1Z2luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJNUNCNUIzQzIxRkZDNTVDRjAwQzI3QkIwIC8q
IEZyYW1lSGFuZGxlU2VyaWFsaXphdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTc5QzVENDMx
MjA5RDc2ODMwMEYxRTdDQSAvKiBJbmplY3RlZEJ1bmRsZU5vZGVIYW5kbGVJc1RleHRGaWVsZC5t
bSBpbiBTb3VyY2VzICovLAorCQkJCUY0NEM3QTAwMjBGOUVFQkYwMDE0NDc4QyAvKiBQYXJzZXJZ
aWVsZFRva2VuUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQTEzRUJCQUIxQjg3NDM0NjAw
MDk3MTEwIC8qIFBsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkx
QTRGODFDRjFCREZGRDUzMDA0RTY3MkUgLyogUmVtb3RlT2JqZWN0UmVnaXN0cnlQbHVnSW4ubW0g
aW4gU291cmNlcyAqLywKIAkJCQlBMTJEREMwMjFFODM3QzI0MDBDRjZDQUUgLyogUmVuZGVyZWRJ
bWFnZVdpdGhPcHRpb25zUGx1Z0luLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5QbHVnSW4u
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9r
ZW5QbHVnSW4ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjVmZTE5ODdhNzQyZjY0NjI1YmZhY2VmYTBhOWIwOTRl
NDNiYjdhNwotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblBsdWdJbi5tbQpAQCAtMCwwICsxLDk4IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNp
bXBvcnQgIlBhcnNlcllpZWxkVG9rZW5UZXN0cy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLRE9NRG9j
dW1lbnQuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW4uaD4KKyNpbXBvcnQg
PFdlYktpdC9XS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXJQcml2YXRl
Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvX1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlLmg+CisjaW1wb3J0IDxXZWJL
aXQvX1dLUmVtb3RlT2JqZWN0UmVnaXN0cnkuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KworQGludGVyZmFjZSBQYXJzZXJZaWVsZFRva2VuUGx1Z0luIDogTlNPYmplY3QgPFdLV2ViUHJv
Y2Vzc1BsdWdJbiwgV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLCBQYXJzZXJZaWVsZFRv
a2VuVGVzdEJ1bmRsZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFBhcnNlcllpZWxkVG9rZW5Q
bHVnSW4geworICAgIFJldGFpblB0cjxOU011dGFibGVBcnJheTxOU09iamVjdCAqPj4gX3BhcnNl
cllpZWxkVG9rZW5zOworICAgIFJldGFpblB0cjxpZDxQYXJzZXJZaWVsZFRva2VuVGVzdFJ1bm5l
cj4+IF90ZXN0UnVubmVyOworICAgIFJldGFpblB0cjxXS1dlYlByb2Nlc3NQbHVnSW5Ccm93c2Vy
Q29udGV4dENvbnRyb2xsZXI+IF9jb250cm9sbGVyOworICAgIEJPT0wgX2xvYWRDb21taXR0ZWQ7
CisgICAgTlNVSW50ZWdlciBfbnVtYmVyT2ZUb2tlbnNUb1Rha2VBZnRlckNvbWl0dGluZ0xvYWQ7
Cit9CisKKy0gKHZvaWQpdGFrZURvY3VtZW50UGFyc2VyVG9rZW5BZnRlckNvbW1pdHRpbmdMb2Fk
Cit7CisgICAgaWYgKF9sb2FkQ29tbWl0dGVkKQorICAgICAgICBbX3BhcnNlcllpZWxkVG9rZW5z
IGFkZE9iamVjdDpbX2NvbnRyb2xsZXIgbWFpbkZyYW1lRG9jdW1lbnRdLnBhcnNlcllpZWxkVG9r
ZW5dOworICAgIGVsc2UKKyAgICAgICAgKytfbnVtYmVyT2ZUb2tlbnNUb1Rha2VBZnRlckNvbWl0
dGluZ0xvYWQ7Cit9CisKKy0gKHZvaWQpcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW4KK3sKKyAg
ICBpZiAoX2xvYWRDb21taXR0ZWQpCisgICAgICAgIFtfcGFyc2VyWWllbGRUb2tlbnMgcmVtb3Zl
T2JqZWN0QXRJbmRleDowXTsKKyAgICBlbHNlCisgICAgICAgIC0tX251bWJlck9mVG9rZW5zVG9U
YWtlQWZ0ZXJDb21pdHRpbmdMb2FkOworfQorCistICh2b2lkKXdlYlByb2Nlc3NQbHVnSW5Ccm93
c2VyQ29udGV4dENvbnRyb2xsZXI6KFdLV2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29u
dHJvbGxlciAqKWNvbnRyb2xsZXIgZGlkQ29tbWl0TG9hZEZvckZyYW1lOihXS1dlYlByb2Nlc3NQ
bHVnSW5GcmFtZSAqKWZyYW1lCit7CisgICAgX2xvYWRDb21taXR0ZWQgPSBZRVM7CisgICAgd2hp
bGUgKF9udW1iZXJPZlRva2Vuc1RvVGFrZUFmdGVyQ29taXR0aW5nTG9hZCkgeworICAgICAgICBb
c2VsZiB0YWtlRG9jdW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdOworICAgICAg
ICAtLV9udW1iZXJPZlRva2Vuc1RvVGFrZUFmdGVyQ29taXR0aW5nTG9hZDsKKyAgICB9Cit9CisK
Ky0gKHZvaWQpd2ViUHJvY2Vzc1BsdWdJbjooV0tXZWJQcm9jZXNzUGx1Z0luQ29udHJvbGxlciAq
KXBsdWdJbkNvbnRyb2xsZXIgZGlkQ3JlYXRlQnJvd3NlckNvbnRleHRDb250cm9sbGVyOihXS1dl
YlByb2Nlc3NQbHVnSW5Ccm93c2VyQ29udGV4dENvbnRyb2xsZXIgKilicm93c2VyQ29udGV4dENv
bnRyb2xsZXIKK3sKKyAgICBfcGFyc2VyWWllbGRUb2tlbnMgPSBhZG9wdE5TKFtOU011dGFibGVB
cnJheSBuZXddKTsKKyAgICBfY29udHJvbGxlciA9IGJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjsK
KyAgICBicm93c2VyQ29udGV4dENvbnRyb2xsZXIubG9hZERlbGVnYXRlID0gc2VsZjsKKyAgICBb
YnJvd3NlckNvbnRleHRDb250cm9sbGVyLl9yZW1vdGVPYmplY3RSZWdpc3RyeSByZWdpc3RlckV4
cG9ydGVkT2JqZWN0OnNlbGYgaW50ZXJmYWNlOltfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVt
b3RlT2JqZWN0SW50ZXJmYWNlV2l0aFByb3RvY29sOkBwcm90b2NvbChQYXJzZXJZaWVsZFRva2Vu
VGVzdEJ1bmRsZSldXTsKKyAgICBfdGVzdFJ1bm5lciA9IFticm93c2VyQ29udGV4dENvbnRyb2xs
ZXIuX3JlbW90ZU9iamVjdFJlZ2lzdHJ5IHJlbW90ZU9iamVjdFByb3h5V2l0aEludGVyZmFjZTpb
X1dLUmVtb3RlT2JqZWN0SW50ZXJmYWNlIHJlbW90ZU9iamVjdEludGVyZmFjZVdpdGhQcm90b2Nv
bDpAcHJvdG9jb2woUGFyc2VyWWllbGRUb2tlblRlc3RSdW5uZXIpXV07Cit9CisKKy0gKHZvaWQp
d2ViUHJvY2Vzc1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1
Z0luQnJvd3NlckNvbnRleHRDb250cm9sbGVyKiljb250cm9sbGVyIGRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lOihXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZSAqKWZyYW1lCit7CisgICAgW190
ZXN0UnVubmVyIGRpZEZpbmlzaERvY3VtZW50TG9hZF07Cit9CisKKy0gKHZvaWQpd2ViUHJvY2Vz
c1BsdWdJbkJyb3dzZXJDb250ZXh0Q29udHJvbGxlcjooV0tXZWJQcm9jZXNzUGx1Z0luQnJvd3Nl
ckNvbnRleHRDb250cm9sbGVyKiljb250cm9sbGVyIGRpZEZpbmlzaExvYWRGb3JGcmFtZTooV0tX
ZWJQcm9jZXNzUGx1Z0luRnJhbWUgKilmcmFtZQoreworICAgIFtfdGVzdFJ1bm5lciBkaWRGaW5p
c2hMb2FkXTsKK30KKworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKwpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QYXJzZXJZaWVsZFRv
a2VuVGVzdHMuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUGFyc2Vy
WWllbGRUb2tlblRlc3RzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMGE2Njg0M2E2N2ZhYTNmZDgzYjEyOTY0ZmFj
MmY0Y2ZhN2JjNWQxZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUGFyc2VyWWllbGRUb2tlblRlc3RzLmgKQEAgLTAsMCArMSwzNiBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCitAcHJvdG9jb2wgUGFyc2VyWWllbGRUb2tlblRl
c3RSdW5uZXIgPE5TT2JqZWN0PgorLSAodm9pZClkaWRGaW5pc2hEb2N1bWVudExvYWQ7CistICh2
b2lkKWRpZEZpbmlzaExvYWQ7CitAZW5kCisKK0Bwcm90b2NvbCBQYXJzZXJZaWVsZFRva2VuVGVz
dEJ1bmRsZSA8TlNPYmplY3Q+CistICh2b2lkKXRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0ZXJD
b21taXR0aW5nTG9hZDsKKy0gKHZvaWQpcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW47CitAZW5k
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhcnNl
cllpZWxkVG9rZW5UZXN0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvUGFyc2VyWWllbGRUb2tlblRlc3RzLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRlMWQ4NDlkZWYzOTQ2MGVi
MzgwYzJiZTA5ZTY3NTdmYmY0MTI2MTkKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1BhcnNlcllpZWxkVG9rZW5UZXN0cy5tbQpAQCAtMCww
ICsxLDIwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbXBvcnQgIlBh
cnNlcllpZWxkVG9rZW5UZXN0cy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAi
UGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3RVUkxTY2hlbWVIYW5kbGVyLmgiCisj
aW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9u
RXh0cmFzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8
V2ViS2l0L19XS1JlbW90ZU9iamVjdEludGVyZmFjZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Jl
bW90ZU9iamVjdFJlZ2lzdHJ5Lmg+CisjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KKyNpbXBvcnQg
PHd0Zi9TZWNvbmRzLmg+CisKK0BpbnRlcmZhY2UgUGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3
IDogVGVzdFdLV2ViVmlldyA8UGFyc2VyWWllbGRUb2tlblRlc3RSdW5uZXI+CitAcHJvcGVydHkg
KG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgZmluaXNoZWREb2N1bWVudExvYWQ7CitAcHJvcGVy
dHkgKG5vbmF0b21pYywgcmVhZG9ubHkpIEJPT0wgZmluaXNoZWRMb2FkOworQGVuZAorCitAaW1w
bGVtZW50YXRpb24gUGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3IHsKKyAgICBSZXRhaW5QdHI8
aWQgPFBhcnNlcllpZWxkVG9rZW5UZXN0QnVuZGxlPj4gX2J1bmRsZTsKKyAgICBSZXRhaW5QdHI8
VGVzdFVSTFNjaGVtZUhhbmRsZXI+IF9zY2hlbWVIYW5kbGVyOworfQorCisrIChSZXRhaW5QdHI8
UGFyc2VyWWllbGRUb2tlblRlc3RXZWJWaWV3Pil3ZWJWaWV3Cit7CisgICAgYXV0byBzY2hlbWVI
YW5kbGVyID0gYWRvcHROUyhbW1Rlc3RVUkxTY2hlbWVIYW5kbGVyIGFsbG9jXSBpbml0XSk7Cisg
ICAgYXV0byAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2Nv
bmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIlBhcnNlcllpZWxkVG9rZW5QbHVn
SW4iXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVyOnNjaGVtZUhhbmRs
ZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAiY3VzdG9tIl07CisgICAgYXV0byB3ZWJWaWV3ID0gYWRv
cHROUyhbW1BhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpD
R1JlY3RNYWtlKDAsIDAsIDIwMCwgMjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsK
KyAgICBbW3dlYlZpZXcgX3JlbW90ZU9iamVjdFJlZ2lzdHJ5XSByZWdpc3RlckV4cG9ydGVkT2Jq
ZWN0OndlYlZpZXcuZ2V0KCkgaW50ZXJmYWNlOltfV0tSZW1vdGVPYmplY3RJbnRlcmZhY2UgcmVt
b3RlT2JqZWN0SW50ZXJmYWNlV2l0aFByb3RvY29sOkBwcm90b2NvbChQYXJzZXJZaWVsZFRva2Vu
VGVzdFJ1bm5lcildXTsKKyAgICB3ZWJWaWV3LT5fYnVuZGxlID0gW1t3ZWJWaWV3IF9yZW1vdGVP
YmplY3RSZWdpc3RyeV0gcmVtb3RlT2JqZWN0UHJveHlXaXRoSW50ZXJmYWNlOltfV0tSZW1vdGVP
YmplY3RJbnRlcmZhY2UgcmVtb3RlT2JqZWN0SW50ZXJmYWNlV2l0aFByb3RvY29sOkBwcm90b2Nv
bChQYXJzZXJZaWVsZFRva2VuVGVzdEJ1bmRsZSldXTsKKyAgICB3ZWJWaWV3LT5fc2NoZW1lSGFu
ZGxlciA9IFdURk1vdmUoc2NoZW1lSGFuZGxlcik7CisgICAgcmV0dXJuIHdlYlZpZXc7Cit9CisK
Ky0gKGlkIDxQYXJzZXJZaWVsZFRva2VuVGVzdEJ1bmRsZT4pYnVuZGxlCit7CisgICAgcmV0dXJu
IF9idW5kbGUuZ2V0KCk7Cit9CisKKy0gKFRlc3RVUkxTY2hlbWVIYW5kbGVyICopc2NoZW1lSGFu
ZGxlcgoreworICAgIHJldHVybiBfc2NoZW1lSGFuZGxlci5nZXQoKTsKK30KKworLSAodm9pZClk
aWRGaW5pc2hEb2N1bWVudExvYWQKK3sKKyAgICBfZmluaXNoZWREb2N1bWVudExvYWQgPSBZRVM7
Cit9CisKKy0gKHZvaWQpZGlkRmluaXNoTG9hZAoreworICAgIF9maW5pc2hlZExvYWQgPSBZRVM7
Cit9CisKK0BlbmQKKworc3RhdGljIHZvaWQgd2FpdEZvckRlbGF5KFNlY29uZHMgZGVsYXkpCit7
CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBkaXNwYXRjaF9hZnRlcihkaXNw
YXRjaF90aW1lKERJU1BBVENIX1RJTUVfTk9XLCBkZWxheS5uYW5vc2Vjb25kcygpKSwgZGlzcGF0
Y2hfZ2V0X21haW5fcXVldWUoKSwgXnsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfSk7Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKK30KKworVEVTVChQYXJzZXJZaWVs
ZFRva2VuVGVzdHMsIFByZXZlbnREb2N1bWVudExvYWRCeVRha2luZ1BhcnNlcllpZWxkVG9rZW4p
Cit7CisgICAgYXV0byB3ZWJWaWV3ID0gW1BhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyB3ZWJW
aWV3XTsKKyAgICBbW3dlYlZpZXcgYnVuZGxlXSB0YWtlRG9jdW1lbnRQYXJzZXJUb2tlbkFmdGVy
Q29tbWl0dGluZ0xvYWRdOworICAgIFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxl
Il07CisKKyAgICAvLyBHaXZlIHRoZSB3ZWIgdmlldyBhIGNoYW5jZSB0byBsb2FkIHRoZSBwYWdl
LiBJbiB0aGUgY2FzZSB3aGVyZSB0aGUgdG9rZW4gZmFpbHMgdG8geWllbGQgZG9jdW1lbnQgcGFy
c2luZywgaXQncyB2ZXJ5IGxpa2VseSB0aGF0CisgICAgLy8gdGhlIGRvY3VtZW50IHdpbGwgZmlu
aXNoIGxvYWRpbmcsIGFuZCB3ZSdsbCBmYWlsIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyBiZWxvdy4g
SW4gdGhlIHVubGlrZWx5IGV2ZW50IHdoZXJlIHBhZ2UgbG9hZCBtYXkgdGFrZQorICAgIC8vIGxv
bmdlciB0aGFuIDEgc2Vjb25kLCB0aGlzIHRlc3Qgc2hvdWxkIHN0aWxsIHBhc3MuCisgICAgd2Fp
dEZvckRlbGF5KDFfcyk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGZpbmlzaGVkRG9jdW1l
bnRMb2FkXSk7CisgICAgRVhQRUNUX0ZBTFNFKFt3ZWJWaWV3IGZpbmlzaGVkTG9hZF0pOworCisg
ICAgLy8gTm93LCBhbGxvdyBkb2N1bWVudCBwYXJzaW5nIHRvIGNvbnRpbnVlLCBhbmQgd2FpdCBm
b3IgdGhlIHBhZ2UgdG8gZmluaXNoIGxvYWRpbmcuCisgICAgW1t3ZWJWaWV3IGJ1bmRsZV0gcmVs
ZWFzZURvY3VtZW50UGFyc2VyVG9rZW5dOworCisgICAgd2hpbGUgKCFbd2ViVmlldyBmaW5pc2hl
ZExvYWRdIHx8ICFbd2ViVmlldyBmaW5pc2hlZERvY3VtZW50TG9hZF0pCisgICAgICAgIFtbTlNS
dW5Mb29wIGN1cnJlbnRSdW5Mb29wXSBydW5Nb2RlOk5TRGVmYXVsdFJ1bkxvb3BNb2RlIGJlZm9y
ZURhdGU6W05TRGF0ZSBkaXN0YW50UGFzdF1dOworfQorCitURVNUKFBhcnNlcllpZWxkVG9rZW5U
ZXN0cywgVGFrZU11bHRpcGxlUGFyc2VyWWllbGRUb2tlbnMpCit7CisgICAgYXV0byB3ZWJWaWV3
ID0gW1BhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyB3ZWJWaWV3XTsKKyAgICBbW3dlYlZpZXcg
YnVuZGxlXSB0YWtlRG9jdW1lbnRQYXJzZXJUb2tlbkFmdGVyQ29tbWl0dGluZ0xvYWRdOworICAg
IFt3ZWJWaWV3IGxvYWRUZXN0UGFnZU5hbWVkOkAic2ltcGxlIl07CisKKyAgICB3YWl0Rm9yRGVs
YXkoMC41X3MpOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBmaW5pc2hlZERvY3VtZW50TG9h
ZF0pOworICAgIEVYUEVDVF9GQUxTRShbd2ViVmlldyBmaW5pc2hlZExvYWRdKTsKKworICAgIFtb
d2ViVmlldyBidW5kbGVdIHRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0ZXJDb21taXR0aW5nTG9h
ZF07CisgICAgW1t3ZWJWaWV3IGJ1bmRsZV0gcmVsZWFzZURvY3VtZW50UGFyc2VyVG9rZW5dOwor
CisgICAgd2FpdEZvckRlbGF5KDAuNV9zKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgZmlu
aXNoZWREb2N1bWVudExvYWRdKTsKKyAgICBFWFBFQ1RfRkFMU0UoW3dlYlZpZXcgZmluaXNoZWRM
b2FkXSk7CisKKyAgICBbW3dlYlZpZXcgYnVuZGxlXSByZWxlYXNlRG9jdW1lbnRQYXJzZXJUb2tl
bl07CisKKyAgICB3aGlsZSAoIVt3ZWJWaWV3IGZpbmlzaGVkTG9hZF0gfHwgIVt3ZWJWaWV3IGZp
bmlzaGVkRG9jdW1lbnRMb2FkXSkKKyAgICAgICAgW1tOU1J1bkxvb3AgY3VycmVudFJ1bkxvb3Bd
IHJ1bk1vZGU6TlNEZWZhdWx0UnVuTG9vcE1vZGUgYmVmb3JlRGF0ZTpbTlNEYXRlIGRpc3RhbnRQ
YXN0XV07Cit9CisKK1RFU1QoUGFyc2VyWWllbGRUb2tlblRlc3RzLCBEZWZlcnJlZFNjcmlwdEV4
ZWN1dGVzQmVmb3JlRG9jdW1lbnRMb2FkV2hlblRha2luZ1BhcnNlcllpZWxkVG9rZW4pCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gW1BhcnNlcllpZWxkVG9rZW5UZXN0V2ViVmlldyB3ZWJWaWV3XTsK
KworICAgIFtbd2ViVmlldyBidW5kbGVdIHRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0ZXJDb21t
aXR0aW5nTG9hZF07CisgICAgW3dlYlZpZXcgbG9hZFRlc3RQYWdlTmFtZWQ6QCJ0ZXh0LXdpdGgt
ZGVmZXJyZWQtc2NyaXB0Il07CisKKyAgICB3YWl0Rm9yRGVsYXkoMC41X3MpOworICAgIEVYUEVD
VF9GQUxTRShbd2ViVmlldyBmaW5pc2hlZERvY3VtZW50TG9hZF0pOworICAgIEVYUEVDVF9GQUxT
RShbd2ViVmlldyBmaW5pc2hlZExvYWRdKTsKKworICAgIFtbd2ViVmlldyBidW5kbGVdIHJlbGVh
c2VEb2N1bWVudFBhcnNlclRva2VuXTsKKworICAgIHdoaWxlICghW3dlYlZpZXcgZmluaXNoZWRM
b2FkXSB8fCAhW3dlYlZpZXcgZmluaXNoZWREb2N1bWVudExvYWRdKQorICAgICAgICBbW05TUnVu
TG9vcCBjdXJyZW50UnVuTG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVE
YXRlOltOU0RhdGUgZGlzdGFudFBhc3RdXTsKKworICAgIC8vIFZlcmlmeSB0aGF0IHN5bmNocm9u
b3VzIHNjcmlwdCBpcyBleGVjdXRlZCBiZWZvcmUgZGVmZXJyZWQgc2NyaXB0IGFuZCBkZWZlcnJl
ZCBzY3JpcHQgaXMgcnVuIGJlZm9yZSBkb2N1bWVudCBsb2FkLgorICAgIE5TQXJyYXk8TlNTdHJp
bmcgKj4gKmV2ZW50TWVzc2FnZXMgPSBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2Ny
aXB0OkAid2luZG93LmV2ZW50TWVzc2FnZXMiXTsKKyAgICBFWFBFQ1RfRVEoZXZlbnRNZXNzYWdl
cy5jb3VudCwgOFUpOworICAgIEVYUEVDVF9XS19TVFJFUSgiUnVubmluZyBzeW5jIiwgZXZlbnRN
ZXNzYWdlc1swXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJMb2FkZWQgc2NyaXB0OiBzeW5jIiwg
ZXZlbnRNZXNzYWdlc1sxXSk7CisgICAgRVhQRUNUX1dLX1NUUkVRKCJSdW5uaW5nIGRlZmVyLWJl
Zm9yZSIsIGV2ZW50TWVzc2FnZXNbMl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiTG9hZGVkIHNj
cmlwdDogZGVmZXItYmVmb3JlIiwgZXZlbnRNZXNzYWdlc1szXSk7CisgICAgRVhQRUNUX1dLX1NU
UkVRKCJSdW5uaW5nIGRlZmVyLWFmdGVyIiwgZXZlbnRNZXNzYWdlc1s0XSk7CisgICAgRVhQRUNU
X1dLX1NUUkVRKCJMb2FkZWQgc2NyaXB0OiBkZWZlci1hZnRlciIsIGV2ZW50TWVzc2FnZXNbNV0p
OworICAgIEVYUEVDVF9XS19TVFJFUSgiRG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZyIsIGV2ZW50
TWVzc2FnZXNbNl0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiRmluaXNoZWQgbG9hZGluZyIsIGV2
ZW50TWVzc2FnZXNbN10pOworfQorCitURVNUKFBhcnNlcllpZWxkVG9rZW5UZXN0cywgQXN5bmNT
Y3JpcHRSdW5zV2hlbkZldGNoZWQpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gW1BhcnNlcllpZWxk
VG9rZW5UZXN0V2ViVmlldyB3ZWJWaWV3XTsKKyAgICBbd2ViVmlldyBzY2hlbWVIYW5kbGVyXS5z
dGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyID0gW10gKFdLV2ViVmlldyAqLCBpZCA8V0tVUkxTY2hl
bWVUYXNrPiB0YXNrKSB7CisgICAgICAgIGF1dG8gc2NyaXB0ID0gcmV0YWluUHRyKEAid2luZG93
LmV2ZW50TWVzc2FnZXMucHVzaCgnUnVubmluZyBhc3luYyBzY3JpcHQuJyk7Iik7CisgICAgICAg
IGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhV
Ukw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpAInRleHQvamF2YXNjcmlwdCIgZXhwZWN0ZWRD
b250ZW50TGVuZ3RoOltzY3JpcHQgbGVuZ3RoXSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAg
ICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBbdGFzayA9IHJl
dGFpblB0cih0YXNrKSwgcmVzcG9uc2UgPSBXVEZNb3ZlKHJlc3BvbnNlKSwgc2NyaXB0ID0gV1RG
TW92ZShzY3JpcHQpXSB7CisgICAgICAgICAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVz
cG9uc2UuZ2V0KCldOworICAgICAgICAgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W3NjcmlwdCBk
YXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAgICAgICAgICAgW3Rh
c2sgZGlkRmluaXNoXTsKKyAgICAgICAgfSk7CisgICAgfTsKKworICAgIFtbd2ViVmlldyBidW5k
bGVdIHRha2VEb2N1bWVudFBhcnNlclRva2VuQWZ0ZXJDb21taXR0aW5nTG9hZF07CisKKyAgICBO
U1VSTCAqcGFnZVVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJ0
ZXh0LXdpdGgtYXN5bmMtc2NyaXB0IiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5
OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aENvbnRlbnRzT2ZVUkw6cGFnZVVSTCBlbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZyBlcnJvcjpuaWxdIGJhc2VVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
QCJjdXN0b206Ly8iXV07CisKKyAgICB3YWl0Rm9yRGVsYXkoMC41X3MpOworICAgIEVYUEVDVF9G
QUxTRShbd2ViVmlldyBmaW5pc2hlZERvY3VtZW50TG9hZF0pOworICAgIEVYUEVDVF9GQUxTRShb
d2ViVmlldyBmaW5pc2hlZExvYWRdKTsKKworICAgIFtbd2ViVmlldyBidW5kbGVdIHJlbGVhc2VE
b2N1bWVudFBhcnNlclRva2VuXTsKKworICAgIHdoaWxlICghW3dlYlZpZXcgZmluaXNoZWRMb2Fk
XSB8fCAhW3dlYlZpZXcgZmluaXNoZWREb2N1bWVudExvYWRdKQorICAgICAgICBbW05TUnVuTG9v
cCBjdXJyZW50UnVuTG9vcF0gcnVuTW9kZTpOU0RlZmF1bHRSdW5Mb29wTW9kZSBiZWZvcmVEYXRl
OltOU0RhdGUgZGlzdGFudFBhc3RdXTsKKworICAgIE5TQXJyYXk8TlNTdHJpbmcgKj4gKmV2ZW50
TWVzc2FnZXMgPSBbd2ViVmlldyBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAid2luZG93
LmV2ZW50TWVzc2FnZXMiXTsKKyAgICBFWFBFQ1RfRVEoZXZlbnRNZXNzYWdlcy5jb3VudCwgNFUp
OworICAgIEVYUEVDVF9XS19TVFJFUSgiQmVmb3JlIHJlcXVlc3RpbmcgYXN5bmMgc2NyaXB0LiIs
IGV2ZW50TWVzc2FnZXNbMF0pOworICAgIEVYUEVDVF9XS19TVFJFUSgiQWZ0ZXIgcmVxdWVzdGlu
ZyBhc3luYyBzY3JpcHQuIiwgZXZlbnRNZXNzYWdlc1sxXSk7CisgICAgRVhQRUNUX1dLX1NUUkVR
KCJSdW5uaW5nIGFzeW5jIHNjcmlwdC4iLCBldmVudE1lc3NhZ2VzWzJdKTsKKyAgICBFWFBFQ1Rf
V0tfU1RSRVEoIkZpbmlzaGVkIHJlcXVlc3RpbmcgYXN5bmMgc2NyaXB0LiIsIGV2ZW50TWVzc2Fn
ZXNbM10pOworfQorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFVSTFNjaGVtZUhhbmRs
ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5kMTcxM2RmNDA0ZWE0YjViMjczYzBhMjIzNjQxZDAyY2ZlNjUzYWU5
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9UZXN0VVJMU2NoZW1lSGFuZGxlci5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorCisjaWYgV0tfQVBJX0VO
QUJMRUQKKworQGludGVyZmFjZSBUZXN0VVJMU2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0IDxXS1VS
TFNjaGVtZUhhbmRsZXI+CisKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChec3Rh
cnRVUkxTY2hlbWVUYXNrSGFuZGxlcikoV0tXZWJWaWV3ICosIGlkIDxXS1VSTFNjaGVtZVRhc2s+
KTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChec3RvcFVSTFNjaGVtZVRhc2tI
YW5kbGVyKShXS1dlYlZpZXcgKiwgaWQgPFdLVVJMU2NoZW1lVGFzaz4pOworCitAZW5kCisKKyNl
bmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9UZXN0VVJMU2NoZW1lSGFuZGxlci5tbSBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFVSTFNjaGVtZUhhbmRsZXIubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZmM3MjAxZDQwMzAyMTc4MmQzZDVmYjJlNGZjYjRkMGYyYjFiZDg5YgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVGVzdFVSTFNjaGVt
ZUhhbmRsZXIubW0KQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgorCisjaW1wb3J0IDx3dGYv
QmxvY2tQdHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK0BpbXBsZW1lbnRhdGlvbiBUZXN0
VVJMU2NoZW1lSGFuZGxlciB7CisgICAgQmxvY2tQdHI8dm9pZChXS1dlYlZpZXcgKiwgaWQgPFdL
VVJMU2NoZW1lVGFzaz4pPiBfc3RhcnRVUkxTY2hlbWVUYXNrSGFuZGxlcjsKKyAgICBCbG9ja1B0
cjx2b2lkKFdLV2ViVmlldyAqLCBpZCA8V0tVUkxTY2hlbWVUYXNrPik+IF9zdG9wVVJMU2NoZW1l
VGFza0hhbmRsZXI7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBz
dGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKK3sK
KyAgICBpZiAoX3N0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIpCisgICAgICAgIF9zdGFydFVSTFNj
aGVtZVRhc2tIYW5kbGVyKHdlYlZpZXcsIHVybFNjaGVtZVRhc2spOworfQorCistICh2b2lkKXdl
YlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNj
aGVtZVRhc2s+KXVybFNjaGVtZVRhc2sKK3sKKyAgICBpZiAoX3N0b3BVUkxTY2hlbWVUYXNrSGFu
ZGxlcikKKyAgICAgICAgX3N0b3BVUkxTY2hlbWVUYXNrSGFuZGxlcih3ZWJWaWV3LCB1cmxTY2hl
bWVUYXNrKTsKK30KKworLSAodm9pZClzZXRTdGFydFVSTFNjaGVtZVRhc2tIYW5kbGVyOih2b2lk
ICheKShXS1dlYlZpZXcgKiwgaWQgPFdLVVJMU2NoZW1lVGFzaz4pKWJsb2NrCit7CisgICAgX3N0
YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoYmxvY2spOworfQorCistICh2
b2lkICheKShXS1dlYlZpZXcgKiwgaWQgPFdLVVJMU2NoZW1lVGFzaz4pKXN0YXJ0VVJMU2NoZW1l
VGFza0hhbmRsZXIKK3sKKyAgICByZXR1cm4gX3N0YXJ0VVJMU2NoZW1lVGFza0hhbmRsZXIuZ2V0
KCk7Cit9CisKKy0gKHZvaWQpc2V0U3RvcFVSTFNjaGVtZVRhc2tIYW5kbGVyOih2b2lkICheKShX
S1dlYlZpZXcgKiwgaWQgPFdLVVJMU2NoZW1lVGFzaz4pKWJsb2NrCit7CisgICAgX3N0YXJ0VVJM
U2NoZW1lVGFza0hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoYmxvY2spOworfQorCistICh2b2lkIChe
KShXS1dlYlZpZXcgKiwgaWQgPFdLVVJMU2NoZW1lVGFzaz4pKXN0b3BVUkxTY2hlbWVUYXNrSGFu
ZGxlcgoreworICAgIHJldHVybiBfc3RvcFVSTFNjaGVtZVRhc2tIYW5kbGVyLmdldCgpOworfQor
CitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RleHQtd2l0aC1hc3luYy1z
Y3JpcHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wZmIyM2RmMTE5YjZkMTE0MzAwYjc1MzNlMzM0OWU3YjAw
YWJkMWVlCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS90ZXh0LXdpdGgtYXN5bmMtc2NyaXB0Lmh0bWwKQEAgLTAsMCArMSwyMCBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRhIG5hbWU9InZpZXdwb3J0IiBj
b250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MSI+CisgICAgPHNjcmlw
dD4KKyAgICAgICAgZXZlbnRNZXNzYWdlcyA9IFtdOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+CisgICAgPHNjcmlwdCBzcmM9ImFzeW5jLmpzIiBhc3luYz48L3NjcmlwdD4KKyAgICA8
c2NyaXB0PgorICAgICAgICBldmVudE1lc3NhZ2VzLnB1c2goIkJlZm9yZSByZXF1ZXN0aW5nIGFz
eW5jIHNjcmlwdC4iKTsKKyAgICAgICAgZmV0Y2goImFzeW5jLmpzIikudGhlbihyZXNwb25zZSA9
PiBldmVudE1lc3NhZ2VzLnB1c2goIkZpbmlzaGVkIHJlcXVlc3RpbmcgYXN5bmMgc2NyaXB0LiIp
KTsKKyAgICAgICAgZXZlbnRNZXNzYWdlcy5wdXNoKCJBZnRlciByZXF1ZXN0aW5nIGFzeW5jIHNj
cmlwdC4iKTsKKyAgICA8L3NjcmlwdD4KKyAgICA8cD5Mb3JlbSBpcHN1bSBkb2xvciBzaXQgYW1l
dCwgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj5jb25zZWN0ZXR1ciBhZGlwaXNjaW5nIGVs
aXQ8L2E+LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVudCB1dCBsYWJvcmUgZXQgZG9s
b3JlIG1hZ25hIGFsaXF1YS4gPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj5UZW1wb3IgaWQg
ZXUgbmlzbCBudW5jIG1pIGlwc3VtIGZhdWNpYnVzIHZpdGFlLjwvYT4gU2VkIHRlbXB1cyB1cm5h
IGV0IHBoYXJldHJhIHBoYXJldHJhIG1hc3NhIG1hc3NhLiBWaXRhZSB0b3J0b3IgY29uZGltZW50
dW0gbGFjaW5pYSBxdWlzIHZlbCBlcm9zIGRvbmVjIGFjLiA8YSBocmVmPSJodHRwczovL3dlYmtp
dC5vcmciPlVsbGFtY29ycGVyIHZlbGl0IHNlZCB1bGxhbWNvcnBlciBtb3JiaTwvYT4gdGluY2lk
dW50IG9ybmFyZSBtYXNzYSBlZ2V0LiBTaXQgYW1ldCBjdXJzdXMgc2l0IGFtZXQgZGljdHVtLiBJ
ZCBldSBuaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMuIFN1c2Np
cGl0IHRlbGx1cyBtYXVyaXMgYSBkaWFtIG1hZWNlbmFzIHNlZC4gQ29uc2VxdWF0IG5pc2wgdmVs
IHByZXRpdW0gbGVjdHVzIHF1YW0gaWQgbGVvLiA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmci
Pk5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdlc3RhcyBpbnRlZ2VyLjwvYT4g
UXVhbSBsYWN1cyBzdXNwZW5kaXNzZSBmYXVjaWJ1cyBpbnRlcmR1bSBwb3N1ZXJlIGxvcmVtIGlw
c3VtLiBTZW0gaW50ZWdlciB2aXRhZSBqdXN0byBlZ2V0IG1hZ25hIGZlcm1lbnR1bSBpYWN1bGlz
LiBBIGNvbmRpbWVudHVtIHZpdGFlIHNhcGllbiBwZWxsZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkg
dHJpc3RpcXVlLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBsb3JlbS4gSXBzdW0gZmF1Y2li
dXMgdml0YWUgYWxpcXVldCBuZWMgdWxsYW1jb3JwZXIgc2l0LjwvcD4KKyAgICA8cD5TZWQgZmF1
Y2lidXMgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj50dXJwaXMgaW4gZXUgbWkgYmliZW5k
dW08L2E+LiBEb25lYyBlbmltIGRpYW0gdnVscHV0YXRlIHV0IHBoYXJldHJhIHNpdCBhbWV0IGFs
aXF1YW0uIENvbnNlcXVhdCBpZCBwb3J0YSBuaWJoIHZlbmVuYXRpcyBjcmFzIHNlZCBmZWxpcyBl
Z2V0IHZlbGl0LiBBdCBsZWN0dXMgdXJuYSBkdWlzIGNvbnZhbGxpcyBjb252YWxsaXMgdGVsbHVz
IGlkIGludGVyZHVtIHZlbGl0LiBJZCBjb25zZWN0ZXR1ciBwdXJ1cyB1dCBmYXVjaWJ1cyBwdWx2
aW5hciBlbGVtZW50dW0gaW50ZWdlciBlbmltLiBJcHN1bSBkb2xvciBzaXQgYW1ldCBjb25zZWN0
ZXR1ciBhZGlwaXNjaW5nIGVsaXQgdXQgYWxpcXVhbS4gQXQgdGVsbHVzIGF0IHVybmEgY29uZGlt
ZW50dW0gbWF0dGlzLiBGYXVjaWJ1cyBwdWx2aW5hciBlbGVtZW50dW0gaW50ZWdlciBlbmltLiBB
dCBlbGVtZW50dW0gZXUgZmFjaWxpc2lzIHNlZCBvZGlvIG1vcmJpLiBGYW1lcyBhYyB0dXJwaXMg
ZWdlc3RhcyBpbnRlZ2VyIGVnZXQgYWxpcXVldC4gQ29uc2VxdWF0IGludGVyZHVtIHZhcml1cyBz
aXQgYW1ldCBtYXR0aXMgdnVscHV0YXRlIGVuaW0gbnVsbGEuIExlY3R1cyBzaXQgYW1ldCBlc3Qg
cGxhY2VyYXQgaW4gZWdlc3Rhcy4gRG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlzY2lu
ZyBlbGl0IHBlbGxlbnRlc3F1ZSBoYWJpdGFudCBtb3JiaS4gVXJuYSBldCBwaGFyZXRyYSBwaGFy
ZXRyYSBtYXNzYSBtYXNzYSB1bHRyaWNpZXMgbWkuPC9wPgorICAgIDxwPlNlZCBsZWN0dXMgdmVz
dGlidWx1bSBtYXR0aXMgdWxsYW1jb3JwZXIgdmVsaXQgc2VkIHVsbGFtY29ycGVyLiA8YSBocmVm
PSJodHRwczovL3dlYmtpdC5vcmciPlF1YW0gbGFjdXMgc3VzcGVuZGlzc2U8L2E+IGZhdWNpYnVz
IGludGVyZHVtIHBvc3VlcmUgbG9yZW0uIFNhZ2l0dGlzIHZpdGFlIGV0IGxlbyBkdWlzIHV0IGRp
YW0uIFR1cnBpcyBtYXNzYSBzZWQgZWxlbWVudHVtIHRlbXB1cy4gQWxpcXVhbSBzZW0gZnJpbmdp
bGxhIHV0IG1vcmJpLiA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPkZyaW5naWxsYSBlc3Qg
dWxsYW1jb3JwZXI8L2E+IGVnZXQgbnVsbGEgZmFjaWxpc2kgZXRpYW0gZGlnbmlzc2ltLiBJZCB2
ZWxpdCB1dCB0b3J0b3IgcHJldGl1bS4gQmliZW5kdW0gYXQgdmFyaXVzIHZlbCBwaGFyZXRyYSB2
ZWwgdHVycGlzIG51bmMuIFNpdCBhbWV0IGFsaXF1YW0gaWQgZGlhbSBtYWVjZW5hcy4gTG9ib3J0
aXMgZmV1Z2lhdCB2aXZhbXVzIGF0IGF1Z3VlIDxhIGhyZWY9Imh0dHBzOi8vd2Via2l0Lm9yZyI+
ZWdldCBhcmN1IGRpY3R1bTwvYT4gdmFyaXVzIGR1aXMuIExpYmVybyBqdXN0byBsYW9yZWV0IHNp
dCBhbWV0LiBFZ2VzdGFzIHRlbGx1cyBydXRydW0gdGVsbHVzIHBlbGxlbnRlc3F1ZSBldSB0aW5j
aWR1bnQgdG9ydG9yIGFsaXF1YW0uPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90ZXh0LXdpdGgtZGVmZXJyZWQt
c2NyaXB0Lmh0bWwgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL3RleHQt
d2l0aC1kZWZlcnJlZC1zY3JpcHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ODk0MGIzMDQxMDI3ZDRiNjI2
MWU5NDkzZDYxNTEwY2MxNWY1Y2E3Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS90ZXh0LXdpdGgtZGVmZXJyZWQtc2NyaXB0Lmh0bWwKQEAg
LTAsMCArMSwyNiBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICAgIDxtZXRh
IG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2Nh
bGU9MSI+CisgICAgPHNjcmlwdD4KKyAgICAgICAgZXZlbnRNZXNzYWdlcyA9IFtdCisKKyAgICAg
ICAgZnVuY3Rpb24gc2NyaXB0TG9hZGVkKHNjcmlwdCkKKyAgICAgICAgeworICAgICAgICAgICAg
ZXZlbnRNZXNzYWdlcy5wdXNoKGBMb2FkZWQgc2NyaXB0OiAke3NjcmlwdC5pZH1gKTsKKyAgICAg
ICAgfQorICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisgICAgPHNjcmlwdD4KKyAgICAg
ICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsICgpID0+IGV2
ZW50TWVzc2FnZXMucHVzaCgiRG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZyIpKTsKKyAgICAgICAg
YWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsICgpID0+IGV2ZW50TWVzc2FnZXMucHVzaCgiRmluaXNo
ZWQgbG9hZGluZyIpKTsKKyAgICA8L3NjcmlwdD4KKyAgICA8c2NyaXB0IGlkPSJkZWZlci1iZWZv
cmUiIG9ubG9hZD0ic2NyaXB0TG9hZGVkKHRoaXMpIiBkZWZlciBzcmM9ImRhdGE6dGV4dC9qYXZh
c2NyaXB0LGV2ZW50TWVzc2FnZXMucHVzaCgnUnVubmluZyBkZWZlci1iZWZvcmUnKSI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBpZD0ic3luYyIgb25sb2FkPSJzY3JpcHRMb2FkZWQodGhpcykiIHNy
Yz0iZGF0YTp0ZXh0L2phdmFzY3JpcHQsZXZlbnRNZXNzYWdlcy5wdXNoKCdSdW5uaW5nIHN5bmMn
KSI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBpZD0iZGVmZXItYWZ0ZXIiIG9ubG9hZD0ic2NyaXB0
TG9hZGVkKHRoaXMpIiBkZWZlciBzcmM9ImRhdGE6dGV4dC9qYXZhc2NyaXB0LGV2ZW50TWVzc2Fn
ZXMucHVzaCgnUnVubmluZyBkZWZlci1hZnRlcicpIj48L3NjcmlwdD4KKyAgICA8cD5Mb3JlbSBp
cHN1bSBkb2xvciBzaXQgYW1ldCwgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj5jb25zZWN0
ZXR1ciBhZGlwaXNjaW5nIGVsaXQ8L2E+LCBzZWQgZG8gZWl1c21vZCB0ZW1wb3IgaW5jaWRpZHVu
dCB1dCBsYWJvcmUgZXQgZG9sb3JlIG1hZ25hIGFsaXF1YS4gPGEgaHJlZj0iaHR0cHM6Ly93ZWJr
aXQub3JnIj5UZW1wb3IgaWQgZXUgbmlzbCBudW5jIG1pIGlwc3VtIGZhdWNpYnVzIHZpdGFlLjwv
YT4gU2VkIHRlbXB1cyB1cm5hIGV0IHBoYXJldHJhIHBoYXJldHJhIG1hc3NhIG1hc3NhLiBWaXRh
ZSB0b3J0b3IgY29uZGltZW50dW0gbGFjaW5pYSBxdWlzIHZlbCBlcm9zIGRvbmVjIGFjLiA8YSBo
cmVmPSJodHRwczovL3dlYmtpdC5vcmciPlVsbGFtY29ycGVyIHZlbGl0IHNlZCB1bGxhbWNvcnBl
ciBtb3JiaTwvYT4gdGluY2lkdW50IG9ybmFyZSBtYXNzYSBlZ2V0LiBTaXQgYW1ldCBjdXJzdXMg
c2l0IGFtZXQgZGljdHVtLiBJZCBldSBuaXNsIG51bmMgbWkgaXBzdW0gZmF1Y2lidXMgdml0YWUg
YWxpcXVldCBuZWMuIFN1c2NpcGl0IHRlbGx1cyBtYXVyaXMgYSBkaWFtIG1hZWNlbmFzIHNlZC4g
Q29uc2VxdWF0IG5pc2wgdmVsIHByZXRpdW0gbGVjdHVzIHF1YW0gaWQgbGVvLiA8YSBocmVmPSJo
dHRwczovL3dlYmtpdC5vcmciPk5ldHVzIGV0IG1hbGVzdWFkYSBmYW1lcyBhYyB0dXJwaXMgZWdl
c3RhcyBpbnRlZ2VyLjwvYT4gUXVhbSBsYWN1cyBzdXNwZW5kaXNzZSBmYXVjaWJ1cyBpbnRlcmR1
bSBwb3N1ZXJlIGxvcmVtIGlwc3VtLiBTZW0gaW50ZWdlciB2aXRhZSBqdXN0byBlZ2V0IG1hZ25h
IGZlcm1lbnR1bSBpYWN1bGlzLiBBIGNvbmRpbWVudHVtIHZpdGFlIHNhcGllbiBwZWxsZW50ZXNx
dWUgaGFiaXRhbnQgbW9yYmkgdHJpc3RpcXVlLiBWYXJpdXMgZHVpcyBhdCBjb25zZWN0ZXR1ciBs
b3JlbS4gSXBzdW0gZmF1Y2lidXMgdml0YWUgYWxpcXVldCBuZWMgdWxsYW1jb3JwZXIgc2l0Ljwv
cD4KKyAgICA8cD5TZWQgZmF1Y2lidXMgPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj50dXJw
aXMgaW4gZXUgbWkgYmliZW5kdW08L2E+LiBEb25lYyBlbmltIGRpYW0gdnVscHV0YXRlIHV0IHBo
YXJldHJhIHNpdCBhbWV0IGFsaXF1YW0uIDxpbWcgc3JjPSJhcHBsZS5naWYiPjwvaW1nPiBDb25z
ZXF1YXQgaWQgcG9ydGEgbmliaCB2ZW5lbmF0aXMgY3JhcyBzZWQgZmVsaXMgZWdldCB2ZWxpdC4g
QXQgbGVjdHVzIHVybmEgZHVpcyBjb252YWxsaXMgY29udmFsbGlzIHRlbGx1cyBpZCBpbnRlcmR1
bSB2ZWxpdC4gSWQgY29uc2VjdGV0dXIgcHVydXMgdXQgZmF1Y2lidXMgcHVsdmluYXIgZWxlbWVu
dHVtIGludGVnZXIgZW5pbS4gSXBzdW0gZG9sb3Igc2l0IGFtZXQgY29uc2VjdGV0dXIgYWRpcGlz
Y2luZyBlbGl0IHV0IGFsaXF1YW0uIEF0IHRlbGx1cyBhdCB1cm5hIGNvbmRpbWVudHVtIG1hdHRp
cy4gRmF1Y2lidXMgcHVsdmluYXIgZWxlbWVudHVtIGludGVnZXIgZW5pbS4gQXQgZWxlbWVudHVt
IGV1IGZhY2lsaXNpcyBzZWQgb2RpbyBtb3JiaS4gRmFtZXMgYWMgdHVycGlzIGVnZXN0YXMgaW50
ZWdlciBlZ2V0IGFsaXF1ZXQuIENvbnNlcXVhdCBpbnRlcmR1bSB2YXJpdXMgc2l0IGFtZXQgbWF0
dGlzIHZ1bHB1dGF0ZSBlbmltIG51bGxhLiBMZWN0dXMgc2l0IGFtZXQgZXN0IHBsYWNlcmF0IGlu
IGVnZXN0YXMuIERvbG9yIHNpdCBhbWV0IGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCBwZWxs
ZW50ZXNxdWUgaGFiaXRhbnQgbW9yYmkuIFVybmEgZXQgcGhhcmV0cmEgcGhhcmV0cmEgbWFzc2Eg
bWFzc2EgdWx0cmljaWVzIG1pLjwvcD4KKyAgICA8cD5TZWQgbGVjdHVzIHZlc3RpYnVsdW0gbWF0
dGlzIHVsbGFtY29ycGVyIHZlbGl0IHNlZCB1bGxhbWNvcnBlci4gPGEgaHJlZj0iaHR0cHM6Ly93
ZWJraXQub3JnIj5RdWFtIGxhY3VzIHN1c3BlbmRpc3NlPC9hPiBmYXVjaWJ1cyBpbnRlcmR1bSBw
b3N1ZXJlIGxvcmVtLiBTYWdpdHRpcyB2aXRhZSBldCBsZW8gZHVpcyB1dCBkaWFtLiBUdXJwaXMg
bWFzc2Egc2VkIGVsZW1lbnR1bSB0ZW1wdXMuIEFsaXF1YW0gc2VtIGZyaW5naWxsYSB1dCBtb3Ji
aS4gPGEgaHJlZj0iaHR0cHM6Ly93ZWJraXQub3JnIj5GcmluZ2lsbGEgZXN0IHVsbGFtY29ycGVy
PC9hPiBlZ2V0IG51bGxhIGZhY2lsaXNpIGV0aWFtIGRpZ25pc3NpbS4gSWQgdmVsaXQgdXQgdG9y
dG9yIHByZXRpdW0uIEJpYmVuZHVtIGF0IHZhcml1cyB2ZWwgcGhhcmV0cmEgdmVsIHR1cnBpcyBu
dW5jLiBTaXQgYW1ldCBhbGlxdWFtIGlkIGRpYW0gbWFlY2VuYXMuIExvYm9ydGlzIGZldWdpYXQg
dml2YW11cyBhdCBhdWd1ZSA8YSBocmVmPSJodHRwczovL3dlYmtpdC5vcmciPmVnZXQgYXJjdSBk
aWN0dW08L2E+IHZhcml1cyBkdWlzLiBMaWJlcm8ganVzdG8gbGFvcmVldCBzaXQgYW1ldC4gRWdl
c3RhcyB0ZWxsdXMgcnV0cnVtIHRlbGx1cyBwZWxsZW50ZXNxdWUgZXUgdGluY2lkdW50IHRvcnRv
ciBhbGlxdWFtLjwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>